@zuplo/cli 7.10.0 → 7.11.1

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 (310) hide show
  1. package/dist/common/worker-output.d.ts +7 -0
  2. package/dist/common/worker-output.d.ts.map +1 -1
  3. package/dist/common/worker-output.js +39 -0
  4. package/dist/common/worker-output.js.map +1 -1
  5. package/dist/tsconfig.tsbuildinfo +1 -1
  6. package/node_modules/@hono/node-server/README.md +2 -0
  7. package/node_modules/@hono/node-server/dist/index.cjs +1 -1
  8. package/node_modules/@hono/node-server/dist/index.mjs +1 -1
  9. package/node_modules/@hono/node-server/dist/serve-static.cjs +2 -1
  10. package/node_modules/@hono/node-server/dist/serve-static.mjs +2 -1
  11. package/node_modules/@hono/node-server/package.json +1 -1
  12. package/node_modules/@posthog/core/dist/metrics/index.d.ts +9 -0
  13. package/node_modules/@posthog/core/dist/metrics/index.d.ts.map +1 -1
  14. package/node_modules/@posthog/core/dist/metrics/index.js +38 -3
  15. package/node_modules/@posthog/core/dist/metrics/index.mjs +38 -3
  16. package/node_modules/@posthog/core/dist/metrics/types.d.ts +7 -2
  17. package/node_modules/@posthog/core/dist/metrics/types.d.ts.map +1 -1
  18. package/node_modules/@posthog/core/dist/traces/ids.d.ts.map +1 -1
  19. package/node_modules/@posthog/core/dist/traces/ids.js +2 -2
  20. package/node_modules/@posthog/core/dist/traces/ids.mjs +2 -2
  21. package/node_modules/@posthog/core/dist/types.d.ts +1 -1
  22. package/node_modules/@posthog/core/dist/types.d.ts.map +1 -1
  23. package/node_modules/@posthog/core/package.json +4 -3
  24. package/node_modules/@posthog/core/src/metrics/index.spec.ts +75 -0
  25. package/node_modules/@posthog/core/src/metrics/index.ts +60 -0
  26. package/node_modules/@posthog/core/src/metrics/types.ts +7 -1
  27. package/node_modules/@posthog/core/src/traces/ids.ts +4 -2
  28. package/node_modules/@posthog/core/src/types.ts +1 -1
  29. package/node_modules/@posthog/types/dist/capture-metric.d.ts +10 -0
  30. package/node_modules/@posthog/types/dist/capture-metric.d.ts.map +1 -1
  31. package/node_modules/@posthog/types/dist/capture.d.ts +1 -1
  32. package/node_modules/@posthog/types/dist/capture.d.ts.map +1 -1
  33. package/node_modules/@posthog/types/dist/index.d.ts +1 -1
  34. package/node_modules/@posthog/types/dist/index.d.ts.map +1 -1
  35. package/node_modules/@posthog/types/package.json +1 -1
  36. package/node_modules/@posthog/types/src/capture-metric.ts +11 -0
  37. package/node_modules/@posthog/types/src/capture.ts +1 -1
  38. package/node_modules/@posthog/types/src/index.ts +1 -0
  39. package/node_modules/@zuplo/core/customer.cli.minified.js +272 -261
  40. package/node_modules/@zuplo/core/index.minified.js +276 -265
  41. package/node_modules/@zuplo/core/package.json +1 -1
  42. package/node_modules/@zuplo/graphql/package.json +1 -1
  43. package/node_modules/@zuplo/openapi-tools/package.json +5 -2
  44. package/node_modules/@zuplo/otel/package.json +1 -1
  45. package/node_modules/@zuplo/runtime/out/esm/{chunk-YJ2BHVUH.js → chunk-CDEAY3VY.js} +2 -2
  46. package/node_modules/@zuplo/runtime/out/esm/chunk-LVSZ3WTO.js +37 -0
  47. package/node_modules/@zuplo/runtime/out/esm/chunk-LVSZ3WTO.js.map +1 -0
  48. package/node_modules/@zuplo/runtime/out/esm/{chunk-VTO3F6DK.js → chunk-NUVXDVLJ.js} +2 -2
  49. package/node_modules/@zuplo/runtime/out/esm/{chunk-6YPRGG62.js → chunk-RHU3Z7DA.js} +108 -108
  50. package/node_modules/@zuplo/runtime/out/esm/chunk-RHU3Z7DA.js.map +1 -0
  51. package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
  52. package/node_modules/@zuplo/runtime/out/esm/internal/index.js +1 -1
  53. package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
  54. package/node_modules/@zuplo/runtime/out/esm/mocks/index.js +1 -1
  55. package/node_modules/@zuplo/runtime/out/esm/sdks/aws/index.js +1 -1
  56. package/node_modules/@zuplo/runtime/out/types/index.d.ts +15 -24
  57. package/node_modules/@zuplo/runtime/out/types/internal/index.d.ts +14 -0
  58. package/node_modules/@zuplo/runtime/package.json +1 -1
  59. package/package.json +15 -12
  60. package/dist/__tests__/archive-utils.test.d.ts +0 -2
  61. package/dist/__tests__/archive-utils.test.d.ts.map +0 -1
  62. package/dist/__tests__/archive-utils.test.js +0 -50
  63. package/dist/__tests__/archive-utils.test.js.map +0 -1
  64. package/dist/__tests__/import-openapi.test.d.ts +0 -2
  65. package/dist/__tests__/import-openapi.test.d.ts.map +0 -1
  66. package/dist/__tests__/import-openapi.test.js +0 -251
  67. package/dist/__tests__/import-openapi.test.js.map +0 -1
  68. package/dist/__tests__/integration/confirm-linked-config.integration.test.d.ts +0 -2
  69. package/dist/__tests__/integration/confirm-linked-config.integration.test.d.ts.map +0 -1
  70. package/dist/__tests__/integration/confirm-linked-config.integration.test.js +0 -202
  71. package/dist/__tests__/integration/confirm-linked-config.integration.test.js.map +0 -1
  72. package/dist/__tests__/integration/confirm-production-deploy.integration.test.d.ts +0 -2
  73. package/dist/__tests__/integration/confirm-production-deploy.integration.test.d.ts.map +0 -1
  74. package/dist/__tests__/integration/confirm-production-deploy.integration.test.js +0 -184
  75. package/dist/__tests__/integration/confirm-production-deploy.integration.test.js.map +0 -1
  76. package/dist/__tests__/integration/custom-domain.integration.test.d.ts +0 -2
  77. package/dist/__tests__/integration/custom-domain.integration.test.d.ts.map +0 -1
  78. package/dist/__tests__/integration/custom-domain.integration.test.js +0 -563
  79. package/dist/__tests__/integration/custom-domain.integration.test.js.map +0 -1
  80. package/dist/__tests__/integration/delete.integration.test.d.ts +0 -2
  81. package/dist/__tests__/integration/delete.integration.test.d.ts.map +0 -1
  82. package/dist/__tests__/integration/delete.integration.test.js +0 -262
  83. package/dist/__tests__/integration/delete.integration.test.js.map +0 -1
  84. package/dist/__tests__/integration/deploy.integration.test.d.ts +0 -2
  85. package/dist/__tests__/integration/deploy.integration.test.d.ts.map +0 -1
  86. package/dist/__tests__/integration/deploy.integration.test.js +0 -519
  87. package/dist/__tests__/integration/deploy.integration.test.js.map +0 -1
  88. package/dist/__tests__/integration/get-project-param.integration.test.d.ts +0 -2
  89. package/dist/__tests__/integration/get-project-param.integration.test.d.ts.map +0 -1
  90. package/dist/__tests__/integration/get-project-param.integration.test.js +0 -305
  91. package/dist/__tests__/integration/get-project-param.integration.test.js.map +0 -1
  92. package/dist/__tests__/integration/info.integration.test.d.ts +0 -2
  93. package/dist/__tests__/integration/info.integration.test.d.ts.map +0 -1
  94. package/dist/__tests__/integration/info.integration.test.js +0 -293
  95. package/dist/__tests__/integration/info.integration.test.js.map +0 -1
  96. package/dist/__tests__/integration/jest-mocks-setup.d.ts +0 -2
  97. package/dist/__tests__/integration/jest-mocks-setup.d.ts.map +0 -1
  98. package/dist/__tests__/integration/jest-mocks-setup.js +0 -104
  99. package/dist/__tests__/integration/jest-mocks-setup.js.map +0 -1
  100. package/dist/__tests__/integration/jest-setup.d.ts +0 -2
  101. package/dist/__tests__/integration/jest-setup.d.ts.map +0 -1
  102. package/dist/__tests__/integration/jest-setup.js +0 -12
  103. package/dist/__tests__/integration/jest-setup.js.map +0 -1
  104. package/dist/__tests__/integration/link.integration.test.d.ts +0 -2
  105. package/dist/__tests__/integration/link.integration.test.d.ts.map +0 -1
  106. package/dist/__tests__/integration/link.integration.test.js +0 -395
  107. package/dist/__tests__/integration/link.integration.test.js.map +0 -1
  108. package/dist/__tests__/integration/linked-config-cascade.integration.test.d.ts +0 -2
  109. package/dist/__tests__/integration/linked-config-cascade.integration.test.d.ts.map +0 -1
  110. package/dist/__tests__/integration/linked-config-cascade.integration.test.js +0 -179
  111. package/dist/__tests__/integration/linked-config-cascade.integration.test.js.map +0 -1
  112. package/dist/__tests__/integration/list.integration.test.d.ts +0 -2
  113. package/dist/__tests__/integration/list.integration.test.d.ts.map +0 -1
  114. package/dist/__tests__/integration/list.integration.test.js +0 -300
  115. package/dist/__tests__/integration/list.integration.test.js.map +0 -1
  116. package/dist/__tests__/integration/source-upgrade.integration.test.d.ts +0 -2
  117. package/dist/__tests__/integration/source-upgrade.integration.test.d.ts.map +0 -1
  118. package/dist/__tests__/integration/source-upgrade.integration.test.js +0 -100
  119. package/dist/__tests__/integration/source-upgrade.integration.test.js.map +0 -1
  120. package/dist/__tests__/integration/test-utils.d.ts +0 -30
  121. package/dist/__tests__/integration/test-utils.d.ts.map +0 -1
  122. package/dist/__tests__/integration/test-utils.js +0 -82
  123. package/dist/__tests__/integration/test-utils.js.map +0 -1
  124. package/dist/__tests__/integration/tunnel.integration.test.d.ts +0 -2
  125. package/dist/__tests__/integration/tunnel.integration.test.d.ts.map +0 -1
  126. package/dist/__tests__/integration/tunnel.integration.test.js +0 -486
  127. package/dist/__tests__/integration/tunnel.integration.test.js.map +0 -1
  128. package/dist/__tests__/integration/variable.integration.test.d.ts +0 -2
  129. package/dist/__tests__/integration/variable.integration.test.d.ts.map +0 -1
  130. package/dist/__tests__/integration/variable.integration.test.js +0 -258
  131. package/dist/__tests__/integration/variable.integration.test.js.map +0 -1
  132. package/dist/__tests__/integration/whoami.integration.test.d.ts +0 -2
  133. package/dist/__tests__/integration/whoami.integration.test.d.ts.map +0 -1
  134. package/dist/__tests__/integration/whoami.integration.test.js +0 -116
  135. package/dist/__tests__/integration/whoami.integration.test.js.map +0 -1
  136. package/dist/__tests__/outdated.test.d.ts +0 -2
  137. package/dist/__tests__/outdated.test.d.ts.map +0 -1
  138. package/dist/__tests__/outdated.test.js +0 -67
  139. package/dist/__tests__/outdated.test.js.map +0 -1
  140. package/dist/__tests__/populate.test.d.ts +0 -2
  141. package/dist/__tests__/populate.test.d.ts.map +0 -1
  142. package/dist/__tests__/populate.test.js +0 -445
  143. package/dist/__tests__/populate.test.js.map +0 -1
  144. package/dist/__tests__/tsconfig-upgrader.test.d.ts +0 -2
  145. package/dist/__tests__/tsconfig-upgrader.test.d.ts.map +0 -1
  146. package/dist/__tests__/tsconfig-upgrader.test.js +0 -31
  147. package/dist/__tests__/tsconfig-upgrader.test.js.map +0 -1
  148. package/dist/ca-certificate/validation.test.d.ts +0 -2
  149. package/dist/ca-certificate/validation.test.d.ts.map +0 -1
  150. package/dist/ca-certificate/validation.test.js +0 -131
  151. package/dist/ca-certificate/validation.test.js.map +0 -1
  152. package/dist/common/analytics/cli-invocation.test.d.ts +0 -2
  153. package/dist/common/analytics/cli-invocation.test.d.ts.map +0 -1
  154. package/dist/common/analytics/cli-invocation.test.js +0 -51
  155. package/dist/common/analytics/cli-invocation.test.js.map +0 -1
  156. package/dist/common/analytics/package-manager.test.d.ts +0 -2
  157. package/dist/common/analytics/package-manager.test.d.ts.map +0 -1
  158. package/dist/common/analytics/package-manager.test.js +0 -163
  159. package/dist/common/analytics/package-manager.test.js.map +0 -1
  160. package/dist/common/cli-dispatcher.test.d.ts +0 -2
  161. package/dist/common/cli-dispatcher.test.d.ts.map +0 -1
  162. package/dist/common/cli-dispatcher.test.js +0 -80
  163. package/dist/common/cli-dispatcher.test.js.map +0 -1
  164. package/dist/common/middleware/check-pnpm-lifecycle.test.d.ts +0 -2
  165. package/dist/common/middleware/check-pnpm-lifecycle.test.d.ts.map +0 -1
  166. package/dist/common/middleware/check-pnpm-lifecycle.test.js +0 -125
  167. package/dist/common/middleware/check-pnpm-lifecycle.test.js.map +0 -1
  168. package/dist/common/middleware/get-environment-param.test.d.ts +0 -2
  169. package/dist/common/middleware/get-environment-param.test.d.ts.map +0 -1
  170. package/dist/common/middleware/get-environment-param.test.js +0 -57
  171. package/dist/common/middleware/get-environment-param.test.js.map +0 -1
  172. package/dist/common/read-linked-config.test.d.ts +0 -2
  173. package/dist/common/read-linked-config.test.d.ts.map +0 -1
  174. package/dist/common/read-linked-config.test.js +0 -363
  175. package/dist/common/read-linked-config.test.js.map +0 -1
  176. package/dist/common/terminal.test.d.ts +0 -2
  177. package/dist/common/terminal.test.d.ts.map +0 -1
  178. package/dist/common/terminal.test.js +0 -101
  179. package/dist/common/terminal.test.js.map +0 -1
  180. package/dist/common/utils/build-environment-prompt-choices.test.d.ts +0 -2
  181. package/dist/common/utils/build-environment-prompt-choices.test.d.ts.map +0 -1
  182. package/dist/common/utils/build-environment-prompt-choices.test.js +0 -97
  183. package/dist/common/utils/build-environment-prompt-choices.test.js.map +0 -1
  184. package/dist/common/utils/format-environment-type.test.d.ts +0 -2
  185. package/dist/common/utils/format-environment-type.test.d.ts.map +0 -1
  186. package/dist/common/utils/format-environment-type.test.js +0 -32
  187. package/dist/common/utils/format-environment-type.test.js.map +0 -1
  188. package/dist/common/utils/pnpm-lifecycle.test.d.ts +0 -2
  189. package/dist/common/utils/pnpm-lifecycle.test.d.ts.map +0 -1
  190. package/dist/common/utils/pnpm-lifecycle.test.js +0 -196
  191. package/dist/common/utils/pnpm-lifecycle.test.js.map +0 -1
  192. package/dist/common/utils/pretty-print-environment-prompt.test.d.ts +0 -2
  193. package/dist/common/utils/pretty-print-environment-prompt.test.d.ts.map +0 -1
  194. package/dist/common/utils/pretty-print-environment-prompt.test.js +0 -42
  195. package/dist/common/utils/pretty-print-environment-prompt.test.js.map +0 -1
  196. package/dist/common/utils/sort-environments-for-prompt.test.d.ts +0 -2
  197. package/dist/common/utils/sort-environments-for-prompt.test.d.ts.map +0 -1
  198. package/dist/common/utils/sort-environments-for-prompt.test.js +0 -82
  199. package/dist/common/utils/sort-environments-for-prompt.test.js.map +0 -1
  200. package/dist/common/utils/stringify-config.test.d.ts +0 -2
  201. package/dist/common/utils/stringify-config.test.d.ts.map +0 -1
  202. package/dist/common/utils/stringify-config.test.js +0 -80
  203. package/dist/common/utils/stringify-config.test.js.map +0 -1
  204. package/dist/common/validators/argument-validators.spec.d.ts +0 -2
  205. package/dist/common/validators/argument-validators.spec.d.ts.map +0 -1
  206. package/dist/common/validators/argument-validators.spec.js +0 -181
  207. package/dist/common/validators/argument-validators.spec.js.map +0 -1
  208. package/dist/deploy/archive.local-registry.test.d.ts +0 -2
  209. package/dist/deploy/archive.local-registry.test.d.ts.map +0 -1
  210. package/dist/deploy/archive.local-registry.test.js +0 -100
  211. package/dist/deploy/archive.local-registry.test.js.map +0 -1
  212. package/dist/deploy/archive.test.d.ts +0 -2
  213. package/dist/deploy/archive.test.d.ts.map +0 -1
  214. package/dist/deploy/archive.test.js +0 -248
  215. package/dist/deploy/archive.test.js.map +0 -1
  216. package/dist/deploy/classify-build-probe.test.d.ts +0 -2
  217. package/dist/deploy/classify-build-probe.test.d.ts.map +0 -1
  218. package/dist/deploy/classify-build-probe.test.js +0 -51
  219. package/dist/deploy/classify-build-probe.test.js.map +0 -1
  220. package/dist/deploy/poll-deployment.test.d.ts +0 -2
  221. package/dist/deploy/poll-deployment.test.d.ts.map +0 -1
  222. package/dist/deploy/poll-deployment.test.js +0 -158
  223. package/dist/deploy/poll-deployment.test.js.map +0 -1
  224. package/dist/dev/zuplo-local-gitignore.test.d.ts +0 -2
  225. package/dist/dev/zuplo-local-gitignore.test.d.ts.map +0 -1
  226. package/dist/dev/zuplo-local-gitignore.test.js +0 -58
  227. package/dist/dev/zuplo-local-gitignore.test.js.map +0 -1
  228. package/dist/editor/e2e/editor.spec.d.ts +0 -2
  229. package/dist/editor/e2e/editor.spec.d.ts.map +0 -1
  230. package/dist/editor/e2e/editor.spec.js +0 -44
  231. package/dist/editor/e2e/editor.spec.js.map +0 -1
  232. package/dist/link/project-type.test.d.ts +0 -2
  233. package/dist/link/project-type.test.d.ts.map +0 -1
  234. package/dist/link/project-type.test.js +0 -225
  235. package/dist/link/project-type.test.js.map +0 -1
  236. package/dist/lint/resolve-binary.test.d.ts +0 -2
  237. package/dist/lint/resolve-binary.test.d.ts.map +0 -1
  238. package/dist/lint/resolve-binary.test.js +0 -155
  239. package/dist/lint/resolve-binary.test.js.map +0 -1
  240. package/dist/open-api/convert/handler.spec.d.ts +0 -2
  241. package/dist/open-api/convert/handler.spec.d.ts.map +0 -1
  242. package/dist/open-api/convert/handler.spec.js +0 -301
  243. package/dist/open-api/convert/handler.spec.js.map +0 -1
  244. package/dist/open-api/merge/handler.spec.d.ts +0 -2
  245. package/dist/open-api/merge/handler.spec.d.ts.map +0 -1
  246. package/dist/open-api/merge/handler.spec.js +0 -673
  247. package/dist/open-api/merge/handler.spec.js.map +0 -1
  248. package/dist/open-api/overlay/handler.spec.d.ts +0 -2
  249. package/dist/open-api/overlay/handler.spec.d.ts.map +0 -1
  250. package/dist/open-api/overlay/handler.spec.js +0 -346
  251. package/dist/open-api/overlay/handler.spec.js.map +0 -1
  252. package/dist/source/ai-gateway/files.test.d.ts +0 -2
  253. package/dist/source/ai-gateway/files.test.d.ts.map +0 -1
  254. package/dist/source/ai-gateway/files.test.js +0 -135
  255. package/dist/source/ai-gateway/files.test.js.map +0 -1
  256. package/dist/source/ai-gateway/handler.test.d.ts +0 -2
  257. package/dist/source/ai-gateway/handler.test.d.ts.map +0 -1
  258. package/dist/source/ai-gateway/handler.test.js +0 -113
  259. package/dist/source/ai-gateway/handler.test.js.map +0 -1
  260. package/dist/source/ai-gateway/package.test.d.ts +0 -2
  261. package/dist/source/ai-gateway/package.test.d.ts.map +0 -1
  262. package/dist/source/ai-gateway/package.test.js +0 -30
  263. package/dist/source/ai-gateway/package.test.js.map +0 -1
  264. package/dist/source/ai-gateway/planner.test.d.ts +0 -2
  265. package/dist/source/ai-gateway/planner.test.d.ts.map +0 -1
  266. package/dist/source/ai-gateway/planner.test.js +0 -330
  267. package/dist/source/ai-gateway/planner.test.js.map +0 -1
  268. package/dist/source/ai-gateway/release.test.d.ts +0 -2
  269. package/dist/source/ai-gateway/release.test.d.ts.map +0 -1
  270. package/dist/source/ai-gateway/release.test.js +0 -62
  271. package/dist/source/ai-gateway/release.test.js.map +0 -1
  272. package/dist/test/invoke-test.test.d.ts +0 -2
  273. package/dist/test/invoke-test.test.d.ts.map +0 -1
  274. package/dist/test/invoke-test.test.js +0 -150
  275. package/dist/test/invoke-test.test.js.map +0 -1
  276. package/dist/test/test-files.test.d.ts +0 -2
  277. package/dist/test/test-files.test.d.ts.map +0 -1
  278. package/dist/test/test-files.test.js +0 -57
  279. package/dist/test/test-files.test.js.map +0 -1
  280. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.d.ts +0 -2
  281. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.d.ts.map +0 -1
  282. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.js +0 -289
  283. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.js.map +0 -1
  284. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.d.ts +0 -2
  285. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.d.ts.map +0 -1
  286. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.js +0 -181
  287. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.js.map +0 -1
  288. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.d.ts +0 -2
  289. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.d.ts.map +0 -1
  290. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.js +0 -399
  291. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.js.map +0 -1
  292. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.d.ts +0 -2
  293. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.d.ts.map +0 -1
  294. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.js +0 -779
  295. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.js.map +0 -1
  296. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.d.ts +0 -2
  297. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.d.ts.map +0 -1
  298. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.js +0 -269
  299. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.js.map +0 -1
  300. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.d.ts +0 -2
  301. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.d.ts.map +0 -1
  302. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.js +0 -93
  303. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.js.map +0 -1
  304. package/node_modules/@zuplo/runtime/out/esm/chunk-6YPRGG62.js.map +0 -1
  305. package/node_modules/@zuplo/runtime/out/esm/chunk-PBDT4FDO.js +0 -37
  306. package/node_modules/@zuplo/runtime/out/esm/chunk-PBDT4FDO.js.map +0 -1
  307. /package/node_modules/@zuplo/runtime/out/esm/{chunk-YJ2BHVUH.js.map → chunk-CDEAY3VY.js.map} +0 -0
  308. /package/node_modules/@zuplo/runtime/out/esm/{chunk-PBDT4FDO.js.LEGAL.txt → chunk-LVSZ3WTO.js.LEGAL.txt} +0 -0
  309. /package/node_modules/@zuplo/runtime/out/esm/{chunk-VTO3F6DK.js.map → chunk-NUVXDVLJ.js.map} +0 -0
  310. /package/node_modules/@zuplo/runtime/out/esm/{chunk-6YPRGG62.js.LEGAL.txt → chunk-RHU3Z7DA.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":""}