@zuplo/cli 3.0.5 → 6.2.6

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 (424) hide show
  1. package/dist/__tests__/archive-utils.test.d.ts +2 -0
  2. package/dist/__tests__/archive-utils.test.d.ts.map +1 -0
  3. package/dist/__tests__/archive-utils.test.js +55 -0
  4. package/dist/__tests__/archive-utils.test.js.map +1 -0
  5. package/dist/__tests__/engine.test.d.ts +2 -0
  6. package/dist/__tests__/engine.test.d.ts.map +1 -0
  7. package/dist/{convert → __tests__}/engine.test.js +2 -5
  8. package/dist/__tests__/engine.test.js.map +1 -0
  9. package/dist/__tests__/import-openapi-utils.test.d.ts +2 -0
  10. package/dist/__tests__/import-openapi-utils.test.d.ts.map +1 -0
  11. package/dist/__tests__/import-openapi-utils.test.js +125 -0
  12. package/dist/__tests__/import-openapi-utils.test.js.map +1 -0
  13. package/dist/__tests__/import-openapi.test.d.ts +2 -0
  14. package/dist/__tests__/import-openapi.test.d.ts.map +1 -0
  15. package/dist/__tests__/import-openapi.test.js +166 -0
  16. package/dist/__tests__/import-openapi.test.js.map +1 -0
  17. package/dist/__tests__/oas-test-data.d.ts +98 -0
  18. package/dist/__tests__/oas-test-data.d.ts.map +1 -0
  19. package/dist/__tests__/oas-test-data.js +114 -0
  20. package/dist/__tests__/oas-test-data.js.map +1 -0
  21. package/dist/__tests__/outdated.test.d.ts +2 -0
  22. package/dist/__tests__/outdated.test.d.ts.map +1 -0
  23. package/dist/{common → __tests__}/outdated.test.js +4 -7
  24. package/dist/__tests__/outdated.test.js.map +1 -0
  25. package/dist/__tests__/tsconfig-upgrader.test.d.ts +2 -0
  26. package/dist/__tests__/tsconfig-upgrader.test.d.ts.map +1 -0
  27. package/dist/__tests__/tsconfig-upgrader.test.js +27 -0
  28. package/dist/__tests__/tsconfig-upgrader.test.js.map +1 -0
  29. package/dist/build/handler.d.ts +7 -0
  30. package/dist/build/handler.d.ts.map +1 -0
  31. package/dist/build/handler.js +29 -0
  32. package/dist/build/handler.js.map +1 -0
  33. package/dist/cli.d.ts +2 -0
  34. package/dist/cli.d.ts.map +1 -0
  35. package/dist/cli.js +4 -5
  36. package/dist/cli.js.map +1 -0
  37. package/dist/cmds/build.d.ts +9 -0
  38. package/dist/cmds/build.d.ts.map +1 -0
  39. package/dist/cmds/build.js +39 -0
  40. package/dist/cmds/build.js.map +1 -0
  41. package/dist/cmds/compile.d.ts +9 -0
  42. package/dist/cmds/compile.d.ts.map +1 -0
  43. package/dist/cmds/compile.js +1 -4
  44. package/dist/cmds/compile.js.map +1 -0
  45. package/dist/cmds/convert.d.ts +9 -0
  46. package/dist/cmds/convert.d.ts.map +1 -0
  47. package/dist/cmds/convert.js +1 -4
  48. package/dist/cmds/convert.js.map +1 -0
  49. package/dist/cmds/delete.d.ts +9 -0
  50. package/dist/cmds/delete.d.ts.map +1 -0
  51. package/dist/cmds/delete.js +1 -4
  52. package/dist/cmds/delete.js.map +1 -0
  53. package/dist/cmds/deploy.d.ts +9 -0
  54. package/dist/cmds/deploy.d.ts.map +1 -0
  55. package/dist/cmds/deploy.js +8 -5
  56. package/dist/cmds/deploy.js.map +1 -0
  57. package/dist/cmds/dev.d.ts +9 -0
  58. package/dist/cmds/dev.d.ts.map +1 -0
  59. package/dist/cmds/dev.js +1 -4
  60. package/dist/cmds/dev.js.map +1 -0
  61. package/dist/cmds/editor.d.ts +9 -0
  62. package/dist/cmds/editor.d.ts.map +1 -0
  63. package/dist/cmds/editor.js +1 -4
  64. package/dist/cmds/editor.js.map +1 -0
  65. package/dist/cmds/link.d.ts +9 -0
  66. package/dist/cmds/link.d.ts.map +1 -0
  67. package/dist/cmds/link.js +1 -4
  68. package/dist/cmds/link.js.map +1 -0
  69. package/dist/cmds/list.d.ts +9 -0
  70. package/dist/cmds/list.d.ts.map +1 -0
  71. package/dist/cmds/list.js +1 -4
  72. package/dist/cmds/list.js.map +1 -0
  73. package/dist/cmds/login.d.ts +9 -0
  74. package/dist/cmds/login.d.ts.map +1 -0
  75. package/dist/cmds/login.js +1 -4
  76. package/dist/cmds/login.js.map +1 -0
  77. package/dist/cmds/project/import-openapi.d.ts +9 -0
  78. package/dist/cmds/project/import-openapi.d.ts.map +1 -0
  79. package/dist/cmds/project/import-openapi.js +2 -12
  80. package/dist/cmds/project/import-openapi.js.map +1 -0
  81. package/dist/cmds/project/index.d.ts +4 -0
  82. package/dist/cmds/project/index.d.ts.map +1 -0
  83. package/dist/cmds/project/index.js +1 -4
  84. package/dist/cmds/project/index.js.map +1 -0
  85. package/dist/cmds/project/update.d.ts +9 -0
  86. package/dist/cmds/project/update.d.ts.map +1 -0
  87. package/dist/cmds/project/update.js +1 -4
  88. package/dist/cmds/project/update.js.map +1 -0
  89. package/dist/cmds/test.d.ts +9 -0
  90. package/dist/cmds/test.d.ts.map +1 -0
  91. package/dist/cmds/test.js +1 -4
  92. package/dist/cmds/test.js.map +1 -0
  93. package/dist/cmds/tunnel/create.d.ts +9 -0
  94. package/dist/cmds/tunnel/create.d.ts.map +1 -0
  95. package/dist/cmds/tunnel/create.js +1 -4
  96. package/dist/cmds/tunnel/create.js.map +1 -0
  97. package/dist/cmds/tunnel/delete.d.ts +9 -0
  98. package/dist/cmds/tunnel/delete.d.ts.map +1 -0
  99. package/dist/cmds/tunnel/delete.js +1 -4
  100. package/dist/cmds/tunnel/delete.js.map +1 -0
  101. package/dist/cmds/tunnel/describe.d.ts +9 -0
  102. package/dist/cmds/tunnel/describe.d.ts.map +1 -0
  103. package/dist/cmds/tunnel/describe.js +1 -4
  104. package/dist/cmds/tunnel/describe.js.map +1 -0
  105. package/dist/cmds/tunnel/index.d.ts +4 -0
  106. package/dist/cmds/tunnel/index.d.ts.map +1 -0
  107. package/dist/cmds/tunnel/index.js +1 -4
  108. package/dist/cmds/tunnel/index.js.map +1 -0
  109. package/dist/cmds/tunnel/list.d.ts +9 -0
  110. package/dist/cmds/tunnel/list.d.ts.map +1 -0
  111. package/dist/cmds/tunnel/list.js +1 -4
  112. package/dist/cmds/tunnel/list.js.map +1 -0
  113. package/dist/cmds/tunnel/rotate-token.d.ts +9 -0
  114. package/dist/cmds/tunnel/rotate-token.d.ts.map +1 -0
  115. package/dist/cmds/tunnel/rotate-token.js +1 -4
  116. package/dist/cmds/tunnel/rotate-token.js.map +1 -0
  117. package/dist/cmds/tunnel/services/describe.d.ts +9 -0
  118. package/dist/cmds/tunnel/services/describe.d.ts.map +1 -0
  119. package/dist/cmds/tunnel/services/describe.js +1 -4
  120. package/dist/cmds/tunnel/services/describe.js.map +1 -0
  121. package/dist/cmds/tunnel/services/index.d.ts +4 -0
  122. package/dist/cmds/tunnel/services/index.d.ts.map +1 -0
  123. package/dist/cmds/tunnel/services/index.js +1 -4
  124. package/dist/cmds/tunnel/services/index.js.map +1 -0
  125. package/dist/cmds/tunnel/services/update.d.ts +9 -0
  126. package/dist/cmds/tunnel/services/update.d.ts.map +1 -0
  127. package/dist/cmds/tunnel/services/update.js +1 -4
  128. package/dist/cmds/tunnel/services/update.js.map +1 -0
  129. package/dist/cmds/variable/create.d.ts +9 -0
  130. package/dist/cmds/variable/create.d.ts.map +1 -0
  131. package/dist/cmds/variable/create.js +1 -4
  132. package/dist/cmds/variable/create.js.map +1 -0
  133. package/dist/cmds/variable/index.d.ts +4 -0
  134. package/dist/cmds/variable/index.d.ts.map +1 -0
  135. package/dist/cmds/variable/index.js +1 -4
  136. package/dist/cmds/variable/index.js.map +1 -0
  137. package/dist/cmds/variable/update.d.ts +9 -0
  138. package/dist/cmds/variable/update.d.ts.map +1 -0
  139. package/dist/cmds/variable/update.js +1 -4
  140. package/dist/cmds/variable/update.js.map +1 -0
  141. package/dist/common/alias.d.ts +2 -0
  142. package/dist/common/alias.d.ts.map +1 -0
  143. package/dist/common/alias.js +1 -4
  144. package/dist/common/alias.js.map +1 -0
  145. package/dist/common/analytics/lib.d.ts +18 -0
  146. package/dist/common/analytics/lib.d.ts.map +1 -0
  147. package/dist/common/analytics/lib.js +1 -4
  148. package/dist/common/analytics/lib.js.map +1 -0
  149. package/dist/common/api/lib.d.ts +16 -0
  150. package/dist/common/api/lib.d.ts.map +1 -0
  151. package/dist/common/api/lib.js +1 -4
  152. package/dist/common/api/lib.js.map +1 -0
  153. package/dist/common/args.d.ts +4 -0
  154. package/dist/common/args.d.ts.map +1 -0
  155. package/dist/common/args.js +1 -4
  156. package/dist/common/args.js.map +1 -0
  157. package/dist/common/constants.d.ts +16 -0
  158. package/dist/common/constants.d.ts.map +1 -0
  159. package/dist/common/constants.js +1 -4
  160. package/dist/common/constants.js.map +1 -0
  161. package/dist/common/handler.d.ts +2 -0
  162. package/dist/common/handler.d.ts.map +1 -0
  163. package/dist/common/handler.js +1 -4
  164. package/dist/common/handler.js.map +1 -0
  165. package/dist/common/logger.d.ts +3 -0
  166. package/dist/common/logger.d.ts.map +1 -0
  167. package/dist/common/logger.js +1 -4
  168. package/dist/common/logger.js.map +1 -0
  169. package/dist/common/machine-id/lib.d.ts +2 -0
  170. package/dist/common/machine-id/lib.d.ts.map +1 -0
  171. package/dist/common/machine-id/lib.js +1 -4
  172. package/dist/common/machine-id/lib.js.map +1 -0
  173. package/dist/common/middleware/user-configuration.d.ts +4 -0
  174. package/dist/common/middleware/user-configuration.d.ts.map +1 -0
  175. package/dist/common/middleware/user-configuration.js +1 -4
  176. package/dist/common/middleware/user-configuration.js.map +1 -0
  177. package/dist/common/middleware/user-identification.d.ts +4 -0
  178. package/dist/common/middleware/user-identification.d.ts.map +1 -0
  179. package/dist/common/middleware/user-identification.js +2 -5
  180. package/dist/common/middleware/user-identification.js.map +1 -0
  181. package/dist/common/models.d.ts +7 -0
  182. package/dist/common/models.d.ts.map +1 -0
  183. package/dist/common/models.js +1 -4
  184. package/dist/common/models.js.map +1 -0
  185. package/dist/common/outdated.d.ts +3 -0
  186. package/dist/common/outdated.d.ts.map +1 -0
  187. package/dist/common/outdated.js +3 -6
  188. package/dist/common/outdated.js.map +1 -0
  189. package/dist/common/output.d.ts +10 -0
  190. package/dist/common/output.d.ts.map +1 -0
  191. package/dist/common/output.js +2 -5
  192. package/dist/common/output.js.map +1 -0
  193. package/dist/common/settings.d.ts +11 -0
  194. package/dist/common/settings.d.ts.map +1 -0
  195. package/dist/common/settings.js +1 -4
  196. package/dist/common/settings.js.map +1 -0
  197. package/dist/common/upgraders/lib.d.ts +15 -0
  198. package/dist/common/upgraders/lib.d.ts.map +1 -0
  199. package/dist/common/upgraders/lib.js +1 -4
  200. package/dist/common/upgraders/lib.js.map +1 -0
  201. package/dist/common/upgraders/package-json-upgrader.d.ts +10 -0
  202. package/dist/common/upgraders/package-json-upgrader.d.ts.map +1 -0
  203. package/dist/common/upgraders/package-json-upgrader.js +1 -4
  204. package/dist/common/upgraders/package-json-upgrader.js.map +1 -0
  205. package/dist/common/upgraders/tsconfig-upgrader.d.ts +14 -0
  206. package/dist/common/upgraders/tsconfig-upgrader.d.ts.map +1 -0
  207. package/dist/common/upgraders/tsconfig-upgrader.js +1 -4
  208. package/dist/common/upgraders/tsconfig-upgrader.js.map +1 -0
  209. package/dist/common/upgraders/vscode-settings-json-upgrader.d.ts +7 -0
  210. package/dist/common/upgraders/vscode-settings-json-upgrader.d.ts.map +1 -0
  211. package/dist/common/upgraders/vscode-settings-json-upgrader.js +1 -4
  212. package/dist/common/upgraders/vscode-settings-json-upgrader.js.map +1 -0
  213. package/dist/common/utils/box.d.ts +8 -0
  214. package/dist/common/utils/box.d.ts.map +1 -0
  215. package/dist/common/utils/box.js +1 -4
  216. package/dist/common/utils/box.js.map +1 -0
  217. package/dist/common/utils/ports.d.ts +2 -0
  218. package/dist/common/utils/ports.d.ts.map +1 -0
  219. package/dist/common/utils/ports.js +4 -7
  220. package/dist/common/utils/ports.js.map +1 -0
  221. package/dist/common/utils/types.d.ts +2 -0
  222. package/dist/common/utils/types.d.ts.map +1 -0
  223. package/dist/common/utils/types.js +1 -4
  224. package/dist/common/utils/types.js.map +1 -0
  225. package/dist/common/utils/urls.d.ts +2 -0
  226. package/dist/common/utils/urls.d.ts.map +1 -0
  227. package/dist/common/utils/urls.js +1 -4
  228. package/dist/common/utils/urls.js.map +1 -0
  229. package/dist/common/validators/file-system-validator.d.ts +69 -0
  230. package/dist/common/validators/file-system-validator.d.ts.map +1 -0
  231. package/dist/common/validators/file-system-validator.js +3 -6
  232. package/dist/common/validators/file-system-validator.js.map +1 -0
  233. package/dist/common/validators/lib.d.ts +21 -0
  234. package/dist/common/validators/lib.d.ts.map +1 -0
  235. package/dist/common/validators/lib.js +1 -4
  236. package/dist/common/validators/lib.js.map +1 -0
  237. package/dist/common/validators/login-state-validator.d.ts +14 -0
  238. package/dist/common/validators/login-state-validator.d.ts.map +1 -0
  239. package/dist/common/validators/login-state-validator.js +1 -4
  240. package/dist/common/validators/login-state-validator.js.map +1 -0
  241. package/dist/common/validators/project-name-validator.d.ts +12 -0
  242. package/dist/common/validators/project-name-validator.d.ts.map +1 -0
  243. package/dist/common/validators/project-name-validator.js +1 -4
  244. package/dist/common/validators/project-name-validator.js.map +1 -0
  245. package/dist/common/xdg/lib.d.ts +7 -0
  246. package/dist/common/xdg/lib.d.ts.map +1 -0
  247. package/dist/common/xdg/lib.js +1 -4
  248. package/dist/common/xdg/lib.js.map +1 -0
  249. package/dist/compile/handler.d.ts +7 -0
  250. package/dist/compile/handler.d.ts.map +1 -0
  251. package/dist/compile/handler.js +4 -5
  252. package/dist/compile/handler.js.map +1 -0
  253. package/dist/convert/engine.d.ts +14 -0
  254. package/dist/convert/engine.d.ts.map +1 -0
  255. package/dist/convert/engine.js +1 -4
  256. package/dist/convert/engine.js.map +1 -0
  257. package/dist/convert/handler.d.ts +5 -0
  258. package/dist/convert/handler.d.ts.map +1 -0
  259. package/dist/convert/handler.js +1 -4
  260. package/dist/convert/handler.js.map +1 -0
  261. package/dist/convert/routes.generated.d.ts +69 -0
  262. package/dist/convert/routes.generated.d.ts.map +1 -0
  263. package/dist/convert/routes.generated.js +1 -4
  264. package/dist/convert/routes.generated.js.map +1 -0
  265. package/dist/delete/handler.d.ts +10 -0
  266. package/dist/delete/handler.d.ts.map +1 -0
  267. package/dist/delete/handler.js +2 -5
  268. package/dist/delete/handler.js.map +1 -0
  269. package/dist/delete/poll-deployment.d.ts +3 -0
  270. package/dist/delete/poll-deployment.d.ts.map +1 -0
  271. package/dist/delete/poll-deployment.js +1 -4
  272. package/dist/delete/poll-deployment.js.map +1 -0
  273. package/dist/deploy/archive.d.ts +19 -0
  274. package/dist/deploy/archive.d.ts.map +1 -0
  275. package/dist/deploy/archive.js +9 -8
  276. package/dist/deploy/archive.js.map +1 -0
  277. package/dist/deploy/file-upload.d.ts +2 -0
  278. package/dist/deploy/file-upload.d.ts.map +1 -0
  279. package/dist/deploy/file-upload.js +1 -4
  280. package/dist/deploy/file-upload.js.map +1 -0
  281. package/dist/deploy/handler.d.ts +13 -0
  282. package/dist/deploy/handler.d.ts.map +1 -0
  283. package/dist/deploy/handler.js +1 -4
  284. package/dist/deploy/handler.js.map +1 -0
  285. package/dist/deploy/poll-deployment.d.ts +13 -0
  286. package/dist/deploy/poll-deployment.d.ts.map +1 -0
  287. package/dist/deploy/poll-deployment.js +1 -4
  288. package/dist/deploy/poll-deployment.js.map +1 -0
  289. package/dist/dev/handler.d.ts +9 -0
  290. package/dist/dev/handler.d.ts.map +1 -0
  291. package/dist/dev/handler.js +2 -5
  292. package/dist/dev/handler.js.map +1 -0
  293. package/dist/editor/assets/index-03352ce7.d.ts +2 -0
  294. package/dist/editor/assets/index-03352ce7.d.ts.map +1 -0
  295. package/dist/editor/assets/index-03352ce7.js +9017 -207
  296. package/dist/editor/assets/index-03352ce7.js.map +1 -0
  297. package/dist/editor/handler.d.ts +6 -0
  298. package/dist/editor/handler.d.ts.map +1 -0
  299. package/dist/editor/handler.js +1 -4
  300. package/dist/editor/handler.js.map +1 -0
  301. package/dist/editor/index.html +1 -1
  302. package/dist/editor/server/cors-plugin.d.ts +4 -0
  303. package/dist/editor/server/cors-plugin.d.ts.map +1 -0
  304. package/dist/editor/server/cors-plugin.js +4 -7
  305. package/dist/editor/server/cors-plugin.js.map +1 -0
  306. package/dist/editor/server/server.d.ts +24 -0
  307. package/dist/editor/server/server.d.ts.map +1 -0
  308. package/dist/editor/server/server.js +2 -5
  309. package/dist/editor/server/server.js.map +1 -0
  310. package/dist/editor/server/xfs.d.ts +3 -0
  311. package/dist/editor/server/xfs.d.ts.map +1 -0
  312. package/dist/editor/server/xfs.js +2 -5
  313. package/dist/editor/server/xfs.js.map +1 -0
  314. package/dist/link/handler.d.ts +9 -0
  315. package/dist/link/handler.d.ts.map +1 -0
  316. package/dist/link/handler.js +1 -4
  317. package/dist/link/handler.js.map +1 -0
  318. package/dist/link/populate.d.ts +4 -0
  319. package/dist/link/populate.d.ts.map +1 -0
  320. package/dist/link/populate.js +1 -4
  321. package/dist/link/populate.js.map +1 -0
  322. package/dist/list/handler.d.ts +13 -0
  323. package/dist/list/handler.d.ts.map +1 -0
  324. package/dist/list/handler.js +5 -5
  325. package/dist/list/handler.js.map +1 -0
  326. package/dist/login/handler.d.ts +14 -0
  327. package/dist/login/handler.d.ts.map +1 -0
  328. package/dist/login/handler.js +1 -4
  329. package/dist/login/handler.js.map +1 -0
  330. package/dist/login/server.d.ts +2 -0
  331. package/dist/login/server.d.ts.map +1 -0
  332. package/dist/login/server.js +1 -4
  333. package/dist/login/server.js.map +1 -0
  334. package/dist/project/import-openapi/handler.d.ts +11 -0
  335. package/dist/project/import-openapi/handler.d.ts.map +1 -0
  336. package/dist/project/import-openapi/handler.js +14 -22
  337. package/dist/project/import-openapi/handler.js.map +1 -0
  338. package/dist/project/import-openapi/interfaces.d.ts +45 -0
  339. package/dist/project/import-openapi/interfaces.d.ts.map +1 -0
  340. package/dist/project/import-openapi/interfaces.js +1 -4
  341. package/dist/project/import-openapi/interfaces.js.map +1 -0
  342. package/dist/project/import-openapi/utils.d.ts +13 -0
  343. package/dist/project/import-openapi/utils.d.ts.map +1 -0
  344. package/dist/project/import-openapi/utils.js +1 -4
  345. package/dist/project/import-openapi/utils.js.map +1 -0
  346. package/dist/project/update/handler.d.ts +6 -0
  347. package/dist/project/update/handler.d.ts.map +1 -0
  348. package/dist/project/update/handler.js +1 -4
  349. package/dist/project/update/handler.js.map +1 -0
  350. package/dist/test/esbuild-config.d.ts +4 -0
  351. package/dist/test/esbuild-config.d.ts.map +1 -0
  352. package/dist/test/esbuild-config.js +1 -4
  353. package/dist/test/esbuild-config.js.map +1 -0
  354. package/dist/test/esbuild-plugins/node-test-prep-plugin.d.ts +4 -0
  355. package/dist/test/esbuild-plugins/node-test-prep-plugin.d.ts.map +1 -0
  356. package/dist/test/esbuild-plugins/node-test-prep-plugin.js +1 -4
  357. package/dist/test/esbuild-plugins/node-test-prep-plugin.js.map +1 -0
  358. package/dist/test/handler.d.ts +7 -0
  359. package/dist/test/handler.d.ts.map +1 -0
  360. package/dist/test/handler.js +1 -4
  361. package/dist/test/handler.js.map +1 -0
  362. package/dist/test/invoke-test.d.ts +4 -0
  363. package/dist/test/invoke-test.d.ts.map +1 -0
  364. package/dist/test/invoke-test.js +1 -4
  365. package/dist/test/invoke-test.js.map +1 -0
  366. package/dist/tsconfig.tsbuildinfo +1 -0
  367. package/dist/tunnel/create/handler.d.ts +7 -0
  368. package/dist/tunnel/create/handler.d.ts.map +1 -0
  369. package/dist/tunnel/create/handler.js +1 -4
  370. package/dist/tunnel/create/handler.js.map +1 -0
  371. package/dist/tunnel/delete/handler.d.ts +7 -0
  372. package/dist/tunnel/delete/handler.d.ts.map +1 -0
  373. package/dist/tunnel/delete/handler.js +1 -4
  374. package/dist/tunnel/delete/handler.js.map +1 -0
  375. package/dist/tunnel/delete/poll-teardown-operation.d.ts +8 -0
  376. package/dist/tunnel/delete/poll-teardown-operation.d.ts.map +1 -0
  377. package/dist/tunnel/delete/poll-teardown-operation.js +1 -4
  378. package/dist/tunnel/delete/poll-teardown-operation.js.map +1 -0
  379. package/dist/tunnel/describe/handler.d.ts +7 -0
  380. package/dist/tunnel/describe/handler.d.ts.map +1 -0
  381. package/dist/tunnel/describe/handler.js +1 -4
  382. package/dist/tunnel/describe/handler.js.map +1 -0
  383. package/dist/tunnel/list/handler.d.ts +6 -0
  384. package/dist/tunnel/list/handler.d.ts.map +1 -0
  385. package/dist/tunnel/list/handler.js +1 -4
  386. package/dist/tunnel/list/handler.js.map +1 -0
  387. package/dist/tunnel/models.d.ts +24 -0
  388. package/dist/tunnel/models.d.ts.map +1 -0
  389. package/dist/tunnel/models.js +1 -4
  390. package/dist/tunnel/models.js.map +1 -0
  391. package/dist/tunnel/rotate-token/handler.d.ts +7 -0
  392. package/dist/tunnel/rotate-token/handler.d.ts.map +1 -0
  393. package/dist/tunnel/rotate-token/handler.js +1 -4
  394. package/dist/tunnel/rotate-token/handler.js.map +1 -0
  395. package/dist/tunnel/services/describe/handler.d.ts +7 -0
  396. package/dist/tunnel/services/describe/handler.d.ts.map +1 -0
  397. package/dist/tunnel/services/describe/handler.js +1 -4
  398. package/dist/tunnel/services/describe/handler.js.map +1 -0
  399. package/dist/tunnel/services/update/handler.d.ts +8 -0
  400. package/dist/tunnel/services/update/handler.d.ts.map +1 -0
  401. package/dist/tunnel/services/update/handler.js +1 -4
  402. package/dist/tunnel/services/update/handler.js.map +1 -0
  403. package/dist/tunnel/services/update/poll-provisioning-operations.d.ts +8 -0
  404. package/dist/tunnel/services/update/poll-provisioning-operations.d.ts.map +1 -0
  405. package/dist/tunnel/services/update/poll-provisioning-operations.js +1 -4
  406. package/dist/tunnel/services/update/poll-provisioning-operations.js.map +1 -0
  407. package/dist/variable/create/handler.d.ts +3 -0
  408. package/dist/variable/create/handler.d.ts.map +1 -0
  409. package/dist/variable/create/handler.js +1 -4
  410. package/dist/variable/create/handler.js.map +1 -0
  411. package/dist/variable/models.d.ts +18 -0
  412. package/dist/variable/models.d.ts.map +1 -0
  413. package/dist/variable/models.js +1 -4
  414. package/dist/variable/models.js.map +1 -0
  415. package/dist/variable/update/handler.d.ts +3 -0
  416. package/dist/variable/update/handler.d.ts.map +1 -0
  417. package/dist/variable/update/handler.js +1 -4
  418. package/dist/variable/update/handler.js.map +1 -0
  419. package/package.json +26 -57
  420. package/.tool-versions +0 -1
  421. package/CODEOWNERS +0 -5
  422. package/dist/common/upgraders/tsconfig-upgrader.test.js +0 -30
  423. package/polyfills/async_hooks.js +0 -8
  424. package/polyfills/diagnostics_channel.js +0 -155
@@ -1,5 +1,3 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="920ca05b-f900-53ea-9fad-f5ff80a0c56c")}catch(e){}}();
3
1
  export class ProjectIsNotSet extends Error {
4
2
  constructor() {
5
3
  super(`Missing project name. This command requires a project to be specified. Either specify it using --project or set it in zuplo.jsonc.
@@ -29,5 +27,4 @@ export class ProjectIsSetValidator {
29
27
  }
30
28
  }
31
29
  }
32
- //# sourceMappingURL=project-name-validator.js.map
33
- //# debugId=920ca05b-f900-53ea-9fad-f5ff80a0c56c
30
+ //# sourceMappingURL=project-name-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-name-validator.js","sourceRoot":"","sources":["../../../src/common/validators/project-name-validator.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC;QACE,KAAK,CACH;;;;;;;;;;CAUL,CACI,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;CACF;AAED,MAAM,OAAO,qBAAqB;IAGhC,KAAK,CAAC,QAAQ,CAAC,IAAqC;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,IAAI,eAAe,EAAE;aAC7B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;CACF","sourcesContent":["import { Result, ValidationRule } from \"./lib.js\";\n\nexport class ProjectIsNotSet extends Error {\n constructor() {\n super(\n `Missing project name. This command requires a project to be specified. Either specify it using --project or set it in zuplo.jsonc.\n\nzuplo.jsonc should look like this:\n\n{\n \"version\": 1,\n \"project\": \"<name-of-your-project>\",\n \"compatibilityDate\": \"2023-03-14\"\n}\n \n`\n );\n Object.setPrototypeOf(this, ProjectIsNotSet.prototype);\n }\n}\n\nexport class ProjectIsSetValidator\n implements ValidationRule<{ project: string | undefined }>\n{\n async validate(argv: { project: string | undefined }): Promise<Result> {\n if (!argv.project) {\n return {\n ok: false,\n error: new ProjectIsNotSet(),\n };\n } else {\n return { ok: true };\n }\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export declare const XDG_CONFIG_HOME: string;
2
+ export declare const XDG_DATA_HOME: string;
3
+ export declare const XDG_STATE_HOME: string;
4
+ export declare const ZUPLO_XDG_CONFIG_HOME: string;
5
+ export declare const ZUPLO_XDG_DATA_HOME: string;
6
+ export declare const ZUPLO_XDG_STATE_HOME: string;
7
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../../src/common/xdg/lib.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,eAAe,QAG3B,CAAC;AACF,eAAO,MAAM,aAAa,QAGzB,CAAC;AACF,eAAO,MAAM,cAAc,QAG1B,CAAC;AACF,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAG/B,CAAC;AACF,eAAO,MAAM,oBAAoB,QAGhC,CAAC"}
@@ -1,5 +1,3 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0182567c-2e9c-5ee2-a5cc-2836a3b9d697")}catch(e){}}();
3
1
  import { homedir } from "node:os";
4
2
  import path from "node:path";
5
3
  import { ZUPLO_CLI_XDG_FOLDER_NAME } from "../constants.js";
@@ -17,5 +15,4 @@ export const XDG_STATE_HOME = defineDirectoryWithFallback("XDG_DATA_HOME", ".loc
17
15
  export const ZUPLO_XDG_CONFIG_HOME = path.join(XDG_CONFIG_HOME, ZUPLO_CLI_XDG_FOLDER_NAME);
18
16
  export const ZUPLO_XDG_DATA_HOME = path.join(XDG_DATA_HOME, ZUPLO_CLI_XDG_FOLDER_NAME);
19
17
  export const ZUPLO_XDG_STATE_HOME = path.join(XDG_STATE_HOME, ZUPLO_CLI_XDG_FOLDER_NAME);
20
- //# sourceMappingURL=lib.js.map
21
- //# debugId=0182567c-2e9c-5ee2-a5cc-2836a3b9d697
18
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../src/common/xdg/lib.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,SAAS,2BAA2B,CAAC,OAAe,EAAE,QAAgB;IACpE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAW,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,2BAA2B,CACxD,iBAAiB,EACjB,SAAS,CACV,CAAC;AACF,MAAM,CAAC,MAAM,aAAa,GAAG,2BAA2B,CACtD,eAAe,EACf,cAAc,CACf,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,2BAA2B,CACvD,eAAe,EACf,cAAc,CACf,CAAC;AACF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAC5C,eAAe,EACf,yBAAyB,CAC1B,CAAC;AACF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAC1C,aAAa,EACb,yBAAyB,CAC1B,CAAC;AACF,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAC3C,cAAc,EACd,yBAAyB,CAC1B,CAAC","sourcesContent":["/* eslint-disable node/no-process-env */\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport { ZUPLO_CLI_XDG_FOLDER_NAME } from \"../constants.js\";\n\nfunction defineDirectoryWithFallback(xdgName: string, fallback: string) {\n if (process.env[xdgName]) {\n return process.env[xdgName] as string;\n } else {\n return path.join(homedir(), fallback);\n }\n}\n\nexport const XDG_CONFIG_HOME = defineDirectoryWithFallback(\n \"XDG_CONFIG_HOME\",\n \".config\"\n);\nexport const XDG_DATA_HOME = defineDirectoryWithFallback(\n \"XDG_DATA_HOME\",\n \".local/share\"\n);\nexport const XDG_STATE_HOME = defineDirectoryWithFallback(\n \"XDG_DATA_HOME\",\n \".local/state\"\n);\nexport const ZUPLO_XDG_CONFIG_HOME = path.join(\n XDG_CONFIG_HOME,\n ZUPLO_CLI_XDG_FOLDER_NAME\n);\nexport const ZUPLO_XDG_DATA_HOME = path.join(\n XDG_DATA_HOME,\n ZUPLO_CLI_XDG_FOLDER_NAME\n);\nexport const ZUPLO_XDG_STATE_HOME = path.join(\n XDG_STATE_HOME,\n ZUPLO_CLI_XDG_FOLDER_NAME\n);\n"]}
@@ -0,0 +1,7 @@
1
+ export interface Arguments {
2
+ dir: string;
3
+ port: number;
4
+ "binary-name": string;
5
+ }
6
+ export declare function compile(argv: Arguments): Promise<void>;
7
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/compile/handler.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,SAAS,iBAiE5C"}
@@ -1,10 +1,9 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5c4fd488-f729-519e-94c7-406abc7a3013")}catch(e){}}();
3
1
  import dotenv from "dotenv";
4
2
  import { cpSync, existsSync, readFileSync } from "node:fs";
5
3
  import { join, relative, resolve } from "node:path";
6
4
  import { fileURLToPath, pathToFileURL } from "node:url";
7
5
  import { printDiagnosticsToConsole } from "../common/output.js";
6
+ import { logger } from "../common/logger.js";
8
7
  export async function compile(argv) {
9
8
  const sourceDirectory = resolve(join(relative(process.cwd(), argv.dir)));
10
9
  const zuploRuntimePath = new URL("../../node_modules/@zuplo/runtime", import.meta.url);
@@ -25,7 +24,7 @@ export async function compile(argv) {
25
24
  build_assets_url: pathToFileURL(sourceDirectory),
26
25
  };
27
26
  process.env.__ZUPLO_CONFIG = btoa(JSON.stringify(config));
28
- const core = await import("@zuplo/core");
27
+ const core = await import("@zuplo/core/cli");
29
28
  const zupPort = argv.port;
30
29
  await core.compileWorkerdServer({
31
30
  sourceDirectory,
@@ -39,9 +38,9 @@ export async function compile(argv) {
39
38
  }
40
39
  :
41
40
  undefined,
41
+ logger,
42
42
  });
43
43
  printDiagnosticsToConsole("📦 Compiled a self-contained zup binary");
44
44
  printDiagnosticsToConsole(`The binary is available at ${sourceDirectory}/dist/${argv["binary-name"]}`);
45
45
  }
46
- //# sourceMappingURL=handler.js.map
47
- //# debugId=5c4fd488-f729-519e-94c7-406abc7a3013
46
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/compile/handler.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQ7C,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAe;IAC3C,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAMzE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,mCAAmC,EACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CAAC;IACF,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,MAAM,CACJ,gBAAgB,EAChB,IAAI,CAAC,eAAe,EAAE,6BAA6B,CAAC,EACpD;YACE,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;SAClB,CACF,CAAC;IACJ,CAAC;IAGD,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,aAAa,CAChD,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAC/C,CAAC;IAGF,IAAI,QAAQ,GAA6B,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACzD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;QAC5C,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAGD,MAAM,MAAM,GAAG;QACb,gBAAgB,EAAE,aAAa,CAAC,eAAe,CAAC;KACjD,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAG1D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;IAE1B,MAAM,IAAI,CAAC,oBAAoB,CAAC;QAC9B,eAAe;QACf,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;QAC/B,+BAA+B,EAAE,QAAQ;YACvC,CAAC,CAAC;gBACE,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;gBAC/C,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;gBAC/C,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB;aACxD;YACH,CAAC;gBACC,SAAS;QACb,MAAM;KACP,CAAC,CAAC;IAEH,yBAAyB,CAAC,yCAAyC,CAAC,CAAC;IACrE,yBAAyB,CACvB,8BAA8B,eAAe,SAAS,IAAI,CAAC,aAAa,CAAC,EAAE,CAC5E,CAAC;AACJ,CAAC","sourcesContent":["/* eslint-disable node/no-process-env */\nimport dotenv from \"dotenv\";\nimport { cpSync, existsSync, readFileSync } from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { printDiagnosticsToConsole } from \"../common/output.js\";\nimport { logger } from \"../common/logger.js\";\n\nexport interface Arguments {\n dir: string;\n port: number;\n \"binary-name\": string;\n}\n\nexport async function compile(argv: Arguments) {\n const sourceDirectory = resolve(join(relative(process.cwd(), argv.dir)));\n\n // When we build, we MIGHT need to use the @zuplo/runtime from the node_modules if the user\n // has installed our packages using https://www.npmjs.com/package/zuplo in a global directory\n\n // Try to copy the @zuplo/runtime locally\n const zuploRuntimePath = new URL(\n \"../../node_modules/@zuplo/runtime\",\n import.meta.url\n );\n if (existsSync(zuploRuntimePath)) {\n cpSync(\n zuploRuntimePath,\n join(sourceDirectory, \"node_modules/@zuplo/runtime\"),\n {\n recursive: true,\n dereference: true,\n }\n );\n }\n\n // Set GLOBAL_MODULE_LOCATION to the location of the CLIs node_modules\n process.env.GLOBAL_MODULE_LOCATION = fileURLToPath(\n new URL(\"../../node_modules\", import.meta.url)\n );\n\n // Check if the user has a .env.zuplo file\n let envZuplo: dotenv.DotenvParseOutput = {};\n const envZuploFile = join(sourceDirectory, \".env.zuplo\");\n if (existsSync(envZuploFile)) {\n const contents = readFileSync(envZuploFile);\n envZuplo = dotenv.parse(contents);\n }\n\n // Set other variables using __ZUPLO_CONFIG\n const config = {\n build_assets_url: pathToFileURL(sourceDirectory),\n };\n process.env.__ZUPLO_CONFIG = btoa(JSON.stringify(config));\n\n // Use a dynamic import so that setting process.env has effect\n const core = await import(\"@zuplo/core/cli\");\n\n const zupPort = argv.port;\n\n await core.compileWorkerdServer({\n sourceDirectory,\n port: zupPort,\n binaryName: argv[\"binary-name\"],\n publicZuploEnvironmentVariables: envZuplo\n ? {\n ZUPLO_ACCOUNT_NAME: envZuplo.ZUPLO_ACCOUNT_NAME,\n ZUPLO_PROJECT_NAME: envZuplo.ZUPLO_PROJECT_NAME,\n ZUPLO_ENVIRONMENT_TYPE: envZuplo.ZUPLO_ENVIRONMENT_TYPE,\n }\n : // Leave this as undefined to simulate the old behavior\n undefined,\n logger,\n });\n\n printDiagnosticsToConsole(\"📦 Compiled a self-contained zup binary\");\n printDiagnosticsToConsole(\n `The binary is available at ${sourceDirectory}/dist/${argv[\"binary-name\"]}`\n );\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { RouteConfigFile } from "./routes.generated.js";
2
+ export declare function convertRoutes(routesConfig: RouteConfigFile): {
3
+ openapi: string;
4
+ info: {
5
+ title: string;
6
+ version: string;
7
+ };
8
+ paths: {};
9
+ };
10
+ export declare function convertPolicies(routes: RouteConfigFile): {
11
+ policies: import("./routes.generated.js").PolicyConfigurationFragment[];
12
+ corsPolicies: import("./routes.generated.js").CorsPolicyConfiguration[];
13
+ };
14
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/convert/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,wBAAgB,aAAa,CAAC,YAAY,EAAE,eAAe;;;;;;;EA8D1D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe;;;EAQtD"}
@@ -1,5 +1,3 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2922eb0c-11e6-548e-bbf1-506fe4e64df8")}catch(e){}}();
3
1
  import { join } from "node:path";
4
2
  export function convertRoutes(routesConfig) {
5
3
  const base = generateBaseOpenAPIConfig();
@@ -72,5 +70,4 @@ function fullPath(path, context) {
72
70
  const versionPrefix = context.versions.filter((v) => v.name === path.version)[0].pathPrefix;
73
71
  return join(versionPrefix, path.path);
74
72
  }
75
- //# sourceMappingURL=engine.js.map
76
- //# debugId=2922eb0c-11e6-548e-bbf1-506fe4e64df8
73
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/convert/engine.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { join } from \"node:path\";\nimport { RouteConfigFile } from \"./routes.generated.js\";\n\nexport function convertRoutes(routesConfig: RouteConfigFile) {\n const base = generateBaseOpenAPIConfig();\n const paths = base.paths as any;\n\n routesConfig.routes.forEach((route) => {\n const pathObjectKey = fullPath(route, routesConfig);\n\n let pathObject: any;\n if (!paths[pathObjectKey]) {\n pathObject = {} as any;\n // Default the path to url-pattern\n pathObject[\"x-zuplo-path\"] = {\n pathMode: \"url-pattern\",\n };\n paths[pathObjectKey] = pathObject;\n }\n\n pathObject = paths[pathObjectKey];\n\n const operationKey = route.methods.map((m) => m.toLowerCase()).join(\",\");\n const operation = {} as any;\n\n if (route.excludeFromOpenApi) {\n operation[\"x-internal\"] = true;\n }\n\n operation[\"summary\"] = route.summary;\n operation[\"description\"] = route.description;\n operation[\"operationId\"] = route.operationId;\n\n // Support for openapi types we supported for a short time\n // for a while that some customers are actually using\n const routeWithOpenApi = route as {\n responses?: any;\n parameters?: any;\n tags?: any;\n };\n if (routeWithOpenApi.parameters) {\n operation[\"parameters\"] = routeWithOpenApi.parameters;\n }\n if (routeWithOpenApi.responses) {\n operation[\"responses\"] = routeWithOpenApi.responses;\n }\n if (routeWithOpenApi.tags) {\n operation[\"tags\"] = routeWithOpenApi.tags;\n }\n\n const xZuploRoute = {} as any;\n if (route.corsPolicy) xZuploRoute[\"corsPolicy\"] = route.corsPolicy;\n if (route.custom) xZuploRoute[\"custom\"] = route.custom;\n if (route.policies) xZuploRoute[\"policies\"] = route.policies;\n if (route.key) xZuploRoute[\"key\"] = route.key;\n if (route.label) xZuploRoute[\"label\"] = route.label;\n\n xZuploRoute[\"handler\"] = route.handler;\n\n operation[\"x-zuplo-route\"] = xZuploRoute;\n\n pathObject[operationKey] = operation;\n });\n\n return base;\n}\n\nexport function convertPolicies(routes: RouteConfigFile) {\n const policies = routes.policies;\n const corsPolicies = routes.corsPolicies;\n\n return {\n policies: policies ? [...policies] : [],\n corsPolicies: corsPolicies ? [...corsPolicies] : [],\n };\n}\n\n// Utilities\n////////////\n\nfunction generateBaseOpenAPIConfig() {\n return {\n openapi: \"3.1.0\",\n info: {\n title: \"Converted from config/routes.json\",\n version: \"1.0.0\",\n },\n paths: {},\n };\n}\n\nfunction fullPath(\n path: { path: string; version: string },\n context: RouteConfigFile\n) {\n const versionPrefix = context.versions.filter(\n (v) => v.name === path.version\n )[0].pathPrefix;\n return join(versionPrefix, path.path);\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export interface Arguments {
2
+ dir: string;
3
+ }
4
+ export declare function convert(argv: Arguments): Promise<void>;
5
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/convert/handler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,SAAS,iBAqC5C"}
@@ -1,5 +1,3 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7ee0b975-ed5e-5b29-8cde-a84beac8baad")}catch(e){}}();
3
1
  import { writeFileSync } from "node:fs";
4
2
  import { readFile } from "node:fs/promises";
5
3
  import { join, relative } from "node:path";
@@ -35,5 +33,4 @@ export async function convert(argv) {
35
33
  await printCriticalFailureToConsoleAndExit(err);
36
34
  }
37
35
  }
38
- //# sourceMappingURL=handler.js.map
39
- //# debugId=7ee0b975-ed5e-5b29-8cde-a84beac8baad
36
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/convert/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,oCAAoC,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAO7D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAe;IAC3C,IAAI,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAC9B,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC,CAC7C,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAoB,CAAC;QAGnE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAGtC,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACzE,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACtE,MAAM,EAAE,gBAAgB;SACzB,CAAC,CAAC;QACH,aAAa,CAAC,eAAe,EAAE,gBAAgB,EAAE;YAC/C,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;QAGH,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAGzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QACxE,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACxE,MAAM,EAAE,gBAAgB;SACzB,CAAC,CAAC;QACH,aAAa,CAAC,gBAAgB,EAAE,iBAAiB,EAAE;YACjD,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClB,MAAM,oCAAoC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;AACH,CAAC","sourcesContent":["import { writeFileSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport prettier from \"prettier\";\nimport { logger } from \"../common/logger.js\";\nimport { printCriticalFailureToConsoleAndExit } from \"../common/output.js\";\nimport { convertPolicies, convertRoutes } from \"./engine.js\";\nimport { RouteConfigFile } from \"./routes.generated.js\";\n\nexport interface Arguments {\n dir: string;\n}\n\nexport async function convert(argv: Arguments) {\n try {\n // 1. Read the routes.json\n const dir = argv.dir;\n const normalizedDir = join(relative(process.cwd(), dir));\n const rawRoutes = await readFile(\n join(normalizedDir, \"config\", \"routes.json\")\n );\n const routes = JSON.parse(rawRoutes.toString()) as RouteConfigFile;\n\n // 2. Convert to OpenAPI\n const openApi = convertRoutes(routes);\n\n // 3. Write to routes.oas.json\n const openAPIFilePath = join(normalizedDir, \"config\", \"routes.oas.json\");\n const formattedOpenAPI = await prettier.format(JSON.stringify(openApi), {\n parser: \"json-stringify\",\n });\n writeFileSync(openAPIFilePath, formattedOpenAPI, {\n flag: \"w\",\n });\n\n // 4. Extract policies\n const policies = convertPolicies(routes);\n\n // 5. Write policies\n const policiesFilePath = join(normalizedDir, \"config\", \"policies.json\");\n const formattedPolicies = await prettier.format(JSON.stringify(policies), {\n parser: \"json-stringify\",\n });\n writeFileSync(policiesFilePath, formattedPolicies, {\n flag: \"w\",\n });\n } catch (err) {\n logger.error(err);\n await printCriticalFailureToConsoleAndExit(err);\n }\n}\n"]}
@@ -0,0 +1,69 @@
1
+ export interface RouteConfigFile {
2
+ $schema?: string;
3
+ versions: [VersionData, ...VersionData[]];
4
+ routes: RouteConfigurationFragment[];
5
+ policies?: PolicyConfigurationFragment[];
6
+ corsPolicies?: CorsPolicyConfiguration[];
7
+ requestErrorHandler?: HandlerDefinition;
8
+ }
9
+ export interface VersionData {
10
+ name: string;
11
+ pathPrefix: string;
12
+ info?: Info;
13
+ openApiFile?: string;
14
+ excludeFromOpenApi?: boolean;
15
+ enforceOpenApi?: boolean;
16
+ }
17
+ export interface Info {
18
+ title: string;
19
+ summary?: string;
20
+ description?: string;
21
+ termsOfService?: string;
22
+ version: string;
23
+ [k: string]: unknown;
24
+ }
25
+ export interface RouteConfigurationFragment {
26
+ operationId?: string;
27
+ path: string;
28
+ methods: ("GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH")[];
29
+ label?: string;
30
+ enforceOpenApi?: boolean;
31
+ key?: string;
32
+ handler: HandlerDefinition;
33
+ corsPolicy?: string;
34
+ custom?: unknown;
35
+ version: string;
36
+ policies?: {
37
+ inbound?: string[];
38
+ outbound?: string[];
39
+ };
40
+ summary?: string;
41
+ description?: string;
42
+ excludeFromOpenApi?: boolean;
43
+ tags?: string[];
44
+ }
45
+ export interface HandlerDefinition {
46
+ module: string;
47
+ export: string;
48
+ options?: {
49
+ [k: string]: unknown;
50
+ };
51
+ }
52
+ export interface PolicyConfigurationFragment {
53
+ name: string;
54
+ policyType: string;
55
+ handler: HandlerDefinition;
56
+ options?: {
57
+ [k: string]: unknown;
58
+ };
59
+ }
60
+ export interface CorsPolicyConfiguration {
61
+ name: string;
62
+ allowCredentials?: boolean;
63
+ maxAge?: number;
64
+ allowedOrigins: string[];
65
+ allowedMethods?: ("GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH")[];
66
+ allowedHeaders?: string[];
67
+ exposeHeaders?: string[];
68
+ }
69
+ //# sourceMappingURL=routes.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.generated.d.ts","sourceRoot":"","sources":["../../src/convert/routes.generated.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IAIjB,QAAQ,EAAE,CAAC,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;IAI1C,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,2BAA2B,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACzC,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;CACzC;AACD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,CAAC;IAIZ,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAI7B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AACD,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AACD,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CACL,KAAK,GACL,MAAM,GACN,MAAM,GACN,KAAK,GACL,QAAQ,GACR,SAAS,GACT,SAAS,GACT,OAAO,GACP,OAAO,CACV,EAAE,CAAC;IAIJ,KAAK,CAAC,EAAE,MAAM,CAAC;IAIf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AACD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KACtB,CAAC;CACH;AACD,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE;QACR,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KACtB,CAAC;CACH;AACD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,CACb,KAAK,GACL,MAAM,GACN,MAAM,GACN,KAAK,GACL,QAAQ,GACR,SAAS,GACT,SAAS,GACT,OAAO,GACP,OAAO,CACV,EAAE,CAAC;IACJ,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B"}
@@ -1,5 +1,2 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="08f01bb2-9972-5856-87c5-86eced9af7f2")}catch(e){}}();
3
1
  export {};
4
- //# sourceMappingURL=routes.generated.js.map
5
- //# debugId=08f01bb2-9972-5856-87c5-86eced9af7f2
2
+ //# sourceMappingURL=routes.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.generated.js","sourceRoot":"","sources":["../../src/convert/routes.generated.ts"],"names":[],"mappings":"","sourcesContent":["/* tslint:disable */\n/**\n * This file was automatically generated by json-schema-to-typescript.\n * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n * and run json-schema-to-typescript to regenerate this file.\n */\n\nexport interface RouteConfigFile {\n $schema?: string;\n /**\n * @minItems 1\n */\n versions: [VersionData, ...VersionData[]];\n /**\n * @minItems 0\n */\n routes: RouteConfigurationFragment[];\n policies?: PolicyConfigurationFragment[];\n corsPolicies?: CorsPolicyConfiguration[];\n requestErrorHandler?: HandlerDefinition;\n}\nexport interface VersionData {\n name: string;\n pathPrefix: string;\n info?: Info;\n /**\n * The project relative path to the OpenAPI spec.\n */\n openApiFile?: string;\n /**\n * If false, OpenAPI documentation will not be generated for this version. If openApiFile is set this setting is ignored.\n */\n excludeFromOpenApi?: boolean;\n /**\n * If true, schema validation found in the OpenAPI spec will be enforced on requests/responses.\n */\n enforceOpenApi?: boolean;\n}\nexport interface Info {\n title: string;\n summary?: string;\n description?: string;\n termsOfService?: string;\n version: string;\n [k: string]: unknown;\n}\nexport interface RouteConfigurationFragment {\n operationId?: string;\n path: string;\n methods: (\n | \"GET\"\n | \"HEAD\"\n | \"POST\"\n | \"PUT\"\n | \"DELETE\"\n | \"CONNECT\"\n | \"OPTIONS\"\n | \"TRACE\"\n | \"PATCH\"\n )[];\n /**\n * An internal user-friendly identifier of the route.\n */\n label?: string;\n /**\n * If true, schema validation found in the OpenAPI spec will be enforced on requests/responses.\n */\n enforceOpenApi?: boolean;\n key?: string;\n handler: HandlerDefinition;\n corsPolicy?: string;\n custom?: unknown;\n version: string;\n policies?: {\n inbound?: string[];\n outbound?: string[];\n };\n summary?: string;\n description?: string;\n excludeFromOpenApi?: boolean;\n tags?: string[];\n}\nexport interface HandlerDefinition {\n module: string;\n export: string;\n options?: {\n [k: string]: unknown;\n };\n}\nexport interface PolicyConfigurationFragment {\n name: string;\n policyType: string;\n handler: HandlerDefinition;\n options?: {\n [k: string]: unknown;\n };\n}\nexport interface CorsPolicyConfiguration {\n name: string;\n allowCredentials?: boolean;\n maxAge?: number;\n allowedOrigins: string[];\n allowedMethods?: (\n | \"GET\"\n | \"HEAD\"\n | \"POST\"\n | \"PUT\"\n | \"DELETE\"\n | \"CONNECT\"\n | \"OPTIONS\"\n | \"TRACE\"\n | \"PATCH\"\n )[];\n allowedHeaders?: string[];\n exposeHeaders?: string[];\n}\n"]}
@@ -0,0 +1,10 @@
1
+ export interface Arguments {
2
+ account: string;
3
+ project: string;
4
+ url: string;
5
+ "api-key": string;
6
+ wait: boolean;
7
+ "self-hosted-endpoint"?: string;
8
+ }
9
+ export declare function deleteZup(argv: Arguments): Promise<void>;
10
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/delete/handler.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAKD,wBAAsB,SAAS,CAAC,IAAI,EAAE,SAAS,iBAO9C"}
@@ -1,6 +1,4 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="644ba9e3-7f97-54dc-9902-564b509428ec")}catch(e){}}();
3
- import { normalize } from "path";
1
+ import { normalize } from "node:path";
4
2
  import { logger } from "../common/logger.js";
5
3
  import { printCriticalFailureToConsoleAndExit, printResultToConsoleAndExitGracefully, } from "../common/output.js";
6
4
  import settings from "../common/settings.js";
@@ -98,5 +96,4 @@ async function checkUrl(argv, deploymentName) {
98
96
  deploymentName = parsedUrl.hostname.split(".")[0];
99
97
  return deploymentName;
100
98
  }
101
- //# sourceMappingURL=handler.js.map
102
- //# debugId=644ba9e3-7f97-54dc-9902-564b509428ec
99
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +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 printResultToConsoleAndExitGracefully,\n} from \"../common/output.js\";\nimport settings from \"../common/settings.js\";\nimport { RequiredProperties } from \"../common/utils/types.js\";\nimport { pingDeployment } from \"./poll-deployment.js\";\n\nexport interface Arguments {\n account: string;\n project: string;\n url: string;\n \"api-key\": string;\n wait: boolean;\n \"self-hosted-endpoint\"?: string;\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 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 deleteFromSaas(argv: Arguments) {\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 Authorization: `Bearer ${argv[\"api-key\"]}`,\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 // 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 Authorization: `Bearer ${argv[\"api-key\"]}`,\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 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"]}
@@ -0,0 +1,3 @@
1
+ import { Arguments } from "./handler.js";
2
+ export declare function pingDeployment(argv: Arguments): Promise<boolean>;
3
+ //# sourceMappingURL=poll-deployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll-deployment.d.ts","sourceRoot":"","sources":["../../src/delete/poll-deployment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,wBAAsB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBtE"}
@@ -1,5 +1,3 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="99f1631f-399b-5928-90d8-f3f7d8bcd45a")}catch(e){}}();
3
1
  import { printDiagnosticsToConsole } from "../common/output.js";
4
2
  import settings from "../common/settings.js";
5
3
  function wait(duration = settings.POLL_INTERVAL) {
@@ -19,5 +17,4 @@ export async function pingDeployment(argv) {
19
17
  }
20
18
  return false;
21
19
  }
22
- //# sourceMappingURL=poll-deployment.js.map
23
- //# debugId=99f1631f-399b-5928-90d8-f3f7d8bcd45a
20
+ //# sourceMappingURL=poll-deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll-deployment.js","sourceRoot":"","sources":["../../src/delete/poll-deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAG7C,SAAS,IAAI,CAAC,WAAmB,QAAQ,CAAC,aAAa;IACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAe;IAClD,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,gBAAgB,EAAE,SAAS,EAAE,EAAE,CAAC;QAC3E,yBAAyB,CACvB,qCAAqC,SAAS,IAAI,QAAQ,CAAC,gBAAgB,GAAG,CAC/E,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAEjB,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,EAAE,CAAC;YACb,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { printDiagnosticsToConsole } 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 pingDeployment(argv: Arguments): Promise<boolean> {\n for (let pollRetry = 0; pollRetry < settings.MAX_POLL_RETRIES; pollRetry++) {\n printDiagnosticsToConsole(\n `Waiting for zup to be deleted... (${pollRetry}/${settings.MAX_POLL_RETRIES})`\n );\n const response = await fetch(`${argv.url}/__zuplo/build`);\n if (!response.ok) {\n // That means that we no longer have a 2xx response from the zup\n return true;\n } else {\n await wait();\n continue;\n }\n }\n\n return false;\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import { Arguments } from "./handler.js";
2
+ export declare const ARCHIVE_EXTENSION = ".tar.gz";
3
+ export declare function archive(argv: Arguments): Promise<{
4
+ tarball: string;
5
+ metadata: {
6
+ branch: string;
7
+ repoUrl: string;
8
+ sha: string;
9
+ verifyRemote: boolean;
10
+ };
11
+ }>;
12
+ export declare function createIgnoreFunction(normalizedDir: string): any;
13
+ export declare function generateMetadata(argv: Arguments): Promise<{
14
+ branch: string;
15
+ repoUrl: string;
16
+ sha: string;
17
+ verifyRemote: boolean;
18
+ }>;
19
+ //# sourceMappingURL=archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/deploy/archive.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAS3C,wBAAsB,OAAO,CAAC,IAAI,EAAE,SAAS;;;;;;;;GA6D5C;AAID,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,OA2BzD;AAeD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,SAAS;;;;;GAuDrD"}
@@ -1,5 +1,3 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ab3f5b7b-161d-51d0-839f-49bce40034b1")}catch(e){}}();
3
1
  import ignore from "ignore";
4
2
  import { minimatch } from "minimatch";
5
3
  import { randomBytes } from "node:crypto";
@@ -57,7 +55,7 @@ export async function archive(argv) {
57
55
  metadata,
58
56
  };
59
57
  }
60
- function createIgnoreFunction(normalizedDir) {
58
+ export function createIgnoreFunction(normalizedDir) {
61
59
  const baseIgnore = ignore().add(".git/");
62
60
  if (existsSync(`${normalizedDir}/.zupignore`)) {
63
61
  const zupignorePath = `${normalizedDir}/.zupignore`;
@@ -67,7 +65,9 @@ function createIgnoreFunction(normalizedDir) {
67
65
  else if (existsSync(`${normalizedDir}/.gitignore`)) {
68
66
  const gitignorePath = `${normalizedDir}/.gitignore`;
69
67
  logger.debug(`Using ${gitignorePath} to filter out files`);
70
- return baseIgnore.add(readFileSync(gitignorePath).toString());
68
+ const gitIgnoreContent = readFileSync(gitignorePath).toString();
69
+ const gitIgnoreContentDotZuploRemoved = gitIgnoreContent.replace(/\.zuplo[/]/, "");
70
+ return baseIgnore.add(gitIgnoreContentDotZuploRemoved);
71
71
  }
72
72
  else {
73
73
  logger.debug("Didn't find a .gitignore or .zupignore file. Defaulting to ignoring .git and node_modules.");
@@ -80,7 +80,7 @@ async function prepareDeployerMetadata(argv) {
80
80
  await writeGeneratedMetadata(dir, metadata);
81
81
  return metadata;
82
82
  }
83
- async function generateMetadata(argv) {
83
+ export async function generateMetadata(argv) {
84
84
  const dir = argv.dir;
85
85
  const git = simpleGit({ baseDir: dir });
86
86
  let branch;
@@ -112,7 +112,9 @@ async function generateMetadata(argv) {
112
112
  }
113
113
  }
114
114
  const sha = (await git.revparse(["HEAD"])).trim();
115
- const repoUrl = (await git.listRemote(["--get-url"])).trim();
115
+ const repoUrl = argv["override-repo-url"]
116
+ ? argv["override-repo-url"]
117
+ : (await git.listRemote(["--get-url"])).trim();
116
118
  const verifyRemote = argv["verify-remote"];
117
119
  return {
118
120
  branch,
@@ -136,5 +138,4 @@ async function writeGeneratedMetadata(dir, metadata) {
136
138
  flag: "w",
137
139
  });
138
140
  }
139
- //# sourceMappingURL=archive.js.map
140
- //# debugId=ab3f5b7b-161d-51d0-839f-49bce40034b1
141
+ //# sourceMappingURL=archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/deploy/archive.ts"],"names":[],"mappings":"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","sourcesContent":["import ignore from \"ignore\";\nimport { minimatch } from \"minimatch\";\nimport { randomBytes } from \"node:crypto\";\nimport {\n existsSync,\n mkdirSync,\n readFileSync,\n Stats,\n writeFileSync,\n} from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join, relative, sep } from \"node:path\";\nimport { simpleGit } from \"simple-git\";\nimport * as tar from \"tar\";\nimport { DEPLOYER_METADATA_FILE } from \"../common/constants.js\";\nimport { logger } from \"../common/logger.js\";\nimport { Arguments } from \"./handler.js\";\n\nexport const ARCHIVE_EXTENSION = \".tar.gz\";\n\nfunction createTempFileWithSuffix(suffix = ARCHIVE_EXTENSION) {\n const tempDir = tmpdir();\n const randomName = randomBytes(16).toString(\"hex\");\n const tempFilePath = join(tempDir, `${randomName}${suffix}`);\n return tempFilePath;\n}\n\nexport async function archive(argv: Arguments) {\n const tarball = createTempFileWithSuffix();\n const dir = argv.dir;\n const ignoreFn = createIgnoreFunction(dir);\n const normalizedDir = join(relative(process.cwd(), dir));\n\n const metadata = await prepareDeployerMetadata(argv);\n\n await tar.create(\n {\n gzip: true,\n file: tarball,\n filter: (path, stat) => {\n const stats = stat as unknown as Stats;\n const normalizedPath = stats.isDirectory()\n ? join(relative(process.cwd(), path), sep) // add / to help the ignore module determine that this is a folder\n : join(relative(process.cwd(), path));\n\n // special case to allow for processing of the root by tar (./)\n if (minimatch(normalizedPath, \"/\", { windowsPathsNoEscape: true })) {\n return true;\n }\n\n if (\n minimatch(normalizedPath, \".zuplo/\", { windowsPathsNoEscape: true })\n ) {\n // Need to return true to allow this to process the entries of the directory\n return true;\n }\n\n if (\n minimatch(normalizedPath, `.zuplo/${DEPLOYER_METADATA_FILE}`, {\n windowsPathsNoEscape: true,\n })\n ) {\n // Now on the second round when it enters the .zuplo folder, we specifically look for this file\n return true;\n }\n\n // We special case the .env files to allow for the self-hosted endpoint to be passed in\n if (normalizedPath === \".env\" || normalizedPath === \".env.zuplo\") {\n if (argv[\"self-hosted-endpoint\"]) {\n return true;\n }\n }\n\n const result = ignoreFn.ignores(normalizedPath);\n logger.trace(`${normalizedPath} ignored: ${result}`);\n\n // The way `tar` interprets true|false is \"opposite\" from ignore\n // When ignore returns true, it means that the .ignore file doesn't want it.\n // When tar return true, it means that we want it.\n return !result;\n },\n },\n [normalizedDir]\n );\n return {\n tarball,\n metadata,\n };\n}\n\n// Note that we do not recursively create an ignore function for each dir\n// We only create one for the top-level of the directory\nexport function createIgnoreFunction(normalizedDir: string) {\n // Most ignore files forget to ignore the .git directory\n\n // Need to do this conversion because of some weird confusion with the d.ts for ignore package in esm\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const baseIgnore = (ignore as any)().add(\".git/\");\n\n if (existsSync(`${normalizedDir}/.zupignore`)) {\n const zupignorePath = `${normalizedDir}/.zupignore`;\n logger.debug(`Using ${zupignorePath} to filter out files`);\n return baseIgnore.add(readFileSync(zupignorePath).toString());\n } else if (existsSync(`${normalizedDir}/.gitignore`)) {\n const gitignorePath = `${normalizedDir}/.gitignore`;\n logger.debug(`Using ${gitignorePath} to filter out files`);\n const gitIgnoreContent = readFileSync(gitignorePath).toString();\n // @NOTE - we should always include the .zuplo folder\n const gitIgnoreContentDotZuploRemoved = gitIgnoreContent.replace(\n /\\.zuplo[/]/,\n \"\"\n );\n return baseIgnore.add(gitIgnoreContentDotZuploRemoved);\n } else {\n logger.debug(\n \"Didn't find a .gitignore or .zupignore file. Defaulting to ignoring .git and node_modules.\"\n );\n return baseIgnore.add(\"node_modules/\");\n }\n}\n\ninterface DeployerMetadata {\n branch: string;\n repoUrl: string;\n sha: string;\n}\n\nasync function prepareDeployerMetadata(argv: Arguments) {\n const dir = argv.dir;\n const metadata = await generateMetadata(argv);\n await writeGeneratedMetadata(dir, metadata);\n return metadata;\n}\n\nexport async function generateMetadata(argv: Arguments) {\n const dir = argv.dir;\n const git = simpleGit({ baseDir: dir });\n\n let branch: string;\n if (argv.environment) {\n branch = argv.environment;\n } else {\n // Get the current branch from Git\n const status = await git.status();\n if (!status.current) {\n throw new Error(\"Invalid state: Directory is in detached head state.\");\n }\n branch = status.current.trim();\n\n // @NOTE - gitlab returns HEAD as the current branch when running git.status()\n // https://forum.gitlab.com/t/why-i-cant-get-the-branch-name/72462/6\n if (branch === \"HEAD\") {\n // Fetch remote branches to ensure the latest information\n await git.fetch([\"--all\"]);\n\n const branchCommit = await git.branch([\"-a\"]);\n const brancheRef = await git.branch([\n \"-r\",\n \"--contains\",\n branchCommit.current,\n ]);\n if (brancheRef && brancheRef.all && brancheRef.all[0]) {\n const originBranch = brancheRef.all[0];\n const cleanOriginBranch = originBranch.replace(/^origin\\//, \"\");\n if (!cleanOriginBranch) {\n throw new Error(\n \"Invalid state: Directory is in detached head state.\"\n );\n }\n branch = cleanOriginBranch.trim();\n }\n }\n }\n\n // Get the current sha\n const sha = (await git.revparse([\"HEAD\"])).trim();\n\n const repoUrl = argv[\"override-repo-url\"]\n ? argv[\"override-repo-url\"]\n : (await git.listRemote([\"--get-url\"])).trim();\n\n const verifyRemote = argv[\"verify-remote\"];\n\n return {\n branch,\n repoUrl,\n sha,\n verifyRemote,\n };\n}\n\nasync function writeGeneratedMetadata(dir: string, metadata: DeployerMetadata) {\n try {\n mkdirSync(`${dir}/.zuplo`);\n } catch (err) {\n if (err.code === \"EEXIST\") {\n // this is fine, which means that we don't create it and move on\n } else {\n throw err;\n }\n }\n await writeFileSync(\n `${dir}/.zuplo/${DEPLOYER_METADATA_FILE}`,\n JSON.stringify(metadata, null, 2),\n {\n flag: \"w\",\n }\n );\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function upload(tarballPath: string, url: string): Promise<Response>;
2
+ //# sourceMappingURL=file-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-upload.d.ts","sourceRoot":"","sources":["../../src/deploy/file-upload.ts"],"names":[],"mappings":"AAEA,wBAAsB,MAAM,CAC1B,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,QAAQ,CAAC,CAanB"}
@@ -1,5 +1,3 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="276fdbdc-f00d-56c1-9119-77780a0328cc")}catch(e){}}();
3
1
  import { readFileSync, statSync } from "node:fs";
4
2
  export async function upload(tarballPath, url) {
5
3
  const stats = statSync(tarballPath);
@@ -13,5 +11,4 @@ export async function upload(tarballPath, url) {
13
11
  body: bufferContent,
14
12
  });
15
13
  }
16
- //# sourceMappingURL=file-upload.js.map
17
- //# debugId=276fdbdc-f00d-56c1-9119-77780a0328cc
14
+ //# sourceMappingURL=file-upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-upload.js","sourceRoot":"","sources":["../../src/deploy/file-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,WAAmB,EACnB,GAAW;IAEX,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC;IAEnC,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAEhD,OAAO,KAAK,CAAC,GAAG,EAAE;QAChB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,gBAAgB,EAAE,eAAe,CAAC,QAAQ,EAAE;SAC7C;QACD,IAAI,EAAE,aAAa;KACpB,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { readFileSync, statSync } from \"node:fs\";\n\nexport async function upload(\n tarballPath: string,\n url: string\n): Promise<Response> {\n const stats = statSync(tarballPath);\n const fileSizeInBytes = stats.size;\n\n const bufferContent = readFileSync(tarballPath);\n\n return fetch(url, {\n method: \"PUT\",\n headers: {\n \"Content-length\": fileSizeInBytes.toString(),\n },\n body: bufferContent,\n });\n}\n"]}
@@ -0,0 +1,13 @@
1
+ export interface Arguments {
2
+ account: string;
3
+ project: string;
4
+ dir: string;
5
+ environment?: string;
6
+ "api-key": string;
7
+ "verify-remote": boolean;
8
+ "self-hosted-endpoint"?: string;
9
+ "override-repo-url"?: string;
10
+ }
11
+ export declare function deploy(argv: Arguments): Promise<void>;
12
+ export declare const getPrettyBranch: (branch: string) => string;
13
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/deploy/handler.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAID,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,iBAO3C;AA2JD,eAAO,MAAM,eAAe,WAAY,MAAM,KAAG,MAahD,CAAC"}
@@ -1,5 +1,3 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="fe162c2d-58d1-5c9a-908d-f03546eabbc5")}catch(e){}}();
3
1
  import { readFileSync } from "node:fs";
4
2
  import { parse } from "node:path";
5
3
  import { MAX_PRETTY_BRANCH_NAME as MAX_PRETTY_BRANCH_LENGTH } from "../common/constants.js";
@@ -116,5 +114,4 @@ export const getPrettyBranch = (branch) => {
116
114
  .toLowerCase()
117
115
  .substring(0, MAX_PRETTY_BRANCH_LENGTH));
118
116
  };
119
- //# sourceMappingURL=handler.js.map
120
- //# debugId=fe162c2d-58d1-5c9a-908d-f03546eabbc5
117
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/deploy/handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { parse } from \"node:path\";\nimport { MAX_PRETTY_BRANCH_NAME as MAX_PRETTY_BRANCH_LENGTH } from \"../common/constants.js\";\nimport { logger } from \"../common/logger.js\";\nimport {\n printCriticalFailureToConsoleAndExit,\n printDiagnosticsToConsole,\n printResultToConsoleAndExitGracefully,\n} from \"../common/output.js\";\nimport settings from \"../common/settings.js\";\nimport { RequiredProperties } from \"../common/utils/types.js\";\nimport { normalizeUrl } from \"../common/utils/urls.js\";\nimport { ARCHIVE_EXTENSION, archive } from \"./archive.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 \"api-key\": string;\n \"verify-remote\": boolean;\n \"self-hosted-endpoint\"?: string;\n \"override-repo-url\"?: string;\n}\n\ntype SelfHostedArgs = RequiredProperties<Arguments, \"self-hosted-endpoint\">;\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\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}`);\n\n // 2. Build uploadUrl request\n const { account, project } = argv;\n const uploadUrlResponse = await fetch(\n `${settings.ZUPLO_DEVELOPER_API_ENDPOINT}/v1/deployments/sources`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n body: JSON.stringify({\n accountName: account,\n projectName: project,\n branchName: archiveMetadata.metadata.branch,\n }),\n }\n );\n\n if (uploadUrlResponse.ok) {\n // 3. Upload to request URL\n const { uploadUrl } = await uploadUrlResponse.json();\n const uploadResponse = await upload(archiveMetadata.tarball, uploadUrl);\n\n if (uploadResponse.ok) {\n printDiagnosticsToConsole(\n `Deploying the current branch ${archiveMetadata.metadata.branch} to project ${project} on account ${account}...`\n );\n\n // 5. Poll for status\n const fileId = parse(new URL(uploadUrl).pathname).base.replace(\n ARCHIVE_EXTENSION,\n \"\"\n );\n const { url, steps, buildResult } = await pollDeployment(\n argv,\n fileId,\n account,\n project\n );\n if (url) {\n await printResultToConsoleAndExitGracefully(`Deployed to ${url}`);\n } else {\n const diagnostics = buildResult ?? steps;\n await printCriticalFailureToConsoleAndExit(\n `Failed to deploy the current branch ${\n archiveMetadata.metadata.branch\n } to project ${project} on account ${account}. Here's the diagnostics: ${JSON.stringify(\n diagnostics,\n null,\n 2\n )}`\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 source to cloud storage. Try again later.\"\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 determine where to upload your files. Try again later.\"\n );\n }\n}\n\nasync function deployToSelfHosted(argv: SelfHostedArgs) {\n // 0. Finagle the URL first\n const endpoint = normalizeUrl(argv[\"self-hosted-endpoint\"]);\n\n // 1. Create the tarball locally\n const archiveMetadata = await archive(argv);\n logger.debug(`Tarball created locally at ${archiveMetadata}`);\n\n // 2. Build uploadUrl request\n const { project } = argv;\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\n const uploadUrlResponse = await fetch(`${endpoint}/v1/deployments/build`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n body: form,\n });\n\n if (uploadUrlResponse.ok) {\n // 3. Poll for build\n const { buildName } = await uploadUrlResponse.json();\n const buildResult = await pollBuild(argv, endpoint, buildName);\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 Authorization: `Bearer ${argv[\"api-key\"]}`,\n },\n }\n );\n const deploymentJSON: { deploymentUrl: string } =\n await deploymentResponse.json();\n await printResultToConsoleAndExitGracefully(\n `Deployed to ${deploymentJSON.deploymentUrl}`\n );\n } else {\n await printCriticalFailureToConsoleAndExit(\n `Failed to deploy the current environment. Here's the diagnostics: ${JSON.stringify(\n buildResult\n )}`\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}\n\nexport const getPrettyBranch = (branch: string): string => {\n // https://ricardometring.com/javascript-replace-special-characters\n return (\n branch\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\") // Remove accents\n .replace(/([^\\w]+|\\s+)/g, \"-\") // Replace space and other characters by hyphen\n // eslint-disable-next-line no-useless-escape\n .replace(/\\-\\-+/g, \"-\") // Replaces multiple hyphens by one hyphen\n .replace(/(^-+|-+$)/, \"\") // Remove extra hyphens from beginning or end of the string\n .toLowerCase()\n .substring(0, MAX_PRETTY_BRANCH_LENGTH)\n );\n};\n"]}
@@ -0,0 +1,13 @@
1
+ import { Arguments } from "./handler.js";
2
+ export declare function pollDeployment(argv: Arguments, fileId: string, account: string, project: string): Promise<{
3
+ url?: string;
4
+ steps?: object;
5
+ buildResult?: object;
6
+ }>;
7
+ export declare function pollBuild(argv: Arguments, endpoint: string, buildName: string): Promise<{
8
+ conditionType?: string;
9
+ status?: string;
10
+ reason?: string;
11
+ message?: string;
12
+ }>;
13
+ //# sourceMappingURL=poll-deployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll-deployment.d.ts","sourceRoot":"","sources":["../../src/deploy/poll-deployment.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,wBAAsB,cAAc,CAClC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAsEjE;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IACT,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAyDD"}
@@ -1,5 +1,3 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ec7f237c-120f-50d6-88bf-a372ec1074b0")}catch(e){}}();
3
1
  import { logger } from "../common/logger.js";
4
2
  import { printCriticalFailureToConsoleAndExit, printDiagnosticsToConsole, textOrJson, } from "../common/output.js";
5
3
  import settings from "../common/settings.js";
@@ -107,5 +105,4 @@ export async function pollBuild(argv, endpoint, buildName) {
107
105
  }
108
106
  return {};
109
107
  }
110
- //# sourceMappingURL=poll-deployment.js.map
111
- //# debugId=ec7f237c-120f-50d6-88bf-a372ec1074b0
108
+ //# sourceMappingURL=poll-deployment.js.map