@nlabs/lex 1.48.4 → 1.48.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +1 -1
- package/README.md +293 -22
- package/__mocks__/compare-versions.js +3 -0
- package/__mocks__/fileMock.js +1 -0
- package/__mocks__/latest-version.js +1 -0
- package/__mocks__/react-markdown.js +12 -0
- package/babel.config.json +2 -1
- package/dist/Button.stories.d.ts +19 -0
- package/dist/LexConfig.d.ts +84 -0
- package/dist/LexConfig.js +1 -4
- package/dist/commands/ai/ai.d.ts +17 -0
- package/dist/commands/ai/index.d.ts +8 -0
- package/dist/commands/build/build.d.ts +18 -0
- package/dist/commands/clean/clean.d.ts +7 -0
- package/dist/commands/compile/compile.d.ts +2 -0
- package/dist/commands/config/config.d.ts +7 -0
- package/dist/commands/config/config.js +2 -2
- package/dist/commands/copy/copy.d.ts +6 -0
- package/dist/commands/create/create.d.ts +8 -0
- package/dist/commands/dev/dev.d.ts +11 -0
- package/dist/commands/init/init.d.ts +9 -0
- package/dist/commands/link/link.d.ts +6 -0
- package/dist/commands/lint/autofix.d.ts +2 -0
- package/dist/commands/lint/lint.d.ts +39 -0
- package/dist/commands/migrate/migrate.d.ts +7 -0
- package/dist/commands/publish/publish.d.ts +12 -0
- package/dist/commands/storybook/storybook.d.ts +13 -0
- package/dist/commands/storybook/storybook.js +3 -5
- package/dist/commands/test/test.d.ts +50 -0
- package/dist/commands/test/test.js +80 -10
- package/dist/commands/update/update.d.ts +9 -0
- package/dist/commands/upgrade/upgrade.d.ts +7 -0
- package/dist/commands/versions/versions.d.ts +13 -0
- package/dist/create/changelog.d.ts +6 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +2 -1
- package/dist/lex.d.ts +2 -0
- package/dist/test-react/index.d.ts +8 -0
- package/dist/test-react/index.js +86 -0
- package/dist/types.d.ts +5 -0
- package/dist/utils/aiService.d.ts +9 -0
- package/dist/utils/app.d.ts +45 -0
- package/dist/utils/file.d.ts +8 -0
- package/dist/utils/file.js +9 -3
- package/dist/utils/log.d.ts +1 -0
- package/dist/utils/reactShim.d.ts +4 -0
- package/dist/utils/reactShim.js +82 -2
- package/jest.config.d.mts +50 -0
- package/jest.config.mjs +69 -0
- package/jest.config.template.cjs +63 -0
- package/jest.setup.js +18 -15
- package/jest.setup.template.js +18 -0
- package/package.json +24 -7
- package/tsconfig.build.json +8 -10
- package/tsconfig.lint.json +2 -2
- package/tsconfig.test.json +2 -2
- package/dist/dist/LexConfig.d.ts +0 -119
- package/dist/dist/utils/file.d.ts +0 -8
- package/dist/dist/utils/log.d.ts +0 -1
- package/dist/jest.config.lex.d.ts +0 -2
- package/jest.config.cjs +0 -43
- package/jest.config.lex.js +0 -118
package/.vscode/settings.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"editor.autoClosingBrackets": "never",
|
|
22
22
|
"editor.codeActionsOnSave": {
|
|
23
23
|
"source.fixAll.eslint": "explicit",
|
|
24
|
-
"source.organizeImports":
|
|
24
|
+
"source.organizeImports": "never"
|
|
25
25
|
},
|
|
26
26
|
"editor.detectIndentation": false,
|
|
27
27
|
"editor.formatOnSave": true,
|
package/README.md
CHANGED
|
@@ -1,37 +1,308 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 🚀 Lex - The Ultimate React Development CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **Zero Configuration. Maximum Productivity.**
|
|
4
4
|
|
|
5
|
-
Lex eliminates
|
|
5
|
+
Lex is the all-in-one development CLI that eliminates the complexity of modern React development. No more juggling webpack configs, testing setups, or build tools. Just install Lex globally and focus on what matters most - building amazing applications.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
- [Webpack](https://webpack.js.org/)
|
|
7
|
+
[](https://badge.fury.io/js/%40nlabs%2Flex)
|
|
8
|
+
[](https://opensource.org/licenses/MIT)
|
|
9
|
+
[](http://makeapullrequest.com)
|
|
11
10
|
|
|
11
|
+
## ✨ Why Lex?
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
### 🎯 **Zero Configuration**
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
- Works out of the box with any React project
|
|
16
|
+
- No webpack configs to write
|
|
17
|
+
- No testing setup to configure
|
|
18
|
+
- No build tools to manage
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
### ⚡ **Lightning Fast**
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
- ESBuild-powered compilation
|
|
23
|
+
- Hot reloading development server
|
|
24
|
+
- Optimized production builds
|
|
25
|
+
- Parallel test execution
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
### 🧠 **AI-Powered Development**
|
|
28
|
+
|
|
29
|
+
- AI-assisted error fixing
|
|
30
|
+
- Intelligent test generation
|
|
31
|
+
- Code optimization suggestions
|
|
32
|
+
- Smart linting with auto-fix
|
|
33
|
+
|
|
34
|
+
### 🛠️ **Enterprise Ready**
|
|
35
|
+
|
|
36
|
+
- TypeScript support out of the box
|
|
37
|
+
- Jest testing framework included
|
|
38
|
+
- Storybook integration
|
|
39
|
+
- Production-optimized builds
|
|
40
|
+
|
|
41
|
+
## 🚀 Quick Start
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Install Lex globally
|
|
45
|
+
npm install -g @nlabs/lex
|
|
46
|
+
|
|
47
|
+
# Create a new React app
|
|
48
|
+
lex init my-awesome-app --typescript --install
|
|
49
|
+
|
|
50
|
+
# Navigate to your app
|
|
51
|
+
cd my-awesome-app
|
|
52
|
+
|
|
53
|
+
# Start development server
|
|
54
|
+
lex dev --open
|
|
55
|
+
|
|
56
|
+
# Run tests
|
|
57
|
+
lex test
|
|
58
|
+
|
|
59
|
+
# Build for production
|
|
60
|
+
lex build --mode production
|
|
23
61
|
```
|
|
24
62
|
|
|
25
|
-
|
|
63
|
+
## 📦 What's Included
|
|
64
|
+
|
|
65
|
+
Lex comes with everything you need for modern React development:
|
|
66
|
+
|
|
67
|
+
| Tool | Purpose | Version |
|
|
68
|
+
|------|---------|---------|
|
|
69
|
+
| **ESBuild** | Lightning-fast bundler | Latest |
|
|
70
|
+
| **Jest** | Testing framework | Latest |
|
|
71
|
+
| **TypeScript** | Type safety | Latest |
|
|
72
|
+
| **Webpack** | Advanced bundling | Latest |
|
|
73
|
+
| **Storybook** | Component development | Latest |
|
|
74
|
+
| **PostCSS** | CSS processing | Latest |
|
|
75
|
+
| **ESLint** | Code linting | Latest |
|
|
76
|
+
|
|
77
|
+
## 🎮 Commands Overview
|
|
78
|
+
|
|
79
|
+
### 🏗️ **Project Setup**
|
|
80
|
+
|
|
81
|
+
| Command | Description | Quick Example |
|
|
82
|
+
|---------|-------------|---------------|
|
|
83
|
+
| [`lex init`](#init) | Create new React applications | `lex init my-app --typescript` |
|
|
84
|
+
| [`lex create`](#create) | Generate project assets | `lex create view Dashboard` |
|
|
85
|
+
| [`lex migrate`](#migrate) | Migrate existing projects | `lex migrate` |
|
|
86
|
+
|
|
87
|
+
### 🛠️ **Development**
|
|
88
|
+
|
|
89
|
+
| Command | Description | Quick Example |
|
|
90
|
+
|---------|-------------|---------------|
|
|
91
|
+
| [`lex dev`](#dev) | Start development server | `lex dev --open` |
|
|
92
|
+
| [`lex compile`](#compile) | Compile TypeScript/JavaScript | `lex compile --watch` |
|
|
93
|
+
| [`lex build`](#build) | Build for production | `lex build --mode production` |
|
|
94
|
+
|
|
95
|
+
### 🧪 **Testing & Quality**
|
|
96
|
+
|
|
97
|
+
| Command | Description | Quick Example |
|
|
98
|
+
|---------|-------------|---------------|
|
|
99
|
+
| [`lex test`](#test) | Run Jest tests | `lex test --watch` |
|
|
100
|
+
| [`lex lint`](#lint) | Lint code with ESLint | `lex lint --fix` |
|
|
101
|
+
| [`lex storybook`](#storybook) | Start Storybook | `lex storybook --open` |
|
|
102
|
+
|
|
103
|
+
### 🤖 **AI-Powered Features**
|
|
104
|
+
|
|
105
|
+
| Command | Description | Quick Example |
|
|
106
|
+
|---------|-------------|---------------|
|
|
107
|
+
| [`lex ai`](#ai) | AI code assistance | `lex ai --task generate --prompt "Create a button component"` |
|
|
108
|
+
| [`lex ai`](#ai) | AI test generation | `lex test --generate` |
|
|
109
|
+
| [`lex ai`](#ai) | AI error fixing | `lex build --assist` |
|
|
26
110
|
|
|
27
|
-
|
|
111
|
+
### 📦 **Package Management**
|
|
28
112
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
113
|
+
| Command | Description | Quick Example |
|
|
114
|
+
|---------|-------------|---------------|
|
|
115
|
+
| [`lex update`](#update) | Update dependencies | `lex update --interactive` |
|
|
116
|
+
| [`lex upgrade`](#upgrade) | Upgrade Lex itself | `lex upgrade` |
|
|
117
|
+
| [`lex publish`](#publish) | Publish to npm | `lex publish --bump minor` |
|
|
34
118
|
|
|
35
|
-
|
|
36
|
-
|
|
119
|
+
### 🔧 **Utilities**
|
|
120
|
+
|
|
121
|
+
| Command | Description | Quick Example |
|
|
122
|
+
|---------|-------------|---------------|
|
|
123
|
+
| [`lex clean`](#clean) | Clean project files | `lex clean` |
|
|
124
|
+
| [`lex copy`](#copy) | Copy files/directories | `lex copy src dist` |
|
|
125
|
+
| [`lex config`](#config) | Show configurations | `lex config webpack` |
|
|
126
|
+
| [`lex versions`](#versions) | Show tool versions | `lex versions` |
|
|
127
|
+
| [`lex link`](#link) | Check linked modules | `lex link` |
|
|
128
|
+
|
|
129
|
+
## 🎯 Core Features
|
|
130
|
+
|
|
131
|
+
### 🚀 **Development Server**
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# Start with hot reloading
|
|
135
|
+
lex dev --open
|
|
136
|
+
|
|
137
|
+
# With bundle analyzer
|
|
138
|
+
lex dev --bundleAnalyzer
|
|
139
|
+
|
|
140
|
+
# Custom webpack config
|
|
141
|
+
lex dev --config ./custom.webpack.js
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### 🏗️ **Production Builds**
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# Standard production build
|
|
148
|
+
lex build --mode production
|
|
149
|
+
|
|
150
|
+
# With ESBuild (faster)
|
|
151
|
+
lex build --bundler esbuild
|
|
152
|
+
|
|
153
|
+
# With AI optimization analysis
|
|
154
|
+
lex build --analyze
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### 🧪 **Testing Suite**
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Run all tests
|
|
161
|
+
lex test
|
|
162
|
+
|
|
163
|
+
# Watch mode
|
|
164
|
+
lex test --watch
|
|
165
|
+
|
|
166
|
+
# Generate tests with AI
|
|
167
|
+
lex test --generate
|
|
168
|
+
|
|
169
|
+
# Debug failing tests
|
|
170
|
+
lex test --debugTests
|
|
37
171
|
```
|
|
172
|
+
|
|
173
|
+
### 🎨 **Storybook Integration**
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# Start Storybook
|
|
177
|
+
lex storybook --open
|
|
178
|
+
|
|
179
|
+
# With Tailwind CSS support
|
|
180
|
+
lex storybook --useLexConfig
|
|
181
|
+
|
|
182
|
+
# Build static site
|
|
183
|
+
lex storybook --static
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### 🤖 **AI-Powered Development**
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# Generate code
|
|
190
|
+
lex ai --task generate --prompt "Create a user profile component"
|
|
191
|
+
|
|
192
|
+
# Explain code
|
|
193
|
+
lex ai --task explain --file src/components/Button.tsx
|
|
194
|
+
|
|
195
|
+
# Fix errors
|
|
196
|
+
lex ai --task help --prompt "Fix this TypeScript error"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## 🎨 Framework Support
|
|
200
|
+
|
|
201
|
+
Lex works seamlessly with popular React frameworks and libraries:
|
|
202
|
+
|
|
203
|
+
- ✅ **Create React App** - Migrate existing CRA projects
|
|
204
|
+
- ✅ **Next.js** - Use Lex for testing and building
|
|
205
|
+
- ✅ **Gatsby** - Integrate Lex workflows
|
|
206
|
+
- ✅ **Vite** - Alternative to Vite for complex projects
|
|
207
|
+
- ✅ **TypeScript** - Full TypeScript support out of the box
|
|
208
|
+
- ✅ **Tailwind CSS** - Automatic Tailwind integration
|
|
209
|
+
- ✅ **Storybook** - Built-in Storybook support
|
|
210
|
+
|
|
211
|
+
## 🚀 Performance
|
|
212
|
+
|
|
213
|
+
Lex is designed for speed and efficiency:
|
|
214
|
+
|
|
215
|
+
- **⚡ ESBuild Integration** - 10-100x faster than traditional bundlers
|
|
216
|
+
- **🧠 Smart Caching** - Intelligent caching for faster rebuilds
|
|
217
|
+
- **🔄 Hot Reloading** - Instant feedback during development
|
|
218
|
+
- **📦 Tree Shaking** - Automatic dead code elimination
|
|
219
|
+
- **🎯 Code Splitting** - Automatic code splitting for optimal loading
|
|
220
|
+
|
|
221
|
+
## 🛠️ Configuration
|
|
222
|
+
|
|
223
|
+
Lex works out of the box, but you can customize it with a `lex.config.js` file:
|
|
224
|
+
|
|
225
|
+
```javascript
|
|
226
|
+
export default {
|
|
227
|
+
// Project settings
|
|
228
|
+
useTypescript: true,
|
|
229
|
+
sourcePath: './src',
|
|
230
|
+
outputPath: './dist',
|
|
231
|
+
|
|
232
|
+
// Package manager
|
|
233
|
+
packageManager: 'npm',
|
|
234
|
+
|
|
235
|
+
// AI configuration
|
|
236
|
+
ai: {
|
|
237
|
+
provider: 'openai',
|
|
238
|
+
model: 'gpt-4'
|
|
239
|
+
},
|
|
240
|
+
|
|
241
|
+
// ESBuild configuration
|
|
242
|
+
esbuild: {
|
|
243
|
+
minify: true,
|
|
244
|
+
sourcemap: true,
|
|
245
|
+
target: 'es2020'
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## 📚 Documentation
|
|
251
|
+
|
|
252
|
+
- 📖 **[Full Documentation](http://lex.nitrogenlabs.com)** - Complete API reference
|
|
253
|
+
- 🎯 **[Getting Started Guide](http://lex.nitrogenlabs.com/getting-started)** - Step-by-step tutorial
|
|
254
|
+
- 🛠️ **[Configuration Guide](http://lex.nitrogenlabs.com/configuration)** - Customization options
|
|
255
|
+
- 🤖 **[AI Features Guide](http://lex.nitrogenlabs.com/ai-features)** - AI-powered development
|
|
256
|
+
- 🧪 **[Testing Guide](http://lex.nitrogenlabs.com/testing)** - Testing best practices
|
|
257
|
+
|
|
258
|
+
## 🤝 Contributing
|
|
259
|
+
|
|
260
|
+
We love contributions! Here's how you can help:
|
|
261
|
+
|
|
262
|
+
1. **Fork** the repository
|
|
263
|
+
2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)
|
|
264
|
+
3. **Commit** your changes (`git commit -m 'Add amazing feature'`)
|
|
265
|
+
4. **Push** to the branch (`git push origin feature/amazing-feature`)
|
|
266
|
+
5. **Open** a Pull Request
|
|
267
|
+
|
|
268
|
+
### Development Setup
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
# Clone the repository
|
|
272
|
+
git clone https://github.com/nitrogenlabs/lex.git
|
|
273
|
+
|
|
274
|
+
# Install dependencies
|
|
275
|
+
npm install
|
|
276
|
+
|
|
277
|
+
# Run tests
|
|
278
|
+
npm test
|
|
279
|
+
|
|
280
|
+
# Build the project
|
|
281
|
+
npm run build
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## 📄 License
|
|
285
|
+
|
|
286
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
287
|
+
|
|
288
|
+
## 🙏 Acknowledgments
|
|
289
|
+
|
|
290
|
+
- **ESBuild** - For lightning-fast bundling
|
|
291
|
+
- **Jest** - For comprehensive testing
|
|
292
|
+
- **TypeScript** - For type safety
|
|
293
|
+
- **Webpack** - For advanced bundling features
|
|
294
|
+
- **Storybook** - For component development
|
|
295
|
+
- **OpenAI/Anthropic** - For AI-powered features
|
|
296
|
+
|
|
297
|
+
## 📞 Support
|
|
298
|
+
|
|
299
|
+
- 🐛 **Issues** - [GitHub Issues](https://github.com/nitrogenlabs/lex/issues)
|
|
300
|
+
- 💬 **Discussions** - [GitHub Discussions](https://github.com/nitrogenlabs/lex/discussions)
|
|
301
|
+
- 📧 **Email** - <support@nitrogenlabs.com>
|
|
302
|
+
- 🐦 **Twitter** - [@NitrogenLabs](https://twitter.com/NitrogenLabs)
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
**Made with ❤️ by [Nitrogen Labs](https://nitrogenlabs.com)**
|
|
307
|
+
|
|
308
|
+
*Lex - Because development should be effortless.*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = 'test-file-stub';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = jest.fn().mockResolvedValue('1.0.0');
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const React = require('react');
|
|
2
|
+
|
|
3
|
+
// Mock implementation of react-markdown
|
|
4
|
+
const ReactMarkdown = ({children}) => {
|
|
5
|
+
return React.createElement('div', {
|
|
6
|
+
'data-testid': 'react-markdown',
|
|
7
|
+
dangerouslySetInnerHTML: {__html: children}
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
module.exports = ReactMarkdown;
|
|
12
|
+
module.exports.default = ReactMarkdown;
|
package/babel.config.json
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
+
interface ButtonProps {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
onClick?: () => void;
|
|
7
|
+
size?: 'lg' | 'md' | 'sm';
|
|
8
|
+
variant?: 'outline' | 'primary' | 'secondary';
|
|
9
|
+
}
|
|
10
|
+
declare const Button: React.FC<ButtonProps>;
|
|
11
|
+
declare const meta: Meta<typeof Button>;
|
|
12
|
+
export default meta;
|
|
13
|
+
type Story = StoryObj<typeof meta>;
|
|
14
|
+
export declare const Primary: Story;
|
|
15
|
+
export declare const Secondary: Story;
|
|
16
|
+
export declare const Outline: Story;
|
|
17
|
+
export declare const Small: Story;
|
|
18
|
+
export declare const Large: Story;
|
|
19
|
+
export declare const Disabled: Story;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
export interface EsbuildConfig {
|
|
2
|
+
entryPoints?: string[];
|
|
3
|
+
outdir?: string;
|
|
4
|
+
platform?: 'node' | 'browser';
|
|
5
|
+
target?: string;
|
|
6
|
+
format?: 'cjs' | 'esm';
|
|
7
|
+
minify?: boolean;
|
|
8
|
+
treeShaking?: boolean;
|
|
9
|
+
drop?: string[];
|
|
10
|
+
pure?: string[];
|
|
11
|
+
external?: string[];
|
|
12
|
+
splitting?: boolean;
|
|
13
|
+
metafile?: boolean;
|
|
14
|
+
sourcemap?: boolean | 'inline' | 'external';
|
|
15
|
+
legalComments?: 'none' | 'inline' | 'eof' | 'linked' | 'separate';
|
|
16
|
+
banner?: Record<string, string>;
|
|
17
|
+
footer?: Record<string, string>;
|
|
18
|
+
define?: Record<string, string>;
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface JestConfig {
|
|
22
|
+
roots?: string[];
|
|
23
|
+
testEnvironment?: string;
|
|
24
|
+
transform?: Record<string, [string, Record<string, unknown>]>;
|
|
25
|
+
transformIgnorePatterns?: string[];
|
|
26
|
+
moduleNameMapper?: Record<string, string>;
|
|
27
|
+
extensionsToTreatAsEsm?: string[];
|
|
28
|
+
preset?: string;
|
|
29
|
+
[key: string]: unknown;
|
|
30
|
+
}
|
|
31
|
+
export interface WebpackConfig {
|
|
32
|
+
entry?: string | string[];
|
|
33
|
+
output?: Record<string, unknown>;
|
|
34
|
+
module?: Record<string, unknown>;
|
|
35
|
+
plugins?: unknown[];
|
|
36
|
+
[key: string]: unknown;
|
|
37
|
+
}
|
|
38
|
+
export interface AIConfig {
|
|
39
|
+
provider?: 'cursor' | 'copilot' | 'openai' | 'anthropic' | 'none';
|
|
40
|
+
apiKey?: string;
|
|
41
|
+
model?: string;
|
|
42
|
+
maxTokens?: number;
|
|
43
|
+
temperature?: number;
|
|
44
|
+
}
|
|
45
|
+
export interface LexConfigType {
|
|
46
|
+
ai?: AIConfig;
|
|
47
|
+
configFiles?: string[];
|
|
48
|
+
copyFiles?: string[];
|
|
49
|
+
entryHTML?: string;
|
|
50
|
+
entryJs?: string;
|
|
51
|
+
esbuild?: EsbuildConfig;
|
|
52
|
+
env?: object;
|
|
53
|
+
gitUrl?: string;
|
|
54
|
+
jest?: JestConfig;
|
|
55
|
+
libraryName?: string;
|
|
56
|
+
libraryTarget?: string;
|
|
57
|
+
outputFile?: string;
|
|
58
|
+
outputFullPath?: string;
|
|
59
|
+
outputHash?: boolean;
|
|
60
|
+
outputPath?: string;
|
|
61
|
+
packageManager?: 'npm' | 'yarn';
|
|
62
|
+
preset?: 'web' | 'node' | 'lambda' | 'mobile';
|
|
63
|
+
sourceFullPath?: string;
|
|
64
|
+
sourcePath?: string;
|
|
65
|
+
targetEnvironment?: 'node' | 'web';
|
|
66
|
+
useGraphQl?: boolean;
|
|
67
|
+
useTypescript?: boolean;
|
|
68
|
+
webpack?: WebpackConfig;
|
|
69
|
+
}
|
|
70
|
+
export type Config = LexConfigType;
|
|
71
|
+
export declare const defaultConfigValues: LexConfigType;
|
|
72
|
+
export declare function getTypeScriptConfigPath(configName: string): string;
|
|
73
|
+
export declare class LexConfig {
|
|
74
|
+
static config: LexConfigType;
|
|
75
|
+
static getLexDir(): string;
|
|
76
|
+
static set useTypescript(value: boolean);
|
|
77
|
+
static updateConfig(updatedConfig: LexConfigType): LexConfigType;
|
|
78
|
+
static addConfigParams(cmd: any, params: LexConfigType): void;
|
|
79
|
+
static parseConfig(cmd: any, isRoot?: boolean): Promise<void>;
|
|
80
|
+
static checkTypescriptConfig(): void;
|
|
81
|
+
static checkCompileTypescriptConfig(): void;
|
|
82
|
+
static checkLintTypescriptConfig(): void;
|
|
83
|
+
static checkTestTypescriptConfig(): void;
|
|
84
|
+
}
|
package/dist/LexConfig.js
CHANGED
|
@@ -91,9 +91,6 @@ class LexConfig {
|
|
|
91
91
|
static config = {
|
|
92
92
|
...defaultConfigValues
|
|
93
93
|
};
|
|
94
|
-
/**
|
|
95
|
-
* Get the Lex package root directory, handling both development and installed environments
|
|
96
|
-
*/
|
|
97
94
|
static getLexDir() {
|
|
98
95
|
return dirname(getLexPackageJsonPath());
|
|
99
96
|
}
|
|
@@ -286,4 +283,4 @@ export {
|
|
|
286
283
|
defaultConfigValues,
|
|
287
284
|
getTypeScriptConfigPath
|
|
288
285
|
};
|
|
289
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0xleENvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge2Rpcm5hbWUsIGV4dG5hbWUgYXMgcGF0aEV4dG5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7Z2V0RGlyTmFtZSwgZ2V0TGV4UGFja2FnZUpzb25QYXRoLCByZWxhdGl2ZUZpbGVQYXRofSBmcm9tICcuL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4vdXRpbHMvbG9nLmpzJztcblxuY29uc3QgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVzYnVpbGRDb25maWcge1xuICBlbnRyeVBvaW50cz86IHN0cmluZ1tdO1xuICBvdXRkaXI/OiBzdHJpbmc7XG4gIHBsYXRmb3JtPzogJ25vZGUnIHwgJ2Jyb3dzZXInO1xuICB0YXJnZXQ/OiBzdHJpbmc7XG4gIGZvcm1hdD86ICdjanMnIHwgJ2VzbSc7XG4gIG1pbmlmeT86IGJvb2xlYW47XG4gIHRyZWVTaGFraW5nPzogYm9vbGVhbjtcbiAgZHJvcD86IHN0cmluZ1tdO1xuICBwdXJlPzogc3RyaW5nW107XG4gIGV4dGVybmFsPzogc3RyaW5nW107XG4gIHNwbGl0dGluZz86IGJvb2xlYW47XG4gIG1ldGFmaWxlPzogYm9vbGVhbjtcbiAgc291cmNlbWFwPzogYm9vbGVhbiB8ICdpbmxpbmUnIHwgJ2V4dGVybmFsJztcbiAgbGVnYWxDb21tZW50cz86ICdub25lJyB8ICdpbmxpbmUnIHwgJ2VvZicgfCAnbGlua2VkJyB8ICdzZXBhcmF0ZSc7XG4gIGJhbm5lcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGZvb3Rlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGRlZmluZT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSmVzdENvbmZpZyB7XG4gIHJvb3RzPzogc3RyaW5nW107XG4gIHRlc3RFbnZpcm9ubWVudD86IHN0cmluZztcbiAgdHJhbnNmb3JtPzogUmVjb3JkPHN0cmluZywgW3N0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5dPjtcbiAgdHJhbnNmb3JtSWdub3JlUGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgbW9kdWxlTmFtZU1hcHBlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGV4dGVuc2lvbnNUb1RyZWF0QXNFc20/OiBzdHJpbmdbXTtcbiAgcHJlc2V0Pzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYnBhY2tDb25maWcge1xuICBlbnRyeT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBvdXRwdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgbW9kdWxlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHBsdWdpbnM/OiB1bmtub3duW107XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQUlDb25maWcge1xuICBwcm92aWRlcj86ICdjdXJzb3InIHwgJ2NvcGlsb3QnIHwgJ29wZW5haScgfCAnYW50aHJvcGljJyB8ICdub25lJztcbiAgYXBpS2V5Pzogc3RyaW5nO1xuICBtb2RlbD86IHN0cmluZztcbiAgbWF4VG9rZW5zPzogbnVtYmVyO1xuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTGV4Q29uZmlnVHlwZSB7XG4gIGFpPzogQUlDb25maWc7XG4gIGNvbmZpZ0ZpbGVzPzogc3RyaW5nW107XG4gIGNvcHlGaWxlcz86IHN0cmluZ1tdO1xuICBlbnRyeUhUTUw/OiBzdHJpbmc7XG4gIGVudHJ5SnM/OiBzdHJpbmc7XG4gIGVzYnVpbGQ/OiBFc2J1aWxkQ29uZmlnO1xuICBlbnY/OiBvYmplY3Q7XG4gIGdpdFVybD86IHN0cmluZztcbiAgamVzdD86IEplc3RDb25maWc7XG4gIGxpYnJhcnlOYW1lPzogc3RyaW5nO1xuICBsaWJyYXJ5VGFyZ2V0Pzogc3RyaW5nO1xuICBvdXRwdXRGaWxlPzogc3RyaW5nO1xuICBvdXRwdXRGdWxsUGF0aD86IHN0cmluZztcbiAgb3V0cHV0SGFzaD86IGJvb2xlYW47XG4gIG91dHB1dFBhdGg/OiBzdHJpbmc7XG4gIHBhY2thZ2VNYW5hZ2VyPzogJ25wbScgfCAneWFybic7XG4gIHByZXNldD86ICd3ZWInIHwgJ25vZGUnIHwgJ2xhbWJkYScgfCAnbW9iaWxlJztcbiAgc291cmNlRnVsbFBhdGg/OiBzdHJpbmc7XG4gIHNvdXJjZVBhdGg/OiBzdHJpbmc7XG4gIHRhcmdldEVudmlyb25tZW50PzogJ25vZGUnIHwgJ3dlYic7XG4gIHVzZUdyYXBoUWw/OiBib29sZWFuO1xuICB1c2VUeXBlc2NyaXB0PzogYm9vbGVhbjtcbiAgd2VicGFjaz86IFdlYnBhY2tDb25maWc7XG59XG5cbmV4cG9ydCB0eXBlIENvbmZpZyA9IExleENvbmZpZ1R5cGU7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29uZmlnVmFsdWVzOiBMZXhDb25maWdUeXBlID0ge1xuICBhaToge1xuICAgIHByb3ZpZGVyOiAnbm9uZScsXG4gICAgbW9kZWw6ICdncHQtNG8nLFxuICAgIG1heFRva2VuczogNDAwMCxcbiAgICB0ZW1wZXJhdHVyZTogMC4xXG4gIH0sXG4gIGNvbmZpZ0ZpbGVzOiBbXSxcbiAgY29weUZpbGVzOiBbXSxcbiAgZW50cnlIVE1MOiAnaW5kZXguaHRtbCcsXG4gIGVudHJ5SnM6ICdpbmRleC5qcycsXG4gIGVzYnVpbGQ6IHtcbiAgICBtaW5pZnk6IHRydWUsXG4gICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgZHJvcDogWydjb25zb2xlJywgJ2RlYnVnZ2VyJ10sXG4gICAgcHVyZTogWydjb25zb2xlLmxvZycsICdjb25zb2xlLndhcm4nLCAnY29uc29sZS5lcnJvciddLFxuICAgIGxlZ2FsQ29tbWVudHM6ICdub25lJyxcbiAgICBzcGxpdHRpbmc6IHRydWUsXG4gICAgbWV0YWZpbGU6IGZhbHNlLFxuICAgIHNvdXJjZW1hcDogZmFsc2VcbiAgfSxcbiAgZW52OiBudWxsLFxuICBqZXN0OiB7fSxcbiAgb3V0cHV0RnVsbFBhdGg6IHBhdGhSZXNvbHZlKGN3ZCwgJy4vZGlzdCcpLFxuICBvdXRwdXRIYXNoOiBmYWxzZSxcbiAgb3V0cHV0UGF0aDogJy4vZGlzdCcsXG4gIHBhY2thZ2VNYW5hZ2VyOiAnbnBtJyxcbiAgcHJlc2V0OiAnd2ViJyxcbiAgc291cmNlRnVsbFBhdGg6IHBhdGhSZXNvbHZlKGN3ZCwgJy4vc3JjJyksXG4gIHNvdXJjZVBhdGg6ICcuL3NyYycsXG4gIHRhcmdldEVudmlyb25tZW50OiAnd2ViJyxcbiAgdXNlR3JhcGhRbDogZmFsc2UsXG4gIHVzZVR5cGVzY3JpcHQ6IGZhbHNlLFxuICB3ZWJwYWNrOiB7fVxufTtcblxuZnVuY3Rpb24gZmluZExleFJvb3Qoc3RhcnREaXI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBkaXIgPSBzdGFydERpcjtcbiAgd2hpbGUoZGlyICE9PSAnLycgJiYgZGlyICE9PSAnLicpIHtcbiAgICBjb25zdCBwa2dQYXRoID0gcGF0aFJlc29sdmUoZGlyLCAncGFja2FnZS5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyhwa2dQYXRoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocGtnUGF0aCwgJ3V0ZjgnKSk7XG4gICAgICAgIGlmKHBrZy5uYW1lID09PSAnQG5sYWJzL2xleCcpIHtcbiAgICAgICAgICByZXR1cm4gZGlyO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKTtcbiAgICBpZihwYXJlbnQgPT09IGRpcikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRpciA9IHBhcmVudDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIEBubGFicy9sZXggcm9vdCcpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgYXBwcm9wcmlhdGUgVHlwZVNjcmlwdCBjb25maWcgcGF0aCwgcHJpb3JpdGl6aW5nIHByb2plY3QgY29uZmlncyBvdmVyIExleCBjb25maWdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aChjb25maWdOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIEZvciBjb21waWxlIGNvbW1hbmQsIGNoZWNrIGZvciBwcm9qZWN0J3MgYnVpbGQgY29uZmlnIGZpcnN0XG4gIGlmKGNvbmZpZ05hbWUgPT09ICd0c2NvbmZpZy5idWlsZC5qc29uJykge1xuICAgIGNvbnN0IHByb2plY3RCdWlsZENvbmZpZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJ3RzY29uZmlnLmJ1aWxkLmpzb24nKTtcbiAgICBpZihleGlzdHNTeW5jKHByb2plY3RCdWlsZENvbmZpZykpIHtcbiAgICAgIHJldHVybiBwcm9qZWN0QnVpbGRDb25maWc7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIGxpbnQgY29tbWFuZCwgY2hlY2sgZm9yIHByb2plY3QncyBsaW50IGNvbmZpZyBmaXJzdFxuICBpZihjb25maWdOYW1lID09PSAndHNjb25maWcubGludC5qc29uJykge1xuICAgIGNvbnN0IHByb2plY3RMaW50Q29uZmlnID0gcGF0aFJlc29sdmUoY3dkLCAndHNjb25maWcuZXNsaW50Lmpzb24nKTtcbiAgICBpZihleGlzdHNTeW5jKHByb2plY3RMaW50Q29uZmlnKSkge1xuICAgICAgcmV0dXJuIHByb2plY3RMaW50Q29uZmlnO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvciB0ZXN0IGNvbW1hbmQsIGNoZWNrIGZvciBwcm9qZWN0J3MgdGVzdCBjb25maWcgZmlyc3RcbiAgaWYoY29uZmlnTmFtZSA9PT0gJ3RzY29uZmlnLnRlc3QuanNvbicpIHtcbiAgICBjb25zdCBwcm9qZWN0VGVzdENvbmZpZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJ3RzY29uZmlnLnRlc3QuanNvbicpO1xuICAgIGlmKGV4aXN0c1N5bmMocHJvamVjdFRlc3RDb25maWcpKSB7XG4gICAgICByZXR1cm4gcHJvamVjdFRlc3RDb25maWc7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgZm9yIHRoZSBleGFjdCBjb25maWcgbmFtZSBpbiB0aGUgcHJvamVjdFxuICBjb25zdCBwcm9qZWN0Q29uZmlnUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgY29uZmlnTmFtZSk7XG4gIGlmKGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ1BhdGgpKSB7XG4gICAgcmV0dXJuIHByb2plY3RDb25maWdQYXRoO1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCB1c2UgTGV4J3MgY29uZmlnXG4gIGNvbnN0IGxleERpciA9IExleENvbmZpZy5nZXRMZXhEaXIoKTtcbiAgcmV0dXJuIHBhdGhSZXNvbHZlKGxleERpciwgY29uZmlnTmFtZSk7XG59XG5cbmV4cG9ydCBjbGFzcyBMZXhDb25maWcge1xuICBzdGF0aWMgY29uZmlnOiBMZXhDb25maWdUeXBlID0ge1xuICAgIC4uLmRlZmF1bHRDb25maWdWYWx1ZXNcbiAgfTtcblxuICAvKipcbiAgICogR2V0IHRoZSBMZXggcGFja2FnZSByb290IGRpcmVjdG9yeSwgaGFuZGxpbmcgYm90aCBkZXZlbG9wbWVudCBhbmQgaW5zdGFsbGVkIGVudmlyb25tZW50c1xuICAgKi9cbiAgc3RhdGljIGdldExleERpcigpOiBzdHJpbmcge1xuICAgIC8vIEFsd2F5cyB1c2UgdGhlIGRpcmVjdG9yeSBvZiBMZXgncyBvd24gcGFja2FnZS5qc29uXG4gICAgcmV0dXJuIGRpcm5hbWUoZ2V0TGV4UGFja2FnZUpzb25QYXRoKCkpO1xuICB9XG5cbiAgc3RhdGljIHNldCB1c2VUeXBlc2NyaXB0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgTGV4Q29uZmlnLmNvbmZpZy51c2VUeXBlc2NyaXB0ID0gdmFsdWU7XG4gICAgY29uc3Qge3NvdXJjZUZ1bGxQYXRofSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgICBjb25zdCB7ZW50cnlKc30gPSBMZXhDb25maWcuY29uZmlnO1xuXG4gICAgaWYoZW50cnlKcyA9PT0gJ2luZGV4LmpzJyAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgaW5kZXhQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShjd2QsIHNvdXJjZUZ1bGxQYXRoLCAnaW5kZXgudHN4Jyk7XG4gICAgICBjb25zdCBoYXNJbmRleFRzeDogYm9vbGVhbiA9IGV4aXN0c1N5bmMoaW5kZXhQYXRoKTtcblxuICAgICAgaWYoaGFzSW5kZXhUc3gpIHtcbiAgICAgICAgTGV4Q29uZmlnLmNvbmZpZy5lbnRyeUpzID0gJ2luZGV4LnRzeCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBMZXhDb25maWcuY29uZmlnLmVudHJ5SnMgPSAnaW5kZXgudHMnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyB1cGRhdGVDb25maWcodXBkYXRlZENvbmZpZzogTGV4Q29uZmlnVHlwZSk6IExleENvbmZpZ1R5cGUge1xuICAgIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgb3V0cHV0UGF0aCwgc291cmNlUGF0aCwgc291cmNlRnVsbFBhdGgsIHVzZVR5cGVzY3JpcHQsIGFpfSA9IHVwZGF0ZWRDb25maWc7XG4gICAgY29uc3QgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgaWYodXNlVHlwZXNjcmlwdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBMZXhDb25maWcudXNlVHlwZXNjcmlwdCA9IHVzZVR5cGVzY3JpcHQ7XG4gICAgfVxuXG4gICAgaWYob3V0cHV0UGF0aCAhPT0gdW5kZWZpbmVkICYmIG91dHB1dEZ1bGxQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZWRDb25maWcub3V0cHV0RnVsbFBhdGggPSBwYXRoUmVzb2x2ZShjd2QsIG91dHB1dFBhdGgpO1xuICAgIH1cblxuICAgIGlmKHNvdXJjZVBhdGggIT09IHVuZGVmaW5lZCAmJiBzb3VyY2VGdWxsUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGVkQ29uZmlnLnNvdXJjZUZ1bGxQYXRoID0gcGF0aFJlc29sdmUoY3dkLCBzb3VyY2VQYXRoKTtcbiAgICB9XG5cbiAgICBpZihhaSkge1xuICAgICAgTGV4Q29uZmlnLmNvbmZpZy5haSA9IHsuLi5MZXhDb25maWcuY29uZmlnLmFpLCAuLi5haX07XG5cbiAgICAgIGlmKHByb2Nlc3MuZW52LkNVUlNPUl9JREUgPT09ICd0cnVlJyAmJiBMZXhDb25maWcuY29uZmlnLmFpLnByb3ZpZGVyID09PSAnbm9uZScpIHtcbiAgICAgICAgTGV4Q29uZmlnLmNvbmZpZy5haS5wcm92aWRlciA9ICdjdXJzb3InO1xuICAgICAgfVxuICAgIH1cblxuICAgIExleENvbmZpZy5jb25maWcgPSB7Li4uTGV4Q29uZmlnLmNvbmZpZywgLi4udXBkYXRlZENvbmZpZ307XG5cbiAgICByZXR1cm4gTGV4Q29uZmlnLmNvbmZpZztcbiAgfVxuXG4gIHN0YXRpYyBhZGRDb25maWdQYXJhbXMoY21kLCBwYXJhbXM6IExleENvbmZpZ1R5cGUpIHtcbiAgICBjb25zdCBuYW1lUHJvcGVydHk6IHN0cmluZyA9ICdfbmFtZSc7XG4gICAgY29uc3Qge2Vudmlyb25tZW50LCBvdXRwdXRQYXRoLCBzb3VyY2VQYXRoLCB0eXBlc2NyaXB0fSA9IGNtZDtcblxuICAgIGlmKG91dHB1dFBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLm91dHB1dFBhdGggPSBvdXRwdXRQYXRoO1xuICAgICAgcGFyYW1zLm91dHB1dEZ1bGxQYXRoID0gcGF0aFJlc29sdmUoY3dkLCBvdXRwdXRQYXRoKTtcbiAgICB9XG5cbiAgICBpZihzb3VyY2VQYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy5zb3VyY2VQYXRoID0gc291cmNlUGF0aDtcbiAgICAgIHBhcmFtcy5zb3VyY2VGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgc291cmNlUGF0aCk7XG4gICAgfVxuXG4gICAgaWYodHlwZXNjcmlwdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMudXNlVHlwZXNjcmlwdCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYoZW52aXJvbm1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLnRhcmdldEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgPT09ICd3ZWInID8gJ3dlYicgOiAnbm9kZSc7XG4gICAgfVxuXG4gICAgcHJvY2Vzcy5lbnYuTEVYX0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAge1xuICAgICAgICAuLi5MZXhDb25maWcudXBkYXRlQ29uZmlnKHBhcmFtcyksXG4gICAgICAgIGNvbW1hbmROYW1lOiBjbWRbbmFtZVByb3BlcnR5XSxcbiAgICAgICAgaXNTdGF0aWM6IGNtZC5zdGF0aWNcbiAgICAgIH0sIG51bGwsIDBcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHBhcnNlQ29uZmlnKGNtZCwgaXNSb290OiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGxleENvbmZpZywgbGV4Q29uZmlnTmFtZSwgcXVpZXQsIHR5cGVzY3JpcHQsIGRlYnVnID0gZmFsc2V9ID0gY21kO1xuICAgIGNvbnN0IGNvbmZpZ0Zvcm1hdHMgPSBbJ2pzJywgJ21qcycsICdjanMnLCAndHMnLCAnanNvbiddO1xuICAgIGNvbnN0IGNvbmZpZ0Jhc2VOYW1lOiBzdHJpbmcgPSBsZXhDb25maWdOYW1lIHx8ICdsZXguY29uZmlnJztcbiAgICBsZXQgY29uZmlnUGF0aDogc3RyaW5nID0gbGV4Q29uZmlnIHx8ICcnO1xuICAgIGxldCBjb25maWdFeGlzdHM6IGJvb2xlYW4gPSBsZXhDb25maWcgPyBleGlzdHNTeW5jKGNvbmZpZ1BhdGgpIDogZmFsc2U7XG5cbiAgICBpZighY29uZmlnUGF0aCB8fCAhY29uZmlnRXhpc3RzKSB7XG4gICAgICBpZihkZWJ1Zykge1xuICAgICAgICBsb2coYFNlYXJjaGluZyBmb3IgY29uZmlnIGZpbGVzIHdpdGggYmFzZSBuYW1lOiAke2NvbmZpZ0Jhc2VOYW1lfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgfVxuXG4gICAgICBmb3IoY29uc3QgZm9ybWF0IG9mIGNvbmZpZ0Zvcm1hdHMpIHtcbiAgICAgICAgY29uc3QgcG90ZW50aWFsUGF0aCA9IGlzUm9vdFxuICAgICAgICAgID8gcGF0aFJlc29sdmUoY3dkLCBgLi8ke2NvbmZpZ0Jhc2VOYW1lfS4ke2Zvcm1hdH1gKVxuICAgICAgICAgIDogcmVsYXRpdmVGaWxlUGF0aChgJHtjb25maWdCYXNlTmFtZX0uJHtmb3JtYXR9YCwgY3dkKTtcblxuICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgIGxvZyhgQ2hlY2tpbmcgZm9yIGNvbmZpZyBmaWxlOiAke3BvdGVudGlhbFBhdGh9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZihleGlzdHNTeW5jKHBvdGVudGlhbFBhdGgpKSB7XG4gICAgICAgICAgY29uZmlnUGF0aCA9IHBvdGVudGlhbFBhdGg7XG4gICAgICAgICAgY29uZmlnRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmKGNvbmZpZ0V4aXN0cykge1xuICAgICAgbG9nKGBVc2luZyAke2NsaU5hbWV9IGNvbmZpZ3VyYXRpb24gZmlsZTogJHtjb25maWdQYXRofWAsICdub3RlJywgcXVpZXQpO1xuICAgICAgY29uc3QgZXh0OiBzdHJpbmcgPSBwYXRoRXh0bmFtZShjb25maWdQYXRoKTtcblxuICAgICAgaWYoZXh0ID09PSAnLmpzb24nKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0NvbnRlbnQ6IHN0cmluZyA9IHJlYWRGaWxlU3luYyhjb25maWdQYXRoLCAndXRmOCcpO1xuXG4gICAgICAgIGlmKGNvbmZpZ0NvbnRlbnQpIHtcbiAgICAgICAgICBsZXQgY29uZmlnSnNvbjogTGV4Q29uZmlnVHlwZTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25maWdKc29uID0gSlNPTi5wYXJzZShjb25maWdDb250ZW50KT8uZGVmYXVsdCB8fCB7fTtcbiAgICAgICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBwYXJzZSBKU09OIGNvbmZpZzogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICAgIGNvbmZpZ0pzb24gPSB7fTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBMZXhDb25maWcuYWRkQ29uZmlnUGFyYW1zKGNtZCwgY29uZmlnSnNvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDb25maWcgZmlsZSBtYWxmb3JtZWQsICR7Y29uZmlnUGF0aH1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZihbJy5qcycsICcubWpzJywgJy5janMnLCAnLnRzJ10uaW5jbHVkZXMoZXh0KSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxldCBsZXhDdXN0b21Db25maWc7XG5cbiAgICAgICAgICBpZihleHQgPT09ICcuY2pzJykge1xuICAgICAgICAgICAgY29uc3QgZmlsZVVybCA9IG5ldyBVUkwoYGZpbGU6Ly8vJHtwYXRoUmVzb2x2ZShjb25maWdQYXRoKX1gKS5ocmVmO1xuXG4gICAgICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgICAgICBsb2coYExvYWRpbmcgQ29tbW9uSlMgY29uZmlnIGZyb206ICR7ZmlsZVVybH1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxleEN1c3RvbUNvbmZpZyA9IGF3YWl0IGltcG9ydChmaWxlVXJsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICAgICAgbG9nKGBMb2FkaW5nIEVTTS9UUyBjb25maWcgZnJvbTogJHtjb25maWdQYXRofWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXhDdXN0b21Db25maWcgPSBhd2FpdCBpbXBvcnQoY29uZmlnUGF0aCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29uZmlnID0gbGV4Q3VzdG9tQ29uZmlnLmRlZmF1bHQgfHwgbGV4Q3VzdG9tQ29uZmlnO1xuXG4gICAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICAgIGxvZyhgTG9hZGVkIGNvbmZpZzogJHtKU09OLnN0cmluZ2lmeShjb25maWcsIG51bGwsIDIpfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmKCFjb25maWcpIHtcbiAgICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBXYXJuaW5nOiBDb25maWcgZmlsZSBsb2FkZWQgYnV0IG5vIGNvbmZpZ3VyYXRpb24gZm91bmRgLCAnd2FybicsIHF1aWV0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBMZXhDb25maWcuYWRkQ29uZmlnUGFyYW1zKGNtZCwgY29uZmlnIHx8IHt9KTtcbiAgICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGU6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDb25maWcgZmlsZSBtdXN0IGJlIGEgSlMsIENKUywgTUpTLCBUUywgb3IgSlNPTiBmaWxlLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgbG9nKCdObyBjb25maWcgZmlsZSBmb3VuZC4gVXNpbmcgZGVmYXVsdCBjb25maWd1cmF0aW9uLicsICdpbmZvJywgcXVpZXQpO1xuICAgICAgfVxuXG4gICAgICBMZXhDb25maWcudXNlVHlwZXNjcmlwdCA9ICEhdHlwZXNjcmlwdDtcbiAgICAgIExleENvbmZpZy5hZGRDb25maWdQYXJhbXMoY21kLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY2hlY2tUeXBlc2NyaXB0Q29uZmlnKCkge1xuICAgIGNvbnN0IHRzY29uZmlnUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoY3dkLCAnLi90c2NvbmZpZy5qc29uJyk7XG5cbiAgICBpZighZXhpc3RzU3luYyh0c2NvbmZpZ1BhdGgpKSB7XG4gICAgICBjb25zdCBkaXJOYW1lID0gZ2V0RGlyTmFtZSgpO1xuICAgICAgd3JpdGVGaWxlU3luYyh0c2NvbmZpZ1BhdGgsIHJlYWRGaWxlU3luYyhwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLi4vdHNjb25maWcuYmFzZS5qc29uJykpKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY2hlY2tDb21waWxlVHlwZXNjcmlwdENvbmZpZygpIHtcbiAgICBjb25zdCBsZXhEaXIgPSBMZXhDb25maWcuZ2V0TGV4RGlyKCk7XG4gICAgY29uc3QgdHNjb25maWdDb21waWxlUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUobGV4RGlyLCAnLi90c2NvbmZpZy5idWlsZC5qc29uJyk7XG5cbiAgICBpZighZXhpc3RzU3luYyh0c2NvbmZpZ0NvbXBpbGVQYXRoKSkge1xuICAgICAgLy8gVHJ5IHRvIGNvcHkgZnJvbSB0aGUgdGVtcGxhdGUgbG9jYXRpb25cbiAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgJ3RzY29uZmlnLmJ1aWxkLmpzb24nKTtcbiAgICAgIGlmKGV4aXN0c1N5bmModGVtcGxhdGVQYXRoKSkge1xuICAgICAgICB3cml0ZUZpbGVTeW5jKHRzY29uZmlnQ29tcGlsZVBhdGgsIHJlYWRGaWxlU3luYyh0ZW1wbGF0ZVBhdGgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY2hlY2tMaW50VHlwZXNjcmlwdENvbmZpZygpIHtcbiAgICBjb25zdCBsZXhEaXIgPSBMZXhDb25maWcuZ2V0TGV4RGlyKCk7XG4gICAgY29uc3QgdHNjb25maWdMaW50UGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUobGV4RGlyLCAnLi90c2NvbmZpZy5saW50Lmpzb24nKTtcblxuICAgIGlmKCFleGlzdHNTeW5jKHRzY29uZmlnTGludFBhdGgpKSB7XG4gICAgICAvLyBUcnkgdG8gY29weSBmcm9tIHRoZSB0ZW1wbGF0ZSBsb2NhdGlvblxuICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aFJlc29sdmUobGV4RGlyLCAndHNjb25maWcubGludC5qc29uJyk7XG4gICAgICBpZihleGlzdHNTeW5jKHRlbXBsYXRlUGF0aCkpIHtcbiAgICAgICAgd3JpdGVGaWxlU3luYyh0c2NvbmZpZ0xpbnRQYXRoLCByZWFkRmlsZVN5bmModGVtcGxhdGVQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNoZWNrVGVzdFR5cGVzY3JpcHRDb25maWcoKSB7XG4gICAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuICAgIGNvbnN0IHRzY29uZmlnVGVzdFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGxleERpciwgJy4vdHNjb25maWcudGVzdC5qc29uJyk7XG5cbiAgICBpZighZXhpc3RzU3luYyh0c2NvbmZpZ1Rlc3RQYXRoKSkge1xuICAgICAgLy8gVHJ5IHRvIGNvcHkgZnJvbSB0aGUgdGVtcGxhdGUgbG9jYXRpb25cbiAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgJ3RzY29uZmlnLnRlc3QuanNvbicpO1xuICAgICAgaWYoZXhpc3RzU3luYyh0ZW1wbGF0ZVBhdGgpKSB7XG4gICAgICAgIHdyaXRlRmlsZVN5bmModHNjb25maWdUZXN0UGF0aCwgcmVhZEZpbGVTeW5jKHRlbXBsYXRlUGF0aCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsWUFBWSxjQUFjLHFCQUFvQjtBQUN0RCxTQUFRLFNBQVMsV0FBVyxhQUFhLFdBQVcsbUJBQWtCO0FBQ3RFLFNBQVEsV0FBVTtBQUVsQixTQUFRLFlBQVksdUJBQXVCLHdCQUF1QjtBQUNsRSxTQUFRLFdBQVU7QUFFbEIsTUFBTSxNQUFjLFFBQVEsSUFBSTtBQTZFekIsTUFBTSxzQkFBcUM7QUFBQSxFQUNoRCxJQUFJO0FBQUEsSUFDRixVQUFVO0FBQUEsSUFDVixPQUFPO0FBQUEsSUFDUCxXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0EsYUFBYSxDQUFDO0FBQUEsRUFDZCxXQUFXLENBQUM7QUFBQSxFQUNaLFdBQVc7QUFBQSxFQUNYLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxJQUNSLGFBQWE7QUFBQSxJQUNiLE1BQU0sQ0FBQyxXQUFXLFVBQVU7QUFBQSxJQUM1QixNQUFN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S0FBSztBQUN0RixjQUFHLE9BQU87QUFDUixvQkFBUSxNQUFNLEtBQUs7QUFBQSxVQUNyQjtBQUFBLFFBQ0Y7QUFBQSxNQUNGLE9BQU87QUFDTCxZQUFJO0FBQUEsRUFBSyxPQUFPLGlFQUFpRSxTQUFTLEtBQUs7QUFBQSxNQUNqRztBQUFBLElBQ0YsT0FBTztBQUNMLFVBQUcsT0FBTztBQUNSLFlBQUksc0RBQXNELFFBQVEsS0FBSztBQUFBLE1BQ3pFO0FBRUEsZ0JBQVUsZ0JBQWdCLENBQUMsQ0FBQztBQUM1QixnQkFBVSxnQkFBZ0IsS0FBSyxVQUFVLE1BQU07QUFBQSxJQUNqRDtBQUFBLEVBQ0Y7QUFBQSxFQUVBLE9BQU8sd0JBQXdCO0FBQzdCLFVBQU0sZUFBdUIsWUFBWSxLQUFLLGlCQUFpQjtBQUUvRCxRQUFHLENBQUMsV0FBVyxZQUFZLEdBQUc7QUFDNUIsWUFBTSxVQUFVLFdBQVc7QUFDM0Isb0JBQWMsY0FBYyxhQUFhLFlBQVksU0FBUyw2QkFBNkIsQ0FBQyxDQUFDO0FBQUEsSUFDL0Y7QUFBQSxFQUNGO0FBQUEsRUFFQSxPQUFPLCtCQUErQjtBQUNwQyxVQUFNLFNBQVMsVUFBVSxVQUFVO0FBQ25DLFVBQU0sc0JBQThCLFlBQVksUUFBUSx1QkFBdUI7QUFFL0UsUUFBRyxDQUFDLFdBQVcsbUJBQW1CLEdBQUc7QUFFbkMsWUFBTSxlQUFlLFlBQVksUUFBUSxxQkFBcUI7QUFDOUQsVUFBRyxXQUFXLFlBQVksR0FBRztBQUMzQixzQkFBYyxxQkFBcUIsYUFBYSxZQUFZLENBQUM7QUFBQSxNQUMvRDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFFQSxPQUFPLDRCQUE0QjtBQUNqQyxVQUFNLFNBQVMsVUFBVSxVQUFVO0FBQ25DLFVBQU0sbUJBQTJCLFlBQVksUUFBUSxzQkFBc0I7QUFFM0UsUUFBRyxDQUFDLFdBQVcsZ0JBQWdCLEdBQUc7QUFFaEMsWUFBTSxlQUFlLFlBQVksUUFBUSxvQkFBb0I7QUFDN0QsVUFBRyxXQUFXLFlBQVksR0FBRztBQUMzQixzQkFBYyxrQkFBa0IsYUFBYSxZQUFZLENBQUM7QUFBQSxNQUM1RDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFFQSxPQUFPLDRCQUE0QjtBQUNqQyxVQUFNLFNBQVMsVUFBVSxVQUFVO0FBQ25DLFVBQU0sbUJBQTJCLFlBQVksUUFBUSxzQkFBc0I7QUFFM0UsUUFBRyxDQUFDLFdBQVcsZ0JBQWdCLEdBQUc7QUFFaEMsWUFBTSxlQUFlLFlBQVksUUFBUSxvQkFBb0I7QUFDN0QsVUFBRyxXQUFXLFlBQVksR0FBRztBQUMzQixzQkFBYyxrQkFBa0IsYUFBYSxZQUFZLENBQUM7QUFBQSxNQUM1RDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbImN3ZCJdCn0K
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0xleENvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge2Rpcm5hbWUsIGV4dG5hbWUgYXMgcGF0aEV4dG5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7Z2V0RGlyTmFtZSwgZ2V0TGV4UGFja2FnZUpzb25QYXRoLCByZWxhdGl2ZUZpbGVQYXRofSBmcm9tICcuL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4vdXRpbHMvbG9nLmpzJztcblxuY29uc3QgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVzYnVpbGRDb25maWcge1xuICBlbnRyeVBvaW50cz86IHN0cmluZ1tdO1xuICBvdXRkaXI/OiBzdHJpbmc7XG4gIHBsYXRmb3JtPzogJ25vZGUnIHwgJ2Jyb3dzZXInO1xuICB0YXJnZXQ/OiBzdHJpbmc7XG4gIGZvcm1hdD86ICdjanMnIHwgJ2VzbSc7XG4gIG1pbmlmeT86IGJvb2xlYW47XG4gIHRyZWVTaGFraW5nPzogYm9vbGVhbjtcbiAgZHJvcD86IHN0cmluZ1tdO1xuICBwdXJlPzogc3RyaW5nW107XG4gIGV4dGVybmFsPzogc3RyaW5nW107XG4gIHNwbGl0dGluZz86IGJvb2xlYW47XG4gIG1ldGFmaWxlPzogYm9vbGVhbjtcbiAgc291cmNlbWFwPzogYm9vbGVhbiB8ICdpbmxpbmUnIHwgJ2V4dGVybmFsJztcbiAgbGVnYWxDb21tZW50cz86ICdub25lJyB8ICdpbmxpbmUnIHwgJ2VvZicgfCAnbGlua2VkJyB8ICdzZXBhcmF0ZSc7XG4gIGJhbm5lcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGZvb3Rlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGRlZmluZT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSmVzdENvbmZpZyB7XG4gIHJvb3RzPzogc3RyaW5nW107XG4gIHRlc3RFbnZpcm9ubWVudD86IHN0cmluZztcbiAgdHJhbnNmb3JtPzogUmVjb3JkPHN0cmluZywgW3N0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5dPjtcbiAgdHJhbnNmb3JtSWdub3JlUGF0dGVybnM/OiBzdHJpbmdbXTtcbiAgbW9kdWxlTmFtZU1hcHBlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGV4dGVuc2lvbnNUb1RyZWF0QXNFc20/OiBzdHJpbmdbXTtcbiAgcHJlc2V0Pzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYnBhY2tDb25maWcge1xuICBlbnRyeT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBvdXRwdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgbW9kdWxlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHBsdWdpbnM/OiB1bmtub3duW107XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQUlDb25maWcge1xuICBwcm92aWRlcj86ICdjdXJzb3InIHwgJ2NvcGlsb3QnIHwgJ29wZW5haScgfCAnYW50aHJvcGljJyB8ICdub25lJztcbiAgYXBpS2V5Pzogc3RyaW5nO1xuICBtb2RlbD86IHN0cmluZztcbiAgbWF4VG9rZW5zPzogbnVtYmVyO1xuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTGV4Q29uZmlnVHlwZSB7XG4gIGFpPzogQUlDb25maWc7XG4gIGNvbmZpZ0ZpbGVzPzogc3RyaW5nW107XG4gIGNvcHlGaWxlcz86IHN0cmluZ1tdO1xuICBlbnRyeUhUTUw/OiBzdHJpbmc7XG4gIGVudHJ5SnM/OiBzdHJpbmc7XG4gIGVzYnVpbGQ/OiBFc2J1aWxkQ29uZmlnO1xuICBlbnY/OiBvYmplY3Q7XG4gIGdpdFVybD86IHN0cmluZztcbiAgamVzdD86IEplc3RDb25maWc7XG4gIGxpYnJhcnlOYW1lPzogc3RyaW5nO1xuICBsaWJyYXJ5VGFyZ2V0Pzogc3RyaW5nO1xuICBvdXRwdXRGaWxlPzogc3RyaW5nO1xuICBvdXRwdXRGdWxsUGF0aD86IHN0cmluZztcbiAgb3V0cHV0SGFzaD86IGJvb2xlYW47XG4gIG91dHB1dFBhdGg/OiBzdHJpbmc7XG4gIHBhY2thZ2VNYW5hZ2VyPzogJ25wbScgfCAneWFybic7XG4gIHByZXNldD86ICd3ZWInIHwgJ25vZGUnIHwgJ2xhbWJkYScgfCAnbW9iaWxlJztcbiAgc291cmNlRnVsbFBhdGg/OiBzdHJpbmc7XG4gIHNvdXJjZVBhdGg/OiBzdHJpbmc7XG4gIHRhcmdldEVudmlyb25tZW50PzogJ25vZGUnIHwgJ3dlYic7XG4gIHVzZUdyYXBoUWw/OiBib29sZWFuO1xuICB1c2VUeXBlc2NyaXB0PzogYm9vbGVhbjtcbiAgd2VicGFjaz86IFdlYnBhY2tDb25maWc7XG59XG5cbmV4cG9ydCB0eXBlIENvbmZpZyA9IExleENvbmZpZ1R5cGU7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29uZmlnVmFsdWVzOiBMZXhDb25maWdUeXBlID0ge1xuICBhaToge1xuICAgIHByb3ZpZGVyOiAnbm9uZScsXG4gICAgbW9kZWw6ICdncHQtNG8nLFxuICAgIG1heFRva2VuczogNDAwMCxcbiAgICB0ZW1wZXJhdHVyZTogMC4xXG4gIH0sXG4gIGNvbmZpZ0ZpbGVzOiBbXSxcbiAgY29weUZpbGVzOiBbXSxcbiAgZW50cnlIVE1MOiAnaW5kZXguaHRtbCcsXG4gIGVudHJ5SnM6ICdpbmRleC5qcycsXG4gIGVzYnVpbGQ6IHtcbiAgICBtaW5pZnk6IHRydWUsXG4gICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgZHJvcDogWydjb25zb2xlJywgJ2RlYnVnZ2VyJ10sXG4gICAgcHVyZTogWydjb25zb2xlLmxvZycsICdjb25zb2xlLndhcm4nLCAnY29uc29sZS5lcnJvciddLFxuICAgIGxlZ2FsQ29tbWVudHM6ICdub25lJyxcbiAgICBzcGxpdHRpbmc6IHRydWUsXG4gICAgbWV0YWZpbGU6IGZhbHNlLFxuICAgIHNvdXJjZW1hcDogZmFsc2VcbiAgfSxcbiAgZW52OiBudWxsLFxuICBqZXN0OiB7fSxcbiAgb3V0cHV0RnVsbFBhdGg6IHBhdGhSZXNvbHZlKGN3ZCwgJy4vZGlzdCcpLFxuICBvdXRwdXRIYXNoOiBmYWxzZSxcbiAgb3V0cHV0UGF0aDogJy4vZGlzdCcsXG4gIHBhY2thZ2VNYW5hZ2VyOiAnbnBtJyxcbiAgcHJlc2V0OiAnd2ViJyxcbiAgc291cmNlRnVsbFBhdGg6IHBhdGhSZXNvbHZlKGN3ZCwgJy4vc3JjJyksXG4gIHNvdXJjZVBhdGg6ICcuL3NyYycsXG4gIHRhcmdldEVudmlyb25tZW50OiAnd2ViJyxcbiAgdXNlR3JhcGhRbDogZmFsc2UsXG4gIHVzZVR5cGVzY3JpcHQ6IGZhbHNlLFxuICB3ZWJwYWNrOiB7fVxufTtcblxuZnVuY3Rpb24gZmluZExleFJvb3Qoc3RhcnREaXI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBkaXIgPSBzdGFydERpcjtcbiAgd2hpbGUoZGlyICE9PSAnLycgJiYgZGlyICE9PSAnLicpIHtcbiAgICBjb25zdCBwa2dQYXRoID0gcGF0aFJlc29sdmUoZGlyLCAncGFja2FnZS5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyhwa2dQYXRoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocGtnUGF0aCwgJ3V0ZjgnKSk7XG4gICAgICAgIGlmKHBrZy5uYW1lID09PSAnQG5sYWJzL2xleCcpIHtcbiAgICAgICAgICByZXR1cm4gZGlyO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoe31cbiAgICB9XG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShkaXIpO1xuICAgIGlmKHBhcmVudCA9PT0gZGlyKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGlyID0gcGFyZW50O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgQG5sYWJzL2xleCByb290Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aChjb25maWdOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIGlmKGNvbmZpZ05hbWUgPT09ICd0c2NvbmZpZy5idWlsZC5qc29uJykge1xuICAgIGNvbnN0IHByb2plY3RCdWlsZENvbmZpZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJ3RzY29uZmlnLmJ1aWxkLmpzb24nKTtcbiAgICBpZihleGlzdHNTeW5jKHByb2plY3RCdWlsZENvbmZpZykpIHtcbiAgICAgIHJldHVybiBwcm9qZWN0QnVpbGRDb25maWc7XG4gICAgfVxuICB9XG5cbiAgaWYoY29uZmlnTmFtZSA9PT0gJ3RzY29uZmlnLmxpbnQuanNvbicpIHtcbiAgICBjb25zdCBwcm9qZWN0TGludENvbmZpZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJ3RzY29uZmlnLmVzbGludC5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyhwcm9qZWN0TGludENvbmZpZykpIHtcbiAgICAgIHJldHVybiBwcm9qZWN0TGludENvbmZpZztcbiAgICB9XG4gIH1cblxuICBpZihjb25maWdOYW1lID09PSAndHNjb25maWcudGVzdC5qc29uJykge1xuICAgIGNvbnN0IHByb2plY3RUZXN0Q29uZmlnID0gcGF0aFJlc29sdmUoY3dkLCAndHNjb25maWcudGVzdC5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyhwcm9qZWN0VGVzdENvbmZpZykpIHtcbiAgICAgIHJldHVybiBwcm9qZWN0VGVzdENvbmZpZztcbiAgICB9XG4gIH1cblxuICBjb25zdCBwcm9qZWN0Q29uZmlnUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgY29uZmlnTmFtZSk7XG4gIGlmKGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ1BhdGgpKSB7XG4gICAgcmV0dXJuIHByb2plY3RDb25maWdQYXRoO1xuICB9XG5cbiAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuICByZXR1cm4gcGF0aFJlc29sdmUobGV4RGlyLCBjb25maWdOYW1lKTtcbn1cblxuZXhwb3J0IGNsYXNzIExleENvbmZpZyB7XG4gIHN0YXRpYyBjb25maWc6IExleENvbmZpZ1R5cGUgPSB7XG4gICAgLi4uZGVmYXVsdENvbmZpZ1ZhbHVlc1xuICB9O1xuXG4gIHN0YXRpYyBnZXRMZXhEaXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGlybmFtZShnZXRMZXhQYWNrYWdlSnNvblBhdGgoKSk7XG4gIH1cblxuICBzdGF0aWMgc2V0IHVzZVR5cGVzY3JpcHQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBMZXhDb25maWcuY29uZmlnLnVzZVR5cGVzY3JpcHQgPSB2YWx1ZTtcbiAgICBjb25zdCB7c291cmNlRnVsbFBhdGh9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICAgIGNvbnN0IHtlbnRyeUpzfSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgICBpZihlbnRyeUpzID09PSAnaW5kZXguanMnICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBpbmRleFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGN3ZCwgc291cmNlRnVsbFBhdGgsICdpbmRleC50c3gnKTtcbiAgICAgIGNvbnN0IGhhc0luZGV4VHN4OiBib29sZWFuID0gZXhpc3RzU3luYyhpbmRleFBhdGgpO1xuXG4gICAgICBpZihoYXNJbmRleFRzeCkge1xuICAgICAgICBMZXhDb25maWcuY29uZmlnLmVudHJ5SnMgPSAnaW5kZXgudHN4JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIExleENvbmZpZy5jb25maWcuZW50cnlKcyA9ICdpbmRleC50cyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHVwZGF0ZUNvbmZpZyh1cGRhdGVkQ29uZmlnOiBMZXhDb25maWdUeXBlKTogTGV4Q29uZmlnVHlwZSB7XG4gICAgY29uc3Qge291dHB1dEZ1bGxQYXRoLCBvdXRwdXRQYXRoLCBzb3VyY2VQYXRoLCBzb3VyY2VGdWxsUGF0aCwgdXNlVHlwZXNjcmlwdCwgYWl9ID0gdXBkYXRlZENvbmZpZztcbiAgICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgICBpZih1c2VUeXBlc2NyaXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIExleENvbmZpZy51c2VUeXBlc2NyaXB0ID0gdXNlVHlwZXNjcmlwdDtcbiAgICB9XG5cbiAgICBpZihvdXRwdXRQYXRoICE9PSB1bmRlZmluZWQgJiYgb3V0cHV0RnVsbFBhdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlZENvbmZpZy5vdXRwdXRGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgb3V0cHV0UGF0aCk7XG4gICAgfVxuXG4gICAgaWYoc291cmNlUGF0aCAhPT0gdW5kZWZpbmVkICYmIHNvdXJjZUZ1bGxQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZWRDb25maWcuc291cmNlRnVsbFBhdGggPSBwYXRoUmVzb2x2ZShjd2QsIHNvdXJjZVBhdGgpO1xuICAgIH1cblxuICAgIGlmKGFpKSB7XG4gICAgICBMZXhDb25maWcuY29uZmlnLmFpID0gey4uLkxleENvbmZpZy5jb25maWcuYWksIC4uLmFpfTtcblxuICAgICAgaWYocHJvY2Vzcy5lbnYuQ1VSU09SX0lERSA9PT0gJ3RydWUnICYmIExleENvbmZpZy5jb25maWcuYWkucHJvdmlkZXIgPT09ICdub25lJykge1xuICAgICAgICBMZXhDb25maWcuY29uZmlnLmFpLnByb3ZpZGVyID0gJ2N1cnNvcic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgTGV4Q29uZmlnLmNvbmZpZyA9IHsuLi5MZXhDb25maWcuY29uZmlnLCAuLi51cGRhdGVkQ29uZmlnfTtcblxuICAgIHJldHVybiBMZXhDb25maWcuY29uZmlnO1xuICB9XG5cbiAgc3RhdGljIGFkZENvbmZpZ1BhcmFtcyhjbWQsIHBhcmFtczogTGV4Q29uZmlnVHlwZSkge1xuICAgIGNvbnN0IG5hbWVQcm9wZXJ0eTogc3RyaW5nID0gJ19uYW1lJztcbiAgICBjb25zdCB7ZW52aXJvbm1lbnQsIG91dHB1dFBhdGgsIHNvdXJjZVBhdGgsIHR5cGVzY3JpcHR9ID0gY21kO1xuXG4gICAgaWYob3V0cHV0UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMub3V0cHV0UGF0aCA9IG91dHB1dFBhdGg7XG4gICAgICBwYXJhbXMub3V0cHV0RnVsbFBhdGggPSBwYXRoUmVzb2x2ZShjd2QsIG91dHB1dFBhdGgpO1xuICAgIH1cblxuICAgIGlmKHNvdXJjZVBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLnNvdXJjZVBhdGggPSBzb3VyY2VQYXRoO1xuICAgICAgcGFyYW1zLnNvdXJjZUZ1bGxQYXRoID0gcGF0aFJlc29sdmUoY3dkLCBzb3VyY2VQYXRoKTtcbiAgICB9XG5cbiAgICBpZih0eXBlc2NyaXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy51c2VUeXBlc2NyaXB0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZihlbnZpcm9ubWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMudGFyZ2V0RW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudCA9PT0gJ3dlYicgPyAnd2ViJyA6ICdub2RlJztcbiAgICB9XG5cbiAgICBwcm9jZXNzLmVudi5MRVhfQ09ORklHID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICB7XG4gICAgICAgIC4uLkxleENvbmZpZy51cGRhdGVDb25maWcocGFyYW1zKSxcbiAgICAgICAgY29tbWFuZE5hbWU6IGNtZFtuYW1lUHJvcGVydHldLFxuICAgICAgICBpc1N0YXRpYzogY21kLnN0YXRpY1xuICAgICAgfSwgbnVsbCwgMFxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcGFyc2VDb25maWcoY21kLCBpc1Jvb3Q6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qge2NsaU5hbWUgPSAnTGV4JywgbGV4Q29uZmlnLCBsZXhDb25maWdOYW1lLCBxdWlldCwgdHlwZXNjcmlwdCwgZGVidWcgPSBmYWxzZX0gPSBjbWQ7XG4gICAgY29uc3QgY29uZmlnRm9ybWF0cyA9IFsnanMnLCAnbWpzJywgJ2NqcycsICd0cycsICdqc29uJ107XG4gICAgY29uc3QgY29uZmlnQmFzZU5hbWU6IHN0cmluZyA9IGxleENvbmZpZ05hbWUgfHwgJ2xleC5jb25maWcnO1xuICAgIGxldCBjb25maWdQYXRoOiBzdHJpbmcgPSBsZXhDb25maWcgfHwgJyc7XG4gICAgbGV0IGNvbmZpZ0V4aXN0czogYm9vbGVhbiA9IGxleENvbmZpZyA/IGV4aXN0c1N5bmMoY29uZmlnUGF0aCkgOiBmYWxzZTtcblxuICAgIGlmKCFjb25maWdQYXRoIHx8ICFjb25maWdFeGlzdHMpIHtcbiAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgIGxvZyhgU2VhcmNoaW5nIGZvciBjb25maWcgZmlsZXMgd2l0aCBiYXNlIG5hbWU6ICR7Y29uZmlnQmFzZU5hbWV9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIGZvcihjb25zdCBmb3JtYXQgb2YgY29uZmlnRm9ybWF0cykge1xuICAgICAgICBjb25zdCBwb3RlbnRpYWxQYXRoID0gaXNSb290XG4gICAgICAgICAgPyBwYXRoUmVzb2x2ZShjd2QsIGAuLyR7Y29uZmlnQmFzZU5hbWV9LiR7Zm9ybWF0fWApXG4gICAgICAgICAgOiByZWxhdGl2ZUZpbGVQYXRoKGAke2NvbmZpZ0Jhc2VOYW1lfS4ke2Zvcm1hdH1gLCBjd2QpO1xuXG4gICAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgICAgbG9nKGBDaGVja2luZyBmb3IgY29uZmlnIGZpbGU6ICR7cG90ZW50aWFsUGF0aH1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGV4aXN0c1N5bmMocG90ZW50aWFsUGF0aCkpIHtcbiAgICAgICAgICBjb25maWdQYXRoID0gcG90ZW50aWFsUGF0aDtcbiAgICAgICAgICBjb25maWdFeGlzdHMgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYoY29uZmlnRXhpc3RzKSB7XG4gICAgICBsb2coYFVzaW5nICR7Y2xpTmFtZX0gY29uZmlndXJhdGlvbiBmaWxlOiAke2NvbmZpZ1BhdGh9YCwgJ25vdGUnLCBxdWlldCk7XG4gICAgICBjb25zdCBleHQ6IHN0cmluZyA9IHBhdGhFeHRuYW1lKGNvbmZpZ1BhdGgpO1xuXG4gICAgICBpZihleHQgPT09ICcuanNvbicpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQ29udGVudDogc3RyaW5nID0gcmVhZEZpbGVTeW5jKGNvbmZpZ1BhdGgsICd1dGY4Jyk7XG5cbiAgICAgICAgaWYoY29uZmlnQ29udGVudCkge1xuICAgICAgICAgIGxldCBjb25maWdKc29uOiBMZXhDb25maWdUeXBlO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbmZpZ0pzb24gPSBKU09OLnBhcnNlKGNvbmZpZ0NvbnRlbnQpPy5kZWZhdWx0IHx8IHt9O1xuICAgICAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIHBhcnNlIEpTT04gY29uZmlnOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgICAgY29uZmlnSnNvbiA9IHt9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIExleENvbmZpZy5hZGRDb25maWdQYXJhbXMoY21kLCBjb25maWdKc29uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENvbmZpZyBmaWxlIG1hbGZvcm1lZCwgJHtjb25maWdQYXRofWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKFsnLmpzJywgJy5tanMnLCAnLmNqcycsICcudHMnXS5pbmNsdWRlcyhleHQpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IGxleEN1c3RvbUNvbmZpZztcblxuICAgICAgICAgIGlmKGV4dCA9PT0gJy5janMnKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlVXJsID0gbmV3IFVSTChgZmlsZTovLy8ke3BhdGhSZXNvbHZlKGNvbmZpZ1BhdGgpfWApLmhyZWY7XG5cbiAgICAgICAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgICAgICAgIGxvZyhgTG9hZGluZyBDb21tb25KUyBjb25maWcgZnJvbTogJHtmaWxlVXJsfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV4Q3VzdG9tQ29uZmlnID0gYXdhaXQgaW1wb3J0KGZpbGVVcmwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgICAgICBsb2coYExvYWRpbmcgRVNNL1RTIGNvbmZpZyBmcm9tOiAke2NvbmZpZ1BhdGh9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxleEN1c3RvbUNvbmZpZyA9IGF3YWl0IGltcG9ydChjb25maWdQYXRoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjb25maWcgPSBsZXhDdXN0b21Db25maWcuZGVmYXVsdCB8fCBsZXhDdXN0b21Db25maWc7XG5cbiAgICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgICAgbG9nKGBMb2FkZWQgY29uZmlnOiAke0pTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMil9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYoIWNvbmZpZykge1xuICAgICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IFdhcm5pbmc6IENvbmZpZyBmaWxlIGxvYWRlZCBidXQgbm8gY29uZmlndXJhdGlvbiBmb3VuZGAsICd3YXJuJywgcXVpZXQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIExleENvbmZpZy5hZGRDb25maWdQYXJhbXMoY21kLCBjb25maWcgfHwge30pO1xuICAgICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBGYWlsZWQgdG8gbG9hZCBjb25maWcgZmlsZTogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENvbmZpZyBmaWxlIG11c3QgYmUgYSBKUywgQ0pTLCBNSlMsIFRTLCBvciBKU09OIGZpbGUuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZihkZWJ1Zykge1xuICAgICAgICBsb2coJ05vIGNvbmZpZyBmaWxlIGZvdW5kLiBVc2luZyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIExleENvbmZpZy51c2VUeXBlc2NyaXB0ID0gISF0eXBlc2NyaXB0O1xuICAgICAgTGV4Q29uZmlnLmFkZENvbmZpZ1BhcmFtcyhjbWQsIExleENvbmZpZy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjaGVja1R5cGVzY3JpcHRDb25maWcoKSB7XG4gICAgY29uc3QgdHNjb25maWdQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShjd2QsICcuL3RzY29uZmlnLmpzb24nKTtcblxuICAgIGlmKCFleGlzdHNTeW5jKHRzY29uZmlnUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRpck5hbWUgPSBnZXREaXJOYW1lKCk7XG4gICAgICB3cml0ZUZpbGVTeW5jKHRzY29uZmlnUGF0aCwgcmVhZEZpbGVTeW5jKHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi8uLi90c2NvbmZpZy5iYXNlLmpzb24nKSkpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjaGVja0NvbXBpbGVUeXBlc2NyaXB0Q29uZmlnKCkge1xuICAgIGNvbnN0IGxleERpciA9IExleENvbmZpZy5nZXRMZXhEaXIoKTtcbiAgICBjb25zdCB0c2NvbmZpZ0NvbXBpbGVQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShsZXhEaXIsICcuL3RzY29uZmlnLmJ1aWxkLmpzb24nKTtcblxuICAgIGlmKCFleGlzdHNTeW5jKHRzY29uZmlnQ29tcGlsZVBhdGgpKSB7XG4gICAgICBjb25zdCB0ZW1wbGF0ZVBhdGggPSBwYXRoUmVzb2x2ZShsZXhEaXIsICd0c2NvbmZpZy5idWlsZC5qc29uJyk7XG4gICAgICBpZihleGlzdHNTeW5jKHRlbXBsYXRlUGF0aCkpIHtcbiAgICAgICAgd3JpdGVGaWxlU3luYyh0c2NvbmZpZ0NvbXBpbGVQYXRoLCByZWFkRmlsZVN5bmModGVtcGxhdGVQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNoZWNrTGludFR5cGVzY3JpcHRDb25maWcoKSB7XG4gICAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuICAgIGNvbnN0IHRzY29uZmlnTGludFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGxleERpciwgJy4vdHNjb25maWcubGludC5qc29uJyk7XG5cbiAgICBpZighZXhpc3RzU3luYyh0c2NvbmZpZ0xpbnRQYXRoKSkge1xuICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aFJlc29sdmUobGV4RGlyLCAndHNjb25maWcubGludC5qc29uJyk7XG4gICAgICBpZihleGlzdHNTeW5jKHRlbXBsYXRlUGF0aCkpIHtcbiAgICAgICAgd3JpdGVGaWxlU3luYyh0c2NvbmZpZ0xpbnRQYXRoLCByZWFkRmlsZVN5bmModGVtcGxhdGVQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNoZWNrVGVzdFR5cGVzY3JpcHRDb25maWcoKSB7XG4gICAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuICAgIGNvbnN0IHRzY29uZmlnVGVzdFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGxleERpciwgJy4vdHNjb25maWcudGVzdC5qc29uJyk7XG5cbiAgICBpZighZXhpc3RzU3luYyh0c2NvbmZpZ1Rlc3RQYXRoKSkge1xuICAgICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcGF0aFJlc29sdmUobGV4RGlyLCAndHNjb25maWcudGVzdC5qc29uJyk7XG4gICAgICBpZihleGlzdHNTeW5jKHRlbXBsYXRlUGF0aCkpIHtcbiAgICAgICAgd3JpdGVGaWxlU3luYyh0c2NvbmZpZ1Rlc3RQYXRoLCByZWFkRmlsZVN5bmModGVtcGxhdGVQYXRoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxZQUFZLGNBQWMscUJBQW9CO0FBQ3RELFNBQVEsU0FBUyxXQUFXLGFBQWEsV0FBVyxtQkFBa0I7QUFDdEUsU0FBUSxXQUFVO0FBRWxCLFNBQVEsWUFBWSx1QkFBdUIsd0JBQXVCO0FBQ2xFLFNBQVEsV0FBVTtBQUVsQixNQUFNLE1BQWMsUUFBUSxJQUFJO0FBNkV6QixNQUFNLHNCQUFxQztBQUFBLEVBQ2hELElBQUk7QUFBQSxJQUNGLFVBQVU7QUFBQSxJQUNWLE9B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
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export interface AIOptions {
|
|
3
|
+
readonly cliName?: string;
|
|
4
|
+
readonly context?: boolean;
|
|
5
|
+
readonly file?: string;
|
|
6
|
+
readonly lexConfig?: string;
|
|
7
|
+
readonly model?: string;
|
|
8
|
+
readonly prompt?: string;
|
|
9
|
+
readonly quiet?: boolean;
|
|
10
|
+
readonly task?: 'generate' | 'explain' | 'test' | 'optimize' | 'help' | 'ask' | 'analyze';
|
|
11
|
+
readonly debug?: boolean;
|
|
12
|
+
readonly provider?: string;
|
|
13
|
+
readonly dir?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const aiFunction: (options: AIOptions) => Promise<any>;
|
|
16
|
+
export declare const ai: Command;
|
|
17
|
+
export default ai;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/
|
|
5
|
+
import ai, { type AIOptions } from './ai.js';
|
|
6
|
+
export { ai };
|
|
7
|
+
export type { AIOptions };
|
|
8
|
+
export default ai;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface BuildOptions {
|
|
2
|
+
readonly assist?: boolean;
|
|
3
|
+
readonly analyze?: boolean;
|
|
4
|
+
readonly bundler?: 'webpack' | 'esbuild';
|
|
5
|
+
readonly cliName?: string;
|
|
6
|
+
readonly format?: string;
|
|
7
|
+
readonly outputPath?: string;
|
|
8
|
+
readonly quiet?: boolean;
|
|
9
|
+
readonly remove?: boolean;
|
|
10
|
+
readonly sourcePath?: string;
|
|
11
|
+
readonly variables?: string;
|
|
12
|
+
readonly watch?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export type BuildCallback = (status: number) => void;
|
|
15
|
+
export declare const buildWithEsBuild: (spinner: any, commandOptions: BuildOptions, callback: BuildCallback) => Promise<1 | 0>;
|
|
16
|
+
export declare const buildWithWebpack: (spinner: any, cmd: any, callback: any) => Promise<1 | 0>;
|
|
17
|
+
export declare const build: (cmd: BuildOptions, callback?: BuildCallback) => Promise<number>;
|
|
18
|
+
export default build;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface CleanOptions {
|
|
2
|
+
readonly cliName?: string;
|
|
3
|
+
readonly quiet?: boolean;
|
|
4
|
+
readonly snapshots?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export type CleanCallback = (status: number) => void;
|
|
7
|
+
export declare const clean: (cmd: CleanOptions, callback?: CleanCallback) => Promise<number>;
|