@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/utils/rdb-constructs/rdb-constructs.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 ProjectConfiguration,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport { addStarExport } from '../ast';\nimport type { Containers } from '../containers';\nimport type { Iac } from '../iac';\nimport { esmVars } from '../module-format';\nimport { addDependencyToTargetIfNotPresent } from '../nx';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n SHARED_TERRAFORM_DIR,\n} from '../shared-constructs-constants';\nimport { terraformProviderVersions } from '../versions';\n\nexport interface AddRdbConstructOptions {\n projectName: string;\n projectRoot: string;\n nameClassName: string;\n nameKebabCase: string;\n databasePackageAlias: string;\n databaseName: string;\n adminUser: string;\n engine: 'postgres' | 'mysql';\n migrationBundleDir: string;\n /**\n * Node.js zip bundle directory for the create-db-user Lambda (ts#rdb).\n * When absent the migration Docker image is reused with the\n * `create_db_user_handler.handler` command (py#rdb).\n */\n createDbUserBundleDir: string;\n /** ORM framework used by the create-db-user Lambda. */\n framework: 'prisma' | 'sqlmodel';\n /** Local Docker tag for the Python create-db-user Lambda image. */\n createDbUserDockerImageTag?: string;\n /** Local Docker tag for the migration Lambda image. */\n migrationDockerImageTag: string;\n containerEngine: Containers;\n}\n\nexport const addRdbInfra = async (\n tree: Tree,\n options: AddRdbConstructOptions & { iac: Iac },\n) => {\n if (options.iac === 'cdk') {\n await addRdbCdkConstructs(tree, options);\n } else if (options.iac === 'terraform') {\n addRdbTerraformModules(tree, options);\n } else {\n throw new Error(`Unsupported iac ${options.iac}`);\n }\n\n updateJson(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n options.iac === 'cdk' ? SHARED_CONSTRUCTS_DIR : SHARED_TERRAFORM_DIR,\n 'project.json',\n ),\n (config: ProjectConfiguration) => {\n addDependencyToTargetIfNotPresent(\n config,\n 'build',\n `${options.projectName}:build`,\n );\n return config;\n },\n );\n};\n\nexport const addRdbCdkConstructs = async (\n tree: Tree,\n options: AddRdbConstructOptions,\n) => {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'cdk', 'core', 'rdb'),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'core',\n 'rdb',\n ),\n { ...options, ...esmVars(tree) },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'dbs'),\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'app', 'dbs'),\n { ...options, ...esmVars(tree) },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'core',\n 'index.ts',\n ),\n './rdb/aurora.js',\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'dbs',\n 'index.ts',\n ),\n `./${options.nameKebabCase}.js`,\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'index.ts',\n ),\n './dbs/index.js',\n );\n};\n\nexport const addRdbTerraformModules = (\n tree: Tree,\n options: AddRdbConstructOptions,\n) => {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'terraform', 'core', 'rdb'),\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'core', 'rdb'),\n { ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'terraform', 'app', 'dbs'),\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'app', 'dbs'),\n { ...options, ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","addStarExport","esmVars","addDependencyToTargetIfNotPresent","PACKAGES_DIR","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_DIR","terraformProviderVersions","addRdbInfra","tree","options","iac","addRdbCdkConstructs","addRdbTerraformModules","Error","config","projectName","dirname","overwriteStrategy","KeepExisting","nameKebabCase"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,EAGjBC,UAAU,QACL,aAAa;AACpB,SAASC,aAAa,QAAQ,YAAS;AAGvC,SAASC,OAAO,QAAQ,sBAAmB;AAC3C,SAASC,iCAAiC,QAAQ,WAAQ;AAC1D,SACEC,YAAY,EACZC,qBAAqB,EACrBC,oBAAoB,QACf,oCAAiC;AACxC,SAASC,yBAAyB,QAAQ,iBAAc;AA2BxD,OAAO,MAAMC,cAAc,OACzBC,MACAC;IAEA,IAAIA,QAAQC,GAAG,KAAK,OAAO;QACzB,MAAMC,oBAAoBH,MAAMC;IAClC,OAAO,IAAIA,QAAQC,GAAG,KAAK,aAAa;QACtCE,uBAAuBJ,MAAMC;IAC/B,OAAO;QACL,MAAM,IAAII,MAAM,CAAC,gBAAgB,EAAEJ,QAAQC,GAAG,EAAE;IAClD;IAEAX,WACES,MACAX,kBACEM,cACAM,QAAQC,GAAG,KAAK,QAAQN,wBAAwBC,sBAChD,iBAEF,CAACS;QACCZ,kCACEY,QACA,SACA,GAAGL,QAAQM,WAAW,CAAC,MAAM,CAAC;QAEhC,OAAOD;IACT;AAEJ,EAAE;AAEF,OAAO,MAAMH,sBAAsB,OACjCH,MACAC;IAEAb,cACEY,MACAX,kBAAkB,YAAYmB,OAAO,EAAE,SAAS,OAAO,QAAQ,QAC/DnB,kBACEM,cACAC,uBACA,OACA,QACA,QAEF;QAAE,GAAGK,OAAO;QAAE,GAAGR,QAAQO,KAAK;IAAC,GAC/B;QACES,mBAAmBnB,kBAAkBoB,YAAY;IACnD;IAGFtB,cACEY,MACAX,kBAAkB,YAAYmB,OAAO,EAAE,SAAS,OAAO,OAAO,QAC9DnB,kBAAkBM,cAAcC,uBAAuB,OAAO,OAAO,QACrE;QAAE,GAAGK,OAAO;QAAE,GAAGR,QAAQO,KAAK;IAAC,GAC/B;QACES,mBAAmBnB,kBAAkBoB,YAAY;IACnD;IAGF,MAAMlB,cACJQ,MACAX,kBACEM,cACAC,uBACA,OACA,QACA,aAEF;IAEF,MAAMJ,cACJQ,MACAX,kBACEM,cACAC,uBACA,OACA,OACA,OACA,aAEF,CAAC,EAAE,EAAEK,QAAQU,aAAa,CAAC,GAAG,CAAC;IAEjC,MAAMnB,cACJQ,MACAX,kBACEM,cACAC,uBACA,OACA,OACA,aAEF;AAEJ,EAAE;AAEF,OAAO,MAAMQ,yBAAyB,CACpCJ,MACAC;IAEAb,cACEY,MACAX,kBAAkB,YAAYmB,OAAO,EAAE,SAAS,aAAa,QAAQ,QACrEnB,kBAAkBM,cAAcE,sBAAsB,OAAO,QAAQ,QACrE;QAAE,GAAGC,2BAA2B;IAAC,GACjC;QACEW,mBAAmBnB,kBAAkBoB,YAAY;IACnD;IAGFtB,cACEY,MACAX,kBAAkB,YAAYmB,OAAO,EAAE,SAAS,aAAa,OAAO,QACpEnB,kBAAkBM,cAAcE,sBAAsB,OAAO,OAAO,QACpE;QAAE,GAAGI,OAAO;QAAE,GAAGH,2BAA2B;IAAC,GAC7C;QACEW,mBAAmBnB,kBAAkBoB,YAAY;IACnD;AAEJ,EAAE"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/rdb-constructs/rdb-constructs.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 ProjectConfiguration,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport { addStarExport } from '../ast.js';\nimport type { Containers } from '../containers.js';\nimport type { Iac } from '../iac.js';\nimport { esmVars } from '../module-format.js';\nimport { addDependencyToTargetIfNotPresent } from '../nx.js';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n SHARED_TERRAFORM_DIR,\n} from '../shared-constructs-constants.js';\nimport { terraformProviderVersions } from '../versions.js';\n\nexport interface AddRdbConstructOptions {\n projectName: string;\n projectRoot: string;\n nameClassName: string;\n nameKebabCase: string;\n databasePackageAlias: string;\n databaseName: string;\n adminUser: string;\n engine: 'postgres' | 'mysql';\n migrationBundleDir: string;\n /**\n * Node.js zip bundle directory for the create-db-user Lambda (ts#rdb).\n * When absent the migration Docker image is reused with the\n * `create_db_user_handler.handler` command (py#rdb).\n */\n createDbUserBundleDir: string;\n /** ORM framework used by the create-db-user Lambda. */\n framework: 'prisma' | 'sqlmodel';\n /** Local Docker tag for the Python create-db-user Lambda image. */\n createDbUserDockerImageTag?: string;\n /** Local Docker tag for the migration Lambda image. */\n migrationDockerImageTag: string;\n containerEngine: Containers;\n}\n\nexport const addRdbInfra = async (\n tree: Tree,\n options: AddRdbConstructOptions & { iac: Iac },\n) => {\n if (options.iac === 'cdk') {\n await addRdbCdkConstructs(tree, options);\n } else if (options.iac === 'terraform') {\n addRdbTerraformModules(tree, options);\n } else {\n throw new Error(`Unsupported iac ${options.iac}`);\n }\n\n updateJson(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n options.iac === 'cdk' ? SHARED_CONSTRUCTS_DIR : SHARED_TERRAFORM_DIR,\n 'project.json',\n ),\n (config: ProjectConfiguration) => {\n addDependencyToTargetIfNotPresent(\n config,\n 'build',\n `${options.projectName}:build`,\n );\n return config;\n },\n );\n};\n\nexport const addRdbCdkConstructs = async (\n tree: Tree,\n options: AddRdbConstructOptions,\n) => {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'cdk', 'core', 'rdb'),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'core',\n 'rdb',\n ),\n { ...options, ...esmVars(tree) },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'dbs'),\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'app', 'dbs'),\n { ...options, ...esmVars(tree) },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'core',\n 'index.ts',\n ),\n './rdb/aurora.js',\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'dbs',\n 'index.ts',\n ),\n `./${options.nameKebabCase}.js`,\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'index.ts',\n ),\n './dbs/index.js',\n );\n};\n\nexport const addRdbTerraformModules = (\n tree: Tree,\n options: AddRdbConstructOptions,\n) => {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'terraform', 'core', 'rdb'),\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'core', 'rdb'),\n { ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'terraform', 'app', 'dbs'),\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'app', 'dbs'),\n { ...options, ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","addStarExport","esmVars","addDependencyToTargetIfNotPresent","PACKAGES_DIR","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_DIR","terraformProviderVersions","addRdbInfra","tree","options","iac","addRdbCdkConstructs","addRdbTerraformModules","Error","config","projectName","dirname","overwriteStrategy","KeepExisting","nameKebabCase"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,EAGjBC,UAAU,QACL,aAAa;AACpB,SAASC,aAAa,QAAQ,YAAY;AAG1C,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,iCAAiC,QAAQ,WAAW;AAC7D,SACEC,YAAY,EACZC,qBAAqB,EACrBC,oBAAoB,QACf,oCAAoC;AAC3C,SAASC,yBAAyB,QAAQ,iBAAiB;AA2B3D,OAAO,MAAMC,cAAc,OACzBC,MACAC;IAEA,IAAIA,QAAQC,GAAG,KAAK,OAAO;QACzB,MAAMC,oBAAoBH,MAAMC;IAClC,OAAO,IAAIA,QAAQC,GAAG,KAAK,aAAa;QACtCE,uBAAuBJ,MAAMC;IAC/B,OAAO;QACL,MAAM,IAAII,MAAM,CAAC,gBAAgB,EAAEJ,QAAQC,GAAG,EAAE;IAClD;IAEAX,WACES,MACAX,kBACEM,cACAM,QAAQC,GAAG,KAAK,QAAQN,wBAAwBC,sBAChD,iBAEF,CAACS;QACCZ,kCACEY,QACA,SACA,GAAGL,QAAQM,WAAW,CAAC,MAAM,CAAC;QAEhC,OAAOD;IACT;AAEJ,EAAE;AAEF,OAAO,MAAMH,sBAAsB,OACjCH,MACAC;IAEAb,cACEY,MACAX,kBAAkB,YAAYmB,OAAO,EAAE,SAAS,OAAO,QAAQ,QAC/DnB,kBACEM,cACAC,uBACA,OACA,QACA,QAEF;QAAE,GAAGK,OAAO;QAAE,GAAGR,QAAQO,KAAK;IAAC,GAC/B;QACES,mBAAmBnB,kBAAkBoB,YAAY;IACnD;IAGFtB,cACEY,MACAX,kBAAkB,YAAYmB,OAAO,EAAE,SAAS,OAAO,OAAO,QAC9DnB,kBAAkBM,cAAcC,uBAAuB,OAAO,OAAO,QACrE;QAAE,GAAGK,OAAO;QAAE,GAAGR,QAAQO,KAAK;IAAC,GAC/B;QACES,mBAAmBnB,kBAAkBoB,YAAY;IACnD;IAGF,MAAMlB,cACJQ,MACAX,kBACEM,cACAC,uBACA,OACA,QACA,aAEF;IAEF,MAAMJ,cACJQ,MACAX,kBACEM,cACAC,uBACA,OACA,OACA,OACA,aAEF,CAAC,EAAE,EAAEK,QAAQU,aAAa,CAAC,GAAG,CAAC;IAEjC,MAAMnB,cACJQ,MACAX,kBACEM,cACAC,uBACA,OACA,OACA,aAEF;AAEJ,EAAE;AAEF,OAAO,MAAMQ,yBAAyB,CACpCJ,MACAC;IAEAb,cACEY,MACAX,kBAAkB,YAAYmB,OAAO,EAAE,SAAS,aAAa,QAAQ,QACrEnB,kBAAkBM,cAAcE,sBAAsB,OAAO,QAAQ,QACrE;QAAE,GAAGC,2BAA2B;IAAC,GACjC;QACEW,mBAAmBnB,kBAAkBoB,YAAY;IACnD;IAGFtB,cACEY,MACAX,kBAAkB,YAAYmB,OAAO,EAAE,SAAS,aAAa,OAAO,QACpEnB,kBAAkBM,cAAcE,sBAAsB,OAAO,OAAO,QACpE;QAAE,GAAGI,OAAO;QAAE,GAAGH,2BAA2B;IAAC,GAC7C;QACEW,mBAAmBnB,kBAAkBoB,YAAY;IACnD;AAEJ,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-constructs-constants.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { DeclaredTsDependency } from './declared-dependencies';\nimport type { ITsDepVersion } from './versions';\n\nexport const PACKAGES_DIR = 'packages';\nexport const SHARED_CONSTRUCTS_NAME = 'common-constructs';\nexport const SHARED_CONSTRUCTS_DIR = 'common/constructs';\nexport const SHARED_TERRAFORM_NAME = 'terraform';\nexport const SHARED_TERRAFORM_DIR = 'common/terraform';\nexport const SHARED_SHADCN_NAME = 'common-shadcn';\nexport const SHARED_SHADCN_DIR = 'common/shadcn';\nexport const SHARED_INFRA_CONFIG_NAME = 'common-infra-config';\nexport const SHARED_INFRA_CONFIG_DIR = 'common/infra-config';\nexport const SHARED_SCRIPTS_NAME = 'common-scripts';\nexport const SHARED_SCRIPTS_DIR = 'common/scripts';\n\nexport const DYNAMODB_GENERATOR_IDS = ['ts#dynamodb', 'py#dynamodb'];\n\n/**\n * What a generator records about the infrastructure it generated.\n *\n * Every generator that creates infrastructure records the `iac` it used, so a\n * predicate can tell a CDK project from a Terraform one at upgrade time. Absent\n * when the generator was run with no infrastructure, so its presence doubles as\n * \"infrastructure was generated\" — which is what gates the packages an infra\n * helper adds.\n */\nexport interface IacMetadata {\n readonly iac?: string;\n}\n\n/**\n * Whether infrastructure was generated at all, so the packages an infra helper\n * adds are only claimed where that helper ran.\n *\n * Reads `iac` rather than the generator's own `infra` option: every generator\n * resolves `iac` only on the infra branch, so one recorded field answers both\n * questions and no generator needs a second one.\n */\nexport const generatedInfrastructure = (m: IacMetadata): boolean =>\n m.iac !== undefined;\n\n/**\n * Whether Terraform infrastructure was generated, for the versions only a `.tf`\n * module pins — a Terraform inline script's `uv run --with` pins, which the CDK\n * branch never writes.\n */\nexport const generatedTerraform = (m: IacMetadata): boolean =>\n m.iac === 'terraform';\n\n/**\n * Dependencies a caller must declare to use the shared constructs project.\n * Lives here so generators can spread it without importing the generator.\n *\n * `constructs` and `aws-cdk-lib` are gated on CDK because\n * `sharedConstructsGenerator` creates the TypeScript constructs project on that\n * branch alone — a Terraform workspace gets the shared Terraform project and\n * never receives them.\n */\nexport const SHARED_CONSTRUCTS_DEPENDENCIES = [\n { name: 'constructs', when: (m: IacMetadata) => m.iac === 'cdk' },\n { name: 'aws-cdk-lib', when: (m: IacMetadata) => m.iac === 'cdk' },\n { name: '@types/node' },\n] as const satisfies readonly DeclaredTsDependency<\n ITsDepVersion,\n IacMetadata\n>[];\n"],"names":["PACKAGES_DIR","SHARED_CONSTRUCTS_NAME","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_NAME","SHARED_TERRAFORM_DIR","SHARED_SHADCN_NAME","SHARED_SHADCN_DIR","SHARED_INFRA_CONFIG_NAME","SHARED_INFRA_CONFIG_DIR","SHARED_SCRIPTS_NAME","SHARED_SCRIPTS_DIR","DYNAMODB_GENERATOR_IDS","generatedInfrastructure","m","iac","undefined","generatedTerraform","SHARED_CONSTRUCTS_DEPENDENCIES","name","when"],"mappings":"AAAA;;;CAGC,GAID,OAAO,MAAMA,eAAe,WAAW;AACvC,OAAO,MAAMC,yBAAyB,oBAAoB;AAC1D,OAAO,MAAMC,wBAAwB,oBAAoB;AACzD,OAAO,MAAMC,wBAAwB,YAAY;AACjD,OAAO,MAAMC,uBAAuB,mBAAmB;AACvD,OAAO,MAAMC,qBAAqB,gBAAgB;AAClD,OAAO,MAAMC,oBAAoB,gBAAgB;AACjD,OAAO,MAAMC,2BAA2B,sBAAsB;AAC9D,OAAO,MAAMC,0BAA0B,sBAAsB;AAC7D,OAAO,MAAMC,sBAAsB,iBAAiB;AACpD,OAAO,MAAMC,qBAAqB,iBAAiB;AAEnD,OAAO,MAAMC,yBAAyB;IAAC;IAAe;CAAc,CAAC;AAerE;;;;;;;CAOC,GACD,OAAO,MAAMC,0BAA0B,CAACC,IACtCA,EAAEC,GAAG,KAAKC,UAAU;AAEtB;;;;CAIC,GACD,OAAO,MAAMC,qBAAqB,CAACH,IACjCA,EAAEC,GAAG,KAAK,YAAY;AAExB;;;;;;;;CAQC,GACD,OAAO,MAAMG,iCAAiC;IAC5C;QAAEC,MAAM;QAAcC,MAAM,CAACN,IAAmBA,EAAEC,GAAG,KAAK;IAAM;IAChE;QAAEI,MAAM;QAAeC,MAAM,CAACN,IAAmBA,EAAEC,GAAG,KAAK;IAAM;IACjE;QAAEI,MAAM;IAAc;CACvB,CAGG"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-constructs-constants.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { DeclaredTsDependency } from './declared-dependencies.js';\nimport type { ITsDepVersion } from './versions.js';\n\nexport const PACKAGES_DIR = 'packages';\nexport const SHARED_CONSTRUCTS_NAME = 'common-constructs';\nexport const SHARED_CONSTRUCTS_DIR = 'common/constructs';\nexport const SHARED_TERRAFORM_NAME = 'terraform';\nexport const SHARED_TERRAFORM_DIR = 'common/terraform';\nexport const SHARED_SHADCN_NAME = 'common-shadcn';\nexport const SHARED_SHADCN_DIR = 'common/shadcn';\nexport const SHARED_INFRA_CONFIG_NAME = 'common-infra-config';\nexport const SHARED_INFRA_CONFIG_DIR = 'common/infra-config';\nexport const SHARED_SCRIPTS_NAME = 'common-scripts';\nexport const SHARED_SCRIPTS_DIR = 'common/scripts';\n\nexport const DYNAMODB_GENERATOR_IDS = ['ts#dynamodb', 'py#dynamodb'];\n\n/**\n * What a generator records about the infrastructure it generated.\n *\n * Every generator that creates infrastructure records the `iac` it used, so a\n * predicate can tell a CDK project from a Terraform one at upgrade time. Absent\n * when the generator was run with no infrastructure, so its presence doubles as\n * \"infrastructure was generated\" — which is what gates the packages an infra\n * helper adds.\n */\nexport interface IacMetadata {\n readonly iac?: string;\n}\n\n/**\n * Whether infrastructure was generated at all, so the packages an infra helper\n * adds are only claimed where that helper ran.\n *\n * Reads `iac` rather than the generator's own `infra` option: every generator\n * resolves `iac` only on the infra branch, so one recorded field answers both\n * questions and no generator needs a second one.\n */\nexport const generatedInfrastructure = (m: IacMetadata): boolean =>\n m.iac !== undefined;\n\n/**\n * Whether Terraform infrastructure was generated, for the versions only a `.tf`\n * module pins — a Terraform inline script's `uv run --with` pins, which the CDK\n * branch never writes.\n */\nexport const generatedTerraform = (m: IacMetadata): boolean =>\n m.iac === 'terraform';\n\n/**\n * Dependencies a caller must declare to use the shared constructs project.\n * Lives here so generators can spread it without importing the generator.\n *\n * `constructs` and `aws-cdk-lib` are gated on CDK because\n * `sharedConstructsGenerator` creates the TypeScript constructs project on that\n * branch alone — a Terraform workspace gets the shared Terraform project and\n * never receives them.\n */\nexport const SHARED_CONSTRUCTS_DEPENDENCIES = [\n { name: 'constructs', when: (m: IacMetadata) => m.iac === 'cdk' },\n { name: 'aws-cdk-lib', when: (m: IacMetadata) => m.iac === 'cdk' },\n { name: '@types/node' },\n] as const satisfies readonly DeclaredTsDependency<\n ITsDepVersion,\n IacMetadata\n>[];\n"],"names":["PACKAGES_DIR","SHARED_CONSTRUCTS_NAME","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_NAME","SHARED_TERRAFORM_DIR","SHARED_SHADCN_NAME","SHARED_SHADCN_DIR","SHARED_INFRA_CONFIG_NAME","SHARED_INFRA_CONFIG_DIR","SHARED_SCRIPTS_NAME","SHARED_SCRIPTS_DIR","DYNAMODB_GENERATOR_IDS","generatedInfrastructure","m","iac","undefined","generatedTerraform","SHARED_CONSTRUCTS_DEPENDENCIES","name","when"],"mappings":"AAAA;;;CAGC,GAID,OAAO,MAAMA,eAAe,WAAW;AACvC,OAAO,MAAMC,yBAAyB,oBAAoB;AAC1D,OAAO,MAAMC,wBAAwB,oBAAoB;AACzD,OAAO,MAAMC,wBAAwB,YAAY;AACjD,OAAO,MAAMC,uBAAuB,mBAAmB;AACvD,OAAO,MAAMC,qBAAqB,gBAAgB;AAClD,OAAO,MAAMC,oBAAoB,gBAAgB;AACjD,OAAO,MAAMC,2BAA2B,sBAAsB;AAC9D,OAAO,MAAMC,0BAA0B,sBAAsB;AAC7D,OAAO,MAAMC,sBAAsB,iBAAiB;AACpD,OAAO,MAAMC,qBAAqB,iBAAiB;AAEnD,OAAO,MAAMC,yBAAyB;IAAC;IAAe;CAAc,CAAC;AAerE;;;;;;;CAOC,GACD,OAAO,MAAMC,0BAA0B,CAACC,IACtCA,EAAEC,GAAG,KAAKC,UAAU;AAEtB;;;;CAIC,GACD,OAAO,MAAMC,qBAAqB,CAACH,IACjCA,EAAEC,GAAG,KAAK,YAAY;AAExB;;;;;;;;CAQC,GACD,OAAO,MAAMG,iCAAiC;IAC5C;QAAEC,MAAM;QAAcC,MAAM,CAACN,IAAmBA,EAAEC,GAAG,KAAK;IAAM;IAChE;QAAEI,MAAM;QAAeC,MAAM,CAACN,IAAmBA,EAAEC,GAAG,KAAK;IAAM;IACjE;QAAEI,MAAM;IAAc;CACvB,CAGG"}
@@ -3,9 +3,9 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { type Tree } from '@nx/devkit';
6
- import type { DependencyDeclaration, MustDeclare } from './declared-dependencies';
7
- import type { Iac } from './iac';
8
- import { SHARED_CONSTRUCTS_DEPENDENCIES } from './shared-constructs-constants';
6
+ import type { DependencyDeclaration, MustDeclare } from './declared-dependencies.js';
7
+ import type { Iac } from './iac.js';
8
+ import { SHARED_CONSTRUCTS_DEPENDENCIES } from './shared-constructs-constants.js';
9
9
  export { SHARED_CONSTRUCTS_DEPENDENCIES };
10
10
  export interface SharedConstructsGeneratorOptions {
11
11
  iac: Iac;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-constructs.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 ProjectConfiguration,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport terraformProjectGenerator from '../terraform/project/generator';\nimport tsProjectGenerator from '../ts/lib/generator';\nimport { readAwsNxPluginConfig } from './config/utils';\nimport type {\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport { formatFilesInSubtree } from './format';\nimport type { Iac } from './iac';\nimport { esmVars } from './module-format';\nimport { getNpmScopePrefix } from './npm-scope';\nimport { getPackageManagerDisplayCommands } from './pkg-manager';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DEPENDENCIES,\n SHARED_CONSTRUCTS_DIR,\n SHARED_CONSTRUCTS_NAME,\n SHARED_TERRAFORM_DIR,\n SHARED_TERRAFORM_NAME,\n} from './shared-constructs-constants';\n\nexport { SHARED_CONSTRUCTS_DEPENDENCIES };\n\nimport { terraformProviderVersions, withVersions } from './versions';\n\nexport interface SharedConstructsGeneratorOptions {\n iac: Iac;\n}\n\nexport async function sharedConstructsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n options: SharedConstructsGeneratorOptions,\n declaration: D & MustDeclare<typeof SHARED_CONSTRUCTS_DEPENDENCIES, D>,\n) {\n const { iac } = options;\n const npmScopePrefix = getNpmScopePrefix(tree);\n updateGitignore(tree);\n\n if (iac === 'cdk') {\n if (\n !tree.exists(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'project.json'),\n )\n ) {\n await tsProjectGenerator(tree, {\n name: SHARED_CONSTRUCTS_NAME,\n directory: PACKAGES_DIR,\n subDirectory: SHARED_CONSTRUCTS_DIR,\n });\n tree.delete(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src'),\n );\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_CONSTRUCTS_DIR,\n 'src',\n ),\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src'),\n {\n npmScopePrefix,\n scopeAlias: npmScopePrefix,\n tags: readAwsNxPluginConfig(tree)?.tags ?? [],\n ...esmVars(tree),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'),\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR),\n {\n fullyQualifiedName: `${npmScopePrefix}${SHARED_CONSTRUCTS_NAME}`,\n name: SHARED_CONSTRUCTS_NAME,\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n },\n {\n overwriteStrategy: OverwriteStrategy.Overwrite,\n },\n );\n addDependenciesToPackageJson(\n tree,\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_CONSTRUCTS_DEPENDENCIES\n >,\n ['constructs', 'aws-cdk-lib'],\n ),\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_CONSTRUCTS_DEPENDENCIES\n >,\n ['@types/node'],\n ),\n joinPathFragments(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR),\n 'package.json',\n ),\n );\n await formatFilesInSubtree(tree);\n }\n }\n\n // Handle Terraform provider\n if (iac === 'terraform') {\n const terraformLibPath = joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n );\n if (!tree.exists(joinPathFragments(terraformLibPath, 'project.json'))) {\n await terraformProjectGenerator(tree, {\n name: SHARED_TERRAFORM_NAME,\n directory: joinPathFragments(PACKAGES_DIR, 'common'),\n type: 'library',\n });\n\n // `build` is a no-op orchestration target that produces no files of its\n // own. Terraform writes runtime-config entries into\n // `dist/{projectRoot}/runtime-config` at apply time, and other terraform\n // projects contribute their own entries to the same directory. Without\n // explicit outputs, Nx infers `dist/{projectRoot}` as this target's\n // cached output and, on a cache hit, restores the cached copy over the\n // freshly-applied config — wiping the very values consumers read. Declare\n // no outputs so Nx never treats runtime config as a cacheable artifact.\n updateJson(\n tree,\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'project.json'),\n (projectConfig: ProjectConfiguration) => {\n projectConfig.targets ??= {};\n projectConfig.targets.build ??= {};\n projectConfig.targets.build.outputs = [];\n return projectConfig;\n },\n );\n\n tree.delete(joinPathFragments(terraformLibPath, 'src', 'main.tf'));\n\n // Create the metrics.tf file with empty initial values\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'terraform'),\n terraformLibPath,\n { ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n await formatFilesInSubtree(tree);\n }\n }\n}\n\nconst updateGitignore = (tree: Tree) => {\n const gitignore = tree.exists('.gitignore')\n ? tree.read('.gitignore', 'utf-8')\n : '';\n const regex = /runtime-config.json/gm;\n const hasRuntimeConfig = regex.test(gitignore ?? '');\n if (hasRuntimeConfig) {\n return;\n }\n tree.write('.gitignore', `${gitignore}\\n\\nruntime-config.json`);\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","terraformProjectGenerator","tsProjectGenerator","readAwsNxPluginConfig","addDependenciesToPackageJson","formatFilesInSubtree","esmVars","getNpmScopePrefix","getPackageManagerDisplayCommands","PACKAGES_DIR","SHARED_CONSTRUCTS_DEPENDENCIES","SHARED_CONSTRUCTS_DIR","SHARED_CONSTRUCTS_NAME","SHARED_TERRAFORM_DIR","SHARED_TERRAFORM_NAME","terraformProviderVersions","withVersions","sharedConstructsGenerator","tree","options","declaration","iac","npmScopePrefix","updateGitignore","exists","name","directory","subDirectory","delete","dirname","scopeAlias","tags","overwriteStrategy","KeepExisting","fullyQualifiedName","pkgMgrCmd","exec","Overwrite","terraformLibPath","type","projectConfig","targets","build","outputs","gitignore","read","regex","hasRuntimeConfig","test","write"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-constructs.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 ProjectConfiguration,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport terraformProjectGenerator from '../terraform/project/generator.js';\nimport tsProjectGenerator from '../ts/lib/generator.js';\nimport { readAwsNxPluginConfig } from './config/utils.js';\nimport type {\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies.js';\nimport { addDependenciesToPackageJson } from './dependencies.js';\nimport { formatFilesInSubtree } from './format.js';\nimport type { Iac } from './iac.js';\nimport { esmVars } from './module-format.js';\nimport { getNpmScopePrefix } from './npm-scope.js';\nimport { getPackageManagerDisplayCommands } from './pkg-manager.js';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DEPENDENCIES,\n SHARED_CONSTRUCTS_DIR,\n SHARED_CONSTRUCTS_NAME,\n SHARED_TERRAFORM_DIR,\n SHARED_TERRAFORM_NAME,\n} from './shared-constructs-constants.js';\n\nexport { SHARED_CONSTRUCTS_DEPENDENCIES };\n\nimport { terraformProviderVersions, withVersions } from './versions.js';\n\nexport interface SharedConstructsGeneratorOptions {\n iac: Iac;\n}\n\nexport async function sharedConstructsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n options: SharedConstructsGeneratorOptions,\n declaration: D & MustDeclare<typeof SHARED_CONSTRUCTS_DEPENDENCIES, D>,\n) {\n const { iac } = options;\n const npmScopePrefix = getNpmScopePrefix(tree);\n updateGitignore(tree);\n\n if (iac === 'cdk') {\n if (\n !tree.exists(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'project.json'),\n )\n ) {\n await tsProjectGenerator(tree, {\n name: SHARED_CONSTRUCTS_NAME,\n directory: PACKAGES_DIR,\n subDirectory: SHARED_CONSTRUCTS_DIR,\n });\n tree.delete(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src'),\n );\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_CONSTRUCTS_DIR,\n 'src',\n ),\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src'),\n {\n npmScopePrefix,\n scopeAlias: npmScopePrefix,\n tags: readAwsNxPluginConfig(tree)?.tags ?? [],\n ...esmVars(tree),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'),\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR),\n {\n fullyQualifiedName: `${npmScopePrefix}${SHARED_CONSTRUCTS_NAME}`,\n name: SHARED_CONSTRUCTS_NAME,\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n },\n {\n overwriteStrategy: OverwriteStrategy.Overwrite,\n },\n );\n addDependenciesToPackageJson(\n tree,\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_CONSTRUCTS_DEPENDENCIES\n >,\n ['constructs', 'aws-cdk-lib'],\n ),\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_CONSTRUCTS_DEPENDENCIES\n >,\n ['@types/node'],\n ),\n joinPathFragments(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR),\n 'package.json',\n ),\n );\n await formatFilesInSubtree(tree);\n }\n }\n\n // Handle Terraform provider\n if (iac === 'terraform') {\n const terraformLibPath = joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n );\n if (!tree.exists(joinPathFragments(terraformLibPath, 'project.json'))) {\n await terraformProjectGenerator(tree, {\n name: SHARED_TERRAFORM_NAME,\n directory: joinPathFragments(PACKAGES_DIR, 'common'),\n type: 'library',\n });\n\n // `build` is a no-op orchestration target that produces no files of its\n // own. Terraform writes runtime-config entries into\n // `dist/{projectRoot}/runtime-config` at apply time, and other terraform\n // projects contribute their own entries to the same directory. Without\n // explicit outputs, Nx infers `dist/{projectRoot}` as this target's\n // cached output and, on a cache hit, restores the cached copy over the\n // freshly-applied config — wiping the very values consumers read. Declare\n // no outputs so Nx never treats runtime config as a cacheable artifact.\n updateJson(\n tree,\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'project.json'),\n (projectConfig: ProjectConfiguration) => {\n projectConfig.targets ??= {};\n projectConfig.targets.build ??= {};\n projectConfig.targets.build.outputs = [];\n return projectConfig;\n },\n );\n\n tree.delete(joinPathFragments(terraformLibPath, 'src', 'main.tf'));\n\n // Create the metrics.tf file with empty initial values\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'terraform'),\n terraformLibPath,\n { ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n await formatFilesInSubtree(tree);\n }\n }\n}\n\nconst updateGitignore = (tree: Tree) => {\n const gitignore = tree.exists('.gitignore')\n ? tree.read('.gitignore', 'utf-8')\n : '';\n const regex = /runtime-config.json/gm;\n const hasRuntimeConfig = regex.test(gitignore ?? '');\n if (hasRuntimeConfig) {\n return;\n }\n tree.write('.gitignore', `${gitignore}\\n\\nruntime-config.json`);\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","terraformProjectGenerator","tsProjectGenerator","readAwsNxPluginConfig","addDependenciesToPackageJson","formatFilesInSubtree","esmVars","getNpmScopePrefix","getPackageManagerDisplayCommands","PACKAGES_DIR","SHARED_CONSTRUCTS_DEPENDENCIES","SHARED_CONSTRUCTS_DIR","SHARED_CONSTRUCTS_NAME","SHARED_TERRAFORM_DIR","SHARED_TERRAFORM_NAME","terraformProviderVersions","withVersions","sharedConstructsGenerator","tree","options","declaration","iac","npmScopePrefix","updateGitignore","exists","name","directory","subDirectory","delete","dirname","scopeAlias","tags","overwriteStrategy","KeepExisting","fullyQualifiedName","pkgMgrCmd","exec","Overwrite","terraformLibPath","type","projectConfig","targets","build","outputs","gitignore","read","regex","hasRuntimeConfig","test","write"],"mappings":"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"}
@@ -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 { DependencyDeclaration, MustDeclare } from './declared-dependencies';
6
+ import type { DependencyDeclaration, MustDeclare } from './declared-dependencies.js';
7
7
  /** Dependencies a caller must declare to use the shared DynamoDB scripts. */
8
8
  export declare const SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES: readonly [{
9
9
  readonly name: "@aws-sdk/client-dynamodb";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-dynamodb-scripts.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 type {\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport {\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from './shared-constructs-constants';\nimport { ensureSharedScriptsProject } from './shared-scripts';\nimport { type ITsDepVersion, withVersions } from './versions';\n\n/** Dependencies a caller must declare to use the shared DynamoDB scripts. */\nexport const SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES = [\n { name: '@aws-sdk/client-dynamodb' },\n { name: 'tsx' },\n] as const satisfies readonly { name: ITsDepVersion }[];\n\n/**\n * Ensures the shared scripts package exists and adds DynamoDB local-dev scripts\n * to packages/common/scripts/src/dynamodb/. Used by both ts#dynamodb and\n * py#dynamodb so a single set of TypeScript scripts serves both.\n */\nexport async function sharedDynamoDBScriptsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n declaration: D & MustDeclare<typeof SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES, D>,\n): Promise<void> {\n const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);\n\n await ensureSharedScriptsProject(tree);\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'dynamodb',\n ),\n joinPathFragments(scriptsDir, 'src', 'dynamodb'),\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n addDependenciesToPackageJson(\n tree,\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES\n >,\n ['@aws-sdk/client-dynamodb'],\n ),\n {},\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'package.json'),\n );\n addDependenciesToPackageJson(\n tree,\n {},\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES\n >,\n ['tsx'],\n ),\n );\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","PACKAGES_DIR","SHARED_SCRIPTS_DIR","ensureSharedScriptsProject","withVersions","SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES","name","sharedDynamoDBScriptsGenerator","tree","declaration","scriptsDir","dirname","overwriteStrategy","KeepExisting"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AAKpB,SAASC,4BAA4B,QAAQ,oBAAiB;AAC9D,SACEC,YAAY,EACZC,kBAAkB,QACb,mCAAgC;AACvC,SAASC,0BAA0B,QAAQ,sBAAmB;AAC9D,SAA6BC,YAAY,QAAQ,gBAAa;AAE9D,2EAA2E,GAC3E,OAAO,MAAMC,uCAAuC;IAClD;QAAEC,MAAM;IAA2B;IACnC;QAAEA,MAAM;IAAM;CACf,CAAuD;AAExD;;;;CAIC,GACD,OAAO,eAAeC,+BAGpBC,IAAU,EACVC,WAA4E;IAE5E,MAAMC,aAAaZ,kBAAkBG,cAAcC;IAEnD,MAAMC,2BAA2BK;IAEjCX,cACEW,MACAV,kBACE,YAAYa,OAAO,EACnB,SACAT,oBACA,OACA,aAEFJ,kBAAkBY,YAAY,OAAO,aACrC,CAAC,GACD;QAAEE,mBAAmBb,kBAAkBc,YAAY;IAAC;IAGtDb,6BACEQ,MACAJ,aACEK,aAGA;QAAC;KAA2B,GAE9B,CAAC,GACDX,kBAAkBG,cAAcC,oBAAoB;IAEtDF,6BACEQ,MACA,CAAC,GACDJ,aACEK,aAGA;QAAC;KAAM;AAGb"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-dynamodb-scripts.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 type {\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies.js';\nimport { addDependenciesToPackageJson } from './dependencies.js';\nimport {\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from './shared-constructs-constants.js';\nimport { ensureSharedScriptsProject } from './shared-scripts.js';\nimport { type ITsDepVersion, withVersions } from './versions.js';\n\n/** Dependencies a caller must declare to use the shared DynamoDB scripts. */\nexport const SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES = [\n { name: '@aws-sdk/client-dynamodb' },\n { name: 'tsx' },\n] as const satisfies readonly { name: ITsDepVersion }[];\n\n/**\n * Ensures the shared scripts package exists and adds DynamoDB local-dev scripts\n * to packages/common/scripts/src/dynamodb/. Used by both ts#dynamodb and\n * py#dynamodb so a single set of TypeScript scripts serves both.\n */\nexport async function sharedDynamoDBScriptsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n declaration: D & MustDeclare<typeof SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES, D>,\n): Promise<void> {\n const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);\n\n await ensureSharedScriptsProject(tree);\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'dynamodb',\n ),\n joinPathFragments(scriptsDir, 'src', 'dynamodb'),\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n addDependenciesToPackageJson(\n tree,\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES\n >,\n ['@aws-sdk/client-dynamodb'],\n ),\n {},\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'package.json'),\n );\n addDependenciesToPackageJson(\n tree,\n {},\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES\n >,\n ['tsx'],\n ),\n );\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","PACKAGES_DIR","SHARED_SCRIPTS_DIR","ensureSharedScriptsProject","withVersions","SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES","name","sharedDynamoDBScriptsGenerator","tree","declaration","scriptsDir","dirname","overwriteStrategy","KeepExisting"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AAKpB,SAASC,4BAA4B,QAAQ,oBAAoB;AACjE,SACEC,YAAY,EACZC,kBAAkB,QACb,mCAAmC;AAC1C,SAASC,0BAA0B,QAAQ,sBAAsB;AACjE,SAA6BC,YAAY,QAAQ,gBAAgB;AAEjE,2EAA2E,GAC3E,OAAO,MAAMC,uCAAuC;IAClD;QAAEC,MAAM;IAA2B;IACnC;QAAEA,MAAM;IAAM;CACf,CAAuD;AAExD;;;;CAIC,GACD,OAAO,eAAeC,+BAGpBC,IAAU,EACVC,WAA4E;IAE5E,MAAMC,aAAaZ,kBAAkBG,cAAcC;IAEnD,MAAMC,2BAA2BK;IAEjCX,cACEW,MACAV,kBACE,YAAYa,OAAO,EACnB,SACAT,oBACA,OACA,aAEFJ,kBAAkBY,YAAY,OAAO,aACrC,CAAC,GACD;QAAEE,mBAAmBb,kBAAkBc,YAAY;IAAC;IAGtDb,6BACEQ,MACAJ,aACEK,aAGA;QAAC;KAA2B,GAE9B,CAAC,GACDX,kBAAkBG,cAAcC,oBAAoB;IAEtDF,6BACEQ,MACA,CAAC,GACDJ,aACEK,aAGA;QAAC;KAAM;AAGb"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-infra-config.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 tsProjectGenerator from '../ts/lib/generator';\nimport { formatFilesInSubtree } from './format';\nimport { esmVars } from './module-format';\nimport { getNpmScopePrefix } from './npm-scope';\nimport { getPackageManagerDisplayCommands } from './pkg-manager';\nimport {\n PACKAGES_DIR,\n SHARED_INFRA_CONFIG_DIR,\n SHARED_INFRA_CONFIG_NAME,\n} from './shared-constructs-constants';\n\n/**\n * Lazily creates the shared infra-config package at packages/common/infra-config/.\n * Contains stage configuration types and the user's stage-to-credential mappings.\n * Importable from any package via ts project references.\n */\nexport async function sharedInfraConfigGenerator(tree: Tree): Promise<void> {\n const configDir = joinPathFragments(PACKAGES_DIR, SHARED_INFRA_CONFIG_DIR);\n\n // Don't recreate if it already exists\n if (tree.exists(joinPathFragments(configDir, 'project.json'))) {\n return;\n }\n\n const npmScopePrefix = getNpmScopePrefix(tree);\n const displayCmds = getPackageManagerDisplayCommands();\n\n await tsProjectGenerator(tree, {\n name: SHARED_INFRA_CONFIG_NAME,\n directory: PACKAGES_DIR,\n subDirectory: SHARED_INFRA_CONFIG_DIR,\n });\n\n // Replace default src/ with our templates\n tree.delete(joinPathFragments(configDir, 'src'));\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_INFRA_CONFIG_DIR,\n 'src',\n ),\n joinPathFragments(configDir, 'src'),\n {\n pkgMgrRunNx: `${displayCmds.exec} nx`,\n ...esmVars(tree),\n },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // Generate README\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'),\n configDir,\n {\n fullyQualifiedName: `${npmScopePrefix}${SHARED_INFRA_CONFIG_NAME}`,\n name: SHARED_INFRA_CONFIG_NAME,\n pkgMgrCmd: displayCmds.exec,\n },\n { overwriteStrategy: OverwriteStrategy.Overwrite },\n );\n\n await formatFilesInSubtree(tree);\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","tsProjectGenerator","formatFilesInSubtree","esmVars","getNpmScopePrefix","getPackageManagerDisplayCommands","PACKAGES_DIR","SHARED_INFRA_CONFIG_DIR","SHARED_INFRA_CONFIG_NAME","sharedInfraConfigGenerator","tree","configDir","exists","npmScopePrefix","displayCmds","name","directory","subDirectory","delete","dirname","pkgMgrRunNx","exec","overwriteStrategy","KeepExisting","fullyQualifiedName","pkgMgrCmd","Overwrite"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AACpB,OAAOC,wBAAwB,yBAAsB;AACrD,SAASC,oBAAoB,QAAQ,cAAW;AAChD,SAASC,OAAO,QAAQ,qBAAkB;AAC1C,SAASC,iBAAiB,QAAQ,iBAAc;AAChD,SAASC,gCAAgC,QAAQ,mBAAgB;AACjE,SACEC,YAAY,EACZC,uBAAuB,EACvBC,wBAAwB,QACnB,mCAAgC;AAEvC;;;;CAIC,GACD,OAAO,eAAeC,2BAA2BC,IAAU;IACzD,MAAMC,YAAYZ,kBAAkBO,cAAcC;IAElD,sCAAsC;IACtC,IAAIG,KAAKE,MAAM,CAACb,kBAAkBY,WAAW,kBAAkB;QAC7D;IACF;IAEA,MAAME,iBAAiBT,kBAAkBM;IACzC,MAAMI,cAAcT;IAEpB,MAAMJ,mBAAmBS,MAAM;QAC7BK,MAAMP;QACNQ,WAAWV;QACXW,cAAcV;IAChB;IAEA,0CAA0C;IAC1CG,KAAKQ,MAAM,CAACnB,kBAAkBY,WAAW;IACzCb,cACEY,MACAX,kBACE,YAAYoB,OAAO,EACnB,SACAZ,yBACA,QAEFR,kBAAkBY,WAAW,QAC7B;QACES,aAAa,GAAGN,YAAYO,IAAI,CAAC,GAAG,CAAC;QACrC,GAAGlB,QAAQO,KAAK;IAClB,GACA;QAAEY,mBAAmBtB,kBAAkBuB,YAAY;IAAC;IAGtD,kBAAkB;IAClBzB,cACEY,MACAX,kBAAkB,YAAYoB,OAAO,EAAE,SAAS,UAAU,WAC1DR,WACA;QACEa,oBAAoB,GAAGX,iBAAiBL,0BAA0B;QAClEO,MAAMP;QACNiB,WAAWX,YAAYO,IAAI;IAC7B,GACA;QAAEC,mBAAmBtB,kBAAkB0B,SAAS;IAAC;IAGnD,MAAMxB,qBAAqBQ;AAC7B"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-infra-config.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 tsProjectGenerator from '../ts/lib/generator.js';\nimport { formatFilesInSubtree } from './format.js';\nimport { esmVars } from './module-format.js';\nimport { getNpmScopePrefix } from './npm-scope.js';\nimport { getPackageManagerDisplayCommands } from './pkg-manager.js';\nimport {\n PACKAGES_DIR,\n SHARED_INFRA_CONFIG_DIR,\n SHARED_INFRA_CONFIG_NAME,\n} from './shared-constructs-constants.js';\n\n/**\n * Lazily creates the shared infra-config package at packages/common/infra-config/.\n * Contains stage configuration types and the user's stage-to-credential mappings.\n * Importable from any package via ts project references.\n */\nexport async function sharedInfraConfigGenerator(tree: Tree): Promise<void> {\n const configDir = joinPathFragments(PACKAGES_DIR, SHARED_INFRA_CONFIG_DIR);\n\n // Don't recreate if it already exists\n if (tree.exists(joinPathFragments(configDir, 'project.json'))) {\n return;\n }\n\n const npmScopePrefix = getNpmScopePrefix(tree);\n const displayCmds = getPackageManagerDisplayCommands();\n\n await tsProjectGenerator(tree, {\n name: SHARED_INFRA_CONFIG_NAME,\n directory: PACKAGES_DIR,\n subDirectory: SHARED_INFRA_CONFIG_DIR,\n });\n\n // Replace default src/ with our templates\n tree.delete(joinPathFragments(configDir, 'src'));\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_INFRA_CONFIG_DIR,\n 'src',\n ),\n joinPathFragments(configDir, 'src'),\n {\n pkgMgrRunNx: `${displayCmds.exec} nx`,\n ...esmVars(tree),\n },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // Generate README\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'),\n configDir,\n {\n fullyQualifiedName: `${npmScopePrefix}${SHARED_INFRA_CONFIG_NAME}`,\n name: SHARED_INFRA_CONFIG_NAME,\n pkgMgrCmd: displayCmds.exec,\n },\n { overwriteStrategy: OverwriteStrategy.Overwrite },\n );\n\n await formatFilesInSubtree(tree);\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","tsProjectGenerator","formatFilesInSubtree","esmVars","getNpmScopePrefix","getPackageManagerDisplayCommands","PACKAGES_DIR","SHARED_INFRA_CONFIG_DIR","SHARED_INFRA_CONFIG_NAME","sharedInfraConfigGenerator","tree","configDir","exists","npmScopePrefix","displayCmds","name","directory","subDirectory","delete","dirname","pkgMgrRunNx","exec","overwriteStrategy","KeepExisting","fullyQualifiedName","pkgMgrCmd","Overwrite"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AACpB,OAAOC,wBAAwB,yBAAyB;AACxD,SAASC,oBAAoB,QAAQ,cAAc;AACnD,SAASC,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,iBAAiB,QAAQ,iBAAiB;AACnD,SAASC,gCAAgC,QAAQ,mBAAmB;AACpE,SACEC,YAAY,EACZC,uBAAuB,EACvBC,wBAAwB,QACnB,mCAAmC;AAE1C;;;;CAIC,GACD,OAAO,eAAeC,2BAA2BC,IAAU;IACzD,MAAMC,YAAYZ,kBAAkBO,cAAcC;IAElD,sCAAsC;IACtC,IAAIG,KAAKE,MAAM,CAACb,kBAAkBY,WAAW,kBAAkB;QAC7D;IACF;IAEA,MAAME,iBAAiBT,kBAAkBM;IACzC,MAAMI,cAAcT;IAEpB,MAAMJ,mBAAmBS,MAAM;QAC7BK,MAAMP;QACNQ,WAAWV;QACXW,cAAcV;IAChB;IAEA,0CAA0C;IAC1CG,KAAKQ,MAAM,CAACnB,kBAAkBY,WAAW;IACzCb,cACEY,MACAX,kBACE,YAAYoB,OAAO,EACnB,SACAZ,yBACA,QAEFR,kBAAkBY,WAAW,QAC7B;QACES,aAAa,GAAGN,YAAYO,IAAI,CAAC,GAAG,CAAC;QACrC,GAAGlB,QAAQO,KAAK;IAClB,GACA;QAAEY,mBAAmBtB,kBAAkBuB,YAAY;IAAC;IAGtD,kBAAkB;IAClBzB,cACEY,MACAX,kBAAkB,YAAYoB,OAAO,EAAE,SAAS,UAAU,WAC1DR,WACA;QACEa,oBAAoB,GAAGX,iBAAiBL,0BAA0B;QAClEO,MAAMP;QACNiB,WAAWX,YAAYO,IAAI;IAC7B,GACA;QAAEC,mBAAmBtB,kBAAkB0B,SAAS;IAAC;IAGnD,MAAMxB,qBAAqBQ;AAC7B"}
@@ -3,8 +3,8 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { type Tree } from '@nx/devkit';
6
- import type { DependencyDeclaration, MustDeclare } from './declared-dependencies';
7
- import { type IacMetadata } from './shared-constructs-constants';
6
+ import type { DependencyDeclaration, MustDeclare } from './declared-dependencies.js';
7
+ import { type IacMetadata } from './shared-constructs-constants.js';
8
8
  /**
9
9
  * Dependencies a caller must declare to use the shared infra scripts.
10
10
  *
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-infra-scripts.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 type {\n DeclaredTsDependency,\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport { formatFilesInSubtree } from './format';\nimport { esmVars } from './module-format';\nimport { getNpmScopePrefix } from './npm-scope';\nimport { getPackageManagerDisplayCommands } from './pkg-manager';\nimport {\n generatedInfrastructure,\n type IacMetadata,\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n SHARED_SCRIPTS_NAME,\n} from './shared-constructs-constants';\nimport { ensureSharedScriptsProject } from './shared-scripts';\nimport { type ITsDepVersion, withVersions } from './versions';\n\n/**\n * Dependencies a caller must declare to use the shared infra scripts.\n *\n * Gated on infrastructure having been generated, since the scripts project is\n * only created on that branch.\n */\nexport const SHARED_INFRA_SCRIPTS_DEPENDENCIES = [\n { name: '@aws-sdk/client-sts', when: generatedInfrastructure },\n { name: '@aws-sdk/credential-providers', when: generatedInfrastructure },\n] as const satisfies readonly DeclaredTsDependency<\n ITsDepVersion,\n IacMetadata\n>[];\n\n/**\n * Ensures the shared scripts package exists and adds infra-deploy/infra-destroy\n * scripts to packages/common/scripts/src/infra/. Called by ts#infra when\n * stageConfig is enabled.\n */\nexport async function sharedInfraScriptsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n declaration: D & MustDeclare<typeof SHARED_INFRA_SCRIPTS_DEPENDENCIES, D>,\n): Promise<void> {\n const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);\n\n await ensureSharedScriptsProject(tree);\n\n const npmScopePrefix = getNpmScopePrefix(tree);\n const scopeAlias = npmScopePrefix;\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'infra',\n ),\n joinPathFragments(scriptsDir, 'src', 'infra'),\n { scopeAlias, ...esmVars(tree) },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // Used by deploy-time scripts for assumeRole\n addDependenciesToPackageJson(\n tree,\n {},\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_INFRA_SCRIPTS_DEPENDENCIES\n >,\n ['@aws-sdk/client-sts', '@aws-sdk/credential-providers'],\n ),\n joinPathFragments(\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR),\n 'package.json',\n ),\n );\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'),\n scriptsDir,\n {\n fullyQualifiedName: `${npmScopePrefix}${SHARED_SCRIPTS_NAME}`,\n name: SHARED_SCRIPTS_NAME,\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n },\n { overwriteStrategy: OverwriteStrategy.Overwrite },\n );\n\n await formatFilesInSubtree(tree);\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","formatFilesInSubtree","esmVars","getNpmScopePrefix","getPackageManagerDisplayCommands","generatedInfrastructure","PACKAGES_DIR","SHARED_SCRIPTS_DIR","SHARED_SCRIPTS_NAME","ensureSharedScriptsProject","withVersions","SHARED_INFRA_SCRIPTS_DEPENDENCIES","name","when","sharedInfraScriptsGenerator","tree","declaration","scriptsDir","npmScopePrefix","scopeAlias","dirname","overwriteStrategy","KeepExisting","fullyQualifiedName","pkgMgrCmd","exec","Overwrite"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AAMpB,SAASC,4BAA4B,QAAQ,oBAAiB;AAC9D,SAASC,oBAAoB,QAAQ,cAAW;AAChD,SAASC,OAAO,QAAQ,qBAAkB;AAC1C,SAASC,iBAAiB,QAAQ,iBAAc;AAChD,SAASC,gCAAgC,QAAQ,mBAAgB;AACjE,SACEC,uBAAuB,EAEvBC,YAAY,EACZC,kBAAkB,EAClBC,mBAAmB,QACd,mCAAgC;AACvC,SAASC,0BAA0B,QAAQ,sBAAmB;AAC9D,SAA6BC,YAAY,QAAQ,gBAAa;AAE9D;;;;;CAKC,GACD,OAAO,MAAMC,oCAAoC;IAC/C;QAAEC,MAAM;QAAuBC,MAAMR;IAAwB;IAC7D;QAAEO,MAAM;QAAiCC,MAAMR;IAAwB;CACxE,CAGG;AAEJ;;;;CAIC,GACD,OAAO,eAAeS,4BAGpBC,IAAU,EACVC,WAAyE;IAEzE,MAAMC,aAAanB,kBAAkBQ,cAAcC;IAEnD,MAAME,2BAA2BM;IAEjC,MAAMG,iBAAiBf,kBAAkBY;IACzC,MAAMI,aAAaD;IAEnBrB,cACEkB,MACAjB,kBACE,YAAYsB,OAAO,EACnB,SACAb,oBACA,OACA,UAEFT,kBAAkBmB,YAAY,OAAO,UACrC;QAAEE;QAAY,GAAGjB,QAAQa,KAAK;IAAC,GAC/B;QAAEM,mBAAmBtB,kBAAkBuB,YAAY;IAAC;IAGtD,6CAA6C;IAC7CtB,6BACEe,MACA,CAAC,GACDL,aACEM,aAGA;QAAC;QAAuB;KAAgC,GAE1DlB,kBACEA,kBAAkBQ,cAAcC,qBAChC;IAIJV,cACEkB,MACAjB,kBAAkB,YAAYsB,OAAO,EAAE,SAAS,UAAU,WAC1DH,YACA;QACEM,oBAAoB,GAAGL,iBAAiBV,qBAAqB;QAC7DI,MAAMJ;QACNgB,WAAWpB,mCAAmCqB,IAAI;IACpD,GACA;QAAEJ,mBAAmBtB,kBAAkB2B,SAAS;IAAC;IAGnD,MAAMzB,qBAAqBc;AAC7B"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-infra-scripts.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 type {\n DeclaredTsDependency,\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies.js';\nimport { addDependenciesToPackageJson } from './dependencies.js';\nimport { formatFilesInSubtree } from './format.js';\nimport { esmVars } from './module-format.js';\nimport { getNpmScopePrefix } from './npm-scope.js';\nimport { getPackageManagerDisplayCommands } from './pkg-manager.js';\nimport {\n generatedInfrastructure,\n type IacMetadata,\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n SHARED_SCRIPTS_NAME,\n} from './shared-constructs-constants.js';\nimport { ensureSharedScriptsProject } from './shared-scripts.js';\nimport { type ITsDepVersion, withVersions } from './versions.js';\n\n/**\n * Dependencies a caller must declare to use the shared infra scripts.\n *\n * Gated on infrastructure having been generated, since the scripts project is\n * only created on that branch.\n */\nexport const SHARED_INFRA_SCRIPTS_DEPENDENCIES = [\n { name: '@aws-sdk/client-sts', when: generatedInfrastructure },\n { name: '@aws-sdk/credential-providers', when: generatedInfrastructure },\n] as const satisfies readonly DeclaredTsDependency<\n ITsDepVersion,\n IacMetadata\n>[];\n\n/**\n * Ensures the shared scripts package exists and adds infra-deploy/infra-destroy\n * scripts to packages/common/scripts/src/infra/. Called by ts#infra when\n * stageConfig is enabled.\n */\nexport async function sharedInfraScriptsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n declaration: D & MustDeclare<typeof SHARED_INFRA_SCRIPTS_DEPENDENCIES, D>,\n): Promise<void> {\n const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);\n\n await ensureSharedScriptsProject(tree);\n\n const npmScopePrefix = getNpmScopePrefix(tree);\n const scopeAlias = npmScopePrefix;\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'infra',\n ),\n joinPathFragments(scriptsDir, 'src', 'infra'),\n { scopeAlias, ...esmVars(tree) },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // Used by deploy-time scripts for assumeRole\n addDependenciesToPackageJson(\n tree,\n {},\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_INFRA_SCRIPTS_DEPENDENCIES\n >,\n ['@aws-sdk/client-sts', '@aws-sdk/credential-providers'],\n ),\n joinPathFragments(\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR),\n 'package.json',\n ),\n );\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'),\n scriptsDir,\n {\n fullyQualifiedName: `${npmScopePrefix}${SHARED_SCRIPTS_NAME}`,\n name: SHARED_SCRIPTS_NAME,\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n },\n { overwriteStrategy: OverwriteStrategy.Overwrite },\n );\n\n await formatFilesInSubtree(tree);\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","formatFilesInSubtree","esmVars","getNpmScopePrefix","getPackageManagerDisplayCommands","generatedInfrastructure","PACKAGES_DIR","SHARED_SCRIPTS_DIR","SHARED_SCRIPTS_NAME","ensureSharedScriptsProject","withVersions","SHARED_INFRA_SCRIPTS_DEPENDENCIES","name","when","sharedInfraScriptsGenerator","tree","declaration","scriptsDir","npmScopePrefix","scopeAlias","dirname","overwriteStrategy","KeepExisting","fullyQualifiedName","pkgMgrCmd","exec","Overwrite"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AAMpB,SAASC,4BAA4B,QAAQ,oBAAoB;AACjE,SAASC,oBAAoB,QAAQ,cAAc;AACnD,SAASC,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,iBAAiB,QAAQ,iBAAiB;AACnD,SAASC,gCAAgC,QAAQ,mBAAmB;AACpE,SACEC,uBAAuB,EAEvBC,YAAY,EACZC,kBAAkB,EAClBC,mBAAmB,QACd,mCAAmC;AAC1C,SAASC,0BAA0B,QAAQ,sBAAsB;AACjE,SAA6BC,YAAY,QAAQ,gBAAgB;AAEjE;;;;;CAKC,GACD,OAAO,MAAMC,oCAAoC;IAC/C;QAAEC,MAAM;QAAuBC,MAAMR;IAAwB;IAC7D;QAAEO,MAAM;QAAiCC,MAAMR;IAAwB;CACxE,CAGG;AAEJ;;;;CAIC,GACD,OAAO,eAAeS,4BAGpBC,IAAU,EACVC,WAAyE;IAEzE,MAAMC,aAAanB,kBAAkBQ,cAAcC;IAEnD,MAAME,2BAA2BM;IAEjC,MAAMG,iBAAiBf,kBAAkBY;IACzC,MAAMI,aAAaD;IAEnBrB,cACEkB,MACAjB,kBACE,YAAYsB,OAAO,EACnB,SACAb,oBACA,OACA,UAEFT,kBAAkBmB,YAAY,OAAO,UACrC;QAAEE;QAAY,GAAGjB,QAAQa,KAAK;IAAC,GAC/B;QAAEM,mBAAmBtB,kBAAkBuB,YAAY;IAAC;IAGtD,6CAA6C;IAC7CtB,6BACEe,MACA,CAAC,GACDL,aACEM,aAGA;QAAC;QAAuB;KAAgC,GAE1DlB,kBACEA,kBAAkBQ,cAAcC,qBAChC;IAIJV,cACEkB,MACAjB,kBAAkB,YAAYsB,OAAO,EAAE,SAAS,UAAU,WAC1DH,YACA;QACEM,oBAAoB,GAAGL,iBAAiBV,qBAAqB;QAC7DI,MAAMJ;QACNgB,WAAWpB,mCAAmCqB,IAAI;IACpD,GACA;QAAEJ,mBAAmBtB,kBAAkB2B,SAAS;IAAC;IAGnD,MAAMzB,qBAAqBc;AAC7B"}
@@ -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 { DependencyDeclaration, MustDeclare } from './declared-dependencies';
6
+ import type { DependencyDeclaration, MustDeclare } from './declared-dependencies.js';
7
7
  /** Dependencies a caller must declare to use the shared RDB scripts. */
8
8
  export declare const SHARED_RDB_SCRIPTS_DEPENDENCIES: readonly [{
9
9
  readonly name: "pg";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-rdb-scripts.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 type {\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport {\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from './shared-constructs-constants';\nimport { ensureSharedScriptsProject } from './shared-scripts';\nimport { type ITsDepVersion, withVersions } from './versions';\n\n/** Dependencies a caller must declare to use the shared RDB scripts. */\nexport const SHARED_RDB_SCRIPTS_DEPENDENCIES = [\n { name: 'pg' },\n { name: '@types/pg' },\n { name: 'mariadb' },\n { name: 'tsx' },\n] as const satisfies readonly { name: ITsDepVersion }[];\n\n/**\n * Ensures the shared scripts package exists and adds RDB local-dev scripts\n * to packages/common/scripts/src/rdb/. Used by ts#rdb.\n *\n * Engine-agnostic scripts (pull-image, start-container) are always vended.\n * Only the wait-for-db script for the requested engine is vended so that\n * projects do not reference database client packages they don't install.\n * The engine-specific file names allow postgres and mysql projects to\n * coexist in the same workspace.\n */\nexport async function sharedRdbScriptsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n engine: 'postgres' | 'mysql',\n declaration: D & MustDeclare<typeof SHARED_RDB_SCRIPTS_DEPENDENCIES, D>,\n): Promise<void> {\n await ensureSharedScriptsProject(tree);\n\n const rdbScriptsDir = joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'rdb',\n );\n const targetDir = joinPathFragments(\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n 'src',\n 'rdb',\n );\n\n generateFiles(\n tree,\n joinPathFragments(rdbScriptsDir, 'shared'),\n targetDir,\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n generateFiles(\n tree,\n joinPathFragments(rdbScriptsDir, engine),\n targetDir,\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // The engine's wait-for-db script imports the database client, so declare it\n // in the scripts project's own package.json (tsx runs the scripts and lives\n // in the workspace root devDependencies).\n const clientDeps: (typeof SHARED_RDB_SCRIPTS_DEPENDENCIES)[number]['name'][] =\n engine === 'postgres' ? ['pg'] : ['mariadb'];\n const clientDevDeps: (typeof SHARED_RDB_SCRIPTS_DEPENDENCIES)[number]['name'][] =\n engine === 'postgres' ? ['@types/pg'] : [];\n addDependenciesToPackageJson(\n tree,\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_RDB_SCRIPTS_DEPENDENCIES\n >,\n clientDeps,\n ),\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_RDB_SCRIPTS_DEPENDENCIES\n >,\n clientDevDeps,\n ),\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'package.json'),\n );\n addDependenciesToPackageJson(\n tree,\n {},\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_RDB_SCRIPTS_DEPENDENCIES\n >,\n ['tsx'],\n ),\n );\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","PACKAGES_DIR","SHARED_SCRIPTS_DIR","ensureSharedScriptsProject","withVersions","SHARED_RDB_SCRIPTS_DEPENDENCIES","name","sharedRdbScriptsGenerator","tree","engine","declaration","rdbScriptsDir","dirname","targetDir","overwriteStrategy","KeepExisting","clientDeps","clientDevDeps"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AAKpB,SAASC,4BAA4B,QAAQ,oBAAiB;AAC9D,SACEC,YAAY,EACZC,kBAAkB,QACb,mCAAgC;AACvC,SAASC,0BAA0B,QAAQ,sBAAmB;AAC9D,SAA6BC,YAAY,QAAQ,gBAAa;AAE9D,sEAAsE,GACtE,OAAO,MAAMC,kCAAkC;IAC7C;QAAEC,MAAM;IAAK;IACb;QAAEA,MAAM;IAAY;IACpB;QAAEA,MAAM;IAAU;IAClB;QAAEA,MAAM;IAAM;CACf,CAAuD;AAExD;;;;;;;;;CASC,GACD,OAAO,eAAeC,0BAGpBC,IAAU,EACVC,MAA4B,EAC5BC,WAAuE;IAEvE,MAAMP,2BAA2BK;IAEjC,MAAMG,gBAAgBb,kBACpB,YAAYc,OAAO,EACnB,SACAV,oBACA,OACA;IAEF,MAAMW,YAAYf,kBAChBG,cACAC,oBACA,OACA;IAGFL,cACEW,MACAV,kBAAkBa,eAAe,WACjCE,WACA,CAAC,GACD;QAAEC,mBAAmBf,kBAAkBgB,YAAY;IAAC;IAEtDlB,cACEW,MACAV,kBAAkBa,eAAeF,SACjCI,WACA,CAAC,GACD;QAAEC,mBAAmBf,kBAAkBgB,YAAY;IAAC;IAGtD,6EAA6E;IAC7E,4EAA4E;IAC5E,0CAA0C;IAC1C,MAAMC,aACJP,WAAW,aAAa;QAAC;KAAK,GAAG;QAAC;KAAU;IAC9C,MAAMQ,gBACJR,WAAW,aAAa;QAAC;KAAY,GAAG,EAAE;IAC5CT,6BACEQ,MACAJ,aACEM,aAGAM,aAEFZ,aACEM,aAGAO,gBAEFnB,kBAAkBG,cAAcC,oBAAoB;IAEtDF,6BACEQ,MACA,CAAC,GACDJ,aACEM,aAGA;QAAC;KAAM;AAGb"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-rdb-scripts.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 type {\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies.js';\nimport { addDependenciesToPackageJson } from './dependencies.js';\nimport {\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from './shared-constructs-constants.js';\nimport { ensureSharedScriptsProject } from './shared-scripts.js';\nimport { type ITsDepVersion, withVersions } from './versions.js';\n\n/** Dependencies a caller must declare to use the shared RDB scripts. */\nexport const SHARED_RDB_SCRIPTS_DEPENDENCIES = [\n { name: 'pg' },\n { name: '@types/pg' },\n { name: 'mariadb' },\n { name: 'tsx' },\n] as const satisfies readonly { name: ITsDepVersion }[];\n\n/**\n * Ensures the shared scripts package exists and adds RDB local-dev scripts\n * to packages/common/scripts/src/rdb/. Used by ts#rdb.\n *\n * Engine-agnostic scripts (pull-image, start-container) are always vended.\n * Only the wait-for-db script for the requested engine is vended so that\n * projects do not reference database client packages they don't install.\n * The engine-specific file names allow postgres and mysql projects to\n * coexist in the same workspace.\n */\nexport async function sharedRdbScriptsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n engine: 'postgres' | 'mysql',\n declaration: D & MustDeclare<typeof SHARED_RDB_SCRIPTS_DEPENDENCIES, D>,\n): Promise<void> {\n await ensureSharedScriptsProject(tree);\n\n const rdbScriptsDir = joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'rdb',\n );\n const targetDir = joinPathFragments(\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n 'src',\n 'rdb',\n );\n\n generateFiles(\n tree,\n joinPathFragments(rdbScriptsDir, 'shared'),\n targetDir,\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n generateFiles(\n tree,\n joinPathFragments(rdbScriptsDir, engine),\n targetDir,\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // The engine's wait-for-db script imports the database client, so declare it\n // in the scripts project's own package.json (tsx runs the scripts and lives\n // in the workspace root devDependencies).\n const clientDeps: (typeof SHARED_RDB_SCRIPTS_DEPENDENCIES)[number]['name'][] =\n engine === 'postgres' ? ['pg'] : ['mariadb'];\n const clientDevDeps: (typeof SHARED_RDB_SCRIPTS_DEPENDENCIES)[number]['name'][] =\n engine === 'postgres' ? ['@types/pg'] : [];\n addDependenciesToPackageJson(\n tree,\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_RDB_SCRIPTS_DEPENDENCIES\n >,\n clientDeps,\n ),\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_RDB_SCRIPTS_DEPENDENCIES\n >,\n clientDevDeps,\n ),\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'package.json'),\n );\n addDependenciesToPackageJson(\n tree,\n {},\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_RDB_SCRIPTS_DEPENDENCIES\n >,\n ['tsx'],\n ),\n );\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","PACKAGES_DIR","SHARED_SCRIPTS_DIR","ensureSharedScriptsProject","withVersions","SHARED_RDB_SCRIPTS_DEPENDENCIES","name","sharedRdbScriptsGenerator","tree","engine","declaration","rdbScriptsDir","dirname","targetDir","overwriteStrategy","KeepExisting","clientDeps","clientDevDeps"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AAKpB,SAASC,4BAA4B,QAAQ,oBAAoB;AACjE,SACEC,YAAY,EACZC,kBAAkB,QACb,mCAAmC;AAC1C,SAASC,0BAA0B,QAAQ,sBAAsB;AACjE,SAA6BC,YAAY,QAAQ,gBAAgB;AAEjE,sEAAsE,GACtE,OAAO,MAAMC,kCAAkC;IAC7C;QAAEC,MAAM;IAAK;IACb;QAAEA,MAAM;IAAY;IACpB;QAAEA,MAAM;IAAU;IAClB;QAAEA,MAAM;IAAM;CACf,CAAuD;AAExD;;;;;;;;;CASC,GACD,OAAO,eAAeC,0BAGpBC,IAAU,EACVC,MAA4B,EAC5BC,WAAuE;IAEvE,MAAMP,2BAA2BK;IAEjC,MAAMG,gBAAgBb,kBACpB,YAAYc,OAAO,EACnB,SACAV,oBACA,OACA;IAEF,MAAMW,YAAYf,kBAChBG,cACAC,oBACA,OACA;IAGFL,cACEW,MACAV,kBAAkBa,eAAe,WACjCE,WACA,CAAC,GACD;QAAEC,mBAAmBf,kBAAkBgB,YAAY;IAAC;IAEtDlB,cACEW,MACAV,kBAAkBa,eAAeF,SACjCI,WACA,CAAC,GACD;QAAEC,mBAAmBf,kBAAkBgB,YAAY;IAAC;IAGtD,6EAA6E;IAC7E,4EAA4E;IAC5E,0CAA0C;IAC1C,MAAMC,aACJP,WAAW,aAAa;QAAC;KAAK,GAAG;QAAC;KAAU;IAC9C,MAAMQ,gBACJR,WAAW,aAAa;QAAC;KAAY,GAAG,EAAE;IAC5CT,6BACEQ,MACAJ,aACEM,aAGAM,aAEFZ,aACEM,aAGAO,gBAEFnB,kBAAkBG,cAAcC,oBAAoB;IAEtDF,6BACEQ,MACA,CAAC,GACDJ,aACEM,aAGA;QAAC;KAAM;AAGb"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-scripts.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { joinPathFragments, type Tree } from '@nx/devkit';\nimport tsProjectGenerator from '../ts/lib/generator';\nimport {\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n SHARED_SCRIPTS_NAME,\n} from './shared-constructs-constants';\n\n/**\n * Lazily creates the shared scripts package at packages/common/scripts/.\n */\nexport async function ensureSharedScriptsProject(tree: Tree): Promise<void> {\n const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);\n if (tree.exists(joinPathFragments(scriptsDir, 'project.json'))) {\n return;\n }\n await tsProjectGenerator(tree, {\n name: SHARED_SCRIPTS_NAME,\n directory: PACKAGES_DIR,\n subDirectory: SHARED_SCRIPTS_DIR,\n });\n tree.delete(joinPathFragments(scriptsDir, 'src'));\n}\n"],"names":["joinPathFragments","tsProjectGenerator","PACKAGES_DIR","SHARED_SCRIPTS_DIR","SHARED_SCRIPTS_NAME","ensureSharedScriptsProject","tree","scriptsDir","exists","name","directory","subDirectory","delete"],"mappings":"AAAA;;;CAGC,GACD,SAASA,iBAAiB,QAAmB,aAAa;AAC1D,OAAOC,wBAAwB,yBAAsB;AACrD,SACEC,YAAY,EACZC,kBAAkB,EAClBC,mBAAmB,QACd,mCAAgC;AAEvC;;CAEC,GACD,OAAO,eAAeC,2BAA2BC,IAAU;IACzD,MAAMC,aAAaP,kBAAkBE,cAAcC;IACnD,IAAIG,KAAKE,MAAM,CAACR,kBAAkBO,YAAY,kBAAkB;QAC9D;IACF;IACA,MAAMN,mBAAmBK,MAAM;QAC7BG,MAAML;QACNM,WAAWR;QACXS,cAAcR;IAChB;IACAG,KAAKM,MAAM,CAACZ,kBAAkBO,YAAY;AAC5C"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-scripts.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { joinPathFragments, type Tree } from '@nx/devkit';\nimport tsProjectGenerator from '../ts/lib/generator.js';\nimport {\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n SHARED_SCRIPTS_NAME,\n} from './shared-constructs-constants.js';\n\n/**\n * Lazily creates the shared scripts package at packages/common/scripts/.\n */\nexport async function ensureSharedScriptsProject(tree: Tree): Promise<void> {\n const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);\n if (tree.exists(joinPathFragments(scriptsDir, 'project.json'))) {\n return;\n }\n await tsProjectGenerator(tree, {\n name: SHARED_SCRIPTS_NAME,\n directory: PACKAGES_DIR,\n subDirectory: SHARED_SCRIPTS_DIR,\n });\n tree.delete(joinPathFragments(scriptsDir, 'src'));\n}\n"],"names":["joinPathFragments","tsProjectGenerator","PACKAGES_DIR","SHARED_SCRIPTS_DIR","SHARED_SCRIPTS_NAME","ensureSharedScriptsProject","tree","scriptsDir","exists","name","directory","subDirectory","delete"],"mappings":"AAAA;;;CAGC,GACD,SAASA,iBAAiB,QAAmB,aAAa;AAC1D,OAAOC,wBAAwB,yBAAyB;AACxD,SACEC,YAAY,EACZC,kBAAkB,EAClBC,mBAAmB,QACd,mCAAmC;AAE1C;;CAEC,GACD,OAAO,eAAeC,2BAA2BC,IAAU;IACzD,MAAMC,aAAaP,kBAAkBE,cAAcC;IACnD,IAAIG,KAAKE,MAAM,CAACR,kBAAkBO,YAAY,kBAAkB;QAC9D;IACF;IACA,MAAMN,mBAAmBK,MAAM;QAC7BG,MAAML;QACNM,WAAWR;QACXS,cAAcR;IAChB;IACAG,KAAKM,MAAM,CAACZ,kBAAkBO,YAAY;AAC5C"}
@@ -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 DependencyDeclaration, type MustDeclare } from './declared-dependencies';
6
+ import { type DependencyDeclaration, type MustDeclare } from './declared-dependencies.js';
7
7
  /** Dependencies a caller must declare to use the shared shadcn project. */
8
8
  export declare const SHADCN_DEPENDENCIES: readonly [{
9
9
  readonly name: "react";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-shadcn.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 updateJson,\n} from '@nx/devkit';\nimport tsProjectGenerator from '../ts/lib/generator';\nimport { configureTsProject } from '../ts/lib/ts-project-utils';\nimport { VITEST_DEPENDENCIES } from '../ts/lib/vitest';\nimport {\n type DependencyDeclaration,\n declaredNames,\n forDependencies,\n type MustDeclare,\n} from './declared-dependencies';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport { formatFilesInSubtree } from './format';\nimport { esmVars } from './module-format';\nimport { getNpmScopePrefix } from './npm-scope';\nimport {\n PACKAGES_DIR,\n SHARED_SHADCN_DIR,\n SHARED_SHADCN_NAME,\n} from './shared-constructs-constants';\nimport { type ITsDepVersion, withVersions } from './versions';\n\n/** Dependencies a caller must declare to use the shared shadcn project. */\nexport const SHADCN_DEPENDENCIES = [\n { name: 'react' },\n { name: 'react-dom' },\n { name: 'class-variance-authority' },\n { name: 'clsx' },\n { name: 'tailwind-merge' },\n { name: 'lucide-react' },\n { name: 'tw-animate-css' },\n { name: 'radix-ui' },\n ...VITEST_DEPENDENCIES,\n] as const satisfies readonly { name: ITsDepVersion }[];\n\nexport async function sharedShadcnGenerator<\n const D extends DependencyDeclaration,\n>(tree: Tree, declaration: D & MustDeclare<typeof SHADCN_DEPENDENCIES, D>) {\n const npmScopePrefix = getNpmScopePrefix(tree);\n const scopeAlias = npmScopePrefix;\n const sharedShadcnAlias = `${scopeAlias}${SHARED_SHADCN_NAME}`;\n const fullyQualifiedName = `${npmScopePrefix}${SHARED_SHADCN_NAME}`;\n const libraryRoot = joinPathFragments(PACKAGES_DIR, SHARED_SHADCN_DIR);\n const shadcnSrcRoot = joinPathFragments(libraryRoot, 'src');\n\n if (!tree.exists(joinPathFragments(libraryRoot, 'project.json'))) {\n await tsProjectGenerator(tree, {\n name: SHARED_SHADCN_NAME,\n directory: PACKAGES_DIR,\n subDirectory: SHARED_SHADCN_DIR,\n });\n\n tree.delete(shadcnSrcRoot);\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', SHARED_SHADCN_DIR, 'src'),\n shadcnSrcRoot,\n {\n scopeAlias,\n ...esmVars(tree),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SHADCN_DIR,\n 'readme',\n ),\n libraryRoot,\n {\n fullyQualifiedName,\n scopeAlias,\n },\n {\n overwriteStrategy: OverwriteStrategy.Overwrite,\n },\n );\n\n await configureTsProject(\n tree,\n {\n dir: libraryRoot,\n fullyQualifiedName,\n },\n forDependencies<typeof SHADCN_DEPENDENCIES>(declaration),\n );\n\n updateJson(\n tree,\n joinPathFragments(libraryRoot, 'tsconfig.lib.json'),\n (json) => ({\n ...json,\n compilerOptions: {\n ...json.compilerOptions,\n jsx: 'react-jsx',\n module: 'preserve',\n moduleResolution: 'bundler',\n lib: Array.from(\n new Set([...(json.compilerOptions?.lib ?? []), 'DOM']),\n ),\n },\n include: Array.from(new Set([...(json.include ?? []), 'src/**/*.tsx'])),\n }),\n );\n\n addDependenciesToPackageJson(\n tree,\n withVersions(\n forDependencies<typeof SHADCN_DEPENDENCIES>(declaration),\n declaredNames(SHADCN_DEPENDENCIES),\n ),\n {},\n joinPathFragments(libraryRoot, 'package.json'),\n );\n }\n\n updateJson(tree, 'tsconfig.base.json', (json) => ({\n ...json,\n compilerOptions: {\n ...json.compilerOptions,\n paths: {\n ...(json.compilerOptions?.paths ?? {}),\n [`${sharedShadcnAlias}/*`]: [\n `./${joinPathFragments(libraryRoot, 'src', '*')}`,\n ],\n },\n },\n }));\n\n // components.json lives in the package so `shadcn add` runs there and\n // installs component dependencies into the package's own manifest.\n if (!tree.exists(joinPathFragments(libraryRoot, 'components.json'))) {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'shadcn'),\n libraryRoot,\n {\n sharedShadcnAlias,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n }\n\n await formatFilesInSubtree(tree);\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","tsProjectGenerator","configureTsProject","VITEST_DEPENDENCIES","declaredNames","forDependencies","addDependenciesToPackageJson","formatFilesInSubtree","esmVars","getNpmScopePrefix","PACKAGES_DIR","SHARED_SHADCN_DIR","SHARED_SHADCN_NAME","withVersions","SHADCN_DEPENDENCIES","name","sharedShadcnGenerator","tree","declaration","npmScopePrefix","scopeAlias","sharedShadcnAlias","fullyQualifiedName","libraryRoot","shadcnSrcRoot","exists","directory","subDirectory","delete","dirname","overwriteStrategy","KeepExisting","Overwrite","dir","json","compilerOptions","jsx","module","moduleResolution","lib","Array","from","Set","include","paths"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-shadcn.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 updateJson,\n} from '@nx/devkit';\nimport tsProjectGenerator from '../ts/lib/generator.js';\nimport { configureTsProject } from '../ts/lib/ts-project-utils.js';\nimport { VITEST_DEPENDENCIES } from '../ts/lib/vitest.js';\nimport {\n type DependencyDeclaration,\n declaredNames,\n forDependencies,\n type MustDeclare,\n} from './declared-dependencies.js';\nimport { addDependenciesToPackageJson } from './dependencies.js';\nimport { formatFilesInSubtree } from './format.js';\nimport { esmVars } from './module-format.js';\nimport { getNpmScopePrefix } from './npm-scope.js';\nimport {\n PACKAGES_DIR,\n SHARED_SHADCN_DIR,\n SHARED_SHADCN_NAME,\n} from './shared-constructs-constants.js';\nimport { type ITsDepVersion, withVersions } from './versions.js';\n\n/** Dependencies a caller must declare to use the shared shadcn project. */\nexport const SHADCN_DEPENDENCIES = [\n { name: 'react' },\n { name: 'react-dom' },\n { name: 'class-variance-authority' },\n { name: 'clsx' },\n { name: 'tailwind-merge' },\n { name: 'lucide-react' },\n { name: 'tw-animate-css' },\n { name: 'radix-ui' },\n ...VITEST_DEPENDENCIES,\n] as const satisfies readonly { name: ITsDepVersion }[];\n\nexport async function sharedShadcnGenerator<\n const D extends DependencyDeclaration,\n>(tree: Tree, declaration: D & MustDeclare<typeof SHADCN_DEPENDENCIES, D>) {\n const npmScopePrefix = getNpmScopePrefix(tree);\n const scopeAlias = npmScopePrefix;\n const sharedShadcnAlias = `${scopeAlias}${SHARED_SHADCN_NAME}`;\n const fullyQualifiedName = `${npmScopePrefix}${SHARED_SHADCN_NAME}`;\n const libraryRoot = joinPathFragments(PACKAGES_DIR, SHARED_SHADCN_DIR);\n const shadcnSrcRoot = joinPathFragments(libraryRoot, 'src');\n\n if (!tree.exists(joinPathFragments(libraryRoot, 'project.json'))) {\n await tsProjectGenerator(tree, {\n name: SHARED_SHADCN_NAME,\n directory: PACKAGES_DIR,\n subDirectory: SHARED_SHADCN_DIR,\n });\n\n tree.delete(shadcnSrcRoot);\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', SHARED_SHADCN_DIR, 'src'),\n shadcnSrcRoot,\n {\n scopeAlias,\n ...esmVars(tree),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SHADCN_DIR,\n 'readme',\n ),\n libraryRoot,\n {\n fullyQualifiedName,\n scopeAlias,\n },\n {\n overwriteStrategy: OverwriteStrategy.Overwrite,\n },\n );\n\n await configureTsProject(\n tree,\n {\n dir: libraryRoot,\n fullyQualifiedName,\n },\n forDependencies<typeof SHADCN_DEPENDENCIES>(declaration),\n );\n\n updateJson(\n tree,\n joinPathFragments(libraryRoot, 'tsconfig.lib.json'),\n (json) => ({\n ...json,\n compilerOptions: {\n ...json.compilerOptions,\n jsx: 'react-jsx',\n module: 'preserve',\n moduleResolution: 'bundler',\n lib: Array.from(\n new Set([...(json.compilerOptions?.lib ?? []), 'DOM']),\n ),\n },\n include: Array.from(new Set([...(json.include ?? []), 'src/**/*.tsx'])),\n }),\n );\n\n addDependenciesToPackageJson(\n tree,\n withVersions(\n forDependencies<typeof SHADCN_DEPENDENCIES>(declaration),\n declaredNames(SHADCN_DEPENDENCIES),\n ),\n {},\n joinPathFragments(libraryRoot, 'package.json'),\n );\n }\n\n updateJson(tree, 'tsconfig.base.json', (json) => ({\n ...json,\n compilerOptions: {\n ...json.compilerOptions,\n paths: {\n ...(json.compilerOptions?.paths ?? {}),\n [`${sharedShadcnAlias}/*`]: [\n `./${joinPathFragments(libraryRoot, 'src', '*')}`,\n ],\n },\n },\n }));\n\n // components.json lives in the package so `shadcn add` runs there and\n // installs component dependencies into the package's own manifest.\n if (!tree.exists(joinPathFragments(libraryRoot, 'components.json'))) {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'shadcn'),\n libraryRoot,\n {\n sharedShadcnAlias,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n }\n\n await formatFilesInSubtree(tree);\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","tsProjectGenerator","configureTsProject","VITEST_DEPENDENCIES","declaredNames","forDependencies","addDependenciesToPackageJson","formatFilesInSubtree","esmVars","getNpmScopePrefix","PACKAGES_DIR","SHARED_SHADCN_DIR","SHARED_SHADCN_NAME","withVersions","SHADCN_DEPENDENCIES","name","sharedShadcnGenerator","tree","declaration","npmScopePrefix","scopeAlias","sharedShadcnAlias","fullyQualifiedName","libraryRoot","shadcnSrcRoot","exists","directory","subDirectory","delete","dirname","overwriteStrategy","KeepExisting","Overwrite","dir","json","compilerOptions","jsx","module","moduleResolution","lib","Array","from","Set","include","paths"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/smithy.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport * as childProcess from 'node:child_process';\nimport { logger } from '@nx/devkit';\nimport { javaMavenDependency, MISE_VERSIONS, TS_VERSIONS } from './versions';\n\n/**\n * How a generated Smithy project runs the Smithy CLI.\n *\n * Off Windows `mise` resolves the pinned CLI, downloading and caching it on first\n * use, so a Smithy build needs no tool installed on the machine.\n *\n * mise itself is fetched by `npx` rather than added as a workspace dependency. The\n * `mise` npm package is a stub that fetches its real binary in a `preinstall`, and\n * every package manager gates install scripts differently: pnpm, bun and yarn\n * Berry each need their own allowlist entry, bun and yarn fail silently when it is\n * missing, and `nx migrate` installs with `--ignore-scripts` — so a migrated\n * workspace ends up with the package present and no binary. `npx` sidesteps all of\n * it: it runs the package's own bin, resolving from `node_modules` when it happens\n * to be there and fetching it otherwise. A warm cache costs about a second.\n *\n * On Windows mise publishes no platform package to npm, so there the Smithy CLI is\n * a documented prerequisite and the target invokes `smithy` directly.\n */\n\n/**\n * The prefix a target command runs the Smithy CLI through.\n *\n * Off Windows both mise and the CLI are pinned in the command, so the version sync\n * can move them forward. On Windows the CLI comes from the user's PATH, so there is\n * no version to pin — {@link warnIfSmithyMissing} checks it is there.\n */\nexport const smithyCliCommand = (): string =>\n isWindows()\n ? 'smithy'\n : `npx -y mise@${TS_VERSIONS.mise} exec smithy@${MISE_VERSIONS.smithy} -- smithy`;\n\n/**\n * Whether the workspace this generator runs in targets Windows, where the Smithy\n * CLI is a user-installed prerequisite.\n *\n * Read at generate time rather than build time: the resolved command is baked\n * into `project.json`, matching how `containers.engine` is resolved.\n */\nexport const isWindows = (): boolean => process.platform === 'win32';\n\n/** Whether a Smithy CLI is resolvable on the PATH. */\nconst isSmithyOnPath = (): boolean => {\n try {\n childProcess.execSync('where smithy', { stdio: 'ignore' });\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * Warn when generating a Smithy project on Windows without the CLI installed.\n *\n * A warning rather than an error: the project is still generated correctly, and\n * the CLI can be installed before the first build.\n *\n * @param onPath overrides the PATH probe, so a test can cover the Windows branch\n * from any runner — ESM module namespaces cannot be spied on.\n */\nexport const warnIfSmithyMissing = (\n onPath: () => boolean = isSmithyOnPath,\n): void => {\n if (!isWindows() || onPath()) {\n return;\n }\n logger.warn(\n `The Smithy CLI was not found on your PATH. Smithy projects build with it directly on Windows, so install it before building: https://smithy.io/2.0/guides/smithy-cli/cli_installation.html`,\n );\n};\n\n/**\n * Substitution variables exposing the Smithy Maven pins to the generated\n * `smithy-build.json` templates.\n */\nexport const smithyMavenVersions = () => ({\n smithyModelDependency: javaMavenDependency(\n 'software.amazon.smithy:smithy-model',\n ),\n smithyAwsTraitsDependency: javaMavenDependency(\n 'software.amazon.smithy:smithy-aws-traits',\n ),\n smithyValidationModelDependency: javaMavenDependency(\n 'software.amazon.smithy:smithy-validation-model',\n ),\n smithyOpenApiDependency: javaMavenDependency(\n 'software.amazon.smithy:smithy-openapi',\n ),\n smithyTypeScriptCodegenDependency: javaMavenDependency(\n 'software.amazon.smithy.typescript:smithy-aws-typescript-codegen',\n ),\n});\n"],"names":["childProcess","logger","javaMavenDependency","MISE_VERSIONS","TS_VERSIONS","smithyCliCommand","isWindows","mise","smithy","process","platform","isSmithyOnPath","execSync","stdio","warnIfSmithyMissing","onPath","warn","smithyMavenVersions","smithyModelDependency","smithyAwsTraitsDependency","smithyValidationModelDependency","smithyOpenApiDependency","smithyTypeScriptCodegenDependency"],"mappings":"AAAA;;;CAGC,GAED,YAAYA,kBAAkB,qBAAqB;AACnD,SAASC,MAAM,QAAQ,aAAa;AACpC,SAASC,mBAAmB,EAAEC,aAAa,EAAEC,WAAW,QAAQ,gBAAa;AAE7E;;;;;;;;;;;;;;;;;CAiBC,GAED;;;;;;CAMC,GACD,OAAO,MAAMC,mBAAmB,IAC9BC,cACI,WACA,CAAC,YAAY,EAAEF,YAAYG,IAAI,CAAC,aAAa,EAAEJ,cAAcK,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtF;;;;;;CAMC,GACD,OAAO,MAAMF,YAAY,IAAeG,QAAQC,QAAQ,KAAK,QAAQ;AAErE,oDAAoD,GACpD,MAAMC,iBAAiB;IACrB,IAAI;QACFX,aAAaY,QAAQ,CAAC,gBAAgB;YAAEC,OAAO;QAAS;QACxD,OAAO;IACT,EAAE,OAAM;QACN,OAAO;IACT;AACF;AAEA;;;;;;;;CAQC,GACD,OAAO,MAAMC,sBAAsB,CACjCC,SAAwBJ,cAAc;IAEtC,IAAI,CAACL,eAAeS,UAAU;QAC5B;IACF;IACAd,OAAOe,IAAI,CACT,CAAC,0LAA0L,CAAC;AAEhM,EAAE;AAEF;;;CAGC,GACD,OAAO,MAAMC,sBAAsB,IAAO,CAAA;QACxCC,uBAAuBhB,oBACrB;QAEFiB,2BAA2BjB,oBACzB;QAEFkB,iCAAiClB,oBAC/B;QAEFmB,yBAAyBnB,oBACvB;QAEFoB,mCAAmCpB,oBACjC;IAEJ,CAAA,EAAG"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/smithy.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport * as childProcess from 'node:child_process';\nimport { logger } from '@nx/devkit';\nimport { javaMavenDependency, MISE_VERSIONS, TS_VERSIONS } from './versions.js';\n\n/**\n * How a generated Smithy project runs the Smithy CLI.\n *\n * Off Windows `mise` resolves the pinned CLI, downloading and caching it on first\n * use, so a Smithy build needs no tool installed on the machine.\n *\n * mise itself is fetched by `npx` rather than added as a workspace dependency. The\n * `mise` npm package is a stub that fetches its real binary in a `preinstall`, and\n * every package manager gates install scripts differently: pnpm, bun and yarn\n * Berry each need their own allowlist entry, bun and yarn fail silently when it is\n * missing, and `nx migrate` installs with `--ignore-scripts` — so a migrated\n * workspace ends up with the package present and no binary. `npx` sidesteps all of\n * it: it runs the package's own bin, resolving from `node_modules` when it happens\n * to be there and fetching it otherwise. A warm cache costs about a second.\n *\n * On Windows mise publishes no platform package to npm, so there the Smithy CLI is\n * a documented prerequisite and the target invokes `smithy` directly.\n */\n\n/**\n * The prefix a target command runs the Smithy CLI through.\n *\n * Off Windows both mise and the CLI are pinned in the command, so the version sync\n * can move them forward. On Windows the CLI comes from the user's PATH, so there is\n * no version to pin — {@link warnIfSmithyMissing} checks it is there.\n */\nexport const smithyCliCommand = (): string =>\n isWindows()\n ? 'smithy'\n : `npx -y mise@${TS_VERSIONS.mise} exec smithy@${MISE_VERSIONS.smithy} -- smithy`;\n\n/**\n * Whether the workspace this generator runs in targets Windows, where the Smithy\n * CLI is a user-installed prerequisite.\n *\n * Read at generate time rather than build time: the resolved command is baked\n * into `project.json`, matching how `containers.engine` is resolved.\n */\nexport const isWindows = (): boolean => process.platform === 'win32';\n\n/** Whether a Smithy CLI is resolvable on the PATH. */\nconst isSmithyOnPath = (): boolean => {\n try {\n childProcess.execSync('where smithy', { stdio: 'ignore' });\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * Warn when generating a Smithy project on Windows without the CLI installed.\n *\n * A warning rather than an error: the project is still generated correctly, and\n * the CLI can be installed before the first build.\n *\n * @param onPath overrides the PATH probe, so a test can cover the Windows branch\n * from any runner — ESM module namespaces cannot be spied on.\n */\nexport const warnIfSmithyMissing = (\n onPath: () => boolean = isSmithyOnPath,\n): void => {\n if (!isWindows() || onPath()) {\n return;\n }\n logger.warn(\n `The Smithy CLI was not found on your PATH. Smithy projects build with it directly on Windows, so install it before building: https://smithy.io/2.0/guides/smithy-cli/cli_installation.html`,\n );\n};\n\n/**\n * Substitution variables exposing the Smithy Maven pins to the generated\n * `smithy-build.json` templates.\n */\nexport const smithyMavenVersions = () => ({\n smithyModelDependency: javaMavenDependency(\n 'software.amazon.smithy:smithy-model',\n ),\n smithyAwsTraitsDependency: javaMavenDependency(\n 'software.amazon.smithy:smithy-aws-traits',\n ),\n smithyValidationModelDependency: javaMavenDependency(\n 'software.amazon.smithy:smithy-validation-model',\n ),\n smithyOpenApiDependency: javaMavenDependency(\n 'software.amazon.smithy:smithy-openapi',\n ),\n smithyTypeScriptCodegenDependency: javaMavenDependency(\n 'software.amazon.smithy.typescript:smithy-aws-typescript-codegen',\n ),\n});\n"],"names":["childProcess","logger","javaMavenDependency","MISE_VERSIONS","TS_VERSIONS","smithyCliCommand","isWindows","mise","smithy","process","platform","isSmithyOnPath","execSync","stdio","warnIfSmithyMissing","onPath","warn","smithyMavenVersions","smithyModelDependency","smithyAwsTraitsDependency","smithyValidationModelDependency","smithyOpenApiDependency","smithyTypeScriptCodegenDependency"],"mappings":"AAAA;;;CAGC,GAED,YAAYA,kBAAkB,qBAAqB;AACnD,SAASC,MAAM,QAAQ,aAAa;AACpC,SAASC,mBAAmB,EAAEC,aAAa,EAAEC,WAAW,QAAQ,gBAAgB;AAEhF;;;;;;;;;;;;;;;;;CAiBC,GAED;;;;;;CAMC,GACD,OAAO,MAAMC,mBAAmB,IAC9BC,cACI,WACA,CAAC,YAAY,EAAEF,YAAYG,IAAI,CAAC,aAAa,EAAEJ,cAAcK,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtF;;;;;;CAMC,GACD,OAAO,MAAMF,YAAY,IAAeG,QAAQC,QAAQ,KAAK,QAAQ;AAErE,oDAAoD,GACpD,MAAMC,iBAAiB;IACrB,IAAI;QACFX,aAAaY,QAAQ,CAAC,gBAAgB;YAAEC,OAAO;QAAS;QACxD,OAAO;IACT,EAAE,OAAM;QACN,OAAO;IACT;AACF;AAEA;;;;;;;;CAQC,GACD,OAAO,MAAMC,sBAAsB,CACjCC,SAAwBJ,cAAc;IAEtC,IAAI,CAACL,eAAeS,UAAU;QAC5B;IACF;IACAd,OAAOe,IAAI,CACT,CAAC,0LAA0L,CAAC;AAEhM,EAAE;AAEF;;;CAGC,GACD,OAAO,MAAMC,sBAAsB,IAAO,CAAA;QACxCC,uBAAuBhB,oBACrB;QAEFiB,2BAA2BjB,oBACzB;QAEFkB,iCAAiClB,oBAC/B;QAEFmB,yBAAyBnB,oBACvB;QAEFoB,mCAAmCpB,oBACjC;IAEJ,CAAA,EAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/test.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n joinPathFragments,\n readJson,\n type Tree,\n updateJson,\n writeJson,\n} from '@nx/devkit';\nimport { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';\nimport { expect } from 'vitest';\nimport { getDefaultBiomeConfig } from './format';\n\n/**\n * Create a workspace tree configured so that nx's `isUsingTsSolutionSetup`\n * reports `true`, matching the workspaces our preset generates. Rather than\n * mocking nx internals, we set up the real markers it checks for:\n * - package manager workspaces enabled (`pnpm-workspace.yaml` with `packages`)\n * - a root `tsconfig.json` extending `tsconfig.base.json` with empty `include`\n * - `composite: true` in `tsconfig.base.json`\n * - a root `package.json` with `type: module`, matching the ESM default the\n * preset establishes\n */\nexport const createTreeUsingTsSolutionSetup = (): Tree => {\n const tree = createTreeWithEmptyWorkspace();\n\n tree.write('pnpm-workspace.yaml', `packages:\\n - packages/*`);\n\n // Write both workspace markers so package-manager detection finds workspaces\n // enabled whether tests run via pnpm or npm/npx.\n updateJson(tree, 'package.json', (json) => ({\n ...json,\n type: 'module',\n workspaces: ['packages/*'],\n }));\n\n const baseTsConfig = readJson(tree, 'tsconfig.base.json');\n writeJson(tree, 'tsconfig.base.json', {\n ...baseTsConfig,\n compilerOptions: { ...baseTsConfig.compilerOptions, composite: true },\n });\n writeJson(tree, 'tsconfig.json', {\n extends: './tsconfig.base.json',\n files: [],\n include: [],\n references: [],\n });\n\n // The preset always writes biome.json at the workspace root, so mirror that\n // here for realistic lint-target configuration.\n tree.write(\n 'biome.json',\n JSON.stringify(getDefaultBiomeConfig(tree), null, 2),\n );\n return tree;\n};\n\n/**\n * Snapshot all files within a directory in the given tree\n */\nexport const snapshotTreeDir = (tree: Tree, dir: string) => {\n if (tree.isFile(dir)) {\n expect(tree.read(dir, 'utf-8')).toMatchSnapshot(dir);\n } else {\n tree\n .children(dir)\n .forEach((subDir) =>\n snapshotTreeDir(tree, joinPathFragments(dir, subDir)),\n );\n }\n};\n"],"names":["joinPathFragments","readJson","updateJson","writeJson","createTreeWithEmptyWorkspace","expect","getDefaultBiomeConfig","createTreeUsingTsSolutionSetup","tree","write","json","type","workspaces","baseTsConfig","compilerOptions","composite","extends","files","include","references","JSON","stringify","snapshotTreeDir","dir","isFile","read","toMatchSnapshot","children","forEach","subDir"],"mappings":"AAAA;;;CAGC,GAED,SACEA,iBAAiB,EACjBC,QAAQ,EAERC,UAAU,EACVC,SAAS,QACJ,aAAa;AACpB,SAASC,4BAA4B,QAAQ,qBAAqB;AAClE,SAASC,MAAM,QAAQ,SAAS;AAChC,SAASC,qBAAqB,QAAQ,cAAW;AAEjD;;;;;;;;;CASC,GACD,OAAO,MAAMC,iCAAiC;IAC5C,MAAMC,OAAOJ;IAEbI,KAAKC,KAAK,CAAC,uBAAuB,CAAC,yBAAyB,CAAC;IAE7D,6EAA6E;IAC7E,iDAAiD;IACjDP,WAAWM,MAAM,gBAAgB,CAACE,OAAU,CAAA;YAC1C,GAAGA,IAAI;YACPC,MAAM;YACNC,YAAY;gBAAC;aAAa;QAC5B,CAAA;IAEA,MAAMC,eAAeZ,SAASO,MAAM;IACpCL,UAAUK,MAAM,sBAAsB;QACpC,GAAGK,YAAY;QACfC,iBAAiB;YAAE,GAAGD,aAAaC,eAAe;YAAEC,WAAW;QAAK;IACtE;IACAZ,UAAUK,MAAM,iBAAiB;QAC/BQ,SAAS;QACTC,OAAO,EAAE;QACTC,SAAS,EAAE;QACXC,YAAY,EAAE;IAChB;IAEA,4EAA4E;IAC5E,gDAAgD;IAChDX,KAAKC,KAAK,CACR,cACAW,KAAKC,SAAS,CAACf,sBAAsBE,OAAO,MAAM;IAEpD,OAAOA;AACT,EAAE;AAEF;;CAEC,GACD,OAAO,MAAMc,kBAAkB,CAACd,MAAYe;IAC1C,IAAIf,KAAKgB,MAAM,CAACD,MAAM;QACpBlB,OAAOG,KAAKiB,IAAI,CAACF,KAAK,UAAUG,eAAe,CAACH;IAClD,OAAO;QACLf,KACGmB,QAAQ,CAACJ,KACTK,OAAO,CAAC,CAACC,SACRP,gBAAgBd,MAAMR,kBAAkBuB,KAAKM;IAEnD;AACF,EAAE"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/test.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n joinPathFragments,\n readJson,\n type Tree,\n updateJson,\n writeJson,\n} from '@nx/devkit';\nimport { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';\nimport { expect } from 'vitest';\nimport { getDefaultBiomeConfig } from './format.js';\n\n/**\n * Create a workspace tree configured so that nx's `isUsingTsSolutionSetup`\n * reports `true`, matching the workspaces our preset generates. Rather than\n * mocking nx internals, we set up the real markers it checks for:\n * - package manager workspaces enabled (`pnpm-workspace.yaml` with `packages`)\n * - a root `tsconfig.json` extending `tsconfig.base.json` with empty `include`\n * - `composite: true` in `tsconfig.base.json`\n * - a root `package.json` with `type: module`, matching the ESM default the\n * preset establishes\n */\nexport const createTreeUsingTsSolutionSetup = (): Tree => {\n const tree = createTreeWithEmptyWorkspace();\n\n tree.write('pnpm-workspace.yaml', `packages:\\n - packages/*`);\n\n // Write both workspace markers so package-manager detection finds workspaces\n // enabled whether tests run via pnpm or npm/npx.\n updateJson(tree, 'package.json', (json) => ({\n ...json,\n type: 'module',\n workspaces: ['packages/*'],\n }));\n\n const baseTsConfig = readJson(tree, 'tsconfig.base.json');\n writeJson(tree, 'tsconfig.base.json', {\n ...baseTsConfig,\n compilerOptions: { ...baseTsConfig.compilerOptions, composite: true },\n });\n writeJson(tree, 'tsconfig.json', {\n extends: './tsconfig.base.json',\n files: [],\n include: [],\n references: [],\n });\n\n // The preset always writes biome.json at the workspace root, so mirror that\n // here for realistic lint-target configuration.\n tree.write(\n 'biome.json',\n JSON.stringify(getDefaultBiomeConfig(tree), null, 2),\n );\n return tree;\n};\n\n/**\n * Snapshot all files within a directory in the given tree\n */\nexport const snapshotTreeDir = (tree: Tree, dir: string) => {\n if (tree.isFile(dir)) {\n expect(tree.read(dir, 'utf-8')).toMatchSnapshot(dir);\n } else {\n tree\n .children(dir)\n .forEach((subDir) =>\n snapshotTreeDir(tree, joinPathFragments(dir, subDir)),\n );\n }\n};\n"],"names":["joinPathFragments","readJson","updateJson","writeJson","createTreeWithEmptyWorkspace","expect","getDefaultBiomeConfig","createTreeUsingTsSolutionSetup","tree","write","json","type","workspaces","baseTsConfig","compilerOptions","composite","extends","files","include","references","JSON","stringify","snapshotTreeDir","dir","isFile","read","toMatchSnapshot","children","forEach","subDir"],"mappings":"AAAA;;;CAGC,GAED,SACEA,iBAAiB,EACjBC,QAAQ,EAERC,UAAU,EACVC,SAAS,QACJ,aAAa;AACpB,SAASC,4BAA4B,QAAQ,qBAAqB;AAClE,SAASC,MAAM,QAAQ,SAAS;AAChC,SAASC,qBAAqB,QAAQ,cAAc;AAEpD;;;;;;;;;CASC,GACD,OAAO,MAAMC,iCAAiC;IAC5C,MAAMC,OAAOJ;IAEbI,KAAKC,KAAK,CAAC,uBAAuB,CAAC,yBAAyB,CAAC;IAE7D,6EAA6E;IAC7E,iDAAiD;IACjDP,WAAWM,MAAM,gBAAgB,CAACE,OAAU,CAAA;YAC1C,GAAGA,IAAI;YACPC,MAAM;YACNC,YAAY;gBAAC;aAAa;QAC5B,CAAA;IAEA,MAAMC,eAAeZ,SAASO,MAAM;IACpCL,UAAUK,MAAM,sBAAsB;QACpC,GAAGK,YAAY;QACfC,iBAAiB;YAAE,GAAGD,aAAaC,eAAe;YAAEC,WAAW;QAAK;IACtE;IACAZ,UAAUK,MAAM,iBAAiB;QAC/BQ,SAAS;QACTC,OAAO,EAAE;QACTC,SAAS,EAAE;QACXC,YAAY,EAAE;IAChB;IAEA,4EAA4E;IAC5E,gDAAgD;IAChDX,KAAKC,KAAK,CACR,cACAW,KAAKC,SAAS,CAACf,sBAAsBE,OAAO,MAAM;IAEpD,OAAOA;AACT,EAAE;AAEF;;CAEC,GACD,OAAO,MAAMc,kBAAkB,CAACd,MAAYe;IAC1C,IAAIf,KAAKgB,MAAM,CAACD,MAAM;QACpBlB,OAAOG,KAAKiB,IAAI,CAACF,KAAK,UAAUG,eAAe,CAACH;IAClD,OAAO;QACLf,KACGmB,QAAQ,CAACJ,KACTK,OAAO,CAAC,CAACC,SACRP,gBAAgBd,MAAMR,kBAAkBuB,KAAKM;IAEnD;AACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-upgrade-migration/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { MigrationReturnObject, Tree } from '@nx/devkit';\nimport { syncVendedVersions } from './sync-vended-versions';\n\n/**\n * Syncs the workspace's vended versions to those the installed plugin vends.\n *\n * Registered `everyMigration`, so it runs on every upgrade and last in the run:\n * versions come from the installed plugin's own tables, so there is nothing\n * release-specific to register, and running after the code migrations lets them\n * add dependencies this then brings up to date.\n */\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n return syncVendedVersions(tree);\n}\n"],"names":["syncVendedVersions","migration","tree"],"mappings":"AAAA;;;CAGC,GAED,SAASA,kBAAkB,QAAQ,4BAAyB;AAE5D;;;;;;;CAOC,GACD,eAAe,eAAeC,UAC5BC,IAAU;IAEV,OAAOF,mBAAmBE;AAC5B"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-upgrade-migration/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { MigrationReturnObject, Tree } from '@nx/devkit';\nimport { syncVendedVersions } from './sync-vended-versions.js';\n\n/**\n * Syncs the workspace's vended versions to those the installed plugin vends.\n *\n * Registered `everyMigration`, so it runs on every upgrade and last in the run:\n * versions come from the installed plugin's own tables, so there is nothing\n * release-specific to register, and running after the code migrations lets them\n * add dependencies this then brings up to date.\n */\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n return syncVendedVersions(tree);\n}\n"],"names":["syncVendedVersions","migration","tree"],"mappings":"AAAA;;;CAGC,GAED,SAASA,kBAAkB,QAAQ,4BAA4B;AAE/D;;;;;;;CAOC,GACD,eAAe,eAAeC,UAC5BC,IAAU;IAEV,OAAOF,mBAAmBE;AAC5B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-upgrade-migration/nx-package-updates.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { migrationKey } from '../migration-versions';\nimport { NX_PACKAGES, NX_VERSION } from '../versions';\n\n/**\n * `packageJsonUpdates` for the nx packages a generated workspace pins.\n *\n * A migration cannot bump these: `nx migrate` builds its migration list from the\n * packages it is itself bumping, so an nx version only rewritten by our migration\n * silently skips Nx's own migrations for that hop. Declaring the bump here pulls\n * them in.\n *\n * It also keeps every nx pin moving together. A workspace nx even a patch apart\n * from the plugin's `@nx/*` packages hoists a second nested nx, and the two\n * deadlock `nx sync`.\n */\n\nexport const NX_PACKAGE_UPDATES_NAME = 'nx-packages';\n\nexport const isNxPackage = (name: string): boolean =>\n (NX_PACKAGES as readonly string[]).includes(name);\n\n/** Indexed to satisfy the open shape `migrations.json` entries carry. */\nexport interface PackageJsonUpdate extends Record<string, unknown> {\n version: string;\n packages: Record<string, { version: string; alwaysAddToPackageJson: false }>;\n}\n\nexport type PackageJsonUpdates = Record<string, PackageJsonUpdate>;\n\n/**\n * Key an nx bump is registered under, named for the nx version it moves to.\n *\n * The plugin version the bump ships under isn't known when it is written — the\n * weekly update writes it, and only the release that publishes it can say which\n * version that is. The nx version, though, is exactly what the entry is *for*,\n * and two bumps to the same nx version would be the same bump — so it keys the\n * entry uniquely from the moment it is written, with no re-keying later.\n *\n * That matters because each release's bump has to stay behind as the next is\n * written: a workspace several releases behind gets every nx hop in turn rather\n * than only the newest. A key that had to be rewritten once the plugin version\n * was known would let a second bump land on the first before either shipped.\n */\nexport const nxPackageUpdatesKey = (nxVersion: string) =>\n `nx-${nxVersion}-${NX_PACKAGE_UPDATES_NAME}`;\n\n/**\n * `alwaysAddToPackageJson: false` so only packages already present are updated.\n *\n * @param version plugin version `nx migrate` gates the bump on, or\n * {@link LATEST_MIGRATIONS_DIR} while it is still waiting for a release\n */\nexport const nxPackageJsonUpdates = (\n version: string,\n nxVersion: string = NX_VERSION,\n): PackageJsonUpdates => ({\n [nxPackageUpdatesKey(nxVersion)]: {\n version,\n packages: Object.fromEntries(\n NX_PACKAGES.map((name) => [\n name,\n { version: nxVersion, alwaysAddToPackageJson: false as const },\n ]),\n ),\n },\n});\n"],"names":["NX_PACKAGES","NX_VERSION","NX_PACKAGE_UPDATES_NAME","isNxPackage","name","includes","nxPackageUpdatesKey","nxVersion","nxPackageJsonUpdates","version","packages","Object","fromEntries","map","alwaysAddToPackageJson"],"mappings":"AAAA;;;CAGC,GAED,SAASA,WAAW,EAAEC,UAAU,QAAQ,iBAAc;AAEtD;;;;;;;;;;;CAWC,GAED,OAAO,MAAMC,0BAA0B,cAAc;AAErD,OAAO,MAAMC,cAAc,CAACC,OAC1B,AAACJ,YAAkCK,QAAQ,CAACD,MAAM;AAUpD;;;;;;;;;;;;;CAaC,GACD,OAAO,MAAME,sBAAsB,CAACC,YAClC,CAAC,GAAG,EAAEA,UAAU,CAAC,EAAEL,yBAAyB,CAAC;AAE/C;;;;;CAKC,GACD,OAAO,MAAMM,uBAAuB,CAClCC,SACAF,YAAoBN,UAAU,GACN,CAAA;QACxB,CAACK,oBAAoBC,WAAW,EAAE;YAChCE;YACAC,UAAUC,OAAOC,WAAW,CAC1BZ,YAAYa,GAAG,CAAC,CAACT,OAAS;oBACxBA;oBACA;wBAAEK,SAASF;wBAAWO,wBAAwB;oBAAe;iBAC9D;QAEL;IACF,CAAA,EAAG"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-upgrade-migration/nx-package-updates.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { migrationKey } from '../migration-versions.js';\nimport { NX_PACKAGES, NX_VERSION } from '../versions.js';\n\n/**\n * `packageJsonUpdates` for the nx packages a generated workspace pins.\n *\n * A migration cannot bump these: `nx migrate` builds its migration list from the\n * packages it is itself bumping, so an nx version only rewritten by our migration\n * silently skips Nx's own migrations for that hop. Declaring the bump here pulls\n * them in.\n *\n * It also keeps every nx pin moving together. A workspace nx even a patch apart\n * from the plugin's `@nx/*` packages hoists a second nested nx, and the two\n * deadlock `nx sync`.\n */\n\nexport const NX_PACKAGE_UPDATES_NAME = 'nx-packages';\n\nexport const isNxPackage = (name: string): boolean =>\n (NX_PACKAGES as readonly string[]).includes(name);\n\n/** Indexed to satisfy the open shape `migrations.json` entries carry. */\nexport interface PackageJsonUpdate extends Record<string, unknown> {\n version: string;\n packages: Record<string, { version: string; alwaysAddToPackageJson: false }>;\n}\n\nexport type PackageJsonUpdates = Record<string, PackageJsonUpdate>;\n\n/**\n * Key an nx bump is registered under, named for the nx version it moves to.\n *\n * The plugin version the bump ships under isn't known when it is written — the\n * weekly update writes it, and only the release that publishes it can say which\n * version that is. The nx version, though, is exactly what the entry is *for*,\n * and two bumps to the same nx version would be the same bump — so it keys the\n * entry uniquely from the moment it is written, with no re-keying later.\n *\n * That matters because each release's bump has to stay behind as the next is\n * written: a workspace several releases behind gets every nx hop in turn rather\n * than only the newest. A key that had to be rewritten once the plugin version\n * was known would let a second bump land on the first before either shipped.\n */\nexport const nxPackageUpdatesKey = (nxVersion: string) =>\n `nx-${nxVersion}-${NX_PACKAGE_UPDATES_NAME}`;\n\n/**\n * `alwaysAddToPackageJson: false` so only packages already present are updated.\n *\n * @param version plugin version `nx migrate` gates the bump on, or\n * {@link LATEST_MIGRATIONS_DIR} while it is still waiting for a release\n */\nexport const nxPackageJsonUpdates = (\n version: string,\n nxVersion: string = NX_VERSION,\n): PackageJsonUpdates => ({\n [nxPackageUpdatesKey(nxVersion)]: {\n version,\n packages: Object.fromEntries(\n NX_PACKAGES.map((name) => [\n name,\n { version: nxVersion, alwaysAddToPackageJson: false as const },\n ]),\n ),\n },\n});\n"],"names":["NX_PACKAGES","NX_VERSION","NX_PACKAGE_UPDATES_NAME","isNxPackage","name","includes","nxPackageUpdatesKey","nxVersion","nxPackageJsonUpdates","version","packages","Object","fromEntries","map","alwaysAddToPackageJson"],"mappings":"AAAA;;;CAGC,GAED,SAASA,WAAW,EAAEC,UAAU,QAAQ,iBAAiB;AAEzD;;;;;;;;;;;CAWC,GAED,OAAO,MAAMC,0BAA0B,cAAc;AAErD,OAAO,MAAMC,cAAc,CAACC,OAC1B,AAACJ,YAAkCK,QAAQ,CAACD,MAAM;AAUpD;;;;;;;;;;;;;CAaC,GACD,OAAO,MAAME,sBAAsB,CAACC,YAClC,CAAC,GAAG,EAAEA,UAAU,CAAC,EAAEL,yBAAyB,CAAC;AAE/C;;;;;CAKC,GACD,OAAO,MAAMM,uBAAuB,CAClCC,SACAF,YAAoBN,UAAU,GACN,CAAA;QACxB,CAACK,oBAAoBC,WAAW,EAAE;YAChCE;YACAC,UAAUC,OAAOC,WAAW,CAC1BZ,YAAYa,GAAG,CAAC,CAACT,OAAS;oBACxBA;oBACA;wBAAEK,SAASF;wBAAWO,wBAAwB;oBAAe;iBAC9D;QAEL;IACF,CAAA,EAAG"}
@@ -1,5 +1,5 @@
1
1
  import { type Tree } from '@nx/devkit';
2
- import { type DependencyMetadata } from '../declared-dependencies';
2
+ import { type DependencyMetadata } from '../declared-dependencies.js';
3
3
  /** Directory holding `generators.json`, which maps ids to their modules. */
4
4
  export declare const PLUGIN_ROOT: string;
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-upgrade-migration/owned-dependencies.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport * as path from 'node:path';\nimport { getProjects, type Tree } from '@nx/devkit';\nimport { AWS_NX_PLUGIN_CONFIG_FILE_NAME } from '../config/utils';\nimport {\n type DependencyDeclaration,\n type DependencyMetadata,\n ownedDependencyEntries,\n} from '../declared-dependencies';\nimport { buildGeneratorInfoList } from '../generators';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n SHARED_TERRAFORM_DIR,\n} from '../shared-constructs-constants';\n\n/** Directory holding `generators.json`, which maps ids to their modules. */\nexport const PLUGIN_ROOT = path.resolve(import.meta.dirname, '..', '..', '..');\n\n/**\n * Which vended dependencies this workspace's generators are responsible for.\n *\n * Only these are synced, so a package the user added themselves keeps the version\n * they chose. Ownership is derived from the generators the workspace has run and\n * the dependencies each declares — nothing extra is recorded in the workspace.\n */\nexport interface OwnedDependencies {\n readonly ts: ReadonlySet<string>;\n readonly py: ReadonlySet<string>;\n /**\n * The same, split by the root of the project that owns it, for scoping a pin\n * embedded in a generated file to the project it sits in. Keyed by project\n * root; read through {@link ownedForFile}.\n */\n readonly byProject: ReadonlyMap<\n string,\n { readonly ts: ReadonlySet<string>; readonly py: ReadonlySet<string> }\n >;\n}\n\n/**\n * One recorded run of a generator, with the metadata it wrote.\n *\n * The metadata carries the values the generator's dependency conditions read, so\n * a declaration filters down to the branch this occurrence actually took.\n */\nexport interface GeneratorOccurrence {\n readonly id: string;\n readonly metadata: DependencyMetadata;\n /** Root of the project this ran against, for scoping what it owns to it. */\n readonly projectRoot?: string;\n}\n\n/**\n * Every recorded run of a generator in this workspace, from the metadata\n * generators record on the projects (and components) they create.\n *\n * A generator appears once per project or component it created, since each may\n * have been run with different options.\n *\n * `init` creates no project, so its config file stands in for it.\n */\nexport const generatorOccurrences = (\n tree: Tree,\n): readonly GeneratorOccurrence[] => {\n const occurrences: GeneratorOccurrence[] = [];\n if (tree.exists(AWS_NX_PLUGIN_CONFIG_FILE_NAME)) {\n occurrences.push({ id: 'init', metadata: {} });\n }\n for (const [, project] of getProjects(tree)) {\n const metadata = project.metadata as\n | {\n generator?: string;\n components?: ({ generator?: string } & DependencyMetadata)[];\n }\n | undefined;\n if (metadata?.generator) {\n const { components, ...ownMetadata } = metadata;\n occurrences.push({\n id: metadata.generator,\n metadata: ownMetadata,\n projectRoot: project.root,\n });\n }\n for (const component of metadata?.components ?? []) {\n if (component.generator) {\n occurrences.push({\n id: component.generator,\n metadata: component,\n projectRoot: project.root,\n });\n }\n }\n }\n return occurrences;\n};\n\n/** Generator ids this workspace has run. */\nexport const generatorsRun = (tree: Tree): ReadonlySet<string> =>\n new Set(generatorOccurrences(tree).map((occurrence) => occurrence.id));\n\n/**\n * Union of the dependencies declared by the generators this workspace has run,\n * narrowed per occurrence to those whose conditions its recorded metadata\n * satisfies — a project generated with one protocol does not own another's\n * packages.\n *\n * A `versionOnly` entry is owned like any other: it is declared precisely so the\n * sync keeps its pinned version current wherever the workspace already holds it.\n *\n * Each generator module exports its declaration, so reading one is an import\n * rather than a run — the generators themselves are never invoked.\n */\nexport const ownedDependencies = async (\n tree: Tree,\n): Promise<OwnedDependencies> => {\n const occurrences = generatorOccurrences(tree);\n const ts = new Set<string>();\n const py = new Set<string>();\n const byProject = new Map<string, { ts: Set<string>; py: Set<string> }>();\n\n for (const info of buildGeneratorInfoList(PLUGIN_ROOT)) {\n const matching = occurrences.filter(\n (occurrence) => occurrence.id === info.id,\n );\n if (matching.length === 0) {\n continue;\n }\n const declaration = await readDeclaration(info.resolvedFactoryPath);\n if (!declaration) {\n continue;\n }\n for (const { metadata, projectRoot } of matching) {\n const scoped = projectRoot\n ? (byProject.get(projectRoot) ??\n byProject\n .set(projectRoot, { ts: new Set(), py: new Set() })\n .get(projectRoot)!)\n : undefined;\n for (const entry of ownedDependencyEntries(declaration.ts, metadata)) {\n ts.add(entry.name as string);\n scoped?.ts.add(entry.name as string);\n }\n for (const entry of ownedDependencyEntries(declaration.py, metadata)) {\n py.add(entry.name as string);\n scoped?.py.add(entry.name as string);\n }\n }\n }\n\n return { ts, py, byProject };\n};\n\n/**\n * Roots of the projects every generator contributes into, rather than one\n * generator owning outright.\n *\n * `sharedConstructsGenerator` creates these and each infra generator writes its\n * own module into them — the Terraform modules carrying the `uv run --with` pins\n * come from the agent-core, api, identity and website helpers alike. Both are\n * registered projects, so scoping a file here to the generator that created the\n * project would strand every pin the others put there.\n */\nconst SHARED_PROJECT_ROOTS = [\n `${PACKAGES_DIR}/${SHARED_CONSTRUCTS_DIR}`,\n `${PACKAGES_DIR}/${SHARED_TERRAFORM_DIR}`,\n];\n\n/**\n * The dependencies owned where a file sits: those of the project it belongs to,\n * or the workspace-wide union for a file in a shared project or under none.\n *\n * Used for the pins embedded in a generated file, so a version is only rewritten\n * where the generator that pins it actually ran: a `Dockerfile` under one\n * project's root is not upgraded because a sibling project owns the package.\n *\n * The longest matching root wins, since a nested project's root is a prefix of\n * nothing else but its own files.\n */\nexport const ownedForFile = (\n owned: OwnedDependencies,\n filePath: string,\n): { ts: ReadonlySet<string>; py: ReadonlySet<string> } => {\n if (\n SHARED_PROJECT_ROOTS.some(\n (root) => filePath === root || filePath.startsWith(`${root}/`),\n )\n ) {\n return owned;\n }\n let best: { ts: ReadonlySet<string>; py: ReadonlySet<string> } | undefined;\n let bestLength = -1;\n for (const [root, scoped] of owned.byProject) {\n if (\n (filePath === root || filePath.startsWith(`${root}/`)) &&\n root.length > bestLength\n ) {\n best = scoped;\n bestLength = root.length;\n }\n }\n return best ?? owned;\n};\n\n/**\n * A generator's `DEPENDENCIES`, or undefined when it declares none.\n * A generator that fails to load must not fail the upgrade, so its dependencies\n * are treated as unowned and left as they are.\n */\nconst readDeclaration = async (\n factoryPath: string,\n): Promise<DependencyDeclaration | undefined> => {\n try {\n const module = await import(`${factoryPath}.js`);\n return module.DEPENDENCIES;\n } catch {\n return undefined;\n }\n};\n"],"names":["path","getProjects","AWS_NX_PLUGIN_CONFIG_FILE_NAME","ownedDependencyEntries","buildGeneratorInfoList","PACKAGES_DIR","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_DIR","PLUGIN_ROOT","resolve","dirname","generatorOccurrences","tree","occurrences","exists","push","id","metadata","project","generator","components","ownMetadata","projectRoot","root","component","generatorsRun","Set","map","occurrence","ownedDependencies","ts","py","byProject","Map","info","matching","filter","length","declaration","readDeclaration","resolvedFactoryPath","scoped","get","set","undefined","entry","add","name","SHARED_PROJECT_ROOTS","ownedForFile","owned","filePath","some","startsWith","best","bestLength","factoryPath","module","DEPENDENCIES"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-upgrade-migration/owned-dependencies.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport * as path from 'node:path';\nimport { getProjects, type Tree } from '@nx/devkit';\nimport { AWS_NX_PLUGIN_CONFIG_FILE_NAME } from '../config/utils.js';\nimport {\n type DependencyDeclaration,\n type DependencyMetadata,\n ownedDependencyEntries,\n} from '../declared-dependencies.js';\nimport { buildGeneratorInfoList } from '../generators.js';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n SHARED_TERRAFORM_DIR,\n} from '../shared-constructs-constants.js';\n\n/** Directory holding `generators.json`, which maps ids to their modules. */\nexport const PLUGIN_ROOT = path.resolve(import.meta.dirname, '..', '..', '..');\n\n/**\n * Which vended dependencies this workspace's generators are responsible for.\n *\n * Only these are synced, so a package the user added themselves keeps the version\n * they chose. Ownership is derived from the generators the workspace has run and\n * the dependencies each declares — nothing extra is recorded in the workspace.\n */\nexport interface OwnedDependencies {\n readonly ts: ReadonlySet<string>;\n readonly py: ReadonlySet<string>;\n /**\n * The same, split by the root of the project that owns it, for scoping a pin\n * embedded in a generated file to the project it sits in. Keyed by project\n * root; read through {@link ownedForFile}.\n */\n readonly byProject: ReadonlyMap<\n string,\n { readonly ts: ReadonlySet<string>; readonly py: ReadonlySet<string> }\n >;\n}\n\n/**\n * One recorded run of a generator, with the metadata it wrote.\n *\n * The metadata carries the values the generator's dependency conditions read, so\n * a declaration filters down to the branch this occurrence actually took.\n */\nexport interface GeneratorOccurrence {\n readonly id: string;\n readonly metadata: DependencyMetadata;\n /** Root of the project this ran against, for scoping what it owns to it. */\n readonly projectRoot?: string;\n}\n\n/**\n * Every recorded run of a generator in this workspace, from the metadata\n * generators record on the projects (and components) they create.\n *\n * A generator appears once per project or component it created, since each may\n * have been run with different options.\n *\n * `init` creates no project, so its config file stands in for it.\n */\nexport const generatorOccurrences = (\n tree: Tree,\n): readonly GeneratorOccurrence[] => {\n const occurrences: GeneratorOccurrence[] = [];\n if (tree.exists(AWS_NX_PLUGIN_CONFIG_FILE_NAME)) {\n occurrences.push({ id: 'init', metadata: {} });\n }\n for (const [, project] of getProjects(tree)) {\n const metadata = project.metadata as\n | {\n generator?: string;\n components?: ({ generator?: string } & DependencyMetadata)[];\n }\n | undefined;\n if (metadata?.generator) {\n const { components, ...ownMetadata } = metadata;\n occurrences.push({\n id: metadata.generator,\n metadata: ownMetadata,\n projectRoot: project.root,\n });\n }\n for (const component of metadata?.components ?? []) {\n if (component.generator) {\n occurrences.push({\n id: component.generator,\n metadata: component,\n projectRoot: project.root,\n });\n }\n }\n }\n return occurrences;\n};\n\n/** Generator ids this workspace has run. */\nexport const generatorsRun = (tree: Tree): ReadonlySet<string> =>\n new Set(generatorOccurrences(tree).map((occurrence) => occurrence.id));\n\n/**\n * Union of the dependencies declared by the generators this workspace has run,\n * narrowed per occurrence to those whose conditions its recorded metadata\n * satisfies — a project generated with one protocol does not own another's\n * packages.\n *\n * A `versionOnly` entry is owned like any other: it is declared precisely so the\n * sync keeps its pinned version current wherever the workspace already holds it.\n *\n * Each generator module exports its declaration, so reading one is an import\n * rather than a run — the generators themselves are never invoked.\n */\nexport const ownedDependencies = async (\n tree: Tree,\n): Promise<OwnedDependencies> => {\n const occurrences = generatorOccurrences(tree);\n const ts = new Set<string>();\n const py = new Set<string>();\n const byProject = new Map<string, { ts: Set<string>; py: Set<string> }>();\n\n for (const info of buildGeneratorInfoList(PLUGIN_ROOT)) {\n const matching = occurrences.filter(\n (occurrence) => occurrence.id === info.id,\n );\n if (matching.length === 0) {\n continue;\n }\n const declaration = await readDeclaration(info.resolvedFactoryPath);\n if (!declaration) {\n continue;\n }\n for (const { metadata, projectRoot } of matching) {\n const scoped = projectRoot\n ? (byProject.get(projectRoot) ??\n byProject\n .set(projectRoot, { ts: new Set(), py: new Set() })\n .get(projectRoot)!)\n : undefined;\n for (const entry of ownedDependencyEntries(declaration.ts, metadata)) {\n ts.add(entry.name as string);\n scoped?.ts.add(entry.name as string);\n }\n for (const entry of ownedDependencyEntries(declaration.py, metadata)) {\n py.add(entry.name as string);\n scoped?.py.add(entry.name as string);\n }\n }\n }\n\n return { ts, py, byProject };\n};\n\n/**\n * Roots of the projects every generator contributes into, rather than one\n * generator owning outright.\n *\n * `sharedConstructsGenerator` creates these and each infra generator writes its\n * own module into them — the Terraform modules carrying the `uv run --with` pins\n * come from the agent-core, api, identity and website helpers alike. Both are\n * registered projects, so scoping a file here to the generator that created the\n * project would strand every pin the others put there.\n */\nconst SHARED_PROJECT_ROOTS = [\n `${PACKAGES_DIR}/${SHARED_CONSTRUCTS_DIR}`,\n `${PACKAGES_DIR}/${SHARED_TERRAFORM_DIR}`,\n];\n\n/**\n * The dependencies owned where a file sits: those of the project it belongs to,\n * or the workspace-wide union for a file in a shared project or under none.\n *\n * Used for the pins embedded in a generated file, so a version is only rewritten\n * where the generator that pins it actually ran: a `Dockerfile` under one\n * project's root is not upgraded because a sibling project owns the package.\n *\n * The longest matching root wins, since a nested project's root is a prefix of\n * nothing else but its own files.\n */\nexport const ownedForFile = (\n owned: OwnedDependencies,\n filePath: string,\n): { ts: ReadonlySet<string>; py: ReadonlySet<string> } => {\n if (\n SHARED_PROJECT_ROOTS.some(\n (root) => filePath === root || filePath.startsWith(`${root}/`),\n )\n ) {\n return owned;\n }\n let best: { ts: ReadonlySet<string>; py: ReadonlySet<string> } | undefined;\n let bestLength = -1;\n for (const [root, scoped] of owned.byProject) {\n if (\n (filePath === root || filePath.startsWith(`${root}/`)) &&\n root.length > bestLength\n ) {\n best = scoped;\n bestLength = root.length;\n }\n }\n return best ?? owned;\n};\n\n/**\n * A generator's `DEPENDENCIES`, or undefined when it declares none.\n * A generator that fails to load must not fail the upgrade, so its dependencies\n * are treated as unowned and left as they are.\n */\nconst readDeclaration = async (\n factoryPath: string,\n): Promise<DependencyDeclaration | undefined> => {\n try {\n const module = await import(`${factoryPath}.js`);\n return module.DEPENDENCIES;\n } catch {\n return undefined;\n }\n};\n"],"names":["path","getProjects","AWS_NX_PLUGIN_CONFIG_FILE_NAME","ownedDependencyEntries","buildGeneratorInfoList","PACKAGES_DIR","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_DIR","PLUGIN_ROOT","resolve","dirname","generatorOccurrences","tree","occurrences","exists","push","id","metadata","project","generator","components","ownMetadata","projectRoot","root","component","generatorsRun","Set","map","occurrence","ownedDependencies","ts","py","byProject","Map","info","matching","filter","length","declaration","readDeclaration","resolvedFactoryPath","scoped","get","set","undefined","entry","add","name","SHARED_PROJECT_ROOTS","ownedForFile","owned","filePath","some","startsWith","best","bestLength","factoryPath","module","DEPENDENCIES"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-upgrade-migration/register.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { type Tree, writeJson } from '@nx/devkit';\nimport { LATEST_MIGRATIONS_DIR } from '../migration-versions';\nimport {\n nxPackageJsonUpdates,\n type PackageJsonUpdates,\n} from './nx-package-updates';\n\nconst PACKAGE_JSON_UPDATES_PATH = 'packages/nx-plugin/packageJsonUpdates.json';\n\n/**\n * Register the nx bump a version update needs, in `packageJsonUpdates.json`. Call\n * only when an nx package actually moved.\n *\n * The bumps live in their own committed file, assembled into `migrations.json`\n * at build time, so this weekly-bot edit never conflicts with a migration PR.\n * The version sync migration itself is a committed `everyMigration` entry, so\n * only the nx packages need registering per update: they go through\n * `packageJsonUpdates` rather than a migration (see `nx-package-updates.ts`).\n *\n * A bump already dated by a release stays — a workspace several releases behind\n * needs each hop in turn. One still waiting for a release is dropped: this bump\n * supersedes it, and both would otherwise ship under the same version, leaving\n * which nx a workspace lands on down to the order nx happens to apply them in.\n *\n * Idempotent: re-running before a release replaces the pending entry with itself.\n *\n * @param nxVersion nx version being moved to. The update script rewrites\n * `versions.ts` on the tree, which cannot change the `NX_VERSION` this process\n * imported at load — so the caller passes the version it just wrote, or the\n * entry would record the one being replaced.\n * @returns paths written, for the update report\n */\nexport const registerNxPackageUpdates = (\n tree: Tree,\n nxVersion?: string,\n): string[] => {\n const existing: PackageJsonUpdates = tree.exists(PACKAGE_JSON_UPDATES_PATH)\n ? JSON.parse(tree.read(PACKAGE_JSON_UPDATES_PATH, 'utf-8'))\n : {};\n\n writeJson(tree, PACKAGE_JSON_UPDATES_PATH, {\n // Recorded under `latest` until stamping resolves the version it ships with.\n ...Object.fromEntries(\n Object.entries(existing).filter(\n ([, entry]) => entry.version !== LATEST_MIGRATIONS_DIR,\n ),\n ),\n ...nxPackageJsonUpdates(LATEST_MIGRATIONS_DIR, nxVersion),\n });\n\n return [PACKAGE_JSON_UPDATES_PATH];\n};\n"],"names":["writeJson","LATEST_MIGRATIONS_DIR","nxPackageJsonUpdates","PACKAGE_JSON_UPDATES_PATH","registerNxPackageUpdates","tree","nxVersion","existing","exists","JSON","parse","read","Object","fromEntries","entries","filter","entry","version"],"mappings":"AAAA;;;CAGC,GACD,SAAoBA,SAAS,QAAQ,aAAa;AAClD,SAASC,qBAAqB,QAAQ,2BAAwB;AAC9D,SACEC,oBAAoB,QAEf,0BAAuB;AAE9B,MAAMC,4BAA4B;AAElC;;;;;;;;;;;;;;;;;;;;;;CAsBC,GACD,OAAO,MAAMC,2BAA2B,CACtCC,MACAC;IAEA,MAAMC,WAA+BF,KAAKG,MAAM,CAACL,6BAC7CM,KAAKC,KAAK,CAACL,KAAKM,IAAI,CAACR,2BAA2B,YAChD,CAAC;IAELH,UAAUK,MAAMF,2BAA2B;QACzC,6EAA6E;QAC7E,GAAGS,OAAOC,WAAW,CACnBD,OAAOE,OAAO,CAACP,UAAUQ,MAAM,CAC7B,CAAC,GAAGC,MAAM,GAAKA,MAAMC,OAAO,KAAKhB,uBAEpC;QACD,GAAGC,qBAAqBD,uBAAuBK,UAAU;IAC3D;IAEA,OAAO;QAACH;KAA0B;AACpC,EAAE"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-upgrade-migration/register.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { type Tree, writeJson } from '@nx/devkit';\nimport { LATEST_MIGRATIONS_DIR } from '../migration-versions.js';\nimport {\n nxPackageJsonUpdates,\n type PackageJsonUpdates,\n} from './nx-package-updates.js';\n\nconst PACKAGE_JSON_UPDATES_PATH = 'packages/nx-plugin/packageJsonUpdates.json';\n\n/**\n * Register the nx bump a version update needs, in `packageJsonUpdates.json`. Call\n * only when an nx package actually moved.\n *\n * The bumps live in their own committed file, assembled into `migrations.json`\n * at build time, so this weekly-bot edit never conflicts with a migration PR.\n * The version sync migration itself is a committed `everyMigration` entry, so\n * only the nx packages need registering per update: they go through\n * `packageJsonUpdates` rather than a migration (see `nx-package-updates.ts`).\n *\n * A bump already dated by a release stays — a workspace several releases behind\n * needs each hop in turn. One still waiting for a release is dropped: this bump\n * supersedes it, and both would otherwise ship under the same version, leaving\n * which nx a workspace lands on down to the order nx happens to apply them in.\n *\n * Idempotent: re-running before a release replaces the pending entry with itself.\n *\n * @param nxVersion nx version being moved to. The update script rewrites\n * `versions.ts` on the tree, which cannot change the `NX_VERSION` this process\n * imported at load — so the caller passes the version it just wrote, or the\n * entry would record the one being replaced.\n * @returns paths written, for the update report\n */\nexport const registerNxPackageUpdates = (\n tree: Tree,\n nxVersion?: string,\n): string[] => {\n const existing: PackageJsonUpdates = tree.exists(PACKAGE_JSON_UPDATES_PATH)\n ? JSON.parse(tree.read(PACKAGE_JSON_UPDATES_PATH, 'utf-8'))\n : {};\n\n writeJson(tree, PACKAGE_JSON_UPDATES_PATH, {\n // Recorded under `latest` until stamping resolves the version it ships with.\n ...Object.fromEntries(\n Object.entries(existing).filter(\n ([, entry]) => entry.version !== LATEST_MIGRATIONS_DIR,\n ),\n ),\n ...nxPackageJsonUpdates(LATEST_MIGRATIONS_DIR, nxVersion),\n });\n\n return [PACKAGE_JSON_UPDATES_PATH];\n};\n"],"names":["writeJson","LATEST_MIGRATIONS_DIR","nxPackageJsonUpdates","PACKAGE_JSON_UPDATES_PATH","registerNxPackageUpdates","tree","nxVersion","existing","exists","JSON","parse","read","Object","fromEntries","entries","filter","entry","version"],"mappings":"AAAA;;;CAGC,GACD,SAAoBA,SAAS,QAAQ,aAAa;AAClD,SAASC,qBAAqB,QAAQ,2BAA2B;AACjE,SACEC,oBAAoB,QAEf,0BAA0B;AAEjC,MAAMC,4BAA4B;AAElC;;;;;;;;;;;;;;;;;;;;;;CAsBC,GACD,OAAO,MAAMC,2BAA2B,CACtCC,MACAC;IAEA,MAAMC,WAA+BF,KAAKG,MAAM,CAACL,6BAC7CM,KAAKC,KAAK,CAACL,KAAKM,IAAI,CAACR,2BAA2B,YAChD,CAAC;IAELH,UAAUK,MAAMF,2BAA2B;QACzC,6EAA6E;QAC7E,GAAGS,OAAOC,WAAW,CACnBD,OAAOE,OAAO,CAACP,UAAUQ,MAAM,CAC7B,CAAC,GAAGC,MAAM,GAAKA,MAAMC,OAAO,KAAKhB,uBAEpC;QACD,GAAGC,qBAAqBD,uBAAuBK,UAAU;IAC3D;IAEA,OAAO;QAACH;KAA0B;AACpC,EAAE"}
@@ -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 OwnedDependencies } from './owned-dependencies';
6
+ import { type OwnedDependencies } from './owned-dependencies.js';
7
7
  /**
8
8
  * Whether a file is a Dockerfile: exactly `Dockerfile`, or the `<name>.Dockerfile`
9
9
  * form the smithy templates vend as `build.Dockerfile`.