@aws/nx-plugin 0.90.0 → 0.90.1
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/package.json +1 -1
- package/src/connection/generator.d.ts +2 -2
- package/src/connection/generator.js +13 -13
- package/src/connection/generator.js.map +1 -1
- package/src/mcp-server/generator-info.d.ts +8 -4
- package/src/mcp-server/generator-info.js +63 -15
- package/src/mcp-server/generator-info.js.map +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +1 -3
- package/src/ts/nx-generator/generator.d.ts +1 -1
- package/src/utils/ast.d.ts +3 -23
- package/src/utils/ast.js +21 -152
- package/src/utils/ast.js.map +1 -1
- package/src/utils/commands.d.ts +33 -0
- package/src/utils/commands.js +55 -0
- package/src/utils/commands.js.map +1 -0
- package/src/utils/config/__snapshots__/utils.spec.ts.snap +88 -0
- package/src/utils/config/utils.d.ts +2 -1
- package/src/utils/config/utils.js +47 -29
- package/src/utils/config/utils.js.map +1 -1
- package/src/utils/generators.d.ts +13 -0
- package/src/utils/generators.js +26 -0
- package/src/utils/generators.js.map +1 -0
- package/src/utils/nx.d.ts +4 -10
- package/src/utils/nx.js +5 -19
- package/src/utils/nx.js.map +1 -1
- package/src/utils/pkg-manager.d.ts +2 -22
- package/src/utils/pkg-manager.js +2 -7
- package/src/utils/pkg-manager.js.map +1 -1
package/package.json
CHANGED
|
@@ -54,9 +54,9 @@ export declare const findComponentInMetadata: (projectConfiguration: ProjectConf
|
|
|
54
54
|
/**
|
|
55
55
|
* Resolve the connection to use, considering source/target projects and components.
|
|
56
56
|
*/
|
|
57
|
-
export declare const resolveConnection: (tree: Tree, options: ConnectionGeneratorSchema, supportedConnections?: readonly Connection[]) => ResolvedConnection
|
|
57
|
+
export declare const resolveConnection: (tree: Tree, options: ConnectionGeneratorSchema, supportedConnections?: readonly Connection[]) => Promise<ResolvedConnection>;
|
|
58
58
|
/**
|
|
59
59
|
* Determine whether the given project is of a known project type
|
|
60
60
|
*/
|
|
61
|
-
export declare const determineProjectType: (tree: Tree, projectName: string) => ProjectType | undefined
|
|
61
|
+
export declare const determineProjectType: (tree: Tree, projectName: string) => Promise<ProjectType | undefined>;
|
|
62
62
|
export default connectionGenerator;
|
|
@@ -68,7 +68,7 @@ const CONNECTION_GENERATORS = {
|
|
|
68
68
|
* Generator for a connection between two projects
|
|
69
69
|
*/
|
|
70
70
|
const connectionGenerator = async (tree, options) => {
|
|
71
|
-
const resolved = (0, exports.resolveConnection)(tree, options);
|
|
71
|
+
const resolved = await (0, exports.resolveConnection)(tree, options);
|
|
72
72
|
const connectionKey = `${resolved.connection.source} -> ${resolved.connection.target}`;
|
|
73
73
|
return await CONNECTION_GENERATORS[connectionKey](tree, {
|
|
74
74
|
sourceProject: options.sourceProject,
|
|
@@ -94,8 +94,8 @@ exports.findComponentInMetadata = findComponentInMetadata;
|
|
|
94
94
|
* - The project-level type (if it's a supported type)
|
|
95
95
|
* - Each component's generator id as a candidate type
|
|
96
96
|
*/
|
|
97
|
-
const gatherCandidates = (tree, projectConfig) => {
|
|
98
|
-
const projectType = determineProjectTypeFromConfig(tree, projectConfig);
|
|
97
|
+
const gatherCandidates = async (tree, projectConfig) => {
|
|
98
|
+
const projectType = await determineProjectTypeFromConfig(tree, projectConfig);
|
|
99
99
|
const components = projectConfig.metadata?.components ?? [];
|
|
100
100
|
return [
|
|
101
101
|
...(projectType ? [{ type: projectType }] : []),
|
|
@@ -140,15 +140,15 @@ const filterConnectionCandidatesForComponentReference = (componentRef, projectCo
|
|
|
140
140
|
/**
|
|
141
141
|
* Resolve the connection to use, considering source/target projects and components.
|
|
142
142
|
*/
|
|
143
|
-
const resolveConnection = (tree, options, supportedConnections = SUPPORTED_CONNECTIONS) => {
|
|
143
|
+
const resolveConnection = async (tree, options, supportedConnections = SUPPORTED_CONNECTIONS) => {
|
|
144
144
|
const sourceConfig = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.sourceProject);
|
|
145
145
|
const targetConfig = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.targetProject);
|
|
146
146
|
// Validate explicitly specified components exist
|
|
147
147
|
validateComponent(options.sourceComponent, sourceConfig, 'source');
|
|
148
148
|
validateComponent(options.targetComponent, targetConfig, 'target');
|
|
149
149
|
// Gather and narrow candidates
|
|
150
|
-
const sourceCandidates = filterConnectionCandidatesForComponentReference(options.sourceComponent, sourceConfig, gatherCandidates(tree, sourceConfig), supportedConnections, 'source');
|
|
151
|
-
const targetCandidates = filterConnectionCandidatesForComponentReference(options.targetComponent, targetConfig, gatherCandidates(tree, targetConfig), supportedConnections, 'target');
|
|
150
|
+
const sourceCandidates = filterConnectionCandidatesForComponentReference(options.sourceComponent, sourceConfig, await gatherCandidates(tree, sourceConfig), supportedConnections, 'source');
|
|
151
|
+
const targetCandidates = filterConnectionCandidatesForComponentReference(options.targetComponent, targetConfig, await gatherCandidates(tree, targetConfig), supportedConnections, 'target');
|
|
152
152
|
// Cross-product candidates and find supported connections
|
|
153
153
|
const matches = [];
|
|
154
154
|
for (const source of sourceCandidates) {
|
|
@@ -196,18 +196,18 @@ exports.resolveConnection = resolveConnection;
|
|
|
196
196
|
/**
|
|
197
197
|
* Determine whether the given project is of a known project type
|
|
198
198
|
*/
|
|
199
|
-
const determineProjectType = (tree, projectName) => {
|
|
199
|
+
const determineProjectType = async (tree, projectName) => {
|
|
200
200
|
const projectConfiguration = (0, nx_1.readProjectConfigurationUnqualified)(tree, projectName);
|
|
201
|
-
return determineProjectTypeFromConfig(tree, projectConfiguration);
|
|
201
|
+
return await determineProjectTypeFromConfig(tree, projectConfiguration);
|
|
202
202
|
};
|
|
203
203
|
exports.determineProjectType = determineProjectType;
|
|
204
204
|
/**
|
|
205
205
|
* Determine whether the given project configuration is of a known project type
|
|
206
206
|
*/
|
|
207
|
-
const determineProjectTypeFromConfig = (tree, projectConfiguration) => {
|
|
207
|
+
const determineProjectTypeFromConfig = async (tree, projectConfiguration) => {
|
|
208
208
|
// NB: if adding new checks, ensure these go from most to least specific
|
|
209
209
|
// eg. react website is more specific than typescript project
|
|
210
|
-
if (isTrpcApi(tree, projectConfiguration)) {
|
|
210
|
+
if (await isTrpcApi(tree, projectConfiguration)) {
|
|
211
211
|
return 'ts#trpc-api';
|
|
212
212
|
}
|
|
213
213
|
if (isFastApi(tree, projectConfiguration)) {
|
|
@@ -223,7 +223,7 @@ const determineProjectTypeFromConfig = (tree, projectConfiguration) => {
|
|
|
223
223
|
};
|
|
224
224
|
const sourceRoot = (projectConfiguration) => projectConfiguration.sourceRoot ??
|
|
225
225
|
(0, devkit_1.joinPathFragments)(projectConfiguration.root, 'src');
|
|
226
|
-
const isTrpcApi = (tree, projectConfiguration) => {
|
|
226
|
+
const isTrpcApi = async (tree, projectConfiguration) => {
|
|
227
227
|
// If the project.json says it's a trpc api, there's no need for introspection
|
|
228
228
|
if (projectConfiguration.metadata?.apiType === 'trpc') {
|
|
229
229
|
return true;
|
|
@@ -234,7 +234,7 @@ const isTrpcApi = (tree, projectConfiguration) => {
|
|
|
234
234
|
return false;
|
|
235
235
|
}
|
|
236
236
|
// If the index file exports an AppRouter, it's a trpc api
|
|
237
|
-
if ((0, ast_1.hasExportDeclaration)(indexTs, 'AppRouter')) {
|
|
237
|
+
if (await (0, ast_1.hasExportDeclaration)(indexTs, 'AppRouter')) {
|
|
238
238
|
return true;
|
|
239
239
|
}
|
|
240
240
|
// If there's a src/router.ts or src/lambdas/router.ts which exports an AppRouter, it's a trpc api
|
|
@@ -243,7 +243,7 @@ const isTrpcApi = (tree, projectConfiguration) => {
|
|
|
243
243
|
if (trpcRouter === null) {
|
|
244
244
|
return false;
|
|
245
245
|
}
|
|
246
|
-
if ((0, ast_1.hasExportDeclaration)(trpcRouter, 'AppRouter')) {
|
|
246
|
+
if (await (0, ast_1.hasExportDeclaration)(trpcRouter, 'AppRouter')) {
|
|
247
247
|
return true;
|
|
248
248
|
}
|
|
249
249
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/connection/generator.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,uCAA2E;AAE3E,gFAAyD;AACzD,sCAAoD;AACpD,wCAAyC;AACzC,uFAAmE;AACnE,oCAGqB;AACrB,2DAA4E;AAC5E,0DAA0E;AAC1E,6FAAkF;AAClF,qGAAgG;AAChG,qGAAgG;AAEhG;;;;GAIG;AACH,MAAM,uBAAuB,GAAG;IAC9B,aAAa;IACb,aAAa;IACb,OAAO;IACP,QAAQ;CACA,CAAC;AAMX;;;GAGG;AACU,QAAA,0BAA0B,GAAG,GAAG,CAAC;AAY9C;;;GAGG;AACH,MAAM,qBAAqB,GAAG;IAC5B,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE;IAC1C,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE;IAC1C,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;IACrC,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,EAAE;IACvD,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,EAAE;IACvD,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,EAAE;IACvD,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,EAAE;CACf,CAAC;AAqB3C,MAAM,qBAAqB,GAAG;IAC5B,sBAAsB,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CACxC,IAAA,mBAAkB,EAAC,IAAI,EAAE;QACvB,mBAAmB,EAAE,OAAO,CAAC,aAAa;QAC1C,kBAAkB,EAAE,OAAO,CAAC,aAAa;KAC1C,CAAC;IACJ,sBAAsB,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CACxC,IAAA,mBAAqB,EAAC,IAAI,EAAE;QAC1B,mBAAmB,EAAE,OAAO,CAAC,aAAa;QAC1C,kBAAkB,EAAE,OAAO,CAAC,aAAa;KAC1C,CAAC;IACJ,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CACnC,IAAA,mBAA8B,EAAC,IAAI,EAAE;QACnC,mBAAmB,EAAE,OAAO,CAAC,aAAa;QAC1C,+BAA+B,EAAE,OAAO,CAAC,aAAa;KACvD,CAAC;IACJ,mCAAmC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CACrD,IAAA,mBAAoC,EAAC,IAAI,EAAE,OAAO,CAAC;IACrD,mCAAmC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CACrD,IAAA,mBAAoC,EAAC,IAAI,EAAE,OAAO,CAAC;IACrD,mCAAmC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CACrD,IAAA,mBAAoC,EAAC,IAAI,EAAE,OAAO,CAAC;IACrD,mCAAmC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CACrD,IAAA,mBAAoC,EAAC,IAAI,EAAE,OAAO,CAAC;CAItD,CAAC;AAEF;;GAEG;AACI,MAAM,mBAAmB,GAAG,KAAK,EACtC,IAAU,EACV,OAAkC,EAClC,EAAE;IACF,MAAM,QAAQ,GAAG,IAAA,yBAAiB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/connection/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,16 +12,20 @@ export declare const renderGeneratorInfo: (packageManager: string, info: NxGener
|
|
|
12
12
|
* If the generator has guidePages in generators.json we fetch all of those, otherwise we
|
|
13
13
|
* try to fetch a guide with the generator name kebab-cased.
|
|
14
14
|
*/
|
|
15
|
-
export declare const fetchGuidePagesForGenerator: (info: NxGeneratorInfo, generators: NxGeneratorInfo[], packageManager?: string) => Promise<string>;
|
|
15
|
+
export declare const fetchGuidePagesForGenerator: (info: NxGeneratorInfo, generators: NxGeneratorInfo[], packageManager?: string, snippetContentProvider?: SnippetContentProvider) => Promise<string>;
|
|
16
16
|
/**
|
|
17
17
|
* Fetch markdown guide pages from github
|
|
18
18
|
*/
|
|
19
|
-
export declare const fetchGuidePages: (guidePages: string[], generators: NxGeneratorInfo[], packageManager?: string) => Promise<string>;
|
|
19
|
+
export declare const fetchGuidePages: (guidePages: string[], generators: NxGeneratorInfo[], packageManager?: string, snippetContentProvider?: SnippetContentProvider) => Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* A function which retrieves snippet content given a snippet name.
|
|
22
|
+
*/
|
|
23
|
+
export type SnippetContentProvider = (snippetName: string) => Promise<string> | string;
|
|
20
24
|
/**
|
|
21
25
|
* Fetch a snippet's content from github
|
|
22
26
|
*/
|
|
23
|
-
export declare const fetchSnippet:
|
|
27
|
+
export declare const fetchSnippet: SnippetContentProvider;
|
|
24
28
|
/**
|
|
25
29
|
* Post-process a guide page to "inline" relevant components
|
|
26
30
|
*/
|
|
27
|
-
export declare const postProcessGuide: (guide: string, generators: NxGeneratorInfo[], packageManager?: string) => Promise<string>;
|
|
31
|
+
export declare const postProcessGuide: (guide: string, generators: NxGeneratorInfo[], packageManager?: string, snippetContentProvider?: SnippetContentProvider) => Promise<string>;
|
|
@@ -7,16 +7,12 @@ const tslib_1 = require("tslib");
|
|
|
7
7
|
* SPDX-License-Identifier: Apache-2.0
|
|
8
8
|
*/
|
|
9
9
|
const names_1 = require("../utils/names");
|
|
10
|
+
const commands_1 = require("../utils/commands");
|
|
10
11
|
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
11
12
|
/**
|
|
12
13
|
* Build a command to run nx
|
|
13
14
|
*/
|
|
14
|
-
const buildNxCommand = (command, pm) =>
|
|
15
|
-
? `${{
|
|
16
|
-
npm: 'npx',
|
|
17
|
-
bun: 'bunx',
|
|
18
|
-
}[pm] ?? pm} `
|
|
19
|
-
: ''}nx ${command}`;
|
|
15
|
+
const buildNxCommand = (command, pm) => pm ? (0, commands_1.buildPackageManagerExecCommand)(pm, `nx ${command}`) : `nx ${command}`;
|
|
20
16
|
exports.buildNxCommand = buildNxCommand;
|
|
21
17
|
const renderSchema = (schema) => Object.entries(schema.properties)
|
|
22
18
|
.map(([parameter, parameterSchema]) => `- ${parameter} [type: ${parameterSchema.type}]${(schema.required ?? []).includes(parameter) ? ` (required)` : ''} ${parameterSchema.description}`)
|
|
@@ -49,17 +45,17 @@ exports.renderGeneratorInfo = renderGeneratorInfo;
|
|
|
49
45
|
* If the generator has guidePages in generators.json we fetch all of those, otherwise we
|
|
50
46
|
* try to fetch a guide with the generator name kebab-cased.
|
|
51
47
|
*/
|
|
52
|
-
const fetchGuidePagesForGenerator = async (info, generators, packageManager) => {
|
|
53
|
-
return await (0, exports.fetchGuidePages)(info.guidePages ?? [(0, names_1.kebabCase)(info.id)], generators, packageManager);
|
|
48
|
+
const fetchGuidePagesForGenerator = async (info, generators, packageManager, snippetContentProvider) => {
|
|
49
|
+
return await (0, exports.fetchGuidePages)(info.guidePages ?? [(0, names_1.kebabCase)(info.id)], generators, packageManager, snippetContentProvider);
|
|
54
50
|
};
|
|
55
51
|
exports.fetchGuidePagesForGenerator = fetchGuidePagesForGenerator;
|
|
56
52
|
/**
|
|
57
53
|
* Fetch markdown guide pages from github
|
|
58
54
|
*/
|
|
59
|
-
const fetchGuidePages = async (guidePages, generators, packageManager) => {
|
|
55
|
+
const fetchGuidePages = async (guidePages, generators, packageManager, snippetContentProvider) => {
|
|
60
56
|
const guides = await Promise.allSettled(guidePages.map(async (guide) => await (await fetch(`https://raw.githubusercontent.com/awslabs/nx-plugin-for-aws/refs/heads/main/docs/src/content/docs/en/guides/${guide}.mdx`)).text()));
|
|
61
57
|
const fulfilled = guides.filter((result) => result.status === 'fulfilled');
|
|
62
|
-
const processed = await Promise.all(fulfilled.map((result) => (0, exports.postProcessGuide)(result.value, generators, packageManager)));
|
|
58
|
+
const processed = await Promise.all(fulfilled.map((result) => (0, exports.postProcessGuide)(result.value, generators, packageManager, snippetContentProvider)));
|
|
63
59
|
return processed.join('\n\n');
|
|
64
60
|
};
|
|
65
61
|
exports.fetchGuidePages = fetchGuidePages;
|
|
@@ -96,7 +92,8 @@ const findGeneratorAndSchema = (generators, generatorId) => {
|
|
|
96
92
|
/**
|
|
97
93
|
* Post-process a guide page to "inline" relevant components
|
|
98
94
|
*/
|
|
99
|
-
const postProcessGuide = async (guide, generators, packageManager) => {
|
|
95
|
+
const postProcessGuide = async (guide, generators, packageManager, snippetContentProvider) => {
|
|
96
|
+
const getSnippetContent = snippetContentProvider ?? exports.fetchSnippet;
|
|
100
97
|
// Replace <Snippet /> with fetched snippet content
|
|
101
98
|
// Use a regex that matches the full self-closing tag, allowing / in attribute values
|
|
102
99
|
const snippetRegex = /<Snippet\s+((?:[^/]|\/(?!>))+)\s*\/>/g;
|
|
@@ -110,12 +107,12 @@ const postProcessGuide = async (guide, generators, packageManager) => {
|
|
|
110
107
|
return { original: match[0], replacement: match[0] };
|
|
111
108
|
}
|
|
112
109
|
const snippetName = nameMatch[1];
|
|
113
|
-
const snippetContent = await (
|
|
110
|
+
const snippetContent = await getSnippetContent(snippetName);
|
|
114
111
|
if (!snippetContent) {
|
|
115
112
|
return { original: match[0], replacement: match[0] };
|
|
116
113
|
}
|
|
117
114
|
// Recursively post-process the snippet content
|
|
118
|
-
const processedContent = await (0, exports.postProcessGuide)(snippetContent.trim(), generators, packageManager);
|
|
115
|
+
const processedContent = await (0, exports.postProcessGuide)(snippetContent.trim(), generators, packageManager, getSnippetContent);
|
|
119
116
|
return {
|
|
120
117
|
original: match[0],
|
|
121
118
|
replacement: `<Snippet name="${snippetName}">\n${processedContent}\n</Snippet>`,
|
|
@@ -139,7 +136,7 @@ const postProcessGuide = async (guide, generators, packageManager) => {
|
|
|
139
136
|
}
|
|
140
137
|
});
|
|
141
138
|
// Replace <RunGenerator /> with renderGeneratorCommand
|
|
142
|
-
processedGuide = processedGuide.replace(/<RunGenerator\s+([
|
|
139
|
+
processedGuide = processedGuide.replace(/<RunGenerator\s+((?:[^/]|\/(?!>))+)\s*\/>/g, (match, attributes) => {
|
|
143
140
|
// Extract generator parameter
|
|
144
141
|
const generatorMatch = attributes.match(/generator=["']([^"']+)["']/);
|
|
145
142
|
if (!generatorMatch) {
|
|
@@ -153,7 +150,7 @@ const postProcessGuide = async (guide, generators, packageManager) => {
|
|
|
153
150
|
return renderGeneratorCommand(generatorId, info.schema, packageManager);
|
|
154
151
|
});
|
|
155
152
|
// Replace <GeneratorParameters /> with renderSchema
|
|
156
|
-
processedGuide = processedGuide.replace(/<GeneratorParameters\s+([
|
|
153
|
+
processedGuide = processedGuide.replace(/<GeneratorParameters\s+((?:[^/]|\/(?!>))+)\s*\/>/g, (match, attributes) => {
|
|
157
154
|
// Extract generator parameter
|
|
158
155
|
const generatorMatch = attributes.match(/generator=["']([^"']+)["']/);
|
|
159
156
|
if (!generatorMatch) {
|
|
@@ -166,6 +163,57 @@ const postProcessGuide = async (guide, generators, packageManager) => {
|
|
|
166
163
|
}
|
|
167
164
|
return renderSchema(info.schema);
|
|
168
165
|
});
|
|
166
|
+
// Replace <CreateNxWorkspaceCommand /> with npx create-nx-workspace command
|
|
167
|
+
processedGuide = processedGuide.replace(/<CreateNxWorkspaceCommand\s+((?:[^/]|\/(?!>))+)\s*\/>/g, (match, attributes) => {
|
|
168
|
+
const workspaceMatch = attributes.match(/workspace=["']([^"']+)["']/);
|
|
169
|
+
if (!workspaceMatch)
|
|
170
|
+
return match;
|
|
171
|
+
const workspace = workspaceMatch[1];
|
|
172
|
+
const iacMatch = attributes.match(/iacProvider=["']([^"']+)["']/);
|
|
173
|
+
const iacProvider = iacMatch
|
|
174
|
+
? iacMatch[1]
|
|
175
|
+
: undefined;
|
|
176
|
+
const pm = packageManager ?? 'pnpm';
|
|
177
|
+
return `\`\`\`bash\n${(0, commands_1.buildCreateNxWorkspaceCommand)(pm, workspace, iacProvider)}\n\`\`\``;
|
|
178
|
+
});
|
|
179
|
+
// Replace <InstallCommand /> with install command
|
|
180
|
+
processedGuide = processedGuide.replace(/<InstallCommand\s+((?:[^/]|\/(?!>))+)\s*\/>/g, (match, attributes) => {
|
|
181
|
+
const pkgMatch = attributes.match(/pkg=(?:["']([^"']+)["']|\{([^}]+)\})/);
|
|
182
|
+
if (!pkgMatch)
|
|
183
|
+
return match;
|
|
184
|
+
const pkg = pkgMatch[1] || pkgMatch[2];
|
|
185
|
+
const isDev = /dev/.test(attributes);
|
|
186
|
+
const pm = packageManager ?? 'pnpm';
|
|
187
|
+
return `\`\`\`bash\n${(0, commands_1.buildInstallCommand)(pm, pkg, isDev)}\n\`\`\``;
|
|
188
|
+
});
|
|
189
|
+
// Replace <PackageManagerShortCommand /> with short command
|
|
190
|
+
processedGuide = processedGuide.replace(/<PackageManagerShortCommand\s+commands={([^}]+)}\s*\/>/g, (match, commandsMatch) => {
|
|
191
|
+
try {
|
|
192
|
+
const commands = JSON.parse(commandsMatch
|
|
193
|
+
.replaceAll("\\'", '__ESCAPED_SINGLE_QUOTE__')
|
|
194
|
+
.replaceAll("'", '"')
|
|
195
|
+
.replaceAll('__ESCAPED_SINGLE_QUOTE__', "\\'"));
|
|
196
|
+
const pm = packageManager ?? 'pnpm';
|
|
197
|
+
return `\`\`\`bash\n${commands.map((command) => (0, commands_1.buildPackageManagerShortCommand)(pm, command)).join('\n')}\n\`\`\``;
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
return match;
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
// Replace <PackageManagerExecCommand /> with exec command
|
|
204
|
+
processedGuide = processedGuide.replace(/<PackageManagerExecCommand\s+commands={([^}]+)}\s*\/>/g, (match, commandsMatch) => {
|
|
205
|
+
try {
|
|
206
|
+
const commands = JSON.parse(commandsMatch
|
|
207
|
+
.replaceAll("\\'", '__ESCAPED_SINGLE_QUOTE__')
|
|
208
|
+
.replaceAll("'", '"')
|
|
209
|
+
.replaceAll('__ESCAPED_SINGLE_QUOTE__', "\\'"));
|
|
210
|
+
const pm = packageManager ?? 'pnpm';
|
|
211
|
+
return `\`\`\`bash\n${commands.map((command) => (0, commands_1.buildPackageManagerExecCommand)(pm, command)).join('\n')}\n\`\`\``;
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return match;
|
|
215
|
+
}
|
|
216
|
+
});
|
|
169
217
|
return processedGuide;
|
|
170
218
|
};
|
|
171
219
|
exports.postProcessGuide = postProcessGuide;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator-info.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/mcp-server/generator-info.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,0CAA2C;
|
|
1
|
+
{"version":3,"file":"generator-info.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/mcp-server/generator-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -162,9 +162,7 @@ Learn more:
|
|
|
162
162
|
exports[`preset generator > should run successfully > aws-nx-plugin.config.mts 1`] = `
|
|
163
163
|
"import { AwsNxPluginConfig } from '@aws/nx-plugin';
|
|
164
164
|
|
|
165
|
-
export default {
|
|
166
|
-
iac: { provider: 'CDK' },
|
|
167
|
-
} satisfies AwsNxPluginConfig;
|
|
165
|
+
export default { iac: { provider: 'CDK' } } satisfies AwsNxPluginConfig;
|
|
168
166
|
"
|
|
169
167
|
`;
|
|
170
168
|
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { GeneratorCallback, Tree } from '@nx/devkit';
|
|
6
6
|
import { TsNxGeneratorGeneratorSchema } from './schema';
|
|
7
|
-
export declare const NX_GENERATOR_GENERATOR_INFO: import("../../utils/
|
|
7
|
+
export declare const NX_GENERATOR_GENERATOR_INFO: import("../../utils/generators").GeneratorInfo;
|
|
8
8
|
export declare const tsNxGeneratorGenerator: (tree: Tree, options: TsNxGeneratorGeneratorSchema) => Promise<GeneratorCallback | void>;
|
|
9
9
|
export default tsNxGeneratorGenerator;
|
package/src/utils/ast.d.ts
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { Tree } from '@nx/devkit';
|
|
6
|
-
import ts, { JsxChild, JsxClosingElement, JsxOpeningElement, Node } from 'typescript';
|
|
7
6
|
export declare const addDestructuredImport: (tree: Tree, filePath: string, variableNames: string[], from: string) => Promise<void>;
|
|
8
7
|
/**
|
|
9
8
|
* Adds an `import <variableName> from '<from>'; statement to the beginning of the file,
|
|
@@ -16,29 +15,10 @@ export declare const addSingleImport: (tree: Tree, filePath: string, variableNam
|
|
|
16
15
|
*/
|
|
17
16
|
export declare const addStarExport: (tree: Tree, filePath: string, from: string) => Promise<void>;
|
|
18
17
|
/**
|
|
19
|
-
*
|
|
18
|
+
* Return whether or not the given identifier is exported in the source file.
|
|
19
|
+
* Checks for both `export { Identifier }` and `export type Identifier = ...`.
|
|
20
20
|
*/
|
|
21
|
-
export declare const
|
|
22
|
-
/**
|
|
23
|
-
* Replace nodes matching a given selector if present, otherwise leaves the code unchanged
|
|
24
|
-
*/
|
|
25
|
-
export declare const replaceIfExists: (tree: Tree, filePath: string, selector: string, transformer: (node: Node) => Node) => void;
|
|
26
|
-
export declare const prependStatements: (tree: Tree, filePath: string, statements: ts.Statement[]) => void;
|
|
27
|
-
export declare const appendStatements: (tree: Tree, filePath: string, statements: ts.Statement[]) => void;
|
|
28
|
-
/**
|
|
29
|
-
* Query a typescript file in the tree using tsquery
|
|
30
|
-
*/
|
|
31
|
-
export declare const query: (tree: Tree, filePath: string, selector: string) => Node[];
|
|
32
|
-
export declare const createJsxElementFromIdentifier: (identifier: string, children: readonly JsxChild[]) => ts.JsxElement;
|
|
33
|
-
export declare const createJsxElement: (openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement) => ts.JsxElement;
|
|
34
|
-
/**
|
|
35
|
-
* Convert a given json object to its AST representation
|
|
36
|
-
*/
|
|
37
|
-
export declare const jsonToAst: (obj: unknown) => Node;
|
|
38
|
-
/**
|
|
39
|
-
* Return whether or not the given identifier is exported in the source file
|
|
40
|
-
*/
|
|
41
|
-
export declare const hasExportDeclaration: (source: string, identifierName: string) => boolean;
|
|
21
|
+
export declare const hasExportDeclaration: (source: string, identifierName: string) => Promise<boolean>;
|
|
42
22
|
/**
|
|
43
23
|
* Apply a GritQL pattern to a file in the Nx tree.
|
|
44
24
|
*/
|
package/src/utils/ast.js
CHANGED
|
@@ -1,30 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.matchGritQL = exports.applyGritQL = exports.hasExportDeclaration = exports.
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const tsquery_1 = require("@phenomnomnominal/tsquery");
|
|
6
|
-
const typescript_1 = tslib_1.__importStar(require("typescript"));
|
|
3
|
+
exports.matchGritQL = exports.applyGritQL = exports.hasExportDeclaration = exports.addStarExport = exports.addSingleImport = exports.addDestructuredImport = void 0;
|
|
7
4
|
const gritql_1 = require("@getgrit/gritql");
|
|
8
5
|
const assertFilePath = (tree, filePath) => {
|
|
9
6
|
if (!tree.exists(filePath)) {
|
|
10
7
|
throw new Error(`No file located at ${filePath}`);
|
|
11
8
|
}
|
|
12
9
|
};
|
|
13
|
-
const updateFile = (tree, filePath, doUpdate) => {
|
|
14
|
-
assertFilePath(tree, filePath);
|
|
15
|
-
const contents = tree.read(filePath)?.toString() ?? '';
|
|
16
|
-
const updatedContents = doUpdate(contents);
|
|
17
|
-
if (updatedContents !== contents) {
|
|
18
|
-
tree.write(filePath, updatedContents);
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
const createOrUpdateFile = (tree, filePath, doUpdate) => {
|
|
22
|
-
const contents = tree.read(filePath)?.toString();
|
|
23
|
-
const updatedContents = doUpdate(contents);
|
|
24
|
-
if (updatedContents !== contents) {
|
|
25
|
-
tree.write(filePath, updatedContents);
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
10
|
const addDestructuredImport = async (tree, filePath, variableNames, from) => {
|
|
29
11
|
assertFilePath(tree, filePath);
|
|
30
12
|
// Check if there's an existing import from this module
|
|
@@ -84,143 +66,30 @@ const addStarExport = async (tree, filePath, from) => {
|
|
|
84
66
|
};
|
|
85
67
|
exports.addStarExport = addStarExport;
|
|
86
68
|
/**
|
|
87
|
-
*
|
|
69
|
+
* Return whether or not the given identifier is exported in the source file.
|
|
70
|
+
* Checks for both `export { Identifier }` and `export type Identifier = ...`.
|
|
88
71
|
*/
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
exports.replace = replace;
|
|
104
|
-
/**
|
|
105
|
-
* Replace nodes matching a given selector if present, otherwise leaves the code unchanged
|
|
106
|
-
*/
|
|
107
|
-
const replaceIfExists = (tree, filePath, selector, transformer) => (0, exports.replace)(tree, filePath, selector, transformer, false);
|
|
108
|
-
exports.replaceIfExists = replaceIfExists;
|
|
109
|
-
/**
|
|
110
|
-
* Apply a transform to the given code using the transformer.
|
|
111
|
-
* Equivalent to tsquery.map, except that this preserves existing code formatting where possible
|
|
112
|
-
*/
|
|
113
|
-
const applyTransform = (code, selector, transformer) => {
|
|
114
|
-
const sourceFile = (0, tsquery_1.ast)(code);
|
|
115
|
-
const transforms = [];
|
|
116
|
-
const printer = typescript_1.default.createPrinter({
|
|
117
|
-
removeComments: true,
|
|
118
|
-
});
|
|
119
|
-
tsquery_1.tsquery.map(sourceFile, selector, (node) => {
|
|
120
|
-
const newNode = transformer(node);
|
|
121
|
-
if (newNode !== node && newNode) {
|
|
122
|
-
transforms.push({
|
|
123
|
-
start: node.getStart(sourceFile, true),
|
|
124
|
-
end: node.getEnd(),
|
|
125
|
-
newText: printer.printNode(typescript_1.default.EmitHint.Unspecified, newNode, sourceFile),
|
|
72
|
+
const hasExportDeclaration = async (source, identifierName) => {
|
|
73
|
+
const patterns = [
|
|
74
|
+
`\`export type ${identifierName} = $_\``,
|
|
75
|
+
`\`export { ${identifierName} }\``,
|
|
76
|
+
`\`export type { ${identifierName} } from $_\``,
|
|
77
|
+
];
|
|
78
|
+
for (const pattern of patterns) {
|
|
79
|
+
try {
|
|
80
|
+
const q = new gritql_1.QueryBuilder(`$p => $p where { $p <: ${pattern} }`);
|
|
81
|
+
const result = await q.applyToFile({
|
|
82
|
+
path: 'check.ts',
|
|
83
|
+
content: source,
|
|
126
84
|
});
|
|
85
|
+
if (result !== null)
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// Pattern didn't match, try next
|
|
127
90
|
}
|
|
128
|
-
return newNode;
|
|
129
|
-
});
|
|
130
|
-
let newCode = code;
|
|
131
|
-
let offset = 0;
|
|
132
|
-
transforms.forEach((transform) => {
|
|
133
|
-
newCode =
|
|
134
|
-
newCode.substring(0, transform.start + offset) +
|
|
135
|
-
transform.newText +
|
|
136
|
-
newCode.substring(transform.end + offset);
|
|
137
|
-
offset = newCode.length - code.length;
|
|
138
|
-
});
|
|
139
|
-
return newCode;
|
|
140
|
-
};
|
|
141
|
-
const insertStatements = (isPrepend, code, statements) => {
|
|
142
|
-
const sourceFile = (0, tsquery_1.ast)(code);
|
|
143
|
-
const printer = typescript_1.default.createPrinter();
|
|
144
|
-
const newText = statements
|
|
145
|
-
.map((s) => printer.printNode(typescript_1.default.EmitHint.Unspecified, s, sourceFile))
|
|
146
|
-
.join('\n');
|
|
147
|
-
if (isPrepend) {
|
|
148
|
-
return newText + '\n' + code;
|
|
149
|
-
}
|
|
150
|
-
return code + '\n' + newText;
|
|
151
|
-
};
|
|
152
|
-
const appendStatementsToCodeText = (code, statements) => {
|
|
153
|
-
return insertStatements(false, code, statements);
|
|
154
|
-
};
|
|
155
|
-
const prependStatementsToCodeText = (code, statements) => {
|
|
156
|
-
return insertStatements(true, code, statements);
|
|
157
|
-
};
|
|
158
|
-
const prependStatements = (tree, filePath, statements) => {
|
|
159
|
-
updateFile(tree, filePath, (contents) => {
|
|
160
|
-
return prependStatementsToCodeText(contents, statements);
|
|
161
|
-
});
|
|
162
|
-
};
|
|
163
|
-
exports.prependStatements = prependStatements;
|
|
164
|
-
const appendStatements = (tree, filePath, statements) => {
|
|
165
|
-
updateFile(tree, filePath, (contents) => {
|
|
166
|
-
return appendStatementsToCodeText(contents, statements);
|
|
167
|
-
});
|
|
168
|
-
};
|
|
169
|
-
exports.appendStatements = appendStatements;
|
|
170
|
-
/**
|
|
171
|
-
* Query a typescript file in the tree using tsquery
|
|
172
|
-
*/
|
|
173
|
-
const query = (tree, filePath, selector) => {
|
|
174
|
-
assertFilePath(tree, filePath);
|
|
175
|
-
const source = tree.read(filePath).toString();
|
|
176
|
-
return tsquery_1.tsquery.query((0, tsquery_1.ast)(source), selector);
|
|
177
|
-
};
|
|
178
|
-
exports.query = query;
|
|
179
|
-
const createJsxElementFromIdentifier = (identifier, children) => typescript_1.factory.createJsxElement(typescript_1.factory.createJsxOpeningElement(typescript_1.factory.createIdentifier(identifier), undefined, typescript_1.factory.createJsxAttributes([])), children, typescript_1.factory.createJsxClosingElement(typescript_1.factory.createIdentifier(identifier)));
|
|
180
|
-
exports.createJsxElementFromIdentifier = createJsxElementFromIdentifier;
|
|
181
|
-
const createJsxElement = (openingElement, children, closingElement) => typescript_1.factory.createJsxElement(openingElement, children, closingElement);
|
|
182
|
-
exports.createJsxElement = createJsxElement;
|
|
183
|
-
/**
|
|
184
|
-
* Convert a given json object to its AST representation
|
|
185
|
-
*/
|
|
186
|
-
const jsonToAst = (obj) => {
|
|
187
|
-
if (obj === null) {
|
|
188
|
-
return typescript_1.factory.createNull();
|
|
189
|
-
}
|
|
190
|
-
if (obj === undefined) {
|
|
191
|
-
return typescript_1.factory.createIdentifier('undefined');
|
|
192
|
-
}
|
|
193
|
-
if (typeof obj === 'string') {
|
|
194
|
-
return typescript_1.factory.createStringLiteral(obj);
|
|
195
|
-
}
|
|
196
|
-
if (typeof obj === 'number') {
|
|
197
|
-
return typescript_1.factory.createNumericLiteral(obj);
|
|
198
|
-
}
|
|
199
|
-
if (typeof obj === 'boolean') {
|
|
200
|
-
return obj ? typescript_1.factory.createTrue() : typescript_1.factory.createFalse();
|
|
201
|
-
}
|
|
202
|
-
if (Array.isArray(obj)) {
|
|
203
|
-
return typescript_1.factory.createArrayLiteralExpression(obj.map((item) => (0, exports.jsonToAst)(item)));
|
|
204
|
-
}
|
|
205
|
-
if (typeof obj === 'object') {
|
|
206
|
-
return typescript_1.factory.createObjectLiteralExpression(Object.entries(obj).map(([key, value]) => {
|
|
207
|
-
// Check if the key is a valid identifier
|
|
208
|
-
const isValidIdentifier = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key);
|
|
209
|
-
return typescript_1.factory.createPropertyAssignment(isValidIdentifier
|
|
210
|
-
? typescript_1.factory.createIdentifier(key)
|
|
211
|
-
: typescript_1.factory.createStringLiteral(key), (0, exports.jsonToAst)(value));
|
|
212
|
-
}));
|
|
213
91
|
}
|
|
214
|
-
|
|
215
|
-
};
|
|
216
|
-
exports.jsonToAst = jsonToAst;
|
|
217
|
-
/**
|
|
218
|
-
* Return whether or not the given identifier is exported in the source file
|
|
219
|
-
*/
|
|
220
|
-
const hasExportDeclaration = (source, identifierName) => {
|
|
221
|
-
const sourceFile = (0, tsquery_1.ast)(source);
|
|
222
|
-
return (tsquery_1.tsquery.query(sourceFile, `ExportDeclaration:has(ExportSpecifier:has(Identifier[name="${identifierName}"]))`).length > 0 ||
|
|
223
|
-
tsquery_1.tsquery.query(sourceFile, `TypeAliasDeclaration:has(ExportKeyword):has(Identifier[name="${identifierName}"])`).length > 0);
|
|
92
|
+
return false;
|
|
224
93
|
};
|
|
225
94
|
exports.hasExportDeclaration = hasExportDeclaration;
|
|
226
95
|
/**
|
package/src/utils/ast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/ast.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/ast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display-friendly command prefixes for each package manager.
|
|
3
|
+
*
|
|
4
|
+
* - `exec`: prefix for running local binaries (e.g. `npx nx`, `pnpm nx`, `bunx nx`)
|
|
5
|
+
* - `run`: prefix for running package.json scripts (e.g. `npm run build`, `pnpm build`)
|
|
6
|
+
*
|
|
7
|
+
* @see docs/src/components/package-manager-exec-command.astro
|
|
8
|
+
* @see docs/src/components/package-manager-short-command.astro
|
|
9
|
+
*/
|
|
10
|
+
export interface PackageManagerDisplayCommands {
|
|
11
|
+
/** Prefix for running local binaries: npx, pnpm, yarn, bunx */
|
|
12
|
+
exec: string;
|
|
13
|
+
/** Prefix for running package.json scripts: `npm run`, pnpm, yarn, bun */
|
|
14
|
+
run: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const PACKAGE_MANAGER_COMMANDS: Record<string, PackageManagerDisplayCommands>;
|
|
17
|
+
/**
|
|
18
|
+
* Build a package manager exec command (e.g. pnpm cmd, npx cmd, bunx cmd)
|
|
19
|
+
*/
|
|
20
|
+
export declare const buildPackageManagerExecCommand: (pm: string, command: string) => string;
|
|
21
|
+
/**
|
|
22
|
+
* Build a short package manager command (e.g. pnpm build, npm run build)
|
|
23
|
+
*/
|
|
24
|
+
export declare const buildPackageManagerShortCommand: (pm: string, command: string) => string;
|
|
25
|
+
/**
|
|
26
|
+
* Build an install command for a given package manager
|
|
27
|
+
*/
|
|
28
|
+
export declare const buildInstallCommand: (pm: string, pkg: string, dev: boolean) => string;
|
|
29
|
+
/**
|
|
30
|
+
* Build a create-nx-workspace command.
|
|
31
|
+
* Defaults to the pinned create-nx-workspace version from TS_VERSIONS.
|
|
32
|
+
*/
|
|
33
|
+
export declare const buildCreateNxWorkspaceCommand: (pm: string, workspace: string, iacProvider?: "CDK" | "Terraform", yes?: boolean, nxVersion?: string, nxPluginVersion?: string) => string;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildCreateNxWorkspaceCommand = exports.buildInstallCommand = exports.buildPackageManagerShortCommand = exports.buildPackageManagerExecCommand = exports.PACKAGE_MANAGER_COMMANDS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
7
|
+
*/
|
|
8
|
+
const versions_1 = require("./versions");
|
|
9
|
+
exports.PACKAGE_MANAGER_COMMANDS = {
|
|
10
|
+
npm: { exec: 'npx', run: 'npm run' },
|
|
11
|
+
pnpm: { exec: 'pnpm', run: 'pnpm' },
|
|
12
|
+
yarn: { exec: 'yarn', run: 'yarn' },
|
|
13
|
+
bun: { exec: 'bunx', run: 'bun' },
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Build a package manager exec command (e.g. pnpm cmd, npx cmd, bunx cmd)
|
|
17
|
+
*/
|
|
18
|
+
const buildPackageManagerExecCommand = (pm, command) => {
|
|
19
|
+
const prefix = exports.PACKAGE_MANAGER_COMMANDS[pm]?.exec ?? pm;
|
|
20
|
+
return `${prefix} ${command}`;
|
|
21
|
+
};
|
|
22
|
+
exports.buildPackageManagerExecCommand = buildPackageManagerExecCommand;
|
|
23
|
+
/**
|
|
24
|
+
* Build a short package manager command (e.g. pnpm build, npm run build)
|
|
25
|
+
*/
|
|
26
|
+
const buildPackageManagerShortCommand = (pm, command) => {
|
|
27
|
+
const prefix = exports.PACKAGE_MANAGER_COMMANDS[pm]?.run ?? pm;
|
|
28
|
+
return `${prefix} ${command}`;
|
|
29
|
+
};
|
|
30
|
+
exports.buildPackageManagerShortCommand = buildPackageManagerShortCommand;
|
|
31
|
+
/**
|
|
32
|
+
* Build an install command for a given package manager
|
|
33
|
+
*/
|
|
34
|
+
const buildInstallCommand = (pm, pkg, dev) => {
|
|
35
|
+
switch (pm) {
|
|
36
|
+
case 'pnpm':
|
|
37
|
+
return `pnpm add ${dev ? '-D' : '-'}w ${pkg}`;
|
|
38
|
+
case 'yarn':
|
|
39
|
+
return `yarn add ${dev ? '-D ' : ''}${pkg}`;
|
|
40
|
+
case 'npm':
|
|
41
|
+
return `npm install --legacy-peer-deps ${dev ? '-D ' : ''}${pkg}`;
|
|
42
|
+
case 'bun':
|
|
43
|
+
return `bun install ${dev ? '-D ' : ''}${pkg}`;
|
|
44
|
+
default:
|
|
45
|
+
return `${pm} install ${dev ? '-D ' : ''}${pkg}`;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
exports.buildInstallCommand = buildInstallCommand;
|
|
49
|
+
/**
|
|
50
|
+
* Build a create-nx-workspace command.
|
|
51
|
+
* Defaults to the pinned create-nx-workspace version from TS_VERSIONS.
|
|
52
|
+
*/
|
|
53
|
+
const buildCreateNxWorkspaceCommand = (pm, workspace, iacProvider, yes = false, nxVersion = versions_1.TS_VERSIONS['create-nx-workspace'], nxPluginVersion) => `npx ${yes ? '-y ' : ''}create-nx-workspace@${nxVersion} ${workspace} --pm=${pm} --preset=@aws/nx-plugin${nxPluginVersion ? `@${nxPluginVersion}` : ''}${iacProvider ? ` --iacProvider=${iacProvider}` : ''} --ci=skip --analytics=false --aiAgents`;
|
|
54
|
+
exports.buildCreateNxWorkspaceCommand = buildCreateNxWorkspaceCommand;
|
|
55
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/commands.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,yCAAyC;AAkB5B,QAAA,wBAAwB,GAGjC;IACF,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE;IACpC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IACnC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IACnC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;CAClC,CAAC;AAEF;;GAEG;AACI,MAAM,8BAA8B,GAAG,CAAC,EAAU,EAAE,OAAe,EAAE,EAAE;IAC5E,MAAM,MAAM,GAAG,gCAAwB,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;IACxD,OAAO,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;AAChC,CAAC,CAAC;AAHW,QAAA,8BAA8B,kCAGzC;AAEF;;GAEG;AACI,MAAM,+BAA+B,GAAG,CAC7C,EAAU,EACV,OAAe,EACf,EAAE;IACF,MAAM,MAAM,GAAG,gCAAwB,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;IACvD,OAAO,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;AAChC,CAAC,CAAC;AANW,QAAA,+BAA+B,mCAM1C;AAEF;;GAEG;AACI,MAAM,mBAAmB,GAAG,CAAC,EAAU,EAAE,GAAW,EAAE,GAAY,EAAE,EAAE;IAC3E,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,MAAM;YACT,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QAChD,KAAK,MAAM;YACT,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;QAC9C,KAAK,KAAK;YACR,OAAO,kCAAkC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;QACpE,KAAK,KAAK;YACR,OAAO,eAAe,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;QACjD;YACE,OAAO,GAAG,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;IACrD,CAAC;AACH,CAAC,CAAC;AAbW,QAAA,mBAAmB,uBAa9B;AAEF;;;GAGG;AACI,MAAM,6BAA6B,GAAG,CAC3C,EAAU,EACV,SAAiB,EACjB,WAAiC,EACjC,GAAG,GAAG,KAAK,EACX,YAAoB,sBAAW,CAAC,qBAAqB,CAAC,EACtD,eAAwB,EACxB,EAAE,CACF,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,uBAAuB,SAAS,IAAI,SAAS,SAAS,EAAE,2BAA2B,eAAe,CAAC,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,yCAAyC,CAAC;AAR1O,QAAA,6BAA6B,iCAQ6M"}
|
|
@@ -1,5 +1,93 @@
|
|
|
1
1
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
2
|
|
|
3
|
+
exports[`config utils > should add multiple new keys to an empty config 1`] = `
|
|
4
|
+
"import { AwsNxPluginConfig } from '@aws/nx-plugin';
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
iac: { provider: 'CDK' },
|
|
8
|
+
tags: ['a', 'b'],
|
|
9
|
+
} satisfies AwsNxPluginConfig;
|
|
10
|
+
"
|
|
11
|
+
`;
|
|
12
|
+
|
|
13
|
+
exports[`config utils > should handle config with special characters in values 1`] = `
|
|
14
|
+
"import { AwsNxPluginConfig } from '@aws/nx-plugin';
|
|
15
|
+
|
|
16
|
+
export default {
|
|
17
|
+
license: {
|
|
18
|
+
header: {
|
|
19
|
+
content: { lines: ['Copyright "Foo" Inc.'] },
|
|
20
|
+
format: {
|
|
21
|
+
'**/*.{js,ts,jsx,tsx}': {
|
|
22
|
+
blockStart: '/**',
|
|
23
|
+
lineStart: ' * ',
|
|
24
|
+
blockEnd: ' */',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
} satisfies AwsNxPluginConfig;
|
|
30
|
+
"
|
|
31
|
+
`;
|
|
32
|
+
|
|
33
|
+
exports[`config utils > should handle config without satisfies clause 1`] = `
|
|
34
|
+
"export default { iac: { provider: 'CDK' } };
|
|
35
|
+
"
|
|
36
|
+
`;
|
|
37
|
+
|
|
38
|
+
exports[`config utils > should preserve JS expressions when updating a different key 1`] = `
|
|
39
|
+
"import { AwsNxPluginConfig } from '@aws/nx-plugin';
|
|
40
|
+
|
|
41
|
+
export default {
|
|
42
|
+
license: {
|
|
43
|
+
header: {
|
|
44
|
+
content: { lines: [\`Copyright \${new Date().getFullYear()} Foo Inc.\`] },
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
iac: { provider: 'CDK' },
|
|
48
|
+
} satisfies AwsNxPluginConfig;
|
|
49
|
+
"
|
|
50
|
+
`;
|
|
51
|
+
|
|
52
|
+
exports[`config utils > should preserve JS expressions when updating an unrelated key alongside 1`] = `
|
|
53
|
+
"import { AwsNxPluginConfig } from '@aws/nx-plugin';
|
|
54
|
+
|
|
55
|
+
export default {
|
|
56
|
+
license: {
|
|
57
|
+
copyrightHolder: 'Acme',
|
|
58
|
+
header: {
|
|
59
|
+
content: { lines: [\`Copyright \${new Date().getFullYear()} Acme\`] },
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
iac: { provider: 'Terraform' },
|
|
63
|
+
} satisfies AwsNxPluginConfig;
|
|
64
|
+
"
|
|
65
|
+
`;
|
|
66
|
+
|
|
67
|
+
exports[`config utils > should snapshot config with tags 1`] = `
|
|
68
|
+
"import { AwsNxPluginConfig } from '@aws/nx-plugin';
|
|
69
|
+
|
|
70
|
+
export default { tags: ['tag1', 'tag2', 'tag3'] } satisfies AwsNxPluginConfig;
|
|
71
|
+
"
|
|
72
|
+
`;
|
|
73
|
+
|
|
74
|
+
exports[`config utils > should snapshot merged config with multiple keys 1`] = `
|
|
75
|
+
"import { AwsNxPluginConfig } from '@aws/nx-plugin';
|
|
76
|
+
|
|
77
|
+
export default {
|
|
78
|
+
iac: { provider: 'CDK' },
|
|
79
|
+
tags: ['tag1'],
|
|
80
|
+
} satisfies AwsNxPluginConfig;
|
|
81
|
+
"
|
|
82
|
+
`;
|
|
83
|
+
|
|
84
|
+
exports[`config utils > should snapshot simple iac config 1`] = `
|
|
85
|
+
"import { AwsNxPluginConfig } from '@aws/nx-plugin';
|
|
86
|
+
|
|
87
|
+
export default { iac: { provider: 'CDK' } } satisfies AwsNxPluginConfig;
|
|
88
|
+
"
|
|
89
|
+
`;
|
|
90
|
+
|
|
3
91
|
exports[`config utils > should update user config 1`] = `
|
|
4
92
|
"import { AwsNxPluginConfig } from '@aws/nx-plugin';
|
|
5
93
|
|
|
@@ -15,6 +15,7 @@ export declare const ensureAwsNxPluginConfig: (tree: Tree) => Promise<AwsNxPlugi
|
|
|
15
15
|
export declare const readAwsNxPluginConfig: (tree: Tree) => Promise<AwsNxPluginConfig | undefined>;
|
|
16
16
|
/**
|
|
17
17
|
* Update the aws nx plugin config file.
|
|
18
|
-
*
|
|
18
|
+
* Only the specified top-level keys are replaced; all other properties
|
|
19
|
+
* (including those containing JS expressions) are left untouched in source.
|
|
19
20
|
*/
|
|
20
21
|
export declare const updateAwsNxPluginConfig: (tree: Tree, configUpdate: Partial<AwsNxPluginConfig>) => Promise<void>;
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.updateAwsNxPluginConfig = exports.readAwsNxPluginConfig = exports.ensureAwsNxPluginConfig = exports.AWS_NX_PLUGIN_CONFIG_FILE_NAME = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
4
|
/**
|
|
6
5
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
6
|
* SPDX-License-Identifier: Apache-2.0
|
|
8
7
|
*/
|
|
9
8
|
const devkit_1 = require("@nx/devkit");
|
|
10
|
-
const ts = tslib_1.__importStar(require("typescript"));
|
|
11
9
|
const ast_1 = require("../ast");
|
|
12
|
-
const typescript_1 = require("typescript");
|
|
13
10
|
const format_1 = require("../format");
|
|
14
11
|
const js_1 = require("../js");
|
|
15
12
|
exports.AWS_NX_PLUGIN_CONFIG_FILE_NAME = 'aws-nx-plugin.config.mts';
|
|
@@ -36,36 +33,57 @@ const readAwsNxPluginConfig = async (tree) => {
|
|
|
36
33
|
return await (0, js_1.importTypeScriptModule)(configTs);
|
|
37
34
|
};
|
|
38
35
|
exports.readAwsNxPluginConfig = readAwsNxPluginConfig;
|
|
36
|
+
const PLACEHOLDER = '"__PLACEHOLDER__"';
|
|
37
|
+
/**
|
|
38
|
+
* Use GritQL to set a top-level property in the export default object,
|
|
39
|
+
* then substitute the placeholder with the JSON-serialized value.
|
|
40
|
+
* Preserves all other properties (including JS expressions) untouched.
|
|
41
|
+
*/
|
|
42
|
+
const setConfigProperty = async (tree, filePath, key, value) => {
|
|
43
|
+
const json = JSON.stringify(value);
|
|
44
|
+
// Check if the property already exists using a named metavariable
|
|
45
|
+
// to avoid ambiguity with anonymous $_ in nested where clauses
|
|
46
|
+
const existsInSatisfies = await (0, ast_1.matchGritQL)(tree, filePath, `\`${key}: $val\` where { $val <: within \`export default $_ satisfies $_\` }`);
|
|
47
|
+
const existsInPlain = !existsInSatisfies &&
|
|
48
|
+
(await (0, ast_1.matchGritQL)(tree, filePath, `\`${key}: $val\` where { $val <: within \`export default $_\` }`));
|
|
49
|
+
if (existsInSatisfies || existsInPlain) {
|
|
50
|
+
// Replace only this property's value, scoped to the export default
|
|
51
|
+
const within = existsInSatisfies
|
|
52
|
+
? `within \`export default $_ satisfies $_\``
|
|
53
|
+
: `within \`export default $_\``;
|
|
54
|
+
await (0, ast_1.applyGritQL)(tree, filePath, `\`${key}: $old\` => \`${key}: ${PLACEHOLDER}\` where { $old <: ${within} }`);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Add the new property using GritQL's += (accumulate) operator.
|
|
58
|
+
// For non-empty objects, += appends correctly without double commas.
|
|
59
|
+
// For empty objects, += fails so we fall back to a direct replacement.
|
|
60
|
+
let added = await (0, ast_1.applyGritQL)(tree, filePath, `\`export default { $props } satisfies $type\` where { $props += \`, ${key}: ${PLACEHOLDER}\` }`);
|
|
61
|
+
if (!added) {
|
|
62
|
+
added = await (0, ast_1.applyGritQL)(tree, filePath, `\`export default { } satisfies $type\` => \`export default { ${key}: ${PLACEHOLDER} } satisfies $type\``);
|
|
63
|
+
}
|
|
64
|
+
if (!added) {
|
|
65
|
+
added = await (0, ast_1.applyGritQL)(tree, filePath, `\`export default { $props }\` where { $props += \`, ${key}: ${PLACEHOLDER}\` }`);
|
|
66
|
+
}
|
|
67
|
+
if (!added) {
|
|
68
|
+
await (0, ast_1.applyGritQL)(tree, filePath, `\`export default { }\` => \`export default { ${key}: ${PLACEHOLDER} }\``);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Substitute the placeholder with the actual JSON value
|
|
72
|
+
const content = tree.read(filePath).toString();
|
|
73
|
+
tree.write(filePath, content.replace(PLACEHOLDER, json));
|
|
74
|
+
};
|
|
39
75
|
/**
|
|
40
76
|
* Update the aws nx plugin config file.
|
|
41
|
-
*
|
|
77
|
+
* Only the specified top-level keys are replaced; all other properties
|
|
78
|
+
* (including those containing JS expressions) are left untouched in source.
|
|
42
79
|
*/
|
|
43
80
|
const updateAwsNxPluginConfig = async (tree, configUpdate) => {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
existingProps.set(prop.name.getText(), prop);
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
const properties = [];
|
|
54
|
-
for (const [key, value] of Object.entries(configUpdate)) {
|
|
55
|
-
properties.push(typescript_1.factory.createPropertyAssignment(key, (0, ast_1.jsonToAst)(value)));
|
|
56
|
-
}
|
|
57
|
-
existingObj.properties.forEach((prop) => {
|
|
58
|
-
if (ts.isPropertyAssignment(prop)) {
|
|
59
|
-
const name = prop.name.getText();
|
|
60
|
-
if (configUpdate[name] === undefined) {
|
|
61
|
-
properties.push(prop);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
return typescript_1.factory.createObjectLiteralExpression(properties, true);
|
|
66
|
-
});
|
|
67
|
-
// Format the config nicely after an update
|
|
68
|
-
await (0, format_1.formatFilesInSubtree)(tree, exports.AWS_NX_PLUGIN_CONFIG_FILE_NAME);
|
|
81
|
+
const filePath = exports.AWS_NX_PLUGIN_CONFIG_FILE_NAME;
|
|
82
|
+
for (const [key, value] of Object.entries(configUpdate)) {
|
|
83
|
+
await setConfigProperty(tree, filePath, key, value);
|
|
84
|
+
}
|
|
85
|
+
// Prettier formats the result into properly indented TypeScript
|
|
86
|
+
await (0, format_1.formatFilesInSubtree)(tree, filePath);
|
|
69
87
|
};
|
|
70
88
|
exports.updateAwsNxPluginConfig = updateAwsNxPluginConfig;
|
|
71
89
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/utils/config/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/utils/config/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface GeneratorInfo {
|
|
2
|
+
readonly id: string;
|
|
3
|
+
readonly metric: string;
|
|
4
|
+
readonly resolvedFactoryPath: string;
|
|
5
|
+
readonly resolvedSchemaPath: string;
|
|
6
|
+
readonly hidden?: boolean;
|
|
7
|
+
readonly description: string;
|
|
8
|
+
readonly guidePages?: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Build the list of generator info, resolving schema/factory paths relative to the given base directory.
|
|
12
|
+
*/
|
|
13
|
+
export declare const buildGeneratorInfoList: (baseDir: string) => GeneratorInfo[];
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildGeneratorInfoList = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
const generators_json_1 = tslib_1.__importDefault(require("../../generators.json"));
|
|
10
|
+
const path = tslib_1.__importStar(require("path"));
|
|
11
|
+
/**
|
|
12
|
+
* Build the list of generator info, resolving schema/factory paths relative to the given base directory.
|
|
13
|
+
*/
|
|
14
|
+
const buildGeneratorInfoList = (baseDir) => Object.entries(generators_json_1.default.generators).map(([id, info]) => ({
|
|
15
|
+
id,
|
|
16
|
+
metric: info.metric,
|
|
17
|
+
resolvedFactoryPath: path.resolve(baseDir, info.factory),
|
|
18
|
+
resolvedSchemaPath: path.resolve(baseDir, info.schema),
|
|
19
|
+
description: info.description,
|
|
20
|
+
...('hidden' in info && info.hidden ? { hidden: info.hidden } : {}),
|
|
21
|
+
...('guidePages' in info && info.guidePages
|
|
22
|
+
? { guidePages: info.guidePages }
|
|
23
|
+
: {}),
|
|
24
|
+
}));
|
|
25
|
+
exports.buildGeneratorInfoList = buildGeneratorInfoList;
|
|
26
|
+
//# sourceMappingURL=generators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generators.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/generators.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,oFAAmD;AACnD,mDAA6B;AAY7B;;GAEG;AACI,MAAM,sBAAsB,GAAG,CAAC,OAAe,EAAmB,EAAE,CACzE,MAAM,CAAC,OAAO,CAAE,yBAAsC,CAAC,UAAU,CAAC,CAAC,GAAG,CACpE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAgB,EAAE,EAAE,CAAC,CAAC;IAC9B,EAAE;IACF,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;IACxD,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;IACtD,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,GAAG,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,GAAG,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU;QACzC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;QACjC,CAAC,CAAC,EAAE,CAAC;CACR,CAAC,CACH,CAAC;AAbS,QAAA,sBAAsB,0BAa/B"}
|
package/src/utils/nx.d.ts
CHANGED
|
@@ -3,20 +3,14 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { ProjectConfiguration, Tree } from '@nx/devkit';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
readonly resolvedFactoryPath: string;
|
|
10
|
-
readonly resolvedSchemaPath: string;
|
|
11
|
-
readonly hidden?: boolean;
|
|
12
|
-
readonly description: string;
|
|
13
|
-
readonly guidePages?: string[];
|
|
14
|
-
}
|
|
6
|
+
import { type GeneratorInfo } from './generators';
|
|
7
|
+
export type NxGeneratorInfo = GeneratorInfo;
|
|
8
|
+
export { buildGeneratorInfoList } from './generators';
|
|
15
9
|
/**
|
|
16
10
|
* List Nx Plugin for AWS generators
|
|
17
11
|
* @param includeHidden include hidden generators (default false)
|
|
18
12
|
*/
|
|
19
|
-
export declare const listGenerators: (includeHidden?: boolean) =>
|
|
13
|
+
export declare const listGenerators: (includeHidden?: boolean) => GeneratorInfo[];
|
|
20
14
|
/**
|
|
21
15
|
* Return generator information. Call this from a generator method with __filename
|
|
22
16
|
*/
|
package/src/utils/nx.js
CHANGED
|
@@ -1,34 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addDependencyToTargetIfNotPresent = exports.addComponentGeneratorMetadata = exports.addGeneratorMetadata = exports.readProjectConfigurationUnqualified = exports.getPackageVersion = exports.getGeneratorInfo = exports.listGenerators = void 0;
|
|
3
|
+
exports.addDependencyToTargetIfNotPresent = exports.addComponentGeneratorMetadata = exports.addGeneratorMetadata = exports.readProjectConfigurationUnqualified = exports.getPackageVersion = exports.getGeneratorInfo = exports.listGenerators = exports.buildGeneratorInfoList = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
/**
|
|
6
6
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
7
|
* SPDX-License-Identifier: Apache-2.0
|
|
8
8
|
*/
|
|
9
9
|
const devkit_1 = require("@nx/devkit");
|
|
10
|
-
const generators_json_1 = tslib_1.__importDefault(require("../../generators.json"));
|
|
11
10
|
const package_json_1 = tslib_1.__importDefault(require("../../package.json"));
|
|
12
11
|
const path = tslib_1.__importStar(require("path"));
|
|
13
12
|
const npm_scope_1 = require("./npm-scope");
|
|
14
13
|
const names_1 = require("./names");
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
resolvedSchemaPath: path.resolve(__dirname, '..', '..', info.schema),
|
|
20
|
-
description: info.description,
|
|
21
|
-
...('hidden' in info && info.hidden
|
|
22
|
-
? {
|
|
23
|
-
hidden: info.hidden,
|
|
24
|
-
}
|
|
25
|
-
: {}),
|
|
26
|
-
...('guidePages' in info && info.guidePages
|
|
27
|
-
? {
|
|
28
|
-
guidePages: info.guidePages,
|
|
29
|
-
}
|
|
30
|
-
: {}),
|
|
31
|
-
}));
|
|
14
|
+
const generators_1 = require("./generators");
|
|
15
|
+
var generators_2 = require("./generators");
|
|
16
|
+
Object.defineProperty(exports, "buildGeneratorInfoList", { enumerable: true, get: function () { return generators_2.buildGeneratorInfoList; } });
|
|
17
|
+
const GENERATORS = (0, generators_1.buildGeneratorInfoList)(path.resolve(__dirname, '..', '..'));
|
|
32
18
|
/**
|
|
33
19
|
* List Nx Plugin for AWS generators
|
|
34
20
|
* @param includeHidden include hidden generators (default false)
|
package/src/utils/nx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nx.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/nx.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,uCAMoB;AACpB,
|
|
1
|
+
{"version":3,"file":"nx.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/nx.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* These follow the same conventions as the documentation site components:
|
|
5
|
-
* - `exec`: prefix for running local binaries (e.g. `npx nx`, `pnpm nx`, `bunx nx`)
|
|
6
|
-
* - `run`: prefix for running package.json scripts (e.g. `npm run build`, `pnpm build`)
|
|
7
|
-
*
|
|
8
|
-
* We maintain our own mappings rather than using Nx's `getPackageManagerCommand()`
|
|
9
|
-
* because:
|
|
10
|
-
* - pnpm `exec` returns `pnpm exec` but convention is `pnpm`
|
|
11
|
-
* - bun `exec` returns `bun` but convention is `bunx`
|
|
12
|
-
* - bun `run()` appends `-- undefined` when called without args
|
|
13
|
-
*
|
|
14
|
-
* @see docs/src/components/package-manager-exec-command.astro
|
|
15
|
-
* @see docs/src/components/package-manager-short-command.astro
|
|
16
|
-
*/
|
|
17
|
-
export interface PackageManagerDisplayCommands {
|
|
18
|
-
/** Prefix for running local binaries: npx, pnpm, yarn, bunx */
|
|
19
|
-
exec: string;
|
|
20
|
-
/** Prefix for running package.json scripts: `npm run`, pnpm, yarn, bun */
|
|
21
|
-
run: string;
|
|
22
|
-
}
|
|
1
|
+
import { type PackageManagerDisplayCommands } from './commands';
|
|
2
|
+
export type { PackageManagerDisplayCommands };
|
|
23
3
|
/**
|
|
24
4
|
* Returns display-friendly command prefixes for the detected package manager.
|
|
25
5
|
*/
|
package/src/utils/pkg-manager.js
CHANGED
|
@@ -6,15 +6,10 @@ exports.getPackageManagerDisplayCommands = void 0;
|
|
|
6
6
|
* SPDX-License-Identifier: Apache-2.0
|
|
7
7
|
*/
|
|
8
8
|
const devkit_1 = require("@nx/devkit");
|
|
9
|
-
const
|
|
10
|
-
npm: { exec: 'npx', run: 'npm run' },
|
|
11
|
-
pnpm: { exec: 'pnpm', run: 'pnpm' },
|
|
12
|
-
yarn: { exec: 'yarn', run: 'yarn' },
|
|
13
|
-
bun: { exec: 'bunx', run: 'bun' },
|
|
14
|
-
};
|
|
9
|
+
const commands_1 = require("./commands");
|
|
15
10
|
/**
|
|
16
11
|
* Returns display-friendly command prefixes for the detected package manager.
|
|
17
12
|
*/
|
|
18
|
-
const getPackageManagerDisplayCommands = (pm = (0, devkit_1.detectPackageManager)()) =>
|
|
13
|
+
const getPackageManagerDisplayCommands = (pm = (0, devkit_1.detectPackageManager)()) => commands_1.PACKAGE_MANAGER_COMMANDS[pm] ?? commands_1.PACKAGE_MANAGER_COMMANDS['npm'];
|
|
19
14
|
exports.getPackageManagerDisplayCommands = getPackageManagerDisplayCommands;
|
|
20
15
|
//# sourceMappingURL=pkg-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkg-manager.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/pkg-manager.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCAAkD;
|
|
1
|
+
{"version":3,"file":"pkg-manager.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/pkg-manager.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCAAkD;AAClD,yCAGoB;AAIpB;;GAEG;AACI,MAAM,gCAAgC,GAAG,CAC9C,EAAE,GAAG,IAAA,6BAAoB,GAAE,EACI,EAAE,CACjC,mCAAwB,CAAC,EAAE,CAAC,IAAI,mCAAwB,CAAC,KAAK,CAAC,CAAC;AAHrD,QAAA,gCAAgC,oCAGqB"}
|