@zuplo/cli 7.11.0 → 7.11.3

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 (303) hide show
  1. package/node_modules/@hono/node-server/README.md +2 -0
  2. package/node_modules/@hono/node-server/dist/index.cjs +1 -1
  3. package/node_modules/@hono/node-server/dist/index.mjs +1 -1
  4. package/node_modules/@hono/node-server/dist/serve-static.cjs +2 -1
  5. package/node_modules/@hono/node-server/dist/serve-static.mjs +2 -1
  6. package/node_modules/@hono/node-server/package.json +1 -1
  7. package/node_modules/@posthog/core/dist/metrics/index.d.ts +9 -0
  8. package/node_modules/@posthog/core/dist/metrics/index.d.ts.map +1 -1
  9. package/node_modules/@posthog/core/dist/metrics/index.js +38 -3
  10. package/node_modules/@posthog/core/dist/metrics/index.mjs +38 -3
  11. package/node_modules/@posthog/core/dist/metrics/types.d.ts +7 -2
  12. package/node_modules/@posthog/core/dist/metrics/types.d.ts.map +1 -1
  13. package/node_modules/@posthog/core/dist/traces/ids.d.ts.map +1 -1
  14. package/node_modules/@posthog/core/dist/traces/ids.js +2 -2
  15. package/node_modules/@posthog/core/dist/traces/ids.mjs +2 -2
  16. package/node_modules/@posthog/core/package.json +2 -2
  17. package/node_modules/@posthog/core/src/metrics/index.spec.ts +75 -0
  18. package/node_modules/@posthog/core/src/metrics/index.ts +60 -0
  19. package/node_modules/@posthog/core/src/metrics/types.ts +7 -1
  20. package/node_modules/@posthog/core/src/traces/ids.ts +4 -2
  21. package/node_modules/@posthog/types/dist/capture-metric.d.ts +10 -0
  22. package/node_modules/@posthog/types/dist/capture-metric.d.ts.map +1 -1
  23. package/node_modules/@posthog/types/dist/index.d.ts +1 -1
  24. package/node_modules/@posthog/types/dist/index.d.ts.map +1 -1
  25. package/node_modules/@posthog/types/package.json +1 -1
  26. package/node_modules/@posthog/types/src/capture-metric.ts +11 -0
  27. package/node_modules/@posthog/types/src/index.ts +1 -0
  28. package/node_modules/@zuplo/core/customer.cli.minified.js +80 -80
  29. package/node_modules/@zuplo/core/index.minified.js +85 -85
  30. package/node_modules/@zuplo/core/package.json +1 -1
  31. package/node_modules/@zuplo/graphql/package.json +1 -1
  32. package/node_modules/@zuplo/openapi-tools/package.json +5 -2
  33. package/node_modules/@zuplo/otel/package.json +1 -1
  34. package/node_modules/@zuplo/runtime/out/esm/{chunk-YJ2BHVUH.js → chunk-CDEAY3VY.js} +2 -2
  35. package/node_modules/@zuplo/runtime/out/esm/chunk-LVSZ3WTO.js +37 -0
  36. package/node_modules/@zuplo/runtime/out/esm/chunk-LVSZ3WTO.js.map +1 -0
  37. package/node_modules/@zuplo/runtime/out/esm/{chunk-VTO3F6DK.js → chunk-NUVXDVLJ.js} +2 -2
  38. package/node_modules/@zuplo/runtime/out/esm/{chunk-6YPRGG62.js → chunk-TPYCFLC7.js} +109 -109
  39. package/node_modules/@zuplo/runtime/out/esm/chunk-TPYCFLC7.js.map +1 -0
  40. package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
  41. package/node_modules/@zuplo/runtime/out/esm/internal/index.js +1 -1
  42. package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
  43. package/node_modules/@zuplo/runtime/out/esm/mocks/index.js +1 -1
  44. package/node_modules/@zuplo/runtime/out/esm/sdks/aws/index.js +1 -1
  45. package/node_modules/@zuplo/runtime/out/types/index.d.ts +43 -43
  46. package/node_modules/@zuplo/runtime/out/types/internal/index.d.ts +14 -0
  47. package/node_modules/@zuplo/runtime/package.json +1 -1
  48. package/package.json +15 -12
  49. package/dist/__tests__/archive-utils.test.d.ts +0 -2
  50. package/dist/__tests__/archive-utils.test.d.ts.map +0 -1
  51. package/dist/__tests__/archive-utils.test.js +0 -50
  52. package/dist/__tests__/archive-utils.test.js.map +0 -1
  53. package/dist/__tests__/import-openapi.test.d.ts +0 -2
  54. package/dist/__tests__/import-openapi.test.d.ts.map +0 -1
  55. package/dist/__tests__/import-openapi.test.js +0 -251
  56. package/dist/__tests__/import-openapi.test.js.map +0 -1
  57. package/dist/__tests__/integration/confirm-linked-config.integration.test.d.ts +0 -2
  58. package/dist/__tests__/integration/confirm-linked-config.integration.test.d.ts.map +0 -1
  59. package/dist/__tests__/integration/confirm-linked-config.integration.test.js +0 -202
  60. package/dist/__tests__/integration/confirm-linked-config.integration.test.js.map +0 -1
  61. package/dist/__tests__/integration/confirm-production-deploy.integration.test.d.ts +0 -2
  62. package/dist/__tests__/integration/confirm-production-deploy.integration.test.d.ts.map +0 -1
  63. package/dist/__tests__/integration/confirm-production-deploy.integration.test.js +0 -184
  64. package/dist/__tests__/integration/confirm-production-deploy.integration.test.js.map +0 -1
  65. package/dist/__tests__/integration/custom-domain.integration.test.d.ts +0 -2
  66. package/dist/__tests__/integration/custom-domain.integration.test.d.ts.map +0 -1
  67. package/dist/__tests__/integration/custom-domain.integration.test.js +0 -563
  68. package/dist/__tests__/integration/custom-domain.integration.test.js.map +0 -1
  69. package/dist/__tests__/integration/delete.integration.test.d.ts +0 -2
  70. package/dist/__tests__/integration/delete.integration.test.d.ts.map +0 -1
  71. package/dist/__tests__/integration/delete.integration.test.js +0 -262
  72. package/dist/__tests__/integration/delete.integration.test.js.map +0 -1
  73. package/dist/__tests__/integration/deploy.integration.test.d.ts +0 -2
  74. package/dist/__tests__/integration/deploy.integration.test.d.ts.map +0 -1
  75. package/dist/__tests__/integration/deploy.integration.test.js +0 -519
  76. package/dist/__tests__/integration/deploy.integration.test.js.map +0 -1
  77. package/dist/__tests__/integration/get-project-param.integration.test.d.ts +0 -2
  78. package/dist/__tests__/integration/get-project-param.integration.test.d.ts.map +0 -1
  79. package/dist/__tests__/integration/get-project-param.integration.test.js +0 -305
  80. package/dist/__tests__/integration/get-project-param.integration.test.js.map +0 -1
  81. package/dist/__tests__/integration/info.integration.test.d.ts +0 -2
  82. package/dist/__tests__/integration/info.integration.test.d.ts.map +0 -1
  83. package/dist/__tests__/integration/info.integration.test.js +0 -293
  84. package/dist/__tests__/integration/info.integration.test.js.map +0 -1
  85. package/dist/__tests__/integration/jest-mocks-setup.d.ts +0 -2
  86. package/dist/__tests__/integration/jest-mocks-setup.d.ts.map +0 -1
  87. package/dist/__tests__/integration/jest-mocks-setup.js +0 -104
  88. package/dist/__tests__/integration/jest-mocks-setup.js.map +0 -1
  89. package/dist/__tests__/integration/jest-setup.d.ts +0 -2
  90. package/dist/__tests__/integration/jest-setup.d.ts.map +0 -1
  91. package/dist/__tests__/integration/jest-setup.js +0 -12
  92. package/dist/__tests__/integration/jest-setup.js.map +0 -1
  93. package/dist/__tests__/integration/link.integration.test.d.ts +0 -2
  94. package/dist/__tests__/integration/link.integration.test.d.ts.map +0 -1
  95. package/dist/__tests__/integration/link.integration.test.js +0 -395
  96. package/dist/__tests__/integration/link.integration.test.js.map +0 -1
  97. package/dist/__tests__/integration/linked-config-cascade.integration.test.d.ts +0 -2
  98. package/dist/__tests__/integration/linked-config-cascade.integration.test.d.ts.map +0 -1
  99. package/dist/__tests__/integration/linked-config-cascade.integration.test.js +0 -179
  100. package/dist/__tests__/integration/linked-config-cascade.integration.test.js.map +0 -1
  101. package/dist/__tests__/integration/list.integration.test.d.ts +0 -2
  102. package/dist/__tests__/integration/list.integration.test.d.ts.map +0 -1
  103. package/dist/__tests__/integration/list.integration.test.js +0 -300
  104. package/dist/__tests__/integration/list.integration.test.js.map +0 -1
  105. package/dist/__tests__/integration/source-upgrade.integration.test.d.ts +0 -2
  106. package/dist/__tests__/integration/source-upgrade.integration.test.d.ts.map +0 -1
  107. package/dist/__tests__/integration/source-upgrade.integration.test.js +0 -100
  108. package/dist/__tests__/integration/source-upgrade.integration.test.js.map +0 -1
  109. package/dist/__tests__/integration/test-utils.d.ts +0 -30
  110. package/dist/__tests__/integration/test-utils.d.ts.map +0 -1
  111. package/dist/__tests__/integration/test-utils.js +0 -82
  112. package/dist/__tests__/integration/test-utils.js.map +0 -1
  113. package/dist/__tests__/integration/tunnel.integration.test.d.ts +0 -2
  114. package/dist/__tests__/integration/tunnel.integration.test.d.ts.map +0 -1
  115. package/dist/__tests__/integration/tunnel.integration.test.js +0 -486
  116. package/dist/__tests__/integration/tunnel.integration.test.js.map +0 -1
  117. package/dist/__tests__/integration/variable.integration.test.d.ts +0 -2
  118. package/dist/__tests__/integration/variable.integration.test.d.ts.map +0 -1
  119. package/dist/__tests__/integration/variable.integration.test.js +0 -258
  120. package/dist/__tests__/integration/variable.integration.test.js.map +0 -1
  121. package/dist/__tests__/integration/whoami.integration.test.d.ts +0 -2
  122. package/dist/__tests__/integration/whoami.integration.test.d.ts.map +0 -1
  123. package/dist/__tests__/integration/whoami.integration.test.js +0 -116
  124. package/dist/__tests__/integration/whoami.integration.test.js.map +0 -1
  125. package/dist/__tests__/outdated.test.d.ts +0 -2
  126. package/dist/__tests__/outdated.test.d.ts.map +0 -1
  127. package/dist/__tests__/outdated.test.js +0 -67
  128. package/dist/__tests__/outdated.test.js.map +0 -1
  129. package/dist/__tests__/populate.test.d.ts +0 -2
  130. package/dist/__tests__/populate.test.d.ts.map +0 -1
  131. package/dist/__tests__/populate.test.js +0 -445
  132. package/dist/__tests__/populate.test.js.map +0 -1
  133. package/dist/__tests__/tsconfig-upgrader.test.d.ts +0 -2
  134. package/dist/__tests__/tsconfig-upgrader.test.d.ts.map +0 -1
  135. package/dist/__tests__/tsconfig-upgrader.test.js +0 -31
  136. package/dist/__tests__/tsconfig-upgrader.test.js.map +0 -1
  137. package/dist/ca-certificate/validation.test.d.ts +0 -2
  138. package/dist/ca-certificate/validation.test.d.ts.map +0 -1
  139. package/dist/ca-certificate/validation.test.js +0 -131
  140. package/dist/ca-certificate/validation.test.js.map +0 -1
  141. package/dist/common/analytics/cli-invocation.test.d.ts +0 -2
  142. package/dist/common/analytics/cli-invocation.test.d.ts.map +0 -1
  143. package/dist/common/analytics/cli-invocation.test.js +0 -51
  144. package/dist/common/analytics/cli-invocation.test.js.map +0 -1
  145. package/dist/common/analytics/package-manager.test.d.ts +0 -2
  146. package/dist/common/analytics/package-manager.test.d.ts.map +0 -1
  147. package/dist/common/analytics/package-manager.test.js +0 -163
  148. package/dist/common/analytics/package-manager.test.js.map +0 -1
  149. package/dist/common/cli-dispatcher.test.d.ts +0 -2
  150. package/dist/common/cli-dispatcher.test.d.ts.map +0 -1
  151. package/dist/common/cli-dispatcher.test.js +0 -80
  152. package/dist/common/cli-dispatcher.test.js.map +0 -1
  153. package/dist/common/middleware/check-pnpm-lifecycle.test.d.ts +0 -2
  154. package/dist/common/middleware/check-pnpm-lifecycle.test.d.ts.map +0 -1
  155. package/dist/common/middleware/check-pnpm-lifecycle.test.js +0 -125
  156. package/dist/common/middleware/check-pnpm-lifecycle.test.js.map +0 -1
  157. package/dist/common/middleware/get-environment-param.test.d.ts +0 -2
  158. package/dist/common/middleware/get-environment-param.test.d.ts.map +0 -1
  159. package/dist/common/middleware/get-environment-param.test.js +0 -57
  160. package/dist/common/middleware/get-environment-param.test.js.map +0 -1
  161. package/dist/common/read-linked-config.test.d.ts +0 -2
  162. package/dist/common/read-linked-config.test.d.ts.map +0 -1
  163. package/dist/common/read-linked-config.test.js +0 -363
  164. package/dist/common/read-linked-config.test.js.map +0 -1
  165. package/dist/common/terminal.test.d.ts +0 -2
  166. package/dist/common/terminal.test.d.ts.map +0 -1
  167. package/dist/common/terminal.test.js +0 -101
  168. package/dist/common/terminal.test.js.map +0 -1
  169. package/dist/common/utils/build-environment-prompt-choices.test.d.ts +0 -2
  170. package/dist/common/utils/build-environment-prompt-choices.test.d.ts.map +0 -1
  171. package/dist/common/utils/build-environment-prompt-choices.test.js +0 -97
  172. package/dist/common/utils/build-environment-prompt-choices.test.js.map +0 -1
  173. package/dist/common/utils/format-environment-type.test.d.ts +0 -2
  174. package/dist/common/utils/format-environment-type.test.d.ts.map +0 -1
  175. package/dist/common/utils/format-environment-type.test.js +0 -32
  176. package/dist/common/utils/format-environment-type.test.js.map +0 -1
  177. package/dist/common/utils/pnpm-lifecycle.test.d.ts +0 -2
  178. package/dist/common/utils/pnpm-lifecycle.test.d.ts.map +0 -1
  179. package/dist/common/utils/pnpm-lifecycle.test.js +0 -196
  180. package/dist/common/utils/pnpm-lifecycle.test.js.map +0 -1
  181. package/dist/common/utils/pretty-print-environment-prompt.test.d.ts +0 -2
  182. package/dist/common/utils/pretty-print-environment-prompt.test.d.ts.map +0 -1
  183. package/dist/common/utils/pretty-print-environment-prompt.test.js +0 -42
  184. package/dist/common/utils/pretty-print-environment-prompt.test.js.map +0 -1
  185. package/dist/common/utils/sort-environments-for-prompt.test.d.ts +0 -2
  186. package/dist/common/utils/sort-environments-for-prompt.test.d.ts.map +0 -1
  187. package/dist/common/utils/sort-environments-for-prompt.test.js +0 -82
  188. package/dist/common/utils/sort-environments-for-prompt.test.js.map +0 -1
  189. package/dist/common/utils/stringify-config.test.d.ts +0 -2
  190. package/dist/common/utils/stringify-config.test.d.ts.map +0 -1
  191. package/dist/common/utils/stringify-config.test.js +0 -80
  192. package/dist/common/utils/stringify-config.test.js.map +0 -1
  193. package/dist/common/validators/argument-validators.spec.d.ts +0 -2
  194. package/dist/common/validators/argument-validators.spec.d.ts.map +0 -1
  195. package/dist/common/validators/argument-validators.spec.js +0 -181
  196. package/dist/common/validators/argument-validators.spec.js.map +0 -1
  197. package/dist/common/worker-output.test.d.ts +0 -2
  198. package/dist/common/worker-output.test.d.ts.map +0 -1
  199. package/dist/common/worker-output.test.js +0 -32
  200. package/dist/common/worker-output.test.js.map +0 -1
  201. package/dist/deploy/archive.local-registry.test.d.ts +0 -2
  202. package/dist/deploy/archive.local-registry.test.d.ts.map +0 -1
  203. package/dist/deploy/archive.local-registry.test.js +0 -100
  204. package/dist/deploy/archive.local-registry.test.js.map +0 -1
  205. package/dist/deploy/archive.test.d.ts +0 -2
  206. package/dist/deploy/archive.test.d.ts.map +0 -1
  207. package/dist/deploy/archive.test.js +0 -248
  208. package/dist/deploy/archive.test.js.map +0 -1
  209. package/dist/deploy/classify-build-probe.test.d.ts +0 -2
  210. package/dist/deploy/classify-build-probe.test.d.ts.map +0 -1
  211. package/dist/deploy/classify-build-probe.test.js +0 -51
  212. package/dist/deploy/classify-build-probe.test.js.map +0 -1
  213. package/dist/deploy/poll-deployment.test.d.ts +0 -2
  214. package/dist/deploy/poll-deployment.test.d.ts.map +0 -1
  215. package/dist/deploy/poll-deployment.test.js +0 -158
  216. package/dist/deploy/poll-deployment.test.js.map +0 -1
  217. package/dist/dev/zuplo-local-gitignore.test.d.ts +0 -2
  218. package/dist/dev/zuplo-local-gitignore.test.d.ts.map +0 -1
  219. package/dist/dev/zuplo-local-gitignore.test.js +0 -58
  220. package/dist/dev/zuplo-local-gitignore.test.js.map +0 -1
  221. package/dist/editor/e2e/editor.spec.d.ts +0 -2
  222. package/dist/editor/e2e/editor.spec.d.ts.map +0 -1
  223. package/dist/editor/e2e/editor.spec.js +0 -44
  224. package/dist/editor/e2e/editor.spec.js.map +0 -1
  225. package/dist/link/project-type.test.d.ts +0 -2
  226. package/dist/link/project-type.test.d.ts.map +0 -1
  227. package/dist/link/project-type.test.js +0 -225
  228. package/dist/link/project-type.test.js.map +0 -1
  229. package/dist/lint/resolve-binary.test.d.ts +0 -2
  230. package/dist/lint/resolve-binary.test.d.ts.map +0 -1
  231. package/dist/lint/resolve-binary.test.js +0 -155
  232. package/dist/lint/resolve-binary.test.js.map +0 -1
  233. package/dist/open-api/convert/handler.spec.d.ts +0 -2
  234. package/dist/open-api/convert/handler.spec.d.ts.map +0 -1
  235. package/dist/open-api/convert/handler.spec.js +0 -301
  236. package/dist/open-api/convert/handler.spec.js.map +0 -1
  237. package/dist/open-api/merge/handler.spec.d.ts +0 -2
  238. package/dist/open-api/merge/handler.spec.d.ts.map +0 -1
  239. package/dist/open-api/merge/handler.spec.js +0 -673
  240. package/dist/open-api/merge/handler.spec.js.map +0 -1
  241. package/dist/open-api/overlay/handler.spec.d.ts +0 -2
  242. package/dist/open-api/overlay/handler.spec.d.ts.map +0 -1
  243. package/dist/open-api/overlay/handler.spec.js +0 -346
  244. package/dist/open-api/overlay/handler.spec.js.map +0 -1
  245. package/dist/source/ai-gateway/files.test.d.ts +0 -2
  246. package/dist/source/ai-gateway/files.test.d.ts.map +0 -1
  247. package/dist/source/ai-gateway/files.test.js +0 -135
  248. package/dist/source/ai-gateway/files.test.js.map +0 -1
  249. package/dist/source/ai-gateway/handler.test.d.ts +0 -2
  250. package/dist/source/ai-gateway/handler.test.d.ts.map +0 -1
  251. package/dist/source/ai-gateway/handler.test.js +0 -113
  252. package/dist/source/ai-gateway/handler.test.js.map +0 -1
  253. package/dist/source/ai-gateway/package.test.d.ts +0 -2
  254. package/dist/source/ai-gateway/package.test.d.ts.map +0 -1
  255. package/dist/source/ai-gateway/package.test.js +0 -30
  256. package/dist/source/ai-gateway/package.test.js.map +0 -1
  257. package/dist/source/ai-gateway/planner.test.d.ts +0 -2
  258. package/dist/source/ai-gateway/planner.test.d.ts.map +0 -1
  259. package/dist/source/ai-gateway/planner.test.js +0 -330
  260. package/dist/source/ai-gateway/planner.test.js.map +0 -1
  261. package/dist/source/ai-gateway/release.test.d.ts +0 -2
  262. package/dist/source/ai-gateway/release.test.d.ts.map +0 -1
  263. package/dist/source/ai-gateway/release.test.js +0 -62
  264. package/dist/source/ai-gateway/release.test.js.map +0 -1
  265. package/dist/test/invoke-test.test.d.ts +0 -2
  266. package/dist/test/invoke-test.test.d.ts.map +0 -1
  267. package/dist/test/invoke-test.test.js +0 -150
  268. package/dist/test/invoke-test.test.js.map +0 -1
  269. package/dist/test/test-files.test.d.ts +0 -2
  270. package/dist/test/test-files.test.d.ts.map +0 -1
  271. package/dist/test/test-files.test.js +0 -57
  272. package/dist/test/test-files.test.js.map +0 -1
  273. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.d.ts +0 -2
  274. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.d.ts.map +0 -1
  275. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.js +0 -289
  276. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.js.map +0 -1
  277. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.d.ts +0 -2
  278. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.d.ts.map +0 -1
  279. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.js +0 -181
  280. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.js.map +0 -1
  281. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.d.ts +0 -2
  282. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.d.ts.map +0 -1
  283. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.js +0 -399
  284. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.js.map +0 -1
  285. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.d.ts +0 -2
  286. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.d.ts.map +0 -1
  287. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.js +0 -779
  288. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.js.map +0 -1
  289. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.d.ts +0 -2
  290. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.d.ts.map +0 -1
  291. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.js +0 -269
  292. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.js.map +0 -1
  293. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.d.ts +0 -2
  294. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.d.ts.map +0 -1
  295. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.js +0 -93
  296. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.js.map +0 -1
  297. package/node_modules/@zuplo/runtime/out/esm/chunk-6YPRGG62.js.map +0 -1
  298. package/node_modules/@zuplo/runtime/out/esm/chunk-PBDT4FDO.js +0 -37
  299. package/node_modules/@zuplo/runtime/out/esm/chunk-PBDT4FDO.js.map +0 -1
  300. /package/node_modules/@zuplo/runtime/out/esm/{chunk-YJ2BHVUH.js.map → chunk-CDEAY3VY.js.map} +0 -0
  301. /package/node_modules/@zuplo/runtime/out/esm/{chunk-PBDT4FDO.js.LEGAL.txt → chunk-LVSZ3WTO.js.LEGAL.txt} +0 -0
  302. /package/node_modules/@zuplo/runtime/out/esm/{chunk-VTO3F6DK.js.map → chunk-NUVXDVLJ.js.map} +0 -0
  303. /package/node_modules/@zuplo/runtime/out/esm/{chunk-6YPRGG62.js.LEGAL.txt → chunk-TPYCFLC7.js.LEGAL.txt} +0 -0
@@ -1,31 +0,0 @@
1
- import assert from "node:assert";
2
- import { describe, test } from "node:test";
3
- import { TSConfigUpgrader } from "../common/upgraders/tsconfig-upgrader.js";
4
- process.env.ZUPLO_OVERRIDE_CI_TO_TEST = "true";
5
- describe("TSConfigUpgrader checks", async function () {
6
- test("Should not run for a valid tsconfig.json", async function () {
7
- const upgrader = new TSConfigUpgrader(new URL("../../test-fixtures-cli/tsconfig/valid", import.meta.url)
8
- .pathname);
9
- const needsUpgrade = await upgrader.needsUpgrade();
10
- assert.equal(needsUpgrade, false);
11
- });
12
- test("Should run for a legacy tsconfig.json", async function () {
13
- const upgrader = new TSConfigUpgrader(new URL("../../test-fixtures-cli/tsconfig/legacy", import.meta.url)
14
- .pathname);
15
- const needsUpgrade = await upgrader.needsUpgrade();
16
- assert.equal(needsUpgrade, true);
17
- });
18
- test("Should run for a missing prop tsconfig.json", async function () {
19
- const upgrader = new TSConfigUpgrader(new URL("../../test-fixtures-cli/tsconfig/missing-prop", import.meta.url)
20
- .pathname);
21
- const needsUpgrade = await upgrader.needsUpgrade();
22
- assert.equal(needsUpgrade, true);
23
- });
24
- test("Should run when baseUrl set in tsconfig.json", async function () {
25
- const upgrader = new TSConfigUpgrader(new URL("../../test-fixtures-cli/tsconfig/missing-prop", import.meta.url)
26
- .pathname);
27
- const needsUpgrade = await upgrader.needsUpgrade();
28
- assert.equal(needsUpgrade, true);
29
- });
30
- });
31
- //# sourceMappingURL=tsconfig-upgrader.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tsconfig-upgrader.test.js","sourceRoot":"","sources":["../../src/__tests__/tsconfig-upgrader.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAE5E,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,MAAM,CAAC;AAE/C,QAAQ,CAAC,yBAAyB,EAAE,KAAK;IACvC,IAAI,CAAC,0CAA0C,EAAE,KAAK;QACpD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAC/D,QAAQ,CACZ,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,uCAAuC,EAAE,KAAK;QACjD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAChE,QAAQ,CACZ,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,6CAA6C,EAAE,KAAK;QACvD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,GAAG,CAAC,+CAA+C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACtE,QAAQ,CACZ,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,8CAA8C,EAAE,KAAK;QACxD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,GAAG,CAAC,+CAA+C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACtE,QAAQ,CACZ,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import assert from \"node:assert\";\nimport { describe, test } from \"node:test\";\nimport { TSConfigUpgrader } from \"../common/upgraders/tsconfig-upgrader.js\";\n\nprocess.env.ZUPLO_OVERRIDE_CI_TO_TEST = \"true\";\n\ndescribe(\"TSConfigUpgrader checks\", async function () {\n test(\"Should not run for a valid tsconfig.json\", async function () {\n const upgrader = new TSConfigUpgrader(\n new URL(\"../../test-fixtures-cli/tsconfig/valid\", import.meta.url)\n .pathname\n );\n\n const needsUpgrade = await upgrader.needsUpgrade();\n assert.equal(needsUpgrade, false);\n });\n test(\"Should run for a legacy tsconfig.json\", async function () {\n const upgrader = new TSConfigUpgrader(\n new URL(\"../../test-fixtures-cli/tsconfig/legacy\", import.meta.url)\n .pathname\n );\n\n const needsUpgrade = await upgrader.needsUpgrade();\n assert.equal(needsUpgrade, true);\n });\n test(\"Should run for a missing prop tsconfig.json\", async function () {\n const upgrader = new TSConfigUpgrader(\n new URL(\"../../test-fixtures-cli/tsconfig/missing-prop\", import.meta.url)\n .pathname\n );\n\n const needsUpgrade = await upgrader.needsUpgrade();\n assert.equal(needsUpgrade, true);\n });\n test(\"Should run when baseUrl set in tsconfig.json\", async function () {\n const upgrader = new TSConfigUpgrader(\n new URL(\"../../test-fixtures-cli/tsconfig/missing-prop\", import.meta.url)\n .pathname\n );\n\n const needsUpgrade = await upgrader.needsUpgrade();\n assert.equal(needsUpgrade, true);\n });\n});\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=validation.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.test.d.ts","sourceRoot":"","sources":["../../src/ca-certificate/validation.test.ts"],"names":[],"mappings":""}
@@ -1,131 +0,0 @@
1
- import assert from "node:assert";
2
- import { describe, it } from "node:test";
3
- import { isValidationError, parseAndValidateCaCertificate, validateName, } from "./validation.js";
4
- const CA_PEM = `-----BEGIN CERTIFICATE-----
5
- MIIC5jCCAc6gAwIBAgIUB4s5BPjuGshWHSZKkNIJJ7W7alkwDQYJKoZIhvcNAQEL
6
- BQAwEjEQMA4GA1UEAwwHVGVzdCBjYTAgFw0yNjA1MTMwMDA1NDFaGA8yMTI2MDQx
7
- OTAwMDU0MVowEjEQMA4GA1UEAwwHVGVzdCBjYTCCASIwDQYJKoZIhvcNAQEBBQAD
8
- ggEPADCCAQoCggEBAK+8kcIOYXC5SKCnnEmddLKiVSon8NoLn8RABel0op+5i3J2
9
- pnDBBWOy2nT5qWRI2N0tTK4tQn/jaGeiBP0BUu4z+Y/pcglveexyFWhtFstHyyUr
10
- yiwhBhX3NEWHZGr/VShriKxojnTwWONpgQwq7On7k+We3JK7IEASvKLxhC1+hcch
11
- CwP67zGDF6qJrfjBfdPSRoW8OomioTRyb7MyrWvRpKm/0rj9NYc7MxMYbgVffE6y
12
- IVQ4UCsVw74DdebfdzBSJOwNa+2Fe8AwQ3QMVbzfE3qs6+nviQ1EJA/h0kWgIrCI
13
- 3JvGpJinI0kDXEYx/4BTHVNfg1UdCOqPxxdrS18CAwEAAaMyMDAwDwYDVR0TAQH/
14
- BAUwAwEB/zAdBgNVHQ4EFgQUuku+yW29ASY8vCZ7fBVA6L3r28YwDQYJKoZIhvcN
15
- AQELBQADggEBAFaYAde91xdpST+LlokhbWanr8xiUr7jdHemjxGvBi/Zxs2VQIj2
16
- +1Bh0dpxGk670nSc/Bq8jcivoiGoaRxT5rFVhtQOpYLgo+wKqNoYfEoEPrIrT4PO
17
- seBrdMa9cduhs/Nx11Vgf5N56KomRO1a4AaIcvh6uGxrf1jfaCjaAKWTNNd9luzo
18
- /IsRikl4QN0pZ1lIxdOdVMFhCp8V/+oEO6aw2FhFZlZKA+XLELHQzPBpuubQocuT
19
- 9dLovPbpFD2UwgvpjXQYjpr5btZx+iupHfiXq7WI6EI3eG5UgTuOpK8g9rLDiX9f
20
- ArcSyj6/ZV+MDtaEHyEJBdsp//aT6Kfpoek=
21
- -----END CERTIFICATE-----
22
- `;
23
- const LEAF_PEM = `-----BEGIN CERTIFICATE-----
24
- MIIC5zCCAc+gAwIBAgIUFG0P6P6J4YoBLyRH2pjt7RdV9sAwDQYJKoZIhvcNAQEL
25
- BQAwFDESMBAGA1UEAwwJVGVzdCBsZWFmMCAXDTI2MDUxMzAwMDU0MVoYDzIxMjYw
26
- NDE5MDAwNTQxWjAUMRIwEAYDVQQDDAlUZXN0IGxlYWYwggEiMA0GCSqGSIb3DQEB
27
- AQUAA4IBDwAwggEKAoIBAQDc1H+Z9qbmSsTR1tDVEvMN94ayec1UZ/17eIDY55ho
28
- N5UA3Blho2xLeXvWWpKpo6wTXONzpNak8qhccIGsuIogpparkYYPBG+86cofnGDC
29
- m/T9wa8eLTvyrIyPfUjkYVU7Gfmsq08pF/GZHIHcJg/xdTOLKE8WgJi15zwi1ZOE
30
- z/OtpGKlX2pnM7aq6mzUqamWo2WBPpFdtdLfCBtnUkoNtxWmn98Xj/AaoiBR0UAI
31
- C8UQAEAv3yaZ8pBZoLLn68kFgkOdNAPnX2zi6B6uk7LWA90JUneL+fPb/89muxl+
32
- uQ4NGgWINtG23OtELLtUIuNiZxEFEO0mxf+0pIYa/1VTAgMBAAGjLzAtMAwGA1Ud
33
- EwEB/wQCMAAwHQYDVR0OBBYEFP5YdepOBrpmYPdem5awTb3ByLZ7MA0GCSqGSIb3
34
- DQEBCwUAA4IBAQBZ9Bl8IcQ9VYxTQgO1U9wB+LcHJ2WXqVSQTlz+qwd+tyfnv0PM
35
- O5/ouSYiCj3IBQ42N3z+QhLgZgvfGcC6qFvG67A1WV7n7ZV5D7Yb9CqE+NPUbx3V
36
- 3GFBkIAv7U+4TKYPSK2YPXCb/D3rtel2j31tcMtODoT0LrHbwaOCGd8G+15rxBjP
37
- dfHuC/nYYeKsplDhcdfemel73WbNzuqGNliQhEqhtlpGOhciHpd1Zlm7OgUINmCr
38
- rfRfSGvBGDkuNRQIEhnFZXYhD0iCM/6D56/VykaqaQz+bPr04d0e0KvusFGsmapN
39
- zC0Ztm1aNp0wB0vPNoEJrpQEmkB80cR1DXVR
40
- -----END CERTIFICATE-----
41
- `;
42
- describe("validateName", () => {
43
- it("accepts valid names", () => {
44
- assert.strictEqual(validateName("my_ca"), null);
45
- assert.strictEqual(validateName("CA1"), null);
46
- assert.strictEqual(validateName("$abc"), null);
47
- assert.strictEqual(validateName("_underscore"), null);
48
- });
49
- it("rejects empty names", () => {
50
- const result = validateName("");
51
- assert.ok(result);
52
- assert.match(result.message, /empty/i);
53
- });
54
- it("rejects names over 120 characters", () => {
55
- const result = validateName("a".repeat(121));
56
- assert.ok(result);
57
- assert.match(result.message, /120 characters/);
58
- });
59
- it("rejects names starting with a digit", () => {
60
- const result = validateName("1ca");
61
- assert.ok(result);
62
- assert.match(result.message, /JavaScript variable name/);
63
- });
64
- it("rejects names with hyphens or spaces", () => {
65
- assert.ok(validateName("my-ca"));
66
- assert.ok(validateName("my ca"));
67
- assert.ok(validateName("ca.example"));
68
- });
69
- it("rejects JavaScript reserved keywords", () => {
70
- for (const keyword of ["class", "delete", "import", "return", "await"]) {
71
- const result = validateName(keyword);
72
- assert.ok(result, `expected ${keyword} to be rejected`);
73
- assert.match(result.message, /reserved keyword/);
74
- }
75
- });
76
- it("rejects reserved keywords case-insensitively", () => {
77
- assert.ok(validateName("CLASS"));
78
- assert.ok(validateName("Delete"));
79
- });
80
- });
81
- describe("parseAndValidateCaCertificate", () => {
82
- it("rejects garbage input", () => {
83
- const result = parseAndValidateCaCertificate("not a certificate");
84
- assert.ok(isValidationError(result));
85
- assert.match(result.message, /PEM-encoded/);
86
- assert.match(result.hint ?? "", /openssl x509.*-inform der/);
87
- });
88
- it("rejects a PKCS#8 private key with a key-specific hint", () => {
89
- const pem = `-----BEGIN PRIVATE KEY-----\nfoo\n-----END PRIVATE KEY-----`;
90
- const result = parseAndValidateCaCertificate(pem);
91
- assert.ok(isValidationError(result));
92
- assert.match(result.message, /private key/i);
93
- assert.match(result.hint ?? "", /public CA certificate/);
94
- });
95
- it("rejects an RSA private key with a key-specific hint", () => {
96
- const pem = `-----BEGIN RSA PRIVATE KEY-----\nfoo\n-----END RSA PRIVATE KEY-----`;
97
- const result = parseAndValidateCaCertificate(pem);
98
- assert.ok(isValidationError(result));
99
- assert.match(result.message, /private key/i);
100
- });
101
- it("rejects a CSR with a CSR-specific hint", () => {
102
- const pem = `-----BEGIN CERTIFICATE REQUEST-----\nfoo\n-----END CERTIFICATE REQUEST-----`;
103
- const result = parseAndValidateCaCertificate(pem);
104
- assert.ok(isValidationError(result));
105
- assert.match(result.message, /CSR|signing request/i);
106
- });
107
- it("rejects a PEM-shaped but corrupt certificate", () => {
108
- const pem = `-----BEGIN CERTIFICATE-----\nnot-real-base64\n-----END CERTIFICATE-----`;
109
- const result = parseAndValidateCaCertificate(pem);
110
- assert.ok(isValidationError(result));
111
- assert.match(result.message, /Failed to parse/);
112
- });
113
- it("accepts a valid CA certificate", () => {
114
- const result = parseAndValidateCaCertificate(CA_PEM);
115
- assert.ok(!isValidationError(result), JSON.stringify(result));
116
- assert.strictEqual(result.isCa, true);
117
- assert.match(result.subject, /Test ca/i);
118
- });
119
- it("rejects a leaf (non-CA) certificate", () => {
120
- const result = parseAndValidateCaCertificate(LEAF_PEM);
121
- assert.ok(isValidationError(result));
122
- assert.match(result.message, /not a CA certificate/);
123
- });
124
- it("rejects a CA certificate that is expired relative to `now`", () => {
125
- const farFuture = new Date("2200-01-01T00:00:00Z");
126
- const result = parseAndValidateCaCertificate(CA_PEM, farFuture);
127
- assert.ok(isValidationError(result));
128
- assert.match(result.message, /expired/);
129
- });
130
- });
131
- //# sourceMappingURL=validation.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/ca-certificate/validation.test.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert\";\nimport { describe, it } from \"node:test\";\nimport {\n isValidationError,\n parseAndValidateCaCertificate,\n validateName,\n} from \"./validation.js\";\n\n// Hard-coded test fixtures generated with openssl req -x509 (RSA 2048, 100y\n// validity, CN=\"Test ca\" / CN=\"Test leaf\"). Checked in so the test suite has no\n// external dependency on the openssl binary. To regenerate, see\n// `regenerate-fixtures.md` next to this file (or use the helper in the PR).\nconst CA_PEM = `-----BEGIN CERTIFICATE-----\nMIIC5jCCAc6gAwIBAgIUB4s5BPjuGshWHSZKkNIJJ7W7alkwDQYJKoZIhvcNAQEL\nBQAwEjEQMA4GA1UEAwwHVGVzdCBjYTAgFw0yNjA1MTMwMDA1NDFaGA8yMTI2MDQx\nOTAwMDU0MVowEjEQMA4GA1UEAwwHVGVzdCBjYTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBAK+8kcIOYXC5SKCnnEmddLKiVSon8NoLn8RABel0op+5i3J2\npnDBBWOy2nT5qWRI2N0tTK4tQn/jaGeiBP0BUu4z+Y/pcglveexyFWhtFstHyyUr\nyiwhBhX3NEWHZGr/VShriKxojnTwWONpgQwq7On7k+We3JK7IEASvKLxhC1+hcch\nCwP67zGDF6qJrfjBfdPSRoW8OomioTRyb7MyrWvRpKm/0rj9NYc7MxMYbgVffE6y\nIVQ4UCsVw74DdebfdzBSJOwNa+2Fe8AwQ3QMVbzfE3qs6+nviQ1EJA/h0kWgIrCI\n3JvGpJinI0kDXEYx/4BTHVNfg1UdCOqPxxdrS18CAwEAAaMyMDAwDwYDVR0TAQH/\nBAUwAwEB/zAdBgNVHQ4EFgQUuku+yW29ASY8vCZ7fBVA6L3r28YwDQYJKoZIhvcN\nAQELBQADggEBAFaYAde91xdpST+LlokhbWanr8xiUr7jdHemjxGvBi/Zxs2VQIj2\n+1Bh0dpxGk670nSc/Bq8jcivoiGoaRxT5rFVhtQOpYLgo+wKqNoYfEoEPrIrT4PO\nseBrdMa9cduhs/Nx11Vgf5N56KomRO1a4AaIcvh6uGxrf1jfaCjaAKWTNNd9luzo\n/IsRikl4QN0pZ1lIxdOdVMFhCp8V/+oEO6aw2FhFZlZKA+XLELHQzPBpuubQocuT\n9dLovPbpFD2UwgvpjXQYjpr5btZx+iupHfiXq7WI6EI3eG5UgTuOpK8g9rLDiX9f\nArcSyj6/ZV+MDtaEHyEJBdsp//aT6Kfpoek=\n-----END CERTIFICATE-----\n`;\n\nconst LEAF_PEM = `-----BEGIN CERTIFICATE-----\nMIIC5zCCAc+gAwIBAgIUFG0P6P6J4YoBLyRH2pjt7RdV9sAwDQYJKoZIhvcNAQEL\nBQAwFDESMBAGA1UEAwwJVGVzdCBsZWFmMCAXDTI2MDUxMzAwMDU0MVoYDzIxMjYw\nNDE5MDAwNTQxWjAUMRIwEAYDVQQDDAlUZXN0IGxlYWYwggEiMA0GCSqGSIb3DQEB\nAQUAA4IBDwAwggEKAoIBAQDc1H+Z9qbmSsTR1tDVEvMN94ayec1UZ/17eIDY55ho\nN5UA3Blho2xLeXvWWpKpo6wTXONzpNak8qhccIGsuIogpparkYYPBG+86cofnGDC\nm/T9wa8eLTvyrIyPfUjkYVU7Gfmsq08pF/GZHIHcJg/xdTOLKE8WgJi15zwi1ZOE\nz/OtpGKlX2pnM7aq6mzUqamWo2WBPpFdtdLfCBtnUkoNtxWmn98Xj/AaoiBR0UAI\nC8UQAEAv3yaZ8pBZoLLn68kFgkOdNAPnX2zi6B6uk7LWA90JUneL+fPb/89muxl+\nuQ4NGgWINtG23OtELLtUIuNiZxEFEO0mxf+0pIYa/1VTAgMBAAGjLzAtMAwGA1Ud\nEwEB/wQCMAAwHQYDVR0OBBYEFP5YdepOBrpmYPdem5awTb3ByLZ7MA0GCSqGSIb3\nDQEBCwUAA4IBAQBZ9Bl8IcQ9VYxTQgO1U9wB+LcHJ2WXqVSQTlz+qwd+tyfnv0PM\nO5/ouSYiCj3IBQ42N3z+QhLgZgvfGcC6qFvG67A1WV7n7ZV5D7Yb9CqE+NPUbx3V\n3GFBkIAv7U+4TKYPSK2YPXCb/D3rtel2j31tcMtODoT0LrHbwaOCGd8G+15rxBjP\ndfHuC/nYYeKsplDhcdfemel73WbNzuqGNliQhEqhtlpGOhciHpd1Zlm7OgUINmCr\nrfRfSGvBGDkuNRQIEhnFZXYhD0iCM/6D56/VykaqaQz+bPr04d0e0KvusFGsmapN\nzC0Ztm1aNp0wB0vPNoEJrpQEmkB80cR1DXVR\n-----END CERTIFICATE-----\n`;\n\ndescribe(\"validateName\", () => {\n it(\"accepts valid names\", () => {\n assert.strictEqual(validateName(\"my_ca\"), null);\n assert.strictEqual(validateName(\"CA1\"), null);\n assert.strictEqual(validateName(\"$abc\"), null);\n assert.strictEqual(validateName(\"_underscore\"), null);\n });\n\n it(\"rejects empty names\", () => {\n const result = validateName(\"\");\n assert.ok(result);\n assert.match(result.message, /empty/i);\n });\n\n it(\"rejects names over 120 characters\", () => {\n const result = validateName(\"a\".repeat(121));\n assert.ok(result);\n assert.match(result.message, /120 characters/);\n });\n\n it(\"rejects names starting with a digit\", () => {\n const result = validateName(\"1ca\");\n assert.ok(result);\n assert.match(result.message, /JavaScript variable name/);\n });\n\n it(\"rejects names with hyphens or spaces\", () => {\n assert.ok(validateName(\"my-ca\"));\n assert.ok(validateName(\"my ca\"));\n assert.ok(validateName(\"ca.example\"));\n });\n\n it(\"rejects JavaScript reserved keywords\", () => {\n for (const keyword of [\"class\", \"delete\", \"import\", \"return\", \"await\"]) {\n const result = validateName(keyword);\n assert.ok(result, `expected ${keyword} to be rejected`);\n assert.match(result.message, /reserved keyword/);\n }\n });\n\n it(\"rejects reserved keywords case-insensitively\", () => {\n assert.ok(validateName(\"CLASS\"));\n assert.ok(validateName(\"Delete\"));\n });\n});\n\ndescribe(\"parseAndValidateCaCertificate\", () => {\n it(\"rejects garbage input\", () => {\n const result = parseAndValidateCaCertificate(\"not a certificate\");\n assert.ok(isValidationError(result));\n assert.match(result.message, /PEM-encoded/);\n assert.match(result.hint ?? \"\", /openssl x509.*-inform der/);\n });\n\n it(\"rejects a PKCS#8 private key with a key-specific hint\", () => {\n const pem = `-----BEGIN PRIVATE KEY-----\\nfoo\\n-----END PRIVATE KEY-----`;\n const result = parseAndValidateCaCertificate(pem);\n assert.ok(isValidationError(result));\n assert.match(result.message, /private key/i);\n assert.match(result.hint ?? \"\", /public CA certificate/);\n });\n\n it(\"rejects an RSA private key with a key-specific hint\", () => {\n const pem = `-----BEGIN RSA PRIVATE KEY-----\\nfoo\\n-----END RSA PRIVATE KEY-----`;\n const result = parseAndValidateCaCertificate(pem);\n assert.ok(isValidationError(result));\n assert.match(result.message, /private key/i);\n });\n\n it(\"rejects a CSR with a CSR-specific hint\", () => {\n const pem = `-----BEGIN CERTIFICATE REQUEST-----\\nfoo\\n-----END CERTIFICATE REQUEST-----`;\n const result = parseAndValidateCaCertificate(pem);\n assert.ok(isValidationError(result));\n assert.match(result.message, /CSR|signing request/i);\n });\n\n it(\"rejects a PEM-shaped but corrupt certificate\", () => {\n const pem = `-----BEGIN CERTIFICATE-----\\nnot-real-base64\\n-----END CERTIFICATE-----`;\n const result = parseAndValidateCaCertificate(pem);\n assert.ok(isValidationError(result));\n assert.match(result.message, /Failed to parse/);\n });\n\n it(\"accepts a valid CA certificate\", () => {\n const result = parseAndValidateCaCertificate(CA_PEM);\n assert.ok(!isValidationError(result), JSON.stringify(result));\n assert.strictEqual(result.isCa, true);\n assert.match(result.subject, /Test ca/i);\n });\n\n it(\"rejects a leaf (non-CA) certificate\", () => {\n const result = parseAndValidateCaCertificate(LEAF_PEM);\n assert.ok(isValidationError(result));\n assert.match(result.message, /not a CA certificate/);\n });\n\n it(\"rejects a CA certificate that is expired relative to `now`\", () => {\n // The CA fixture is valid for 100 years from generation. Pass a `now` far\n // in the future to exercise the expiry branch without backdating the cert.\n const farFuture = new Date(\"2200-01-01T00:00:00Z\");\n const result = parseAndValidateCaCertificate(CA_PEM, farFuture);\n assert.ok(isValidationError(result));\n assert.match(result.message, /expired/);\n });\n});\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cli-invocation.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-invocation.test.d.ts","sourceRoot":"","sources":["../../../src/common/analytics/cli-invocation.test.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- import assert from "node:assert";
2
- import { describe, it } from "node:test";
3
- import { captureCliInvocationEvent, getCliInvocationProperties, } from "./cli-invocation.js";
4
- describe("getCliInvocationProperties", () => {
5
- it("captures the top-level CLI command token", () => {
6
- assert.deepEqual(getCliInvocationProperties({ _: ["deploy"] }, "1.2.3"), {
7
- version: "1.2.3",
8
- cliCommand: "deploy",
9
- });
10
- assert.deepEqual(getCliInvocationProperties({ _: ["bucket"] }, "1.2.3"), {
11
- version: "1.2.3",
12
- cliCommand: "bucket",
13
- });
14
- assert.deepEqual(getCliInvocationProperties({ _: ["logout"] }, "1.2.3"), {
15
- version: "1.2.3",
16
- cliCommand: "logout",
17
- });
18
- assert.deepEqual(getCliInvocationProperties({ _: ["hello"] }, "1.2.3"), {
19
- version: "1.2.3",
20
- cliCommand: "hello",
21
- });
22
- });
23
- it("canonicalizes OpenAPI command aliases", () => {
24
- assert.deepEqual(getCliInvocationProperties({ _: ["oas"] }, "1.2.3"), {
25
- version: "1.2.3",
26
- cliCommand: "openapi",
27
- });
28
- assert.deepEqual(getCliInvocationProperties({ _: ["open-api"] }, "1.2.3"), {
29
- version: "1.2.3",
30
- cliCommand: "openapi",
31
- });
32
- });
33
- it("does not include positional values after the command token", () => {
34
- assert.deepEqual(getCliInvocationProperties({ _: ["deploy", "customer-project-name"] }, "1.2.3"), {
35
- version: "1.2.3",
36
- cliCommand: "deploy",
37
- });
38
- });
39
- it("reports unknown when no command token is present", () => {
40
- assert.deepEqual(getCliInvocationProperties({ _: [] }, "1.2.3"), {
41
- version: "1.2.3",
42
- cliCommand: "unknown",
43
- });
44
- });
45
- it("does not fail the CLI when analytics capture fails", async () => {
46
- await assert.doesNotReject(captureCliInvocationEvent({ _: ["deploy"] }, "1.2.3", async () => {
47
- throw new Error("analytics failed");
48
- }));
49
- });
50
- });
51
- //# sourceMappingURL=cli-invocation.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-invocation.test.js","sourceRoot":"","sources":["../../../src/common/analytics/cli-invocation.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAE7B,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACvE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACvE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACvE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACtE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACpE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACzE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,CAAC,SAAS,CACd,0BAA0B,CACxB,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,uBAAuB,CAAC,EAAE,EAC1C,OAAO,CACR,EACD;YACE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ;SACrB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;YAC/D,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,MAAM,CAAC,aAAa,CACxB,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import assert from \"node:assert\";\nimport { describe, it } from \"node:test\";\nimport {\n captureCliInvocationEvent,\n getCliInvocationProperties,\n} from \"./cli-invocation.js\";\n\ndescribe(\"getCliInvocationProperties\", () => {\n it(\"captures the top-level CLI command token\", () => {\n assert.deepEqual(getCliInvocationProperties({ _: [\"deploy\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"deploy\",\n });\n assert.deepEqual(getCliInvocationProperties({ _: [\"bucket\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"bucket\",\n });\n assert.deepEqual(getCliInvocationProperties({ _: [\"logout\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"logout\",\n });\n assert.deepEqual(getCliInvocationProperties({ _: [\"hello\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"hello\",\n });\n });\n\n it(\"canonicalizes OpenAPI command aliases\", () => {\n assert.deepEqual(getCliInvocationProperties({ _: [\"oas\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"openapi\",\n });\n assert.deepEqual(getCliInvocationProperties({ _: [\"open-api\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"openapi\",\n });\n });\n\n it(\"does not include positional values after the command token\", () => {\n assert.deepEqual(\n getCliInvocationProperties(\n { _: [\"deploy\", \"customer-project-name\"] },\n \"1.2.3\"\n ),\n {\n version: \"1.2.3\",\n cliCommand: \"deploy\",\n }\n );\n });\n\n it(\"reports unknown when no command token is present\", () => {\n assert.deepEqual(getCliInvocationProperties({ _: [] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"unknown\",\n });\n });\n\n it(\"does not fail the CLI when analytics capture fails\", async () => {\n await assert.doesNotReject(\n captureCliInvocationEvent({ _: [\"deploy\"] }, \"1.2.3\", async () => {\n throw new Error(\"analytics failed\");\n })\n );\n });\n});\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=package-manager.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-manager.test.d.ts","sourceRoot":"","sources":["../../../src/common/analytics/package-manager.test.ts"],"names":[],"mappings":""}
@@ -1,163 +0,0 @@
1
- import assert from "node:assert";
2
- import { describe, it } from "node:test";
3
- import { getPackageManagerUsageProperties } from "./package-manager.js";
4
- describe("getPackageManagerUsageProperties", () => {
5
- it("buckets npm create under npm", () => {
6
- const info = getPackageManagerUsageProperties({
7
- npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64 workspaces/false",
8
- npm_command: "init",
9
- npm_execpath: "/usr/local/lib/node_modules/npm/bin/npm-cli.js",
10
- _: "/usr/local/bin/npm",
11
- });
12
- assert.strictEqual(info.packageManager, "npm");
13
- assert.strictEqual(info.runner, "npm-create");
14
- assert.strictEqual(info.packageManagerVersion, "10.9.0");
15
- assert.strictEqual(info.installSource, "system");
16
- });
17
- it("buckets npx under npm when npm exposes the npx runner", () => {
18
- const info = getPackageManagerUsageProperties({
19
- npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64 workspaces/false",
20
- npm_command: "exec",
21
- npm_execpath: "/usr/local/lib/node_modules/npm/bin/npx-cli.js",
22
- _: "/usr/local/bin/npx",
23
- });
24
- assert.strictEqual(info.packageManager, "npm");
25
- assert.strictEqual(info.runner, "npx");
26
- });
27
- it("buckets pnpm create under pnpm", () => {
28
- const info = getPackageManagerUsageProperties({
29
- npm_config_user_agent: "pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64",
30
- npm_command: "create",
31
- npm_execpath: "/Users/me/Library/pnpm/pnpm.cjs",
32
- _: "/Users/me/Library/pnpm/pnpm",
33
- });
34
- assert.strictEqual(info.packageManager, "pnpm");
35
- assert.strictEqual(info.runner, "pnpm-create");
36
- assert.strictEqual(info.packageManagerVersion, "10.7.0");
37
- });
38
- it("buckets pnpx under pnpm", () => {
39
- const info = getPackageManagerUsageProperties({
40
- npm_config_user_agent: "pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64",
41
- npm_command: "exec",
42
- npm_execpath: "/Users/me/Library/pnpm/pnpm.cjs",
43
- _: "/Users/me/Library/pnpm/pnpx",
44
- });
45
- assert.strictEqual(info.packageManager, "pnpm");
46
- assert.strictEqual(info.runner, "pnpx");
47
- });
48
- it("buckets yarn create under yarn", () => {
49
- const info = getPackageManagerUsageProperties({
50
- npm_config_user_agent: "yarn/4.5.1 npm/? node/v22.14.0 darwin arm64",
51
- npm_command: "create",
52
- npm_execpath: "/usr/local/bin/yarn.js",
53
- _: "/usr/local/bin/yarn",
54
- });
55
- assert.strictEqual(info.packageManager, "yarn");
56
- assert.strictEqual(info.runner, "yarn-create");
57
- assert.strictEqual(info.packageManagerVersion, "4.5.1");
58
- });
59
- it("buckets yarn dlx under yarn", () => {
60
- const info = getPackageManagerUsageProperties({
61
- npm_config_user_agent: "yarn/4.5.1 npm/? node/v22.14.0 darwin arm64",
62
- npm_command: "dlx",
63
- npm_execpath: "/usr/local/bin/yarn.js",
64
- _: "/usr/local/bin/yarn",
65
- });
66
- assert.strictEqual(info.packageManager, "yarn");
67
- assert.strictEqual(info.runner, "yarn-dlx");
68
- });
69
- it("buckets bun create under bun", () => {
70
- const info = getPackageManagerUsageProperties({
71
- npm_config_user_agent: "bun/1.2.0 npm/? node/v22.14.0 darwin arm64",
72
- npm_command: "create",
73
- npm_execpath: "/usr/local/bin/bun",
74
- _: "/usr/local/bin/bun",
75
- });
76
- assert.strictEqual(info.packageManager, "bun");
77
- assert.strictEqual(info.runner, "bun-create");
78
- assert.strictEqual(info.packageManagerVersion, "1.2.0");
79
- });
80
- it("buckets bunx under bun", () => {
81
- const info = getPackageManagerUsageProperties({
82
- npm_config_user_agent: "bun/1.2.0 npm/? node/v22.14.0 darwin arm64",
83
- npm_command: "x",
84
- npm_execpath: "/usr/local/bin/bun",
85
- _: "/usr/local/bin/bunx",
86
- });
87
- assert.strictEqual(info.packageManager, "bun");
88
- assert.strictEqual(info.runner, "bunx");
89
- });
90
- it("reports unknown for missing environment", () => {
91
- const info = getPackageManagerUsageProperties({});
92
- assert.strictEqual(info.packageManager, "unknown");
93
- assert.strictEqual(info.runner, "unknown");
94
- assert.strictEqual(info.installSource, "unknown");
95
- });
96
- });
97
- describe("installSource detection", () => {
98
- it("detects project-local node_modules/.bin", () => {
99
- const info = getPackageManagerUsageProperties({
100
- npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64",
101
- npm_execpath: "/Users/me/work/proj/node_modules/.bin/npm",
102
- _: "/Users/me/work/proj/node_modules/.bin/npm",
103
- });
104
- assert.strictEqual(info.installSource, "project-local");
105
- });
106
- it("detects corepack", () => {
107
- const info = getPackageManagerUsageProperties({
108
- npm_config_user_agent: "pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64",
109
- npm_execpath: "/Users/me/.nvm/versions/node/v22.14.0/lib/node_modules/corepack/dist/pnpm.js",
110
- _: "/Users/me/.nvm/versions/node/v22.14.0/bin/pnpm",
111
- });
112
- assert.strictEqual(info.installSource, "corepack");
113
- });
114
- it("detects volta", () => {
115
- const info = getPackageManagerUsageProperties({
116
- npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64",
117
- npm_execpath: "/Users/me/.volta/tools/image/npm/10.9.0/bin/npm-cli.js",
118
- _: "/Users/me/.volta/bin/npm",
119
- });
120
- assert.strictEqual(info.installSource, "volta");
121
- });
122
- it("detects nvm", () => {
123
- const info = getPackageManagerUsageProperties({
124
- npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64",
125
- npm_execpath: "/Users/me/.nvm/versions/node/v22.14.0/lib/node_modules/npm/bin/npm-cli.js",
126
- _: "/Users/me/.nvm/versions/node/v22.14.0/bin/npm",
127
- });
128
- assert.strictEqual(info.installSource, "nvm");
129
- });
130
- it("detects asdf", () => {
131
- const info = getPackageManagerUsageProperties({
132
- npm_config_user_agent: "npm/10.9.0 node/v22.14.0 linux x64",
133
- npm_execpath: "/Users/me/.asdf/installs/nodejs/22.14.0/lib/node_modules/npm/bin/npm-cli.js",
134
- _: "/Users/me/.asdf/shims/npm",
135
- });
136
- assert.strictEqual(info.installSource, "asdf");
137
- });
138
- it("detects fnm", () => {
139
- const info = getPackageManagerUsageProperties({
140
- npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64",
141
- npm_execpath: "/var/folders/xx/fnm_multishells/12345_0000000000000/lib/node_modules/npm/bin/npm-cli.js",
142
- _: "/Users/me/.fnm/aliases/default/bin/npm",
143
- });
144
- assert.strictEqual(info.installSource, "fnm");
145
- });
146
- it("detects homebrew (apple silicon path)", () => {
147
- const info = getPackageManagerUsageProperties({
148
- npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64",
149
- npm_execpath: "/opt/homebrew/Cellar/node/22.14.0/lib/node_modules/npm/bin/npm-cli.js",
150
- _: "/opt/homebrew/bin/npm",
151
- });
152
- assert.strictEqual(info.installSource, "homebrew");
153
- });
154
- it("detects system install", () => {
155
- const info = getPackageManagerUsageProperties({
156
- npm_config_user_agent: "npm/10.9.0 node/v22.14.0 linux x64",
157
- npm_execpath: "/usr/local/lib/node_modules/npm/bin/npm-cli.js",
158
- _: "/usr/local/bin/npm",
159
- });
160
- assert.strictEqual(info.installSource, "system");
161
- });
162
- });
163
- //# sourceMappingURL=package-manager.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-manager.test.js","sourceRoot":"","sources":["../../../src/common/analytics/package-manager.test.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert\";\nimport { describe, it } from \"node:test\";\nimport { getPackageManagerUsageProperties } from \"./package-manager.js\";\n\ndescribe(\"getPackageManagerUsageProperties\", () => {\n it(\"buckets npm create under npm\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent:\n \"npm/10.9.0 node/v22.14.0 darwin arm64 workspaces/false\",\n npm_command: \"init\",\n npm_execpath: \"/usr/local/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/usr/local/bin/npm\",\n });\n\n assert.strictEqual(info.packageManager, \"npm\");\n assert.strictEqual(info.runner, \"npm-create\");\n assert.strictEqual(info.packageManagerVersion, \"10.9.0\");\n assert.strictEqual(info.installSource, \"system\");\n });\n\n it(\"buckets npx under npm when npm exposes the npx runner\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent:\n \"npm/10.9.0 node/v22.14.0 darwin arm64 workspaces/false\",\n npm_command: \"exec\",\n npm_execpath: \"/usr/local/lib/node_modules/npm/bin/npx-cli.js\",\n _: \"/usr/local/bin/npx\",\n });\n\n assert.strictEqual(info.packageManager, \"npm\");\n assert.strictEqual(info.runner, \"npx\");\n });\n\n it(\"buckets pnpm create under pnpm\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"create\",\n npm_execpath: \"/Users/me/Library/pnpm/pnpm.cjs\",\n _: \"/Users/me/Library/pnpm/pnpm\",\n });\n\n assert.strictEqual(info.packageManager, \"pnpm\");\n assert.strictEqual(info.runner, \"pnpm-create\");\n assert.strictEqual(info.packageManagerVersion, \"10.7.0\");\n });\n\n it(\"buckets pnpx under pnpm\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"exec\",\n npm_execpath: \"/Users/me/Library/pnpm/pnpm.cjs\",\n _: \"/Users/me/Library/pnpm/pnpx\",\n });\n\n assert.strictEqual(info.packageManager, \"pnpm\");\n assert.strictEqual(info.runner, \"pnpx\");\n });\n\n it(\"buckets yarn create under yarn\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"yarn/4.5.1 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"create\",\n npm_execpath: \"/usr/local/bin/yarn.js\",\n _: \"/usr/local/bin/yarn\",\n });\n\n assert.strictEqual(info.packageManager, \"yarn\");\n assert.strictEqual(info.runner, \"yarn-create\");\n assert.strictEqual(info.packageManagerVersion, \"4.5.1\");\n });\n\n it(\"buckets yarn dlx under yarn\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"yarn/4.5.1 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"dlx\",\n npm_execpath: \"/usr/local/bin/yarn.js\",\n _: \"/usr/local/bin/yarn\",\n });\n\n assert.strictEqual(info.packageManager, \"yarn\");\n assert.strictEqual(info.runner, \"yarn-dlx\");\n });\n\n it(\"buckets bun create under bun\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"bun/1.2.0 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"create\",\n npm_execpath: \"/usr/local/bin/bun\",\n _: \"/usr/local/bin/bun\",\n });\n\n assert.strictEqual(info.packageManager, \"bun\");\n assert.strictEqual(info.runner, \"bun-create\");\n assert.strictEqual(info.packageManagerVersion, \"1.2.0\");\n });\n\n it(\"buckets bunx under bun\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"bun/1.2.0 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"x\",\n npm_execpath: \"/usr/local/bin/bun\",\n _: \"/usr/local/bin/bunx\",\n });\n\n assert.strictEqual(info.packageManager, \"bun\");\n assert.strictEqual(info.runner, \"bunx\");\n });\n\n it(\"reports unknown for missing environment\", () => {\n const info = getPackageManagerUsageProperties({});\n\n assert.strictEqual(info.packageManager, \"unknown\");\n assert.strictEqual(info.runner, \"unknown\");\n assert.strictEqual(info.installSource, \"unknown\");\n });\n});\n\ndescribe(\"installSource detection\", () => {\n it(\"detects project-local node_modules/.bin\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 darwin arm64\",\n npm_execpath: \"/Users/me/work/proj/node_modules/.bin/npm\",\n _: \"/Users/me/work/proj/node_modules/.bin/npm\",\n });\n assert.strictEqual(info.installSource, \"project-local\");\n });\n\n it(\"detects corepack\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64\",\n npm_execpath:\n \"/Users/me/.nvm/versions/node/v22.14.0/lib/node_modules/corepack/dist/pnpm.js\",\n _: \"/Users/me/.nvm/versions/node/v22.14.0/bin/pnpm\",\n });\n assert.strictEqual(info.installSource, \"corepack\");\n });\n\n it(\"detects volta\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 darwin arm64\",\n npm_execpath: \"/Users/me/.volta/tools/image/npm/10.9.0/bin/npm-cli.js\",\n _: \"/Users/me/.volta/bin/npm\",\n });\n assert.strictEqual(info.installSource, \"volta\");\n });\n\n it(\"detects nvm\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 darwin arm64\",\n npm_execpath:\n \"/Users/me/.nvm/versions/node/v22.14.0/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/Users/me/.nvm/versions/node/v22.14.0/bin/npm\",\n });\n assert.strictEqual(info.installSource, \"nvm\");\n });\n\n it(\"detects asdf\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 linux x64\",\n npm_execpath:\n \"/Users/me/.asdf/installs/nodejs/22.14.0/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/Users/me/.asdf/shims/npm\",\n });\n assert.strictEqual(info.installSource, \"asdf\");\n });\n\n it(\"detects fnm\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 darwin arm64\",\n npm_execpath:\n \"/var/folders/xx/fnm_multishells/12345_0000000000000/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/Users/me/.fnm/aliases/default/bin/npm\",\n });\n assert.strictEqual(info.installSource, \"fnm\");\n });\n\n it(\"detects homebrew (apple silicon path)\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 darwin arm64\",\n npm_execpath:\n \"/opt/homebrew/Cellar/node/22.14.0/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/opt/homebrew/bin/npm\",\n });\n assert.strictEqual(info.installSource, \"homebrew\");\n });\n\n it(\"detects system install\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 linux x64\",\n npm_execpath: \"/usr/local/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/usr/local/bin/npm\",\n });\n assert.strictEqual(info.installSource, \"system\");\n });\n});\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cli-dispatcher.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-dispatcher.test.d.ts","sourceRoot":"","sources":["../../src/common/cli-dispatcher.test.ts"],"names":[],"mappings":""}
@@ -1,80 +0,0 @@
1
- import { afterEach, beforeEach, describe, it } from "node:test";
2
- import { assert } from "chai";
3
- import { getGlobalDispatcher, MockAgent, setGlobalDispatcher, } from "undici";
4
- import { configureCliDispatcher } from "./cli-dispatcher.js";
5
- describe("configureCliDispatcher", () => {
6
- let mockAgent;
7
- let previousDispatcher;
8
- let previousCanary;
9
- beforeEach(() => {
10
- previousCanary = process.env.ZUPLO_CANARY;
11
- delete process.env.ZUPLO_CANARY;
12
- previousDispatcher = getGlobalDispatcher();
13
- mockAgent = new MockAgent();
14
- mockAgent.disableNetConnect();
15
- setGlobalDispatcher(mockAgent);
16
- });
17
- afterEach(async () => {
18
- if (previousCanary === undefined) {
19
- delete process.env.ZUPLO_CANARY;
20
- }
21
- else {
22
- process.env.ZUPLO_CANARY = previousCanary;
23
- }
24
- await mockAgent.close();
25
- setGlobalDispatcher(previousDispatcher);
26
- });
27
- it("sets ZuploCLI user-agent on outbound fetch requests", async () => {
28
- configureCliDispatcher("1.2.3");
29
- mockAgent
30
- .get("https://example.com")
31
- .intercept({
32
- path: "/v1/ping",
33
- method: "GET",
34
- headers: {
35
- "user-agent": "ZuploCLI/1.2.3",
36
- },
37
- })
38
- .reply(200, { ok: true });
39
- const response = await fetch("https://example.com/v1/ping");
40
- assert.strictEqual(response.status, 200);
41
- assert.strictEqual(mockAgent.pendingInterceptors().length, 0);
42
- });
43
- it("sets zp-canary when ZUPLO_CANARY is set", async () => {
44
- process.env.ZUPLO_CANARY = "1";
45
- configureCliDispatcher("9.9.9");
46
- mockAgent
47
- .get("https://example.com")
48
- .intercept({
49
- path: "/v1/ping",
50
- method: "GET",
51
- headers: {
52
- "user-agent": "ZuploCLI/9.9.9",
53
- "zp-canary": "true",
54
- },
55
- })
56
- .reply(200, { ok: true });
57
- const response = await fetch("https://example.com/v1/ping");
58
- assert.strictEqual(response.status, 200);
59
- assert.strictEqual(mockAgent.pendingInterceptors().length, 0);
60
- });
61
- it("does not set zp-canary when ZUPLO_CANARY is unset", async () => {
62
- configureCliDispatcher("1.0.0");
63
- let seenHeaders;
64
- mockAgent
65
- .get("https://example.com")
66
- .intercept({
67
- path: "/v1/ping",
68
- method: "GET",
69
- })
70
- .reply((opts) => {
71
- seenHeaders = opts.headers;
72
- return { statusCode: 200, data: { ok: true } };
73
- });
74
- await fetch("https://example.com/v1/ping");
75
- assert.ok(seenHeaders);
76
- assert.strictEqual(seenHeaders["user-agent"], "ZuploCLI/1.0.0");
77
- assert.isUndefined(seenHeaders["zp-canary"]);
78
- });
79
- });
80
- //# sourceMappingURL=cli-dispatcher.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-dispatcher.test.js","sourceRoot":"","sources":["../../src/common/cli-dispatcher.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { afterEach, beforeEach, describe, it } from \"node:test\";\nimport { assert } from \"chai\";\nimport {\n type Dispatcher,\n getGlobalDispatcher,\n MockAgent,\n setGlobalDispatcher,\n} from \"undici\";\nimport { configureCliDispatcher } from \"./cli-dispatcher.js\";\n\ndescribe(\"configureCliDispatcher\", () => {\n let mockAgent: MockAgent;\n let previousDispatcher: Dispatcher;\n let previousCanary: string | undefined;\n\n beforeEach(() => {\n previousCanary = process.env.ZUPLO_CANARY;\n delete process.env.ZUPLO_CANARY;\n\n // The subject under test replaces the process-global dispatcher itself, so\n // capture whatever was installed before this suite ran. The teardown used\n // to install a brand new `Agent()` instead, which left the real original\n // unreachable and abandoned a fresh Agent after every test.\n previousDispatcher = getGlobalDispatcher();\n mockAgent = new MockAgent();\n mockAgent.disableNetConnect();\n setGlobalDispatcher(mockAgent);\n });\n\n afterEach(async () => {\n if (previousCanary === undefined) {\n delete process.env.ZUPLO_CANARY;\n } else {\n process.env.ZUPLO_CANARY = previousCanary;\n }\n\n await mockAgent.close();\n setGlobalDispatcher(previousDispatcher);\n });\n\n it(\"sets ZuploCLI user-agent on outbound fetch requests\", async () => {\n configureCliDispatcher(\"1.2.3\");\n\n mockAgent\n .get(\"https://example.com\")\n .intercept({\n path: \"/v1/ping\",\n method: \"GET\",\n headers: {\n \"user-agent\": \"ZuploCLI/1.2.3\",\n },\n })\n .reply(200, { ok: true });\n\n const response = await fetch(\"https://example.com/v1/ping\");\n assert.strictEqual(response.status, 200);\n assert.strictEqual(mockAgent.pendingInterceptors().length, 0);\n });\n\n it(\"sets zp-canary when ZUPLO_CANARY is set\", async () => {\n process.env.ZUPLO_CANARY = \"1\";\n configureCliDispatcher(\"9.9.9\");\n\n mockAgent\n .get(\"https://example.com\")\n .intercept({\n path: \"/v1/ping\",\n method: \"GET\",\n headers: {\n \"user-agent\": \"ZuploCLI/9.9.9\",\n \"zp-canary\": \"true\",\n },\n })\n .reply(200, { ok: true });\n\n const response = await fetch(\"https://example.com/v1/ping\");\n assert.strictEqual(response.status, 200);\n assert.strictEqual(mockAgent.pendingInterceptors().length, 0);\n });\n\n it(\"does not set zp-canary when ZUPLO_CANARY is unset\", async () => {\n configureCliDispatcher(\"1.0.0\");\n\n let seenHeaders: Record<string, string | string[] | undefined> | undefined;\n\n mockAgent\n .get(\"https://example.com\")\n .intercept({\n path: \"/v1/ping\",\n method: \"GET\",\n })\n .reply((opts) => {\n seenHeaders = opts.headers as Record<\n string,\n string | string[] | undefined\n >;\n return { statusCode: 200, data: { ok: true } };\n });\n\n await fetch(\"https://example.com/v1/ping\");\n\n assert.ok(seenHeaders);\n assert.strictEqual(seenHeaders[\"user-agent\"], \"ZuploCLI/1.0.0\");\n assert.isUndefined(seenHeaders[\"zp-canary\"]);\n });\n});\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=check-pnpm-lifecycle.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check-pnpm-lifecycle.test.d.ts","sourceRoot":"","sources":["../../../src/common/middleware/check-pnpm-lifecycle.test.ts"],"names":[],"mappings":""}