@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
@@ -2,7 +2,8 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */ import { addProjectConfiguration, generateFiles, joinPathFragments, OverwriteStrategy } from "@nx/devkit";
5
- import { addDependenciesToPackageJson } from "../../utils/dependencies.js";
5
+ import { addTsDependencies } from "../../utils/add-dependencies.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";
@@ -12,7 +13,54 @@ import { getNpmScopePrefix } from "../../utils/npm-scope.js";
12
13
  import { addGeneratorMetadata, getGeneratorInfo, projectExists } from "../../utils/nx.js";
13
14
  import { getPackageManagerDisplayCommands } from "../../utils/pkg-manager.js";
14
15
  import { ensureProjectPackageJson } from "../../utils/project-package-json.js";
15
- import { withVersions } from "../../utils/versions.js";
16
+ // Each entry names the branch it belongs to, so the same declaration drives both
17
+ // adding and the version sync.
18
+ export const DEPENDENCIES = declareDependencies()({
19
+ ts: [
20
+ {
21
+ name: 'astro'
22
+ },
23
+ {
24
+ name: '@astrojs/starlight'
25
+ },
26
+ {
27
+ name: 'starlight-blog',
28
+ when: (m)=>m.includeBlog
29
+ },
30
+ {
31
+ name: '@strands-agents/sdk',
32
+ when: (m)=>m.includeTranslation
33
+ },
34
+ {
35
+ name: 'commander',
36
+ when: (m)=>m.includeTranslation
37
+ },
38
+ {
39
+ name: 'fast-glob',
40
+ when: (m)=>m.includeTranslation
41
+ },
42
+ {
43
+ name: 'fs-extra',
44
+ when: (m)=>m.includeTranslation
45
+ },
46
+ {
47
+ name: 'simple-git',
48
+ when: (m)=>m.includeTranslation
49
+ },
50
+ {
51
+ name: '@types/fs-extra',
52
+ when: (m)=>m.includeTranslation,
53
+ dev: true
54
+ },
55
+ // The translate target runs its script from the workspace root via tsx.
56
+ {
57
+ name: 'tsx',
58
+ when: (m)=>m.includeTranslation,
59
+ dev: true,
60
+ root: true
61
+ }
62
+ ]
63
+ });
16
64
  export const TS_ASTRO_DOCS_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
17
65
  export const tsAstroDocsGenerator = async (tree, schema)=>{
18
66
  const includeTranslation = !(schema.noTranslation ?? false);
@@ -104,27 +152,18 @@ export const tsAstroDocsGenerator = async (tree, schema)=>{
104
152
  overwriteStrategy: OverwriteStrategy.KeepExisting
105
153
  });
106
154
  }
107
- addGeneratorMetadata(tree, fullyQualifiedName, TS_ASTRO_DOCS_GENERATOR_INFO, {
155
+ // Recorded here and read by the declaration's predicates, so the packages
156
+ // added below are exactly the ones the version sync will own.
157
+ const metadata = {
108
158
  framework: 'astro',
109
159
  includeTranslation,
110
160
  includeBlog
161
+ };
162
+ addGeneratorMetadata(tree, fullyQualifiedName, TS_ASTRO_DOCS_GENERATOR_INFO, metadata);
163
+ addTsDependencies(tree, DEPENDENCIES, {
164
+ metadata,
165
+ projectRoot: dir
111
166
  });
112
- const dependencies = [
113
- 'astro',
114
- '@astrojs/starlight'
115
- ];
116
- const devDependencies = [];
117
- if (includeBlog) {
118
- dependencies.push('starlight-blog');
119
- }
120
- if (includeTranslation) {
121
- dependencies.push('@strands-agents/sdk', 'commander', 'fast-glob', 'fs-extra', 'simple-git');
122
- devDependencies.push('@types/fs-extra');
123
- addDependenciesToPackageJson(tree, {}, withVersions([
124
- 'tsx'
125
- ]));
126
- }
127
- addDependenciesToPackageJson(tree, withVersions(dependencies), withVersions(devDependencies), joinPathFragments(dir, 'package.json'));
128
167
  await addGeneratorMetricsIfApplicable(tree, [
129
168
  TS_ASTRO_DOCS_GENERATOR_INFO
130
169
  ]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/astro-docs/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 ProjectConfiguration,\n type Tree,\n} from '@nx/devkit';\nimport { addDependenciesToPackageJson } from '../../utils/dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { isEsmWorkspace } from '../../utils/module-format';\nimport { toKebabCase } from '../../utils/names';\nimport { getNpmScopePrefix } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n projectExists,\n} from '../../utils/nx';\nimport { getPackageManagerDisplayCommands } from '../../utils/pkg-manager';\nimport { ensureProjectPackageJson } from '../../utils/project-package-json';\nimport { type ITsDepVersion, withVersions } from '../../utils/versions';\nimport type { TsAstroDocsGeneratorSchema } from './schema';\n\nexport const TS_ASTRO_DOCS_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsAstroDocsGenerator = async (\n tree: Tree,\n schema: TsAstroDocsGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const includeTranslation = !(schema.noTranslation ?? false);\n const includeBlog = !(schema.noBlog ?? false);\n const npmScopePrefix = getNpmScopePrefix(tree);\n const docsNameKebabCase = toKebabCase(schema.name);\n const fullyQualifiedName = `${npmScopePrefix}${docsNameKebabCase}`;\n // NB: interactive nx generator cli can pass empty string\n const dir = joinPathFragments(\n schema.directory || '.',\n schema.subDirectory || docsNameKebabCase,\n );\n\n const alreadyExists = projectExists(tree, fullyQualifiedName);\n\n const targets: ProjectConfiguration['targets'] = {\n build: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro build',\n cwd: dir,\n },\n outputs: [`{workspaceRoot}/${dir}/dist`],\n cache: true,\n },\n start: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro dev',\n cwd: dir,\n },\n continuous: true,\n },\n serve: {\n dependsOn: ['start'],\n },\n preview: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro preview',\n cwd: dir,\n },\n dependsOn: ['build'],\n continuous: true,\n },\n };\n\n if (includeTranslation) {\n targets['translate'] = {\n executor: 'nx:run-commands',\n options: {\n command: 'tsx ./scripts/translate.ts',\n cwd: dir,\n forwardAllArgs: true,\n },\n };\n }\n\n if (!alreadyExists) {\n addProjectConfiguration(tree, fullyQualifiedName, {\n name: fullyQualifiedName,\n root: dir,\n sourceRoot: joinPathFragments(dir, 'src'),\n projectType: 'application',\n targets,\n });\n }\n\n ensureProjectPackageJson(tree, { dir, fullyQualifiedName });\n\n const templateOptions = {\n fullyQualifiedName,\n title: schema.name,\n includeTranslation,\n includeBlog,\n esm: isEsmWorkspace(tree),\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n today: new Date().toISOString().slice(0, 10),\n };\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'base'),\n dir,\n templateOptions,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // The sample blog post is always emitted above — drop it if the user opted out.\n if (!includeBlog) {\n tree.delete(\n joinPathFragments(\n dir,\n 'src',\n 'content',\n 'docs',\n 'en',\n 'blog',\n 'welcome.mdx',\n ),\n );\n }\n\n if (includeTranslation) {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'translation'),\n dir,\n templateOptions,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n }\n\n addGeneratorMetadata(tree, fullyQualifiedName, TS_ASTRO_DOCS_GENERATOR_INFO, {\n framework: 'astro',\n includeTranslation,\n includeBlog,\n });\n\n const dependencies: ITsDepVersion[] = ['astro', '@astrojs/starlight'];\n const devDependencies: ITsDepVersion[] = [];\n\n if (includeBlog) {\n dependencies.push('starlight-blog');\n }\n\n if (includeTranslation) {\n dependencies.push(\n '@strands-agents/sdk',\n 'commander',\n 'fast-glob',\n 'fs-extra',\n 'simple-git',\n );\n devDependencies.push('@types/fs-extra');\n addDependenciesToPackageJson(tree, {}, withVersions(['tsx']));\n }\n\n addDependenciesToPackageJson(\n tree,\n withVersions(dependencies),\n withVersions(devDependencies),\n joinPathFragments(dir, 'package.json'),\n );\n\n await addGeneratorMetricsIfApplicable(tree, [TS_ASTRO_DOCS_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, schema.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsAstroDocsGenerator;\n"],"names":["addProjectConfiguration","generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","isEsmWorkspace","toKebabCase","getNpmScopePrefix","addGeneratorMetadata","getGeneratorInfo","projectExists","getPackageManagerDisplayCommands","ensureProjectPackageJson","withVersions","TS_ASTRO_DOCS_GENERATOR_INFO","filename","tsAstroDocsGenerator","tree","schema","includeTranslation","noTranslation","includeBlog","noBlog","npmScopePrefix","docsNameKebabCase","name","fullyQualifiedName","dir","directory","subDirectory","alreadyExists","targets","build","executor","options","command","cwd","outputs","cache","start","continuous","serve","dependsOn","preview","forwardAllArgs","root","sourceRoot","projectType","templateOptions","title","esm","pkgMgrCmd","exec","today","Date","toISOString","slice","dirname","overwriteStrategy","KeepExisting","delete","framework","dependencies","devDependencies","push","preferInstallDependencies","languages"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/astro-docs/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 ProjectConfiguration,\n type Tree,\n} from '@nx/devkit';\nimport { addTsDependencies } from '../../utils/add-dependencies';\nimport { declareDependencies } from '../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { isEsmWorkspace } from '../../utils/module-format';\nimport { toKebabCase } from '../../utils/names';\nimport { getNpmScopePrefix } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n projectExists,\n} from '../../utils/nx';\nimport { getPackageManagerDisplayCommands } from '../../utils/pkg-manager';\nimport { ensureProjectPackageJson } from '../../utils/project-package-json';\nimport type { TsAstroDocsGeneratorSchema } from './schema';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface TsAstroDocsMetadata {\n readonly framework: string;\n readonly includeTranslation: boolean;\n readonly includeBlog: boolean;\n}\n\n// Each entry names the branch it belongs to, so the same declaration drives both\n// adding and the version sync.\nexport const DEPENDENCIES = declareDependencies<TsAstroDocsMetadata>()({\n ts: [\n { name: 'astro' },\n { name: '@astrojs/starlight' },\n { name: 'starlight-blog', when: (m) => m.includeBlog },\n { name: '@strands-agents/sdk', when: (m) => m.includeTranslation },\n { name: 'commander', when: (m) => m.includeTranslation },\n { name: 'fast-glob', when: (m) => m.includeTranslation },\n { name: 'fs-extra', when: (m) => m.includeTranslation },\n { name: 'simple-git', when: (m) => m.includeTranslation },\n { name: '@types/fs-extra', when: (m) => m.includeTranslation, dev: true },\n // The translate target runs its script from the workspace root via tsx.\n { name: 'tsx', when: (m) => m.includeTranslation, dev: true, root: true },\n ],\n});\n\nexport const TS_ASTRO_DOCS_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsAstroDocsGenerator = async (\n tree: Tree,\n schema: TsAstroDocsGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const includeTranslation = !(schema.noTranslation ?? false);\n const includeBlog = !(schema.noBlog ?? false);\n const npmScopePrefix = getNpmScopePrefix(tree);\n const docsNameKebabCase = toKebabCase(schema.name);\n const fullyQualifiedName = `${npmScopePrefix}${docsNameKebabCase}`;\n // NB: interactive nx generator cli can pass empty string\n const dir = joinPathFragments(\n schema.directory || '.',\n schema.subDirectory || docsNameKebabCase,\n );\n\n const alreadyExists = projectExists(tree, fullyQualifiedName);\n\n const targets: ProjectConfiguration['targets'] = {\n build: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro build',\n cwd: dir,\n },\n outputs: [`{workspaceRoot}/${dir}/dist`],\n cache: true,\n },\n start: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro dev',\n cwd: dir,\n },\n continuous: true,\n },\n serve: {\n dependsOn: ['start'],\n },\n preview: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro preview',\n cwd: dir,\n },\n dependsOn: ['build'],\n continuous: true,\n },\n };\n\n if (includeTranslation) {\n targets['translate'] = {\n executor: 'nx:run-commands',\n options: {\n command: 'tsx ./scripts/translate.ts',\n cwd: dir,\n forwardAllArgs: true,\n },\n };\n }\n\n if (!alreadyExists) {\n addProjectConfiguration(tree, fullyQualifiedName, {\n name: fullyQualifiedName,\n root: dir,\n sourceRoot: joinPathFragments(dir, 'src'),\n projectType: 'application',\n targets,\n });\n }\n\n ensureProjectPackageJson(tree, { dir, fullyQualifiedName });\n\n const templateOptions = {\n fullyQualifiedName,\n title: schema.name,\n includeTranslation,\n includeBlog,\n esm: isEsmWorkspace(tree),\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n today: new Date().toISOString().slice(0, 10),\n };\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'base'),\n dir,\n templateOptions,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // The sample blog post is always emitted above — drop it if the user opted out.\n if (!includeBlog) {\n tree.delete(\n joinPathFragments(\n dir,\n 'src',\n 'content',\n 'docs',\n 'en',\n 'blog',\n 'welcome.mdx',\n ),\n );\n }\n\n if (includeTranslation) {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'translation'),\n dir,\n templateOptions,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n }\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: TsAstroDocsMetadata = {\n framework: 'astro',\n includeTranslation,\n includeBlog,\n };\n addGeneratorMetadata(\n tree,\n fullyQualifiedName,\n TS_ASTRO_DOCS_GENERATOR_INFO,\n metadata,\n );\n\n addTsDependencies(tree, DEPENDENCIES, { metadata, projectRoot: dir });\n\n await addGeneratorMetricsIfApplicable(tree, [TS_ASTRO_DOCS_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, schema.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsAstroDocsGenerator;\n"],"names":["addProjectConfiguration","generateFiles","joinPathFragments","OverwriteStrategy","addTsDependencies","declareDependencies","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","isEsmWorkspace","toKebabCase","getNpmScopePrefix","addGeneratorMetadata","getGeneratorInfo","projectExists","getPackageManagerDisplayCommands","ensureProjectPackageJson","DEPENDENCIES","ts","name","when","m","includeBlog","includeTranslation","dev","root","TS_ASTRO_DOCS_GENERATOR_INFO","filename","tsAstroDocsGenerator","tree","schema","noTranslation","noBlog","npmScopePrefix","docsNameKebabCase","fullyQualifiedName","dir","directory","subDirectory","alreadyExists","targets","build","executor","options","command","cwd","outputs","cache","start","continuous","serve","dependsOn","preview","forwardAllArgs","sourceRoot","projectType","templateOptions","title","esm","pkgMgrCmd","exec","today","Date","toISOString","slice","dirname","overwriteStrategy","KeepExisting","delete","metadata","framework","projectRoot","preferInstallDependencies","languages"],"mappings":"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"}
@@ -5,6 +5,30 @@
5
5
  import { type GeneratorCallback, type Tree } from '@nx/devkit';
6
6
  import { type NxGeneratorInfo } from '../../utils/nx';
7
7
  import type { TsDcrProxyGeneratorSchema } from './schema';
8
+ export declare const DEPENDENCIES: import("../../utils/declared-dependencies").DependencyDeclaration<readonly [{
9
+ readonly name: "@aws-sdk/client-secrets-manager";
10
+ }, {
11
+ readonly name: "@types/aws-lambda";
12
+ readonly dev: true;
13
+ }, {
14
+ readonly name: "rolldown";
15
+ } & {
16
+ versionOnly: true;
17
+ }, {
18
+ readonly name: "constructs";
19
+ readonly when: (m: import("../../utils/shared-constructs-constants").IacMetadata) => boolean;
20
+ } & {
21
+ versionOnly: true;
22
+ }, {
23
+ readonly name: "aws-cdk-lib";
24
+ readonly when: (m: import("../../utils/shared-constructs-constants").IacMetadata) => boolean;
25
+ } & {
26
+ versionOnly: true;
27
+ }, {
28
+ readonly name: "@types/node";
29
+ } & {
30
+ versionOnly: true;
31
+ }], 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
32
  export declare const TS_DCR_PROXY_GENERATOR_INFO: NxGeneratorInfo;
9
33
  export declare const tsDcrProxyGenerator: (tree: Tree, options: TsDcrProxyGeneratorSchema) => Promise<GeneratorCallback>;
10
34
  export default tsDcrProxyGenerator;
@@ -3,19 +3,34 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */ import { generateFiles, joinPathFragments, OverwriteStrategy, updateProjectConfiguration } from "@nx/devkit";
5
5
  import tsProjectGenerator from "../lib/generator.js";
6
- import { addTypeScriptBundleTarget } from "../../utils/bundle/bundle.js";
6
+ import { addTsDependencies } from "../../utils/add-dependencies.js";
7
+ import { addTypeScriptBundleTarget, BUNDLE_DEPENDENCIES } from "../../utils/bundle/bundle.js";
7
8
  import { addDcrProxyInfra, DCR_PROXY_HANDLERS } from "../../utils/dcr-proxy-constructs/dcr-proxy-constructs.js";
8
- import { addDependenciesToPackageJson } from "../../utils/dependencies.js";
9
+ import { declareDependencies, ownedElsewhere } from "../../utils/declared-dependencies.js";
9
10
  import { formatFilesInSubtree } from "../../utils/format.js";
10
11
  import { resolveIac } from "../../utils/iac.js";
11
12
  import { installDependencies } from "../../utils/install.js";
12
13
  import { addGeneratorMetricsIfApplicable } from "../../utils/metrics.js";
13
14
  import { kebabCase, toClassName } from "../../utils/names.js";
14
15
  import { getNpmScopePrefix } from "../../utils/npm-scope.js";
15
- import { getGeneratorInfo, readProjectConfigurationUnqualified } from "../../utils/nx.js";
16
+ import { addGeneratorMetadata, getGeneratorInfo, readProjectConfigurationUnqualified } from "../../utils/nx.js";
16
17
  import { sortObjectKeys } from "../../utils/object.js";
17
- import { sharedConstructsGenerator } from "../../utils/shared-constructs.js";
18
- import { withVersions } from "../../utils/versions.js";
18
+ import { SHARED_CONSTRUCTS_DEPENDENCIES, sharedConstructsGenerator } from "../../utils/shared-constructs.js";
19
+ export const DEPENDENCIES = declareDependencies()({
20
+ ts: [
21
+ // Handler imports: @aws-sdk/client-secrets-manager (token handler) and
22
+ // @types/aws-lambda (handler signatures).
23
+ {
24
+ name: '@aws-sdk/client-secrets-manager'
25
+ },
26
+ {
27
+ name: '@types/aws-lambda',
28
+ dev: true
29
+ },
30
+ ...ownedElsewhere(BUNDLE_DEPENDENCIES),
31
+ ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES)
32
+ ]
33
+ });
19
34
  export const TS_DCR_PROXY_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
20
35
  export const tsDcrProxyGenerator = async (tree, options)=>{
21
36
  const name = kebabCase(options.name ? options.name : 'dcr-proxy');
@@ -49,13 +64,9 @@ export const tsDcrProxyGenerator = async (tree, options)=>{
49
64
  }, {
50
65
  overwriteStrategy: OverwriteStrategy.KeepExisting
51
66
  });
52
- // Handler imports: @aws-sdk/client-secrets-manager (token handler) and
53
- // @types/aws-lambda (handler signatures).
54
- addDependenciesToPackageJson(tree, withVersions([
55
- '@aws-sdk/client-secrets-manager'
56
- ]), withVersions([
57
- '@types/aws-lambda'
58
- ]), joinPathFragments(proxyRoot, 'package.json'));
67
+ addTsDependencies(tree, DEPENDENCIES, {
68
+ projectRoot: proxyRoot
69
+ });
59
70
  // Bundle each handler independently to dist/<root>/bundle/<handler>/index.js
60
71
  for (const handler of DCR_PROXY_HANDLERS){
61
72
  await addTypeScriptBundleTarget(tree, projectConfig, {
@@ -65,17 +76,23 @@ export const tsDcrProxyGenerator = async (tree, options)=>{
65
76
  /@aws-sdk\/.*/
66
77
  ],
67
78
  platform: 'node'
68
- });
79
+ }, DEPENDENCIES);
69
80
  }
70
81
  projectConfig.targets = sortObjectKeys(projectConfig.targets);
71
82
  updateProjectConfiguration(tree, projectConfig.name, projectConfig);
83
+ // Recorded over the `ts#project` id the underlying generator wrote, so the
84
+ // version sync attributes this project's dependencies to this generator.
85
+ // After the write above, which would otherwise revert it.
86
+ addGeneratorMetadata(tree, projectConfig.name, TS_DCR_PROXY_GENERATOR_INFO, {
87
+ iac
88
+ });
72
89
  const bundlePathsFromRoot = Object.fromEntries(DCR_PROXY_HANDLERS.map((handler)=>[
73
90
  handler,
74
91
  joinPathFragments('dist', proxyRoot, 'bundle', handler)
75
92
  ]));
76
93
  await sharedConstructsGenerator(tree, {
77
94
  iac
78
- });
95
+ }, DEPENDENCIES);
79
96
  await addDcrProxyInfra(tree, {
80
97
  dcrProxyNameClassName: nameClassName,
81
98
  dcrProxyNameKebabCase: name,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/dcr-proxy/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 from '../../ts/lib/generator';\nimport { addTypeScriptBundleTarget } from '../../utils/bundle/bundle';\nimport {\n addDcrProxyInfra,\n DCR_PROXY_HANDLERS,\n type DcrProxyHandler,\n} from '../../utils/dcr-proxy-constructs/dcr-proxy-constructs';\nimport { addDependenciesToPackageJson } from '../../utils/dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { resolveIac } from '../../utils/iac';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { kebabCase, toClassName } from '../../utils/names';\nimport { getNpmScopePrefix } from '../../utils/npm-scope';\nimport {\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../utils/nx';\nimport { sortObjectKeys } from '../../utils/object';\nimport { sharedConstructsGenerator } from '../../utils/shared-constructs';\nimport { withVersions } from '../../utils/versions';\nimport type { TsDcrProxyGeneratorSchema } from './schema';\n\nexport const TS_DCR_PROXY_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsDcrProxyGenerator = async (\n tree: Tree,\n options: TsDcrProxyGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const name = kebabCase(options.name ? options.name : 'dcr-proxy');\n const nameClassName = toClassName(name);\n\n const iac = await resolveIac(tree, options.iac);\n\n // The handlers live in a standalone TypeScript project so they can be bundled\n // (rolldown) into deployable artifacts referenced by both CDK and Terraform.\n const namespace = getNpmScopePrefix(tree);\n const proxyProjectName = `${namespace}${name}`;\n\n let projectExists: boolean;\n try {\n readProjectConfigurationUnqualified(tree, proxyProjectName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n await tsProjectGenerator(tree, {\n name,\n directory: options.directory,\n subDirectory: options.subDirectory,\n preferInstallDependencies: false,\n });\n }\n\n const projectConfig = readProjectConfigurationUnqualified(\n tree,\n proxyProjectName,\n );\n const proxyRoot = projectConfig.root;\n\n // Place the Lambda handlers in the project source\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '..',\n '..',\n 'utils',\n 'dcr-proxy-constructs',\n 'files',\n 'project',\n ),\n proxyRoot,\n { nameClassName, nameKebabCase: name },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Handler imports: @aws-sdk/client-secrets-manager (token handler) and\n // @types/aws-lambda (handler signatures).\n addDependenciesToPackageJson(\n tree,\n withVersions(['@aws-sdk/client-secrets-manager']),\n withVersions(['@types/aws-lambda']),\n joinPathFragments(proxyRoot, 'package.json'),\n );\n\n // Bundle each handler independently to dist/<root>/bundle/<handler>/index.js\n for (const handler of DCR_PROXY_HANDLERS) {\n await addTypeScriptBundleTarget(tree, projectConfig, {\n targetFilePath: `src/handlers/${handler}.ts`,\n bundleOutputDir: handler,\n external: [/@aws-sdk\\/.*/], // lambda runtime provides the aws sdk\n platform: 'node',\n });\n }\n\n projectConfig.targets = sortObjectKeys(projectConfig.targets);\n updateProjectConfiguration(tree, projectConfig.name, projectConfig);\n\n const bundlePathsFromRoot = Object.fromEntries(\n DCR_PROXY_HANDLERS.map((handler) => [\n handler,\n joinPathFragments('dist', proxyRoot, 'bundle', handler),\n ]),\n ) as Record<DcrProxyHandler, string>;\n\n await sharedConstructsGenerator(tree, { iac });\n\n await addDcrProxyInfra(tree, {\n dcrProxyNameClassName: nameClassName,\n dcrProxyNameKebabCase: name,\n proxyProjectName,\n bundlePathsFromRoot,\n iac,\n });\n\n await addGeneratorMetricsIfApplicable(tree, [TS_DCR_PROXY_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsDcrProxyGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateProjectConfiguration","tsProjectGenerator","addTypeScriptBundleTarget","addDcrProxyInfra","DCR_PROXY_HANDLERS","addDependenciesToPackageJson","formatFilesInSubtree","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","kebabCase","toClassName","getNpmScopePrefix","getGeneratorInfo","readProjectConfigurationUnqualified","sortObjectKeys","sharedConstructsGenerator","withVersions","TS_DCR_PROXY_GENERATOR_INFO","filename","tsDcrProxyGenerator","tree","options","name","nameClassName","iac","namespace","proxyProjectName","projectExists","directory","subDirectory","preferInstallDependencies","projectConfig","proxyRoot","root","dirname","nameKebabCase","overwriteStrategy","KeepExisting","handler","targetFilePath","bundleOutputDir","external","platform","targets","bundlePathsFromRoot","Object","fromEntries","map","dcrProxyNameClassName","dcrProxyNameKebabCase","languages"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/dcr-proxy/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 from '../../ts/lib/generator';\nimport { addTsDependencies } from '../../utils/add-dependencies';\nimport {\n addTypeScriptBundleTarget,\n BUNDLE_DEPENDENCIES,\n} from '../../utils/bundle/bundle';\nimport {\n addDcrProxyInfra,\n DCR_PROXY_HANDLERS,\n type DcrProxyHandler,\n} from '../../utils/dcr-proxy-constructs/dcr-proxy-constructs';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { resolveIac } from '../../utils/iac';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { kebabCase, toClassName } from '../../utils/names';\nimport { getNpmScopePrefix } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../utils/nx';\nimport { sortObjectKeys } from '../../utils/object';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs';\nimport type { TsDcrProxyGeneratorSchema } from './schema';\n\nexport const DEPENDENCIES = declareDependencies()({\n ts: [\n // Handler imports: @aws-sdk/client-secrets-manager (token handler) and\n // @types/aws-lambda (handler signatures).\n { name: '@aws-sdk/client-secrets-manager' },\n { name: '@types/aws-lambda', dev: true },\n ...ownedElsewhere(BUNDLE_DEPENDENCIES),\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ],\n});\n\nexport const TS_DCR_PROXY_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsDcrProxyGenerator = async (\n tree: Tree,\n options: TsDcrProxyGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const name = kebabCase(options.name ? options.name : 'dcr-proxy');\n const nameClassName = toClassName(name);\n\n const iac = await resolveIac(tree, options.iac);\n\n // The handlers live in a standalone TypeScript project so they can be bundled\n // (rolldown) into deployable artifacts referenced by both CDK and Terraform.\n const namespace = getNpmScopePrefix(tree);\n const proxyProjectName = `${namespace}${name}`;\n\n let projectExists: boolean;\n try {\n readProjectConfigurationUnqualified(tree, proxyProjectName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n await tsProjectGenerator(tree, {\n name,\n directory: options.directory,\n subDirectory: options.subDirectory,\n preferInstallDependencies: false,\n });\n }\n\n const projectConfig = readProjectConfigurationUnqualified(\n tree,\n proxyProjectName,\n );\n const proxyRoot = projectConfig.root;\n\n // Place the Lambda handlers in the project source\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '..',\n '..',\n 'utils',\n 'dcr-proxy-constructs',\n 'files',\n 'project',\n ),\n proxyRoot,\n { nameClassName, nameKebabCase: name },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n addTsDependencies(tree, DEPENDENCIES, { projectRoot: proxyRoot });\n\n // Bundle each handler independently to dist/<root>/bundle/<handler>/index.js\n for (const handler of DCR_PROXY_HANDLERS) {\n await addTypeScriptBundleTarget(\n tree,\n projectConfig,\n {\n targetFilePath: `src/handlers/${handler}.ts`,\n bundleOutputDir: handler,\n external: [/@aws-sdk\\/.*/], // lambda runtime provides the aws sdk\n platform: 'node',\n },\n DEPENDENCIES,\n );\n }\n\n projectConfig.targets = sortObjectKeys(projectConfig.targets);\n updateProjectConfiguration(tree, projectConfig.name, projectConfig);\n\n // Recorded over the `ts#project` id the underlying generator wrote, so the\n // version sync attributes this project's dependencies to this generator.\n // After the write above, which would otherwise revert it.\n addGeneratorMetadata(tree, projectConfig.name, TS_DCR_PROXY_GENERATOR_INFO, {\n iac,\n });\n\n const bundlePathsFromRoot = Object.fromEntries(\n DCR_PROXY_HANDLERS.map((handler) => [\n handler,\n joinPathFragments('dist', proxyRoot, 'bundle', handler),\n ]),\n ) as Record<DcrProxyHandler, string>;\n\n await sharedConstructsGenerator(tree, { iac }, DEPENDENCIES);\n\n await addDcrProxyInfra(tree, {\n dcrProxyNameClassName: nameClassName,\n dcrProxyNameKebabCase: name,\n proxyProjectName,\n bundlePathsFromRoot,\n iac,\n });\n\n await addGeneratorMetricsIfApplicable(tree, [TS_DCR_PROXY_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsDcrProxyGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateProjectConfiguration","tsProjectGenerator","addTsDependencies","addTypeScriptBundleTarget","BUNDLE_DEPENDENCIES","addDcrProxyInfra","DCR_PROXY_HANDLERS","declareDependencies","ownedElsewhere","formatFilesInSubtree","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","kebabCase","toClassName","getNpmScopePrefix","addGeneratorMetadata","getGeneratorInfo","readProjectConfigurationUnqualified","sortObjectKeys","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","DEPENDENCIES","ts","name","dev","TS_DCR_PROXY_GENERATOR_INFO","filename","tsDcrProxyGenerator","tree","options","nameClassName","iac","namespace","proxyProjectName","projectExists","directory","subDirectory","preferInstallDependencies","projectConfig","proxyRoot","root","dirname","nameKebabCase","overwriteStrategy","KeepExisting","projectRoot","handler","targetFilePath","bundleOutputDir","external","platform","targets","bundlePathsFromRoot","Object","fromEntries","map","dcrProxyNameClassName","dcrProxyNameKebabCase","languages"],"mappings":"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"}
@@ -3,6 +3,15 @@
3
3
  exports[`ts#dynamodb agent-connection generator > should add dynamodb dev dependency to agent dev 1`] = `
4
4
  {
5
5
  "$schema": "../../node_modules/nx/schemas/project-schema.json",
6
+ "metadata": {
7
+ "components": [
8
+ {
9
+ "generator": "ts#dynamodb#agent-connection",
10
+ "name": "agent-db",
11
+ "path": "packages/db",
12
+ },
13
+ ],
14
+ },
6
15
  "name": "my-agent",
7
16
  "root": "packages/my-agent",
8
17
  "targets": {
@@ -25,6 +34,15 @@ exports[`ts#dynamodb agent-connection generator > should add dynamodb dev depend
25
34
  exports[`ts#dynamodb agent-connection generator > should use sourceComponent name when provided 1`] = `
26
35
  {
27
36
  "$schema": "../../node_modules/nx/schemas/project-schema.json",
37
+ "metadata": {
38
+ "components": [
39
+ {
40
+ "generator": "ts#dynamodb#agent-connection",
41
+ "name": "custom-agent-db",
42
+ "path": "packages/db",
43
+ },
44
+ ],
45
+ },
28
46
  "name": "my-agent",
29
47
  "root": "packages/my-agent",
30
48
  "targets": {
@@ -4,7 +4,7 @@
4
4
  */ import { updateProjectConfiguration } from "@nx/devkit";
5
5
  import { formatFilesInSubtree } from "../../../utils/format.js";
6
6
  import { addGeneratorMetricsIfApplicable } from "../../../utils/metrics.js";
7
- import { addDependencyToTargetIfNotPresent, getGeneratorInfo, readProjectConfigurationUnqualified } from "../../../utils/nx.js";
7
+ import { addComponentGeneratorMetadata, addDependencyToTargetIfNotPresent, getGeneratorInfo, readProjectConfigurationUnqualified } from "../../../utils/nx.js";
8
8
  export const TS_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
9
9
  export const tsDynamoDBAgentConnectionGenerator = async (tree, options)=>{
10
10
  const sourceProject = readProjectConfigurationUnqualified(tree, options.sourceProject);
@@ -20,6 +20,12 @@ export const tsDynamoDBAgentConnectionGenerator = async (tree, options)=>{
20
20
  });
21
21
  updateProjectConfiguration(tree, sourceProject.name, sourceProject);
22
22
  }
23
+ // Recorded so the version sync can identify this connection.
24
+ addComponentGeneratorMetadata(tree, sourceProject.name, TS_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO, targetProject.root, `${agentName}-${targetProject.name}`, // The source component this connection is made from, so the pair is
25
+ // identifiable rather than just the two projects.
26
+ {
27
+ sourcePath: options.sourceComponent?.path
28
+ });
23
29
  await addGeneratorMetricsIfApplicable(tree, [
24
30
  TS_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO
25
31
  ]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/dynamodb/agent-connection/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { type Tree, updateProjectConfiguration } from '@nx/devkit';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport {\n addDependencyToTargetIfNotPresent,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport type { TsDynamoDBAgentConnectionGeneratorSchema } from './schema';\n\nexport const TS_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const tsDynamoDBAgentConnectionGenerator = async (\n tree: Tree,\n options: TsDynamoDBAgentConnectionGeneratorSchema,\n): Promise<void> => {\n const sourceProject = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const targetProject = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n const agentName = options.sourceComponent?.name ?? 'agent';\n const devTarget = `${agentName}-dev`;\n\n if (sourceProject.targets?.[devTarget]) {\n addDependencyToTargetIfNotPresent(sourceProject, devTarget, {\n projects: [targetProject.name],\n target: 'dev',\n });\n updateProjectConfiguration(tree, sourceProject.name, sourceProject);\n }\n\n await addGeneratorMetricsIfApplicable(tree, [\n TS_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO,\n ]);\n await formatFilesInSubtree(tree);\n};\n\nexport default tsDynamoDBAgentConnectionGenerator;\n"],"names":["updateProjectConfiguration","formatFilesInSubtree","addGeneratorMetricsIfApplicable","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","TS_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO","filename","tsDynamoDBAgentConnectionGenerator","tree","options","sourceProject","targetProject","agentName","sourceComponent","name","devTarget","targets","projects","target"],"mappings":"AAAA;;;CAGC,GACD,SAAoBA,0BAA0B,QAAQ,aAAa;AACnE,SAASC,oBAAoB,QAAQ,2BAAwB;AAC7D,SAASC,+BAA+B,QAAQ,4BAAyB;AACzE,SACEC,iCAAiC,EACjCC,gBAAgB,EAEhBC,mCAAmC,QAC9B,uBAAoB;AAG3B,OAAO,MAAMC,8CACXF,iBAAiB,YAAYG,QAAQ,EAAE;AAEzC,OAAO,MAAMC,qCAAqC,OAChDC,MACAC;IAEA,MAAMC,gBAAgBN,oCACpBI,MACAC,QAAQC,aAAa;IAEvB,MAAMC,gBAAgBP,oCACpBI,MACAC,QAAQE,aAAa;IAGvB,MAAMC,YAAYH,QAAQI,eAAe,EAAEC,QAAQ;IACnD,MAAMC,YAAY,GAAGH,UAAU,IAAI,CAAC;IAEpC,IAAIF,cAAcM,OAAO,EAAE,CAACD,UAAU,EAAE;QACtCb,kCAAkCQ,eAAeK,WAAW;YAC1DE,UAAU;gBAACN,cAAcG,IAAI;aAAC;YAC9BI,QAAQ;QACV;QACAnB,2BAA2BS,MAAME,cAAcI,IAAI,EAAEJ;IACvD;IAEA,MAAMT,gCAAgCO,MAAM;QAC1CH;KACD;IACD,MAAML,qBAAqBQ;AAC7B,EAAE;AAEF,eAAeD,mCAAmC"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/dynamodb/agent-connection/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { type Tree, updateProjectConfiguration } from '@nx/devkit';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport {\n addComponentGeneratorMetadata,\n addDependencyToTargetIfNotPresent,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport type { TsDynamoDBAgentConnectionGeneratorSchema } from './schema';\n\nexport const TS_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const tsDynamoDBAgentConnectionGenerator = async (\n tree: Tree,\n options: TsDynamoDBAgentConnectionGeneratorSchema,\n): Promise<void> => {\n const sourceProject = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const targetProject = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n const agentName = options.sourceComponent?.name ?? 'agent';\n const devTarget = `${agentName}-dev`;\n\n if (sourceProject.targets?.[devTarget]) {\n addDependencyToTargetIfNotPresent(sourceProject, devTarget, {\n projects: [targetProject.name],\n target: 'dev',\n });\n updateProjectConfiguration(tree, sourceProject.name, sourceProject);\n }\n\n // Recorded so the version sync can identify this connection.\n addComponentGeneratorMetadata(\n tree,\n sourceProject.name,\n TS_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO,\n targetProject.root,\n `${agentName}-${targetProject.name}`,\n // The source component this connection is made from, so the pair is\n // identifiable rather than just the two projects.\n { sourcePath: options.sourceComponent?.path },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n TS_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO,\n ]);\n await formatFilesInSubtree(tree);\n};\n\nexport default tsDynamoDBAgentConnectionGenerator;\n"],"names":["updateProjectConfiguration","formatFilesInSubtree","addGeneratorMetricsIfApplicable","addComponentGeneratorMetadata","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","TS_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO","filename","tsDynamoDBAgentConnectionGenerator","tree","options","sourceProject","targetProject","agentName","sourceComponent","name","devTarget","targets","projects","target","root","sourcePath","path"],"mappings":"AAAA;;;CAGC,GACD,SAAoBA,0BAA0B,QAAQ,aAAa;AACnE,SAASC,oBAAoB,QAAQ,2BAAwB;AAC7D,SAASC,+BAA+B,QAAQ,4BAAyB;AACzE,SACEC,6BAA6B,EAC7BC,iCAAiC,EACjCC,gBAAgB,EAEhBC,mCAAmC,QAC9B,uBAAoB;AAG3B,OAAO,MAAMC,8CACXF,iBAAiB,YAAYG,QAAQ,EAAE;AAEzC,OAAO,MAAMC,qCAAqC,OAChDC,MACAC;IAEA,MAAMC,gBAAgBN,oCACpBI,MACAC,QAAQC,aAAa;IAEvB,MAAMC,gBAAgBP,oCACpBI,MACAC,QAAQE,aAAa;IAGvB,MAAMC,YAAYH,QAAQI,eAAe,EAAEC,QAAQ;IACnD,MAAMC,YAAY,GAAGH,UAAU,IAAI,CAAC;IAEpC,IAAIF,cAAcM,OAAO,EAAE,CAACD,UAAU,EAAE;QACtCb,kCAAkCQ,eAAeK,WAAW;YAC1DE,UAAU;gBAACN,cAAcG,IAAI;aAAC;YAC9BI,QAAQ;QACV;QACApB,2BAA2BU,MAAME,cAAcI,IAAI,EAAEJ;IACvD;IAEA,6DAA6D;IAC7DT,8BACEO,MACAE,cAAcI,IAAI,EAClBT,6CACAM,cAAcQ,IAAI,EAClB,GAAGP,UAAU,CAAC,EAAED,cAAcG,IAAI,EAAE,EACpC,oEAAoE;IACpE,kDAAkD;IAClD;QAAEM,YAAYX,QAAQI,eAAe,EAAEQ;IAAK;IAG9C,MAAMrB,gCAAgCQ,MAAM;QAC1CH;KACD;IACD,MAAMN,qBAAqBS;AAC7B,EAAE;AAEF,eAAeD,mCAAmC"}
@@ -5,6 +5,47 @@
5
5
  import { type GeneratorCallback, type Tree } from '@nx/devkit';
6
6
  import { type NxGeneratorInfo } from '../../utils/nx';
7
7
  import type { TsDynamoDBGeneratorSchema } from './schema';
8
+ export declare const DEPENDENCIES: import("../../utils/declared-dependencies").DependencyDeclaration<readonly [{
9
+ readonly name: "@aws-sdk/client-dynamodb";
10
+ }, {
11
+ readonly name: "electrodb";
12
+ }, {
13
+ readonly name: "@aws-lambda-powertools/parameters";
14
+ }, {
15
+ readonly name: "@aws-sdk/client-appconfigdata";
16
+ }, {
17
+ readonly name: "@types/aws-lambda";
18
+ readonly dev: true;
19
+ }, {
20
+ readonly name: "@types/node";
21
+ readonly dev: true;
22
+ }, {
23
+ readonly name: "tsx";
24
+ readonly dev: true;
25
+ readonly root: true;
26
+ }, {
27
+ readonly name: "constructs";
28
+ readonly when: (m: import("../../utils/shared-constructs-constants").IacMetadata) => boolean;
29
+ } & {
30
+ versionOnly: true;
31
+ }, {
32
+ readonly name: "aws-cdk-lib";
33
+ readonly when: (m: import("../../utils/shared-constructs-constants").IacMetadata) => boolean;
34
+ } & {
35
+ versionOnly: true;
36
+ }, {
37
+ readonly name: "@types/node";
38
+ } & {
39
+ versionOnly: true;
40
+ }, {
41
+ readonly name: "@aws-sdk/client-dynamodb";
42
+ } & {
43
+ versionOnly: true;
44
+ }, {
45
+ readonly name: "tsx";
46
+ } & {
47
+ versionOnly: true;
48
+ }], 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
49
  export declare const TS_DYNAMODB_GENERATOR_INFO: NxGeneratorInfo;
9
50
  export declare const tsDynamoDBGenerator: (tree: Tree, options: TsDynamoDBGeneratorSchema) => Promise<GeneratorCallback>;
10
51
  export default tsDynamoDBGenerator;
@@ -3,8 +3,9 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */ import { relative } from "node:path";
5
5
  import { generateFiles, joinPathFragments, readProjectConfiguration, updateProjectConfiguration } from "@nx/devkit";
6
+ import { addTsDependencies } from "../../utils/add-dependencies.js";
6
7
  import { resolveContainers } from "../../utils/containers.js";
7
- import { addDependenciesToPackageJson } from "../../utils/dependencies.js";
8
+ import { declareDependencies, ownedElsewhere } from "../../utils/declared-dependencies.js";
8
9
  import { addDynamoDBInfra } from "../../utils/dynamodb-constructs/dynamodb-constructs.js";
9
10
  import { formatFilesInSubtree } from "../../utils/format.js";
10
11
  import { resolveIac } from "../../utils/iac.js";
@@ -15,11 +16,42 @@ import { kebabCase, toClassName } from "../../utils/names.js";
15
16
  import { getNpmScope } from "../../utils/npm-scope.js";
16
17
  import { addGeneratorMetadata, getGeneratorInfo } from "../../utils/nx.js";
17
18
  import { assignSharedPort } from "../../utils/port.js";
18
- import { sharedConstructsGenerator } from "../../utils/shared-constructs.js";
19
+ import { SHARED_CONSTRUCTS_DEPENDENCIES, sharedConstructsGenerator } from "../../utils/shared-constructs.js";
19
20
  import { DYNAMODB_GENERATOR_IDS, PACKAGES_DIR, SHARED_SCRIPTS_DIR } from "../../utils/shared-constructs-constants.js";
20
- import { sharedDynamoDBScriptsGenerator } from "../../utils/shared-dynamodb-scripts.js";
21
- import { withVersions } from "../../utils/versions.js";
21
+ import { SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES, sharedDynamoDBScriptsGenerator } from "../../utils/shared-dynamodb-scripts.js";
22
22
  import tsProjectGenerator, { getTsLibDetails } from "../lib/generator.js";
23
+ export const DEPENDENCIES = declareDependencies()({
24
+ ts: [
25
+ {
26
+ name: '@aws-sdk/client-dynamodb'
27
+ },
28
+ {
29
+ name: 'electrodb'
30
+ },
31
+ {
32
+ name: '@aws-lambda-powertools/parameters'
33
+ },
34
+ {
35
+ name: '@aws-sdk/client-appconfigdata'
36
+ },
37
+ {
38
+ name: '@types/aws-lambda',
39
+ dev: true
40
+ },
41
+ {
42
+ name: '@types/node',
43
+ dev: true
44
+ },
45
+ // tsx runs the local-dev scripts from the workspace root.
46
+ {
47
+ name: 'tsx',
48
+ dev: true,
49
+ root: true
50
+ },
51
+ ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),
52
+ ...ownedElsewhere(SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES)
53
+ ]
54
+ });
23
55
  export const TS_DYNAMODB_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
24
56
  export const tsDynamoDBGenerator = async (tree, options)=>{
25
57
  const nameKebabCase = kebabCase(options.name);
@@ -57,7 +89,7 @@ export const tsDynamoDBGenerator = async (tree, options)=>{
57
89
  ...esmVars(tree)
58
90
  };
59
91
  generateFiles(tree, joinPathFragments(import.meta.dirname, 'files'), dir, templateOptions);
60
- await sharedDynamoDBScriptsGenerator(tree);
92
+ await sharedDynamoDBScriptsGenerator(tree, DEPENDENCIES);
61
93
  const scriptsDir = relative(dir, joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'src', 'dynamodb'));
62
94
  projectConfig.targets['pull-image'] = {
63
95
  executor: 'nx:run-commands',
@@ -79,12 +111,16 @@ export const tsDynamoDBGenerator = async (tree, options)=>{
79
111
  }
80
112
  };
81
113
  updateProjectConfiguration(tree, fullyQualifiedName, projectConfig);
82
- addGeneratorMetadata(tree, fullyQualifiedName, TS_DYNAMODB_GENERATOR_INFO);
114
+ // Recorded so the version sync can tell a CDK project from a Terraform one;
115
+ // undefined when no infrastructure was generated.
116
+ const iac = options.infra !== 'none' ? await resolveIac(tree, options.iac) : undefined;
117
+ addGeneratorMetadata(tree, fullyQualifiedName, TS_DYNAMODB_GENERATOR_INFO, iac ? {
118
+ iac
119
+ } : {});
83
120
  if (options.infra !== 'none') {
84
- const iac = await resolveIac(tree, options.iac);
85
121
  await sharedConstructsGenerator(tree, {
86
122
  iac
87
- });
123
+ }, DEPENDENCIES);
88
124
  await addDynamoDBInfra(tree, {
89
125
  iac,
90
126
  projectName: fullyQualifiedName,
@@ -94,18 +130,9 @@ export const tsDynamoDBGenerator = async (tree, options)=>{
94
130
  projectRoot: dir
95
131
  });
96
132
  }
97
- addDependenciesToPackageJson(tree, withVersions([
98
- '@aws-sdk/client-dynamodb',
99
- 'electrodb',
100
- '@aws-lambda-powertools/parameters',
101
- '@aws-sdk/client-appconfigdata'
102
- ]), withVersions([
103
- '@types/aws-lambda',
104
- '@types/node'
105
- ]), joinPathFragments(dir, 'package.json'));
106
- addDependenciesToPackageJson(tree, {}, withVersions([
107
- 'tsx'
108
- ]));
133
+ addTsDependencies(tree, DEPENDENCIES, {
134
+ projectRoot: dir
135
+ });
109
136
  await addGeneratorMetricsIfApplicable(tree, [
110
137
  TS_DYNAMODB_GENERATOR_INFO
111
138
  ]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/dynamodb/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { relative } from 'node:path';\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n readProjectConfiguration,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { resolveContainers } from '../../utils/containers';\nimport { addDependenciesToPackageJson } from '../../utils/dependencies';\nimport { addDynamoDBInfra } from '../../utils/dynamodb-constructs/dynamodb-constructs';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { resolveIac } from '../../utils/iac';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { esmVars } from '../../utils/module-format';\nimport { kebabCase, toClassName } from '../../utils/names';\nimport { getNpmScope } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n} from '../../utils/nx';\nimport { assignSharedPort } from '../../utils/port';\nimport { sharedConstructsGenerator } from '../../utils/shared-constructs';\nimport {\n DYNAMODB_GENERATOR_IDS,\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from '../../utils/shared-constructs-constants';\nimport { sharedDynamoDBScriptsGenerator } from '../../utils/shared-dynamodb-scripts';\nimport { withVersions } from '../../utils/versions';\nimport tsProjectGenerator, { getTsLibDetails } from '../lib/generator';\nimport type { TsDynamoDBGeneratorSchema } from './schema';\n\nexport const TS_DYNAMODB_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsDynamoDBGenerator = async (\n tree: Tree,\n options: TsDynamoDBGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const nameKebabCase = kebabCase(options.name);\n const nameClassName = toClassName(options.name);\n const localTableName = `${getNpmScope(tree)}-${kebabCase(options.tableName ?? options.name)}`;\n const containerEngine = await resolveContainers(tree, 'inherit');\n const { fullyQualifiedName, dir } = getTsLibDetails(tree, {\n name: options.name,\n directory: options.directory,\n subDirectory: options.subDirectory,\n });\n\n let projectExists: boolean;\n try {\n readProjectConfiguration(tree, fullyQualifiedName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n await tsProjectGenerator(tree, {\n name: options.name,\n directory: options.directory,\n preferInstallDependencies: false,\n });\n }\n\n const projectConfig = readProjectConfiguration(tree, fullyQualifiedName);\n\n const localDynamoDBPort = assignSharedPort(\n tree,\n projectConfig,\n DYNAMODB_GENERATOR_IDS,\n 8000,\n );\n\n const containerName = `${getNpmScope(tree)}-dynamodb`;\n\n const templateOptions = {\n runtimeConfigKey: nameClassName,\n localDynamoDBPort,\n localTableName,\n containerName,\n containerEngine,\n ...esmVars(tree),\n };\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files'),\n dir,\n templateOptions,\n );\n\n await sharedDynamoDBScriptsGenerator(tree);\n\n const scriptsDir = relative(\n dir,\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'src', 'dynamodb'),\n );\n\n projectConfig.targets['pull-image'] = {\n executor: 'nx:run-commands',\n options: {\n command: `tsx ${scriptsDir}/pull-image.ts`,\n cwd: '{projectRoot}',\n },\n };\n projectConfig.targets['dev'] = {\n executor: 'nx:run-commands',\n continuous: true,\n options: {\n commands: [\n `tsx ${scriptsDir}/start-container.ts`,\n `tsx ${scriptsDir}/create-local-table.ts`,\n ],\n parallel: true,\n cwd: '{projectRoot}',\n },\n };\n\n updateProjectConfiguration(tree, fullyQualifiedName, projectConfig);\n addGeneratorMetadata(tree, fullyQualifiedName, TS_DYNAMODB_GENERATOR_INFO);\n\n if (options.infra !== 'none') {\n const iac = await resolveIac(tree, options.iac);\n await sharedConstructsGenerator(tree, { iac });\n await addDynamoDBInfra(tree, {\n iac,\n projectName: fullyQualifiedName,\n nameClassName,\n nameKebabCase,\n tableName: localTableName,\n projectRoot: dir,\n });\n }\n\n addDependenciesToPackageJson(\n tree,\n withVersions([\n '@aws-sdk/client-dynamodb',\n 'electrodb',\n '@aws-lambda-powertools/parameters',\n '@aws-sdk/client-appconfigdata',\n ]),\n withVersions(['@types/aws-lambda', '@types/node']),\n joinPathFragments(dir, 'package.json'),\n );\n addDependenciesToPackageJson(tree, {}, withVersions(['tsx']));\n\n await addGeneratorMetricsIfApplicable(tree, [TS_DYNAMODB_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsDynamoDBGenerator;\n"],"names":["relative","generateFiles","joinPathFragments","readProjectConfiguration","updateProjectConfiguration","resolveContainers","addDependenciesToPackageJson","addDynamoDBInfra","formatFilesInSubtree","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","esmVars","kebabCase","toClassName","getNpmScope","addGeneratorMetadata","getGeneratorInfo","assignSharedPort","sharedConstructsGenerator","DYNAMODB_GENERATOR_IDS","PACKAGES_DIR","SHARED_SCRIPTS_DIR","sharedDynamoDBScriptsGenerator","withVersions","tsProjectGenerator","getTsLibDetails","TS_DYNAMODB_GENERATOR_INFO","filename","tsDynamoDBGenerator","tree","options","nameKebabCase","name","nameClassName","localTableName","tableName","containerEngine","fullyQualifiedName","dir","directory","subDirectory","projectExists","preferInstallDependencies","projectConfig","localDynamoDBPort","containerName","templateOptions","runtimeConfigKey","dirname","scriptsDir","targets","executor","command","cwd","continuous","commands","parallel","infra","iac","projectName","projectRoot","languages"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/dynamodb/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { relative } from 'node:path';\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n readProjectConfiguration,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addTsDependencies } from '../../utils/add-dependencies';\nimport { resolveContainers } from '../../utils/containers';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies';\nimport { addDynamoDBInfra } from '../../utils/dynamodb-constructs/dynamodb-constructs';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { resolveIac } from '../../utils/iac';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { esmVars } from '../../utils/module-format';\nimport { kebabCase, toClassName } from '../../utils/names';\nimport { getNpmScope } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n} from '../../utils/nx';\nimport { assignSharedPort } from '../../utils/port';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs';\nimport {\n DYNAMODB_GENERATOR_IDS,\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from '../../utils/shared-constructs-constants';\nimport {\n SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES,\n sharedDynamoDBScriptsGenerator,\n} from '../../utils/shared-dynamodb-scripts';\nimport tsProjectGenerator, { getTsLibDetails } from '../lib/generator';\nimport type { TsDynamoDBGeneratorSchema } from './schema';\n\nexport const DEPENDENCIES = declareDependencies()({\n ts: [\n { name: '@aws-sdk/client-dynamodb' },\n { name: 'electrodb' },\n { name: '@aws-lambda-powertools/parameters' },\n { name: '@aws-sdk/client-appconfigdata' },\n { name: '@types/aws-lambda', dev: true },\n { name: '@types/node', dev: true },\n // tsx runs the local-dev scripts from the workspace root.\n { name: 'tsx', dev: true, root: true },\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ...ownedElsewhere(SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES),\n ],\n});\n\nexport const TS_DYNAMODB_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsDynamoDBGenerator = async (\n tree: Tree,\n options: TsDynamoDBGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const nameKebabCase = kebabCase(options.name);\n const nameClassName = toClassName(options.name);\n const localTableName = `${getNpmScope(tree)}-${kebabCase(options.tableName ?? options.name)}`;\n const containerEngine = await resolveContainers(tree, 'inherit');\n const { fullyQualifiedName, dir } = getTsLibDetails(tree, {\n name: options.name,\n directory: options.directory,\n subDirectory: options.subDirectory,\n });\n\n let projectExists: boolean;\n try {\n readProjectConfiguration(tree, fullyQualifiedName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n await tsProjectGenerator(tree, {\n name: options.name,\n directory: options.directory,\n preferInstallDependencies: false,\n });\n }\n\n const projectConfig = readProjectConfiguration(tree, fullyQualifiedName);\n\n const localDynamoDBPort = assignSharedPort(\n tree,\n projectConfig,\n DYNAMODB_GENERATOR_IDS,\n 8000,\n );\n\n const containerName = `${getNpmScope(tree)}-dynamodb`;\n\n const templateOptions = {\n runtimeConfigKey: nameClassName,\n localDynamoDBPort,\n localTableName,\n containerName,\n containerEngine,\n ...esmVars(tree),\n };\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files'),\n dir,\n templateOptions,\n );\n\n await sharedDynamoDBScriptsGenerator(tree, DEPENDENCIES);\n\n const scriptsDir = relative(\n dir,\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'src', 'dynamodb'),\n );\n\n projectConfig.targets['pull-image'] = {\n executor: 'nx:run-commands',\n options: {\n command: `tsx ${scriptsDir}/pull-image.ts`,\n cwd: '{projectRoot}',\n },\n };\n projectConfig.targets['dev'] = {\n executor: 'nx:run-commands',\n continuous: true,\n options: {\n commands: [\n `tsx ${scriptsDir}/start-container.ts`,\n `tsx ${scriptsDir}/create-local-table.ts`,\n ],\n parallel: true,\n cwd: '{projectRoot}',\n },\n };\n\n updateProjectConfiguration(tree, fullyQualifiedName, projectConfig);\n // Recorded so the version sync can tell a CDK project from a Terraform one;\n // undefined when no infrastructure was generated.\n const iac =\n options.infra !== 'none' ? await resolveIac(tree, options.iac) : undefined;\n\n addGeneratorMetadata(\n tree,\n fullyQualifiedName,\n TS_DYNAMODB_GENERATOR_INFO,\n iac ? { iac } : {},\n );\n\n if (options.infra !== 'none') {\n await sharedConstructsGenerator(tree, { iac }, DEPENDENCIES);\n await addDynamoDBInfra(tree, {\n iac,\n projectName: fullyQualifiedName,\n nameClassName,\n nameKebabCase,\n tableName: localTableName,\n projectRoot: dir,\n });\n }\n\n addTsDependencies(tree, DEPENDENCIES, { projectRoot: dir });\n\n await addGeneratorMetricsIfApplicable(tree, [TS_DYNAMODB_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsDynamoDBGenerator;\n"],"names":["relative","generateFiles","joinPathFragments","readProjectConfiguration","updateProjectConfiguration","addTsDependencies","resolveContainers","declareDependencies","ownedElsewhere","addDynamoDBInfra","formatFilesInSubtree","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","esmVars","kebabCase","toClassName","getNpmScope","addGeneratorMetadata","getGeneratorInfo","assignSharedPort","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","DYNAMODB_GENERATOR_IDS","PACKAGES_DIR","SHARED_SCRIPTS_DIR","SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES","sharedDynamoDBScriptsGenerator","tsProjectGenerator","getTsLibDetails","DEPENDENCIES","ts","name","dev","root","TS_DYNAMODB_GENERATOR_INFO","filename","tsDynamoDBGenerator","tree","options","nameKebabCase","nameClassName","localTableName","tableName","containerEngine","fullyQualifiedName","dir","directory","subDirectory","projectExists","preferInstallDependencies","projectConfig","localDynamoDBPort","containerName","templateOptions","runtimeConfigKey","dirname","scriptsDir","targets","executor","command","cwd","continuous","commands","parallel","iac","infra","undefined","projectName","projectRoot","languages"],"mappings":"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"}