@teambit/generator 1.0.564 → 1.0.565
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/dist/component-generator.d.ts +6 -2
- package/dist/component-generator.js +86 -2
- package/dist/component-generator.js.map +1 -1
- package/dist/component-template.d.ts +30 -0
- package/dist/component-template.js.map +1 -1
- package/dist/generator.main.runtime.d.ts +3 -2
- package/dist/generator.main.runtime.js +10 -6
- package/dist/generator.main.runtime.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{preview-1741281171921.js → preview-1741317573148.js} +2 -2
- package/package.json +23 -22
@@ -5,7 +5,7 @@ import { TrackerMain } from '@teambit/tracker';
|
|
5
5
|
import { NewComponentHelperMain } from '@teambit/new-component-helper';
|
6
6
|
import { ComponentID } from '@teambit/component-id';
|
7
7
|
import { WorkspaceConfigFilesMain } from '@teambit/workspace-config-files';
|
8
|
-
import { ComponentTemplate } from './component-template';
|
8
|
+
import { ComponentTemplate, PromptResults } from './component-template';
|
9
9
|
import { CreateOptions } from './create.cmd';
|
10
10
|
import { OnComponentCreateSlot } from './generator.main.runtime';
|
11
11
|
export type GenerateResult = {
|
@@ -38,7 +38,8 @@ export declare class ComponentGenerator {
|
|
38
38
|
private aspectId;
|
39
39
|
private envId?;
|
40
40
|
private installOptions;
|
41
|
-
|
41
|
+
private promptResults?;
|
42
|
+
constructor(workspace: Workspace, componentIds: ComponentID[], options: Partial<CreateOptions>, template: ComponentTemplate, envs: EnvsMain, newComponentHelper: NewComponentHelperMain, tracker: TrackerMain, wsConfigFiles: WorkspaceConfigFilesMain, logger: Logger, onComponentCreateSlot: OnComponentCreateSlot, aspectId: string, envId?: ComponentID | undefined, installOptions?: InstallOptions, promptResults?: PromptResults | undefined);
|
42
43
|
generate(force?: boolean): Promise<GenerateResult[]>;
|
43
44
|
private tryLinkToNodeModules;
|
44
45
|
private runOnComponentCreateHook;
|
@@ -51,6 +52,9 @@ export declare class ComponentGenerator {
|
|
51
52
|
*/
|
52
53
|
private tryWriteConfigFiles;
|
53
54
|
private deleteGeneratedComponents;
|
55
|
+
private getOptionResultFromArgs;
|
56
|
+
private getPromptOptionResult;
|
57
|
+
private getPromptResults;
|
54
58
|
private generateOneComponent;
|
55
59
|
private addEnvIfProvidedByFlag;
|
56
60
|
}
|
@@ -11,6 +11,13 @@ function _fsExtra() {
|
|
11
11
|
};
|
12
12
|
return data;
|
13
13
|
}
|
14
|
+
function _enquirer() {
|
15
|
+
const data = require("enquirer");
|
16
|
+
_enquirer = function () {
|
17
|
+
return data;
|
18
|
+
};
|
19
|
+
return data;
|
20
|
+
}
|
14
21
|
function _pMapSeries() {
|
15
22
|
const data = _interopRequireDefault(require("p-map-series"));
|
16
23
|
_pMapSeries = function () {
|
@@ -69,7 +76,7 @@ function _componentId() {
|
|
69
76
|
}
|
70
77
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
71
78
|
class ComponentGenerator {
|
72
|
-
constructor(workspace, componentIds, options, template, envs, newComponentHelper, tracker, wsConfigFiles, logger, onComponentCreateSlot, aspectId, envId, installOptions = {}) {
|
79
|
+
constructor(workspace, componentIds, options, template, envs, newComponentHelper, tracker, wsConfigFiles, logger, onComponentCreateSlot, aspectId, envId, installOptions = {}, promptResults) {
|
73
80
|
this.workspace = workspace;
|
74
81
|
this.componentIds = componentIds;
|
75
82
|
this.options = options;
|
@@ -83,6 +90,7 @@ class ComponentGenerator {
|
|
83
90
|
this.aspectId = aspectId;
|
84
91
|
this.envId = envId;
|
85
92
|
this.installOptions = installOptions;
|
93
|
+
this.promptResults = promptResults;
|
86
94
|
}
|
87
95
|
async generate(force = false) {
|
88
96
|
const dirsToDeleteIfFailed = [];
|
@@ -161,6 +169,80 @@ class ComponentGenerator {
|
|
161
169
|
}
|
162
170
|
}));
|
163
171
|
}
|
172
|
+
getOptionResultFromArgs(option) {
|
173
|
+
const args = process.argv.slice(2);
|
174
|
+
const argIndex = args.indexOf(`--${option.name}`);
|
175
|
+
if (argIndex === -1) {
|
176
|
+
return;
|
177
|
+
}
|
178
|
+
if (option.type === 'confirm') {
|
179
|
+
return true;
|
180
|
+
}
|
181
|
+
const argValue = args[argIndex + 1];
|
182
|
+
if (!argValue) {
|
183
|
+
throw new Error(`Missing value for ${option.name}`);
|
184
|
+
}
|
185
|
+
if (option.type === 'select' && !option.choices?.includes(argValue)) {
|
186
|
+
throw new Error(`Invalid value for ${option.name}. Please use one of the following values: ${option.choices?.join(', ')}`);
|
187
|
+
}
|
188
|
+
return argValue;
|
189
|
+
}
|
190
|
+
async getPromptOptionResult(option) {
|
191
|
+
switch (option.type) {
|
192
|
+
case 'input':
|
193
|
+
return (0, _enquirer().prompt)({
|
194
|
+
type: 'input',
|
195
|
+
name: option.name,
|
196
|
+
message: option.message
|
197
|
+
});
|
198
|
+
case 'confirm':
|
199
|
+
return (0, _enquirer().prompt)({
|
200
|
+
type: 'confirm',
|
201
|
+
name: option.name,
|
202
|
+
message: option.message
|
203
|
+
});
|
204
|
+
case 'select':
|
205
|
+
return (0, _enquirer().prompt)({
|
206
|
+
type: 'select',
|
207
|
+
name: option.name,
|
208
|
+
message: option.message,
|
209
|
+
choices: option.choices
|
210
|
+
});
|
211
|
+
default:
|
212
|
+
throw new Error(`unexpected prompt type ${option.type}`);
|
213
|
+
}
|
214
|
+
}
|
215
|
+
async getPromptResults() {
|
216
|
+
if (this.promptResults) {
|
217
|
+
return this.promptResults;
|
218
|
+
}
|
219
|
+
const promptOptions = this.template.promptOptions?.();
|
220
|
+
if (!promptOptions) {
|
221
|
+
return undefined;
|
222
|
+
}
|
223
|
+
const promptResults = {};
|
224
|
+
for await (const option of promptOptions) {
|
225
|
+
const fromArg = this.getOptionResultFromArgs(option);
|
226
|
+
if (fromArg) {
|
227
|
+
promptResults[option.name] = fromArg;
|
228
|
+
continue;
|
229
|
+
}
|
230
|
+
if (option.skip && option.skip(promptResults)) {
|
231
|
+
continue;
|
232
|
+
}
|
233
|
+
try {
|
234
|
+
const optionResult = await this.getPromptOptionResult(option);
|
235
|
+
promptResults[option.name] = optionResult[option.name];
|
236
|
+
} catch (err) {
|
237
|
+
if (!err) {
|
238
|
+
// for some reason, when the user clicks Ctrl+C, the error is an empty string
|
239
|
+
throw new Error(`The prompt has been canceled`);
|
240
|
+
}
|
241
|
+
throw err;
|
242
|
+
}
|
243
|
+
}
|
244
|
+
return promptResults;
|
245
|
+
}
|
164
246
|
async generateOneComponent(componentId, componentPath) {
|
165
247
|
const name = componentId.name;
|
166
248
|
const namePascalCase = (0, _camelcase().default)(name, {
|
@@ -168,13 +250,15 @@ class ComponentGenerator {
|
|
168
250
|
});
|
169
251
|
const nameCamelCase = (0, _camelcase().default)(name);
|
170
252
|
const aspectId = _componentId().ComponentID.fromString(this.aspectId);
|
253
|
+
const promptResults = await this.getPromptResults();
|
171
254
|
const files = await this.template.generateFiles({
|
172
255
|
name,
|
173
256
|
namePascalCase,
|
174
257
|
nameCamelCase,
|
175
258
|
componentId,
|
176
259
|
aspectId,
|
177
|
-
envId: this.envId
|
260
|
+
envId: this.envId,
|
261
|
+
promptResults
|
178
262
|
});
|
179
263
|
const mainFile = files.find(file => file.isMain);
|
180
264
|
await this.newComponentHelper.writeComponentFiles(componentPath, files.map(f => ({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_pMapSeries","_path","_envs","_camelcase","_bitError","_workspaceModules","_pkgModules","_componentId","e","__esModule","default","ComponentGenerator","constructor","workspace","componentIds","options","template","envs","newComponentHelper","tracker","wsConfigFiles","logger","onComponentCreateSlot","aspectId","envId","installOptions","generate","force","dirsToDeleteIfFailed","generateResults","pMapSeries","componentId","componentPath","getNewComponentPath","pathFromUser","path","componentsToCreate","length","fs","existsSync","join","BitError","push","generateOneComponent","err","deleteGeneratedComponents","bitMap","write","ids","map","r","id","tryLinkToNodeModules","runOnComponentCreateHook","tryWriteConfigFiles","linkToNodeModulesByIds","consoleFailure","message","fns","values","Promise","all","fn","shouldWrite","isWorkspaceConfigWriteEnabled","clearComponentCache","writeConfigFiles","clean","silent","dedupe","throw","dirs","dir","absoluteDir","remove","code","name","namePascalCase","camelcase","pascalCase","nameCamelCase","ComponentID","fromString","files","generateFiles","mainFile","find","file","isMain","writeComponentFiles","f","relativePath","content","addResults","track","rootDir","componentName","fullName","defaultScope","scope","component","get","hasEnvConfiguredOriginally","hasEnvConfigured","envBeforeConfigChanges","getEnv","config","boundConfig","bind","userEnv","env","isInWorkspace","hasId","ignoreVersion","toStringWithoutVersion","toString","templateEnv","EnvsAspect","Object","keys","undefined","configWithEnv","addEnvIfProvidedByFlag","setEntireConfig","getEnvData","envFromFlag","envFromTemplate","setBy","isSameAsThisEnvId","packageName","componentIdToPackageName","state","_consumer","envSetBy","isApp","isEnv","dependencies","installMissingDependencies","addEnvToConfig","exports"],"sources":["component-generator.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport pMapSeries from 'p-map-series';\nimport path from 'path';\nimport { Workspace } from '@teambit/workspace';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport camelcase from 'camelcase';\nimport { BitError } from '@teambit/bit-error';\nimport { Logger } from '@teambit/logger';\nimport { TrackerMain } from '@teambit/tracker';\nimport { linkToNodeModulesByIds } from '@teambit/workspace.modules.node-modules-linker';\nimport { componentIdToPackageName } from '@teambit/pkg.modules.component-package-name';\nimport { NewComponentHelperMain } from '@teambit/new-component-helper';\nimport { ComponentID } from '@teambit/component-id';\nimport { WorkspaceConfigFilesMain } from '@teambit/workspace-config-files';\n\nimport { ComponentTemplate, ComponentConfig } from './component-template';\nimport { CreateOptions } from './create.cmd';\nimport { OnComponentCreateSlot } from './generator.main.runtime';\n\nexport type GenerateResult = {\n id: ComponentID;\n dir: string;\n files: string[];\n envId: string;\n envSetBy: string;\n packageName: string;\n isApp?: boolean;\n isEnv?: boolean;\n dependencies?: string[];\n installMissingDependencies?: boolean;\n};\n\nexport type InstallOptions = { optimizeReportForNonTerminal?: boolean };\n\nexport type OnComponentCreateFn = (generateResults: GenerateResult[], installOptions?: InstallOptions) => Promise<void>;\n\nexport class ComponentGenerator {\n constructor(\n private workspace: Workspace,\n private componentIds: ComponentID[],\n private options: Partial<CreateOptions>,\n private template: ComponentTemplate,\n private envs: EnvsMain,\n private newComponentHelper: NewComponentHelperMain,\n private tracker: TrackerMain,\n private wsConfigFiles: WorkspaceConfigFilesMain,\n private logger: Logger,\n private onComponentCreateSlot: OnComponentCreateSlot,\n private aspectId: string,\n private envId?: ComponentID,\n private installOptions: InstallOptions = {}\n ) {}\n\n async generate(force = false): Promise<GenerateResult[]> {\n const dirsToDeleteIfFailed: string[] = [];\n const generateResults = await pMapSeries(this.componentIds, async (componentId) => {\n try {\n const componentPath = this.newComponentHelper.getNewComponentPath(componentId, {\n pathFromUser: this.options.path,\n componentsToCreate: this.componentIds.length,\n });\n if (!force && fs.existsSync(path.join(this.workspace.path, componentPath))) {\n throw new BitError(\n `unable to create a component at \"${componentPath}\", this path already exists, please use \"--path\" to create the component in a different path`\n );\n }\n dirsToDeleteIfFailed.push(componentPath);\n return await this.generateOneComponent(componentId, componentPath);\n } catch (err: any) {\n await this.deleteGeneratedComponents(dirsToDeleteIfFailed);\n throw err;\n }\n });\n\n await this.workspace.bitMap.write(`create (${this.componentIds.length} components)`);\n\n const ids = generateResults.map((r) => r.id);\n await this.tryLinkToNodeModules(ids);\n await this.runOnComponentCreateHook(generateResults);\n // We are running this after the runOnComponentCreateHook as it require\n // the env to be installed to work properly, and the hook might install\n // the env.\n await this.tryWriteConfigFiles(ids);\n\n return generateResults;\n }\n\n private async tryLinkToNodeModules(ids: ComponentID[]) {\n try {\n await linkToNodeModulesByIds(\n this.workspace,\n ids.map((id) => id)\n );\n } catch (err: any) {\n this.logger.consoleFailure(\n `failed linking the new components to node_modules, please run \"bit link\" manually. error: ${err.message}`\n );\n }\n }\n\n private async runOnComponentCreateHook(generateResults: GenerateResult[]) {\n const fns = this.onComponentCreateSlot.values();\n if (!fns.length) return;\n await Promise.all(fns.map((fn) => fn(generateResults, this.installOptions)));\n }\n\n /**\n * The function `tryWriteConfigFiles` attempts to write workspace config files, and if it fails, it logs an error\n * message.\n * @returns If the condition `!shouldWrite` is true, then nothing is being returned. Otherwise, if the `writeConfigFiles`\n * function is successfully executed, nothing is being returned. If an error occurs during the execution of\n * `writeConfigFiles`, an error message is being returned.\n */\n private async tryWriteConfigFiles(ids: ComponentID[]) {\n const shouldWrite = this.wsConfigFiles.isWorkspaceConfigWriteEnabled();\n if (!shouldWrite) return;\n ids.map((id) => this.workspace.clearComponentCache(id));\n const { err } = await this.wsConfigFiles.writeConfigFiles({\n clean: true,\n silent: true,\n dedupe: true,\n throw: false,\n });\n if (err) {\n this.logger.consoleFailure(\n `failed generating workspace config files, please run \"bit ws-config write\" manually. error: ${err.message}`\n );\n }\n }\n\n private async deleteGeneratedComponents(dirs: string[]) {\n await Promise.all(\n dirs.map(async (dir) => {\n const absoluteDir = path.join(this.workspace.path, dir);\n try {\n await fs.remove(absoluteDir);\n } catch (err: any) {\n if (err.code !== 'ENOENT') {\n // if not exist, it's fine\n throw err;\n }\n }\n })\n );\n }\n\n private async generateOneComponent(componentId: ComponentID, componentPath: string): Promise<GenerateResult> {\n const name = componentId.name;\n const namePascalCase = camelcase(name, { pascalCase: true });\n const nameCamelCase = camelcase(name);\n const aspectId = ComponentID.fromString(this.aspectId);\n\n const files = await this.template.generateFiles({\n name,\n namePascalCase,\n nameCamelCase,\n componentId,\n aspectId,\n envId: this.envId,\n });\n const mainFile = files.find((file) => file.isMain);\n await this.newComponentHelper.writeComponentFiles(\n componentPath,\n files.map((f) => ({ path: f.relativePath, content: f.content }))\n );\n const addResults = await this.tracker.track({\n rootDir: componentPath,\n mainFile: mainFile?.relativePath,\n componentName: componentId.fullName,\n defaultScope: this.options.scope || componentId.scope,\n });\n const component = await this.workspace.get(componentId);\n const hasEnvConfiguredOriginally = this.envs.hasEnvConfigured(component);\n const envBeforeConfigChanges = this.envs.getEnv(component);\n let config = this.template.config;\n if (config && typeof config === 'function') {\n const boundConfig = this.template.config?.bind(this.template);\n config = boundConfig({ aspectId: this.aspectId });\n }\n\n const userEnv = this.options.env;\n\n if (!config && this.envId && !userEnv) {\n const isInWorkspace = this.workspace.hasId(this.envId, { ignoreVersion: true });\n config = {\n [isInWorkspace ? this.envId.toStringWithoutVersion() : this.envId.toString()]: {},\n 'teambit.envs/envs': {\n env: this.envId.toStringWithoutVersion(),\n },\n };\n }\n\n const templateEnv = config?.[EnvsAspect.id]?.env;\n\n if (config && templateEnv && hasEnvConfiguredOriginally) {\n // remove the env we got from the template.\n delete config[templateEnv];\n delete config[EnvsAspect.id].env;\n if (Object.keys(config[EnvsAspect.id]).length === 0) delete config[EnvsAspect.id];\n if (Object.keys(config).length === 0) config = undefined;\n }\n\n const configWithEnv = await this.addEnvIfProvidedByFlag(config);\n if (configWithEnv) this.workspace.bitMap.setEntireConfig(component.id, configWithEnv);\n\n const getEnvData = () => {\n const envFromFlag = this.options.env; // env entered by the user when running `bit create --env`\n const envFromTemplate = config?.[EnvsAspect.id]?.env;\n if (envFromFlag) {\n return {\n envId: envFromFlag,\n setBy: '--env flag',\n };\n }\n if (envFromTemplate) {\n return {\n envId: envFromTemplate,\n setBy: 'template',\n };\n }\n return {\n envId: envBeforeConfigChanges.id,\n setBy: hasEnvConfiguredOriginally ? 'workspace variants' : '<default>',\n };\n };\n // eslint-disable-next-line prefer-const\n let { envId, setBy } = getEnvData();\n if (envId) {\n const isInWorkspace = this.workspace.hasId(envId, { ignoreVersion: true });\n const isSameAsThisEnvId = envId === this.envId?.toString() || envId === this.envId?.toStringWithoutVersion();\n if (isSameAsThisEnvId && this.envId) {\n envId = isInWorkspace ? this.envId.toStringWithoutVersion() : this.envId.toString();\n }\n }\n return {\n id: componentId,\n dir: componentPath,\n files: addResults.files,\n packageName: componentIdToPackageName(component.state._consumer),\n envId,\n envSetBy: setBy,\n isApp: this.template.isApp,\n isEnv: this.template.isEnv,\n dependencies: this.template.dependencies,\n installMissingDependencies: this.template.installMissingDependencies,\n };\n }\n\n private async addEnvIfProvidedByFlag(config?: ComponentConfig): Promise<ComponentConfig | undefined> {\n const userEnv = this.options.env; // env entered by the user when running `bit create --env`\n const templateEnv = config?.[EnvsAspect.id]?.env;\n if (!userEnv || userEnv === templateEnv) {\n return config;\n }\n config = config || {};\n if (templateEnv) {\n // the component template has an env and the user wants a different env.\n delete config[templateEnv];\n }\n await this.tracker.addEnvToConfig(userEnv, config);\n\n return config;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_enquirer","_pMapSeries","_path","_envs","_camelcase","_bitError","_workspaceModules","_pkgModules","_componentId","e","__esModule","default","ComponentGenerator","constructor","workspace","componentIds","options","template","envs","newComponentHelper","tracker","wsConfigFiles","logger","onComponentCreateSlot","aspectId","envId","installOptions","promptResults","generate","force","dirsToDeleteIfFailed","generateResults","pMapSeries","componentId","componentPath","getNewComponentPath","pathFromUser","path","componentsToCreate","length","fs","existsSync","join","BitError","push","generateOneComponent","err","deleteGeneratedComponents","bitMap","write","ids","map","r","id","tryLinkToNodeModules","runOnComponentCreateHook","tryWriteConfigFiles","linkToNodeModulesByIds","consoleFailure","message","fns","values","Promise","all","fn","shouldWrite","isWorkspaceConfigWriteEnabled","clearComponentCache","writeConfigFiles","clean","silent","dedupe","throw","dirs","dir","absoluteDir","remove","code","getOptionResultFromArgs","option","args","process","argv","slice","argIndex","indexOf","name","type","argValue","Error","choices","includes","getPromptOptionResult","prompt","getPromptResults","promptOptions","undefined","fromArg","skip","optionResult","namePascalCase","camelcase","pascalCase","nameCamelCase","ComponentID","fromString","files","generateFiles","mainFile","find","file","isMain","writeComponentFiles","f","relativePath","content","addResults","track","rootDir","componentName","fullName","defaultScope","scope","component","get","hasEnvConfiguredOriginally","hasEnvConfigured","envBeforeConfigChanges","getEnv","config","boundConfig","bind","userEnv","env","isInWorkspace","hasId","ignoreVersion","toStringWithoutVersion","toString","templateEnv","EnvsAspect","Object","keys","configWithEnv","addEnvIfProvidedByFlag","setEntireConfig","getEnvData","envFromFlag","envFromTemplate","setBy","isSameAsThisEnvId","packageName","componentIdToPackageName","state","_consumer","envSetBy","isApp","isEnv","dependencies","installMissingDependencies","addEnvToConfig","exports"],"sources":["component-generator.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport { prompt } from 'enquirer';\nimport pMapSeries from 'p-map-series';\nimport path from 'path';\nimport { Workspace } from '@teambit/workspace';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport camelcase from 'camelcase';\nimport { BitError } from '@teambit/bit-error';\nimport { Logger } from '@teambit/logger';\nimport { TrackerMain } from '@teambit/tracker';\nimport { linkToNodeModulesByIds } from '@teambit/workspace.modules.node-modules-linker';\nimport { componentIdToPackageName } from '@teambit/pkg.modules.component-package-name';\nimport { NewComponentHelperMain } from '@teambit/new-component-helper';\nimport { ComponentID } from '@teambit/component-id';\nimport { WorkspaceConfigFilesMain } from '@teambit/workspace-config-files';\n\nimport { ComponentTemplate, ComponentConfig, PromptOption, PromptResults } from './component-template';\nimport { CreateOptions } from './create.cmd';\nimport { OnComponentCreateSlot } from './generator.main.runtime';\n\nexport type GenerateResult = {\n id: ComponentID;\n dir: string;\n files: string[];\n envId: string;\n envSetBy: string;\n packageName: string;\n isApp?: boolean;\n isEnv?: boolean;\n dependencies?: string[];\n installMissingDependencies?: boolean;\n};\n\nexport type InstallOptions = { optimizeReportForNonTerminal?: boolean };\n\nexport type OnComponentCreateFn = (generateResults: GenerateResult[], installOptions?: InstallOptions) => Promise<void>;\n\nexport class ComponentGenerator {\n constructor(\n private workspace: Workspace,\n private componentIds: ComponentID[],\n private options: Partial<CreateOptions>,\n private template: ComponentTemplate,\n private envs: EnvsMain,\n private newComponentHelper: NewComponentHelperMain,\n private tracker: TrackerMain,\n private wsConfigFiles: WorkspaceConfigFilesMain,\n private logger: Logger,\n private onComponentCreateSlot: OnComponentCreateSlot,\n private aspectId: string,\n private envId?: ComponentID,\n private installOptions: InstallOptions = {},\n private promptResults?: PromptResults,\n ) {}\n\n async generate(force = false): Promise<GenerateResult[]> {\n const dirsToDeleteIfFailed: string[] = [];\n const generateResults = await pMapSeries(this.componentIds, async (componentId) => {\n try {\n const componentPath = this.newComponentHelper.getNewComponentPath(componentId, {\n pathFromUser: this.options.path,\n componentsToCreate: this.componentIds.length,\n });\n if (!force && fs.existsSync(path.join(this.workspace.path, componentPath))) {\n throw new BitError(\n `unable to create a component at \"${componentPath}\", this path already exists, please use \"--path\" to create the component in a different path`\n );\n }\n dirsToDeleteIfFailed.push(componentPath);\n return await this.generateOneComponent(componentId, componentPath);\n } catch (err: any) {\n await this.deleteGeneratedComponents(dirsToDeleteIfFailed);\n throw err;\n }\n });\n\n await this.workspace.bitMap.write(`create (${this.componentIds.length} components)`);\n\n const ids = generateResults.map((r) => r.id);\n await this.tryLinkToNodeModules(ids);\n await this.runOnComponentCreateHook(generateResults);\n // We are running this after the runOnComponentCreateHook as it require\n // the env to be installed to work properly, and the hook might install\n // the env.\n await this.tryWriteConfigFiles(ids);\n\n return generateResults;\n }\n\n private async tryLinkToNodeModules(ids: ComponentID[]) {\n try {\n await linkToNodeModulesByIds(\n this.workspace,\n ids.map((id) => id)\n );\n } catch (err: any) {\n this.logger.consoleFailure(\n `failed linking the new components to node_modules, please run \"bit link\" manually. error: ${err.message}`\n );\n }\n }\n\n private async runOnComponentCreateHook(generateResults: GenerateResult[]) {\n const fns = this.onComponentCreateSlot.values();\n if (!fns.length) return;\n await Promise.all(fns.map((fn) => fn(generateResults, this.installOptions)));\n }\n\n /**\n * The function `tryWriteConfigFiles` attempts to write workspace config files, and if it fails, it logs an error\n * message.\n * @returns If the condition `!shouldWrite` is true, then nothing is being returned. Otherwise, if the `writeConfigFiles`\n * function is successfully executed, nothing is being returned. If an error occurs during the execution of\n * `writeConfigFiles`, an error message is being returned.\n */\n private async tryWriteConfigFiles(ids: ComponentID[]) {\n const shouldWrite = this.wsConfigFiles.isWorkspaceConfigWriteEnabled();\n if (!shouldWrite) return;\n ids.map((id) => this.workspace.clearComponentCache(id));\n const { err } = await this.wsConfigFiles.writeConfigFiles({\n clean: true,\n silent: true,\n dedupe: true,\n throw: false,\n });\n if (err) {\n this.logger.consoleFailure(\n `failed generating workspace config files, please run \"bit ws-config write\" manually. error: ${err.message}`\n );\n }\n }\n\n private async deleteGeneratedComponents(dirs: string[]) {\n await Promise.all(\n dirs.map(async (dir) => {\n const absoluteDir = path.join(this.workspace.path, dir);\n try {\n await fs.remove(absoluteDir);\n } catch (err: any) {\n if (err.code !== 'ENOENT') {\n // if not exist, it's fine\n throw err;\n }\n }\n })\n );\n }\n\n private getOptionResultFromArgs(option: PromptOption): string | boolean | undefined {\n const args = process.argv.slice(2);\n const argIndex = args.indexOf(`--${option.name}`);\n if (argIndex === -1) {\n return;\n }\n if (option.type === 'confirm') {\n return true;\n }\n const argValue = args[argIndex + 1];\n if (!argValue) {\n throw new Error(`Missing value for ${option.name}`);\n }\n if (option.type === 'select' && !option.choices?.includes(argValue)) {\n throw new Error(`Invalid value for ${option.name}. Please use one of the following values: ${option.choices?.join(', ')}`);\n }\n return argValue;\n }\n\n private async getPromptOptionResult(option: PromptOption): Promise<Record<string, string | boolean>> {\n switch (option.type) {\n case 'input':\n return prompt({\n type: 'input',\n name: option.name,\n message: option.message\n });\n case 'confirm':\n return prompt({\n type: 'confirm',\n name: option.name,\n message: option.message,\n });\n case 'select':\n return prompt({\n type: 'select',\n name: option.name,\n message: option.message,\n choices: option.choices,\n });\n default:\n throw new Error(`unexpected prompt type ${option.type}`);\n }\n }\n\n private async getPromptResults(): Promise<PromptResults | undefined> {\n if (this.promptResults) {\n return this.promptResults;\n }\n const promptOptions = this.template.promptOptions?.();\n if (!promptOptions) {\n return undefined\n }\n const promptResults: PromptResults = {};\n for await (const option of promptOptions) {\n const fromArg = this.getOptionResultFromArgs(option);\n if (fromArg) {\n promptResults[option.name] = fromArg;\n continue;\n }\n if (option.skip && option.skip(promptResults)) {\n continue;\n }\n try {\n const optionResult = await this.getPromptOptionResult(option);\n promptResults[option.name] = optionResult[option.name];\n } catch (err: any) {\n if (!err) { // for some reason, when the user clicks Ctrl+C, the error is an empty string\n throw new Error(`The prompt has been canceled`);\n }\n throw err;\n }\n }\n return promptResults;\n }\n\n private async generateOneComponent(componentId: ComponentID, componentPath: string): Promise<GenerateResult> {\n const name = componentId.name;\n const namePascalCase = camelcase(name, { pascalCase: true });\n const nameCamelCase = camelcase(name);\n const aspectId = ComponentID.fromString(this.aspectId);\n const promptResults = await this.getPromptResults();\n\n const files = await this.template.generateFiles({\n name,\n namePascalCase,\n nameCamelCase,\n componentId,\n aspectId,\n envId: this.envId,\n promptResults,\n });\n const mainFile = files.find((file) => file.isMain);\n await this.newComponentHelper.writeComponentFiles(\n componentPath,\n files.map((f) => ({ path: f.relativePath, content: f.content }))\n );\n const addResults = await this.tracker.track({\n rootDir: componentPath,\n mainFile: mainFile?.relativePath,\n componentName: componentId.fullName,\n defaultScope: this.options.scope || componentId.scope,\n });\n const component = await this.workspace.get(componentId);\n const hasEnvConfiguredOriginally = this.envs.hasEnvConfigured(component);\n const envBeforeConfigChanges = this.envs.getEnv(component);\n let config = this.template.config;\n if (config && typeof config === 'function') {\n const boundConfig = this.template.config?.bind(this.template);\n config = boundConfig({ aspectId: this.aspectId });\n }\n\n const userEnv = this.options.env;\n\n if (!config && this.envId && !userEnv) {\n const isInWorkspace = this.workspace.hasId(this.envId, { ignoreVersion: true });\n config = {\n [isInWorkspace ? this.envId.toStringWithoutVersion() : this.envId.toString()]: {},\n 'teambit.envs/envs': {\n env: this.envId.toStringWithoutVersion(),\n },\n };\n }\n\n const templateEnv = config?.[EnvsAspect.id]?.env;\n\n if (config && templateEnv && hasEnvConfiguredOriginally) {\n // remove the env we got from the template.\n delete config[templateEnv];\n delete config[EnvsAspect.id].env;\n if (Object.keys(config[EnvsAspect.id]).length === 0) delete config[EnvsAspect.id];\n if (Object.keys(config).length === 0) config = undefined;\n }\n\n const configWithEnv = await this.addEnvIfProvidedByFlag(config);\n if (configWithEnv) this.workspace.bitMap.setEntireConfig(component.id, configWithEnv);\n\n const getEnvData = () => {\n const envFromFlag = this.options.env; // env entered by the user when running `bit create --env`\n const envFromTemplate = config?.[EnvsAspect.id]?.env;\n if (envFromFlag) {\n return {\n envId: envFromFlag,\n setBy: '--env flag',\n };\n }\n if (envFromTemplate) {\n return {\n envId: envFromTemplate,\n setBy: 'template',\n };\n }\n return {\n envId: envBeforeConfigChanges.id,\n setBy: hasEnvConfiguredOriginally ? 'workspace variants' : '<default>',\n };\n };\n // eslint-disable-next-line prefer-const\n let { envId, setBy } = getEnvData();\n if (envId) {\n const isInWorkspace = this.workspace.hasId(envId, { ignoreVersion: true });\n const isSameAsThisEnvId = envId === this.envId?.toString() || envId === this.envId?.toStringWithoutVersion();\n if (isSameAsThisEnvId && this.envId) {\n envId = isInWorkspace ? this.envId.toStringWithoutVersion() : this.envId.toString();\n }\n }\n return {\n id: componentId,\n dir: componentPath,\n files: addResults.files,\n packageName: componentIdToPackageName(component.state._consumer),\n envId,\n envSetBy: setBy,\n isApp: this.template.isApp,\n isEnv: this.template.isEnv,\n dependencies: this.template.dependencies,\n installMissingDependencies: this.template.installMissingDependencies,\n };\n }\n\n private async addEnvIfProvidedByFlag(config?: ComponentConfig): Promise<ComponentConfig | undefined> {\n const userEnv = this.options.env; // env entered by the user when running `bit create --env`\n const templateEnv = config?.[EnvsAspect.id]?.env;\n if (!userEnv || userEnv === templateEnv) {\n return config;\n }\n config = config || {};\n if (templateEnv) {\n // the component template has an env and the user wants a different env.\n delete config[templateEnv];\n }\n await this.tracker.addEnvToConfig(userEnv, config);\n\n return config;\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,UAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,MAAA;EAAA,MAAAL,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAG,KAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAM,MAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,KAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,WAAA;EAAA,MAAAP,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAK,UAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,UAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,SAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAS,kBAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,iBAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,YAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,WAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAW,aAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,YAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAoD,SAAAC,uBAAAW,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAwB7C,MAAMG,kBAAkB,CAAC;EAC9BC,WAAWA,CACDC,SAAoB,EACpBC,YAA2B,EAC3BC,OAA+B,EAC/BC,QAA2B,EAC3BC,IAAc,EACdC,kBAA0C,EAC1CC,OAAoB,EACpBC,aAAuC,EACvCC,MAAc,EACdC,qBAA4C,EAC5CC,QAAgB,EAChBC,KAAmB,EACnBC,cAA8B,GAAG,CAAC,CAAC,EACnCC,aAA6B,EACrC;IAAA,KAdQb,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,YAA2B,GAA3BA,YAA2B;IAAA,KAC3BC,OAA+B,GAA/BA,OAA+B;IAAA,KAC/BC,QAA2B,GAA3BA,QAA2B;IAAA,KAC3BC,IAAc,GAAdA,IAAc;IAAA,KACdC,kBAA0C,GAA1CA,kBAA0C;IAAA,KAC1CC,OAAoB,GAApBA,OAAoB;IAAA,KACpBC,aAAuC,GAAvCA,aAAuC;IAAA,KACvCC,MAAc,GAAdA,MAAc;IAAA,KACdC,qBAA4C,GAA5CA,qBAA4C;IAAA,KAC5CC,QAAgB,GAAhBA,QAAgB;IAAA,KAChBC,KAAmB,GAAnBA,KAAmB;IAAA,KACnBC,cAA8B,GAA9BA,cAA8B;IAAA,KAC9BC,aAA6B,GAA7BA,aAA6B;EACpC;EAEH,MAAMC,QAAQA,CAACC,KAAK,GAAG,KAAK,EAA6B;IACvD,MAAMC,oBAA8B,GAAG,EAAE;IACzC,MAAMC,eAAe,GAAG,MAAM,IAAAC,qBAAU,EAAC,IAAI,CAACjB,YAAY,EAAE,MAAOkB,WAAW,IAAK;MACjF,IAAI;QACF,MAAMC,aAAa,GAAG,IAAI,CAACf,kBAAkB,CAACgB,mBAAmB,CAACF,WAAW,EAAE;UAC7EG,YAAY,EAAE,IAAI,CAACpB,OAAO,CAACqB,IAAI;UAC/BC,kBAAkB,EAAE,IAAI,CAACvB,YAAY,CAACwB;QACxC,CAAC,CAAC;QACF,IAAI,CAACV,KAAK,IAAIW,kBAAE,CAACC,UAAU,CAACJ,eAAI,CAACK,IAAI,CAAC,IAAI,CAAC5B,SAAS,CAACuB,IAAI,EAAEH,aAAa,CAAC,CAAC,EAAE;UAC1E,MAAM,KAAIS,oBAAQ,EAChB,oCAAoCT,aAAa,8FACnD,CAAC;QACH;QACAJ,oBAAoB,CAACc,IAAI,CAACV,aAAa,CAAC;QACxC,OAAO,MAAM,IAAI,CAACW,oBAAoB,CAACZ,WAAW,EAAEC,aAAa,CAAC;MACpE,CAAC,CAAC,OAAOY,GAAQ,EAAE;QACjB,MAAM,IAAI,CAACC,yBAAyB,CAACjB,oBAAoB,CAAC;QAC1D,MAAMgB,GAAG;MACX;IACF,CAAC,CAAC;IAEF,MAAM,IAAI,CAAChC,SAAS,CAACkC,MAAM,CAACC,KAAK,CAAC,WAAW,IAAI,CAAClC,YAAY,CAACwB,MAAM,cAAc,CAAC;IAEpF,MAAMW,GAAG,GAAGnB,eAAe,CAACoB,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,CAAC;IAC5C,MAAM,IAAI,CAACC,oBAAoB,CAACJ,GAAG,CAAC;IACpC,MAAM,IAAI,CAACK,wBAAwB,CAACxB,eAAe,CAAC;IACpD;IACA;IACA;IACA,MAAM,IAAI,CAACyB,mBAAmB,CAACN,GAAG,CAAC;IAEnC,OAAOnB,eAAe;EACxB;EAEA,MAAcuB,oBAAoBA,CAACJ,GAAkB,EAAE;IACrD,IAAI;MACF,MAAM,IAAAO,0CAAsB,EAC1B,IAAI,CAAC3C,SAAS,EACdoC,GAAG,CAACC,GAAG,CAAEE,EAAE,IAAKA,EAAE,CACpB,CAAC;IACH,CAAC,CAAC,OAAOP,GAAQ,EAAE;MACjB,IAAI,CAACxB,MAAM,CAACoC,cAAc,CACxB,6FAA6FZ,GAAG,CAACa,OAAO,EAC1G,CAAC;IACH;EACF;EAEA,MAAcJ,wBAAwBA,CAACxB,eAAiC,EAAE;IACxE,MAAM6B,GAAG,GAAG,IAAI,CAACrC,qBAAqB,CAACsC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAACD,GAAG,CAACrB,MAAM,EAAE;IACjB,MAAMuB,OAAO,CAACC,GAAG,CAACH,GAAG,CAACT,GAAG,CAAEa,EAAE,IAAKA,EAAE,CAACjC,eAAe,EAAE,IAAI,CAACL,cAAc,CAAC,CAAC,CAAC;EAC9E;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAc8B,mBAAmBA,CAACN,GAAkB,EAAE;IACpD,MAAMe,WAAW,GAAG,IAAI,CAAC5C,aAAa,CAAC6C,6BAA6B,CAAC,CAAC;IACtE,IAAI,CAACD,WAAW,EAAE;IAClBf,GAAG,CAACC,GAAG,CAAEE,EAAE,IAAK,IAAI,CAACvC,SAAS,CAACqD,mBAAmB,CAACd,EAAE,CAAC,CAAC;IACvD,MAAM;MAAEP;IAAI,CAAC,GAAG,MAAM,IAAI,CAACzB,aAAa,CAAC+C,gBAAgB,CAAC;MACxDC,KAAK,EAAE,IAAI;MACXC,MAAM,EAAE,IAAI;MACZC,MAAM,EAAE,IAAI;MACZC,KAAK,EAAE;IACT,CAAC,CAAC;IACF,IAAI1B,GAAG,EAAE;MACP,IAAI,CAACxB,MAAM,CAACoC,cAAc,CACxB,+FAA+FZ,GAAG,CAACa,OAAO,EAC5G,CAAC;IACH;EACF;EAEA,MAAcZ,yBAAyBA,CAAC0B,IAAc,EAAE;IACtD,MAAMX,OAAO,CAACC,GAAG,CACfU,IAAI,CAACtB,GAAG,CAAC,MAAOuB,GAAG,IAAK;MACtB,MAAMC,WAAW,GAAGtC,eAAI,CAACK,IAAI,CAAC,IAAI,CAAC5B,SAAS,CAACuB,IAAI,EAAEqC,GAAG,CAAC;MACvD,IAAI;QACF,MAAMlC,kBAAE,CAACoC,MAAM,CAACD,WAAW,CAAC;MAC9B,CAAC,CAAC,OAAO7B,GAAQ,EAAE;QACjB,IAAIA,GAAG,CAAC+B,IAAI,KAAK,QAAQ,EAAE;UACzB;UACA,MAAM/B,GAAG;QACX;MACF;IACF,CAAC,CACH,CAAC;EACH;EAEQgC,uBAAuBA,CAACC,MAAoB,EAAgC;IAClF,MAAMC,IAAI,GAAGC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC;IAClC,MAAMC,QAAQ,GAAGJ,IAAI,CAACK,OAAO,CAAC,KAAKN,MAAM,CAACO,IAAI,EAAE,CAAC;IACjD,IAAIF,QAAQ,KAAK,CAAC,CAAC,EAAE;MACnB;IACF;IACA,IAAIL,MAAM,CAACQ,IAAI,KAAK,SAAS,EAAE;MAC7B,OAAO,IAAI;IACb;IACA,MAAMC,QAAQ,GAAGR,IAAI,CAACI,QAAQ,GAAG,CAAC,CAAC;IACnC,IAAI,CAACI,QAAQ,EAAE;MACb,MAAM,IAAIC,KAAK,CAAC,qBAAqBV,MAAM,CAACO,IAAI,EAAE,CAAC;IACrD;IACA,IAAIP,MAAM,CAACQ,IAAI,KAAK,QAAQ,IAAI,CAACR,MAAM,CAACW,OAAO,EAAEC,QAAQ,CAACH,QAAQ,CAAC,EAAE;MACnE,MAAM,IAAIC,KAAK,CAAC,qBAAqBV,MAAM,CAACO,IAAI,6CAA6CP,MAAM,CAACW,OAAO,EAAEhD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5H;IACA,OAAO8C,QAAQ;EACjB;EAEA,MAAcI,qBAAqBA,CAACb,MAAoB,EAA6C;IACnG,QAAQA,MAAM,CAACQ,IAAI;MACjB,KAAK,OAAO;QACV,OAAO,IAAAM,kBAAM,EAAC;UACZN,IAAI,EAAE,OAAO;UACbD,IAAI,EAAEP,MAAM,CAACO,IAAI;UACjB3B,OAAO,EAAEoB,MAAM,CAACpB;QAClB,CAAC,CAAC;MACJ,KAAK,SAAS;QACZ,OAAO,IAAAkC,kBAAM,EAAC;UACZN,IAAI,EAAE,SAAS;UACfD,IAAI,EAAEP,MAAM,CAACO,IAAI;UACjB3B,OAAO,EAAEoB,MAAM,CAACpB;QAClB,CAAC,CAAC;MACJ,KAAK,QAAQ;QACX,OAAO,IAAAkC,kBAAM,EAAC;UACZN,IAAI,EAAE,QAAQ;UACdD,IAAI,EAAEP,MAAM,CAACO,IAAI;UACjB3B,OAAO,EAAEoB,MAAM,CAACpB,OAAO;UACvB+B,OAAO,EAAEX,MAAM,CAACW;QAClB,CAAC,CAAC;MACJ;QACE,MAAM,IAAID,KAAK,CAAC,0BAA0BV,MAAM,CAACQ,IAAI,EAAE,CAAC;IAC5D;EACF;EAEA,MAAcO,gBAAgBA,CAAA,EAAuC;IACnE,IAAI,IAAI,CAACnE,aAAa,EAAE;MACtB,OAAO,IAAI,CAACA,aAAa;IAC3B;IACA,MAAMoE,aAAa,GAAG,IAAI,CAAC9E,QAAQ,CAAC8E,aAAa,GAAG,CAAC;IACrD,IAAI,CAACA,aAAa,EAAE;MAClB,OAAOC,SAAS;IAClB;IACA,MAAMrE,aAA4B,GAAG,CAAC,CAAC;IACvC,WAAW,MAAMoD,MAAM,IAAIgB,aAAa,EAAE;MACxC,MAAME,OAAO,GAAG,IAAI,CAACnB,uBAAuB,CAACC,MAAM,CAAC;MACpD,IAAIkB,OAAO,EAAE;QACXtE,aAAa,CAACoD,MAAM,CAACO,IAAI,CAAC,GAAGW,OAAO;QACpC;MACF;MACA,IAAIlB,MAAM,CAACmB,IAAI,IAAInB,MAAM,CAACmB,IAAI,CAACvE,aAAa,CAAC,EAAE;QAC7C;MACF;MACA,IAAI;QACF,MAAMwE,YAAY,GAAG,MAAM,IAAI,CAACP,qBAAqB,CAACb,MAAM,CAAC;QAC7DpD,aAAa,CAACoD,MAAM,CAACO,IAAI,CAAC,GAAGa,YAAY,CAACpB,MAAM,CAACO,IAAI,CAAC;MACxD,CAAC,CAAC,OAAOxC,GAAQ,EAAE;QACjB,IAAI,CAACA,GAAG,EAAE;UAAE;UACV,MAAM,IAAI2C,KAAK,CAAC,8BAA8B,CAAC;QACjD;QACA,MAAM3C,GAAG;MACX;IACF;IACA,OAAOnB,aAAa;EACtB;EAEA,MAAckB,oBAAoBA,CAACZ,WAAwB,EAAEC,aAAqB,EAA2B;IAC3G,MAAMoD,IAAI,GAAGrD,WAAW,CAACqD,IAAI;IAC7B,MAAMc,cAAc,GAAG,IAAAC,oBAAS,EAACf,IAAI,EAAE;MAAEgB,UAAU,EAAE;IAAK,CAAC,CAAC;IAC5D,MAAMC,aAAa,GAAG,IAAAF,oBAAS,EAACf,IAAI,CAAC;IACrC,MAAM9D,QAAQ,GAAGgF,0BAAW,CAACC,UAAU,CAAC,IAAI,CAACjF,QAAQ,CAAC;IACtD,MAAMG,aAAa,GAAG,MAAM,IAAI,CAACmE,gBAAgB,CAAC,CAAC;IAEnD,MAAMY,KAAK,GAAG,MAAM,IAAI,CAACzF,QAAQ,CAAC0F,aAAa,CAAC;MAC9CrB,IAAI;MACJc,cAAc;MACdG,aAAa;MACbtE,WAAW;MACXT,QAAQ;MACRC,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBE;IACF,CAAC,CAAC;IACF,MAAMiF,QAAQ,GAAGF,KAAK,CAACG,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACC,MAAM,CAAC;IAClD,MAAM,IAAI,CAAC5F,kBAAkB,CAAC6F,mBAAmB,CAC/C9E,aAAa,EACbwE,KAAK,CAACvD,GAAG,CAAE8D,CAAC,KAAM;MAAE5E,IAAI,EAAE4E,CAAC,CAACC,YAAY;MAAEC,OAAO,EAAEF,CAAC,CAACE;IAAQ,CAAC,CAAC,CACjE,CAAC;IACD,MAAMC,UAAU,GAAG,MAAM,IAAI,CAAChG,OAAO,CAACiG,KAAK,CAAC;MAC1CC,OAAO,EAAEpF,aAAa;MACtB0E,QAAQ,EAAEA,QAAQ,EAAEM,YAAY;MAChCK,aAAa,EAAEtF,WAAW,CAACuF,QAAQ;MACnCC,YAAY,EAAE,IAAI,CAACzG,OAAO,CAAC0G,KAAK,IAAIzF,WAAW,CAACyF;IAClD,CAAC,CAAC;IACF,MAAMC,SAAS,GAAG,MAAM,IAAI,CAAC7G,SAAS,CAAC8G,GAAG,CAAC3F,WAAW,CAAC;IACvD,MAAM4F,0BAA0B,GAAG,IAAI,CAAC3G,IAAI,CAAC4G,gBAAgB,CAACH,SAAS,CAAC;IACxE,MAAMI,sBAAsB,GAAG,IAAI,CAAC7G,IAAI,CAAC8G,MAAM,CAACL,SAAS,CAAC;IAC1D,IAAIM,MAAM,GAAG,IAAI,CAAChH,QAAQ,CAACgH,MAAM;IACjC,IAAIA,MAAM,IAAI,OAAOA,MAAM,KAAK,UAAU,EAAE;MAC1C,MAAMC,WAAW,GAAG,IAAI,CAACjH,QAAQ,CAACgH,MAAM,EAAEE,IAAI,CAAC,IAAI,CAAClH,QAAQ,CAAC;MAC7DgH,MAAM,GAAGC,WAAW,CAAC;QAAE1G,QAAQ,EAAE,IAAI,CAACA;MAAS,CAAC,CAAC;IACnD;IAEA,MAAM4G,OAAO,GAAG,IAAI,CAACpH,OAAO,CAACqH,GAAG;IAEhC,IAAI,CAACJ,MAAM,IAAI,IAAI,CAACxG,KAAK,IAAI,CAAC2G,OAAO,EAAE;MACrC,MAAME,aAAa,GAAG,IAAI,CAACxH,SAAS,CAACyH,KAAK,CAAC,IAAI,CAAC9G,KAAK,EAAE;QAAE+G,aAAa,EAAE;MAAK,CAAC,CAAC;MAC/EP,MAAM,GAAG;QACP,CAACK,aAAa,GAAG,IAAI,CAAC7G,KAAK,CAACgH,sBAAsB,CAAC,CAAC,GAAG,IAAI,CAAChH,KAAK,CAACiH,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;QACjF,mBAAmB,EAAE;UACnBL,GAAG,EAAE,IAAI,CAAC5G,KAAK,CAACgH,sBAAsB,CAAC;QACzC;MACF,CAAC;IACH;IAEA,MAAME,WAAW,GAAGV,MAAM,GAAGW,kBAAU,CAACvF,EAAE,CAAC,EAAEgF,GAAG;IAEhD,IAAIJ,MAAM,IAAIU,WAAW,IAAId,0BAA0B,EAAE;MACvD;MACA,OAAOI,MAAM,CAACU,WAAW,CAAC;MAC1B,OAAOV,MAAM,CAACW,kBAAU,CAACvF,EAAE,CAAC,CAACgF,GAAG;MAChC,IAAIQ,MAAM,CAACC,IAAI,CAACb,MAAM,CAACW,kBAAU,CAACvF,EAAE,CAAC,CAAC,CAACd,MAAM,KAAK,CAAC,EAAE,OAAO0F,MAAM,CAACW,kBAAU,CAACvF,EAAE,CAAC;MACjF,IAAIwF,MAAM,CAACC,IAAI,CAACb,MAAM,CAAC,CAAC1F,MAAM,KAAK,CAAC,EAAE0F,MAAM,GAAGjC,SAAS;IAC1D;IAEA,MAAM+C,aAAa,GAAG,MAAM,IAAI,CAACC,sBAAsB,CAACf,MAAM,CAAC;IAC/D,IAAIc,aAAa,EAAE,IAAI,CAACjI,SAAS,CAACkC,MAAM,CAACiG,eAAe,CAACtB,SAAS,CAACtE,EAAE,EAAE0F,aAAa,CAAC;IAErF,MAAMG,UAAU,GAAGA,CAAA,KAAM;MACvB,MAAMC,WAAW,GAAG,IAAI,CAACnI,OAAO,CAACqH,GAAG,CAAC,CAAC;MACtC,MAAMe,eAAe,GAAGnB,MAAM,GAAGW,kBAAU,CAACvF,EAAE,CAAC,EAAEgF,GAAG;MACpD,IAAIc,WAAW,EAAE;QACf,OAAO;UACL1H,KAAK,EAAE0H,WAAW;UAClBE,KAAK,EAAE;QACT,CAAC;MACH;MACA,IAAID,eAAe,EAAE;QACnB,OAAO;UACL3H,KAAK,EAAE2H,eAAe;UACtBC,KAAK,EAAE;QACT,CAAC;MACH;MACA,OAAO;QACL5H,KAAK,EAAEsG,sBAAsB,CAAC1E,EAAE;QAChCgG,KAAK,EAAExB,0BAA0B,GAAG,oBAAoB,GAAG;MAC7D,CAAC;IACH,CAAC;IACD;IACA,IAAI;MAAEpG,KAAK;MAAE4H;IAAM,CAAC,GAAGH,UAAU,CAAC,CAAC;IACnC,IAAIzH,KAAK,EAAE;MACT,MAAM6G,aAAa,GAAG,IAAI,CAACxH,SAAS,CAACyH,KAAK,CAAC9G,KAAK,EAAE;QAAE+G,aAAa,EAAE;MAAK,CAAC,CAAC;MAC1E,MAAMc,iBAAiB,GAAG7H,KAAK,KAAK,IAAI,CAACA,KAAK,EAAEiH,QAAQ,CAAC,CAAC,IAAIjH,KAAK,KAAK,IAAI,CAACA,KAAK,EAAEgH,sBAAsB,CAAC,CAAC;MAC5G,IAAIa,iBAAiB,IAAI,IAAI,CAAC7H,KAAK,EAAE;QACnCA,KAAK,GAAG6G,aAAa,GAAG,IAAI,CAAC7G,KAAK,CAACgH,sBAAsB,CAAC,CAAC,GAAG,IAAI,CAAChH,KAAK,CAACiH,QAAQ,CAAC,CAAC;MACrF;IACF;IACA,OAAO;MACLrF,EAAE,EAAEpB,WAAW;MACfyC,GAAG,EAAExC,aAAa;MAClBwE,KAAK,EAAEU,UAAU,CAACV,KAAK;MACvB6C,WAAW,EAAE,IAAAC,sCAAwB,EAAC7B,SAAS,CAAC8B,KAAK,CAACC,SAAS,CAAC;MAChEjI,KAAK;MACLkI,QAAQ,EAAEN,KAAK;MACfO,KAAK,EAAE,IAAI,CAAC3I,QAAQ,CAAC2I,KAAK;MAC1BC,KAAK,EAAE,IAAI,CAAC5I,QAAQ,CAAC4I,KAAK;MAC1BC,YAAY,EAAE,IAAI,CAAC7I,QAAQ,CAAC6I,YAAY;MACxCC,0BAA0B,EAAE,IAAI,CAAC9I,QAAQ,CAAC8I;IAC5C,CAAC;EACH;EAEA,MAAcf,sBAAsBA,CAACf,MAAwB,EAAwC;IACnG,MAAMG,OAAO,GAAG,IAAI,CAACpH,OAAO,CAACqH,GAAG,CAAC,CAAC;IAClC,MAAMM,WAAW,GAAGV,MAAM,GAAGW,kBAAU,CAACvF,EAAE,CAAC,EAAEgF,GAAG;IAChD,IAAI,CAACD,OAAO,IAAIA,OAAO,KAAKO,WAAW,EAAE;MACvC,OAAOV,MAAM;IACf;IACAA,MAAM,GAAGA,MAAM,IAAI,CAAC,CAAC;IACrB,IAAIU,WAAW,EAAE;MACf;MACA,OAAOV,MAAM,CAACU,WAAW,CAAC;IAC5B;IACA,MAAM,IAAI,CAACvH,OAAO,CAAC4I,cAAc,CAAC5B,OAAO,EAAEH,MAAM,CAAC;IAElD,OAAOA,MAAM;EACf;AACF;AAACgC,OAAA,CAAArJ,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
@@ -45,6 +45,10 @@ export interface BaseComponentTemplateOptions {
|
|
45
45
|
* namespace of the component.
|
46
46
|
*/
|
47
47
|
namespace?: string;
|
48
|
+
/**
|
49
|
+
* when a template implements the promptOptions function, this object will be populated with the user responses.
|
50
|
+
*/
|
51
|
+
promptResults?: PromptResults;
|
48
52
|
}
|
49
53
|
/**
|
50
54
|
* ComponentContext represents foundational properties for a component context.
|
@@ -121,8 +125,34 @@ export interface ComponentTemplateOptions {
|
|
121
125
|
*/
|
122
126
|
installMissingDependencies?: boolean;
|
123
127
|
}
|
128
|
+
/**
|
129
|
+
* PromptOption is shown to the user before calling the generateFiles function.
|
130
|
+
* The prompt is using enquirer under the hood. see https://www.npmjs.com/package/enquirer.
|
131
|
+
* Examples:
|
132
|
+
* - input: {name: 'name', message: 'enter your name', type: 'input'}
|
133
|
+
* - confirm: {name: 'isHappy', message: 'are you happy?', type: 'confirm'}
|
134
|
+
* - select: {name: 'color', message: 'pick a color', type: 'select', choices: ['red', 'blue', 'green']}
|
135
|
+
*/
|
136
|
+
export type PromptOption = {
|
137
|
+
name: string;
|
138
|
+
message: string;
|
139
|
+
type: 'input' | 'confirm' | 'select';
|
140
|
+
choices?: string[];
|
141
|
+
skip?: (previousResults: PromptResults) => boolean;
|
142
|
+
};
|
143
|
+
/**
|
144
|
+
* PromptResults is the result of the user input received from the promptOptions.
|
145
|
+
* The key is the name of the prompt option and the value is the user input.
|
146
|
+
* in case the prompt-option is of type 'confirm', the value will be a boolean.
|
147
|
+
*/
|
148
|
+
export type PromptResults = Record<string, string | boolean>;
|
124
149
|
export interface ComponentTemplate extends ComponentTemplateOptions {
|
125
150
|
name: string;
|
151
|
+
/**
|
152
|
+
* in case the template requires user input, this function will be called to prompt the user.
|
153
|
+
* the results will be passed to the generateFiles function.
|
154
|
+
*/
|
155
|
+
promptOptions?: () => PromptOption[];
|
126
156
|
/**
|
127
157
|
* template function for generating the file of a certain component.,
|
128
158
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":[],"sources":["component-template.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component';\n\n/**\n * BaseComponentTemplateOptions describes the foundational properties for components.\n */\nexport interface BaseComponentTemplateOptions {\n /**\n * component-name as entered by the user, e.g. `use-date`.\n * without the scope and the namespace.\n */\n name: string;\n\n /**\n * component-name as upper camel case, e.g. `use-date` becomes `UseDate`.\n * useful when generating the file content, for example for a class name.\n */\n namePascalCase: string;\n\n /**\n * component-name as lower camel case, e.g. `use-date` becomes `useDate`.\n * useful when generating the file content, for example for a function/variable name.\n */\n nameCamelCase: string;\n\n /**\n * component id.\n * the name is the name+namespace. the scope is the scope entered by --scope flag or the defaultScope\n */\n componentId: ComponentID;\n\n /**\n * aspect id of the aspect that register the template itself\n */\n aspectId: ComponentID | string;\n\n /**\n * env id of the env that register the template itself.\n * This will be usually identical to the aspectId but aspectId will always exist,\n * while envId will be undefined if the template is not registered by an env.\n */\n envId?: ComponentID;\n\n /**\n * path of the component.\n */\n path?: string;\n /**\n * scope of the component.\n */\n scope?: string;\n /**\n * namespace of the component.\n */\n namespace?: string;\n}\n\n/**\n * ComponentContext represents foundational properties for a component context.\n */\nexport type ComponentContext = BaseComponentTemplateOptions;\n\nexport interface ComponentFile {\n /**\n * relative path of the file within the component.\n */\n relativePath: string;\n\n /**\n * file content\n */\n content: string;\n\n /**\n * whether this file will be tracked as the main file\n */\n isMain?: boolean;\n}\n\nexport interface ConfigContext {\n /**\n * Aspect id of the aspect that register the template itself\n */\n aspectId: string;\n}\n\nexport type ComponentConfig = { [aspectName: string]: any };\n\nexport interface ComponentTemplateOptions {\n /**\n * name of the component template. for example: `hook`, `react-component` or `module`.\n */\n name?: string;\n\n /**\n * display name of the template.\n */\n displayName?: string;\n\n /**\n * example name for the component template.\n */\n exampleComponentName?: string;\n\n /**\n * short description of the template. shown in the `bit templates` command.\n */\n description?: string;\n\n /**\n * hide this template so that it is not listed with `bit templates`\n */\n hidden?: boolean;\n\n /**\n * env to use for the generated component.\n */\n env?: string;\n\n /**\n * adds a metadata that the component that this template creates is of type env.\n * This will be used later to do further configuration for example:\n * - ensure to create the .bit_root for it\n */\n isEnv?: boolean;\n\n /**\n * adds a metadata that the component that this template creates is of type app.\n * This will be used later to do further configuration for example:\n * - add it to the workspace.jsonc as app\n * - ensure to create the .bit_root for it\n */\n isApp?: boolean;\n\n /**\n * list of dependencies to install when the component is created.\n */\n dependencies?: string[];\n\n /**\n * Perform installation of missing dependencies after component generation.\n * This is the same as of running `bit install --add-missing-deps` after component generation.\n */\n installMissingDependencies?: boolean;\n}\n\nexport interface ComponentTemplate extends ComponentTemplateOptions {\n name: string;\n\n /**\n * template function for generating the file of a certain component.,\n */\n generateFiles(context: ComponentContext): Promise<ComponentFile[]> | ComponentFile[];\n\n /**\n * component config. gets saved in the .bitmap file and it overrides the workspace.jsonc config.\n * for example, you can set the env that will be used for this component as follows:\n * \"teambit.envs/envs\": {\n * \"env\": \"teambit.harmony/aspect\"\n * },\n */\n config?: ComponentConfig | ((context: ConfigContext) => ComponentConfig);\n}\n\nexport type GetComponentTemplates = () => ComponentTemplate[];"],"mappings":"","ignoreList":[]}
|
1
|
+
{"version":3,"names":[],"sources":["component-template.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component';\n\n/**\n * BaseComponentTemplateOptions describes the foundational properties for components.\n */\nexport interface BaseComponentTemplateOptions {\n /**\n * component-name as entered by the user, e.g. `use-date`.\n * without the scope and the namespace.\n */\n name: string;\n\n /**\n * component-name as upper camel case, e.g. `use-date` becomes `UseDate`.\n * useful when generating the file content, for example for a class name.\n */\n namePascalCase: string;\n\n /**\n * component-name as lower camel case, e.g. `use-date` becomes `useDate`.\n * useful when generating the file content, for example for a function/variable name.\n */\n nameCamelCase: string;\n\n /**\n * component id.\n * the name is the name+namespace. the scope is the scope entered by --scope flag or the defaultScope\n */\n componentId: ComponentID;\n\n /**\n * aspect id of the aspect that register the template itself\n */\n aspectId: ComponentID | string;\n\n /**\n * env id of the env that register the template itself.\n * This will be usually identical to the aspectId but aspectId will always exist,\n * while envId will be undefined if the template is not registered by an env.\n */\n envId?: ComponentID;\n\n /**\n * path of the component.\n */\n path?: string;\n /**\n * scope of the component.\n */\n scope?: string;\n /**\n * namespace of the component.\n */\n namespace?: string;\n /**\n * when a template implements the promptOptions function, this object will be populated with the user responses.\n */\n promptResults?: PromptResults;\n}\n\n/**\n * ComponentContext represents foundational properties for a component context.\n */\nexport type ComponentContext = BaseComponentTemplateOptions;\n\nexport interface ComponentFile {\n /**\n * relative path of the file within the component.\n */\n relativePath: string;\n\n /**\n * file content\n */\n content: string;\n\n /**\n * whether this file will be tracked as the main file\n */\n isMain?: boolean;\n}\n\nexport interface ConfigContext {\n /**\n * Aspect id of the aspect that register the template itself\n */\n aspectId: string;\n}\n\nexport type ComponentConfig = { [aspectName: string]: any };\n\nexport interface ComponentTemplateOptions {\n /**\n * name of the component template. for example: `hook`, `react-component` or `module`.\n */\n name?: string;\n\n /**\n * display name of the template.\n */\n displayName?: string;\n\n /**\n * example name for the component template.\n */\n exampleComponentName?: string;\n\n /**\n * short description of the template. shown in the `bit templates` command.\n */\n description?: string;\n\n /**\n * hide this template so that it is not listed with `bit templates`\n */\n hidden?: boolean;\n\n /**\n * env to use for the generated component.\n */\n env?: string;\n\n /**\n * adds a metadata that the component that this template creates is of type env.\n * This will be used later to do further configuration for example:\n * - ensure to create the .bit_root for it\n */\n isEnv?: boolean;\n\n /**\n * adds a metadata that the component that this template creates is of type app.\n * This will be used later to do further configuration for example:\n * - add it to the workspace.jsonc as app\n * - ensure to create the .bit_root for it\n */\n isApp?: boolean;\n\n /**\n * list of dependencies to install when the component is created.\n */\n dependencies?: string[];\n\n /**\n * Perform installation of missing dependencies after component generation.\n * This is the same as of running `bit install --add-missing-deps` after component generation.\n */\n installMissingDependencies?: boolean;\n}\n\n/**\n * PromptOption is shown to the user before calling the generateFiles function.\n * The prompt is using enquirer under the hood. see https://www.npmjs.com/package/enquirer.\n * Examples:\n * - input: {name: 'name', message: 'enter your name', type: 'input'}\n * - confirm: {name: 'isHappy', message: 'are you happy?', type: 'confirm'}\n * - select: {name: 'color', message: 'pick a color', type: 'select', choices: ['red', 'blue', 'green']}\n */\nexport type PromptOption = {\n name: string;\n message: string;\n type: 'input' | 'confirm' | 'select';\n choices?: string[]; // for select type\n skip?: (previousResults: PromptResults) => boolean; // skip this prompt if this function returns true\n}\n\n/**\n * PromptResults is the result of the user input received from the promptOptions.\n * The key is the name of the prompt option and the value is the user input.\n * in case the prompt-option is of type 'confirm', the value will be a boolean.\n */\nexport type PromptResults = Record<string, string | boolean>;\n\nexport interface ComponentTemplate extends ComponentTemplateOptions {\n name: string;\n\n /**\n * in case the template requires user input, this function will be called to prompt the user.\n * the results will be passed to the generateFiles function.\n */\n promptOptions?: () => PromptOption[];\n\n /**\n * template function for generating the file of a certain component.,\n */\n generateFiles(context: ComponentContext): Promise<ComponentFile[]> | ComponentFile[];\n\n /**\n * component config. gets saved in the .bitmap file and it overrides the workspace.jsonc config.\n * for example, you can set the env that will be used for this component as follows:\n * \"teambit.envs/envs\": {\n * \"env\": \"teambit.harmony/aspect\"\n * },\n */\n config?: ComponentConfig | ((context: ConfigContext) => ComponentConfig);\n}\n\nexport type GetComponentTemplates = () => ComponentTemplate[];"],"mappings":"","ignoreList":[]}
|
@@ -11,7 +11,7 @@ import { TrackerMain } from '@teambit/tracker';
|
|
11
11
|
import { NewComponentHelperMain } from '@teambit/new-component-helper';
|
12
12
|
import { Logger, LoggerMain } from '@teambit/logger';
|
13
13
|
import { DeprecationMain } from '@teambit/deprecation';
|
14
|
-
import { ComponentTemplate, GetComponentTemplates } from './component-template';
|
14
|
+
import { ComponentTemplate, GetComponentTemplates, PromptResults } from './component-template';
|
15
15
|
import { CreateOptions } from './create.cmd';
|
16
16
|
import { GenerateResult, InstallOptions, OnComponentCreateFn } from './component-generator';
|
17
17
|
import { WorkspaceTemplate } from './workspace-template';
|
@@ -150,7 +150,8 @@ export declare class GeneratorMain {
|
|
150
150
|
aspect?: Component;
|
151
151
|
}>;
|
152
152
|
searchRegisteredWorkspaceTemplate(name?: string, aspectId?: string, remoteEnvsAspect?: EnvsMain): Promise<WorkspaceTemplate | undefined>;
|
153
|
-
|
153
|
+
getTemplateWithId(templateName: string, aspect?: string): Promise<ComponentTemplateWithId>;
|
154
|
+
generateComponentTemplate(componentNames: string[], templateName: string, options: Partial<CreateOptions>, installOptions?: InstallOptions, promptResults?: PromptResults): Promise<GenerateResult[]>;
|
154
155
|
private getEnvIdFromTemplateWithId;
|
155
156
|
generateWorkspaceTemplate(workspaceName: string, templateName: string, options: NewOptions & {
|
156
157
|
aspect?: string;
|
@@ -521,17 +521,21 @@ class GeneratorMain {
|
|
521
521
|
});
|
522
522
|
return found?.template;
|
523
523
|
}
|
524
|
-
async
|
524
|
+
async getTemplateWithId(templateName, aspect) {
|
525
|
+
const componentConfigLoadingRegistry = _legacy().ComponentConfig.componentConfigLoadingRegistry;
|
526
|
+
const templateWithId = await this.getComponentTemplate(templateName, aspect);
|
527
|
+
_legacy().ComponentConfig.componentConfigLoadingRegistry = componentConfigLoadingRegistry;
|
528
|
+
if (!templateWithId) throw new (_bitError().BitError)(`template "${templateName}" was not found`);
|
529
|
+
return templateWithId;
|
530
|
+
}
|
531
|
+
async generateComponentTemplate(componentNames, templateName, options, installOptions, promptResults) {
|
525
532
|
if (!this.workspace) throw new (_workspace().OutsideWorkspaceError)();
|
526
533
|
await this.loadAspects();
|
527
534
|
const {
|
528
535
|
namespace,
|
529
536
|
aspect
|
530
537
|
} = options;
|
531
|
-
const
|
532
|
-
const templateWithId = await this.getComponentTemplate(templateName, aspect);
|
533
|
-
_legacy().ComponentConfig.componentConfigLoadingRegistry = componentConfigLoadingRegistry;
|
534
|
-
if (!templateWithId) throw new (_bitError().BitError)(`template "${templateName}" was not found`);
|
538
|
+
const templateWithId = await this.getTemplateWithId(templateName, aspect);
|
535
539
|
const componentIds = componentNames.map(componentName => this.newComponentHelper.getNewComponentId(componentName, namespace, options.scope));
|
536
540
|
const componentNameSameAsTemplateName = componentIds.find(componentId => componentId.name === templateName);
|
537
541
|
if (componentNameSameAsTemplateName) {
|
@@ -542,7 +546,7 @@ class GeneratorMain {
|
|
542
546
|
the reason is that after refactoring, the code will have this invalid class: "class ${compNamePascal} extends ${compNamePascal} {}"`);
|
543
547
|
}
|
544
548
|
const envId = await this.getEnvIdFromTemplateWithId(templateWithId);
|
545
|
-
const componentGenerator = new (_componentGenerator().ComponentGenerator)(this.workspace, componentIds, options, templateWithId.template, this.envs, this.newComponentHelper, this.tracker, this.wsConfigFiles, this.logger, this.onComponentCreateSlot, templateWithId.id, envId, installOptions);
|
549
|
+
const componentGenerator = new (_componentGenerator().ComponentGenerator)(this.workspace, componentIds, options, templateWithId.template, this.envs, this.newComponentHelper, this.tracker, this.wsConfigFiles, this.logger, this.onComponentCreateSlot, templateWithId.id, envId, installOptions, promptResults);
|
546
550
|
return componentGenerator.generate(options.force);
|
547
551
|
}
|
548
552
|
async getEnvIdFromTemplateWithId(templateWithId) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_camelcase","_path","_graphql","_cli","_workspace","_envs","_legacy","_workspaceConfigFiles","_component","_legacy2","_scope","_harmony","_git","_bitError","_aspectLoader","_tracker","_newComponentHelper","_lodash","_logger","_deprecation","_generator","_create","_templates","_generator2","_componentGenerator","_workspaceGenerator","_new","_templates2","_basic","_starter","_generator3","_workspacePathExists","_legacy3","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GeneratorMain","constructor","componentTemplateSlot","workspaceTemplateSlot","onComponentCreateSlot","config","workspace","envs","aspectLoader","newComponentHelper","componentAspect","tracker","logger","git","wsConfigFiles","deprecation","id","template","shouldBeHidden","hidden","hideCoreTemplates","bitApi","isCoreAspect","aspectId","name","description","setBitApi","registerComponentTemplate","templates","register","registerWorkspaceTemplate","registerOnComponentCreate","fn","listTemplates","aspect","isRunningInsideWorkspace","getAllComponentTemplatesDescriptorsFlattened","getAllWorkspaceTemplatesDescriptorFlattened","listComponentTemplates","opts","Boolean","getComponentTemplateByAspect","result","get","Array","isArray","getComponentTemplate","fromEnv","listEnvComponentTemplates","found","findTemplateByAspectIdAndName","getAllComponentTemplatesFlattened","find","idWithoutVersion","split","loadAspectsFromGlobalScope","aspectIds","globalScope","LegacyScope","ensure","GLOBAL_SCOPE","ensureDir","legacyGlobalsSnapshot","takeLegacyGlobalsSnapshot","globalScopeHarmony","loadBit","path","scope","ScopeAspect","AspectLoaderAspect","ids","map","ComponentID","fromString","hasVersions","every","hasVersion","useCache","import","reason","components","getMany","resolvedAspects","getResolvedAspects","workspaceName","loadRequireableExtensions","err","error","code","resolvedAspectsAgain","skipIfExists","getGlobalGeneratorEnvs","remoteGenerator","GeneratorAspect","remoteEnvsAspect","EnvsAspect","fullAspectId","toString","restoreGlobalsFromSnapshot","findWorkspaceTemplateInGlobalScope","fromGlobal","searchRegisteredWorkspaceTemplate","workspaceTemplate","findTemplateInOtherWorkspace","workspacePath","BitError","harmony","WorkspaceAspect","Error","aspectComponentId","resolveComponentId","loadAspects","aspectComponent","aspectFullId","generator","getWorkspaceTemplate","registeredTemplate","listEnvWorkspaceTemplates","getAllWorkspaceTemplatesFlattened","tpl","generateComponentTemplate","componentNames","templateName","options","installOptions","OutsideWorkspaceError","namespace","componentConfigLoadingRegistry","ComponentConfig","templateWithId","componentIds","componentName","getNewComponentId","componentNameSameAsTemplateName","componentId","compNamePascal","camelCase","pascalCase","envId","getEnvIdFromTemplateWithId","componentGenerator","ComponentGenerator","generate","force","envIdFromTemplate","env","parsedFromTemplate","tryFromString","resolvedId","resolveEnvIdWithPotentialVersionForConfig","envName","Promise","resolve","undefined","generateWorkspaceTemplate","currentDir","process","cwd","fs","existsSync","WorkspacePathExists","loadFrom","workspaceGenerator","WorkspaceGenerator","warnAboutDeprecation","appName","deprecationInfo","getDeprecationInfo","isDeprecate","newStarterMsg","newId","consoleWarning","envTemplates","listEnvComponentTemplateDescriptors","filtered","flattened","getTemplateDescriptor","templatesByAspects","toArray","flatMap","componentTemplates","resolvedComponentTemplates","workspaceTemplates","loadEnvs","getGeneratorStarters","envStarters","starter","compact","envTemplate","toStringWithoutVersion","titlePrefix","getConfiguredEnvs","configEnvs","includes","globals","allIds","uniq","concat","getGeneratorTemplates","tpls","host","getHost","envsAspect","potentialEnvs","getEnvDefinition","aspectLoaded","aspects","provider","cli","graphql","loggerMain","createLogger","commands","CreateCmd","TemplatesCmd","NewCmd","generatorSchema","registerPlugins","StarterPlugin","registerService","GeneratorService","componentGeneratorTemplate","componentGeneratorTemplateStandalone","starterTemplate","starterTemplateStandalone","BasicWorkspaceStarter","exports","Slot","withType","CLIAspect","GraphqlAspect","NewComponentHelperAspect","ComponentAspect","TrackerAspect","LoggerAspect","GitAspect","WorkspaceConfigFilesAspect","DeprecationAspect","MainRuntime","addRuntime"],"sources":["generator.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport camelCase from 'camelcase';\nimport { resolve } from 'path';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { WorkspaceAspect, OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { EnvDefinition, EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { ComponentConfig } from '@teambit/legacy.consumer-config';\nimport { WorkspaceConfigFilesAspect, WorkspaceConfigFilesMain } from '@teambit/workspace-config-files';\nimport { ComponentAspect, ComponentID } from '@teambit/component';\nimport type { ComponentMain, Component } from '@teambit/component';\nimport { Scope as LegacyScope } from '@teambit/legacy.scope';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport { Harmony, Slot, SlotRegistry } from '@teambit/harmony';\nimport { GitAspect, GitMain } from '@teambit/git';\nimport { BitError } from '@teambit/bit-error';\nimport { AspectLoaderAspect, AspectLoaderMain } from '@teambit/aspect-loader';\nimport { TrackerAspect, TrackerMain } from '@teambit/tracker';\nimport { NewComponentHelperAspect, NewComponentHelperMain } from '@teambit/new-component-helper';\nimport { compact, uniq } from 'lodash';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { DeprecationAspect, DeprecationMain } from '@teambit/deprecation';\nimport { ComponentTemplate, GetComponentTemplates } from './component-template';\nimport { GeneratorAspect } from './generator.aspect';\nimport { CreateCmd, CreateOptions } from './create.cmd';\nimport { TemplatesCmd } from './templates.cmd';\nimport { generatorSchema } from './generator.graphql';\nimport { ComponentGenerator, GenerateResult, InstallOptions, OnComponentCreateFn } from './component-generator';\nimport { WorkspaceGenerator } from './workspace-generator';\nimport { WorkspaceTemplate } from './workspace-template';\nimport { NewCmd, NewOptions } from './new.cmd';\nimport {\n componentGeneratorTemplate,\n componentGeneratorTemplateStandalone,\n starterTemplate,\n starterTemplateStandalone,\n} from './templates';\nimport { BasicWorkspaceStarter } from './templates/basic';\nimport { StarterPlugin } from './starter.plugin';\nimport { GeneratorService } from './generator.service';\nimport { WorkspacePathExists } from './exceptions/workspace-path-exists';\nimport { GLOBAL_SCOPE } from '@teambit/legacy.constants';\n\nexport type ComponentTemplateSlot = SlotRegistry<ComponentTemplate[] | GetComponentTemplates>;\nexport type WorkspaceTemplateSlot = SlotRegistry<WorkspaceTemplate[]>;\nexport type OnComponentCreateSlot = SlotRegistry<OnComponentCreateFn>;\n\nexport type TemplateDescriptor = {\n aspectId: string;\n titlePrefix?: string;\n name: string;\n description?: string;\n hidden?: boolean;\n};\n\ntype TemplateWithId = { id: string; envName?: string };\ntype WorkspaceTemplateWithId = TemplateWithId & { template: WorkspaceTemplate };\ntype ComponentTemplateWithId = TemplateWithId & { template: ComponentTemplate };\ntype AnyTemplateWithId = TemplateWithId & { template: ComponentTemplate | WorkspaceTemplate };\n\ntype LegacyGlobal = { classInstance: any; methodName: string; value: any; empty: any };\nexport type BitApi = {\n isCoreAspect: (id: string) => boolean;\n loadBit: (path?: string) => Promise<Harmony>;\n restoreGlobalsFromSnapshot: (globals: LegacyGlobal[]) => void;\n takeLegacyGlobalsSnapshot: () => LegacyGlobal[];\n};\n\nexport type GenerateWorkspaceTemplateResult = { workspacePath: string; appName?: string };\n\nexport type GeneratorConfig = {\n /**\n * array of aspects to include in the list of templates.\n */\n aspects: string[];\n\n /**\n * by default core templates are shown.\n * use this to hide them unless `--show-all` flag of `bit templates` was used\n */\n hideCoreTemplates: boolean;\n\n /**\n * default envs.\n */\n envs?: string[];\n};\n\nexport class GeneratorMain {\n private aspectLoaded = false;\n private bitApi: BitApi;\n constructor(\n private componentTemplateSlot: ComponentTemplateSlot,\n private workspaceTemplateSlot: WorkspaceTemplateSlot,\n private onComponentCreateSlot: OnComponentCreateSlot,\n private config: GeneratorConfig,\n private workspace: Workspace,\n private envs: EnvsMain,\n private aspectLoader: AspectLoaderMain,\n private newComponentHelper: NewComponentHelperMain,\n private componentAspect: ComponentMain,\n private tracker: TrackerMain,\n private logger: Logger,\n private git: GitMain,\n private wsConfigFiles: WorkspaceConfigFilesMain,\n private deprecation: DeprecationMain\n ) {}\n\n setBitApi(bitApi: BitApi) {\n this.bitApi = bitApi;\n }\n\n /**\n * register a new component template.\n * @param templates array of component templates or a function that returns an array of component templates.\n * prefer to use the function to improve performance by loading the templates only when needed.\n */\n registerComponentTemplate(templates: ComponentTemplate[] | GetComponentTemplates) {\n this.componentTemplateSlot.register(templates);\n return this;\n }\n\n /**\n * register a new workspace starter.\n */\n registerWorkspaceTemplate(templates: WorkspaceTemplate[]) {\n this.workspaceTemplateSlot.register(templates);\n return this;\n }\n\n registerOnComponentCreate(fn: OnComponentCreateFn) {\n this.onComponentCreateSlot.register(fn);\n return this;\n }\n\n /**\n * list all component templates registered in the workspace or workspace templates in case the\n * workspace is not available\n */\n async listTemplates({ aspect }: { aspect?: string } = {}): Promise<TemplateDescriptor[]> {\n if (this.isRunningInsideWorkspace()) {\n return this.getAllComponentTemplatesDescriptorsFlattened(aspect);\n }\n return this.getAllWorkspaceTemplatesDescriptorFlattened(aspect);\n }\n\n private getTemplateDescriptor = ({ id, template }: AnyTemplateWithId): TemplateDescriptor => {\n const shouldBeHidden = () => {\n if (template.hidden) return true;\n if (this.config.hideCoreTemplates && this.bitApi.isCoreAspect(id)) return true;\n return false;\n };\n return {\n aspectId: id,\n name: template.name,\n description: template.description,\n hidden: shouldBeHidden(),\n };\n };\n\n /**\n * @deprecated use this.listTemplates()\n */\n async listComponentTemplates(opts: { aspect?: string }): Promise<TemplateDescriptor[]> {\n return this.listTemplates(opts);\n }\n\n isRunningInsideWorkspace(): boolean {\n return Boolean(this.workspace);\n }\n\n /**\n * get all component templates registered by a specific aspect ID.\n */\n getComponentTemplateByAspect(aspectId: string): ComponentTemplate[] {\n const result = this.componentTemplateSlot.get(aspectId);\n if (!result) return [];\n if (Array.isArray(result)) return result;\n return result();\n }\n\n /**\n * returns a specific component template.\n */\n async getComponentTemplate(name: string, aspectId?: string): Promise<ComponentTemplateWithId | undefined> {\n const fromEnv = await this.listEnvComponentTemplates([], aspectId);\n if (fromEnv && fromEnv.length) {\n const found = this.findTemplateByAspectIdAndName<ComponentTemplateWithId>(aspectId, name, fromEnv);\n if (found) return found;\n }\n // fallback to aspect id not from env if provided\n const templates = await this.getAllComponentTemplatesFlattened();\n const found = this.findTemplateByAspectIdAndName<ComponentTemplateWithId>(aspectId, name, templates);\n return found;\n }\n\n private findTemplateByAspectIdAndName<T>(\n aspectId: string | undefined,\n name: string,\n templates: Array<T>\n ): T | undefined {\n // @ts-ignore (should set T to be extends ComponentTemplateWithId or WorkspaceTemplateWithId)\n const found = templates.find(({ id, template }) => {\n // When doing something like:\n // bit create react-env my-env --aspect teambit.react/react-env\n // we will get the aspectId without version\n // but the env might be loaded from the global scope then it will be with a version\n // so it won't found if we don't look for it like this\n const idWithoutVersion = id.split('@')[0];\n if (aspectId && id !== aspectId && idWithoutVersion !== aspectId) return false;\n return template.name === name;\n });\n return found;\n }\n\n /**\n * get or create a global scope, import the non-core aspects, load bit from that scope, create\n * capsules for the aspects and load them from the capsules.\n */\n private async loadAspectsFromGlobalScope(\n aspectIds: string[]\n ): Promise<{ components: Component[]; globalScopeHarmony: Harmony; legacyGlobalsSnapshot: LegacyGlobal[] }> {\n const globalScope = await LegacyScope.ensure(GLOBAL_SCOPE, 'global-scope');\n await globalScope.ensureDir();\n const legacyGlobalsSnapshot = this.bitApi.takeLegacyGlobalsSnapshot();\n const globalScopeHarmony = await this.bitApi.loadBit(globalScope.path);\n const scope = globalScopeHarmony.get<ScopeMain>(ScopeAspect.id);\n const aspectLoader = globalScopeHarmony.get<AspectLoaderMain>(AspectLoaderAspect.id);\n const ids = aspectIds.map((id) => ComponentID.fromString(id));\n const hasVersions = ids.every((id) => id.hasVersion());\n const useCache = hasVersions; // if all components has versions, try to use the cached aspects\n await scope.import(ids, { useCache, reason: 'to load aspects from global scope' });\n const components = await scope.getMany(ids, true);\n\n // don't use `await scope.loadAspectsFromCapsules(components, true);`\n // it won't work for globalScope because `this !== scope.aspectLoader` (this instance\n // is not the same as the aspectLoader instance Scope has)\n const resolvedAspects = await scope.getResolvedAspects(components, { workspaceName: 'global-scope' });\n try {\n await aspectLoader.loadRequireableExtensions(resolvedAspects, true);\n } catch (err: any) {\n if (err?.error?.code === 'MODULE_NOT_FOUND') {\n const resolvedAspectsAgain = await scope.getResolvedAspects(components, {\n skipIfExists: false,\n workspaceName: 'global-scope',\n });\n await aspectLoader.loadRequireableExtensions(resolvedAspectsAgain, true);\n } else {\n throw err;\n }\n }\n\n return { components, globalScopeHarmony, legacyGlobalsSnapshot };\n }\n\n /**\n * Get the generator aspect and the envs aspect from an harmony instance of the global scope\n */\n private async getGlobalGeneratorEnvs(\n aspectId: string\n ): Promise<{ remoteGenerator: GeneratorMain; fullAspectId: string; remoteEnvsAspect: EnvsMain; aspect: any }> {\n const { globalScopeHarmony, components, legacyGlobalsSnapshot } = await this.loadAspectsFromGlobalScope([aspectId]);\n const remoteGenerator = globalScopeHarmony.get<GeneratorMain>(GeneratorAspect.id);\n const remoteEnvsAspect = globalScopeHarmony.get<EnvsMain>(EnvsAspect.id);\n const aspect = components[0];\n const fullAspectId = aspect.id.toString();\n this.bitApi.restoreGlobalsFromSnapshot(legacyGlobalsSnapshot);\n\n return { remoteGenerator, fullAspectId, remoteEnvsAspect, aspect };\n }\n\n /**\n * in the case the aspect-id is given and this aspect doesn't exist locally, import it to the\n * global scope and load it from the capsule\n */\n async findWorkspaceTemplateInGlobalScope(\n aspectId: string,\n name?: string\n ): Promise<{ workspaceTemplate?: WorkspaceTemplate; aspect?: Component }> {\n const { remoteGenerator, fullAspectId, remoteEnvsAspect, aspect } = await this.getGlobalGeneratorEnvs(aspectId);\n const fromGlobal = await remoteGenerator.searchRegisteredWorkspaceTemplate.call(\n remoteGenerator,\n name,\n fullAspectId,\n remoteEnvsAspect\n );\n return { workspaceTemplate: fromGlobal, aspect };\n }\n\n async findTemplateInOtherWorkspace(workspacePath: string, name: string, aspectId?: string) {\n if (!aspectId)\n throw new BitError(\n `to load a template from a different workspace, please provide the aspect-id using --aspect flag`\n );\n const harmony = await this.bitApi.loadBit(workspacePath);\n let workspace: Workspace;\n try {\n workspace = harmony.get<Workspace>(WorkspaceAspect.id);\n } catch {\n throw new Error(`fatal: \"${workspacePath}\" is not a valid Bit workspace, make sure the path is correct`);\n }\n const aspectComponentId = await workspace.resolveComponentId(aspectId);\n await workspace.loadAspects([aspectId], true);\n const aspectComponent = await workspace.get(aspectComponentId);\n const aspectFullId = aspectComponentId.toString();\n const generator = harmony.get<GeneratorMain>(GeneratorAspect.id);\n const workspaceTemplate = await generator.searchRegisteredWorkspaceTemplate(name, aspectFullId);\n return { workspaceTemplate, aspect: aspectComponent };\n }\n\n /**\n * returns a specific workspace template.\n */\n async getWorkspaceTemplate(\n name: string,\n aspectId?: string\n ): Promise<{ workspaceTemplate: WorkspaceTemplate; aspect?: Component }> {\n const registeredTemplate = await this.searchRegisteredWorkspaceTemplate(name, aspectId);\n if (registeredTemplate) {\n return { workspaceTemplate: registeredTemplate };\n }\n if (!aspectId) {\n throw new BitError(\n `template \"${name}\" was not found, please use --aspect flag to load from an env i.e --aspect teambit.react/react-env\\n Learn more about component templates here: https://bit.dev/reference/generator/create-generator`\n );\n }\n\n const { workspaceTemplate, aspect } = await this.findWorkspaceTemplateInGlobalScope(aspectId, name);\n if (workspaceTemplate) {\n return { workspaceTemplate, aspect };\n }\n throw new BitError(\n `template \"${name}\" was not found, please use --aspect flag to load from an env i.e --aspect teambit.react/react-env\\n Learn more about component templates here: https://bit.dev/reference/generator/create-generator`\n );\n }\n\n async searchRegisteredWorkspaceTemplate(\n name?: string,\n aspectId?: string,\n remoteEnvsAspect?: EnvsMain\n ): Promise<WorkspaceTemplate | undefined> {\n let fromEnv;\n\n if (aspectId) {\n fromEnv = await this.listEnvWorkspaceTemplates(aspectId, remoteEnvsAspect);\n }\n const templates = fromEnv && fromEnv.length ? fromEnv : this.getAllWorkspaceTemplatesFlattened();\n const found = templates.find(({ id, template: tpl }) => {\n if (aspectId && name) return aspectId === id && name === tpl.name;\n if (aspectId) return aspectId === id;\n if (name) return name === tpl.name;\n throw new Error(`searchRegisteredWorkspaceTemplate expects to get \"name\" or \"aspectId\"`);\n });\n\n return found?.template;\n }\n\n async generateComponentTemplate(\n componentNames: string[],\n templateName: string,\n options: Partial<CreateOptions>,\n installOptions?: InstallOptions\n ): Promise<GenerateResult[]> {\n if (!this.workspace) throw new OutsideWorkspaceError();\n await this.loadAspects();\n const { namespace, aspect } = options;\n\n const componentConfigLoadingRegistry = ComponentConfig.componentConfigLoadingRegistry;\n\n const templateWithId = await this.getComponentTemplate(templateName, aspect);\n\n ComponentConfig.componentConfigLoadingRegistry = componentConfigLoadingRegistry;\n\n if (!templateWithId) throw new BitError(`template \"${templateName}\" was not found`);\n\n const componentIds = componentNames.map((componentName) =>\n this.newComponentHelper.getNewComponentId(componentName, namespace, options.scope)\n );\n\n const componentNameSameAsTemplateName = componentIds.find((componentId) => componentId.name === templateName);\n if (componentNameSameAsTemplateName) {\n const compNamePascal = camelCase(templateName, { pascalCase: true });\n throw new BitError(\n `unable to create a component with the same name as the template \"${templateName}\", please use a different name.\nthe reason is that after refactoring, the code will have this invalid class: \"class ${compNamePascal} extends ${compNamePascal} {}\"`\n );\n }\n\n const envId = await this.getEnvIdFromTemplateWithId(templateWithId);\n\n const componentGenerator = new ComponentGenerator(\n this.workspace,\n componentIds,\n options,\n templateWithId.template,\n this.envs,\n this.newComponentHelper,\n this.tracker,\n this.wsConfigFiles,\n this.logger,\n this.onComponentCreateSlot,\n templateWithId.id,\n envId,\n installOptions\n );\n return componentGenerator.generate(options.force);\n }\n\n private async getEnvIdFromTemplateWithId(templateWithId: ComponentTemplateWithId): Promise<ComponentID | undefined> {\n const envIdFromTemplate = templateWithId.template.env;\n if (envIdFromTemplate) {\n const parsedFromTemplate = ComponentID.tryFromString(envIdFromTemplate);\n if (!parsedFromTemplate) {\n throw new BitError(\n `Error: unable to parse envId from template. template name: ${templateWithId.template.name}, envId: ${envIdFromTemplate}`\n );\n }\n const resolvedId = await this.workspace.resolveEnvIdWithPotentialVersionForConfig(parsedFromTemplate);\n return ComponentID.fromString(resolvedId);\n }\n if (templateWithId.envName) {\n return ComponentID.fromString(templateWithId.id);\n }\n return Promise.resolve(undefined);\n }\n\n async generateWorkspaceTemplate(\n workspaceName: string,\n templateName: string,\n options: NewOptions & { aspect?: string; currentDir?: boolean }\n ): Promise<GenerateWorkspaceTemplateResult> {\n if (this.workspace) {\n throw new BitError('Error: unable to generate a new workspace inside of an existing workspace');\n }\n const workspacePath = options.currentDir ? process.cwd() : resolve(workspaceName);\n if (!options.currentDir && fs.existsSync(workspacePath)) {\n throw new WorkspacePathExists(workspacePath);\n }\n const { aspect: aspectId, loadFrom } = options;\n const { workspaceTemplate, aspect } = loadFrom\n ? await this.findTemplateInOtherWorkspace(loadFrom, templateName, aspectId)\n : await this.getWorkspaceTemplate(templateName, aspectId);\n\n if (!workspaceTemplate) throw new BitError(`template \"${templateName}\" was not found`);\n const workspaceGenerator = new WorkspaceGenerator(\n workspaceName,\n workspacePath,\n options,\n workspaceTemplate,\n this.bitApi,\n aspect\n );\n await this.warnAboutDeprecation(aspect);\n await workspaceGenerator.generate();\n return { workspacePath, appName: workspaceTemplate.appName };\n }\n\n private async warnAboutDeprecation(aspect?: Component) {\n if (!aspect) return;\n const deprecationInfo = await this.deprecation.getDeprecationInfo(aspect);\n if (deprecationInfo.isDeprecate) {\n const newStarterMsg = deprecationInfo.newId ? `, use \"${deprecationInfo.newId.toString()}\" instead` : '';\n this.logger.consoleWarning(`the starter \"${aspect?.id.toString()}\" is deprecated${newStarterMsg}`);\n }\n }\n\n private async getAllComponentTemplatesDescriptorsFlattened(aspectId?: string): Promise<Array<TemplateDescriptor>> {\n const envTemplates = await this.listEnvComponentTemplateDescriptors([], aspectId);\n if (envTemplates && envTemplates.length) {\n if (!aspectId) return envTemplates;\n const filtered = envTemplates.filter((template) => template.aspectId === aspectId);\n if (filtered.length) return filtered;\n }\n\n const flattened = this.getAllComponentTemplatesFlattened();\n const filtered = aspectId ? flattened.filter((template) => template.id === aspectId) : flattened;\n return filtered.map((template) => this.getTemplateDescriptor(template));\n }\n\n private getAllComponentTemplatesFlattened(): Array<{ id: string; template: ComponentTemplate }> {\n const templatesByAspects = this.componentTemplateSlot.toArray();\n const flattened = templatesByAspects.flatMap(([id, componentTemplates]) => {\n const resolvedComponentTemplates = Array.isArray(componentTemplates) ? componentTemplates : componentTemplates();\n return resolvedComponentTemplates.map((template) => ({\n id,\n template,\n }));\n });\n return flattened;\n }\n\n private async getAllWorkspaceTemplatesDescriptorFlattened(aspectId?: string): Promise<Array<TemplateDescriptor>> {\n let envTemplates;\n if (aspectId) {\n envTemplates = await this.listEnvWorkspaceTemplates(aspectId);\n }\n\n const templates = envTemplates && envTemplates.length ? envTemplates : this.getAllWorkspaceTemplatesFlattened();\n return templates.map((template) => this.getTemplateDescriptor(template));\n }\n\n private getAllWorkspaceTemplatesFlattened(): Array<{ id: string; template: WorkspaceTemplate }> {\n const templatesByAspects = this.workspaceTemplateSlot.toArray();\n return templatesByAspects.flatMap(([id, workspaceTemplates]) => {\n return workspaceTemplates.map((template) => ({\n id,\n template,\n }));\n });\n }\n\n /**\n * list all starter templates registered by an env.\n */\n async listEnvWorkspaceTemplates(envId: string, remoteEnvsAspect?: EnvsMain): Promise<Array<WorkspaceTemplateWithId>> {\n const envs = await this.loadEnvs([envId], remoteEnvsAspect);\n const workspaceTemplates = envs.flatMap((env) => {\n if (!env.env.getGeneratorStarters) return undefined;\n const envStarters = env.env.getGeneratorStarters();\n return envStarters.map((starter) => {\n const componentId = ComponentID.fromString(env.id);\n return {\n id: componentId.toString(),\n envName: env.name,\n template: starter,\n };\n });\n });\n\n return compact(workspaceTemplates);\n }\n\n /**\n * list all component templates registered by an env.\n */\n async listEnvComponentTemplateDescriptors(ids: string[] = [], aspectId?: string): Promise<TemplateDescriptor[]> {\n const envTemplates = await this.listEnvComponentTemplates(ids, aspectId);\n const templates: TemplateDescriptor[] = envTemplates.map((envTemplate) => {\n const componentId = ComponentID.fromString(envTemplate.id);\n return {\n aspectId: componentId.toStringWithoutVersion(),\n titlePrefix: envTemplate.envName,\n ...envTemplate.template,\n };\n });\n\n return templates;\n }\n\n getConfiguredEnvs(): string[] {\n return this.config.envs ?? [];\n }\n\n async listEnvComponentTemplates(ids: string[] = [], aspectId?: string): Promise<Array<ComponentTemplateWithId>> {\n const configEnvs = this.config.envs || [];\n let remoteEnvsAspect;\n let fullAspectId;\n if (aspectId && !configEnvs.includes(aspectId)) {\n const globals = await this.getGlobalGeneratorEnvs(aspectId);\n remoteEnvsAspect = globals.remoteEnvsAspect;\n fullAspectId = globals.fullAspectId;\n }\n const allIds = uniq(configEnvs?.concat(ids).concat([aspectId, fullAspectId]).filter(Boolean));\n const envs = await this.loadEnvs(allIds, remoteEnvsAspect);\n const templates = envs.flatMap((env) => {\n if (!env.env.getGeneratorTemplates) return [];\n const tpls = env.env.getGeneratorTemplates() || [];\n const componentId = ComponentID.fromString(env.id);\n return tpls.map((template) => {\n return {\n id: componentId.toString(),\n envName: env.name,\n template,\n };\n });\n });\n\n return templates;\n }\n\n async loadEnvs(ids: string[] = this.config.envs || [], remoteEnvsAspect?: EnvsMain): Promise<EnvDefinition[]> {\n // In case we have remoteEnvsAspect it means that we are running from the global scope\n // in that case the aspect / env were already loaded before to the global scope harmony instance\n // so no reason to load it here\n if (!remoteEnvsAspect) {\n const host = this.componentAspect.getHost();\n if (!host) return [];\n await host.loadAspects(ids);\n }\n\n const envsAspect = remoteEnvsAspect || this.envs;\n\n const potentialEnvs = ids.map((id) => {\n const componentId = ComponentID.fromString(id);\n return envsAspect.getEnvDefinition(componentId);\n });\n\n return compact(potentialEnvs);\n }\n\n async loadAspects() {\n if (this.aspectLoaded) return;\n await this.workspace.loadAspects(this.config.aspects);\n this.aspectLoaded = true;\n }\n\n static slots = [\n Slot.withType<ComponentTemplate[]>(),\n Slot.withType<WorkspaceTemplate[]>(),\n Slot.withType<OnComponentCreateFn>(),\n ];\n\n static dependencies = [\n WorkspaceAspect,\n CLIAspect,\n GraphqlAspect,\n EnvsAspect,\n AspectLoaderAspect,\n NewComponentHelperAspect,\n ComponentAspect,\n TrackerAspect,\n LoggerAspect,\n GitAspect,\n WorkspaceConfigFilesAspect,\n DeprecationAspect,\n ];\n\n static runtime = MainRuntime;\n\n static async provider(\n [\n workspace,\n cli,\n graphql,\n envs,\n aspectLoader,\n newComponentHelper,\n componentAspect,\n tracker,\n loggerMain,\n git,\n wsConfigFiles,\n deprecation,\n ]: [\n Workspace,\n CLIMain,\n GraphqlMain,\n EnvsMain,\n AspectLoaderMain,\n NewComponentHelperMain,\n ComponentMain,\n TrackerMain,\n LoggerMain,\n GitMain,\n WorkspaceConfigFilesMain,\n DeprecationMain,\n ],\n config: GeneratorConfig,\n [componentTemplateSlot, workspaceTemplateSlot, onComponentCreateSlot]: [\n ComponentTemplateSlot,\n WorkspaceTemplateSlot,\n OnComponentCreateSlot,\n ]\n ) {\n const logger = loggerMain.createLogger(GeneratorAspect.id);\n const generator = new GeneratorMain(\n componentTemplateSlot,\n workspaceTemplateSlot,\n onComponentCreateSlot,\n config,\n workspace,\n envs,\n aspectLoader,\n newComponentHelper,\n componentAspect,\n tracker,\n logger,\n git,\n wsConfigFiles,\n deprecation\n );\n const commands = [new CreateCmd(generator), new TemplatesCmd(generator), new NewCmd(generator)];\n cli.register(...commands);\n graphql.register(() => generatorSchema(generator));\n aspectLoader.registerPlugins([new StarterPlugin(generator)]);\n envs.registerService(new GeneratorService());\n\n if (generator)\n generator.registerComponentTemplate(() => [\n componentGeneratorTemplate,\n componentGeneratorTemplateStandalone,\n starterTemplate,\n starterTemplateStandalone,\n ]);\n generator.registerWorkspaceTemplate([BasicWorkspaceStarter]);\n\n return generator;\n }\n}\n\nGeneratorAspect.addRuntime(GeneratorMain);\n"],"mappings":";;;;;;AAAA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,WAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,MAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,KAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,SAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,QAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,KAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,IAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,WAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,UAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,MAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,KAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,QAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,OAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,sBAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,qBAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,WAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,UAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAY,SAAA;EAAA,MAAAZ,IAAA,GAAAE,OAAA;EAAAU,QAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,OAAA;EAAA,MAAAb,IAAA,GAAAE,OAAA;EAAAW,MAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,SAAA;EAAA,MAAAd,IAAA,GAAAE,OAAA;EAAAY,QAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAe,KAAA;EAAA,MAAAf,IAAA,GAAAE,OAAA;EAAAa,IAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAgB,UAAA;EAAA,MAAAhB,IAAA,GAAAE,OAAA;EAAAc,SAAA,YAAAA,CAAA;IAAA,OAAAhB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiB,cAAA;EAAA,MAAAjB,IAAA,GAAAE,OAAA;EAAAe,aAAA,YAAAA,CAAA;IAAA,OAAAjB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAkB,SAAA;EAAA,MAAAlB,IAAA,GAAAE,OAAA;EAAAgB,QAAA,YAAAA,CAAA;IAAA,OAAAlB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAmB,oBAAA;EAAA,MAAAnB,IAAA,GAAAE,OAAA;EAAAiB,mBAAA,YAAAA,CAAA;IAAA,OAAAnB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAoB,QAAA;EAAA,MAAApB,IAAA,GAAAE,OAAA;EAAAkB,OAAA,YAAAA,CAAA;IAAA,OAAApB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAqB,QAAA;EAAA,MAAArB,IAAA,GAAAE,OAAA;EAAAmB,OAAA,YAAAA,CAAA;IAAA,OAAArB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAsB,aAAA;EAAA,MAAAtB,IAAA,GAAAE,OAAA;EAAAoB,YAAA,YAAAA,CAAA;IAAA,OAAAtB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAuB,WAAA;EAAA,MAAAvB,IAAA,GAAAE,OAAA;EAAAqB,UAAA,YAAAA,CAAA;IAAA,OAAAvB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAwB,QAAA;EAAA,MAAAxB,IAAA,GAAAE,OAAA;EAAAsB,OAAA,YAAAA,CAAA;IAAA,OAAAxB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAyB,WAAA;EAAA,MAAAzB,IAAA,GAAAE,OAAA;EAAAuB,UAAA,YAAAA,CAAA;IAAA,OAAAzB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA0B,YAAA;EAAA,MAAA1B,IAAA,GAAAE,OAAA;EAAAwB,WAAA,YAAAA,CAAA;IAAA,OAAA1B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA2B,oBAAA;EAAA,MAAA3B,IAAA,GAAAE,OAAA;EAAAyB,mBAAA,YAAAA,CAAA;IAAA,OAAA3B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA4B,oBAAA;EAAA,MAAA5B,IAAA,GAAAE,OAAA;EAAA0B,mBAAA,YAAAA,CAAA;IAAA,OAAA5B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAA6B,KAAA;EAAA,MAAA7B,IAAA,GAAAE,OAAA;EAAA2B,IAAA,YAAAA,CAAA;IAAA,OAAA7B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA8B,YAAA;EAAA,MAAA9B,IAAA,GAAAE,OAAA;EAAA4B,WAAA,YAAAA,CAAA;IAAA,OAAA9B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMA,SAAA+B,OAAA;EAAA,MAAA/B,IAAA,GAAAE,OAAA;EAAA6B,MAAA,YAAAA,CAAA;IAAA,OAAA/B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAgC,SAAA;EAAA,MAAAhC,IAAA,GAAAE,OAAA;EAAA8B,QAAA,YAAAA,CAAA;IAAA,OAAAhC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiC,YAAA;EAAA,MAAAjC,IAAA,GAAAE,OAAA;EAAA+B,WAAA,YAAAA,CAAA;IAAA,OAAAjC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAkC,qBAAA;EAAA,MAAAlC,IAAA,GAAAE,OAAA;EAAAgC,oBAAA,YAAAA,CAAA;IAAA,OAAAlC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAmC,SAAA;EAAA,MAAAnC,IAAA,GAAAE,OAAA;EAAAiC,QAAA,YAAAA,CAAA;IAAA,OAAAnC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAyD,SAAAC,uBAAAmC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,QAAAH,CAAA,EAAAI,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAP,CAAA,OAAAM,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAR,CAAA,GAAAI,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAX,CAAA,EAAAI,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAf,CAAA,aAAAI,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAD,OAAA,CAAAG,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAArB,CAAA,EAAAM,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAJ,CAAA;AAAA,SAAAmB,gBAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAmB,cAAA,CAAAnB,CAAA,MAAAJ,CAAA,GAAAM,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,IAAAoB,KAAA,EAAAnB,CAAA,EAAAO,UAAA,MAAAa,YAAA,MAAAC,QAAA,UAAA1B,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAuB,eAAAlB,CAAA,QAAAsB,CAAA,GAAAC,YAAA,CAAAvB,CAAA,uCAAAsB,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAvB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAwB,MAAA,CAAAC,WAAA,kBAAA9B,CAAA,QAAA2B,CAAA,GAAA3B,CAAA,CAAA+B,IAAA,CAAA1B,CAAA,EAAAD,CAAA,uCAAAuB,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAA5B,CAAA,GAAA6B,MAAA,GAAAC,MAAA,EAAA7B,CAAA;AA+ClD,MAAM8B,aAAa,CAAC;EAGzBC,WAAWA,CACDC,qBAA4C,EAC5CC,qBAA4C,EAC5CC,qBAA4C,EAC5CC,MAAuB,EACvBC,SAAoB,EACpBC,IAAc,EACdC,YAA8B,EAC9BC,kBAA0C,EAC1CC,eAA8B,EAC9BC,OAAoB,EACpBC,MAAc,EACdC,GAAY,EACZC,aAAuC,EACvCC,WAA4B,EACpC;IAAA,KAdQb,qBAA4C,GAA5CA,qBAA4C;IAAA,KAC5CC,qBAA4C,GAA5CA,qBAA4C;IAAA,KAC5CC,qBAA4C,GAA5CA,qBAA4C;IAAA,KAC5CC,MAAuB,GAAvBA,MAAuB;IAAA,KACvBC,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,IAAc,GAAdA,IAAc;IAAA,KACdC,YAA8B,GAA9BA,YAA8B;IAAA,KAC9BC,kBAA0C,GAA1CA,kBAA0C;IAAA,KAC1CC,eAA8B,GAA9BA,eAA8B;IAAA,KAC9BC,OAAoB,GAApBA,OAAoB;IAAA,KACpBC,MAAc,GAAdA,MAAc;IAAA,KACdC,GAAY,GAAZA,GAAY;IAAA,KACZC,aAAuC,GAAvCA,aAAuC;IAAA,KACvCC,WAA4B,GAA5BA,WAA4B;IAAA/B,eAAA,uBAhBf,KAAK;IAAAA,eAAA;IAAAA,eAAA,gCAyDI,CAAC;MAAEgC,EAAE;MAAEC;IAA4B,CAAC,KAAyB;MAC3F,MAAMC,cAAc,GAAGA,CAAA,KAAM;QAC3B,IAAID,QAAQ,CAACE,MAAM,EAAE,OAAO,IAAI;QAChC,IAAI,IAAI,CAACd,MAAM,CAACe,iBAAiB,IAAI,IAAI,CAACC,MAAM,CAACC,YAAY,CAACN,EAAE,CAAC,EAAE,OAAO,IAAI;QAC9E,OAAO,KAAK;MACd,CAAC;MACD,OAAO;QACLO,QAAQ,EAAEP,EAAE;QACZQ,IAAI,EAAEP,QAAQ,CAACO,IAAI;QACnBC,WAAW,EAAER,QAAQ,CAACQ,WAAW;QACjCN,MAAM,EAAED,cAAc,CAAC;MACzB,CAAC;IACH,CAAC;EApDE;EAEHQ,SAASA,CAACL,MAAc,EAAE;IACxB,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;;EAEA;AACF;AACA;AACA;AACA;EACEM,yBAAyBA,CAACC,SAAsD,EAAE;IAChF,IAAI,CAAC1B,qBAAqB,CAAC2B,QAAQ,CAACD,SAAS,CAAC;IAC9C,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACEE,yBAAyBA,CAACF,SAA8B,EAAE;IACxD,IAAI,CAACzB,qBAAqB,CAAC0B,QAAQ,CAACD,SAAS,CAAC;IAC9C,OAAO,IAAI;EACb;EAEAG,yBAAyBA,CAACC,EAAuB,EAAE;IACjD,IAAI,CAAC5B,qBAAqB,CAACyB,QAAQ,CAACG,EAAE,CAAC;IACvC,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;EACE,MAAMC,aAAaA,CAAC;IAAEC;EAA4B,CAAC,GAAG,CAAC,CAAC,EAAiC;IACvF,IAAI,IAAI,CAACC,wBAAwB,CAAC,CAAC,EAAE;MACnC,OAAO,IAAI,CAACC,4CAA4C,CAACF,MAAM,CAAC;IAClE;IACA,OAAO,IAAI,CAACG,2CAA2C,CAACH,MAAM,CAAC;EACjE;EAgBA;AACF;AACA;EACE,MAAMI,sBAAsBA,CAACC,IAAyB,EAAiC;IACrF,OAAO,IAAI,CAACN,aAAa,CAACM,IAAI,CAAC;EACjC;EAEAJ,wBAAwBA,CAAA,EAAY;IAClC,OAAOK,OAAO,CAAC,IAAI,CAAClC,SAAS,CAAC;EAChC;;EAEA;AACF;AACA;EACEmC,4BAA4BA,CAAClB,QAAgB,EAAuB;IAClE,MAAMmB,MAAM,GAAG,IAAI,CAACxC,qBAAqB,CAACyC,GAAG,CAACpB,QAAQ,CAAC;IACvD,IAAI,CAACmB,MAAM,EAAE,OAAO,EAAE;IACtB,IAAIE,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,EAAE,OAAOA,MAAM;IACxC,OAAOA,MAAM,CAAC,CAAC;EACjB;;EAEA;AACF;AACA;EACE,MAAMI,oBAAoBA,CAACtB,IAAY,EAAED,QAAiB,EAAgD;IACxG,MAAMwB,OAAO,GAAG,MAAM,IAAI,CAACC,yBAAyB,CAAC,EAAE,EAAEzB,QAAQ,CAAC;IAClE,IAAIwB,OAAO,IAAIA,OAAO,CAACjE,MAAM,EAAE;MAC7B,MAAMmE,KAAK,GAAG,IAAI,CAACC,6BAA6B,CAA0B3B,QAAQ,EAAEC,IAAI,EAAEuB,OAAO,CAAC;MAClG,IAAIE,KAAK,EAAE,OAAOA,KAAK;IACzB;IACA;IACA,MAAMrB,SAAS,GAAG,MAAM,IAAI,CAACuB,iCAAiC,CAAC,CAAC;IAChE,MAAMF,KAAK,GAAG,IAAI,CAACC,6BAA6B,CAA0B3B,QAAQ,EAAEC,IAAI,EAAEI,SAAS,CAAC;IACpG,OAAOqB,KAAK;EACd;EAEQC,6BAA6BA,CACnC3B,QAA4B,EAC5BC,IAAY,EACZI,SAAmB,EACJ;IACf;IACA,MAAMqB,KAAK,GAAGrB,SAAS,CAACwB,IAAI,CAAC,CAAC;MAAEpC,EAAE;MAAEC;IAAS,CAAC,KAAK;MACjD;MACA;MACA;MACA;MACA;MACA,MAAMoC,gBAAgB,GAAGrC,EAAE,CAACsC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACzC,IAAI/B,QAAQ,IAAIP,EAAE,KAAKO,QAAQ,IAAI8B,gBAAgB,KAAK9B,QAAQ,EAAE,OAAO,KAAK;MAC9E,OAAON,QAAQ,CAACO,IAAI,KAAKA,IAAI;IAC/B,CAAC,CAAC;IACF,OAAOyB,KAAK;EACd;;EAEA;AACF;AACA;AACA;EACE,MAAcM,0BAA0BA,CACtCC,SAAmB,EACuF;IAC1G,MAAMC,WAAW,GAAG,MAAMC,gBAAW,CAACC,MAAM,CAACC,uBAAY,EAAE,cAAc,CAAC;IAC1E,MAAMH,WAAW,CAACI,SAAS,CAAC,CAAC;IAC7B,MAAMC,qBAAqB,GAAG,IAAI,CAACzC,MAAM,CAAC0C,yBAAyB,CAAC,CAAC;IACrE,MAAMC,kBAAkB,GAAG,MAAM,IAAI,CAAC3C,MAAM,CAAC4C,OAAO,CAACR,WAAW,CAACS,IAAI,CAAC;IACtE,MAAMC,KAAK,GAAGH,kBAAkB,CAACrB,GAAG,CAAYyB,oBAAW,CAACpD,EAAE,CAAC;IAC/D,MAAMR,YAAY,GAAGwD,kBAAkB,CAACrB,GAAG,CAAmB0B,kCAAkB,CAACrD,EAAE,CAAC;IACpF,MAAMsD,GAAG,GAAGd,SAAS,CAACe,GAAG,CAAEvD,EAAE,IAAKwD,wBAAW,CAACC,UAAU,CAACzD,EAAE,CAAC,CAAC;IAC7D,MAAM0D,WAAW,GAAGJ,GAAG,CAACK,KAAK,CAAE3D,EAAE,IAAKA,EAAE,CAAC4D,UAAU,CAAC,CAAC,CAAC;IACtD,MAAMC,QAAQ,GAAGH,WAAW,CAAC,CAAC;IAC9B,MAAMP,KAAK,CAACW,MAAM,CAACR,GAAG,EAAE;MAAEO,QAAQ;MAAEE,MAAM,EAAE;IAAoC,CAAC,CAAC;IAClF,MAAMC,UAAU,GAAG,MAAMb,KAAK,CAACc,OAAO,CAACX,GAAG,EAAE,IAAI,CAAC;;IAEjD;IACA;IACA;IACA,MAAMY,eAAe,GAAG,MAAMf,KAAK,CAACgB,kBAAkB,CAACH,UAAU,EAAE;MAAEI,aAAa,EAAE;IAAe,CAAC,CAAC;IACrG,IAAI;MACF,MAAM5E,YAAY,CAAC6E,yBAAyB,CAACH,eAAe,EAAE,IAAI,CAAC;IACrE,CAAC,CAAC,OAAOI,GAAQ,EAAE;MACjB,IAAIA,GAAG,EAAEC,KAAK,EAAEC,IAAI,KAAK,kBAAkB,EAAE;QAC3C,MAAMC,oBAAoB,GAAG,MAAMtB,KAAK,CAACgB,kBAAkB,CAACH,UAAU,EAAE;UACtEU,YAAY,EAAE,KAAK;UACnBN,aAAa,EAAE;QACjB,CAAC,CAAC;QACF,MAAM5E,YAAY,CAAC6E,yBAAyB,CAACI,oBAAoB,EAAE,IAAI,CAAC;MAC1E,CAAC,MAAM;QACL,MAAMH,GAAG;MACX;IACF;IAEA,OAAO;MAAEN,UAAU;MAAEhB,kBAAkB;MAAEF;IAAsB,CAAC;EAClE;;EAEA;AACF;AACA;EACE,MAAc6B,sBAAsBA,CAClCpE,QAAgB,EAC4F;IAC5G,MAAM;MAAEyC,kBAAkB;MAAEgB,UAAU;MAAElB;IAAsB,CAAC,GAAG,MAAM,IAAI,CAACP,0BAA0B,CAAC,CAAChC,QAAQ,CAAC,CAAC;IACnH,MAAMqE,eAAe,GAAG5B,kBAAkB,CAACrB,GAAG,CAAgBkD,4BAAe,CAAC7E,EAAE,CAAC;IACjF,MAAM8E,gBAAgB,GAAG9B,kBAAkB,CAACrB,GAAG,CAAWoD,kBAAU,CAAC/E,EAAE,CAAC;IACxE,MAAMkB,MAAM,GAAG8C,UAAU,CAAC,CAAC,CAAC;IAC5B,MAAMgB,YAAY,GAAG9D,MAAM,CAAClB,EAAE,CAACiF,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC5E,MAAM,CAAC6E,0BAA0B,CAACpC,qBAAqB,CAAC;IAE7D,OAAO;MAAE8B,eAAe;MAAEI,YAAY;MAAEF,gBAAgB;MAAE5D;IAAO,CAAC;EACpE;;EAEA;AACF;AACA;AACA;EACE,MAAMiE,kCAAkCA,CACtC5E,QAAgB,EAChBC,IAAa,EAC2D;IACxE,MAAM;MAAEoE,eAAe;MAAEI,YAAY;MAAEF,gBAAgB;MAAE5D;IAAO,CAAC,GAAG,MAAM,IAAI,CAACyD,sBAAsB,CAACpE,QAAQ,CAAC;IAC/G,MAAM6E,UAAU,GAAG,MAAMR,eAAe,CAACS,iCAAiC,CAACzG,IAAI,CAC7EgG,eAAe,EACfpE,IAAI,EACJwE,YAAY,EACZF,gBACF,CAAC;IACD,OAAO;MAAEQ,iBAAiB,EAAEF,UAAU;MAAElE;IAAO,CAAC;EAClD;EAEA,MAAMqE,4BAA4BA,CAACC,aAAqB,EAAEhF,IAAY,EAAED,QAAiB,EAAE;IACzF,IAAI,CAACA,QAAQ,EACX,MAAM,KAAIkF,oBAAQ,EAChB,iGACF,CAAC;IACH,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACrF,MAAM,CAAC4C,OAAO,CAACuC,aAAa,CAAC;IACxD,IAAIlG,SAAoB;IACxB,IAAI;MACFA,SAAS,GAAGoG,OAAO,CAAC/D,GAAG,CAAYgE,4BAAe,CAAC3F,EAAE,CAAC;IACxD,CAAC,CAAC,MAAM;MACN,MAAM,IAAI4F,KAAK,CAAC,WAAWJ,aAAa,+DAA+D,CAAC;IAC1G;IACA,MAAMK,iBAAiB,GAAG,MAAMvG,SAAS,CAACwG,kBAAkB,CAACvF,QAAQ,CAAC;IACtE,MAAMjB,SAAS,CAACyG,WAAW,CAAC,CAACxF,QAAQ,CAAC,EAAE,IAAI,CAAC;IAC7C,MAAMyF,eAAe,GAAG,MAAM1G,SAAS,CAACqC,GAAG,CAACkE,iBAAiB,CAAC;IAC9D,MAAMI,YAAY,GAAGJ,iBAAiB,CAACZ,QAAQ,CAAC,CAAC;IACjD,MAAMiB,SAAS,GAAGR,OAAO,CAAC/D,GAAG,CAAgBkD,4BAAe,CAAC7E,EAAE,CAAC;IAChE,MAAMsF,iBAAiB,GAAG,MAAMY,SAAS,CAACb,iCAAiC,CAAC7E,IAAI,EAAEyF,YAAY,CAAC;IAC/F,OAAO;MAAEX,iBAAiB;MAAEpE,MAAM,EAAE8E;IAAgB,CAAC;EACvD;;EAEA;AACF;AACA;EACE,MAAMG,oBAAoBA,CACxB3F,IAAY,EACZD,QAAiB,EACsD;IACvE,MAAM6F,kBAAkB,GAAG,MAAM,IAAI,CAACf,iCAAiC,CAAC7E,IAAI,EAAED,QAAQ,CAAC;IACvF,IAAI6F,kBAAkB,EAAE;MACtB,OAAO;QAAEd,iBAAiB,EAAEc;MAAmB,CAAC;IAClD;IACA,IAAI,CAAC7F,QAAQ,EAAE;MACb,MAAM,KAAIkF,oBAAQ,EAChB,aAAajF,IAAI,sMACnB,CAAC;IACH;IAEA,MAAM;MAAE8E,iBAAiB;MAAEpE;IAAO,CAAC,GAAG,MAAM,IAAI,CAACiE,kCAAkC,CAAC5E,QAAQ,EAAEC,IAAI,CAAC;IACnG,IAAI8E,iBAAiB,EAAE;MACrB,OAAO;QAAEA,iBAAiB;QAAEpE;MAAO,CAAC;IACtC;IACA,MAAM,KAAIuE,oBAAQ,EAChB,aAAajF,IAAI,sMACnB,CAAC;EACH;EAEA,MAAM6E,iCAAiCA,CACrC7E,IAAa,EACbD,QAAiB,EACjBuE,gBAA2B,EACa;IACxC,IAAI/C,OAAO;IAEX,IAAIxB,QAAQ,EAAE;MACZwB,OAAO,GAAG,MAAM,IAAI,CAACsE,yBAAyB,CAAC9F,QAAQ,EAAEuE,gBAAgB,CAAC;IAC5E;IACA,MAAMlE,SAAS,GAAGmB,OAAO,IAAIA,OAAO,CAACjE,MAAM,GAAGiE,OAAO,GAAG,IAAI,CAACuE,iCAAiC,CAAC,CAAC;IAChG,MAAMrE,KAAK,GAAGrB,SAAS,CAACwB,IAAI,CAAC,CAAC;MAAEpC,EAAE;MAAEC,QAAQ,EAAEsG;IAAI,CAAC,KAAK;MACtD,IAAIhG,QAAQ,IAAIC,IAAI,EAAE,OAAOD,QAAQ,KAAKP,EAAE,IAAIQ,IAAI,KAAK+F,GAAG,CAAC/F,IAAI;MACjE,IAAID,QAAQ,EAAE,OAAOA,QAAQ,KAAKP,EAAE;MACpC,IAAIQ,IAAI,EAAE,OAAOA,IAAI,KAAK+F,GAAG,CAAC/F,IAAI;MAClC,MAAM,IAAIoF,KAAK,CAAC,uEAAuE,CAAC;IAC1F,CAAC,CAAC;IAEF,OAAO3D,KAAK,EAAEhC,QAAQ;EACxB;EAEA,MAAMuG,yBAAyBA,CAC7BC,cAAwB,EACxBC,YAAoB,EACpBC,OAA+B,EAC/BC,cAA+B,EACJ;IAC3B,IAAI,CAAC,IAAI,CAACtH,SAAS,EAAE,MAAM,KAAIuH,kCAAqB,EAAC,CAAC;IACtD,MAAM,IAAI,CAACd,WAAW,CAAC,CAAC;IACxB,MAAM;MAAEe,SAAS;MAAE5F;IAAO,CAAC,GAAGyF,OAAO;IAErC,MAAMI,8BAA8B,GAAGC,yBAAe,CAACD,8BAA8B;IAErF,MAAME,cAAc,GAAG,MAAM,IAAI,CAACnF,oBAAoB,CAAC4E,YAAY,EAAExF,MAAM,CAAC;IAE5E8F,yBAAe,CAACD,8BAA8B,GAAGA,8BAA8B;IAE/E,IAAI,CAACE,cAAc,EAAE,MAAM,KAAIxB,oBAAQ,EAAC,aAAaiB,YAAY,iBAAiB,CAAC;IAEnF,MAAMQ,YAAY,GAAGT,cAAc,CAAClD,GAAG,CAAE4D,aAAa,IACpD,IAAI,CAAC1H,kBAAkB,CAAC2H,iBAAiB,CAACD,aAAa,EAAEL,SAAS,EAAEH,OAAO,CAACxD,KAAK,CACnF,CAAC;IAED,MAAMkE,+BAA+B,GAAGH,YAAY,CAAC9E,IAAI,CAAEkF,WAAW,IAAKA,WAAW,CAAC9G,IAAI,KAAKkG,YAAY,CAAC;IAC7G,IAAIW,+BAA+B,EAAE;MACnC,MAAME,cAAc,GAAG,IAAAC,oBAAS,EAACd,YAAY,EAAE;QAAEe,UAAU,EAAE;MAAK,CAAC,CAAC;MACpE,MAAM,KAAIhC,oBAAQ,EAChB,oEAAoEiB,YAAY;AACxF,sFAAsFa,cAAc,YAAYA,cAAc,MACxH,CAAC;IACH;IAEA,MAAMG,KAAK,GAAG,MAAM,IAAI,CAACC,0BAA0B,CAACV,cAAc,CAAC;IAEnE,MAAMW,kBAAkB,GAAG,KAAIC,wCAAkB,EAC/C,IAAI,CAACvI,SAAS,EACd4H,YAAY,EACZP,OAAO,EACPM,cAAc,CAAChH,QAAQ,EACvB,IAAI,CAACV,IAAI,EACT,IAAI,CAACE,kBAAkB,EACvB,IAAI,CAACE,OAAO,EACZ,IAAI,CAACG,aAAa,EAClB,IAAI,CAACF,MAAM,EACX,IAAI,CAACR,qBAAqB,EAC1B6H,cAAc,CAACjH,EAAE,EACjB0H,KAAK,EACLd,cACF,CAAC;IACD,OAAOgB,kBAAkB,CAACE,QAAQ,CAACnB,OAAO,CAACoB,KAAK,CAAC;EACnD;EAEA,MAAcJ,0BAA0BA,CAACV,cAAuC,EAAoC;IAClH,MAAMe,iBAAiB,GAAGf,cAAc,CAAChH,QAAQ,CAACgI,GAAG;IACrD,IAAID,iBAAiB,EAAE;MACrB,MAAME,kBAAkB,GAAG1E,wBAAW,CAAC2E,aAAa,CAACH,iBAAiB,CAAC;MACvE,IAAI,CAACE,kBAAkB,EAAE;QACvB,MAAM,KAAIzC,oBAAQ,EAChB,8DAA8DwB,cAAc,CAAChH,QAAQ,CAACO,IAAI,YAAYwH,iBAAiB,EACzH,CAAC;MACH;MACA,MAAMI,UAAU,GAAG,MAAM,IAAI,CAAC9I,SAAS,CAAC+I,yCAAyC,CAACH,kBAAkB,CAAC;MACrG,OAAO1E,wBAAW,CAACC,UAAU,CAAC2E,UAAU,CAAC;IAC3C;IACA,IAAInB,cAAc,CAACqB,OAAO,EAAE;MAC1B,OAAO9E,wBAAW,CAACC,UAAU,CAACwD,cAAc,CAACjH,EAAE,CAAC;IAClD;IACA,OAAOuI,OAAO,CAACC,OAAO,CAACC,SAAS,CAAC;EACnC;EAEA,MAAMC,yBAAyBA,CAC7BtE,aAAqB,EACrBsC,YAAoB,EACpBC,OAA+D,EACrB;IAC1C,IAAI,IAAI,CAACrH,SAAS,EAAE;MAClB,MAAM,KAAImG,oBAAQ,EAAC,2EAA2E,CAAC;IACjG;IACA,MAAMD,aAAa,GAAGmB,OAAO,CAACgC,UAAU,GAAGC,OAAO,CAACC,GAAG,CAAC,CAAC,GAAG,IAAAL,eAAO,EAACpE,aAAa,CAAC;IACjF,IAAI,CAACuC,OAAO,CAACgC,UAAU,IAAIG,kBAAE,CAACC,UAAU,CAACvD,aAAa,CAAC,EAAE;MACvD,MAAM,KAAIwD,0CAAmB,EAACxD,aAAa,CAAC;IAC9C;IACA,MAAM;MAAEtE,MAAM,EAAEX,QAAQ;MAAE0I;IAAS,CAAC,GAAGtC,OAAO;IAC9C,MAAM;MAAErB,iBAAiB;MAAEpE;IAAO,CAAC,GAAG+H,QAAQ,GAC1C,MAAM,IAAI,CAAC1D,4BAA4B,CAAC0D,QAAQ,EAAEvC,YAAY,EAAEnG,QAAQ,CAAC,GACzE,MAAM,IAAI,CAAC4F,oBAAoB,CAACO,YAAY,EAAEnG,QAAQ,CAAC;IAE3D,IAAI,CAAC+E,iBAAiB,EAAE,MAAM,KAAIG,oBAAQ,EAAC,aAAaiB,YAAY,iBAAiB,CAAC;IACtF,MAAMwC,kBAAkB,GAAG,KAAIC,wCAAkB,EAC/C/E,aAAa,EACboB,aAAa,EACbmB,OAAO,EACPrB,iBAAiB,EACjB,IAAI,CAACjF,MAAM,EACXa,MACF,CAAC;IACD,MAAM,IAAI,CAACkI,oBAAoB,CAAClI,MAAM,CAAC;IACvC,MAAMgI,kBAAkB,CAACpB,QAAQ,CAAC,CAAC;IACnC,OAAO;MAAEtC,aAAa;MAAE6D,OAAO,EAAE/D,iBAAiB,CAAC+D;IAAQ,CAAC;EAC9D;EAEA,MAAcD,oBAAoBA,CAAClI,MAAkB,EAAE;IACrD,IAAI,CAACA,MAAM,EAAE;IACb,MAAMoI,eAAe,GAAG,MAAM,IAAI,CAACvJ,WAAW,CAACwJ,kBAAkB,CAACrI,MAAM,CAAC;IACzE,IAAIoI,eAAe,CAACE,WAAW,EAAE;MAC/B,MAAMC,aAAa,GAAGH,eAAe,CAACI,KAAK,GAAG,UAAUJ,eAAe,CAACI,KAAK,CAACzE,QAAQ,CAAC,CAAC,WAAW,GAAG,EAAE;MACxG,IAAI,CAACrF,MAAM,CAAC+J,cAAc,CAAC,gBAAgBzI,MAAM,EAAElB,EAAE,CAACiF,QAAQ,CAAC,CAAC,kBAAkBwE,aAAa,EAAE,CAAC;IACpG;EACF;EAEA,MAAcrI,4CAA4CA,CAACb,QAAiB,EAAsC;IAChH,MAAMqJ,YAAY,GAAG,MAAM,IAAI,CAACC,mCAAmC,CAAC,EAAE,EAAEtJ,QAAQ,CAAC;IACjF,IAAIqJ,YAAY,IAAIA,YAAY,CAAC9L,MAAM,EAAE;MACvC,IAAI,CAACyC,QAAQ,EAAE,OAAOqJ,YAAY;MAClC,MAAME,QAAQ,GAAGF,YAAY,CAACrM,MAAM,CAAE0C,QAAQ,IAAKA,QAAQ,CAACM,QAAQ,KAAKA,QAAQ,CAAC;MAClF,IAAIuJ,QAAQ,CAAChM,MAAM,EAAE,OAAOgM,QAAQ;IACtC;IAEA,MAAMC,SAAS,GAAG,IAAI,CAAC5H,iCAAiC,CAAC,CAAC;IAC1D,MAAM2H,QAAQ,GAAGvJ,QAAQ,GAAGwJ,SAAS,CAACxM,MAAM,CAAE0C,QAAQ,IAAKA,QAAQ,CAACD,EAAE,KAAKO,QAAQ,CAAC,GAAGwJ,SAAS;IAChG,OAAOD,QAAQ,CAACvG,GAAG,CAAEtD,QAAQ,IAAK,IAAI,CAAC+J,qBAAqB,CAAC/J,QAAQ,CAAC,CAAC;EACzE;EAEQkC,iCAAiCA,CAAA,EAAuD;IAC9F,MAAM8H,kBAAkB,GAAG,IAAI,CAAC/K,qBAAqB,CAACgL,OAAO,CAAC,CAAC;IAC/D,MAAMH,SAAS,GAAGE,kBAAkB,CAACE,OAAO,CAAC,CAAC,CAACnK,EAAE,EAAEoK,kBAAkB,CAAC,KAAK;MACzE,MAAMC,0BAA0B,GAAGzI,KAAK,CAACC,OAAO,CAACuI,kBAAkB,CAAC,GAAGA,kBAAkB,GAAGA,kBAAkB,CAAC,CAAC;MAChH,OAAOC,0BAA0B,CAAC9G,GAAG,CAAEtD,QAAQ,KAAM;QACnDD,EAAE;QACFC;MACF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAO8J,SAAS;EAClB;EAEA,MAAc1I,2CAA2CA,CAACd,QAAiB,EAAsC;IAC/G,IAAIqJ,YAAY;IAChB,IAAIrJ,QAAQ,EAAE;MACZqJ,YAAY,GAAG,MAAM,IAAI,CAACvD,yBAAyB,CAAC9F,QAAQ,CAAC;IAC/D;IAEA,MAAMK,SAAS,GAAGgJ,YAAY,IAAIA,YAAY,CAAC9L,MAAM,GAAG8L,YAAY,GAAG,IAAI,CAACtD,iCAAiC,CAAC,CAAC;IAC/G,OAAO1F,SAAS,CAAC2C,GAAG,CAAEtD,QAAQ,IAAK,IAAI,CAAC+J,qBAAqB,CAAC/J,QAAQ,CAAC,CAAC;EAC1E;EAEQqG,iCAAiCA,CAAA,EAAuD;IAC9F,MAAM2D,kBAAkB,GAAG,IAAI,CAAC9K,qBAAqB,CAAC+K,OAAO,CAAC,CAAC;IAC/D,OAAOD,kBAAkB,CAACE,OAAO,CAAC,CAAC,CAACnK,EAAE,EAAEsK,kBAAkB,CAAC,KAAK;MAC9D,OAAOA,kBAAkB,CAAC/G,GAAG,CAAEtD,QAAQ,KAAM;QAC3CD,EAAE;QACFC;MACF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACE,MAAMoG,yBAAyBA,CAACqB,KAAa,EAAE5C,gBAA2B,EAA2C;IACnH,MAAMvF,IAAI,GAAG,MAAM,IAAI,CAACgL,QAAQ,CAAC,CAAC7C,KAAK,CAAC,EAAE5C,gBAAgB,CAAC;IAC3D,MAAMwF,kBAAkB,GAAG/K,IAAI,CAAC4K,OAAO,CAAElC,GAAG,IAAK;MAC/C,IAAI,CAACA,GAAG,CAACA,GAAG,CAACuC,oBAAoB,EAAE,OAAO/B,SAAS;MACnD,MAAMgC,WAAW,GAAGxC,GAAG,CAACA,GAAG,CAACuC,oBAAoB,CAAC,CAAC;MAClD,OAAOC,WAAW,CAAClH,GAAG,CAAEmH,OAAO,IAAK;QAClC,MAAMpD,WAAW,GAAG9D,wBAAW,CAACC,UAAU,CAACwE,GAAG,CAACjI,EAAE,CAAC;QAClD,OAAO;UACLA,EAAE,EAAEsH,WAAW,CAACrC,QAAQ,CAAC,CAAC;UAC1BqD,OAAO,EAAEL,GAAG,CAACzH,IAAI;UACjBP,QAAQ,EAAEyK;QACZ,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAAC,iBAAO,EAACL,kBAAkB,CAAC;EACpC;;EAEA;AACF;AACA;EACE,MAAMT,mCAAmCA,CAACvG,GAAa,GAAG,EAAE,EAAE/C,QAAiB,EAAiC;IAC9G,MAAMqJ,YAAY,GAAG,MAAM,IAAI,CAAC5H,yBAAyB,CAACsB,GAAG,EAAE/C,QAAQ,CAAC;IACxE,MAAMK,SAA+B,GAAGgJ,YAAY,CAACrG,GAAG,CAAEqH,WAAW,IAAK;MACxE,MAAMtD,WAAW,GAAG9D,wBAAW,CAACC,UAAU,CAACmH,WAAW,CAAC5K,EAAE,CAAC;MAC1D,OAAApC,aAAA;QACE2C,QAAQ,EAAE+G,WAAW,CAACuD,sBAAsB,CAAC,CAAC;QAC9CC,WAAW,EAAEF,WAAW,CAACtC;MAAO,GAC7BsC,WAAW,CAAC3K,QAAQ;IAE3B,CAAC,CAAC;IAEF,OAAOW,SAAS;EAClB;EAEAmK,iBAAiBA,CAAA,EAAa;IAC5B,OAAO,IAAI,CAAC1L,MAAM,CAACE,IAAI,IAAI,EAAE;EAC/B;EAEA,MAAMyC,yBAAyBA,CAACsB,GAAa,GAAG,EAAE,EAAE/C,QAAiB,EAA2C;IAC9G,MAAMyK,UAAU,GAAG,IAAI,CAAC3L,MAAM,CAACE,IAAI,IAAI,EAAE;IACzC,IAAIuF,gBAAgB;IACpB,IAAIE,YAAY;IAChB,IAAIzE,QAAQ,IAAI,CAACyK,UAAU,CAACC,QAAQ,CAAC1K,QAAQ,CAAC,EAAE;MAC9C,MAAM2K,OAAO,GAAG,MAAM,IAAI,CAACvG,sBAAsB,CAACpE,QAAQ,CAAC;MAC3DuE,gBAAgB,GAAGoG,OAAO,CAACpG,gBAAgB;MAC3CE,YAAY,GAAGkG,OAAO,CAAClG,YAAY;IACrC;IACA,MAAMmG,MAAM,GAAG,IAAAC,cAAI,EAACJ,UAAU,EAAEK,MAAM,CAAC/H,GAAG,CAAC,CAAC+H,MAAM,CAAC,CAAC9K,QAAQ,EAAEyE,YAAY,CAAC,CAAC,CAACzH,MAAM,CAACiE,OAAO,CAAC,CAAC;IAC7F,MAAMjC,IAAI,GAAG,MAAM,IAAI,CAACgL,QAAQ,CAACY,MAAM,EAAErG,gBAAgB,CAAC;IAC1D,MAAMlE,SAAS,GAAGrB,IAAI,CAAC4K,OAAO,CAAElC,GAAG,IAAK;MACtC,IAAI,CAACA,GAAG,CAACA,GAAG,CAACqD,qBAAqB,EAAE,OAAO,EAAE;MAC7C,MAAMC,IAAI,GAAGtD,GAAG,CAACA,GAAG,CAACqD,qBAAqB,CAAC,CAAC,IAAI,EAAE;MAClD,MAAMhE,WAAW,GAAG9D,wBAAW,CAACC,UAAU,CAACwE,GAAG,CAACjI,EAAE,CAAC;MAClD,OAAOuL,IAAI,CAAChI,GAAG,CAAEtD,QAAQ,IAAK;QAC5B,OAAO;UACLD,EAAE,EAAEsH,WAAW,CAACrC,QAAQ,CAAC,CAAC;UAC1BqD,OAAO,EAAEL,GAAG,CAACzH,IAAI;UACjBP;QACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAOW,SAAS;EAClB;EAEA,MAAM2J,QAAQA,CAACjH,GAAa,GAAG,IAAI,CAACjE,MAAM,CAACE,IAAI,IAAI,EAAE,EAAEuF,gBAA2B,EAA4B;IAC5G;IACA;IACA;IACA,IAAI,CAACA,gBAAgB,EAAE;MACrB,MAAM0G,IAAI,GAAG,IAAI,CAAC9L,eAAe,CAAC+L,OAAO,CAAC,CAAC;MAC3C,IAAI,CAACD,IAAI,EAAE,OAAO,EAAE;MACpB,MAAMA,IAAI,CAACzF,WAAW,CAACzC,GAAG,CAAC;IAC7B;IAEA,MAAMoI,UAAU,GAAG5G,gBAAgB,IAAI,IAAI,CAACvF,IAAI;IAEhD,MAAMoM,aAAa,GAAGrI,GAAG,CAACC,GAAG,CAAEvD,EAAE,IAAK;MACpC,MAAMsH,WAAW,GAAG9D,wBAAW,CAACC,UAAU,CAACzD,EAAE,CAAC;MAC9C,OAAO0L,UAAU,CAACE,gBAAgB,CAACtE,WAAW,CAAC;IACjD,CAAC,CAAC;IAEF,OAAO,IAAAqD,iBAAO,EAACgB,aAAa,CAAC;EAC/B;EAEA,MAAM5F,WAAWA,CAAA,EAAG;IAClB,IAAI,IAAI,CAAC8F,YAAY,EAAE;IACvB,MAAM,IAAI,CAACvM,SAAS,CAACyG,WAAW,CAAC,IAAI,CAAC1G,MAAM,CAACyM,OAAO,CAAC;IACrD,IAAI,CAACD,YAAY,GAAG,IAAI;EAC1B;EAyBA,aAAaE,QAAQA,CACnB,CACEzM,SAAS,EACT0M,GAAG,EACHC,OAAO,EACP1M,IAAI,EACJC,YAAY,EACZC,kBAAkB,EAClBC,eAAe,EACfC,OAAO,EACPuM,UAAU,EACVrM,GAAG,EACHC,aAAa,EACbC,WAAW,CAcZ,EACDV,MAAuB,EACvB,CAACH,qBAAqB,EAAEC,qBAAqB,EAAEC,qBAAqB,CAInE,EACD;IACA,MAAMQ,MAAM,GAAGsM,UAAU,CAACC,YAAY,CAACtH,4BAAe,CAAC7E,EAAE,CAAC;IAC1D,MAAMkG,SAAS,GAAG,IAAIlH,aAAa,CACjCE,qBAAqB,EACrBC,qBAAqB,EACrBC,qBAAqB,EACrBC,MAAM,EACNC,SAAS,EACTC,IAAI,EACJC,YAAY,EACZC,kBAAkB,EAClBC,eAAe,EACfC,OAAO,EACPC,MAAM,EACNC,GAAG,EACHC,aAAa,EACbC,WACF,CAAC;IACD,MAAMqM,QAAQ,GAAG,CAAC,KAAIC,mBAAS,EAACnG,SAAS,CAAC,EAAE,KAAIoG,yBAAY,EAACpG,SAAS,CAAC,EAAE,KAAIqG,aAAM,EAACrG,SAAS,CAAC,CAAC;IAC/F8F,GAAG,CAACnL,QAAQ,CAAC,GAAGuL,QAAQ,CAAC;IACzBH,OAAO,CAACpL,QAAQ,CAAC,MAAM,IAAA2L,6BAAe,EAACtG,SAAS,CAAC,CAAC;IAClD1G,YAAY,CAACiN,eAAe,CAAC,CAAC,KAAIC,wBAAa,EAACxG,SAAS,CAAC,CAAC,CAAC;IAC5D3G,IAAI,CAACoN,eAAe,CAAC,KAAIC,8BAAgB,EAAC,CAAC,CAAC;IAE5C,IAAI1G,SAAS,EACXA,SAAS,CAACvF,yBAAyB,CAAC,MAAM,CACxCkM,wCAA0B,EAC1BC,kDAAoC,EACpCC,6BAAe,EACfC,uCAAyB,CAC1B,CAAC;IACJ9G,SAAS,CAACpF,yBAAyB,CAAC,CAACmM,8BAAqB,CAAC,CAAC;IAE5D,OAAO/G,SAAS;EAClB;AACF;AAACgH,OAAA,CAAAlO,aAAA,GAAAA,aAAA;AAAAhB,eAAA,CAlmBYgB,aAAa,WAsgBT,CACbmO,eAAI,CAACC,QAAQ,CAAsB,CAAC,EACpCD,eAAI,CAACC,QAAQ,CAAsB,CAAC,EACpCD,eAAI,CAACC,QAAQ,CAAsB,CAAC,CACrC;AAAApP,eAAA,CA1gBUgB,aAAa,kBA4gBF,CACpB2G,4BAAe,EACf0H,gBAAS,EACTC,wBAAa,EACbvI,kBAAU,EACV1B,kCAAkB,EAClBkK,8CAAwB,EACxBC,4BAAe,EACfC,wBAAa,EACbC,sBAAY,EACZC,gBAAS,EACTC,kDAA0B,EAC1BC,gCAAiB,CAClB;AAAA7P,eAAA,CAzhBUgB,aAAa,aA2hBP8O,kBAAW;AAyE9BjJ,4BAAe,CAACkJ,UAAU,CAAC/O,aAAa,CAAC","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_camelcase","_path","_graphql","_cli","_workspace","_envs","_legacy","_workspaceConfigFiles","_component","_legacy2","_scope","_harmony","_git","_bitError","_aspectLoader","_tracker","_newComponentHelper","_lodash","_logger","_deprecation","_generator","_create","_templates","_generator2","_componentGenerator","_workspaceGenerator","_new","_templates2","_basic","_starter","_generator3","_workspacePathExists","_legacy3","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GeneratorMain","constructor","componentTemplateSlot","workspaceTemplateSlot","onComponentCreateSlot","config","workspace","envs","aspectLoader","newComponentHelper","componentAspect","tracker","logger","git","wsConfigFiles","deprecation","id","template","shouldBeHidden","hidden","hideCoreTemplates","bitApi","isCoreAspect","aspectId","name","description","setBitApi","registerComponentTemplate","templates","register","registerWorkspaceTemplate","registerOnComponentCreate","fn","listTemplates","aspect","isRunningInsideWorkspace","getAllComponentTemplatesDescriptorsFlattened","getAllWorkspaceTemplatesDescriptorFlattened","listComponentTemplates","opts","Boolean","getComponentTemplateByAspect","result","get","Array","isArray","getComponentTemplate","fromEnv","listEnvComponentTemplates","found","findTemplateByAspectIdAndName","getAllComponentTemplatesFlattened","find","idWithoutVersion","split","loadAspectsFromGlobalScope","aspectIds","globalScope","LegacyScope","ensure","GLOBAL_SCOPE","ensureDir","legacyGlobalsSnapshot","takeLegacyGlobalsSnapshot","globalScopeHarmony","loadBit","path","scope","ScopeAspect","AspectLoaderAspect","ids","map","ComponentID","fromString","hasVersions","every","hasVersion","useCache","import","reason","components","getMany","resolvedAspects","getResolvedAspects","workspaceName","loadRequireableExtensions","err","error","code","resolvedAspectsAgain","skipIfExists","getGlobalGeneratorEnvs","remoteGenerator","GeneratorAspect","remoteEnvsAspect","EnvsAspect","fullAspectId","toString","restoreGlobalsFromSnapshot","findWorkspaceTemplateInGlobalScope","fromGlobal","searchRegisteredWorkspaceTemplate","workspaceTemplate","findTemplateInOtherWorkspace","workspacePath","BitError","harmony","WorkspaceAspect","Error","aspectComponentId","resolveComponentId","loadAspects","aspectComponent","aspectFullId","generator","getWorkspaceTemplate","registeredTemplate","listEnvWorkspaceTemplates","getAllWorkspaceTemplatesFlattened","tpl","getTemplateWithId","templateName","componentConfigLoadingRegistry","ComponentConfig","templateWithId","generateComponentTemplate","componentNames","options","installOptions","promptResults","OutsideWorkspaceError","namespace","componentIds","componentName","getNewComponentId","componentNameSameAsTemplateName","componentId","compNamePascal","camelCase","pascalCase","envId","getEnvIdFromTemplateWithId","componentGenerator","ComponentGenerator","generate","force","envIdFromTemplate","env","parsedFromTemplate","tryFromString","resolvedId","resolveEnvIdWithPotentialVersionForConfig","envName","Promise","resolve","undefined","generateWorkspaceTemplate","currentDir","process","cwd","fs","existsSync","WorkspacePathExists","loadFrom","workspaceGenerator","WorkspaceGenerator","warnAboutDeprecation","appName","deprecationInfo","getDeprecationInfo","isDeprecate","newStarterMsg","newId","consoleWarning","envTemplates","listEnvComponentTemplateDescriptors","filtered","flattened","getTemplateDescriptor","templatesByAspects","toArray","flatMap","componentTemplates","resolvedComponentTemplates","workspaceTemplates","loadEnvs","getGeneratorStarters","envStarters","starter","compact","envTemplate","toStringWithoutVersion","titlePrefix","getConfiguredEnvs","configEnvs","includes","globals","allIds","uniq","concat","getGeneratorTemplates","tpls","host","getHost","envsAspect","potentialEnvs","getEnvDefinition","aspectLoaded","aspects","provider","cli","graphql","loggerMain","createLogger","commands","CreateCmd","TemplatesCmd","NewCmd","generatorSchema","registerPlugins","StarterPlugin","registerService","GeneratorService","componentGeneratorTemplate","componentGeneratorTemplateStandalone","starterTemplate","starterTemplateStandalone","BasicWorkspaceStarter","exports","Slot","withType","CLIAspect","GraphqlAspect","NewComponentHelperAspect","ComponentAspect","TrackerAspect","LoggerAspect","GitAspect","WorkspaceConfigFilesAspect","DeprecationAspect","MainRuntime","addRuntime"],"sources":["generator.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport camelCase from 'camelcase';\nimport { resolve } from 'path';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { WorkspaceAspect, OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { EnvDefinition, EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { ComponentConfig } from '@teambit/legacy.consumer-config';\nimport { WorkspaceConfigFilesAspect, WorkspaceConfigFilesMain } from '@teambit/workspace-config-files';\nimport { ComponentAspect, ComponentID } from '@teambit/component';\nimport type { ComponentMain, Component } from '@teambit/component';\nimport { Scope as LegacyScope } from '@teambit/legacy.scope';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport { Harmony, Slot, SlotRegistry } from '@teambit/harmony';\nimport { GitAspect, GitMain } from '@teambit/git';\nimport { BitError } from '@teambit/bit-error';\nimport { AspectLoaderAspect, AspectLoaderMain } from '@teambit/aspect-loader';\nimport { TrackerAspect, TrackerMain } from '@teambit/tracker';\nimport { NewComponentHelperAspect, NewComponentHelperMain } from '@teambit/new-component-helper';\nimport { compact, uniq } from 'lodash';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { DeprecationAspect, DeprecationMain } from '@teambit/deprecation';\nimport { ComponentTemplate, GetComponentTemplates, PromptResults } from './component-template';\nimport { GeneratorAspect } from './generator.aspect';\nimport { CreateCmd, CreateOptions } from './create.cmd';\nimport { TemplatesCmd } from './templates.cmd';\nimport { generatorSchema } from './generator.graphql';\nimport { ComponentGenerator, GenerateResult, InstallOptions, OnComponentCreateFn } from './component-generator';\nimport { WorkspaceGenerator } from './workspace-generator';\nimport { WorkspaceTemplate } from './workspace-template';\nimport { NewCmd, NewOptions } from './new.cmd';\nimport {\n componentGeneratorTemplate,\n componentGeneratorTemplateStandalone,\n starterTemplate,\n starterTemplateStandalone,\n} from './templates';\nimport { BasicWorkspaceStarter } from './templates/basic';\nimport { StarterPlugin } from './starter.plugin';\nimport { GeneratorService } from './generator.service';\nimport { WorkspacePathExists } from './exceptions/workspace-path-exists';\nimport { GLOBAL_SCOPE } from '@teambit/legacy.constants';\n\nexport type ComponentTemplateSlot = SlotRegistry<ComponentTemplate[] | GetComponentTemplates>;\nexport type WorkspaceTemplateSlot = SlotRegistry<WorkspaceTemplate[]>;\nexport type OnComponentCreateSlot = SlotRegistry<OnComponentCreateFn>;\n\nexport type TemplateDescriptor = {\n aspectId: string;\n titlePrefix?: string;\n name: string;\n description?: string;\n hidden?: boolean;\n};\n\ntype TemplateWithId = { id: string; envName?: string };\ntype WorkspaceTemplateWithId = TemplateWithId & { template: WorkspaceTemplate };\ntype ComponentTemplateWithId = TemplateWithId & { template: ComponentTemplate };\ntype AnyTemplateWithId = TemplateWithId & { template: ComponentTemplate | WorkspaceTemplate };\n\ntype LegacyGlobal = { classInstance: any; methodName: string; value: any; empty: any };\nexport type BitApi = {\n isCoreAspect: (id: string) => boolean;\n loadBit: (path?: string) => Promise<Harmony>;\n restoreGlobalsFromSnapshot: (globals: LegacyGlobal[]) => void;\n takeLegacyGlobalsSnapshot: () => LegacyGlobal[];\n};\n\nexport type GenerateWorkspaceTemplateResult = { workspacePath: string; appName?: string };\n\nexport type GeneratorConfig = {\n /**\n * array of aspects to include in the list of templates.\n */\n aspects: string[];\n\n /**\n * by default core templates are shown.\n * use this to hide them unless `--show-all` flag of `bit templates` was used\n */\n hideCoreTemplates: boolean;\n\n /**\n * default envs.\n */\n envs?: string[];\n};\n\nexport class GeneratorMain {\n private aspectLoaded = false;\n private bitApi: BitApi;\n constructor(\n private componentTemplateSlot: ComponentTemplateSlot,\n private workspaceTemplateSlot: WorkspaceTemplateSlot,\n private onComponentCreateSlot: OnComponentCreateSlot,\n private config: GeneratorConfig,\n private workspace: Workspace,\n private envs: EnvsMain,\n private aspectLoader: AspectLoaderMain,\n private newComponentHelper: NewComponentHelperMain,\n private componentAspect: ComponentMain,\n private tracker: TrackerMain,\n private logger: Logger,\n private git: GitMain,\n private wsConfigFiles: WorkspaceConfigFilesMain,\n private deprecation: DeprecationMain\n ) {}\n\n setBitApi(bitApi: BitApi) {\n this.bitApi = bitApi;\n }\n\n /**\n * register a new component template.\n * @param templates array of component templates or a function that returns an array of component templates.\n * prefer to use the function to improve performance by loading the templates only when needed.\n */\n registerComponentTemplate(templates: ComponentTemplate[] | GetComponentTemplates) {\n this.componentTemplateSlot.register(templates);\n return this;\n }\n\n /**\n * register a new workspace starter.\n */\n registerWorkspaceTemplate(templates: WorkspaceTemplate[]) {\n this.workspaceTemplateSlot.register(templates);\n return this;\n }\n\n registerOnComponentCreate(fn: OnComponentCreateFn) {\n this.onComponentCreateSlot.register(fn);\n return this;\n }\n\n /**\n * list all component templates registered in the workspace or workspace templates in case the\n * workspace is not available\n */\n async listTemplates({ aspect }: { aspect?: string } = {}): Promise<TemplateDescriptor[]> {\n if (this.isRunningInsideWorkspace()) {\n return this.getAllComponentTemplatesDescriptorsFlattened(aspect);\n }\n return this.getAllWorkspaceTemplatesDescriptorFlattened(aspect);\n }\n\n private getTemplateDescriptor = ({ id, template }: AnyTemplateWithId): TemplateDescriptor => {\n const shouldBeHidden = () => {\n if (template.hidden) return true;\n if (this.config.hideCoreTemplates && this.bitApi.isCoreAspect(id)) return true;\n return false;\n };\n return {\n aspectId: id,\n name: template.name,\n description: template.description,\n hidden: shouldBeHidden(),\n };\n };\n\n /**\n * @deprecated use this.listTemplates()\n */\n async listComponentTemplates(opts: { aspect?: string }): Promise<TemplateDescriptor[]> {\n return this.listTemplates(opts);\n }\n\n isRunningInsideWorkspace(): boolean {\n return Boolean(this.workspace);\n }\n\n /**\n * get all component templates registered by a specific aspect ID.\n */\n getComponentTemplateByAspect(aspectId: string): ComponentTemplate[] {\n const result = this.componentTemplateSlot.get(aspectId);\n if (!result) return [];\n if (Array.isArray(result)) return result;\n return result();\n }\n\n /**\n * returns a specific component template.\n */\n async getComponentTemplate(name: string, aspectId?: string): Promise<ComponentTemplateWithId | undefined> {\n const fromEnv = await this.listEnvComponentTemplates([], aspectId);\n if (fromEnv && fromEnv.length) {\n const found = this.findTemplateByAspectIdAndName<ComponentTemplateWithId>(aspectId, name, fromEnv);\n if (found) return found;\n }\n // fallback to aspect id not from env if provided\n const templates = await this.getAllComponentTemplatesFlattened();\n const found = this.findTemplateByAspectIdAndName<ComponentTemplateWithId>(aspectId, name, templates);\n return found;\n }\n\n private findTemplateByAspectIdAndName<T>(\n aspectId: string | undefined,\n name: string,\n templates: Array<T>\n ): T | undefined {\n // @ts-ignore (should set T to be extends ComponentTemplateWithId or WorkspaceTemplateWithId)\n const found = templates.find(({ id, template }) => {\n // When doing something like:\n // bit create react-env my-env --aspect teambit.react/react-env\n // we will get the aspectId without version\n // but the env might be loaded from the global scope then it will be with a version\n // so it won't found if we don't look for it like this\n const idWithoutVersion = id.split('@')[0];\n if (aspectId && id !== aspectId && idWithoutVersion !== aspectId) return false;\n return template.name === name;\n });\n return found;\n }\n\n /**\n * get or create a global scope, import the non-core aspects, load bit from that scope, create\n * capsules for the aspects and load them from the capsules.\n */\n private async loadAspectsFromGlobalScope(\n aspectIds: string[]\n ): Promise<{ components: Component[]; globalScopeHarmony: Harmony; legacyGlobalsSnapshot: LegacyGlobal[] }> {\n const globalScope = await LegacyScope.ensure(GLOBAL_SCOPE, 'global-scope');\n await globalScope.ensureDir();\n const legacyGlobalsSnapshot = this.bitApi.takeLegacyGlobalsSnapshot();\n const globalScopeHarmony = await this.bitApi.loadBit(globalScope.path);\n const scope = globalScopeHarmony.get<ScopeMain>(ScopeAspect.id);\n const aspectLoader = globalScopeHarmony.get<AspectLoaderMain>(AspectLoaderAspect.id);\n const ids = aspectIds.map((id) => ComponentID.fromString(id));\n const hasVersions = ids.every((id) => id.hasVersion());\n const useCache = hasVersions; // if all components has versions, try to use the cached aspects\n await scope.import(ids, { useCache, reason: 'to load aspects from global scope' });\n const components = await scope.getMany(ids, true);\n\n // don't use `await scope.loadAspectsFromCapsules(components, true);`\n // it won't work for globalScope because `this !== scope.aspectLoader` (this instance\n // is not the same as the aspectLoader instance Scope has)\n const resolvedAspects = await scope.getResolvedAspects(components, { workspaceName: 'global-scope' });\n try {\n await aspectLoader.loadRequireableExtensions(resolvedAspects, true);\n } catch (err: any) {\n if (err?.error?.code === 'MODULE_NOT_FOUND') {\n const resolvedAspectsAgain = await scope.getResolvedAspects(components, {\n skipIfExists: false,\n workspaceName: 'global-scope',\n });\n await aspectLoader.loadRequireableExtensions(resolvedAspectsAgain, true);\n } else {\n throw err;\n }\n }\n\n return { components, globalScopeHarmony, legacyGlobalsSnapshot };\n }\n\n /**\n * Get the generator aspect and the envs aspect from an harmony instance of the global scope\n */\n private async getGlobalGeneratorEnvs(\n aspectId: string\n ): Promise<{ remoteGenerator: GeneratorMain; fullAspectId: string; remoteEnvsAspect: EnvsMain; aspect: any }> {\n const { globalScopeHarmony, components, legacyGlobalsSnapshot } = await this.loadAspectsFromGlobalScope([aspectId]);\n const remoteGenerator = globalScopeHarmony.get<GeneratorMain>(GeneratorAspect.id);\n const remoteEnvsAspect = globalScopeHarmony.get<EnvsMain>(EnvsAspect.id);\n const aspect = components[0];\n const fullAspectId = aspect.id.toString();\n this.bitApi.restoreGlobalsFromSnapshot(legacyGlobalsSnapshot);\n\n return { remoteGenerator, fullAspectId, remoteEnvsAspect, aspect };\n }\n\n /**\n * in the case the aspect-id is given and this aspect doesn't exist locally, import it to the\n * global scope and load it from the capsule\n */\n async findWorkspaceTemplateInGlobalScope(\n aspectId: string,\n name?: string\n ): Promise<{ workspaceTemplate?: WorkspaceTemplate; aspect?: Component }> {\n const { remoteGenerator, fullAspectId, remoteEnvsAspect, aspect } = await this.getGlobalGeneratorEnvs(aspectId);\n const fromGlobal = await remoteGenerator.searchRegisteredWorkspaceTemplate.call(\n remoteGenerator,\n name,\n fullAspectId,\n remoteEnvsAspect\n );\n return { workspaceTemplate: fromGlobal, aspect };\n }\n\n async findTemplateInOtherWorkspace(workspacePath: string, name: string, aspectId?: string) {\n if (!aspectId)\n throw new BitError(\n `to load a template from a different workspace, please provide the aspect-id using --aspect flag`\n );\n const harmony = await this.bitApi.loadBit(workspacePath);\n let workspace: Workspace;\n try {\n workspace = harmony.get<Workspace>(WorkspaceAspect.id);\n } catch {\n throw new Error(`fatal: \"${workspacePath}\" is not a valid Bit workspace, make sure the path is correct`);\n }\n const aspectComponentId = await workspace.resolveComponentId(aspectId);\n await workspace.loadAspects([aspectId], true);\n const aspectComponent = await workspace.get(aspectComponentId);\n const aspectFullId = aspectComponentId.toString();\n const generator = harmony.get<GeneratorMain>(GeneratorAspect.id);\n const workspaceTemplate = await generator.searchRegisteredWorkspaceTemplate(name, aspectFullId);\n return { workspaceTemplate, aspect: aspectComponent };\n }\n\n /**\n * returns a specific workspace template.\n */\n async getWorkspaceTemplate(\n name: string,\n aspectId?: string\n ): Promise<{ workspaceTemplate: WorkspaceTemplate; aspect?: Component }> {\n const registeredTemplate = await this.searchRegisteredWorkspaceTemplate(name, aspectId);\n if (registeredTemplate) {\n return { workspaceTemplate: registeredTemplate };\n }\n if (!aspectId) {\n throw new BitError(\n `template \"${name}\" was not found, please use --aspect flag to load from an env i.e --aspect teambit.react/react-env\\n Learn more about component templates here: https://bit.dev/reference/generator/create-generator`\n );\n }\n\n const { workspaceTemplate, aspect } = await this.findWorkspaceTemplateInGlobalScope(aspectId, name);\n if (workspaceTemplate) {\n return { workspaceTemplate, aspect };\n }\n throw new BitError(\n `template \"${name}\" was not found, please use --aspect flag to load from an env i.e --aspect teambit.react/react-env\\n Learn more about component templates here: https://bit.dev/reference/generator/create-generator`\n );\n }\n\n async searchRegisteredWorkspaceTemplate(\n name?: string,\n aspectId?: string,\n remoteEnvsAspect?: EnvsMain\n ): Promise<WorkspaceTemplate | undefined> {\n let fromEnv;\n\n if (aspectId) {\n fromEnv = await this.listEnvWorkspaceTemplates(aspectId, remoteEnvsAspect);\n }\n const templates = fromEnv && fromEnv.length ? fromEnv : this.getAllWorkspaceTemplatesFlattened();\n const found = templates.find(({ id, template: tpl }) => {\n if (aspectId && name) return aspectId === id && name === tpl.name;\n if (aspectId) return aspectId === id;\n if (name) return name === tpl.name;\n throw new Error(`searchRegisteredWorkspaceTemplate expects to get \"name\" or \"aspectId\"`);\n });\n\n return found?.template;\n }\n\n async getTemplateWithId(templateName: string, aspect?: string): Promise<ComponentTemplateWithId> {\n const componentConfigLoadingRegistry = ComponentConfig.componentConfigLoadingRegistry;\n\n const templateWithId = await this.getComponentTemplate(templateName, aspect);\n\n ComponentConfig.componentConfigLoadingRegistry = componentConfigLoadingRegistry;\n\n if (!templateWithId) throw new BitError(`template \"${templateName}\" was not found`);\n return templateWithId;\n }\n\n async generateComponentTemplate(\n componentNames: string[],\n templateName: string,\n options: Partial<CreateOptions>,\n installOptions?: InstallOptions,\n promptResults?: PromptResults\n ): Promise<GenerateResult[]> {\n if (!this.workspace) throw new OutsideWorkspaceError();\n await this.loadAspects();\n const { namespace, aspect } = options;\n\n const templateWithId = await this.getTemplateWithId(templateName, aspect);\n\n const componentIds = componentNames.map((componentName) =>\n this.newComponentHelper.getNewComponentId(componentName, namespace, options.scope)\n );\n\n const componentNameSameAsTemplateName = componentIds.find((componentId) => componentId.name === templateName);\n if (componentNameSameAsTemplateName) {\n const compNamePascal = camelCase(templateName, { pascalCase: true });\n throw new BitError(\n `unable to create a component with the same name as the template \"${templateName}\", please use a different name.\nthe reason is that after refactoring, the code will have this invalid class: \"class ${compNamePascal} extends ${compNamePascal} {}\"`\n );\n }\n\n const envId = await this.getEnvIdFromTemplateWithId(templateWithId);\n\n const componentGenerator = new ComponentGenerator(\n this.workspace,\n componentIds,\n options,\n templateWithId.template,\n this.envs,\n this.newComponentHelper,\n this.tracker,\n this.wsConfigFiles,\n this.logger,\n this.onComponentCreateSlot,\n templateWithId.id,\n envId,\n installOptions,\n promptResults\n );\n return componentGenerator.generate(options.force);\n }\n\n private async getEnvIdFromTemplateWithId(templateWithId: ComponentTemplateWithId): Promise<ComponentID | undefined> {\n const envIdFromTemplate = templateWithId.template.env;\n if (envIdFromTemplate) {\n const parsedFromTemplate = ComponentID.tryFromString(envIdFromTemplate);\n if (!parsedFromTemplate) {\n throw new BitError(\n `Error: unable to parse envId from template. template name: ${templateWithId.template.name}, envId: ${envIdFromTemplate}`\n );\n }\n const resolvedId = await this.workspace.resolveEnvIdWithPotentialVersionForConfig(parsedFromTemplate);\n return ComponentID.fromString(resolvedId);\n }\n if (templateWithId.envName) {\n return ComponentID.fromString(templateWithId.id);\n }\n return Promise.resolve(undefined);\n }\n\n async generateWorkspaceTemplate(\n workspaceName: string,\n templateName: string,\n options: NewOptions & { aspect?: string; currentDir?: boolean }\n ): Promise<GenerateWorkspaceTemplateResult> {\n if (this.workspace) {\n throw new BitError('Error: unable to generate a new workspace inside of an existing workspace');\n }\n const workspacePath = options.currentDir ? process.cwd() : resolve(workspaceName);\n if (!options.currentDir && fs.existsSync(workspacePath)) {\n throw new WorkspacePathExists(workspacePath);\n }\n const { aspect: aspectId, loadFrom } = options;\n const { workspaceTemplate, aspect } = loadFrom\n ? await this.findTemplateInOtherWorkspace(loadFrom, templateName, aspectId)\n : await this.getWorkspaceTemplate(templateName, aspectId);\n\n if (!workspaceTemplate) throw new BitError(`template \"${templateName}\" was not found`);\n const workspaceGenerator = new WorkspaceGenerator(\n workspaceName,\n workspacePath,\n options,\n workspaceTemplate,\n this.bitApi,\n aspect\n );\n await this.warnAboutDeprecation(aspect);\n await workspaceGenerator.generate();\n return { workspacePath, appName: workspaceTemplate.appName };\n }\n\n private async warnAboutDeprecation(aspect?: Component) {\n if (!aspect) return;\n const deprecationInfo = await this.deprecation.getDeprecationInfo(aspect);\n if (deprecationInfo.isDeprecate) {\n const newStarterMsg = deprecationInfo.newId ? `, use \"${deprecationInfo.newId.toString()}\" instead` : '';\n this.logger.consoleWarning(`the starter \"${aspect?.id.toString()}\" is deprecated${newStarterMsg}`);\n }\n }\n\n private async getAllComponentTemplatesDescriptorsFlattened(aspectId?: string): Promise<Array<TemplateDescriptor>> {\n const envTemplates = await this.listEnvComponentTemplateDescriptors([], aspectId);\n if (envTemplates && envTemplates.length) {\n if (!aspectId) return envTemplates;\n const filtered = envTemplates.filter((template) => template.aspectId === aspectId);\n if (filtered.length) return filtered;\n }\n\n const flattened = this.getAllComponentTemplatesFlattened();\n const filtered = aspectId ? flattened.filter((template) => template.id === aspectId) : flattened;\n return filtered.map((template) => this.getTemplateDescriptor(template));\n }\n\n private getAllComponentTemplatesFlattened(): Array<{ id: string; template: ComponentTemplate }> {\n const templatesByAspects = this.componentTemplateSlot.toArray();\n const flattened = templatesByAspects.flatMap(([id, componentTemplates]) => {\n const resolvedComponentTemplates = Array.isArray(componentTemplates) ? componentTemplates : componentTemplates();\n return resolvedComponentTemplates.map((template) => ({\n id,\n template,\n }));\n });\n return flattened;\n }\n\n private async getAllWorkspaceTemplatesDescriptorFlattened(aspectId?: string): Promise<Array<TemplateDescriptor>> {\n let envTemplates;\n if (aspectId) {\n envTemplates = await this.listEnvWorkspaceTemplates(aspectId);\n }\n\n const templates = envTemplates && envTemplates.length ? envTemplates : this.getAllWorkspaceTemplatesFlattened();\n return templates.map((template) => this.getTemplateDescriptor(template));\n }\n\n private getAllWorkspaceTemplatesFlattened(): Array<{ id: string; template: WorkspaceTemplate }> {\n const templatesByAspects = this.workspaceTemplateSlot.toArray();\n return templatesByAspects.flatMap(([id, workspaceTemplates]) => {\n return workspaceTemplates.map((template) => ({\n id,\n template,\n }));\n });\n }\n\n /**\n * list all starter templates registered by an env.\n */\n async listEnvWorkspaceTemplates(envId: string, remoteEnvsAspect?: EnvsMain): Promise<Array<WorkspaceTemplateWithId>> {\n const envs = await this.loadEnvs([envId], remoteEnvsAspect);\n const workspaceTemplates = envs.flatMap((env) => {\n if (!env.env.getGeneratorStarters) return undefined;\n const envStarters = env.env.getGeneratorStarters();\n return envStarters.map((starter) => {\n const componentId = ComponentID.fromString(env.id);\n return {\n id: componentId.toString(),\n envName: env.name,\n template: starter,\n };\n });\n });\n\n return compact(workspaceTemplates);\n }\n\n /**\n * list all component templates registered by an env.\n */\n async listEnvComponentTemplateDescriptors(ids: string[] = [], aspectId?: string): Promise<TemplateDescriptor[]> {\n const envTemplates = await this.listEnvComponentTemplates(ids, aspectId);\n const templates: TemplateDescriptor[] = envTemplates.map((envTemplate) => {\n const componentId = ComponentID.fromString(envTemplate.id);\n return {\n aspectId: componentId.toStringWithoutVersion(),\n titlePrefix: envTemplate.envName,\n ...envTemplate.template,\n };\n });\n\n return templates;\n }\n\n getConfiguredEnvs(): string[] {\n return this.config.envs ?? [];\n }\n\n async listEnvComponentTemplates(ids: string[] = [], aspectId?: string): Promise<Array<ComponentTemplateWithId>> {\n const configEnvs = this.config.envs || [];\n let remoteEnvsAspect;\n let fullAspectId;\n if (aspectId && !configEnvs.includes(aspectId)) {\n const globals = await this.getGlobalGeneratorEnvs(aspectId);\n remoteEnvsAspect = globals.remoteEnvsAspect;\n fullAspectId = globals.fullAspectId;\n }\n const allIds = uniq(configEnvs?.concat(ids).concat([aspectId, fullAspectId]).filter(Boolean));\n const envs = await this.loadEnvs(allIds, remoteEnvsAspect);\n const templates = envs.flatMap((env) => {\n if (!env.env.getGeneratorTemplates) return [];\n const tpls = env.env.getGeneratorTemplates() || [];\n const componentId = ComponentID.fromString(env.id);\n return tpls.map((template) => {\n return {\n id: componentId.toString(),\n envName: env.name,\n template,\n };\n });\n });\n\n return templates;\n }\n\n async loadEnvs(ids: string[] = this.config.envs || [], remoteEnvsAspect?: EnvsMain): Promise<EnvDefinition[]> {\n // In case we have remoteEnvsAspect it means that we are running from the global scope\n // in that case the aspect / env were already loaded before to the global scope harmony instance\n // so no reason to load it here\n if (!remoteEnvsAspect) {\n const host = this.componentAspect.getHost();\n if (!host) return [];\n await host.loadAspects(ids);\n }\n\n const envsAspect = remoteEnvsAspect || this.envs;\n\n const potentialEnvs = ids.map((id) => {\n const componentId = ComponentID.fromString(id);\n return envsAspect.getEnvDefinition(componentId);\n });\n\n return compact(potentialEnvs);\n }\n\n async loadAspects() {\n if (this.aspectLoaded) return;\n await this.workspace.loadAspects(this.config.aspects);\n this.aspectLoaded = true;\n }\n\n static slots = [\n Slot.withType<ComponentTemplate[]>(),\n Slot.withType<WorkspaceTemplate[]>(),\n Slot.withType<OnComponentCreateFn>(),\n ];\n\n static dependencies = [\n WorkspaceAspect,\n CLIAspect,\n GraphqlAspect,\n EnvsAspect,\n AspectLoaderAspect,\n NewComponentHelperAspect,\n ComponentAspect,\n TrackerAspect,\n LoggerAspect,\n GitAspect,\n WorkspaceConfigFilesAspect,\n DeprecationAspect,\n ];\n\n static runtime = MainRuntime;\n\n static async provider(\n [\n workspace,\n cli,\n graphql,\n envs,\n aspectLoader,\n newComponentHelper,\n componentAspect,\n tracker,\n loggerMain,\n git,\n wsConfigFiles,\n deprecation,\n ]: [\n Workspace,\n CLIMain,\n GraphqlMain,\n EnvsMain,\n AspectLoaderMain,\n NewComponentHelperMain,\n ComponentMain,\n TrackerMain,\n LoggerMain,\n GitMain,\n WorkspaceConfigFilesMain,\n DeprecationMain,\n ],\n config: GeneratorConfig,\n [componentTemplateSlot, workspaceTemplateSlot, onComponentCreateSlot]: [\n ComponentTemplateSlot,\n WorkspaceTemplateSlot,\n OnComponentCreateSlot,\n ]\n ) {\n const logger = loggerMain.createLogger(GeneratorAspect.id);\n const generator = new GeneratorMain(\n componentTemplateSlot,\n workspaceTemplateSlot,\n onComponentCreateSlot,\n config,\n workspace,\n envs,\n aspectLoader,\n newComponentHelper,\n componentAspect,\n tracker,\n logger,\n git,\n wsConfigFiles,\n deprecation\n );\n const commands = [new CreateCmd(generator), new TemplatesCmd(generator), new NewCmd(generator)];\n cli.register(...commands);\n graphql.register(() => generatorSchema(generator));\n aspectLoader.registerPlugins([new StarterPlugin(generator)]);\n envs.registerService(new GeneratorService());\n\n if (generator)\n generator.registerComponentTemplate(() => [\n componentGeneratorTemplate,\n componentGeneratorTemplateStandalone,\n starterTemplate,\n starterTemplateStandalone,\n ]);\n generator.registerWorkspaceTemplate([BasicWorkspaceStarter]);\n\n return generator;\n }\n}\n\nGeneratorAspect.addRuntime(GeneratorMain);\n"],"mappings":";;;;;;AAAA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,WAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,MAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,KAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,SAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,QAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,KAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,IAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,WAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,UAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,MAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,KAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,QAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,OAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,sBAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,qBAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,WAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,UAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAY,SAAA;EAAA,MAAAZ,IAAA,GAAAE,OAAA;EAAAU,QAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,OAAA;EAAA,MAAAb,IAAA,GAAAE,OAAA;EAAAW,MAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,SAAA;EAAA,MAAAd,IAAA,GAAAE,OAAA;EAAAY,QAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAe,KAAA;EAAA,MAAAf,IAAA,GAAAE,OAAA;EAAAa,IAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAgB,UAAA;EAAA,MAAAhB,IAAA,GAAAE,OAAA;EAAAc,SAAA,YAAAA,CAAA;IAAA,OAAAhB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiB,cAAA;EAAA,MAAAjB,IAAA,GAAAE,OAAA;EAAAe,aAAA,YAAAA,CAAA;IAAA,OAAAjB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAkB,SAAA;EAAA,MAAAlB,IAAA,GAAAE,OAAA;EAAAgB,QAAA,YAAAA,CAAA;IAAA,OAAAlB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAmB,oBAAA;EAAA,MAAAnB,IAAA,GAAAE,OAAA;EAAAiB,mBAAA,YAAAA,CAAA;IAAA,OAAAnB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAoB,QAAA;EAAA,MAAApB,IAAA,GAAAE,OAAA;EAAAkB,OAAA,YAAAA,CAAA;IAAA,OAAApB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAqB,QAAA;EAAA,MAAArB,IAAA,GAAAE,OAAA;EAAAmB,OAAA,YAAAA,CAAA;IAAA,OAAArB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAsB,aAAA;EAAA,MAAAtB,IAAA,GAAAE,OAAA;EAAAoB,YAAA,YAAAA,CAAA;IAAA,OAAAtB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAuB,WAAA;EAAA,MAAAvB,IAAA,GAAAE,OAAA;EAAAqB,UAAA,YAAAA,CAAA;IAAA,OAAAvB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAwB,QAAA;EAAA,MAAAxB,IAAA,GAAAE,OAAA;EAAAsB,OAAA,YAAAA,CAAA;IAAA,OAAAxB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAyB,WAAA;EAAA,MAAAzB,IAAA,GAAAE,OAAA;EAAAuB,UAAA,YAAAA,CAAA;IAAA,OAAAzB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA0B,YAAA;EAAA,MAAA1B,IAAA,GAAAE,OAAA;EAAAwB,WAAA,YAAAA,CAAA;IAAA,OAAA1B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA2B,oBAAA;EAAA,MAAA3B,IAAA,GAAAE,OAAA;EAAAyB,mBAAA,YAAAA,CAAA;IAAA,OAAA3B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA4B,oBAAA;EAAA,MAAA5B,IAAA,GAAAE,OAAA;EAAA0B,mBAAA,YAAAA,CAAA;IAAA,OAAA5B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAA6B,KAAA;EAAA,MAAA7B,IAAA,GAAAE,OAAA;EAAA2B,IAAA,YAAAA,CAAA;IAAA,OAAA7B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA8B,YAAA;EAAA,MAAA9B,IAAA,GAAAE,OAAA;EAAA4B,WAAA,YAAAA,CAAA;IAAA,OAAA9B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMA,SAAA+B,OAAA;EAAA,MAAA/B,IAAA,GAAAE,OAAA;EAAA6B,MAAA,YAAAA,CAAA;IAAA,OAAA/B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAgC,SAAA;EAAA,MAAAhC,IAAA,GAAAE,OAAA;EAAA8B,QAAA,YAAAA,CAAA;IAAA,OAAAhC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiC,YAAA;EAAA,MAAAjC,IAAA,GAAAE,OAAA;EAAA+B,WAAA,YAAAA,CAAA;IAAA,OAAAjC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAkC,qBAAA;EAAA,MAAAlC,IAAA,GAAAE,OAAA;EAAAgC,oBAAA,YAAAA,CAAA;IAAA,OAAAlC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAmC,SAAA;EAAA,MAAAnC,IAAA,GAAAE,OAAA;EAAAiC,QAAA,YAAAA,CAAA;IAAA,OAAAnC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAyD,SAAAC,uBAAAmC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,QAAAH,CAAA,EAAAI,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAP,CAAA,OAAAM,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAR,CAAA,GAAAI,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAX,CAAA,EAAAI,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAf,CAAA,aAAAI,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAD,OAAA,CAAAG,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAArB,CAAA,EAAAM,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAJ,CAAA;AAAA,SAAAmB,gBAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAmB,cAAA,CAAAnB,CAAA,MAAAJ,CAAA,GAAAM,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,IAAAoB,KAAA,EAAAnB,CAAA,EAAAO,UAAA,MAAAa,YAAA,MAAAC,QAAA,UAAA1B,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAuB,eAAAlB,CAAA,QAAAsB,CAAA,GAAAC,YAAA,CAAAvB,CAAA,uCAAAsB,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAvB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAwB,MAAA,CAAAC,WAAA,kBAAA9B,CAAA,QAAA2B,CAAA,GAAA3B,CAAA,CAAA+B,IAAA,CAAA1B,CAAA,EAAAD,CAAA,uCAAAuB,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAA5B,CAAA,GAAA6B,MAAA,GAAAC,MAAA,EAAA7B,CAAA;AA+ClD,MAAM8B,aAAa,CAAC;EAGzBC,WAAWA,CACDC,qBAA4C,EAC5CC,qBAA4C,EAC5CC,qBAA4C,EAC5CC,MAAuB,EACvBC,SAAoB,EACpBC,IAAc,EACdC,YAA8B,EAC9BC,kBAA0C,EAC1CC,eAA8B,EAC9BC,OAAoB,EACpBC,MAAc,EACdC,GAAY,EACZC,aAAuC,EACvCC,WAA4B,EACpC;IAAA,KAdQb,qBAA4C,GAA5CA,qBAA4C;IAAA,KAC5CC,qBAA4C,GAA5CA,qBAA4C;IAAA,KAC5CC,qBAA4C,GAA5CA,qBAA4C;IAAA,KAC5CC,MAAuB,GAAvBA,MAAuB;IAAA,KACvBC,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,IAAc,GAAdA,IAAc;IAAA,KACdC,YAA8B,GAA9BA,YAA8B;IAAA,KAC9BC,kBAA0C,GAA1CA,kBAA0C;IAAA,KAC1CC,eAA8B,GAA9BA,eAA8B;IAAA,KAC9BC,OAAoB,GAApBA,OAAoB;IAAA,KACpBC,MAAc,GAAdA,MAAc;IAAA,KACdC,GAAY,GAAZA,GAAY;IAAA,KACZC,aAAuC,GAAvCA,aAAuC;IAAA,KACvCC,WAA4B,GAA5BA,WAA4B;IAAA/B,eAAA,uBAhBf,KAAK;IAAAA,eAAA;IAAAA,eAAA,gCAyDI,CAAC;MAAEgC,EAAE;MAAEC;IAA4B,CAAC,KAAyB;MAC3F,MAAMC,cAAc,GAAGA,CAAA,KAAM;QAC3B,IAAID,QAAQ,CAACE,MAAM,EAAE,OAAO,IAAI;QAChC,IAAI,IAAI,CAACd,MAAM,CAACe,iBAAiB,IAAI,IAAI,CAACC,MAAM,CAACC,YAAY,CAACN,EAAE,CAAC,EAAE,OAAO,IAAI;QAC9E,OAAO,KAAK;MACd,CAAC;MACD,OAAO;QACLO,QAAQ,EAAEP,EAAE;QACZQ,IAAI,EAAEP,QAAQ,CAACO,IAAI;QACnBC,WAAW,EAAER,QAAQ,CAACQ,WAAW;QACjCN,MAAM,EAAED,cAAc,CAAC;MACzB,CAAC;IACH,CAAC;EApDE;EAEHQ,SAASA,CAACL,MAAc,EAAE;IACxB,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;;EAEA;AACF;AACA;AACA;AACA;EACEM,yBAAyBA,CAACC,SAAsD,EAAE;IAChF,IAAI,CAAC1B,qBAAqB,CAAC2B,QAAQ,CAACD,SAAS,CAAC;IAC9C,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACEE,yBAAyBA,CAACF,SAA8B,EAAE;IACxD,IAAI,CAACzB,qBAAqB,CAAC0B,QAAQ,CAACD,SAAS,CAAC;IAC9C,OAAO,IAAI;EACb;EAEAG,yBAAyBA,CAACC,EAAuB,EAAE;IACjD,IAAI,CAAC5B,qBAAqB,CAACyB,QAAQ,CAACG,EAAE,CAAC;IACvC,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;EACE,MAAMC,aAAaA,CAAC;IAAEC;EAA4B,CAAC,GAAG,CAAC,CAAC,EAAiC;IACvF,IAAI,IAAI,CAACC,wBAAwB,CAAC,CAAC,EAAE;MACnC,OAAO,IAAI,CAACC,4CAA4C,CAACF,MAAM,CAAC;IAClE;IACA,OAAO,IAAI,CAACG,2CAA2C,CAACH,MAAM,CAAC;EACjE;EAgBA;AACF;AACA;EACE,MAAMI,sBAAsBA,CAACC,IAAyB,EAAiC;IACrF,OAAO,IAAI,CAACN,aAAa,CAACM,IAAI,CAAC;EACjC;EAEAJ,wBAAwBA,CAAA,EAAY;IAClC,OAAOK,OAAO,CAAC,IAAI,CAAClC,SAAS,CAAC;EAChC;;EAEA;AACF;AACA;EACEmC,4BAA4BA,CAAClB,QAAgB,EAAuB;IAClE,MAAMmB,MAAM,GAAG,IAAI,CAACxC,qBAAqB,CAACyC,GAAG,CAACpB,QAAQ,CAAC;IACvD,IAAI,CAACmB,MAAM,EAAE,OAAO,EAAE;IACtB,IAAIE,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,EAAE,OAAOA,MAAM;IACxC,OAAOA,MAAM,CAAC,CAAC;EACjB;;EAEA;AACF;AACA;EACE,MAAMI,oBAAoBA,CAACtB,IAAY,EAAED,QAAiB,EAAgD;IACxG,MAAMwB,OAAO,GAAG,MAAM,IAAI,CAACC,yBAAyB,CAAC,EAAE,EAAEzB,QAAQ,CAAC;IAClE,IAAIwB,OAAO,IAAIA,OAAO,CAACjE,MAAM,EAAE;MAC7B,MAAMmE,KAAK,GAAG,IAAI,CAACC,6BAA6B,CAA0B3B,QAAQ,EAAEC,IAAI,EAAEuB,OAAO,CAAC;MAClG,IAAIE,KAAK,EAAE,OAAOA,KAAK;IACzB;IACA;IACA,MAAMrB,SAAS,GAAG,MAAM,IAAI,CAACuB,iCAAiC,CAAC,CAAC;IAChE,MAAMF,KAAK,GAAG,IAAI,CAACC,6BAA6B,CAA0B3B,QAAQ,EAAEC,IAAI,EAAEI,SAAS,CAAC;IACpG,OAAOqB,KAAK;EACd;EAEQC,6BAA6BA,CACnC3B,QAA4B,EAC5BC,IAAY,EACZI,SAAmB,EACJ;IACf;IACA,MAAMqB,KAAK,GAAGrB,SAAS,CAACwB,IAAI,CAAC,CAAC;MAAEpC,EAAE;MAAEC;IAAS,CAAC,KAAK;MACjD;MACA;MACA;MACA;MACA;MACA,MAAMoC,gBAAgB,GAAGrC,EAAE,CAACsC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACzC,IAAI/B,QAAQ,IAAIP,EAAE,KAAKO,QAAQ,IAAI8B,gBAAgB,KAAK9B,QAAQ,EAAE,OAAO,KAAK;MAC9E,OAAON,QAAQ,CAACO,IAAI,KAAKA,IAAI;IAC/B,CAAC,CAAC;IACF,OAAOyB,KAAK;EACd;;EAEA;AACF;AACA;AACA;EACE,MAAcM,0BAA0BA,CACtCC,SAAmB,EACuF;IAC1G,MAAMC,WAAW,GAAG,MAAMC,gBAAW,CAACC,MAAM,CAACC,uBAAY,EAAE,cAAc,CAAC;IAC1E,MAAMH,WAAW,CAACI,SAAS,CAAC,CAAC;IAC7B,MAAMC,qBAAqB,GAAG,IAAI,CAACzC,MAAM,CAAC0C,yBAAyB,CAAC,CAAC;IACrE,MAAMC,kBAAkB,GAAG,MAAM,IAAI,CAAC3C,MAAM,CAAC4C,OAAO,CAACR,WAAW,CAACS,IAAI,CAAC;IACtE,MAAMC,KAAK,GAAGH,kBAAkB,CAACrB,GAAG,CAAYyB,oBAAW,CAACpD,EAAE,CAAC;IAC/D,MAAMR,YAAY,GAAGwD,kBAAkB,CAACrB,GAAG,CAAmB0B,kCAAkB,CAACrD,EAAE,CAAC;IACpF,MAAMsD,GAAG,GAAGd,SAAS,CAACe,GAAG,CAAEvD,EAAE,IAAKwD,wBAAW,CAACC,UAAU,CAACzD,EAAE,CAAC,CAAC;IAC7D,MAAM0D,WAAW,GAAGJ,GAAG,CAACK,KAAK,CAAE3D,EAAE,IAAKA,EAAE,CAAC4D,UAAU,CAAC,CAAC,CAAC;IACtD,MAAMC,QAAQ,GAAGH,WAAW,CAAC,CAAC;IAC9B,MAAMP,KAAK,CAACW,MAAM,CAACR,GAAG,EAAE;MAAEO,QAAQ;MAAEE,MAAM,EAAE;IAAoC,CAAC,CAAC;IAClF,MAAMC,UAAU,GAAG,MAAMb,KAAK,CAACc,OAAO,CAACX,GAAG,EAAE,IAAI,CAAC;;IAEjD;IACA;IACA;IACA,MAAMY,eAAe,GAAG,MAAMf,KAAK,CAACgB,kBAAkB,CAACH,UAAU,EAAE;MAAEI,aAAa,EAAE;IAAe,CAAC,CAAC;IACrG,IAAI;MACF,MAAM5E,YAAY,CAAC6E,yBAAyB,CAACH,eAAe,EAAE,IAAI,CAAC;IACrE,CAAC,CAAC,OAAOI,GAAQ,EAAE;MACjB,IAAIA,GAAG,EAAEC,KAAK,EAAEC,IAAI,KAAK,kBAAkB,EAAE;QAC3C,MAAMC,oBAAoB,GAAG,MAAMtB,KAAK,CAACgB,kBAAkB,CAACH,UAAU,EAAE;UACtEU,YAAY,EAAE,KAAK;UACnBN,aAAa,EAAE;QACjB,CAAC,CAAC;QACF,MAAM5E,YAAY,CAAC6E,yBAAyB,CAACI,oBAAoB,EAAE,IAAI,CAAC;MAC1E,CAAC,MAAM;QACL,MAAMH,GAAG;MACX;IACF;IAEA,OAAO;MAAEN,UAAU;MAAEhB,kBAAkB;MAAEF;IAAsB,CAAC;EAClE;;EAEA;AACF;AACA;EACE,MAAc6B,sBAAsBA,CAClCpE,QAAgB,EAC4F;IAC5G,MAAM;MAAEyC,kBAAkB;MAAEgB,UAAU;MAAElB;IAAsB,CAAC,GAAG,MAAM,IAAI,CAACP,0BAA0B,CAAC,CAAChC,QAAQ,CAAC,CAAC;IACnH,MAAMqE,eAAe,GAAG5B,kBAAkB,CAACrB,GAAG,CAAgBkD,4BAAe,CAAC7E,EAAE,CAAC;IACjF,MAAM8E,gBAAgB,GAAG9B,kBAAkB,CAACrB,GAAG,CAAWoD,kBAAU,CAAC/E,EAAE,CAAC;IACxE,MAAMkB,MAAM,GAAG8C,UAAU,CAAC,CAAC,CAAC;IAC5B,MAAMgB,YAAY,GAAG9D,MAAM,CAAClB,EAAE,CAACiF,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC5E,MAAM,CAAC6E,0BAA0B,CAACpC,qBAAqB,CAAC;IAE7D,OAAO;MAAE8B,eAAe;MAAEI,YAAY;MAAEF,gBAAgB;MAAE5D;IAAO,CAAC;EACpE;;EAEA;AACF;AACA;AACA;EACE,MAAMiE,kCAAkCA,CACtC5E,QAAgB,EAChBC,IAAa,EAC2D;IACxE,MAAM;MAAEoE,eAAe;MAAEI,YAAY;MAAEF,gBAAgB;MAAE5D;IAAO,CAAC,GAAG,MAAM,IAAI,CAACyD,sBAAsB,CAACpE,QAAQ,CAAC;IAC/G,MAAM6E,UAAU,GAAG,MAAMR,eAAe,CAACS,iCAAiC,CAACzG,IAAI,CAC7EgG,eAAe,EACfpE,IAAI,EACJwE,YAAY,EACZF,gBACF,CAAC;IACD,OAAO;MAAEQ,iBAAiB,EAAEF,UAAU;MAAElE;IAAO,CAAC;EAClD;EAEA,MAAMqE,4BAA4BA,CAACC,aAAqB,EAAEhF,IAAY,EAAED,QAAiB,EAAE;IACzF,IAAI,CAACA,QAAQ,EACX,MAAM,KAAIkF,oBAAQ,EAChB,iGACF,CAAC;IACH,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACrF,MAAM,CAAC4C,OAAO,CAACuC,aAAa,CAAC;IACxD,IAAIlG,SAAoB;IACxB,IAAI;MACFA,SAAS,GAAGoG,OAAO,CAAC/D,GAAG,CAAYgE,4BAAe,CAAC3F,EAAE,CAAC;IACxD,CAAC,CAAC,MAAM;MACN,MAAM,IAAI4F,KAAK,CAAC,WAAWJ,aAAa,+DAA+D,CAAC;IAC1G;IACA,MAAMK,iBAAiB,GAAG,MAAMvG,SAAS,CAACwG,kBAAkB,CAACvF,QAAQ,CAAC;IACtE,MAAMjB,SAAS,CAACyG,WAAW,CAAC,CAACxF,QAAQ,CAAC,EAAE,IAAI,CAAC;IAC7C,MAAMyF,eAAe,GAAG,MAAM1G,SAAS,CAACqC,GAAG,CAACkE,iBAAiB,CAAC;IAC9D,MAAMI,YAAY,GAAGJ,iBAAiB,CAACZ,QAAQ,CAAC,CAAC;IACjD,MAAMiB,SAAS,GAAGR,OAAO,CAAC/D,GAAG,CAAgBkD,4BAAe,CAAC7E,EAAE,CAAC;IAChE,MAAMsF,iBAAiB,GAAG,MAAMY,SAAS,CAACb,iCAAiC,CAAC7E,IAAI,EAAEyF,YAAY,CAAC;IAC/F,OAAO;MAAEX,iBAAiB;MAAEpE,MAAM,EAAE8E;IAAgB,CAAC;EACvD;;EAEA;AACF;AACA;EACE,MAAMG,oBAAoBA,CACxB3F,IAAY,EACZD,QAAiB,EACsD;IACvE,MAAM6F,kBAAkB,GAAG,MAAM,IAAI,CAACf,iCAAiC,CAAC7E,IAAI,EAAED,QAAQ,CAAC;IACvF,IAAI6F,kBAAkB,EAAE;MACtB,OAAO;QAAEd,iBAAiB,EAAEc;MAAmB,CAAC;IAClD;IACA,IAAI,CAAC7F,QAAQ,EAAE;MACb,MAAM,KAAIkF,oBAAQ,EAChB,aAAajF,IAAI,sMACnB,CAAC;IACH;IAEA,MAAM;MAAE8E,iBAAiB;MAAEpE;IAAO,CAAC,GAAG,MAAM,IAAI,CAACiE,kCAAkC,CAAC5E,QAAQ,EAAEC,IAAI,CAAC;IACnG,IAAI8E,iBAAiB,EAAE;MACrB,OAAO;QAAEA,iBAAiB;QAAEpE;MAAO,CAAC;IACtC;IACA,MAAM,KAAIuE,oBAAQ,EAChB,aAAajF,IAAI,sMACnB,CAAC;EACH;EAEA,MAAM6E,iCAAiCA,CACrC7E,IAAa,EACbD,QAAiB,EACjBuE,gBAA2B,EACa;IACxC,IAAI/C,OAAO;IAEX,IAAIxB,QAAQ,EAAE;MACZwB,OAAO,GAAG,MAAM,IAAI,CAACsE,yBAAyB,CAAC9F,QAAQ,EAAEuE,gBAAgB,CAAC;IAC5E;IACA,MAAMlE,SAAS,GAAGmB,OAAO,IAAIA,OAAO,CAACjE,MAAM,GAAGiE,OAAO,GAAG,IAAI,CAACuE,iCAAiC,CAAC,CAAC;IAChG,MAAMrE,KAAK,GAAGrB,SAAS,CAACwB,IAAI,CAAC,CAAC;MAAEpC,EAAE;MAAEC,QAAQ,EAAEsG;IAAI,CAAC,KAAK;MACtD,IAAIhG,QAAQ,IAAIC,IAAI,EAAE,OAAOD,QAAQ,KAAKP,EAAE,IAAIQ,IAAI,KAAK+F,GAAG,CAAC/F,IAAI;MACjE,IAAID,QAAQ,EAAE,OAAOA,QAAQ,KAAKP,EAAE;MACpC,IAAIQ,IAAI,EAAE,OAAOA,IAAI,KAAK+F,GAAG,CAAC/F,IAAI;MAClC,MAAM,IAAIoF,KAAK,CAAC,uEAAuE,CAAC;IAC1F,CAAC,CAAC;IAEF,OAAO3D,KAAK,EAAEhC,QAAQ;EACxB;EAEA,MAAMuG,iBAAiBA,CAACC,YAAoB,EAAEvF,MAAe,EAAoC;IAC/F,MAAMwF,8BAA8B,GAAGC,yBAAe,CAACD,8BAA8B;IAErF,MAAME,cAAc,GAAG,MAAM,IAAI,CAAC9E,oBAAoB,CAAC2E,YAAY,EAAEvF,MAAM,CAAC;IAE5EyF,yBAAe,CAACD,8BAA8B,GAAGA,8BAA8B;IAE/E,IAAI,CAACE,cAAc,EAAE,MAAM,KAAInB,oBAAQ,EAAC,aAAagB,YAAY,iBAAiB,CAAC;IACnF,OAAOG,cAAc;EACvB;EAEA,MAAMC,yBAAyBA,CAC7BC,cAAwB,EACxBL,YAAoB,EACpBM,OAA+B,EAC/BC,cAA+B,EAC/BC,aAA6B,EACF;IAC3B,IAAI,CAAC,IAAI,CAAC3H,SAAS,EAAE,MAAM,KAAI4H,kCAAqB,EAAC,CAAC;IACtD,MAAM,IAAI,CAACnB,WAAW,CAAC,CAAC;IACxB,MAAM;MAAEoB,SAAS;MAAEjG;IAAO,CAAC,GAAG6F,OAAO;IAErC,MAAMH,cAAc,GAAG,MAAM,IAAI,CAACJ,iBAAiB,CAACC,YAAY,EAAEvF,MAAM,CAAC;IAEzE,MAAMkG,YAAY,GAAGN,cAAc,CAACvD,GAAG,CAAE8D,aAAa,IACpD,IAAI,CAAC5H,kBAAkB,CAAC6H,iBAAiB,CAACD,aAAa,EAAEF,SAAS,EAAEJ,OAAO,CAAC5D,KAAK,CACnF,CAAC;IAED,MAAMoE,+BAA+B,GAAGH,YAAY,CAAChF,IAAI,CAAEoF,WAAW,IAAKA,WAAW,CAAChH,IAAI,KAAKiG,YAAY,CAAC;IAC7G,IAAIc,+BAA+B,EAAE;MACnC,MAAME,cAAc,GAAG,IAAAC,oBAAS,EAACjB,YAAY,EAAE;QAAEkB,UAAU,EAAE;MAAK,CAAC,CAAC;MACpE,MAAM,KAAIlC,oBAAQ,EAChB,oEAAoEgB,YAAY;AACxF,sFAAsFgB,cAAc,YAAYA,cAAc,MACxH,CAAC;IACH;IAEA,MAAMG,KAAK,GAAG,MAAM,IAAI,CAACC,0BAA0B,CAACjB,cAAc,CAAC;IAEnE,MAAMkB,kBAAkB,GAAG,KAAIC,wCAAkB,EAC/C,IAAI,CAACzI,SAAS,EACd8H,YAAY,EACZL,OAAO,EACPH,cAAc,CAAC3G,QAAQ,EACvB,IAAI,CAACV,IAAI,EACT,IAAI,CAACE,kBAAkB,EACvB,IAAI,CAACE,OAAO,EACZ,IAAI,CAACG,aAAa,EAClB,IAAI,CAACF,MAAM,EACX,IAAI,CAACR,qBAAqB,EAC1BwH,cAAc,CAAC5G,EAAE,EACjB4H,KAAK,EACLZ,cAAc,EACdC,aACF,CAAC;IACD,OAAOa,kBAAkB,CAACE,QAAQ,CAACjB,OAAO,CAACkB,KAAK,CAAC;EACnD;EAEA,MAAcJ,0BAA0BA,CAACjB,cAAuC,EAAoC;IAClH,MAAMsB,iBAAiB,GAAGtB,cAAc,CAAC3G,QAAQ,CAACkI,GAAG;IACrD,IAAID,iBAAiB,EAAE;MACrB,MAAME,kBAAkB,GAAG5E,wBAAW,CAAC6E,aAAa,CAACH,iBAAiB,CAAC;MACvE,IAAI,CAACE,kBAAkB,EAAE;QACvB,MAAM,KAAI3C,oBAAQ,EAChB,8DAA8DmB,cAAc,CAAC3G,QAAQ,CAACO,IAAI,YAAY0H,iBAAiB,EACzH,CAAC;MACH;MACA,MAAMI,UAAU,GAAG,MAAM,IAAI,CAAChJ,SAAS,CAACiJ,yCAAyC,CAACH,kBAAkB,CAAC;MACrG,OAAO5E,wBAAW,CAACC,UAAU,CAAC6E,UAAU,CAAC;IAC3C;IACA,IAAI1B,cAAc,CAAC4B,OAAO,EAAE;MAC1B,OAAOhF,wBAAW,CAACC,UAAU,CAACmD,cAAc,CAAC5G,EAAE,CAAC;IAClD;IACA,OAAOyI,OAAO,CAACC,OAAO,CAACC,SAAS,CAAC;EACnC;EAEA,MAAMC,yBAAyBA,CAC7BxE,aAAqB,EACrBqC,YAAoB,EACpBM,OAA+D,EACrB;IAC1C,IAAI,IAAI,CAACzH,SAAS,EAAE;MAClB,MAAM,KAAImG,oBAAQ,EAAC,2EAA2E,CAAC;IACjG;IACA,MAAMD,aAAa,GAAGuB,OAAO,CAAC8B,UAAU,GAAGC,OAAO,CAACC,GAAG,CAAC,CAAC,GAAG,IAAAL,eAAO,EAACtE,aAAa,CAAC;IACjF,IAAI,CAAC2C,OAAO,CAAC8B,UAAU,IAAIG,kBAAE,CAACC,UAAU,CAACzD,aAAa,CAAC,EAAE;MACvD,MAAM,KAAI0D,0CAAmB,EAAC1D,aAAa,CAAC;IAC9C;IACA,MAAM;MAAEtE,MAAM,EAAEX,QAAQ;MAAE4I;IAAS,CAAC,GAAGpC,OAAO;IAC9C,MAAM;MAAEzB,iBAAiB;MAAEpE;IAAO,CAAC,GAAGiI,QAAQ,GAC1C,MAAM,IAAI,CAAC5D,4BAA4B,CAAC4D,QAAQ,EAAE1C,YAAY,EAAElG,QAAQ,CAAC,GACzE,MAAM,IAAI,CAAC4F,oBAAoB,CAACM,YAAY,EAAElG,QAAQ,CAAC;IAE3D,IAAI,CAAC+E,iBAAiB,EAAE,MAAM,KAAIG,oBAAQ,EAAC,aAAagB,YAAY,iBAAiB,CAAC;IACtF,MAAM2C,kBAAkB,GAAG,KAAIC,wCAAkB,EAC/CjF,aAAa,EACboB,aAAa,EACbuB,OAAO,EACPzB,iBAAiB,EACjB,IAAI,CAACjF,MAAM,EACXa,MACF,CAAC;IACD,MAAM,IAAI,CAACoI,oBAAoB,CAACpI,MAAM,CAAC;IACvC,MAAMkI,kBAAkB,CAACpB,QAAQ,CAAC,CAAC;IACnC,OAAO;MAAExC,aAAa;MAAE+D,OAAO,EAAEjE,iBAAiB,CAACiE;IAAQ,CAAC;EAC9D;EAEA,MAAcD,oBAAoBA,CAACpI,MAAkB,EAAE;IACrD,IAAI,CAACA,MAAM,EAAE;IACb,MAAMsI,eAAe,GAAG,MAAM,IAAI,CAACzJ,WAAW,CAAC0J,kBAAkB,CAACvI,MAAM,CAAC;IACzE,IAAIsI,eAAe,CAACE,WAAW,EAAE;MAC/B,MAAMC,aAAa,GAAGH,eAAe,CAACI,KAAK,GAAG,UAAUJ,eAAe,CAACI,KAAK,CAAC3E,QAAQ,CAAC,CAAC,WAAW,GAAG,EAAE;MACxG,IAAI,CAACrF,MAAM,CAACiK,cAAc,CAAC,gBAAgB3I,MAAM,EAAElB,EAAE,CAACiF,QAAQ,CAAC,CAAC,kBAAkB0E,aAAa,EAAE,CAAC;IACpG;EACF;EAEA,MAAcvI,4CAA4CA,CAACb,QAAiB,EAAsC;IAChH,MAAMuJ,YAAY,GAAG,MAAM,IAAI,CAACC,mCAAmC,CAAC,EAAE,EAAExJ,QAAQ,CAAC;IACjF,IAAIuJ,YAAY,IAAIA,YAAY,CAAChM,MAAM,EAAE;MACvC,IAAI,CAACyC,QAAQ,EAAE,OAAOuJ,YAAY;MAClC,MAAME,QAAQ,GAAGF,YAAY,CAACvM,MAAM,CAAE0C,QAAQ,IAAKA,QAAQ,CAACM,QAAQ,KAAKA,QAAQ,CAAC;MAClF,IAAIyJ,QAAQ,CAAClM,MAAM,EAAE,OAAOkM,QAAQ;IACtC;IAEA,MAAMC,SAAS,GAAG,IAAI,CAAC9H,iCAAiC,CAAC,CAAC;IAC1D,MAAM6H,QAAQ,GAAGzJ,QAAQ,GAAG0J,SAAS,CAAC1M,MAAM,CAAE0C,QAAQ,IAAKA,QAAQ,CAACD,EAAE,KAAKO,QAAQ,CAAC,GAAG0J,SAAS;IAChG,OAAOD,QAAQ,CAACzG,GAAG,CAAEtD,QAAQ,IAAK,IAAI,CAACiK,qBAAqB,CAACjK,QAAQ,CAAC,CAAC;EACzE;EAEQkC,iCAAiCA,CAAA,EAAuD;IAC9F,MAAMgI,kBAAkB,GAAG,IAAI,CAACjL,qBAAqB,CAACkL,OAAO,CAAC,CAAC;IAC/D,MAAMH,SAAS,GAAGE,kBAAkB,CAACE,OAAO,CAAC,CAAC,CAACrK,EAAE,EAAEsK,kBAAkB,CAAC,KAAK;MACzE,MAAMC,0BAA0B,GAAG3I,KAAK,CAACC,OAAO,CAACyI,kBAAkB,CAAC,GAAGA,kBAAkB,GAAGA,kBAAkB,CAAC,CAAC;MAChH,OAAOC,0BAA0B,CAAChH,GAAG,CAAEtD,QAAQ,KAAM;QACnDD,EAAE;QACFC;MACF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAOgK,SAAS;EAClB;EAEA,MAAc5I,2CAA2CA,CAACd,QAAiB,EAAsC;IAC/G,IAAIuJ,YAAY;IAChB,IAAIvJ,QAAQ,EAAE;MACZuJ,YAAY,GAAG,MAAM,IAAI,CAACzD,yBAAyB,CAAC9F,QAAQ,CAAC;IAC/D;IAEA,MAAMK,SAAS,GAAGkJ,YAAY,IAAIA,YAAY,CAAChM,MAAM,GAAGgM,YAAY,GAAG,IAAI,CAACxD,iCAAiC,CAAC,CAAC;IAC/G,OAAO1F,SAAS,CAAC2C,GAAG,CAAEtD,QAAQ,IAAK,IAAI,CAACiK,qBAAqB,CAACjK,QAAQ,CAAC,CAAC;EAC1E;EAEQqG,iCAAiCA,CAAA,EAAuD;IAC9F,MAAM6D,kBAAkB,GAAG,IAAI,CAAChL,qBAAqB,CAACiL,OAAO,CAAC,CAAC;IAC/D,OAAOD,kBAAkB,CAACE,OAAO,CAAC,CAAC,CAACrK,EAAE,EAAEwK,kBAAkB,CAAC,KAAK;MAC9D,OAAOA,kBAAkB,CAACjH,GAAG,CAAEtD,QAAQ,KAAM;QAC3CD,EAAE;QACFC;MACF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACE,MAAMoG,yBAAyBA,CAACuB,KAAa,EAAE9C,gBAA2B,EAA2C;IACnH,MAAMvF,IAAI,GAAG,MAAM,IAAI,CAACkL,QAAQ,CAAC,CAAC7C,KAAK,CAAC,EAAE9C,gBAAgB,CAAC;IAC3D,MAAM0F,kBAAkB,GAAGjL,IAAI,CAAC8K,OAAO,CAAElC,GAAG,IAAK;MAC/C,IAAI,CAACA,GAAG,CAACA,GAAG,CAACuC,oBAAoB,EAAE,OAAO/B,SAAS;MACnD,MAAMgC,WAAW,GAAGxC,GAAG,CAACA,GAAG,CAACuC,oBAAoB,CAAC,CAAC;MAClD,OAAOC,WAAW,CAACpH,GAAG,CAAEqH,OAAO,IAAK;QAClC,MAAMpD,WAAW,GAAGhE,wBAAW,CAACC,UAAU,CAAC0E,GAAG,CAACnI,EAAE,CAAC;QAClD,OAAO;UACLA,EAAE,EAAEwH,WAAW,CAACvC,QAAQ,CAAC,CAAC;UAC1BuD,OAAO,EAAEL,GAAG,CAAC3H,IAAI;UACjBP,QAAQ,EAAE2K;QACZ,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAAC,iBAAO,EAACL,kBAAkB,CAAC;EACpC;;EAEA;AACF;AACA;EACE,MAAMT,mCAAmCA,CAACzG,GAAa,GAAG,EAAE,EAAE/C,QAAiB,EAAiC;IAC9G,MAAMuJ,YAAY,GAAG,MAAM,IAAI,CAAC9H,yBAAyB,CAACsB,GAAG,EAAE/C,QAAQ,CAAC;IACxE,MAAMK,SAA+B,GAAGkJ,YAAY,CAACvG,GAAG,CAAEuH,WAAW,IAAK;MACxE,MAAMtD,WAAW,GAAGhE,wBAAW,CAACC,UAAU,CAACqH,WAAW,CAAC9K,EAAE,CAAC;MAC1D,OAAApC,aAAA;QACE2C,QAAQ,EAAEiH,WAAW,CAACuD,sBAAsB,CAAC,CAAC;QAC9CC,WAAW,EAAEF,WAAW,CAACtC;MAAO,GAC7BsC,WAAW,CAAC7K,QAAQ;IAE3B,CAAC,CAAC;IAEF,OAAOW,SAAS;EAClB;EAEAqK,iBAAiBA,CAAA,EAAa;IAC5B,OAAO,IAAI,CAAC5L,MAAM,CAACE,IAAI,IAAI,EAAE;EAC/B;EAEA,MAAMyC,yBAAyBA,CAACsB,GAAa,GAAG,EAAE,EAAE/C,QAAiB,EAA2C;IAC9G,MAAM2K,UAAU,GAAG,IAAI,CAAC7L,MAAM,CAACE,IAAI,IAAI,EAAE;IACzC,IAAIuF,gBAAgB;IACpB,IAAIE,YAAY;IAChB,IAAIzE,QAAQ,IAAI,CAAC2K,UAAU,CAACC,QAAQ,CAAC5K,QAAQ,CAAC,EAAE;MAC9C,MAAM6K,OAAO,GAAG,MAAM,IAAI,CAACzG,sBAAsB,CAACpE,QAAQ,CAAC;MAC3DuE,gBAAgB,GAAGsG,OAAO,CAACtG,gBAAgB;MAC3CE,YAAY,GAAGoG,OAAO,CAACpG,YAAY;IACrC;IACA,MAAMqG,MAAM,GAAG,IAAAC,cAAI,EAACJ,UAAU,EAAEK,MAAM,CAACjI,GAAG,CAAC,CAACiI,MAAM,CAAC,CAAChL,QAAQ,EAAEyE,YAAY,CAAC,CAAC,CAACzH,MAAM,CAACiE,OAAO,CAAC,CAAC;IAC7F,MAAMjC,IAAI,GAAG,MAAM,IAAI,CAACkL,QAAQ,CAACY,MAAM,EAAEvG,gBAAgB,CAAC;IAC1D,MAAMlE,SAAS,GAAGrB,IAAI,CAAC8K,OAAO,CAAElC,GAAG,IAAK;MACtC,IAAI,CAACA,GAAG,CAACA,GAAG,CAACqD,qBAAqB,EAAE,OAAO,EAAE;MAC7C,MAAMC,IAAI,GAAGtD,GAAG,CAACA,GAAG,CAACqD,qBAAqB,CAAC,CAAC,IAAI,EAAE;MAClD,MAAMhE,WAAW,GAAGhE,wBAAW,CAACC,UAAU,CAAC0E,GAAG,CAACnI,EAAE,CAAC;MAClD,OAAOyL,IAAI,CAAClI,GAAG,CAAEtD,QAAQ,IAAK;QAC5B,OAAO;UACLD,EAAE,EAAEwH,WAAW,CAACvC,QAAQ,CAAC,CAAC;UAC1BuD,OAAO,EAAEL,GAAG,CAAC3H,IAAI;UACjBP;QACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAOW,SAAS;EAClB;EAEA,MAAM6J,QAAQA,CAACnH,GAAa,GAAG,IAAI,CAACjE,MAAM,CAACE,IAAI,IAAI,EAAE,EAAEuF,gBAA2B,EAA4B;IAC5G;IACA;IACA;IACA,IAAI,CAACA,gBAAgB,EAAE;MACrB,MAAM4G,IAAI,GAAG,IAAI,CAAChM,eAAe,CAACiM,OAAO,CAAC,CAAC;MAC3C,IAAI,CAACD,IAAI,EAAE,OAAO,EAAE;MACpB,MAAMA,IAAI,CAAC3F,WAAW,CAACzC,GAAG,CAAC;IAC7B;IAEA,MAAMsI,UAAU,GAAG9G,gBAAgB,IAAI,IAAI,CAACvF,IAAI;IAEhD,MAAMsM,aAAa,GAAGvI,GAAG,CAACC,GAAG,CAAEvD,EAAE,IAAK;MACpC,MAAMwH,WAAW,GAAGhE,wBAAW,CAACC,UAAU,CAACzD,EAAE,CAAC;MAC9C,OAAO4L,UAAU,CAACE,gBAAgB,CAACtE,WAAW,CAAC;IACjD,CAAC,CAAC;IAEF,OAAO,IAAAqD,iBAAO,EAACgB,aAAa,CAAC;EAC/B;EAEA,MAAM9F,WAAWA,CAAA,EAAG;IAClB,IAAI,IAAI,CAACgG,YAAY,EAAE;IACvB,MAAM,IAAI,CAACzM,SAAS,CAACyG,WAAW,CAAC,IAAI,CAAC1G,MAAM,CAAC2M,OAAO,CAAC;IACrD,IAAI,CAACD,YAAY,GAAG,IAAI;EAC1B;EAyBA,aAAaE,QAAQA,CACnB,CACE3M,SAAS,EACT4M,GAAG,EACHC,OAAO,EACP5M,IAAI,EACJC,YAAY,EACZC,kBAAkB,EAClBC,eAAe,EACfC,OAAO,EACPyM,UAAU,EACVvM,GAAG,EACHC,aAAa,EACbC,WAAW,CAcZ,EACDV,MAAuB,EACvB,CAACH,qBAAqB,EAAEC,qBAAqB,EAAEC,qBAAqB,CAInE,EACD;IACA,MAAMQ,MAAM,GAAGwM,UAAU,CAACC,YAAY,CAACxH,4BAAe,CAAC7E,EAAE,CAAC;IAC1D,MAAMkG,SAAS,GAAG,IAAIlH,aAAa,CACjCE,qBAAqB,EACrBC,qBAAqB,EACrBC,qBAAqB,EACrBC,MAAM,EACNC,SAAS,EACTC,IAAI,EACJC,YAAY,EACZC,kBAAkB,EAClBC,eAAe,EACfC,OAAO,EACPC,MAAM,EACNC,GAAG,EACHC,aAAa,EACbC,WACF,CAAC;IACD,MAAMuM,QAAQ,GAAG,CAAC,KAAIC,mBAAS,EAACrG,SAAS,CAAC,EAAE,KAAIsG,yBAAY,EAACtG,SAAS,CAAC,EAAE,KAAIuG,aAAM,EAACvG,SAAS,CAAC,CAAC;IAC/FgG,GAAG,CAACrL,QAAQ,CAAC,GAAGyL,QAAQ,CAAC;IACzBH,OAAO,CAACtL,QAAQ,CAAC,MAAM,IAAA6L,6BAAe,EAACxG,SAAS,CAAC,CAAC;IAClD1G,YAAY,CAACmN,eAAe,CAAC,CAAC,KAAIC,wBAAa,EAAC1G,SAAS,CAAC,CAAC,CAAC;IAC5D3G,IAAI,CAACsN,eAAe,CAAC,KAAIC,8BAAgB,EAAC,CAAC,CAAC;IAE5C,IAAI5G,SAAS,EACXA,SAAS,CAACvF,yBAAyB,CAAC,MAAM,CACxCoM,wCAA0B,EAC1BC,kDAAoC,EACpCC,6BAAe,EACfC,uCAAyB,CAC1B,CAAC;IACJhH,SAAS,CAACpF,yBAAyB,CAAC,CAACqM,8BAAqB,CAAC,CAAC;IAE5D,OAAOjH,SAAS;EAClB;AACF;AAACkH,OAAA,CAAApO,aAAA,GAAAA,aAAA;AAAAhB,eAAA,CAzmBYgB,aAAa,WA6gBT,CACbqO,eAAI,CAACC,QAAQ,CAAsB,CAAC,EACpCD,eAAI,CAACC,QAAQ,CAAsB,CAAC,EACpCD,eAAI,CAACC,QAAQ,CAAsB,CAAC,CACrC;AAAAtP,eAAA,CAjhBUgB,aAAa,kBAmhBF,CACpB2G,4BAAe,EACf4H,gBAAS,EACTC,wBAAa,EACbzI,kBAAU,EACV1B,kCAAkB,EAClBoK,8CAAwB,EACxBC,4BAAe,EACfC,wBAAa,EACbC,sBAAY,EACZC,gBAAS,EACTC,kDAA0B,EAC1BC,gCAAiB,CAClB;AAAA/P,eAAA,CAhiBUgB,aAAa,aAkiBPgP,kBAAW;AAyE9BnJ,4BAAe,CAACoJ,UAAU,CAACjP,aAAa,CAAC","ignoreList":[]}
|
package/dist/index.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
export type { GeneratorMain } from './generator.main.runtime';
|
2
|
-
export type { ComponentContext, ComponentTemplate, ComponentTemplateOptions, GetComponentTemplates, ComponentFile, ComponentConfig, ConfigContext, } from './component-template';
|
2
|
+
export type { ComponentContext, ComponentTemplate, ComponentTemplateOptions, GetComponentTemplates, ComponentFile, ComponentConfig, ConfigContext, PromptOption, PromptResults, } from './component-template';
|
3
3
|
export type { WorkspaceContext, WorkspaceTemplate, WorkspaceTemplate as Starter, WorkspaceFile, ForkComponentInfo, ImportComponentInfo, CreateComponentInfo, } from './workspace-template';
|
4
4
|
export type { GeneratorEnv } from './generator-env-type';
|
5
5
|
export { GeneratorAspect } from './generator.aspect';
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_generator","data","require","_templateList","_starterList"],"sources":["index.ts"],"sourcesContent":["export type { GeneratorMain } from './generator.main.runtime';\nexport type {\n ComponentContext,\n ComponentTemplate,\n ComponentTemplateOptions,\n GetComponentTemplates,\n ComponentFile,\n ComponentConfig,\n ConfigContext,\n} from './component-template';\nexport type {\n WorkspaceContext,\n WorkspaceTemplate,\n WorkspaceTemplate as Starter,\n WorkspaceFile,\n ForkComponentInfo,\n ImportComponentInfo,\n CreateComponentInfo,\n} from './workspace-template';\nexport type { GeneratorEnv } from './generator-env-type';\nexport { GeneratorAspect } from './generator.aspect';\nexport { TemplateList } from './template-list';\nexport { StarterList } from './starter-list';\nexport type { GenerateResult } from './component-generator';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;
|
1
|
+
{"version":3,"names":["_generator","data","require","_templateList","_starterList"],"sources":["index.ts"],"sourcesContent":["export type { GeneratorMain } from './generator.main.runtime';\nexport type {\n ComponentContext,\n ComponentTemplate,\n ComponentTemplateOptions,\n GetComponentTemplates,\n ComponentFile,\n ComponentConfig,\n ConfigContext,\n PromptOption,\n PromptResults,\n} from './component-template';\nexport type {\n WorkspaceContext,\n WorkspaceTemplate,\n WorkspaceTemplate as Starter,\n WorkspaceFile,\n ForkComponentInfo,\n ImportComponentInfo,\n CreateComponentInfo,\n} from './workspace-template';\nexport type { GeneratorEnv } from './generator-env-type';\nexport { GeneratorAspect } from './generator.aspect';\nexport { TemplateList } from './template-list';\nexport { StarterList } from './starter-list';\nexport type { GenerateResult } from './component-generator';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAsBA,SAAAA,WAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,UAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,cAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,aAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,aAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,YAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA","ignoreList":[]}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.generator_generator@1.0.
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.generator_generator@1.0.
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.generator_generator@1.0.565/dist/generator.composition.js';
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.generator_generator@1.0.565/dist/generator.docs.mdx';
|
3
3
|
|
4
4
|
export const compositions = [compositions_0];
|
5
5
|
export const overview = [overview_0];
|
package/package.json
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/generator",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.565",
|
4
4
|
"homepage": "https://bit.cloud/teambit/generator/generator",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"componentId": {
|
7
7
|
"scope": "teambit.generator",
|
8
8
|
"name": "generator",
|
9
|
-
"version": "1.0.
|
9
|
+
"version": "1.0.565"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"camelcase": "6.2.0",
|
13
|
+
"enquirer": "2.4.1",
|
13
14
|
"fs-extra": "10.0.0",
|
14
15
|
"p-map-series": "2.1.0",
|
15
16
|
"chalk": "4.1.2",
|
@@ -20,32 +21,32 @@
|
|
20
21
|
"@teambit/component-id": "1.2.3",
|
21
22
|
"@teambit/harmony": "0.4.7",
|
22
23
|
"@teambit/git.modules.git-ignore": "1.0.2",
|
23
|
-
"@teambit/envs": "1.0.
|
24
|
-
"@teambit/logger": "0.0.
|
25
|
-
"@teambit/new-component-helper": "1.0.
|
24
|
+
"@teambit/envs": "1.0.564",
|
25
|
+
"@teambit/logger": "0.0.1234",
|
26
|
+
"@teambit/new-component-helper": "1.0.564",
|
26
27
|
"@teambit/pkg.modules.component-package-name": "0.0.50",
|
27
|
-
"@teambit/tracker": "1.0.
|
28
|
-
"@teambit/workspace-config-files": "1.0.
|
28
|
+
"@teambit/tracker": "1.0.564",
|
29
|
+
"@teambit/workspace-config-files": "1.0.564",
|
29
30
|
"@teambit/workspace.modules.node-modules-linker": "0.0.271",
|
30
|
-
"@teambit/workspace": "1.0.
|
31
|
-
"@teambit/component": "1.0.
|
32
|
-
"@teambit/cli": "0.0.
|
33
|
-
"@teambit/graphql": "1.0.
|
34
|
-
"@teambit/aspect-loader": "1.0.
|
35
|
-
"@teambit/deprecation": "1.0.
|
36
|
-
"@teambit/git": "1.0.
|
31
|
+
"@teambit/workspace": "1.0.564",
|
32
|
+
"@teambit/component": "1.0.564",
|
33
|
+
"@teambit/cli": "0.0.1141",
|
34
|
+
"@teambit/graphql": "1.0.564",
|
35
|
+
"@teambit/aspect-loader": "1.0.564",
|
36
|
+
"@teambit/deprecation": "1.0.564",
|
37
|
+
"@teambit/git": "1.0.564",
|
37
38
|
"@teambit/legacy.constants": "0.0.11",
|
38
39
|
"@teambit/legacy.consumer-config": "0.0.43",
|
39
40
|
"@teambit/legacy.scope": "0.0.43",
|
40
|
-
"@teambit/scope": "1.0.
|
41
|
-
"@teambit/compiler": "1.0.
|
42
|
-
"@teambit/forking": "1.0.
|
41
|
+
"@teambit/scope": "1.0.564",
|
42
|
+
"@teambit/compiler": "1.0.564",
|
43
|
+
"@teambit/forking": "1.0.564",
|
43
44
|
"@teambit/git.modules.git-executable": "0.0.12",
|
44
|
-
"@teambit/host-initializer": "0.0.
|
45
|
-
"@teambit/importer": "1.0.
|
46
|
-
"@teambit/install": "1.0.
|
47
|
-
"@teambit/ui": "1.0.
|
48
|
-
"@teambit/config": "0.0.
|
45
|
+
"@teambit/host-initializer": "0.0.277",
|
46
|
+
"@teambit/importer": "1.0.564",
|
47
|
+
"@teambit/install": "1.0.564",
|
48
|
+
"@teambit/ui": "1.0.564",
|
49
|
+
"@teambit/config": "0.0.1315"
|
49
50
|
},
|
50
51
|
"devDependencies": {
|
51
52
|
"@types/fs-extra": "9.0.7",
|