@aws/nx-plugin 0.89.0 → 0.90.0
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/sdk/utils/ast.d.ts +2 -1
- package/sdk/utils/ast.js +4 -2
- package/sdk/utils/ast.js.map +1 -1
- package/src/connection/serve-local.js +1 -1
- package/src/connection/serve-local.js.map +1 -1
- package/src/py/strands-agent/mcp-connection/generator.js +9 -9
- package/src/py/strands-agent/mcp-connection/generator.js.map +1 -1
- package/src/smithy/ts/api/generator.js +2 -2
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/trpc/backend/generator.js +1 -1
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/react/generator.js +4 -4
- package/src/trpc/react/generator.js.map +1 -1
- package/src/ts/lambda-function/generator.js +1 -1
- package/src/ts/lambda-function/generator.js.map +1 -1
- package/src/ts/lib/eslint.d.ts +1 -1
- package/src/ts/lib/eslint.js +23 -36
- package/src/ts/lib/eslint.js.map +1 -1
- package/src/ts/lib/generator.js +4 -7
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/lib/grit/eslint-dependency-checks-warn.grit +1 -0
- package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +7 -0
- package/src/ts/lib/ts-project-utils.js +1 -1
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/lib/vitest.d.ts +1 -1
- package/src/ts/lib/vitest.js +4 -16
- package/src/ts/lib/vitest.js.map +1 -1
- package/src/ts/mcp-server/generator.js +1 -1
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/nx-generator/generator.js +1 -1
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +29 -17
- package/src/ts/react-website/app/generator.js +14 -50
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +5 -7
- package/src/ts/react-website/cognito-auth/generator.js +5 -25
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/grit/app-layout-use-auth.grit +10 -0
- package/src/ts/react-website/cognito-auth/grit/cognito-auth-wrapper.grit +3 -0
- package/src/ts/react-website/cognito-auth/utils.js +4 -4
- package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
- package/src/ts/react-website/runtime-config/generator.js +2 -2
- package/src/ts/react-website/runtime-config/generator.js.map +1 -1
- package/src/ts/strands-agent/generator.js +1 -1
- package/src/ts/strands-agent/generator.js.map +1 -1
- package/src/ts/strands-agent/mcp-connection/generator.js +2 -2
- package/src/ts/strands-agent/mcp-connection/generator.js.map +1 -1
- package/src/utils/agent-connection/agent-connection.js +4 -4
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/ast/website.js +63 -120
- package/src/utils/ast/website.js.map +1 -1
- package/src/utils/ast.d.ts +2 -2
- package/src/utils/ast.js +9 -9
- package/src/utils/ast.js.map +1 -1
- package/src/utils/bundle/bundle.d.ts +1 -1
- package/src/utils/bundle/bundle.js +26 -71
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/connection/open-api/react.js +4 -4
- package/src/utils/connection/open-api/react.js.map +1 -1
- package/src/utils/metrics.js +6 -6
- package/src/utils/metrics.js.map +1 -1
- package/src/utils/shared-shadcn.js +8 -15
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/bundle/__snapshots__/bundle.spec.ts.snap +0 -46
|
@@ -50,7 +50,7 @@ const tsStrandsAgentMcpConnectionGenerator = async (tree, options) => {
|
|
|
50
50
|
// Transform the arrow function that contains `new Agent`:
|
|
51
51
|
// - Expression body: wrap in block with client creation and return
|
|
52
52
|
// - Block body: prepend client creation statement
|
|
53
|
-
await (0, ast_1.
|
|
53
|
+
await (0, ast_1.applyGritQL)(tree, agentFilePath, `or { \`async ($p) => new Agent($args)\` => raw\`async ($p) => {
|
|
54
54
|
${clientCreationStmt}
|
|
55
55
|
return new Agent($args);
|
|
56
56
|
}\` where { $program <: not contains \`${clientClassName}.create\` }, \`async ($p) => { $body }\` => raw\`async ($p) => {
|
|
@@ -58,7 +58,7 @@ const tsStrandsAgentMcpConnectionGenerator = async (tree, options) => {
|
|
|
58
58
|
$body
|
|
59
59
|
}\` where { $body <: contains \`new Agent($_)\`, $program <: not contains \`${clientClassName}.create\` } }`);
|
|
60
60
|
// Prepend client to the tools array
|
|
61
|
-
await (0, ast_1.
|
|
61
|
+
await (0, ast_1.applyGritQL)(tree, agentFilePath, `\`tools: [$items]\` => \`tools: [${clientVarName}, $items]\` where { $items <: within \`new Agent($_)\`, $items <: not contains \`${clientVarName}\` }`);
|
|
62
62
|
}
|
|
63
63
|
// 4. Set up serve-local target
|
|
64
64
|
const agentName = agentComponent.name ?? 'agent';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/strands-agent/mcp-connection/generator.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCASoB;AAEpB,0CAI2B;AAC3B,oDAAyE;AACzE,kDAA6D;AAC7D,gDAAiD;AACjD,sDAAuD;AACvD,wDAAuD;AACvD,4CAI4B;AAC5B,uFAG0D;AAE7C,QAAA,8CAA8C,GACzD,IAAA,qBAAgB,EAAC,UAAU,CAAC,CAAC;AAExB,MAAM,oCAAoC,GAAG,KAAK,EACvD,IAAU,EACV,OAAmD,EACvB,EAAE;IAC9B,MAAM,aAAa,GAAG,IAAA,wCAAmC,EACvD,IAAI,EACJ,OAAO,CAAC,aAAa,CACtB,CAAC;IACF,MAAM,aAAa,GAAG,IAAA,wCAAmC,EACvD,IAAI,EACJ,OAAO,CAAC,aAAa,CACtB,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAE7C,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC;IAC3D,MAAM,kBAAkB,GAAG,YAAY,CAAC,EAAY,CAAC;IACrD,MAAM,kBAAkB,GAAG,IAAA,iBAAS,EAAC,kBAAkB,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC;IAEhD,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,CAAC;IAEnC,uDAAuD;IACvD,MAAM,IAAA,yDAAsC,EAAC,IAAI,CAAC,CAAC;IAEnD,wDAAwD;IACxD,IAAA,sBAAa,EACX,IAAI,EACJ,IAAA,0BAAiB,EAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAChE,IAAA,0BAAiB,EAAC,+CAA4B,EAAE,KAAK,EAAE,KAAK,CAAC,EAC7D;QACE,kBAAkB;QAClB,kBAAkB;QAClB,aAAa;KACd,EACD,EAAE,iBAAiB,EAAE,0BAAiB,CAAC,YAAY,EAAE,CACtD,CAAC;IAEF,4BAA4B;IAC5B,MAAM,IAAA,mBAAa,EACjB,IAAI,EACJ,IAAA,0BAAiB,EAAC,+CAA4B,EAAE,KAAK,EAAE,UAAU,CAAC,EAClE,SAAS,kBAAkB,YAAY,CACxC,CAAC;IAEF,6CAA6C;IAC7C,MAAM,cAAc,GAAG,IAAA,0BAAiB,EACtC,aAAa,CAAC,IAAI,EAClB,cAAc,CAAC,IAAI,IAAI,KAAK,CAC7B,CAAC;IACF,MAAM,aAAa,GAAG,IAAA,0BAAiB,EAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAEpE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,GAAG,kBAAkB,QAAQ,CAAC;QACtD,MAAM,aAAa,GACjB,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE3E,4BAA4B;QAC5B,MAAM,IAAA,2BAAqB,EACzB,IAAI,EACJ,aAAa,EACb,CAAC,eAAe,CAAC,EACjB,IAAI,QAAQ,mBAAmB,CAChC,CAAC;QAEF,MAAM,kBAAkB,GAAG,SAAS,aAAa,YAAY,eAAe,qBAAqB,CAAC;QAElG,0DAA0D;QAC1D,mEAAmE;QACnE,kDAAkD;QAClD,MAAM,IAAA,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/strands-agent/mcp-connection/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,23 +116,23 @@ async function ensurePythonAgentConnectionProject(tree) {
|
|
|
116
116
|
*/
|
|
117
117
|
async function addPythonReExport(tree, initFilePath, fromModule, importName) {
|
|
118
118
|
// Check if already exported
|
|
119
|
-
if (await (0, ast_1.
|
|
119
|
+
if (await (0, ast_1.matchGritQL)(tree, initFilePath, `\`${importName}\``)) {
|
|
120
120
|
return;
|
|
121
121
|
}
|
|
122
122
|
const importLine = `from ${fromModule} import ${importName}`;
|
|
123
123
|
const allEntry = `"${importName}"`;
|
|
124
124
|
// Try to append import after existing import using +=
|
|
125
|
-
const appendedImport = await (0, ast_1.
|
|
125
|
+
const appendedImport = await (0, ast_1.applyGritQL)(tree, initFilePath, py(`\`from $mod import $name\` as $stmt where {
|
|
126
126
|
$program <: not contains \`${importName}\`,
|
|
127
127
|
$stmt += \`\n${importLine}\`
|
|
128
128
|
}`));
|
|
129
129
|
if (appendedImport) {
|
|
130
130
|
// Also append to existing __all__
|
|
131
|
-
await (0, ast_1.
|
|
131
|
+
await (0, ast_1.applyGritQL)(tree, initFilePath, py(`\`__all__ = [$items]\` where { $items += \`, ${allEntry}\` }`));
|
|
132
132
|
return;
|
|
133
133
|
}
|
|
134
134
|
// No existing imports — first re-export. Try to anchor after docstring.
|
|
135
|
-
const anchoredImport = await (0, ast_1.
|
|
135
|
+
const anchoredImport = await (0, ast_1.applyGritQL)(tree, initFilePath, py(`\`"""Automatically generated by Nx."""\` as $doc => \`$doc\n${importLine}\n\n__all__ = [${allEntry}]\``));
|
|
136
136
|
if (!anchoredImport) {
|
|
137
137
|
// Completely empty file or no docstring — write directly
|
|
138
138
|
tree.write(initFilePath, `${importLine}\n\n__all__ = [${allEntry}]\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-connection.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/utils/agent-connection/agent-connection.ts"],"names":[],"mappings":";;;AAmCA,gFAMC;AAKD,gFAMC;AAKD,kFAMC;AAMD,wFAyBC;AAMD,gFA+CC;AAQD,8CAiDC;;AA5MD;;;GAGG;AACH,uCAKoB;AACpB,+EAAwD;AACxD,gFAEoC;AACpC,8BAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"agent-connection.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/utils/agent-connection/agent-connection.ts"],"names":[],"mappings":"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"}
|
package/src/utils/ast/website.js
CHANGED
|
@@ -5,131 +5,74 @@ exports.addHookResultToRouterProviderContext = void 0;
|
|
|
5
5
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
6
|
* SPDX-License-Identifier: Apache-2.0
|
|
7
7
|
*/
|
|
8
|
-
const typescript_1 = require("typescript");
|
|
9
8
|
const ast_1 = require("../ast");
|
|
10
9
|
const addHookResultToRouterProviderContext = async (tree, mainTsxPath, { hook, module, contextProp }) => {
|
|
11
|
-
//
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const hasRouterProviderComponent = (0, ast_1.query)(tree, mainTsxPath, routerProviderComponentSelector).length > 0;
|
|
20
|
-
if (!hasRouterProviderContext ||
|
|
21
|
-
!hasRouter ||
|
|
22
|
-
!hasApp ||
|
|
23
|
-
!hasRouterProviderComponent) {
|
|
10
|
+
// All 4 patterns must exist for this transform to apply
|
|
11
|
+
const checks = await Promise.all([
|
|
12
|
+
(0, ast_1.matchGritQL)(tree, mainTsxPath, '`RouterProviderContext`'),
|
|
13
|
+
(0, ast_1.matchGritQL)(tree, mainTsxPath, '`createRouter($_)`'),
|
|
14
|
+
(0, ast_1.matchGritQL)(tree, mainTsxPath, '`const App = $_`'),
|
|
15
|
+
(0, ast_1.matchGritQL)(tree, mainTsxPath, '`<RouterProvider $_ />`'),
|
|
16
|
+
]);
|
|
17
|
+
if (checks.some((c) => !c)) {
|
|
24
18
|
return;
|
|
25
19
|
}
|
|
26
20
|
await (0, ast_1.addDestructuredImport)(tree, mainTsxPath, [hook], module);
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
//
|
|
43
|
-
(0, ast_1.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
//
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
});
|
|
83
|
-
if (!hasHookCall) {
|
|
84
|
-
// Prepend the following statement: `const <contextProp> = <hook>();`
|
|
85
|
-
const newStatements = [
|
|
86
|
-
typescript_1.factory.createVariableStatement(undefined, typescript_1.factory.createVariableDeclarationList([
|
|
87
|
-
typescript_1.factory.createVariableDeclaration(typescript_1.factory.createIdentifier(contextProp), undefined, undefined, typescript_1.factory.createCallExpression(typescript_1.factory.createIdentifier(hook), undefined, [])),
|
|
88
|
-
], typescript_1.NodeFlags.Const)),
|
|
89
|
-
// Add existing statements or create return statement for expression body
|
|
90
|
-
...(isBlockBody
|
|
91
|
-
? existingStatements
|
|
92
|
-
: [typescript_1.factory.createReturnStatement(node.body)]),
|
|
93
|
-
];
|
|
94
|
-
return typescript_1.factory.createArrowFunction(node.modifiers, node.typeParameters, node.parameters, node.type, node.equalsGreaterThanToken, typescript_1.factory.createBlock(newStatements, true));
|
|
95
|
-
}
|
|
96
|
-
return node;
|
|
97
|
-
});
|
|
98
|
-
// Add the context prop to the RouterProvider context prop, eg: <RouterProvider router={router} context={{ ...existing, <contextProp> }} />;
|
|
99
|
-
(0, ast_1.replace)(tree, mainTsxPath, routerProviderComponentSelector, (node) => {
|
|
100
|
-
// Find existing context attribute
|
|
101
|
-
const existingContextAttr = node.attributes.properties.find((attr) => attr.kind === typescript_1.SyntaxKind.JsxAttribute &&
|
|
102
|
-
attr.name &&
|
|
103
|
-
attr.name.kind === typescript_1.SyntaxKind.Identifier &&
|
|
104
|
-
attr.name.text === 'context');
|
|
105
|
-
// Get existing context properties if they exist
|
|
106
|
-
const existingContextProps = existingContextAttr &&
|
|
107
|
-
existingContextAttr.initializer &&
|
|
108
|
-
existingContextAttr.initializer.kind === typescript_1.SyntaxKind.JsxExpression &&
|
|
109
|
-
existingContextAttr.initializer.expression &&
|
|
110
|
-
existingContextAttr.initializer.expression.kind ===
|
|
111
|
-
typescript_1.SyntaxKind.ObjectLiteralExpression
|
|
112
|
-
? existingContextAttr.initializer
|
|
113
|
-
.expression.properties
|
|
114
|
-
: [];
|
|
115
|
-
// Create new context attribute with existing props plus the new context prop
|
|
116
|
-
const newContextAttr = typescript_1.factory.createJsxAttribute(typescript_1.factory.createIdentifier('context'), typescript_1.factory.createJsxExpression(undefined, typescript_1.factory.createObjectLiteralExpression([
|
|
117
|
-
// Add existing properties
|
|
118
|
-
...existingContextProps,
|
|
119
|
-
// Add the new context prop as shorthand property assignment
|
|
120
|
-
typescript_1.factory.createShorthandPropertyAssignment(typescript_1.factory.createIdentifier(contextProp)),
|
|
121
|
-
])));
|
|
122
|
-
// Create new JSX self-closing element with all existing attributes except 'context', plus the new context attribute
|
|
123
|
-
return typescript_1.factory.createJsxSelfClosingElement(node.tagName, node.typeArguments, typescript_1.factory.createJsxAttributes([
|
|
124
|
-
// Include all existing attributes except 'context'
|
|
125
|
-
...node.attributes.properties.filter((attr) => !(attr.kind === typescript_1.SyntaxKind.JsxAttribute &&
|
|
126
|
-
attr.name &&
|
|
127
|
-
attr.name.kind === typescript_1.SyntaxKind.Identifier &&
|
|
128
|
-
attr.name.text === 'context')),
|
|
129
|
-
// Add the new context attribute
|
|
130
|
-
newContextAttr,
|
|
131
|
-
]));
|
|
132
|
-
});
|
|
21
|
+
// 1. Add property to RouterProviderContext type
|
|
22
|
+
// 'some' checks direct members only (not nested), so a nested 'auth' won't block adding a top-level one.
|
|
23
|
+
// Type members use ; as terminators, so += with leading \n handles separation.
|
|
24
|
+
await (0, ast_1.applyGritQL)(tree, mainTsxPath, `or {
|
|
25
|
+
\`type RouterProviderContext = {}\` => \`type RouterProviderContext = {
|
|
26
|
+
${contextProp}?: ReturnType<typeof ${hook}>;
|
|
27
|
+
}\`,
|
|
28
|
+
\`type RouterProviderContext = { $members }\` where {
|
|
29
|
+
$members <: not some \`${contextProp}?: $_\`,
|
|
30
|
+
$members += \`
|
|
31
|
+
${contextProp}?: ReturnType<typeof ${hook}>\`
|
|
32
|
+
}
|
|
33
|
+
}`);
|
|
34
|
+
// 2. Add context property to createRouter config
|
|
35
|
+
// 'some' checks direct properties of the createRouter argument object only.
|
|
36
|
+
// Use += for multi-prop objects, => rewrite for single-prop.
|
|
37
|
+
await (0, ast_1.applyGritQL)(tree, mainTsxPath, `\`createRouter({ $props })\` where {
|
|
38
|
+
$props <: not some \`context: $_\`,
|
|
39
|
+
$props += \`context: { ${contextProp}: undefined }\`
|
|
40
|
+
}`);
|
|
41
|
+
// If context already exists, add the new prop to it.
|
|
42
|
+
// Handle empty context: {} via nested contains => rewrite, scoped to createRouter.
|
|
43
|
+
await (0, ast_1.applyGritQL)(tree, mainTsxPath, `\`createRouter({ $props })\` where {
|
|
44
|
+
$props <: contains \`context: {}\` => \`context: { ${contextProp}: undefined }\`
|
|
45
|
+
}`);
|
|
46
|
+
// Handle non-empty context via rewrite (the context object may be single-prop
|
|
47
|
+
// from the first hook call, where += concatenates without comma)
|
|
48
|
+
await (0, ast_1.applyGritQL)(tree, mainTsxPath, `\`context: { $cprops }\` => \`context: { $cprops, ${contextProp}: undefined }\` where {
|
|
49
|
+
$cprops <: within \`createRouter($_)\`,
|
|
50
|
+
$cprops <: not some \`${contextProp}: $_\`
|
|
51
|
+
}`);
|
|
52
|
+
// 3. Add hook call to App component body
|
|
53
|
+
// Block body: 'some' checks direct statements.
|
|
54
|
+
// Expression body: 'contains' to also prevent matching block bodies.
|
|
55
|
+
await (0, ast_1.applyGritQL)(tree, mainTsxPath, `or {
|
|
56
|
+
\`const App = () => { $body }\` => raw\`const App = () => {
|
|
57
|
+
const ${contextProp} = ${hook}();
|
|
58
|
+
$body
|
|
59
|
+
}\` where { $body <: not some \`const ${contextProp} = ${hook}()\` },
|
|
60
|
+
\`const App = () => $expr\` => raw\`const App = () => {
|
|
61
|
+
const ${contextProp} = ${hook}();
|
|
62
|
+
return $expr;
|
|
63
|
+
}\` where { $expr <: not contains \`${hook}()\` }
|
|
64
|
+
}`);
|
|
65
|
+
// 4. Add context prop to RouterProvider JSX element
|
|
66
|
+
// 'some' checks direct JSX attributes only.
|
|
67
|
+
await (0, ast_1.applyGritQL)(tree, mainTsxPath, `or {
|
|
68
|
+
\`<RouterProvider $attrs context={{}} />\` => \`<RouterProvider $attrs context={{ ${contextProp} }} />\`,
|
|
69
|
+
\`<RouterProvider $attrs context={{ $cprops }} />\` => \`<RouterProvider $attrs context={{ $cprops, ${contextProp} }} />\` where {
|
|
70
|
+
$cprops <: not some \`${contextProp}\`
|
|
71
|
+
},
|
|
72
|
+
\`<RouterProvider $attrs />\` => \`<RouterProvider $attrs context={{ ${contextProp} }} />\` where {
|
|
73
|
+
$attrs <: not some \`context\`
|
|
74
|
+
}
|
|
75
|
+
}`);
|
|
133
76
|
};
|
|
134
77
|
exports.addHookResultToRouterProviderContext = addHookResultToRouterProviderContext;
|
|
135
78
|
//# sourceMappingURL=website.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"website.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/utils/ast/website.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"website.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/utils/ast/website.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,gCAAyE;AASlE,MAAM,oCAAoC,GAAG,KAAK,EACvD,IAAU,EACV,WAAmB,EACnB,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAA6C,EACxE,EAAE;IACF,wDAAwD;IACxD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/B,IAAA,iBAAW,EAAC,IAAI,EAAE,WAAW,EAAE,yBAAyB,CAAC;QACzD,IAAA,iBAAW,EAAC,IAAI,EAAE,WAAW,EAAE,oBAAoB,CAAC;QACpD,IAAA,iBAAW,EAAC,IAAI,EAAE,WAAW,EAAE,kBAAkB,CAAC;QAClD,IAAA,iBAAW,EAAC,IAAI,EAAE,WAAW,EAAE,yBAAyB,CAAC;KAC1D,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,MAAM,IAAA,2BAAqB,EAAC,IAAI,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAE/D,gDAAgD;IAChD,4GAA4G;IAC5G,kFAAkF;IAClF,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,WAAW,EACX;;IAEA,WAAW,wBAAwB,IAAI;;;iCAGV,WAAW;;EAE1C,WAAW,wBAAwB,IAAI;;MAEnC,CACH,CAAC;IAEF,iDAAiD;IACjD,+EAA+E;IAC/E,gEAAgE;IAChE,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,WAAW,EACX;;+BAE2B,WAAW;MACpC,CACH,CAAC;IAEF,qDAAqD;IACrD,mFAAmF;IACnF,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,WAAW,EACX;2DACuD,WAAW;MAChE,CACH,CAAC;IACF,8EAA8E;IAC9E,iEAAiE;IACjE,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,WAAW,EACX,qDAAqD,WAAW;;8BAEtC,WAAW;MACnC,CACH,CAAC;IAEF,yCAAyC;IACzC,kDAAkD;IAClD,wEAAwE;IACxE,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,WAAW,EACX;;UAEM,WAAW,MAAM,IAAI;;wCAES,WAAW,MAAM,IAAI;;UAEnD,WAAW,MAAM,IAAI;;sCAEO,IAAI;MACpC,CACH,CAAC;IAEF,oDAAoD;IACpD,+CAA+C;IAC/C,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,WAAW,EACX;0FACsF,WAAW;4GACO,WAAW;gCACvF,WAAW;;6EAEkC,WAAW;;;MAGlF,CACH,CAAC;AACJ,CAAC,CAAC;AAtGW,QAAA,oCAAoC,wCAsG/C"}
|
package/src/utils/ast.d.ts
CHANGED
|
@@ -42,9 +42,9 @@ export declare const hasExportDeclaration: (source: string, identifierName: stri
|
|
|
42
42
|
/**
|
|
43
43
|
* Apply a GritQL pattern to a file in the Nx tree.
|
|
44
44
|
*/
|
|
45
|
-
export declare const
|
|
45
|
+
export declare const applyGritQL: (tree: Tree, filePath: string, pattern: string) => Promise<boolean>;
|
|
46
46
|
/**
|
|
47
47
|
* Check whether a GritQL pattern matches anywhere in a file.
|
|
48
48
|
* Returns true if the pattern matches at least once.
|
|
49
49
|
*/
|
|
50
|
-
export declare const
|
|
50
|
+
export declare const matchGritQL: (tree: Tree, filePath: string, pattern: string) => Promise<boolean>;
|
package/src/utils/ast.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.matchGritQL = exports.applyGritQL = exports.hasExportDeclaration = exports.jsonToAst = exports.createJsxElement = exports.createJsxElementFromIdentifier = exports.query = exports.appendStatements = exports.prependStatements = exports.replaceIfExists = exports.replace = exports.addStarExport = exports.addSingleImport = exports.addDestructuredImport = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const tsquery_1 = require("@phenomnomnominal/tsquery");
|
|
6
6
|
const typescript_1 = tslib_1.__importStar(require("typescript"));
|
|
@@ -28,7 +28,7 @@ const createOrUpdateFile = (tree, filePath, doUpdate) => {
|
|
|
28
28
|
const addDestructuredImport = async (tree, filePath, variableNames, from) => {
|
|
29
29
|
assertFilePath(tree, filePath);
|
|
30
30
|
// Check if there's an existing import from this module
|
|
31
|
-
const hasExistingImport = await (0, exports.
|
|
31
|
+
const hasExistingImport = await (0, exports.matchGritQL)(tree, filePath, `\`import { $_ } from '${from}'\``);
|
|
32
32
|
if (hasExistingImport) {
|
|
33
33
|
// For each new variable, use GritQL rewrite to add it if not already present
|
|
34
34
|
for (const variableName of variableNames) {
|
|
@@ -36,7 +36,7 @@ const addDestructuredImport = async (tree, filePath, variableNames, from) => {
|
|
|
36
36
|
? variableName.split(' as ')[1]
|
|
37
37
|
: variableName;
|
|
38
38
|
// Use rewrite (=>) which correctly handles comma-separated import specifier lists
|
|
39
|
-
await (0, exports.
|
|
39
|
+
await (0, exports.applyGritQL)(tree, filePath, `\`import { $imports } from '${from}'\` => \`import { $imports, ${variableName} } from '${from}'\` where { $imports <: not contains \`${localName}\` }`);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
else {
|
|
@@ -54,7 +54,7 @@ exports.addDestructuredImport = addDestructuredImport;
|
|
|
54
54
|
const addSingleImport = async (tree, filePath, variableName, from) => {
|
|
55
55
|
assertFilePath(tree, filePath);
|
|
56
56
|
// Check if default import already exists using GritQL
|
|
57
|
-
const alreadyImported = await (0, exports.
|
|
57
|
+
const alreadyImported = await (0, exports.matchGritQL)(tree, filePath, `\`import ${variableName} from '${from}'\``);
|
|
58
58
|
if (alreadyImported) {
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
@@ -75,7 +75,7 @@ const addStarExport = async (tree, filePath, from) => {
|
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
77
|
// Check if already exported using GritQL
|
|
78
|
-
const alreadyExported = await (0, exports.
|
|
78
|
+
const alreadyExported = await (0, exports.matchGritQL)(tree, filePath, `\`export * from '${from}'\``);
|
|
79
79
|
if (alreadyExported) {
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
@@ -226,7 +226,7 @@ exports.hasExportDeclaration = hasExportDeclaration;
|
|
|
226
226
|
/**
|
|
227
227
|
* Apply a GritQL pattern to a file in the Nx tree.
|
|
228
228
|
*/
|
|
229
|
-
const
|
|
229
|
+
const applyGritQL = async (tree, filePath, pattern) => {
|
|
230
230
|
if (!tree.exists(filePath))
|
|
231
231
|
throw new Error(`No file at ${filePath}`);
|
|
232
232
|
const source = tree.read(filePath).toString();
|
|
@@ -238,12 +238,12 @@ const applyGritQLTransform = async (tree, filePath, pattern) => {
|
|
|
238
238
|
}
|
|
239
239
|
return false;
|
|
240
240
|
};
|
|
241
|
-
exports.
|
|
241
|
+
exports.applyGritQL = applyGritQL;
|
|
242
242
|
/**
|
|
243
243
|
* Check whether a GritQL pattern matches anywhere in a file.
|
|
244
244
|
* Returns true if the pattern matches at least once.
|
|
245
245
|
*/
|
|
246
|
-
const
|
|
246
|
+
const matchGritQL = async (tree, filePath, pattern) => {
|
|
247
247
|
if (!tree.exists(filePath))
|
|
248
248
|
return false;
|
|
249
249
|
const source = tree.read(filePath).toString();
|
|
@@ -262,5 +262,5 @@ const hasGritQLMatch = async (tree, filePath, pattern) => {
|
|
|
262
262
|
return false;
|
|
263
263
|
}
|
|
264
264
|
};
|
|
265
|
-
exports.
|
|
265
|
+
exports.matchGritQL = matchGritQL;
|
|
266
266
|
//# sourceMappingURL=ast.js.map
|
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":";;;;AAKA,uDAAyD;AACzD,iEASoB;AACpB,4CAA+C;AAE/C,MAAM,cAAc,GAAG,CAAC,IAAU,EAAE,QAAgB,EAAE,EAAE;IACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,IAAU,EACV,QAAgB,EAChB,QAAkC,EAClC,EAAE;IACF,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvD,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,eAAe,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACxC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CACzB,IAAU,EACV,QAAgB,EAChB,QAAmC,EACnC,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACjD,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,eAAe,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACxC,CAAC;AACH,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,KAAK,EACxC,IAAU,EACV,QAAgB,EAChB,aAAuB,EACvB,IAAY,EACZ,EAAE;IACF,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE/B,uDAAuD;IACvD,MAAM,iBAAiB,GAAG,MAAM,IAAA,
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/ast.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,4 +40,4 @@ export interface AddTypeScriptBundleTargetOptions {
|
|
|
40
40
|
/**
|
|
41
41
|
* Add a TypeScript bundle target using rolldown
|
|
42
42
|
*/
|
|
43
|
-
export declare const addTypeScriptBundleTarget: (tree: Tree, project: ProjectConfiguration, opts: AddTypeScriptBundleTargetOptions) => void
|
|
43
|
+
export declare const addTypeScriptBundleTarget: (tree: Tree, project: ProjectConfiguration, opts: AddTypeScriptBundleTargetOptions) => Promise<void>;
|
|
@@ -8,7 +8,6 @@ exports.addTypeScriptBundleTarget = exports.addPythonBundleTarget = void 0;
|
|
|
8
8
|
const devkit_1 = require("@nx/devkit");
|
|
9
9
|
const versions_1 = require("../versions");
|
|
10
10
|
const ast_1 = require("../ast");
|
|
11
|
-
const typescript_1 = require("typescript");
|
|
12
11
|
const paths_1 = require("../paths");
|
|
13
12
|
const nx_1 = require("../nx");
|
|
14
13
|
/**
|
|
@@ -59,13 +58,8 @@ exports.addPythonBundleTarget = addPythonBundleTarget;
|
|
|
59
58
|
/**
|
|
60
59
|
* Add a TypeScript bundle target using rolldown
|
|
61
60
|
*/
|
|
62
|
-
const addTypeScriptBundleTarget = (tree, project, opts) => {
|
|
61
|
+
const addTypeScriptBundleTarget = async (tree, project, opts) => {
|
|
63
62
|
project.targets ??= {};
|
|
64
|
-
// Check if AWS SDK is external
|
|
65
|
-
const awsSdkRegex = /@aws-sdk\/.*/;
|
|
66
|
-
const isAwsSdkExternal = opts.external?.some((ext) => ext instanceof RegExp
|
|
67
|
-
? ext.source === awsSdkRegex.source
|
|
68
|
-
: ext === awsSdkRegex.source);
|
|
69
63
|
// Generate empty rolldown config if it doesn't exist
|
|
70
64
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'ts'), project.root, {}, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
|
|
71
65
|
// Add the bundle target
|
|
@@ -84,72 +78,33 @@ const addTypeScriptBundleTarget = (tree, project, opts) => {
|
|
|
84
78
|
// Add bundle to the build target
|
|
85
79
|
(0, nx_1.addDependencyToTargetIfNotPresent)(project, 'build', 'bundle');
|
|
86
80
|
const rolldownConfigPath = (0, devkit_1.joinPathFragments)(project.root, 'rolldown.config.ts');
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
tree.write(rolldownConfigPath, newContent);
|
|
113
|
-
}
|
|
81
|
+
const outputFile = (0, devkit_1.joinPathFragments)((0, paths_1.getRelativePathToRoot)(tree, project.name), 'dist', project.root, 'bundle', opts.bundleOutputDir ?? '.', 'index.js');
|
|
82
|
+
const external = opts.external?.length
|
|
83
|
+
? opts.external
|
|
84
|
+
.map((ext) => typeof ext === 'string' ? `'${ext}'` : `/${ext.source}/`)
|
|
85
|
+
.join(', ')
|
|
86
|
+
: '';
|
|
87
|
+
const entry = `{
|
|
88
|
+
tsconfig: 'tsconfig.lib.json',
|
|
89
|
+
input: '${opts.targetFilePath}',
|
|
90
|
+
output: { file: '${outputFile}', format: 'cjs', inlineDynamicImports: true },
|
|
91
|
+
platform: '${opts.platform ?? 'node'}',
|
|
92
|
+
${external ? `external: [${external}],` : ''}
|
|
93
|
+
}`;
|
|
94
|
+
// Use GritQL to append the config entry to the defineConfig array.
|
|
95
|
+
// First try the non-empty array case using the accumulate (+=) operator,
|
|
96
|
+
// with an idempotency guard that checks the input path is not already present.
|
|
97
|
+
const appended = await (0, ast_1.applyGritQL)(tree, rolldownConfigPath, `\`defineConfig([$items])\` where { $items <: not contains \`'${opts.targetFilePath}'\`, $items += ", ${entry}" }`);
|
|
98
|
+
if (!appended) {
|
|
99
|
+
// Empty array — GritQL's += cannot accumulate into an empty list, so we
|
|
100
|
+
// first insert a placeholder to make the array non-empty, then replace
|
|
101
|
+
// the placeholder with the real entry via += (which handles regex
|
|
102
|
+
// literals that are invalid inside GritQL backtick snippets).
|
|
103
|
+
const inserted = await (0, ast_1.applyGritQL)(tree, rolldownConfigPath, `\`defineConfig([])\` => \`defineConfig([__PLACEHOLDER__])\``);
|
|
104
|
+
if (inserted) {
|
|
105
|
+
await (0, ast_1.applyGritQL)(tree, rolldownConfigPath, `\`defineConfig([$items])\` where { $items <: \`__PLACEHOLDER__\` => ., $items += "${entry}" }`);
|
|
114
106
|
}
|
|
115
107
|
}
|
|
116
|
-
// Check whether we already have a config entry with input set to targetFilePath
|
|
117
|
-
if ((0, ast_1.query)(tree, rolldownConfigPath, `${rolldownConfigArraySelector} PropertyAssignment:has(Identifier[name="input"]):has(StringLiteral[value="${opts.targetFilePath}"])`).length === 0) {
|
|
118
|
-
// We don't have one, so append it
|
|
119
|
-
(0, ast_1.replace)(tree, rolldownConfigPath, rolldownConfigArraySelector, (node) => {
|
|
120
|
-
return typescript_1.factory.createArrayLiteralExpression([
|
|
121
|
-
...node.elements,
|
|
122
|
-
typescript_1.factory.createObjectLiteralExpression([
|
|
123
|
-
typescript_1.factory.createPropertyAssignment(typescript_1.factory.createIdentifier('tsconfig'), typescript_1.factory.createStringLiteral('tsconfig.lib.json', true)),
|
|
124
|
-
typescript_1.factory.createPropertyAssignment(typescript_1.factory.createIdentifier('input'), typescript_1.factory.createStringLiteral(opts.targetFilePath, true)),
|
|
125
|
-
typescript_1.factory.createPropertyAssignment(typescript_1.factory.createIdentifier('output'), typescript_1.factory.createObjectLiteralExpression([
|
|
126
|
-
typescript_1.factory.createPropertyAssignment(typescript_1.factory.createIdentifier('file'), typescript_1.factory.createStringLiteral((0, devkit_1.joinPathFragments)((0, paths_1.getRelativePathToRoot)(tree, project.name), 'dist', project.root, 'bundle', opts.bundleOutputDir ?? '.', 'index.js'), true)),
|
|
127
|
-
typescript_1.factory.createPropertyAssignment(typescript_1.factory.createIdentifier('format'), typescript_1.factory.createStringLiteral('cjs', true)),
|
|
128
|
-
typescript_1.factory.createPropertyAssignment(typescript_1.factory.createIdentifier('inlineDynamicImports'), typescript_1.factory.createTrue()),
|
|
129
|
-
], true)),
|
|
130
|
-
typescript_1.factory.createPropertyAssignment(typescript_1.factory.createIdentifier('platform'), typescript_1.factory.createStringLiteral(opts.platform ?? 'node', true)),
|
|
131
|
-
...(opts.external
|
|
132
|
-
? [
|
|
133
|
-
typescript_1.factory.createPropertyAssignment(typescript_1.factory.createIdentifier('external'), typescript_1.factory.createArrayLiteralExpression(opts.external.map((ext) => typeof ext === 'string'
|
|
134
|
-
? typescript_1.factory.createStringLiteral(ext, true)
|
|
135
|
-
: typescript_1.factory.createRegularExpressionLiteral(`/${ext.source}/`)))),
|
|
136
|
-
]
|
|
137
|
-
: []),
|
|
138
|
-
...(!isAwsSdkExternal
|
|
139
|
-
? [
|
|
140
|
-
typescript_1.factory.createPropertyAssignment(typescript_1.factory.createIdentifier('plugins'), typescript_1.factory.createArrayLiteralExpression([
|
|
141
|
-
typescript_1.factory.createCallExpression(typescript_1.factory.createIdentifier('disableTreeShake'), undefined, [
|
|
142
|
-
typescript_1.factory.createArrayLiteralExpression([
|
|
143
|
-
typescript_1.factory.createRegularExpressionLiteral(`/${awsSdkRegex.source}/`),
|
|
144
|
-
]),
|
|
145
|
-
]),
|
|
146
|
-
])),
|
|
147
|
-
]
|
|
148
|
-
: []),
|
|
149
|
-
], true),
|
|
150
|
-
]);
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
108
|
(0, devkit_1.addDependenciesToPackageJson)(tree, {}, (0, versions_1.withVersions)(['rolldown']));
|
|
154
109
|
};
|
|
155
110
|
exports.addTypeScriptBundleTarget = addTypeScriptBundleTarget;
|