@vertesia/create-plugin 1.2.0 → 1.3.0-dev.20260620.091720Z
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/README.md +3 -0
- package/lib/configuration.d.ts.map +1 -1
- package/lib/configuration.js +2 -19
- package/lib/configuration.js.map +1 -1
- package/lib/download-template.d.ts +3 -0
- package/lib/download-template.d.ts.map +1 -1
- package/lib/download-template.js +10 -9
- package/lib/download-template.js.map +1 -1
- package/lib/index.js +65 -18
- package/lib/index.js.map +1 -1
- package/lib/package-manager.d.ts +4 -0
- package/lib/package-manager.d.ts.map +1 -1
- package/lib/package-manager.js +16 -10
- package/lib/package-manager.js.map +1 -1
- package/lib/post-install.d.ts +4 -1
- package/lib/post-install.d.ts.map +1 -1
- package/lib/post-install.js +19 -19
- package/lib/post-install.js.map +1 -1
- package/lib/process-template.d.ts +7 -4
- package/lib/process-template.d.ts.map +1 -1
- package/lib/process-template.js +60 -29
- package/lib/process-template.js.map +1 -1
- package/lib/prompts.d.ts +5 -2
- package/lib/prompts.d.ts.map +1 -1
- package/lib/prompts.js +21 -8
- package/lib/prompts.js.map +1 -1
- package/lib/template-config.d.ts +3 -1
- package/lib/template-config.d.ts.map +1 -1
- package/lib/template-config.js +2 -2
- package/lib/template-config.js.map +1 -1
- package/lib/template-selector.d.ts +1 -1
- package/lib/template-selector.d.ts.map +1 -1
- package/lib/template-selector.js +7 -7
- package/lib/template-selector.js.map +1 -1
- package/lib/transforms.d.ts +5 -0
- package/lib/transforms.d.ts.map +1 -1
- package/lib/transforms.js +12 -1
- package/lib/transforms.js.map +1 -1
- package/lib/version.d.ts.map +1 -1
- package/lib/version.js +5 -4
- package/lib/version.js.map +1 -1
- package/package.json +11 -9
package/lib/post-install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-install.js","sourceRoot":"","sources":["../src/post-install.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"post-install.js","sourceRoot":"","sources":["../src/post-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Template file processing - variable replacement and adjustments
|
|
3
|
+
*/
|
|
4
|
+
import type { TemplateConfig } from './template-config.js';
|
|
2
5
|
/**
|
|
3
6
|
* Replace variables in files
|
|
4
7
|
* Uses different strategies based on file type:
|
|
@@ -7,17 +10,17 @@ import { TemplateConfig } from './template-config.js';
|
|
|
7
10
|
* - TEMPLATE__IdentifierName for identifier replacement
|
|
8
11
|
* - Text files (all others): {{VARIABLE}} placeholder pattern
|
|
9
12
|
*/
|
|
10
|
-
export declare function replaceVariables(projectName: string, templateConfig: TemplateConfig, answers: Record<string,
|
|
13
|
+
export declare function replaceVariables(projectName: string, templateConfig: TemplateConfig, answers: Record<string, unknown>): void;
|
|
11
14
|
/**
|
|
12
15
|
* Adjust package.json after variable replacement
|
|
13
16
|
* 1. Sets the package name to PROJECT_NAME
|
|
14
17
|
* 2. Resolves workspace:* dependencies to actual latest versions
|
|
15
18
|
*/
|
|
16
|
-
export declare function adjustPackageJson(projectName: string, answers: Record<string,
|
|
19
|
+
export declare function adjustPackageJson(projectName: string, answers: Record<string, unknown>, isDev: boolean, packageManager: string): void;
|
|
17
20
|
/**
|
|
18
21
|
* Handle conditional file removal based on user answers
|
|
19
22
|
*/
|
|
20
|
-
export declare function handleConditionalRemoves(projectName: string, templateConfig: TemplateConfig, answers: Record<string,
|
|
23
|
+
export declare function handleConditionalRemoves(projectName: string, templateConfig: TemplateConfig, answers: Record<string, unknown>): void;
|
|
21
24
|
/**
|
|
22
25
|
* Rename files based on template configuration
|
|
23
26
|
* Useful for files like .env.template -> .env that can't be committed to git
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-template.d.ts","sourceRoot":"","sources":["../src/process-template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"process-template.d.ts","sourceRoot":"","sources":["../src/process-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAiI3D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC5B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,IAAI,CAoCN;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,OAAO,EACd,cAAc,EAAE,MAAM,GACvB,IAAI,CA8FN;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACpC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,IAAI,CAqBN;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,CAkBrF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,CAczF"}
|
package/lib/process-template.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Template file processing - variable replacement and adjustments
|
|
3
3
|
*/
|
|
4
|
+
import { execSync } from 'node:child_process';
|
|
5
|
+
import fs from 'node:fs';
|
|
6
|
+
import path from 'node:path';
|
|
4
7
|
import chalk from 'chalk';
|
|
5
|
-
import { execSync } from 'child_process';
|
|
6
|
-
import fs from 'fs';
|
|
7
|
-
import path from 'path';
|
|
8
8
|
import { getTemplateVersions } from './version.js';
|
|
9
9
|
/**
|
|
10
10
|
* Get the latest version of an npm package from the registry.
|
|
@@ -14,7 +14,7 @@ function getLatestVersion(packageName) {
|
|
|
14
14
|
try {
|
|
15
15
|
const result = execSync(`npm view ${packageName} version`, {
|
|
16
16
|
encoding: 'utf8',
|
|
17
|
-
stdio: ['pipe', 'pipe', 'ignore']
|
|
17
|
+
stdio: ['pipe', 'pipe', 'ignore'],
|
|
18
18
|
});
|
|
19
19
|
return result.trim();
|
|
20
20
|
}
|
|
@@ -41,6 +41,20 @@ function resolveInternalVersion(pkgName, versionMap) {
|
|
|
41
41
|
const latest = getLatestVersion(pkgName);
|
|
42
42
|
return latest ? { version: latest, pinned: false } : null;
|
|
43
43
|
}
|
|
44
|
+
function rewritePackageManagerScripts(packageJson, packageManager) {
|
|
45
|
+
if (!packageJson.scripts)
|
|
46
|
+
return 0;
|
|
47
|
+
let replacements = 0;
|
|
48
|
+
const runCommand = `${packageManager} run`;
|
|
49
|
+
for (const [scriptName, scriptCommand] of Object.entries(packageJson.scripts)) {
|
|
50
|
+
const updatedCommand = scriptCommand.replace(/\bpnpm run\b/g, runCommand);
|
|
51
|
+
if (updatedCommand !== scriptCommand) {
|
|
52
|
+
packageJson.scripts[scriptName] = updatedCommand;
|
|
53
|
+
replacements++;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return replacements;
|
|
57
|
+
}
|
|
44
58
|
/**
|
|
45
59
|
* Escape special regex characters
|
|
46
60
|
*/
|
|
@@ -52,7 +66,7 @@ function escapeRegex(str) {
|
|
|
52
66
|
*/
|
|
53
67
|
function isCodeFile(filePath) {
|
|
54
68
|
const codeExtensions = ['.js', '.jsx', '.mjs', '.ts', '.tsx'];
|
|
55
|
-
return codeExtensions.some(ext => filePath.endsWith(ext));
|
|
69
|
+
return codeExtensions.some((ext) => filePath.endsWith(ext));
|
|
56
70
|
}
|
|
57
71
|
/**
|
|
58
72
|
* Replace variables in text files (HTML, JSON, Markdown, etc.)
|
|
@@ -83,7 +97,7 @@ function replaceInCodeFile(content, answers) {
|
|
|
83
97
|
// Replaces only the value, keeps the constant declaration
|
|
84
98
|
const configPattern = new RegExp(`(const\\s+CONFIG__${key}\\s*=\\s*)([^;\\n]+)(\\s*;?\\s*\\n?)`, 'gm');
|
|
85
99
|
if (content.match(configPattern)) {
|
|
86
|
-
content = content.replace(configPattern, (
|
|
100
|
+
content = content.replace(configPattern, (_match, prefix, _oldValue, suffix) => {
|
|
87
101
|
return `${prefix}${JSON.stringify(value)}${suffix}`;
|
|
88
102
|
});
|
|
89
103
|
modified = true;
|
|
@@ -111,11 +125,11 @@ export function replaceVariables(projectName, templateConfig, answers) {
|
|
|
111
125
|
if (!templateConfig.files) {
|
|
112
126
|
return;
|
|
113
127
|
}
|
|
114
|
-
console.log(chalk.blue('
|
|
128
|
+
console.log(chalk.blue('Configuring files...\n'));
|
|
115
129
|
for (const file of templateConfig.files) {
|
|
116
130
|
const filePath = path.join(projectName, file);
|
|
117
131
|
if (!fs.existsSync(filePath)) {
|
|
118
|
-
console.log(chalk.yellow(`
|
|
132
|
+
console.log(chalk.yellow(` File not found: ${file} (skipping)`));
|
|
119
133
|
continue;
|
|
120
134
|
}
|
|
121
135
|
let content = fs.readFileSync(filePath, 'utf8');
|
|
@@ -133,7 +147,7 @@ export function replaceVariables(projectName, templateConfig, answers) {
|
|
|
133
147
|
}
|
|
134
148
|
if (modified) {
|
|
135
149
|
fs.writeFileSync(filePath, content);
|
|
136
|
-
console.log(chalk.gray(`
|
|
150
|
+
console.log(chalk.gray(` ${file}`));
|
|
137
151
|
}
|
|
138
152
|
}
|
|
139
153
|
console.log();
|
|
@@ -143,11 +157,11 @@ export function replaceVariables(projectName, templateConfig, answers) {
|
|
|
143
157
|
* 1. Sets the package name to PROJECT_NAME
|
|
144
158
|
* 2. Resolves workspace:* dependencies to actual latest versions
|
|
145
159
|
*/
|
|
146
|
-
export function adjustPackageJson(projectName, answers, isDev) {
|
|
147
|
-
console.log(chalk.blue('
|
|
160
|
+
export function adjustPackageJson(projectName, answers, isDev, packageManager) {
|
|
161
|
+
console.log(chalk.blue('Adjusting package.json...\n'));
|
|
148
162
|
const packageJsonPath = path.join(projectName, 'package.json');
|
|
149
163
|
if (!fs.existsSync(packageJsonPath)) {
|
|
150
|
-
console.log(chalk.yellow('
|
|
164
|
+
console.log(chalk.yellow(' package.json not found (skipping adjustment)'));
|
|
151
165
|
console.log();
|
|
152
166
|
return;
|
|
153
167
|
}
|
|
@@ -157,7 +171,16 @@ export function adjustPackageJson(projectName, answers, isDev) {
|
|
|
157
171
|
const newName = answers.PROJECT_NAME || projectName;
|
|
158
172
|
if (packageJson.name !== newName) {
|
|
159
173
|
packageJson.name = newName;
|
|
160
|
-
console.log(chalk.gray(`
|
|
174
|
+
console.log(chalk.gray(` Set package name to "${newName}"`));
|
|
175
|
+
}
|
|
176
|
+
// Pin the chosen package manager via Corepack
|
|
177
|
+
if (answers.PM_VERSION) {
|
|
178
|
+
packageJson.packageManager = `${packageManager}@${answers.PM_VERSION}`;
|
|
179
|
+
console.log(chalk.gray(` Set packageManager to "${packageJson.packageManager}"`));
|
|
180
|
+
}
|
|
181
|
+
const scriptReplacements = rewritePackageManagerScripts(packageJson, packageManager);
|
|
182
|
+
if (scriptReplacements > 0) {
|
|
183
|
+
console.log(chalk.gray(` Updated ${scriptReplacements} scripts for ${packageManager}`));
|
|
161
184
|
}
|
|
162
185
|
// 2. Replace workspace:* with pinned versions
|
|
163
186
|
const internalScopes = ['@vertesia/', '@llumiverse/', '@dglabs/'];
|
|
@@ -166,10 +189,10 @@ export function adjustPackageJson(projectName, answers, isDev) {
|
|
|
166
189
|
if (versionMap) {
|
|
167
190
|
console.log(chalk.gray(' Using pinned versions from CLI package'));
|
|
168
191
|
}
|
|
169
|
-
['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'].forEach(depType => {
|
|
192
|
+
['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'].forEach((depType) => {
|
|
170
193
|
if (packageJson[depType]) {
|
|
171
|
-
Object.keys(packageJson[depType]).forEach(pkgName => {
|
|
172
|
-
const isInternalPackage = internalScopes.some(scope => pkgName.startsWith(scope));
|
|
194
|
+
Object.keys(packageJson[depType]).forEach((pkgName) => {
|
|
195
|
+
const isInternalPackage = internalScopes.some((scope) => pkgName.startsWith(scope));
|
|
173
196
|
if (isInternalPackage && packageJson[depType][pkgName] === 'workspace:*') {
|
|
174
197
|
if (isDev) {
|
|
175
198
|
// Dev mode: use 'dev' npm tag
|
|
@@ -180,12 +203,20 @@ export function adjustPackageJson(projectName, answers, isDev) {
|
|
|
180
203
|
const resolved = resolveInternalVersion(pkgName, versionMap);
|
|
181
204
|
if (resolved) {
|
|
182
205
|
// Exact version when from version map, caret range when from registry
|
|
183
|
-
packageJson[depType][pkgName] = resolved.pinned
|
|
206
|
+
packageJson[depType][pkgName] = resolved.pinned
|
|
207
|
+
? resolved.version
|
|
208
|
+
: `^${resolved.version}`;
|
|
184
209
|
workspaceReplacements++;
|
|
185
210
|
}
|
|
186
211
|
else {
|
|
187
|
-
|
|
188
|
-
|
|
212
|
+
// No version map entry and no resolvable registry version. Floating
|
|
213
|
+
// a generated app onto the npm `latest` tag silently couples it to
|
|
214
|
+
// whatever publishes next (a different major can break the build at
|
|
215
|
+
// an unrelated time). Fail loudly instead so the caller pins a
|
|
216
|
+
// version map or uses --dev.
|
|
217
|
+
throw new Error(`Cannot resolve a version for internal dependency "${pkgName}": no entry in the ` +
|
|
218
|
+
'pinned version map and the npm registry returned no version. ' +
|
|
219
|
+
'Provide a version map (CLI-pinned versions) or run with --dev to use the "dev" tag.');
|
|
189
220
|
}
|
|
190
221
|
}
|
|
191
222
|
}
|
|
@@ -194,13 +225,13 @@ export function adjustPackageJson(projectName, answers, isDev) {
|
|
|
194
225
|
});
|
|
195
226
|
if (workspaceReplacements > 0) {
|
|
196
227
|
const method = versionMap ? 'pinned' : 'latest';
|
|
197
|
-
console.log(chalk.gray(`
|
|
228
|
+
console.log(chalk.gray(` Resolved ${workspaceReplacements} workspace:* dependencies to ${method} versions`));
|
|
198
229
|
}
|
|
199
230
|
// Write back to file
|
|
200
|
-
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2)
|
|
231
|
+
fs.writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\n`);
|
|
201
232
|
}
|
|
202
233
|
catch (error) {
|
|
203
|
-
console.log(chalk.yellow(`
|
|
234
|
+
console.log(chalk.yellow(` Failed to adjust package.json: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
204
235
|
}
|
|
205
236
|
console.log();
|
|
206
237
|
}
|
|
@@ -210,7 +241,7 @@ export function adjustPackageJson(projectName, answers, isDev) {
|
|
|
210
241
|
export function handleConditionalRemoves(projectName, templateConfig, answers) {
|
|
211
242
|
if (!templateConfig.conditionalRemove)
|
|
212
243
|
return;
|
|
213
|
-
console.log(chalk.blue('
|
|
244
|
+
console.log(chalk.blue('Applying conditional configurations...\n'));
|
|
214
245
|
for (const [varName, conditions] of Object.entries(templateConfig.conditionalRemove)) {
|
|
215
246
|
const value = String(answers[varName]);
|
|
216
247
|
const filesToRemove = conditions[value];
|
|
@@ -219,7 +250,7 @@ export function handleConditionalRemoves(projectName, templateConfig, answers) {
|
|
|
219
250
|
const filePath = path.join(projectName, file);
|
|
220
251
|
if (fs.existsSync(filePath)) {
|
|
221
252
|
fs.rmSync(filePath, { recursive: true, force: true });
|
|
222
|
-
console.log(chalk.gray(`
|
|
253
|
+
console.log(chalk.gray(` Removed: ${file}`));
|
|
223
254
|
}
|
|
224
255
|
}
|
|
225
256
|
}
|
|
@@ -233,16 +264,16 @@ export function handleConditionalRemoves(projectName, templateConfig, answers) {
|
|
|
233
264
|
export function renameFiles(projectName, templateConfig) {
|
|
234
265
|
if (!templateConfig.renameFiles)
|
|
235
266
|
return;
|
|
236
|
-
console.log(chalk.blue('
|
|
267
|
+
console.log(chalk.blue('Renaming files...\n'));
|
|
237
268
|
for (const [source, destination] of Object.entries(templateConfig.renameFiles)) {
|
|
238
269
|
const sourcePath = path.join(projectName, source);
|
|
239
270
|
const destPath = path.join(projectName, destination);
|
|
240
271
|
if (fs.existsSync(sourcePath)) {
|
|
241
272
|
fs.renameSync(sourcePath, destPath);
|
|
242
|
-
console.log(chalk.gray(`
|
|
273
|
+
console.log(chalk.gray(` ${source} → ${destination}`));
|
|
243
274
|
}
|
|
244
275
|
else {
|
|
245
|
-
console.log(chalk.yellow(`
|
|
276
|
+
console.log(chalk.yellow(` File not found: ${source} (skipping rename)`));
|
|
246
277
|
}
|
|
247
278
|
}
|
|
248
279
|
console.log();
|
|
@@ -251,13 +282,13 @@ export function renameFiles(projectName, templateConfig) {
|
|
|
251
282
|
* Remove meta files that shouldn't be in the user's project
|
|
252
283
|
*/
|
|
253
284
|
export function removeMetaFiles(projectName, templateConfig) {
|
|
254
|
-
console.log(chalk.blue('
|
|
285
|
+
console.log(chalk.blue('Cleaning up...\n'));
|
|
255
286
|
const filesToRemove = templateConfig.removeAfterInstall || [];
|
|
256
287
|
for (const file of filesToRemove) {
|
|
257
288
|
const filePath = path.join(projectName, file);
|
|
258
289
|
if (fs.existsSync(filePath)) {
|
|
259
290
|
fs.rmSync(filePath, { recursive: true, force: true });
|
|
260
|
-
console.log(chalk.gray(`
|
|
291
|
+
console.log(chalk.gray(` Removed: ${file}`));
|
|
261
292
|
}
|
|
262
293
|
}
|
|
263
294
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-template.js","sourceRoot":"","sources":["../src/process-template.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"process-template.js","sourceRoot":"","sources":["../src/process-template.ts"],"names":[],"mappings":"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"}
|
package/lib/prompts.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* User prompts for configuration
|
|
3
|
+
*/
|
|
4
|
+
import type { TemplateConfig } from './template-config.js';
|
|
2
5
|
/**
|
|
3
6
|
* Prompt user for configuration values
|
|
4
7
|
* @param nonInteractive - If true, skip prompts and use default/initial values
|
|
5
8
|
*/
|
|
6
|
-
export declare function promptUser(projectName: string, templateConfig: TemplateConfig, nonInteractive?: boolean): Promise<Record<string,
|
|
9
|
+
export declare function promptUser(projectName: string, templateConfig: TemplateConfig, nonInteractive?: boolean): Promise<Record<string, unknown>>;
|
|
7
10
|
//# sourceMappingURL=prompts.d.ts.map
|
package/lib/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQzE;;;GAGG;AACH,wBAAsB,UAAU,CAC5B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC9B,cAAc,UAAQ,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0HlC"}
|
package/lib/prompts.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* User prompts for configuration
|
|
3
3
|
*/
|
|
4
|
-
import prompts from 'prompts';
|
|
5
4
|
import chalk from 'chalk';
|
|
6
|
-
import
|
|
5
|
+
import prompts from 'prompts';
|
|
6
|
+
import { applyMapTransform, applyTransform, concatValues } from './transforms.js';
|
|
7
7
|
/**
|
|
8
8
|
* Prompt user for configuration values
|
|
9
9
|
* @param nonInteractive - If true, skip prompts and use default/initial values
|
|
@@ -13,9 +13,9 @@ export async function promptUser(projectName, templateConfig, nonInteractive = f
|
|
|
13
13
|
return {};
|
|
14
14
|
}
|
|
15
15
|
// Pre-populate PROJECT_NAME from the directory name — skip the prompt entirely
|
|
16
|
-
const filteredPrompts = templateConfig.prompts.filter(p => p.name !== 'PROJECT_NAME');
|
|
16
|
+
const filteredPrompts = templateConfig.prompts.filter((p) => p.name !== 'PROJECT_NAME');
|
|
17
17
|
// Process prompts - replace ${PROJECT_NAME} and other variables in initial values
|
|
18
|
-
const processedPrompts = filteredPrompts.map(p => {
|
|
18
|
+
const processedPrompts = filteredPrompts.map((p) => {
|
|
19
19
|
const prompt = { ...p };
|
|
20
20
|
// Replace ${PROJECT_NAME} in initial values
|
|
21
21
|
if (typeof prompt.initial === 'string') {
|
|
@@ -26,8 +26,9 @@ export async function promptUser(projectName, templateConfig, nonInteractive = f
|
|
|
26
26
|
if (typeof prompt.validate === 'string') {
|
|
27
27
|
const validateStr = prompt.validate;
|
|
28
28
|
if (validateStr.includes('=>') || validateStr.includes('function')) {
|
|
29
|
-
// It's a function string - evaluate it
|
|
29
|
+
// It's a function string - evaluate it (template authors author validators here)
|
|
30
30
|
try {
|
|
31
|
+
// biome-ignore lint/security/noGlobalEval: plugin templates author trusted validator code that must run dynamically
|
|
31
32
|
prompt.validate = eval(validateStr);
|
|
32
33
|
}
|
|
33
34
|
catch {
|
|
@@ -67,11 +68,11 @@ export async function promptUser(projectName, templateConfig, nonInteractive = f
|
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
70
|
else {
|
|
70
|
-
console.log(chalk.blue('
|
|
71
|
+
console.log(chalk.blue('Configure your project:\n'));
|
|
71
72
|
const userAnswers = await prompts(processedPrompts, {
|
|
72
73
|
onCancel: () => {
|
|
73
74
|
throw new Error('Installation cancelled by user');
|
|
74
|
-
}
|
|
75
|
+
},
|
|
75
76
|
});
|
|
76
77
|
// Check if all prompts were answered
|
|
77
78
|
if (Object.keys(userAnswers).length !== processedPrompts.length) {
|
|
@@ -86,7 +87,7 @@ export async function promptUser(projectName, templateConfig, nonInteractive = f
|
|
|
86
87
|
if (derivedConfig.transform === 'concat') {
|
|
87
88
|
// Handle concat transform with multiple source fields
|
|
88
89
|
const sourceFields = Array.isArray(derivedConfig.from) ? derivedConfig.from : [derivedConfig.from];
|
|
89
|
-
const values = sourceFields.map(field => {
|
|
90
|
+
const values = sourceFields.map((field) => {
|
|
90
91
|
const value = answers[field];
|
|
91
92
|
if (value === undefined) {
|
|
92
93
|
throw new Error(`Source field "${field}" not found in answers`);
|
|
@@ -95,6 +96,18 @@ export async function promptUser(projectName, templateConfig, nonInteractive = f
|
|
|
95
96
|
});
|
|
96
97
|
answers[targetName] = concatValues(values, derivedConfig.separator || '');
|
|
97
98
|
}
|
|
99
|
+
else if (derivedConfig.transform === 'map') {
|
|
100
|
+
// Look up the source value in a fixed map
|
|
101
|
+
if (!derivedConfig.map) {
|
|
102
|
+
throw new Error(`"map" transform requires a "map" field`);
|
|
103
|
+
}
|
|
104
|
+
const sourceField = Array.isArray(derivedConfig.from) ? derivedConfig.from[0] : derivedConfig.from;
|
|
105
|
+
const sourceValue = answers[sourceField];
|
|
106
|
+
if (sourceValue === undefined) {
|
|
107
|
+
throw new Error(`Source field "${sourceField}" not found in answers`);
|
|
108
|
+
}
|
|
109
|
+
answers[targetName] = applyMapTransform(String(sourceValue), derivedConfig.map);
|
|
110
|
+
}
|
|
98
111
|
else {
|
|
99
112
|
// Handle single-source transforms
|
|
100
113
|
const sourceField = Array.isArray(derivedConfig.from) ? derivedConfig.from[0] : derivedConfig.from;
|
package/lib/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
package/lib/template-config.d.ts
CHANGED
|
@@ -68,10 +68,12 @@ export interface PreInstallConfig {
|
|
|
68
68
|
export interface DerivedVariable {
|
|
69
69
|
/** Source variable name(s) to derive from. Can be a single string or array of strings for concat transform */
|
|
70
70
|
from: string | string[];
|
|
71
|
-
/** Transformation to apply: "pascalCase", "camelCase", "kebabCase", "snakeCase", "titleCase", "upperCase", "lowerCase", "concat" */
|
|
71
|
+
/** Transformation to apply: "pascalCase", "camelCase", "kebabCase", "snakeCase", "titleCase", "upperCase", "lowerCase", "concat", "map" */
|
|
72
72
|
transform: string;
|
|
73
73
|
/** Separator for concat transform (default: "") */
|
|
74
74
|
separator?: string;
|
|
75
|
+
/** Lookup table for the "map" transform: { sourceValue: derivedValue } */
|
|
76
|
+
map?: Record<string, string>;
|
|
75
77
|
}
|
|
76
78
|
/**
|
|
77
79
|
* Configuration for a post-install command
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-config.d.ts","sourceRoot":"","sources":["../src/template-config.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;
|
|
1
|
+
{"version":3,"file":"template-config.d.ts","sourceRoot":"","sources":["../src/template-config.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC3B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAEhB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAEhC,2DAA2D;IAC3D,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,sEAAsE;IACtE,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAE7D;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE1C;;;OAGG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,0CAA0C;IAC1C,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAE/B,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,8GAA8G;IAC9G,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,2IAA2I;IAC3I,SAAS,EAAE,MAAM,CAAC;IAElB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAEhB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,yCAAyC;IACzC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAE/B,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IAEb,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IAEb,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAetE"}
|
package/lib/template-config.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Template configuration types and reading
|
|
3
3
|
*/
|
|
4
|
-
import fs from 'fs';
|
|
5
|
-
import path from 'path';
|
|
4
|
+
import fs from 'node:fs';
|
|
5
|
+
import path from 'node:path';
|
|
6
6
|
import { config } from './configuration.js';
|
|
7
7
|
/**
|
|
8
8
|
* Read template.config.json from the downloaded template
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-config.js","sourceRoot":"","sources":["../src/template-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"template-config.js","sourceRoot":"","sources":["../src/template-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAwK5C;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAErE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACX,2CAA2C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACxG,CAAC;IACN,CAAC;AACL,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TemplateDefinition } from './configuration.js';
|
|
1
|
+
import { type TemplateDefinition } from './configuration.js';
|
|
2
2
|
/**
|
|
3
3
|
* Select a template (only prompts if multiple templates are available)
|
|
4
4
|
* Returns the selected template definition with the resolved git ref applied
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-selector.d.ts","sourceRoot":"","sources":["../src/template-selector.ts"],"names":[],"mappings":"AAKA,OAAO,EAAU,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"template-selector.d.ts","sourceRoot":"","sources":["../src/template-selector.ts"],"names":[],"mappings":"AAKA,OAAO,EAAU,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAwBrE;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgDhH"}
|
package/lib/template-selector.js
CHANGED
|
@@ -34,9 +34,9 @@ export async function selectTemplate(branchOverride, templateName) {
|
|
|
34
34
|
let selectedTemplate;
|
|
35
35
|
if (templateName) {
|
|
36
36
|
// Non-interactive: find template by name (case-insensitive)
|
|
37
|
-
const match = templates.find(t => t.name.toLowerCase() === templateName.toLowerCase());
|
|
37
|
+
const match = templates.find((t) => t.name.toLowerCase() === templateName.toLowerCase());
|
|
38
38
|
if (!match) {
|
|
39
|
-
const available = templates.map(t => ` - ${t.name}`).join('\n');
|
|
39
|
+
const available = templates.map((t) => ` - ${t.name}`).join('\n');
|
|
40
40
|
throw new Error(`Template "${templateName}" not found. Available templates:\n${available}`);
|
|
41
41
|
}
|
|
42
42
|
selectedTemplate = match;
|
|
@@ -47,20 +47,20 @@ export async function selectTemplate(branchOverride, templateName) {
|
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
49
|
// Multiple templates - let user choose
|
|
50
|
-
console.log(chalk.blue('
|
|
50
|
+
console.log(chalk.blue('Template Selection\n'));
|
|
51
51
|
const response = await prompts({
|
|
52
52
|
type: 'select',
|
|
53
53
|
name: 'template',
|
|
54
54
|
message: 'Which type of project would you like to create?',
|
|
55
55
|
choices: templates.map((template, index) => ({
|
|
56
56
|
title: template.name,
|
|
57
|
-
value: index
|
|
57
|
+
value: index,
|
|
58
58
|
})),
|
|
59
|
-
initial: 0
|
|
59
|
+
initial: 0,
|
|
60
60
|
}, {
|
|
61
61
|
onCancel: () => {
|
|
62
62
|
throw new Error('Installation cancelled by user');
|
|
63
|
-
}
|
|
63
|
+
},
|
|
64
64
|
});
|
|
65
65
|
console.log();
|
|
66
66
|
selectedTemplate = templates[response.template];
|
|
@@ -69,7 +69,7 @@ export async function selectTemplate(branchOverride, templateName) {
|
|
|
69
69
|
const ref = resolveTemplateRef(branchOverride);
|
|
70
70
|
return {
|
|
71
71
|
...selectedTemplate,
|
|
72
|
-
repository: `${selectedTemplate.repository}#${ref}
|
|
72
|
+
repository: `${selectedTemplate.repository}#${ref}`,
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
75
|
//# sourceMappingURL=template-selector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-selector.js","sourceRoot":"","sources":["../src/template-selector.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"template-selector.js","sourceRoot":"","sources":["../src/template-selector.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAA2B,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,cAAuB;IAC/C,IAAI,cAAc,EAAE,CAAC;QACjB,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,cAAuB,EAAE,YAAqB;IAC/E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAEnC,IAAI,gBAAoC,CAAC;IAEzC,IAAI,YAAY,EAAE,CAAC;QACf,4DAA4D;QAC5D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,sCAAsC,SAAS,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,gBAAgB,GAAG,KAAK,CAAC;IAC7B,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,2CAA2C;QAC3C,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACJ,uCAAuC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC1B;YACI,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,iDAAiD;YAC1D,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACzC,KAAK,EAAE,QAAQ,CAAC,IAAI;gBACpB,KAAK,EAAE,KAAK;aACf,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;SACb,EACD;YACI,QAAQ,EAAE,GAAG,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACtD,CAAC;SACJ,CACJ,CAAC;QAEF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,yCAAyC;IACzC,MAAM,GAAG,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAC/C,OAAO;QACH,GAAG,gBAAgB;QACnB,UAAU,EAAE,GAAG,gBAAgB,CAAC,UAAU,IAAI,GAAG,EAAE;KACtD,CAAC;AACN,CAAC"}
|
package/lib/transforms.d.ts
CHANGED
|
@@ -34,4 +34,9 @@ export declare function applyTransform(value: string, transform: string): string
|
|
|
34
34
|
* Concatenate multiple values with a separator
|
|
35
35
|
*/
|
|
36
36
|
export declare function concatValues(values: string[], separator?: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Look up a value in a map (used for the "map" transform)
|
|
39
|
+
* @throws Error if the key is not present in the map
|
|
40
|
+
*/
|
|
41
|
+
export declare function applyMapTransform(value: string, map: Record<string, string>): string;
|
|
37
42
|
//# sourceMappingURL=transforms.d.ts.map
|
package/lib/transforms.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transforms.d.ts","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM,CAE7E"}
|
|
1
|
+
{"version":3,"file":"transforms.d.ts","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM,CAE7E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAMpF"}
|