@zuplo/cli 7.0.2 → 7.1.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 (594) hide show
  1. package/dist/delete/handler.js +2 -2
  2. package/dist/delete/handler.js.map +1 -1
  3. package/dist/deploy/handler.js +1 -1
  4. package/dist/deploy/handler.js.map +1 -1
  5. package/dist/deploy/poll-deployment.js +1 -1
  6. package/dist/deploy/poll-deployment.js.map +1 -1
  7. package/dist/tsconfig.tsbuildinfo +1 -1
  8. package/node_modules/@pinojs/redact/.github/dependabot.yml +13 -0
  9. package/node_modules/@pinojs/redact/.github/workflows/ci.yml +48 -0
  10. package/node_modules/@pinojs/redact/.github/workflows/publish-release.yml +43 -0
  11. package/node_modules/{event-target-shim → @pinojs/redact}/LICENSE +2 -3
  12. package/node_modules/@pinojs/redact/README.md +350 -0
  13. package/node_modules/@pinojs/redact/benchmarks/basic.js +184 -0
  14. package/node_modules/@pinojs/redact/eslint.config.js +1 -0
  15. package/node_modules/@pinojs/redact/index.d.ts +52 -0
  16. package/node_modules/@pinojs/redact/index.js +529 -0
  17. package/node_modules/@pinojs/redact/index.test-d.ts +22 -0
  18. package/node_modules/@pinojs/redact/package.json +37 -0
  19. package/node_modules/@pinojs/redact/scripts/sync-version.mjs +20 -0
  20. package/node_modules/@pinojs/redact/test/actual-redact-comparison.test.js +211 -0
  21. package/node_modules/@pinojs/redact/test/index.test.js +824 -0
  22. package/node_modules/@pinojs/redact/test/integration.test.js +390 -0
  23. package/node_modules/@pinojs/redact/test/multiple-wildcards.test.js +227 -0
  24. package/node_modules/@pinojs/redact/test/prototype-pollution.test.js +223 -0
  25. package/node_modules/@pinojs/redact/test/selective-clone.test.js +115 -0
  26. package/node_modules/@pinojs/redact/tsconfig.json +19 -0
  27. package/node_modules/@zuplo/core/customer.cli.minified.js +240 -240
  28. package/node_modules/@zuplo/core/index.minified.js +258 -258
  29. package/node_modules/@zuplo/core/package.json +1 -1
  30. package/node_modules/{abort-controller → @zuplo/editor/node_modules/fast-copy}/LICENSE +1 -1
  31. package/node_modules/@zuplo/editor/node_modules/fast-copy/README.md +395 -0
  32. package/node_modules/@zuplo/editor/node_modules/fast-copy/dist/cjs/index.cjs +406 -0
  33. package/node_modules/@zuplo/editor/node_modules/fast-copy/dist/cjs/index.cjs.map +1 -0
  34. package/node_modules/@zuplo/editor/node_modules/fast-copy/dist/umd/index.js +412 -0
  35. package/node_modules/@zuplo/editor/node_modules/fast-copy/dist/umd/index.js.map +1 -0
  36. package/node_modules/@zuplo/editor/node_modules/fast-copy/index.d.ts +55 -0
  37. package/node_modules/@zuplo/editor/node_modules/fast-copy/package.json +103 -0
  38. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/.github/workflows/ci.yml +97 -0
  39. package/node_modules/{fast-redact → @zuplo/editor/node_modules/pino-abstract-transport}/LICENSE +3 -3
  40. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/README.md +172 -0
  41. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/index.d.ts +122 -0
  42. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/index.js +128 -0
  43. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/package.json +40 -0
  44. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/test/base.test.js +445 -0
  45. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/test/fixtures/transport-async-iteration.js +22 -0
  46. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/test/fixtures/transport-on-data.js +22 -0
  47. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/test/fixtures/transport-transform.js +24 -0
  48. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/test/fixtures/worker-pipeline.js +15 -0
  49. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/test/types/index.test-d.ts +31 -0
  50. package/node_modules/@zuplo/editor/node_modules/pino-abstract-transport/test/worker.test.js +357 -0
  51. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/.airtap.yml +7 -0
  52. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/.github/dependabot.yml +13 -0
  53. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/.github/stale.yml +21 -0
  54. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/.github/workflows/ci.yml +137 -0
  55. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/README.md +126 -0
  56. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/benchmarks/ignore.js +35 -0
  57. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/benchmarks/no__proto__.js +40 -0
  58. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/benchmarks/package.json +15 -0
  59. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/benchmarks/remove.js +39 -0
  60. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/benchmarks/throw.js +49 -0
  61. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/benchmarks/valid.js +49 -0
  62. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/index.js +126 -0
  63. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/package.json +41 -0
  64. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/test/index.test.js +505 -0
  65. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/types/index.d.ts +57 -0
  66. package/node_modules/@zuplo/editor/node_modules/secure-json-parse/types/index.test-d.ts +31 -0
  67. package/node_modules/@zuplo/editor/node_modules/strip-json-comments/index.d.ts +36 -0
  68. package/node_modules/@zuplo/editor/node_modules/strip-json-comments/index.js +77 -0
  69. package/node_modules/@zuplo/editor/node_modules/strip-json-comments/license +9 -0
  70. package/node_modules/@zuplo/editor/node_modules/strip-json-comments/package.json +47 -0
  71. package/node_modules/@zuplo/editor/node_modules/strip-json-comments/readme.md +78 -0
  72. package/node_modules/@zuplo/editor/node_modules/thread-stream/.claude/settings.local.json +15 -0
  73. package/node_modules/@zuplo/editor/node_modules/thread-stream/.github/dependabot.yml +13 -0
  74. package/node_modules/{pino → @zuplo/editor/node_modules/thread-stream}/.github/workflows/ci.yml +25 -19
  75. package/node_modules/@zuplo/editor/node_modules/thread-stream/.husky/pre-commit +4 -0
  76. package/node_modules/@zuplo/editor/node_modules/{process-warning → thread-stream}/LICENSE +1 -1
  77. package/node_modules/@zuplo/editor/node_modules/thread-stream/README.md +136 -0
  78. package/node_modules/@zuplo/editor/node_modules/thread-stream/bench.js +85 -0
  79. package/node_modules/@zuplo/editor/node_modules/thread-stream/index.d.ts +92 -0
  80. package/node_modules/@zuplo/editor/node_modules/thread-stream/index.js +565 -0
  81. package/node_modules/@zuplo/editor/node_modules/thread-stream/lib/indexes.js +11 -0
  82. package/node_modules/@zuplo/editor/node_modules/thread-stream/lib/wait.js +61 -0
  83. package/node_modules/@zuplo/editor/node_modules/thread-stream/lib/worker.js +186 -0
  84. package/node_modules/@zuplo/editor/node_modules/thread-stream/package.json +57 -0
  85. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/base.test.js +258 -0
  86. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/bench.test.js +38 -0
  87. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/bundlers.test.js +60 -0
  88. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/close-on-gc.js +37 -0
  89. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/commonjs-fallback.test.js +80 -0
  90. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/context.test.js +21 -0
  91. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/create-and-exit.js +16 -0
  92. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/custom-worker.js +9 -0
  93. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/dir with spaces/test-package.zip +0 -0
  94. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/emit-event.js +22 -0
  95. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/end.test.js +61 -0
  96. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/error.js +14 -0
  97. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/esm.test.mjs +47 -0
  98. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/event.test.js +23 -0
  99. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/exit.js +14 -0
  100. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/get-context.js +22 -0
  101. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/helper.d.ts +1 -0
  102. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/helper.js +35 -0
  103. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/indexes.test.js +11 -0
  104. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/message-without-code.js +19 -0
  105. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/multibyte-chars.test.mjs +74 -0
  106. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/on-message.js +18 -0
  107. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/pkg/index.js +37 -0
  108. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/pkg/pkg.config.json +15 -0
  109. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/pkg/pkg.test.js +46 -0
  110. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/port.js +16 -0
  111. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/post-message.test.js +24 -0
  112. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/string-limit-2.test.js +41 -0
  113. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/string-limit.test.js +42 -0
  114. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/syntax-error.mjs +2 -0
  115. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/thread-management.test.js +121 -0
  116. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/to-file-on-destroy.js +23 -0
  117. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/to-file-on-final.js +24 -0
  118. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/to-file.js +12 -0
  119. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/to-file.mjs +8 -0
  120. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/to-next.js +9 -0
  121. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/transpiled.test.js +30 -0
  122. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/ts/to-file.ts +10 -0
  123. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/ts/transpile.sh +19 -0
  124. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/ts-commonjs-default-export.zip +0 -0
  125. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/uncaughtException.js +21 -0
  126. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/unhandledRejection.js +21 -0
  127. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/watch-mode.test.js +28 -0
  128. package/node_modules/@zuplo/editor/node_modules/thread-stream/test/yarnrc.yml +7 -0
  129. package/node_modules/@zuplo/editor/node_modules/thread-stream/tsconfig.json +8 -0
  130. package/node_modules/@zuplo/graphql/package.json +1 -1
  131. package/node_modules/@zuplo/openapi-tools/package.json +1 -1
  132. package/node_modules/@zuplo/otel/package.json +1 -1
  133. package/node_modules/@zuplo/runtime/out/esm/{chunk-XLNOQPTE.js → chunk-RS7HF7BL.js} +63 -63
  134. package/node_modules/@zuplo/runtime/out/esm/chunk-RS7HF7BL.js.map +1 -0
  135. package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
  136. package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
  137. package/node_modules/@zuplo/runtime/out/types/index.d.ts +16 -19
  138. package/node_modules/@zuplo/runtime/out/types/internal/index.d.ts +1 -2
  139. package/node_modules/@zuplo/runtime/out/types/mcp/messages/index.d.ts +1 -2
  140. package/node_modules/@zuplo/runtime/out/types/mcp-gateway/index.d.ts +1 -2
  141. package/node_modules/@zuplo/runtime/out/types/mocks/index.d.ts +1 -2
  142. package/node_modules/@zuplo/runtime/out/types/sdks/aws/index.d.ts +1 -2
  143. package/node_modules/@zuplo/runtime/package.json +1 -1
  144. package/node_modules/fast-copy/LICENSE +1 -1
  145. package/node_modules/fast-copy/README.md +186 -154
  146. package/node_modules/fast-copy/dist/cjs/index.cjs +143 -214
  147. package/node_modules/fast-copy/dist/cjs/index.cjs.map +1 -1
  148. package/node_modules/fast-copy/dist/cjs/index.d.cts +54 -0
  149. package/node_modules/fast-copy/dist/es/index.d.mts +54 -0
  150. package/node_modules/fast-copy/dist/es/index.mjs +331 -0
  151. package/node_modules/fast-copy/dist/es/index.mjs.map +1 -0
  152. package/node_modules/fast-copy/dist/umd/index.d.ts +54 -0
  153. package/node_modules/fast-copy/dist/umd/index.js +143 -214
  154. package/node_modules/fast-copy/dist/umd/index.js.map +1 -1
  155. package/node_modules/fast-copy/index.d.ts +37 -38
  156. package/node_modules/fast-copy/package.json +68 -61
  157. package/node_modules/pino/CONTRIBUTING.md +4 -4
  158. package/node_modules/pino/LICENSE +1 -1
  159. package/node_modules/pino/README.md +18 -2
  160. package/node_modules/pino/SECURITY.md +19 -0
  161. package/node_modules/pino/browser.js +76 -13
  162. package/node_modules/pino/build/sync-version.js +16 -1
  163. package/node_modules/pino/docs/api.md +128 -5
  164. package/node_modules/pino/docs/browser.md +51 -0
  165. package/node_modules/pino/docs/diagnostics.md +16 -0
  166. package/node_modules/pino/docs/ecosystem.md +15 -12
  167. package/node_modules/pino/docs/help.md +28 -2
  168. package/node_modules/pino/docs/transports.md +188 -20
  169. package/node_modules/pino/docs/web.md +40 -0
  170. package/node_modules/pino/eslint.config.js +28 -0
  171. package/node_modules/pino/lib/meta.js +1 -1
  172. package/node_modules/pino/lib/multistream.js +17 -2
  173. package/node_modules/pino/lib/proto.js +34 -10
  174. package/node_modules/pino/lib/redaction.js +9 -13
  175. package/node_modules/pino/lib/time.js +29 -1
  176. package/node_modules/pino/lib/tools.js +42 -9
  177. package/node_modules/pino/lib/transport.js +125 -3
  178. package/node_modules/pino/package.json +25 -25
  179. package/node_modules/pino/pino.d.ts +228 -203
  180. package/node_modules/pino/pino.js +2 -1
  181. package/node_modules/pino/test/basic.test.js +179 -167
  182. package/node_modules/pino/test/broken-pipe.test.js +16 -14
  183. package/node_modules/pino/test/browser-is-level-enabled.test.js +101 -0
  184. package/node_modules/pino/test/browser.test.js +39 -0
  185. package/node_modules/pino/test/complex-objects.test.js +8 -6
  186. package/node_modules/pino/test/crlf.test.js +7 -5
  187. package/node_modules/pino/test/custom-levels.test.js +80 -66
  188. package/node_modules/pino/test/diagnostics.test.js +107 -0
  189. package/node_modules/pino/test/error-key.test.js +37 -0
  190. package/node_modules/pino/test/error.test.js +47 -42
  191. package/node_modules/pino/test/escaping.test.js +7 -5
  192. package/node_modules/pino/test/esm/esm.mjs +5 -3
  193. package/node_modules/pino/test/esm/index.test.js +14 -27
  194. package/node_modules/pino/test/esm/named-exports.mjs +8 -6
  195. package/node_modules/pino/test/exit.test.js +17 -15
  196. package/node_modules/pino/test/fixtures/crashing-transport.js +13 -0
  197. package/node_modules/pino/test/fixtures/transport-invalid-node-options.js +26 -0
  198. package/node_modules/pino/test/fixtures/transport-preload-main.mjs +13 -0
  199. package/node_modules/pino/test/fixtures/transport-preload.mjs +13 -0
  200. package/node_modules/pino/test/fixtures/transport-worker-name.js +24 -0
  201. package/node_modules/pino/test/fixtures/ts/to-file-transport-native.mts +15 -0
  202. package/node_modules/pino/test/fixtures/ts/to-file-transport-with-transform.ts +1 -1
  203. package/node_modules/pino/test/formatters.test.js +43 -34
  204. package/node_modules/pino/test/helper.d.ts +3 -3
  205. package/node_modules/pino/test/helper.js +36 -9
  206. package/node_modules/pino/test/hooks.test.js +45 -28
  207. package/node_modules/pino/test/http.test.js +38 -66
  208. package/node_modules/pino/test/internals/version.test.js +9 -7
  209. package/node_modules/pino/test/is-level-enabled.test.js +66 -72
  210. package/node_modules/pino/test/levels.test.js +191 -153
  211. package/node_modules/pino/test/metadata.test.js +44 -30
  212. package/node_modules/pino/test/mixin-merge-strategy.test.js +9 -7
  213. package/node_modules/pino/test/mixin.test.js +62 -39
  214. package/node_modules/pino/test/multistream.test.js +173 -117
  215. package/node_modules/pino/test/redact.test.js +172 -126
  216. package/node_modules/pino/test/serializers.test.js +61 -57
  217. package/node_modules/pino/test/stdout-protection.test.js +12 -10
  218. package/node_modules/pino/test/syncfalse.test.js +24 -26
  219. package/node_modules/pino/test/timestamp-nano.test.js +37 -0
  220. package/node_modules/pino/test/timestamp.test.js +37 -34
  221. package/node_modules/pino/test/transport/big.test.js +8 -9
  222. package/node_modules/pino/test/transport/bundlers-support.test.js +12 -10
  223. package/node_modules/pino/test/transport/caller.test.js +8 -7
  224. package/node_modules/pino/test/transport/core.test.js +232 -143
  225. package/node_modules/pino/test/transport/core.transpiled.test.ts +15 -13
  226. package/node_modules/pino/test/transport/crash.test.js +36 -0
  227. package/node_modules/pino/test/transport/module-link.test.js +17 -15
  228. package/node_modules/pino/test/transport/native-type-stripping.test.mjs +151 -0
  229. package/node_modules/pino/test/transport/node-options.test.js +116 -0
  230. package/node_modules/pino/test/transport/pipeline.test.js +14 -12
  231. package/node_modules/pino/test/transport/preload.test.js +54 -0
  232. package/node_modules/pino/test/transport/repl.test.js +4 -3
  233. package/node_modules/pino/test/transport/{syncfalse.test.js → sync-false.test.js} +15 -16
  234. package/node_modules/pino/test/transport/{syncTrue.test.js → sync-true.test.js} +6 -4
  235. package/node_modules/pino/test/transport/targets.test.js +13 -9
  236. package/node_modules/pino/test/transport/uses-pino-config.test.js +13 -14
  237. package/node_modules/pino/test/transport-stream.test.js +22 -8
  238. package/node_modules/pino/test/types/{pino-import.test-d.ts → pino-import.test-d.cts} +4 -3
  239. package/node_modules/pino/test/types/pino-multistream.test-d.ts +4 -4
  240. package/node_modules/pino/test/types/pino-top-export.test-d.ts +26 -27
  241. package/node_modules/pino/test/types/pino-transport.test-d.ts +99 -88
  242. package/node_modules/pino/test/types/pino-type-only.test-d.ts +55 -44
  243. package/node_modules/pino/test/types/pino.test-d.ts +500 -281
  244. package/node_modules/pino/test/types/pino.ts +50 -37
  245. package/node_modules/pino/tsconfig.json +1 -1
  246. package/node_modules/pino-abstract-transport/.github/workflows/ci.yml +5 -22
  247. package/node_modules/pino-abstract-transport/README.md +0 -1
  248. package/node_modules/pino-abstract-transport/package.json +6 -5
  249. package/node_modules/pino-abstract-transport/test/base.test.js +108 -80
  250. package/node_modules/pino-abstract-transport/test/match.js +24 -0
  251. package/node_modules/pino-abstract-transport/test/worker.test.js +46 -31
  252. package/node_modules/pino-pretty/.borp.yaml +6 -0
  253. package/node_modules/pino-pretty/.github/dependabot.yml +1 -1
  254. package/node_modules/pino-pretty/.github/workflows/ci.yml +5 -12
  255. package/node_modules/pino-pretty/Readme.md +24 -3
  256. package/node_modules/pino-pretty/bin.js +5 -4
  257. package/node_modules/pino-pretty/eslint.config.js +3 -0
  258. package/node_modules/pino-pretty/index.d.ts +7 -7
  259. package/node_modules/pino-pretty/index.js +1 -1
  260. package/node_modules/pino-pretty/lib/colors.js +9 -4
  261. package/node_modules/pino-pretty/lib/colors.test.js +36 -36
  262. package/node_modules/pino-pretty/lib/pretty.js +7 -5
  263. package/node_modules/pino-pretty/lib/utils/build-safe-sonic-boom.js +2 -4
  264. package/node_modules/pino-pretty/lib/utils/build-safe-sonic-boom.test.js +17 -19
  265. package/node_modules/pino-pretty/lib/utils/create-date.test.js +7 -7
  266. package/node_modules/pino-pretty/lib/utils/delete-log-property.test.js +7 -7
  267. package/node_modules/pino-pretty/lib/utils/filter-log.test.js +33 -40
  268. package/node_modules/pino-pretty/lib/utils/format-time.js +1 -1
  269. package/node_modules/pino-pretty/lib/utils/format-time.test.js +25 -25
  270. package/node_modules/pino-pretty/lib/utils/get-property-value.test.js +11 -11
  271. package/node_modules/pino-pretty/lib/utils/handle-custom-levels-names-opts.test.js +15 -14
  272. package/node_modules/pino-pretty/lib/utils/handle-custom-levels-opts.test.js +11 -11
  273. package/node_modules/pino-pretty/lib/utils/index.test.js +8 -8
  274. package/node_modules/pino-pretty/lib/utils/interpret-conditionals.test.js +23 -23
  275. package/node_modules/pino-pretty/lib/utils/is-object.test.js +5 -5
  276. package/node_modules/pino-pretty/lib/utils/is-valid-date.test.js +6 -6
  277. package/node_modules/pino-pretty/lib/utils/join-lines-with-indentation.test.js +5 -5
  278. package/node_modules/pino-pretty/lib/utils/noop.test.js +5 -5
  279. package/node_modules/pino-pretty/lib/utils/prettify-error-log.test.js +26 -26
  280. package/node_modules/pino-pretty/lib/utils/prettify-error.test.js +3 -4
  281. package/node_modules/pino-pretty/lib/utils/prettify-level.test.js +9 -9
  282. package/node_modules/pino-pretty/lib/utils/prettify-message.js +2 -1
  283. package/node_modules/pino-pretty/lib/utils/prettify-message.test.js +73 -41
  284. package/node_modules/pino-pretty/lib/utils/prettify-metadata.test.js +37 -37
  285. package/node_modules/pino-pretty/lib/utils/prettify-object.js +1 -1
  286. package/node_modules/pino-pretty/lib/utils/prettify-object.test.js +71 -32
  287. package/node_modules/pino-pretty/lib/utils/prettify-time.test.js +29 -29
  288. package/node_modules/pino-pretty/lib/utils/split-property-key.test.js +11 -11
  289. package/node_modules/pino-pretty/package.json +22 -24
  290. package/node_modules/pino-pretty/test/basic.test.js +190 -181
  291. package/node_modules/pino-pretty/test/cli-rc.test.js +93 -73
  292. package/node_modules/pino-pretty/test/cli.test.js +169 -144
  293. package/node_modules/pino-pretty/test/crlf.test.js +6 -8
  294. package/node_modules/pino-pretty/test/error-objects.test.js +85 -90
  295. package/node_modules/pino-pretty/test/example/example.js +3 -1
  296. package/node_modules/pino-pretty/test/helper.js +19 -0
  297. package/node_modules/pino-pretty/test/types/pino-pretty.test-d.ts +4 -1
  298. package/node_modules/process-warning/.github/dependabot.yml +41 -1
  299. package/node_modules/process-warning/.github/workflows/ci.yml +12 -3
  300. package/node_modules/process-warning/LICENSE +1 -1
  301. package/node_modules/process-warning/README.md +42 -3
  302. package/node_modules/process-warning/index.js +85 -17
  303. package/node_modules/process-warning/package.json +7 -8
  304. package/node_modules/process-warning/test/emit-interpolated-string.test.js +11 -6
  305. package/node_modules/process-warning/test/emit-once-only.test.js +14 -9
  306. package/node_modules/process-warning/test/emit-reset.test.js +14 -10
  307. package/node_modules/process-warning/test/emit-set.test.js +10 -5
  308. package/node_modules/process-warning/test/emit-unlimited.test.js +14 -9
  309. package/node_modules/process-warning/test/index.test.js +20 -20
  310. package/node_modules/process-warning/test/issue-88.test.js +8 -3
  311. package/node_modules/process-warning/test/jest.test.js +17 -15
  312. package/node_modules/process-warning/test/no-warnings.test.js +7 -7
  313. package/node_modules/process-warning/types/index.d.ts +15 -1
  314. package/node_modules/secure-json-parse/.github/dependabot.yml +1 -1
  315. package/node_modules/secure-json-parse/.github/workflows/ci.yml +31 -19
  316. package/node_modules/{ieee754 → secure-json-parse}/LICENSE +9 -1
  317. package/node_modules/secure-json-parse/README.md +14 -8
  318. package/node_modules/secure-json-parse/benchmarks/ignore.js +1 -1
  319. package/node_modules/secure-json-parse/benchmarks/throw.js +3 -3
  320. package/node_modules/secure-json-parse/index.js +39 -4
  321. package/node_modules/secure-json-parse/package.json +41 -8
  322. package/node_modules/secure-json-parse/test/index.test.js +150 -6
  323. package/node_modules/secure-json-parse/types/index.d.ts +9 -6
  324. package/node_modules/secure-json-parse/types/index.test-d.ts +13 -1
  325. package/node_modules/strip-json-comments/index.d.ts +18 -13
  326. package/node_modules/strip-json-comments/index.js +75 -39
  327. package/node_modules/strip-json-comments/package.json +14 -5
  328. package/node_modules/strip-json-comments/readme.md +15 -18
  329. package/node_modules/thread-stream/.github/workflows/ci.yml +4 -24
  330. package/node_modules/thread-stream/README.md +2 -0
  331. package/node_modules/thread-stream/eslint.config.js +10 -0
  332. package/node_modules/thread-stream/index.d.ts +7 -0
  333. package/node_modules/thread-stream/index.js +189 -109
  334. package/node_modules/thread-stream/lib/wait.js +58 -42
  335. package/node_modules/thread-stream/lib/worker.js +126 -14
  336. package/node_modules/thread-stream/node_modules/real-require/LICENSE.md +21 -0
  337. package/node_modules/thread-stream/node_modules/real-require/README.md +51 -0
  338. package/node_modules/thread-stream/node_modules/real-require/package.json +38 -0
  339. package/node_modules/thread-stream/node_modules/real-require/src/index.js +14 -0
  340. package/node_modules/thread-stream/package.json +18 -25
  341. package/node_modules/thread-stream/test/base.test.js +97 -96
  342. package/node_modules/thread-stream/test/bench.test.js +3 -3
  343. package/node_modules/thread-stream/test/bundlers.test.js +8 -9
  344. package/node_modules/thread-stream/test/commonjs-fallback.test.js +17 -22
  345. package/node_modules/thread-stream/test/context.test.js +6 -6
  346. package/node_modules/thread-stream/test/end.test.js +22 -27
  347. package/node_modules/thread-stream/test/esm.test.mjs +8 -9
  348. package/node_modules/thread-stream/test/event.test.js +10 -9
  349. package/node_modules/thread-stream/test/flush-worker.js +68 -0
  350. package/node_modules/thread-stream/test/flush.test.js +112 -0
  351. package/node_modules/thread-stream/test/helper.js +1 -10
  352. package/node_modules/thread-stream/test/indexes.test.js +4 -4
  353. package/node_modules/thread-stream/test/multibyte-chars.test.mjs +14 -13
  354. package/node_modules/thread-stream/test/multibyte-overrun.test.mjs +33 -0
  355. package/node_modules/thread-stream/test/pkg/index.js +23 -23
  356. package/node_modules/thread-stream/test/pkg/pkg.config.json +3 -4
  357. package/node_modules/thread-stream/test/pkg/pkg.test.js +5 -6
  358. package/node_modules/thread-stream/test/post-message.test.js +4 -5
  359. package/node_modules/thread-stream/test/report-thread-name.js +16 -0
  360. package/node_modules/thread-stream/test/string-limit-2.test.js +24 -30
  361. package/node_modules/thread-stream/test/string-limit.test.js +24 -29
  362. package/node_modules/thread-stream/test/thread-management.test.js +46 -17
  363. package/node_modules/thread-stream/test/transpiled.test.js +5 -6
  364. package/node_modules/thread-stream/test/ts-native.test.mjs +35 -0
  365. package/node_modules/thread-stream/test/ts-node-fallback.test.js +35 -0
  366. package/node_modules/thread-stream/test/watch-mode.test.js +13 -11
  367. package/node_modules/thread-stream/test/worker-name.test.js +43 -0
  368. package/package.json +8 -8
  369. package/node_modules/@zuplo/editor/node_modules/process-warning/.github/dependabot.yml +0 -53
  370. package/node_modules/@zuplo/editor/node_modules/process-warning/.github/workflows/ci.yml +0 -33
  371. package/node_modules/@zuplo/editor/node_modules/process-warning/README.md +0 -157
  372. package/node_modules/@zuplo/editor/node_modules/process-warning/benchmarks/warn.js +0 -25
  373. package/node_modules/@zuplo/editor/node_modules/process-warning/examples/example.js +0 -11
  374. package/node_modules/@zuplo/editor/node_modules/process-warning/index.js +0 -192
  375. package/node_modules/@zuplo/editor/node_modules/process-warning/package.json +0 -72
  376. package/node_modules/@zuplo/editor/node_modules/process-warning/test/emit-interpolated-string.test.js +0 -34
  377. package/node_modules/@zuplo/editor/node_modules/process-warning/test/emit-once-only.test.js +0 -33
  378. package/node_modules/@zuplo/editor/node_modules/process-warning/test/emit-reset.test.js +0 -40
  379. package/node_modules/@zuplo/editor/node_modules/process-warning/test/emit-set.test.js +0 -35
  380. package/node_modules/@zuplo/editor/node_modules/process-warning/test/emit-unlimited.test.js +0 -42
  381. package/node_modules/@zuplo/editor/node_modules/process-warning/test/index.test.js +0 -99
  382. package/node_modules/@zuplo/editor/node_modules/process-warning/test/issue-88.test.js +0 -38
  383. package/node_modules/@zuplo/editor/node_modules/process-warning/test/jest.test.js +0 -24
  384. package/node_modules/@zuplo/editor/node_modules/process-warning/test/no-warnings.test.js +0 -80
  385. package/node_modules/@zuplo/editor/node_modules/process-warning/types/index.d.ts +0 -51
  386. package/node_modules/@zuplo/runtime/out/esm/chunk-XLNOQPTE.js.map +0 -1
  387. package/node_modules/abort-controller/README.md +0 -98
  388. package/node_modules/abort-controller/browser.js +0 -13
  389. package/node_modules/abort-controller/browser.mjs +0 -11
  390. package/node_modules/abort-controller/dist/abort-controller.d.ts +0 -43
  391. package/node_modules/abort-controller/dist/abort-controller.js +0 -127
  392. package/node_modules/abort-controller/dist/abort-controller.js.map +0 -1
  393. package/node_modules/abort-controller/dist/abort-controller.mjs +0 -118
  394. package/node_modules/abort-controller/dist/abort-controller.mjs.map +0 -1
  395. package/node_modules/abort-controller/dist/abort-controller.umd.js +0 -5
  396. package/node_modules/abort-controller/dist/abort-controller.umd.js.map +0 -1
  397. package/node_modules/abort-controller/package.json +0 -97
  398. package/node_modules/abort-controller/polyfill.js +0 -21
  399. package/node_modules/abort-controller/polyfill.mjs +0 -19
  400. package/node_modules/base64-js/LICENSE +0 -21
  401. package/node_modules/base64-js/README.md +0 -34
  402. package/node_modules/base64-js/base64js.min.js +0 -1
  403. package/node_modules/base64-js/index.d.ts +0 -3
  404. package/node_modules/base64-js/index.js +0 -150
  405. package/node_modules/base64-js/package.json +0 -47
  406. package/node_modules/buffer/AUTHORS.md +0 -73
  407. package/node_modules/buffer/LICENSE +0 -21
  408. package/node_modules/buffer/README.md +0 -410
  409. package/node_modules/buffer/index.d.ts +0 -194
  410. package/node_modules/buffer/index.js +0 -2106
  411. package/node_modules/buffer/package.json +0 -93
  412. package/node_modules/event-target-shim/README.md +0 -293
  413. package/node_modules/event-target-shim/dist/event-target-shim.js +0 -871
  414. package/node_modules/event-target-shim/dist/event-target-shim.js.map +0 -1
  415. package/node_modules/event-target-shim/dist/event-target-shim.mjs +0 -862
  416. package/node_modules/event-target-shim/dist/event-target-shim.mjs.map +0 -1
  417. package/node_modules/event-target-shim/dist/event-target-shim.umd.js +0 -6
  418. package/node_modules/event-target-shim/dist/event-target-shim.umd.js.map +0 -1
  419. package/node_modules/event-target-shim/index.d.ts +0 -399
  420. package/node_modules/event-target-shim/package.json +0 -82
  421. package/node_modules/events/.airtap.yml +0 -15
  422. package/node_modules/events/.github/FUNDING.yml +0 -12
  423. package/node_modules/events/.travis.yml +0 -18
  424. package/node_modules/events/History.md +0 -118
  425. package/node_modules/events/LICENSE +0 -22
  426. package/node_modules/events/Readme.md +0 -50
  427. package/node_modules/events/events.js +0 -497
  428. package/node_modules/events/package.json +0 -37
  429. package/node_modules/events/security.md +0 -10
  430. package/node_modules/events/tests/add-listeners.js +0 -111
  431. package/node_modules/events/tests/check-listener-leaks.js +0 -101
  432. package/node_modules/events/tests/common.js +0 -104
  433. package/node_modules/events/tests/errors.js +0 -13
  434. package/node_modules/events/tests/events-list.js +0 -28
  435. package/node_modules/events/tests/events-once.js +0 -234
  436. package/node_modules/events/tests/index.js +0 -64
  437. package/node_modules/events/tests/legacy-compat.js +0 -16
  438. package/node_modules/events/tests/listener-count.js +0 -37
  439. package/node_modules/events/tests/listeners-side-effects.js +0 -56
  440. package/node_modules/events/tests/listeners.js +0 -168
  441. package/node_modules/events/tests/max-listeners.js +0 -47
  442. package/node_modules/events/tests/method-names.js +0 -35
  443. package/node_modules/events/tests/modify-in-emit.js +0 -90
  444. package/node_modules/events/tests/num-args.js +0 -60
  445. package/node_modules/events/tests/once.js +0 -83
  446. package/node_modules/events/tests/prepend.js +0 -31
  447. package/node_modules/events/tests/remove-all-listeners.js +0 -133
  448. package/node_modules/events/tests/remove-listeners.js +0 -212
  449. package/node_modules/events/tests/set-max-listeners-side-effects.js +0 -31
  450. package/node_modules/events/tests/special-event-names.js +0 -45
  451. package/node_modules/events/tests/subclass.js +0 -66
  452. package/node_modules/events/tests/symbols.js +0 -25
  453. package/node_modules/fast-redact/.github/workflows/ci.yml +0 -37
  454. package/node_modules/fast-redact/benchmark/index.js +0 -223
  455. package/node_modules/fast-redact/example/default-usage.js +0 -14
  456. package/node_modules/fast-redact/example/intermediate-wildcard-array.js +0 -11
  457. package/node_modules/fast-redact/example/multi-wildcard-array-depth.js +0 -11
  458. package/node_modules/fast-redact/example/multi-wildcard-array-end.js +0 -11
  459. package/node_modules/fast-redact/example/multi-wildcard-array.js +0 -11
  460. package/node_modules/fast-redact/example/serialize-false.js +0 -11
  461. package/node_modules/fast-redact/example/serialize-function.js +0 -4
  462. package/node_modules/fast-redact/example/top-wildcard-object.js +0 -9
  463. package/node_modules/fast-redact/index.js +0 -56
  464. package/node_modules/fast-redact/lib/modifiers.js +0 -291
  465. package/node_modules/fast-redact/lib/parse.js +0 -44
  466. package/node_modules/fast-redact/lib/redactor.js +0 -108
  467. package/node_modules/fast-redact/lib/restorer.js +0 -92
  468. package/node_modules/fast-redact/lib/rx.js +0 -16
  469. package/node_modules/fast-redact/lib/state.js +0 -20
  470. package/node_modules/fast-redact/lib/validator.js +0 -33
  471. package/node_modules/fast-redact/package.json +0 -50
  472. package/node_modules/fast-redact/readme.md +0 -282
  473. package/node_modules/fast-redact/test/index.js +0 -1502
  474. package/node_modules/ieee754/README.md +0 -51
  475. package/node_modules/ieee754/index.d.ts +0 -10
  476. package/node_modules/ieee754/index.js +0 -85
  477. package/node_modules/ieee754/package.json +0 -52
  478. package/node_modules/pino/.eslintignore +0 -2
  479. package/node_modules/pino/.eslintrc +0 -8
  480. package/node_modules/pino/.github/workflows/bench.yml +0 -61
  481. package/node_modules/pino/.github/workflows/lock-threads.yml +0 -30
  482. package/node_modules/pino/.github/workflows/target-main.yml +0 -23
  483. package/node_modules/pino/.taprc.yaml +0 -8
  484. package/node_modules/pino/docsify/sidebar.md +0 -26
  485. package/node_modules/pino/favicon-16x16.png +0 -0
  486. package/node_modules/pino/favicon-32x32.png +0 -0
  487. package/node_modules/pino/pino-banner.png +0 -0
  488. package/node_modules/pino/pino-logo-hire.png +0 -0
  489. package/node_modules/pino/pino-tree.png +0 -0
  490. package/node_modules/pino/pretty-demo.png +0 -0
  491. package/node_modules/pino/test/errorKey.test.js +0 -34
  492. package/node_modules/pino/test/pkg/index.js +0 -46
  493. package/node_modules/pino/test/pkg/pkg.config.json +0 -17
  494. package/node_modules/pino/test/pkg/pkg.test.js +0 -56
  495. package/node_modules/pino/test/transport/core.test.ts +0 -236
  496. package/node_modules/process/.eslintrc +0 -21
  497. package/node_modules/process/LICENSE +0 -22
  498. package/node_modules/process/README.md +0 -26
  499. package/node_modules/process/browser.js +0 -184
  500. package/node_modules/process/index.js +0 -2
  501. package/node_modules/process/package.json +0 -27
  502. package/node_modules/process/test.js +0 -199
  503. package/node_modules/process-warning/.taprc +0 -2
  504. package/node_modules/process-warning/types/index.test-d.ts +0 -36
  505. package/node_modules/readable-stream/LICENSE +0 -47
  506. package/node_modules/readable-stream/README.md +0 -116
  507. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -4
  508. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -4
  509. package/node_modules/readable-stream/lib/_stream_readable.js +0 -4
  510. package/node_modules/readable-stream/lib/_stream_transform.js +0 -4
  511. package/node_modules/readable-stream/lib/_stream_writable.js +0 -4
  512. package/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js +0 -52
  513. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -157
  514. package/node_modules/readable-stream/lib/internal/streams/compose.js +0 -194
  515. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -290
  516. package/node_modules/readable-stream/lib/internal/streams/duplex.js +0 -143
  517. package/node_modules/readable-stream/lib/internal/streams/duplexify.js +0 -378
  518. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -286
  519. package/node_modules/readable-stream/lib/internal/streams/from.js +0 -98
  520. package/node_modules/readable-stream/lib/internal/streams/lazy_transform.js +0 -51
  521. package/node_modules/readable-stream/lib/internal/streams/legacy.js +0 -89
  522. package/node_modules/readable-stream/lib/internal/streams/operators.js +0 -457
  523. package/node_modules/readable-stream/lib/internal/streams/passthrough.js +0 -39
  524. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -471
  525. package/node_modules/readable-stream/lib/internal/streams/readable.js +0 -1290
  526. package/node_modules/readable-stream/lib/internal/streams/state.js +0 -39
  527. package/node_modules/readable-stream/lib/internal/streams/transform.js +0 -180
  528. package/node_modules/readable-stream/lib/internal/streams/utils.js +0 -327
  529. package/node_modules/readable-stream/lib/internal/streams/writable.js +0 -819
  530. package/node_modules/readable-stream/lib/internal/validators.js +0 -530
  531. package/node_modules/readable-stream/lib/ours/browser.js +0 -35
  532. package/node_modules/readable-stream/lib/ours/errors.js +0 -343
  533. package/node_modules/readable-stream/lib/ours/index.js +0 -65
  534. package/node_modules/readable-stream/lib/ours/primordials.js +0 -124
  535. package/node_modules/readable-stream/lib/ours/util/inspect.js +0 -55
  536. package/node_modules/readable-stream/lib/ours/util.js +0 -148
  537. package/node_modules/readable-stream/lib/stream/promises.js +0 -43
  538. package/node_modules/readable-stream/lib/stream.js +0 -143
  539. package/node_modules/readable-stream/package.json +0 -88
  540. package/node_modules/safe-buffer/LICENSE +0 -21
  541. package/node_modules/safe-buffer/README.md +0 -584
  542. package/node_modules/safe-buffer/index.d.ts +0 -187
  543. package/node_modules/safe-buffer/index.js +0 -65
  544. package/node_modules/safe-buffer/package.json +0 -51
  545. package/node_modules/string_decoder/LICENSE +0 -48
  546. package/node_modules/string_decoder/README.md +0 -47
  547. package/node_modules/string_decoder/lib/string_decoder.js +0 -296
  548. package/node_modules/string_decoder/package.json +0 -34
  549. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/.release-it.beta.json +0 -0
  550. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/.release-it.json +0 -0
  551. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/CHANGELOG.md +0 -0
  552. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/cjs/types/copier.d.ts +0 -0
  553. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/cjs/types/index.d.ts +0 -0
  554. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/cjs/types/utils.d.ts +0 -0
  555. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/esm/index.mjs +0 -0
  556. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/esm/index.mjs.map +0 -0
  557. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/esm/types/copier.d.ts +0 -0
  558. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/esm/types/index.d.ts +0 -0
  559. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/esm/types/utils.d.ts +0 -0
  560. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/min/index.js +0 -0
  561. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/min/index.js.map +0 -0
  562. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/min/types/copier.d.ts +0 -0
  563. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/min/types/index.d.ts +0 -0
  564. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/min/types/utils.d.ts +0 -0
  565. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/umd/types/copier.d.ts +0 -0
  566. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/umd/types/index.d.ts +0 -0
  567. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/dist/umd/types/utils.d.ts +0 -0
  568. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/flow-typed/fast-copy.js +0 -0
  569. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/rollup/config.base.js +0 -0
  570. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/rollup/config.cjs.js +0 -0
  571. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/rollup/config.esm.js +0 -0
  572. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/rollup/config.min.js +0 -0
  573. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/rollup/config.umd.js +0 -0
  574. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/rollup/packageJson.js +0 -0
  575. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/tsconfig/base.json +0 -0
  576. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/tsconfig/cjs.json +0 -0
  577. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/tsconfig/declarations.json +0 -0
  578. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/tsconfig/esm.json +0 -0
  579. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/tsconfig/min.json +0 -0
  580. /package/node_modules/{fast-copy → @zuplo/editor/node_modules/fast-copy}/tsconfig/umd.json +0 -0
  581. /package/node_modules/{pino → @zuplo/editor/node_modules/pino-abstract-transport}/.github/dependabot.yml +0 -0
  582. /package/node_modules/{thread-stream → @zuplo/editor/node_modules/pino-abstract-transport}/.husky/pre-commit +0 -0
  583. /package/node_modules/{secure-json-parse → @zuplo/editor/node_modules/secure-json-parse}/LICENSE.md +0 -0
  584. /package/node_modules/{thread-stream → @zuplo/editor/node_modules/thread-stream}/.taprc +0 -0
  585. /package/node_modules/{thread-stream → @zuplo/editor/node_modules/thread-stream}/CLAUDE.md +0 -0
  586. /package/node_modules/{thread-stream → @zuplo/editor/node_modules/thread-stream}/test/never-drain.test.js +0 -0
  587. /package/node_modules/{thread-stream → @zuplo/editor/node_modules/thread-stream}/test/ts.test.ts +0 -0
  588. /package/node_modules/@zuplo/runtime/out/esm/{chunk-XLNOQPTE.js.LEGAL.txt → chunk-RS7HF7BL.js.LEGAL.txt} +0 -0
  589. /package/node_modules/{@zuplo/editor/node_modules/process-warning → process-warning}/.github/workflows/lock-threads.yml +0 -0
  590. /package/node_modules/{@zuplo/editor/node_modules/process-warning → process-warning}/test/promise.js +0 -0
  591. /package/node_modules/{@zuplo/editor/node_modules/process-warning → process-warning}/test/spy-warning.test.js +0 -0
  592. /package/node_modules/{@zuplo/editor/node_modules/process-warning → process-warning}/types/index.tst.ts +0 -0
  593. /package/node_modules/{@zuplo/editor/node_modules/process-warning → secure-json-parse}/.gitattributes +0 -0
  594. /package/node_modules/{@zuplo/editor/node_modules/process-warning → secure-json-parse}/eslint.config.js +0 -0
@@ -92,7 +92,7 @@ async function deleteByBranchFromSelfHosted(argv) {
92
92
  },
93
93
  });
94
94
  if (!listResponse.ok) {
95
- logger.error(JSON.stringify(await listResponse.json(), null, 2), "Failed to list deployments at self-hosted endpoint");
95
+ logger.error({ response: JSON.stringify(await listResponse.json(), null, 2) }, "Failed to list deployments at self-hosted endpoint");
96
96
  await printCriticalFailureToConsoleAndExit("Error: Failed to list deployments at self-hosted endpoint");
97
97
  return;
98
98
  }
@@ -187,7 +187,7 @@ async function deleteFromSelfHosted(argv) {
187
187
  await printResultToConsoleAndExitGracefully(`Enqueued deletion of ${argv.url}`);
188
188
  }
189
189
  else {
190
- logger.error(JSON.stringify(await deleteResponse.json(), null, 2), "Failed to upload to self-hosted build endpoint");
190
+ logger.error({ response: JSON.stringify(await deleteResponse.json(), null, 2) }, "Failed to upload to self-hosted build endpoint");
191
191
  await printCriticalFailureToConsoleAndExit("Error: Failed to enqueue the deletion request. Try again later.");
192
192
  }
193
193
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/delete/handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { normalize } from \"node:path\";\nimport { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printResultToConsole,\n printResultToConsoleAndExitGracefully,\n textOrJson,\n} from \"../common/output.js\";\nimport settings from \"../common/settings.js\";\nimport { getPrettyBranch } from \"../common/utils/branch.js\";\nimport { RequiredProperties } from \"../common/utils/types.js\";\nimport { normalizeUrl } from \"../common/utils/urls.js\";\nimport { pingDeployment } from \"./poll-deployment.js\";\n\nexport interface Arguments {\n account: string;\n project: string;\n url?: string;\n branch?: string;\n authToken: string;\n wait: boolean;\n \"self-hosted-endpoint\"?: string;\n}\n\ninterface Deployment {\n name: string;\n branchName: string;\n environmentType: \"PRODUCTION\" | \"PREVIEW\" | \"WORKING_COPY\";\n isProtected?: boolean;\n}\n\ntype SelfHostedArgs = RequiredProperties<Arguments, \"self-hosted-endpoint\">;\n\n// delete is a reserved keyword in JavaScript, so we call this function deleteZup\nexport async function deleteZup(argv: Arguments) {\n // Branch-based deletion\n if (argv.branch) {\n if (argv[\"self-hosted-endpoint\"]) {\n const args = argv as SelfHostedArgs;\n await deleteByBranchFromSelfHosted(args);\n } else {\n await deleteByBranchFromSaas(argv);\n }\n return;\n }\n\n // URL-based deletion (existing behavior)\n if (argv[\"self-hosted-endpoint\"]) {\n const args = argv as SelfHostedArgs;\n await deleteFromSelfHosted(args);\n } else {\n await deleteFromSaas(argv);\n }\n}\n\nasync function deleteByBranchFromSaas(argv: Arguments) {\n const { account, project, branch } = argv;\n\n if (!branch) {\n await printCriticalFailureToConsoleAndExit(\n \"Error: Branch name is required for branch-based deletion.\"\n );\n return;\n }\n\n // Step 1: List all deployments\n const listResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/deployments`,\n {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (!listResponse.ok) {\n const problem = textOrJson(await listResponse.text());\n logger.error(\n {\n status: listResponse.status,\n statusText: listResponse.statusText,\n response: problem,\n },\n \"Failed to list deployments\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to list deployments. Try again later.\"\n );\n return;\n }\n\n const { data: deployments }: { data: Deployment[] } =\n await listResponse.json();\n\n // Step 2: Find the deployment for this branch (there should only be one)\n const deployment = deployments.find(\n (deployment) => deployment.branchName === branch\n );\n\n if (!deployment) {\n printResultToConsole(`No deployment found for branch: ${branch}`);\n process.exit(0);\n }\n\n // Step 3: Show what will be deleted\n printDiagnosticsToConsole(\n `Found deployment for branch \"${branch}\": ${deployment.name} (${deployment.environmentType})${\n deployment.isProtected ? \" [PROTECTED]\" : \"\"\n }`\n );\n\n // Step 4: Delete the deployment\n const deleteResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/deployments/${deployment.name}`,\n {\n method: \"DELETE\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (deleteResponse.ok) {\n await printResultToConsoleAndExitGracefully(\n `Successfully deleted deployment ${deployment.name} for branch \"${branch}\"`\n );\n } else {\n const problem = textOrJson(await deleteResponse.text());\n const errorMessage =\n typeof problem === \"object\" && problem.detail\n ? problem.detail\n : `HTTP ${deleteResponse.status}`;\n logger.error(\n {\n deployment: deployment.name,\n status: deleteResponse.status,\n statusText: deleteResponse.statusText,\n response: problem,\n },\n \"Failed to delete deployment\"\n );\n await printCriticalFailureToConsoleAndExit(\n `Error: Failed to delete deployment ${deployment.name} - ${errorMessage}`\n );\n }\n}\n\nasync function deleteByBranchFromSelfHosted(argv: SelfHostedArgs) {\n const { branch, project } = argv;\n const endpoint = normalizeUrl(argv[\"self-hosted-endpoint\"]);\n\n if (!branch) {\n await printCriticalFailureToConsoleAndExit(\n \"Error: Branch name is required for branch-based deletion.\"\n );\n return;\n }\n\n // Self-hosted deployments are named: {project}-{prettyBranch}\n const prettyBranch = getPrettyBranch(branch);\n const expectedDeploymentName = `${project}-${prettyBranch}`;\n\n interface SelfHostedDeployment {\n projectName: string;\n deploymentName: string;\n deploymentUrl: string;\n }\n\n // Step 1: List all deployments\n const listResponse = await fetch(`${endpoint}/v1/deployments`, {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n });\n\n if (!listResponse.ok) {\n logger.error(\n JSON.stringify(await listResponse.json(), null, 2),\n \"Failed to list deployments at self-hosted endpoint\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to list deployments at self-hosted endpoint\"\n );\n return;\n }\n\n const { data: deployments }: { data: SelfHostedDeployment[] } =\n await listResponse.json();\n\n // Step 2: Find the deployment by exact name match\n const deployment = deployments.find(\n (deployment) => deployment.deploymentName === expectedDeploymentName\n );\n\n if (!deployment) {\n printResultToConsole(\n `No deployment found for branch: ${branch} (expected: ${expectedDeploymentName})`\n );\n process.exit(0);\n }\n\n // Step 3: Show what will be deleted\n printDiagnosticsToConsole(\n `Found deployment for branch \"${branch}\": ${deployment.deploymentName}`\n );\n\n // Step 4: Delete the deployment\n const deleteResponse = await fetch(\n `${endpoint}/v1/deployments/${deployment.deploymentName}`,\n {\n method: \"DELETE\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (deleteResponse.ok) {\n await printResultToConsoleAndExitGracefully(\n `Successfully deleted deployment ${deployment.deploymentName} for branch \"${branch}\"`\n );\n } else {\n logger.error(\n {\n deployment: deployment.deploymentName,\n response: await deleteResponse.text(),\n },\n \"Failed to delete self-hosted deployment\"\n );\n await printCriticalFailureToConsoleAndExit(\n `Error: Failed to delete deployment ${deployment.deploymentName}`\n );\n }\n}\n\nasync function deleteFromSaas(argv: Arguments) {\n if (!argv.url) {\n await printCriticalFailureToConsoleAndExit(\n \"Error: URL is required for URL-based deletion.\"\n );\n return;\n }\n\n // 1. Extract the URL and normalize\n let deploymentName;\n try {\n deploymentName = await checkUrl(argv, deploymentName);\n } catch (err) {\n logger.error(err, \"Failed to parse the URL\");\n await printCriticalFailureToConsoleAndExit(\n `Error: Failed to parse the URL: ${argv.url}. Ensure you have entered a valid URL.`\n );\n }\n\n // 2. Build delete request\n const { account, project } = argv;\n const deleteResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/deployments/${deploymentName}`,\n {\n method: \"DELETE\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (deleteResponse.ok) {\n if (argv.wait) {\n // 3. Poll until the deployment is no longer available\n const deleted = await pingDeployment(argv);\n if (!deleted) {\n logger.error(\n `Failed to confirm deletion of zup within alloted time frame.`\n );\n await printCriticalFailureToConsoleAndExit(\n `Error: Failed to confirm deletion of zup within alloted time frame of ${\n settings.MAX_POLL_RETRIES * settings.POLL_INTERVAL\n } ms. Your zup is still be available at ${argv.url}.`\n );\n } else {\n await printResultToConsoleAndExitGracefully(`Deleted ${argv.url}`);\n }\n } else {\n await printResultToConsoleAndExitGracefully(\n `Enqueued deletion of ${argv.url}`\n );\n }\n } else {\n logger.error(\n {\n status: deleteResponse.status,\n statusText: deleteResponse.statusText,\n },\n \"Failed to enqueue the deletion request\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to enqueue the deletion request. Try again later.\"\n );\n }\n}\n\nasync function deleteFromSelfHosted(argv: SelfHostedArgs) {\n if (!argv.url) {\n await printCriticalFailureToConsoleAndExit(\n \"Error: URL is required for URL-based deletion.\"\n );\n return;\n }\n\n // 1. Extract the URL and normalize\n let deploymentName;\n try {\n deploymentName = await checkUrl(argv, deploymentName);\n } catch (err) {\n logger.error(err, \"Failed to parse the URL\");\n await printCriticalFailureToConsoleAndExit(\n `Error: Failed to parse the URL: ${argv.url}. Ensure you have entered a valid URL.`\n );\n }\n\n // 2. Build delete request\n const endpoint = normalize(argv[\"self-hosted-endpoint\"]);\n const deleteResponse = await fetch(\n `${endpoint}/v1/deployments/${deploymentName}`,\n {\n method: \"DELETE\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (deleteResponse.ok) {\n await printResultToConsoleAndExitGracefully(\n `Enqueued deletion of ${argv.url}`\n );\n } else {\n logger.error(\n JSON.stringify(await deleteResponse.json(), null, 2),\n \"Failed to upload to self-hosted build endpoint\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to enqueue the deletion request. Try again later.\"\n );\n }\n}\n\nasync function checkUrl(argv: Arguments, deploymentName: unknown) {\n if (!argv.url) {\n throw new Error(\"URL is required\");\n }\n\n let url = argv.url;\n if (!/^(http:\\/\\/|https:\\/\\/)/i.test(argv.url)) {\n url = `https://${url}`;\n }\n const parsedUrl = new URL(url);\n\n if (parsedUrl.username || parsedUrl.password) {\n logger.error(`Extra username and/or password was included in the URL.`);\n await printCriticalFailureToConsoleAndExit(\n `Error: Extraneous username and/or password in the URL. Only include the hostname.`\n );\n }\n\n if (parsedUrl.pathname !== \"/\") {\n logger.error(\n `Extra pathname was included in the URL: ${parsedUrl.pathname}`\n );\n await printCriticalFailureToConsoleAndExit(\n `Error: Extraneous pathname in URL: ${parsedUrl.pathname}. Only include the hostname.`\n );\n }\n\n if (parsedUrl.search !== \"\") {\n logger.error(\n `Extra search params were included in the URL: ${parsedUrl.search}`\n );\n await printCriticalFailureToConsoleAndExit(\n `Error: Extraneous search params in URL: ${parsedUrl.search}. Only include the hostname.`\n );\n }\n\n deploymentName = parsedUrl.hostname.split(\".\")[0];\n return deploymentName;\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/delete/handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { normalize } from \"node:path\";\nimport { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printResultToConsole,\n printResultToConsoleAndExitGracefully,\n textOrJson,\n} from \"../common/output.js\";\nimport settings from \"../common/settings.js\";\nimport { getPrettyBranch } from \"../common/utils/branch.js\";\nimport { RequiredProperties } from \"../common/utils/types.js\";\nimport { normalizeUrl } from \"../common/utils/urls.js\";\nimport { pingDeployment } from \"./poll-deployment.js\";\n\nexport interface Arguments {\n account: string;\n project: string;\n url?: string;\n branch?: string;\n authToken: string;\n wait: boolean;\n \"self-hosted-endpoint\"?: string;\n}\n\ninterface Deployment {\n name: string;\n branchName: string;\n environmentType: \"PRODUCTION\" | \"PREVIEW\" | \"WORKING_COPY\";\n isProtected?: boolean;\n}\n\ntype SelfHostedArgs = RequiredProperties<Arguments, \"self-hosted-endpoint\">;\n\n// delete is a reserved keyword in JavaScript, so we call this function deleteZup\nexport async function deleteZup(argv: Arguments) {\n // Branch-based deletion\n if (argv.branch) {\n if (argv[\"self-hosted-endpoint\"]) {\n const args = argv as SelfHostedArgs;\n await deleteByBranchFromSelfHosted(args);\n } else {\n await deleteByBranchFromSaas(argv);\n }\n return;\n }\n\n // URL-based deletion (existing behavior)\n if (argv[\"self-hosted-endpoint\"]) {\n const args = argv as SelfHostedArgs;\n await deleteFromSelfHosted(args);\n } else {\n await deleteFromSaas(argv);\n }\n}\n\nasync function deleteByBranchFromSaas(argv: Arguments) {\n const { account, project, branch } = argv;\n\n if (!branch) {\n await printCriticalFailureToConsoleAndExit(\n \"Error: Branch name is required for branch-based deletion.\"\n );\n return;\n }\n\n // Step 1: List all deployments\n const listResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/deployments`,\n {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (!listResponse.ok) {\n const problem = textOrJson(await listResponse.text());\n logger.error(\n {\n status: listResponse.status,\n statusText: listResponse.statusText,\n response: problem,\n },\n \"Failed to list deployments\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to list deployments. Try again later.\"\n );\n return;\n }\n\n const { data: deployments }: { data: Deployment[] } =\n await listResponse.json();\n\n // Step 2: Find the deployment for this branch (there should only be one)\n const deployment = deployments.find(\n (deployment) => deployment.branchName === branch\n );\n\n if (!deployment) {\n printResultToConsole(`No deployment found for branch: ${branch}`);\n process.exit(0);\n }\n\n // Step 3: Show what will be deleted\n printDiagnosticsToConsole(\n `Found deployment for branch \"${branch}\": ${deployment.name} (${deployment.environmentType})${\n deployment.isProtected ? \" [PROTECTED]\" : \"\"\n }`\n );\n\n // Step 4: Delete the deployment\n const deleteResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/deployments/${deployment.name}`,\n {\n method: \"DELETE\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (deleteResponse.ok) {\n await printResultToConsoleAndExitGracefully(\n `Successfully deleted deployment ${deployment.name} for branch \"${branch}\"`\n );\n } else {\n const problem = textOrJson(await deleteResponse.text());\n const errorMessage =\n typeof problem === \"object\" && problem.detail\n ? problem.detail\n : `HTTP ${deleteResponse.status}`;\n logger.error(\n {\n deployment: deployment.name,\n status: deleteResponse.status,\n statusText: deleteResponse.statusText,\n response: problem,\n },\n \"Failed to delete deployment\"\n );\n await printCriticalFailureToConsoleAndExit(\n `Error: Failed to delete deployment ${deployment.name} - ${errorMessage}`\n );\n }\n}\n\nasync function deleteByBranchFromSelfHosted(argv: SelfHostedArgs) {\n const { branch, project } = argv;\n const endpoint = normalizeUrl(argv[\"self-hosted-endpoint\"]);\n\n if (!branch) {\n await printCriticalFailureToConsoleAndExit(\n \"Error: Branch name is required for branch-based deletion.\"\n );\n return;\n }\n\n // Self-hosted deployments are named: {project}-{prettyBranch}\n const prettyBranch = getPrettyBranch(branch);\n const expectedDeploymentName = `${project}-${prettyBranch}`;\n\n interface SelfHostedDeployment {\n projectName: string;\n deploymentName: string;\n deploymentUrl: string;\n }\n\n // Step 1: List all deployments\n const listResponse = await fetch(`${endpoint}/v1/deployments`, {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n });\n\n if (!listResponse.ok) {\n logger.error(\n { response: JSON.stringify(await listResponse.json(), null, 2) },\n \"Failed to list deployments at self-hosted endpoint\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to list deployments at self-hosted endpoint\"\n );\n return;\n }\n\n const { data: deployments }: { data: SelfHostedDeployment[] } =\n await listResponse.json();\n\n // Step 2: Find the deployment by exact name match\n const deployment = deployments.find(\n (deployment) => deployment.deploymentName === expectedDeploymentName\n );\n\n if (!deployment) {\n printResultToConsole(\n `No deployment found for branch: ${branch} (expected: ${expectedDeploymentName})`\n );\n process.exit(0);\n }\n\n // Step 3: Show what will be deleted\n printDiagnosticsToConsole(\n `Found deployment for branch \"${branch}\": ${deployment.deploymentName}`\n );\n\n // Step 4: Delete the deployment\n const deleteResponse = await fetch(\n `${endpoint}/v1/deployments/${deployment.deploymentName}`,\n {\n method: \"DELETE\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (deleteResponse.ok) {\n await printResultToConsoleAndExitGracefully(\n `Successfully deleted deployment ${deployment.deploymentName} for branch \"${branch}\"`\n );\n } else {\n logger.error(\n {\n deployment: deployment.deploymentName,\n response: await deleteResponse.text(),\n },\n \"Failed to delete self-hosted deployment\"\n );\n await printCriticalFailureToConsoleAndExit(\n `Error: Failed to delete deployment ${deployment.deploymentName}`\n );\n }\n}\n\nasync function deleteFromSaas(argv: Arguments) {\n if (!argv.url) {\n await printCriticalFailureToConsoleAndExit(\n \"Error: URL is required for URL-based deletion.\"\n );\n return;\n }\n\n // 1. Extract the URL and normalize\n let deploymentName;\n try {\n deploymentName = await checkUrl(argv, deploymentName);\n } catch (err) {\n logger.error(err, \"Failed to parse the URL\");\n await printCriticalFailureToConsoleAndExit(\n `Error: Failed to parse the URL: ${argv.url}. Ensure you have entered a valid URL.`\n );\n }\n\n // 2. Build delete request\n const { account, project } = argv;\n const deleteResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/deployments/${deploymentName}`,\n {\n method: \"DELETE\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (deleteResponse.ok) {\n if (argv.wait) {\n // 3. Poll until the deployment is no longer available\n const deleted = await pingDeployment(argv);\n if (!deleted) {\n logger.error(\n `Failed to confirm deletion of zup within alloted time frame.`\n );\n await printCriticalFailureToConsoleAndExit(\n `Error: Failed to confirm deletion of zup within alloted time frame of ${\n settings.MAX_POLL_RETRIES * settings.POLL_INTERVAL\n } ms. Your zup is still be available at ${argv.url}.`\n );\n } else {\n await printResultToConsoleAndExitGracefully(`Deleted ${argv.url}`);\n }\n } else {\n await printResultToConsoleAndExitGracefully(\n `Enqueued deletion of ${argv.url}`\n );\n }\n } else {\n logger.error(\n {\n status: deleteResponse.status,\n statusText: deleteResponse.statusText,\n },\n \"Failed to enqueue the deletion request\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to enqueue the deletion request. Try again later.\"\n );\n }\n}\n\nasync function deleteFromSelfHosted(argv: SelfHostedArgs) {\n if (!argv.url) {\n await printCriticalFailureToConsoleAndExit(\n \"Error: URL is required for URL-based deletion.\"\n );\n return;\n }\n\n // 1. Extract the URL and normalize\n let deploymentName;\n try {\n deploymentName = await checkUrl(argv, deploymentName);\n } catch (err) {\n logger.error(err, \"Failed to parse the URL\");\n await printCriticalFailureToConsoleAndExit(\n `Error: Failed to parse the URL: ${argv.url}. Ensure you have entered a valid URL.`\n );\n }\n\n // 2. Build delete request\n const endpoint = normalize(argv[\"self-hosted-endpoint\"]);\n const deleteResponse = await fetch(\n `${endpoint}/v1/deployments/${deploymentName}`,\n {\n method: \"DELETE\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n\n if (deleteResponse.ok) {\n await printResultToConsoleAndExitGracefully(\n `Enqueued deletion of ${argv.url}`\n );\n } else {\n logger.error(\n { response: JSON.stringify(await deleteResponse.json(), null, 2) },\n \"Failed to upload to self-hosted build endpoint\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to enqueue the deletion request. Try again later.\"\n );\n }\n}\n\nasync function checkUrl(argv: Arguments, deploymentName: unknown) {\n if (!argv.url) {\n throw new Error(\"URL is required\");\n }\n\n let url = argv.url;\n if (!/^(http:\\/\\/|https:\\/\\/)/i.test(argv.url)) {\n url = `https://${url}`;\n }\n const parsedUrl = new URL(url);\n\n if (parsedUrl.username || parsedUrl.password) {\n logger.error(`Extra username and/or password was included in the URL.`);\n await printCriticalFailureToConsoleAndExit(\n `Error: Extraneous username and/or password in the URL. Only include the hostname.`\n );\n }\n\n if (parsedUrl.pathname !== \"/\") {\n logger.error(\n `Extra pathname was included in the URL: ${parsedUrl.pathname}`\n );\n await printCriticalFailureToConsoleAndExit(\n `Error: Extraneous pathname in URL: ${parsedUrl.pathname}. Only include the hostname.`\n );\n }\n\n if (parsedUrl.search !== \"\") {\n logger.error(\n `Extra search params were included in the URL: ${parsedUrl.search}`\n );\n await printCriticalFailureToConsoleAndExit(\n `Error: Extraneous search params in URL: ${parsedUrl.search}. Only include the hostname.`\n );\n }\n\n deploymentName = parsedUrl.hostname.split(\".\")[0];\n return deploymentName;\n}\n"]}
@@ -185,7 +185,7 @@ To fix this, check that the project, ${argv.project} exists and this api-key has
185
185
  }
186
186
  }
187
187
  else {
188
- logger.error(await uploadUrlResponse.text(), "Failed to upload to self-hosted build endpoint");
188
+ logger.error({ response: await uploadUrlResponse.text() }, "Failed to upload to self-hosted build endpoint");
189
189
  await printCriticalFailureToConsoleAndExit("Error: Failed to upload to self-hosted build endpoint");
190
190
  }
191
191
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/deploy/handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { MtlsCertificate } from \"@zuplo/types\";\nimport { ZUPLO_SYSTEM_ENV_VAR } from \"../common/constants.js\";\nimport { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n printSpinnerToConsole,\n printWarningToConsole,\n} from \"../common/output.js\";\nimport { pullSystemConfig } from \"../common/populate.js\";\nimport settings from \"../common/settings.js\";\nimport { getPrettyBranch } from \"../common/utils/branch.js\";\nimport { RequiredProperties } from \"../common/utils/types.js\";\nimport { normalizeUrl } from \"../common/utils/urls.js\";\nimport { archive, generateMetadata } from \"./archive.js\";\nimport {\n retrieveOrCreateEnvironment,\n UnableToAutoLinkToExistingProject,\n} from \"./environments.js\";\nimport { upload } from \"./file-upload.js\";\nimport { pollBuild, pollDeployment } from \"./poll-deployment.js\";\n\nexport interface Arguments {\n account: string;\n project: string;\n dir: string;\n environment?: string;\n authToken: string;\n \"verify-remote\"?: boolean;\n \"self-hosted-endpoint\"?: string;\n \"override-repo-url\"?: string;\n \"mtls-certificates-dir\"?: string;\n}\n\nexport type SelfHostedArgs = RequiredProperties<\n Arguments,\n \"self-hosted-endpoint\"\n>;\n\nexport async function deploy(argv: Arguments) {\n if (argv[\"self-hosted-endpoint\"]) {\n const args = argv as SelfHostedArgs;\n await deployToSelfHosted(args);\n } else {\n await deployToSaas(argv);\n }\n}\n\nfunction addMtlsCertificatesToFormData(\n formData: FormData,\n mtlsCertificatesDir: string\n) {\n const resolvedMtlsCertificatesDir = resolve(\n process.cwd(),\n mtlsCertificatesDir\n );\n\n let certNames: string[];\n try {\n certNames = readdirSync(resolvedMtlsCertificatesDir, {\n withFileTypes: true,\n })\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n } catch (cause) {\n throw new Error(\n `Unable to read mTLS certificates directory '${mtlsCertificatesDir}'`,\n { cause }\n );\n }\n\n const certificates: MtlsCertificate[] = certNames.map((certName) => {\n const certificateDirectory = join(resolvedMtlsCertificatesDir, certName);\n const certPath = join(certificateDirectory, \"tls.crt\");\n const keyPath = join(certificateDirectory, \"tls.key\");\n\n try {\n return {\n certName,\n mtlsCrt: readFileSync(certPath, \"utf-8\"),\n mtlsKey: readFileSync(keyPath, \"utf-8\"),\n };\n } catch (cause) {\n throw new Error(\n `Unable to read mTLS certificate files for '${certName}' in '${mtlsCertificatesDir}'`,\n { cause }\n );\n }\n });\n\n for (const certificate of certificates) {\n formData.append(\"mtlsCertificate\", JSON.stringify(certificate));\n }\n}\n\nasync function deployToSaas(argv: Arguments) {\n // 1. Create the tarball locally\n const archiveMetadata = await archive(argv);\n logger.debug(`Tarball created locally at ${archiveMetadata.tarball}`);\n\n // 2. Build uploadUrl request\n const { account, project } = argv;\n\n const payload = {\n accountName: account,\n projectName: project,\n environment: archiveMetadata.metadata.branch,\n repositoryUrl: archiveMetadata.metadata.repoUrl,\n sha: archiveMetadata.metadata.sha,\n };\n\n const uploadUrlResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/deployments/source-url`,\n {\n method: \"POST\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n body: JSON.stringify(payload),\n }\n );\n\n logger.debug(`Upload URL response: ${uploadUrlResponse.status}`);\n\n if (uploadUrlResponse.ok) {\n // 3. Upload to request URL\n const { uploadUrl, deploymentId } = await uploadUrlResponse.json();\n\n const uploadResponse = await upload({\n tarballPath: archiveMetadata.tarball,\n uploadUrl,\n deploymentId,\n ...payload,\n });\n\n logger.debug(`Upload response: ${uploadResponse.status}`);\n\n if (uploadResponse.ok) {\n const spinner = printSpinnerToConsole(\n `Deploying the '${payload.environment}' environment to '${project}' on account '${account}'...`\n );\n\n const { url, logUrl } = await pollDeployment(\n argv,\n deploymentId,\n account,\n project,\n spinner\n );\n if (url) {\n await printResultToConsoleAndExitGracefully(\n `Deployed to ${url}`,\n spinner\n );\n } else {\n await printCriticalFailureToConsoleAndExit(\n `Failed to deploy the environment ${\n archiveMetadata.metadata.branch\n } to project ${project} on account ${account}.\\nDeployment ID: ${deploymentId}\\nFor more information, check the deployment logs in the Zuplo dashboard.\\n\n ${logUrl}`,\n spinner\n );\n }\n } else {\n logger.error(\n {\n status: uploadResponse.status,\n statusText: uploadResponse.statusText,\n },\n \"Failed to upload source to cloud storage\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to upload deployment source. Please try again.\"\n );\n }\n } else {\n logger.error(\n {\n status: uploadUrlResponse.status,\n statusText: uploadUrlResponse.statusText,\n },\n \"Failed to retrieve uploadUrl\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to upload deployment source. Please try again.\"\n );\n }\n}\n\nasync function deployToSelfHosted(argv: SelfHostedArgs) {\n const { account, project } = argv;\n\n let existingZuploEnv: string | undefined;\n\n try {\n // 0. Finagle the URL first\n const endpoint = normalizeUrl(argv[\"self-hosted-endpoint\"]);\n\n // 1. Perform the link on-behalf-of-the-user\n // Store the current .env.zuplo if there is one and restore it later\n existingZuploEnv = retrieveExistingZuploEnv(argv);\n const branch = (await generateMetadata(argv)).branch;\n try {\n const environmentToAutoLink = await retrieveOrCreateEnvironment(\n branch,\n argv\n );\n await pullSystemConfig({\n dir: argv.dir,\n environment: environmentToAutoLink.name,\n authToken: argv.authToken,\n });\n } catch (error) {\n if (\n error instanceof UnableToAutoLinkToExistingProject &&\n // biome-ignore lint/style/noProcessEnv: Migrated from ESLint\n process.env.ZUPLO_ALLOW_DEPLOY_WITH_EMPTY_VARS\n ) {\n printWarningToConsole(\n `We are unable to fetch the environment variables from Zuplo for this project. \nDeployment will proceed because ZUPLO_ALLOW_DEPLOY_WITH_EMPTY_VARS is set. \nHowever, the environment variables will not be available. \nTo fix this, check that the project, ${argv.project} exists and this api-key has access to it.`\n );\n } else if (error instanceof UnableToAutoLinkToExistingProject) {\n await printCriticalFailureToConsoleAndExit(\n `We are unable to fetch the environment variables from Zuplo for this project. \nTo fix this, check that the project, ${argv.project} exists and this api-key has access to it.\nIf you want to force deployment without the environment variables, set ZUPLO_ALLOW_DEPLOY_WITH_EMPTY_VARS to true.`\n );\n } else {\n logger.error(error, \"Failed to fetch environment variables\");\n await printCriticalFailureToConsoleAndExit(\n `We are unable to fetch the environment variables from Zuplo for this project. \nTo fix this, check that the project, ${argv.project} exists and this api-key has access to it.`\n );\n }\n }\n\n // 2. Create the tarball locally\n const archiveMetadata = await archive(argv);\n logger.debug(`Tarball created locally at ${archiveMetadata.tarball}`);\n\n // 3. Build uploadUrl request\n const form = new FormData();\n const deploymentName = `${project}-${getPrettyBranch(\n archiveMetadata.metadata.branch\n )}`;\n form.set(\n \"file\",\n new Blob([readFileSync(archiveMetadata.tarball)], {\n type: \"application/gzip\",\n })\n );\n form.set(\"projectName\", project);\n form.set(\"deploymentName\", deploymentName);\n if (argv[\"mtls-certificates-dir\"]) {\n logger.debug(\n `Adding mTLS certificates from ${argv[\"mtls-certificates-dir\"]} to deployment`\n );\n addMtlsCertificatesToFormData(form, argv[\"mtls-certificates-dir\"]);\n }\n\n const uploadUrlResponse = await fetch(`${endpoint}/v1/deployments/build`, {\n method: \"POST\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n body: form,\n });\n\n logger.debug(`Upload URL response: ${uploadUrlResponse.status}`);\n\n if (uploadUrlResponse.ok) {\n const spinner = printSpinnerToConsole(\n `Deploying the current branch ${archiveMetadata.metadata.branch} to project ${project} on account ${account}...`\n );\n\n // 4. Poll for build\n const { buildName } = await uploadUrlResponse.json();\n\n logger.debug(`Deployment started for ${buildName}`);\n\n const buildResult = await pollBuild(argv, endpoint, buildName, spinner);\n\n if (buildResult.conditionType === \"Complete\") {\n // Retrieve the deployment\n const deploymentResponse = await fetch(\n `${endpoint}/v1/deployments/${deploymentName}`,\n {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n const deploymentJSON: { deploymentUrl: string } =\n await deploymentResponse.json();\n restoreExistingZuploEnvAsNecessary(argv, existingZuploEnv);\n\n await printResultToConsoleAndExitGracefully(\n `Deployed to ${deploymentJSON.deploymentUrl}`,\n spinner\n );\n } else {\n restoreExistingZuploEnvAsNecessary(argv, existingZuploEnv);\n await printCriticalFailureToConsoleAndExit(\n `Failed to deploy the current environment. Here's the diagnostics: ${JSON.stringify(\n buildResult\n )}`,\n spinner\n );\n }\n } else {\n logger.error(\n await uploadUrlResponse.text(),\n \"Failed to upload to self-hosted build endpoint\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to upload to self-hosted build endpoint\"\n );\n }\n } catch (error) {\n logger.error(error);\n } finally {\n restoreExistingZuploEnvAsNecessary(argv, existingZuploEnv);\n }\n}\n\nfunction retrieveExistingZuploEnv(argv: SelfHostedArgs): string | undefined {\n const normalizedDir = resolve(argv.dir);\n const envFilePath = join(normalizedDir, ZUPLO_SYSTEM_ENV_VAR);\n if (existsSync(envFilePath)) {\n const envFileContent = readFileSync(envFilePath, \"utf-8\");\n return envFileContent;\n } else {\n return undefined;\n }\n}\n\nfunction restoreExistingZuploEnvAsNecessary(\n argv: SelfHostedArgs,\n originalValue: string | undefined\n) {\n if (originalValue) {\n const normalizedDir = resolve(argv.dir);\n const envFilePath = join(normalizedDir, ZUPLO_SYSTEM_ENV_VAR);\n writeFileSync(envFilePath, originalValue);\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/deploy/handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { MtlsCertificate } from \"@zuplo/types\";\nimport { ZUPLO_SYSTEM_ENV_VAR } from \"../common/constants.js\";\nimport { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n printSpinnerToConsole,\n printWarningToConsole,\n} from \"../common/output.js\";\nimport { pullSystemConfig } from \"../common/populate.js\";\nimport settings from \"../common/settings.js\";\nimport { getPrettyBranch } from \"../common/utils/branch.js\";\nimport { RequiredProperties } from \"../common/utils/types.js\";\nimport { normalizeUrl } from \"../common/utils/urls.js\";\nimport { archive, generateMetadata } from \"./archive.js\";\nimport {\n retrieveOrCreateEnvironment,\n UnableToAutoLinkToExistingProject,\n} from \"./environments.js\";\nimport { upload } from \"./file-upload.js\";\nimport { pollBuild, pollDeployment } from \"./poll-deployment.js\";\n\nexport interface Arguments {\n account: string;\n project: string;\n dir: string;\n environment?: string;\n authToken: string;\n \"verify-remote\"?: boolean;\n \"self-hosted-endpoint\"?: string;\n \"override-repo-url\"?: string;\n \"mtls-certificates-dir\"?: string;\n}\n\nexport type SelfHostedArgs = RequiredProperties<\n Arguments,\n \"self-hosted-endpoint\"\n>;\n\nexport async function deploy(argv: Arguments) {\n if (argv[\"self-hosted-endpoint\"]) {\n const args = argv as SelfHostedArgs;\n await deployToSelfHosted(args);\n } else {\n await deployToSaas(argv);\n }\n}\n\nfunction addMtlsCertificatesToFormData(\n formData: FormData,\n mtlsCertificatesDir: string\n) {\n const resolvedMtlsCertificatesDir = resolve(\n process.cwd(),\n mtlsCertificatesDir\n );\n\n let certNames: string[];\n try {\n certNames = readdirSync(resolvedMtlsCertificatesDir, {\n withFileTypes: true,\n })\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n } catch (cause) {\n throw new Error(\n `Unable to read mTLS certificates directory '${mtlsCertificatesDir}'`,\n { cause }\n );\n }\n\n const certificates: MtlsCertificate[] = certNames.map((certName) => {\n const certificateDirectory = join(resolvedMtlsCertificatesDir, certName);\n const certPath = join(certificateDirectory, \"tls.crt\");\n const keyPath = join(certificateDirectory, \"tls.key\");\n\n try {\n return {\n certName,\n mtlsCrt: readFileSync(certPath, \"utf-8\"),\n mtlsKey: readFileSync(keyPath, \"utf-8\"),\n };\n } catch (cause) {\n throw new Error(\n `Unable to read mTLS certificate files for '${certName}' in '${mtlsCertificatesDir}'`,\n { cause }\n );\n }\n });\n\n for (const certificate of certificates) {\n formData.append(\"mtlsCertificate\", JSON.stringify(certificate));\n }\n}\n\nasync function deployToSaas(argv: Arguments) {\n // 1. Create the tarball locally\n const archiveMetadata = await archive(argv);\n logger.debug(`Tarball created locally at ${archiveMetadata.tarball}`);\n\n // 2. Build uploadUrl request\n const { account, project } = argv;\n\n const payload = {\n accountName: account,\n projectName: project,\n environment: archiveMetadata.metadata.branch,\n repositoryUrl: archiveMetadata.metadata.repoUrl,\n sha: archiveMetadata.metadata.sha,\n };\n\n const uploadUrlResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/deployments/source-url`,\n {\n method: \"POST\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n body: JSON.stringify(payload),\n }\n );\n\n logger.debug(`Upload URL response: ${uploadUrlResponse.status}`);\n\n if (uploadUrlResponse.ok) {\n // 3. Upload to request URL\n const { uploadUrl, deploymentId } = await uploadUrlResponse.json();\n\n const uploadResponse = await upload({\n tarballPath: archiveMetadata.tarball,\n uploadUrl,\n deploymentId,\n ...payload,\n });\n\n logger.debug(`Upload response: ${uploadResponse.status}`);\n\n if (uploadResponse.ok) {\n const spinner = printSpinnerToConsole(\n `Deploying the '${payload.environment}' environment to '${project}' on account '${account}'...`\n );\n\n const { url, logUrl } = await pollDeployment(\n argv,\n deploymentId,\n account,\n project,\n spinner\n );\n if (url) {\n await printResultToConsoleAndExitGracefully(\n `Deployed to ${url}`,\n spinner\n );\n } else {\n await printCriticalFailureToConsoleAndExit(\n `Failed to deploy the environment ${\n archiveMetadata.metadata.branch\n } to project ${project} on account ${account}.\\nDeployment ID: ${deploymentId}\\nFor more information, check the deployment logs in the Zuplo dashboard.\\n\n ${logUrl}`,\n spinner\n );\n }\n } else {\n logger.error(\n {\n status: uploadResponse.status,\n statusText: uploadResponse.statusText,\n },\n \"Failed to upload source to cloud storage\"\n );\n printDiagnosticsToConsole(\n \"Error: Failed to upload deployment source. Please try again.\"\n );\n }\n } else {\n logger.error(\n {\n status: uploadUrlResponse.status,\n statusText: uploadUrlResponse.statusText,\n },\n \"Failed to retrieve uploadUrl\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to upload deployment source. Please try again.\"\n );\n }\n}\n\nasync function deployToSelfHosted(argv: SelfHostedArgs) {\n const { account, project } = argv;\n\n let existingZuploEnv: string | undefined;\n\n try {\n // 0. Finagle the URL first\n const endpoint = normalizeUrl(argv[\"self-hosted-endpoint\"]);\n\n // 1. Perform the link on-behalf-of-the-user\n // Store the current .env.zuplo if there is one and restore it later\n existingZuploEnv = retrieveExistingZuploEnv(argv);\n const branch = (await generateMetadata(argv)).branch;\n try {\n const environmentToAutoLink = await retrieveOrCreateEnvironment(\n branch,\n argv\n );\n await pullSystemConfig({\n dir: argv.dir,\n environment: environmentToAutoLink.name,\n authToken: argv.authToken,\n });\n } catch (error) {\n if (\n error instanceof UnableToAutoLinkToExistingProject &&\n // biome-ignore lint/style/noProcessEnv: Migrated from ESLint\n process.env.ZUPLO_ALLOW_DEPLOY_WITH_EMPTY_VARS\n ) {\n printWarningToConsole(\n `We are unable to fetch the environment variables from Zuplo for this project. \nDeployment will proceed because ZUPLO_ALLOW_DEPLOY_WITH_EMPTY_VARS is set. \nHowever, the environment variables will not be available. \nTo fix this, check that the project, ${argv.project} exists and this api-key has access to it.`\n );\n } else if (error instanceof UnableToAutoLinkToExistingProject) {\n await printCriticalFailureToConsoleAndExit(\n `We are unable to fetch the environment variables from Zuplo for this project. \nTo fix this, check that the project, ${argv.project} exists and this api-key has access to it.\nIf you want to force deployment without the environment variables, set ZUPLO_ALLOW_DEPLOY_WITH_EMPTY_VARS to true.`\n );\n } else {\n logger.error(error, \"Failed to fetch environment variables\");\n await printCriticalFailureToConsoleAndExit(\n `We are unable to fetch the environment variables from Zuplo for this project. \nTo fix this, check that the project, ${argv.project} exists and this api-key has access to it.`\n );\n }\n }\n\n // 2. Create the tarball locally\n const archiveMetadata = await archive(argv);\n logger.debug(`Tarball created locally at ${archiveMetadata.tarball}`);\n\n // 3. Build uploadUrl request\n const form = new FormData();\n const deploymentName = `${project}-${getPrettyBranch(\n archiveMetadata.metadata.branch\n )}`;\n form.set(\n \"file\",\n new Blob([readFileSync(archiveMetadata.tarball)], {\n type: \"application/gzip\",\n })\n );\n form.set(\"projectName\", project);\n form.set(\"deploymentName\", deploymentName);\n if (argv[\"mtls-certificates-dir\"]) {\n logger.debug(\n `Adding mTLS certificates from ${argv[\"mtls-certificates-dir\"]} to deployment`\n );\n addMtlsCertificatesToFormData(form, argv[\"mtls-certificates-dir\"]);\n }\n\n const uploadUrlResponse = await fetch(`${endpoint}/v1/deployments/build`, {\n method: \"POST\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n body: form,\n });\n\n logger.debug(`Upload URL response: ${uploadUrlResponse.status}`);\n\n if (uploadUrlResponse.ok) {\n const spinner = printSpinnerToConsole(\n `Deploying the current branch ${archiveMetadata.metadata.branch} to project ${project} on account ${account}...`\n );\n\n // 4. Poll for build\n const { buildName } = await uploadUrlResponse.json();\n\n logger.debug(`Deployment started for ${buildName}`);\n\n const buildResult = await pollBuild(argv, endpoint, buildName, spinner);\n\n if (buildResult.conditionType === \"Complete\") {\n // Retrieve the deployment\n const deploymentResponse = await fetch(\n `${endpoint}/v1/deployments/${deploymentName}`,\n {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n const deploymentJSON: { deploymentUrl: string } =\n await deploymentResponse.json();\n restoreExistingZuploEnvAsNecessary(argv, existingZuploEnv);\n\n await printResultToConsoleAndExitGracefully(\n `Deployed to ${deploymentJSON.deploymentUrl}`,\n spinner\n );\n } else {\n restoreExistingZuploEnvAsNecessary(argv, existingZuploEnv);\n await printCriticalFailureToConsoleAndExit(\n `Failed to deploy the current environment. Here's the diagnostics: ${JSON.stringify(\n buildResult\n )}`,\n spinner\n );\n }\n } else {\n logger.error(\n { response: await uploadUrlResponse.text() },\n \"Failed to upload to self-hosted build endpoint\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to upload to self-hosted build endpoint\"\n );\n }\n } catch (error) {\n logger.error(error);\n } finally {\n restoreExistingZuploEnvAsNecessary(argv, existingZuploEnv);\n }\n}\n\nfunction retrieveExistingZuploEnv(argv: SelfHostedArgs): string | undefined {\n const normalizedDir = resolve(argv.dir);\n const envFilePath = join(normalizedDir, ZUPLO_SYSTEM_ENV_VAR);\n if (existsSync(envFilePath)) {\n const envFileContent = readFileSync(envFilePath, \"utf-8\");\n return envFileContent;\n } else {\n return undefined;\n }\n}\n\nfunction restoreExistingZuploEnvAsNecessary(\n argv: SelfHostedArgs,\n originalValue: string | undefined\n) {\n if (originalValue) {\n const normalizedDir = resolve(argv.dir);\n const envFilePath = join(normalizedDir, ZUPLO_SYSTEM_ENV_VAR);\n writeFileSync(envFilePath, originalValue);\n }\n}\n"]}
@@ -118,7 +118,7 @@ export async function pollBuild(argv, endpoint, buildName, spinner) {
118
118
  await wait();
119
119
  }
120
120
  else {
121
- logger.error(JSON.stringify(await response.json(), null, 2), "Failed to upload to self-hosted build endpoint");
121
+ logger.error({ response: JSON.stringify(await response.json(), null, 2) }, "Failed to upload to self-hosted build endpoint");
122
122
  await printCriticalFailureToConsoleAndExit("Error: Failed to upload to self-hosted build endpoint");
123
123
  }
124
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"poll-deployment.js","sourceRoot":"","sources":["../../src/deploy/poll-deployment.ts"],"names":[],"mappings":"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","sourcesContent":["import { Ora } from \"ora\";\nimport { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n textOrJson,\n} from \"../common/output.js\";\nimport settings from \"../common/settings.js\";\nimport { Arguments } from \"./handler.js\";\n\nfunction wait(duration: number = settings.POLL_INTERVAL): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, duration));\n}\n\nexport async function pollDeployment(\n argv: Arguments,\n fileId: string,\n account: string,\n project: string,\n spinner: Ora\n): Promise<{ url?: string; logUrl: string }> {\n const maxRetryAttemptsForServerUpdates = 5;\n let currentRetryAttemptsForServerUpdates = 0;\n\n for (let pollRetry = 0; pollRetry < settings.MAX_POLL_RETRIES; pollRetry++) {\n spinner.suffixText = `(${pollRetry}/${settings.MAX_POLL_RETRIES})`;\n const response = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/deployment-status/${fileId}`,\n {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n if (response.ok) {\n const rawJSON = await response.text();\n const { status, url, logUrl } = JSON.parse(rawJSON);\n\n switch (status) {\n case \"IN_PROGRESS\":\n await wait();\n continue;\n case \"SUCCESS\": {\n // If the return URL is zuplo.app we can check to make sure the zup is\n // fully deployed. If it is not, it might be a private URL so we skip\n // the check.\n logger.debug(`Checking if API is live: ${url}`);\n const parsedUrl = new URL(url);\n if (parsedUrl.hostname.includes(\".zuplo.app\")) {\n // Let's do some other check here to ensure that the zup is fully deployed\n try {\n const zupResponse = await fetch(\n `${parsedUrl.origin}/__zuplo/build`\n );\n if (zupResponse.ok) {\n return {\n url,\n logUrl,\n };\n } else {\n logger.debug(\n { status: zupResponse.status },\n \"Error while polling deployment\"\n );\n try {\n const result = await zupResponse.text();\n logger.debug(result);\n } catch {\n // Ignore\n }\n // Let's do another round of polling\n await wait();\n continue;\n }\n } catch (error) {\n // Log the error in debug but let's continue polling.\n // On first deploy to dedicated-managed, sometimes the URL has not resolved yet.\n logger.debug(\"Error while polling for zuplo build\", error);\n await wait();\n continue;\n }\n } else {\n return {\n url,\n logUrl,\n };\n }\n }\n case \"ERROR\":\n return {\n logUrl,\n };\n }\n } else if (response.status === 404) {\n // This means that it has not posted yet\n await wait();\n } else if (\n response.status === 500 &&\n currentRetryAttemptsForServerUpdates < maxRetryAttemptsForServerUpdates\n ) {\n currentRetryAttemptsForServerUpdates++;\n await wait();\n } else {\n logger.error(\n `Unexpected error from server while polling for deployment: ${\n response.status\n } ${response.statusText} ${textOrJson(await response.text())}`\n );\n throw new Error(\n `Unexpected response from server while polling for deployment: ${response.status} ${response.statusText}`\n );\n }\n }\n\n return {\n // Fallback url for the user to check the logs\n logUrl: \"https://portal.zuplo.com\",\n };\n}\n\nexport async function pollBuild(\n argv: Arguments,\n endpoint: string,\n buildName: string,\n spinner: Ora\n): Promise<{\n conditionType?: string;\n status?: string;\n reason?: string;\n message?: string;\n}> {\n const MaxRetryAttemptsForServerUpdates = 5;\n let CurrentRetryAttemptsForServerUpdates = 0;\n\n for (let pollRetry = 0; pollRetry < settings.MAX_POLL_RETRIES; pollRetry++) {\n spinner.suffixText = `(${pollRetry}/${settings.MAX_POLL_RETRIES})`;\n\n const response = await fetch(\n `${endpoint}/v1/deployments/build/${buildName}`,\n {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n if (response.ok) {\n const { conditionType, status, reason, message } = await response.json();\n\n switch (conditionType) {\n case \"Complete\":\n case \"Failed\":\n return {\n conditionType,\n status,\n reason,\n message,\n };\n default:\n await wait();\n continue;\n }\n } else if (response.status === 404) {\n // This means that it has not posted yet\n await wait();\n } else if (\n response.status === 500 &&\n CurrentRetryAttemptsForServerUpdates < MaxRetryAttemptsForServerUpdates\n ) {\n CurrentRetryAttemptsForServerUpdates++;\n await wait();\n } else {\n logger.error(\n JSON.stringify(await response.json(), null, 2),\n \"Failed to upload to self-hosted build endpoint\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to upload to self-hosted build endpoint\"\n );\n }\n }\n\n return {};\n}\n"]}
1
+ {"version":3,"file":"poll-deployment.js","sourceRoot":"","sources":["../../src/deploy/poll-deployment.ts"],"names":[],"mappings":"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","sourcesContent":["import { Ora } from \"ora\";\nimport { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n textOrJson,\n} from \"../common/output.js\";\nimport settings from \"../common/settings.js\";\nimport { Arguments } from \"./handler.js\";\n\nfunction wait(duration: number = settings.POLL_INTERVAL): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, duration));\n}\n\nexport async function pollDeployment(\n argv: Arguments,\n fileId: string,\n account: string,\n project: string,\n spinner: Ora\n): Promise<{ url?: string; logUrl: string }> {\n const maxRetryAttemptsForServerUpdates = 5;\n let currentRetryAttemptsForServerUpdates = 0;\n\n for (let pollRetry = 0; pollRetry < settings.MAX_POLL_RETRIES; pollRetry++) {\n spinner.suffixText = `(${pollRetry}/${settings.MAX_POLL_RETRIES})`;\n const response = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/accounts/${account}/projects/${project}/deployment-status/${fileId}`,\n {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n if (response.ok) {\n const rawJSON = await response.text();\n const { status, url, logUrl } = JSON.parse(rawJSON);\n\n switch (status) {\n case \"IN_PROGRESS\":\n await wait();\n continue;\n case \"SUCCESS\": {\n // If the return URL is zuplo.app we can check to make sure the zup is\n // fully deployed. If it is not, it might be a private URL so we skip\n // the check.\n logger.debug(`Checking if API is live: ${url}`);\n const parsedUrl = new URL(url);\n if (parsedUrl.hostname.includes(\".zuplo.app\")) {\n // Let's do some other check here to ensure that the zup is fully deployed\n try {\n const zupResponse = await fetch(\n `${parsedUrl.origin}/__zuplo/build`\n );\n if (zupResponse.ok) {\n return {\n url,\n logUrl,\n };\n } else {\n logger.debug(\n { status: zupResponse.status },\n \"Error while polling deployment\"\n );\n try {\n const result = await zupResponse.text();\n logger.debug(result);\n } catch {\n // Ignore\n }\n // Let's do another round of polling\n await wait();\n continue;\n }\n } catch (error) {\n // Log the error in debug but let's continue polling.\n // On first deploy to dedicated-managed, sometimes the URL has not resolved yet.\n logger.debug(\"Error while polling for zuplo build\", error);\n await wait();\n continue;\n }\n } else {\n return {\n url,\n logUrl,\n };\n }\n }\n case \"ERROR\":\n return {\n logUrl,\n };\n }\n } else if (response.status === 404) {\n // This means that it has not posted yet\n await wait();\n } else if (\n response.status === 500 &&\n currentRetryAttemptsForServerUpdates < maxRetryAttemptsForServerUpdates\n ) {\n currentRetryAttemptsForServerUpdates++;\n await wait();\n } else {\n logger.error(\n `Unexpected error from server while polling for deployment: ${\n response.status\n } ${response.statusText} ${textOrJson(await response.text())}`\n );\n throw new Error(\n `Unexpected response from server while polling for deployment: ${response.status} ${response.statusText}`\n );\n }\n }\n\n return {\n // Fallback url for the user to check the logs\n logUrl: \"https://portal.zuplo.com\",\n };\n}\n\nexport async function pollBuild(\n argv: Arguments,\n endpoint: string,\n buildName: string,\n spinner: Ora\n): Promise<{\n conditionType?: string;\n status?: string;\n reason?: string;\n message?: string;\n}> {\n const MaxRetryAttemptsForServerUpdates = 5;\n let CurrentRetryAttemptsForServerUpdates = 0;\n\n for (let pollRetry = 0; pollRetry < settings.MAX_POLL_RETRIES; pollRetry++) {\n spinner.suffixText = `(${pollRetry}/${settings.MAX_POLL_RETRIES})`;\n\n const response = await fetch(\n `${endpoint}/v1/deployments/build/${buildName}`,\n {\n method: \"GET\",\n headers: {\n // biome-ignore lint/style/useNamingConvention: External API property\n Authorization: `Bearer ${argv.authToken}`,\n },\n }\n );\n if (response.ok) {\n const { conditionType, status, reason, message } = await response.json();\n\n switch (conditionType) {\n case \"Complete\":\n case \"Failed\":\n return {\n conditionType,\n status,\n reason,\n message,\n };\n default:\n await wait();\n continue;\n }\n } else if (response.status === 404) {\n // This means that it has not posted yet\n await wait();\n } else if (\n response.status === 500 &&\n CurrentRetryAttemptsForServerUpdates < MaxRetryAttemptsForServerUpdates\n ) {\n CurrentRetryAttemptsForServerUpdates++;\n await wait();\n } else {\n logger.error(\n { response: JSON.stringify(await response.json(), null, 2) },\n \"Failed to upload to self-hosted build endpoint\"\n );\n await printCriticalFailureToConsoleAndExit(\n \"Error: Failed to upload to self-hosted build endpoint\"\n );\n }\n }\n\n return {};\n}\n"]}
@@ -1 +1 @@
1
- {"root":["../src/cli.ts","../src/internal.ts","../src/types.d.ts","../src/__tests__/archive-utils.test.ts","../src/__tests__/import-openapi.test.ts","../src/__tests__/outdated.test.ts","../src/__tests__/populate.test.ts","../src/__tests__/tsconfig-upgrader.test.ts","../src/__tests__/integration/confirm-linked-config.integration.test.ts","../src/__tests__/integration/confirm-production-deploy.integration.test.ts","../src/__tests__/integration/custom-domain.integration.test.ts","../src/__tests__/integration/delete.integration.test.ts","../src/__tests__/integration/deploy.integration.test.ts","../src/__tests__/integration/get-project-param.integration.test.ts","../src/__tests__/integration/info.integration.test.ts","../src/__tests__/integration/jest-mocks-setup.ts","../src/__tests__/integration/jest-setup.ts","../src/__tests__/integration/link.integration.test.ts","../src/__tests__/integration/linked-config-cascade.integration.test.ts","../src/__tests__/integration/list.integration.test.ts","../src/__tests__/integration/test-utils.ts","../src/__tests__/integration/tunnel.integration.test.ts","../src/__tests__/integration/variable.integration.test.ts","../src/__tests__/integration/whoami.integration.test.ts","../src/bucket/models.ts","../src/bucket/list/handler.ts","../src/build/handler.ts","../src/ca-certificate/models.ts","../src/ca-certificate/validation.test.ts","../src/ca-certificate/validation.ts","../src/ca-certificate/create/handler.ts","../src/ca-certificate/delete/handler.ts","../src/ca-certificate/describe/handler.ts","../src/ca-certificate/list/handler.ts","../src/ca-certificate/update/handler.ts","../src/cmds/build.ts","../src/cmds/compile.ts","../src/cmds/delete.ts","../src/cmds/deploy.ts","../src/cmds/dev.ts","../src/cmds/docs.ts","../src/cmds/editor.ts","../src/cmds/info.ts","../src/cmds/init.ts","../src/cmds/link.ts","../src/cmds/list.ts","../src/cmds/login.ts","../src/cmds/logout.ts","../src/cmds/test.ts","../src/cmds/whoami.ts","../src/cmds/bucket/index.ts","../src/cmds/bucket/list.ts","../src/cmds/ca-certificate/create.ts","../src/cmds/ca-certificate/delete.ts","../src/cmds/ca-certificate/describe.ts","../src/cmds/ca-certificate/index.ts","../src/cmds/ca-certificate/list.ts","../src/cmds/ca-certificate/update.ts","../src/cmds/custom-domain/create.ts","../src/cmds/custom-domain/delete.ts","../src/cmds/custom-domain/index.ts","../src/cmds/custom-domain/list.ts","../src/cmds/custom-domain/update.ts","../src/cmds/mtls-certificates/create.ts","../src/cmds/mtls-certificates/delete.ts","../src/cmds/mtls-certificates/describe.ts","../src/cmds/mtls-certificates/disable.ts","../src/cmds/mtls-certificates/index.ts","../src/cmds/mtls-certificates/list.ts","../src/cmds/mtls-certificates/update.ts","../src/cmds/open-api/convert.ts","../src/cmds/open-api/index.ts","../src/cmds/open-api/merge.ts","../src/cmds/open-api/overlay.ts","../src/cmds/project/create.ts","../src/cmds/project/index.ts","../src/cmds/project/info.ts","../src/cmds/project/list.ts","../src/cmds/proxies/create.ts","../src/cmds/proxies/delete.ts","../src/cmds/proxies/describe.ts","../src/cmds/proxies/index.ts","../src/cmds/proxies/update.ts","../src/cmds/source/import-openapi.ts","../src/cmds/source/index.ts","../src/cmds/source/migrate.ts","../src/cmds/source/upgrade.ts","../src/cmds/tunnel/create.ts","../src/cmds/tunnel/delete.ts","../src/cmds/tunnel/describe.ts","../src/cmds/tunnel/index.ts","../src/cmds/tunnel/list.ts","../src/cmds/tunnel/rotate-token.ts","../src/cmds/tunnel/services/describe.ts","../src/cmds/tunnel/services/index.ts","../src/cmds/tunnel/services/update.ts","../src/cmds/variable/create.ts","../src/cmds/variable/index.ts","../src/cmds/variable/update.ts","../src/common/alias.ts","../src/common/args.ts","../src/common/cli-dispatcher.test.ts","../src/common/cli-dispatcher.ts","../src/common/constants.ts","../src/common/handler.ts","../src/common/logger.ts","../src/common/models.ts","../src/common/outdated.ts","../src/common/output.ts","../src/common/populate.ts","../src/common/read-linked-config.test.ts","../src/common/read-linked-config.ts","../src/common/runner.ts","../src/common/settings.ts","../src/common/terminal.test.ts","../src/common/terminal.ts","../src/common/worker-output.ts","../src/common/analytics/cli-invocation.test.ts","../src/common/analytics/cli-invocation.ts","../src/common/analytics/lib.ts","../src/common/analytics/package-manager.test.ts","../src/common/analytics/package-manager.ts","../src/common/api/client.ts","../src/common/api/lib.ts","../src/common/machine-id/lib.ts","../src/common/middleware/authentication.ts","../src/common/middleware/check-pnpm-lifecycle.test.ts","../src/common/middleware/check-pnpm-lifecycle.ts","../src/common/middleware/confirm-linked-config.ts","../src/common/middleware/confirm-production-deploy.ts","../src/common/middleware/get-account-param.ts","../src/common/middleware/get-environment-param.test.ts","../src/common/middleware/get-environment-param.ts","../src/common/middleware/get-project-param.ts","../src/common/middleware/logging.ts","../src/common/middleware/user-configuration.ts","../src/common/middleware/user-identification.ts","../src/common/middleware/validate-fleet.ts","../src/common/upgraders/lib.ts","../src/common/upgraders/package-json-upgrader.ts","../src/common/upgraders/tsconfig-upgrader.ts","../src/common/upgraders/vscode-settings-json-upgrader.ts","../src/common/utils/box.ts","../src/common/utils/branch.ts","../src/common/utils/build-environment-prompt-choices.test.ts","../src/common/utils/build-environment-prompt-choices.ts","../src/common/utils/format-environment-type.test.ts","../src/common/utils/format-environment-type.ts","../src/common/utils/pnpm-lifecycle.test.ts","../src/common/utils/pnpm-lifecycle.ts","../src/common/utils/ports.ts","../src/common/utils/prefixed-output.ts","../src/common/utils/pretty-print-environment-prompt.test.ts","../src/common/utils/pretty-print-environment-prompt.ts","../src/common/utils/sort-environments-for-prompt.test.ts","../src/common/utils/sort-environments-for-prompt.ts","../src/common/utils/stringify-config.test.ts","../src/common/utils/stringify-config.ts","../src/common/utils/types.ts","../src/common/utils/urls.ts","../src/common/validators/argument-validators.spec.ts","../src/common/validators/argument-validators.ts","../src/common/validators/file-system-validator.ts","../src/common/validators/lib.ts","../src/common/validators/project-name-validator.ts","../src/common/xdg/lib.ts","../src/compile/handler.ts","../src/custom-domain/models.ts","../src/custom-domain/create/handler.ts","../src/custom-domain/delete/handler.ts","../src/custom-domain/list/handler.ts","../src/custom-domain/update/handler.ts","../src/delete/handler.ts","../src/delete/poll-deployment.ts","../src/deploy/archive.local-registry.test.ts","../src/deploy/archive.test.ts","../src/deploy/archive.ts","../src/deploy/environments.ts","../src/deploy/file-upload.ts","../src/deploy/handler.ts","../src/deploy/poll-deployment.ts","../src/dev/handler.ts","../src/dev/zuplo-local-gitignore.test.ts","../src/dev/zuplo-local-gitignore.ts","../src/docs/handler.ts","../src/editor/handler.ts","../src/editor/e2e/editor.spec.ts","../src/init/handler.ts","../src/link/handler.ts","../src/link/project-type.test.ts","../src/link/project-type.ts","../src/list/handler.ts","../src/login/login.ts","../src/login/logout.ts","../src/login/tokens.ts","../src/mtls-certificates/models.ts","../src/mtls-certificates/create/handler.ts","../src/mtls-certificates/delete/handler.ts","../src/mtls-certificates/describe/handler.ts","../src/mtls-certificates/disable/handler.ts","../src/mtls-certificates/list/handler.ts","../src/mtls-certificates/update/handler.ts","../src/open-api/convert/handler.spec.ts","../src/open-api/convert/handler.ts","../src/open-api/merge/handler.spec.ts","../src/open-api/merge/handler.ts","../src/open-api/overlay/handler.spec.ts","../src/open-api/overlay/handler.ts","../src/project/create/handler.ts","../src/project/info/handler.ts","../src/project/list/handler.ts","../src/proxies/models.ts","../src/proxies/create/handler.ts","../src/proxies/delete/handler.ts","../src/proxies/describe/handler.ts","../src/proxies/update/handler.ts","../src/source/migrate/dev-portal/handler.ts","../src/source/migrate/dev-portal/types.ts","../src/source/update/handler.ts","../src/test/esbuild-config.ts","../src/test/handler.ts","../src/test/invoke-test.test.ts","../src/test/invoke-test.ts","../src/test/test-files.test.ts","../src/test/test-files.ts","../src/test/esbuild-plugins/node-test-prep-plugin.ts","../src/tunnel/models.ts","../src/tunnel/create/handler.ts","../src/tunnel/delete/handler.ts","../src/tunnel/delete/poll-teardown-operation.ts","../src/tunnel/describe/handler.ts","../src/tunnel/list/handler.ts","../src/tunnel/rotate-token/handler.ts","../src/tunnel/services/describe/handler.ts","../src/tunnel/services/update/handler.ts","../src/tunnel/services/update/poll-provisioning-operations.ts","../src/variable/models.ts","../src/variable/create/handler.ts","../src/variable/update/handler.ts","../src/whoami/handler.ts"],"version":"5.8.2"}
1
+ {"root":["../src/cli.ts","../src/internal.ts","../src/types.d.ts","../src/__tests__/archive-utils.test.ts","../src/__tests__/import-openapi.test.ts","../src/__tests__/outdated.test.ts","../src/__tests__/populate.test.ts","../src/__tests__/tsconfig-upgrader.test.ts","../src/__tests__/integration/confirm-linked-config.integration.test.ts","../src/__tests__/integration/confirm-production-deploy.integration.test.ts","../src/__tests__/integration/custom-domain.integration.test.ts","../src/__tests__/integration/delete.integration.test.ts","../src/__tests__/integration/deploy.integration.test.ts","../src/__tests__/integration/get-project-param.integration.test.ts","../src/__tests__/integration/info.integration.test.ts","../src/__tests__/integration/jest-mocks-setup.ts","../src/__tests__/integration/jest-setup.ts","../src/__tests__/integration/link.integration.test.ts","../src/__tests__/integration/linked-config-cascade.integration.test.ts","../src/__tests__/integration/list.integration.test.ts","../src/__tests__/integration/test-utils.ts","../src/__tests__/integration/tunnel.integration.test.ts","../src/__tests__/integration/variable.integration.test.ts","../src/__tests__/integration/whoami.integration.test.ts","../src/bucket/models.ts","../src/bucket/list/handler.ts","../src/build/handler.ts","../src/ca-certificate/models.ts","../src/ca-certificate/validation.test.ts","../src/ca-certificate/validation.ts","../src/ca-certificate/create/handler.ts","../src/ca-certificate/delete/handler.ts","../src/ca-certificate/describe/handler.ts","../src/ca-certificate/list/handler.ts","../src/ca-certificate/update/handler.ts","../src/cmds/build.ts","../src/cmds/compile.ts","../src/cmds/delete.ts","../src/cmds/deploy.ts","../src/cmds/dev.ts","../src/cmds/docs.ts","../src/cmds/editor.ts","../src/cmds/info.ts","../src/cmds/init.ts","../src/cmds/link.ts","../src/cmds/list.ts","../src/cmds/login.ts","../src/cmds/logout.ts","../src/cmds/test.ts","../src/cmds/whoami.ts","../src/cmds/bucket/index.ts","../src/cmds/bucket/list.ts","../src/cmds/ca-certificate/create.ts","../src/cmds/ca-certificate/delete.ts","../src/cmds/ca-certificate/describe.ts","../src/cmds/ca-certificate/index.ts","../src/cmds/ca-certificate/list.ts","../src/cmds/ca-certificate/update.ts","../src/cmds/custom-domain/create.ts","../src/cmds/custom-domain/delete.ts","../src/cmds/custom-domain/index.ts","../src/cmds/custom-domain/list.ts","../src/cmds/custom-domain/update.ts","../src/cmds/mtls-certificates/create.ts","../src/cmds/mtls-certificates/delete.ts","../src/cmds/mtls-certificates/describe.ts","../src/cmds/mtls-certificates/disable.ts","../src/cmds/mtls-certificates/index.ts","../src/cmds/mtls-certificates/list.ts","../src/cmds/mtls-certificates/update.ts","../src/cmds/open-api/convert.ts","../src/cmds/open-api/index.ts","../src/cmds/open-api/merge.ts","../src/cmds/open-api/overlay.ts","../src/cmds/project/create.ts","../src/cmds/project/index.ts","../src/cmds/project/info.ts","../src/cmds/project/list.ts","../src/cmds/proxies/create.ts","../src/cmds/proxies/delete.ts","../src/cmds/proxies/describe.ts","../src/cmds/proxies/index.ts","../src/cmds/proxies/update.ts","../src/cmds/source/import-openapi.ts","../src/cmds/source/index.ts","../src/cmds/source/migrate.ts","../src/cmds/source/upgrade.ts","../src/cmds/tunnel/create.ts","../src/cmds/tunnel/delete.ts","../src/cmds/tunnel/describe.ts","../src/cmds/tunnel/index.ts","../src/cmds/tunnel/list.ts","../src/cmds/tunnel/rotate-token.ts","../src/cmds/tunnel/services/describe.ts","../src/cmds/tunnel/services/index.ts","../src/cmds/tunnel/services/update.ts","../src/cmds/variable/create.ts","../src/cmds/variable/index.ts","../src/cmds/variable/update.ts","../src/common/alias.ts","../src/common/args.ts","../src/common/cli-dispatcher.test.ts","../src/common/cli-dispatcher.ts","../src/common/constants.ts","../src/common/handler.ts","../src/common/logger.ts","../src/common/models.ts","../src/common/outdated.ts","../src/common/output.ts","../src/common/populate.ts","../src/common/read-linked-config.test.ts","../src/common/read-linked-config.ts","../src/common/runner.ts","../src/common/settings.ts","../src/common/terminal.test.ts","../src/common/terminal.ts","../src/common/worker-output.ts","../src/common/analytics/cli-invocation.test.ts","../src/common/analytics/cli-invocation.ts","../src/common/analytics/lib.ts","../src/common/analytics/package-manager.test.ts","../src/common/analytics/package-manager.ts","../src/common/api/client.ts","../src/common/api/lib.ts","../src/common/machine-id/lib.ts","../src/common/middleware/authentication.ts","../src/common/middleware/check-pnpm-lifecycle.test.ts","../src/common/middleware/check-pnpm-lifecycle.ts","../src/common/middleware/confirm-linked-config.ts","../src/common/middleware/confirm-production-deploy.ts","../src/common/middleware/get-account-param.ts","../src/common/middleware/get-environment-param.test.ts","../src/common/middleware/get-environment-param.ts","../src/common/middleware/get-project-param.ts","../src/common/middleware/logging.ts","../src/common/middleware/user-configuration.ts","../src/common/middleware/user-identification.ts","../src/common/middleware/validate-fleet.ts","../src/common/upgraders/lib.ts","../src/common/upgraders/package-json-upgrader.ts","../src/common/upgraders/tsconfig-upgrader.ts","../src/common/upgraders/vscode-settings-json-upgrader.ts","../src/common/utils/box.ts","../src/common/utils/branch.ts","../src/common/utils/build-environment-prompt-choices.test.ts","../src/common/utils/build-environment-prompt-choices.ts","../src/common/utils/format-environment-type.test.ts","../src/common/utils/format-environment-type.ts","../src/common/utils/pnpm-lifecycle.test.ts","../src/common/utils/pnpm-lifecycle.ts","../src/common/utils/ports.ts","../src/common/utils/prefixed-output.ts","../src/common/utils/pretty-print-environment-prompt.test.ts","../src/common/utils/pretty-print-environment-prompt.ts","../src/common/utils/sort-environments-for-prompt.test.ts","../src/common/utils/sort-environments-for-prompt.ts","../src/common/utils/stringify-config.test.ts","../src/common/utils/stringify-config.ts","../src/common/utils/types.ts","../src/common/utils/urls.ts","../src/common/validators/argument-validators.spec.ts","../src/common/validators/argument-validators.ts","../src/common/validators/file-system-validator.ts","../src/common/validators/lib.ts","../src/common/validators/project-name-validator.ts","../src/common/xdg/lib.ts","../src/compile/handler.ts","../src/custom-domain/models.ts","../src/custom-domain/create/handler.ts","../src/custom-domain/delete/handler.ts","../src/custom-domain/list/handler.ts","../src/custom-domain/update/handler.ts","../src/delete/handler.ts","../src/delete/poll-deployment.ts","../src/deploy/archive.local-registry.test.ts","../src/deploy/archive.test.ts","../src/deploy/archive.ts","../src/deploy/environments.ts","../src/deploy/file-upload.ts","../src/deploy/handler.ts","../src/deploy/poll-deployment.ts","../src/dev/handler.ts","../src/dev/zuplo-local-gitignore.test.ts","../src/dev/zuplo-local-gitignore.ts","../src/docs/handler.ts","../src/editor/handler.ts","../src/editor/e2e/editor.spec.ts","../src/init/handler.ts","../src/link/handler.ts","../src/link/project-type.test.ts","../src/link/project-type.ts","../src/list/handler.ts","../src/login/login.ts","../src/login/logout.ts","../src/login/tokens.ts","../src/mtls-certificates/models.ts","../src/mtls-certificates/create/handler.ts","../src/mtls-certificates/delete/handler.ts","../src/mtls-certificates/describe/handler.ts","../src/mtls-certificates/disable/handler.ts","../src/mtls-certificates/list/handler.ts","../src/mtls-certificates/update/handler.ts","../src/open-api/convert/handler.spec.ts","../src/open-api/convert/handler.ts","../src/open-api/merge/handler.spec.ts","../src/open-api/merge/handler.ts","../src/open-api/overlay/handler.spec.ts","../src/open-api/overlay/handler.ts","../src/project/create/handler.ts","../src/project/info/handler.ts","../src/project/list/handler.ts","../src/proxies/models.ts","../src/proxies/create/handler.ts","../src/proxies/delete/handler.ts","../src/proxies/describe/handler.ts","../src/proxies/update/handler.ts","../src/source/migrate/dev-portal/handler.ts","../src/source/migrate/dev-portal/types.ts","../src/source/update/handler.ts","../src/test/esbuild-config.ts","../src/test/handler.ts","../src/test/invoke-test.test.ts","../src/test/invoke-test.ts","../src/test/test-files.test.ts","../src/test/test-files.ts","../src/test/esbuild-plugins/node-test-prep-plugin.ts","../src/tunnel/models.ts","../src/tunnel/create/handler.ts","../src/tunnel/delete/handler.ts","../src/tunnel/delete/poll-teardown-operation.ts","../src/tunnel/describe/handler.ts","../src/tunnel/list/handler.ts","../src/tunnel/rotate-token/handler.ts","../src/tunnel/services/describe/handler.ts","../src/tunnel/services/update/handler.ts","../src/tunnel/services/update/poll-provisioning-operations.ts","../src/variable/models.ts","../src/variable/create/handler.ts","../src/variable/update/handler.ts","../src/whoami/handler.ts"],"version":"5.8.3"}
@@ -0,0 +1,13 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "monthly"
7
+ open-pull-requests-limit: 10
8
+
9
+ - package-ecosystem: "npm"
10
+ directory: "/"
11
+ schedule:
12
+ interval: "monthly"
13
+ open-pull-requests-limit: 10
@@ -0,0 +1,48 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - 'v*'
8
+ paths-ignore:
9
+ - 'docs/**'
10
+ - '*.md'
11
+ pull_request:
12
+ paths-ignore:
13
+ - 'docs/**'
14
+ - '*.md'
15
+
16
+ # This allows a subsequently queued workflow run to interrupt previous runs
17
+ concurrency:
18
+ group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
19
+ cancel-in-progress: true
20
+
21
+ jobs:
22
+ test:
23
+ name: ${{ matrix.node-version }} ${{ matrix.os }}
24
+ runs-on: ${{ matrix.os }}
25
+ permissions:
26
+ contents: read
27
+ strategy:
28
+ fail-fast: false
29
+ matrix:
30
+ os: [macOS-latest, windows-latest, ubuntu-latest]
31
+ node-version: [18, 20, 22, 24]
32
+
33
+ steps:
34
+ - name: Check out repo
35
+ uses: actions/checkout@v5.0.0
36
+ with:
37
+ persist-credentials: false
38
+
39
+ - name: Setup Node ${{ matrix.node-version }}
40
+ uses: actions/setup-node@v5
41
+ with:
42
+ node-version: ${{ matrix.node-version }}
43
+
44
+ - name: Install dependencies
45
+ run: npm i --ignore-scripts
46
+
47
+ - name: Run tests
48
+ run: npm run test
@@ -0,0 +1,43 @@
1
+ name: Publish release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ version:
7
+ description: 'The version number to tag and release'
8
+ required: true
9
+ type: string
10
+ prerelease:
11
+ description: 'Release as pre-release'
12
+ required: false
13
+ type: boolean
14
+ default: false
15
+
16
+ jobs:
17
+ release-npm:
18
+ runs-on: ubuntu-latest
19
+ environment: main
20
+ permissions:
21
+ contents: write
22
+ id-token: write
23
+ steps:
24
+ - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4
25
+ - uses: actions/setup-node@v5
26
+ with:
27
+ node-version: '22'
28
+ registry-url: 'https://registry.npmjs.org'
29
+ - run: npm install npm -g
30
+ - run: npm install
31
+ - name: Change version number and sync
32
+ run: |
33
+ node scripts/sync-version.mjs ${{ inputs.version }}
34
+ - name: GIT commit and push all changed files
35
+ run: |
36
+ git config --global user.name "mcollina"
37
+ git config --global user.email "hello@matteocollina.com"
38
+ git commit -n -a -m "Bumped v${{ inputs.version }}"
39
+ git push origin HEAD:${{ github.ref }}
40
+ - run: npm publish --access public --tag ${{ inputs.prerelease == true && 'next' || 'latest' }}
41
+ - name: 'Create release notes'
42
+ run: |
43
+ npx @matteo.collina/release-notes -a ${{ secrets.GITHUB_TOKEN }} -t v${{ inputs.version }} -r redact -o pinojs ${{ github.event.inputs.prerelease == 'true' && '-p' || '' }} -c ${{ github.ref }}
@@ -1,6 +1,6 @@
1
- The MIT License (MIT)
1
+ MIT License
2
2
 
3
- Copyright (c) 2015 Toru Nagashima
3
+ Copyright (c) 2025 pinojs contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -19,4 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.
22
-