@aws/nx-plugin 1.0.0-rc.24 → 1.0.0-rc.26

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 (302) hide show
  1. package/LICENSE-THIRD-PARTY +2020 -702
  2. package/package.json +6 -6
  3. package/src/agentcore-gateway/gateway-connection/generator.d.ts +1 -1
  4. package/src/agentcore-gateway/gateway-connection/generator.js +7 -5
  5. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -1
  6. package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -1
  7. package/src/agentcore-gateway/gateway-connection/schema.d.ts +1 -0
  8. package/src/agentcore-gateway/gateway-connection/schema.json +5 -0
  9. package/src/agentcore-gateway/generator.js +7 -4
  10. package/src/agentcore-gateway/generator.js.map +1 -1
  11. package/src/agentcore-gateway/mcp-connection/generator.d.ts +1 -1
  12. package/src/agentcore-gateway/mcp-connection/generator.js +7 -5
  13. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -1
  14. package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -1
  15. package/src/agentcore-gateway/mcp-connection/schema.d.ts +1 -0
  16. package/src/agentcore-gateway/mcp-connection/schema.json +5 -0
  17. package/src/agentcore-gateway/schema.d.js.map +1 -1
  18. package/src/agentcore-gateway/schema.d.ts +1 -0
  19. package/src/agentcore-gateway/schema.json +5 -0
  20. package/src/connection/generator.d.ts +3 -10
  21. package/src/connection/generator.js +18 -148
  22. package/src/connection/generator.js.map +1 -1
  23. package/src/connection/schema.d.js.map +1 -1
  24. package/src/connection/schema.d.ts +1 -0
  25. package/src/connection/schema.json +5 -0
  26. package/src/connection/supported-connections.d.ts +98 -0
  27. package/src/connection/supported-connections.js +138 -0
  28. package/src/connection/supported-connections.js.map +1 -0
  29. package/src/infra/app/__snapshots__/generator.spec.ts.snap +29 -21
  30. package/src/infra/app/generator.js +12 -6
  31. package/src/infra/app/generator.js.map +1 -1
  32. package/src/infra/app/schema.d.js.map +1 -1
  33. package/src/infra/app/schema.d.ts +1 -1
  34. package/src/infra/app/schema.json +5 -0
  35. package/src/license/schema.d.js.map +1 -1
  36. package/src/license/schema.d.ts +2 -0
  37. package/src/license/schema.json +5 -0
  38. package/src/mcp-server/tools/general-guidance.js +17 -0
  39. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  40. package/src/preset/__snapshots__/generator.spec.ts.snap +1 -1
  41. package/src/preset/generator.d.ts +1 -1
  42. package/src/preset/generator.js +8 -5
  43. package/src/preset/generator.js.map +1 -1
  44. package/src/preset/schema.d.js.map +1 -1
  45. package/src/preset/schema.d.ts +1 -0
  46. package/src/preset/schema.json +5 -0
  47. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +9 -9
  48. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +10 -10
  49. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +1 -1
  50. package/src/py/agent/a2a-connection/generator.js +7 -4
  51. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  52. package/src/py/agent/a2a-connection/schema.d.js.map +1 -1
  53. package/src/py/agent/a2a-connection/schema.d.ts +1 -0
  54. package/src/py/agent/a2a-connection/schema.json +5 -0
  55. package/src/py/agent/gateway-connection/generator.js +7 -4
  56. package/src/py/agent/gateway-connection/generator.js.map +1 -1
  57. package/src/py/agent/gateway-connection/schema.d.js.map +1 -1
  58. package/src/py/agent/gateway-connection/schema.d.ts +1 -0
  59. package/src/py/agent/gateway-connection/schema.json +5 -0
  60. package/src/py/agent/generator.js +8 -6
  61. package/src/py/agent/generator.js.map +1 -1
  62. package/src/py/agent/mcp-connection/generator.js +7 -4
  63. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  64. package/src/py/agent/mcp-connection/schema.d.js.map +1 -1
  65. package/src/py/agent/mcp-connection/schema.d.ts +1 -0
  66. package/src/py/agent/mcp-connection/schema.json +5 -0
  67. package/src/py/agent/react-connection/generator.d.ts +1 -1
  68. package/src/py/agent/react-connection/generator.js +7 -4
  69. package/src/py/agent/react-connection/generator.js.map +1 -1
  70. package/src/py/agent/react-connection/schema.d.js.map +1 -1
  71. package/src/py/agent/react-connection/schema.d.ts +1 -0
  72. package/src/py/agent/react-connection/schema.json +5 -0
  73. package/src/py/agent/schema.d.js.map +1 -1
  74. package/src/py/agent/schema.d.ts +1 -0
  75. package/src/py/agent/schema.json +5 -0
  76. package/src/py/api/generator.js +2 -1
  77. package/src/py/api/generator.js.map +1 -1
  78. package/src/py/api/schema.d.js.map +1 -1
  79. package/src/py/api/schema.d.ts +1 -0
  80. package/src/py/api/schema.json +5 -0
  81. package/src/py/dynamodb/agent-connection/generator.js +8 -6
  82. package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
  83. package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -1
  84. package/src/py/dynamodb/agent-connection/schema.d.ts +1 -0
  85. package/src/py/dynamodb/agent-connection/schema.json +5 -0
  86. package/src/py/dynamodb/fast-api-connection/generator.js +8 -6
  87. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
  88. package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -1
  89. package/src/py/dynamodb/fast-api-connection/schema.d.ts +1 -0
  90. package/src/py/dynamodb/fast-api-connection/schema.json +5 -0
  91. package/src/py/dynamodb/generator.js +10 -7
  92. package/src/py/dynamodb/generator.js.map +1 -1
  93. package/src/py/dynamodb/mcp-server-connection/generator.js +8 -6
  94. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
  95. package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -1
  96. package/src/py/dynamodb/mcp-server-connection/schema.d.ts +1 -0
  97. package/src/py/dynamodb/mcp-server-connection/schema.json +5 -0
  98. package/src/py/dynamodb/schema.d.js.map +1 -1
  99. package/src/py/dynamodb/schema.d.ts +1 -0
  100. package/src/py/dynamodb/schema.json +5 -0
  101. package/src/py/fast-api/generator.js +10 -7
  102. package/src/py/fast-api/generator.js.map +1 -1
  103. package/src/py/fast-api/react/generator.d.ts +2 -2
  104. package/src/py/fast-api/react/generator.js +7 -5
  105. package/src/py/fast-api/react/generator.js.map +1 -1
  106. package/src/py/fast-api/react/schema.d.js.map +1 -1
  107. package/src/py/fast-api/react/schema.d.ts +1 -0
  108. package/src/py/fast-api/react/schema.json +5 -0
  109. package/src/py/fast-api/schema.d.js.map +1 -1
  110. package/src/py/fast-api/schema.d.ts +1 -0
  111. package/src/py/fast-api/schema.json +5 -0
  112. package/src/py/lambda-function/generator.js +8 -6
  113. package/src/py/lambda-function/generator.js.map +1 -1
  114. package/src/py/lambda-function/schema.d.js.map +1 -1
  115. package/src/py/lambda-function/schema.d.ts +1 -0
  116. package/src/py/lambda-function/schema.json +5 -0
  117. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
  118. package/src/py/mcp-server/generator.js +8 -6
  119. package/src/py/mcp-server/generator.js.map +1 -1
  120. package/src/py/mcp-server/schema.d.js.map +1 -1
  121. package/src/py/mcp-server/schema.d.ts +1 -0
  122. package/src/py/mcp-server/schema.json +5 -0
  123. package/src/py/project/generator.js +9 -6
  124. package/src/py/project/generator.js.map +1 -1
  125. package/src/py/project/schema.d.js.map +1 -1
  126. package/src/py/project/schema.d.ts +1 -0
  127. package/src/py/project/schema.json +5 -0
  128. package/src/sdk/open-api.d.ts +1 -1
  129. package/src/sdk/open-api.js +1 -1
  130. package/src/sdk/open-api.js.map +1 -1
  131. package/src/sdk/utils/ast.d.ts +1 -2
  132. package/src/sdk/utils/ast.js +1 -2
  133. package/src/sdk/utils/ast.js.map +1 -1
  134. package/src/smithy/project/generator.js +7 -4
  135. package/src/smithy/project/generator.js.map +1 -1
  136. package/src/smithy/project/schema.d.js.map +1 -1
  137. package/src/smithy/project/schema.d.ts +1 -0
  138. package/src/smithy/project/schema.json +5 -0
  139. package/src/smithy/react-connection/generator.js +7 -4
  140. package/src/smithy/react-connection/generator.js.map +1 -1
  141. package/src/smithy/react-connection/schema.d.js.map +1 -1
  142. package/src/smithy/react-connection/schema.d.ts +1 -0
  143. package/src/smithy/react-connection/schema.json +5 -0
  144. package/src/smithy/ts/api/generator.js +11 -6
  145. package/src/smithy/ts/api/generator.js.map +1 -1
  146. package/src/smithy/ts/api/schema.d.js.map +1 -1
  147. package/src/smithy/ts/api/schema.d.ts +1 -0
  148. package/src/smithy/ts/api/schema.json +5 -0
  149. package/src/terraform/project/generator.js +13 -4
  150. package/src/terraform/project/generator.js.map +1 -1
  151. package/src/terraform/project/schema.d.js.map +1 -1
  152. package/src/terraform/project/schema.d.ts +1 -0
  153. package/src/terraform/project/schema.json +5 -0
  154. package/src/trpc/backend/generator.d.ts +1 -1
  155. package/src/trpc/backend/generator.js +9 -5
  156. package/src/trpc/backend/generator.js.map +1 -1
  157. package/src/trpc/backend/schema.d.js.map +1 -1
  158. package/src/trpc/backend/schema.d.ts +1 -0
  159. package/src/trpc/backend/schema.json +5 -0
  160. package/src/trpc/react/generator.d.ts +1 -1
  161. package/src/trpc/react/generator.js +9 -5
  162. package/src/trpc/react/generator.js.map +1 -1
  163. package/src/trpc/react/schema.d.js.map +1 -1
  164. package/src/trpc/react/schema.d.ts +1 -0
  165. package/src/trpc/react/schema.json +5 -0
  166. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +2 -2
  167. package/src/ts/agent/a2a-connection/generator.js +7 -4
  168. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  169. package/src/ts/agent/a2a-connection/schema.d.js.map +1 -1
  170. package/src/ts/agent/a2a-connection/schema.d.ts +1 -0
  171. package/src/ts/agent/a2a-connection/schema.json +5 -0
  172. package/src/ts/agent/gateway-connection/generator.js +7 -4
  173. package/src/ts/agent/gateway-connection/generator.js.map +1 -1
  174. package/src/ts/agent/gateway-connection/schema.d.js.map +1 -1
  175. package/src/ts/agent/gateway-connection/schema.d.ts +1 -0
  176. package/src/ts/agent/gateway-connection/schema.json +5 -0
  177. package/src/ts/agent/generator.js +7 -4
  178. package/src/ts/agent/generator.js.map +1 -1
  179. package/src/ts/agent/mcp-connection/generator.js +7 -4
  180. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  181. package/src/ts/agent/mcp-connection/schema.d.js.map +1 -1
  182. package/src/ts/agent/mcp-connection/schema.d.ts +1 -0
  183. package/src/ts/agent/mcp-connection/schema.json +5 -0
  184. package/src/ts/agent/react-connection/generator.d.ts +1 -1
  185. package/src/ts/agent/react-connection/generator.js +14 -8
  186. package/src/ts/agent/react-connection/generator.js.map +1 -1
  187. package/src/ts/agent/react-connection/schema.d.js.map +1 -1
  188. package/src/ts/agent/react-connection/schema.d.ts +1 -0
  189. package/src/ts/agent/react-connection/schema.json +5 -0
  190. package/src/ts/agent/schema.d.js.map +1 -1
  191. package/src/ts/agent/schema.d.ts +1 -0
  192. package/src/ts/agent/schema.json +5 -0
  193. package/src/ts/api/generator.js +4 -2
  194. package/src/ts/api/generator.js.map +1 -1
  195. package/src/ts/api/schema.d.js.map +1 -1
  196. package/src/ts/api/schema.d.ts +1 -0
  197. package/src/ts/api/schema.json +5 -0
  198. package/src/ts/astro-docs/generator.js +7 -6
  199. package/src/ts/astro-docs/generator.js.map +1 -1
  200. package/src/ts/astro-docs/schema.d.js.map +1 -1
  201. package/src/ts/astro-docs/schema.d.ts +2 -2
  202. package/src/ts/astro-docs/schema.json +3 -3
  203. package/src/ts/docs/schema.d.js.map +1 -1
  204. package/src/ts/docs/schema.d.ts +1 -4
  205. package/src/ts/docs/schema.json +3 -3
  206. package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -1
  207. package/src/ts/dynamodb/agent-connection/schema.d.ts +1 -0
  208. package/src/ts/dynamodb/agent-connection/schema.json +5 -0
  209. package/src/ts/dynamodb/generator.js +9 -5
  210. package/src/ts/dynamodb/generator.js.map +1 -1
  211. package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -1
  212. package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +1 -0
  213. package/src/ts/dynamodb/mcp-server-connection/schema.json +5 -0
  214. package/src/ts/dynamodb/schema.d.js.map +1 -1
  215. package/src/ts/dynamodb/schema.d.ts +1 -0
  216. package/src/ts/dynamodb/schema.json +5 -0
  217. package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -1
  218. package/src/ts/dynamodb/smithy-connection/schema.d.ts +1 -0
  219. package/src/ts/dynamodb/smithy-connection/schema.json +5 -0
  220. package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -1
  221. package/src/ts/dynamodb/trpc-connection/schema.d.ts +1 -0
  222. package/src/ts/dynamodb/trpc-connection/schema.json +5 -0
  223. package/src/ts/lambda-function/generator.js +7 -4
  224. package/src/ts/lambda-function/generator.js.map +1 -1
  225. package/src/ts/lambda-function/schema.d.js.map +1 -1
  226. package/src/ts/lambda-function/schema.d.ts +1 -0
  227. package/src/ts/lambda-function/schema.json +5 -0
  228. package/src/ts/lib/generator.js +10 -6
  229. package/src/ts/lib/generator.js.map +1 -1
  230. package/src/ts/lib/schema.d.js.map +1 -1
  231. package/src/ts/lib/schema.d.ts +1 -1
  232. package/src/ts/lib/schema.json +5 -0
  233. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
  234. package/src/ts/mcp-server/generator.js +7 -4
  235. package/src/ts/mcp-server/generator.js.map +1 -1
  236. package/src/ts/mcp-server/schema.d.js.map +1 -1
  237. package/src/ts/mcp-server/schema.d.ts +1 -0
  238. package/src/ts/mcp-server/schema.json +5 -0
  239. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +18 -8
  240. package/src/ts/nx-generator/files/common/schema.d.ts.template +1 -0
  241. package/src/ts/nx-generator/files/common/schema.json.template +5 -0
  242. package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +3 -4
  243. package/src/ts/nx-generator/generator.js +7 -4
  244. package/src/ts/nx-generator/generator.js.map +1 -1
  245. package/src/ts/nx-generator/schema.d.js.map +1 -1
  246. package/src/ts/nx-generator/schema.d.ts +1 -0
  247. package/src/ts/nx-generator/schema.json +5 -0
  248. package/src/ts/nx-plugin/generator.js +13 -6
  249. package/src/ts/nx-plugin/generator.js.map +1 -1
  250. package/src/ts/nx-plugin/schema.json +5 -0
  251. package/src/ts/rdb/agent-connection/schema.d.js.map +1 -1
  252. package/src/ts/rdb/agent-connection/schema.d.ts +1 -0
  253. package/src/ts/rdb/agent-connection/schema.json +5 -0
  254. package/src/ts/rdb/generator.js +9 -5
  255. package/src/ts/rdb/generator.js.map +1 -1
  256. package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -1
  257. package/src/ts/rdb/mcp-server-connection/schema.d.ts +1 -0
  258. package/src/ts/rdb/mcp-server-connection/schema.json +5 -0
  259. package/src/ts/rdb/schema.d.js.map +1 -1
  260. package/src/ts/rdb/schema.d.ts +1 -0
  261. package/src/ts/rdb/schema.json +5 -0
  262. package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -1
  263. package/src/ts/rdb/smithy-connection/schema.d.ts +1 -0
  264. package/src/ts/rdb/smithy-connection/schema.json +5 -0
  265. package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -1
  266. package/src/ts/rdb/trpc-connection/schema.d.ts +1 -0
  267. package/src/ts/rdb/trpc-connection/schema.json +5 -0
  268. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +26 -26
  269. package/src/ts/react-website/app/generator.d.ts +1 -1
  270. package/src/ts/react-website/app/generator.js +18 -6
  271. package/src/ts/react-website/app/generator.js.map +1 -1
  272. package/src/ts/react-website/app/schema.d.js.map +1 -1
  273. package/src/ts/react-website/app/schema.d.ts +1 -1
  274. package/src/ts/react-website/app/schema.json +5 -0
  275. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +10 -7
  276. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +1 -1
  277. package/src/ts/react-website/cognito-auth/generator.d.ts +1 -1
  278. package/src/ts/react-website/cognito-auth/generator.js +9 -5
  279. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  280. package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -1
  281. package/src/ts/react-website/cognito-auth/schema.d.ts +1 -0
  282. package/src/ts/react-website/cognito-auth/schema.json +5 -0
  283. package/src/ts/react-website/runtime-config/schema.d.js.map +1 -1
  284. package/src/ts/react-website/runtime-config/schema.d.ts +1 -0
  285. package/src/ts/react-website/runtime-config/schema.json +5 -0
  286. package/src/ts/website/app/schema.d.js.map +1 -1
  287. package/src/ts/website/app/schema.d.ts +1 -1
  288. package/src/ts/website/app/schema.json +5 -0
  289. package/src/ts/website/auth/generator.d.ts +1 -1
  290. package/src/ts/website/auth/generator.js +2 -1
  291. package/src/ts/website/auth/generator.js.map +1 -1
  292. package/src/ts/website/auth/schema.d.js.map +1 -1
  293. package/src/ts/website/auth/schema.d.ts +1 -0
  294. package/src/ts/website/auth/schema.json +5 -0
  295. package/src/utils/files/common/scripts/src/infra/stage-credentials/cdk-command.ts.template +11 -3
  296. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +10 -7
  297. package/src/utils/install.d.ts +32 -0
  298. package/src/utils/install.js +56 -0
  299. package/src/utils/install.js.map +1 -0
  300. package/src/utils/versions.d.ts +64 -64
  301. package/src/utils/versions.js +63 -63
  302. package/src/utils/versions.js.map +1 -1
@@ -6,5 +6,5 @@ import { type Tree } from '@nx/devkit';
6
6
  import { type NxGeneratorInfo } from '../../../utils/nx';
7
7
  import type { TsReactWebsiteAuthGeneratorSchema } from './schema';
8
8
  export declare const COGNITO_AUTH_GENERATOR_INFO: NxGeneratorInfo;
9
- export declare function tsReactWebsiteAuthGenerator(tree: Tree, options: TsReactWebsiteAuthGeneratorSchema): Promise<() => void>;
9
+ export declare function tsReactWebsiteAuthGenerator(tree: Tree, options: TsReactWebsiteAuthGeneratorSchema): Promise<() => Promise<void>>;
10
10
  export default tsReactWebsiteAuthGenerator;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
- */ import { addDependenciesToPackageJson, generateFiles, installPackagesTask, joinPathFragments, OverwriteStrategy } from "@nx/devkit";
4
+ */ import { addDependenciesToPackageJson, generateFiles, joinPathFragments, OverwriteStrategy } from "@nx/devkit";
5
5
  import { readFileSync } from "fs";
6
6
  import { join } from "path";
7
7
  import { addDestructuredImport, addSingleImport, applyGritQL } from "../../../utils/ast.js";
@@ -9,6 +9,7 @@ import { addHookResultToRouterProviderContext } from "../../../utils/ast/website
9
9
  import { formatFilesInSubtree } from "../../../utils/format.js";
10
10
  import { resolveIac } from "../../../utils/iac.js";
11
11
  import { addIdentityInfra } from "../../../utils/identity-constructs/identity-constructs.js";
12
+ import { installDependencies } from "../../../utils/install.js";
12
13
  import { addGeneratorMetricsIfApplicable } from "../../../utils/metrics.js";
13
14
  import { getNpmScope } from "../../../utils/npm-scope.js";
14
15
  import { addComponentGeneratorMetadata, getGeneratorInfo, readProjectConfigurationUnqualified } from "../../../utils/nx.js";
@@ -24,7 +25,8 @@ export async function tsReactWebsiteAuthGenerator(tree, options) {
24
25
  const srcRoot = projectConfig.sourceRoot;
25
26
  const cognitoDomain = options.cognitoDomain && options.cognitoDomain.length > 0 ? options.cognitoDomain : deriveCognitoDomainPrefix(getNpmScope(tree), projectConfig.name);
26
27
  await runtimeConfigGenerator(tree, {
27
- project: options.project
28
+ project: options.project,
29
+ preferInstallDependencies: false
28
30
  });
29
31
  const iac = await resolveIac(tree, options.iac);
30
32
  await sharedConstructsGenerator(tree, {
@@ -83,9 +85,11 @@ export async function tsReactWebsiteAuthGenerator(tree, options) {
83
85
  COGNITO_AUTH_GENERATOR_INFO
84
86
  ]);
85
87
  await formatFilesInSubtree(tree);
86
- return ()=>{
87
- installPackagesTask(tree);
88
- };
88
+ return ()=>installDependencies(tree, options.preferInstallDependencies, {
89
+ languages: [
90
+ 'typescript'
91
+ ]
92
+ });
89
93
  }
90
94
  export default tsReactWebsiteAuthGenerator;
91
95
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n addDependenciesToPackageJson,\n generateFiles,\n installPackagesTask,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\nimport {\n addDestructuredImport,\n addSingleImport,\n applyGritQL,\n} from '../../../utils/ast';\nimport { addHookResultToRouterProviderContext } from '../../../utils/ast/website';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { resolveIac } from '../../../utils/iac';\nimport { addIdentityInfra } from '../../../utils/identity-constructs/identity-constructs';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport { getNpmScope } from '../../../utils/npm-scope';\nimport {\n addComponentGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { toProjectRelativePath } from '../../../utils/paths';\nimport { sharedConstructsGenerator } from '../../../utils/shared-constructs';\nimport { withVersions } from '../../../utils/versions';\nimport { runtimeConfigGenerator } from '../runtime-config/generator';\nimport type { TsReactWebsiteAuthGeneratorSchema } from './schema';\nimport {\n addCloudscapeAuthMenu,\n addNoneAuthMenu,\n addShadcnAuthMenu,\n deriveCognitoDomainPrefix,\n} from './utils';\n\nconst readGritPattern = (name: string): string =>\n readFileSync(\n join(import.meta.dirname, 'grit', `${name}.grit`),\n 'utf-8',\n ).trim();\n\nexport const COGNITO_AUTH_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function tsReactWebsiteAuthGenerator(\n tree: Tree,\n options: TsReactWebsiteAuthGeneratorSchema,\n) {\n const projectConfig = readProjectConfigurationUnqualified(\n tree,\n options.project,\n );\n const srcRoot = projectConfig.sourceRoot;\n\n const cognitoDomain =\n options.cognitoDomain && options.cognitoDomain.length > 0\n ? options.cognitoDomain\n : deriveCognitoDomainPrefix(getNpmScope(tree), projectConfig.name!);\n\n await runtimeConfigGenerator(tree, {\n project: options.project,\n });\n\n const iac = await resolveIac(tree, options.iac);\n\n await sharedConstructsGenerator(tree, {\n iac,\n });\n\n await addIdentityInfra(tree, {\n iac,\n allowSignup: options.allowSignup,\n cognitoDomain,\n });\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'app'),\n srcRoot,\n options,\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n addDependenciesToPackageJson(\n tree,\n withVersions(['oidc-client-ts', 'react-oidc-context']),\n {},\n );\n\n const mainTsxPath = joinPathFragments(srcRoot, 'main.tsx');\n\n await addSingleImport(\n tree,\n mainTsxPath,\n 'CognitoAuth',\n './components/CognitoAuth',\n );\n\n await addHookResultToRouterProviderContext(tree, mainTsxPath, {\n hook: 'useAuth',\n module: 'react-oidc-context',\n contextProp: 'auth',\n });\n\n const projectConfiguration = readProjectConfigurationUnqualified(\n tree,\n options.project,\n );\n\n const ux = (\n (projectConfiguration.metadata as any)?.ux ?? 'shadcn'\n ).toLowerCase();\n\n await applyGritQL(tree, mainTsxPath, readGritPattern('cognito-auth-wrapper'));\n // Update App Layout\n const appLayoutTsxPath = joinPathFragments(\n srcRoot,\n 'components',\n 'AppLayout',\n 'index.tsx',\n );\n if (tree.exists(appLayoutTsxPath)) {\n await addDestructuredImport(\n tree,\n appLayoutTsxPath,\n ['useAuth'],\n 'react-oidc-context',\n );\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('app-layout-use-auth'),\n );\n // TODO: update utils if they exist by appending to the array\n // Add a top-level navigation menu that shows the signed-in user's profile and actions\n switch (ux) {\n case 'cloudscape':\n await addCloudscapeAuthMenu(tree, appLayoutTsxPath);\n break;\n case 'shadcn':\n await addShadcnAuthMenu(tree, appLayoutTsxPath);\n break;\n case 'none':\n await addNoneAuthMenu(tree, appLayoutTsxPath);\n break;\n default:\n throw new Error(\n `Top-level navigation menu to show the signed-in user for ux \"${ux}\" is not implemented.`,\n );\n }\n } else {\n console.info(\n `Skipping update to ${appLayoutTsxPath} as it does not exist.`,\n );\n }\n // End update App Layout\n\n addComponentGeneratorMetadata(\n tree,\n options.project,\n COGNITO_AUTH_GENERATOR_INFO,\n toProjectRelativePath(\n projectConfig,\n joinPathFragments(srcRoot, 'components', 'CognitoAuth'),\n ),\n );\n\n await addGeneratorMetricsIfApplicable(tree, [COGNITO_AUTH_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () => {\n installPackagesTask(tree);\n };\n}\nexport default tsReactWebsiteAuthGenerator;\n"],"names":["addDependenciesToPackageJson","generateFiles","installPackagesTask","joinPathFragments","OverwriteStrategy","readFileSync","join","addDestructuredImport","addSingleImport","applyGritQL","addHookResultToRouterProviderContext","formatFilesInSubtree","resolveIac","addIdentityInfra","addGeneratorMetricsIfApplicable","getNpmScope","addComponentGeneratorMetadata","getGeneratorInfo","readProjectConfigurationUnqualified","toProjectRelativePath","sharedConstructsGenerator","withVersions","runtimeConfigGenerator","addCloudscapeAuthMenu","addNoneAuthMenu","addShadcnAuthMenu","deriveCognitoDomainPrefix","readGritPattern","name","dirname","trim","COGNITO_AUTH_GENERATOR_INFO","filename","tsReactWebsiteAuthGenerator","tree","options","projectConfig","project","srcRoot","sourceRoot","cognitoDomain","length","iac","allowSignup","overwriteStrategy","KeepExisting","mainTsxPath","hook","module","contextProp","projectConfiguration","ux","metadata","toLowerCase","appLayoutTsxPath","exists","Error","console","info"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n addDependenciesToPackageJson,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\nimport {\n addDestructuredImport,\n addSingleImport,\n applyGritQL,\n} from '../../../utils/ast';\nimport { addHookResultToRouterProviderContext } from '../../../utils/ast/website';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { resolveIac } from '../../../utils/iac';\nimport { addIdentityInfra } from '../../../utils/identity-constructs/identity-constructs';\nimport { installDependencies } from '../../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport { getNpmScope } from '../../../utils/npm-scope';\nimport {\n addComponentGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { toProjectRelativePath } from '../../../utils/paths';\nimport { sharedConstructsGenerator } from '../../../utils/shared-constructs';\nimport { withVersions } from '../../../utils/versions';\nimport { runtimeConfigGenerator } from '../runtime-config/generator';\nimport type { TsReactWebsiteAuthGeneratorSchema } from './schema';\nimport {\n addCloudscapeAuthMenu,\n addNoneAuthMenu,\n addShadcnAuthMenu,\n deriveCognitoDomainPrefix,\n} from './utils';\n\nconst readGritPattern = (name: string): string =>\n readFileSync(\n join(import.meta.dirname, 'grit', `${name}.grit`),\n 'utf-8',\n ).trim();\n\nexport const COGNITO_AUTH_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function tsReactWebsiteAuthGenerator(\n tree: Tree,\n options: TsReactWebsiteAuthGeneratorSchema,\n) {\n const projectConfig = readProjectConfigurationUnqualified(\n tree,\n options.project,\n );\n const srcRoot = projectConfig.sourceRoot;\n\n const cognitoDomain =\n options.cognitoDomain && options.cognitoDomain.length > 0\n ? options.cognitoDomain\n : deriveCognitoDomainPrefix(getNpmScope(tree), projectConfig.name!);\n\n await runtimeConfigGenerator(tree, {\n project: options.project,\n preferInstallDependencies: false,\n });\n\n const iac = await resolveIac(tree, options.iac);\n\n await sharedConstructsGenerator(tree, {\n iac,\n });\n\n await addIdentityInfra(tree, {\n iac,\n allowSignup: options.allowSignup,\n cognitoDomain,\n });\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'app'),\n srcRoot,\n options,\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n addDependenciesToPackageJson(\n tree,\n withVersions(['oidc-client-ts', 'react-oidc-context']),\n {},\n );\n\n const mainTsxPath = joinPathFragments(srcRoot, 'main.tsx');\n\n await addSingleImport(\n tree,\n mainTsxPath,\n 'CognitoAuth',\n './components/CognitoAuth',\n );\n\n await addHookResultToRouterProviderContext(tree, mainTsxPath, {\n hook: 'useAuth',\n module: 'react-oidc-context',\n contextProp: 'auth',\n });\n\n const projectConfiguration = readProjectConfigurationUnqualified(\n tree,\n options.project,\n );\n\n const ux = (\n (projectConfiguration.metadata as any)?.ux ?? 'shadcn'\n ).toLowerCase();\n\n await applyGritQL(tree, mainTsxPath, readGritPattern('cognito-auth-wrapper'));\n // Update App Layout\n const appLayoutTsxPath = joinPathFragments(\n srcRoot,\n 'components',\n 'AppLayout',\n 'index.tsx',\n );\n if (tree.exists(appLayoutTsxPath)) {\n await addDestructuredImport(\n tree,\n appLayoutTsxPath,\n ['useAuth'],\n 'react-oidc-context',\n );\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('app-layout-use-auth'),\n );\n // TODO: update utils if they exist by appending to the array\n // Add a top-level navigation menu that shows the signed-in user's profile and actions\n switch (ux) {\n case 'cloudscape':\n await addCloudscapeAuthMenu(tree, appLayoutTsxPath);\n break;\n case 'shadcn':\n await addShadcnAuthMenu(tree, appLayoutTsxPath);\n break;\n case 'none':\n await addNoneAuthMenu(tree, appLayoutTsxPath);\n break;\n default:\n throw new Error(\n `Top-level navigation menu to show the signed-in user for ux \"${ux}\" is not implemented.`,\n );\n }\n } else {\n console.info(\n `Skipping update to ${appLayoutTsxPath} as it does not exist.`,\n );\n }\n // End update App Layout\n\n addComponentGeneratorMetadata(\n tree,\n options.project,\n COGNITO_AUTH_GENERATOR_INFO,\n toProjectRelativePath(\n projectConfig,\n joinPathFragments(srcRoot, 'components', 'CognitoAuth'),\n ),\n );\n\n await addGeneratorMetricsIfApplicable(tree, [COGNITO_AUTH_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n}\nexport default tsReactWebsiteAuthGenerator;\n"],"names":["addDependenciesToPackageJson","generateFiles","joinPathFragments","OverwriteStrategy","readFileSync","join","addDestructuredImport","addSingleImport","applyGritQL","addHookResultToRouterProviderContext","formatFilesInSubtree","resolveIac","addIdentityInfra","installDependencies","addGeneratorMetricsIfApplicable","getNpmScope","addComponentGeneratorMetadata","getGeneratorInfo","readProjectConfigurationUnqualified","toProjectRelativePath","sharedConstructsGenerator","withVersions","runtimeConfigGenerator","addCloudscapeAuthMenu","addNoneAuthMenu","addShadcnAuthMenu","deriveCognitoDomainPrefix","readGritPattern","name","dirname","trim","COGNITO_AUTH_GENERATOR_INFO","filename","tsReactWebsiteAuthGenerator","tree","options","projectConfig","project","srcRoot","sourceRoot","cognitoDomain","length","preferInstallDependencies","iac","allowSignup","overwriteStrategy","KeepExisting","mainTsxPath","hook","module","contextProp","projectConfiguration","ux","metadata","toLowerCase","appLayoutTsxPath","exists","Error","console","info","languages"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IacOption } from '../../../utils/iac';\n\nexport interface TsReactWebsiteAuthGeneratorSchema {\n project: string;\n allowSignup: boolean;\n cognitoDomain?: string;\n iac: IacOption;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAID,WAKC"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IacOption } from '../../../utils/iac';\n\nexport interface TsReactWebsiteAuthGeneratorSchema {\n project: string;\n allowSignup: boolean;\n cognitoDomain?: string;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAID,WAMC"}
@@ -10,4 +10,5 @@ export interface TsReactWebsiteAuthGeneratorSchema {
10
10
  allowSignup: boolean;
11
11
  cognitoDomain?: string;
12
12
  iac: IacOption;
13
+ preferInstallDependencies?: boolean;
13
14
  }
@@ -44,6 +44,11 @@
44
44
  "x-priority": "important",
45
45
  "default": "inherit",
46
46
  "x-prompt": "Which provider would you like to manage your infrastructure? (default: inherit)"
47
+ },
48
+ "preferInstallDependencies": {
49
+ "type": "boolean",
50
+ "description": "Whether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.",
51
+ "default": true
47
52
  }
48
53
  },
49
54
  "required": ["project"]
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/runtime-config/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nexport interface RuntimeConfigGeneratorSchema {\n project: string;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GACD,WAEC"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/runtime-config/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nexport interface RuntimeConfigGeneratorSchema {\n project: string;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GACD,WAGC"}
@@ -4,4 +4,5 @@
4
4
  */
5
5
  export interface RuntimeConfigGeneratorSchema {
6
6
  project: string;
7
+ preferInstallDependencies?: boolean;
7
8
  }
@@ -13,6 +13,11 @@
13
13
  "x-priority": "important",
14
14
  "x-prompt": "the project to target",
15
15
  "x-dropdown": "projects"
16
+ },
17
+ "preferInstallDependencies": {
18
+ "type": "boolean",
19
+ "description": "Whether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.",
20
+ "default": true
16
21
  }
17
22
  },
18
23
  "required": ["project"]
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/app/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../../utils/iac';\nimport { UxOption } from '../../react-website/app/generator';\n\nexport type WebsiteFramework = 'react';\nexport type WebsiteInfraOption = 'cloudfront-s3' | 'none';\n\nexport interface TsWebsiteGeneratorSchema {\n name: string;\n framework?: WebsiteFramework;\n directory?: string;\n subDirectory?: string;\n skipInstall?: boolean;\n tanstackRouter?: boolean;\n tailwind?: boolean;\n ux?: UxOption;\n infra?: WebsiteInfraOption;\n iac: IacOption;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAOD,WAWC"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/app/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../../utils/iac';\nimport { UxOption } from '../../react-website/app/generator';\n\nexport type WebsiteFramework = 'react';\nexport type WebsiteInfraOption = 'cloudfront-s3' | 'none';\n\nexport interface TsWebsiteGeneratorSchema {\n name: string;\n framework?: WebsiteFramework;\n directory?: string;\n subDirectory?: string;\n tanstackRouter?: boolean;\n tailwind?: boolean;\n ux?: UxOption;\n infra?: WebsiteInfraOption;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAOD,WAWC"}
@@ -13,10 +13,10 @@ export interface TsWebsiteGeneratorSchema {
13
13
  framework?: WebsiteFramework;
14
14
  directory?: string;
15
15
  subDirectory?: string;
16
- skipInstall?: boolean;
17
16
  tanstackRouter?: boolean;
18
17
  tailwind?: boolean;
19
18
  ux?: UxOption;
20
19
  infra?: WebsiteInfraOption;
21
20
  iac: IacOption;
21
+ preferInstallDependencies?: boolean;
22
22
  }
@@ -98,6 +98,11 @@
98
98
  "x-priority": "important",
99
99
  "default": "inherit",
100
100
  "x-prompt": "Which provider would you like to manage your infrastructure? (default: inherit)"
101
+ },
102
+ "preferInstallDependencies": {
103
+ "type": "boolean",
104
+ "description": "Whether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.",
105
+ "default": true
101
106
  }
102
107
  },
103
108
  "required": ["name"],
@@ -6,5 +6,5 @@ import type { Tree } from '@nx/devkit';
6
6
  import { type NxGeneratorInfo } from '../../../utils/nx';
7
7
  import type { TsWebsiteAuthGeneratorSchema } from './schema';
8
8
  export declare const TS_WEBSITE_AUTH_GENERATOR_INFO: NxGeneratorInfo;
9
- export declare function tsWebsiteAuthGenerator(tree: Tree, schema: TsWebsiteAuthGeneratorSchema): Promise<() => void>;
9
+ export declare function tsWebsiteAuthGenerator(tree: Tree, schema: TsWebsiteAuthGeneratorSchema): Promise<() => Promise<void>>;
10
10
  export default tsWebsiteAuthGenerator;
@@ -9,7 +9,8 @@ export async function tsWebsiteAuthGenerator(tree, schema) {
9
9
  project: schema.project,
10
10
  allowSignup: schema.allowSignup,
11
11
  cognitoDomain: schema.cognitoDomain,
12
- iac: schema.iac
12
+ iac: schema.iac,
13
+ preferInstallDependencies: schema.preferInstallDependencies
13
14
  });
14
15
  }
15
16
  export default tsWebsiteAuthGenerator;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/auth/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Tree } from '@nx/devkit';\nimport { getGeneratorInfo, type NxGeneratorInfo } from '../../../utils/nx';\nimport { tsReactWebsiteAuthGenerator } from '../../react-website/cognito-auth/generator';\nimport type { TsWebsiteAuthGeneratorSchema } from './schema';\n\nexport const TS_WEBSITE_AUTH_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function tsWebsiteAuthGenerator(\n tree: Tree,\n schema: TsWebsiteAuthGeneratorSchema,\n) {\n return tsReactWebsiteAuthGenerator(tree, {\n project: schema.project,\n allowSignup: schema.allowSignup,\n cognitoDomain: schema.cognitoDomain,\n iac: schema.iac,\n });\n}\n\nexport default tsWebsiteAuthGenerator;\n"],"names":["getGeneratorInfo","tsReactWebsiteAuthGenerator","TS_WEBSITE_AUTH_GENERATOR_INFO","filename","tsWebsiteAuthGenerator","tree","schema","project","allowSignup","cognitoDomain","iac"],"mappings":"AAAA;;;CAGC,GAED,SAASA,gBAAgB,QAA8B,uBAAoB;AAC3E,SAASC,2BAA2B,QAAQ,gDAA6C;AAGzF,OAAO,MAAMC,iCAAkDF,iBAC7D,YAAYG,QAAQ,EACpB;AAEF,OAAO,eAAeC,uBACpBC,IAAU,EACVC,MAAoC;IAEpC,OAAOL,4BAA4BI,MAAM;QACvCE,SAASD,OAAOC,OAAO;QACvBC,aAAaF,OAAOE,WAAW;QAC/BC,eAAeH,OAAOG,aAAa;QACnCC,KAAKJ,OAAOI,GAAG;IACjB;AACF;AAEA,eAAeN,uBAAuB"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/auth/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Tree } from '@nx/devkit';\nimport { getGeneratorInfo, type NxGeneratorInfo } from '../../../utils/nx';\nimport { tsReactWebsiteAuthGenerator } from '../../react-website/cognito-auth/generator';\nimport type { TsWebsiteAuthGeneratorSchema } from './schema';\n\nexport const TS_WEBSITE_AUTH_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function tsWebsiteAuthGenerator(\n tree: Tree,\n schema: TsWebsiteAuthGeneratorSchema,\n) {\n return tsReactWebsiteAuthGenerator(tree, {\n project: schema.project,\n allowSignup: schema.allowSignup,\n cognitoDomain: schema.cognitoDomain,\n iac: schema.iac,\n preferInstallDependencies: schema.preferInstallDependencies,\n });\n}\n\nexport default tsWebsiteAuthGenerator;\n"],"names":["getGeneratorInfo","tsReactWebsiteAuthGenerator","TS_WEBSITE_AUTH_GENERATOR_INFO","filename","tsWebsiteAuthGenerator","tree","schema","project","allowSignup","cognitoDomain","iac","preferInstallDependencies"],"mappings":"AAAA;;;CAGC,GAED,SAASA,gBAAgB,QAA8B,uBAAoB;AAC3E,SAASC,2BAA2B,QAAQ,gDAA6C;AAGzF,OAAO,MAAMC,iCAAkDF,iBAC7D,YAAYG,QAAQ,EACpB;AAEF,OAAO,eAAeC,uBACpBC,IAAU,EACVC,MAAoC;IAEpC,OAAOL,4BAA4BI,MAAM;QACvCE,SAASD,OAAOC,OAAO;QACvBC,aAAaF,OAAOE,WAAW;QAC/BC,eAAeH,OAAOG,aAAa;QACnCC,KAAKJ,OAAOI,GAAG;QACfC,2BAA2BL,OAAOK,yBAAyB;IAC7D;AACF;AAEA,eAAeP,uBAAuB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/auth/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../../utils/iac';\n\nexport interface TsWebsiteAuthGeneratorSchema {\n project: string;\n allowSignup: boolean;\n cognitoDomain?: string;\n iac: IacOption;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD,WAKC"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/website/auth/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../../utils/iac';\n\nexport interface TsWebsiteAuthGeneratorSchema {\n project: string;\n allowSignup: boolean;\n cognitoDomain?: string;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD,WAMC"}
@@ -9,4 +9,5 @@ export interface TsWebsiteAuthGeneratorSchema {
9
9
  allowSignup: boolean;
10
10
  cognitoDomain?: string;
11
11
  iac: IacOption;
12
+ preferInstallDependencies?: boolean;
12
13
  }
@@ -40,6 +40,11 @@
40
40
  "x-priority": "important",
41
41
  "default": "inherit",
42
42
  "x-prompt": "Which provider would you like to manage your infrastructure? (default: inherit)"
43
+ },
44
+ "preferInstallDependencies": {
45
+ "type": "boolean",
46
+ "description": "Whether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.",
47
+ "default": true
43
48
  }
44
49
  },
45
50
  "required": ["project"]
@@ -4,6 +4,9 @@
4
4
  * Defaults to --require-approval=never (standard for local dev deploys).
5
5
  * If the user explicitly passes --require-approval with any value, we
6
6
  * respect their choice and don't add the default.
7
+ *
8
+ * Deploys default to --express (CloudFormation express mode) for faster
9
+ * local iteration. Pass --no-express to opt out.
7
10
  */
8
11
  export function buildCdkCommand(
9
12
  action: string,
@@ -12,7 +15,12 @@ export function buildCdkCommand(
12
15
  const hasRequireApproval = remainingArgs.some(
13
16
  (a) => a === '--require-approval' || a.startsWith('--require-approval='),
14
17
  );
15
- return hasRequireApproval
16
- ? ['cdk', action, ...remainingArgs]
17
- : ['cdk', action, '--require-approval=never', ...remainingArgs];
18
+ const hasExpressFlag = remainingArgs.some(
19
+ (a) => a === '--express' || a === '--no-express',
20
+ );
21
+ const defaults = [
22
+ ...(hasRequireApproval ? [] : ['--require-approval=never']),
23
+ ...(action === 'deploy' && !hasExpressFlag ? ['--express'] : []),
24
+ ];
25
+ return ['cdk', action, ...defaults, ...remainingArgs];
18
26
  }
@@ -13,13 +13,14 @@ import {
13
13
  import {
14
14
  AccountRecovery,
15
15
  CfnManagedLoginBranding,
16
- CfnUserPoolDomain,
17
16
  FeaturePlan,
17
+ ManagedLoginVersion,
18
18
  Mfa,
19
19
  OAuthScope,
20
20
  StandardThreatProtectionMode,
21
21
  UserPool,
22
22
  UserPoolClient,
23
+ UserPoolDomain,
23
24
  } from 'aws-cdk-lib/aws-cognito';
24
25
  import {
25
26
  CfnLoggingConfiguration,
@@ -53,7 +54,7 @@ export class UserIdentity extends Construct {
53
54
  public readonly identityPool: IdentityPool;
54
55
  public readonly userPool: UserPool;
55
56
  public readonly userPoolClient: UserPoolClient;
56
- public readonly userPoolDomain: CfnUserPoolDomain;
57
+ public readonly userPoolDomain: UserPoolDomain;
57
58
 
58
59
  /** The WAFv2 Web ACL associated with the user pool, if WAF is enabled */
59
60
  public readonly webAcl?: CfnWebACL;
@@ -229,10 +230,12 @@ export class UserIdentity extends Construct {
229
230
  };
230
231
 
231
232
  private createUserPoolDomain = (userPool: UserPool) =>
232
- new CfnUserPoolDomain(this, 'UserPoolDomain', {
233
- domain: `<%= cognitoDomain %>-${Stack.of(this).account}`,
234
- userPoolId: userPool.userPoolId,
235
- managedLoginVersion: 2,
233
+ new UserPoolDomain(this, 'UserPoolDomain', {
234
+ userPool,
235
+ cognitoDomain: {
236
+ domainPrefix: `<%= cognitoDomain %>-${Stack.of(this).account}`,
237
+ },
238
+ managedLoginVersion: ManagedLoginVersion.NEWER_MANAGED_LOGIN,
236
239
  });
237
240
 
238
241
  private createUserPoolClient = (userPool: UserPool) => {
@@ -282,7 +285,7 @@ export class UserIdentity extends Construct {
282
285
  private createManagedLoginBranding = (
283
286
  userPool: UserPool,
284
287
  userPoolClient: UserPoolClient,
285
- userPoolDomain: CfnUserPoolDomain
288
+ userPoolDomain: UserPoolDomain
286
289
  ) => {
287
290
  new CfnManagedLoginBranding(this, 'ManagedLoginBranding', {
288
291
  userPoolId: userPool.userPoolId,
@@ -0,0 +1,32 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ import type { ITsDepVersion } from './versions';
3
+ /**
4
+ * Languages whose dependencies a generator may install.
5
+ */
6
+ export type InstallLanguage = 'typescript' | 'python';
7
+ export interface InstallDependenciesOptions {
8
+ /** Languages to install dependencies for. */
9
+ languages: InstallLanguage[];
10
+ /**
11
+ * Packages that must resolve from the workspace after this generator, because
12
+ * a config file it writes (e.g. `vite.config.mts`) imports them and Nx loads
13
+ * that config when computing the project graph. When the caller prefers to
14
+ * defer installing, we honour that only if these already resolve.
15
+ *
16
+ * The per-language graph deps in `LANGUAGE_GRAPH_DEPS` are always included, so
17
+ * callers only list packages beyond those.
18
+ */
19
+ ensureResolvable?: ITsDepVersion[];
20
+ }
21
+ /**
22
+ * Installs dependencies for the given languages.
23
+ *
24
+ * Call from a generator's returned callback:
25
+ * `return () => installDependencies(tree, options.preferInstallDependencies, { ... })`.
26
+ *
27
+ * `preferInstallDependencies` is a preference: when `false` the install is
28
+ * deferred so a batch installs once at the end — unless an `ensureResolvable`
29
+ * package is missing, in which case it runs anyway so the next `nx` command can
30
+ * still compute the project graph.
31
+ */
32
+ export declare const installDependencies: (tree: Tree, preferInstallDependencies: boolean | undefined, options: InstallDependenciesOptions) => Promise<void>;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */ import { existsSync } from "node:fs";
5
+ import { join } from "node:path";
6
+ import { installPackagesTask } from "@nx/devkit";
7
+ import { Logger, UVProvider } from "./nxlv-python.js";
8
+ /**
9
+ * Packages each language always needs resolvable for Nx to compute the project
10
+ * graph, so a deferred install still runs whenever it would otherwise break.
11
+ */ const LANGUAGE_GRAPH_DEPS = {
12
+ typescript: [
13
+ 'vitest'
14
+ ],
15
+ python: [
16
+ '@nxlv/python'
17
+ ]
18
+ };
19
+ /**
20
+ * Returns true if every package is linked at `<root>/node_modules/<pkg>`.
21
+ *
22
+ * This is the condition Nx's inferred plugins need when they load a generated
23
+ * config (e.g. `vite.config.mts`) during graph computation: the config's
24
+ * imports resolve from inside the workspace's own `node_modules`. We avoid
25
+ * `require.resolve`, which can succeed via an ancestor `node_modules` even when
26
+ * the package isn't linked here. `existsSync` follows symlinks, so pnpm's store
27
+ * links resolve, and Nx always uses a `node_modules` linker (never PnP).
28
+ */ const allResolvable = (root, packages)=>packages.every((pkg)=>existsSync(join(root, 'node_modules', pkg)));
29
+ /**
30
+ * Installs dependencies for the given languages.
31
+ *
32
+ * Call from a generator's returned callback:
33
+ * `return () => installDependencies(tree, options.preferInstallDependencies, { ... })`.
34
+ *
35
+ * `preferInstallDependencies` is a preference: when `false` the install is
36
+ * deferred so a batch installs once at the end — unless an `ensureResolvable`
37
+ * package is missing, in which case it runs anyway so the next `nx` command can
38
+ * still compute the project graph.
39
+ */ export const installDependencies = async (tree, preferInstallDependencies, options)=>{
40
+ const { languages, ensureResolvable = [] } = options;
41
+ const mustResolve = [
42
+ ...ensureResolvable,
43
+ ...languages.flatMap((language)=>LANGUAGE_GRAPH_DEPS[language])
44
+ ];
45
+ if (preferInstallDependencies === false && allResolvable(tree.root, mustResolve)) {
46
+ return;
47
+ }
48
+ if (languages.includes('typescript')) {
49
+ installPackagesTask(tree);
50
+ }
51
+ if (languages.includes('python')) {
52
+ await new UVProvider(tree.root, new Logger(), tree).install();
53
+ }
54
+ };
55
+
56
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/install.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { existsSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { installPackagesTask, type Tree } from '@nx/devkit';\nimport { Logger, UVProvider } from './nxlv-python';\nimport type { ITsDepVersion } from './versions';\n\n/**\n * Languages whose dependencies a generator may install.\n */\nexport type InstallLanguage = 'typescript' | 'python';\n\nexport interface InstallDependenciesOptions {\n /** Languages to install dependencies for. */\n languages: InstallLanguage[];\n /**\n * Packages that must resolve from the workspace after this generator, because\n * a config file it writes (e.g. `vite.config.mts`) imports them and Nx loads\n * that config when computing the project graph. When the caller prefers to\n * defer installing, we honour that only if these already resolve.\n *\n * The per-language graph deps in `LANGUAGE_GRAPH_DEPS` are always included, so\n * callers only list packages beyond those.\n */\n ensureResolvable?: ITsDepVersion[];\n}\n\n/**\n * Packages each language always needs resolvable for Nx to compute the project\n * graph, so a deferred install still runs whenever it would otherwise break.\n */\nconst LANGUAGE_GRAPH_DEPS: Record<InstallLanguage, string[]> = {\n typescript: ['vitest'], // every TypeScript project has a `vitest.config.mts`\n python: ['@nxlv/python'], // every Python project registers this inference plugin\n};\n\n/**\n * Returns true if every package is linked at `<root>/node_modules/<pkg>`.\n *\n * This is the condition Nx's inferred plugins need when they load a generated\n * config (e.g. `vite.config.mts`) during graph computation: the config's\n * imports resolve from inside the workspace's own `node_modules`. We avoid\n * `require.resolve`, which can succeed via an ancestor `node_modules` even when\n * the package isn't linked here. `existsSync` follows symlinks, so pnpm's store\n * links resolve, and Nx always uses a `node_modules` linker (never PnP).\n */\nconst allResolvable = (root: string, packages: string[]): boolean =>\n packages.every((pkg) => existsSync(join(root, 'node_modules', pkg)));\n\n/**\n * Installs dependencies for the given languages.\n *\n * Call from a generator's returned callback:\n * `return () => installDependencies(tree, options.preferInstallDependencies, { ... })`.\n *\n * `preferInstallDependencies` is a preference: when `false` the install is\n * deferred so a batch installs once at the end — unless an `ensureResolvable`\n * package is missing, in which case it runs anyway so the next `nx` command can\n * still compute the project graph.\n */\nexport const installDependencies = async (\n tree: Tree,\n preferInstallDependencies: boolean | undefined,\n options: InstallDependenciesOptions,\n): Promise<void> => {\n const { languages, ensureResolvable = [] } = options;\n const mustResolve = [\n ...ensureResolvable,\n ...languages.flatMap((language) => LANGUAGE_GRAPH_DEPS[language]),\n ];\n if (\n preferInstallDependencies === false &&\n allResolvable(tree.root, mustResolve)\n ) {\n return;\n }\n if (languages.includes('typescript')) {\n installPackagesTask(tree);\n }\n if (languages.includes('python')) {\n await new UVProvider(tree.root, new Logger(), tree).install();\n }\n};\n"],"names":["existsSync","join","installPackagesTask","Logger","UVProvider","LANGUAGE_GRAPH_DEPS","typescript","python","allResolvable","root","packages","every","pkg","installDependencies","tree","preferInstallDependencies","options","languages","ensureResolvable","mustResolve","flatMap","language","includes","install"],"mappings":"AAAA;;;CAGC,GACD,SAASA,UAAU,QAAQ,UAAU;AACrC,SAASC,IAAI,QAAQ,YAAY;AACjC,SAASC,mBAAmB,QAAmB,aAAa;AAC5D,SAASC,MAAM,EAAEC,UAAU,QAAQ,mBAAgB;AAuBnD;;;CAGC,GACD,MAAMC,sBAAyD;IAC7DC,YAAY;QAAC;KAAS;IACtBC,QAAQ;QAAC;KAAe;AAC1B;AAEA;;;;;;;;;CASC,GACD,MAAMC,gBAAgB,CAACC,MAAcC,WACnCA,SAASC,KAAK,CAAC,CAACC,MAAQZ,WAAWC,KAAKQ,MAAM,gBAAgBG;AAEhE;;;;;;;;;;CAUC,GACD,OAAO,MAAMC,sBAAsB,OACjCC,MACAC,2BACAC;IAEA,MAAM,EAAEC,SAAS,EAAEC,mBAAmB,EAAE,EAAE,GAAGF;IAC7C,MAAMG,cAAc;WACfD;WACAD,UAAUG,OAAO,CAAC,CAACC,WAAahB,mBAAmB,CAACgB,SAAS;KACjE;IACD,IACEN,8BAA8B,SAC9BP,cAAcM,KAAKL,IAAI,EAAEU,cACzB;QACA;IACF;IACA,IAAIF,UAAUK,QAAQ,CAAC,eAAe;QACpCpB,oBAAoBY;IACtB;IACA,IAAIG,UAAUK,QAAQ,CAAC,WAAW;QAChC,MAAM,IAAIlB,WAAWU,KAAKL,IAAI,EAAE,IAAIN,UAAUW,MAAMS,OAAO;IAC7D;AACF,EAAE"}