@aws/nx-plugin 1.0.0-rc.46 → 1.0.0-rc.48
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/LICENSE-THIRD-PARTY +3 -60
- package/generators.json +1 -1
- package/package.json +7 -6
- package/src/agentcore-gateway/generator.js +12 -2
- package/src/agentcore-gateway/generator.js.map +1 -1
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +25 -31
- package/src/infra/app/generator.js +9 -6
- package/src/infra/app/generator.js.map +1 -1
- package/src/license/config.js +1 -1
- package/src/license/config.js.map +1 -1
- package/src/mcp-server/dev-server.d.ts +1 -0
- package/src/mcp-server/dev-server.js +18 -0
- package/src/mcp-server/dev-server.js.map +1 -0
- package/src/mcp-server/schema.d.ts +1 -1
- package/src/mcp-server/tools/general-guidance.js +5 -6
- package/src/mcp-server/tools/general-guidance.js.map +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +42 -7
- package/src/preset/generator.d.ts +1 -1
- package/src/preset/generator.js +4 -2
- package/src/preset/generator.js.map +1 -1
- package/src/preset/schema.d.js.map +1 -1
- package/src/preset/schema.d.ts +1 -0
- package/src/preset/schema.json +5 -0
- package/src/py/agent/generator.js +2 -1
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/mcp-server/generator.js +2 -1
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/project/generator.js +2 -1
- package/src/py/project/generator.js.map +1 -1
- package/src/py/rdb/generator.js +2 -1
- package/src/py/rdb/generator.js.map +1 -1
- package/src/smithy/ts/api/generator.js +5 -2
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/terraform/project/generator.js +4 -1
- package/src/terraform/project/generator.js.map +1 -1
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/trpc/backend/generator.js +7 -5
- 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/agent/__snapshots__/generator.spec.ts.snap +9 -5
- package/src/ts/agent/a2a-connection/generator.js +3 -2
- package/src/ts/agent/a2a-connection/generator.js.map +1 -1
- package/src/ts/agent/files/deploy/Dockerfile.template +7 -3
- package/src/ts/agent/gateway-connection/generator.js +4 -3
- package/src/ts/agent/gateway-connection/generator.js.map +1 -1
- package/src/ts/agent/generator.js +10 -7
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/ts/agent/mcp-connection/generator.js +4 -3
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/generator.js +10 -19
- package/src/ts/agent/react-connection/generator.js.map +1 -1
- package/src/ts/astro-docs/generator.js +12 -3
- package/src/ts/astro-docs/generator.js.map +1 -1
- package/src/ts/dcr-proxy/generator.js +5 -5
- package/src/ts/dcr-proxy/generator.js.map +1 -1
- package/src/ts/dynamodb/generator.js +5 -2
- package/src/ts/dynamodb/generator.js.map +1 -1
- package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +4 -2
- package/src/ts/lambda-function/files/handler/__lambdaFunctionKebabCase__.ts.template +2 -1
- package/src/ts/lambda-function/generator.js +3 -2
- package/src/ts/lambda-function/generator.js.map +1 -1
- package/src/ts/lib/ts-project-utils.js +17 -10
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/lib/vitest.js +2 -1
- package/src/ts/lib/vitest.js.map +1 -1
- package/src/ts/mcp-server/files/Dockerfile.template +7 -3
- package/src/ts/mcp-server/generator.js +13 -13
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/nx-generator/generator.js +5 -0
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +5 -6
- package/src/ts/nx-plugin/files/mcp-server/resources/GENERAL_GUIDANCE.md.template +5 -6
- package/src/ts/nx-plugin/utils.js +8 -10
- package/src/ts/nx-plugin/utils.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +11 -3
- package/src/ts/rdb/agent-connection/generator.js +1 -2
- package/src/ts/rdb/agent-connection/generator.js.map +1 -1
- package/src/ts/rdb/files/Dockerfile.template +5 -1
- package/src/ts/rdb/files/src/migration-handler.ts.template +3 -1
- package/src/ts/rdb/generator.js +12 -8
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/generator.js +1 -2
- package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/rdb/smithy-connection/generator.js +1 -2
- package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
- package/src/ts/rdb/trpc-connection/generator.js +1 -2
- package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
- package/src/ts/react-website/agui/generator.js +5 -4
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +210 -79
- package/src/ts/react-website/app/generator.js +34 -14
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/generator.js +3 -2
- package/src/ts/react-website/cognito-auth/generator.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/sync/generator.js +81 -3
- package/src/ts/sync/generator.js.map +1 -1
- package/src/utils/agent-connection/agent-connection.d.ts +1 -1
- package/src/utils/agent-connection/agent-connection.js +50 -1
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.js +10 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +19 -1
- package/src/utils/api-constructs/api-constructs.js +15 -1
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/bundle/bundle.js +2 -1
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/commands.d.ts +5 -3
- package/src/utils/commands.js +24 -3
- package/src/utils/commands.js.map +1 -1
- package/src/utils/config/index.d.ts +16 -0
- package/src/utils/config/index.js.map +1 -1
- package/src/utils/config/utils.d.ts +3 -2
- package/src/utils/config/utils.js +4 -3
- package/src/utils/config/utils.js.map +1 -1
- package/src/utils/connection/open-api/react.js +3 -2
- package/src/utils/connection/open-api/react.js.map +1 -1
- package/src/utils/containers.js +1 -1
- package/src/utils/containers.js.map +1 -1
- package/src/utils/dependencies.d.ts +18 -0
- package/src/utils/dependencies.js +206 -0
- package/src/utils/dependencies.js.map +1 -0
- package/src/utils/docker.d.ts +8 -0
- package/src/utils/docker.js +8 -1
- package/src/utils/docker.js.map +1 -1
- package/src/utils/files/common/shadcn/readme/README.md.template +3 -3
- package/src/utils/files/shadcn/components.json.template +1 -1
- package/src/utils/format.d.ts +20 -1
- package/src/utils/format.js +137 -74
- package/src/utils/format.js.map +1 -1
- package/src/utils/fs.d.ts +1 -1
- package/src/utils/fs.js +1 -1
- package/src/utils/fs.js.map +1 -1
- package/src/utils/iac.js +1 -1
- package/src/utils/iac.js.map +1 -1
- package/src/utils/init.d.ts +7 -1
- package/src/utils/init.js +45 -19
- package/src/utils/init.js.map +1 -1
- package/src/utils/install.js +3 -1
- package/src/utils/install.js.map +1 -1
- package/src/utils/mcp.d.ts +9 -0
- package/src/utils/mcp.js +9 -1
- package/src/utils/mcp.js.map +1 -1
- package/src/utils/module-format.d.ts +5 -8
- package/src/utils/module-format.js +29 -12
- package/src/utils/module-format.js.map +1 -1
- package/src/utils/npm-scope.d.ts +0 -4
- package/src/utils/npm-scope.js +0 -5
- package/src/utils/npm-scope.js.map +1 -1
- package/src/utils/nx.d.ts +13 -0
- package/src/utils/nx.js +24 -1
- package/src/utils/nx.js.map +1 -1
- package/src/utils/pnpm-workspace.d.ts +1 -12
- package/src/utils/pnpm-workspace.js +3 -30
- package/src/utils/pnpm-workspace.js.map +1 -1
- package/src/utils/project-package-json.d.ts +39 -0
- package/src/utils/project-package-json.js +119 -0
- package/src/utils/project-package-json.js.map +1 -0
- package/src/utils/shared-constructs.js +6 -5
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/shared-dynamodb-scripts.js +4 -2
- package/src/utils/shared-dynamodb-scripts.js.map +1 -1
- package/src/utils/shared-infra-scripts.js +5 -4
- package/src/utils/shared-infra-scripts.js.map +1 -1
- package/src/utils/shared-rdb-scripts.js +14 -1
- package/src/utils/shared-rdb-scripts.js.map +1 -1
- package/src/utils/shared-shadcn.js +11 -8
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/test-git.d.ts +39 -0
- package/src/utils/test-git.js +117 -0
- package/src/utils/test-git.js.map +1 -0
- package/src/utils/test.js +8 -3
- package/src/utils/test.js.map +1 -1
- package/src/utils/versions.d.ts +7 -1
- package/src/utils/versions.js +13 -2
- package/src/utils/versions.js.map +1 -1
- package/src/bin/aws-nx-mcp.d.ts +0 -2
- package/src/bin/aws-nx-mcp.js +0 -14
- package/src/bin/aws-nx-mcp.js.map +0 -1
|
@@ -52,7 +52,7 @@ export default defineConfig(() => ({
|
|
|
52
52
|
provider: 'v8' as const,
|
|
53
53
|
},
|
|
54
54
|
},
|
|
55
|
-
resolve: { tsconfigPaths: true },
|
|
55
|
+
resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] },
|
|
56
56
|
define: { global: {} },
|
|
57
57
|
}));
|
|
58
58
|
"
|
|
@@ -108,7 +108,7 @@ export default defineConfig(() => ({
|
|
|
108
108
|
provider: 'v8' as const,
|
|
109
109
|
},
|
|
110
110
|
},
|
|
111
|
-
resolve: { tsconfigPaths: true },
|
|
111
|
+
resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] },
|
|
112
112
|
define: { global: {} },
|
|
113
113
|
}));
|
|
114
114
|
"
|
|
@@ -973,6 +973,9 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
973
973
|
"formatter": {
|
|
974
974
|
"quoteStyle": "single",
|
|
975
975
|
"trailingCommas": "all"
|
|
976
|
+
},
|
|
977
|
+
"resolver": {
|
|
978
|
+
"experimentalPnpmCatalogs": true
|
|
976
979
|
}
|
|
977
980
|
},
|
|
978
981
|
"css": {
|
|
@@ -988,7 +991,7 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
988
991
|
"rules": {
|
|
989
992
|
"preset": "none",
|
|
990
993
|
"correctness": {
|
|
991
|
-
"noUndeclaredDependencies": "
|
|
994
|
+
"noUndeclaredDependencies": "error"
|
|
992
995
|
}
|
|
993
996
|
}
|
|
994
997
|
},
|
|
@@ -1007,12 +1010,29 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1007
1010
|
"!**/node_modules",
|
|
1008
1011
|
"!**/.nx",
|
|
1009
1012
|
"!**/.venv",
|
|
1013
|
+
"!**/.grit",
|
|
1010
1014
|
"!**/*.css",
|
|
1011
1015
|
"!**/*.gen.*",
|
|
1012
1016
|
"!**/generated/**",
|
|
1013
1017
|
"!**/tsconfig*.json"
|
|
1014
1018
|
]
|
|
1015
|
-
}
|
|
1019
|
+
},
|
|
1020
|
+
"overrides": [
|
|
1021
|
+
{
|
|
1022
|
+
"includes": [
|
|
1023
|
+
"**/*.config.{ts,mts,cts,js,mjs,cjs}",
|
|
1024
|
+
"**/*.{spec,test}.{ts,tsx,mts,cts,js,jsx,mjs,cjs}",
|
|
1025
|
+
"**/*.stories.{ts,tsx}"
|
|
1026
|
+
],
|
|
1027
|
+
"linter": {
|
|
1028
|
+
"rules": {
|
|
1029
|
+
"correctness": {
|
|
1030
|
+
"noUndeclaredDependencies": "off"
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
]
|
|
1016
1036
|
}
|
|
1017
1037
|
"
|
|
1018
1038
|
`;
|
|
@@ -1118,39 +1138,35 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1118
1138
|
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > package.json 1`] = `
|
|
1119
1139
|
"{
|
|
1120
1140
|
"name": "@proj/source",
|
|
1121
|
-
"dependencies": {
|
|
1122
|
-
"@cloudscape-design/board-components": "3.0.205",
|
|
1123
|
-
"@cloudscape-design/components": "3.0.1330",
|
|
1124
|
-
"@cloudscape-design/global-styles": "1.0.62",
|
|
1125
|
-
"aws-cdk-lib": "2.261.0",
|
|
1126
|
-
"constructs": "10.7.0",
|
|
1127
|
-
"react": "19.2.7",
|
|
1128
|
-
"react-dom": "19.2.7",
|
|
1129
|
-
"tailwindcss": "4.3.3"
|
|
1130
|
-
},
|
|
1141
|
+
"dependencies": {},
|
|
1131
1142
|
"devDependencies": {
|
|
1132
1143
|
"@nx/js": "23.1.0",
|
|
1133
|
-
"@nx/react": "
|
|
1144
|
+
"@nx/react": "catalog:",
|
|
1134
1145
|
"@nx/vite": "23.1.0",
|
|
1135
1146
|
"@nx/vitest": "23.1.0",
|
|
1136
1147
|
"@nx/web": "23.1.0",
|
|
1137
1148
|
"@swc/helpers": "~0.5.18",
|
|
1138
|
-
"@tailwindcss/vite": "
|
|
1149
|
+
"@tailwindcss/vite": "catalog:",
|
|
1139
1150
|
"@testing-library/dom": "10.4.0",
|
|
1140
1151
|
"@testing-library/react": "16.3.0",
|
|
1141
|
-
"@types/node": "
|
|
1152
|
+
"@types/node": "catalog:",
|
|
1142
1153
|
"@types/react": "^19.0.0",
|
|
1143
1154
|
"@types/react-dom": "^19.0.0",
|
|
1144
1155
|
"@vitejs/plugin-react": "^6.0.0",
|
|
1145
|
-
"@vitest/coverage-v8": "
|
|
1146
|
-
"@vitest/ui": "
|
|
1156
|
+
"@vitest/coverage-v8": "catalog:",
|
|
1157
|
+
"@vitest/ui": "catalog:",
|
|
1147
1158
|
"jiti": "2.4.2",
|
|
1148
1159
|
"jsdom": "^27.1.0",
|
|
1149
1160
|
"typescript": "~6.0.3",
|
|
1150
|
-
"vite": "
|
|
1151
|
-
"vitest": "
|
|
1161
|
+
"vite": "catalog:",
|
|
1162
|
+
"vitest": "catalog:"
|
|
1152
1163
|
},
|
|
1153
|
-
"type": "module"
|
|
1164
|
+
"type": "module",
|
|
1165
|
+
"workspaces": [
|
|
1166
|
+
"packages/*",
|
|
1167
|
+
"test-app",
|
|
1168
|
+
"packages/common/constructs"
|
|
1169
|
+
]
|
|
1154
1170
|
}
|
|
1155
1171
|
"
|
|
1156
1172
|
`;
|
|
@@ -1192,6 +1208,24 @@ You can also automatiaclly fix some lint errors by running the following command
|
|
|
1192
1208
|
"
|
|
1193
1209
|
`;
|
|
1194
1210
|
|
|
1211
|
+
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > packages/common/constructs/package.json 1`] = `
|
|
1212
|
+
"{
|
|
1213
|
+
"name": "@proj/common-constructs",
|
|
1214
|
+
"version": "0.0.1",
|
|
1215
|
+
"private": true,
|
|
1216
|
+
"type": "module",
|
|
1217
|
+
"dependencies": {
|
|
1218
|
+
"aws-cdk-lib": "catalog:",
|
|
1219
|
+
"constructs": "catalog:",
|
|
1220
|
+
"tslib": "^2.3.0"
|
|
1221
|
+
},
|
|
1222
|
+
"devDependencies": {
|
|
1223
|
+
"@types/node": "catalog:"
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
"
|
|
1227
|
+
`;
|
|
1228
|
+
|
|
1195
1229
|
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > packages/common/constructs/project.json 1`] = `
|
|
1196
1230
|
"{
|
|
1197
1231
|
"name": "@proj/common-constructs",
|
|
@@ -2114,9 +2148,25 @@ export default defineConfig(() => ({
|
|
|
2114
2148
|
|
|
2115
2149
|
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > pnpm-workspace.yaml 1`] = `
|
|
2116
2150
|
"packages:
|
|
2117
|
-
-
|
|
2118
|
-
-
|
|
2119
|
-
-
|
|
2151
|
+
- packages/*
|
|
2152
|
+
- test-app
|
|
2153
|
+
- packages/common/*
|
|
2154
|
+
catalog:
|
|
2155
|
+
vite: 8.1.5
|
|
2156
|
+
vitest: 4.1.10
|
|
2157
|
+
'@vitest/coverage-v8': 4.1.10
|
|
2158
|
+
constructs: 10.7.0
|
|
2159
|
+
aws-cdk-lib: 2.261.0
|
|
2160
|
+
'@types/node': 26.1.1
|
|
2161
|
+
react: 19.2.7
|
|
2162
|
+
react-dom: 19.2.7
|
|
2163
|
+
'@cloudscape-design/components': 3.0.1330
|
|
2164
|
+
'@cloudscape-design/board-components': 3.0.205
|
|
2165
|
+
'@cloudscape-design/global-styles': 1.0.62
|
|
2166
|
+
tailwindcss: 4.3.3
|
|
2167
|
+
'@nx/react': 23.1.0
|
|
2168
|
+
'@vitest/ui': 4.1.10
|
|
2169
|
+
'@tailwindcss/vite': 4.3.3
|
|
2120
2170
|
"
|
|
2121
2171
|
`;
|
|
2122
2172
|
|
|
@@ -2190,6 +2240,25 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2190
2240
|
"
|
|
2191
2241
|
`;
|
|
2192
2242
|
|
|
2243
|
+
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > test-app/package.json 1`] = `
|
|
2244
|
+
"{
|
|
2245
|
+
"name": "@proj/test-app",
|
|
2246
|
+
"version": "0.0.1",
|
|
2247
|
+
"private": true,
|
|
2248
|
+
"type": "module",
|
|
2249
|
+
"dependencies": {
|
|
2250
|
+
"@cloudscape-design/board-components": "catalog:",
|
|
2251
|
+
"@cloudscape-design/components": "catalog:",
|
|
2252
|
+
"@cloudscape-design/global-styles": "catalog:",
|
|
2253
|
+
"react": "catalog:",
|
|
2254
|
+
"react-dom": "catalog:",
|
|
2255
|
+
"tailwindcss": "catalog:"
|
|
2256
|
+
},
|
|
2257
|
+
"devDependencies": {}
|
|
2258
|
+
}
|
|
2259
|
+
"
|
|
2260
|
+
`;
|
|
2261
|
+
|
|
2193
2262
|
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > test-app/project.json 1`] = `
|
|
2194
2263
|
"{
|
|
2195
2264
|
"name": "@proj/test-app",
|
|
@@ -2616,7 +2685,7 @@ export default defineConfig(() => ({
|
|
|
2616
2685
|
provider: 'v8' as const,
|
|
2617
2686
|
},
|
|
2618
2687
|
},
|
|
2619
|
-
resolve: { tsconfigPaths: true },
|
|
2688
|
+
resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] },
|
|
2620
2689
|
define: { global: {} },
|
|
2621
2690
|
}));
|
|
2622
2691
|
"
|
|
@@ -2626,10 +2695,10 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2626
2695
|
"{
|
|
2627
2696
|
"compilerOptions": {
|
|
2628
2697
|
"paths": {
|
|
2629
|
-
"
|
|
2698
|
+
"@proj/test-app": [
|
|
2630
2699
|
"./test-app/src/index.ts"
|
|
2631
2700
|
],
|
|
2632
|
-
"
|
|
2701
|
+
"@proj/common-constructs": [
|
|
2633
2702
|
"./packages/common/constructs/src/index.ts"
|
|
2634
2703
|
]
|
|
2635
2704
|
},
|
|
@@ -2689,6 +2758,9 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2689
2758
|
"formatter": {
|
|
2690
2759
|
"quoteStyle": "single",
|
|
2691
2760
|
"trailingCommas": "all"
|
|
2761
|
+
},
|
|
2762
|
+
"resolver": {
|
|
2763
|
+
"experimentalPnpmCatalogs": true
|
|
2692
2764
|
}
|
|
2693
2765
|
},
|
|
2694
2766
|
"css": {
|
|
@@ -2704,7 +2776,7 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2704
2776
|
"rules": {
|
|
2705
2777
|
"preset": "none",
|
|
2706
2778
|
"correctness": {
|
|
2707
|
-
"noUndeclaredDependencies": "
|
|
2779
|
+
"noUndeclaredDependencies": "error"
|
|
2708
2780
|
}
|
|
2709
2781
|
}
|
|
2710
2782
|
},
|
|
@@ -2723,12 +2795,29 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2723
2795
|
"!**/node_modules",
|
|
2724
2796
|
"!**/.nx",
|
|
2725
2797
|
"!**/.venv",
|
|
2798
|
+
"!**/.grit",
|
|
2726
2799
|
"!**/*.css",
|
|
2727
2800
|
"!**/*.gen.*",
|
|
2728
2801
|
"!**/generated/**",
|
|
2729
2802
|
"!**/tsconfig*.json"
|
|
2730
2803
|
]
|
|
2731
|
-
}
|
|
2804
|
+
},
|
|
2805
|
+
"overrides": [
|
|
2806
|
+
{
|
|
2807
|
+
"includes": [
|
|
2808
|
+
"**/*.config.{ts,mts,cts,js,mjs,cjs}",
|
|
2809
|
+
"**/*.{spec,test}.{ts,tsx,mts,cts,js,jsx,mjs,cjs}",
|
|
2810
|
+
"**/*.stories.{ts,tsx}"
|
|
2811
|
+
],
|
|
2812
|
+
"linter": {
|
|
2813
|
+
"rules": {
|
|
2814
|
+
"correctness": {
|
|
2815
|
+
"noUndeclaredDependencies": "off"
|
|
2816
|
+
}
|
|
2817
|
+
}
|
|
2818
|
+
}
|
|
2819
|
+
}
|
|
2820
|
+
]
|
|
2732
2821
|
}
|
|
2733
2822
|
"
|
|
2734
2823
|
`;
|
|
@@ -2834,44 +2923,39 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2834
2923
|
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > package.json 1`] = `
|
|
2835
2924
|
"{
|
|
2836
2925
|
"name": "@proj/source",
|
|
2837
|
-
"dependencies": {
|
|
2838
|
-
"@cloudscape-design/board-components": "3.0.205",
|
|
2839
|
-
"@cloudscape-design/components": "3.0.1330",
|
|
2840
|
-
"@cloudscape-design/global-styles": "1.0.62",
|
|
2841
|
-
"@tanstack/react-router": "1.170.18",
|
|
2842
|
-
"aws-cdk-lib": "2.261.0",
|
|
2843
|
-
"constructs": "10.7.0",
|
|
2844
|
-
"react": "19.2.7",
|
|
2845
|
-
"react-dom": "19.2.7",
|
|
2846
|
-
"tailwindcss": "4.3.3"
|
|
2847
|
-
},
|
|
2926
|
+
"dependencies": {},
|
|
2848
2927
|
"devDependencies": {
|
|
2849
2928
|
"@nx/js": "23.1.0",
|
|
2850
|
-
"@nx/react": "
|
|
2929
|
+
"@nx/react": "catalog:",
|
|
2851
2930
|
"@nx/vite": "23.1.0",
|
|
2852
2931
|
"@nx/vitest": "23.1.0",
|
|
2853
2932
|
"@nx/web": "23.1.0",
|
|
2854
2933
|
"@swc/helpers": "~0.5.18",
|
|
2855
|
-
"@tailwindcss/vite": "
|
|
2856
|
-
"@tanstack/router-generator": "
|
|
2857
|
-
"@tanstack/router-plugin": "
|
|
2858
|
-
"@tanstack/router-utils": "
|
|
2859
|
-
"@tanstack/virtual-file-routes": "
|
|
2934
|
+
"@tailwindcss/vite": "catalog:",
|
|
2935
|
+
"@tanstack/router-generator": "catalog:",
|
|
2936
|
+
"@tanstack/router-plugin": "catalog:",
|
|
2937
|
+
"@tanstack/router-utils": "catalog:",
|
|
2938
|
+
"@tanstack/virtual-file-routes": "catalog:",
|
|
2860
2939
|
"@testing-library/dom": "10.4.0",
|
|
2861
2940
|
"@testing-library/react": "16.3.0",
|
|
2862
|
-
"@types/node": "
|
|
2941
|
+
"@types/node": "catalog:",
|
|
2863
2942
|
"@types/react": "^19.0.0",
|
|
2864
2943
|
"@types/react-dom": "^19.0.0",
|
|
2865
2944
|
"@vitejs/plugin-react": "^6.0.0",
|
|
2866
|
-
"@vitest/coverage-v8": "
|
|
2867
|
-
"@vitest/ui": "
|
|
2945
|
+
"@vitest/coverage-v8": "catalog:",
|
|
2946
|
+
"@vitest/ui": "catalog:",
|
|
2868
2947
|
"jiti": "2.4.2",
|
|
2869
2948
|
"jsdom": "^27.1.0",
|
|
2870
2949
|
"typescript": "~6.0.3",
|
|
2871
|
-
"vite": "
|
|
2872
|
-
"vitest": "
|
|
2950
|
+
"vite": "catalog:",
|
|
2951
|
+
"vitest": "catalog:"
|
|
2873
2952
|
},
|
|
2874
|
-
"type": "module"
|
|
2953
|
+
"type": "module",
|
|
2954
|
+
"workspaces": [
|
|
2955
|
+
"packages/*",
|
|
2956
|
+
"test-app",
|
|
2957
|
+
"packages/common/constructs"
|
|
2958
|
+
]
|
|
2875
2959
|
}
|
|
2876
2960
|
"
|
|
2877
2961
|
`;
|
|
@@ -2913,6 +2997,24 @@ You can also automatiaclly fix some lint errors by running the following command
|
|
|
2913
2997
|
"
|
|
2914
2998
|
`;
|
|
2915
2999
|
|
|
3000
|
+
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > packages/common/constructs/package.json 1`] = `
|
|
3001
|
+
"{
|
|
3002
|
+
"name": "@proj/common-constructs",
|
|
3003
|
+
"version": "0.0.1",
|
|
3004
|
+
"private": true,
|
|
3005
|
+
"type": "module",
|
|
3006
|
+
"dependencies": {
|
|
3007
|
+
"aws-cdk-lib": "catalog:",
|
|
3008
|
+
"constructs": "catalog:",
|
|
3009
|
+
"tslib": "^2.3.0"
|
|
3010
|
+
},
|
|
3011
|
+
"devDependencies": {
|
|
3012
|
+
"@types/node": "catalog:"
|
|
3013
|
+
}
|
|
3014
|
+
}
|
|
3015
|
+
"
|
|
3016
|
+
`;
|
|
3017
|
+
|
|
2916
3018
|
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > packages/common/constructs/project.json 1`] = `
|
|
2917
3019
|
"{
|
|
2918
3020
|
"name": "@proj/common-constructs",
|
|
@@ -3835,9 +3937,30 @@ export default defineConfig(() => ({
|
|
|
3835
3937
|
|
|
3836
3938
|
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > pnpm-workspace.yaml 1`] = `
|
|
3837
3939
|
"packages:
|
|
3838
|
-
-
|
|
3839
|
-
-
|
|
3840
|
-
-
|
|
3940
|
+
- packages/*
|
|
3941
|
+
- test-app
|
|
3942
|
+
- packages/common/*
|
|
3943
|
+
catalog:
|
|
3944
|
+
vite: 8.1.5
|
|
3945
|
+
vitest: 4.1.10
|
|
3946
|
+
'@vitest/coverage-v8': 4.1.10
|
|
3947
|
+
constructs: 10.7.0
|
|
3948
|
+
aws-cdk-lib: 2.261.0
|
|
3949
|
+
'@types/node': 26.1.1
|
|
3950
|
+
react: 19.2.7
|
|
3951
|
+
react-dom: 19.2.7
|
|
3952
|
+
'@cloudscape-design/components': 3.0.1330
|
|
3953
|
+
'@cloudscape-design/board-components': 3.0.205
|
|
3954
|
+
'@cloudscape-design/global-styles': 1.0.62
|
|
3955
|
+
tailwindcss: 4.3.3
|
|
3956
|
+
'@tanstack/react-router': 1.170.18
|
|
3957
|
+
'@nx/react': 23.1.0
|
|
3958
|
+
'@vitest/ui': 4.1.10
|
|
3959
|
+
'@tailwindcss/vite': 4.3.3
|
|
3960
|
+
'@tanstack/router-plugin': 1.168.22
|
|
3961
|
+
'@tanstack/router-generator': 1.167.21
|
|
3962
|
+
'@tanstack/virtual-file-routes': 1.162.0
|
|
3963
|
+
'@tanstack/router-utils': 1.162.2
|
|
3841
3964
|
"
|
|
3842
3965
|
`;
|
|
3843
3966
|
|
|
@@ -3911,6 +4034,26 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
3911
4034
|
"
|
|
3912
4035
|
`;
|
|
3913
4036
|
|
|
4037
|
+
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > test-app/package.json 1`] = `
|
|
4038
|
+
"{
|
|
4039
|
+
"name": "@proj/test-app",
|
|
4040
|
+
"version": "0.0.1",
|
|
4041
|
+
"private": true,
|
|
4042
|
+
"type": "module",
|
|
4043
|
+
"dependencies": {
|
|
4044
|
+
"@cloudscape-design/board-components": "catalog:",
|
|
4045
|
+
"@cloudscape-design/components": "catalog:",
|
|
4046
|
+
"@cloudscape-design/global-styles": "catalog:",
|
|
4047
|
+
"@tanstack/react-router": "catalog:",
|
|
4048
|
+
"react": "catalog:",
|
|
4049
|
+
"react-dom": "catalog:",
|
|
4050
|
+
"tailwindcss": "catalog:"
|
|
4051
|
+
},
|
|
4052
|
+
"devDependencies": {}
|
|
4053
|
+
}
|
|
4054
|
+
"
|
|
4055
|
+
`;
|
|
4056
|
+
|
|
3914
4057
|
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > test-app/project.json 1`] = `
|
|
3915
4058
|
"{
|
|
3916
4059
|
"name": "@proj/test-app",
|
|
@@ -4530,7 +4673,7 @@ export default defineConfig(() => ({
|
|
|
4530
4673
|
provider: 'v8' as const,
|
|
4531
4674
|
},
|
|
4532
4675
|
},
|
|
4533
|
-
resolve: { tsconfigPaths: true },
|
|
4676
|
+
resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] },
|
|
4534
4677
|
define: { global: {} },
|
|
4535
4678
|
}));
|
|
4536
4679
|
"
|
|
@@ -4540,10 +4683,10 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
4540
4683
|
"{
|
|
4541
4684
|
"compilerOptions": {
|
|
4542
4685
|
"paths": {
|
|
4543
|
-
"
|
|
4686
|
+
"@proj/test-app": [
|
|
4544
4687
|
"./test-app/src/index.ts"
|
|
4545
4688
|
],
|
|
4546
|
-
"
|
|
4689
|
+
"@proj/common-constructs": [
|
|
4547
4690
|
"./packages/common/constructs/src/index.ts"
|
|
4548
4691
|
]
|
|
4549
4692
|
},
|
|
@@ -4651,7 +4794,7 @@ export default defineConfig(() => ({
|
|
|
4651
4794
|
provider: 'v8' as const,
|
|
4652
4795
|
},
|
|
4653
4796
|
},
|
|
4654
|
-
resolve: { tsconfigPaths: true },
|
|
4797
|
+
resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] },
|
|
4655
4798
|
define: { global: {} },
|
|
4656
4799
|
}));
|
|
4657
4800
|
"
|
|
@@ -5374,19 +5517,7 @@ root &&
|
|
|
5374
5517
|
"
|
|
5375
5518
|
`;
|
|
5376
5519
|
|
|
5377
|
-
exports[`react-website generator > should handle npm scope prefix correctly > scoped-dependencies 1`] = `
|
|
5378
|
-
{
|
|
5379
|
-
"@cloudscape-design/board-components": "3.0.205",
|
|
5380
|
-
"@cloudscape-design/components": "3.0.1330",
|
|
5381
|
-
"@cloudscape-design/global-styles": "1.0.62",
|
|
5382
|
-
"@tanstack/react-router": "1.170.18",
|
|
5383
|
-
"aws-cdk-lib": "2.261.0",
|
|
5384
|
-
"constructs": "10.7.0",
|
|
5385
|
-
"react": "19.2.7",
|
|
5386
|
-
"react-dom": "19.2.7",
|
|
5387
|
-
"tailwindcss": "4.3.3",
|
|
5388
|
-
}
|
|
5389
|
-
`;
|
|
5520
|
+
exports[`react-website generator > should handle npm scope prefix correctly > scoped-dependencies 1`] = `{}`;
|
|
5390
5521
|
|
|
5391
5522
|
exports[`react-website generator ux tests > Cloudscape > should update package.json with required dependencies > test-app/src/components/AppLayout/index.tsx 1`] = `
|
|
5392
5523
|
"import * as React from 'react';
|
|
@@ -5732,8 +5863,8 @@ import {
|
|
|
5732
5863
|
SidebarInset,
|
|
5733
5864
|
SidebarProvider,
|
|
5734
5865
|
SidebarTrigger,
|
|
5735
|
-
} from '
|
|
5736
|
-
import { Separator } from '
|
|
5866
|
+
} from '@proj/common-shadcn/components/ui/sidebar';
|
|
5867
|
+
import { Separator } from '@proj/common-shadcn/components/ui/separator';
|
|
5737
5868
|
import Config from '../../config';
|
|
5738
5869
|
|
|
5739
5870
|
import { Link, useLocation, useMatchRoute } from '@tanstack/react-router';
|
|
@@ -5744,7 +5875,7 @@ import {
|
|
|
5744
5875
|
BreadcrumbList,
|
|
5745
5876
|
BreadcrumbPage,
|
|
5746
5877
|
BreadcrumbSeparator,
|
|
5747
|
-
} from '
|
|
5878
|
+
} from '@proj/common-shadcn/components/ui/breadcrumb';
|
|
5748
5879
|
import { AppSidebar } from '../app-sidebar';
|
|
5749
5880
|
|
|
5750
5881
|
const getBreadcrumbs = (
|
|
@@ -5855,7 +5986,7 @@ import {
|
|
|
5855
5986
|
Alert as ShadcnAlert,
|
|
5856
5987
|
AlertDescription,
|
|
5857
5988
|
AlertTitle,
|
|
5858
|
-
} from '
|
|
5989
|
+
} from '@proj/common-shadcn/components/ui/alert';
|
|
5859
5990
|
|
|
5860
5991
|
type AlertType = 'info' | 'error';
|
|
5861
5992
|
|
|
@@ -5895,7 +6026,7 @@ import {
|
|
|
5895
6026
|
SidebarMenu,
|
|
5896
6027
|
SidebarMenuButton,
|
|
5897
6028
|
SidebarMenuItem,
|
|
5898
|
-
} from '
|
|
6029
|
+
} from '@proj/common-shadcn/components/ui/sidebar';
|
|
5899
6030
|
import { Link } from '@tanstack/react-router';
|
|
5900
6031
|
|
|
5901
6032
|
import Config from '../config';
|
|
@@ -5937,7 +6068,7 @@ export function AppSidebar() {
|
|
|
5937
6068
|
`;
|
|
5938
6069
|
|
|
5939
6070
|
exports[`react-website generator ux tests > Shadcn > should update package.json with required dependencies > test-app/src/components/spinner.tsx 1`] = `
|
|
5940
|
-
"import { Spinner as ShadcnSpinner } from '
|
|
6071
|
+
"import { Spinner as ShadcnSpinner } from '@proj/common-shadcn/components/ui/spinner';
|
|
5941
6072
|
|
|
5942
6073
|
export const Spinner = ShadcnSpinner;
|
|
5943
6074
|
"
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
*/ import {
|
|
4
|
+
*/ import { generateFiles, joinPathFragments, names, OverwriteStrategy, readProjectConfiguration, removeDependenciesFromPackageJson, updateJson, updateProjectConfiguration } from "@nx/devkit";
|
|
5
5
|
import { applicationGenerator } from "@nx/react";
|
|
6
6
|
import { relative, sep } from "path";
|
|
7
7
|
import { addDestructuredImport, addSingleImport, applyGritQL } from "../../../utils/ast.js";
|
|
8
|
+
import { addDependenciesToPackageJson } from "../../../utils/dependencies.js";
|
|
8
9
|
import { formatFilesInSubtree } from "../../../utils/format.js";
|
|
9
10
|
import { resolveIac } from "../../../utils/iac.js";
|
|
10
11
|
import { installDependencies } from "../../../utils/install.js";
|
|
11
12
|
import { addGeneratorMetricsIfApplicable } from "../../../utils/metrics.js";
|
|
12
13
|
import { kebabCase, toClassName, toKebabCase } from "../../../utils/names.js";
|
|
13
|
-
import { getNpmScopePrefix
|
|
14
|
+
import { getNpmScopePrefix } from "../../../utils/npm-scope.js";
|
|
14
15
|
import { addGeneratorMetadata, getGeneratorInfo } from "../../../utils/nx.js";
|
|
15
16
|
import { sortObjectKeys } from "../../../utils/object.js";
|
|
16
17
|
import { getRelativePathToRoot } from "../../../utils/paths.js";
|
|
@@ -35,7 +36,7 @@ export async function tsReactWebsiteGenerator(tree, schema) {
|
|
|
35
36
|
throw new Error('Shadcn requires TailwindCSS to be enabled.');
|
|
36
37
|
}
|
|
37
38
|
const npmScopePrefix = getNpmScopePrefix(tree);
|
|
38
|
-
const scopeAlias =
|
|
39
|
+
const scopeAlias = npmScopePrefix;
|
|
39
40
|
const websiteNameClassName = toClassName(schema.name);
|
|
40
41
|
const websiteNameKebabCase = toKebabCase(schema.name);
|
|
41
42
|
const fullyQualifiedName = `${npmScopePrefix}${websiteNameKebabCase}`;
|
|
@@ -264,8 +265,12 @@ export async function tsReactWebsiteGenerator(tree, schema) {
|
|
|
264
265
|
if (tailwind) {
|
|
265
266
|
await applyGritQL(tree, viteConfigPath, '`plugins: [$items]` => `plugins: [$items, tailwindcss()]` where { $items <: within `defineConfig($_)`, $items <: not some `tailwindcss()` }');
|
|
266
267
|
}
|
|
267
|
-
// Use Vite's native tsconfig paths resolution (replaces vite-tsconfig-paths)
|
|
268
|
-
|
|
268
|
+
// Use Vite's native tsconfig paths resolution (replaces vite-tsconfig-paths).
|
|
269
|
+
// `dedupe` forces a single copy of react/react-dom into the bundle: each
|
|
270
|
+
// project declares its own react dependency, so without this a workspace
|
|
271
|
+
// library's hoisted copy can produce a second React instance and the
|
|
272
|
+
// "Invalid hook call" runtime crash.
|
|
273
|
+
await applyGritQL(tree, viteConfigPath, "or { `defineConfig(() => ({ $props }))` where { $props <: not some `resolve: $_`, $props += `resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] }` }, `defineConfig({ $props })` where { $props <: not some `resolve: $_`, $props += `resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] }` } }");
|
|
269
274
|
// Add define: { global: {} } to the config (handles both callback and direct forms)
|
|
270
275
|
await applyGritQL(tree, viteConfigPath, 'or { `defineConfig(() => ({ $props }))` where { $props <: not contains `define`, $props += `define: { global: {} }` }, `defineConfig({ $props })` where { $props <: not contains `define`, $props += `define: { global: {} }` } }');
|
|
271
276
|
}
|
|
@@ -296,29 +301,44 @@ export async function tsReactWebsiteGenerator(tree, schema) {
|
|
|
296
301
|
}
|
|
297
302
|
] : tsconfig.references
|
|
298
303
|
}));
|
|
299
|
-
const devDependencies = [
|
|
300
|
-
'@nx/react',
|
|
301
|
-
'@vitest/ui'
|
|
302
|
-
];
|
|
303
304
|
const dependencies = [
|
|
304
305
|
'react',
|
|
305
306
|
'react-dom'
|
|
306
307
|
];
|
|
308
|
+
// Build/test tooling imported only from vite.config.mts stays at the root.
|
|
309
|
+
const rootDevDependencies = [
|
|
310
|
+
'@nx/react',
|
|
311
|
+
'@vitest/ui'
|
|
312
|
+
];
|
|
307
313
|
if (ux === 'cloudscape') {
|
|
308
314
|
dependencies.push('@cloudscape-design/components', '@cloudscape-design/board-components', '@cloudscape-design/global-styles');
|
|
309
315
|
} else if (ux === 'shadcn') {
|
|
310
|
-
|
|
316
|
+
// Shared shadcn components live in the common/shadcn package, but the
|
|
317
|
+
// website's own generated components (e.g. the tanstack-router sidebar)
|
|
318
|
+
// import lucide-react directly, so the website must declare it.
|
|
319
|
+
if (tanstackRouter) {
|
|
320
|
+
dependencies.push('lucide-react');
|
|
321
|
+
}
|
|
311
322
|
}
|
|
312
|
-
// Add TailwindCSS dependencies if enabled
|
|
313
323
|
if (tailwind) {
|
|
314
324
|
dependencies.push('tailwindcss');
|
|
315
|
-
|
|
325
|
+
rootDevDependencies.push('@tailwindcss/vite');
|
|
316
326
|
}
|
|
317
327
|
if (tanstackRouter) {
|
|
318
328
|
dependencies.push('@tanstack/react-router');
|
|
319
|
-
|
|
329
|
+
rootDevDependencies.push('@tanstack/router-plugin', '@tanstack/router-generator', '@tanstack/virtual-file-routes', '@tanstack/router-utils');
|
|
320
330
|
}
|
|
321
|
-
addDependenciesToPackageJson(tree, withVersions(dependencies),
|
|
331
|
+
addDependenciesToPackageJson(tree, withVersions(dependencies), {}, joinPathFragments(libraryRoot, 'package.json'));
|
|
332
|
+
addDependenciesToPackageJson(tree, {}, withVersions(rootDevDependencies));
|
|
333
|
+
// @nx/react's applicationGenerator seeds react/react-dom into the root
|
|
334
|
+
// manifest. The website now declares its own pinned versions, so drop the
|
|
335
|
+
// root copies: without catalogs (npm) the root's floating range resolves to
|
|
336
|
+
// a different version than the website's pin, installing a second React and
|
|
337
|
+
// producing the "Invalid hook call" runtime crash.
|
|
338
|
+
removeDependenciesFromPackageJson(tree, [
|
|
339
|
+
'react',
|
|
340
|
+
'react-dom'
|
|
341
|
+
], []);
|
|
322
342
|
await addGeneratorMetricsIfApplicable(tree, [
|
|
323
343
|
REACT_WEBSITE_APP_GENERATOR_INFO
|
|
324
344
|
]);
|