@zuplo/cli 7.11.0 → 7.11.3

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