@zuplo/cli 7.10.0 → 7.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/dist/common/worker-output.d.ts +7 -0
  2. package/dist/common/worker-output.d.ts.map +1 -1
  3. package/dist/common/worker-output.js +39 -0
  4. package/dist/common/worker-output.js.map +1 -1
  5. package/dist/tsconfig.tsbuildinfo +1 -1
  6. package/node_modules/@hono/node-server/README.md +2 -0
  7. package/node_modules/@hono/node-server/dist/index.cjs +1 -1
  8. package/node_modules/@hono/node-server/dist/index.mjs +1 -1
  9. package/node_modules/@hono/node-server/dist/serve-static.cjs +2 -1
  10. package/node_modules/@hono/node-server/dist/serve-static.mjs +2 -1
  11. package/node_modules/@hono/node-server/package.json +1 -1
  12. package/node_modules/@posthog/core/dist/metrics/index.d.ts +9 -0
  13. package/node_modules/@posthog/core/dist/metrics/index.d.ts.map +1 -1
  14. package/node_modules/@posthog/core/dist/metrics/index.js +38 -3
  15. package/node_modules/@posthog/core/dist/metrics/index.mjs +38 -3
  16. package/node_modules/@posthog/core/dist/metrics/types.d.ts +7 -2
  17. package/node_modules/@posthog/core/dist/metrics/types.d.ts.map +1 -1
  18. package/node_modules/@posthog/core/dist/traces/ids.d.ts.map +1 -1
  19. package/node_modules/@posthog/core/dist/traces/ids.js +2 -2
  20. package/node_modules/@posthog/core/dist/traces/ids.mjs +2 -2
  21. package/node_modules/@posthog/core/dist/types.d.ts +1 -1
  22. package/node_modules/@posthog/core/dist/types.d.ts.map +1 -1
  23. package/node_modules/@posthog/core/package.json +4 -3
  24. package/node_modules/@posthog/core/src/metrics/index.spec.ts +75 -0
  25. package/node_modules/@posthog/core/src/metrics/index.ts +60 -0
  26. package/node_modules/@posthog/core/src/metrics/types.ts +7 -1
  27. package/node_modules/@posthog/core/src/traces/ids.ts +4 -2
  28. package/node_modules/@posthog/core/src/types.ts +1 -1
  29. package/node_modules/@posthog/types/dist/capture-metric.d.ts +10 -0
  30. package/node_modules/@posthog/types/dist/capture-metric.d.ts.map +1 -1
  31. package/node_modules/@posthog/types/dist/capture.d.ts +1 -1
  32. package/node_modules/@posthog/types/dist/capture.d.ts.map +1 -1
  33. package/node_modules/@posthog/types/dist/index.d.ts +1 -1
  34. package/node_modules/@posthog/types/dist/index.d.ts.map +1 -1
  35. package/node_modules/@posthog/types/package.json +1 -1
  36. package/node_modules/@posthog/types/src/capture-metric.ts +11 -0
  37. package/node_modules/@posthog/types/src/capture.ts +1 -1
  38. package/node_modules/@posthog/types/src/index.ts +1 -0
  39. package/node_modules/@zuplo/core/customer.cli.minified.js +272 -261
  40. package/node_modules/@zuplo/core/index.minified.js +276 -265
  41. package/node_modules/@zuplo/core/package.json +1 -1
  42. package/node_modules/@zuplo/graphql/package.json +1 -1
  43. package/node_modules/@zuplo/openapi-tools/package.json +5 -2
  44. package/node_modules/@zuplo/otel/package.json +1 -1
  45. package/node_modules/@zuplo/runtime/out/esm/{chunk-YJ2BHVUH.js → chunk-CDEAY3VY.js} +2 -2
  46. package/node_modules/@zuplo/runtime/out/esm/chunk-LVSZ3WTO.js +37 -0
  47. package/node_modules/@zuplo/runtime/out/esm/chunk-LVSZ3WTO.js.map +1 -0
  48. package/node_modules/@zuplo/runtime/out/esm/{chunk-VTO3F6DK.js → chunk-NUVXDVLJ.js} +2 -2
  49. package/node_modules/@zuplo/runtime/out/esm/{chunk-6YPRGG62.js → chunk-RHU3Z7DA.js} +108 -108
  50. package/node_modules/@zuplo/runtime/out/esm/chunk-RHU3Z7DA.js.map +1 -0
  51. package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
  52. package/node_modules/@zuplo/runtime/out/esm/internal/index.js +1 -1
  53. package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
  54. package/node_modules/@zuplo/runtime/out/esm/mocks/index.js +1 -1
  55. package/node_modules/@zuplo/runtime/out/esm/sdks/aws/index.js +1 -1
  56. package/node_modules/@zuplo/runtime/out/types/index.d.ts +15 -24
  57. package/node_modules/@zuplo/runtime/out/types/internal/index.d.ts +14 -0
  58. package/node_modules/@zuplo/runtime/package.json +1 -1
  59. package/package.json +15 -12
  60. package/dist/__tests__/archive-utils.test.d.ts +0 -2
  61. package/dist/__tests__/archive-utils.test.d.ts.map +0 -1
  62. package/dist/__tests__/archive-utils.test.js +0 -50
  63. package/dist/__tests__/archive-utils.test.js.map +0 -1
  64. package/dist/__tests__/import-openapi.test.d.ts +0 -2
  65. package/dist/__tests__/import-openapi.test.d.ts.map +0 -1
  66. package/dist/__tests__/import-openapi.test.js +0 -251
  67. package/dist/__tests__/import-openapi.test.js.map +0 -1
  68. package/dist/__tests__/integration/confirm-linked-config.integration.test.d.ts +0 -2
  69. package/dist/__tests__/integration/confirm-linked-config.integration.test.d.ts.map +0 -1
  70. package/dist/__tests__/integration/confirm-linked-config.integration.test.js +0 -202
  71. package/dist/__tests__/integration/confirm-linked-config.integration.test.js.map +0 -1
  72. package/dist/__tests__/integration/confirm-production-deploy.integration.test.d.ts +0 -2
  73. package/dist/__tests__/integration/confirm-production-deploy.integration.test.d.ts.map +0 -1
  74. package/dist/__tests__/integration/confirm-production-deploy.integration.test.js +0 -184
  75. package/dist/__tests__/integration/confirm-production-deploy.integration.test.js.map +0 -1
  76. package/dist/__tests__/integration/custom-domain.integration.test.d.ts +0 -2
  77. package/dist/__tests__/integration/custom-domain.integration.test.d.ts.map +0 -1
  78. package/dist/__tests__/integration/custom-domain.integration.test.js +0 -563
  79. package/dist/__tests__/integration/custom-domain.integration.test.js.map +0 -1
  80. package/dist/__tests__/integration/delete.integration.test.d.ts +0 -2
  81. package/dist/__tests__/integration/delete.integration.test.d.ts.map +0 -1
  82. package/dist/__tests__/integration/delete.integration.test.js +0 -262
  83. package/dist/__tests__/integration/delete.integration.test.js.map +0 -1
  84. package/dist/__tests__/integration/deploy.integration.test.d.ts +0 -2
  85. package/dist/__tests__/integration/deploy.integration.test.d.ts.map +0 -1
  86. package/dist/__tests__/integration/deploy.integration.test.js +0 -519
  87. package/dist/__tests__/integration/deploy.integration.test.js.map +0 -1
  88. package/dist/__tests__/integration/get-project-param.integration.test.d.ts +0 -2
  89. package/dist/__tests__/integration/get-project-param.integration.test.d.ts.map +0 -1
  90. package/dist/__tests__/integration/get-project-param.integration.test.js +0 -305
  91. package/dist/__tests__/integration/get-project-param.integration.test.js.map +0 -1
  92. package/dist/__tests__/integration/info.integration.test.d.ts +0 -2
  93. package/dist/__tests__/integration/info.integration.test.d.ts.map +0 -1
  94. package/dist/__tests__/integration/info.integration.test.js +0 -293
  95. package/dist/__tests__/integration/info.integration.test.js.map +0 -1
  96. package/dist/__tests__/integration/jest-mocks-setup.d.ts +0 -2
  97. package/dist/__tests__/integration/jest-mocks-setup.d.ts.map +0 -1
  98. package/dist/__tests__/integration/jest-mocks-setup.js +0 -104
  99. package/dist/__tests__/integration/jest-mocks-setup.js.map +0 -1
  100. package/dist/__tests__/integration/jest-setup.d.ts +0 -2
  101. package/dist/__tests__/integration/jest-setup.d.ts.map +0 -1
  102. package/dist/__tests__/integration/jest-setup.js +0 -12
  103. package/dist/__tests__/integration/jest-setup.js.map +0 -1
  104. package/dist/__tests__/integration/link.integration.test.d.ts +0 -2
  105. package/dist/__tests__/integration/link.integration.test.d.ts.map +0 -1
  106. package/dist/__tests__/integration/link.integration.test.js +0 -395
  107. package/dist/__tests__/integration/link.integration.test.js.map +0 -1
  108. package/dist/__tests__/integration/linked-config-cascade.integration.test.d.ts +0 -2
  109. package/dist/__tests__/integration/linked-config-cascade.integration.test.d.ts.map +0 -1
  110. package/dist/__tests__/integration/linked-config-cascade.integration.test.js +0 -179
  111. package/dist/__tests__/integration/linked-config-cascade.integration.test.js.map +0 -1
  112. package/dist/__tests__/integration/list.integration.test.d.ts +0 -2
  113. package/dist/__tests__/integration/list.integration.test.d.ts.map +0 -1
  114. package/dist/__tests__/integration/list.integration.test.js +0 -300
  115. package/dist/__tests__/integration/list.integration.test.js.map +0 -1
  116. package/dist/__tests__/integration/source-upgrade.integration.test.d.ts +0 -2
  117. package/dist/__tests__/integration/source-upgrade.integration.test.d.ts.map +0 -1
  118. package/dist/__tests__/integration/source-upgrade.integration.test.js +0 -100
  119. package/dist/__tests__/integration/source-upgrade.integration.test.js.map +0 -1
  120. package/dist/__tests__/integration/test-utils.d.ts +0 -30
  121. package/dist/__tests__/integration/test-utils.d.ts.map +0 -1
  122. package/dist/__tests__/integration/test-utils.js +0 -82
  123. package/dist/__tests__/integration/test-utils.js.map +0 -1
  124. package/dist/__tests__/integration/tunnel.integration.test.d.ts +0 -2
  125. package/dist/__tests__/integration/tunnel.integration.test.d.ts.map +0 -1
  126. package/dist/__tests__/integration/tunnel.integration.test.js +0 -486
  127. package/dist/__tests__/integration/tunnel.integration.test.js.map +0 -1
  128. package/dist/__tests__/integration/variable.integration.test.d.ts +0 -2
  129. package/dist/__tests__/integration/variable.integration.test.d.ts.map +0 -1
  130. package/dist/__tests__/integration/variable.integration.test.js +0 -258
  131. package/dist/__tests__/integration/variable.integration.test.js.map +0 -1
  132. package/dist/__tests__/integration/whoami.integration.test.d.ts +0 -2
  133. package/dist/__tests__/integration/whoami.integration.test.d.ts.map +0 -1
  134. package/dist/__tests__/integration/whoami.integration.test.js +0 -116
  135. package/dist/__tests__/integration/whoami.integration.test.js.map +0 -1
  136. package/dist/__tests__/outdated.test.d.ts +0 -2
  137. package/dist/__tests__/outdated.test.d.ts.map +0 -1
  138. package/dist/__tests__/outdated.test.js +0 -67
  139. package/dist/__tests__/outdated.test.js.map +0 -1
  140. package/dist/__tests__/populate.test.d.ts +0 -2
  141. package/dist/__tests__/populate.test.d.ts.map +0 -1
  142. package/dist/__tests__/populate.test.js +0 -445
  143. package/dist/__tests__/populate.test.js.map +0 -1
  144. package/dist/__tests__/tsconfig-upgrader.test.d.ts +0 -2
  145. package/dist/__tests__/tsconfig-upgrader.test.d.ts.map +0 -1
  146. package/dist/__tests__/tsconfig-upgrader.test.js +0 -31
  147. package/dist/__tests__/tsconfig-upgrader.test.js.map +0 -1
  148. package/dist/ca-certificate/validation.test.d.ts +0 -2
  149. package/dist/ca-certificate/validation.test.d.ts.map +0 -1
  150. package/dist/ca-certificate/validation.test.js +0 -131
  151. package/dist/ca-certificate/validation.test.js.map +0 -1
  152. package/dist/common/analytics/cli-invocation.test.d.ts +0 -2
  153. package/dist/common/analytics/cli-invocation.test.d.ts.map +0 -1
  154. package/dist/common/analytics/cli-invocation.test.js +0 -51
  155. package/dist/common/analytics/cli-invocation.test.js.map +0 -1
  156. package/dist/common/analytics/package-manager.test.d.ts +0 -2
  157. package/dist/common/analytics/package-manager.test.d.ts.map +0 -1
  158. package/dist/common/analytics/package-manager.test.js +0 -163
  159. package/dist/common/analytics/package-manager.test.js.map +0 -1
  160. package/dist/common/cli-dispatcher.test.d.ts +0 -2
  161. package/dist/common/cli-dispatcher.test.d.ts.map +0 -1
  162. package/dist/common/cli-dispatcher.test.js +0 -80
  163. package/dist/common/cli-dispatcher.test.js.map +0 -1
  164. package/dist/common/middleware/check-pnpm-lifecycle.test.d.ts +0 -2
  165. package/dist/common/middleware/check-pnpm-lifecycle.test.d.ts.map +0 -1
  166. package/dist/common/middleware/check-pnpm-lifecycle.test.js +0 -125
  167. package/dist/common/middleware/check-pnpm-lifecycle.test.js.map +0 -1
  168. package/dist/common/middleware/get-environment-param.test.d.ts +0 -2
  169. package/dist/common/middleware/get-environment-param.test.d.ts.map +0 -1
  170. package/dist/common/middleware/get-environment-param.test.js +0 -57
  171. package/dist/common/middleware/get-environment-param.test.js.map +0 -1
  172. package/dist/common/read-linked-config.test.d.ts +0 -2
  173. package/dist/common/read-linked-config.test.d.ts.map +0 -1
  174. package/dist/common/read-linked-config.test.js +0 -363
  175. package/dist/common/read-linked-config.test.js.map +0 -1
  176. package/dist/common/terminal.test.d.ts +0 -2
  177. package/dist/common/terminal.test.d.ts.map +0 -1
  178. package/dist/common/terminal.test.js +0 -101
  179. package/dist/common/terminal.test.js.map +0 -1
  180. package/dist/common/utils/build-environment-prompt-choices.test.d.ts +0 -2
  181. package/dist/common/utils/build-environment-prompt-choices.test.d.ts.map +0 -1
  182. package/dist/common/utils/build-environment-prompt-choices.test.js +0 -97
  183. package/dist/common/utils/build-environment-prompt-choices.test.js.map +0 -1
  184. package/dist/common/utils/format-environment-type.test.d.ts +0 -2
  185. package/dist/common/utils/format-environment-type.test.d.ts.map +0 -1
  186. package/dist/common/utils/format-environment-type.test.js +0 -32
  187. package/dist/common/utils/format-environment-type.test.js.map +0 -1
  188. package/dist/common/utils/pnpm-lifecycle.test.d.ts +0 -2
  189. package/dist/common/utils/pnpm-lifecycle.test.d.ts.map +0 -1
  190. package/dist/common/utils/pnpm-lifecycle.test.js +0 -196
  191. package/dist/common/utils/pnpm-lifecycle.test.js.map +0 -1
  192. package/dist/common/utils/pretty-print-environment-prompt.test.d.ts +0 -2
  193. package/dist/common/utils/pretty-print-environment-prompt.test.d.ts.map +0 -1
  194. package/dist/common/utils/pretty-print-environment-prompt.test.js +0 -42
  195. package/dist/common/utils/pretty-print-environment-prompt.test.js.map +0 -1
  196. package/dist/common/utils/sort-environments-for-prompt.test.d.ts +0 -2
  197. package/dist/common/utils/sort-environments-for-prompt.test.d.ts.map +0 -1
  198. package/dist/common/utils/sort-environments-for-prompt.test.js +0 -82
  199. package/dist/common/utils/sort-environments-for-prompt.test.js.map +0 -1
  200. package/dist/common/utils/stringify-config.test.d.ts +0 -2
  201. package/dist/common/utils/stringify-config.test.d.ts.map +0 -1
  202. package/dist/common/utils/stringify-config.test.js +0 -80
  203. package/dist/common/utils/stringify-config.test.js.map +0 -1
  204. package/dist/common/validators/argument-validators.spec.d.ts +0 -2
  205. package/dist/common/validators/argument-validators.spec.d.ts.map +0 -1
  206. package/dist/common/validators/argument-validators.spec.js +0 -181
  207. package/dist/common/validators/argument-validators.spec.js.map +0 -1
  208. package/dist/deploy/archive.local-registry.test.d.ts +0 -2
  209. package/dist/deploy/archive.local-registry.test.d.ts.map +0 -1
  210. package/dist/deploy/archive.local-registry.test.js +0 -100
  211. package/dist/deploy/archive.local-registry.test.js.map +0 -1
  212. package/dist/deploy/archive.test.d.ts +0 -2
  213. package/dist/deploy/archive.test.d.ts.map +0 -1
  214. package/dist/deploy/archive.test.js +0 -248
  215. package/dist/deploy/archive.test.js.map +0 -1
  216. package/dist/deploy/classify-build-probe.test.d.ts +0 -2
  217. package/dist/deploy/classify-build-probe.test.d.ts.map +0 -1
  218. package/dist/deploy/classify-build-probe.test.js +0 -51
  219. package/dist/deploy/classify-build-probe.test.js.map +0 -1
  220. package/dist/deploy/poll-deployment.test.d.ts +0 -2
  221. package/dist/deploy/poll-deployment.test.d.ts.map +0 -1
  222. package/dist/deploy/poll-deployment.test.js +0 -158
  223. package/dist/deploy/poll-deployment.test.js.map +0 -1
  224. package/dist/dev/zuplo-local-gitignore.test.d.ts +0 -2
  225. package/dist/dev/zuplo-local-gitignore.test.d.ts.map +0 -1
  226. package/dist/dev/zuplo-local-gitignore.test.js +0 -58
  227. package/dist/dev/zuplo-local-gitignore.test.js.map +0 -1
  228. package/dist/editor/e2e/editor.spec.d.ts +0 -2
  229. package/dist/editor/e2e/editor.spec.d.ts.map +0 -1
  230. package/dist/editor/e2e/editor.spec.js +0 -44
  231. package/dist/editor/e2e/editor.spec.js.map +0 -1
  232. package/dist/link/project-type.test.d.ts +0 -2
  233. package/dist/link/project-type.test.d.ts.map +0 -1
  234. package/dist/link/project-type.test.js +0 -225
  235. package/dist/link/project-type.test.js.map +0 -1
  236. package/dist/lint/resolve-binary.test.d.ts +0 -2
  237. package/dist/lint/resolve-binary.test.d.ts.map +0 -1
  238. package/dist/lint/resolve-binary.test.js +0 -155
  239. package/dist/lint/resolve-binary.test.js.map +0 -1
  240. package/dist/open-api/convert/handler.spec.d.ts +0 -2
  241. package/dist/open-api/convert/handler.spec.d.ts.map +0 -1
  242. package/dist/open-api/convert/handler.spec.js +0 -301
  243. package/dist/open-api/convert/handler.spec.js.map +0 -1
  244. package/dist/open-api/merge/handler.spec.d.ts +0 -2
  245. package/dist/open-api/merge/handler.spec.d.ts.map +0 -1
  246. package/dist/open-api/merge/handler.spec.js +0 -673
  247. package/dist/open-api/merge/handler.spec.js.map +0 -1
  248. package/dist/open-api/overlay/handler.spec.d.ts +0 -2
  249. package/dist/open-api/overlay/handler.spec.d.ts.map +0 -1
  250. package/dist/open-api/overlay/handler.spec.js +0 -346
  251. package/dist/open-api/overlay/handler.spec.js.map +0 -1
  252. package/dist/source/ai-gateway/files.test.d.ts +0 -2
  253. package/dist/source/ai-gateway/files.test.d.ts.map +0 -1
  254. package/dist/source/ai-gateway/files.test.js +0 -135
  255. package/dist/source/ai-gateway/files.test.js.map +0 -1
  256. package/dist/source/ai-gateway/handler.test.d.ts +0 -2
  257. package/dist/source/ai-gateway/handler.test.d.ts.map +0 -1
  258. package/dist/source/ai-gateway/handler.test.js +0 -113
  259. package/dist/source/ai-gateway/handler.test.js.map +0 -1
  260. package/dist/source/ai-gateway/package.test.d.ts +0 -2
  261. package/dist/source/ai-gateway/package.test.d.ts.map +0 -1
  262. package/dist/source/ai-gateway/package.test.js +0 -30
  263. package/dist/source/ai-gateway/package.test.js.map +0 -1
  264. package/dist/source/ai-gateway/planner.test.d.ts +0 -2
  265. package/dist/source/ai-gateway/planner.test.d.ts.map +0 -1
  266. package/dist/source/ai-gateway/planner.test.js +0 -330
  267. package/dist/source/ai-gateway/planner.test.js.map +0 -1
  268. package/dist/source/ai-gateway/release.test.d.ts +0 -2
  269. package/dist/source/ai-gateway/release.test.d.ts.map +0 -1
  270. package/dist/source/ai-gateway/release.test.js +0 -62
  271. package/dist/source/ai-gateway/release.test.js.map +0 -1
  272. package/dist/test/invoke-test.test.d.ts +0 -2
  273. package/dist/test/invoke-test.test.d.ts.map +0 -1
  274. package/dist/test/invoke-test.test.js +0 -150
  275. package/dist/test/invoke-test.test.js.map +0 -1
  276. package/dist/test/test-files.test.d.ts +0 -2
  277. package/dist/test/test-files.test.d.ts.map +0 -1
  278. package/dist/test/test-files.test.js +0 -57
  279. package/dist/test/test-files.test.js.map +0 -1
  280. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.d.ts +0 -2
  281. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.d.ts.map +0 -1
  282. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.js +0 -289
  283. package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.js.map +0 -1
  284. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.d.ts +0 -2
  285. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.d.ts.map +0 -1
  286. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.js +0 -181
  287. package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.js.map +0 -1
  288. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.d.ts +0 -2
  289. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.d.ts.map +0 -1
  290. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.js +0 -399
  291. package/node_modules/@zuplo/openapi-tools/dist/merge.spec.js.map +0 -1
  292. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.d.ts +0 -2
  293. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.d.ts.map +0 -1
  294. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.js +0 -779
  295. package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.js.map +0 -1
  296. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.d.ts +0 -2
  297. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.d.ts.map +0 -1
  298. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.js +0 -269
  299. package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.js.map +0 -1
  300. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.d.ts +0 -2
  301. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.d.ts.map +0 -1
  302. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.js +0 -93
  303. package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.js.map +0 -1
  304. package/node_modules/@zuplo/runtime/out/esm/chunk-6YPRGG62.js.map +0 -1
  305. package/node_modules/@zuplo/runtime/out/esm/chunk-PBDT4FDO.js +0 -37
  306. package/node_modules/@zuplo/runtime/out/esm/chunk-PBDT4FDO.js.map +0 -1
  307. /package/node_modules/@zuplo/runtime/out/esm/{chunk-YJ2BHVUH.js.map → chunk-CDEAY3VY.js.map} +0 -0
  308. /package/node_modules/@zuplo/runtime/out/esm/{chunk-PBDT4FDO.js.LEGAL.txt → chunk-LVSZ3WTO.js.LEGAL.txt} +0 -0
  309. /package/node_modules/@zuplo/runtime/out/esm/{chunk-VTO3F6DK.js.map → chunk-NUVXDVLJ.js.map} +0 -0
  310. /package/node_modules/@zuplo/runtime/out/esm/{chunk-6YPRGG62.js.LEGAL.txt → chunk-RHU3Z7DA.js.LEGAL.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"handler.spec.js","sourceRoot":"","sources":["../../../src/open-api/merge/handler.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { afterEach, beforeEach, describe, it } from \"node:test\";\nimport { fileURLToPath } from \"node:url\";\nimport { importOpenApi } from \"./handler.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst testTmpPath = path.join(\n __dirname,\n \"..\",\n \"..\",\n \"__tests__\",\n \"test-tmp\",\n \"merge-handler\"\n);\n\ndescribe(\"Merge Handler\", () => {\n beforeEach(async () => {\n // Ensure test-tmp directory exists\n await fs.mkdir(testTmpPath, { recursive: true });\n });\n\n afterEach(async () => {\n // Clean up test files\n try {\n await fs.rm(testTmpPath, { recursive: true, force: true });\n } catch {\n // Ignore cleanup errors\n }\n });\n\n describe(\"importOpenApi\", () => {\n it(\"should merge source into new destination file\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/users\": {\n get: {\n summary: \"Get users\",\n operationId: \"getUsers\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(result.openapi, \"3.1.0\");\n assert.strictEqual(result.paths[\"/users\"].get.summary, \"Get users\");\n assert.strictEqual(result.paths[\"/users\"].get.operationId, \"getUsers\");\n });\n\n it(\"should merge source into existing destination file\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const existingDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Existing API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/products\": {\n get: {\n summary: \"Get products\",\n operationId: \"getProducts\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/users\": {\n get: {\n summary: \"Get users\",\n operationId: \"getUsers\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(destPath, JSON.stringify(existingDoc, null, 2));\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(result.paths[\"/products\"].get.summary, \"Get products\");\n assert.strictEqual(result.paths[\"/users\"].get.summary, \"Get users\");\n });\n\n it(\"should support YAML source files\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.yaml\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const sourceDoc = `openapi: 3.1.0\ninfo:\n title: Source API\n version: 1.0.0\npaths:\n /users:\n get:\n summary: Get users\n operationId: getUsers\n responses:\n '200':\n description: Success`;\n\n await fs.writeFile(sourcePath, sourceDoc);\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(result.paths[\"/users\"].get.summary, \"Get users\");\n });\n\n it(\"should use path-method merge mode by default\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const existingDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Existing API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/users\": {\n get: {\n summary: \"Original summary\",\n operationId: \"getUsers\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/users\": {\n get: {\n summary: \"Updated summary\",\n operationId: \"getUsersUpdated\",\n responses: {\n \"200\": {\n description: \"Updated Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(destPath, JSON.stringify(existingDoc, null, 2));\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n // In path-method mode, matching path+method should be merged\n assert.strictEqual(result.paths[\"/users\"].get.summary, \"Updated summary\");\n });\n\n it(\"should support operation-id merge mode\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const existingDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Existing API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/users\": {\n get: {\n summary: \"Original summary\",\n operationId: \"getUsers\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/v2/users\": {\n get: {\n summary: \"Updated summary\",\n operationId: \"getUsers\",\n responses: {\n \"200\": {\n description: \"Updated Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(destPath, JSON.stringify(existingDoc, null, 2));\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n \"merge-mode\": \"operation-id\",\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n // In operation-id mode, matching operationId should be merged\n // Original path should be removed, new path should exist\n assert.strictEqual(result.paths[\"/users\"], undefined);\n assert.strictEqual(\n result.paths[\"/v2/users\"].get.summary,\n \"Updated summary\"\n );\n });\n\n it(\"should create output directory if it doesn't exist\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"nested\", \"dir\", \"dest.oas.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/users\": {\n get: {\n summary: \"Get users\",\n operationId: \"getUsers\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(result.paths[\"/users\"].get.summary, \"Get users\");\n });\n\n it(\"should add operation IDs if missing\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/users\": {\n get: {\n summary: \"Get users\",\n // No operationId\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n // Operation ID should be auto-generated\n assert.strictEqual(\n typeof result.paths[\"/users\"].get.operationId,\n \"string\"\n );\n assert.strictEqual(\n result.paths[\"/users\"].get.operationId.length > 0,\n true\n );\n });\n\n it(\"should throw error when source file does not exist\", async () => {\n const sourcePath = path.join(testTmpPath, \"nonexistent.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n await assert.rejects(\n () =>\n importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n }),\n /does not exist/\n );\n });\n\n it(\"should throw error when destination doesn't end with .oas.json\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n paths: {},\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await assert.rejects(\n () =>\n importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n }),\n /must end with '.oas.json'/\n );\n });\n });\n\n describe(\"server-paths flag\", () => {\n it(\"should apply server-paths transformation by default\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n servers: [\n {\n url: \"https://api.example.com/v2\",\n description: \"Production server\",\n },\n ],\n paths: {\n \"/products\": {\n get: {\n summary: \"Get products\",\n operationId: \"getProducts\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(\n result.paths[\"/v2/products\"].get.summary,\n \"Get products\"\n );\n assert.strictEqual(result.paths[\"/products\"], undefined);\n });\n\n it(\"should apply server-paths transformation when explicitly enabled\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n servers: [\n {\n url: \"https://api.example.com/v1\",\n description: \"Production server\",\n },\n ],\n paths: {\n \"/accounts\": {\n get: {\n summary: \"Get accounts\",\n operationId: \"getAccounts\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n \"server-paths\": true,\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(\n result.paths[\"/v1/accounts\"].get.summary,\n \"Get accounts\"\n );\n assert.strictEqual(result.paths[\"/accounts\"], undefined);\n });\n\n it(\"should not transform paths when server-paths is disabled\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n servers: [\n {\n url: \"https://api.example.com/v1\",\n description: \"Production server\",\n },\n ],\n paths: {\n \"/accounts\": {\n get: {\n summary: \"Get accounts\",\n operationId: \"getAccounts\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n \"server-paths\": false,\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(result.paths[\"/accounts\"].get.summary, \"Get accounts\");\n assert.strictEqual(result.paths[\"/v1/accounts\"], undefined);\n });\n\n it(\"should handle servers with no pathname gracefully\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n servers: [\n {\n url: \"https://api.example.com\",\n description: \"Production server\",\n },\n ],\n paths: {\n \"/accounts\": {\n get: {\n summary: \"Get accounts\",\n operationId: \"getAccounts\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n \"server-paths\": true,\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(result.paths[\"/accounts\"].get.summary, \"Get accounts\");\n });\n\n it(\"should handle missing servers gracefully\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/accounts\": {\n get: {\n summary: \"Get accounts\",\n operationId: \"getAccounts\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n \"server-paths\": true,\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(result.paths[\"/accounts\"].get.summary, \"Get accounts\");\n });\n });\n\n describe(\"prepend-path flag\", () => {\n it(\"should apply prepend-path transformation\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/accounts\": {\n get: {\n summary: \"Get accounts\",\n operationId: \"getAccounts\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n \"/users\": {\n get: {\n summary: \"Get users\",\n operationId: \"getUsers\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n \"prepend-path\": \"/api/v2\",\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(\n result.paths[\"/api/v2/accounts\"].get.summary,\n \"Get accounts\"\n );\n assert.strictEqual(\n result.paths[\"/api/v2/users\"].get.summary,\n \"Get users\"\n );\n assert.strictEqual(result.paths[\"/accounts\"], undefined);\n assert.strictEqual(result.paths[\"/users\"], undefined);\n });\n\n it(\"should handle prepend-path with various formats\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n paths: {\n \"/test\": {\n get: {\n summary: \"Test endpoint\",\n operationId: \"test\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n \"prepend-path\": \"/v1/\",\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(result.paths[\"/v1/test\"].get.summary, \"Test endpoint\");\n });\n\n it(\"should prioritize prepend-path over server-paths\", async () => {\n const sourcePath = path.join(testTmpPath, \"source.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n const sourceDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Source API\",\n version: \"1.0.0\",\n },\n servers: [\n {\n url: \"https://api.example.com/v1\",\n description: \"Has a pathname that should be ignored\",\n },\n ],\n paths: {\n \"/orders\": {\n get: {\n summary: \"Get orders\",\n operationId: \"getOrders\",\n responses: {\n \"200\": {\n description: \"Success\",\n },\n },\n },\n },\n },\n };\n\n await fs.writeFile(sourcePath, JSON.stringify(sourceDoc, null, 2));\n\n await importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n \"server-paths\": true,\n \"prepend-path\": \"/custom/path\",\n });\n\n const result = JSON.parse(await fs.readFile(destPath, \"utf-8\"));\n assert.strictEqual(\n result.paths[\"/custom/path/orders\"].get.summary,\n \"Get orders\"\n );\n assert.strictEqual(result.paths[\"/v1/orders\"], undefined);\n assert.strictEqual(result.paths[\"/orders\"], undefined);\n });\n });\n\n describe(\"watch flag\", () => {\n it(\"should reject watch mode with URL sources\", async () => {\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n await assert.rejects(\n () =>\n importOpenApi({\n source: \"https://example.com/api.json\",\n destination: destPath,\n prompt: false,\n watch: true,\n }),\n /Watch mode is not supported for URL sources/\n );\n });\n\n it(\"should reject watch mode with non-existent files\", async () => {\n const sourcePath = path.join(testTmpPath, \"nonexistent.oas.json\");\n const destPath = path.join(testTmpPath, \"dest.oas.json\");\n\n await assert.rejects(\n () =>\n importOpenApi({\n source: sourcePath,\n destination: destPath,\n prompt: false,\n watch: true,\n }),\n /does not exist/\n );\n });\n });\n});\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=handler.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handler.spec.d.ts","sourceRoot":"","sources":["../../../src/open-api/overlay/handler.spec.ts"],"names":[],"mappings":""}
@@ -1,346 +0,0 @@
1
- import assert from "node:assert";
2
- import fs from "node:fs/promises";
3
- import path from "node:path";
4
- import { afterEach, beforeEach, describe, it } from "node:test";
5
- import { fileURLToPath } from "node:url";
6
- import { applyOverlay } from "./handler.js";
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = path.dirname(__filename);
9
- const testTmpPath = path.join(__dirname, "..", "..", "__tests__", "test-tmp", "overlay-handler");
10
- describe("Overlay Handler", () => {
11
- beforeEach(async () => {
12
- await fs.mkdir(testTmpPath, { recursive: true });
13
- });
14
- afterEach(async () => {
15
- try {
16
- await fs.rm(testTmpPath, { recursive: true, force: true });
17
- }
18
- catch {
19
- }
20
- });
21
- describe("applyOverlay", () => {
22
- it("should apply overlay to OpenAPI document (JSON to JSON)", async () => {
23
- const inputPath = path.join(testTmpPath, "input.json");
24
- const overlayPath = path.join(testTmpPath, "overlay.json");
25
- const outputPath = path.join(testTmpPath, "output.json");
26
- const inputDoc = {
27
- openapi: "3.1.0",
28
- info: {
29
- title: "Original API",
30
- version: "1.0.0",
31
- },
32
- paths: {},
33
- };
34
- const overlayDoc = {
35
- overlay: "1.0.0",
36
- info: {
37
- title: "Test Overlay",
38
- version: "1.0.0",
39
- },
40
- actions: [
41
- {
42
- target: "$.info.title",
43
- update: "Updated API",
44
- },
45
- ],
46
- };
47
- await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));
48
- await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));
49
- await applyOverlay({
50
- input: inputPath,
51
- overlay: overlayPath,
52
- output: outputPath,
53
- });
54
- const result = JSON.parse(await fs.readFile(outputPath, "utf-8"));
55
- assert.strictEqual(result.info.title, "Updated API");
56
- assert.strictEqual(result.openapi, "3.1.0");
57
- });
58
- it("should support YAML input and JSON output", async () => {
59
- const inputPath = path.join(testTmpPath, "input.yaml");
60
- const overlayPath = path.join(testTmpPath, "overlay.json");
61
- const outputPath = path.join(testTmpPath, "output.json");
62
- const inputDoc = `openapi: 3.1.0
63
- info:
64
- title: Original API
65
- version: 1.0.0
66
- paths: {}`;
67
- const overlayDoc = {
68
- overlay: "1.0.0",
69
- info: {
70
- title: "Test Overlay",
71
- version: "1.0.0",
72
- },
73
- actions: [
74
- {
75
- target: "$.info.version",
76
- update: "2.0.0",
77
- },
78
- ],
79
- };
80
- await fs.writeFile(inputPath, inputDoc);
81
- await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));
82
- await applyOverlay({
83
- input: inputPath,
84
- overlay: overlayPath,
85
- output: outputPath,
86
- });
87
- const result = JSON.parse(await fs.readFile(outputPath, "utf-8"));
88
- assert.strictEqual(result.info.version, "2.0.0");
89
- });
90
- it("should support JSON input and YAML output", async () => {
91
- const inputPath = path.join(testTmpPath, "input.json");
92
- const overlayPath = path.join(testTmpPath, "overlay.json");
93
- const outputPath = path.join(testTmpPath, "output.yaml");
94
- const inputDoc = {
95
- openapi: "3.1.0",
96
- info: {
97
- title: "Original API",
98
- version: "1.0.0",
99
- },
100
- paths: {},
101
- };
102
- const overlayDoc = {
103
- overlay: "1.0.0",
104
- info: {
105
- title: "Test Overlay",
106
- version: "1.0.0",
107
- },
108
- actions: [],
109
- };
110
- await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));
111
- await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));
112
- await applyOverlay({
113
- input: inputPath,
114
- overlay: overlayPath,
115
- output: outputPath,
116
- });
117
- const result = await fs.readFile(outputPath, "utf-8");
118
- assert.strictEqual(result.includes("openapi: 3.1.0"), true);
119
- assert.strictEqual(result.includes("title: Original API"), true);
120
- });
121
- it("should support --format flag to override output format", async () => {
122
- const inputPath = path.join(testTmpPath, "input.json");
123
- const overlayPath = path.join(testTmpPath, "overlay.json");
124
- const outputPath = path.join(testTmpPath, "output.txt");
125
- const inputDoc = {
126
- openapi: "3.1.0",
127
- info: {
128
- title: "Original API",
129
- version: "1.0.0",
130
- },
131
- paths: {},
132
- };
133
- const overlayDoc = {
134
- overlay: "1.0.0",
135
- info: {
136
- title: "Test Overlay",
137
- version: "1.0.0",
138
- },
139
- actions: [],
140
- };
141
- await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));
142
- await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));
143
- await applyOverlay({
144
- input: inputPath,
145
- overlay: overlayPath,
146
- output: outputPath,
147
- format: "yaml",
148
- });
149
- const result = await fs.readFile(outputPath, "utf-8");
150
- assert.strictEqual(result.includes("openapi: 3.1.0"), true);
151
- });
152
- it("should support --json flag", async () => {
153
- const inputPath = path.join(testTmpPath, "input.yaml");
154
- const overlayPath = path.join(testTmpPath, "overlay.yaml");
155
- const outputPath = path.join(testTmpPath, "output.txt");
156
- const inputDoc = `openapi: 3.1.0
157
- info:
158
- title: Original API
159
- version: 1.0.0
160
- paths: {}`;
161
- const overlayDoc = `overlay: 1.0.0
162
- info:
163
- title: Test Overlay
164
- version: 1.0.0
165
- actions: []`;
166
- await fs.writeFile(inputPath, inputDoc);
167
- await fs.writeFile(overlayPath, overlayDoc);
168
- await applyOverlay({
169
- input: inputPath,
170
- overlay: overlayPath,
171
- output: outputPath,
172
- json: true,
173
- });
174
- const result = await fs.readFile(outputPath, "utf-8");
175
- const parsed = JSON.parse(result);
176
- assert.strictEqual(parsed.openapi, "3.1.0");
177
- });
178
- it("should support --yaml flag", async () => {
179
- const inputPath = path.join(testTmpPath, "input.json");
180
- const overlayPath = path.join(testTmpPath, "overlay.json");
181
- const outputPath = path.join(testTmpPath, "output.txt");
182
- const inputDoc = {
183
- openapi: "3.1.0",
184
- info: {
185
- title: "Original API",
186
- version: "1.0.0",
187
- },
188
- paths: {},
189
- };
190
- const overlayDoc = {
191
- overlay: "1.0.0",
192
- info: {
193
- title: "Test Overlay",
194
- version: "1.0.0",
195
- },
196
- actions: [],
197
- };
198
- await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));
199
- await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));
200
- await applyOverlay({
201
- input: inputPath,
202
- overlay: overlayPath,
203
- output: outputPath,
204
- yaml: true,
205
- });
206
- const result = await fs.readFile(outputPath, "utf-8");
207
- assert.strictEqual(result.includes("openapi: 3.1.0"), true);
208
- });
209
- it("should create output directory if it doesn't exist", async () => {
210
- const inputPath = path.join(testTmpPath, "input.json");
211
- const overlayPath = path.join(testTmpPath, "overlay.json");
212
- const outputPath = path.join(testTmpPath, "nested", "dir", "output.json");
213
- const inputDoc = {
214
- openapi: "3.1.0",
215
- info: {
216
- title: "Original API",
217
- version: "1.0.0",
218
- },
219
- paths: {},
220
- };
221
- const overlayDoc = {
222
- overlay: "1.0.0",
223
- info: {
224
- title: "Test Overlay",
225
- version: "1.0.0",
226
- },
227
- actions: [],
228
- };
229
- await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));
230
- await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));
231
- await applyOverlay({
232
- input: inputPath,
233
- overlay: overlayPath,
234
- output: outputPath,
235
- });
236
- const result = JSON.parse(await fs.readFile(outputPath, "utf-8"));
237
- assert.strictEqual(result.openapi, "3.1.0");
238
- });
239
- it("should throw error when input file does not exist", async () => {
240
- const inputPath = path.join(testTmpPath, "nonexistent.json");
241
- const overlayPath = path.join(testTmpPath, "overlay.json");
242
- const outputPath = path.join(testTmpPath, "output.json");
243
- const overlayDoc = {
244
- overlay: "1.0.0",
245
- info: {
246
- title: "Test Overlay",
247
- version: "1.0.0",
248
- },
249
- actions: [],
250
- };
251
- await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));
252
- await assert.rejects(() => applyOverlay({
253
- input: inputPath,
254
- overlay: overlayPath,
255
- output: outputPath,
256
- }), /OpenAPI file not found/);
257
- });
258
- it("should throw error when overlay file does not exist", async () => {
259
- const inputPath = path.join(testTmpPath, "input.json");
260
- const overlayPath = path.join(testTmpPath, "nonexistent.json");
261
- const outputPath = path.join(testTmpPath, "output.json");
262
- const inputDoc = {
263
- openapi: "3.1.0",
264
- info: {
265
- title: "Original API",
266
- version: "1.0.0",
267
- },
268
- paths: {},
269
- };
270
- await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));
271
- await assert.rejects(() => applyOverlay({
272
- input: inputPath,
273
- overlay: overlayPath,
274
- output: outputPath,
275
- }), /Overlay file not found/);
276
- });
277
- it("should throw error when overlay is invalid", async () => {
278
- const inputPath = path.join(testTmpPath, "input.json");
279
- const overlayPath = path.join(testTmpPath, "overlay.json");
280
- const outputPath = path.join(testTmpPath, "output.json");
281
- const inputDoc = {
282
- openapi: "3.1.0",
283
- info: {
284
- title: "Original API",
285
- version: "1.0.0",
286
- },
287
- paths: {},
288
- };
289
- const invalidOverlay = {
290
- info: {
291
- title: "Missing overlay version",
292
- },
293
- };
294
- await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));
295
- await fs.writeFile(overlayPath, JSON.stringify(invalidOverlay, null, 2));
296
- await assert.rejects(() => applyOverlay({
297
- input: inputPath,
298
- overlay: overlayPath,
299
- output: outputPath,
300
- }), /Invalid overlay format/);
301
- });
302
- });
303
- describe("watch flag", () => {
304
- it("should reject watch mode with non-existent input file", async () => {
305
- const inputPath = path.join(testTmpPath, "nonexistent.json");
306
- const overlayPath = path.join(testTmpPath, "overlay.json");
307
- const outputPath = path.join(testTmpPath, "output.json");
308
- const overlayDoc = {
309
- overlay: "1.0.0",
310
- info: {
311
- title: "Test Overlay",
312
- version: "1.0.0",
313
- },
314
- actions: [],
315
- };
316
- await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));
317
- await assert.rejects(() => applyOverlay({
318
- input: inputPath,
319
- overlay: overlayPath,
320
- output: outputPath,
321
- watch: true,
322
- }), /OpenAPI file not found/);
323
- });
324
- it("should reject watch mode with non-existent overlay file", async () => {
325
- const inputPath = path.join(testTmpPath, "input.json");
326
- const overlayPath = path.join(testTmpPath, "nonexistent.json");
327
- const outputPath = path.join(testTmpPath, "output.json");
328
- const inputDoc = {
329
- openapi: "3.1.0",
330
- info: {
331
- title: "Original API",
332
- version: "1.0.0",
333
- },
334
- paths: {},
335
- };
336
- await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));
337
- await assert.rejects(() => applyOverlay({
338
- input: inputPath,
339
- overlay: overlayPath,
340
- output: outputPath,
341
- watch: true,
342
- }), /Overlay file not found/);
343
- });
344
- });
345
- });
346
- //# sourceMappingURL=handler.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handler.spec.js","sourceRoot":"","sources":["../../../src/open-api/overlay/handler.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { afterEach, beforeEach, describe, it } from \"node:test\";\nimport { fileURLToPath } from \"node:url\";\nimport { applyOverlay } from \"./handler.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst testTmpPath = path.join(\n __dirname,\n \"..\",\n \"..\",\n \"__tests__\",\n \"test-tmp\",\n \"overlay-handler\"\n);\n\ndescribe(\"Overlay Handler\", () => {\n beforeEach(async () => {\n // Ensure test-tmp directory exists\n await fs.mkdir(testTmpPath, { recursive: true });\n });\n\n afterEach(async () => {\n // Clean up test files\n try {\n await fs.rm(testTmpPath, { recursive: true, force: true });\n } catch {\n // Ignore cleanup errors\n }\n });\n\n describe(\"applyOverlay\", () => {\n it(\"should apply overlay to OpenAPI document (JSON to JSON)\", async () => {\n const inputPath = path.join(testTmpPath, \"input.json\");\n const overlayPath = path.join(testTmpPath, \"overlay.json\");\n const outputPath = path.join(testTmpPath, \"output.json\");\n\n const inputDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Original API\",\n version: \"1.0.0\",\n },\n paths: {},\n };\n\n const overlayDoc = {\n overlay: \"1.0.0\",\n info: {\n title: \"Test Overlay\",\n version: \"1.0.0\",\n },\n actions: [\n {\n target: \"$.info.title\",\n update: \"Updated API\",\n },\n ],\n };\n\n await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));\n await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));\n\n await applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n });\n\n const result = JSON.parse(await fs.readFile(outputPath, \"utf-8\"));\n assert.strictEqual(result.info.title, \"Updated API\");\n assert.strictEqual(result.openapi, \"3.1.0\");\n });\n\n it(\"should support YAML input and JSON output\", async () => {\n const inputPath = path.join(testTmpPath, \"input.yaml\");\n const overlayPath = path.join(testTmpPath, \"overlay.json\");\n const outputPath = path.join(testTmpPath, \"output.json\");\n\n const inputDoc = `openapi: 3.1.0\ninfo:\n title: Original API\n version: 1.0.0\npaths: {}`;\n\n const overlayDoc = {\n overlay: \"1.0.0\",\n info: {\n title: \"Test Overlay\",\n version: \"1.0.0\",\n },\n actions: [\n {\n target: \"$.info.version\",\n update: \"2.0.0\",\n },\n ],\n };\n\n await fs.writeFile(inputPath, inputDoc);\n await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));\n\n await applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n });\n\n const result = JSON.parse(await fs.readFile(outputPath, \"utf-8\"));\n assert.strictEqual(result.info.version, \"2.0.0\");\n });\n\n it(\"should support JSON input and YAML output\", async () => {\n const inputPath = path.join(testTmpPath, \"input.json\");\n const overlayPath = path.join(testTmpPath, \"overlay.json\");\n const outputPath = path.join(testTmpPath, \"output.yaml\");\n\n const inputDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Original API\",\n version: \"1.0.0\",\n },\n paths: {},\n };\n\n const overlayDoc = {\n overlay: \"1.0.0\",\n info: {\n title: \"Test Overlay\",\n version: \"1.0.0\",\n },\n actions: [],\n };\n\n await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));\n await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));\n\n await applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n });\n\n const result = await fs.readFile(outputPath, \"utf-8\");\n assert.strictEqual(result.includes(\"openapi: 3.1.0\"), true);\n assert.strictEqual(result.includes(\"title: Original API\"), true);\n });\n\n it(\"should support --format flag to override output format\", async () => {\n const inputPath = path.join(testTmpPath, \"input.json\");\n const overlayPath = path.join(testTmpPath, \"overlay.json\");\n const outputPath = path.join(testTmpPath, \"output.txt\");\n\n const inputDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Original API\",\n version: \"1.0.0\",\n },\n paths: {},\n };\n\n const overlayDoc = {\n overlay: \"1.0.0\",\n info: {\n title: \"Test Overlay\",\n version: \"1.0.0\",\n },\n actions: [],\n };\n\n await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));\n await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));\n\n await applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n format: \"yaml\",\n });\n\n const result = await fs.readFile(outputPath, \"utf-8\");\n assert.strictEqual(result.includes(\"openapi: 3.1.0\"), true);\n });\n\n it(\"should support --json flag\", async () => {\n const inputPath = path.join(testTmpPath, \"input.yaml\");\n const overlayPath = path.join(testTmpPath, \"overlay.yaml\");\n const outputPath = path.join(testTmpPath, \"output.txt\");\n\n const inputDoc = `openapi: 3.1.0\ninfo:\n title: Original API\n version: 1.0.0\npaths: {}`;\n\n const overlayDoc = `overlay: 1.0.0\ninfo:\n title: Test Overlay\n version: 1.0.0\nactions: []`;\n\n await fs.writeFile(inputPath, inputDoc);\n await fs.writeFile(overlayPath, overlayDoc);\n\n await applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n json: true,\n });\n\n const result = await fs.readFile(outputPath, \"utf-8\");\n const parsed = JSON.parse(result);\n assert.strictEqual(parsed.openapi, \"3.1.0\");\n });\n\n it(\"should support --yaml flag\", async () => {\n const inputPath = path.join(testTmpPath, \"input.json\");\n const overlayPath = path.join(testTmpPath, \"overlay.json\");\n const outputPath = path.join(testTmpPath, \"output.txt\");\n\n const inputDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Original API\",\n version: \"1.0.0\",\n },\n paths: {},\n };\n\n const overlayDoc = {\n overlay: \"1.0.0\",\n info: {\n title: \"Test Overlay\",\n version: \"1.0.0\",\n },\n actions: [],\n };\n\n await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));\n await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));\n\n await applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n yaml: true,\n });\n\n const result = await fs.readFile(outputPath, \"utf-8\");\n assert.strictEqual(result.includes(\"openapi: 3.1.0\"), true);\n });\n\n it(\"should create output directory if it doesn't exist\", async () => {\n const inputPath = path.join(testTmpPath, \"input.json\");\n const overlayPath = path.join(testTmpPath, \"overlay.json\");\n const outputPath = path.join(testTmpPath, \"nested\", \"dir\", \"output.json\");\n\n const inputDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Original API\",\n version: \"1.0.0\",\n },\n paths: {},\n };\n\n const overlayDoc = {\n overlay: \"1.0.0\",\n info: {\n title: \"Test Overlay\",\n version: \"1.0.0\",\n },\n actions: [],\n };\n\n await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));\n await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));\n\n await applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n });\n\n const result = JSON.parse(await fs.readFile(outputPath, \"utf-8\"));\n assert.strictEqual(result.openapi, \"3.1.0\");\n });\n\n it(\"should throw error when input file does not exist\", async () => {\n const inputPath = path.join(testTmpPath, \"nonexistent.json\");\n const overlayPath = path.join(testTmpPath, \"overlay.json\");\n const outputPath = path.join(testTmpPath, \"output.json\");\n\n const overlayDoc = {\n overlay: \"1.0.0\",\n info: {\n title: \"Test Overlay\",\n version: \"1.0.0\",\n },\n actions: [],\n };\n\n await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));\n\n await assert.rejects(\n () =>\n applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n }),\n /OpenAPI file not found/\n );\n });\n\n it(\"should throw error when overlay file does not exist\", async () => {\n const inputPath = path.join(testTmpPath, \"input.json\");\n const overlayPath = path.join(testTmpPath, \"nonexistent.json\");\n const outputPath = path.join(testTmpPath, \"output.json\");\n\n const inputDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Original API\",\n version: \"1.0.0\",\n },\n paths: {},\n };\n\n await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));\n\n await assert.rejects(\n () =>\n applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n }),\n /Overlay file not found/\n );\n });\n\n it(\"should throw error when overlay is invalid\", async () => {\n const inputPath = path.join(testTmpPath, \"input.json\");\n const overlayPath = path.join(testTmpPath, \"overlay.json\");\n const outputPath = path.join(testTmpPath, \"output.json\");\n\n const inputDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Original API\",\n version: \"1.0.0\",\n },\n paths: {},\n };\n\n const invalidOverlay = {\n info: {\n title: \"Missing overlay version\",\n },\n };\n\n await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));\n await fs.writeFile(overlayPath, JSON.stringify(invalidOverlay, null, 2));\n\n await assert.rejects(\n () =>\n applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n }),\n /Invalid overlay format/\n );\n });\n });\n\n describe(\"watch flag\", () => {\n it(\"should reject watch mode with non-existent input file\", async () => {\n const inputPath = path.join(testTmpPath, \"nonexistent.json\");\n const overlayPath = path.join(testTmpPath, \"overlay.json\");\n const outputPath = path.join(testTmpPath, \"output.json\");\n\n const overlayDoc = {\n overlay: \"1.0.0\",\n info: {\n title: \"Test Overlay\",\n version: \"1.0.0\",\n },\n actions: [],\n };\n\n await fs.writeFile(overlayPath, JSON.stringify(overlayDoc, null, 2));\n\n await assert.rejects(\n () =>\n applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n watch: true,\n }),\n /OpenAPI file not found/\n );\n });\n\n it(\"should reject watch mode with non-existent overlay file\", async () => {\n const inputPath = path.join(testTmpPath, \"input.json\");\n const overlayPath = path.join(testTmpPath, \"nonexistent.json\");\n const outputPath = path.join(testTmpPath, \"output.json\");\n\n const inputDoc = {\n openapi: \"3.1.0\",\n info: {\n title: \"Original API\",\n version: \"1.0.0\",\n },\n paths: {},\n };\n\n await fs.writeFile(inputPath, JSON.stringify(inputDoc, null, 2));\n\n await assert.rejects(\n () =>\n applyOverlay({\n input: inputPath,\n overlay: overlayPath,\n output: outputPath,\n watch: true,\n }),\n /Overlay file not found/\n );\n });\n });\n});\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=files.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"files.test.d.ts","sourceRoot":"","sources":["../../../src/source/ai-gateway/files.test.ts"],"names":[],"mappings":""}