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

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 (652) hide show
  1. package/LICENSE-THIRD-PARTY +2088 -971
  2. package/package.json +25 -10
  3. package/src/agentcore-gateway/attach-upstream.d.ts +7 -7
  4. package/src/agentcore-gateway/attach-upstream.js +19 -22
  5. package/src/agentcore-gateway/attach-upstream.js.map +1 -1
  6. package/src/agentcore-gateway/gateway-connection/generator.d.ts +3 -3
  7. package/src/agentcore-gateway/gateway-connection/generator.js +42 -45
  8. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -1
  9. package/src/agentcore-gateway/gateway-connection/schema.d.js +6 -0
  10. package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -0
  11. package/src/agentcore-gateway/generator.js +89 -72
  12. package/src/agentcore-gateway/generator.js.map +1 -1
  13. package/src/agentcore-gateway/mcp-connection/generator.d.ts +2 -2
  14. package/src/agentcore-gateway/mcp-connection/generator.js +24 -30
  15. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -1
  16. package/src/agentcore-gateway/mcp-connection/schema.d.js +6 -0
  17. package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -0
  18. package/src/agentcore-gateway/schema.d.js +6 -0
  19. package/src/agentcore-gateway/schema.d.js.map +1 -0
  20. package/src/bin/aws-nx-mcp.js +14 -0
  21. package/src/bin/aws-nx-mcp.js.map +1 -0
  22. package/src/connection/{agent-serve-local.d.ts → agent-local-dev.d.ts} +5 -5
  23. package/src/connection/agent-local-dev.js +42 -0
  24. package/src/connection/agent-local-dev.js.map +1 -0
  25. package/src/connection/agent-runtime-config.js +9 -14
  26. package/src/connection/agent-runtime-config.js.map +1 -1
  27. package/src/connection/generator.js +262 -207
  28. package/src/connection/generator.js.map +1 -1
  29. package/src/connection/{serve-local.d.ts → local-dev.d.ts} +3 -3
  30. package/src/connection/local-dev.js +37 -0
  31. package/src/connection/local-dev.js.map +1 -0
  32. package/src/connection/schema.d.js +6 -0
  33. package/src/connection/schema.d.js.map +1 -0
  34. package/src/index.js +2 -5
  35. package/src/index.js.map +1 -1
  36. package/src/infra/app/__snapshots__/generator.spec.ts.snap +4 -26
  37. package/src/infra/app/generator.js +133 -123
  38. package/src/infra/app/generator.js.map +1 -1
  39. package/src/infra/app/schema.d.js +6 -0
  40. package/src/infra/app/schema.d.js.map +1 -0
  41. package/src/license/config-types.js +5 -3
  42. package/src/license/config-types.js.map +1 -1
  43. package/src/license/config.d.ts +1 -1
  44. package/src/license/config.js +267 -242
  45. package/src/license/config.js.map +1 -1
  46. package/src/license/dependency-check/check.js +51 -46
  47. package/src/license/dependency-check/check.js.map +1 -1
  48. package/src/license/dependency-check/collectors/collector.js +41 -71
  49. package/src/license/dependency-check/collectors/collector.js.map +1 -1
  50. package/src/license/dependency-check/collectors/npm-collector.js +34 -41
  51. package/src/license/dependency-check/collectors/npm-collector.js.map +1 -1
  52. package/src/license/dependency-check/collectors/python-collector.js +55 -62
  53. package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
  54. package/src/license/dependency-check/evaluator.js +40 -68
  55. package/src/license/dependency-check/evaluator.js.map +1 -1
  56. package/src/license/dependency-check/executor.js +30 -22
  57. package/src/license/dependency-check/executor.js.map +1 -1
  58. package/src/license/dependency-check/pre-approved.js +949 -336
  59. package/src/license/dependency-check/pre-approved.js.map +1 -1
  60. package/src/license/dependency-check/types.js +2 -3
  61. package/src/license/dependency-check/types.js.map +1 -1
  62. package/src/license/generator.js +55 -60
  63. package/src/license/generator.js.map +1 -1
  64. package/src/license/index.js +3 -9
  65. package/src/license/index.js.map +1 -1
  66. package/src/license/known-exceptions.js +14 -13
  67. package/src/license/known-exceptions.js.map +1 -1
  68. package/src/license/schema.d.js +6 -0
  69. package/src/license/schema.d.js.map +1 -0
  70. package/src/license/sync/generator.js +94 -119
  71. package/src/license/sync/generator.js.map +1 -1
  72. package/src/license/sync/project-file-sync.js +28 -35
  73. package/src/license/sync/project-file-sync.js.map +1 -1
  74. package/src/mcp-server/generator-info.js +130 -160
  75. package/src/mcp-server/generator-info.js.map +1 -1
  76. package/src/mcp-server/guide-pipeline.js +184 -206
  77. package/src/mcp-server/guide-pipeline.js.map +1 -1
  78. package/src/mcp-server/guide-render.js +10 -25
  79. package/src/mcp-server/guide-render.js.map +1 -1
  80. package/src/mcp-server/index.js +6 -10
  81. package/src/mcp-server/index.js.map +1 -1
  82. package/src/mcp-server/mdx-ast.js +39 -57
  83. package/src/mcp-server/mdx-ast.js.map +1 -1
  84. package/src/mcp-server/option-filter.js +33 -47
  85. package/src/mcp-server/option-filter.js.map +1 -1
  86. package/src/mcp-server/schema-registry.js +27 -40
  87. package/src/mcp-server/schema-registry.js.map +1 -1
  88. package/src/mcp-server/schema.js +9 -7
  89. package/src/mcp-server/schema.js.map +1 -1
  90. package/src/mcp-server/server.js +20 -24
  91. package/src/mcp-server/server.js.map +1 -1
  92. package/src/mcp-server/tools/create-workspace-command.js +23 -24
  93. package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
  94. package/src/mcp-server/tools/general-guidance.js +28 -25
  95. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  96. package/src/mcp-server/tools/generator-guide.js +29 -37
  97. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  98. package/src/mcp-server/tools/list-generators.js +19 -25
  99. package/src/mcp-server/tools/list-generators.js.map +1 -1
  100. package/src/open-api/ts-client/generator.js +16 -26
  101. package/src/open-api/ts-client/generator.js.map +1 -1
  102. package/src/open-api/ts-client/schema.d.js +6 -0
  103. package/src/open-api/ts-client/schema.d.js.map +1 -0
  104. package/src/open-api/ts-hooks/generator.js +13 -21
  105. package/src/open-api/ts-hooks/generator.js.map +1 -1
  106. package/src/open-api/ts-hooks/schema.d.js +6 -0
  107. package/src/open-api/ts-hooks/schema.d.js.map +1 -0
  108. package/src/open-api/ts-metadata/generator.js +12 -20
  109. package/src/open-api/ts-metadata/generator.js.map +1 -1
  110. package/src/open-api/ts-metadata/schema.d.js +6 -0
  111. package/src/open-api/ts-metadata/schema.d.js.map +1 -0
  112. package/src/open-api/utils/codegen-data/languages.js +42 -60
  113. package/src/open-api/utils/codegen-data/languages.js.map +1 -1
  114. package/src/open-api/utils/codegen-data/types.js +31 -30
  115. package/src/open-api/utils/codegen-data/types.js.map +1 -1
  116. package/src/open-api/utils/codegen-data.js +253 -269
  117. package/src/open-api/utils/codegen-data.js.map +1 -1
  118. package/src/open-api/utils/normalise.js +242 -241
  119. package/src/open-api/utils/normalise.js.map +1 -1
  120. package/src/open-api/utils/parse.js +8 -14
  121. package/src/open-api/utils/parse.js.map +1 -1
  122. package/src/open-api/utils/refs.js +12 -22
  123. package/src/open-api/utils/refs.js.map +1 -1
  124. package/src/open-api/utils/types.js +5 -2
  125. package/src/open-api/utils/types.js.map +1 -1
  126. package/src/preset/__snapshots__/generator.spec.ts.snap +31 -6
  127. package/src/preset/generator.d.ts +1 -1
  128. package/src/preset/generator.js +130 -112
  129. package/src/preset/generator.js.map +1 -1
  130. package/src/preset/schema.d.js +6 -0
  131. package/src/preset/schema.d.js.map +1 -0
  132. package/src/preset/schema.d.ts +0 -1
  133. package/src/preset/schema.json +0 -5
  134. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +304 -0
  135. package/src/py/agent/__snapshots__/{generator.spec.ts.snap → generator.frameworks.spec.ts.snap} +6 -843
  136. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +535 -0
  137. package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +1 -2
  138. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +1 -1
  139. package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +1 -1
  140. package/src/py/agent/a2a-connection/generator.js +70 -74
  141. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  142. package/src/py/agent/a2a-connection/schema.d.js +8 -0
  143. package/src/py/agent/a2a-connection/schema.d.js.map +1 -0
  144. package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +6 -8
  145. package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +3 -3
  146. package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +3 -3
  147. package/src/py/agent/gateway-connection/generator.js +61 -57
  148. package/src/py/agent/gateway-connection/generator.js.map +1 -1
  149. package/src/py/agent/gateway-connection/schema.d.js +6 -0
  150. package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
  151. package/src/py/agent/generator.js +227 -193
  152. package/src/py/agent/generator.js.map +1 -1
  153. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +5 -12
  154. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +1 -1
  155. package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +1 -1
  156. package/src/py/agent/mcp-connection/generator.js +53 -51
  157. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  158. package/src/py/agent/mcp-connection/schema.d.js +8 -0
  159. package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
  160. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +3 -2
  161. package/src/py/agent/react-connection/generator.js +51 -58
  162. package/src/py/agent/react-connection/generator.js.map +1 -1
  163. package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +4 -4
  164. package/src/py/agent/react-connection/local-dev.js +36 -0
  165. package/src/py/agent/react-connection/local-dev.js.map +1 -0
  166. package/src/py/agent/react-connection/schema.d.js +8 -0
  167. package/src/py/agent/react-connection/schema.d.js.map +1 -0
  168. package/src/py/agent/schema.d.js +6 -0
  169. package/src/py/agent/schema.d.js.map +1 -0
  170. package/src/py/api/generator.js +12 -12
  171. package/src/py/api/generator.js.map +1 -1
  172. package/src/py/api/schema.d.js +6 -0
  173. package/src/py/api/schema.d.js.map +1 -0
  174. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +68 -28
  175. package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
  176. package/src/py/dynamodb/agent-connection/generator.js +27 -29
  177. package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
  178. package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
  179. package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
  180. package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +3 -3
  181. package/src/py/dynamodb/fast-api-connection/generator.js +26 -28
  182. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
  183. package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
  184. package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
  185. package/src/py/dynamodb/files/__name__/client.py.template +5 -5
  186. package/src/py/dynamodb/files/__name__/entities/base.py.template +2 -2
  187. package/src/py/dynamodb/files/config.json.template +1 -1
  188. package/src/py/dynamodb/generator.js +63 -62
  189. package/src/py/dynamodb/generator.js.map +1 -1
  190. package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
  191. package/src/py/dynamodb/mcp-server-connection/generator.js +27 -29
  192. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
  193. package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
  194. package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  195. package/src/py/dynamodb/schema.d.js +6 -0
  196. package/src/py/dynamodb/schema.d.js.map +1 -0
  197. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +45 -4632
  198. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +4833 -0
  199. package/src/py/fast-api/generator.js +79 -85
  200. package/src/py/fast-api/generator.js.map +1 -1
  201. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +3 -2
  202. package/src/py/fast-api/react/generator.js +22 -24
  203. package/src/py/fast-api/react/generator.js.map +1 -1
  204. package/src/py/fast-api/react/open-api.js +28 -29
  205. package/src/py/fast-api/react/open-api.js.map +1 -1
  206. package/src/py/fast-api/react/schema.d.js +6 -0
  207. package/src/py/fast-api/react/schema.d.js.map +1 -0
  208. package/src/py/fast-api/schema.d.js +6 -0
  209. package/src/py/fast-api/schema.d.js.map +1 -0
  210. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  211. package/src/py/lambda-function/generator.js +57 -58
  212. package/src/py/lambda-function/generator.js.map +1 -1
  213. package/src/py/lambda-function/schema.d.js +6 -0
  214. package/src/py/lambda-function/schema.d.js.map +1 -0
  215. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +4 -4
  216. package/src/py/mcp-server/generator.js +149 -131
  217. package/src/py/mcp-server/generator.js.map +1 -1
  218. package/src/py/mcp-server/schema.d.js +6 -0
  219. package/src/py/mcp-server/schema.d.js.map +1 -0
  220. package/src/py/project/generator.js +128 -89
  221. package/src/py/project/generator.js.map +1 -1
  222. package/src/py/project/schema.d.js +6 -0
  223. package/src/py/project/schema.d.js.map +1 -0
  224. package/src/sdk/agentcore-gateway.d.ts +6 -0
  225. package/src/sdk/agentcore-gateway.js +7 -0
  226. package/src/sdk/agentcore-gateway.js.map +1 -0
  227. package/src/sdk/connection.d.ts +6 -0
  228. package/src/sdk/connection.js +6 -0
  229. package/src/sdk/connection.js.map +1 -0
  230. package/{sdk → src/sdk}/license.d.ts +4 -4
  231. package/src/sdk/license.js +7 -0
  232. package/src/sdk/license.js.map +1 -0
  233. package/src/sdk/open-api.d.ts +10 -0
  234. package/src/sdk/open-api.js +8 -0
  235. package/src/sdk/open-api.js.map +1 -0
  236. package/src/sdk/py.d.ts +14 -0
  237. package/src/sdk/py.js +10 -0
  238. package/src/sdk/py.js.map +1 -0
  239. package/src/sdk/terraform.d.ts +6 -0
  240. package/src/sdk/terraform.js +7 -0
  241. package/src/sdk/terraform.js.map +1 -0
  242. package/src/sdk/ts.d.ts +33 -0
  243. package/src/sdk/ts.js +35 -0
  244. package/src/sdk/ts.js.map +1 -0
  245. package/{sdk → src/sdk}/utils/ast.d.ts +2 -2
  246. package/src/sdk/utils/ast.js +7 -0
  247. package/src/sdk/utils/ast.js.map +1 -0
  248. package/{sdk → src/sdk}/utils/format.d.ts +1 -1
  249. package/src/sdk/utils/format.js +6 -0
  250. package/src/sdk/utils/format.js.map +1 -0
  251. package/{sdk → src/sdk}/utils/test.d.ts +1 -1
  252. package/src/sdk/utils/test.js +6 -0
  253. package/src/sdk/utils/test.js.map +1 -0
  254. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +2 -8
  255. package/src/smithy/project/files/build.Dockerfile.template +1 -4
  256. package/src/smithy/project/generator.js +44 -42
  257. package/src/smithy/project/generator.js.map +1 -1
  258. package/src/smithy/project/schema.d.js +6 -0
  259. package/src/smithy/project/schema.d.js.map +1 -0
  260. package/src/smithy/react-connection/generator.js +35 -46
  261. package/src/smithy/react-connection/generator.js.map +1 -1
  262. package/src/smithy/react-connection/schema.d.js +6 -0
  263. package/src/smithy/react-connection/schema.d.js.map +1 -0
  264. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +395 -72
  265. package/src/smithy/ts/api/generator.js +121 -111
  266. package/src/smithy/ts/api/generator.js.map +1 -1
  267. package/src/smithy/ts/api/schema.d.js +6 -0
  268. package/src/smithy/ts/api/schema.d.js.map +1 -0
  269. package/src/terraform/project/files/application/src/providers.tf.template +1 -1
  270. package/src/terraform/project/generator.js +141 -103
  271. package/src/terraform/project/generator.js.map +1 -1
  272. package/src/terraform/project/schema.d.js +9 -0
  273. package/src/terraform/project/schema.d.js.map +1 -0
  274. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +336 -92
  275. package/src/trpc/backend/generator.js +93 -86
  276. package/src/trpc/backend/generator.js.map +1 -1
  277. package/src/trpc/backend/schema.d.js +6 -0
  278. package/src/trpc/backend/schema.d.js.map +1 -0
  279. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +1 -1
  280. package/src/trpc/react/generator.js +59 -58
  281. package/src/trpc/react/generator.js.map +1 -1
  282. package/src/trpc/react/schema.d.js +6 -0
  283. package/src/trpc/react/schema.d.js.map +1 -0
  284. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +10 -10
  285. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +1 -1
  286. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +1 -1
  287. package/src/ts/agent/a2a-connection/generator.js +58 -54
  288. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  289. package/src/ts/agent/a2a-connection/schema.d.js +8 -0
  290. package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
  291. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +5 -5
  292. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +3 -3
  293. package/src/ts/agent/gateway-connection/generator.js +57 -52
  294. package/src/ts/agent/gateway-connection/generator.js.map +1 -1
  295. package/src/ts/agent/gateway-connection/schema.d.js +6 -0
  296. package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
  297. package/src/ts/agent/generator.js +165 -136
  298. package/src/ts/agent/generator.js.map +1 -1
  299. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +1 -1
  300. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +1 -1
  301. package/src/ts/agent/mcp-connection/generator.js +48 -46
  302. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  303. package/src/ts/agent/mcp-connection/schema.d.js +8 -0
  304. package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
  305. package/src/ts/agent/react-connection/generator.js +79 -79
  306. package/src/ts/agent/react-connection/generator.js.map +1 -1
  307. package/src/ts/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +2 -2
  308. package/src/ts/agent/react-connection/local-dev.js +17 -0
  309. package/src/ts/agent/react-connection/local-dev.js.map +1 -0
  310. package/src/ts/agent/react-connection/schema.d.js +8 -0
  311. package/src/ts/agent/react-connection/schema.d.js.map +1 -0
  312. package/src/ts/agent/schema.d.js +6 -0
  313. package/src/ts/agent/schema.d.js.map +1 -0
  314. package/src/ts/api/generator.js +16 -18
  315. package/src/ts/api/generator.js.map +1 -1
  316. package/src/ts/api/schema.d.js +6 -0
  317. package/src/ts/api/schema.d.js.map +1 -0
  318. package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +8 -8
  319. package/src/ts/astro-docs/generator.js +59 -48
  320. package/src/ts/astro-docs/generator.js.map +1 -1
  321. package/src/ts/astro-docs/schema.d.js +6 -0
  322. package/src/ts/astro-docs/schema.d.js.map +1 -0
  323. package/src/ts/docs/generator.js +10 -10
  324. package/src/ts/docs/generator.js.map +1 -1
  325. package/src/ts/docs/schema.d.js +6 -0
  326. package/src/ts/docs/schema.d.js.map +1 -0
  327. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +68 -30
  328. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
  329. package/src/ts/dynamodb/agent-connection/generator.js +21 -23
  330. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
  331. package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
  332. package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
  333. package/src/ts/dynamodb/files/config.json.template +1 -1
  334. package/src/ts/dynamodb/files/src/client.ts.template +7 -7
  335. package/src/ts/dynamodb/generator.js +64 -63
  336. package/src/ts/dynamodb/generator.js.map +1 -1
  337. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
  338. package/src/ts/dynamodb/mcp-server-connection/generator.js +21 -23
  339. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
  340. package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
  341. package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  342. package/src/ts/dynamodb/schema.d.js +6 -0
  343. package/src/ts/dynamodb/schema.d.js.map +1 -0
  344. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
  345. package/src/ts/dynamodb/smithy-connection/generator.js +20 -22
  346. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
  347. package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
  348. package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
  349. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
  350. package/src/ts/dynamodb/trpc-connection/generator.js +20 -22
  351. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
  352. package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
  353. package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
  354. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  355. package/src/ts/lambda-function/generator.js +55 -55
  356. package/src/ts/lambda-function/generator.js.map +1 -1
  357. package/src/ts/lambda-function/io.js +83 -52
  358. package/src/ts/lambda-function/io.js.map +1 -1
  359. package/src/ts/lambda-function/schema.d.js +6 -0
  360. package/src/ts/lambda-function/schema.d.js.map +1 -0
  361. package/src/ts/lib/__snapshots__/generator.spec.ts.snap +23 -36
  362. package/src/ts/lib/biome.js +37 -37
  363. package/src/ts/lib/biome.js.map +1 -1
  364. package/src/ts/lib/generator.js +75 -77
  365. package/src/ts/lib/generator.js.map +1 -1
  366. package/src/ts/lib/schema.d.js +6 -0
  367. package/src/ts/lib/schema.d.js.map +1 -0
  368. package/src/ts/lib/ts-project-utils.js +65 -70
  369. package/src/ts/lib/ts-project-utils.js.map +1 -1
  370. package/src/ts/lib/types.js +5 -2
  371. package/src/ts/lib/types.js.map +1 -1
  372. package/src/ts/lib/vitest.js +29 -26
  373. package/src/ts/lib/vitest.js.map +1 -1
  374. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +4 -4
  375. package/src/ts/mcp-server/generator.js +157 -138
  376. package/src/ts/mcp-server/generator.js.map +1 -1
  377. package/src/ts/mcp-server/schema.d.js +6 -0
  378. package/src/ts/mcp-server/schema.d.js.map +1 -0
  379. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +14 -9
  380. package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
  381. package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +4 -4
  382. package/src/ts/nx-generator/generator.js +84 -83
  383. package/src/ts/nx-generator/generator.js.map +1 -1
  384. package/src/ts/nx-generator/schema.d.js +6 -0
  385. package/src/ts/nx-generator/schema.d.js.map +1 -0
  386. package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +30 -18
  387. package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
  388. package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
  389. package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
  390. package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
  391. package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
  392. package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +3 -3
  393. package/src/ts/nx-plugin/generator.js +49 -48
  394. package/src/ts/nx-plugin/generator.js.map +1 -1
  395. package/src/ts/nx-plugin/schema.d.js +9 -0
  396. package/src/ts/nx-plugin/schema.d.js.map +1 -0
  397. package/src/ts/nx-plugin/utils.js +32 -44
  398. package/src/ts/nx-plugin/utils.js.map +1 -1
  399. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +30 -30
  400. package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +6 -6
  401. package/src/ts/rdb/agent-connection/generator.js +38 -39
  402. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  403. package/src/ts/rdb/agent-connection/schema.d.js +8 -0
  404. package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
  405. package/src/ts/rdb/files/config.json.template +1 -1
  406. package/src/ts/rdb/files/prisma.config.ts.template +2 -2
  407. package/src/ts/rdb/files/src/prisma.ts.template +7 -7
  408. package/src/ts/rdb/files/src/utils.ts.template +1 -0
  409. package/src/ts/rdb/generator.js +130 -117
  410. package/src/ts/rdb/generator.js.map +1 -1
  411. package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +6 -6
  412. package/src/ts/rdb/mcp-server-connection/generator.js +36 -37
  413. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  414. package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
  415. package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
  416. package/src/ts/rdb/schema.d.js +6 -0
  417. package/src/ts/rdb/schema.d.js.map +1 -0
  418. package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
  419. package/src/ts/rdb/smithy-connection/generator.js +46 -43
  420. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  421. package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
  422. package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
  423. package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
  424. package/src/ts/rdb/trpc-connection/generator.js +36 -31
  425. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  426. package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
  427. package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
  428. package/src/ts/rdb/utils.js +9 -11
  429. package/src/ts/rdb/utils.js.map +1 -1
  430. package/src/ts/react-website/agui/generator.js +69 -61
  431. package/src/ts/react-website/agui/generator.js.map +1 -1
  432. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +154 -260
  433. package/src/ts/react-website/app/generator.js +197 -188
  434. package/src/ts/react-website/app/generator.js.map +1 -1
  435. package/src/ts/react-website/app/schema.d.js +6 -0
  436. package/src/ts/react-website/app/schema.d.js.map +1 -0
  437. package/src/ts/react-website/app/schema.json +6 -6
  438. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +118 -4
  439. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +10 -3
  440. package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
  441. package/src/ts/react-website/cognito-auth/generator.js +60 -60
  442. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  443. package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
  444. package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
  445. package/src/ts/react-website/cognito-auth/utils.js +34 -32
  446. package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
  447. package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
  448. package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
  449. package/src/ts/react-website/runtime-config/generator.js +29 -31
  450. package/src/ts/react-website/runtime-config/generator.js.map +1 -1
  451. package/src/ts/react-website/runtime-config/schema.d.js +6 -0
  452. package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
  453. package/src/ts/sync/generator.js +60 -59
  454. package/src/ts/sync/generator.js.map +1 -1
  455. package/src/ts/website/app/generator.js +10 -10
  456. package/src/ts/website/app/generator.js.map +1 -1
  457. package/src/ts/website/app/schema.d.js +6 -0
  458. package/src/ts/website/app/schema.d.js.map +1 -0
  459. package/src/ts/website/app/schema.json +6 -6
  460. package/src/ts/website/auth/generator.js +11 -11
  461. package/src/ts/website/auth/generator.js.map +1 -1
  462. package/src/ts/website/auth/schema.d.js +6 -0
  463. package/src/ts/website/auth/schema.d.js.map +1 -0
  464. package/src/utils/agent-chat/agent-chat.d.ts +1 -1
  465. package/src/utils/agent-chat/agent-chat.js +11 -12
  466. package/src/utils/agent-chat/agent-chat.js.map +1 -1
  467. package/src/utils/agent-chat/files/a2a/chat.ts.template +1 -1
  468. package/src/utils/agent-chat/files/ag-ui/chat.ts.template +1 -1
  469. package/src/utils/agent-chat/files/http-py/chat.ts.template +1 -1
  470. package/src/utils/agent-chat/files/http-ts/chat.ts.template +1 -1
  471. package/src/utils/agent-connection/agent-connection.js +129 -146
  472. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  473. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +1 -1
  474. package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +1 -1
  475. package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +1 -1
  476. package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +1 -1
  477. package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +1 -1
  478. package/src/utils/agent-core-constructs/agent-core-constructs.js +53 -50
  479. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  480. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
  481. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +4 -4
  482. package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +2 -2
  483. package/src/utils/api-constructs/api-constructs.js +30 -31
  484. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  485. package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +14 -6
  486. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +58 -0
  487. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
  488. package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +28 -14
  489. package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +1 -8
  490. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +91 -4
  491. package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
  492. package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
  493. package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +5 -11
  494. package/src/utils/api-constructs/open-api-metadata.js +22 -22
  495. package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
  496. package/src/utils/ast/website.js +17 -19
  497. package/src/utils/ast/website.js.map +1 -1
  498. package/src/utils/ast.js +72 -97
  499. package/src/utils/ast.js.map +1 -1
  500. package/src/utils/bundle/bundle.js +50 -47
  501. package/src/utils/bundle/bundle.js.map +1 -1
  502. package/src/utils/commands.js +47 -26
  503. package/src/utils/commands.js.map +1 -1
  504. package/src/utils/config/index.d.ts +2 -2
  505. package/src/utils/config/index.js +5 -4
  506. package/src/utils/config/index.js.map +1 -1
  507. package/src/utils/config/utils.js +48 -58
  508. package/src/utils/config/utils.js.map +1 -1
  509. package/src/utils/connection/open-api/react.d.ts +5 -5
  510. package/src/utils/connection/open-api/react.js +81 -77
  511. package/src/utils/connection/open-api/react.js.map +1 -1
  512. package/src/utils/containers.js +22 -23
  513. package/src/utils/containers.js.map +1 -1
  514. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +32 -33
  515. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
  516. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +12 -2
  517. package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +1 -1
  518. package/src/utils/files/common/scripts/src/dynamodb/create-local-table.ts.template +2 -2
  519. package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +1 -1
  520. package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +17 -2
  521. package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
  522. package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
  523. package/src/utils/files/common/scripts/src/rdb/{pull-image.ts.template → shared/pull-image.ts.template} +1 -1
  524. package/src/utils/files/common/scripts/src/rdb/{start-container.ts.template → shared/start-container.ts.template} +16 -1
  525. package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +2 -2
  526. package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +1 -1
  527. package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +3 -3
  528. package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
  529. package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +2 -2
  530. package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
  531. package/src/utils/format.js +153 -99
  532. package/src/utils/format.js.map +1 -1
  533. package/src/utils/fs.js +14 -13
  534. package/src/utils/fs.js.map +1 -1
  535. package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +2 -2
  536. package/src/utils/function-constructs/function-constructs.js +21 -26
  537. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  538. package/src/utils/generators.js +18 -20
  539. package/src/utils/generators.js.map +1 -1
  540. package/src/utils/git.js +19 -34
  541. package/src/utils/git.js.map +1 -1
  542. package/src/utils/iac-providers.js +5 -5
  543. package/src/utils/iac-providers.js.map +1 -1
  544. package/src/utils/iac.js +12 -14
  545. package/src/utils/iac.js.map +1 -1
  546. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +112 -2
  547. package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +2 -2
  548. package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +104 -2
  549. package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +7 -0
  550. package/src/utils/identity-constructs/identity-constructs.js +24 -28
  551. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  552. package/src/utils/js.js +27 -20
  553. package/src/utils/js.js.map +1 -1
  554. package/src/utils/mcp.js +34 -41
  555. package/src/utils/mcp.js.map +1 -1
  556. package/src/utils/metrics.js +30 -45
  557. package/src/utils/metrics.js.map +1 -1
  558. package/src/utils/mock-project-graph.js +8 -12
  559. package/src/utils/mock-project-graph.js.map +1 -1
  560. package/src/utils/names.js +25 -51
  561. package/src/utils/names.js.map +1 -1
  562. package/src/utils/npm-scope.js +9 -17
  563. package/src/utils/npm-scope.js.map +1 -1
  564. package/src/utils/nx.d.ts +18 -2
  565. package/src/utils/nx.js +111 -74
  566. package/src/utils/nx.js.map +1 -1
  567. package/src/utils/nxlv-python.js +27 -15
  568. package/src/utils/nxlv-python.js.map +1 -1
  569. package/src/utils/object.js +5 -11
  570. package/src/utils/object.js.map +1 -1
  571. package/src/utils/paths.js +11 -15
  572. package/src/utils/paths.js.map +1 -1
  573. package/src/utils/pkg-manager.js +4 -9
  574. package/src/utils/pkg-manager.js.map +1 -1
  575. package/src/utils/pnpm-workspace.js +22 -22
  576. package/src/utils/pnpm-workspace.js.map +1 -1
  577. package/src/utils/port.js +26 -36
  578. package/src/utils/port.js.map +1 -1
  579. package/src/utils/py.js +43 -52
  580. package/src/utils/py.js.map +1 -1
  581. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
  582. package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +3 -3
  583. package/src/utils/rdb-constructs/rdb-constructs.js +31 -33
  584. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  585. package/src/utils/shared-constructs-constants.js +16 -16
  586. package/src/utils/shared-constructs-constants.js.map +1 -1
  587. package/src/utils/shared-constructs.js +57 -54
  588. package/src/utils/shared-constructs.js.map +1 -1
  589. package/src/utils/shared-dynamodb-scripts.js +16 -14
  590. package/src/utils/shared-dynamodb-scripts.js.map +1 -1
  591. package/src/utils/shared-infra-config.js +30 -31
  592. package/src/utils/shared-infra-config.js.map +1 -1
  593. package/src/utils/shared-infra-scripts.js +30 -25
  594. package/src/utils/shared-infra-scripts.js.map +1 -1
  595. package/src/utils/shared-rdb-scripts.d.ts +8 -3
  596. package/src/utils/shared-rdb-scripts.js +21 -13
  597. package/src/utils/shared-rdb-scripts.js.map +1 -1
  598. package/src/utils/shared-scripts.js +12 -17
  599. package/src/utils/shared-scripts.js.map +1 -1
  600. package/src/utils/shared-shadcn.js +64 -60
  601. package/src/utils/shared-shadcn.js.map +1 -1
  602. package/src/utils/test.d.ts +8 -0
  603. package/src/utils/test.js +33 -25
  604. package/src/utils/test.js.map +1 -1
  605. package/src/utils/toml.js +7 -15
  606. package/src/utils/toml.js.map +1 -1
  607. package/src/utils/versions.d.ts +31 -4
  608. package/src/utils/versions.js +40 -23
  609. package/src/utils/versions.js.map +1 -1
  610. package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +1 -1
  611. package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +4 -4
  612. package/src/utils/website-constructs/website-constructs.js +31 -30
  613. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  614. package/bin/aws-nx-mcp.js +0 -17
  615. package/bin/aws-nx-mcp.js.map +0 -1
  616. package/sdk/agentcore-gateway.d.ts +0 -6
  617. package/sdk/agentcore-gateway.js +0 -11
  618. package/sdk/agentcore-gateway.js.map +0 -1
  619. package/sdk/connection.d.ts +0 -6
  620. package/sdk/connection.js +0 -10
  621. package/sdk/connection.js.map +0 -1
  622. package/sdk/license.js +0 -14
  623. package/sdk/license.js.map +0 -1
  624. package/sdk/open-api.d.ts +0 -10
  625. package/sdk/open-api.js +0 -15
  626. package/sdk/open-api.js.map +0 -1
  627. package/sdk/py.d.ts +0 -14
  628. package/sdk/py.js +0 -18
  629. package/sdk/py.js.map +0 -1
  630. package/sdk/terraform.d.ts +0 -6
  631. package/sdk/terraform.js +0 -11
  632. package/sdk/terraform.js.map +0 -1
  633. package/sdk/ts.d.ts +0 -33
  634. package/sdk/ts.js +0 -53
  635. package/sdk/ts.js.map +0 -1
  636. package/sdk/utils/ast.js +0 -12
  637. package/sdk/utils/ast.js.map +0 -1
  638. package/sdk/utils/format.js +0 -10
  639. package/sdk/utils/format.js.map +0 -1
  640. package/sdk/utils/test.js +0 -10
  641. package/sdk/utils/test.js.map +0 -1
  642. package/src/connection/agent-serve-local.js +0 -48
  643. package/src/connection/agent-serve-local.js.map +0 -1
  644. package/src/connection/serve-local.js +0 -41
  645. package/src/connection/serve-local.js.map +0 -1
  646. package/src/py/agent/react-connection/serve-local.js +0 -38
  647. package/src/py/agent/react-connection/serve-local.js.map +0 -1
  648. package/src/ts/agent/react-connection/serve-local.js +0 -19
  649. package/src/ts/agent/react-connection/serve-local.js.map +0 -1
  650. package/src/utils/files/common/scripts/src/rdb/wait-for-db.ts.template +0 -59
  651. /package/src/agentcore-gateway/files/project/{serve-local.ts.template → local-dev.ts.template} +0 -0
  652. /package/{bin → src/bin}/aws-nx-mcp.d.ts +0 -0
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */ export { };
5
+
6
+ //# sourceMappingURL=schema.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/app/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../../utils/iac';\nimport { UxOption } from './generator';\n\nexport type WebsiteInfraOption = 'cloudfront-s3' | 'none';\n\nexport interface TsReactWebsiteGeneratorSchema {\n name: string;\n directory?: string;\n subDirectory?: string;\n skipInstall?: boolean;\n tanstackRouter?: boolean;\n tailwind?: boolean;\n ux?: UxOption;\n infra?: WebsiteInfraOption;\n iac: IacOption;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAMD,WAUC"}
@@ -40,7 +40,7 @@
40
40
  "description": "The preferred UX provider.",
41
41
  "enum": ["none", "cloudscape", "shadcn"],
42
42
  "x-priority": "important",
43
- "default": "cloudscape",
43
+ "default": "shadcn",
44
44
  "x-prompt": {
45
45
  "message": "Which UX provider should we scaffold for this app?",
46
46
  "type": "list",
@@ -49,16 +49,16 @@
49
49
  "value": "none",
50
50
  "label": "None (plain React/Vite without a UI kit)"
51
51
  },
52
- {
53
- "value": "cloudscape",
54
- "label": "Cloudscape (AWS-first components with ready-made layouts)"
55
- },
56
52
  {
57
53
  "value": "shadcn",
58
54
  "label": "Shadcn (shared UI library under packages/common/shadcn)"
55
+ },
56
+ {
57
+ "value": "cloudscape",
58
+ "label": "Cloudscape (AWS-first components with ready-made layouts)"
59
59
  }
60
60
  ],
61
- "default": "cloudscape"
61
+ "default": "shadcn"
62
62
  }
63
63
  },
64
64
  "tailwind": {
@@ -17,8 +17,8 @@ const CognitoAuth: React.FC<PropsWithChildren> = ({ children }) => {
17
17
  const { cognitoProps } = useRuntimeConfig();
18
18
 
19
19
  if (!cognitoProps) {
20
- if (import.meta.env.MODE === 'serve-local') {
21
- // In serve-local mode with no cognitoProps available, we skip login
20
+ if (import.meta.env.MODE === 'local-dev') {
21
+ // In local-dev mode with no cognitoProps available, we skip login
22
22
  return <AuthProvider>{children}</AuthProvider>;
23
23
  }
24
24
  return (
@@ -90,7 +90,14 @@ exports[`cognito-auth generator > should generate files > user-identity 1`] = `
90
90
  IdentityPool,
91
91
  UserPoolAuthenticationProvider,
92
92
  } from 'aws-cdk-lib/aws-cognito-identitypool';
93
- import { CfnOutput, CfnResource, Duration, Lazy, Stack } from 'aws-cdk-lib';
93
+ import {
94
+ CfnOutput,
95
+ CfnResource,
96
+ Duration,
97
+ Lazy,
98
+ RemovalPolicy,
99
+ Stack,
100
+ } from 'aws-cdk-lib';
94
101
  import {
95
102
  AccountRecovery,
96
103
  CfnManagedLoginBranding,
@@ -98,15 +105,34 @@ import {
98
105
  FeaturePlan,
99
106
  Mfa,
100
107
  OAuthScope,
108
+ StandardThreatProtectionMode,
101
109
  UserPool,
102
110
  UserPoolClient,
103
111
  } from 'aws-cdk-lib/aws-cognito';
112
+ import {
113
+ CfnLoggingConfiguration,
114
+ CfnWebACL,
115
+ CfnWebACLAssociation,
116
+ } from 'aws-cdk-lib/aws-wafv2';
117
+ import { LogGroup, RetentionDays } from 'aws-cdk-lib/aws-logs';
104
118
  import { Construct } from 'constructs';
105
119
  import { RuntimeConfig } from './runtime-config.js';
106
120
  import { Distribution } from 'aws-cdk-lib/aws-cloudfront';
107
121
  import { suppressRules } from './checkov.js';
108
122
 
109
123
  const WEB_CLIENT_ID = 'WebClient';
124
+
125
+ export interface UserIdentityProps {
126
+ /**
127
+ * Whether to enable AWS WAFv2 with the default managed ruleset
128
+ * (AWSManagedRulesCommonRuleSet and AWSManagedRulesKnownBadInputsRuleSet)
129
+ * and associate it with the user pool.
130
+ *
131
+ * @default true
132
+ */
133
+ readonly enableWaf?: boolean;
134
+ }
135
+
110
136
  /**
111
137
  * Creates a UserPool and Identity Pool with sane defaults configured intended for usage from a web client.
112
138
  */
@@ -117,11 +143,22 @@ export class UserIdentity extends Construct {
117
143
  public readonly userPoolClient: UserPoolClient;
118
144
  public readonly userPoolDomain: CfnUserPoolDomain;
119
145
 
120
- constructor(scope: Construct, id: string) {
146
+ /** The WAFv2 Web ACL associated with the user pool, if WAF is enabled */
147
+ public readonly webAcl?: CfnWebACL;
148
+
149
+ constructor(
150
+ scope: Construct,
151
+ id: string,
152
+ { enableWaf = true }: UserIdentityProps = {},
153
+ ) {
121
154
  super(scope, id);
122
155
 
123
156
  this.region = Stack.of(this).region;
124
157
  this.userPool = this.createUserPool();
158
+
159
+ if (enableWaf) {
160
+ this.webAcl = this.createWebAcl(id, this.userPool);
161
+ }
125
162
  this.userPoolDomain = this.createUserPoolDomain(this.userPool);
126
163
  this.userPoolClient = this.createUserPoolClient(this.userPool);
127
164
  this.identityPool = this.createIdentityPool(
@@ -174,6 +211,8 @@ export class UserIdentity extends Construct {
174
211
  },
175
212
  mfa: Mfa.REQUIRED,
176
213
  featurePlan: FeaturePlan.PLUS,
214
+ // Audit-only logs threat assessments without blocking sign-in. Switch to FULL_FUNCTION to enforce automatic responses.
215
+ standardThreatProtectionMode: StandardThreatProtectionMode.AUDIT_ONLY,
177
216
  mfaSecondFactor: { sms: true, otp: true },
178
217
  signInCaseSensitive: false,
179
218
  signInAliases: { username: true, email: true },
@@ -206,6 +245,81 @@ export class UserIdentity extends Construct {
206
245
  return userPool;
207
246
  };
208
247
 
248
+ private createWebAcl = (id: string, userPool: UserPool) => {
249
+ const webAcl = new CfnWebACL(this, 'WebAcl', {
250
+ defaultAction: { allow: {} },
251
+ scope: 'REGIONAL',
252
+ visibilityConfig: {
253
+ cloudWatchMetricsEnabled: true,
254
+ metricName: \`\${id}WebAcl\`,
255
+ sampledRequestsEnabled: true,
256
+ },
257
+ rules: [
258
+ {
259
+ name: 'CRSRule',
260
+ priority: 0,
261
+ statement: {
262
+ managedRuleGroupStatement: {
263
+ name: 'AWSManagedRulesCommonRuleSet',
264
+ vendorName: 'AWS',
265
+ },
266
+ },
267
+ visibilityConfig: {
268
+ cloudWatchMetricsEnabled: true,
269
+ metricName: \`\${id}WebAcl-CRS\`,
270
+ sampledRequestsEnabled: true,
271
+ },
272
+ overrideAction: {
273
+ none: {},
274
+ },
275
+ },
276
+ {
277
+ name: 'KnownBadInputsRule',
278
+ priority: 1,
279
+ statement: {
280
+ managedRuleGroupStatement: {
281
+ name: 'AWSManagedRulesKnownBadInputsRuleSet',
282
+ vendorName: 'AWS',
283
+ },
284
+ },
285
+ visibilityConfig: {
286
+ cloudWatchMetricsEnabled: true,
287
+ metricName: \`\${id}WebAcl-KnownBadInputs\`,
288
+ sampledRequestsEnabled: true,
289
+ },
290
+ overrideAction: {
291
+ none: {},
292
+ },
293
+ },
294
+ ],
295
+ });
296
+
297
+ new CfnWebACLAssociation(this, 'WebAclAssociation', {
298
+ resourceArn: userPool.userPoolArn,
299
+ webAclArn: webAcl.attrArn,
300
+ });
301
+
302
+ // Send WAF request logs to CloudWatch. The log group name must start with
303
+ // \`aws-waf-logs-\` to satisfy the WAFv2 logging destination requirement.
304
+ const wafLogGroup = new LogGroup(this, 'WebAclLogs', {
305
+ logGroupName: \`aws-waf-logs-\${id}-\${this.node.addr.slice(-8)}\`,
306
+ retention: RetentionDays.ONE_MONTH,
307
+ removalPolicy: RemovalPolicy.DESTROY,
308
+ });
309
+ suppressRules(
310
+ wafLogGroup,
311
+ ['CKV_AWS_158'],
312
+ 'Using default CloudWatch log encryption for WAF logs',
313
+ );
314
+
315
+ new CfnLoggingConfiguration(this, 'WebAclLoggingConfig', {
316
+ resourceArn: webAcl.attrArn,
317
+ logDestinationConfigs: [wafLogGroup.logGroupArn],
318
+ });
319
+
320
+ return webAcl;
321
+ };
322
+
209
323
  private createUserPoolDomain = (userPool: UserPool) =>
210
324
  new CfnUserPoolDomain(this, 'UserPoolDomain', {
211
325
  domain: \`test-\${Stack.of(this).account}\`,
@@ -6,7 +6,7 @@ exports[`cognito-auth generator terraform iac > should generate terraform files
6
6
  required_providers {
7
7
  aws = {
8
8
  source = "hashicorp/aws"
9
- version = "~> 6.0"
9
+ version = "6.52.0"
10
10
  }
11
11
  }
12
12
  }
@@ -63,7 +63,7 @@ resource "null_resource" "add_callback_url" {
63
63
 
64
64
  provisioner "local-exec" {
65
65
  command = <<-EOT
66
- uv run --with boto3 python -c "
66
+ uv run --with boto3==1.43.29 python -c "
67
67
  import boto3
68
68
  import os
69
69
  import sys
@@ -147,11 +147,18 @@ except Exception as e:
147
147
  }
148
148
 
149
149
  ",
150
- "user-identity.tf": "module "identity" {
150
+ "user-identity.tf": "variable "enable_waf" {
151
+ description = "Whether to enable AWS WAFv2 with the default managed ruleset and associate it with the user pool"
152
+ type = bool
153
+ default = true
154
+ }
155
+
156
+ module "identity" {
151
157
  source = "./identity"
152
158
 
153
159
  user_pool_domain_prefix = "test"
154
160
  allow_signup = true
161
+ enable_waf = var.enable_waf
155
162
  }
156
163
 
157
164
  # Outputs
@@ -14,8 +14,8 @@ const CognitoAuth: React.FC<PropsWithChildren> = ({ children }) => {
14
14
  const { cognitoProps } = useRuntimeConfig();
15
15
 
16
16
  if (!cognitoProps) {
17
- if (import.meta.env.MODE === 'serve-local') {
18
- // In serve-local mode with no cognitoProps available, we skip login
17
+ if (import.meta.env.MODE === 'local-dev') {
18
+ // In local-dev mode with no cognitoProps available, we skip login
19
19
  return <AuthProvider>{children}</AuthProvider>;
20
20
  }
21
21
  return (
@@ -1,92 +1,92 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.COGNITO_AUTH_GENERATOR_INFO = void 0;
4
- exports.tsReactWebsiteAuthGenerator = tsReactWebsiteAuthGenerator;
5
1
  /**
6
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
7
3
  * SPDX-License-Identifier: Apache-2.0
8
- */
9
- const devkit_1 = require("@nx/devkit");
10
- const fs_1 = require("fs");
11
- const path_1 = require("path");
12
- const ast_1 = require("../../../utils/ast");
13
- const website_1 = require("../../../utils/ast/website");
14
- const format_1 = require("../../../utils/format");
15
- const iac_1 = require("../../../utils/iac");
16
- const identity_constructs_1 = require("../../../utils/identity-constructs/identity-constructs");
17
- const metrics_1 = require("../../../utils/metrics");
18
- const npm_scope_1 = require("../../../utils/npm-scope");
19
- const nx_1 = require("../../../utils/nx");
20
- const paths_1 = require("../../../utils/paths");
21
- const shared_constructs_1 = require("../../../utils/shared-constructs");
22
- const versions_1 = require("../../../utils/versions");
23
- const generator_1 = require("../runtime-config/generator");
24
- const utils_1 = require("./utils");
25
- const readGritPattern = (name) => (0, fs_1.readFileSync)((0, path_1.join)(__dirname, 'grit', `${name}.grit`), 'utf-8').trim();
26
- exports.COGNITO_AUTH_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
27
- async function tsReactWebsiteAuthGenerator(tree, options) {
28
- const projectConfig = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.project);
4
+ */ import { addDependenciesToPackageJson, generateFiles, installPackagesTask, joinPathFragments, OverwriteStrategy } from "@nx/devkit";
5
+ import { readFileSync } from "fs";
6
+ import { join } from "path";
7
+ import { addDestructuredImport, addSingleImport, applyGritQL } from "../../../utils/ast.js";
8
+ import { addHookResultToRouterProviderContext } from "../../../utils/ast/website.js";
9
+ import { formatFilesInSubtree } from "../../../utils/format.js";
10
+ import { resolveIac } from "../../../utils/iac.js";
11
+ import { addIdentityInfra } from "../../../utils/identity-constructs/identity-constructs.js";
12
+ import { addGeneratorMetricsIfApplicable } from "../../../utils/metrics.js";
13
+ import { getNpmScope } from "../../../utils/npm-scope.js";
14
+ import { addComponentGeneratorMetadata, getGeneratorInfo, readProjectConfigurationUnqualified } from "../../../utils/nx.js";
15
+ import { toProjectRelativePath } from "../../../utils/paths.js";
16
+ import { sharedConstructsGenerator } from "../../../utils/shared-constructs.js";
17
+ import { withVersions } from "../../../utils/versions.js";
18
+ import { runtimeConfigGenerator } from "../runtime-config/generator.js";
19
+ import { addCloudscapeAuthMenu, addNoneAuthMenu, addShadcnAuthMenu, deriveCognitoDomainPrefix } from "./utils.js";
20
+ const readGritPattern = (name)=>readFileSync(join(import.meta.dirname, 'grit', `${name}.grit`), 'utf-8').trim();
21
+ export const COGNITO_AUTH_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
22
+ export async function tsReactWebsiteAuthGenerator(tree, options) {
23
+ const projectConfig = readProjectConfigurationUnqualified(tree, options.project);
29
24
  const srcRoot = projectConfig.sourceRoot;
30
- const cognitoDomain = options.cognitoDomain && options.cognitoDomain.length > 0
31
- ? options.cognitoDomain
32
- : (0, utils_1.deriveCognitoDomainPrefix)((0, npm_scope_1.getNpmScope)(tree), projectConfig.name);
33
- await (0, generator_1.runtimeConfigGenerator)(tree, {
34
- project: options.project,
25
+ const cognitoDomain = options.cognitoDomain && options.cognitoDomain.length > 0 ? options.cognitoDomain : deriveCognitoDomainPrefix(getNpmScope(tree), projectConfig.name);
26
+ await runtimeConfigGenerator(tree, {
27
+ project: options.project
35
28
  });
36
- const iac = await (0, iac_1.resolveIac)(tree, options.iac);
37
- await (0, shared_constructs_1.sharedConstructsGenerator)(tree, {
38
- iac,
29
+ const iac = await resolveIac(tree, options.iac);
30
+ await sharedConstructsGenerator(tree, {
31
+ iac
39
32
  });
40
- await (0, identity_constructs_1.addIdentityInfra)(tree, {
33
+ await addIdentityInfra(tree, {
41
34
  iac,
42
35
  allowSignup: options.allowSignup,
43
- cognitoDomain,
36
+ cognitoDomain
44
37
  });
45
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'app'), srcRoot, options, {
46
- overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting,
38
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'app'), srcRoot, options, {
39
+ overwriteStrategy: OverwriteStrategy.KeepExisting
47
40
  });
48
- (0, devkit_1.addDependenciesToPackageJson)(tree, (0, versions_1.withVersions)(['oidc-client-ts', 'react-oidc-context']), {});
49
- const mainTsxPath = (0, devkit_1.joinPathFragments)(srcRoot, 'main.tsx');
50
- await (0, ast_1.addSingleImport)(tree, mainTsxPath, 'CognitoAuth', './components/CognitoAuth');
51
- await (0, website_1.addHookResultToRouterProviderContext)(tree, mainTsxPath, {
41
+ addDependenciesToPackageJson(tree, withVersions([
42
+ 'oidc-client-ts',
43
+ 'react-oidc-context'
44
+ ]), {});
45
+ const mainTsxPath = joinPathFragments(srcRoot, 'main.tsx');
46
+ await addSingleImport(tree, mainTsxPath, 'CognitoAuth', './components/CognitoAuth');
47
+ await addHookResultToRouterProviderContext(tree, mainTsxPath, {
52
48
  hook: 'useAuth',
53
49
  module: 'react-oidc-context',
54
- contextProp: 'auth',
50
+ contextProp: 'auth'
55
51
  });
56
- const projectConfiguration = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.project);
57
- const ux = (projectConfiguration.metadata?.ux ?? 'cloudscape').toLowerCase();
58
- await (0, ast_1.applyGritQL)(tree, mainTsxPath, readGritPattern('cognito-auth-wrapper'));
52
+ const projectConfiguration = readProjectConfigurationUnqualified(tree, options.project);
53
+ const ux = (projectConfiguration.metadata?.ux ?? 'shadcn').toLowerCase();
54
+ await applyGritQL(tree, mainTsxPath, readGritPattern('cognito-auth-wrapper'));
59
55
  // Update App Layout
60
- const appLayoutTsxPath = (0, devkit_1.joinPathFragments)(srcRoot, 'components', 'AppLayout', 'index.tsx');
56
+ const appLayoutTsxPath = joinPathFragments(srcRoot, 'components', 'AppLayout', 'index.tsx');
61
57
  if (tree.exists(appLayoutTsxPath)) {
62
- await (0, ast_1.addDestructuredImport)(tree, appLayoutTsxPath, ['useAuth'], 'react-oidc-context');
63
- await (0, ast_1.applyGritQL)(tree, appLayoutTsxPath, readGritPattern('app-layout-use-auth'));
58
+ await addDestructuredImport(tree, appLayoutTsxPath, [
59
+ 'useAuth'
60
+ ], 'react-oidc-context');
61
+ await applyGritQL(tree, appLayoutTsxPath, readGritPattern('app-layout-use-auth'));
64
62
  // TODO: update utils if they exist by appending to the array
65
63
  // Add a top-level navigation menu that shows the signed-in user's profile and actions
66
- switch (ux) {
64
+ switch(ux){
67
65
  case 'cloudscape':
68
- await (0, utils_1.addCloudscapeAuthMenu)(tree, appLayoutTsxPath);
66
+ await addCloudscapeAuthMenu(tree, appLayoutTsxPath);
69
67
  break;
70
68
  case 'shadcn':
71
- await (0, utils_1.addShadcnAuthMenu)(tree, appLayoutTsxPath);
69
+ await addShadcnAuthMenu(tree, appLayoutTsxPath);
72
70
  break;
73
71
  case 'none':
74
- await (0, utils_1.addNoneAuthMenu)(tree, appLayoutTsxPath);
72
+ await addNoneAuthMenu(tree, appLayoutTsxPath);
75
73
  break;
76
74
  default:
77
75
  throw new Error(`Top-level navigation menu to show the signed-in user for ux "${ux}" is not implemented.`);
78
76
  }
79
- }
80
- else {
77
+ } else {
81
78
  console.info(`Skipping update to ${appLayoutTsxPath} as it does not exist.`);
82
79
  }
83
80
  // End update App Layout
84
- (0, nx_1.addComponentGeneratorMetadata)(tree, options.project, exports.COGNITO_AUTH_GENERATOR_INFO, (0, paths_1.toProjectRelativePath)(projectConfig, (0, devkit_1.joinPathFragments)(srcRoot, 'components', 'CognitoAuth')));
85
- await (0, metrics_1.addGeneratorMetricsIfApplicable)(tree, [exports.COGNITO_AUTH_GENERATOR_INFO]);
86
- await (0, format_1.formatFilesInSubtree)(tree);
87
- return () => {
88
- (0, devkit_1.installPackagesTask)(tree);
81
+ addComponentGeneratorMetadata(tree, options.project, COGNITO_AUTH_GENERATOR_INFO, toProjectRelativePath(projectConfig, joinPathFragments(srcRoot, 'components', 'CognitoAuth')));
82
+ await addGeneratorMetricsIfApplicable(tree, [
83
+ COGNITO_AUTH_GENERATOR_INFO
84
+ ]);
85
+ await formatFilesInSubtree(tree);
86
+ return ()=>{
87
+ installPackagesTask(tree);
89
88
  };
90
89
  }
91
- exports.default = tsReactWebsiteAuthGenerator;
90
+ export default tsReactWebsiteAuthGenerator;
91
+
92
92
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ts"],"names":[],"mappings":";;;AAiDA,kEAmIC;AApLD;;;GAGG;AACH,uCAOoB;AACpB,2BAAkC;AAClC,+BAA4B;AAC5B,4CAI4B;AAC5B,wDAAkF;AAClF,kDAA6D;AAC7D,4CAAgD;AAChD,gGAA0F;AAC1F,oDAAyE;AACzE,wDAAuD;AACvD,0CAK2B;AAC3B,gDAA6D;AAC7D,wEAA6E;AAC7E,sDAAuD;AACvD,2DAAqE;AAErE,mCAKiB;AAEjB,MAAM,eAAe,GAAG,CAAC,IAAY,EAAU,EAAE,CAC/C,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AAE3D,QAAA,2BAA2B,GACtC,IAAA,qBAAgB,EAAC,UAAU,CAAC,CAAC;AAExB,KAAK,UAAU,2BAA2B,CAC/C,IAAU,EACV,OAA0C;IAE1C,MAAM,aAAa,GAAG,IAAA,wCAAmC,EACvD,IAAI,EACJ,OAAO,CAAC,OAAO,CAChB,CAAC;IACF,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC;IAEzC,MAAM,aAAa,GACjB,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QACvD,CAAC,CAAC,OAAO,CAAC,aAAa;QACvB,CAAC,CAAC,IAAA,iCAAyB,EAAC,IAAA,uBAAW,EAAC,IAAI,CAAC,EAAE,aAAa,CAAC,IAAK,CAAC,CAAC;IAExE,MAAM,IAAA,kCAAsB,EAAC,IAAI,EAAE;QACjC,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,IAAA,gBAAU,EAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhD,MAAM,IAAA,6CAAyB,EAAC,IAAI,EAAE;QACpC,GAAG;KACJ,CAAC,CAAC;IAEH,MAAM,IAAA,sCAAgB,EAAC,IAAI,EAAE;QAC3B,GAAG;QACH,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,aAAa;KACd,CAAC,CAAC;IAEH,IAAA,sBAAa,EACX,IAAI,EACJ,IAAA,0BAAiB,EAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAC5C,OAAO,EACP,OAAO,EACP;QACE,iBAAiB,EAAE,0BAAiB,CAAC,YAAY;KAClD,CACF,CAAC;IAEF,IAAA,qCAA4B,EAC1B,IAAI,EACJ,IAAA,uBAAY,EAAC,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC,EACtD,EAAE,CACH,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,0BAAiB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE3D,MAAM,IAAA,qBAAe,EACnB,IAAI,EACJ,WAAW,EACX,aAAa,EACb,0BAA0B,CAC3B,CAAC;IAEF,MAAM,IAAA,8CAAoC,EAAC,IAAI,EAAE,WAAW,EAAE;QAC5D,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,oBAAoB;QAC5B,WAAW,EAAE,MAAM;KACpB,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,IAAA,wCAAmC,EAC9D,IAAI,EACJ,OAAO,CAAC,OAAO,CAChB,CAAC;IAEF,MAAM,EAAE,GAAG,CACR,oBAAoB,CAAC,QAAgB,EAAE,EAAE,IAAI,YAAY,CAC3D,CAAC,WAAW,EAAE,CAAC;IAEhB,MAAM,IAAA,iBAAW,EAAC,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC9E,oBAAoB;IACpB,MAAM,gBAAgB,GAAG,IAAA,0BAAiB,EACxC,OAAO,EACP,YAAY,EACZ,WAAW,EACX,WAAW,CACZ,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,MAAM,IAAA,2BAAqB,EACzB,IAAI,EACJ,gBAAgB,EAChB,CAAC,SAAS,CAAC,EACX,oBAAoB,CACrB,CAAC;QACF,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,gBAAgB,EAChB,eAAe,CAAC,qBAAqB,CAAC,CACvC,CAAC;QACF,6DAA6D;QAC7D,sFAAsF;QACtF,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,YAAY;gBACf,MAAM,IAAA,6BAAqB,EAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,IAAA,yBAAiB,EAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAA,uBAAe,EAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;gBAC9C,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CACb,gEAAgE,EAAE,uBAAuB,CAC1F,CAAC;QACN,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CACV,sBAAsB,gBAAgB,wBAAwB,CAC/D,CAAC;IACJ,CAAC;IACD,wBAAwB;IAExB,IAAA,kCAA6B,EAC3B,IAAI,EACJ,OAAO,CAAC,OAAO,EACf,mCAA2B,EAC3B,IAAA,6BAAqB,EACnB,aAAa,EACb,IAAA,0BAAiB,EAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CACxD,CACF,CAAC;IAEF,MAAM,IAAA,yCAA+B,EAAC,IAAI,EAAE,CAAC,mCAA2B,CAAC,CAAC,CAAC;IAE3E,MAAM,IAAA,6BAAoB,EAAC,IAAI,CAAC,CAAC;IACjC,OAAO,GAAG,EAAE;QACV,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC;AACD,kBAAe,2BAA2B,CAAC"}
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":"AAAA;;;CAGC,GACD,SACEA,4BAA4B,EAC5BC,aAAa,EACbC,mBAAmB,EACnBC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AACpB,SAASC,YAAY,QAAQ,KAAK;AAClC,SAASC,IAAI,QAAQ,OAAO;AAC5B,SACEC,qBAAqB,EACrBC,eAAe,EACfC,WAAW,QACN,wBAAqB;AAC5B,SAASC,oCAAoC,QAAQ,gCAA6B;AAClF,SAASC,oBAAoB,QAAQ,2BAAwB;AAC7D,SAASC,UAAU,QAAQ,wBAAqB;AAChD,SAASC,gBAAgB,QAAQ,4DAAyD;AAC1F,SAASC,+BAA+B,QAAQ,4BAAyB;AACzE,SAASC,WAAW,QAAQ,8BAA2B;AACvD,SACEC,6BAA6B,EAC7BC,gBAAgB,EAEhBC,mCAAmC,QAC9B,uBAAoB;AAC3B,SAASC,qBAAqB,QAAQ,0BAAuB;AAC7D,SAASC,yBAAyB,QAAQ,sCAAmC;AAC7E,SAASC,YAAY,QAAQ,6BAA0B;AACvD,SAASC,sBAAsB,QAAQ,iCAA8B;AAErE,SACEC,qBAAqB,EACrBC,eAAe,EACfC,iBAAiB,EACjBC,yBAAyB,QACpB,aAAU;AAEjB,MAAMC,kBAAkB,CAACC,OACvBvB,aACEC,KAAK,YAAYuB,OAAO,EAAE,QAAQ,GAAGD,KAAK,KAAK,CAAC,GAChD,SACAE,IAAI;AAER,OAAO,MAAMC,8BAA+Cd,iBAC1D,YAAYe,QAAQ,EACpB;AAEF,OAAO,eAAeC,4BACpBC,IAAU,EACVC,OAA0C;IAE1C,MAAMC,gBAAgBlB,oCACpBgB,MACAC,QAAQE,OAAO;IAEjB,MAAMC,UAAUF,cAAcG,UAAU;IAExC,MAAMC,gBACJL,QAAQK,aAAa,IAAIL,QAAQK,aAAa,CAACC,MAAM,GAAG,IACpDN,QAAQK,aAAa,GACrBd,0BAA0BX,YAAYmB,OAAOE,cAAcR,IAAI;IAErE,MAAMN,uBAAuBY,MAAM;QACjCG,SAASF,QAAQE,OAAO;IAC1B;IAEA,MAAMK,MAAM,MAAM9B,WAAWsB,MAAMC,QAAQO,GAAG;IAE9C,MAAMtB,0BAA0Bc,MAAM;QACpCQ;IACF;IAEA,MAAM7B,iBAAiBqB,MAAM;QAC3BQ;QACAC,aAAaR,QAAQQ,WAAW;QAChCH;IACF;IAEAvC,cACEiC,MACA/B,kBAAkB,YAAY0B,OAAO,EAAE,SAAS,QAChDS,SACAH,SACA;QACES,mBAAmBxC,kBAAkByC,YAAY;IACnD;IAGF7C,6BACEkC,MACAb,aAAa;QAAC;QAAkB;KAAqB,GACrD,CAAC;IAGH,MAAMyB,cAAc3C,kBAAkBmC,SAAS;IAE/C,MAAM9B,gBACJ0B,MACAY,aACA,eACA;IAGF,MAAMpC,qCAAqCwB,MAAMY,aAAa;QAC5DC,MAAM;QACNC,QAAQ;QACRC,aAAa;IACf;IAEA,MAAMC,uBAAuBhC,oCAC3BgB,MACAC,QAAQE,OAAO;IAGjB,MAAMc,KAAK,AACT,CAAA,AAACD,qBAAqBE,QAAQ,EAAUD,MAAM,QAAO,EACrDE,WAAW;IAEb,MAAM5C,YAAYyB,MAAMY,aAAanB,gBAAgB;IACrD,oBAAoB;IACpB,MAAM2B,mBAAmBnD,kBACvBmC,SACA,cACA,aACA;IAEF,IAAIJ,KAAKqB,MAAM,CAACD,mBAAmB;QACjC,MAAM/C,sBACJ2B,MACAoB,kBACA;YAAC;SAAU,EACX;QAEF,MAAM7C,YACJyB,MACAoB,kBACA3B,gBAAgB;QAElB,6DAA6D;QAC7D,sFAAsF;QACtF,OAAQwB;YACN,KAAK;gBACH,MAAM5B,sBAAsBW,MAAMoB;gBAClC;YACF,KAAK;gBACH,MAAM7B,kBAAkBS,MAAMoB;gBAC9B;YACF,KAAK;gBACH,MAAM9B,gBAAgBU,MAAMoB;gBAC5B;YACF;gBACE,MAAM,IAAIE,MACR,CAAC,6DAA6D,EAAEL,GAAG,qBAAqB,CAAC;QAE/F;IACF,OAAO;QACLM,QAAQC,IAAI,CACV,CAAC,mBAAmB,EAAEJ,iBAAiB,sBAAsB,CAAC;IAElE;IACA,wBAAwB;IAExBtC,8BACEkB,MACAC,QAAQE,OAAO,EACfN,6BACAZ,sBACEiB,eACAjC,kBAAkBmC,SAAS,cAAc;IAI7C,MAAMxB,gCAAgCoB,MAAM;QAACH;KAA4B;IAEzE,MAAMpB,qBAAqBuB;IAC3B,OAAO;QACLhC,oBAAoBgC;IACtB;AACF;AACA,eAAeD,4BAA4B"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */ export { };
5
+
6
+ //# sourceMappingURL=schema.d.js.map
@@ -0,0 +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,52 +1,54 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deriveCognitoDomainPrefix = void 0;
4
- exports.addNoneAuthMenu = addNoneAuthMenu;
5
- exports.addCloudscapeAuthMenu = addCloudscapeAuthMenu;
6
- exports.addShadcnAuthMenu = addShadcnAuthMenu;
7
- const fs_1 = require("fs");
8
- const path_1 = require("path");
9
- const ast_1 = require("../../../utils/ast");
10
- const names_1 = require("../../../utils/names");
11
- const readGritPattern = (name) => (0, fs_1.readFileSync)((0, path_1.join)(__dirname, 'grit', `${name}.grit`), 'utf-8').trim();
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */ import { readFileSync } from "fs";
5
+ import { join } from "path";
6
+ import { addDestructuredImport, applyGritQL } from "../../../utils/ast.js";
7
+ import { kebabCase } from "../../../utils/names.js";
8
+ const readGritPattern = (name)=>readFileSync(join(import.meta.dirname, 'grit', `${name}.grit`), 'utf-8').trim();
12
9
  // Leaves room for the IaC suffix (Terraform: `-<12-digit account>-<8-char hex>` = 22 chars) inside Cognito's 63-char limit.
13
10
  const MAX_DERIVED_DOMAIN_PREFIX_LENGTH = 41;
14
11
  // Cognito rejects domains containing these substrings ("Domain cannot contain reserved word").
15
- const COGNITO_DOMAIN_RESERVED_WORDS = ['aws', 'amazon', 'cognito'];
16
- const deriveCognitoDomainPrefix = (npmScope, projectName) => {
17
- const projectWithoutScope = projectName.includes('/')
18
- ? projectName.split('/').pop()
19
- : projectName;
20
- const kebab = (0, names_1.kebabCase)([npmScope, projectWithoutScope].filter(Boolean).join('-'));
21
- const stripped = COGNITO_DOMAIN_RESERVED_WORDS.reduce((s, word) => s.replaceAll(word, ''), kebab);
22
- const candidate = stripped
23
- .replace(/-+/g, '-')
24
- .replace(/^-|-$/g, '')
25
- .slice(0, MAX_DERIVED_DOMAIN_PREFIX_LENGTH)
26
- .replace(/-$/, '');
12
+ const COGNITO_DOMAIN_RESERVED_WORDS = [
13
+ 'aws',
14
+ 'amazon',
15
+ 'cognito'
16
+ ];
17
+ export const deriveCognitoDomainPrefix = (npmScope, projectName)=>{
18
+ const projectWithoutScope = projectName.includes('/') ? projectName.split('/').pop() : projectName;
19
+ const kebab = kebabCase([
20
+ npmScope,
21
+ projectWithoutScope
22
+ ].filter(Boolean).join('-'));
23
+ const stripped = COGNITO_DOMAIN_RESERVED_WORDS.reduce((s, word)=>s.replaceAll(word, ''), kebab);
24
+ const candidate = stripped.replace(/-+/g, '-').replace(/^-|-$/g, '').slice(0, MAX_DERIVED_DOMAIN_PREFIX_LENGTH).replace(/-$/, '');
27
25
  if (!candidate) {
28
26
  throw new Error(`Unable to derive a valid Cognito domain prefix from scope "${npmScope ?? ''}" and project "${projectName}". Please specify a cognitoDomain explicitly.`);
29
27
  }
30
28
  return candidate;
31
29
  };
32
- exports.deriveCognitoDomainPrefix = deriveCognitoDomainPrefix;
33
30
  // Adds a user greeting and sign-out button to the default AppLayout header when using the None UX provider.
34
- async function addNoneAuthMenu(tree, appLayoutTsxPath) {
35
- await (0, ast_1.applyGritQL)(tree, appLayoutTsxPath, readGritPattern('none-auth-menu'));
31
+ export async function addNoneAuthMenu(tree, appLayoutTsxPath) {
32
+ await applyGritQL(tree, appLayoutTsxPath, readGritPattern('none-auth-menu'));
36
33
  }
37
34
  // Adds a top navigation dropdown with sign-out when using the Cloudscape UX provider.
38
- async function addCloudscapeAuthMenu(tree, appLayoutTsxPath) {
39
- await (0, ast_1.applyGritQL)(tree, appLayoutTsxPath, readGritPattern('cloudscape-auth-menu'));
35
+ export async function addCloudscapeAuthMenu(tree, appLayoutTsxPath) {
36
+ await applyGritQL(tree, appLayoutTsxPath, readGritPattern('cloudscape-auth-menu'));
40
37
  }
41
- async function addShadcnAuthMenu(tree, appLayoutTsxPath) {
38
+ export async function addShadcnAuthMenu(tree, appLayoutTsxPath) {
42
39
  if (!tree.exists(appLayoutTsxPath)) {
43
40
  throw new Error(`Expected top nav component at ${appLayoutTsxPath}`);
44
41
  }
45
42
  // Prepend state declarations to the AppLayout component body
46
- await (0, ast_1.applyGritQL)(tree, appLayoutTsxPath, readGritPattern('shadcn-state-declarations'));
43
+ await applyGritQL(tree, appLayoutTsxPath, readGritPattern('shadcn-state-declarations'));
47
44
  // Add useEffect, useRef, useState imports from react
48
- await (0, ast_1.addDestructuredImport)(tree, appLayoutTsxPath, ['useEffect', 'useRef', 'useState'], 'react');
45
+ await addDestructuredImport(tree, appLayoutTsxPath, [
46
+ 'useEffect',
47
+ 'useRef',
48
+ 'useState'
49
+ ], 'react');
49
50
  // Append the auth menu to the header element
50
- await (0, ast_1.applyGritQL)(tree, appLayoutTsxPath, readGritPattern('shadcn-auth-menu'));
51
+ await applyGritQL(tree, appLayoutTsxPath, readGritPattern('shadcn-auth-menu'));
51
52
  }
53
+
52
54
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/utils.ts"],"names":[],"mappings":";;;AA+CA,0CAEC;AAGD,sDASC;AAED,8CA0BC;AApFD,2BAAkC;AAClC,+BAA4B;AAC5B,4CAAwE;AACxE,gDAAiD;AAEjD,MAAM,eAAe,GAAG,CAAC,IAAY,EAAU,EAAE,CAC/C,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AAExE,4HAA4H;AAC5H,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAE5C,+FAA+F;AAC/F,MAAM,6BAA6B,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE5D,MAAM,yBAAyB,GAAG,CACvC,QAA4B,EAC5B,WAAmB,EACX,EAAE;IACV,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG;QAC/B,CAAC,CAAC,WAAW,CAAC;IAChB,MAAM,KAAK,GAAG,IAAA,iBAAS,EACrB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC1D,CAAC;IACF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,MAAM,CACnD,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EACnC,KAAK,CACN,CAAC;IACF,MAAM,SAAS,GAAG,QAAQ;SACvB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,gCAAgC,CAAC;SAC1C,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,8DAA8D,QAAQ,IAAI,EAAE,kBAAkB,WAAW,+CAA+C,CACzJ,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAzBW,QAAA,yBAAyB,6BAyBpC;AAEF,4GAA4G;AACrG,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,gBAAwB;IACxE,MAAM,IAAA,iBAAW,EAAC,IAAI,EAAE,gBAAgB,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,sFAAsF;AAC/E,KAAK,UAAU,qBAAqB,CACzC,IAAU,EACV,gBAAwB;IAExB,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,gBAAgB,EAChB,eAAe,CAAC,sBAAsB,CAAC,CACxC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,IAAU,EAAE,gBAAwB;IAC1E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,iCAAiC,gBAAgB,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,6DAA6D;IAC7D,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,gBAAgB,EAChB,eAAe,CAAC,2BAA2B,CAAC,CAC7C,CAAC;IAEF,qDAAqD;IACrD,MAAM,IAAA,2BAAqB,EACzB,IAAI,EACJ,gBAAgB,EAChB,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,EACnC,OAAO,CACR,CAAC;IAEF,6CAA6C;IAC7C,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,gBAAgB,EAChB,eAAe,CAAC,kBAAkB,CAAC,CACpC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/cognito-auth/utils.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Tree } from '@nx/devkit';\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\nimport { addDestructuredImport, applyGritQL } from '../../../utils/ast';\nimport { kebabCase } from '../../../utils/names';\n\nconst readGritPattern = (name: string): string =>\n readFileSync(\n join(import.meta.dirname, 'grit', `${name}.grit`),\n 'utf-8',\n ).trim();\n\n// Leaves room for the IaC suffix (Terraform: `-<12-digit account>-<8-char hex>` = 22 chars) inside Cognito's 63-char limit.\nconst MAX_DERIVED_DOMAIN_PREFIX_LENGTH = 41;\n\n// Cognito rejects domains containing these substrings (\"Domain cannot contain reserved word\").\nconst COGNITO_DOMAIN_RESERVED_WORDS = ['aws', 'amazon', 'cognito'];\n\nexport const deriveCognitoDomainPrefix = (\n npmScope: string | undefined,\n projectName: string,\n): string => {\n const projectWithoutScope = projectName.includes('/')\n ? projectName.split('/').pop()!\n : projectName;\n const kebab = kebabCase(\n [npmScope, projectWithoutScope].filter(Boolean).join('-'),\n );\n const stripped = COGNITO_DOMAIN_RESERVED_WORDS.reduce(\n (s, word) => s.replaceAll(word, ''),\n kebab,\n );\n const candidate = stripped\n .replace(/-+/g, '-')\n .replace(/^-|-$/g, '')\n .slice(0, MAX_DERIVED_DOMAIN_PREFIX_LENGTH)\n .replace(/-$/, '');\n if (!candidate) {\n throw new Error(\n `Unable to derive a valid Cognito domain prefix from scope \"${npmScope ?? ''}\" and project \"${projectName}\". Please specify a cognitoDomain explicitly.`,\n );\n }\n return candidate;\n};\n\n// Adds a user greeting and sign-out button to the default AppLayout header when using the None UX provider.\nexport async function addNoneAuthMenu(tree: Tree, appLayoutTsxPath: string) {\n await applyGritQL(tree, appLayoutTsxPath, readGritPattern('none-auth-menu'));\n}\n\n// Adds a top navigation dropdown with sign-out when using the Cloudscape UX provider.\nexport async function addCloudscapeAuthMenu(\n tree: Tree,\n appLayoutTsxPath: string,\n) {\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('cloudscape-auth-menu'),\n );\n}\n\nexport async function addShadcnAuthMenu(tree: Tree, appLayoutTsxPath: string) {\n if (!tree.exists(appLayoutTsxPath)) {\n throw new Error(`Expected top nav component at ${appLayoutTsxPath}`);\n }\n\n // Prepend state declarations to the AppLayout component body\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('shadcn-state-declarations'),\n );\n\n // Add useEffect, useRef, useState imports from react\n await addDestructuredImport(\n tree,\n appLayoutTsxPath,\n ['useEffect', 'useRef', 'useState'],\n 'react',\n );\n\n // Append the auth menu to the header element\n await applyGritQL(\n tree,\n appLayoutTsxPath,\n readGritPattern('shadcn-auth-menu'),\n );\n}\n"],"names":["readFileSync","join","addDestructuredImport","applyGritQL","kebabCase","readGritPattern","name","dirname","trim","MAX_DERIVED_DOMAIN_PREFIX_LENGTH","COGNITO_DOMAIN_RESERVED_WORDS","deriveCognitoDomainPrefix","npmScope","projectName","projectWithoutScope","includes","split","pop","kebab","filter","Boolean","stripped","reduce","s","word","replaceAll","candidate","replace","slice","Error","addNoneAuthMenu","tree","appLayoutTsxPath","addCloudscapeAuthMenu","addShadcnAuthMenu","exists"],"mappings":"AAAA;;;CAGC,GAED,SAASA,YAAY,QAAQ,KAAK;AAClC,SAASC,IAAI,QAAQ,OAAO;AAC5B,SAASC,qBAAqB,EAAEC,WAAW,QAAQ,wBAAqB;AACxE,SAASC,SAAS,QAAQ,0BAAuB;AAEjD,MAAMC,kBAAkB,CAACC,OACvBN,aACEC,KAAK,YAAYM,OAAO,EAAE,QAAQ,GAAGD,KAAK,KAAK,CAAC,GAChD,SACAE,IAAI;AAER,4HAA4H;AAC5H,MAAMC,mCAAmC;AAEzC,+FAA+F;AAC/F,MAAMC,gCAAgC;IAAC;IAAO;IAAU;CAAU;AAElE,OAAO,MAAMC,4BAA4B,CACvCC,UACAC;IAEA,MAAMC,sBAAsBD,YAAYE,QAAQ,CAAC,OAC7CF,YAAYG,KAAK,CAAC,KAAKC,GAAG,KAC1BJ;IACJ,MAAMK,QAAQd,UACZ;QAACQ;QAAUE;KAAoB,CAACK,MAAM,CAACC,SAASnB,IAAI,CAAC;IAEvD,MAAMoB,WAAWX,8BAA8BY,MAAM,CACnD,CAACC,GAAGC,OAASD,EAAEE,UAAU,CAACD,MAAM,KAChCN;IAEF,MAAMQ,YAAYL,SACfM,OAAO,CAAC,OAAO,KACfA,OAAO,CAAC,UAAU,IAClBC,KAAK,CAAC,GAAGnB,kCACTkB,OAAO,CAAC,MAAM;IACjB,IAAI,CAACD,WAAW;QACd,MAAM,IAAIG,MACR,CAAC,2DAA2D,EAAEjB,YAAY,GAAG,eAAe,EAAEC,YAAY,6CAA6C,CAAC;IAE5J;IACA,OAAOa;AACT,EAAE;AAEF,4GAA4G;AAC5G,OAAO,eAAeI,gBAAgBC,IAAU,EAAEC,gBAAwB;IACxE,MAAM7B,YAAY4B,MAAMC,kBAAkB3B,gBAAgB;AAC5D;AAEA,sFAAsF;AACtF,OAAO,eAAe4B,sBACpBF,IAAU,EACVC,gBAAwB;IAExB,MAAM7B,YACJ4B,MACAC,kBACA3B,gBAAgB;AAEpB;AAEA,OAAO,eAAe6B,kBAAkBH,IAAU,EAAEC,gBAAwB;IAC1E,IAAI,CAACD,KAAKI,MAAM,CAACH,mBAAmB;QAClC,MAAM,IAAIH,MAAM,CAAC,8BAA8B,EAAEG,kBAAkB;IACrE;IAEA,6DAA6D;IAC7D,MAAM7B,YACJ4B,MACAC,kBACA3B,gBAAgB;IAGlB,qDAAqD;IACrD,MAAMH,sBACJ6B,MACAC,kBACA;QAAC;QAAa;QAAU;KAAW,EACnC;IAGF,6CAA6C;IAC7C,MAAM7B,YACJ4B,MACAC,kBACA3B,gBAAgB;AAEpB"}
@@ -21,10 +21,10 @@ export const RuntimeConfigContext = createContext<IRuntimeConfig | undefined>(
21
21
 
22
22
  /**
23
23
  * Apply any overrides to point to local servers/resources here
24
- * for the serve-local target
24
+ * for the dev target
25
25
  */
26
26
  const applyOverrides = (runtimeConfig: IRuntimeConfig) => {
27
- if (import.meta.env.MODE === 'serve-local') {
27
+ if (import.meta.env.MODE === 'local-dev') {
28
28
  // Add local server urls here
29
29
  }
30
30
  return runtimeConfig;