@aws/nx-plugin 1.0.0-rc.79 → 1.0.0-rc.80

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.
Files changed (469) hide show
  1. package/generators.json +10 -0
  2. package/migrations.json +1 -1
  3. package/package.json +1 -1
  4. package/src/agentcore-gateway/agent-connection/generator.d.ts +1 -1
  5. package/src/agentcore-gateway/agent-connection/generator.js.map +1 -1
  6. package/src/agentcore-gateway/agent-connection/schema.d.js.map +1 -1
  7. package/src/agentcore-gateway/agent-connection/schema.d.ts +1 -1
  8. package/src/agentcore-gateway/attach-upstream.js.map +1 -1
  9. package/src/agentcore-gateway/gateway-connection/generator.d.ts +1 -1
  10. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -1
  11. package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -1
  12. package/src/agentcore-gateway/gateway-connection/schema.d.ts +1 -1
  13. package/src/agentcore-gateway/generator.d.ts +3 -3
  14. package/src/agentcore-gateway/generator.js.map +1 -1
  15. package/src/agentcore-gateway/mcp-connection/generator.d.ts +1 -1
  16. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -1
  17. package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -1
  18. package/src/agentcore-gateway/mcp-connection/schema.d.ts +1 -1
  19. package/src/agentcore-gateway/react-connection/generator.d.ts +1 -1
  20. package/src/agentcore-gateway/react-connection/generator.js.map +1 -1
  21. package/src/agentcore-gateway/react-connection/schema.d.js.map +1 -1
  22. package/src/agentcore-gateway/react-connection/schema.d.ts +1 -1
  23. package/src/agentcore-gateway/schema.d.js.map +1 -1
  24. package/src/agentcore-gateway/schema.d.ts +1 -1
  25. package/src/agentcore-harness/generator.d.ts +4 -4
  26. package/src/agentcore-harness/generator.js.map +1 -1
  27. package/src/agentcore-harness/schema.d.js.map +1 -1
  28. package/src/agentcore-harness/schema.d.ts +1 -1
  29. package/src/connection/agent-local-dev.d.ts +1 -1
  30. package/src/connection/agent-local-dev.js.map +1 -1
  31. package/src/connection/agent-runtime-config.js.map +1 -1
  32. package/src/connection/gateway-runtime-config.js.map +1 -1
  33. package/src/connection/generator.d.ts +2 -2
  34. package/src/connection/generator.js.map +1 -1
  35. package/src/connection/local-dev.js.map +1 -1
  36. package/src/connection/scaffold-catalog.d.ts +1 -1
  37. package/src/connection/scaffold-catalog.js +6 -6
  38. package/src/connection/scaffold-catalog.js.map +1 -1
  39. package/src/connection/schema-resolver.d.ts +1 -1
  40. package/src/connection/schema-resolver.js.map +1 -1
  41. package/src/index.d.ts +1 -1
  42. package/src/index.js.map +1 -1
  43. package/src/infra/app/generator.d.ts +7 -7
  44. package/src/infra/app/generator.js.map +1 -1
  45. package/src/init/generator.d.ts +3 -3
  46. package/src/init/generator.js.map +1 -1
  47. package/src/init/schema.d.js.map +1 -1
  48. package/src/init/schema.d.ts +2 -2
  49. package/src/internal/test-matrix/generator.js.map +1 -1
  50. package/src/license/config-types.d.ts +2 -2
  51. package/src/license/config-types.js.map +1 -1
  52. package/src/license/config.d.ts +2 -2
  53. package/src/license/config.js.map +1 -1
  54. package/src/license/dependency-check/check.d.ts +2 -2
  55. package/src/license/dependency-check/check.js.map +1 -1
  56. package/src/license/dependency-check/collectors/collector.js.map +1 -1
  57. package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
  58. package/src/license/dependency-check/evaluator.d.ts +1 -1
  59. package/src/license/dependency-check/evaluator.js.map +1 -1
  60. package/src/license/dependency-check/executor.js.map +1 -1
  61. package/src/license/dependency-check/pre-approved.d.ts +1 -1
  62. package/src/license/dependency-check/pre-approved.js.map +1 -1
  63. package/src/license/dependency-check/types.d.ts +1 -1
  64. package/src/license/dependency-check/types.js.map +1 -1
  65. package/src/license/generator.d.ts +1 -1
  66. package/src/license/generator.js.map +1 -1
  67. package/src/license/index.d.ts +4 -4
  68. package/src/license/index.js.map +1 -1
  69. package/src/license/known-exceptions.d.ts +1 -1
  70. package/src/license/known-exceptions.js.map +1 -1
  71. package/src/license/sync/generator.js.map +1 -1
  72. package/src/license/sync/project-file-sync.d.ts +1 -1
  73. package/src/license/sync/project-file-sync.js.map +1 -1
  74. package/src/mcp-server/dev-server.js.map +1 -1
  75. package/src/mcp-server/generator-info.d.ts +3 -3
  76. package/src/mcp-server/generator-info.js.map +1 -1
  77. package/src/mcp-server/guide-pipeline.d.ts +1 -1
  78. package/src/mcp-server/guide-pipeline.js.map +1 -1
  79. package/src/mcp-server/guide-render.js.map +1 -1
  80. package/src/mcp-server/index.js.map +1 -1
  81. package/src/mcp-server/mdx-ast.js.map +1 -1
  82. package/src/mcp-server/server.js.map +1 -1
  83. package/src/mcp-server/tools/add-to-existing-project.d.ts +1 -1
  84. package/src/mcp-server/tools/add-to-existing-project.js.map +1 -1
  85. package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
  86. package/src/mcp-server/tools/general-guidance.d.ts +1 -1
  87. package/src/mcp-server/tools/general-guidance.js +1 -1
  88. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  89. package/src/mcp-server/tools/generator-guide.d.ts +1 -1
  90. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  91. package/src/mcp-server/tools/list-generators.d.ts +1 -1
  92. package/src/mcp-server/tools/list-generators.js.map +1 -1
  93. package/src/mcp-server/tools/upgrade-workspace.d.ts +1 -1
  94. package/src/mcp-server/tools/upgrade-workspace.js.map +1 -1
  95. package/src/migrations/latest/apt-security-updates-in-container-images/migration.js.map +1 -1
  96. package/src/migrations/latest/dynamodb-configurable-encryption/migration.js.map +1 -1
  97. package/src/migrations/latest/py-agent-ag-ui-hooks/migration.js.map +1 -1
  98. package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.js.map +1 -1
  99. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.js.map +1 -1
  100. package/src/migrations/latest/static-website-configurable-waf-encryption/migration.js.map +1 -1
  101. package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.js.map +1 -1
  102. package/src/migrations/latest/user-identity-configurable-mfa/migration.js.map +1 -1
  103. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js.map +1 -1
  104. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js.map +1 -1
  105. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js.map +1 -1
  106. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js.map +1 -1
  107. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js.map +1 -1
  108. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.d.ts +1 -1
  109. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js.map +1 -1
  110. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js.map +1 -1
  111. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js.map +1 -1
  112. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js.map +1 -1
  113. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js.map +1 -1
  114. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js.map +1 -1
  115. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js.map +1 -1
  116. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js.map +1 -1
  117. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js.map +1 -1
  118. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js.map +1 -1
  119. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js.map +1 -1
  120. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js.map +1 -1
  121. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js.map +1 -1
  122. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js.map +1 -1
  123. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.js.map +1 -1
  124. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.js.map +1 -1
  125. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.js.map +1 -1
  126. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.js.map +1 -1
  127. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.js.map +1 -1
  128. package/src/open-api/ts-client/generator.d.ts +1 -1
  129. package/src/open-api/ts-client/generator.js.map +1 -1
  130. package/src/open-api/ts-hooks/generator.d.ts +1 -1
  131. package/src/open-api/ts-hooks/generator.js.map +1 -1
  132. package/src/open-api/ts-hooks/generator.spec.tsx +6 -6
  133. package/src/open-api/ts-metadata/generator.d.ts +1 -1
  134. package/src/open-api/ts-metadata/generator.js.map +1 -1
  135. package/src/open-api/utils/codegen-data/languages.d.ts +1 -1
  136. package/src/open-api/utils/codegen-data/languages.js.map +1 -1
  137. package/src/open-api/utils/codegen-data.d.ts +2 -2
  138. package/src/open-api/utils/codegen-data.js.map +1 -1
  139. package/src/open-api/utils/normalise.d.ts +1 -1
  140. package/src/open-api/utils/normalise.js.map +1 -1
  141. package/src/open-api/utils/parse.d.ts +1 -1
  142. package/src/open-api/utils/parse.js.map +1 -1
  143. package/src/open-api/utils/parser.d.ts +2 -2
  144. package/src/open-api/utils/parser.js.map +1 -1
  145. package/src/open-api/utils/refs.d.ts +1 -1
  146. package/src/open-api/utils/refs.js.map +1 -1
  147. package/src/preset/generator.d.ts +3 -3
  148. package/src/preset/generator.js.map +1 -1
  149. package/src/preset/schema.d.js.map +1 -1
  150. package/src/preset/schema.d.ts +3 -3
  151. package/src/py/agent/a2a-connection/generator.d.ts +3 -3
  152. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  153. package/src/py/agent/a2a-connection/schema.d.js.map +1 -1
  154. package/src/py/agent/a2a-connection/schema.d.ts +1 -1
  155. package/src/py/agent/gateway-connection/generator.d.ts +3 -3
  156. package/src/py/agent/gateway-connection/generator.js.map +1 -1
  157. package/src/py/agent/gateway-connection/schema.d.js.map +1 -1
  158. package/src/py/agent/gateway-connection/schema.d.ts +1 -1
  159. package/src/py/agent/generator.d.ts +3 -3
  160. package/src/py/agent/generator.js.map +1 -1
  161. package/src/py/agent/mcp-connection/generator.d.ts +3 -3
  162. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  163. package/src/py/agent/mcp-connection/schema.d.js.map +1 -1
  164. package/src/py/agent/mcp-connection/schema.d.ts +1 -1
  165. package/src/py/agent/react-connection/generator.d.ts +12 -12
  166. package/src/py/agent/react-connection/generator.js.map +1 -1
  167. package/src/py/agent/react-connection/local-dev.d.ts +1 -1
  168. package/src/py/agent/react-connection/local-dev.js.map +1 -1
  169. package/src/py/agent/react-connection/schema.d.js.map +1 -1
  170. package/src/py/agent/react-connection/schema.d.ts +1 -1
  171. package/src/py/agent/schema.d.js.map +1 -1
  172. package/src/py/agent/schema.d.ts +1 -1
  173. package/src/py/api/generator.d.ts +1 -1
  174. package/src/py/api/generator.js.map +1 -1
  175. package/src/py/api/schema.d.js.map +1 -1
  176. package/src/py/api/schema.d.ts +1 -1
  177. package/src/py/dynamodb/agent-connection/generator.d.ts +1 -1
  178. package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
  179. package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -1
  180. package/src/py/dynamodb/agent-connection/schema.d.ts +1 -1
  181. package/src/py/dynamodb/fast-api-connection/generator.d.ts +1 -1
  182. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
  183. package/src/py/dynamodb/generator.d.ts +4 -4
  184. package/src/py/dynamodb/generator.js.map +1 -1
  185. package/src/py/dynamodb/mcp-server-connection/generator.d.ts +1 -1
  186. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
  187. package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -1
  188. package/src/py/dynamodb/mcp-server-connection/schema.d.ts +1 -1
  189. package/src/py/dynamodb/schema.d.js.map +1 -1
  190. package/src/py/dynamodb/schema.d.ts +1 -1
  191. package/src/py/fast-api/generator.d.ts +3 -3
  192. package/src/py/fast-api/generator.js.map +1 -1
  193. package/src/py/fast-api/react/generator.d.ts +3 -3
  194. package/src/py/fast-api/react/generator.js.map +1 -1
  195. package/src/py/fast-api/react/open-api.js.map +1 -1
  196. package/src/py/fast-api/schema.d.js.map +1 -1
  197. package/src/py/fast-api/schema.d.ts +1 -1
  198. package/src/py/lambda-function/files/handler/__lambdaFunctionSnakeCase__.py.template +1 -1
  199. package/src/py/lambda-function/generator.d.ts +10 -4
  200. package/src/py/lambda-function/generator.js +8 -1
  201. package/src/py/lambda-function/generator.js.map +1 -1
  202. package/src/py/lambda-function/schema.d.js.map +1 -1
  203. package/src/py/lambda-function/schema.d.ts +2 -2
  204. package/src/py/lambda-function/schema.json +1 -1
  205. package/src/py/mcp-server/generator.d.ts +3 -3
  206. package/src/py/mcp-server/generator.js.map +1 -1
  207. package/src/py/mcp-server/schema.d.js.map +1 -1
  208. package/src/py/mcp-server/schema.d.ts +1 -1
  209. package/src/py/project/generator.d.ts +2 -2
  210. package/src/py/project/generator.js.map +1 -1
  211. package/src/py/project/schema.json +1 -0
  212. package/src/py/rdb/agent-connection/generator.d.ts +1 -1
  213. package/src/py/rdb/agent-connection/generator.js.map +1 -1
  214. package/src/py/rdb/agent-connection/schema.d.js.map +1 -1
  215. package/src/py/rdb/agent-connection/schema.d.ts +1 -1
  216. package/src/py/rdb/fast-api-connection/generator.d.ts +1 -1
  217. package/src/py/rdb/fast-api-connection/generator.js.map +1 -1
  218. package/src/py/rdb/generator.d.ts +3 -3
  219. package/src/py/rdb/generator.js.map +1 -1
  220. package/src/py/rdb/mcp-server-connection/generator.d.ts +1 -1
  221. package/src/py/rdb/mcp-server-connection/generator.js.map +1 -1
  222. package/src/py/rdb/mcp-server-connection/schema.d.js.map +1 -1
  223. package/src/py/rdb/mcp-server-connection/schema.d.ts +1 -1
  224. package/src/sdk/agentcore-gateway.d.ts +1 -1
  225. package/src/sdk/agentcore-gateway.js.map +1 -1
  226. package/src/sdk/agentcore-harness.d.ts +1 -1
  227. package/src/sdk/agentcore-harness.js.map +1 -1
  228. package/src/sdk/connection.d.ts +1 -1
  229. package/src/sdk/connection.js.map +1 -1
  230. package/src/sdk/license.d.ts +3 -3
  231. package/src/sdk/license.js.map +1 -1
  232. package/src/sdk/open-api.d.ts +3 -3
  233. package/src/sdk/open-api.js.map +1 -1
  234. package/src/sdk/py.d.ts +7 -7
  235. package/src/sdk/py.js.map +1 -1
  236. package/src/sdk/smithy.d.ts +1 -1
  237. package/src/sdk/smithy.js.map +1 -1
  238. package/src/sdk/terraform.d.ts +1 -1
  239. package/src/sdk/terraform.js.map +1 -1
  240. package/src/sdk/ts.d.ts +18 -18
  241. package/src/sdk/ts.js.map +1 -1
  242. package/src/sdk/utils/ast.d.ts +1 -1
  243. package/src/sdk/utils/ast.js.map +1 -1
  244. package/src/sdk/utils/format.d.ts +1 -1
  245. package/src/sdk/utils/format.js.map +1 -1
  246. package/src/sdk/utils/test.d.ts +1 -1
  247. package/src/sdk/utils/test.js.map +1 -1
  248. package/src/smithy/project/generator.d.ts +4 -4
  249. package/src/smithy/project/generator.js.map +1 -1
  250. package/src/smithy/react-connection/generator.d.ts +3 -3
  251. package/src/smithy/react-connection/generator.js.map +1 -1
  252. package/src/smithy/ts/api/generator.d.ts +3 -3
  253. package/src/smithy/ts/api/generator.js.map +1 -1
  254. package/src/smithy/ts/api/schema.d.js.map +1 -1
  255. package/src/smithy/ts/api/schema.d.ts +1 -1
  256. package/src/terraform/project/generator.d.ts +5 -5
  257. package/src/terraform/project/generator.js.map +1 -1
  258. package/src/trpc/backend/generator.d.ts +3 -3
  259. package/src/trpc/backend/generator.js.map +1 -1
  260. package/src/trpc/backend/schema.d.js.map +1 -1
  261. package/src/trpc/backend/schema.d.ts +1 -1
  262. package/src/trpc/react/generator.d.ts +3 -3
  263. package/src/trpc/react/generator.js.map +1 -1
  264. package/src/ts/agent/a2a-connection/generator.d.ts +3 -3
  265. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  266. package/src/ts/agent/a2a-connection/schema.d.js.map +1 -1
  267. package/src/ts/agent/a2a-connection/schema.d.ts +1 -1
  268. package/src/ts/agent/gateway-connection/generator.d.ts +3 -3
  269. package/src/ts/agent/gateway-connection/generator.js.map +1 -1
  270. package/src/ts/agent/gateway-connection/schema.d.js.map +1 -1
  271. package/src/ts/agent/gateway-connection/schema.d.ts +1 -1
  272. package/src/ts/agent/generator.d.ts +3 -3
  273. package/src/ts/agent/generator.js.map +1 -1
  274. package/src/ts/agent/mcp-connection/generator.d.ts +3 -3
  275. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  276. package/src/ts/agent/mcp-connection/schema.d.js.map +1 -1
  277. package/src/ts/agent/mcp-connection/schema.d.ts +1 -1
  278. package/src/ts/agent/react-connection/generator.d.ts +11 -11
  279. package/src/ts/agent/react-connection/generator.js.map +1 -1
  280. package/src/ts/agent/react-connection/local-dev.d.ts +1 -1
  281. package/src/ts/agent/react-connection/local-dev.js.map +1 -1
  282. package/src/ts/agent/react-connection/schema.d.js.map +1 -1
  283. package/src/ts/agent/react-connection/schema.d.ts +1 -1
  284. package/src/ts/agent/schema.d.js.map +1 -1
  285. package/src/ts/agent/schema.d.ts +1 -1
  286. package/src/ts/api/generator.d.ts +1 -1
  287. package/src/ts/api/generator.js.map +1 -1
  288. package/src/ts/api/schema.d.js.map +1 -1
  289. package/src/ts/api/schema.d.ts +1 -1
  290. package/src/ts/astro-docs/generator.d.ts +3 -3
  291. package/src/ts/astro-docs/generator.js.map +1 -1
  292. package/src/ts/dcr-proxy/generator.d.ts +5 -5
  293. package/src/ts/dcr-proxy/generator.js.map +1 -1
  294. package/src/ts/dcr-proxy/schema.d.js.map +1 -1
  295. package/src/ts/dcr-proxy/schema.d.ts +1 -1
  296. package/src/ts/docs/generator.d.ts +1 -1
  297. package/src/ts/docs/generator.js.map +1 -1
  298. package/src/ts/dynamodb/agent-connection/generator.d.ts +1 -1
  299. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
  300. package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -1
  301. package/src/ts/dynamodb/agent-connection/schema.d.ts +1 -1
  302. package/src/ts/dynamodb/generator.d.ts +5 -5
  303. package/src/ts/dynamodb/generator.js +1 -0
  304. package/src/ts/dynamodb/generator.js.map +1 -1
  305. package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +1 -1
  306. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
  307. package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -1
  308. package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +1 -1
  309. package/src/ts/dynamodb/schema.d.js.map +1 -1
  310. package/src/ts/dynamodb/schema.d.ts +1 -1
  311. package/src/ts/dynamodb/smithy-connection/generator.d.ts +1 -1
  312. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
  313. package/src/ts/dynamodb/trpc-connection/generator.d.ts +1 -1
  314. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
  315. package/src/ts/lambda-function/generator.d.ts +5 -5
  316. package/src/ts/lambda-function/generator.js.map +1 -1
  317. package/src/ts/lambda-function/schema.d.js.map +1 -1
  318. package/src/ts/lambda-function/schema.d.ts +1 -1
  319. package/src/ts/lib/biome.d.ts +1 -1
  320. package/src/ts/lib/biome.js.map +1 -1
  321. package/src/ts/lib/generator.d.ts +3 -3
  322. package/src/ts/lib/generator.js.map +1 -1
  323. package/src/ts/lib/ts-project-utils.d.ts +3 -3
  324. package/src/ts/lib/ts-project-utils.js.map +1 -1
  325. package/src/ts/lib/vitest.d.ts +2 -2
  326. package/src/ts/lib/vitest.js.map +1 -1
  327. package/src/ts/mcp-server/generator.d.ts +3 -3
  328. package/src/ts/mcp-server/generator.js.map +1 -1
  329. package/src/ts/mcp-server/schema.d.js.map +1 -1
  330. package/src/ts/mcp-server/schema.d.ts +1 -1
  331. package/src/ts/nx-generator/generator.d.ts +2 -2
  332. package/src/ts/nx-generator/generator.js.map +1 -1
  333. package/src/ts/nx-migration/generator.d.ts +3 -3
  334. package/src/ts/nx-migration/generator.js.map +1 -1
  335. package/src/ts/nx-plugin/generator.d.ts +3 -3
  336. package/src/ts/nx-plugin/generator.js.map +1 -1
  337. package/src/ts/nx-plugin/utils.d.ts +1 -1
  338. package/src/ts/nx-plugin/utils.js.map +1 -1
  339. package/src/ts/rdb/agent-connection/generator.d.ts +1 -1
  340. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  341. package/src/ts/rdb/agent-connection/schema.d.js.map +1 -1
  342. package/src/ts/rdb/agent-connection/schema.d.ts +1 -1
  343. package/src/ts/rdb/generator.d.ts +4 -4
  344. package/src/ts/rdb/generator.js +1 -0
  345. package/src/ts/rdb/generator.js.map +1 -1
  346. package/src/ts/rdb/mcp-server-connection/generator.d.ts +1 -1
  347. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  348. package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -1
  349. package/src/ts/rdb/mcp-server-connection/schema.d.ts +1 -1
  350. package/src/ts/rdb/schema.d.js.map +1 -1
  351. package/src/ts/rdb/schema.d.ts +1 -1
  352. package/src/ts/rdb/smithy-connection/generator.d.ts +1 -1
  353. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  354. package/src/ts/rdb/trpc-connection/generator.d.ts +1 -1
  355. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  356. package/src/ts/react-website/agui/generator.d.ts +2 -2
  357. package/src/ts/react-website/agui/generator.js.map +1 -1
  358. package/src/ts/react-website/app/generator.d.ts +3 -3
  359. package/src/ts/react-website/app/generator.js.map +1 -1
  360. package/src/ts/react-website/app/schema.d.js.map +1 -1
  361. package/src/ts/react-website/app/schema.d.ts +2 -2
  362. package/src/ts/react-website/cognito-auth/generator.d.ts +5 -5
  363. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  364. package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -1
  365. package/src/ts/react-website/cognito-auth/schema.d.ts +1 -1
  366. package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
  367. package/src/ts/react-website/runtime-config/generator.d.ts +1 -1
  368. package/src/ts/react-website/runtime-config/generator.js.map +1 -1
  369. package/src/ts/sync/generator.d.ts +1 -1
  370. package/src/ts/sync/generator.js.map +1 -1
  371. package/src/ts/website/app/generator.d.ts +1 -1
  372. package/src/ts/website/app/generator.js.map +1 -1
  373. package/src/ts/website/app/schema.d.js.map +1 -1
  374. package/src/ts/website/app/schema.d.ts +2 -2
  375. package/src/ts/website/auth/generator.d.ts +1 -1
  376. package/src/ts/website/auth/generator.js.map +1 -1
  377. package/src/ts/website/auth/schema.d.js.map +1 -1
  378. package/src/ts/website/auth/schema.d.ts +1 -1
  379. package/src/utils/add-dependencies.d.ts +1 -1
  380. package/src/utils/add-dependencies.js.map +1 -1
  381. package/src/utils/agent-chat/agent-chat.js.map +1 -1
  382. package/src/utils/agent-connection/agent-connection.d.ts +2 -2
  383. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  384. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +4 -4
  385. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  386. package/src/utils/api-constructs/api-constructs.d.ts +3 -3
  387. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  388. package/src/utils/api-constructs/open-api-metadata.d.ts +1 -1
  389. package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
  390. package/src/utils/ast/website.js.map +1 -1
  391. package/src/utils/ast.js +6 -0
  392. package/src/utils/ast.js.map +1 -1
  393. package/src/utils/bundle/bundle.d.ts +1 -1
  394. package/src/utils/bundle/bundle.js.map +1 -1
  395. package/src/utils/commands.d.ts +1 -1
  396. package/src/utils/commands.js.map +1 -1
  397. package/src/utils/config/index.d.ts +6 -6
  398. package/src/utils/config/index.js.map +1 -1
  399. package/src/utils/config/utils.d.ts +1 -1
  400. package/src/utils/config/utils.js.map +1 -1
  401. package/src/utils/connection/open-api/react.d.ts +1 -1
  402. package/src/utils/connection/open-api/react.js.map +1 -1
  403. package/src/utils/containers.js.map +1 -1
  404. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.d.ts +1 -1
  405. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js.map +1 -1
  406. package/src/utils/declared-dependencies.d.ts +1 -1
  407. package/src/utils/declared-dependencies.js.map +1 -1
  408. package/src/utils/dependencies.js.map +1 -1
  409. package/src/utils/docker.d.ts +1 -1
  410. package/src/utils/docker.js.map +1 -1
  411. package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +1 -1
  412. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
  413. package/src/utils/format.js.map +1 -1
  414. package/src/utils/fs.d.ts +1 -1
  415. package/src/utils/fs.js.map +1 -1
  416. package/src/utils/function-constructs/function-constructs.d.ts +1 -1
  417. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  418. package/src/utils/iac.d.ts +2 -2
  419. package/src/utils/iac.js.map +1 -1
  420. package/src/utils/identity-constructs/identity-constructs.d.ts +2 -2
  421. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  422. package/src/utils/init.d.ts +3 -3
  423. package/src/utils/init.js.map +1 -1
  424. package/src/utils/install.d.ts +1 -1
  425. package/src/utils/install.js.map +1 -1
  426. package/src/utils/mcp.js.map +1 -1
  427. package/src/utils/metrics.d.ts +1 -1
  428. package/src/utils/metrics.js.map +1 -1
  429. package/src/utils/migration-manifest.d.ts +1 -1
  430. package/src/utils/migration-manifest.js.map +1 -1
  431. package/src/utils/nx.d.ts +3 -3
  432. package/src/utils/nx.js.map +1 -1
  433. package/src/utils/paths.js.map +1 -1
  434. package/src/utils/pkg-manager.d.ts +1 -1
  435. package/src/utils/pkg-manager.js.map +1 -1
  436. package/src/utils/pnpm-workspace.js.map +1 -1
  437. package/src/utils/project-package-json.js.map +1 -1
  438. package/src/utils/py.d.ts +2 -2
  439. package/src/utils/py.js.map +1 -1
  440. package/src/utils/rdb-constructs/rdb-constructs.d.ts +2 -2
  441. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  442. package/src/utils/shared-constructs-constants.js.map +1 -1
  443. package/src/utils/shared-constructs.d.ts +3 -3
  444. package/src/utils/shared-constructs.js.map +1 -1
  445. package/src/utils/shared-dynamodb-scripts.d.ts +1 -1
  446. package/src/utils/shared-dynamodb-scripts.js.map +1 -1
  447. package/src/utils/shared-infra-config.js.map +1 -1
  448. package/src/utils/shared-infra-scripts.d.ts +2 -2
  449. package/src/utils/shared-infra-scripts.js.map +1 -1
  450. package/src/utils/shared-rdb-scripts.d.ts +1 -1
  451. package/src/utils/shared-rdb-scripts.js.map +1 -1
  452. package/src/utils/shared-scripts.js.map +1 -1
  453. package/src/utils/shared-shadcn.d.ts +1 -1
  454. package/src/utils/shared-shadcn.js.map +1 -1
  455. package/src/utils/smithy.js.map +1 -1
  456. package/src/utils/test.js.map +1 -1
  457. package/src/utils/version-upgrade-migration/migration.js.map +1 -1
  458. package/src/utils/version-upgrade-migration/nx-package-updates.js.map +1 -1
  459. package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +1 -1
  460. package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -1
  461. package/src/utils/version-upgrade-migration/register.js.map +1 -1
  462. package/src/utils/version-upgrade-migration/sync-embedded-versions.d.ts +1 -1
  463. package/src/utils/version-upgrade-migration/sync-embedded-versions.js.map +1 -1
  464. package/src/utils/version-upgrade-migration/sync-metrics-version.js.map +1 -1
  465. package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -1
  466. package/src/utils/versions.d.ts +1 -1
  467. package/src/utils/versions.js.map +1 -1
  468. package/src/utils/website-constructs/website-constructs.d.ts +2 -2
  469. package/src/utils/website-constructs/website-constructs.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/app/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n names,\n OverwriteStrategy,\n readProjectConfiguration,\n removeDependenciesFromPackageJson,\n type Tree,\n updateJson,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { applicationGenerator } from '@nx/react';\nimport { relative, sep } from 'path';\nimport { addTsDependencies } from '../../../utils/add-dependencies';\nimport {\n addDestructuredImport,\n addSingleImport,\n appendToArrayViaGritQL,\n applyGritQL,\n} from '../../../utils/ast';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { resolveIac } from '../../../utils/iac';\nimport { installDependencies } from '../../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport { kebabCase, toClassName, toKebabCase } from '../../../utils/names';\nimport { getNpmScopePrefix } from '../../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n} from '../../../utils/nx';\nimport { sortObjectKeys } from '../../../utils/object';\nimport { getRelativePathToRoot } from '../../../utils/paths';\nimport { getPackageManagerDisplayCommands } from '../../../utils/pkg-manager';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../../utils/shared-constructs';\nimport {\n type IacMetadata,\n PACKAGES_DIR,\n SHARED_SHADCN_DIR,\n} from '../../../utils/shared-constructs-constants';\nimport {\n SHADCN_DEPENDENCIES,\n sharedShadcnGenerator,\n} from '../../../utils/shared-shadcn';\nimport {\n addWebsiteInfra,\n WEBSITE_CONSTRUCTS_PY_DEPENDENCIES,\n} from '../../../utils/website-constructs/website-constructs';\nimport { configureTsProject } from '../../lib/ts-project-utils';\nimport { VITEST_DEPENDENCIES } from '../../lib/vitest';\n// typescript factory imports removed — now using GritQL for vite config transforms\nimport type {\n TsReactWebsiteGeneratorSchema,\n WebsiteInfraOption,\n} from './schema';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface TsReactWebsiteMetadata extends IacMetadata {\n readonly ux: UxOption;\n readonly framework: string;\n readonly infra: WebsiteInfraOption;\n readonly tailwind: boolean;\n readonly tanstackRouter: boolean;\n}\n\n// Each entry names the branch it belongs to, so the same declaration drives both\n// adding and the version sync.\nexport const DEPENDENCIES = declareDependencies<TsReactWebsiteMetadata>()({\n ts: [\n { name: 'react' },\n { name: 'react-dom' },\n // Build/test tooling imported only from vite.config.mts stays at the root.\n { name: '@nx/react', dev: true, root: true },\n { name: '@vitest/ui', dev: true, root: true },\n {\n name: '@cloudscape-design/components',\n when: (m) => m.ux === 'cloudscape',\n },\n {\n name: '@cloudscape-design/board-components',\n when: (m) => m.ux === 'cloudscape',\n },\n {\n name: '@cloudscape-design/global-styles',\n when: (m) => m.ux === 'cloudscape',\n },\n // Shared shadcn components live in the common/shadcn package, but the\n // website's own generated components (e.g. the tanstack-router sidebar)\n // import lucide-react directly, so the website must declare it.\n {\n name: 'lucide-react',\n when: (m) => m.ux === 'shadcn' && m.tanstackRouter,\n },\n { name: 'tailwindcss', when: (m) => m.tailwind },\n {\n name: '@tailwindcss/vite',\n when: (m) => m.tailwind,\n dev: true,\n root: true,\n },\n { name: '@tanstack/react-router', when: (m) => m.tanstackRouter },\n {\n name: '@tanstack/router-plugin',\n when: (m) => m.tanstackRouter,\n dev: true,\n root: true,\n },\n {\n name: '@tanstack/router-generator',\n when: (m) => m.tanstackRouter,\n dev: true,\n root: true,\n },\n {\n name: '@tanstack/virtual-file-routes',\n when: (m) => m.tanstackRouter,\n dev: true,\n root: true,\n },\n {\n name: '@tanstack/router-utils',\n when: (m) => m.tanstackRouter,\n dev: true,\n root: true,\n },\n ...ownedElsewhere(SHADCN_DEPENDENCIES),\n ...ownedElsewhere(VITEST_DEPENDENCIES),\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ],\n py: ownedElsewhere(WEBSITE_CONSTRUCTS_PY_DEPENDENCIES),\n});\n\nexport const SUPPORTED_UX_PROVIDERS = ['none', 'cloudscape', 'shadcn'] as const;\n\nexport type UxOption = (typeof SUPPORTED_UX_PROVIDERS)[number];\n\nexport type Ux = UxOption;\n\nexport const REACT_WEBSITE_APP_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport async function tsReactWebsiteGenerator(\n tree: Tree,\n schema: TsReactWebsiteGeneratorSchema,\n) {\n const tailwind = schema.tailwind ?? true;\n const tanstackRouter = schema.tanstackRouter ?? true;\n const ux: Ux = schema.ux ?? 'shadcn';\n if (ux === 'shadcn' && !tailwind) {\n throw new Error('Shadcn requires TailwindCSS to be enabled.');\n }\n const npmScopePrefix = getNpmScopePrefix(tree);\n const scopeAlias = npmScopePrefix;\n const websiteNameClassName = toClassName(schema.name);\n const websiteNameKebabCase = toKebabCase(schema.name);\n const fullyQualifiedName = `${npmScopePrefix}${websiteNameKebabCase}`;\n // NB: interactive nx generator cli can pass empty string\n const websiteContentPath = joinPathFragments(\n schema.directory || '.',\n schema.subDirectory || websiteNameKebabCase,\n );\n\n const projectAlreadyExists = tree.exists(\n joinPathFragments(websiteContentPath, 'project.json'),\n );\n\n // TODO: consider exposing and supporting e2e tests\n const e2eTestRunner = 'none';\n\n if (!projectAlreadyExists) {\n await applicationGenerator(tree, {\n ...schema,\n name: fullyQualifiedName,\n directory: websiteContentPath,\n routing: false,\n e2eTestRunner,\n linter: 'none',\n bundler: 'vite',\n unitTestRunner: 'vitest',\n useProjectJson: true,\n style: 'css',\n // Register the @nx/vite and @nx/vitest plugins so build/serve/test\n // targets are inferred rather than emitting deprecated executor targets.\n addPlugin: true,\n });\n\n // Pin the inferred target names. The vite production build is exposed as\n // `bundle` (which produces the deployable artifact), leaving `build` as an\n // aggregator over lint/compile/test/bundle. vite's own typecheck is dropped\n // in favour of the tsc `compile`.\n updateJson(tree, 'nx.json', (nxJson) => {\n for (const plugin of nxJson.plugins ?? []) {\n if (typeof plugin === 'string') continue;\n if (plugin.plugin === '@nx/vite/plugin') {\n plugin.options = {\n ...plugin.options,\n buildTargetName: 'bundle',\n // Map both of vite's inferred dev-server targets onto `serve` so the\n // plugin doesn't emit a separate `dev`; we author our own `dev`\n // below running the local-dev vite mode.\n serveTargetName: 'serve',\n devTargetName: 'serve',\n previewTargetName: 'preview',\n serveStaticTargetName: 'serve-static',\n typecheckTargetName: 'vite:typecheck',\n };\n } else if (plugin.plugin === '@nx/vitest') {\n plugin.options = {\n ...plugin.options,\n testTargetName: 'test',\n };\n }\n }\n return nxJson;\n });\n\n // Replace with simpler sample source code\n tree.delete(joinPathFragments(websiteContentPath, 'src'));\n }\n\n const projectConfiguration = readProjectConfiguration(\n tree,\n fullyQualifiedName,\n );\n\n const targets = projectConfiguration.targets;\n\n const infra = schema.infra ?? 'cloudfront-s3';\n\n // Configure load-runtime-config target based on IaC provider (only when infra is not none)\n const iac = infra !== 'none' ? await resolveIac(tree, schema.iac) : undefined;\n\n if (iac === 'cdk') {\n targets['load-runtime-config'] = {\n executor: 'nx:run-commands',\n metadata: {\n description: `Load runtime config from your deployed stack for dev purposes. You must set your AWS CLI credentials whilst calling '${getPackageManagerDisplayCommands().exec} nx load-runtime-config ${fullyQualifiedName}'`,\n },\n options: {\n command: `aws s3 cp s3://\\`aws cloudformation describe-stacks --query \"Stacks[?starts_with(StackName, '${kebabCase(npmScopePrefix)}-')][].Outputs[] | [?contains(OutputKey, '${websiteNameClassName}WebsiteBucketName')].OutputValue\" --output text\\`/runtime-config.json \"{projectRoot}/public/runtime-config.json\"`,\n },\n };\n } else if (iac === 'terraform') {\n targets['load-runtime-config'] = {\n executor: 'nx:run-commands',\n metadata: {\n description:\n \"Load runtime config from most recently applied terraform env for dev purposes. Copies the runtime config from the Terraform dist directory to the website's public directory.\",\n },\n options: {\n command:\n 'node -e \"const fs=require(\\'fs\\');fs.mkdirSync(process.env.DEST_DIR,{recursive:true});fs.copyFileSync(process.env.SRC_FILE,process.env.DEST_FILE);\"',\n env: {\n SRC_FILE: 'dist/packages/common/terraform/runtime-config.json',\n DEST_DIR: `{projectRoot}/public`,\n DEST_FILE: `{projectRoot}/public/runtime-config.json`,\n },\n },\n };\n }\n\n if (!projectAlreadyExists) {\n targets['compile'] = {\n dependsOn: ['^build'],\n executor: 'nx:run-commands',\n outputs: ['{workspaceRoot}/dist/{projectRoot}/tsc'],\n options: {\n command: 'tsc --build tsconfig.app.json',\n cwd: '{projectRoot}',\n },\n };\n // bundle is the @nx/vite/plugin inferred `vite build` (writing to the\n // bundle dir configured in vite.config) — it produces the deployable\n // artifact. build aggregates lint/compile/test/bundle.\n targets['build'] = {\n dependsOn: ['lint', 'compile', 'test', 'bundle'],\n };\n\n // Run the website and its connected dependencies locally. Mirrors the\n // inferred `serve` target but with the local-dev vite mode.\n targets['dev'] = {\n executor: 'nx:run-commands',\n continuous: true,\n options: {\n command: 'vite --mode local-dev',\n cwd: '{projectRoot}',\n },\n };\n }\n\n projectConfiguration.targets = sortObjectKeys(targets);\n\n updateProjectConfiguration(tree, fullyQualifiedName, projectConfiguration);\n\n // Recorded here and read by the declaration's predicates, so the packages\n // added below are exactly the ones the version sync will own.\n const metadata: TsReactWebsiteMetadata = {\n ux,\n framework: 'react',\n infra,\n tailwind,\n tanstackRouter,\n // Undefined when no infrastructure was generated, so neither provider's\n // packages were added.\n ...(iac ? { iac } : {}),\n };\n addGeneratorMetadata(\n tree,\n projectConfiguration.name,\n REACT_WEBSITE_APP_GENERATOR_INFO,\n metadata,\n );\n\n await configureTsProject(\n tree,\n {\n dir: websiteContentPath,\n fullyQualifiedName,\n },\n DEPENDENCIES,\n );\n\n if (ux === 'shadcn') {\n await sharedShadcnGenerator(tree, DEPENDENCIES);\n }\n\n if (iac) {\n await sharedConstructsGenerator(\n tree,\n {\n iac,\n },\n DEPENDENCIES,\n );\n\n await addWebsiteInfra(tree, {\n iac,\n websiteProjectName: fullyQualifiedName,\n scopeAlias,\n websiteContentPath: joinPathFragments('dist', websiteContentPath),\n websiteNameKebabCase,\n websiteNameClassName,\n });\n }\n\n const projectConfig = readProjectConfiguration(tree, fullyQualifiedName);\n const libraryRoot = projectConfig.root;\n const sharedShadcnStylesImport = relative(\n joinPathFragments(libraryRoot, 'src'),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_SHADCN_DIR,\n 'src',\n 'styles',\n 'globals.css',\n ),\n )\n .split(sep)\n .join('/');\n const sharedShadcnTsconfigRef = relative(\n joinPathFragments(tree.root, websiteContentPath),\n joinPathFragments(\n tree.root,\n PACKAGES_DIR,\n SHARED_SHADCN_DIR,\n 'tsconfig.json',\n ),\n )\n .split(sep)\n .join('/');\n const templateOptions = {\n ...schema,\n fullyQualifiedName,\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n tailwind,\n tanstackRouter,\n scopeAlias,\n sharedShadcnStylesImport,\n };\n tree.delete(joinPathFragments(libraryRoot, 'src', 'app'));\n const appCommonTemplatePath = joinPathFragments(\n import.meta.dirname,\n './files/app/common',\n );\n const appTemplatePath = joinPathFragments(\n import.meta.dirname,\n `./files/app/${ux.toLowerCase()}`,\n );\n\n generateFiles(\n tree, // the virtual file system\n appCommonTemplatePath, // path to the file templates\n libraryRoot, // destination path of the files\n templateOptions, // config object to replace variable in file templates\n {\n // User-editable source - preserve any edits on re-run\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree, // the virtual file system\n appTemplatePath, // path to the file templates\n libraryRoot, // destination path of the files\n templateOptions, // config object to replace variable in file templates\n {\n // User-editable source - preserve any edits on re-run\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n if (tanstackRouter) {\n const routerCommonTemplatePath = joinPathFragments(\n import.meta.dirname,\n './files/tanstack-router/common',\n );\n const routerTemplatePath = joinPathFragments(\n import.meta.dirname,\n `./files/tanstack-router/${ux.toLowerCase()}`,\n );\n\n generateFiles(\n tree,\n routerCommonTemplatePath,\n libraryRoot,\n templateOptions,\n {\n // User-editable source (and the TanStack-managed route tree) - preserve on re-run\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n routerTemplatePath,\n libraryRoot,\n templateOptions, // config object to replace variable in file templates\n {\n // User-editable source - preserve any edits on re-run\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n tree.delete(joinPathFragments(websiteContentPath, 'src', 'app.tsx'));\n }\n\n if (e2eTestRunner !== 'none') {\n const e2eFullyQualifiedName = `${fullyQualifiedName}-e2e`;\n const e2eRoot = readProjectConfiguration(tree, e2eFullyQualifiedName).root;\n generateFiles(\n tree, // the virtual file system\n joinPathFragments(import.meta.dirname, `./files/e2e/${e2eTestRunner}`), // path to the file templates\n e2eRoot, // destination path of the files\n { ...schema, ...names(fullyQualifiedName) },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n await configureTsProject(\n tree,\n {\n fullyQualifiedName: e2eFullyQualifiedName,\n dir: e2eRoot,\n },\n DEPENDENCIES,\n );\n }\n const viteConfigPath = joinPathFragments(libraryRoot, 'vite.config.mts');\n\n if (tree.exists(viteConfigPath)) {\n // Add Tanstack Router import if enabled\n if (tanstackRouter) {\n await addDestructuredImport(\n tree,\n viteConfigPath,\n ['tanstackRouter'],\n '@tanstack/router-plugin/vite',\n );\n\n await addDestructuredImport(tree, viteConfigPath, ['resolve'], 'path');\n }\n\n // Add TailwindCSS import if enabled\n if (tailwind) {\n await addSingleImport(\n tree,\n viteConfigPath,\n 'tailwindcss',\n '@tailwindcss/vite',\n );\n }\n\n // Update build.outDir. The inferred `vite build` target writes here, so\n // point it at the bundle dir the website infrastructure consumes.\n const outDir = joinPathFragments(\n getRelativePathToRoot(tree, fullyQualifiedName),\n 'dist',\n websiteContentPath,\n 'bundle',\n );\n await applyGritQL(\n tree,\n viteConfigPath,\n `\\`build: { $bprops }\\` where { $bprops <: contains \\`outDir: $_\\` => \\`outDir: '${outDir}'\\` }`,\n );\n\n // Add plugins to the plugins array\n if (tanstackRouter) {\n // Prepend tanstackRouter (must be first plugin) — rewrite works for both single/multi-element\n await applyGritQL(\n tree,\n viteConfigPath,\n \"`plugins: [$items]` => `plugins: [tanstackRouter({ routesDirectory: resolve(import.meta.dirname, 'src/routes'), generatedRouteTree: resolve(import.meta.dirname, 'src/routeTree.gen.ts') }), $items]` where { $items <: within `defineConfig($_)`, $items <: not contains `tanstackRouter` }\",\n );\n }\n\n if (tailwind) {\n await appendToArrayViaGritQL(\n tree,\n viteConfigPath,\n 'plugins:',\n 'tailwindcss()',\n { scope: 'defineConfig($_)' },\n );\n }\n\n // Use Vite's native tsconfig paths resolution (replaces vite-tsconfig-paths).\n // `dedupe` forces a single copy of react/react-dom into the bundle: each\n // project declares its own react dependency, so without this a workspace\n // library's hoisted copy can produce a second React instance and the\n // \"Invalid hook call\" runtime crash.\n await applyGritQL(\n tree,\n viteConfigPath,\n \"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'] }` } }\",\n );\n\n // Add define: { global: {} } to the config (handles both callback and direct forms)\n await applyGritQL(\n tree,\n viteConfigPath,\n 'or { `defineConfig(() => ({ $props }))` where { $props <: not contains `define`, $props += `define: { global: {} }` }, `defineConfig({ $props })` where { $props <: not contains `define`, $props += `define: { global: {} }` } }',\n );\n }\n\n updateJson(\n tree,\n joinPathFragments(websiteContentPath, 'tsconfig.json'),\n (tsconfig) => ({\n ...tsconfig,\n compilerOptions: {\n ...tsconfig.compilerOptions,\n moduleResolution: 'Bundler',\n module: 'Preserve',\n },\n }),\n );\n const outDirToRootRelativePath = relative(\n joinPathFragments(tree.root, websiteContentPath),\n tree.root,\n );\n const distDir = joinPathFragments(\n outDirToRootRelativePath,\n 'dist',\n websiteContentPath,\n 'tsc',\n );\n updateJson(\n tree,\n joinPathFragments(websiteContentPath, 'tsconfig.app.json'),\n (tsconfig) => ({\n ...tsconfig,\n compilerOptions: {\n ...tsconfig.compilerOptions,\n outDir: distDir,\n tsBuildInfoFile: joinPathFragments(distDir, 'tsconfig.lib.tsbuildinfo'),\n lib: ['DOM'],\n },\n references:\n ux === 'shadcn'\n ? [\n ...(tsconfig.references ?? []).filter(\n (ref) => ref.path !== sharedShadcnTsconfigRef,\n ),\n {\n path: sharedShadcnTsconfigRef,\n },\n ]\n : tsconfig.references,\n }),\n );\n\n addTsDependencies(tree, DEPENDENCIES, { metadata, projectRoot: libraryRoot });\n\n // @nx/react's applicationGenerator seeds react/react-dom into the root\n // manifest. The website now declares its own pinned versions, so drop the\n // root copies: without catalogs (npm) the root's floating range resolves to\n // a different version than the website's pin, installing a second React and\n // producing the \"Invalid hook call\" runtime crash.\n removeDependenciesFromPackageJson(tree, ['react', 'react-dom'], []);\n\n await addGeneratorMetricsIfApplicable(tree, [\n REACT_WEBSITE_APP_GENERATOR_INFO,\n ]);\n\n // TanStack Router's vite plugin owns this website's route tree and rewrites it\n // in its own (unformatted) shape whenever the config is loaded — including when\n // Nx computes the project graph — so formatting it here would only make\n // generation non-idempotent. The vended biome config excludes `**/*.gen.*`, so\n // the workspace's own `format` target leaves it alone too.\n await formatFilesInSubtree(tree, undefined, {\n ignore: tanstackRouter\n ? [joinPathFragments(libraryRoot, 'src', 'routeTree.gen.ts')]\n : [],\n });\n // The generated vite.config.mts imports these, and Nx's inferred `@nx/vite`\n // plugin loads that config when computing the project graph — so they must be\n // installed even if the caller would otherwise prefer to defer.\n return () =>\n installDependencies(tree, schema.preferInstallDependencies, {\n languages: ['typescript'],\n ensureResolvable: [\n ...(tailwind ? (['@tailwindcss/vite'] as const) : []),\n ...(tanstackRouter ? (['@tanstack/router-plugin'] as const) : []),\n ],\n });\n}\nexport default tsReactWebsiteGenerator;\n"],"names":["generateFiles","joinPathFragments","names","OverwriteStrategy","readProjectConfiguration","removeDependenciesFromPackageJson","updateJson","updateProjectConfiguration","applicationGenerator","relative","sep","addTsDependencies","addDestructuredImport","addSingleImport","appendToArrayViaGritQL","applyGritQL","declareDependencies","ownedElsewhere","formatFilesInSubtree","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","kebabCase","toClassName","toKebabCase","getNpmScopePrefix","addGeneratorMetadata","getGeneratorInfo","sortObjectKeys","getRelativePathToRoot","getPackageManagerDisplayCommands","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","PACKAGES_DIR","SHARED_SHADCN_DIR","SHADCN_DEPENDENCIES","sharedShadcnGenerator","addWebsiteInfra","WEBSITE_CONSTRUCTS_PY_DEPENDENCIES","configureTsProject","VITEST_DEPENDENCIES","DEPENDENCIES","ts","name","dev","root","when","m","ux","tanstackRouter","tailwind","py","SUPPORTED_UX_PROVIDERS","REACT_WEBSITE_APP_GENERATOR_INFO","filename","tsReactWebsiteGenerator","tree","schema","Error","npmScopePrefix","scopeAlias","websiteNameClassName","websiteNameKebabCase","fullyQualifiedName","websiteContentPath","directory","subDirectory","projectAlreadyExists","exists","e2eTestRunner","routing","linter","bundler","unitTestRunner","useProjectJson","style","addPlugin","nxJson","plugin","plugins","options","buildTargetName","serveTargetName","devTargetName","previewTargetName","serveStaticTargetName","typecheckTargetName","testTargetName","delete","projectConfiguration","targets","infra","iac","undefined","executor","metadata","description","exec","command","env","SRC_FILE","DEST_DIR","DEST_FILE","dependsOn","outputs","cwd","continuous","framework","dir","websiteProjectName","projectConfig","libraryRoot","sharedShadcnStylesImport","split","join","sharedShadcnTsconfigRef","templateOptions","pkgMgrCmd","appCommonTemplatePath","dirname","appTemplatePath","toLowerCase","overwriteStrategy","KeepExisting","routerCommonTemplatePath","routerTemplatePath","e2eFullyQualifiedName","e2eRoot","viteConfigPath","outDir","scope","tsconfig","compilerOptions","moduleResolution","module","outDirToRootRelativePath","distDir","tsBuildInfoFile","lib","references","filter","ref","path","projectRoot","ignore","preferInstallDependencies","languages","ensureResolvable"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/app/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n names,\n OverwriteStrategy,\n readProjectConfiguration,\n removeDependenciesFromPackageJson,\n type Tree,\n updateJson,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { applicationGenerator } from '@nx/react';\nimport { relative, sep } from 'path';\nimport { addTsDependencies } from '../../../utils/add-dependencies.js';\nimport {\n addDestructuredImport,\n addSingleImport,\n appendToArrayViaGritQL,\n applyGritQL,\n} from '../../../utils/ast.js';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../../utils/declared-dependencies.js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport { resolveIac } from '../../../utils/iac.js';\nimport { installDependencies } from '../../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics.js';\nimport { kebabCase, toClassName, toKebabCase } from '../../../utils/names.js';\nimport { getNpmScopePrefix } from '../../../utils/npm-scope.js';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n} from '../../../utils/nx.js';\nimport { sortObjectKeys } from '../../../utils/object.js';\nimport { getRelativePathToRoot } from '../../../utils/paths.js';\nimport { getPackageManagerDisplayCommands } from '../../../utils/pkg-manager.js';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../../utils/shared-constructs.js';\nimport {\n type IacMetadata,\n PACKAGES_DIR,\n SHARED_SHADCN_DIR,\n} from '../../../utils/shared-constructs-constants.js';\nimport {\n SHADCN_DEPENDENCIES,\n sharedShadcnGenerator,\n} from '../../../utils/shared-shadcn.js';\nimport {\n addWebsiteInfra,\n WEBSITE_CONSTRUCTS_PY_DEPENDENCIES,\n} from '../../../utils/website-constructs/website-constructs.js';\nimport { configureTsProject } from '../../lib/ts-project-utils.js';\nimport { VITEST_DEPENDENCIES } from '../../lib/vitest.js';\n// typescript factory imports removed — now using GritQL for vite config transforms\nimport type {\n TsReactWebsiteGeneratorSchema,\n WebsiteInfraOption,\n} from './schema';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface TsReactWebsiteMetadata extends IacMetadata {\n readonly ux: UxOption;\n readonly framework: string;\n readonly infra: WebsiteInfraOption;\n readonly tailwind: boolean;\n readonly tanstackRouter: boolean;\n}\n\n// Each entry names the branch it belongs to, so the same declaration drives both\n// adding and the version sync.\nexport const DEPENDENCIES = declareDependencies<TsReactWebsiteMetadata>()({\n ts: [\n { name: 'react' },\n { name: 'react-dom' },\n // Build/test tooling imported only from vite.config.mts stays at the root.\n { name: '@nx/react', dev: true, root: true },\n { name: '@vitest/ui', dev: true, root: true },\n {\n name: '@cloudscape-design/components',\n when: (m) => m.ux === 'cloudscape',\n },\n {\n name: '@cloudscape-design/board-components',\n when: (m) => m.ux === 'cloudscape',\n },\n {\n name: '@cloudscape-design/global-styles',\n when: (m) => m.ux === 'cloudscape',\n },\n // Shared shadcn components live in the common/shadcn package, but the\n // website's own generated components (e.g. the tanstack-router sidebar)\n // import lucide-react directly, so the website must declare it.\n {\n name: 'lucide-react',\n when: (m) => m.ux === 'shadcn' && m.tanstackRouter,\n },\n { name: 'tailwindcss', when: (m) => m.tailwind },\n {\n name: '@tailwindcss/vite',\n when: (m) => m.tailwind,\n dev: true,\n root: true,\n },\n { name: '@tanstack/react-router', when: (m) => m.tanstackRouter },\n {\n name: '@tanstack/router-plugin',\n when: (m) => m.tanstackRouter,\n dev: true,\n root: true,\n },\n {\n name: '@tanstack/router-generator',\n when: (m) => m.tanstackRouter,\n dev: true,\n root: true,\n },\n {\n name: '@tanstack/virtual-file-routes',\n when: (m) => m.tanstackRouter,\n dev: true,\n root: true,\n },\n {\n name: '@tanstack/router-utils',\n when: (m) => m.tanstackRouter,\n dev: true,\n root: true,\n },\n ...ownedElsewhere(SHADCN_DEPENDENCIES),\n ...ownedElsewhere(VITEST_DEPENDENCIES),\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ],\n py: ownedElsewhere(WEBSITE_CONSTRUCTS_PY_DEPENDENCIES),\n});\n\nexport const SUPPORTED_UX_PROVIDERS = ['none', 'cloudscape', 'shadcn'] as const;\n\nexport type UxOption = (typeof SUPPORTED_UX_PROVIDERS)[number];\n\nexport type Ux = UxOption;\n\nexport const REACT_WEBSITE_APP_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport async function tsReactWebsiteGenerator(\n tree: Tree,\n schema: TsReactWebsiteGeneratorSchema,\n) {\n const tailwind = schema.tailwind ?? true;\n const tanstackRouter = schema.tanstackRouter ?? true;\n const ux: Ux = schema.ux ?? 'shadcn';\n if (ux === 'shadcn' && !tailwind) {\n throw new Error('Shadcn requires TailwindCSS to be enabled.');\n }\n const npmScopePrefix = getNpmScopePrefix(tree);\n const scopeAlias = npmScopePrefix;\n const websiteNameClassName = toClassName(schema.name);\n const websiteNameKebabCase = toKebabCase(schema.name);\n const fullyQualifiedName = `${npmScopePrefix}${websiteNameKebabCase}`;\n // NB: interactive nx generator cli can pass empty string\n const websiteContentPath = joinPathFragments(\n schema.directory || '.',\n schema.subDirectory || websiteNameKebabCase,\n );\n\n const projectAlreadyExists = tree.exists(\n joinPathFragments(websiteContentPath, 'project.json'),\n );\n\n // TODO: consider exposing and supporting e2e tests\n const e2eTestRunner = 'none';\n\n if (!projectAlreadyExists) {\n await applicationGenerator(tree, {\n ...schema,\n name: fullyQualifiedName,\n directory: websiteContentPath,\n routing: false,\n e2eTestRunner,\n linter: 'none',\n bundler: 'vite',\n unitTestRunner: 'vitest',\n useProjectJson: true,\n style: 'css',\n // Register the @nx/vite and @nx/vitest plugins so build/serve/test\n // targets are inferred rather than emitting deprecated executor targets.\n addPlugin: true,\n });\n\n // Pin the inferred target names. The vite production build is exposed as\n // `bundle` (which produces the deployable artifact), leaving `build` as an\n // aggregator over lint/compile/test/bundle. vite's own typecheck is dropped\n // in favour of the tsc `compile`.\n updateJson(tree, 'nx.json', (nxJson) => {\n for (const plugin of nxJson.plugins ?? []) {\n if (typeof plugin === 'string') continue;\n if (plugin.plugin === '@nx/vite/plugin') {\n plugin.options = {\n ...plugin.options,\n buildTargetName: 'bundle',\n // Map both of vite's inferred dev-server targets onto `serve` so the\n // plugin doesn't emit a separate `dev`; we author our own `dev`\n // below running the local-dev vite mode.\n serveTargetName: 'serve',\n devTargetName: 'serve',\n previewTargetName: 'preview',\n serveStaticTargetName: 'serve-static',\n typecheckTargetName: 'vite:typecheck',\n };\n } else if (plugin.plugin === '@nx/vitest') {\n plugin.options = {\n ...plugin.options,\n testTargetName: 'test',\n };\n }\n }\n return nxJson;\n });\n\n // Replace with simpler sample source code\n tree.delete(joinPathFragments(websiteContentPath, 'src'));\n }\n\n const projectConfiguration = readProjectConfiguration(\n tree,\n fullyQualifiedName,\n );\n\n const targets = projectConfiguration.targets;\n\n const infra = schema.infra ?? 'cloudfront-s3';\n\n // Configure load-runtime-config target based on IaC provider (only when infra is not none)\n const iac = infra !== 'none' ? await resolveIac(tree, schema.iac) : undefined;\n\n if (iac === 'cdk') {\n targets['load-runtime-config'] = {\n executor: 'nx:run-commands',\n metadata: {\n description: `Load runtime config from your deployed stack for dev purposes. You must set your AWS CLI credentials whilst calling '${getPackageManagerDisplayCommands().exec} nx load-runtime-config ${fullyQualifiedName}'`,\n },\n options: {\n command: `aws s3 cp s3://\\`aws cloudformation describe-stacks --query \"Stacks[?starts_with(StackName, '${kebabCase(npmScopePrefix)}-')][].Outputs[] | [?contains(OutputKey, '${websiteNameClassName}WebsiteBucketName')].OutputValue\" --output text\\`/runtime-config.json \"{projectRoot}/public/runtime-config.json\"`,\n },\n };\n } else if (iac === 'terraform') {\n targets['load-runtime-config'] = {\n executor: 'nx:run-commands',\n metadata: {\n description:\n \"Load runtime config from most recently applied terraform env for dev purposes. Copies the runtime config from the Terraform dist directory to the website's public directory.\",\n },\n options: {\n command:\n 'node -e \"const fs=require(\\'fs\\');fs.mkdirSync(process.env.DEST_DIR,{recursive:true});fs.copyFileSync(process.env.SRC_FILE,process.env.DEST_FILE);\"',\n env: {\n SRC_FILE: 'dist/packages/common/terraform/runtime-config.json',\n DEST_DIR: `{projectRoot}/public`,\n DEST_FILE: `{projectRoot}/public/runtime-config.json`,\n },\n },\n };\n }\n\n if (!projectAlreadyExists) {\n targets['compile'] = {\n dependsOn: ['^build'],\n executor: 'nx:run-commands',\n outputs: ['{workspaceRoot}/dist/{projectRoot}/tsc'],\n options: {\n command: 'tsc --build tsconfig.app.json',\n cwd: '{projectRoot}',\n },\n };\n // bundle is the @nx/vite/plugin inferred `vite build` (writing to the\n // bundle dir configured in vite.config) — it produces the deployable\n // artifact. build aggregates lint/compile/test/bundle.\n targets['build'] = {\n dependsOn: ['lint', 'compile', 'test', 'bundle'],\n };\n\n // Run the website and its connected dependencies locally. Mirrors the\n // inferred `serve` target but with the local-dev vite mode.\n targets['dev'] = {\n executor: 'nx:run-commands',\n continuous: true,\n options: {\n command: 'vite --mode local-dev',\n cwd: '{projectRoot}',\n },\n };\n }\n\n projectConfiguration.targets = sortObjectKeys(targets);\n\n updateProjectConfiguration(tree, fullyQualifiedName, projectConfiguration);\n\n // Recorded here and read by the declaration's predicates, so the packages\n // added below are exactly the ones the version sync will own.\n const metadata: TsReactWebsiteMetadata = {\n ux,\n framework: 'react',\n infra,\n tailwind,\n tanstackRouter,\n // Undefined when no infrastructure was generated, so neither provider's\n // packages were added.\n ...(iac ? { iac } : {}),\n };\n addGeneratorMetadata(\n tree,\n projectConfiguration.name,\n REACT_WEBSITE_APP_GENERATOR_INFO,\n metadata,\n );\n\n await configureTsProject(\n tree,\n {\n dir: websiteContentPath,\n fullyQualifiedName,\n },\n DEPENDENCIES,\n );\n\n if (ux === 'shadcn') {\n await sharedShadcnGenerator(tree, DEPENDENCIES);\n }\n\n if (iac) {\n await sharedConstructsGenerator(\n tree,\n {\n iac,\n },\n DEPENDENCIES,\n );\n\n await addWebsiteInfra(tree, {\n iac,\n websiteProjectName: fullyQualifiedName,\n scopeAlias,\n websiteContentPath: joinPathFragments('dist', websiteContentPath),\n websiteNameKebabCase,\n websiteNameClassName,\n });\n }\n\n const projectConfig = readProjectConfiguration(tree, fullyQualifiedName);\n const libraryRoot = projectConfig.root;\n const sharedShadcnStylesImport = relative(\n joinPathFragments(libraryRoot, 'src'),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_SHADCN_DIR,\n 'src',\n 'styles',\n 'globals.css',\n ),\n )\n .split(sep)\n .join('/');\n const sharedShadcnTsconfigRef = relative(\n joinPathFragments(tree.root, websiteContentPath),\n joinPathFragments(\n tree.root,\n PACKAGES_DIR,\n SHARED_SHADCN_DIR,\n 'tsconfig.json',\n ),\n )\n .split(sep)\n .join('/');\n const templateOptions = {\n ...schema,\n fullyQualifiedName,\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n tailwind,\n tanstackRouter,\n scopeAlias,\n sharedShadcnStylesImport,\n };\n tree.delete(joinPathFragments(libraryRoot, 'src', 'app'));\n const appCommonTemplatePath = joinPathFragments(\n import.meta.dirname,\n './files/app/common',\n );\n const appTemplatePath = joinPathFragments(\n import.meta.dirname,\n `./files/app/${ux.toLowerCase()}`,\n );\n\n generateFiles(\n tree, // the virtual file system\n appCommonTemplatePath, // path to the file templates\n libraryRoot, // destination path of the files\n templateOptions, // config object to replace variable in file templates\n {\n // User-editable source - preserve any edits on re-run\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree, // the virtual file system\n appTemplatePath, // path to the file templates\n libraryRoot, // destination path of the files\n templateOptions, // config object to replace variable in file templates\n {\n // User-editable source - preserve any edits on re-run\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n if (tanstackRouter) {\n const routerCommonTemplatePath = joinPathFragments(\n import.meta.dirname,\n './files/tanstack-router/common',\n );\n const routerTemplatePath = joinPathFragments(\n import.meta.dirname,\n `./files/tanstack-router/${ux.toLowerCase()}`,\n );\n\n generateFiles(\n tree,\n routerCommonTemplatePath,\n libraryRoot,\n templateOptions,\n {\n // User-editable source (and the TanStack-managed route tree) - preserve on re-run\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n routerTemplatePath,\n libraryRoot,\n templateOptions, // config object to replace variable in file templates\n {\n // User-editable source - preserve any edits on re-run\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n tree.delete(joinPathFragments(websiteContentPath, 'src', 'app.tsx'));\n }\n\n if (e2eTestRunner !== 'none') {\n const e2eFullyQualifiedName = `${fullyQualifiedName}-e2e`;\n const e2eRoot = readProjectConfiguration(tree, e2eFullyQualifiedName).root;\n generateFiles(\n tree, // the virtual file system\n joinPathFragments(import.meta.dirname, `./files/e2e/${e2eTestRunner}`), // path to the file templates\n e2eRoot, // destination path of the files\n { ...schema, ...names(fullyQualifiedName) },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n await configureTsProject(\n tree,\n {\n fullyQualifiedName: e2eFullyQualifiedName,\n dir: e2eRoot,\n },\n DEPENDENCIES,\n );\n }\n const viteConfigPath = joinPathFragments(libraryRoot, 'vite.config.mts');\n\n if (tree.exists(viteConfigPath)) {\n // Add Tanstack Router import if enabled\n if (tanstackRouter) {\n await addDestructuredImport(\n tree,\n viteConfigPath,\n ['tanstackRouter'],\n '@tanstack/router-plugin/vite',\n );\n\n await addDestructuredImport(tree, viteConfigPath, ['resolve'], 'path');\n }\n\n // Add TailwindCSS import if enabled\n if (tailwind) {\n await addSingleImport(\n tree,\n viteConfigPath,\n 'tailwindcss',\n '@tailwindcss/vite',\n );\n }\n\n // Update build.outDir. The inferred `vite build` target writes here, so\n // point it at the bundle dir the website infrastructure consumes.\n const outDir = joinPathFragments(\n getRelativePathToRoot(tree, fullyQualifiedName),\n 'dist',\n websiteContentPath,\n 'bundle',\n );\n await applyGritQL(\n tree,\n viteConfigPath,\n `\\`build: { $bprops }\\` where { $bprops <: contains \\`outDir: $_\\` => \\`outDir: '${outDir}'\\` }`,\n );\n\n // Add plugins to the plugins array\n if (tanstackRouter) {\n // Prepend tanstackRouter (must be first plugin) — rewrite works for both single/multi-element\n await applyGritQL(\n tree,\n viteConfigPath,\n \"`plugins: [$items]` => `plugins: [tanstackRouter({ routesDirectory: resolve(import.meta.dirname, 'src/routes'), generatedRouteTree: resolve(import.meta.dirname, 'src/routeTree.gen.ts') }), $items]` where { $items <: within `defineConfig($_)`, $items <: not contains `tanstackRouter` }\",\n );\n }\n\n if (tailwind) {\n await appendToArrayViaGritQL(\n tree,\n viteConfigPath,\n 'plugins:',\n 'tailwindcss()',\n { scope: 'defineConfig($_)' },\n );\n }\n\n // Use Vite's native tsconfig paths resolution (replaces vite-tsconfig-paths).\n // `dedupe` forces a single copy of react/react-dom into the bundle: each\n // project declares its own react dependency, so without this a workspace\n // library's hoisted copy can produce a second React instance and the\n // \"Invalid hook call\" runtime crash.\n await applyGritQL(\n tree,\n viteConfigPath,\n \"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'] }` } }\",\n );\n\n // Add define: { global: {} } to the config (handles both callback and direct forms)\n await applyGritQL(\n tree,\n viteConfigPath,\n 'or { `defineConfig(() => ({ $props }))` where { $props <: not contains `define`, $props += `define: { global: {} }` }, `defineConfig({ $props })` where { $props <: not contains `define`, $props += `define: { global: {} }` } }',\n );\n }\n\n updateJson(\n tree,\n joinPathFragments(websiteContentPath, 'tsconfig.json'),\n (tsconfig) => ({\n ...tsconfig,\n compilerOptions: {\n ...tsconfig.compilerOptions,\n moduleResolution: 'Bundler',\n module: 'Preserve',\n },\n }),\n );\n const outDirToRootRelativePath = relative(\n joinPathFragments(tree.root, websiteContentPath),\n tree.root,\n );\n const distDir = joinPathFragments(\n outDirToRootRelativePath,\n 'dist',\n websiteContentPath,\n 'tsc',\n );\n updateJson(\n tree,\n joinPathFragments(websiteContentPath, 'tsconfig.app.json'),\n (tsconfig) => ({\n ...tsconfig,\n compilerOptions: {\n ...tsconfig.compilerOptions,\n outDir: distDir,\n tsBuildInfoFile: joinPathFragments(distDir, 'tsconfig.lib.tsbuildinfo'),\n lib: ['DOM'],\n },\n references:\n ux === 'shadcn'\n ? [\n ...(tsconfig.references ?? []).filter(\n (ref) => ref.path !== sharedShadcnTsconfigRef,\n ),\n {\n path: sharedShadcnTsconfigRef,\n },\n ]\n : tsconfig.references,\n }),\n );\n\n addTsDependencies(tree, DEPENDENCIES, { metadata, projectRoot: libraryRoot });\n\n // @nx/react's applicationGenerator seeds react/react-dom into the root\n // manifest. The website now declares its own pinned versions, so drop the\n // root copies: without catalogs (npm) the root's floating range resolves to\n // a different version than the website's pin, installing a second React and\n // producing the \"Invalid hook call\" runtime crash.\n removeDependenciesFromPackageJson(tree, ['react', 'react-dom'], []);\n\n await addGeneratorMetricsIfApplicable(tree, [\n REACT_WEBSITE_APP_GENERATOR_INFO,\n ]);\n\n // TanStack Router's vite plugin owns this website's route tree and rewrites it\n // in its own (unformatted) shape whenever the config is loaded — including when\n // Nx computes the project graph — so formatting it here would only make\n // generation non-idempotent. The vended biome config excludes `**/*.gen.*`, so\n // the workspace's own `format` target leaves it alone too.\n await formatFilesInSubtree(tree, undefined, {\n ignore: tanstackRouter\n ? [joinPathFragments(libraryRoot, 'src', 'routeTree.gen.ts')]\n : [],\n });\n // The generated vite.config.mts imports these, and Nx's inferred `@nx/vite`\n // plugin loads that config when computing the project graph — so they must be\n // installed even if the caller would otherwise prefer to defer.\n return () =>\n installDependencies(tree, schema.preferInstallDependencies, {\n languages: ['typescript'],\n ensureResolvable: [\n ...(tailwind ? (['@tailwindcss/vite'] as const) : []),\n ...(tanstackRouter ? (['@tanstack/router-plugin'] as const) : []),\n ],\n });\n}\nexport default tsReactWebsiteGenerator;\n"],"names":["generateFiles","joinPathFragments","names","OverwriteStrategy","readProjectConfiguration","removeDependenciesFromPackageJson","updateJson","updateProjectConfiguration","applicationGenerator","relative","sep","addTsDependencies","addDestructuredImport","addSingleImport","appendToArrayViaGritQL","applyGritQL","declareDependencies","ownedElsewhere","formatFilesInSubtree","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","kebabCase","toClassName","toKebabCase","getNpmScopePrefix","addGeneratorMetadata","getGeneratorInfo","sortObjectKeys","getRelativePathToRoot","getPackageManagerDisplayCommands","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","PACKAGES_DIR","SHARED_SHADCN_DIR","SHADCN_DEPENDENCIES","sharedShadcnGenerator","addWebsiteInfra","WEBSITE_CONSTRUCTS_PY_DEPENDENCIES","configureTsProject","VITEST_DEPENDENCIES","DEPENDENCIES","ts","name","dev","root","when","m","ux","tanstackRouter","tailwind","py","SUPPORTED_UX_PROVIDERS","REACT_WEBSITE_APP_GENERATOR_INFO","filename","tsReactWebsiteGenerator","tree","schema","Error","npmScopePrefix","scopeAlias","websiteNameClassName","websiteNameKebabCase","fullyQualifiedName","websiteContentPath","directory","subDirectory","projectAlreadyExists","exists","e2eTestRunner","routing","linter","bundler","unitTestRunner","useProjectJson","style","addPlugin","nxJson","plugin","plugins","options","buildTargetName","serveTargetName","devTargetName","previewTargetName","serveStaticTargetName","typecheckTargetName","testTargetName","delete","projectConfiguration","targets","infra","iac","undefined","executor","metadata","description","exec","command","env","SRC_FILE","DEST_DIR","DEST_FILE","dependsOn","outputs","cwd","continuous","framework","dir","websiteProjectName","projectConfig","libraryRoot","sharedShadcnStylesImport","split","join","sharedShadcnTsconfigRef","templateOptions","pkgMgrCmd","appCommonTemplatePath","dirname","appTemplatePath","toLowerCase","overwriteStrategy","KeepExisting","routerCommonTemplatePath","routerTemplatePath","e2eFullyQualifiedName","e2eRoot","viteConfigPath","outDir","scope","tsconfig","compilerOptions","moduleResolution","module","outDirToRootRelativePath","distDir","tsBuildInfoFile","lib","references","filter","ref","path","projectRoot","ignore","preferInstallDependencies","languages","ensureResolvable"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/app/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../../utils/iac';\nimport { UxOption } from './generator';\n\nexport type WebsiteInfraOption = 'cloudfront-s3' | 'none';\n\nexport interface TsReactWebsiteGeneratorSchema {\n name: string;\n directory?: string;\n subDirectory?: string;\n preferInstallDependencies?: boolean;\n tanstackRouter?: boolean;\n tailwind?: boolean;\n ux?: UxOption;\n infra?: WebsiteInfraOption;\n iac: IacOption;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAMD,WAUC"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/app/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../../utils/iac.js';\nimport { UxOption } from './generator.js';\n\nexport type WebsiteInfraOption = 'cloudfront-s3' | 'none';\n\nexport interface TsReactWebsiteGeneratorSchema {\n name: string;\n directory?: string;\n subDirectory?: string;\n preferInstallDependencies?: boolean;\n tanstackRouter?: boolean;\n tailwind?: boolean;\n ux?: UxOption;\n infra?: WebsiteInfraOption;\n iac: IacOption;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAMD,WAUC"}
@@ -2,8 +2,8 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { IacOption } from '../../../utils/iac';
6
- import { UxOption } from './generator';
5
+ import { IacOption } from '../../../utils/iac.js';
6
+ import { UxOption } from './generator.js';
7
7
 
8
8
  export type WebsiteInfraOption = 'cloudfront-s3' | 'none';
9
9
 
@@ -3,20 +3,20 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { type Tree } from '@nx/devkit';
6
- import { type NxGeneratorInfo } from '../../../utils/nx';
6
+ import { type NxGeneratorInfo } from '../../../utils/nx.js';
7
7
  import type { TsReactWebsiteAuthGeneratorSchema } from './schema';
8
- export declare const DEPENDENCIES: import("../../../utils/declared-dependencies").DependencyDeclaration<readonly [{
8
+ export declare const DEPENDENCIES: import("../../../utils/declared-dependencies.js").DependencyDeclaration<readonly [{
9
9
  readonly name: "oidc-client-ts";
10
10
  }, {
11
11
  readonly name: "react-oidc-context";
12
12
  }, {
13
13
  readonly name: "constructs";
14
- readonly when: (m: import("../../../utils/shared-constructs-constants").IacMetadata) => boolean;
14
+ readonly when: (m: import("../../../utils/shared-constructs-constants.js").IacMetadata) => boolean;
15
15
  } & {
16
16
  versionOnly: true;
17
17
  }, {
18
18
  readonly name: "aws-cdk-lib";
19
- readonly when: (m: import("../../../utils/shared-constructs-constants").IacMetadata) => boolean;
19
+ readonly when: (m: import("../../../utils/shared-constructs-constants.js").IacMetadata) => boolean;
20
20
  } & {
21
21
  versionOnly: true;
22
22
  }, {
@@ -25,7 +25,7 @@ export declare const DEPENDENCIES: import("../../../utils/declared-dependencies"
25
25
  versionOnly: true;
26
26
  }], readonly [{
27
27
  readonly name: "boto3";
28
- readonly when: (m: import("../../../utils/shared-constructs-constants").IacMetadata) => boolean;
28
+ readonly when: (m: import("../../../utils/shared-constructs-constants.js").IacMetadata) => boolean;
29
29
  } & {
30
30
  versionOnly: true;
31
31
  }]>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\nimport { addTsDependencies } from '../../../utils/add-dependencies';\nimport {\n addDestructuredImport,\n addSingleImport,\n applyGritQL,\n} from '../../../utils/ast';\nimport { addHookResultToRouterProviderContext } from '../../../utils/ast/website';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { resolveIac } from '../../../utils/iac';\nimport {\n addIdentityInfra,\n IDENTITY_CONSTRUCTS_PY_DEPENDENCIES,\n} from '../../../utils/identity-constructs/identity-constructs';\nimport { installDependencies } from '../../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport { getNpmScope } from '../../../utils/npm-scope';\nimport {\n addComponentGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { toProjectRelativePath } from '../../../utils/paths';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../../utils/shared-constructs';\nimport { runtimeConfigGenerator } from '../runtime-config/generator';\nimport type { TsReactWebsiteAuthGeneratorSchema } from './schema';\nimport {\n addCloudscapeAuthMenu,\n addNoneAuthMenu,\n addShadcnAuthMenu,\n deriveCognitoDomainPrefix,\n} from './utils';\n\nconst readGritPattern = (name: string): string =>\n readFileSync(\n join(import.meta.dirname, 'grit', `${name}.grit`),\n 'utf-8',\n ).trim();\n\nexport const DEPENDENCIES = declareDependencies()({\n ts: [\n { name: 'oidc-client-ts' },\n { name: 'react-oidc-context' },\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ],\n py: ownedElsewhere(IDENTITY_CONSTRUCTS_PY_DEPENDENCIES),\n});\n\nexport const COGNITO_AUTH_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function tsReactWebsiteAuthGenerator(\n tree: Tree,\n options: TsReactWebsiteAuthGeneratorSchema,\n) {\n const projectConfig = readProjectConfigurationUnqualified(\n tree,\n options.project,\n );\n const srcRoot = projectConfig.sourceRoot;\n\n const cognitoDomain =\n options.cognitoDomain && options.cognitoDomain.length > 0\n ? options.cognitoDomain\n : deriveCognitoDomainPrefix(getNpmScope(tree), projectConfig.name!);\n\n await runtimeConfigGenerator(tree, {\n project: options.project,\n preferInstallDependencies: false,\n });\n\n const iac = await resolveIac(tree, options.iac);\n\n await sharedConstructsGenerator(\n tree,\n {\n iac,\n },\n DEPENDENCIES,\n );\n\n await addIdentityInfra(tree, {\n iac,\n allowSignup: options.allowSignup,\n cognitoDomain,\n });\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'app'),\n srcRoot,\n options,\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n addTsDependencies(tree, DEPENDENCIES, { projectRoot: projectConfig.root });\n\n const mainTsxPath = joinPathFragments(srcRoot, 'main.tsx');\n\n await addSingleImport(\n tree,\n mainTsxPath,\n 'CognitoAuth',\n './components/CognitoAuth',\n );\n\n await addHookResultToRouterProviderContext(tree, mainTsxPath, {\n hook: 'useAuth',\n module: 'react-oidc-context',\n contextProp: 'auth',\n });\n\n const projectConfiguration = readProjectConfigurationUnqualified(\n tree,\n options.project,\n );\n\n const ux = (\n (projectConfiguration.metadata as any)?.ux ?? 'shadcn'\n ).toLowerCase();\n\n await applyGritQL(tree, mainTsxPath, readGritPattern('cognito-auth-wrapper'));\n // Update App Layout\n const appLayoutTsxPath = joinPathFragments(\n srcRoot,\n 'components',\n 'AppLayout',\n 'index.tsx',\n );\n if (tree.exists(appLayoutTsxPath)) {\n await addDestructuredImport(\n tree,\n appLayoutTsxPath,\n ['useAuth'],\n 'react-oidc-context',\n );\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('app-layout-use-auth'),\n );\n // TODO: update utils if they exist by appending to the array\n // Add a top-level navigation menu that shows the signed-in user's profile and actions\n switch (ux) {\n case 'cloudscape':\n await addCloudscapeAuthMenu(tree, appLayoutTsxPath);\n break;\n case 'shadcn':\n await addShadcnAuthMenu(tree, appLayoutTsxPath);\n break;\n case 'none':\n await addNoneAuthMenu(tree, appLayoutTsxPath);\n break;\n default:\n throw new Error(\n `Top-level navigation menu to show the signed-in user for ux \"${ux}\" is not implemented.`,\n );\n }\n } else {\n console.info(\n `Skipping update to ${appLayoutTsxPath} as it does not exist.`,\n );\n }\n // End update App Layout\n\n addComponentGeneratorMetadata(\n tree,\n options.project,\n COGNITO_AUTH_GENERATOR_INFO,\n toProjectRelativePath(\n projectConfig,\n joinPathFragments(srcRoot, 'components', 'CognitoAuth'),\n ),\n undefined,\n { iac },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [COGNITO_AUTH_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n}\nexport default tsReactWebsiteAuthGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","readFileSync","join","addTsDependencies","addDestructuredImport","addSingleImport","applyGritQL","addHookResultToRouterProviderContext","declareDependencies","ownedElsewhere","formatFilesInSubtree","resolveIac","addIdentityInfra","IDENTITY_CONSTRUCTS_PY_DEPENDENCIES","installDependencies","addGeneratorMetricsIfApplicable","getNpmScope","addComponentGeneratorMetadata","getGeneratorInfo","readProjectConfigurationUnqualified","toProjectRelativePath","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","runtimeConfigGenerator","addCloudscapeAuthMenu","addNoneAuthMenu","addShadcnAuthMenu","deriveCognitoDomainPrefix","readGritPattern","name","dirname","trim","DEPENDENCIES","ts","py","COGNITO_AUTH_GENERATOR_INFO","filename","tsReactWebsiteAuthGenerator","tree","options","projectConfig","project","srcRoot","sourceRoot","cognitoDomain","length","preferInstallDependencies","iac","allowSignup","overwriteStrategy","KeepExisting","projectRoot","root","mainTsxPath","hook","module","contextProp","projectConfiguration","ux","metadata","toLowerCase","appLayoutTsxPath","exists","Error","console","info","undefined","languages"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\nimport { addTsDependencies } from '../../../utils/add-dependencies.js';\nimport {\n addDestructuredImport,\n addSingleImport,\n applyGritQL,\n} from '../../../utils/ast.js';\nimport { addHookResultToRouterProviderContext } from '../../../utils/ast/website.js';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../../utils/declared-dependencies.js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport { resolveIac } from '../../../utils/iac.js';\nimport {\n addIdentityInfra,\n IDENTITY_CONSTRUCTS_PY_DEPENDENCIES,\n} from '../../../utils/identity-constructs/identity-constructs.js';\nimport { installDependencies } from '../../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics.js';\nimport { getNpmScope } from '../../../utils/npm-scope.js';\nimport {\n addComponentGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx.js';\nimport { toProjectRelativePath } from '../../../utils/paths.js';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../../utils/shared-constructs.js';\nimport { runtimeConfigGenerator } from '../runtime-config/generator.js';\nimport type { TsReactWebsiteAuthGeneratorSchema } from './schema';\nimport {\n addCloudscapeAuthMenu,\n addNoneAuthMenu,\n addShadcnAuthMenu,\n deriveCognitoDomainPrefix,\n} from './utils.js';\n\nconst readGritPattern = (name: string): string =>\n readFileSync(\n join(import.meta.dirname, 'grit', `${name}.grit`),\n 'utf-8',\n ).trim();\n\nexport const DEPENDENCIES = declareDependencies()({\n ts: [\n { name: 'oidc-client-ts' },\n { name: 'react-oidc-context' },\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ],\n py: ownedElsewhere(IDENTITY_CONSTRUCTS_PY_DEPENDENCIES),\n});\n\nexport const COGNITO_AUTH_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function tsReactWebsiteAuthGenerator(\n tree: Tree,\n options: TsReactWebsiteAuthGeneratorSchema,\n) {\n const projectConfig = readProjectConfigurationUnqualified(\n tree,\n options.project,\n );\n const srcRoot = projectConfig.sourceRoot;\n\n const cognitoDomain =\n options.cognitoDomain && options.cognitoDomain.length > 0\n ? options.cognitoDomain\n : deriveCognitoDomainPrefix(getNpmScope(tree), projectConfig.name!);\n\n await runtimeConfigGenerator(tree, {\n project: options.project,\n preferInstallDependencies: false,\n });\n\n const iac = await resolveIac(tree, options.iac);\n\n await sharedConstructsGenerator(\n tree,\n {\n iac,\n },\n DEPENDENCIES,\n );\n\n await addIdentityInfra(tree, {\n iac,\n allowSignup: options.allowSignup,\n cognitoDomain,\n });\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'app'),\n srcRoot,\n options,\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n addTsDependencies(tree, DEPENDENCIES, { projectRoot: projectConfig.root });\n\n const mainTsxPath = joinPathFragments(srcRoot, 'main.tsx');\n\n await addSingleImport(\n tree,\n mainTsxPath,\n 'CognitoAuth',\n './components/CognitoAuth',\n );\n\n await addHookResultToRouterProviderContext(tree, mainTsxPath, {\n hook: 'useAuth',\n module: 'react-oidc-context',\n contextProp: 'auth',\n });\n\n const projectConfiguration = readProjectConfigurationUnqualified(\n tree,\n options.project,\n );\n\n const ux = (\n (projectConfiguration.metadata as any)?.ux ?? 'shadcn'\n ).toLowerCase();\n\n await applyGritQL(tree, mainTsxPath, readGritPattern('cognito-auth-wrapper'));\n // Update App Layout\n const appLayoutTsxPath = joinPathFragments(\n srcRoot,\n 'components',\n 'AppLayout',\n 'index.tsx',\n );\n if (tree.exists(appLayoutTsxPath)) {\n await addDestructuredImport(\n tree,\n appLayoutTsxPath,\n ['useAuth'],\n 'react-oidc-context',\n );\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('app-layout-use-auth'),\n );\n // TODO: update utils if they exist by appending to the array\n // Add a top-level navigation menu that shows the signed-in user's profile and actions\n switch (ux) {\n case 'cloudscape':\n await addCloudscapeAuthMenu(tree, appLayoutTsxPath);\n break;\n case 'shadcn':\n await addShadcnAuthMenu(tree, appLayoutTsxPath);\n break;\n case 'none':\n await addNoneAuthMenu(tree, appLayoutTsxPath);\n break;\n default:\n throw new Error(\n `Top-level navigation menu to show the signed-in user for ux \"${ux}\" is not implemented.`,\n );\n }\n } else {\n console.info(\n `Skipping update to ${appLayoutTsxPath} as it does not exist.`,\n );\n }\n // End update App Layout\n\n addComponentGeneratorMetadata(\n tree,\n options.project,\n COGNITO_AUTH_GENERATOR_INFO,\n toProjectRelativePath(\n projectConfig,\n joinPathFragments(srcRoot, 'components', 'CognitoAuth'),\n ),\n undefined,\n { iac },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [COGNITO_AUTH_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n}\nexport default tsReactWebsiteAuthGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","readFileSync","join","addTsDependencies","addDestructuredImport","addSingleImport","applyGritQL","addHookResultToRouterProviderContext","declareDependencies","ownedElsewhere","formatFilesInSubtree","resolveIac","addIdentityInfra","IDENTITY_CONSTRUCTS_PY_DEPENDENCIES","installDependencies","addGeneratorMetricsIfApplicable","getNpmScope","addComponentGeneratorMetadata","getGeneratorInfo","readProjectConfigurationUnqualified","toProjectRelativePath","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","runtimeConfigGenerator","addCloudscapeAuthMenu","addNoneAuthMenu","addShadcnAuthMenu","deriveCognitoDomainPrefix","readGritPattern","name","dirname","trim","DEPENDENCIES","ts","py","COGNITO_AUTH_GENERATOR_INFO","filename","tsReactWebsiteAuthGenerator","tree","options","projectConfig","project","srcRoot","sourceRoot","cognitoDomain","length","preferInstallDependencies","iac","allowSignup","overwriteStrategy","KeepExisting","projectRoot","root","mainTsxPath","hook","module","contextProp","projectConfiguration","ux","metadata","toLowerCase","appLayoutTsxPath","exists","Error","console","info","undefined","languages"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IacOption } from '../../../utils/iac';\n\nexport interface TsReactWebsiteAuthGeneratorSchema {\n project: string;\n allowSignup: boolean;\n cognitoDomain?: string;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAID,WAMC"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IacOption } from '../../../utils/iac.js';\n\nexport interface TsReactWebsiteAuthGeneratorSchema {\n project: string;\n allowSignup: boolean;\n cognitoDomain?: string;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAID,WAMC"}
@@ -3,7 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
 
6
- import { IacOption } from '../../../utils/iac';
6
+ import { IacOption } from '../../../utils/iac.js';
7
7
 
8
8
  export interface TsReactWebsiteAuthGeneratorSchema {
9
9
  project: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/utils.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Tree } from '@nx/devkit';\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\nimport { addDestructuredImport, applyGritQL } from '../../../utils/ast';\nimport { kebabCase } from '../../../utils/names';\n\nconst readGritPattern = (name: string): string =>\n readFileSync(\n join(import.meta.dirname, 'grit', `${name}.grit`),\n 'utf-8',\n ).trim();\n\n// Leaves room for the IaC suffix (Terraform: `-<12-digit account>-<8-char hex>` = 22 chars) inside Cognito's 63-char limit.\nconst MAX_DERIVED_DOMAIN_PREFIX_LENGTH = 41;\n\n// Cognito rejects domains containing these substrings (\"Domain cannot contain reserved word\").\nconst COGNITO_DOMAIN_RESERVED_WORDS = ['aws', 'amazon', 'cognito'];\n\nexport const deriveCognitoDomainPrefix = (\n npmScope: string | undefined,\n projectName: string,\n): string => {\n const projectWithoutScope = projectName.includes('/')\n ? projectName.split('/').pop()!\n : projectName;\n const kebab = kebabCase(\n [npmScope, projectWithoutScope].filter(Boolean).join('-'),\n );\n const stripped = COGNITO_DOMAIN_RESERVED_WORDS.reduce(\n (s, word) => s.replaceAll(word, ''),\n kebab,\n );\n const candidate = stripped\n .replace(/-+/g, '-')\n .replace(/^-|-$/g, '')\n .slice(0, MAX_DERIVED_DOMAIN_PREFIX_LENGTH)\n .replace(/-$/, '');\n if (!candidate) {\n throw new Error(\n `Unable to derive a valid Cognito domain prefix from scope \"${npmScope ?? ''}\" and project \"${projectName}\". Please specify a cognitoDomain explicitly.`,\n );\n }\n return candidate;\n};\n\n// Adds a user greeting and sign-out button to the default AppLayout header when using the None UX provider.\nexport async function addNoneAuthMenu(tree: Tree, appLayoutTsxPath: string) {\n await applyGritQL(tree, appLayoutTsxPath, readGritPattern('none-auth-menu'));\n}\n\n// Adds a top navigation dropdown with sign-out when using the Cloudscape UX provider.\nexport async function addCloudscapeAuthMenu(\n tree: Tree,\n appLayoutTsxPath: string,\n) {\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('cloudscape-auth-menu'),\n );\n}\n\nexport async function addShadcnAuthMenu(tree: Tree, appLayoutTsxPath: string) {\n if (!tree.exists(appLayoutTsxPath)) {\n throw new Error(`Expected top nav component at ${appLayoutTsxPath}`);\n }\n\n // Prepend state declarations to the AppLayout component body\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('shadcn-state-declarations'),\n );\n\n // Add useEffect, useRef, useState imports from react\n await addDestructuredImport(\n tree,\n appLayoutTsxPath,\n ['useEffect', 'useRef', 'useState'],\n 'react',\n );\n\n // Append the auth menu to the header element\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('shadcn-auth-menu'),\n );\n}\n"],"names":["readFileSync","join","addDestructuredImport","applyGritQL","kebabCase","readGritPattern","name","dirname","trim","MAX_DERIVED_DOMAIN_PREFIX_LENGTH","COGNITO_DOMAIN_RESERVED_WORDS","deriveCognitoDomainPrefix","npmScope","projectName","projectWithoutScope","includes","split","pop","kebab","filter","Boolean","stripped","reduce","s","word","replaceAll","candidate","replace","slice","Error","addNoneAuthMenu","tree","appLayoutTsxPath","addCloudscapeAuthMenu","addShadcnAuthMenu","exists"],"mappings":"AAAA;;;CAGC,GAED,SAASA,YAAY,QAAQ,KAAK;AAClC,SAASC,IAAI,QAAQ,OAAO;AAC5B,SAASC,qBAAqB,EAAEC,WAAW,QAAQ,wBAAqB;AACxE,SAASC,SAAS,QAAQ,0BAAuB;AAEjD,MAAMC,kBAAkB,CAACC,OACvBN,aACEC,KAAK,YAAYM,OAAO,EAAE,QAAQ,GAAGD,KAAK,KAAK,CAAC,GAChD,SACAE,IAAI;AAER,4HAA4H;AAC5H,MAAMC,mCAAmC;AAEzC,+FAA+F;AAC/F,MAAMC,gCAAgC;IAAC;IAAO;IAAU;CAAU;AAElE,OAAO,MAAMC,4BAA4B,CACvCC,UACAC;IAEA,MAAMC,sBAAsBD,YAAYE,QAAQ,CAAC,OAC7CF,YAAYG,KAAK,CAAC,KAAKC,GAAG,KAC1BJ;IACJ,MAAMK,QAAQd,UACZ;QAACQ;QAAUE;KAAoB,CAACK,MAAM,CAACC,SAASnB,IAAI,CAAC;IAEvD,MAAMoB,WAAWX,8BAA8BY,MAAM,CACnD,CAACC,GAAGC,OAASD,EAAEE,UAAU,CAACD,MAAM,KAChCN;IAEF,MAAMQ,YAAYL,SACfM,OAAO,CAAC,OAAO,KACfA,OAAO,CAAC,UAAU,IAClBC,KAAK,CAAC,GAAGnB,kCACTkB,OAAO,CAAC,MAAM;IACjB,IAAI,CAACD,WAAW;QACd,MAAM,IAAIG,MACR,CAAC,2DAA2D,EAAEjB,YAAY,GAAG,eAAe,EAAEC,YAAY,6CAA6C,CAAC;IAE5J;IACA,OAAOa;AACT,EAAE;AAEF,4GAA4G;AAC5G,OAAO,eAAeI,gBAAgBC,IAAU,EAAEC,gBAAwB;IACxE,MAAM7B,YAAY4B,MAAMC,kBAAkB3B,gBAAgB;AAC5D;AAEA,sFAAsF;AACtF,OAAO,eAAe4B,sBACpBF,IAAU,EACVC,gBAAwB;IAExB,MAAM7B,YACJ4B,MACAC,kBACA3B,gBAAgB;AAEpB;AAEA,OAAO,eAAe6B,kBAAkBH,IAAU,EAAEC,gBAAwB;IAC1E,IAAI,CAACD,KAAKI,MAAM,CAACH,mBAAmB;QAClC,MAAM,IAAIH,MAAM,CAAC,8BAA8B,EAAEG,kBAAkB;IACrE;IAEA,6DAA6D;IAC7D,MAAM7B,YACJ4B,MACAC,kBACA3B,gBAAgB;IAGlB,qDAAqD;IACrD,MAAMH,sBACJ6B,MACAC,kBACA;QAAC;QAAa;QAAU;KAAW,EACnC;IAGF,6CAA6C;IAC7C,MAAM7B,YACJ4B,MACAC,kBACA3B,gBAAgB;AAEpB"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/utils.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Tree } from '@nx/devkit';\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\nimport { addDestructuredImport, applyGritQL } from '../../../utils/ast.js';\nimport { kebabCase } from '../../../utils/names.js';\n\nconst readGritPattern = (name: string): string =>\n readFileSync(\n join(import.meta.dirname, 'grit', `${name}.grit`),\n 'utf-8',\n ).trim();\n\n// Leaves room for the IaC suffix (Terraform: `-<12-digit account>-<8-char hex>` = 22 chars) inside Cognito's 63-char limit.\nconst MAX_DERIVED_DOMAIN_PREFIX_LENGTH = 41;\n\n// Cognito rejects domains containing these substrings (\"Domain cannot contain reserved word\").\nconst COGNITO_DOMAIN_RESERVED_WORDS = ['aws', 'amazon', 'cognito'];\n\nexport const deriveCognitoDomainPrefix = (\n npmScope: string | undefined,\n projectName: string,\n): string => {\n const projectWithoutScope = projectName.includes('/')\n ? projectName.split('/').pop()!\n : projectName;\n const kebab = kebabCase(\n [npmScope, projectWithoutScope].filter(Boolean).join('-'),\n );\n const stripped = COGNITO_DOMAIN_RESERVED_WORDS.reduce(\n (s, word) => s.replaceAll(word, ''),\n kebab,\n );\n const candidate = stripped\n .replace(/-+/g, '-')\n .replace(/^-|-$/g, '')\n .slice(0, MAX_DERIVED_DOMAIN_PREFIX_LENGTH)\n .replace(/-$/, '');\n if (!candidate) {\n throw new Error(\n `Unable to derive a valid Cognito domain prefix from scope \"${npmScope ?? ''}\" and project \"${projectName}\". Please specify a cognitoDomain explicitly.`,\n );\n }\n return candidate;\n};\n\n// Adds a user greeting and sign-out button to the default AppLayout header when using the None UX provider.\nexport async function addNoneAuthMenu(tree: Tree, appLayoutTsxPath: string) {\n await applyGritQL(tree, appLayoutTsxPath, readGritPattern('none-auth-menu'));\n}\n\n// Adds a top navigation dropdown with sign-out when using the Cloudscape UX provider.\nexport async function addCloudscapeAuthMenu(\n tree: Tree,\n appLayoutTsxPath: string,\n) {\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('cloudscape-auth-menu'),\n );\n}\n\nexport async function addShadcnAuthMenu(tree: Tree, appLayoutTsxPath: string) {\n if (!tree.exists(appLayoutTsxPath)) {\n throw new Error(`Expected top nav component at ${appLayoutTsxPath}`);\n }\n\n // Prepend state declarations to the AppLayout component body\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('shadcn-state-declarations'),\n );\n\n // Add useEffect, useRef, useState imports from react\n await addDestructuredImport(\n tree,\n appLayoutTsxPath,\n ['useEffect', 'useRef', 'useState'],\n 'react',\n );\n\n // Append the auth menu to the header element\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('shadcn-auth-menu'),\n );\n}\n"],"names":["readFileSync","join","addDestructuredImport","applyGritQL","kebabCase","readGritPattern","name","dirname","trim","MAX_DERIVED_DOMAIN_PREFIX_LENGTH","COGNITO_DOMAIN_RESERVED_WORDS","deriveCognitoDomainPrefix","npmScope","projectName","projectWithoutScope","includes","split","pop","kebab","filter","Boolean","stripped","reduce","s","word","replaceAll","candidate","replace","slice","Error","addNoneAuthMenu","tree","appLayoutTsxPath","addCloudscapeAuthMenu","addShadcnAuthMenu","exists"],"mappings":"AAAA;;;CAGC,GAED,SAASA,YAAY,QAAQ,KAAK;AAClC,SAASC,IAAI,QAAQ,OAAO;AAC5B,SAASC,qBAAqB,EAAEC,WAAW,QAAQ,wBAAwB;AAC3E,SAASC,SAAS,QAAQ,0BAA0B;AAEpD,MAAMC,kBAAkB,CAACC,OACvBN,aACEC,KAAK,YAAYM,OAAO,EAAE,QAAQ,GAAGD,KAAK,KAAK,CAAC,GAChD,SACAE,IAAI;AAER,4HAA4H;AAC5H,MAAMC,mCAAmC;AAEzC,+FAA+F;AAC/F,MAAMC,gCAAgC;IAAC;IAAO;IAAU;CAAU;AAElE,OAAO,MAAMC,4BAA4B,CACvCC,UACAC;IAEA,MAAMC,sBAAsBD,YAAYE,QAAQ,CAAC,OAC7CF,YAAYG,KAAK,CAAC,KAAKC,GAAG,KAC1BJ;IACJ,MAAMK,QAAQd,UACZ;QAACQ;QAAUE;KAAoB,CAACK,MAAM,CAACC,SAASnB,IAAI,CAAC;IAEvD,MAAMoB,WAAWX,8BAA8BY,MAAM,CACnD,CAACC,GAAGC,OAASD,EAAEE,UAAU,CAACD,MAAM,KAChCN;IAEF,MAAMQ,YAAYL,SACfM,OAAO,CAAC,OAAO,KACfA,OAAO,CAAC,UAAU,IAClBC,KAAK,CAAC,GAAGnB,kCACTkB,OAAO,CAAC,MAAM;IACjB,IAAI,CAACD,WAAW;QACd,MAAM,IAAIG,MACR,CAAC,2DAA2D,EAAEjB,YAAY,GAAG,eAAe,EAAEC,YAAY,6CAA6C,CAAC;IAE5J;IACA,OAAOa;AACT,EAAE;AAEF,4GAA4G;AAC5G,OAAO,eAAeI,gBAAgBC,IAAU,EAAEC,gBAAwB;IACxE,MAAM7B,YAAY4B,MAAMC,kBAAkB3B,gBAAgB;AAC5D;AAEA,sFAAsF;AACtF,OAAO,eAAe4B,sBACpBF,IAAU,EACVC,gBAAwB;IAExB,MAAM7B,YACJ4B,MACAC,kBACA3B,gBAAgB;AAEpB;AAEA,OAAO,eAAe6B,kBAAkBH,IAAU,EAAEC,gBAAwB;IAC1E,IAAI,CAACD,KAAKI,MAAM,CAACH,mBAAmB;QAClC,MAAM,IAAIH,MAAM,CAAC,8BAA8B,EAAEG,kBAAkB;IACrE;IAEA,6DAA6D;IAC7D,MAAM7B,YACJ4B,MACAC,kBACA3B,gBAAgB;IAGlB,qDAAqD;IACrD,MAAMH,sBACJ6B,MACAC,kBACA;QAAC;QAAa;QAAU;KAAW,EACnC;IAGF,6CAA6C;IAC7C,MAAM7B,YACJ4B,MACAC,kBACA3B,gBAAgB;AAEpB"}
@@ -3,7 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { type Tree } from '@nx/devkit';
6
- import { type NxGeneratorInfo } from '../../../utils/nx';
6
+ import { type NxGeneratorInfo } from '../../../utils/nx.js';
7
7
  import type { RuntimeConfigGeneratorSchema } from './schema';
8
8
  export declare const RUNTIME_CONFIG_GENERATOR_INFO: NxGeneratorInfo;
9
9
  export declare function runtimeConfigGenerator(tree: Tree, options: RuntimeConfigGeneratorSchema): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/runtime-config/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { addSingleImport, applyGritQL, matchGritQL } from '../../../utils/ast';\nimport { addHookResultToRouterProviderContext } from '../../../utils/ast/website';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport { getNpmScopePrefix } from '../../../utils/npm-scope';\nimport {\n addComponentGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { toProjectRelativePath } from '../../../utils/paths';\nimport type { RuntimeConfigGeneratorSchema } from './schema';\n\nexport const RUNTIME_CONFIG_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function runtimeConfigGenerator(\n tree: Tree,\n options: RuntimeConfigGeneratorSchema,\n) {\n const projectConfig = readProjectConfigurationUnqualified(\n tree,\n options.project,\n );\n const srcRoot = projectConfig.sourceRoot;\n const mainTsxPath = joinPathFragments(srcRoot, 'main.tsx');\n if (!tree.exists(mainTsxPath)) {\n throw new Error(\n `Can only run this generator on a project which contains ${mainTsxPath}`,\n );\n }\n\n const runtimeConfigPath = joinPathFragments(\n srcRoot,\n 'components',\n 'RuntimeConfig',\n 'index.tsx',\n );\n if (tree.exists(runtimeConfigPath)) {\n console.debug('Runtime config already exists, skipping generation');\n return;\n }\n\n const npmScopePrefix = getNpmScopePrefix(tree);\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'app'),\n srcRoot,\n {\n ...options,\n npmScopePrefix,\n scopeAlias: npmScopePrefix,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Only add RuntimeConfigProvider wrapper and import if not already present in JSX\n const alreadyWrapped = await matchGritQL(\n tree,\n mainTsxPath,\n '`<RuntimeConfigProvider>$_</RuntimeConfigProvider>`',\n );\n if (!alreadyWrapped) {\n await addSingleImport(\n tree,\n mainTsxPath,\n 'RuntimeConfigProvider',\n './components/RuntimeConfig',\n );\n\n const wrapped = await applyGritQL(\n tree,\n mainTsxPath,\n '`<App />` => `<RuntimeConfigProvider><App /></RuntimeConfigProvider>`',\n );\n\n if (!wrapped) {\n throw new Error('Could not locate the App element in main.tsx');\n }\n }\n\n await addHookResultToRouterProviderContext(tree, mainTsxPath, {\n hook: 'useRuntimeConfig',\n module: './hooks/useRuntimeConfig',\n contextProp: 'runtimeConfig',\n });\n\n addComponentGeneratorMetadata(\n tree,\n options.project,\n RUNTIME_CONFIG_GENERATOR_INFO,\n toProjectRelativePath(\n projectConfig,\n joinPathFragments(srcRoot, 'components', 'RuntimeConfig'),\n ),\n );\n\n await addGeneratorMetricsIfApplicable(tree, [RUNTIME_CONFIG_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n}\nexport default runtimeConfigGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addSingleImport","applyGritQL","matchGritQL","addHookResultToRouterProviderContext","formatFilesInSubtree","addGeneratorMetricsIfApplicable","getNpmScopePrefix","addComponentGeneratorMetadata","getGeneratorInfo","readProjectConfigurationUnqualified","toProjectRelativePath","RUNTIME_CONFIG_GENERATOR_INFO","filename","runtimeConfigGenerator","tree","options","projectConfig","project","srcRoot","sourceRoot","mainTsxPath","exists","Error","runtimeConfigPath","console","debug","npmScopePrefix","dirname","scopeAlias","overwriteStrategy","KeepExisting","alreadyWrapped","wrapped","hook","module","contextProp"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AACpB,SAASC,eAAe,EAAEC,WAAW,EAAEC,WAAW,QAAQ,wBAAqB;AAC/E,SAASC,oCAAoC,QAAQ,gCAA6B;AAClF,SAASC,oBAAoB,QAAQ,2BAAwB;AAC7D,SAASC,+BAA+B,QAAQ,4BAAyB;AACzE,SAASC,iBAAiB,QAAQ,8BAA2B;AAC7D,SACEC,6BAA6B,EAC7BC,gBAAgB,EAEhBC,mCAAmC,QAC9B,uBAAoB;AAC3B,SAASC,qBAAqB,QAAQ,0BAAuB;AAG7D,OAAO,MAAMC,gCAAiDH,iBAC5D,YAAYI,QAAQ,EACpB;AAEF,OAAO,eAAeC,uBACpBC,IAAU,EACVC,OAAqC;IAErC,MAAMC,gBAAgBP,oCACpBK,MACAC,QAAQE,OAAO;IAEjB,MAAMC,UAAUF,cAAcG,UAAU;IACxC,MAAMC,cAActB,kBAAkBoB,SAAS;IAC/C,IAAI,CAACJ,KAAKO,MAAM,CAACD,cAAc;QAC7B,MAAM,IAAIE,MACR,CAAC,wDAAwD,EAAEF,aAAa;IAE5E;IAEA,MAAMG,oBAAoBzB,kBACxBoB,SACA,cACA,iBACA;IAEF,IAAIJ,KAAKO,MAAM,CAACE,oBAAoB;QAClCC,QAAQC,KAAK,CAAC;QACd;IACF;IAEA,MAAMC,iBAAiBpB,kBAAkBQ;IACzCjB,cACEiB,MACAhB,kBAAkB,YAAY6B,OAAO,EAAE,SAAS,QAChDT,SACA;QACE,GAAGH,OAAO;QACVW;QACAE,YAAYF;IACd,GACA;QACEG,mBAAmB9B,kBAAkB+B,YAAY;IACnD;IAGF,kFAAkF;IAClF,MAAMC,iBAAiB,MAAM7B,YAC3BY,MACAM,aACA;IAEF,IAAI,CAACW,gBAAgB;QACnB,MAAM/B,gBACJc,MACAM,aACA,yBACA;QAGF,MAAMY,UAAU,MAAM/B,YACpBa,MACAM,aACA;QAGF,IAAI,CAACY,SAAS;YACZ,MAAM,IAAIV,MAAM;QAClB;IACF;IAEA,MAAMnB,qCAAqCW,MAAMM,aAAa;QAC5Da,MAAM;QACNC,QAAQ;QACRC,aAAa;IACf;IAEA5B,8BACEO,MACAC,QAAQE,OAAO,EACfN,+BACAD,sBACEM,eACAlB,kBAAkBoB,SAAS,cAAc;IAI7C,MAAMb,gCAAgCS,MAAM;QAACH;KAA8B;IAE3E,MAAMP,qBAAqBU;AAC7B;AACA,eAAeD,uBAAuB"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/runtime-config/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport {\n addSingleImport,\n applyGritQL,\n matchGritQL,\n} from '../../../utils/ast.js';\nimport { addHookResultToRouterProviderContext } from '../../../utils/ast/website.js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics.js';\nimport { getNpmScopePrefix } from '../../../utils/npm-scope.js';\nimport {\n addComponentGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx.js';\nimport { toProjectRelativePath } from '../../../utils/paths.js';\nimport type { RuntimeConfigGeneratorSchema } from './schema';\n\nexport const RUNTIME_CONFIG_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function runtimeConfigGenerator(\n tree: Tree,\n options: RuntimeConfigGeneratorSchema,\n) {\n const projectConfig = readProjectConfigurationUnqualified(\n tree,\n options.project,\n );\n const srcRoot = projectConfig.sourceRoot;\n const mainTsxPath = joinPathFragments(srcRoot, 'main.tsx');\n if (!tree.exists(mainTsxPath)) {\n throw new Error(\n `Can only run this generator on a project which contains ${mainTsxPath}`,\n );\n }\n\n const runtimeConfigPath = joinPathFragments(\n srcRoot,\n 'components',\n 'RuntimeConfig',\n 'index.tsx',\n );\n if (tree.exists(runtimeConfigPath)) {\n console.debug('Runtime config already exists, skipping generation');\n return;\n }\n\n const npmScopePrefix = getNpmScopePrefix(tree);\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'app'),\n srcRoot,\n {\n ...options,\n npmScopePrefix,\n scopeAlias: npmScopePrefix,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Only add RuntimeConfigProvider wrapper and import if not already present in JSX\n const alreadyWrapped = await matchGritQL(\n tree,\n mainTsxPath,\n '`<RuntimeConfigProvider>$_</RuntimeConfigProvider>`',\n );\n if (!alreadyWrapped) {\n await addSingleImport(\n tree,\n mainTsxPath,\n 'RuntimeConfigProvider',\n './components/RuntimeConfig',\n );\n\n const wrapped = await applyGritQL(\n tree,\n mainTsxPath,\n '`<App />` => `<RuntimeConfigProvider><App /></RuntimeConfigProvider>`',\n );\n\n if (!wrapped) {\n throw new Error('Could not locate the App element in main.tsx');\n }\n }\n\n await addHookResultToRouterProviderContext(tree, mainTsxPath, {\n hook: 'useRuntimeConfig',\n module: './hooks/useRuntimeConfig',\n contextProp: 'runtimeConfig',\n });\n\n addComponentGeneratorMetadata(\n tree,\n options.project,\n RUNTIME_CONFIG_GENERATOR_INFO,\n toProjectRelativePath(\n projectConfig,\n joinPathFragments(srcRoot, 'components', 'RuntimeConfig'),\n ),\n );\n\n await addGeneratorMetricsIfApplicable(tree, [RUNTIME_CONFIG_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n}\nexport default runtimeConfigGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addSingleImport","applyGritQL","matchGritQL","addHookResultToRouterProviderContext","formatFilesInSubtree","addGeneratorMetricsIfApplicable","getNpmScopePrefix","addComponentGeneratorMetadata","getGeneratorInfo","readProjectConfigurationUnqualified","toProjectRelativePath","RUNTIME_CONFIG_GENERATOR_INFO","filename","runtimeConfigGenerator","tree","options","projectConfig","project","srcRoot","sourceRoot","mainTsxPath","exists","Error","runtimeConfigPath","console","debug","npmScopePrefix","dirname","scopeAlias","overwriteStrategy","KeepExisting","alreadyWrapped","wrapped","hook","module","contextProp"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AACpB,SACEC,eAAe,EACfC,WAAW,EACXC,WAAW,QACN,wBAAwB;AAC/B,SAASC,oCAAoC,QAAQ,gCAAgC;AACrF,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,+BAA+B,QAAQ,4BAA4B;AAC5E,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SACEC,6BAA6B,EAC7BC,gBAAgB,EAEhBC,mCAAmC,QAC9B,uBAAuB;AAC9B,SAASC,qBAAqB,QAAQ,0BAA0B;AAGhE,OAAO,MAAMC,gCAAiDH,iBAC5D,YAAYI,QAAQ,EACpB;AAEF,OAAO,eAAeC,uBACpBC,IAAU,EACVC,OAAqC;IAErC,MAAMC,gBAAgBP,oCACpBK,MACAC,QAAQE,OAAO;IAEjB,MAAMC,UAAUF,cAAcG,UAAU;IACxC,MAAMC,cAActB,kBAAkBoB,SAAS;IAC/C,IAAI,CAACJ,KAAKO,MAAM,CAACD,cAAc;QAC7B,MAAM,IAAIE,MACR,CAAC,wDAAwD,EAAEF,aAAa;IAE5E;IAEA,MAAMG,oBAAoBzB,kBACxBoB,SACA,cACA,iBACA;IAEF,IAAIJ,KAAKO,MAAM,CAACE,oBAAoB;QAClCC,QAAQC,KAAK,CAAC;QACd;IACF;IAEA,MAAMC,iBAAiBpB,kBAAkBQ;IACzCjB,cACEiB,MACAhB,kBAAkB,YAAY6B,OAAO,EAAE,SAAS,QAChDT,SACA;QACE,GAAGH,OAAO;QACVW;QACAE,YAAYF;IACd,GACA;QACEG,mBAAmB9B,kBAAkB+B,YAAY;IACnD;IAGF,kFAAkF;IAClF,MAAMC,iBAAiB,MAAM7B,YAC3BY,MACAM,aACA;IAEF,IAAI,CAACW,gBAAgB;QACnB,MAAM/B,gBACJc,MACAM,aACA,yBACA;QAGF,MAAMY,UAAU,MAAM/B,YACpBa,MACAM,aACA;QAGF,IAAI,CAACY,SAAS;YACZ,MAAM,IAAIV,MAAM;QAClB;IACF;IAEA,MAAMnB,qCAAqCW,MAAMM,aAAa;QAC5Da,MAAM;QACNC,QAAQ;QACRC,aAAa;IACf;IAEA5B,8BACEO,MACAC,QAAQE,OAAO,EACfN,+BACAD,sBACEM,eACAlB,kBAAkBoB,SAAS,cAAc;IAI7C,MAAMb,gCAAgCS,MAAM;QAACH;KAA8B;IAE3E,MAAMP,qBAAqBU;AAC7B;AACA,eAAeD,uBAAuB"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { type Tree } from '@nx/devkit';
6
6
  import type { SyncGeneratorResult } from 'nx/src/utils/sync-generators';
7
- import { type NxGeneratorInfo } from '../../utils/nx';
7
+ import { type NxGeneratorInfo } from '../../utils/nx.js';
8
8
  export declare const TS_SYNC_GENERATOR_INFO: NxGeneratorInfo;
9
9
  export declare const SYNC_GENERATOR_NAME: string;
10
10
  export declare const tsSyncGeneratorGenerator: (tree: Tree) => Promise<SyncGeneratorResult>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/sync/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n createProjectGraphAsync,\n getProjects,\n joinPathFragments,\n type ProjectGraph,\n readJson,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport type { SyncGeneratorResult } from 'nx/src/utils/sync-generators';\nimport { relative } from 'path';\nimport PackageJson from '../../../package.json' with { type: 'json' };\nimport { getLocalDependencySpecifier } from '../../utils/dependencies';\nimport { getGeneratorInfo, type NxGeneratorInfo } from '../../utils/nx';\n\nexport const TS_SYNC_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const SYNC_GENERATOR_NAME = `${PackageJson.name}:${TS_SYNC_GENERATOR_INFO.id}`;\n\nexport const tsSyncGeneratorGenerator = async (\n tree: Tree,\n): Promise<SyncGeneratorResult> => {\n const basePaths = readBaseTsConfigPaths(tree);\n\n if (!basePaths) {\n return {};\n }\n\n const changesByConfigFile: Record<string, PathChange[]> = {};\n\n for (const project of getProjects(tree).values()) {\n for (const tsConfigFileName of [\n 'tsconfig.json',\n 'tsconfig.lib.json',\n 'tsconfig.app.json',\n ]) {\n const tsConfigPath = joinPathFragments(project.root, tsConfigFileName);\n if (!tree.exists(tsConfigPath)) {\n continue;\n }\n\n const { changes, updated } = syncPathsWithBase(\n tree,\n tsConfigPath,\n basePaths,\n project.root,\n );\n\n if (updated) {\n changesByConfigFile[tsConfigPath] = changes;\n }\n }\n }\n\n const localSpecifier = getLocalDependencySpecifier(tree);\n const localDepChanges = await syncLocalProjectDependencies(\n tree,\n localSpecifier,\n );\n\n const messages: string[] = [];\n if (Object.keys(changesByConfigFile).length > 0) {\n messages.push(buildOutOfSyncMessage(changesByConfigFile));\n }\n if (Object.keys(localDepChanges).length > 0) {\n messages.push(\n buildLocalDepOutOfSyncMessage(localDepChanges, localSpecifier),\n );\n }\n\n if (messages.length === 0) {\n return {};\n }\n\n return {\n outOfSyncMessage: messages.join('\\n\\n'),\n };\n};\n\n/**\n * Declare each project's local workspace dependencies in its own package.json\n * so `noUndeclaredDependencies` passes. Edges come from the Nx project graph\n * (the same import analysis `@nx/js:typescript-sync` uses). Returns the\n * packages added per project manifest.\n */\nconst syncLocalProjectDependencies = async (\n tree: Tree,\n localSpecifier: string,\n): Promise<Record<string, string[]>> => {\n const projectGraph = await createProjectGraphAsync();\n\n const projectInfoByName = collectProjectInfo(tree, projectGraph);\n\n const addedByManifest: Record<string, string[]> = {};\n\n for (const [projectName, info] of projectInfoByName) {\n // Local workspace projects this one depends on (excludes external packages\n // and implicit edges).\n const dependencyNames = (projectGraph.dependencies[projectName] ?? [])\n .filter(\n (dep) =>\n dep.type !== 'implicit' &&\n projectInfoByName.has(dep.target) &&\n dep.target !== projectName,\n )\n .map((dep) => projectInfoByName.get(dep.target)!.packageName);\n\n if (dependencyNames.length === 0) {\n continue;\n }\n\n const added: string[] = [];\n updateJson(tree, info.packageJsonPath, (json) => {\n const dependencies = { ...(json.dependencies ?? {}) };\n const devDependencies = json.devDependencies ?? {};\n for (const name of [...new Set(dependencyNames)].sort()) {\n // Already declared in either list — leave as-is.\n if (dependencies[name] || devDependencies[name]) {\n continue;\n }\n dependencies[name] = localSpecifier;\n added.push(name);\n }\n return added.length > 0 ? { ...json, dependencies } : json;\n });\n\n if (added.length > 0) {\n addedByManifest[info.packageJsonPath] = added;\n }\n }\n\n return addedByManifest;\n};\n\ninterface ProjectInfo {\n packageName: string;\n packageJsonPath: string;\n}\n\n/**\n * Index workspace projects with a named package.json by project name, so graph\n * edges (keyed by project name) resolve to the manifest to declare the dep in.\n */\nconst collectProjectInfo = (\n tree: Tree,\n projectGraph: ProjectGraph,\n): Map<string, ProjectInfo> => {\n const infoByName = new Map<string, ProjectInfo>();\n for (const [name, node] of Object.entries(projectGraph.nodes)) {\n const root = node.data.root;\n if (!root) {\n continue;\n }\n const packageJsonPath = joinPathFragments(root, 'package.json');\n if (!tree.exists(packageJsonPath)) {\n continue;\n }\n const packageName = readJson<{ name?: string }>(tree, packageJsonPath).name;\n if (packageName) {\n infoByName.set(name, { packageName, packageJsonPath });\n }\n }\n return infoByName;\n};\n\nconst buildLocalDepOutOfSyncMessage = (\n addedByManifest: Record<string, string[]>,\n localSpecifier: string,\n): string =>\n `Local project dependencies are out of sync. The following workspace dependencies will be declared:\\n${Object.entries(\n addedByManifest,\n )\n .map(\n ([manifest, names]) =>\n `${manifest}:\\n${names\n .map((name) => `- ${name}: ${localSpecifier}`)\n .join('\\n')}`,\n )\n .join('\\n\\n')}`;\n\nexport default tsSyncGeneratorGenerator;\n\nconst readBaseTsConfigPaths = (\n tree: Tree,\n): Record<string, string[]> | undefined => {\n const baseConfigPath = ['tsconfig.base.json', 'tsconfig.json'].find((path) =>\n tree.exists(path),\n );\n\n if (!baseConfigPath) {\n return undefined;\n }\n\n const baseConfigJson = readJson<Record<string, any>>(tree, baseConfigPath);\n return baseConfigJson?.compilerOptions?.paths ?? {};\n};\n\ntype PathChangeType = 'added' | 'updated';\n\ntype PathChange = {\n alias: string;\n type: PathChangeType;\n};\n\nconst arePathArraysEqual = (first: string[], second: string[]): boolean => {\n if (first.length !== second.length) {\n return false;\n }\n\n return first.every((value, index) => value === second[index]);\n};\n\n/**\n * Rebase a path from the workspace root to a project root.\n * e.g. \"./packages/foo/src/index.ts\" from project \"packages/bar\"\n * becomes \"../../packages/foo/src/index.ts\"\n */\nconst rebasePath = (pathValue: string, projectRoot: string): string => {\n // Strip leading ./ if present\n const normalized = pathValue.startsWith('./')\n ? pathValue.slice(2)\n : pathValue;\n const relPrefix = relative(projectRoot, '.') || '.';\n return joinPathFragments(relPrefix, normalized);\n};\n\nconst syncPathsWithBase = (\n tree: Tree,\n tsConfigPath: string,\n basePaths: Record<string, string[]>,\n projectRoot: string,\n): { updated: boolean; changes: PathChange[] } => {\n const changes: PathChange[] = [];\n\n const tsConfigJson = readJson(tree, tsConfigPath);\n const paths = tsConfigJson?.compilerOptions?.paths;\n\n if (!paths) {\n return { updated: false, changes };\n }\n\n const updatedAliases: Record<string, string[]> = {\n ...(tsConfigJson.compilerOptions?.paths ?? {}),\n };\n let updated = false;\n\n // Add or update aliases that exist in the base config, rebasing paths\n // relative to the project root since baseUrl is no longer set\n for (const [alias, baseValue] of Object.entries(basePaths)) {\n const rebasedValue = (baseValue as string[]).map((p) =>\n rebasePath(p, projectRoot),\n );\n const existingValue = updatedAliases[alias];\n if (!existingValue) {\n changes.push({ alias, type: 'added' });\n updated = true;\n } else if (!arePathArraysEqual(existingValue, rebasedValue)) {\n changes.push({ alias, type: 'updated' });\n updated = true;\n }\n\n updatedAliases[alias] = rebasedValue;\n }\n\n if (updated) {\n updateJson(tree, tsConfigPath, (json) => ({\n ...json,\n compilerOptions: {\n ...json.compilerOptions,\n paths: updatedAliases,\n },\n }));\n }\n\n return { updated, changes };\n};\n\n/**\n * Build the message to display when the sync generator would make changes to the tree\n */\nconst buildOutOfSyncMessage = (\n changesByConfig: Record<string, PathChange[]>,\n): string =>\n `TypeScript path aliases are out of sync with the base tsconfig. The following configs will be updated:\\n${Object.entries(\n changesByConfig,\n )\n .map(\n ([config, changes]) =>\n `${config}:\\n${changes\n .slice()\n .sort((left, right) => left.alias.localeCompare(right.alias))\n .map(({ alias, type }) => `- ${alias} (${type})`)\n .join('\\n')}`,\n )\n .join('\\n\\n')}`;\n"],"names":["createProjectGraphAsync","getProjects","joinPathFragments","readJson","updateJson","relative","PackageJson","type","getLocalDependencySpecifier","getGeneratorInfo","TS_SYNC_GENERATOR_INFO","filename","SYNC_GENERATOR_NAME","name","id","tsSyncGeneratorGenerator","tree","basePaths","readBaseTsConfigPaths","changesByConfigFile","project","values","tsConfigFileName","tsConfigPath","root","exists","changes","updated","syncPathsWithBase","localSpecifier","localDepChanges","syncLocalProjectDependencies","messages","Object","keys","length","push","buildOutOfSyncMessage","buildLocalDepOutOfSyncMessage","outOfSyncMessage","join","projectGraph","projectInfoByName","collectProjectInfo","addedByManifest","projectName","info","dependencyNames","dependencies","filter","dep","has","target","map","get","packageName","added","packageJsonPath","json","devDependencies","Set","sort","infoByName","Map","node","entries","nodes","data","set","manifest","names","baseConfigPath","find","path","undefined","baseConfigJson","compilerOptions","paths","arePathArraysEqual","first","second","every","value","index","rebasePath","pathValue","projectRoot","normalized","startsWith","slice","relPrefix","tsConfigJson","updatedAliases","alias","baseValue","rebasedValue","p","existingValue","changesByConfig","config","left","right","localeCompare"],"mappings":"AAAA;;;CAGC,GAED,SACEA,uBAAuB,EACvBC,WAAW,EACXC,iBAAiB,EAEjBC,QAAQ,EAERC,UAAU,QACL,aAAa;AAEpB,SAASC,QAAQ,QAAQ,OAAO;AAChC,OAAOC,iBAAiB,6BAA6B;IAAEC,MAAM;AAAO,EAAE;AACtE,SAASC,2BAA2B,QAAQ,8BAA2B;AACvE,SAASC,gBAAgB,QAA8B,oBAAiB;AAExE,OAAO,MAAMC,yBAA0CD,iBACrD,YAAYE,QAAQ,EACpB;AAEF,OAAO,MAAMC,sBAAsB,GAAGN,YAAYO,IAAI,CAAC,CAAC,EAAEH,uBAAuBI,EAAE,EAAE,CAAC;AAEtF,OAAO,MAAMC,2BAA2B,OACtCC;IAEA,MAAMC,YAAYC,sBAAsBF;IAExC,IAAI,CAACC,WAAW;QACd,OAAO,CAAC;IACV;IAEA,MAAME,sBAAoD,CAAC;IAE3D,KAAK,MAAMC,WAAWnB,YAAYe,MAAMK,MAAM,GAAI;QAChD,KAAK,MAAMC,oBAAoB;YAC7B;YACA;YACA;SACD,CAAE;YACD,MAAMC,eAAerB,kBAAkBkB,QAAQI,IAAI,EAAEF;YACrD,IAAI,CAACN,KAAKS,MAAM,CAACF,eAAe;gBAC9B;YACF;YAEA,MAAM,EAAEG,OAAO,EAAEC,OAAO,EAAE,GAAGC,kBAC3BZ,MACAO,cACAN,WACAG,QAAQI,IAAI;YAGd,IAAIG,SAAS;gBACXR,mBAAmB,CAACI,aAAa,GAAGG;YACtC;QACF;IACF;IAEA,MAAMG,iBAAiBrB,4BAA4BQ;IACnD,MAAMc,kBAAkB,MAAMC,6BAC5Bf,MACAa;IAGF,MAAMG,WAAqB,EAAE;IAC7B,IAAIC,OAAOC,IAAI,CAACf,qBAAqBgB,MAAM,GAAG,GAAG;QAC/CH,SAASI,IAAI,CAACC,sBAAsBlB;IACtC;IACA,IAAIc,OAAOC,IAAI,CAACJ,iBAAiBK,MAAM,GAAG,GAAG;QAC3CH,SAASI,IAAI,CACXE,8BAA8BR,iBAAiBD;IAEnD;IAEA,IAAIG,SAASG,MAAM,KAAK,GAAG;QACzB,OAAO,CAAC;IACV;IAEA,OAAO;QACLI,kBAAkBP,SAASQ,IAAI,CAAC;IAClC;AACF,EAAE;AAEF;;;;;CAKC,GACD,MAAMT,+BAA+B,OACnCf,MACAa;IAEA,MAAMY,eAAe,MAAMzC;IAE3B,MAAM0C,oBAAoBC,mBAAmB3B,MAAMyB;IAEnD,MAAMG,kBAA4C,CAAC;IAEnD,KAAK,MAAM,CAACC,aAAaC,KAAK,IAAIJ,kBAAmB;QACnD,2EAA2E;QAC3E,uBAAuB;QACvB,MAAMK,kBAAkB,AAACN,CAAAA,aAAaO,YAAY,CAACH,YAAY,IAAI,EAAE,AAAD,EACjEI,MAAM,CACL,CAACC,MACCA,IAAI3C,IAAI,KAAK,cACbmC,kBAAkBS,GAAG,CAACD,IAAIE,MAAM,KAChCF,IAAIE,MAAM,KAAKP,aAElBQ,GAAG,CAAC,CAACH,MAAQR,kBAAkBY,GAAG,CAACJ,IAAIE,MAAM,EAAGG,WAAW;QAE9D,IAAIR,gBAAgBZ,MAAM,KAAK,GAAG;YAChC;QACF;QAEA,MAAMqB,QAAkB,EAAE;QAC1BpD,WAAWY,MAAM8B,KAAKW,eAAe,EAAE,CAACC;YACtC,MAAMV,eAAe;gBAAE,GAAIU,KAAKV,YAAY,IAAI,CAAC,CAAC;YAAE;YACpD,MAAMW,kBAAkBD,KAAKC,eAAe,IAAI,CAAC;YACjD,KAAK,MAAM9C,QAAQ;mBAAI,IAAI+C,IAAIb;aAAiB,CAACc,IAAI,GAAI;gBACvD,iDAAiD;gBACjD,IAAIb,YAAY,CAACnC,KAAK,IAAI8C,eAAe,CAAC9C,KAAK,EAAE;oBAC/C;gBACF;gBACAmC,YAAY,CAACnC,KAAK,GAAGgB;gBACrB2B,MAAMpB,IAAI,CAACvB;YACb;YACA,OAAO2C,MAAMrB,MAAM,GAAG,IAAI;gBAAE,GAAGuB,IAAI;gBAAEV;YAAa,IAAIU;QACxD;QAEA,IAAIF,MAAMrB,MAAM,GAAG,GAAG;YACpBS,eAAe,CAACE,KAAKW,eAAe,CAAC,GAAGD;QAC1C;IACF;IAEA,OAAOZ;AACT;AAOA;;;CAGC,GACD,MAAMD,qBAAqB,CACzB3B,MACAyB;IAEA,MAAMqB,aAAa,IAAIC;IACvB,KAAK,MAAM,CAAClD,MAAMmD,KAAK,IAAI/B,OAAOgC,OAAO,CAACxB,aAAayB,KAAK,EAAG;QAC7D,MAAM1C,OAAOwC,KAAKG,IAAI,CAAC3C,IAAI;QAC3B,IAAI,CAACA,MAAM;YACT;QACF;QACA,MAAMiC,kBAAkBvD,kBAAkBsB,MAAM;QAChD,IAAI,CAACR,KAAKS,MAAM,CAACgC,kBAAkB;YACjC;QACF;QACA,MAAMF,cAAcpD,SAA4Ba,MAAMyC,iBAAiB5C,IAAI;QAC3E,IAAI0C,aAAa;YACfO,WAAWM,GAAG,CAACvD,MAAM;gBAAE0C;gBAAaE;YAAgB;QACtD;IACF;IACA,OAAOK;AACT;AAEA,MAAMxB,gCAAgC,CACpCM,iBACAf,iBAEA,CAAC,oGAAoG,EAAEI,OAAOgC,OAAO,CACnHrB,iBAECS,GAAG,CACF,CAAC,CAACgB,UAAUC,MAAM,GAChB,GAAGD,SAAS,GAAG,EAAEC,MACdjB,GAAG,CAAC,CAACxC,OAAS,CAAC,EAAE,EAAEA,KAAK,EAAE,EAAEgB,gBAAgB,EAC5CW,IAAI,CAAC,OAAO,EAElBA,IAAI,CAAC,SAAS;AAEnB,eAAezB,yBAAyB;AAExC,MAAMG,wBAAwB,CAC5BF;IAEA,MAAMuD,iBAAiB;QAAC;QAAsB;KAAgB,CAACC,IAAI,CAAC,CAACC,OACnEzD,KAAKS,MAAM,CAACgD;IAGd,IAAI,CAACF,gBAAgB;QACnB,OAAOG;IACT;IAEA,MAAMC,iBAAiBxE,SAA8Ba,MAAMuD;IAC3D,OAAOI,gBAAgBC,iBAAiBC,SAAS,CAAC;AACpD;AASA,MAAMC,qBAAqB,CAACC,OAAiBC;IAC3C,IAAID,MAAM5C,MAAM,KAAK6C,OAAO7C,MAAM,EAAE;QAClC,OAAO;IACT;IAEA,OAAO4C,MAAME,KAAK,CAAC,CAACC,OAAOC,QAAUD,UAAUF,MAAM,CAACG,MAAM;AAC9D;AAEA;;;;CAIC,GACD,MAAMC,aAAa,CAACC,WAAmBC;IACrC,8BAA8B;IAC9B,MAAMC,aAAaF,UAAUG,UAAU,CAAC,QACpCH,UAAUI,KAAK,CAAC,KAChBJ;IACJ,MAAMK,YAAYrF,SAASiF,aAAa,QAAQ;IAChD,OAAOpF,kBAAkBwF,WAAWH;AACtC;AAEA,MAAM3D,oBAAoB,CACxBZ,MACAO,cACAN,WACAqE;IAEA,MAAM5D,UAAwB,EAAE;IAEhC,MAAMiE,eAAexF,SAASa,MAAMO;IACpC,MAAMsD,QAAQc,cAAcf,iBAAiBC;IAE7C,IAAI,CAACA,OAAO;QACV,OAAO;YAAElD,SAAS;YAAOD;QAAQ;IACnC;IAEA,MAAMkE,iBAA2C;QAC/C,GAAID,aAAaf,eAAe,EAAEC,SAAS,CAAC,CAAC;IAC/C;IACA,IAAIlD,UAAU;IAEd,sEAAsE;IACtE,8DAA8D;IAC9D,KAAK,MAAM,CAACkE,OAAOC,UAAU,IAAI7D,OAAOgC,OAAO,CAAChD,WAAY;QAC1D,MAAM8E,eAAe,AAACD,UAAuBzC,GAAG,CAAC,CAAC2C,IAChDZ,WAAWY,GAAGV;QAEhB,MAAMW,gBAAgBL,cAAc,CAACC,MAAM;QAC3C,IAAI,CAACI,eAAe;YAClBvE,QAAQU,IAAI,CAAC;gBAAEyD;gBAAOtF,MAAM;YAAQ;YACpCoB,UAAU;QACZ,OAAO,IAAI,CAACmD,mBAAmBmB,eAAeF,eAAe;YAC3DrE,QAAQU,IAAI,CAAC;gBAAEyD;gBAAOtF,MAAM;YAAU;YACtCoB,UAAU;QACZ;QAEAiE,cAAc,CAACC,MAAM,GAAGE;IAC1B;IAEA,IAAIpE,SAAS;QACXvB,WAAWY,MAAMO,cAAc,CAACmC,OAAU,CAAA;gBACxC,GAAGA,IAAI;gBACPkB,iBAAiB;oBACf,GAAGlB,KAAKkB,eAAe;oBACvBC,OAAOe;gBACT;YACF,CAAA;IACF;IAEA,OAAO;QAAEjE;QAASD;IAAQ;AAC5B;AAEA;;CAEC,GACD,MAAMW,wBAAwB,CAC5B6D,kBAEA,CAAC,wGAAwG,EAAEjE,OAAOgC,OAAO,CACvHiC,iBAEC7C,GAAG,CACF,CAAC,CAAC8C,QAAQzE,QAAQ,GAChB,GAAGyE,OAAO,GAAG,EAAEzE,QACZ+D,KAAK,GACL5B,IAAI,CAAC,CAACuC,MAAMC,QAAUD,KAAKP,KAAK,CAACS,aAAa,CAACD,MAAMR,KAAK,GAC1DxC,GAAG,CAAC,CAAC,EAAEwC,KAAK,EAAEtF,IAAI,EAAE,GAAK,CAAC,EAAE,EAAEsF,MAAM,EAAE,EAAEtF,KAAK,CAAC,CAAC,EAC/CiC,IAAI,CAAC,OAAO,EAElBA,IAAI,CAAC,SAAS"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/sync/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n createProjectGraphAsync,\n getProjects,\n joinPathFragments,\n type ProjectGraph,\n readJson,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport type { SyncGeneratorResult } from 'nx/src/utils/sync-generators';\nimport { relative } from 'path';\nimport PackageJson from '../../../package.json' with { type: 'json' };\nimport { getLocalDependencySpecifier } from '../../utils/dependencies.js';\nimport { getGeneratorInfo, type NxGeneratorInfo } from '../../utils/nx.js';\n\nexport const TS_SYNC_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const SYNC_GENERATOR_NAME = `${PackageJson.name}:${TS_SYNC_GENERATOR_INFO.id}`;\n\nexport const tsSyncGeneratorGenerator = async (\n tree: Tree,\n): Promise<SyncGeneratorResult> => {\n const basePaths = readBaseTsConfigPaths(tree);\n\n if (!basePaths) {\n return {};\n }\n\n const changesByConfigFile: Record<string, PathChange[]> = {};\n\n for (const project of getProjects(tree).values()) {\n for (const tsConfigFileName of [\n 'tsconfig.json',\n 'tsconfig.lib.json',\n 'tsconfig.app.json',\n ]) {\n const tsConfigPath = joinPathFragments(project.root, tsConfigFileName);\n if (!tree.exists(tsConfigPath)) {\n continue;\n }\n\n const { changes, updated } = syncPathsWithBase(\n tree,\n tsConfigPath,\n basePaths,\n project.root,\n );\n\n if (updated) {\n changesByConfigFile[tsConfigPath] = changes;\n }\n }\n }\n\n const localSpecifier = getLocalDependencySpecifier(tree);\n const localDepChanges = await syncLocalProjectDependencies(\n tree,\n localSpecifier,\n );\n\n const messages: string[] = [];\n if (Object.keys(changesByConfigFile).length > 0) {\n messages.push(buildOutOfSyncMessage(changesByConfigFile));\n }\n if (Object.keys(localDepChanges).length > 0) {\n messages.push(\n buildLocalDepOutOfSyncMessage(localDepChanges, localSpecifier),\n );\n }\n\n if (messages.length === 0) {\n return {};\n }\n\n return {\n outOfSyncMessage: messages.join('\\n\\n'),\n };\n};\n\n/**\n * Declare each project's local workspace dependencies in its own package.json\n * so `noUndeclaredDependencies` passes. Edges come from the Nx project graph\n * (the same import analysis `@nx/js:typescript-sync` uses). Returns the\n * packages added per project manifest.\n */\nconst syncLocalProjectDependencies = async (\n tree: Tree,\n localSpecifier: string,\n): Promise<Record<string, string[]>> => {\n const projectGraph = await createProjectGraphAsync();\n\n const projectInfoByName = collectProjectInfo(tree, projectGraph);\n\n const addedByManifest: Record<string, string[]> = {};\n\n for (const [projectName, info] of projectInfoByName) {\n // Local workspace projects this one depends on (excludes external packages\n // and implicit edges).\n const dependencyNames = (projectGraph.dependencies[projectName] ?? [])\n .filter(\n (dep) =>\n dep.type !== 'implicit' &&\n projectInfoByName.has(dep.target) &&\n dep.target !== projectName,\n )\n .map((dep) => projectInfoByName.get(dep.target)!.packageName);\n\n if (dependencyNames.length === 0) {\n continue;\n }\n\n const added: string[] = [];\n updateJson(tree, info.packageJsonPath, (json) => {\n const dependencies = { ...(json.dependencies ?? {}) };\n const devDependencies = json.devDependencies ?? {};\n for (const name of [...new Set(dependencyNames)].sort()) {\n // Already declared in either list — leave as-is.\n if (dependencies[name] || devDependencies[name]) {\n continue;\n }\n dependencies[name] = localSpecifier;\n added.push(name);\n }\n return added.length > 0 ? { ...json, dependencies } : json;\n });\n\n if (added.length > 0) {\n addedByManifest[info.packageJsonPath] = added;\n }\n }\n\n return addedByManifest;\n};\n\ninterface ProjectInfo {\n packageName: string;\n packageJsonPath: string;\n}\n\n/**\n * Index workspace projects with a named package.json by project name, so graph\n * edges (keyed by project name) resolve to the manifest to declare the dep in.\n */\nconst collectProjectInfo = (\n tree: Tree,\n projectGraph: ProjectGraph,\n): Map<string, ProjectInfo> => {\n const infoByName = new Map<string, ProjectInfo>();\n for (const [name, node] of Object.entries(projectGraph.nodes)) {\n const root = node.data.root;\n if (!root) {\n continue;\n }\n const packageJsonPath = joinPathFragments(root, 'package.json');\n if (!tree.exists(packageJsonPath)) {\n continue;\n }\n const packageName = readJson<{ name?: string }>(tree, packageJsonPath).name;\n if (packageName) {\n infoByName.set(name, { packageName, packageJsonPath });\n }\n }\n return infoByName;\n};\n\nconst buildLocalDepOutOfSyncMessage = (\n addedByManifest: Record<string, string[]>,\n localSpecifier: string,\n): string =>\n `Local project dependencies are out of sync. The following workspace dependencies will be declared:\\n${Object.entries(\n addedByManifest,\n )\n .map(\n ([manifest, names]) =>\n `${manifest}:\\n${names\n .map((name) => `- ${name}: ${localSpecifier}`)\n .join('\\n')}`,\n )\n .join('\\n\\n')}`;\n\nexport default tsSyncGeneratorGenerator;\n\nconst readBaseTsConfigPaths = (\n tree: Tree,\n): Record<string, string[]> | undefined => {\n const baseConfigPath = ['tsconfig.base.json', 'tsconfig.json'].find((path) =>\n tree.exists(path),\n );\n\n if (!baseConfigPath) {\n return undefined;\n }\n\n const baseConfigJson = readJson<Record<string, any>>(tree, baseConfigPath);\n return baseConfigJson?.compilerOptions?.paths ?? {};\n};\n\ntype PathChangeType = 'added' | 'updated';\n\ntype PathChange = {\n alias: string;\n type: PathChangeType;\n};\n\nconst arePathArraysEqual = (first: string[], second: string[]): boolean => {\n if (first.length !== second.length) {\n return false;\n }\n\n return first.every((value, index) => value === second[index]);\n};\n\n/**\n * Rebase a path from the workspace root to a project root.\n * e.g. \"./packages/foo/src/index.ts\" from project \"packages/bar\"\n * becomes \"../../packages/foo/src/index.ts\"\n */\nconst rebasePath = (pathValue: string, projectRoot: string): string => {\n // Strip leading ./ if present\n const normalized = pathValue.startsWith('./')\n ? pathValue.slice(2)\n : pathValue;\n const relPrefix = relative(projectRoot, '.') || '.';\n return joinPathFragments(relPrefix, normalized);\n};\n\nconst syncPathsWithBase = (\n tree: Tree,\n tsConfigPath: string,\n basePaths: Record<string, string[]>,\n projectRoot: string,\n): { updated: boolean; changes: PathChange[] } => {\n const changes: PathChange[] = [];\n\n const tsConfigJson = readJson(tree, tsConfigPath);\n const paths = tsConfigJson?.compilerOptions?.paths;\n\n if (!paths) {\n return { updated: false, changes };\n }\n\n const updatedAliases: Record<string, string[]> = {\n ...(tsConfigJson.compilerOptions?.paths ?? {}),\n };\n let updated = false;\n\n // Add or update aliases that exist in the base config, rebasing paths\n // relative to the project root since baseUrl is no longer set\n for (const [alias, baseValue] of Object.entries(basePaths)) {\n const rebasedValue = (baseValue as string[]).map((p) =>\n rebasePath(p, projectRoot),\n );\n const existingValue = updatedAliases[alias];\n if (!existingValue) {\n changes.push({ alias, type: 'added' });\n updated = true;\n } else if (!arePathArraysEqual(existingValue, rebasedValue)) {\n changes.push({ alias, type: 'updated' });\n updated = true;\n }\n\n updatedAliases[alias] = rebasedValue;\n }\n\n if (updated) {\n updateJson(tree, tsConfigPath, (json) => ({\n ...json,\n compilerOptions: {\n ...json.compilerOptions,\n paths: updatedAliases,\n },\n }));\n }\n\n return { updated, changes };\n};\n\n/**\n * Build the message to display when the sync generator would make changes to the tree\n */\nconst buildOutOfSyncMessage = (\n changesByConfig: Record<string, PathChange[]>,\n): string =>\n `TypeScript path aliases are out of sync with the base tsconfig. The following configs will be updated:\\n${Object.entries(\n changesByConfig,\n )\n .map(\n ([config, changes]) =>\n `${config}:\\n${changes\n .slice()\n .sort((left, right) => left.alias.localeCompare(right.alias))\n .map(({ alias, type }) => `- ${alias} (${type})`)\n .join('\\n')}`,\n )\n .join('\\n\\n')}`;\n"],"names":["createProjectGraphAsync","getProjects","joinPathFragments","readJson","updateJson","relative","PackageJson","type","getLocalDependencySpecifier","getGeneratorInfo","TS_SYNC_GENERATOR_INFO","filename","SYNC_GENERATOR_NAME","name","id","tsSyncGeneratorGenerator","tree","basePaths","readBaseTsConfigPaths","changesByConfigFile","project","values","tsConfigFileName","tsConfigPath","root","exists","changes","updated","syncPathsWithBase","localSpecifier","localDepChanges","syncLocalProjectDependencies","messages","Object","keys","length","push","buildOutOfSyncMessage","buildLocalDepOutOfSyncMessage","outOfSyncMessage","join","projectGraph","projectInfoByName","collectProjectInfo","addedByManifest","projectName","info","dependencyNames","dependencies","filter","dep","has","target","map","get","packageName","added","packageJsonPath","json","devDependencies","Set","sort","infoByName","Map","node","entries","nodes","data","set","manifest","names","baseConfigPath","find","path","undefined","baseConfigJson","compilerOptions","paths","arePathArraysEqual","first","second","every","value","index","rebasePath","pathValue","projectRoot","normalized","startsWith","slice","relPrefix","tsConfigJson","updatedAliases","alias","baseValue","rebasedValue","p","existingValue","changesByConfig","config","left","right","localeCompare"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import type { GeneratorCallback, Tree } from '@nx/devkit';
6
- import { type NxGeneratorInfo } from '../../../utils/nx';
6
+ import { type NxGeneratorInfo } from '../../../utils/nx.js';
7
7
  import type { TsWebsiteGeneratorSchema } from './schema';
8
8
  export declare const TS_WEBSITE_GENERATOR_INFO: NxGeneratorInfo;
9
9
  export declare const tsWebsiteGenerator: (tree: Tree, schema: TsWebsiteGeneratorSchema) => Promise<GeneratorCallback>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/app/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { GeneratorCallback, Tree } from '@nx/devkit';\nimport { getGeneratorInfo, type NxGeneratorInfo } from '../../../utils/nx';\nimport { tsReactWebsiteGenerator } from '../../react-website/app/generator';\nimport type { TsWebsiteGeneratorSchema } from './schema';\n\nexport const TS_WEBSITE_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsWebsiteGenerator = async (\n tree: Tree,\n schema: TsWebsiteGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const { framework: _framework, ...rest } = schema;\n return tsReactWebsiteGenerator(tree, rest);\n};\n\nexport default tsWebsiteGenerator;\n"],"names":["getGeneratorInfo","tsReactWebsiteGenerator","TS_WEBSITE_GENERATOR_INFO","filename","tsWebsiteGenerator","tree","schema","framework","_framework","rest"],"mappings":"AAAA;;;CAGC,GAED,SAASA,gBAAgB,QAA8B,uBAAoB;AAC3E,SAASC,uBAAuB,QAAQ,uCAAoC;AAG5E,OAAO,MAAMC,4BAA6CF,iBACxD,YAAYG,QAAQ,EACpB;AAEF,OAAO,MAAMC,qBAAqB,OAChCC,MACAC;IAEA,MAAM,EAAEC,WAAWC,UAAU,EAAE,GAAGC,MAAM,GAAGH;IAC3C,OAAOL,wBAAwBI,MAAMI;AACvC,EAAE;AAEF,eAAeL,mBAAmB"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/app/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { GeneratorCallback, Tree } from '@nx/devkit';\nimport { getGeneratorInfo, type NxGeneratorInfo } from '../../../utils/nx.js';\nimport { tsReactWebsiteGenerator } from '../../react-website/app/generator.js';\nimport type { TsWebsiteGeneratorSchema } from './schema';\n\nexport const TS_WEBSITE_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsWebsiteGenerator = async (\n tree: Tree,\n schema: TsWebsiteGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const { framework: _framework, ...rest } = schema;\n return tsReactWebsiteGenerator(tree, rest);\n};\n\nexport default tsWebsiteGenerator;\n"],"names":["getGeneratorInfo","tsReactWebsiteGenerator","TS_WEBSITE_GENERATOR_INFO","filename","tsWebsiteGenerator","tree","schema","framework","_framework","rest"],"mappings":"AAAA;;;CAGC,GAED,SAASA,gBAAgB,QAA8B,uBAAuB;AAC9E,SAASC,uBAAuB,QAAQ,uCAAuC;AAG/E,OAAO,MAAMC,4BAA6CF,iBACxD,YAAYG,QAAQ,EACpB;AAEF,OAAO,MAAMC,qBAAqB,OAChCC,MACAC;IAEA,MAAM,EAAEC,WAAWC,UAAU,EAAE,GAAGC,MAAM,GAAGH;IAC3C,OAAOL,wBAAwBI,MAAMI;AACvC,EAAE;AAEF,eAAeL,mBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/app/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../../utils/iac';\nimport { UxOption } from '../../react-website/app/generator';\n\nexport type WebsiteFramework = 'react';\nexport type WebsiteInfraOption = 'cloudfront-s3' | 'none';\n\nexport interface TsWebsiteGeneratorSchema {\n name: string;\n framework?: WebsiteFramework;\n directory?: string;\n subDirectory?: string;\n tanstackRouter?: boolean;\n tailwind?: boolean;\n ux?: UxOption;\n infra?: WebsiteInfraOption;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAOD,WAWC"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/app/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../../utils/iac.js';\nimport { UxOption } from '../../react-website/app/generator.js';\n\nexport type WebsiteFramework = 'react';\nexport type WebsiteInfraOption = 'cloudfront-s3' | 'none';\n\nexport interface TsWebsiteGeneratorSchema {\n name: string;\n framework?: WebsiteFramework;\n directory?: string;\n subDirectory?: string;\n tanstackRouter?: boolean;\n tailwind?: boolean;\n ux?: UxOption;\n infra?: WebsiteInfraOption;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAOD,WAWC"}
@@ -2,8 +2,8 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { IacOption } from '../../../utils/iac';
6
- import { UxOption } from '../../react-website/app/generator';
5
+ import { IacOption } from '../../../utils/iac.js';
6
+ import { UxOption } from '../../react-website/app/generator.js';
7
7
 
8
8
  export type WebsiteFramework = 'react';
9
9
  export type WebsiteInfraOption = 'cloudfront-s3' | 'none';
@@ -3,7 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import type { Tree } from '@nx/devkit';
6
- import { type NxGeneratorInfo } from '../../../utils/nx';
6
+ import { type NxGeneratorInfo } from '../../../utils/nx.js';
7
7
  import type { TsWebsiteAuthGeneratorSchema } from './schema';
8
8
  export declare const TS_WEBSITE_AUTH_GENERATOR_INFO: NxGeneratorInfo;
9
9
  export declare function tsWebsiteAuthGenerator(tree: Tree, schema: TsWebsiteAuthGeneratorSchema): Promise<() => Promise<void>>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/auth/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Tree } from '@nx/devkit';\nimport { getGeneratorInfo, type NxGeneratorInfo } from '../../../utils/nx';\nimport { tsReactWebsiteAuthGenerator } from '../../react-website/cognito-auth/generator';\nimport type { TsWebsiteAuthGeneratorSchema } from './schema';\n\nexport const TS_WEBSITE_AUTH_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function tsWebsiteAuthGenerator(\n tree: Tree,\n schema: TsWebsiteAuthGeneratorSchema,\n) {\n return tsReactWebsiteAuthGenerator(tree, {\n project: schema.project,\n allowSignup: schema.allowSignup,\n cognitoDomain: schema.cognitoDomain,\n iac: schema.iac,\n preferInstallDependencies: schema.preferInstallDependencies,\n });\n}\n\nexport default tsWebsiteAuthGenerator;\n"],"names":["getGeneratorInfo","tsReactWebsiteAuthGenerator","TS_WEBSITE_AUTH_GENERATOR_INFO","filename","tsWebsiteAuthGenerator","tree","schema","project","allowSignup","cognitoDomain","iac","preferInstallDependencies"],"mappings":"AAAA;;;CAGC,GAED,SAASA,gBAAgB,QAA8B,uBAAoB;AAC3E,SAASC,2BAA2B,QAAQ,gDAA6C;AAGzF,OAAO,MAAMC,iCAAkDF,iBAC7D,YAAYG,QAAQ,EACpB;AAEF,OAAO,eAAeC,uBACpBC,IAAU,EACVC,MAAoC;IAEpC,OAAOL,4BAA4BI,MAAM;QACvCE,SAASD,OAAOC,OAAO;QACvBC,aAAaF,OAAOE,WAAW;QAC/BC,eAAeH,OAAOG,aAAa;QACnCC,KAAKJ,OAAOI,GAAG;QACfC,2BAA2BL,OAAOK,yBAAyB;IAC7D;AACF;AAEA,eAAeP,uBAAuB"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/auth/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Tree } from '@nx/devkit';\nimport { getGeneratorInfo, type NxGeneratorInfo } from '../../../utils/nx.js';\nimport { tsReactWebsiteAuthGenerator } from '../../react-website/cognito-auth/generator.js';\nimport type { TsWebsiteAuthGeneratorSchema } from './schema';\n\nexport const TS_WEBSITE_AUTH_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function tsWebsiteAuthGenerator(\n tree: Tree,\n schema: TsWebsiteAuthGeneratorSchema,\n) {\n return tsReactWebsiteAuthGenerator(tree, {\n project: schema.project,\n allowSignup: schema.allowSignup,\n cognitoDomain: schema.cognitoDomain,\n iac: schema.iac,\n preferInstallDependencies: schema.preferInstallDependencies,\n });\n}\n\nexport default tsWebsiteAuthGenerator;\n"],"names":["getGeneratorInfo","tsReactWebsiteAuthGenerator","TS_WEBSITE_AUTH_GENERATOR_INFO","filename","tsWebsiteAuthGenerator","tree","schema","project","allowSignup","cognitoDomain","iac","preferInstallDependencies"],"mappings":"AAAA;;;CAGC,GAED,SAASA,gBAAgB,QAA8B,uBAAuB;AAC9E,SAASC,2BAA2B,QAAQ,gDAAgD;AAG5F,OAAO,MAAMC,iCAAkDF,iBAC7D,YAAYG,QAAQ,EACpB;AAEF,OAAO,eAAeC,uBACpBC,IAAU,EACVC,MAAoC;IAEpC,OAAOL,4BAA4BI,MAAM;QACvCE,SAASD,OAAOC,OAAO;QACvBC,aAAaF,OAAOE,WAAW;QAC/BC,eAAeH,OAAOG,aAAa;QACnCC,KAAKJ,OAAOI,GAAG;QACfC,2BAA2BL,OAAOK,yBAAyB;IAC7D;AACF;AAEA,eAAeP,uBAAuB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/auth/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../../utils/iac';\n\nexport interface TsWebsiteAuthGeneratorSchema {\n project: string;\n allowSignup: boolean;\n cognitoDomain?: string;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD,WAMC"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/auth/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../../utils/iac.js';\n\nexport interface TsWebsiteAuthGeneratorSchema {\n project: string;\n allowSignup: boolean;\n cognitoDomain?: string;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD,WAMC"}
@@ -2,7 +2,7 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { IacOption } from '../../../utils/iac';
5
+ import { IacOption } from '../../../utils/iac.js';
6
6
 
7
7
  export interface TsWebsiteAuthGeneratorSchema {
8
8
  project: string;
@@ -3,7 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { type GeneratorCallback, type Tree } from '@nx/devkit';
6
- import { type DependencyDeclaration, type DependencyMetadata } from './declared-dependencies';
6
+ import { type DependencyDeclaration, type DependencyMetadata } from './declared-dependencies.js';
7
7
  /**
8
8
  * Add the dependencies a declaration says apply, so the declaration is the only
9
9
  * place packages are listed.