@aws/nx-plugin 1.0.0-rc.22 → 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 (657) 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} +18 -845
  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 -75
  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/files/ag-ui-langchain/main.py.template +10 -0
  145. package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +6 -8
  146. package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +3 -3
  147. package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +3 -3
  148. package/src/py/agent/gateway-connection/generator.js +61 -58
  149. package/src/py/agent/gateway-connection/generator.js.map +1 -1
  150. package/src/py/agent/gateway-connection/schema.d.js +6 -0
  151. package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
  152. package/src/py/agent/generator.js +227 -194
  153. package/src/py/agent/generator.js.map +1 -1
  154. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +5 -12
  155. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +1 -1
  156. package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +1 -1
  157. package/src/py/agent/mcp-connection/generator.js +53 -52
  158. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  159. package/src/py/agent/mcp-connection/schema.d.js +8 -0
  160. package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
  161. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +3 -2
  162. package/src/py/agent/react-connection/generator.js +51 -58
  163. package/src/py/agent/react-connection/generator.js.map +1 -1
  164. package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +4 -4
  165. package/src/py/agent/react-connection/local-dev.js +36 -0
  166. package/src/py/agent/react-connection/local-dev.js.map +1 -0
  167. package/src/py/agent/react-connection/schema.d.js +8 -0
  168. package/src/py/agent/react-connection/schema.d.js.map +1 -0
  169. package/src/py/agent/schema.d.js +6 -0
  170. package/src/py/agent/schema.d.js.map +1 -0
  171. package/src/py/api/generator.js +12 -12
  172. package/src/py/api/generator.js.map +1 -1
  173. package/src/py/api/schema.d.js +6 -0
  174. package/src/py/api/schema.d.js.map +1 -0
  175. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +68 -28
  176. package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
  177. package/src/py/dynamodb/agent-connection/generator.js +27 -29
  178. package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
  179. package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
  180. package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
  181. package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +3 -3
  182. package/src/py/dynamodb/fast-api-connection/generator.js +26 -28
  183. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
  184. package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
  185. package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
  186. package/src/py/dynamodb/files/__name__/client.py.template +5 -5
  187. package/src/py/dynamodb/files/__name__/entities/base.py.template +2 -2
  188. package/src/py/dynamodb/files/config.json.template +1 -1
  189. package/src/py/dynamodb/generator.js +63 -62
  190. package/src/py/dynamodb/generator.js.map +1 -1
  191. package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
  192. package/src/py/dynamodb/mcp-server-connection/generator.js +27 -29
  193. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
  194. package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
  195. package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  196. package/src/py/dynamodb/schema.d.js +6 -0
  197. package/src/py/dynamodb/schema.d.js.map +1 -0
  198. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +45 -4632
  199. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +4833 -0
  200. package/src/py/fast-api/generator.js +79 -85
  201. package/src/py/fast-api/generator.js.map +1 -1
  202. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +3 -2
  203. package/src/py/fast-api/react/generator.js +22 -24
  204. package/src/py/fast-api/react/generator.js.map +1 -1
  205. package/src/py/fast-api/react/open-api.js +28 -29
  206. package/src/py/fast-api/react/open-api.js.map +1 -1
  207. package/src/py/fast-api/react/schema.d.js +6 -0
  208. package/src/py/fast-api/react/schema.d.js.map +1 -0
  209. package/src/py/fast-api/schema.d.js +6 -0
  210. package/src/py/fast-api/schema.d.js.map +1 -0
  211. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  212. package/src/py/lambda-function/generator.js +57 -58
  213. package/src/py/lambda-function/generator.js.map +1 -1
  214. package/src/py/lambda-function/schema.d.js +6 -0
  215. package/src/py/lambda-function/schema.d.js.map +1 -0
  216. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
  217. package/src/py/mcp-server/generator.js +149 -131
  218. package/src/py/mcp-server/generator.js.map +1 -1
  219. package/src/py/mcp-server/schema.d.js +6 -0
  220. package/src/py/mcp-server/schema.d.js.map +1 -0
  221. package/src/py/project/generator.d.ts +14 -1
  222. package/src/py/project/generator.js +137 -88
  223. package/src/py/project/generator.js.map +1 -1
  224. package/src/py/project/schema.d.js +6 -0
  225. package/src/py/project/schema.d.js.map +1 -0
  226. package/src/sdk/agentcore-gateway.d.ts +6 -0
  227. package/src/sdk/agentcore-gateway.js +7 -0
  228. package/src/sdk/agentcore-gateway.js.map +1 -0
  229. package/src/sdk/connection.d.ts +6 -0
  230. package/src/sdk/connection.js +6 -0
  231. package/src/sdk/connection.js.map +1 -0
  232. package/{sdk → src/sdk}/license.d.ts +4 -4
  233. package/src/sdk/license.js +7 -0
  234. package/src/sdk/license.js.map +1 -0
  235. package/src/sdk/open-api.d.ts +10 -0
  236. package/src/sdk/open-api.js +8 -0
  237. package/src/sdk/open-api.js.map +1 -0
  238. package/src/sdk/py.d.ts +14 -0
  239. package/src/sdk/py.js +10 -0
  240. package/src/sdk/py.js.map +1 -0
  241. package/src/sdk/terraform.d.ts +6 -0
  242. package/src/sdk/terraform.js +7 -0
  243. package/src/sdk/terraform.js.map +1 -0
  244. package/src/sdk/ts.d.ts +33 -0
  245. package/src/sdk/ts.js +35 -0
  246. package/src/sdk/ts.js.map +1 -0
  247. package/{sdk → src/sdk}/utils/ast.d.ts +2 -2
  248. package/src/sdk/utils/ast.js +7 -0
  249. package/src/sdk/utils/ast.js.map +1 -0
  250. package/{sdk → src/sdk}/utils/format.d.ts +1 -1
  251. package/src/sdk/utils/format.js +6 -0
  252. package/src/sdk/utils/format.js.map +1 -0
  253. package/{sdk → src/sdk}/utils/test.d.ts +1 -1
  254. package/src/sdk/utils/test.js +6 -0
  255. package/src/sdk/utils/test.js.map +1 -0
  256. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +2 -8
  257. package/src/smithy/project/files/build.Dockerfile.template +1 -4
  258. package/src/smithy/project/generator.js +44 -42
  259. package/src/smithy/project/generator.js.map +1 -1
  260. package/src/smithy/project/schema.d.js +6 -0
  261. package/src/smithy/project/schema.d.js.map +1 -0
  262. package/src/smithy/react-connection/generator.js +35 -46
  263. package/src/smithy/react-connection/generator.js.map +1 -1
  264. package/src/smithy/react-connection/schema.d.js +6 -0
  265. package/src/smithy/react-connection/schema.d.js.map +1 -0
  266. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +395 -72
  267. package/src/smithy/ts/api/generator.js +121 -111
  268. package/src/smithy/ts/api/generator.js.map +1 -1
  269. package/src/smithy/ts/api/schema.d.js +6 -0
  270. package/src/smithy/ts/api/schema.d.js.map +1 -0
  271. package/src/terraform/project/files/application/src/providers.tf.template +1 -1
  272. package/src/terraform/project/generator.js +141 -103
  273. package/src/terraform/project/generator.js.map +1 -1
  274. package/src/terraform/project/schema.d.js +9 -0
  275. package/src/terraform/project/schema.d.js.map +1 -0
  276. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +336 -92
  277. package/src/trpc/backend/generator.js +93 -86
  278. package/src/trpc/backend/generator.js.map +1 -1
  279. package/src/trpc/backend/schema.d.js +6 -0
  280. package/src/trpc/backend/schema.d.js.map +1 -0
  281. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +1 -1
  282. package/src/trpc/react/generator.js +59 -58
  283. package/src/trpc/react/generator.js.map +1 -1
  284. package/src/trpc/react/schema.d.js +6 -0
  285. package/src/trpc/react/schema.d.js.map +1 -0
  286. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +11 -11
  287. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +1 -1
  288. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +1 -1
  289. package/src/ts/agent/a2a-connection/generator.js +58 -54
  290. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  291. package/src/ts/agent/a2a-connection/schema.d.js +8 -0
  292. package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
  293. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +5 -5
  294. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +3 -3
  295. package/src/ts/agent/gateway-connection/generator.js +57 -52
  296. package/src/ts/agent/gateway-connection/generator.js.map +1 -1
  297. package/src/ts/agent/gateway-connection/schema.d.js +6 -0
  298. package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
  299. package/src/ts/agent/generator.js +165 -136
  300. package/src/ts/agent/generator.js.map +1 -1
  301. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +1 -1
  302. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +1 -1
  303. package/src/ts/agent/mcp-connection/generator.js +48 -46
  304. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  305. package/src/ts/agent/mcp-connection/schema.d.js +8 -0
  306. package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
  307. package/src/ts/agent/react-connection/generator.js +79 -79
  308. package/src/ts/agent/react-connection/generator.js.map +1 -1
  309. package/src/ts/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +2 -2
  310. package/src/ts/agent/react-connection/local-dev.js +17 -0
  311. package/src/ts/agent/react-connection/local-dev.js.map +1 -0
  312. package/src/ts/agent/react-connection/schema.d.js +8 -0
  313. package/src/ts/agent/react-connection/schema.d.js.map +1 -0
  314. package/src/ts/agent/schema.d.js +6 -0
  315. package/src/ts/agent/schema.d.js.map +1 -0
  316. package/src/ts/api/generator.js +16 -18
  317. package/src/ts/api/generator.js.map +1 -1
  318. package/src/ts/api/schema.d.js +6 -0
  319. package/src/ts/api/schema.d.js.map +1 -0
  320. package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +8 -8
  321. package/src/ts/astro-docs/generator.js +59 -48
  322. package/src/ts/astro-docs/generator.js.map +1 -1
  323. package/src/ts/astro-docs/schema.d.js +6 -0
  324. package/src/ts/astro-docs/schema.d.js.map +1 -0
  325. package/src/ts/docs/generator.js +10 -10
  326. package/src/ts/docs/generator.js.map +1 -1
  327. package/src/ts/docs/schema.d.js +6 -0
  328. package/src/ts/docs/schema.d.js.map +1 -0
  329. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +68 -30
  330. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
  331. package/src/ts/dynamodb/agent-connection/generator.js +21 -23
  332. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
  333. package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
  334. package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
  335. package/src/ts/dynamodb/files/config.json.template +1 -1
  336. package/src/ts/dynamodb/files/src/client.ts.template +7 -7
  337. package/src/ts/dynamodb/generator.js +64 -63
  338. package/src/ts/dynamodb/generator.js.map +1 -1
  339. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
  340. package/src/ts/dynamodb/mcp-server-connection/generator.js +21 -23
  341. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
  342. package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
  343. package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  344. package/src/ts/dynamodb/schema.d.js +6 -0
  345. package/src/ts/dynamodb/schema.d.js.map +1 -0
  346. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
  347. package/src/ts/dynamodb/smithy-connection/generator.js +20 -22
  348. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
  349. package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
  350. package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
  351. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
  352. package/src/ts/dynamodb/trpc-connection/generator.js +20 -22
  353. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
  354. package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
  355. package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
  356. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  357. package/src/ts/lambda-function/generator.js +55 -55
  358. package/src/ts/lambda-function/generator.js.map +1 -1
  359. package/src/ts/lambda-function/io.js +83 -52
  360. package/src/ts/lambda-function/io.js.map +1 -1
  361. package/src/ts/lambda-function/schema.d.js +6 -0
  362. package/src/ts/lambda-function/schema.d.js.map +1 -0
  363. package/src/ts/lib/__snapshots__/generator.spec.ts.snap +23 -36
  364. package/src/ts/lib/biome.js +37 -37
  365. package/src/ts/lib/biome.js.map +1 -1
  366. package/src/ts/lib/generator.js +75 -77
  367. package/src/ts/lib/generator.js.map +1 -1
  368. package/src/ts/lib/schema.d.js +6 -0
  369. package/src/ts/lib/schema.d.js.map +1 -0
  370. package/src/ts/lib/ts-project-utils.js +65 -70
  371. package/src/ts/lib/ts-project-utils.js.map +1 -1
  372. package/src/ts/lib/types.js +5 -2
  373. package/src/ts/lib/types.js.map +1 -1
  374. package/src/ts/lib/vitest.js +29 -26
  375. package/src/ts/lib/vitest.js.map +1 -1
  376. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
  377. package/src/ts/mcp-server/generator.js +157 -138
  378. package/src/ts/mcp-server/generator.js.map +1 -1
  379. package/src/ts/mcp-server/schema.d.js +6 -0
  380. package/src/ts/mcp-server/schema.d.js.map +1 -0
  381. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +14 -9
  382. package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
  383. package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +4 -4
  384. package/src/ts/nx-generator/generator.js +84 -83
  385. package/src/ts/nx-generator/generator.js.map +1 -1
  386. package/src/ts/nx-generator/schema.d.js +6 -0
  387. package/src/ts/nx-generator/schema.d.js.map +1 -0
  388. package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +30 -18
  389. package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
  390. package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
  391. package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
  392. package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
  393. package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
  394. package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +3 -3
  395. package/src/ts/nx-plugin/generator.js +49 -48
  396. package/src/ts/nx-plugin/generator.js.map +1 -1
  397. package/src/ts/nx-plugin/schema.d.js +9 -0
  398. package/src/ts/nx-plugin/schema.d.js.map +1 -0
  399. package/src/ts/nx-plugin/utils.js +32 -44
  400. package/src/ts/nx-plugin/utils.js.map +1 -1
  401. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +34 -30
  402. package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +6 -6
  403. package/src/ts/rdb/agent-connection/generator.js +38 -39
  404. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  405. package/src/ts/rdb/agent-connection/schema.d.js +8 -0
  406. package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
  407. package/src/ts/rdb/files/config.json.template +1 -1
  408. package/src/ts/rdb/files/prisma.config.ts.template +2 -2
  409. package/src/ts/rdb/files/src/prisma.ts.template +7 -7
  410. package/src/ts/rdb/files/src/utils.ts.template +3 -0
  411. package/src/ts/rdb/generator.js +130 -117
  412. package/src/ts/rdb/generator.js.map +1 -1
  413. package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +6 -6
  414. package/src/ts/rdb/mcp-server-connection/generator.js +36 -37
  415. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  416. package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
  417. package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
  418. package/src/ts/rdb/schema.d.js +6 -0
  419. package/src/ts/rdb/schema.d.js.map +1 -0
  420. package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
  421. package/src/ts/rdb/smithy-connection/generator.js +46 -43
  422. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  423. package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
  424. package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
  425. package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
  426. package/src/ts/rdb/trpc-connection/generator.js +36 -31
  427. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  428. package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
  429. package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
  430. package/src/ts/rdb/utils.js +9 -11
  431. package/src/ts/rdb/utils.js.map +1 -1
  432. package/src/ts/react-website/agui/generator.js +69 -61
  433. package/src/ts/react-website/agui/generator.js.map +1 -1
  434. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +179 -332
  435. package/src/ts/react-website/app/generator.js +197 -188
  436. package/src/ts/react-website/app/generator.js.map +1 -1
  437. package/src/ts/react-website/app/schema.d.js +6 -0
  438. package/src/ts/react-website/app/schema.d.js.map +1 -0
  439. package/src/ts/react-website/app/schema.json +6 -6
  440. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +118 -4
  441. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +27 -7
  442. package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
  443. package/src/ts/react-website/cognito-auth/generator.js +60 -60
  444. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  445. package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
  446. package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
  447. package/src/ts/react-website/cognito-auth/utils.js +34 -32
  448. package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
  449. package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
  450. package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
  451. package/src/ts/react-website/runtime-config/generator.js +29 -31
  452. package/src/ts/react-website/runtime-config/generator.js.map +1 -1
  453. package/src/ts/react-website/runtime-config/schema.d.js +6 -0
  454. package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
  455. package/src/ts/sync/generator.js +60 -59
  456. package/src/ts/sync/generator.js.map +1 -1
  457. package/src/ts/website/app/generator.js +10 -10
  458. package/src/ts/website/app/generator.js.map +1 -1
  459. package/src/ts/website/app/schema.d.js +6 -0
  460. package/src/ts/website/app/schema.d.js.map +1 -0
  461. package/src/ts/website/app/schema.json +6 -6
  462. package/src/ts/website/auth/generator.js +11 -11
  463. package/src/ts/website/auth/generator.js.map +1 -1
  464. package/src/ts/website/auth/schema.d.js +6 -0
  465. package/src/ts/website/auth/schema.d.js.map +1 -0
  466. package/src/utils/agent-chat/agent-chat.d.ts +1 -1
  467. package/src/utils/agent-chat/agent-chat.js +11 -12
  468. package/src/utils/agent-chat/agent-chat.js.map +1 -1
  469. package/src/utils/agent-chat/files/a2a/chat.ts.template +1 -1
  470. package/src/utils/agent-chat/files/ag-ui/chat.ts.template +1 -1
  471. package/src/utils/agent-chat/files/http-py/chat.ts.template +1 -1
  472. package/src/utils/agent-chat/files/http-ts/chat.ts.template +1 -1
  473. package/src/utils/agent-connection/agent-connection.d.ts +9 -3
  474. package/src/utils/agent-connection/agent-connection.js +133 -147
  475. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  476. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +1 -1
  477. package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +1 -1
  478. package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +1 -1
  479. package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +1 -1
  480. package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +1 -1
  481. package/src/utils/agent-core-constructs/agent-core-constructs.js +53 -50
  482. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  483. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
  484. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +5 -5
  485. package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +2 -2
  486. package/src/utils/api-constructs/api-constructs.js +30 -31
  487. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  488. package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +14 -6
  489. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +58 -0
  490. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
  491. package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +28 -14
  492. package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +1 -8
  493. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +91 -4
  494. package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
  495. package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
  496. package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +5 -11
  497. package/src/utils/api-constructs/open-api-metadata.js +22 -22
  498. package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
  499. package/src/utils/ast/website.js +17 -19
  500. package/src/utils/ast/website.js.map +1 -1
  501. package/src/utils/ast.js +72 -97
  502. package/src/utils/ast.js.map +1 -1
  503. package/src/utils/bundle/bundle.js +50 -47
  504. package/src/utils/bundle/bundle.js.map +1 -1
  505. package/src/utils/commands.js +47 -26
  506. package/src/utils/commands.js.map +1 -1
  507. package/src/utils/config/index.d.ts +2 -2
  508. package/src/utils/config/index.js +5 -4
  509. package/src/utils/config/index.js.map +1 -1
  510. package/src/utils/config/utils.js +48 -58
  511. package/src/utils/config/utils.js.map +1 -1
  512. package/src/utils/connection/open-api/react.d.ts +5 -5
  513. package/src/utils/connection/open-api/react.js +81 -77
  514. package/src/utils/connection/open-api/react.js.map +1 -1
  515. package/src/utils/containers.js +22 -23
  516. package/src/utils/containers.js.map +1 -1
  517. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +32 -33
  518. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
  519. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +12 -2
  520. package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +1 -1
  521. package/src/utils/files/common/scripts/src/dynamodb/create-local-table.ts.template +2 -2
  522. package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +1 -1
  523. package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +17 -2
  524. package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
  525. package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
  526. package/src/utils/files/common/scripts/src/rdb/{pull-image.ts.template → shared/pull-image.ts.template} +1 -1
  527. package/src/utils/files/common/scripts/src/rdb/{start-container.ts.template → shared/start-container.ts.template} +16 -1
  528. package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +2 -2
  529. package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +1 -1
  530. package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +3 -3
  531. package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
  532. package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +2 -2
  533. package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
  534. package/src/utils/format.js +153 -99
  535. package/src/utils/format.js.map +1 -1
  536. package/src/utils/fs.js +14 -13
  537. package/src/utils/fs.js.map +1 -1
  538. package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +2 -2
  539. package/src/utils/function-constructs/function-constructs.js +21 -26
  540. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  541. package/src/utils/generators.js +18 -20
  542. package/src/utils/generators.js.map +1 -1
  543. package/src/utils/git.js +19 -34
  544. package/src/utils/git.js.map +1 -1
  545. package/src/utils/iac-providers.js +5 -5
  546. package/src/utils/iac-providers.js.map +1 -1
  547. package/src/utils/iac.js +12 -14
  548. package/src/utils/iac.js.map +1 -1
  549. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +112 -2
  550. package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +19 -6
  551. package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +104 -2
  552. package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +7 -0
  553. package/src/utils/identity-constructs/identity-constructs.js +24 -28
  554. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  555. package/src/utils/js.js +27 -20
  556. package/src/utils/js.js.map +1 -1
  557. package/src/utils/mcp.js +34 -41
  558. package/src/utils/mcp.js.map +1 -1
  559. package/src/utils/metrics.js +30 -45
  560. package/src/utils/metrics.js.map +1 -1
  561. package/src/utils/mock-project-graph.js +8 -12
  562. package/src/utils/mock-project-graph.js.map +1 -1
  563. package/src/utils/names.d.ts +16 -0
  564. package/src/utils/names.js +39 -48
  565. package/src/utils/names.js.map +1 -1
  566. package/src/utils/npm-scope.js +9 -17
  567. package/src/utils/npm-scope.js.map +1 -1
  568. package/src/utils/nx.d.ts +18 -2
  569. package/src/utils/nx.js +111 -74
  570. package/src/utils/nx.js.map +1 -1
  571. package/src/utils/nxlv-python.js +27 -15
  572. package/src/utils/nxlv-python.js.map +1 -1
  573. package/src/utils/object.js +5 -11
  574. package/src/utils/object.js.map +1 -1
  575. package/src/utils/paths.js +11 -15
  576. package/src/utils/paths.js.map +1 -1
  577. package/src/utils/pkg-manager.js +4 -9
  578. package/src/utils/pkg-manager.js.map +1 -1
  579. package/src/utils/pnpm-workspace.js +22 -22
  580. package/src/utils/pnpm-workspace.js.map +1 -1
  581. package/src/utils/port.js +26 -36
  582. package/src/utils/port.js.map +1 -1
  583. package/src/utils/py.d.ts +14 -1
  584. package/src/utils/py.js +63 -45
  585. package/src/utils/py.js.map +1 -1
  586. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
  587. package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +3 -3
  588. package/src/utils/rdb-constructs/rdb-constructs.js +31 -33
  589. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  590. package/src/utils/shared-constructs-constants.js +16 -16
  591. package/src/utils/shared-constructs-constants.js.map +1 -1
  592. package/src/utils/shared-constructs.js +57 -54
  593. package/src/utils/shared-constructs.js.map +1 -1
  594. package/src/utils/shared-dynamodb-scripts.js +16 -14
  595. package/src/utils/shared-dynamodb-scripts.js.map +1 -1
  596. package/src/utils/shared-infra-config.js +30 -31
  597. package/src/utils/shared-infra-config.js.map +1 -1
  598. package/src/utils/shared-infra-scripts.js +30 -25
  599. package/src/utils/shared-infra-scripts.js.map +1 -1
  600. package/src/utils/shared-rdb-scripts.d.ts +8 -3
  601. package/src/utils/shared-rdb-scripts.js +21 -13
  602. package/src/utils/shared-rdb-scripts.js.map +1 -1
  603. package/src/utils/shared-scripts.js +12 -17
  604. package/src/utils/shared-scripts.js.map +1 -1
  605. package/src/utils/shared-shadcn.js +64 -60
  606. package/src/utils/shared-shadcn.js.map +1 -1
  607. package/src/utils/test.d.ts +8 -0
  608. package/src/utils/test.js +33 -25
  609. package/src/utils/test.js.map +1 -1
  610. package/src/utils/toml.js +7 -15
  611. package/src/utils/toml.js.map +1 -1
  612. package/src/utils/versions.d.ts +31 -4
  613. package/src/utils/versions.js +40 -23
  614. package/src/utils/versions.js.map +1 -1
  615. package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +1 -1
  616. package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +4 -4
  617. package/src/utils/website-constructs/website-constructs.js +31 -30
  618. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  619. package/bin/aws-nx-mcp.js +0 -17
  620. package/bin/aws-nx-mcp.js.map +0 -1
  621. package/sdk/agentcore-gateway.d.ts +0 -6
  622. package/sdk/agentcore-gateway.js +0 -11
  623. package/sdk/agentcore-gateway.js.map +0 -1
  624. package/sdk/connection.d.ts +0 -6
  625. package/sdk/connection.js +0 -10
  626. package/sdk/connection.js.map +0 -1
  627. package/sdk/license.js +0 -14
  628. package/sdk/license.js.map +0 -1
  629. package/sdk/open-api.d.ts +0 -10
  630. package/sdk/open-api.js +0 -15
  631. package/sdk/open-api.js.map +0 -1
  632. package/sdk/py.d.ts +0 -14
  633. package/sdk/py.js +0 -18
  634. package/sdk/py.js.map +0 -1
  635. package/sdk/terraform.d.ts +0 -6
  636. package/sdk/terraform.js +0 -11
  637. package/sdk/terraform.js.map +0 -1
  638. package/sdk/ts.d.ts +0 -33
  639. package/sdk/ts.js +0 -53
  640. package/sdk/ts.js.map +0 -1
  641. package/sdk/utils/ast.js +0 -12
  642. package/sdk/utils/ast.js.map +0 -1
  643. package/sdk/utils/format.js +0 -10
  644. package/sdk/utils/format.js.map +0 -1
  645. package/sdk/utils/test.js +0 -10
  646. package/sdk/utils/test.js.map +0 -1
  647. package/src/connection/agent-serve-local.js +0 -48
  648. package/src/connection/agent-serve-local.js.map +0 -1
  649. package/src/connection/serve-local.js +0 -41
  650. package/src/connection/serve-local.js.map +0 -1
  651. package/src/py/agent/react-connection/serve-local.js +0 -38
  652. package/src/py/agent/react-connection/serve-local.js.map +0 -1
  653. package/src/ts/agent/react-connection/serve-local.js +0 -19
  654. package/src/ts/agent/react-connection/serve-local.js.map +0 -1
  655. package/src/utils/files/common/scripts/src/rdb/wait-for-db.ts.template +0 -59
  656. /package/src/agentcore-gateway/files/project/{serve-local.ts.template → local-dev.ts.template} +0 -0
  657. /package/{bin → src/bin}/aws-nx-mcp.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/license/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/license/config.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n getProjects,\n type ProjectConfiguration,\n readProjectConfiguration,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport {\n AWS_NX_PLUGIN_CONFIG_FILE_NAME,\n readAwsNxPluginConfig,\n updateAwsNxPluginConfig,\n} from '../utils/config/utils';\nimport { formatFilesInSubtree } from '../utils/format';\nimport { addDependencyToTargetIfNotPresent } from '../utils/nx';\nimport type {\n CommentSyntax,\n LicenseConfig,\n LicenseSourceConfig,\n} from './config-types';\nimport type { DependencyCheckException } from './dependency-check/types';\nimport type { SPDXLicenseIdentifier } from './schema';\n\n/**\n * Licenses containing a placeholder for the copyright year.\n */\nconst LICENSES_WITH_YEAR: Set<SPDXLicenseIdentifier> = new Set(['MIT']);\n\n/**\n * Defines the comment syntax for popular programming languages\n */\nexport const LANGUAGE_COMMENT_SYNTAX: { [ext: string]: CommentSyntax } = {\n // C++ style comments\n ...Object.fromEntries(\n [\n // Node\n 'js',\n 'ts',\n 'cjs',\n 'mjs',\n 'cts',\n 'mts',\n // React\n 'jsx',\n 'tsx',\n // Web\n 'sass',\n 'scss',\n 'php',\n // Java\n 'java',\n // TypeSpec\n 'tsp',\n // Golang\n 'go',\n // Rust\n 'rs',\n // C and C++\n 'c',\n 'cpp',\n 'cxx',\n 'cc',\n 'h',\n 'hpp',\n // C#\n 'cs',\n // Scala\n 'scala',\n 'sc',\n 'sbt',\n // Kotlin\n 'kt',\n // Swift\n 'swift',\n ].map((ext) => [ext, { line: '//', block: { start: '/*', end: '*/' } }]),\n ),\n // Bash style comments\n ...Object.fromEntries(\n [\n // Bash\n 'sh',\n // Perl\n 'pl',\n // YAML\n 'yaml',\n 'yml',\n // R\n 'r',\n ].map((ext) => [ext, { line: '#' }]),\n ),\n // Docker\n Dockerfile: { line: '#' },\n // Python\n py: { line: '#', block: { start: '\"\"\"', end: '\"\"\"' } },\n // Web\n html: { block: { start: '<!--', end: '-->' } },\n css: { block: { start: '/*', end: '*/' } },\n // Ruby\n rb: { line: '#', block: { start: '=begin', end: '=end' } },\n // F#\n ...Object.fromEntries(\n ['fs', 'fsx'].map((ext) => [\n ext,\n { line: '//', block: { start: '(*', end: '*)' } },\n ]),\n ),\n // Visual Basic\n vb: { line: \"' \" },\n // Lua\n lua: { line: '--', block: { start: '--[[', end: ']]' } },\n // PowerShell\n ps1: { line: '#', block: { start: '<#', end: '#>' } },\n psm1: { line: '#', block: { start: '<#', end: '#>' } },\n // Markdown\n md: { block: { start: '<!--', end: '-->' } },\n // Terraform\n tf: { line: '#', block: { start: '/*', end: '*/' } },\n // Smithy\n smithy: { line: '//' },\n};\n\n/**\n * Module specifier for the license helpers exported by this package, used by\n * imports written into the user's config file.\n */\nconst LICENSE_SDK_MODULE = '@aws/nx-plugin/sdk/license';\n\n/**\n * Build the object literal source for a dependency check exception.\n * `JSON.stringify` produces valid string literals for arbitrary text (quotes,\n * backslashes, newlines all escaped); prettier later normalises quote style.\n */\nconst exceptionLiteral = (exception: DependencyCheckException): string => {\n const parts = [`package: ${JSON.stringify(exception.package)}`];\n if (exception.version !== undefined) {\n parts.push(`version: ${JSON.stringify(exception.version)}`);\n }\n parts.push(`reason: ${JSON.stringify(exception.reason)}`);\n if (exception.spdx !== undefined) {\n parts.push(`spdx: ${JSON.stringify(exception.spdx)}`);\n }\n return `{ ${parts.join(', ')} }`;\n};\n\n/**\n * GritQL `or` block that appends `$ins` (the insert placeholder) to the named\n * array inside the matched `$scope`, without ever producing an array hole:\n * - empty `key: []` → `key: [$ins]` (a list-append `+=` does not match an\n * empty array, so the empty case is rewritten directly)\n * - otherwise → list-append `+=` of `, $ins`; the leading comma is the\n * element separator and `+=` places it correctly for single inline,\n * single-with-trailing-comma and multi-element arrays alike\n */\nconst appendToArray = (key: string, ins: string) =>\n `or {\n $scope <: contains \\`${key}: []\\` => \\`${key}: [${ins}]\\`,\n $scope <: contains \\`${key}: [$items]\\` where { $items += \\`, ${ins}\\` }\n }`;\n\n/**\n * Insert `property` (TypeScript source like `dependencies: { ... }`) as the\n * first property of the `license` object literal.\n *\n * Prepending is comma-safe for every shape — empty `{}`, single- or multi-line.\n * `+=` appending is not: it omits the separator when the last property's value\n * is an object/array literal (e.g. `source: { ... }`), corrupting the file. The\n * property text is routed through a placeholder so its content never enters the\n * GritQL pattern. Returns true if the file changed (a `license` object existed).\n */\nconst prependLicenseProperty = async (\n tree: Tree,\n property: string,\n): Promise<boolean> => {\n const { insertViaGritQL, GRIT_INSERT_PLACEHOLDER } = await import(\n '../utils/ast'\n );\n\n // Non-empty license object: insert before the first existing property.\n const intoNonEmpty = await insertViaGritQL(\n tree,\n AWS_NX_PLUGIN_CONFIG_FILE_NAME,\n `\\`license: { $props }\\` where { $props => \\`${GRIT_INSERT_PLACEHOLDER}, $props\\` }`,\n property,\n );\n if (intoNonEmpty) return true;\n\n // Empty license object: `{ $props }` doesn't match `{}`, so fill it directly.\n return insertViaGritQL(\n tree,\n AWS_NX_PLUGIN_CONFIG_FILE_NAME,\n `\\`license: {}\\` => \\`license: { ${GRIT_INSERT_PLACEHOLDER} }\\``,\n property,\n );\n};\n\n/**\n * Whether `license.dependencies` (the dependency-check block) is configured.\n * Scoped within `license` so a `dependencies`-shaped object elsewhere in the\n * file isn't mistaken for it.\n */\nconst hasDependenciesBlock = async (tree: Tree): Promise<boolean> => {\n if (!tree.exists(AWS_NX_PLUGIN_CONFIG_FILE_NAME)) return false;\n const { matchGritQL } = await import('../utils/ast');\n return matchGritQL(\n tree,\n AWS_NX_PLUGIN_CONFIG_FILE_NAME,\n '`license: { $l }` where { $l <: contains `dependencies: $_` }',\n );\n};\n\n/**\n * Workspace-root npm-ecosystem lockfiles. Each is added to the license-check\n * cache inputs only when present, so the cache invalidates on dependency\n * changes without listing lockfiles for package managers the workspace doesn't\n * use.\n */\nconst NPM_LOCKFILES = [\n 'pnpm-lock.yaml',\n 'yarn.lock',\n 'package-lock.json',\n 'bun.lockb',\n];\n\n/**\n * Recompute the `inputs` of the root `license-check` target from what's\n * currently in the workspace: the present npm lockfiles, the config file, and\n * a recursive uv.lock glob when the dependency check uses a Python collector.\n *\n * The uv lockfile is keyed off the collector (not file presence) because it is\n * created by `uv` *after* the generator runs, and may live in a subdirectory of\n * a uv workspace. Callers run this whenever they change the relevant state, so\n * the inputs stay correct regardless of generator order. No-op if the\n * license-check target doesn't exist yet.\n */\nexport const updateLicenseCheckTargetInputs = async (\n tree: Tree,\n): Promise<void> => {\n const rootProjectJsonPath = 'project.json';\n if (!tree.exists(rootProjectJsonPath)) return;\n\n const rootProject = JSON.parse(tree.read(rootProjectJsonPath, 'utf-8')!);\n const target = rootProject.targets?.['license-check'];\n if (!target) return;\n\n const inputs = NPM_LOCKFILES.filter((f) => tree.exists(f)).map(\n (f) => `{workspaceRoot}/${f}`,\n );\n\n if (await hasPythonCollector(tree)) {\n inputs.push('{workspaceRoot}/**/uv.lock');\n }\n\n inputs.push('{workspaceRoot}/aws-nx-plugin.config.mts');\n\n target.inputs = inputs;\n tree.write(rootProjectJsonPath, JSON.stringify(rootProject, null, 2));\n};\n\n/**\n * Whether the dependency check config has a `pythonCollector` configured.\n */\nconst hasPythonCollector = async (tree: Tree): Promise<boolean> => {\n if (!tree.exists(AWS_NX_PLUGIN_CONFIG_FILE_NAME)) return false;\n const { matchGritQL } = await import('../utils/ast');\n return matchGritQL(tree, AWS_NX_PLUGIN_CONFIG_FILE_NAME, '`pythonCollector`');\n};\n\n/**\n * The name of the project that owns the root `license-check` target, or\n * undefined if no project defines it.\n */\nconst findLicenseCheckProjectName = (tree: Tree): string | undefined => {\n for (const [name, config] of getProjects(tree)) {\n if (config.targets?.['license-check']) return name;\n }\n return undefined;\n};\n\n/**\n * Make a project's `lint` target depend on the root `license-check` target, so\n * license checking runs as part of lint/build. No-op when the project has no\n * `lint` target or there's no license-check target to depend on. Idempotent.\n *\n * Callers format afterwards (generators call `formatFilesInSubtree` at the end),\n * so the rewritten project.json matches prettier.\n */\nexport const addLicenseCheckToLintTarget = (\n tree: Tree,\n projectName: string,\n): void => {\n const licenseCheckProject = findLicenseCheckProjectName(tree);\n if (!licenseCheckProject) return;\n\n let project: ProjectConfiguration;\n try {\n project = readProjectConfiguration(tree, projectName);\n } catch {\n return;\n }\n\n // Only wire projects that actually lint, and never the license-check project\n // itself (a target can't depend on its own project's target).\n if (!project.targets?.lint || projectName === licenseCheckProject) return;\n\n addDependencyToTargetIfNotPresent(project, 'lint', {\n projects: [licenseCheckProject],\n target: 'license-check',\n });\n updateProjectConfiguration(tree, projectName, project);\n};\n\n/**\n * Wire every project's `lint` target to the root `license-check` target.\n * Called by the license generator so existing projects pick up the dependency\n * regardless of the order generators ran in.\n */\nexport const addLicenseCheckToAllLintTargets = (tree: Tree): void => {\n for (const [name] of getProjects(tree)) {\n addLicenseCheckToLintTarget(tree, name);\n }\n};\n\nexport interface EnsureDependencyCheckBlockOptions {\n includeCollectors?: 'npm' | 'npm+python';\n}\n\n/**\n * Ensure the `dependencies` block (dependency license checking) exists within\n * the `license` config. If one already exists it is left untouched, so user\n * customizations survive.\n */\nexport const ensureDependencyCheckBlock = async (\n tree: Tree,\n options?: EnsureDependencyCheckBlockOptions,\n): Promise<void> => {\n if (!tree.exists(AWS_NX_PLUGIN_CONFIG_FILE_NAME)) return;\n\n const { addDestructuredImport } = await import('../utils/ast');\n\n if (await hasDependenciesBlock(tree)) {\n return;\n }\n\n const withPython = options?.includeCollectors === 'npm+python';\n const collectors = withPython\n ? 'collectors: [npmCollector(), pythonCollector()]'\n : 'collectors: [npmCollector()]';\n\n const block = `dependencies: { allow: DEFAULT_LICENSE_ALLOWLIST, ${collectors}, exceptions: [] }`;\n\n // Prepend the block as the first property of the license object. Prepending\n // (rather than `+=` appending) is comma-safe for every shape: GritQL's `+=`\n // omits the separator when the last existing property's value is an object\n // literal (e.g. `source: { ... }`), which would corrupt the file.\n const added = await prependLicenseProperty(tree, block);\n\n // Only add the imports if the block was actually written (i.e. a license\n // object literal existed to attach it to).\n if (added) {\n await addDestructuredImport(\n tree,\n AWS_NX_PLUGIN_CONFIG_FILE_NAME,\n withPython\n ? ['DEFAULT_LICENSE_ALLOWLIST', 'npmCollector', 'pythonCollector']\n : ['DEFAULT_LICENSE_ALLOWLIST', 'npmCollector'],\n LICENSE_SDK_MODULE,\n );\n await formatFilesInSubtree(tree, AWS_NX_PLUGIN_CONFIG_FILE_NAME);\n }\n};\n\n/**\n * Ensure license exceptions are present in `license.dependencies.exceptions`.\n * An exception whose package is already listed is skipped (so existing reasons\n * are never overwritten). Other exceptions, collectors and the allowlist are\n * left untouched.\n *\n * The `dependencies: { $scope }` scope keeps edits within the dependency-check\n * block, so an `exceptions` array elsewhere in the file isn't matched.\n */\nexport const ensureLicenseExceptions = async (\n tree: Tree,\n exceptions: DependencyCheckException[],\n): Promise<void> => {\n if (!tree.exists(AWS_NX_PLUGIN_CONFIG_FILE_NAME)) return;\n\n const { insertViaGritQL, GRIT_INSERT_PLACEHOLDER } = await import(\n '../utils/ast'\n );\n\n if (!(await hasDependenciesBlock(tree))) {\n return;\n }\n\n let modified = false;\n for (const exception of exceptions) {\n const pkg = JSON.stringify(exception.package);\n const inserted = await insertViaGritQL(\n tree,\n AWS_NX_PLUGIN_CONFIG_FILE_NAME,\n `\\`dependencies: { $scope }\\` where {\n $scope <: not contains \\`package: ${pkg}\\`,\n ${appendToArray('exceptions', GRIT_INSERT_PLACEHOLDER)}\n }`,\n exceptionLiteral(exception),\n );\n modified ||= inserted;\n }\n\n if (modified) {\n await formatFilesInSubtree(tree, AWS_NX_PLUGIN_CONFIG_FILE_NAME);\n }\n};\n\n/**\n * Add `pythonCollector()` to `license.dependencies.collectors`, unless one is\n * already configured.\n */\nexport const ensurePythonLicenseCollector = async (\n tree: Tree,\n): Promise<void> => {\n if (!tree.exists(AWS_NX_PLUGIN_CONFIG_FILE_NAME)) return;\n\n const { addDestructuredImport, insertViaGritQL, GRIT_INSERT_PLACEHOLDER } =\n await import('../utils/ast');\n\n if (!(await hasDependenciesBlock(tree))) {\n return;\n }\n\n const added = await insertViaGritQL(\n tree,\n AWS_NX_PLUGIN_CONFIG_FILE_NAME,\n `\\`dependencies: { $scope }\\` where {\n $scope <: not contains \\`pythonCollector\\`,\n ${appendToArray('collectors', GRIT_INSERT_PLACEHOLDER)}\n }`,\n 'pythonCollector()',\n );\n\n if (added) {\n await addDestructuredImport(\n tree,\n AWS_NX_PLUGIN_CONFIG_FILE_NAME,\n ['pythonCollector'],\n LICENSE_SDK_MODULE,\n );\n await formatFilesInSubtree(tree, AWS_NX_PLUGIN_CONFIG_FILE_NAME);\n // Now that a Python collector is configured, ensure uv.lock is a cache\n // input. Runs here (not only in the license generator) so it's added\n // whenever the collector is — e.g. when py#project runs after license.\n await updateLicenseCheckTargetInputs(tree);\n }\n};\n\n/**\n * Build the default `license.source` config for a given license\n */\nexport const defaultLicenseConfig = (\n spdx: SPDXLicenseIdentifier,\n copyrightHolder: string,\n): LicenseSourceConfig => {\n switch (spdx) {\n case 'ASL': {\n // For ASL, we use a \"box\" style license header\n const rawContent = [\n `Copyright ${copyrightHolder}. All Rights Reserved.`,\n '',\n 'Licensed under the Amazon Software License (the \"License\"). You may not use this file except in compliance',\n 'with the License. A copy of the License is located at',\n '',\n ' https://aws.amazon.com/asl/',\n '',\n 'or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES',\n 'OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions',\n 'and limitations under the License.',\n ];\n const maxLen = Math.max(...rawContent.map((line) => line.length));\n const lines = rawContent.map(\n (line) => `${line}${' '.repeat(maxLen - line.length)}`,\n );\n return {\n spdx,\n copyrightHolder,\n header: {\n content: { lines },\n format: {\n '**/*.{js,ts,jsx,tsx,mjs,mts}': {\n blockStart: `/***${'*'.repeat(maxLen)}**`,\n lineStart: ' * ',\n lineEnd: ' *',\n blockEnd: ` ***${'*'.repeat(maxLen)}**/`,\n },\n '**/*.{py,sh,tf}': {\n blockStart: `###${'#'.repeat(maxLen)}##`,\n lineStart: '# ',\n lineEnd: ' #',\n blockEnd: `###${'#'.repeat(maxLen)}##`,\n },\n },\n exclude: ['**/*.gen.*'],\n },\n };\n }\n default: {\n return {\n spdx,\n copyrightHolder,\n ...(LICENSES_WITH_YEAR.has(spdx)\n ? {\n copyrightYear: new Date().getFullYear(),\n }\n : {}),\n header: {\n content: {\n lines: [\n `Copyright ${copyrightHolder}. All Rights Reserved.`,\n `SPDX-License-Identifier: ${spdx}`,\n ],\n },\n format: {\n '**/*.{js,ts,jsx,tsx,mjs,mts}': {\n blockStart: '/**',\n lineStart: ' * ',\n blockEnd: ' */',\n },\n '**/*.{py,sh,tf}': {\n blockStart: '#',\n lineStart: '# ',\n blockEnd: '#',\n },\n },\n exclude: ['**/*.gen.*'],\n },\n };\n }\n }\n};\n\n/**\n * Write the `license.source` config (headers + LICENSE files) to the aws nx\n * plugin config.\n *\n * The `source` block is (re)written, but any existing `license.dependencies`\n * block — a user-customized allowlist, collectors and exceptions — is\n * preserved, so re-running the license generator (e.g. to change the copyright\n * holder) never clobbers dependency-check customizations.\n */\nexport const writeLicenseConfig = async (\n tree: Tree,\n source: LicenseSourceConfig,\n) => {\n const { captureGritQL } = await import('../utils/ast');\n\n // Capture the existing `dependencies: { ... }` block before overwriting the\n // license value, so we can re-attach it afterwards. It's managed by the\n // ensure* helpers, never written from here.\n const preserved = tree.exists(AWS_NX_PLUGIN_CONFIG_FILE_NAME)\n ? await captureGritQL(\n tree,\n AWS_NX_PLUGIN_CONFIG_FILE_NAME,\n '`dependencies: $_`',\n )\n : undefined;\n\n await updateAwsNxPluginConfig(tree, { license: { source } });\n\n // Re-attach the preserved block. The captured text may contain backticks,\n // `${...}` or quotes — prependLicenseProperty routes it through a placeholder\n // so it never enters the GritQL pattern.\n if (preserved) {\n await prependLicenseProperty(tree, preserved);\n await formatFilesInSubtree(tree, AWS_NX_PLUGIN_CONFIG_FILE_NAME);\n }\n};\n\n/**\n * Read license configuration\n */\nexport const readLicenseConfig = async (\n tree: Tree,\n): Promise<LicenseConfig | undefined> => {\n return (await readAwsNxPluginConfig(tree))?.license;\n};\n"],"names":["getProjects","readProjectConfiguration","updateProjectConfiguration","AWS_NX_PLUGIN_CONFIG_FILE_NAME","readAwsNxPluginConfig","updateAwsNxPluginConfig","formatFilesInSubtree","addDependencyToTargetIfNotPresent","LICENSES_WITH_YEAR","Set","LANGUAGE_COMMENT_SYNTAX","Object","fromEntries","map","ext","line","block","start","end","Dockerfile","py","html","css","rb","vb","lua","ps1","psm1","md","tf","smithy","LICENSE_SDK_MODULE","exceptionLiteral","exception","parts","JSON","stringify","package","version","undefined","push","reason","spdx","join","appendToArray","key","ins","prependLicenseProperty","tree","property","insertViaGritQL","GRIT_INSERT_PLACEHOLDER","intoNonEmpty","hasDependenciesBlock","exists","matchGritQL","NPM_LOCKFILES","updateLicenseCheckTargetInputs","rootProjectJsonPath","rootProject","parse","read","target","targets","inputs","filter","f","hasPythonCollector","write","findLicenseCheckProjectName","name","config","addLicenseCheckToLintTarget","projectName","licenseCheckProject","project","lint","projects","addLicenseCheckToAllLintTargets","ensureDependencyCheckBlock","options","addDestructuredImport","withPython","includeCollectors","collectors","added","ensureLicenseExceptions","exceptions","modified","pkg","inserted","ensurePythonLicenseCollector","defaultLicenseConfig","copyrightHolder","rawContent","maxLen","Math","max","length","lines","repeat","header","content","format","blockStart","lineStart","lineEnd","blockEnd","exclude","has","copyrightYear","Date","getFullYear","writeLicenseConfig","source","captureGritQL","preserved","license","readLicenseConfig"],"mappings":"AAAA;;;CAGC,GACD,SACEA,WAAW,EAEXC,wBAAwB,EAExBC,0BAA0B,QACrB,aAAa;AACpB,SACEC,8BAA8B,EAC9BC,qBAAqB,EACrBC,uBAAuB,QAClB,2BAAwB;AAC/B,SAASC,oBAAoB,QAAQ,qBAAkB;AACvD,SAASC,iCAAiC,QAAQ,iBAAc;AAShE;;CAEC,GACD,MAAMC,qBAAiD,IAAIC,IAAI;IAAC;CAAM;AAEtE;;CAEC,GACD,OAAO,MAAMC,0BAA4D;IACvE,qBAAqB;IACrB,GAAGC,OAAOC,WAAW,CACnB;QACE,OAAO;QACP;QACA;QACA;QACA;QACA;QACA;QACA,QAAQ;QACR;QACA;QACA,MAAM;QACN;QACA;QACA;QACA,OAAO;QACP;QACA,WAAW;QACX;QACA,SAAS;QACT;QACA,OAAO;QACP;QACA,YAAY;QACZ;QACA;QACA;QACA;QACA;QACA;QACA,KAAK;QACL;QACA,QAAQ;QACR;QACA;QACA;QACA,SAAS;QACT;QACA,QAAQ;QACR;KACD,CAACC,GAAG,CAAC,CAACC,MAAQ;YAACA;YAAK;gBAAEC,MAAM;gBAAMC,OAAO;oBAAEC,OAAO;oBAAMC,KAAK;gBAAK;YAAE;SAAE,EACxE;IACD,sBAAsB;IACtB,GAAGP,OAAOC,WAAW,CACnB;QACE,OAAO;QACP;QACA,OAAO;QACP;QACA,OAAO;QACP;QACA;QACA,IAAI;QACJ;KACD,CAACC,GAAG,CAAC,CAACC,MAAQ;YAACA;YAAK;gBAAEC,MAAM;YAAI;SAAE,EACpC;IACD,SAAS;IACTI,YAAY;QAAEJ,MAAM;IAAI;IACxB,SAAS;IACTK,IAAI;QAAEL,MAAM;QAAKC,OAAO;YAAEC,OAAO;YAAOC,KAAK;QAAM;IAAE;IACrD,MAAM;IACNG,MAAM;QAAEL,OAAO;YAAEC,OAAO;YAAQC,KAAK;QAAM;IAAE;IAC7CI,KAAK;QAAEN,OAAO;YAAEC,OAAO;YAAMC,KAAK;QAAK;IAAE;IACzC,OAAO;IACPK,IAAI;QAAER,MAAM;QAAKC,OAAO;YAAEC,OAAO;YAAUC,KAAK;QAAO;IAAE;IACzD,KAAK;IACL,GAAGP,OAAOC,WAAW,CACnB;QAAC;QAAM;KAAM,CAACC,GAAG,CAAC,CAACC,MAAQ;YACzBA;YACA;gBAAEC,MAAM;gBAAMC,OAAO;oBAAEC,OAAO;oBAAMC,KAAK;gBAAK;YAAE;SACjD,EACF;IACD,eAAe;IACfM,IAAI;QAAET,MAAM;IAAK;IACjB,MAAM;IACNU,KAAK;QAAEV,MAAM;QAAMC,OAAO;YAAEC,OAAO;YAAQC,KAAK;QAAK;IAAE;IACvD,aAAa;IACbQ,KAAK;QAAEX,MAAM;QAAKC,OAAO;YAAEC,OAAO;YAAMC,KAAK;QAAK;IAAE;IACpDS,MAAM;QAAEZ,MAAM;QAAKC,OAAO;YAAEC,OAAO;YAAMC,KAAK;QAAK;IAAE;IACrD,WAAW;IACXU,IAAI;QAAEZ,OAAO;YAAEC,OAAO;YAAQC,KAAK;QAAM;IAAE;IAC3C,YAAY;IACZW,IAAI;QAAEd,MAAM;QAAKC,OAAO;YAAEC,OAAO;YAAMC,KAAK;QAAK;IAAE;IACnD,SAAS;IACTY,QAAQ;QAAEf,MAAM;IAAK;AACvB,EAAE;AAEF;;;CAGC,GACD,MAAMgB,qBAAqB;AAE3B;;;;CAIC,GACD,MAAMC,mBAAmB,CAACC;IACxB,MAAMC,QAAQ;QAAC,CAAC,SAAS,EAAEC,KAAKC,SAAS,CAACH,UAAUI,OAAO,GAAG;KAAC;IAC/D,IAAIJ,UAAUK,OAAO,KAAKC,WAAW;QACnCL,MAAMM,IAAI,CAAC,CAAC,SAAS,EAAEL,KAAKC,SAAS,CAACH,UAAUK,OAAO,GAAG;IAC5D;IACAJ,MAAMM,IAAI,CAAC,CAAC,QAAQ,EAAEL,KAAKC,SAAS,CAACH,UAAUQ,MAAM,GAAG;IACxD,IAAIR,UAAUS,IAAI,KAAKH,WAAW;QAChCL,MAAMM,IAAI,CAAC,CAAC,MAAM,EAAEL,KAAKC,SAAS,CAACH,UAAUS,IAAI,GAAG;IACtD;IACA,OAAO,CAAC,EAAE,EAAER,MAAMS,IAAI,CAAC,MAAM,EAAE,CAAC;AAClC;AAEA;;;;;;;;CAQC,GACD,MAAMC,gBAAgB,CAACC,KAAaC,MAClC,CAAC;yBACsB,EAAED,IAAI,YAAY,EAAEA,IAAI,GAAG,EAAEC,IAAI;yBACjC,EAAED,IAAI,mCAAmC,EAAEC,IAAI;GACrE,CAAC;AAEJ;;;;;;;;;CASC,GACD,MAAMC,yBAAyB,OAC7BC,MACAC;IAEA,MAAM,EAAEC,eAAe,EAAEC,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAC/D;IAGF,uEAAuE;IACvE,MAAMC,eAAe,MAAMF,gBACzBF,MACA7C,gCACA,CAAC,4CAA4C,EAAEgD,wBAAwB,YAAY,CAAC,EACpFF;IAEF,IAAIG,cAAc,OAAO;IAEzB,8EAA8E;IAC9E,OAAOF,gBACLF,MACA7C,gCACA,CAAC,gCAAgC,EAAEgD,wBAAwB,IAAI,CAAC,EAChEF;AAEJ;AAEA;;;;CAIC,GACD,MAAMI,uBAAuB,OAAOL;IAClC,IAAI,CAACA,KAAKM,MAAM,CAACnD,iCAAiC,OAAO;IACzD,MAAM,EAAEoD,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC;IACrC,OAAOA,YACLP,MACA7C,gCACA;AAEJ;AAEA;;;;;CAKC,GACD,MAAMqD,gBAAgB;IACpB;IACA;IACA;IACA;CACD;AAED;;;;;;;;;;CAUC,GACD,OAAO,MAAMC,iCAAiC,OAC5CT;IAEA,MAAMU,sBAAsB;IAC5B,IAAI,CAACV,KAAKM,MAAM,CAACI,sBAAsB;IAEvC,MAAMC,cAAcxB,KAAKyB,KAAK,CAACZ,KAAKa,IAAI,CAACH,qBAAqB;IAC9D,MAAMI,SAASH,YAAYI,OAAO,EAAE,CAAC,gBAAgB;IACrD,IAAI,CAACD,QAAQ;IAEb,MAAME,SAASR,cAAcS,MAAM,CAAC,CAACC,IAAMlB,KAAKM,MAAM,CAACY,IAAIrD,GAAG,CAC5D,CAACqD,IAAM,CAAC,gBAAgB,EAAEA,GAAG;IAG/B,IAAI,MAAMC,mBAAmBnB,OAAO;QAClCgB,OAAOxB,IAAI,CAAC;IACd;IAEAwB,OAAOxB,IAAI,CAAC;IAEZsB,OAAOE,MAAM,GAAGA;IAChBhB,KAAKoB,KAAK,CAACV,qBAAqBvB,KAAKC,SAAS,CAACuB,aAAa,MAAM;AACpE,EAAE;AAEF;;CAEC,GACD,MAAMQ,qBAAqB,OAAOnB;IAChC,IAAI,CAACA,KAAKM,MAAM,CAACnD,iCAAiC,OAAO;IACzD,MAAM,EAAEoD,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC;IACrC,OAAOA,YAAYP,MAAM7C,gCAAgC;AAC3D;AAEA;;;CAGC,GACD,MAAMkE,8BAA8B,CAACrB;IACnC,KAAK,MAAM,CAACsB,MAAMC,OAAO,IAAIvE,YAAYgD,MAAO;QAC9C,IAAIuB,OAAOR,OAAO,EAAE,CAAC,gBAAgB,EAAE,OAAOO;IAChD;IACA,OAAO/B;AACT;AAEA;;;;;;;CAOC,GACD,OAAO,MAAMiC,8BAA8B,CACzCxB,MACAyB;IAEA,MAAMC,sBAAsBL,4BAA4BrB;IACxD,IAAI,CAAC0B,qBAAqB;IAE1B,IAAIC;IACJ,IAAI;QACFA,UAAU1E,yBAAyB+C,MAAMyB;IAC3C,EAAE,OAAM;QACN;IACF;IAEA,6EAA6E;IAC7E,8DAA8D;IAC9D,IAAI,CAACE,QAAQZ,OAAO,EAAEa,QAAQH,gBAAgBC,qBAAqB;IAEnEnE,kCAAkCoE,SAAS,QAAQ;QACjDE,UAAU;YAACH;SAAoB;QAC/BZ,QAAQ;IACV;IACA5D,2BAA2B8C,MAAMyB,aAAaE;AAChD,EAAE;AAEF;;;;CAIC,GACD,OAAO,MAAMG,kCAAkC,CAAC9B;IAC9C,KAAK,MAAM,CAACsB,KAAK,IAAItE,YAAYgD,MAAO;QACtCwB,4BAA4BxB,MAAMsB;IACpC;AACF,EAAE;AAMF;;;;CAIC,GACD,OAAO,MAAMS,6BAA6B,OACxC/B,MACAgC;IAEA,IAAI,CAAChC,KAAKM,MAAM,CAACnD,iCAAiC;IAElD,MAAM,EAAE8E,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC;IAE/C,IAAI,MAAM5B,qBAAqBL,OAAO;QACpC;IACF;IAEA,MAAMkC,aAAaF,SAASG,sBAAsB;IAClD,MAAMC,aAAaF,aACf,oDACA;IAEJ,MAAMlE,QAAQ,CAAC,kDAAkD,EAAEoE,WAAW,kBAAkB,CAAC;IAEjG,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,kEAAkE;IAClE,MAAMC,QAAQ,MAAMtC,uBAAuBC,MAAMhC;IAEjD,yEAAyE;IACzE,2CAA2C;IAC3C,IAAIqE,OAAO;QACT,MAAMJ,sBACJjC,MACA7C,gCACA+E,aACI;YAAC;YAA6B;YAAgB;SAAkB,GAChE;YAAC;YAA6B;SAAe,EACjDnD;QAEF,MAAMzB,qBAAqB0C,MAAM7C;IACnC;AACF,EAAE;AAEF;;;;;;;;CAQC,GACD,OAAO,MAAMmF,0BAA0B,OACrCtC,MACAuC;IAEA,IAAI,CAACvC,KAAKM,MAAM,CAACnD,iCAAiC;IAElD,MAAM,EAAE+C,eAAe,EAAEC,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAC/D;IAGF,IAAI,CAAE,MAAME,qBAAqBL,OAAQ;QACvC;IACF;IAEA,IAAIwC,WAAW;IACf,KAAK,MAAMvD,aAAasD,WAAY;QAClC,MAAME,MAAMtD,KAAKC,SAAS,CAACH,UAAUI,OAAO;QAC5C,MAAMqD,WAAW,MAAMxC,gBACrBF,MACA7C,gCACA,CAAC;0CACmC,EAAEsF,IAAI;QACxC,EAAE7C,cAAc,cAAcO,yBAAyB;OACxD,CAAC,EACFnB,iBAAiBC;QAEnBuD,aAAaE;IACf;IAEA,IAAIF,UAAU;QACZ,MAAMlF,qBAAqB0C,MAAM7C;IACnC;AACF,EAAE;AAEF;;;CAGC,GACD,OAAO,MAAMwF,+BAA+B,OAC1C3C;IAEA,IAAI,CAACA,KAAKM,MAAM,CAACnD,iCAAiC;IAElD,MAAM,EAAE8E,qBAAqB,EAAE/B,eAAe,EAAEC,uBAAuB,EAAE,GACvE,MAAM,MAAM,CAAC;IAEf,IAAI,CAAE,MAAME,qBAAqBL,OAAQ;QACvC;IACF;IAEA,MAAMqC,QAAQ,MAAMnC,gBAClBF,MACA7C,gCACA,CAAC;;MAEC,EAAEyC,cAAc,cAAcO,yBAAyB;KACxD,CAAC,EACF;IAGF,IAAIkC,OAAO;QACT,MAAMJ,sBACJjC,MACA7C,gCACA;YAAC;SAAkB,EACnB4B;QAEF,MAAMzB,qBAAqB0C,MAAM7C;QACjC,uEAAuE;QACvE,qEAAqE;QACrE,uEAAuE;QACvE,MAAMsD,+BAA+BT;IACvC;AACF,EAAE;AAEF;;CAEC,GACD,OAAO,MAAM4C,uBAAuB,CAClClD,MACAmD;IAEA,OAAQnD;QACN,KAAK;YAAO;gBACV,+CAA+C;gBAC/C,MAAMoD,aAAa;oBACjB,CAAC,UAAU,EAAED,gBAAgB,sBAAsB,CAAC;oBACpD;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;iBACD;gBACD,MAAME,SAASC,KAAKC,GAAG,IAAIH,WAAWjF,GAAG,CAAC,CAACE,OAASA,KAAKmF,MAAM;gBAC/D,MAAMC,QAAQL,WAAWjF,GAAG,CAC1B,CAACE,OAAS,GAAGA,OAAO,IAAIqF,MAAM,CAACL,SAAShF,KAAKmF,MAAM,GAAG;gBAExD,OAAO;oBACLxD;oBACAmD;oBACAQ,QAAQ;wBACNC,SAAS;4BAAEH;wBAAM;wBACjBI,QAAQ;4BACN,gCAAgC;gCAC9BC,YAAY,CAAC,IAAI,EAAE,IAAIJ,MAAM,CAACL,QAAQ,EAAE,CAAC;gCACzCU,WAAW;gCACXC,SAAS;gCACTC,UAAU,CAAC,IAAI,EAAE,IAAIP,MAAM,CAACL,QAAQ,GAAG,CAAC;4BAC1C;4BACA,mBAAmB;gCACjBS,YAAY,CAAC,GAAG,EAAE,IAAIJ,MAAM,CAACL,QAAQ,EAAE,CAAC;gCACxCU,WAAW;gCACXC,SAAS;gCACTC,UAAU,CAAC,GAAG,EAAE,IAAIP,MAAM,CAACL,QAAQ,EAAE,CAAC;4BACxC;wBACF;wBACAa,SAAS;4BAAC;yBAAa;oBACzB;gBACF;YACF;QACA;YAAS;gBACP,OAAO;oBACLlE;oBACAmD;oBACA,GAAIrF,mBAAmBqG,GAAG,CAACnE,QACvB;wBACEoE,eAAe,IAAIC,OAAOC,WAAW;oBACvC,IACA,CAAC,CAAC;oBACNX,QAAQ;wBACNC,SAAS;4BACPH,OAAO;gCACL,CAAC,UAAU,EAAEN,gBAAgB,sBAAsB,CAAC;gCACpD,CAAC,yBAAyB,EAAEnD,MAAM;6BACnC;wBACH;wBACA6D,QAAQ;4BACN,gCAAgC;gCAC9BC,YAAY;gCACZC,WAAW;gCACXE,UAAU;4BACZ;4BACA,mBAAmB;gCACjBH,YAAY;gCACZC,WAAW;gCACXE,UAAU;4BACZ;wBACF;wBACAC,SAAS;4BAAC;yBAAa;oBACzB;gBACF;YACF;IACF;AACF,EAAE;AAEF;;;;;;;;CAQC,GACD,OAAO,MAAMK,qBAAqB,OAChCjE,MACAkE;IAEA,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC;IAEvC,4EAA4E;IAC5E,wEAAwE;IACxE,4CAA4C;IAC5C,MAAMC,YAAYpE,KAAKM,MAAM,CAACnD,kCAC1B,MAAMgH,cACJnE,MACA7C,gCACA,wBAEFoC;IAEJ,MAAMlC,wBAAwB2C,MAAM;QAAEqE,SAAS;YAAEH;QAAO;IAAE;IAE1D,0EAA0E;IAC1E,8EAA8E;IAC9E,yCAAyC;IACzC,IAAIE,WAAW;QACb,MAAMrE,uBAAuBC,MAAMoE;QACnC,MAAM9G,qBAAqB0C,MAAM7C;IACnC;AACF,EAAE;AAEF;;CAEC,GACD,OAAO,MAAMmH,oBAAoB,OAC/BtE;IAEA,OAAQ,CAAA,MAAM5C,sBAAsB4C,KAAI,GAAIqE;AAC9C,EAAE"}
@@ -1,49 +1,52 @@
1
- "use strict";
2
1
  /**
3
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
3
  * SPDX-License-Identifier: Apache-2.0
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.formatReport = exports.runCheck = void 0;
8
- const utils_1 = require("../../utils/config/utils");
9
- const collector_1 = require("./collectors/collector");
10
- const evaluator_1 = require("./evaluator");
11
- const findException = (exceptions, name, version) => {
12
- if (!exceptions)
13
- return undefined;
14
- return exceptions.find((e) => e && e.package === name && (!e.version || e.version === version));
4
+ */ import { AWS_NX_PLUGIN_CONFIG_FILE_NAME } from "../../utils/config/utils.js";
5
+ import { DEFAULT_COLLECTORS } from "./collectors/collector.js";
6
+ import { createEvaluator } from "./evaluator.js";
7
+ const findException = (exceptions, name, version)=>{
8
+ if (!exceptions) return undefined;
9
+ return exceptions.find((e)=>e && e.package === name && (!e.version || e.version === version));
15
10
  };
16
- const runCheck = async (options) => {
11
+ export const runCheck = async (options)=>{
17
12
  const { projectRoot, config } = options;
18
- const collectors = options.collectors ?? collector_1.DEFAULT_COLLECTORS;
19
- const evaluator = (0, evaluator_1.createEvaluator)({ allow: config.allow });
20
- const allDeps = await Promise.all(collectors.map((c) => c.collect({ workspaceRoot: projectRoot })));
13
+ const collectors = options.collectors ?? DEFAULT_COLLECTORS;
14
+ const evaluator = createEvaluator({
15
+ allow: config.allow
16
+ });
17
+ const allDeps = await Promise.all(collectors.map((c)=>c.collect({
18
+ workspaceRoot: projectRoot
19
+ })));
21
20
  const dependencies = [];
22
- for (const deps of allDeps) {
23
- for (const dep of deps) {
21
+ for (const deps of allDeps){
22
+ for (const dep of deps){
24
23
  const exception = findException(config.exceptions, dep.name, dep.version);
25
24
  const license = exception?.spdx ?? dep.rawLicense;
26
25
  const status = exception ? 'PRE_APPROVED' : evaluator.evaluate(license);
27
- config.onDependency?.({ package: dep.name, spdx: license });
26
+ config.onDependency?.({
27
+ package: dep.name,
28
+ spdx: license
29
+ });
28
30
  dependencies.push({
29
31
  name: dep.name,
30
32
  version: dep.version,
31
33
  ecosystem: dep.ecosystem,
32
34
  rawLicense: dep.rawLicense,
33
35
  status,
34
- exception,
36
+ exception
35
37
  });
36
38
  }
37
39
  }
38
- const pass = !dependencies.some((d) => d.status === 'NOT_APPROVED' || d.status === 'UNKNOWN');
39
- return { pass, dependencies };
40
+ const pass = !dependencies.some((d)=>d.status === 'NOT_APPROVED' || d.status === 'UNKNOWN');
41
+ return {
42
+ pass,
43
+ dependencies
44
+ };
40
45
  };
41
- exports.runCheck = runCheck;
42
- const formatReport = (result, options) => {
46
+ export const formatReport = (result, options)=>{
43
47
  const groups = new Map();
44
- for (const dep of result.dependencies) {
45
- if (dep.status === 'PRE_APPROVED')
46
- continue;
48
+ for (const dep of result.dependencies){
49
+ if (dep.status === 'PRE_APPROVED') continue;
47
50
  const arr = groups.get(dep.status) ?? [];
48
51
  arr.push(dep);
49
52
  groups.set(dep.status, arr);
@@ -53,59 +56,61 @@ const formatReport = (result, options) => {
53
56
  return `License check passed (${total} dependencies inspected).`;
54
57
  }
55
58
  const failing = [
56
- ...(groups.get('NOT_APPROVED') ?? []),
57
- ...(groups.get('UNKNOWN') ?? []),
59
+ ...groups.get('NOT_APPROVED') ?? [],
60
+ ...groups.get('UNKNOWN') ?? []
61
+ ];
62
+ const lines = [
63
+ 'License check failed:',
64
+ ''
58
65
  ];
59
- const lines = ['License check failed:', ''];
60
- for (const status of ['NOT_APPROVED', 'UNKNOWN']) {
66
+ for (const status of [
67
+ 'NOT_APPROVED',
68
+ 'UNKNOWN'
69
+ ]){
61
70
  const deps = groups.get(status);
62
- if (!deps || deps.length === 0)
63
- continue;
71
+ if (!deps || deps.length === 0) continue;
64
72
  lines.push(` ${status}:`);
65
- for (const dep of deps) {
73
+ for (const dep of deps){
66
74
  const license = dep.rawLicense || '(no license declared)';
67
75
  lines.push(` - ${dep.name}@${dep.version} [${dep.ecosystem}] ${license}`);
68
76
  }
69
77
  lines.push('');
70
78
  }
71
- const collectors = options?.collectors ?? collector_1.DEFAULT_COLLECTORS;
72
- const activeEcosystems = new Set(result.dependencies.map((d) => d.ecosystem));
73
- const traceCommands = collectors.filter((c) => {
74
- if (!c.traceCommand)
75
- return false;
79
+ const collectors = options?.collectors ?? DEFAULT_COLLECTORS;
80
+ const activeEcosystems = new Set(result.dependencies.map((d)=>d.ecosystem));
81
+ const traceCommands = collectors.filter((c)=>{
82
+ if (!c.traceCommand) return false;
76
83
  const eco = c.name === 'python' ? 'pypi' : c.name;
77
84
  return activeEcosystems.has(eco);
78
85
  });
79
86
  if (traceCommands.length > 0) {
80
87
  lines.push('To trace the dependency chain:');
81
- for (const c of traceCommands) {
88
+ for (const c of traceCommands){
82
89
  lines.push(` ${c.name}: ${c.traceCommand}`);
83
90
  }
84
91
  lines.push('');
85
92
  }
86
- lines.push(`To fix, add exceptions to license.dependencies.exceptions in ${utils_1.AWS_NX_PLUGIN_CONFIG_FILE_NAME}:`);
93
+ lines.push(`To fix, add exceptions to license.dependencies.exceptions in ${AWS_NX_PLUGIN_CONFIG_FILE_NAME}:`);
87
94
  lines.push('');
88
95
  lines.push(' exceptions: [');
89
- for (const dep of failing) {
96
+ for (const dep of failing){
90
97
  lines.push(` { package: '${dep.name}', reason: '<your reason>' },`);
91
98
  }
92
99
  lines.push(' ]');
93
100
  lines.push('');
94
101
  const uniqueLicenses = [
95
- ...new Set(failing
96
- .filter((d) => d.rawLicense && d.status === 'NOT_APPROVED')
97
- .map((d) => d.rawLicense)),
102
+ ...new Set(failing.filter((d)=>d.rawLicense && d.status === 'NOT_APPROVED').map((d)=>d.rawLicense))
98
103
  ];
99
104
  if (uniqueLicenses.length > 0) {
100
105
  lines.push('Or add the license to license.dependencies.allow if it should be broadly permitted:');
101
106
  lines.push('');
102
107
  lines.push(' allow: [');
103
- for (const lic of uniqueLicenses) {
108
+ for (const lic of uniqueLicenses){
104
109
  lines.push(` { spdxId: '${lic}', fullName: '${lic}', aliases: [] },`);
105
110
  }
106
111
  lines.push(' ]');
107
112
  }
108
113
  return lines.join('\n');
109
114
  };
110
- exports.formatReport = formatReport;
115
+
111
116
  //# sourceMappingURL=check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/license/dependency-check/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/license/dependency-check/check.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AWS_NX_PLUGIN_CONFIG_FILE_NAME } from '../../utils/config/utils';\nimport {\n DEFAULT_COLLECTORS,\n type LicenseCollector,\n} from './collectors/collector';\nimport { createEvaluator } from './evaluator';\nimport type {\n CheckedDependency,\n CheckResult,\n DependencyCheckConfig,\n DependencyCheckException,\n} from './types';\n\nexport interface RunCheckOptions {\n projectRoot: string;\n config: DependencyCheckConfig;\n collectors?: LicenseCollector[];\n}\n\nconst findException = (\n exceptions: DependencyCheckException[] | undefined,\n name: string,\n version: string,\n): DependencyCheckException | undefined => {\n if (!exceptions) return undefined;\n return exceptions.find(\n (e) => e && e.package === name && (!e.version || e.version === version),\n );\n};\n\nexport const runCheck = async (\n options: RunCheckOptions,\n): Promise<CheckResult> => {\n const { projectRoot, config } = options;\n const collectors = options.collectors ?? DEFAULT_COLLECTORS;\n const evaluator = createEvaluator({ allow: config.allow });\n\n const allDeps = await Promise.all(\n collectors.map((c) => c.collect({ workspaceRoot: projectRoot })),\n );\n\n const dependencies: CheckedDependency[] = [];\n\n for (const deps of allDeps) {\n for (const dep of deps) {\n const exception = findException(config.exceptions, dep.name, dep.version);\n const license = exception?.spdx ?? dep.rawLicense;\n const status = exception ? 'PRE_APPROVED' : evaluator.evaluate(license);\n config.onDependency?.({ package: dep.name, spdx: license });\n dependencies.push({\n name: dep.name,\n version: dep.version,\n ecosystem: dep.ecosystem,\n rawLicense: dep.rawLicense,\n status,\n exception,\n });\n }\n }\n\n const pass = !dependencies.some(\n (d) => d.status === 'NOT_APPROVED' || d.status === 'UNKNOWN',\n );\n\n return { pass, dependencies };\n};\n\nexport interface FormatReportOptions {\n collectors?: LicenseCollector[];\n}\n\nexport const formatReport = (\n result: CheckResult,\n options?: FormatReportOptions,\n): string => {\n const groups = new Map<string, CheckedDependency[]>();\n for (const dep of result.dependencies) {\n if (dep.status === 'PRE_APPROVED') continue;\n const arr = groups.get(dep.status) ?? [];\n arr.push(dep);\n groups.set(dep.status, arr);\n }\n\n if (groups.size === 0) {\n const total = result.dependencies.length;\n return `License check passed (${total} dependencies inspected).`;\n }\n\n const failing = [\n ...(groups.get('NOT_APPROVED') ?? []),\n ...(groups.get('UNKNOWN') ?? []),\n ];\n\n const lines: string[] = ['License check failed:', ''];\n for (const status of ['NOT_APPROVED', 'UNKNOWN'] as const) {\n const deps = groups.get(status);\n if (!deps || deps.length === 0) continue;\n lines.push(` ${status}:`);\n for (const dep of deps) {\n const license = dep.rawLicense || '(no license declared)';\n lines.push(\n ` - ${dep.name}@${dep.version} [${dep.ecosystem}] ${license}`,\n );\n }\n lines.push('');\n }\n\n const collectors = options?.collectors ?? DEFAULT_COLLECTORS;\n const activeEcosystems = new Set(result.dependencies.map((d) => d.ecosystem));\n const traceCommands = collectors.filter((c) => {\n if (!c.traceCommand) return false;\n const eco = c.name === 'python' ? 'pypi' : c.name;\n return activeEcosystems.has(eco);\n });\n if (traceCommands.length > 0) {\n lines.push('To trace the dependency chain:');\n for (const c of traceCommands) {\n lines.push(` ${c.name}: ${c.traceCommand}`);\n }\n lines.push('');\n }\n\n lines.push(\n `To fix, add exceptions to license.dependencies.exceptions in ${AWS_NX_PLUGIN_CONFIG_FILE_NAME}:`,\n );\n lines.push('');\n lines.push(' exceptions: [');\n for (const dep of failing) {\n lines.push(` { package: '${dep.name}', reason: '<your reason>' },`);\n }\n lines.push(' ]');\n lines.push('');\n const uniqueLicenses = [\n ...new Set(\n failing\n .filter((d) => d.rawLicense && d.status === 'NOT_APPROVED')\n .map((d) => d.rawLicense),\n ),\n ];\n if (uniqueLicenses.length > 0) {\n lines.push(\n 'Or add the license to license.dependencies.allow if it should be broadly permitted:',\n );\n lines.push('');\n lines.push(' allow: [');\n for (const lic of uniqueLicenses) {\n lines.push(` { spdxId: '${lic}', fullName: '${lic}', aliases: [] },`);\n }\n lines.push(' ]');\n }\n\n return lines.join('\\n');\n};\n"],"names":["AWS_NX_PLUGIN_CONFIG_FILE_NAME","DEFAULT_COLLECTORS","createEvaluator","findException","exceptions","name","version","undefined","find","e","package","runCheck","options","projectRoot","config","collectors","evaluator","allow","allDeps","Promise","all","map","c","collect","workspaceRoot","dependencies","deps","dep","exception","license","spdx","rawLicense","status","evaluate","onDependency","push","ecosystem","pass","some","d","formatReport","result","groups","Map","arr","get","set","size","total","length","failing","lines","activeEcosystems","Set","traceCommands","filter","traceCommand","eco","has","uniqueLicenses","lic","join"],"mappings":"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"}
@@ -1,76 +1,46 @@
1
- "use strict";
2
1
  /**
3
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
3
  * SPDX-License-Identifier: Apache-2.0
5
- */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
- Object.defineProperty(o, "default", { enumerable: true, value: v });
19
- }) : function(o, v) {
20
- o["default"] = v;
21
- });
22
- var __importStar = (this && this.__importStar) || (function () {
23
- var ownKeys = function(o) {
24
- ownKeys = Object.getOwnPropertyNames || function (o) {
25
- var ar = [];
26
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
- return ar;
28
- };
29
- return ownKeys(o);
30
- };
31
- return function (mod) {
32
- if (mod && mod.__esModule) return mod;
33
- var result = {};
34
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
- __setModuleDefault(result, mod);
36
- return result;
37
- };
38
- })();
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.DEFAULT_COLLECTORS = exports.pythonCollector = exports.npmCollector = void 0;
41
- const npmCollector = () => ({
42
- name: 'npm',
43
- get traceCommand() {
44
- const { existsSync } = require('fs');
45
- const { join } = require('path');
46
- const { workspaceRoot } = require('@nx/devkit');
47
- if (existsSync(join(workspaceRoot, 'yarn.lock')))
48
- return 'yarn why <package>';
49
- if (existsSync(join(workspaceRoot, 'bun.lockb')))
50
- return 'bun pm why <package>';
51
- if (existsSync(join(workspaceRoot, 'package-lock.json')))
52
- return 'npm why <package>';
53
- return 'pnpm why <package>';
54
- },
55
- async collect({ workspaceRoot }) {
56
- const { collectNpmDependencies } = await Promise.resolve().then(() => __importStar(require('./npm-collector')));
57
- return (await collectNpmDependencies({ start: workspaceRoot })).map((d) => ({ ...d, ecosystem: 'npm' }));
58
- },
59
- });
60
- exports.npmCollector = npmCollector;
61
- const pythonCollector = () => ({
62
- name: 'python',
63
- traceCommand: 'uv tree --invert --package <package>',
64
- async collect({ workspaceRoot }) {
65
- const { collectPythonDependencies } = await Promise.resolve().then(() => __importStar(require('./python-collector')));
66
- const { findWorkspacePyProjectNames } = await Promise.resolve().then(() => __importStar(require('./python-collector')));
67
- const excludePackages = await findWorkspacePyProjectNames(workspaceRoot);
68
- return (await collectPythonDependencies({ start: workspaceRoot, excludePackages })).map((d) => ({ ...d, ecosystem: 'pypi' }));
69
- },
70
- });
71
- exports.pythonCollector = pythonCollector;
72
- exports.DEFAULT_COLLECTORS = [
73
- (0, exports.npmCollector)(),
74
- (0, exports.pythonCollector)(),
4
+ */ import { workspaceRoot } from "@nx/devkit";
5
+ import { existsSync } from "fs";
6
+ import { join } from "path";
7
+ export const npmCollector = ()=>({
8
+ name: 'npm',
9
+ get traceCommand () {
10
+ if (existsSync(join(workspaceRoot, 'yarn.lock'))) return 'yarn why <package>';
11
+ if (existsSync(join(workspaceRoot, 'bun.lockb'))) return 'bun pm why <package>';
12
+ if (existsSync(join(workspaceRoot, 'package-lock.json'))) return 'npm why <package>';
13
+ return 'pnpm why <package>';
14
+ },
15
+ async collect ({ workspaceRoot }) {
16
+ const { collectNpmDependencies } = await import("./npm-collector.js");
17
+ return (await collectNpmDependencies({
18
+ start: workspaceRoot
19
+ })).map((d)=>({
20
+ ...d,
21
+ ecosystem: 'npm'
22
+ }));
23
+ }
24
+ });
25
+ export const pythonCollector = ()=>({
26
+ name: 'python',
27
+ traceCommand: 'uv tree --invert --package <package>',
28
+ async collect ({ workspaceRoot }) {
29
+ const { collectPythonDependencies } = await import("./python-collector.js");
30
+ const { findWorkspacePyProjectNames } = await import("./python-collector.js");
31
+ const excludePackages = await findWorkspacePyProjectNames(workspaceRoot);
32
+ return (await collectPythonDependencies({
33
+ start: workspaceRoot,
34
+ excludePackages
35
+ })).map((d)=>({
36
+ ...d,
37
+ ecosystem: 'pypi'
38
+ }));
39
+ }
40
+ });
41
+ export const DEFAULT_COLLECTORS = [
42
+ npmCollector(),
43
+ pythonCollector()
75
44
  ];
45
+
76
46
  //# sourceMappingURL=collector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/license/dependency-check/collectors/collector.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBI,MAAM,YAAY,GAAG,GAAqB,EAAE,CAAC,CAAC;IACnD,IAAI,EAAE,KAAK;IACX,IAAI,YAAY;QACd,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC9C,OAAO,oBAAoB,CAAC;QAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC9C,OAAO,sBAAsB,CAAC;QAChC,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;YACtD,OAAO,mBAAmB,CAAC;QAC7B,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE;QAC7B,MAAM,EAAE,sBAAsB,EAAE,GAAG,wDAAa,iBAAiB,GAAC,CAAC;QACnE,OAAO,CAAC,MAAM,sBAAsB,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,GAAG,CACjE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CACpC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AApBU,QAAA,YAAY,gBAoBtB;AAEI,MAAM,eAAe,GAAG,GAAqB,EAAE,CAAC,CAAC;IACtD,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,sCAAsC;IACpD,KAAK,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE;QAC7B,MAAM,EAAE,yBAAyB,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QACzE,MAAM,EAAE,2BAA2B,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QAC3E,MAAM,eAAe,GAAG,MAAM,2BAA2B,CAAC,aAAa,CAAC,CAAC;QACzE,OAAO,CACL,MAAM,yBAAyB,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CAC3E,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;CACF,CAAC,CAAC;AAXU,QAAA,eAAe,mBAWzB;AAEU,QAAA,kBAAkB,GAAuB;IACpD,IAAA,oBAAY,GAAE;IACd,IAAA,uBAAe,GAAE;CAClB,CAAC"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/license/dependency-check/collectors/collector.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { workspaceRoot } from '@nx/devkit';\nimport { existsSync } from 'fs';\nimport { join } from 'path';\n\nexport interface CollectedDependency {\n name: string;\n version: string;\n rawLicense: string;\n ecosystem: string;\n path?: string;\n}\n\nexport interface LicenseCollector {\n name: string;\n traceCommand?: string;\n collect(options: { workspaceRoot: string }): Promise<CollectedDependency[]>;\n}\n\nexport const npmCollector = (): LicenseCollector => ({\n name: 'npm',\n get traceCommand() {\n if (existsSync(join(workspaceRoot, 'yarn.lock')))\n return 'yarn why <package>';\n if (existsSync(join(workspaceRoot, 'bun.lockb')))\n return 'bun pm why <package>';\n if (existsSync(join(workspaceRoot, 'package-lock.json')))\n return 'npm why <package>';\n return 'pnpm why <package>';\n },\n async collect({ workspaceRoot }) {\n const { collectNpmDependencies } = await import('./npm-collector');\n return (await collectNpmDependencies({ start: workspaceRoot })).map(\n (d) => ({ ...d, ecosystem: 'npm' }),\n );\n },\n});\n\nexport const pythonCollector = (): LicenseCollector => ({\n name: 'python',\n traceCommand: 'uv tree --invert --package <package>',\n async collect({ workspaceRoot }) {\n const { collectPythonDependencies } = await import('./python-collector');\n const { findWorkspacePyProjectNames } = await import('./python-collector');\n const excludePackages = await findWorkspacePyProjectNames(workspaceRoot);\n return (\n await collectPythonDependencies({ start: workspaceRoot, excludePackages })\n ).map((d) => ({ ...d, ecosystem: 'pypi' }));\n },\n});\n\nexport const DEFAULT_COLLECTORS: LicenseCollector[] = [\n npmCollector(),\n pythonCollector(),\n];\n"],"names":["workspaceRoot","existsSync","join","npmCollector","name","traceCommand","collect","collectNpmDependencies","start","map","d","ecosystem","pythonCollector","collectPythonDependencies","findWorkspacePyProjectNames","excludePackages","DEFAULT_COLLECTORS"],"mappings":"AAAA;;;CAGC,GAED,SAASA,aAAa,QAAQ,aAAa;AAC3C,SAASC,UAAU,QAAQ,KAAK;AAChC,SAASC,IAAI,QAAQ,OAAO;AAgB5B,OAAO,MAAMC,eAAe,IAAyB,CAAA;QACnDC,MAAM;QACN,IAAIC,gBAAe;YACjB,IAAIJ,WAAWC,KAAKF,eAAe,eACjC,OAAO;YACT,IAAIC,WAAWC,KAAKF,eAAe,eACjC,OAAO;YACT,IAAIC,WAAWC,KAAKF,eAAe,uBACjC,OAAO;YACT,OAAO;QACT;QACA,MAAMM,SAAQ,EAAEN,aAAa,EAAE;YAC7B,MAAM,EAAEO,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC;YAChD,OAAO,AAAC,CAAA,MAAMA,uBAAuB;gBAAEC,OAAOR;YAAc,EAAC,EAAGS,GAAG,CACjE,CAACC,IAAO,CAAA;oBAAE,GAAGA,CAAC;oBAAEC,WAAW;gBAAM,CAAA;QAErC;IACF,CAAA,EAAG;AAEH,OAAO,MAAMC,kBAAkB,IAAyB,CAAA;QACtDR,MAAM;QACNC,cAAc;QACd,MAAMC,SAAQ,EAAEN,aAAa,EAAE;YAC7B,MAAM,EAAEa,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAAC;YACnD,MAAM,EAAEC,2BAA2B,EAAE,GAAG,MAAM,MAAM,CAAC;YACrD,MAAMC,kBAAkB,MAAMD,4BAA4Bd;YAC1D,OAAO,AACL,CAAA,MAAMa,0BAA0B;gBAAEL,OAAOR;gBAAee;YAAgB,EAAC,EACzEN,GAAG,CAAC,CAACC,IAAO,CAAA;oBAAE,GAAGA,CAAC;oBAAEC,WAAW;gBAAO,CAAA;QAC1C;IACF,CAAA,EAAG;AAEH,OAAO,MAAMK,qBAAyC;IACpDb;IACAS;CACD,CAAC"}
@@ -1,75 +1,68 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.collectNpmDependencies = void 0;
4
- const tslib_1 = require("tslib");
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 fs_1 = require("fs");
10
- const licenseChecker = tslib_1.__importStar(require("license-checker-rseidelsohn"));
11
- const path_1 = require("path");
4
+ */ import { existsSync, readFileSync } from "fs";
5
+ import * as licenseChecker from "license-checker-rseidelsohn";
6
+ import { join } from "path";
12
7
  const NAME_VERSION_RE = /^(@?[^@]+)@(.+)$/;
13
- const splitNameVersion = (identifier) => {
8
+ const splitNameVersion = (identifier)=>{
14
9
  const match = identifier.match(NAME_VERSION_RE);
15
10
  if (!match) {
16
- return { name: identifier, version: '0.0.0' };
11
+ return {
12
+ name: identifier,
13
+ version: '0.0.0'
14
+ };
17
15
  }
18
- return { name: match[1], version: match[2] };
16
+ return {
17
+ name: match[1],
18
+ version: match[2]
19
+ };
19
20
  };
20
- const flattenLicense = (raw) => {
21
- if (!raw)
22
- return '';
21
+ const flattenLicense = (raw)=>{
22
+ if (!raw) return '';
23
23
  if (Array.isArray(raw)) {
24
- if (raw.length === 0)
25
- return '';
26
- if (raw.length === 1)
27
- return raw[0];
24
+ if (raw.length === 0) return '';
25
+ if (raw.length === 1) return raw[0];
28
26
  return `(${raw.join(' OR ')})`;
29
27
  }
30
28
  return raw;
31
29
  };
32
- const collectNpmDependencies = async (options) => {
33
- const nodeModules = (0, path_1.join)(options.start, 'node_modules');
34
- if (!(0, fs_1.existsSync)(nodeModules)) {
30
+ export const collectNpmDependencies = async (options)=>{
31
+ const nodeModules = join(options.start, 'node_modules');
32
+ if (!existsSync(nodeModules)) {
35
33
  return [];
36
34
  }
37
35
  const exclude = new Set();
38
- const projectPackageJson = (0, path_1.join)(options.start, 'package.json');
39
- if ((0, fs_1.existsSync)(projectPackageJson)) {
36
+ const projectPackageJson = join(options.start, 'package.json');
37
+ if (existsSync(projectPackageJson)) {
40
38
  try {
41
- const pkg = JSON.parse((0, fs_1.readFileSync)(projectPackageJson, 'utf-8'));
42
- if (pkg.name)
43
- exclude.add(pkg.name);
44
- }
45
- catch {
46
- // ignore
39
+ const pkg = JSON.parse(readFileSync(projectPackageJson, 'utf-8'));
40
+ if (pkg.name) exclude.add(pkg.name);
41
+ } catch {
42
+ // ignore
47
43
  }
48
44
  }
49
- const packages = await new Promise((resolve, reject) => {
45
+ const packages = await new Promise((resolve, reject)=>{
50
46
  licenseChecker.init({
51
47
  start: options.start,
52
- excludePrivatePackages: true,
53
- }, (err, results) => {
54
- if (err)
55
- reject(err);
56
- else
57
- resolve(results);
48
+ excludePrivatePackages: true
49
+ }, (err, results)=>{
50
+ if (err) reject(err);
51
+ else resolve(results);
58
52
  });
59
53
  });
60
54
  const out = [];
61
- for (const [identifier, info] of Object.entries(packages)) {
55
+ for (const [identifier, info] of Object.entries(packages)){
62
56
  const { name, version } = splitNameVersion(identifier);
63
- if (exclude.has(name))
64
- continue;
57
+ if (exclude.has(name)) continue;
65
58
  out.push({
66
59
  name,
67
60
  version,
68
61
  rawLicense: flattenLicense(info.licenses),
69
- path: info.path,
62
+ path: info.path
70
63
  });
71
64
  }
72
65
  return out;
73
66
  };
74
- exports.collectNpmDependencies = collectNpmDependencies;
67
+
75
68
  //# sourceMappingURL=npm-collector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"npm-collector.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/license/dependency-check/collectors/npm-collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/license/dependency-check/collectors/npm-collector.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { existsSync, readFileSync } from 'fs';\nimport * as licenseChecker from 'license-checker-rseidelsohn';\nimport { join } from 'path';\n\nexport interface NpmDependency {\n name: string;\n version: string;\n rawLicense: string;\n path?: string;\n}\n\nexport interface NpmCollectorOptions {\n start: string;\n}\n\nconst NAME_VERSION_RE = /^(@?[^@]+)@(.+)$/;\n\nconst splitNameVersion = (\n identifier: string,\n): { name: string; version: string } => {\n const match = identifier.match(NAME_VERSION_RE);\n if (!match) {\n return { name: identifier, version: '0.0.0' };\n }\n return { name: match[1], version: match[2] };\n};\n\nconst flattenLicense = (raw: string | string[] | undefined | null): string => {\n if (!raw) return '';\n if (Array.isArray(raw)) {\n if (raw.length === 0) return '';\n if (raw.length === 1) return raw[0];\n return `(${raw.join(' OR ')})`;\n }\n return raw;\n};\n\nexport const collectNpmDependencies = async (\n options: NpmCollectorOptions,\n): Promise<NpmDependency[]> => {\n const nodeModules = join(options.start, 'node_modules');\n if (!existsSync(nodeModules)) {\n return [];\n }\n\n const exclude = new Set<string>();\n\n const projectPackageJson = join(options.start, 'package.json');\n if (existsSync(projectPackageJson)) {\n try {\n const pkg = JSON.parse(readFileSync(projectPackageJson, 'utf-8')) as {\n name?: string;\n };\n if (pkg.name) exclude.add(pkg.name);\n } catch {\n // ignore\n }\n }\n\n const packages = await new Promise<licenseChecker.ModuleInfos>(\n (resolve, reject) => {\n licenseChecker.init(\n {\n start: options.start,\n excludePrivatePackages: true,\n },\n (err, results) => {\n if (err) reject(err);\n else resolve(results);\n },\n );\n },\n );\n\n const out: NpmDependency[] = [];\n for (const [identifier, info] of Object.entries(packages)) {\n const { name, version } = splitNameVersion(identifier);\n if (exclude.has(name)) continue;\n out.push({\n name,\n version,\n rawLicense: flattenLicense(info.licenses),\n path: info.path,\n });\n }\n return out;\n};\n"],"names":["existsSync","readFileSync","licenseChecker","join","NAME_VERSION_RE","splitNameVersion","identifier","match","name","version","flattenLicense","raw","Array","isArray","length","collectNpmDependencies","options","nodeModules","start","exclude","Set","projectPackageJson","pkg","JSON","parse","add","packages","Promise","resolve","reject","init","excludePrivatePackages","err","results","out","info","Object","entries","has","push","rawLicense","licenses","path"],"mappings":"AAAA;;;CAGC,GACD,SAASA,UAAU,EAAEC,YAAY,QAAQ,KAAK;AAC9C,YAAYC,oBAAoB,8BAA8B;AAC9D,SAASC,IAAI,QAAQ,OAAO;AAa5B,MAAMC,kBAAkB;AAExB,MAAMC,mBAAmB,CACvBC;IAEA,MAAMC,QAAQD,WAAWC,KAAK,CAACH;IAC/B,IAAI,CAACG,OAAO;QACV,OAAO;YAAEC,MAAMF;YAAYG,SAAS;QAAQ;IAC9C;IACA,OAAO;QAAED,MAAMD,KAAK,CAAC,EAAE;QAAEE,SAASF,KAAK,CAAC,EAAE;IAAC;AAC7C;AAEA,MAAMG,iBAAiB,CAACC;IACtB,IAAI,CAACA,KAAK,OAAO;IACjB,IAAIC,MAAMC,OAAO,CAACF,MAAM;QACtB,IAAIA,IAAIG,MAAM,KAAK,GAAG,OAAO;QAC7B,IAAIH,IAAIG,MAAM,KAAK,GAAG,OAAOH,GAAG,CAAC,EAAE;QACnC,OAAO,CAAC,CAAC,EAAEA,IAAIR,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC;IACA,OAAOQ;AACT;AAEA,OAAO,MAAMI,yBAAyB,OACpCC;IAEA,MAAMC,cAAcd,KAAKa,QAAQE,KAAK,EAAE;IACxC,IAAI,CAAClB,WAAWiB,cAAc;QAC5B,OAAO,EAAE;IACX;IAEA,MAAME,UAAU,IAAIC;IAEpB,MAAMC,qBAAqBlB,KAAKa,QAAQE,KAAK,EAAE;IAC/C,IAAIlB,WAAWqB,qBAAqB;QAClC,IAAI;YACF,MAAMC,MAAMC,KAAKC,KAAK,CAACvB,aAAaoB,oBAAoB;YAGxD,IAAIC,IAAId,IAAI,EAAEW,QAAQM,GAAG,CAACH,IAAId,IAAI;QACpC,EAAE,OAAM;QACN,SAAS;QACX;IACF;IAEA,MAAMkB,WAAW,MAAM,IAAIC,QACzB,CAACC,SAASC;QACR3B,eAAe4B,IAAI,CACjB;YACEZ,OAAOF,QAAQE,KAAK;YACpBa,wBAAwB;QAC1B,GACA,CAACC,KAAKC;YACJ,IAAID,KAAKH,OAAOG;iBACXJ,QAAQK;QACf;IAEJ;IAGF,MAAMC,MAAuB,EAAE;IAC/B,KAAK,MAAM,CAAC5B,YAAY6B,KAAK,IAAIC,OAAOC,OAAO,CAACX,UAAW;QACzD,MAAM,EAAElB,IAAI,EAAEC,OAAO,EAAE,GAAGJ,iBAAiBC;QAC3C,IAAIa,QAAQmB,GAAG,CAAC9B,OAAO;QACvB0B,IAAIK,IAAI,CAAC;YACP/B;YACAC;YACA+B,YAAY9B,eAAeyB,KAAKM,QAAQ;YACxCC,MAAMP,KAAKO,IAAI;QACjB;IACF;IACA,OAAOR;AACT,EAAE"}