@aws/nx-plugin 1.0.0-rc.53 → 1.0.0-rc.55

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 (271) hide show
  1. package/migrations.json +50 -0
  2. package/package.json +1 -1
  3. package/src/agentcore-gateway/gateway-connection/generator.js +3 -1
  4. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -1
  5. package/src/agentcore-gateway/generator.d.ts +49 -1
  6. package/src/agentcore-gateway/generator.js +55 -22
  7. package/src/agentcore-gateway/generator.js.map +1 -1
  8. package/src/agentcore-gateway/mcp-connection/generator.js +3 -1
  9. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -1
  10. package/src/infra/app/__snapshots__/generator.spec.ts.snap +2 -0
  11. package/src/infra/app/generator.d.ts +43 -0
  12. package/src/infra/app/generator.js +47 -18
  13. package/src/infra/app/generator.js.map +1 -1
  14. package/src/init/generator.d.ts +13 -0
  15. package/src/init/generator.js +14 -3
  16. package/src/init/generator.js.map +1 -1
  17. package/src/migrations/latest/backfill-generator-metadata/migration.d.ts +96 -0
  18. package/src/migrations/latest/backfill-generator-metadata/migration.js +670 -0
  19. package/src/migrations/latest/backfill-generator-metadata/migration.js.map +1 -0
  20. package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.d.ts +6 -0
  21. package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.js +94 -0
  22. package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.js.map +1 -0
  23. package/src/preset/generator.d.ts +13 -0
  24. package/src/preset/generator.js +12 -3
  25. package/src/preset/generator.js.map +1 -1
  26. package/src/py/agent/a2a-connection/generator.d.ts +24 -0
  27. package/src/py/agent/a2a-connection/generator.js +49 -20
  28. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  29. package/src/py/agent/gateway-connection/generator.d.ts +23 -0
  30. package/src/py/agent/gateway-connection/generator.js +45 -11
  31. package/src/py/agent/gateway-connection/generator.js.map +1 -1
  32. package/src/py/agent/generator.d.ts +146 -1
  33. package/src/py/agent/generator.js +173 -76
  34. package/src/py/agent/generator.js.map +1 -1
  35. package/src/py/agent/mcp-connection/generator.d.ts +23 -0
  36. package/src/py/agent/mcp-connection/generator.js +45 -11
  37. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  38. package/src/py/agent/react-connection/generator.d.ts +146 -0
  39. package/src/py/agent/react-connection/generator.js +27 -4
  40. package/src/py/agent/react-connection/generator.js.map +1 -1
  41. package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +18 -0
  42. package/src/py/dynamodb/agent-connection/generator.js +7 -1
  43. package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
  44. package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +9 -0
  45. package/src/py/dynamodb/fast-api-connection/generator.js +3 -1
  46. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
  47. package/src/py/dynamodb/generator.d.ts +29 -0
  48. package/src/py/dynamodb/generator.js +32 -12
  49. package/src/py/dynamodb/generator.js.map +1 -1
  50. package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +18 -0
  51. package/src/py/dynamodb/mcp-server-connection/generator.js +7 -1
  52. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
  53. package/src/py/fast-api/generator.d.ts +63 -0
  54. package/src/py/fast-api/generator.js +58 -23
  55. package/src/py/fast-api/generator.js.map +1 -1
  56. package/src/py/fast-api/react/generator.d.ts +16 -1
  57. package/src/py/fast-api/react/generator.js +15 -3
  58. package/src/py/fast-api/react/generator.js.map +1 -1
  59. package/src/py/lambda-function/generator.d.ts +21 -0
  60. package/src/py/lambda-function/generator.js +29 -10
  61. package/src/py/lambda-function/generator.js.map +1 -1
  62. package/src/py/mcp-server/generator.d.ts +60 -0
  63. package/src/py/mcp-server/generator.js +62 -25
  64. package/src/py/mcp-server/generator.js.map +1 -1
  65. package/src/py/project/generator.d.ts +13 -0
  66. package/src/py/project/generator.js +29 -10
  67. package/src/py/project/generator.js.map +1 -1
  68. package/src/py/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +19 -0
  69. package/src/py/rdb/agent-connection/generator.js +7 -1
  70. package/src/py/rdb/agent-connection/generator.js.map +1 -1
  71. package/src/py/rdb/fast-api-connection/__snapshots__/generator.spec.ts.snap +7 -0
  72. package/src/py/rdb/fast-api-connection/generator.js +3 -1
  73. package/src/py/rdb/fast-api-connection/generator.js.map +1 -1
  74. package/src/py/rdb/generator.d.ts +89 -0
  75. package/src/py/rdb/generator.js +88 -40
  76. package/src/py/rdb/generator.js.map +1 -1
  77. package/src/py/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +18 -0
  78. package/src/py/rdb/mcp-server-connection/generator.js +7 -1
  79. package/src/py/rdb/mcp-server-connection/generator.js.map +1 -1
  80. package/src/smithy/project/generator.d.ts +7 -0
  81. package/src/smithy/project/generator.js +8 -2
  82. package/src/smithy/project/generator.js.map +1 -1
  83. package/src/smithy/react-connection/generator.d.ts +15 -0
  84. package/src/smithy/react-connection/generator.js +17 -3
  85. package/src/smithy/react-connection/generator.js.map +1 -1
  86. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +1 -0
  87. package/src/smithy/ts/api/generator.d.ts +79 -0
  88. package/src/smithy/ts/api/generator.js +77 -33
  89. package/src/smithy/ts/api/generator.js.map +1 -1
  90. package/src/terraform/project/generator.d.ts +50 -0
  91. package/src/terraform/project/generator.js +63 -17
  92. package/src/terraform/project/generator.js.map +1 -1
  93. package/src/trpc/backend/generator.d.ts +84 -0
  94. package/src/trpc/backend/generator.js +98 -38
  95. package/src/trpc/backend/generator.js.map +1 -1
  96. package/src/trpc/react/generator.d.ts +37 -0
  97. package/src/trpc/react/generator.js +63 -26
  98. package/src/trpc/react/generator.js.map +1 -1
  99. package/src/ts/agent/a2a-connection/generator.d.ts +46 -0
  100. package/src/ts/agent/a2a-connection/generator.js +53 -16
  101. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  102. package/src/ts/agent/gateway-connection/generator.d.ts +37 -0
  103. package/src/ts/agent/gateway-connection/generator.js +41 -14
  104. package/src/ts/agent/gateway-connection/generator.js.map +1 -1
  105. package/src/ts/agent/generator.d.ts +162 -0
  106. package/src/ts/agent/generator.js +166 -75
  107. package/src/ts/agent/generator.js.map +1 -1
  108. package/src/ts/agent/mcp-connection/generator.d.ts +37 -0
  109. package/src/ts/agent/mcp-connection/generator.js +41 -14
  110. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  111. package/src/ts/agent/react-connection/generator.d.ts +186 -0
  112. package/src/ts/agent/react-connection/generator.js +70 -21
  113. package/src/ts/agent/react-connection/generator.js.map +1 -1
  114. package/src/ts/astro-docs/generator.d.ts +38 -0
  115. package/src/ts/astro-docs/generator.js +58 -19
  116. package/src/ts/astro-docs/generator.js.map +1 -1
  117. package/src/ts/dcr-proxy/generator.d.ts +24 -0
  118. package/src/ts/dcr-proxy/generator.js +31 -14
  119. package/src/ts/dcr-proxy/generator.js.map +1 -1
  120. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +18 -0
  121. package/src/ts/dynamodb/agent-connection/generator.js +7 -1
  122. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
  123. package/src/ts/dynamodb/generator.d.ts +41 -0
  124. package/src/ts/dynamodb/generator.js +47 -20
  125. package/src/ts/dynamodb/generator.js.map +1 -1
  126. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +18 -0
  127. package/src/ts/dynamodb/mcp-server-connection/generator.js +7 -1
  128. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
  129. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +9 -0
  130. package/src/ts/dynamodb/smithy-connection/generator.js +3 -1
  131. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
  132. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +9 -0
  133. package/src/ts/dynamodb/trpc-connection/generator.js +3 -1
  134. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
  135. package/src/ts/lambda-function/generator.d.ts +38 -0
  136. package/src/ts/lambda-function/generator.js +49 -20
  137. package/src/ts/lambda-function/generator.js.map +1 -1
  138. package/src/ts/lib/generator.d.ts +7 -0
  139. package/src/ts/lib/generator.js +8 -1
  140. package/src/ts/lib/generator.js.map +1 -1
  141. package/src/ts/lib/ts-project-utils.d.ts +3 -1
  142. package/src/ts/lib/ts-project-utils.js +3 -2
  143. package/src/ts/lib/ts-project-utils.js.map +1 -1
  144. package/src/ts/lib/vitest.d.ts +10 -1
  145. package/src/ts/lib/vitest.js +14 -2
  146. package/src/ts/lib/vitest.js.map +1 -1
  147. package/src/ts/mcp-server/generator.d.ts +71 -0
  148. package/src/ts/mcp-server/generator.js +73 -36
  149. package/src/ts/mcp-server/generator.js.map +1 -1
  150. package/src/ts/nx-generator/generator.d.ts +3 -0
  151. package/src/ts/nx-generator/generator.js +8 -2
  152. package/src/ts/nx-generator/generator.js.map +1 -1
  153. package/src/ts/nx-migration/generator.d.ts +3 -0
  154. package/src/ts/nx-migration/generator.js +8 -2
  155. package/src/ts/nx-migration/generator.js.map +1 -1
  156. package/src/ts/nx-plugin/generator.d.ts +3 -0
  157. package/src/ts/nx-plugin/generator.js +8 -2
  158. package/src/ts/nx-plugin/generator.js.map +1 -1
  159. package/src/ts/nx-plugin/utils.d.ts +7 -2
  160. package/src/ts/nx-plugin/utils.js +10 -4
  161. package/src/ts/nx-plugin/utils.js.map +1 -1
  162. package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +10 -0
  163. package/src/ts/rdb/agent-connection/generator.js +8 -1
  164. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  165. package/src/ts/rdb/generator.d.ts +101 -0
  166. package/src/ts/rdb/generator.js +93 -41
  167. package/src/ts/rdb/generator.js.map +1 -1
  168. package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +10 -0
  169. package/src/ts/rdb/mcp-server-connection/generator.js +8 -1
  170. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  171. package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +9 -0
  172. package/src/ts/rdb/smithy-connection/generator.js +4 -1
  173. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  174. package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +9 -0
  175. package/src/ts/rdb/trpc-connection/generator.js +3 -1
  176. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  177. package/src/ts/react-website/agui/generator.d.ts +86 -0
  178. package/src/ts/react-website/agui/generator.js +63 -28
  179. package/src/ts/react-website/agui/generator.js.map +1 -1
  180. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +20 -2
  181. package/src/ts/react-website/app/generator.d.ts +136 -1
  182. package/src/ts/react-website/app/generator.js +109 -40
  183. package/src/ts/react-website/app/generator.js.map +1 -1
  184. package/src/ts/react-website/cognito-auth/generator.d.ts +19 -0
  185. package/src/ts/react-website/cognito-auth/generator.js +21 -9
  186. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  187. package/src/utils/add-dependencies.d.ts +38 -0
  188. package/src/utils/add-dependencies.js +83 -0
  189. package/src/utils/add-dependencies.js.map +1 -0
  190. package/src/utils/agent-connection/agent-connection.d.ts +27 -6
  191. package/src/utils/agent-connection/agent-connection.js +47 -18
  192. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  193. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +19 -1
  194. package/src/utils/agent-core-constructs/agent-core-constructs.js +26 -6
  195. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  196. package/src/utils/api-constructs/api-constructs.d.ts +21 -2
  197. package/src/utils/api-constructs/api-constructs.js +26 -5
  198. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  199. package/src/utils/bundle/bundle.d.ts +6 -1
  200. package/src/utils/bundle/bundle.js +8 -2
  201. package/src/utils/bundle/bundle.js.map +1 -1
  202. package/src/utils/commands.d.ts +5 -4
  203. package/src/utils/commands.js +2 -6
  204. package/src/utils/commands.js.map +1 -1
  205. package/src/utils/connection/open-api/react.d.ts +18 -1
  206. package/src/utils/connection/open-api/react.js +27 -3
  207. package/src/utils/connection/open-api/react.js.map +1 -1
  208. package/src/utils/declared-dependencies.d.ts +140 -0
  209. package/src/utils/declared-dependencies.js +64 -0
  210. package/src/utils/declared-dependencies.js.map +1 -0
  211. package/src/utils/docker.d.ts +10 -1
  212. package/src/utils/docker.js +7 -3
  213. package/src/utils/docker.js.map +1 -1
  214. package/src/utils/fs.d.ts +15 -4
  215. package/src/utils/fs.js +26 -13
  216. package/src/utils/fs.js.map +1 -1
  217. package/src/utils/init.d.ts +14 -1
  218. package/src/utils/init.js +25 -7
  219. package/src/utils/init.js.map +1 -1
  220. package/src/utils/migration-versions.d.ts +15 -1
  221. package/src/utils/migration-versions.js +53 -7
  222. package/src/utils/migration-versions.js.map +1 -1
  223. package/src/utils/nx.d.ts +18 -0
  224. package/src/utils/nx.js +4 -0
  225. package/src/utils/nx.js.map +1 -1
  226. package/src/utils/py.d.ts +3 -2
  227. package/src/utils/py.js +10 -10
  228. package/src/utils/py.js.map +1 -1
  229. package/src/utils/shared-constructs-constants.d.ts +39 -4
  230. package/src/utils/shared-constructs-constants.js +29 -0
  231. package/src/utils/shared-constructs-constants.js.map +1 -1
  232. package/src/utils/shared-constructs.d.ts +4 -1
  233. package/src/utils/shared-constructs.js +5 -4
  234. package/src/utils/shared-constructs.js.map +1 -1
  235. package/src/utils/shared-dynamodb-scripts.d.ts +8 -1
  236. package/src/utils/shared-dynamodb-scripts.js +11 -3
  237. package/src/utils/shared-dynamodb-scripts.js.map +1 -1
  238. package/src/utils/shared-infra-scripts.d.ts +16 -1
  239. package/src/utils/shared-infra-scripts.js +18 -3
  240. package/src/utils/shared-infra-scripts.js.map +1 -1
  241. package/src/utils/shared-rdb-scripts.d.ts +12 -1
  242. package/src/utils/shared-rdb-scripts.js +17 -3
  243. package/src/utils/shared-rdb-scripts.js.map +1 -1
  244. package/src/utils/shared-shadcn.d.ts +26 -1
  245. package/src/utils/shared-shadcn.js +31 -14
  246. package/src/utils/shared-shadcn.js.map +1 -1
  247. package/src/utils/version-upgrade-migration/migration.d.ts +14 -0
  248. package/src/utils/version-upgrade-migration/migration.js +16 -0
  249. package/src/utils/version-upgrade-migration/migration.js.map +1 -0
  250. package/src/utils/version-upgrade-migration/nx-package-updates.d.ts +35 -0
  251. package/src/utils/version-upgrade-migration/nx-package-updates.js +42 -0
  252. package/src/utils/version-upgrade-migration/nx-package-updates.js.map +1 -0
  253. package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +50 -0
  254. package/src/utils/version-upgrade-migration/owned-dependencies.js +98 -0
  255. package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -0
  256. package/src/utils/version-upgrade-migration/register.d.ts +18 -0
  257. package/src/utils/version-upgrade-migration/register.js +33 -0
  258. package/src/utils/version-upgrade-migration/register.js.map +1 -0
  259. package/src/utils/version-upgrade-migration/sync-metrics-version.d.ts +13 -0
  260. package/src/utils/version-upgrade-migration/sync-metrics-version.js +33 -0
  261. package/src/utils/version-upgrade-migration/sync-metrics-version.js.map +1 -0
  262. package/src/utils/version-upgrade-migration/sync-vended-versions.d.ts +10 -0
  263. package/src/utils/version-upgrade-migration/sync-vended-versions.js +504 -0
  264. package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -0
  265. package/src/utils/version-upgrade-migration/vended-upgrade.d.ts +14 -0
  266. package/src/utils/version-upgrade-migration/vended-upgrade.js +40 -0
  267. package/src/utils/version-upgrade-migration/vended-upgrade.js.map +1 -0
  268. package/src/utils/versions.d.ts +25 -5
  269. package/src/utils/versions.js +46 -4
  270. package/src/utils/versions.js.map +1 -1
  271. package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +4 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/smithy/project/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n addProjectConfiguration,\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { getTsLibDetails } from '../../ts/lib/generator';\nimport { resolveContainers } from '../../utils/containers';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { FsCommands } from '../../utils/fs';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { toClassName, toKebabCase } from '../../utils/names';\nimport { getNpmScope } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n projectExists,\n} from '../../utils/nx';\nimport type { SmithyProjectGeneratorSchema } from './schema';\n\nexport const SMITHY_PROJECT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const smithyProjectGenerator = async (\n tree: Tree,\n options: SmithyProjectGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const cmd = new FsCommands(tree);\n const containers = await resolveContainers(tree, 'inherit');\n const type = options.type ?? 'service';\n\n // Create project.json\n const { fullyQualifiedName, dir } = getTsLibDetails(tree, options);\n\n if (!projectExists(tree, fullyQualifiedName)) {\n addProjectConfiguration(tree, fullyQualifiedName, {\n name: fullyQualifiedName,\n root: dir,\n sourceRoot: joinPathFragments(dir, 'src'),\n projectType: 'library',\n targets: {\n build: {\n dependsOn: ['compile'],\n },\n compile: {\n cache: true,\n outputs: ['{workspaceRoot}/dist/{projectRoot}/build'],\n executor: 'nx:run-commands',\n options: {\n commands: [\n cmd.rm('dist/{projectRoot}/build'),\n cmd.mkdir('dist/{projectRoot}/build'),\n // The workspace build context lets a project's Dockerfile copy in\n // the built models of shape libraries it depends on. Commands run\n // from the workspace root, so it is the current directory.\n `${containers} build -f {projectRoot}/build.Dockerfile --build-context workspace=. --target export --output type=local,dest=dist/{projectRoot}/build {projectRoot}`,\n ],\n parallel: false,\n cwd: '{workspaceRoot}',\n },\n },\n },\n });\n }\n\n const serviceName = options.serviceName ?? options.name;\n const serviceNameClassName = toClassName(serviceName);\n const serviceNameKebabCase = toKebabCase(serviceName);\n const scope = getNpmScope(tree);\n const namespace = options.namespace ?? toKebabCase(scope).replace(/-/g, '.');\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', type),\n dir,\n {\n namespace,\n serviceNameClassName,\n serviceNameKebabCase,\n scope,\n },\n {\n // Smithy models are user-owned — a re-run must not discard edits\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n addGeneratorMetadata(\n tree,\n fullyQualifiedName,\n SMITHY_PROJECT_GENERATOR_INFO,\n {\n smithyType: type,\n namespace,\n ...(type === 'service' ? { apiName: options.name } : {}),\n },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [SMITHY_PROJECT_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default smithyProjectGenerator;\n"],"names":["addProjectConfiguration","generateFiles","joinPathFragments","OverwriteStrategy","getTsLibDetails","resolveContainers","formatFilesInSubtree","FsCommands","installDependencies","addGeneratorMetricsIfApplicable","toClassName","toKebabCase","getNpmScope","addGeneratorMetadata","getGeneratorInfo","projectExists","SMITHY_PROJECT_GENERATOR_INFO","filename","smithyProjectGenerator","tree","options","cmd","containers","type","fullyQualifiedName","dir","name","root","sourceRoot","projectType","targets","build","dependsOn","compile","cache","outputs","executor","commands","rm","mkdir","parallel","cwd","serviceName","serviceNameClassName","serviceNameKebabCase","scope","namespace","replace","dirname","overwriteStrategy","KeepExisting","smithyType","apiName","preferInstallDependencies","languages"],"mappings":"AAAA;;;CAGC,GACD,SACEA,uBAAuB,EAEvBC,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AACpB,SAASC,eAAe,QAAQ,4BAAyB;AACzD,SAASC,iBAAiB,QAAQ,4BAAyB;AAC3D,SAASC,oBAAoB,QAAQ,wBAAqB;AAC1D,SAASC,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,mBAAmB,QAAQ,yBAAsB;AAC1D,SAASC,+BAA+B,QAAQ,yBAAsB;AACtE,SAASC,WAAW,EAAEC,WAAW,QAAQ,uBAAoB;AAC7D,SAASC,WAAW,QAAQ,2BAAwB;AACpD,SACEC,oBAAoB,EACpBC,gBAAgB,EAEhBC,aAAa,QACR,oBAAiB;AAGxB,OAAO,MAAMC,gCAAiDF,iBAC5D,YAAYG,QAAQ,EACpB;AAEF,OAAO,MAAMC,yBAAyB,OACpCC,MACAC;IAEA,MAAMC,MAAM,IAAId,WAAWY;IAC3B,MAAMG,aAAa,MAAMjB,kBAAkBc,MAAM;IACjD,MAAMI,OAAOH,QAAQG,IAAI,IAAI;IAE7B,sBAAsB;IACtB,MAAM,EAAEC,kBAAkB,EAAEC,GAAG,EAAE,GAAGrB,gBAAgBe,MAAMC;IAE1D,IAAI,CAACL,cAAcI,MAAMK,qBAAqB;QAC5CxB,wBAAwBmB,MAAMK,oBAAoB;YAChDE,MAAMF;YACNG,MAAMF;YACNG,YAAY1B,kBAAkBuB,KAAK;YACnCI,aAAa;YACbC,SAAS;gBACPC,OAAO;oBACLC,WAAW;wBAAC;qBAAU;gBACxB;gBACAC,SAAS;oBACPC,OAAO;oBACPC,SAAS;wBAAC;qBAA2C;oBACrDC,UAAU;oBACVhB,SAAS;wBACPiB,UAAU;4BACRhB,IAAIiB,EAAE,CAAC;4BACPjB,IAAIkB,KAAK,CAAC;4BACV,kEAAkE;4BAClE,kEAAkE;4BAClE,2DAA2D;4BAC3D,GAAGjB,WAAW,oJAAoJ,CAAC;yBACpK;wBACDkB,UAAU;wBACVC,KAAK;oBACP;gBACF;YACF;QACF;IACF;IAEA,MAAMC,cAActB,QAAQsB,WAAW,IAAItB,QAAQM,IAAI;IACvD,MAAMiB,uBAAuBjC,YAAYgC;IACzC,MAAME,uBAAuBjC,YAAY+B;IACzC,MAAMG,QAAQjC,YAAYO;IAC1B,MAAM2B,YAAY1B,QAAQ0B,SAAS,IAAInC,YAAYkC,OAAOE,OAAO,CAAC,MAAM;IAExE9C,cACEkB,MACAjB,kBAAkB,YAAY8C,OAAO,EAAE,SAASzB,OAChDE,KACA;QACEqB;QACAH;QACAC;QACAC;IACF,GACA;QACE,iEAAiE;QACjEI,mBAAmB9C,kBAAkB+C,YAAY;IACnD;IAGFrC,qBACEM,MACAK,oBACAR,+BACA;QACEmC,YAAY5B;QACZuB;QACA,GAAIvB,SAAS,YAAY;YAAE6B,SAAShC,QAAQM,IAAI;QAAC,IAAI,CAAC,CAAC;IACzD;IAGF,MAAMjB,gCAAgCU,MAAM;QAACH;KAA8B;IAE3E,MAAMV,qBAAqBa;IAC3B,OAAO,IACLX,oBAAoBW,MAAMC,QAAQiC,yBAAyB,EAAE;YAC3DC,WAAW;gBAAC;aAAa;QAC3B;AACJ,EAAE;AAEF,eAAepC,uBAAuB"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/smithy/project/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n addProjectConfiguration,\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { getTsLibDetails } from '../../ts/lib/generator';\nimport { resolveContainers } from '../../utils/containers';\nimport { declareDependencies } from '../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { FS_DEPENDENCIES, FsCommands } from '../../utils/fs';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { toClassName, toKebabCase } from '../../utils/names';\nimport { getNpmScope } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n projectExists,\n} from '../../utils/nx';\nimport type { SmithyProjectGeneratorSchema } from './schema';\n\nexport const DEPENDENCIES = declareDependencies()({\n ts: [...FS_DEPENDENCIES],\n});\n\nexport const SMITHY_PROJECT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const smithyProjectGenerator = async (\n tree: Tree,\n options: SmithyProjectGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const cmd = new FsCommands(tree, DEPENDENCIES);\n const containers = await resolveContainers(tree, 'inherit');\n const type = options.type ?? 'service';\n\n // Create project.json\n const { fullyQualifiedName, dir } = getTsLibDetails(tree, options);\n\n if (!projectExists(tree, fullyQualifiedName)) {\n addProjectConfiguration(tree, fullyQualifiedName, {\n name: fullyQualifiedName,\n root: dir,\n sourceRoot: joinPathFragments(dir, 'src'),\n projectType: 'library',\n targets: {\n build: {\n dependsOn: ['compile'],\n },\n compile: {\n cache: true,\n outputs: ['{workspaceRoot}/dist/{projectRoot}/build'],\n executor: 'nx:run-commands',\n options: {\n commands: [\n cmd.rm('dist/{projectRoot}/build'),\n cmd.mkdir('dist/{projectRoot}/build'),\n // The workspace build context lets a project's Dockerfile copy in\n // the built models of shape libraries it depends on. Commands run\n // from the workspace root, so it is the current directory.\n `${containers} build -f {projectRoot}/build.Dockerfile --build-context workspace=. --target export --output type=local,dest=dist/{projectRoot}/build {projectRoot}`,\n ],\n parallel: false,\n cwd: '{workspaceRoot}',\n },\n },\n },\n });\n }\n\n const serviceName = options.serviceName ?? options.name;\n const serviceNameClassName = toClassName(serviceName);\n const serviceNameKebabCase = toKebabCase(serviceName);\n const scope = getNpmScope(tree);\n const namespace = options.namespace ?? toKebabCase(scope).replace(/-/g, '.');\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', type),\n dir,\n {\n namespace,\n serviceNameClassName,\n serviceNameKebabCase,\n scope,\n },\n {\n // Smithy models are user-owned — a re-run must not discard edits\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n addGeneratorMetadata(\n tree,\n fullyQualifiedName,\n SMITHY_PROJECT_GENERATOR_INFO,\n {\n smithyType: type,\n namespace,\n ...(type === 'service' ? { apiName: options.name } : {}),\n },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [SMITHY_PROJECT_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default smithyProjectGenerator;\n"],"names":["addProjectConfiguration","generateFiles","joinPathFragments","OverwriteStrategy","getTsLibDetails","resolveContainers","declareDependencies","formatFilesInSubtree","FS_DEPENDENCIES","FsCommands","installDependencies","addGeneratorMetricsIfApplicable","toClassName","toKebabCase","getNpmScope","addGeneratorMetadata","getGeneratorInfo","projectExists","DEPENDENCIES","ts","SMITHY_PROJECT_GENERATOR_INFO","filename","smithyProjectGenerator","tree","options","cmd","containers","type","fullyQualifiedName","dir","name","root","sourceRoot","projectType","targets","build","dependsOn","compile","cache","outputs","executor","commands","rm","mkdir","parallel","cwd","serviceName","serviceNameClassName","serviceNameKebabCase","scope","namespace","replace","dirname","overwriteStrategy","KeepExisting","smithyType","apiName","preferInstallDependencies","languages"],"mappings":"AAAA;;;CAGC,GACD,SACEA,uBAAuB,EAEvBC,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AACpB,SAASC,eAAe,QAAQ,4BAAyB;AACzD,SAASC,iBAAiB,QAAQ,4BAAyB;AAC3D,SAASC,mBAAmB,QAAQ,uCAAoC;AACxE,SAASC,oBAAoB,QAAQ,wBAAqB;AAC1D,SAASC,eAAe,EAAEC,UAAU,QAAQ,oBAAiB;AAC7D,SAASC,mBAAmB,QAAQ,yBAAsB;AAC1D,SAASC,+BAA+B,QAAQ,yBAAsB;AACtE,SAASC,WAAW,EAAEC,WAAW,QAAQ,uBAAoB;AAC7D,SAASC,WAAW,QAAQ,2BAAwB;AACpD,SACEC,oBAAoB,EACpBC,gBAAgB,EAEhBC,aAAa,QACR,oBAAiB;AAGxB,OAAO,MAAMC,eAAeZ,sBAAsB;IAChDa,IAAI;WAAIX;KAAgB;AAC1B,GAAG;AAEH,OAAO,MAAMY,gCAAiDJ,iBAC5D,YAAYK,QAAQ,EACpB;AAEF,OAAO,MAAMC,yBAAyB,OACpCC,MACAC;IAEA,MAAMC,MAAM,IAAIhB,WAAWc,MAAML;IACjC,MAAMQ,aAAa,MAAMrB,kBAAkBkB,MAAM;IACjD,MAAMI,OAAOH,QAAQG,IAAI,IAAI;IAE7B,sBAAsB;IACtB,MAAM,EAAEC,kBAAkB,EAAEC,GAAG,EAAE,GAAGzB,gBAAgBmB,MAAMC;IAE1D,IAAI,CAACP,cAAcM,MAAMK,qBAAqB;QAC5C5B,wBAAwBuB,MAAMK,oBAAoB;YAChDE,MAAMF;YACNG,MAAMF;YACNG,YAAY9B,kBAAkB2B,KAAK;YACnCI,aAAa;YACbC,SAAS;gBACPC,OAAO;oBACLC,WAAW;wBAAC;qBAAU;gBACxB;gBACAC,SAAS;oBACPC,OAAO;oBACPC,SAAS;wBAAC;qBAA2C;oBACrDC,UAAU;oBACVhB,SAAS;wBACPiB,UAAU;4BACRhB,IAAIiB,EAAE,CAAC;4BACPjB,IAAIkB,KAAK,CAAC;4BACV,kEAAkE;4BAClE,kEAAkE;4BAClE,2DAA2D;4BAC3D,GAAGjB,WAAW,oJAAoJ,CAAC;yBACpK;wBACDkB,UAAU;wBACVC,KAAK;oBACP;gBACF;YACF;QACF;IACF;IAEA,MAAMC,cAActB,QAAQsB,WAAW,IAAItB,QAAQM,IAAI;IACvD,MAAMiB,uBAAuBnC,YAAYkC;IACzC,MAAME,uBAAuBnC,YAAYiC;IACzC,MAAMG,QAAQnC,YAAYS;IAC1B,MAAM2B,YAAY1B,QAAQ0B,SAAS,IAAIrC,YAAYoC,OAAOE,OAAO,CAAC,MAAM;IAExElD,cACEsB,MACArB,kBAAkB,YAAYkD,OAAO,EAAE,SAASzB,OAChDE,KACA;QACEqB;QACAH;QACAC;QACAC;IACF,GACA;QACE,iEAAiE;QACjEI,mBAAmBlD,kBAAkBmD,YAAY;IACnD;IAGFvC,qBACEQ,MACAK,oBACAR,+BACA;QACEmC,YAAY5B;QACZuB;QACA,GAAIvB,SAAS,YAAY;YAAE6B,SAAShC,QAAQM,IAAI;QAAC,IAAI,CAAC,CAAC;IACzD;IAGF,MAAMnB,gCAAgCY,MAAM;QAACH;KAA8B;IAE3E,MAAMb,qBAAqBgB;IAC3B,OAAO,IACLb,oBAAoBa,MAAMC,QAAQiC,yBAAyB,EAAE;YAC3DC,WAAW;gBAAC;aAAa;QAC3B;AACJ,EAAE;AAEF,eAAepC,uBAAuB"}
@@ -5,6 +5,21 @@
5
5
  import { type GeneratorCallback, type Tree } from '@nx/devkit';
6
6
  import { type NxGeneratorInfo } from '../../utils/nx';
7
7
  import type { SmithyReactConnectionGeneratorSchema } from './schema';
8
+ export declare const DEPENDENCIES: import("../../utils/declared-dependencies").DependencyDeclaration<readonly [{
9
+ readonly name: "oidc-client-ts";
10
+ }, {
11
+ readonly name: "react-oidc-context";
12
+ }, {
13
+ readonly name: "@aws-sdk/credential-provider-cognito-identity";
14
+ }, {
15
+ readonly name: "aws4fetch";
16
+ }, {
17
+ readonly name: "@tanstack/react-query";
18
+ }, {
19
+ readonly name: "@tanstack/react-query-devtools";
20
+ }, {
21
+ readonly name: "@smithy/types";
22
+ }], readonly import("../../utils/declared-dependencies").DeclaredPyDependency<"a2a-sdk" | "ag-ui-langgraph" | "ag-ui-protocol" | "ag-ui-strands" | "aws-lambda-powertools" | "aws-lambda-powertools[tracer]" | "aws-lambda-powertools[parser]" | "aws-opentelemetry-distro" | "bedrock-agentcore" | "boto3" | "checkov" | "fastapi" | "fastapi[standard]" | "httpx" | "langchain" | "langchain-aws" | "langchain-mcp-adapters" | "langgraph" | "mcp" | "pip-check-updates" | "pip-licenses" | "ruff" | "strands-agents" | "strands-agents[a2a]" | "strands-agents-tools" | "ty" | "pynamodb" | "uvicorn" | "sqlmodel" | "alembic" | "aiomysql" | "asyncpg" | "greenlet", Record<string, never>>[]>;
8
23
  export declare const SMITHY_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo;
9
24
  export declare const smithyReactConnectionGenerator: (tree: Tree, options: SmithyReactConnectionGeneratorSchema) => Promise<GeneratorCallback>;
10
25
  export default smithyReactConnectionGenerator;
@@ -2,13 +2,24 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */ import { generateFiles, joinPathFragments, OverwriteStrategy } from "@nx/devkit";
5
- import { addOpenApiReactClient } from "../../utils/connection/open-api/react.js";
5
+ import { addOpenApiReactClient, OPEN_API_REACT_DEPENDENCIES } from "../../utils/connection/open-api/react.js";
6
+ import { declareDependencies } from "../../utils/declared-dependencies.js";
6
7
  import { formatFilesInSubtree } from "../../utils/format.js";
7
8
  import { installDependencies } from "../../utils/install.js";
8
9
  import { addGeneratorMetricsIfApplicable } from "../../utils/metrics.js";
9
- import { getGeneratorInfo, readProjectConfigurationUnqualified } from "../../utils/nx.js";
10
+ import { toClassName } from "../../utils/names.js";
11
+ import { addComponentGeneratorMetadata, getGeneratorInfo, readProjectConfigurationUnqualified } from "../../utils/nx.js";
12
+ import { toProjectRelativePath } from "../../utils/paths.js";
10
13
  import { SMITHY_PROJECT_GENERATOR_INFO } from "../project/generator.js";
11
14
  import { TS_SMITHY_API_GENERATOR_INFO } from "../ts/api/generator.js";
15
+ // `addOpenApiReactClient` conditions these on the API's auth, which this
16
+ // generator reads from the backend rather than recording, so no entry can carry
17
+ // a predicate the version sync could confirm.
18
+ export const DEPENDENCIES = declareDependencies()({
19
+ ts: [
20
+ ...OPEN_API_REACT_DEPENDENCIES
21
+ ]
22
+ });
12
23
  export const SMITHY_REACT_CONNECTION_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
13
24
  export const smithyReactConnectionGenerator = async (tree, options)=>{
14
25
  const frontendProjectConfig = readProjectConfigurationUnqualified(tree, options.frontendProjectName);
@@ -35,7 +46,10 @@ export const smithyReactConnectionGenerator = async (tree, options)=>{
35
46
  specBuildTargetName: `${modelProjectConfig.name}:build`,
36
47
  auth,
37
48
  port
38
- });
49
+ }, DEPENDENCIES);
50
+ const apiNameClassName = toClassName(apiName);
51
+ // Recorded so the version sync knows this connection's dependencies are ours.
52
+ addComponentGeneratorMetadata(tree, frontendProjectConfig.name, SMITHY_REACT_CONNECTION_GENERATOR_INFO, toProjectRelativePath(frontendProjectConfig, joinPathFragments(frontendProjectConfig.sourceRoot, 'components', `${apiNameClassName}Provider`)), apiNameClassName);
39
53
  await addGeneratorMetricsIfApplicable(tree, [
40
54
  SMITHY_REACT_CONNECTION_GENERATOR_INFO
41
55
  ]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/smithy/react-connection/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n type Tree,\n} from '@nx/devkit';\nimport { addOpenApiReactClient } from '../../utils/connection/open-api/react';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport {\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../utils/nx';\nimport { SMITHY_PROJECT_GENERATOR_INFO } from '../project/generator';\nimport { TS_SMITHY_API_GENERATOR_INFO } from '../ts/api/generator';\nimport type { SmithyReactConnectionGeneratorSchema } from './schema';\n\nexport const SMITHY_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const smithyReactConnectionGenerator = async (\n tree: Tree,\n options: SmithyReactConnectionGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const frontendProjectConfig = readProjectConfigurationUnqualified(\n tree,\n options.frontendProjectName,\n );\n const targetConfig = readProjectConfigurationUnqualified(\n tree,\n options.smithyModelOrBackendProjectName,\n );\n\n // Target could either be the model or backend project\n const { modelProjectConfig, backendProjectConfig } = resolveProjectConfig(\n tree,\n targetConfig,\n );\n\n const backendMetadata = backendProjectConfig.metadata as any;\n const apiName = backendMetadata?.apiName;\n const auth = (backendMetadata?.auth ?? 'iam').toLowerCase();\n const port = backendMetadata?.port ?? backendMetadata?.ports?.[0] ?? 3001;\n\n const namespace = inferNamespace(tree, modelProjectConfig);\n\n // Add extensions.smithy for customising the client\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'model'),\n modelProjectConfig.sourceRoot,\n {\n namespace,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n await addOpenApiReactClient(tree, {\n apiName,\n frontendProjectConfig,\n backendProjectConfig,\n specBuildProject: modelProjectConfig,\n specPath: joinPathFragments(\n 'dist',\n modelProjectConfig.root,\n 'build',\n 'openapi',\n 'openapi.json',\n ),\n specBuildTargetName: `${modelProjectConfig.name}:build`,\n auth,\n port,\n });\n\n await addGeneratorMetricsIfApplicable(tree, [\n SMITHY_REACT_CONNECTION_GENERATOR_INFO,\n ]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nconst resolveProjectConfig = (\n tree: Tree,\n modelOrBackendConfig: ProjectConfiguration,\n) => {\n if (\n ((modelOrBackendConfig.metadata as any) ?? {}).generator ===\n SMITHY_PROJECT_GENERATOR_INFO.id\n ) {\n // It's the model project\n const backendProjectName = ((modelOrBackendConfig.metadata as any) ?? {})\n .backendProject;\n if (!backendProjectName) {\n throw new Error(\n `Could not find associated backend for Smithy model project ${modelOrBackendConfig.name}`,\n );\n }\n\n return {\n modelProjectConfig: modelOrBackendConfig,\n backendProjectConfig: readProjectConfigurationUnqualified(\n tree,\n backendProjectName,\n ),\n };\n } else if (\n ((modelOrBackendConfig.metadata as any) ?? {}).generator ===\n TS_SMITHY_API_GENERATOR_INFO.id\n ) {\n // It's the backend project\n const modelProjectName = ((modelOrBackendConfig.metadata as any) ?? {})\n .modelProject;\n if (!modelProjectName) {\n throw new Error(\n `Could not find associated model for Smithy backend project ${modelOrBackendConfig.name}`,\n );\n }\n\n return {\n modelProjectConfig: readProjectConfigurationUnqualified(\n tree,\n ((modelOrBackendConfig.metadata as any) ?? {}).modelProject,\n ),\n backendProjectConfig: modelOrBackendConfig,\n };\n }\n throw new Error(\n `Unsupported connection target ${modelOrBackendConfig.name}. Expected a Smithy model or backend project.`,\n );\n};\n\n/**\n * Get the namespace from a model project\n */\nconst inferNamespace = (\n tree: Tree,\n modelProject: ProjectConfiguration,\n): string => {\n const smithyBuildJsonPath = joinPathFragments(\n modelProject.root,\n 'smithy-build.json',\n );\n if (!tree.exists(smithyBuildJsonPath)) {\n throw new Error(\n `No smithy-build.json file found for model project ${modelProject.name}`,\n );\n }\n\n try {\n const smithyBuild = JSON.parse(tree.read(smithyBuildJsonPath, 'utf-8'));\n return smithyBuild.plugins.openapi.service.split('#')[0];\n } catch {\n throw new Error(\n `Unable to determine namespace from ${smithyBuildJsonPath}. Expected plugins.openapi.service to be defined.`,\n );\n }\n};\n\nexport default smithyReactConnectionGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addOpenApiReactClient","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","getGeneratorInfo","readProjectConfigurationUnqualified","SMITHY_PROJECT_GENERATOR_INFO","TS_SMITHY_API_GENERATOR_INFO","SMITHY_REACT_CONNECTION_GENERATOR_INFO","filename","smithyReactConnectionGenerator","tree","options","frontendProjectConfig","frontendProjectName","targetConfig","smithyModelOrBackendProjectName","modelProjectConfig","backendProjectConfig","resolveProjectConfig","backendMetadata","metadata","apiName","auth","toLowerCase","port","ports","namespace","inferNamespace","dirname","sourceRoot","overwriteStrategy","KeepExisting","specBuildProject","specPath","root","specBuildTargetName","name","preferInstallDependencies","languages","modelOrBackendConfig","generator","id","backendProjectName","backendProject","Error","modelProjectName","modelProject","smithyBuildJsonPath","exists","smithyBuild","JSON","parse","read","plugins","openapi","service","split"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/smithy/react-connection/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n type Tree,\n} from '@nx/devkit';\nimport {\n addOpenApiReactClient,\n OPEN_API_REACT_DEPENDENCIES,\n} from '../../utils/connection/open-api/react';\nimport { declareDependencies } from '../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { toClassName } from '../../utils/names';\nimport {\n addComponentGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../utils/nx';\nimport { toProjectRelativePath } from '../../utils/paths';\nimport { SMITHY_PROJECT_GENERATOR_INFO } from '../project/generator';\nimport { TS_SMITHY_API_GENERATOR_INFO } from '../ts/api/generator';\nimport type { SmithyReactConnectionGeneratorSchema } from './schema';\n\n// `addOpenApiReactClient` conditions these on the API's auth, which this\n// generator reads from the backend rather than recording, so no entry can carry\n// a predicate the version sync could confirm.\nexport const DEPENDENCIES = declareDependencies()({\n ts: [...OPEN_API_REACT_DEPENDENCIES],\n});\n\nexport const SMITHY_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const smithyReactConnectionGenerator = async (\n tree: Tree,\n options: SmithyReactConnectionGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const frontendProjectConfig = readProjectConfigurationUnqualified(\n tree,\n options.frontendProjectName,\n );\n const targetConfig = readProjectConfigurationUnqualified(\n tree,\n options.smithyModelOrBackendProjectName,\n );\n\n // Target could either be the model or backend project\n const { modelProjectConfig, backendProjectConfig } = resolveProjectConfig(\n tree,\n targetConfig,\n );\n\n const backendMetadata = backendProjectConfig.metadata as any;\n const apiName = backendMetadata?.apiName;\n const auth = (backendMetadata?.auth ?? 'iam').toLowerCase();\n const port = backendMetadata?.port ?? backendMetadata?.ports?.[0] ?? 3001;\n\n const namespace = inferNamespace(tree, modelProjectConfig);\n\n // Add extensions.smithy for customising the client\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'model'),\n modelProjectConfig.sourceRoot,\n {\n namespace,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n await addOpenApiReactClient(\n tree,\n {\n apiName,\n frontendProjectConfig,\n backendProjectConfig,\n specBuildProject: modelProjectConfig,\n specPath: joinPathFragments(\n 'dist',\n modelProjectConfig.root,\n 'build',\n 'openapi',\n 'openapi.json',\n ),\n specBuildTargetName: `${modelProjectConfig.name}:build`,\n auth,\n port,\n },\n DEPENDENCIES,\n );\n\n const apiNameClassName = toClassName(apiName);\n\n // Recorded so the version sync knows this connection's dependencies are ours.\n addComponentGeneratorMetadata(\n tree,\n frontendProjectConfig.name,\n SMITHY_REACT_CONNECTION_GENERATOR_INFO,\n toProjectRelativePath(\n frontendProjectConfig,\n joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'components',\n `${apiNameClassName}Provider`,\n ),\n ),\n apiNameClassName,\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n SMITHY_REACT_CONNECTION_GENERATOR_INFO,\n ]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nconst resolveProjectConfig = (\n tree: Tree,\n modelOrBackendConfig: ProjectConfiguration,\n) => {\n if (\n ((modelOrBackendConfig.metadata as any) ?? {}).generator ===\n SMITHY_PROJECT_GENERATOR_INFO.id\n ) {\n // It's the model project\n const backendProjectName = ((modelOrBackendConfig.metadata as any) ?? {})\n .backendProject;\n if (!backendProjectName) {\n throw new Error(\n `Could not find associated backend for Smithy model project ${modelOrBackendConfig.name}`,\n );\n }\n\n return {\n modelProjectConfig: modelOrBackendConfig,\n backendProjectConfig: readProjectConfigurationUnqualified(\n tree,\n backendProjectName,\n ),\n };\n } else if (\n ((modelOrBackendConfig.metadata as any) ?? {}).generator ===\n TS_SMITHY_API_GENERATOR_INFO.id\n ) {\n // It's the backend project\n const modelProjectName = ((modelOrBackendConfig.metadata as any) ?? {})\n .modelProject;\n if (!modelProjectName) {\n throw new Error(\n `Could not find associated model for Smithy backend project ${modelOrBackendConfig.name}`,\n );\n }\n\n return {\n modelProjectConfig: readProjectConfigurationUnqualified(\n tree,\n ((modelOrBackendConfig.metadata as any) ?? {}).modelProject,\n ),\n backendProjectConfig: modelOrBackendConfig,\n };\n }\n throw new Error(\n `Unsupported connection target ${modelOrBackendConfig.name}. Expected a Smithy model or backend project.`,\n );\n};\n\n/**\n * Get the namespace from a model project\n */\nconst inferNamespace = (\n tree: Tree,\n modelProject: ProjectConfiguration,\n): string => {\n const smithyBuildJsonPath = joinPathFragments(\n modelProject.root,\n 'smithy-build.json',\n );\n if (!tree.exists(smithyBuildJsonPath)) {\n throw new Error(\n `No smithy-build.json file found for model project ${modelProject.name}`,\n );\n }\n\n try {\n const smithyBuild = JSON.parse(tree.read(smithyBuildJsonPath, 'utf-8'));\n return smithyBuild.plugins.openapi.service.split('#')[0];\n } catch {\n throw new Error(\n `Unable to determine namespace from ${smithyBuildJsonPath}. Expected plugins.openapi.service to be defined.`,\n );\n }\n};\n\nexport default smithyReactConnectionGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addOpenApiReactClient","OPEN_API_REACT_DEPENDENCIES","declareDependencies","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","toClassName","addComponentGeneratorMetadata","getGeneratorInfo","readProjectConfigurationUnqualified","toProjectRelativePath","SMITHY_PROJECT_GENERATOR_INFO","TS_SMITHY_API_GENERATOR_INFO","DEPENDENCIES","ts","SMITHY_REACT_CONNECTION_GENERATOR_INFO","filename","smithyReactConnectionGenerator","tree","options","frontendProjectConfig","frontendProjectName","targetConfig","smithyModelOrBackendProjectName","modelProjectConfig","backendProjectConfig","resolveProjectConfig","backendMetadata","metadata","apiName","auth","toLowerCase","port","ports","namespace","inferNamespace","dirname","sourceRoot","overwriteStrategy","KeepExisting","specBuildProject","specPath","root","specBuildTargetName","name","apiNameClassName","preferInstallDependencies","languages","modelOrBackendConfig","generator","id","backendProjectName","backendProject","Error","modelProjectName","modelProject","smithyBuildJsonPath","exists","smithyBuild","JSON","parse","read","plugins","openapi","service","split"],"mappings":"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"}
@@ -1486,6 +1486,7 @@ exports[`tsSmithyApiGenerator > should generate smithy ts api with default optio
1486
1486
  "apiName": "test-api",
1487
1487
  "auth": "custom",
1488
1488
  "modelProject": "@proj/test-api-model",
1489
+ "iac": "cdk",
1489
1490
  "ports": [3001]
1490
1491
  },
1491
1492
  "targets": {
@@ -4,7 +4,86 @@
4
4
  */
5
5
  import { type GeneratorCallback, type Tree } from '@nx/devkit';
6
6
  import { type NxGeneratorInfo } from '../../../utils/nx';
7
+ import type { IacMetadata } from '../../../utils/shared-constructs-constants';
7
8
  import type { TsSmithyApiGeneratorSchema } from './schema';
9
+ /** The metadata this generator records, which its predicates read. */
10
+ export interface TsSmithyApiMetadata extends IacMetadata {
11
+ readonly apiName: string;
12
+ readonly auth: TsSmithyApiGeneratorSchema['auth'];
13
+ readonly modelProject: string;
14
+ }
15
+ export declare const DEPENDENCIES: import("../../../utils/declared-dependencies").DependencyDeclaration<readonly [{
16
+ readonly name: "@aws-smithy/server-apigateway";
17
+ }, {
18
+ readonly name: "@aws-smithy/server-node";
19
+ }, {
20
+ readonly name: "@middy/core";
21
+ }, {
22
+ readonly name: "@aws-lambda-powertools/logger";
23
+ }, {
24
+ readonly name: "@aws-lambda-powertools/parameters";
25
+ }, {
26
+ readonly name: "@aws-lambda-powertools/tracer";
27
+ }, {
28
+ readonly name: "@aws-lambda-powertools/metrics";
29
+ }, {
30
+ readonly name: "@aws-sdk/client-appconfigdata";
31
+ }, {
32
+ readonly name: "@aws-lambda-powertools/parser";
33
+ readonly when: (m: TsSmithyApiMetadata) => boolean;
34
+ }, {
35
+ readonly name: "@types/aws-lambda";
36
+ readonly dev: true;
37
+ }, {
38
+ readonly name: "tsx";
39
+ readonly dev: true;
40
+ readonly root: true;
41
+ }, {
42
+ readonly name: "ncp";
43
+ } & {
44
+ versionOnly: true;
45
+ }, {
46
+ readonly name: "rimraf";
47
+ } & {
48
+ versionOnly: true;
49
+ }, {
50
+ readonly name: "make-dir-cli";
51
+ } & {
52
+ versionOnly: true;
53
+ }, {
54
+ readonly name: "@aws-sdk/client-api-gateway";
55
+ readonly when: (m: IacMetadata) => boolean;
56
+ } & {
57
+ versionOnly: true;
58
+ }, {
59
+ readonly name: "@aws-sdk/client-iam";
60
+ readonly when: (m: IacMetadata) => boolean;
61
+ } & {
62
+ versionOnly: true;
63
+ }, {
64
+ readonly name: "@trpc/server";
65
+ readonly when: (m: IacMetadata) => boolean;
66
+ } & {
67
+ versionOnly: true;
68
+ }, {
69
+ readonly name: "rolldown";
70
+ } & {
71
+ versionOnly: true;
72
+ }, {
73
+ readonly name: "constructs";
74
+ readonly when: (m: IacMetadata) => boolean;
75
+ } & {
76
+ versionOnly: true;
77
+ }, {
78
+ readonly name: "aws-cdk-lib";
79
+ readonly when: (m: IacMetadata) => boolean;
80
+ } & {
81
+ versionOnly: true;
82
+ }, {
83
+ readonly name: "@types/node";
84
+ } & {
85
+ versionOnly: true;
86
+ }], readonly import("../../../utils/declared-dependencies").DeclaredPyDependency<"a2a-sdk" | "ag-ui-langgraph" | "ag-ui-protocol" | "ag-ui-strands" | "aws-lambda-powertools" | "aws-lambda-powertools[tracer]" | "aws-lambda-powertools[parser]" | "aws-opentelemetry-distro" | "bedrock-agentcore" | "boto3" | "checkov" | "fastapi" | "fastapi[standard]" | "httpx" | "langchain" | "langchain-aws" | "langchain-mcp-adapters" | "langgraph" | "mcp" | "pip-check-updates" | "pip-licenses" | "ruff" | "strands-agents" | "strands-agents[a2a]" | "strands-agents-tools" | "ty" | "pynamodb" | "uvicorn" | "sqlmodel" | "alembic" | "aiomysql" | "asyncpg" | "greenlet", TsSmithyApiMetadata>[]>;
8
87
  export declare const TS_SMITHY_API_GENERATOR_INFO: NxGeneratorInfo;
9
88
  export declare const tsSmithyApiGenerator: (tree: Tree, options: TsSmithyApiGeneratorSchema) => Promise<GeneratorCallback>;
10
89
  export default tsSmithyApiGenerator;
@@ -3,12 +3,13 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */ import { generateFiles, joinPathFragments, OverwriteStrategy, updateProjectConfiguration } from "@nx/devkit";
5
5
  import tsProjectGenerator, { getTsLibDetails } from "../../../ts/lib/generator.js";
6
- import { addApiGatewayInfra } from "../../../utils/api-constructs/api-constructs.js";
6
+ import { addTsDependencies } from "../../../utils/add-dependencies.js";
7
+ import { API_CONSTRUCTS_DEPENDENCIES, addApiGatewayInfra } from "../../../utils/api-constructs/api-constructs.js";
7
8
  import { addSharedConstructsOpenApiMetadataGenerateTarget } from "../../../utils/api-constructs/open-api-metadata.js";
8
- import { addTypeScriptBundleTarget } from "../../../utils/bundle/bundle.js";
9
- import { addDependenciesToPackageJson } from "../../../utils/dependencies.js";
9
+ import { addTypeScriptBundleTarget, BUNDLE_DEPENDENCIES } from "../../../utils/bundle/bundle.js";
10
+ import { declareDependencies, ownedElsewhere } from "../../../utils/declared-dependencies.js";
10
11
  import { formatFilesInSubtree } from "../../../utils/format.js";
11
- import { FsCommands } from "../../../utils/fs.js";
12
+ import { FS_DEPENDENCIES, FsCommands } from "../../../utils/fs.js";
12
13
  import { updateGitIgnore } from "../../../utils/git.js";
13
14
  import { resolveIac } from "../../../utils/iac.js";
14
15
  import { installDependencies } from "../../../utils/install.js";
@@ -17,9 +18,57 @@ import { esmVars } from "../../../utils/module-format.js";
17
18
  import { toClassName, toKebabCase } from "../../../utils/names.js";
18
19
  import { addDependencyToTargetIfNotPresent, addGeneratorMetadata, getGeneratorInfo, normalizeTargetKeyOrder, readProjectConfigurationUnqualified } from "../../../utils/nx.js";
19
20
  import { assignPort } from "../../../utils/port.js";
20
- import { sharedConstructsGenerator } from "../../../utils/shared-constructs.js";
21
- import { withVersions } from "../../../utils/versions.js";
21
+ import { SHARED_CONSTRUCTS_DEPENDENCIES, sharedConstructsGenerator } from "../../../utils/shared-constructs.js";
22
22
  import smithyProjectGenerator from "../../project/generator.js";
23
+ // Each entry names the branch it belongs to, so the same declaration drives both
24
+ // adding and the version sync.
25
+ export const DEPENDENCIES = declareDependencies()({
26
+ ts: [
27
+ {
28
+ name: '@aws-smithy/server-apigateway'
29
+ },
30
+ {
31
+ name: '@aws-smithy/server-node'
32
+ },
33
+ {
34
+ name: '@middy/core'
35
+ },
36
+ {
37
+ name: '@aws-lambda-powertools/logger'
38
+ },
39
+ {
40
+ name: '@aws-lambda-powertools/parameters'
41
+ },
42
+ {
43
+ name: '@aws-lambda-powertools/tracer'
44
+ },
45
+ {
46
+ name: '@aws-lambda-powertools/metrics'
47
+ },
48
+ {
49
+ name: '@aws-sdk/client-appconfigdata'
50
+ },
51
+ // The custom authorizer handler parses its event.
52
+ {
53
+ name: '@aws-lambda-powertools/parser',
54
+ when: (m)=>m.auth === 'custom'
55
+ },
56
+ {
57
+ name: '@types/aws-lambda',
58
+ dev: true
59
+ },
60
+ // tsx runs the local server from the workspace root.
61
+ {
62
+ name: 'tsx',
63
+ dev: true,
64
+ root: true
65
+ },
66
+ ...ownedElsewhere(FS_DEPENDENCIES),
67
+ ...ownedElsewhere(API_CONSTRUCTS_DEPENDENCIES),
68
+ ...ownedElsewhere(BUNDLE_DEPENDENCIES),
69
+ ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES)
70
+ ]
71
+ });
23
72
  export const TS_SMITHY_API_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
24
73
  export const tsSmithyApiGenerator = async (tree, options)=>{
25
74
  if (options.infra !== 'rest-lambda' && options.infra !== 'none') {
@@ -64,11 +113,21 @@ export const tsSmithyApiGenerator = async (tree, options)=>{
64
113
  backendProject: backendFullyQualifiedName
65
114
  }
66
115
  });
67
- addGeneratorMetadata(tree, backendFullyQualifiedName, TS_SMITHY_API_GENERATOR_INFO, {
116
+ // Recorded in the metadata below so the version sync can tell a CDK
117
+ // project from a Terraform one; undefined when no infrastructure was
118
+ // generated, in which case neither provider's packages were added.
119
+ const iac = options.infra !== 'none' ? await resolveIac(tree, options.iac) : undefined;
120
+ // Recorded here and read by the declaration's predicates, so the packages
121
+ // added below are exactly the ones the version sync will own.
122
+ const metadata = {
68
123
  apiName: options.name,
69
124
  auth: options.auth,
70
- modelProject: modelProjectConfig.name
71
- });
125
+ modelProject: modelProjectConfig.name,
126
+ ...iac ? {
127
+ iac
128
+ } : {}
129
+ };
130
+ addGeneratorMetadata(tree, backendFullyQualifiedName, TS_SMITHY_API_GENERATOR_INFO, metadata);
72
131
  const backendProjectConfig = readProjectConfigurationUnqualified(tree, backendFullyQualifiedName);
73
132
  const port = assignPort(tree, backendProjectConfig, 3001);
74
133
  // Delete default index.ts with "hello" function
@@ -85,10 +144,9 @@ export const tsSmithyApiGenerator = async (tree, options)=>{
85
144
  });
86
145
  }
87
146
  // Add infrastructure
88
- const iac = await resolveIac(tree, options.iac);
89
147
  await sharedConstructsGenerator(tree, {
90
148
  iac
91
- });
149
+ }, DEPENDENCIES);
92
150
  await addApiGatewayInfra(tree, {
93
151
  iac,
94
152
  apiProjectName: backendFullyQualifiedName,
@@ -104,7 +162,7 @@ export const tsSmithyApiGenerator = async (tree, options)=>{
104
162
  authorizerBundleOutputDir: joinPathFragments('dist', backendProjectConfig.root, 'bundle', 'authorizer')
105
163
  }
106
164
  }
107
- });
165
+ }, DEPENDENCIES);
108
166
  addSharedConstructsOpenApiMetadataGenerateTarget(tree, {
109
167
  iac,
110
168
  apiNameKebabCase,
@@ -117,7 +175,7 @@ export const tsSmithyApiGenerator = async (tree, options)=>{
117
175
  external: [
118
176
  /@aws-sdk\/.*/
119
177
  ]
120
- });
178
+ }, DEPENDENCIES);
121
179
  if (options.auth === 'custom') {
122
180
  await addTypeScriptBundleTarget(tree, backendProjectConfig, {
123
181
  targetFilePath: 'src/authorizer.ts',
@@ -125,10 +183,10 @@ export const tsSmithyApiGenerator = async (tree, options)=>{
125
183
  external: [
126
184
  /@aws-sdk\/.*/
127
185
  ]
128
- });
186
+ }, DEPENDENCIES);
129
187
  }
130
188
  }
131
- const cmd = new FsCommands(tree);
189
+ const cmd = new FsCommands(tree, DEPENDENCIES);
132
190
  const generatedSrcDirFromRoot = '{projectRoot}/src/generated';
133
191
  // Target for copying the ssdk built by the model
134
192
  backendProjectConfig.targets['copy-ssdk'] = {
@@ -202,24 +260,10 @@ export const tsSmithyApiGenerator = async (tree, options)=>{
202
260
  'src/generated'
203
261
  ]);
204
262
  updateProjectConfiguration(tree, backendFullyQualifiedName, backendProjectConfig);
205
- addDependenciesToPackageJson(tree, withVersions([
206
- '@aws-smithy/server-apigateway',
207
- '@aws-smithy/server-node',
208
- '@middy/core',
209
- '@aws-lambda-powertools/logger',
210
- '@aws-lambda-powertools/parameters',
211
- '@aws-lambda-powertools/tracer',
212
- '@aws-lambda-powertools/metrics',
213
- '@aws-sdk/client-appconfigdata',
214
- ...options.auth === 'custom' ? [
215
- '@aws-lambda-powertools/parser'
216
- ] : []
217
- ]), withVersions([
218
- '@types/aws-lambda'
219
- ]), joinPathFragments(backendProjectConfig.root, 'package.json'));
220
- addDependenciesToPackageJson(tree, {}, withVersions([
221
- 'tsx'
222
- ]));
263
+ addTsDependencies(tree, DEPENDENCIES, {
264
+ metadata,
265
+ projectRoot: backendProjectConfig.root
266
+ });
223
267
  await addGeneratorMetricsIfApplicable(tree, [
224
268
  TS_SMITHY_API_GENERATOR_INFO
225
269
  ]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/smithy/ts/api/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport tsProjectGenerator, { getTsLibDetails } from '../../../ts/lib/generator';\nimport { addApiGatewayInfra } from '../../../utils/api-constructs/api-constructs';\nimport { addSharedConstructsOpenApiMetadataGenerateTarget } from '../../../utils/api-constructs/open-api-metadata';\nimport { addTypeScriptBundleTarget } from '../../../utils/bundle/bundle';\nimport { addDependenciesToPackageJson } from '../../../utils/dependencies';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { FsCommands } from '../../../utils/fs';\nimport { updateGitIgnore } from '../../../utils/git';\nimport { resolveIac } from '../../../utils/iac';\nimport { installDependencies } from '../../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport { esmVars } from '../../../utils/module-format';\nimport { toClassName, toKebabCase } from '../../../utils/names';\nimport {\n addDependencyToTargetIfNotPresent,\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n normalizeTargetKeyOrder,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { assignPort } from '../../../utils/port';\nimport { sharedConstructsGenerator } from '../../../utils/shared-constructs';\nimport { withVersions } from '../../../utils/versions';\nimport smithyProjectGenerator from '../../project/generator';\nimport type { TsSmithyApiGeneratorSchema } from './schema';\n\nexport const TS_SMITHY_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsSmithyApiGenerator = async (\n tree: Tree,\n options: TsSmithyApiGeneratorSchema,\n): Promise<GeneratorCallback> => {\n if (\n (options.infra as string) !== 'rest-lambda' &&\n (options.infra as string) !== 'none'\n ) {\n throw new Error(\n `Unsupported infra '${options.infra}' for Smithy TypeScript API. ` +\n `Only 'rest-lambda' (API Gateway REST API) is supported.`,\n );\n }\n\n const integrationPattern = getIntegrationPattern(options);\n const apiNameClassName = toClassName(options.name);\n const apiNameKebabCase = toKebabCase(options.name);\n const { fullyQualifiedName: backendFullyQualifiedName, dir } =\n getTsLibDetails(tree, options);\n const modelProjectName = `${apiNameKebabCase}-model`;\n\n let projectExists: boolean;\n try {\n readProjectConfigurationUnqualified(tree, backendFullyQualifiedName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n // Generate the model project\n await smithyProjectGenerator(tree, {\n name: modelProjectName,\n serviceName: apiNameClassName,\n namespace: options.namespace,\n directory: dir,\n subDirectory: 'model',\n preferInstallDependencies: false,\n });\n\n // Generate the backend project\n await tsProjectGenerator(tree, {\n name: options.name,\n directory: dir,\n subDirectory: 'backend',\n preferInstallDependencies: false,\n });\n }\n\n // Add metadata to associate backend project with model project\n const modelProjectConfig = readProjectConfigurationUnqualified(\n tree,\n modelProjectName,\n );\n updateProjectConfiguration(tree, modelProjectConfig.name, {\n ...modelProjectConfig,\n metadata: {\n ...modelProjectConfig.metadata,\n backendProject: backendFullyQualifiedName,\n } as any,\n });\n\n addGeneratorMetadata(\n tree,\n backendFullyQualifiedName,\n TS_SMITHY_API_GENERATOR_INFO,\n {\n apiName: options.name,\n auth: options.auth,\n modelProject: modelProjectConfig.name,\n },\n );\n\n const backendProjectConfig = readProjectConfigurationUnqualified(\n tree,\n backendFullyQualifiedName,\n );\n const port = assignPort(tree, backendProjectConfig, 3001);\n\n // Delete default index.ts with \"hello\" function\n tree.delete(joinPathFragments(backendProjectConfig.sourceRoot, 'index.ts'));\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files'),\n backendProjectConfig.sourceRoot,\n {\n apiNameClassName,\n port,\n ...esmVars(tree),\n },\n );\n\n if (options.infra !== 'none') {\n if (options.auth === 'custom') {\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '..',\n '..',\n '..',\n 'utils',\n 'api-constructs',\n 'files',\n 'cdk',\n 'authorizer',\n 'rest',\n ),\n backendProjectConfig.sourceRoot,\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n }\n\n // Add infrastructure\n const iac = await resolveIac(tree, options.iac);\n await sharedConstructsGenerator(tree, {\n iac,\n });\n await addApiGatewayInfra(tree, {\n iac,\n apiProjectName: backendFullyQualifiedName,\n apiNameClassName,\n apiNameKebabCase,\n auth: options.auth,\n constructType: 'rest',\n backend: {\n type: 'smithy',\n bundleOutputDir: joinPathFragments(\n 'dist',\n backendProjectConfig.root,\n 'bundle',\n ),\n integrationPattern,\n ...(options.auth === 'custom' && {\n authorizerBundleOutputDir: joinPathFragments(\n 'dist',\n backendProjectConfig.root,\n 'bundle',\n 'authorizer',\n ),\n }),\n },\n });\n addSharedConstructsOpenApiMetadataGenerateTarget(tree, {\n iac,\n apiNameKebabCase,\n specPath: joinPathFragments(\n 'dist',\n modelProjectConfig.root,\n 'build',\n 'openapi',\n 'openapi.json',\n ),\n specBuildTargetName: `${modelProjectConfig.name}:build`,\n });\n\n // Add bundle target using rolldown\n await addTypeScriptBundleTarget(tree, backendProjectConfig, {\n targetFilePath: 'src/handler.ts',\n external: [/@aws-sdk\\/.*/], // lambda runtime provides aws sdk\n });\n\n if (options.auth === 'custom') {\n await addTypeScriptBundleTarget(tree, backendProjectConfig, {\n targetFilePath: 'src/authorizer.ts',\n bundleOutputDir: 'authorizer',\n external: [/@aws-sdk\\/.*/],\n });\n }\n }\n\n const cmd = new FsCommands(tree);\n const generatedSrcDirFromRoot = '{projectRoot}/src/generated';\n\n // Target for copying the ssdk built by the model\n backendProjectConfig.targets['copy-ssdk'] = {\n cache: true,\n inputs: [\n {\n dependentTasksOutputFiles: '**/*',\n },\n ],\n executor: 'nx:run-commands',\n options: {\n commands: [\n cmd.rm(generatedSrcDirFromRoot),\n cmd.mkdir(generatedSrcDirFromRoot),\n cmd.cp(\n joinPathFragments('dist', modelProjectConfig.root, 'build', 'ssdk'),\n joinPathFragments(generatedSrcDirFromRoot, 'ssdk'),\n ),\n ],\n parallel: false,\n },\n outputs: ['{projectRoot}/src/generated'],\n dependsOn: [`${modelProjectConfig.name}:build`],\n };\n addDependencyToTargetIfNotPresent(\n backendProjectConfig,\n 'compile',\n 'copy-ssdk',\n );\n\n // Add a project which continuously copies based on changes to the model project\n // This allows the \"serve\" target to hot reload when the smithy model is changed\n backendProjectConfig.targets['watch-copy-ssdk'] = {\n executor: 'nx:run-commands',\n continuous: true,\n options: {\n command: `nx watch --projects=${modelProjectConfig.name} --includeDependencies -- nx run ${backendFullyQualifiedName}:copy-ssdk`,\n },\n };\n\n // Add serve target for running the server locally\n backendProjectConfig.targets.serve = normalizeTargetKeyOrder({\n executor: 'nx:run-commands',\n continuous: true,\n dependsOn: ['copy-ssdk', 'watch-copy-ssdk'],\n options: {\n command: 'tsx --watch src/local-server.ts',\n cwd: '{projectRoot}',\n },\n });\n\n const existingDevDependsOn =\n backendProjectConfig.targets['dev']?.dependsOn ?? [];\n\n backendProjectConfig.targets['dev'] = normalizeTargetKeyOrder({\n ...backendProjectConfig.targets.serve,\n // Own copy of dependsOn so adding dev dependencies below doesn't\n // mutate the shared array referenced by the serve target.\n dependsOn: [...(backendProjectConfig.targets.serve.dependsOn ?? [])],\n options: {\n ...backendProjectConfig.targets.serve.options,\n env: {\n LOCAL_DEV: 'true',\n },\n },\n });\n\n // Preserve any dependencies added to dev by connection generators\n for (const dependency of existingDevDependsOn) {\n addDependencyToTargetIfNotPresent(backendProjectConfig, 'dev', dependency);\n }\n\n // Ignore generated code\n updateGitIgnore(tree, backendProjectConfig.root, (patterns) => [\n ...patterns,\n 'src/generated',\n ]);\n\n updateProjectConfiguration(\n tree,\n backendFullyQualifiedName,\n backendProjectConfig,\n );\n\n addDependenciesToPackageJson(\n tree,\n withVersions([\n '@aws-smithy/server-apigateway',\n '@aws-smithy/server-node',\n '@middy/core',\n '@aws-lambda-powertools/logger',\n '@aws-lambda-powertools/parameters',\n '@aws-lambda-powertools/tracer',\n '@aws-lambda-powertools/metrics',\n '@aws-sdk/client-appconfigdata',\n ...(options.auth === 'custom'\n ? (['@aws-lambda-powertools/parser'] as const)\n : []),\n ]),\n withVersions(['@types/aws-lambda']),\n joinPathFragments(backendProjectConfig.root, 'package.json'),\n );\n addDependenciesToPackageJson(tree, {}, withVersions(['tsx']));\n\n await addGeneratorMetricsIfApplicable(tree, [TS_SMITHY_API_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nconst getIntegrationPattern = (\n options: TsSmithyApiGeneratorSchema,\n): 'isolated' | 'shared' => options.integrationPattern ?? 'isolated';\n\nexport default tsSmithyApiGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateProjectConfiguration","tsProjectGenerator","getTsLibDetails","addApiGatewayInfra","addSharedConstructsOpenApiMetadataGenerateTarget","addTypeScriptBundleTarget","addDependenciesToPackageJson","formatFilesInSubtree","FsCommands","updateGitIgnore","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","esmVars","toClassName","toKebabCase","addDependencyToTargetIfNotPresent","addGeneratorMetadata","getGeneratorInfo","normalizeTargetKeyOrder","readProjectConfigurationUnqualified","assignPort","sharedConstructsGenerator","withVersions","smithyProjectGenerator","TS_SMITHY_API_GENERATOR_INFO","filename","tsSmithyApiGenerator","tree","options","infra","Error","integrationPattern","getIntegrationPattern","apiNameClassName","name","apiNameKebabCase","fullyQualifiedName","backendFullyQualifiedName","dir","modelProjectName","projectExists","serviceName","namespace","directory","subDirectory","preferInstallDependencies","modelProjectConfig","metadata","backendProject","apiName","auth","modelProject","backendProjectConfig","port","delete","sourceRoot","dirname","overwriteStrategy","KeepExisting","iac","apiProjectName","constructType","backend","type","bundleOutputDir","root","authorizerBundleOutputDir","specPath","specBuildTargetName","targetFilePath","external","cmd","generatedSrcDirFromRoot","targets","cache","inputs","dependentTasksOutputFiles","executor","commands","rm","mkdir","cp","parallel","outputs","dependsOn","continuous","command","serve","cwd","existingDevDependsOn","env","LOCAL_DEV","dependency","patterns","languages"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/smithy/ts/api/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport tsProjectGenerator, { getTsLibDetails } from '../../../ts/lib/generator';\nimport { addTsDependencies } from '../../../utils/add-dependencies';\nimport {\n API_CONSTRUCTS_DEPENDENCIES,\n addApiGatewayInfra,\n} from '../../../utils/api-constructs/api-constructs';\nimport { addSharedConstructsOpenApiMetadataGenerateTarget } from '../../../utils/api-constructs/open-api-metadata';\nimport {\n addTypeScriptBundleTarget,\n BUNDLE_DEPENDENCIES,\n} from '../../../utils/bundle/bundle';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { FS_DEPENDENCIES, FsCommands } from '../../../utils/fs';\nimport { updateGitIgnore } from '../../../utils/git';\nimport { resolveIac } from '../../../utils/iac';\nimport { installDependencies } from '../../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport { esmVars } from '../../../utils/module-format';\nimport { toClassName, toKebabCase } from '../../../utils/names';\nimport {\n addDependencyToTargetIfNotPresent,\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n normalizeTargetKeyOrder,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { assignPort } from '../../../utils/port';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../../utils/shared-constructs';\nimport type { IacMetadata } from '../../../utils/shared-constructs-constants';\nimport smithyProjectGenerator from '../../project/generator';\nimport type { TsSmithyApiGeneratorSchema } from './schema';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface TsSmithyApiMetadata extends IacMetadata {\n readonly apiName: string;\n readonly auth: TsSmithyApiGeneratorSchema['auth'];\n readonly modelProject: string;\n}\n\n// Each entry names the branch it belongs to, so the same declaration drives both\n// adding and the version sync.\nexport const DEPENDENCIES = declareDependencies<TsSmithyApiMetadata>()({\n ts: [\n { name: '@aws-smithy/server-apigateway' },\n { name: '@aws-smithy/server-node' },\n { name: '@middy/core' },\n { name: '@aws-lambda-powertools/logger' },\n { name: '@aws-lambda-powertools/parameters' },\n { name: '@aws-lambda-powertools/tracer' },\n { name: '@aws-lambda-powertools/metrics' },\n { name: '@aws-sdk/client-appconfigdata' },\n // The custom authorizer handler parses its event.\n { name: '@aws-lambda-powertools/parser', when: (m) => m.auth === 'custom' },\n { name: '@types/aws-lambda', dev: true },\n // tsx runs the local server from the workspace root.\n { name: 'tsx', dev: true, root: true },\n ...ownedElsewhere(FS_DEPENDENCIES),\n ...ownedElsewhere(API_CONSTRUCTS_DEPENDENCIES),\n ...ownedElsewhere(BUNDLE_DEPENDENCIES),\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ],\n});\n\nexport const TS_SMITHY_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsSmithyApiGenerator = async (\n tree: Tree,\n options: TsSmithyApiGeneratorSchema,\n): Promise<GeneratorCallback> => {\n if (\n (options.infra as string) !== 'rest-lambda' &&\n (options.infra as string) !== 'none'\n ) {\n throw new Error(\n `Unsupported infra '${options.infra}' for Smithy TypeScript API. ` +\n `Only 'rest-lambda' (API Gateway REST API) is supported.`,\n );\n }\n\n const integrationPattern = getIntegrationPattern(options);\n const apiNameClassName = toClassName(options.name);\n const apiNameKebabCase = toKebabCase(options.name);\n const { fullyQualifiedName: backendFullyQualifiedName, dir } =\n getTsLibDetails(tree, options);\n const modelProjectName = `${apiNameKebabCase}-model`;\n\n let projectExists: boolean;\n try {\n readProjectConfigurationUnqualified(tree, backendFullyQualifiedName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n // Generate the model project\n await smithyProjectGenerator(tree, {\n name: modelProjectName,\n serviceName: apiNameClassName,\n namespace: options.namespace,\n directory: dir,\n subDirectory: 'model',\n preferInstallDependencies: false,\n });\n\n // Generate the backend project\n await tsProjectGenerator(tree, {\n name: options.name,\n directory: dir,\n subDirectory: 'backend',\n preferInstallDependencies: false,\n });\n }\n\n // Add metadata to associate backend project with model project\n const modelProjectConfig = readProjectConfigurationUnqualified(\n tree,\n modelProjectName,\n );\n updateProjectConfiguration(tree, modelProjectConfig.name, {\n ...modelProjectConfig,\n metadata: {\n ...modelProjectConfig.metadata,\n backendProject: backendFullyQualifiedName,\n } as any,\n });\n\n // Recorded in the metadata below so the version sync can tell a CDK\n // project from a Terraform one; undefined when no infrastructure was\n // generated, in which case neither provider's packages were added.\n const iac =\n options.infra !== 'none' ? await resolveIac(tree, options.iac) : undefined;\n\n // Recorded here and read by the declaration's predicates, so the packages\n // added below are exactly the ones the version sync will own.\n const metadata: TsSmithyApiMetadata = {\n apiName: options.name,\n auth: options.auth,\n modelProject: modelProjectConfig.name,\n ...(iac ? { iac } : {}),\n };\n\n addGeneratorMetadata(\n tree,\n backendFullyQualifiedName,\n TS_SMITHY_API_GENERATOR_INFO,\n metadata,\n );\n\n const backendProjectConfig = readProjectConfigurationUnqualified(\n tree,\n backendFullyQualifiedName,\n );\n const port = assignPort(tree, backendProjectConfig, 3001);\n\n // Delete default index.ts with \"hello\" function\n tree.delete(joinPathFragments(backendProjectConfig.sourceRoot, 'index.ts'));\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files'),\n backendProjectConfig.sourceRoot,\n {\n apiNameClassName,\n port,\n ...esmVars(tree),\n },\n );\n\n if (options.infra !== 'none') {\n if (options.auth === 'custom') {\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '..',\n '..',\n '..',\n 'utils',\n 'api-constructs',\n 'files',\n 'cdk',\n 'authorizer',\n 'rest',\n ),\n backendProjectConfig.sourceRoot,\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n }\n\n // Add infrastructure\n await sharedConstructsGenerator(\n tree,\n {\n iac,\n },\n DEPENDENCIES,\n );\n await addApiGatewayInfra(\n tree,\n {\n iac,\n apiProjectName: backendFullyQualifiedName,\n apiNameClassName,\n apiNameKebabCase,\n auth: options.auth,\n constructType: 'rest',\n backend: {\n type: 'smithy',\n bundleOutputDir: joinPathFragments(\n 'dist',\n backendProjectConfig.root,\n 'bundle',\n ),\n integrationPattern,\n ...(options.auth === 'custom' && {\n authorizerBundleOutputDir: joinPathFragments(\n 'dist',\n backendProjectConfig.root,\n 'bundle',\n 'authorizer',\n ),\n }),\n },\n },\n DEPENDENCIES,\n );\n addSharedConstructsOpenApiMetadataGenerateTarget(tree, {\n iac,\n apiNameKebabCase,\n specPath: joinPathFragments(\n 'dist',\n modelProjectConfig.root,\n 'build',\n 'openapi',\n 'openapi.json',\n ),\n specBuildTargetName: `${modelProjectConfig.name}:build`,\n });\n\n // Add bundle target using rolldown\n await addTypeScriptBundleTarget(\n tree,\n backendProjectConfig,\n {\n targetFilePath: 'src/handler.ts',\n external: [/@aws-sdk\\/.*/], // lambda runtime provides aws sdk\n },\n DEPENDENCIES,\n );\n\n if (options.auth === 'custom') {\n await addTypeScriptBundleTarget(\n tree,\n backendProjectConfig,\n {\n targetFilePath: 'src/authorizer.ts',\n bundleOutputDir: 'authorizer',\n external: [/@aws-sdk\\/.*/],\n },\n DEPENDENCIES,\n );\n }\n }\n\n const cmd = new FsCommands(tree, DEPENDENCIES);\n const generatedSrcDirFromRoot = '{projectRoot}/src/generated';\n\n // Target for copying the ssdk built by the model\n backendProjectConfig.targets['copy-ssdk'] = {\n cache: true,\n inputs: [\n {\n dependentTasksOutputFiles: '**/*',\n },\n ],\n executor: 'nx:run-commands',\n options: {\n commands: [\n cmd.rm(generatedSrcDirFromRoot),\n cmd.mkdir(generatedSrcDirFromRoot),\n cmd.cp(\n joinPathFragments('dist', modelProjectConfig.root, 'build', 'ssdk'),\n joinPathFragments(generatedSrcDirFromRoot, 'ssdk'),\n ),\n ],\n parallel: false,\n },\n outputs: ['{projectRoot}/src/generated'],\n dependsOn: [`${modelProjectConfig.name}:build`],\n };\n addDependencyToTargetIfNotPresent(\n backendProjectConfig,\n 'compile',\n 'copy-ssdk',\n );\n\n // Add a project which continuously copies based on changes to the model project\n // This allows the \"serve\" target to hot reload when the smithy model is changed\n backendProjectConfig.targets['watch-copy-ssdk'] = {\n executor: 'nx:run-commands',\n continuous: true,\n options: {\n command: `nx watch --projects=${modelProjectConfig.name} --includeDependencies -- nx run ${backendFullyQualifiedName}:copy-ssdk`,\n },\n };\n\n // Add serve target for running the server locally\n backendProjectConfig.targets.serve = normalizeTargetKeyOrder({\n executor: 'nx:run-commands',\n continuous: true,\n dependsOn: ['copy-ssdk', 'watch-copy-ssdk'],\n options: {\n command: 'tsx --watch src/local-server.ts',\n cwd: '{projectRoot}',\n },\n });\n\n const existingDevDependsOn =\n backendProjectConfig.targets['dev']?.dependsOn ?? [];\n\n backendProjectConfig.targets['dev'] = normalizeTargetKeyOrder({\n ...backendProjectConfig.targets.serve,\n // Own copy of dependsOn so adding dev dependencies below doesn't\n // mutate the shared array referenced by the serve target.\n dependsOn: [...(backendProjectConfig.targets.serve.dependsOn ?? [])],\n options: {\n ...backendProjectConfig.targets.serve.options,\n env: {\n LOCAL_DEV: 'true',\n },\n },\n });\n\n // Preserve any dependencies added to dev by connection generators\n for (const dependency of existingDevDependsOn) {\n addDependencyToTargetIfNotPresent(backendProjectConfig, 'dev', dependency);\n }\n\n // Ignore generated code\n updateGitIgnore(tree, backendProjectConfig.root, (patterns) => [\n ...patterns,\n 'src/generated',\n ]);\n\n updateProjectConfiguration(\n tree,\n backendFullyQualifiedName,\n backendProjectConfig,\n );\n\n addTsDependencies(tree, DEPENDENCIES, {\n metadata,\n projectRoot: backendProjectConfig.root,\n });\n\n await addGeneratorMetricsIfApplicable(tree, [TS_SMITHY_API_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nconst getIntegrationPattern = (\n options: TsSmithyApiGeneratorSchema,\n): 'isolated' | 'shared' => options.integrationPattern ?? 'isolated';\n\nexport default tsSmithyApiGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateProjectConfiguration","tsProjectGenerator","getTsLibDetails","addTsDependencies","API_CONSTRUCTS_DEPENDENCIES","addApiGatewayInfra","addSharedConstructsOpenApiMetadataGenerateTarget","addTypeScriptBundleTarget","BUNDLE_DEPENDENCIES","declareDependencies","ownedElsewhere","formatFilesInSubtree","FS_DEPENDENCIES","FsCommands","updateGitIgnore","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","esmVars","toClassName","toKebabCase","addDependencyToTargetIfNotPresent","addGeneratorMetadata","getGeneratorInfo","normalizeTargetKeyOrder","readProjectConfigurationUnqualified","assignPort","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","smithyProjectGenerator","DEPENDENCIES","ts","name","when","m","auth","dev","root","TS_SMITHY_API_GENERATOR_INFO","filename","tsSmithyApiGenerator","tree","options","infra","Error","integrationPattern","getIntegrationPattern","apiNameClassName","apiNameKebabCase","fullyQualifiedName","backendFullyQualifiedName","dir","modelProjectName","projectExists","serviceName","namespace","directory","subDirectory","preferInstallDependencies","modelProjectConfig","metadata","backendProject","iac","undefined","apiName","modelProject","backendProjectConfig","port","delete","sourceRoot","dirname","overwriteStrategy","KeepExisting","apiProjectName","constructType","backend","type","bundleOutputDir","authorizerBundleOutputDir","specPath","specBuildTargetName","targetFilePath","external","cmd","generatedSrcDirFromRoot","targets","cache","inputs","dependentTasksOutputFiles","executor","commands","rm","mkdir","cp","parallel","outputs","dependsOn","continuous","command","serve","cwd","existingDevDependsOn","env","LOCAL_DEV","dependency","patterns","projectRoot","languages"],"mappings":"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"}
@@ -5,6 +5,56 @@
5
5
  import { type GeneratorCallback, type Tree } from '@nx/devkit';
6
6
  import { type NxGeneratorInfo } from '../../utils/nx';
7
7
  import type { TerraformProjectGeneratorSchema } from './schema';
8
+ export declare const DEPENDENCIES: import("../../utils/declared-dependencies").DependencyDeclaration<readonly [{
9
+ readonly name: "@nx-extend/terraform";
10
+ readonly dev: true;
11
+ readonly root: true;
12
+ }, {
13
+ readonly name: "make-dir-cli";
14
+ readonly dev: true;
15
+ readonly root: true;
16
+ }, {
17
+ readonly name: "tsx";
18
+ readonly dev: true;
19
+ readonly root: true;
20
+ }, {
21
+ readonly name: "@aws-sdk/client-s3";
22
+ readonly dev: true;
23
+ readonly root: true;
24
+ }, {
25
+ readonly name: "@aws-sdk/client-sts";
26
+ readonly dev: true;
27
+ readonly root: true;
28
+ }, {
29
+ readonly name: "@aws-sdk/credential-providers";
30
+ readonly dev: true;
31
+ readonly root: true;
32
+ }, {
33
+ readonly name: "@smithy/config-resolver";
34
+ readonly dev: true;
35
+ readonly root: true;
36
+ }, {
37
+ readonly name: "@smithy/node-config-provider";
38
+ readonly dev: true;
39
+ readonly root: true;
40
+ }, {
41
+ readonly name: "@nx/devkit";
42
+ readonly versionOnly: true;
43
+ }, {
44
+ readonly name: "constructs";
45
+ readonly when: (m: import("../../utils/shared-constructs-constants").IacMetadata) => boolean;
46
+ } & {
47
+ versionOnly: true;
48
+ }, {
49
+ readonly name: "aws-cdk-lib";
50
+ readonly when: (m: import("../../utils/shared-constructs-constants").IacMetadata) => boolean;
51
+ } & {
52
+ versionOnly: true;
53
+ }, {
54
+ readonly name: "@types/node";
55
+ } & {
56
+ versionOnly: true;
57
+ }], readonly import("../../utils/declared-dependencies").DeclaredPyDependency<"a2a-sdk" | "ag-ui-langgraph" | "ag-ui-protocol" | "ag-ui-strands" | "aws-lambda-powertools" | "aws-lambda-powertools[tracer]" | "aws-lambda-powertools[parser]" | "aws-opentelemetry-distro" | "bedrock-agentcore" | "boto3" | "checkov" | "fastapi" | "fastapi[standard]" | "httpx" | "langchain" | "langchain-aws" | "langchain-mcp-adapters" | "langgraph" | "mcp" | "pip-check-updates" | "pip-licenses" | "ruff" | "strands-agents" | "strands-agents[a2a]" | "strands-agents-tools" | "ty" | "pynamodb" | "uvicorn" | "sqlmodel" | "alembic" | "aiomysql" | "asyncpg" | "greenlet", Record<string, never>>[]>;
8
58
  export declare const TERRAFORM_PROJECT_GENERATOR_INFO: NxGeneratorInfo;
9
59
  export declare function terraformProjectGenerator(tree: Tree, schema: TerraformProjectGeneratorSchema): Promise<GeneratorCallback>;
10
60
  export default terraformProjectGenerator;