@desplega.ai/qa-use 2.10.1 → 2.13.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.
- package/README.md +16 -6
- package/dist/lib/api/browser-types.d.ts +1 -0
- package/dist/lib/api/browser-types.d.ts.map +1 -1
- package/dist/lib/api/browser.d.ts +1 -0
- package/dist/lib/api/browser.d.ts.map +1 -1
- package/dist/lib/api/browser.js +14 -1
- package/dist/lib/api/browser.js.map +1 -1
- package/dist/lib/api/index.d.ts +4 -3
- package/dist/lib/api/index.d.ts.map +1 -1
- package/dist/lib/api/index.js +18 -2
- package/dist/lib/api/index.js.map +1 -1
- package/dist/lib/env/index.d.ts +12 -2
- package/dist/lib/env/index.d.ts.map +1 -1
- package/dist/lib/env/index.js +56 -5
- package/dist/lib/env/index.js.map +1 -1
- package/dist/package.json +2 -1
- package/dist/src/cli/commands/api/examples.d.ts +3 -0
- package/dist/src/cli/commands/api/examples.d.ts.map +1 -0
- package/dist/src/cli/commands/api/examples.js +48 -0
- package/dist/src/cli/commands/api/examples.js.map +1 -0
- package/dist/src/cli/commands/api/index.d.ts.map +1 -1
- package/dist/src/cli/commands/api/index.js +22 -0
- package/dist/src/cli/commands/api/index.js.map +1 -1
- package/dist/src/cli/commands/api/info.d.ts +3 -0
- package/dist/src/cli/commands/api/info.d.ts.map +1 -0
- package/dist/src/cli/commands/api/info.js +59 -0
- package/dist/src/cli/commands/api/info.js.map +1 -0
- package/dist/src/cli/commands/api/lib/openapi-spec.d.ts +22 -0
- package/dist/src/cli/commands/api/lib/openapi-spec.d.ts.map +1 -1
- package/dist/src/cli/commands/api/lib/openapi-spec.js +33 -1
- package/dist/src/cli/commands/api/lib/openapi-spec.js.map +1 -1
- package/dist/src/cli/commands/api/lib/output.d.ts +4 -0
- package/dist/src/cli/commands/api/lib/output.d.ts.map +1 -1
- package/dist/src/cli/commands/api/lib/output.js +90 -0
- package/dist/src/cli/commands/api/lib/output.js.map +1 -1
- package/dist/src/cli/commands/api/lib/route-matching.d.ts +4 -0
- package/dist/src/cli/commands/api/lib/route-matching.d.ts.map +1 -0
- package/dist/src/cli/commands/api/lib/route-matching.js +9 -0
- package/dist/src/cli/commands/api/lib/route-matching.js.map +1 -0
- package/dist/src/cli/commands/api/lib/schema-resolver.d.ts +30 -0
- package/dist/src/cli/commands/api/lib/schema-resolver.d.ts.map +1 -0
- package/dist/src/cli/commands/api/lib/schema-resolver.js +91 -0
- package/dist/src/cli/commands/api/lib/schema-resolver.js.map +1 -0
- package/dist/src/cli/commands/api/ls.d.ts.map +1 -1
- package/dist/src/cli/commands/api/ls.js +6 -1
- package/dist/src/cli/commands/api/ls.js.map +1 -1
- package/dist/src/cli/commands/api/openapi.d.ts +3 -0
- package/dist/src/cli/commands/api/openapi.d.ts.map +1 -0
- package/dist/src/cli/commands/api/openapi.js +55 -0
- package/dist/src/cli/commands/api/openapi.js.map +1 -0
- package/dist/src/cli/commands/api/request.d.ts.map +1 -1
- package/dist/src/cli/commands/api/request.js +9 -11
- package/dist/src/cli/commands/api/request.js.map +1 -1
- package/dist/src/cli/commands/app-config/create.d.ts +6 -0
- package/dist/src/cli/commands/app-config/create.d.ts.map +1 -0
- package/dist/src/cli/commands/app-config/create.js +32 -0
- package/dist/src/cli/commands/app-config/create.js.map +1 -0
- package/dist/src/cli/commands/app-config/delete.d.ts +6 -0
- package/dist/src/cli/commands/app-config/delete.d.ts.map +1 -0
- package/dist/src/cli/commands/app-config/delete.js +31 -0
- package/dist/src/cli/commands/app-config/delete.js.map +1 -0
- package/dist/src/cli/commands/app-config/index.d.ts +6 -0
- package/dist/src/cli/commands/app-config/index.d.ts.map +1 -0
- package/dist/src/cli/commands/app-config/index.js +16 -0
- package/dist/src/cli/commands/app-config/index.js.map +1 -0
- package/dist/src/cli/commands/app-config/info.d.ts +6 -0
- package/dist/src/cli/commands/app-config/info.d.ts.map +1 -0
- package/dist/src/cli/commands/app-config/info.js +67 -0
- package/dist/src/cli/commands/app-config/info.js.map +1 -0
- package/dist/src/cli/commands/app-config/list.d.ts +6 -0
- package/dist/src/cli/commands/app-config/list.d.ts.map +1 -0
- package/dist/src/cli/commands/app-config/list.js +58 -0
- package/dist/src/cli/commands/app-config/list.js.map +1 -0
- package/dist/src/cli/commands/app-config/update.d.ts +6 -0
- package/dist/src/cli/commands/app-config/update.d.ts.map +1 -0
- package/dist/src/cli/commands/app-config/update.js +31 -0
- package/dist/src/cli/commands/app-config/update.js.map +1 -0
- package/dist/src/cli/commands/app-context/create.d.ts +6 -0
- package/dist/src/cli/commands/app-context/create.d.ts.map +1 -0
- package/dist/src/cli/commands/app-context/create.js +32 -0
- package/dist/src/cli/commands/app-context/create.js.map +1 -0
- package/dist/src/cli/commands/app-context/delete.d.ts +6 -0
- package/dist/src/cli/commands/app-context/delete.d.ts.map +1 -0
- package/dist/src/cli/commands/app-context/delete.js +31 -0
- package/dist/src/cli/commands/app-context/delete.js.map +1 -0
- package/dist/src/cli/commands/app-context/index.d.ts +6 -0
- package/dist/src/cli/commands/app-context/index.d.ts.map +1 -0
- package/dist/src/cli/commands/app-context/index.js +16 -0
- package/dist/src/cli/commands/app-context/index.js.map +1 -0
- package/dist/src/cli/commands/app-context/info.d.ts +6 -0
- package/dist/src/cli/commands/app-context/info.d.ts.map +1 -0
- package/dist/src/cli/commands/app-context/info.js +51 -0
- package/dist/src/cli/commands/app-context/info.js.map +1 -0
- package/dist/src/cli/commands/app-context/list.d.ts +6 -0
- package/dist/src/cli/commands/app-context/list.d.ts.map +1 -0
- package/dist/src/cli/commands/app-context/list.js +58 -0
- package/dist/src/cli/commands/app-context/list.js.map +1 -0
- package/dist/src/cli/commands/app-context/update.d.ts +6 -0
- package/dist/src/cli/commands/app-context/update.d.ts.map +1 -0
- package/dist/src/cli/commands/app-context/update.js +31 -0
- package/dist/src/cli/commands/app-context/update.js.map +1 -0
- package/dist/src/cli/commands/browser/back.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/back.js +2 -4
- package/dist/src/cli/commands/browser/back.js.map +1 -1
- package/dist/src/cli/commands/browser/blur.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/blur.js +2 -4
- package/dist/src/cli/commands/browser/blur.js.map +1 -1
- package/dist/src/cli/commands/browser/check.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/check.js +2 -4
- package/dist/src/cli/commands/browser/check.js.map +1 -1
- package/dist/src/cli/commands/browser/click.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/click.js +2 -4
- package/dist/src/cli/commands/browser/click.js.map +1 -1
- package/dist/src/cli/commands/browser/close.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/close.js +2 -4
- package/dist/src/cli/commands/browser/close.js.map +1 -1
- package/dist/src/cli/commands/browser/create.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/create.js +7 -4
- package/dist/src/cli/commands/browser/create.js.map +1 -1
- package/dist/src/cli/commands/browser/downloads.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/downloads.js +2 -4
- package/dist/src/cli/commands/browser/downloads.js.map +1 -1
- package/dist/src/cli/commands/browser/drag.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/drag.js +2 -4
- package/dist/src/cli/commands/browser/drag.js.map +1 -1
- package/dist/src/cli/commands/browser/evaluate.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/evaluate.js +2 -4
- package/dist/src/cli/commands/browser/evaluate.js.map +1 -1
- package/dist/src/cli/commands/browser/fill.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/fill.js +2 -4
- package/dist/src/cli/commands/browser/fill.js.map +1 -1
- package/dist/src/cli/commands/browser/focus.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/focus.js +2 -4
- package/dist/src/cli/commands/browser/focus.js.map +1 -1
- package/dist/src/cli/commands/browser/forward.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/forward.js +2 -4
- package/dist/src/cli/commands/browser/forward.js.map +1 -1
- package/dist/src/cli/commands/browser/generate-test.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/generate-test.js +2 -4
- package/dist/src/cli/commands/browser/generate-test.js.map +1 -1
- package/dist/src/cli/commands/browser/get-blocks.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/get-blocks.js +2 -4
- package/dist/src/cli/commands/browser/get-blocks.js.map +1 -1
- package/dist/src/cli/commands/browser/goto.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/goto.js +2 -4
- package/dist/src/cli/commands/browser/goto.js.map +1 -1
- package/dist/src/cli/commands/browser/hover.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/hover.js +2 -4
- package/dist/src/cli/commands/browser/hover.js.map +1 -1
- package/dist/src/cli/commands/browser/list.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/list.js +2 -4
- package/dist/src/cli/commands/browser/list.js.map +1 -1
- package/dist/src/cli/commands/browser/logs.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/logs.js +3 -6
- package/dist/src/cli/commands/browser/logs.js.map +1 -1
- package/dist/src/cli/commands/browser/mfa-totp.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/mfa-totp.js +2 -4
- package/dist/src/cli/commands/browser/mfa-totp.js.map +1 -1
- package/dist/src/cli/commands/browser/press.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/press.js +2 -4
- package/dist/src/cli/commands/browser/press.js.map +1 -1
- package/dist/src/cli/commands/browser/reload.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/reload.js +2 -4
- package/dist/src/cli/commands/browser/reload.js.map +1 -1
- package/dist/src/cli/commands/browser/run.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/run.js +5 -4
- package/dist/src/cli/commands/browser/run.js.map +1 -1
- package/dist/src/cli/commands/browser/screenshot.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/screenshot.js +2 -4
- package/dist/src/cli/commands/browser/screenshot.js.map +1 -1
- package/dist/src/cli/commands/browser/scroll-into-view.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/scroll-into-view.js +2 -4
- package/dist/src/cli/commands/browser/scroll-into-view.js.map +1 -1
- package/dist/src/cli/commands/browser/scroll.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/scroll.js +2 -4
- package/dist/src/cli/commands/browser/scroll.js.map +1 -1
- package/dist/src/cli/commands/browser/select.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/select.js +2 -4
- package/dist/src/cli/commands/browser/select.js.map +1 -1
- package/dist/src/cli/commands/browser/snapshot.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/snapshot.js +2 -4
- package/dist/src/cli/commands/browser/snapshot.js.map +1 -1
- package/dist/src/cli/commands/browser/status.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/status.js +6 -4
- package/dist/src/cli/commands/browser/status.js.map +1 -1
- package/dist/src/cli/commands/browser/stream.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/stream.js +2 -4
- package/dist/src/cli/commands/browser/stream.js.map +1 -1
- package/dist/src/cli/commands/browser/type.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/type.js +2 -4
- package/dist/src/cli/commands/browser/type.js.map +1 -1
- package/dist/src/cli/commands/browser/uncheck.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/uncheck.js +2 -4
- package/dist/src/cli/commands/browser/uncheck.js.map +1 -1
- package/dist/src/cli/commands/browser/upload.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/upload.js +2 -4
- package/dist/src/cli/commands/browser/upload.js.map +1 -1
- package/dist/src/cli/commands/browser/url.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/url.js +2 -4
- package/dist/src/cli/commands/browser/url.js.map +1 -1
- package/dist/src/cli/commands/browser/wait-for-load.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/wait-for-load.js +2 -4
- package/dist/src/cli/commands/browser/wait-for-load.js.map +1 -1
- package/dist/src/cli/commands/browser/wait-for-selector.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/wait-for-selector.js +2 -4
- package/dist/src/cli/commands/browser/wait-for-selector.js.map +1 -1
- package/dist/src/cli/commands/browser/wait.d.ts.map +1 -1
- package/dist/src/cli/commands/browser/wait.js +2 -4
- package/dist/src/cli/commands/browser/wait.js.map +1 -1
- package/dist/src/cli/commands/data-asset/delete.d.ts +6 -0
- package/dist/src/cli/commands/data-asset/delete.d.ts.map +1 -0
- package/dist/src/cli/commands/data-asset/delete.js +31 -0
- package/dist/src/cli/commands/data-asset/delete.js.map +1 -0
- package/dist/src/cli/commands/data-asset/index.d.ts +6 -0
- package/dist/src/cli/commands/data-asset/index.d.ts.map +1 -0
- package/dist/src/cli/commands/data-asset/index.js +14 -0
- package/dist/src/cli/commands/data-asset/index.js.map +1 -0
- package/dist/src/cli/commands/data-asset/info.d.ts +6 -0
- package/dist/src/cli/commands/data-asset/info.d.ts.map +1 -0
- package/dist/src/cli/commands/data-asset/info.js +75 -0
- package/dist/src/cli/commands/data-asset/info.js.map +1 -0
- package/dist/src/cli/commands/data-asset/list.d.ts +6 -0
- package/dist/src/cli/commands/data-asset/list.d.ts.map +1 -0
- package/dist/src/cli/commands/data-asset/list.js +76 -0
- package/dist/src/cli/commands/data-asset/list.js.map +1 -0
- package/dist/src/cli/commands/data-asset/upload.d.ts +6 -0
- package/dist/src/cli/commands/data-asset/upload.d.ts.map +1 -0
- package/dist/src/cli/commands/data-asset/upload.js +83 -0
- package/dist/src/cli/commands/data-asset/upload.js.map +1 -0
- package/dist/src/cli/commands/docs.d.ts.map +1 -1
- package/dist/src/cli/commands/docs.js +7 -1
- package/dist/src/cli/commands/docs.js.map +1 -1
- package/dist/src/cli/commands/info.d.ts.map +1 -1
- package/dist/src/cli/commands/info.js +15 -6
- package/dist/src/cli/commands/info.js.map +1 -1
- package/dist/src/cli/commands/issues/index.d.ts +6 -0
- package/dist/src/cli/commands/issues/index.d.ts.map +1 -0
- package/dist/src/cli/commands/issues/index.js +12 -0
- package/dist/src/cli/commands/issues/index.js.map +1 -0
- package/dist/src/cli/commands/issues/info.d.ts +6 -0
- package/dist/src/cli/commands/issues/info.d.ts.map +1 -0
- package/dist/src/cli/commands/issues/info.js +57 -0
- package/dist/src/cli/commands/issues/info.js.map +1 -0
- package/dist/src/cli/commands/issues/list.d.ts +6 -0
- package/dist/src/cli/commands/issues/list.d.ts.map +1 -0
- package/dist/src/cli/commands/issues/list.js +71 -0
- package/dist/src/cli/commands/issues/list.js.map +1 -0
- package/dist/src/cli/commands/issues/occurrences.d.ts +6 -0
- package/dist/src/cli/commands/issues/occurrences.d.ts.map +1 -0
- package/dist/src/cli/commands/issues/occurrences.js +54 -0
- package/dist/src/cli/commands/issues/occurrences.js.map +1 -0
- package/dist/src/cli/commands/persona/create.d.ts +6 -0
- package/dist/src/cli/commands/persona/create.d.ts.map +1 -0
- package/dist/src/cli/commands/persona/create.js +30 -0
- package/dist/src/cli/commands/persona/create.js.map +1 -0
- package/dist/src/cli/commands/persona/delete.d.ts +6 -0
- package/dist/src/cli/commands/persona/delete.d.ts.map +1 -0
- package/dist/src/cli/commands/persona/delete.js +31 -0
- package/dist/src/cli/commands/persona/delete.js.map +1 -0
- package/dist/src/cli/commands/persona/index.d.ts +6 -0
- package/dist/src/cli/commands/persona/index.d.ts.map +1 -0
- package/dist/src/cli/commands/persona/index.js +16 -0
- package/dist/src/cli/commands/persona/index.js.map +1 -0
- package/dist/src/cli/commands/persona/info.d.ts +6 -0
- package/dist/src/cli/commands/persona/info.d.ts.map +1 -0
- package/dist/src/cli/commands/persona/info.js +51 -0
- package/dist/src/cli/commands/persona/info.js.map +1 -0
- package/dist/src/cli/commands/persona/list.d.ts +6 -0
- package/dist/src/cli/commands/persona/list.d.ts.map +1 -0
- package/dist/src/cli/commands/persona/list.js +58 -0
- package/dist/src/cli/commands/persona/list.js.map +1 -0
- package/dist/src/cli/commands/persona/update.d.ts +6 -0
- package/dist/src/cli/commands/persona/update.d.ts.map +1 -0
- package/dist/src/cli/commands/persona/update.js +31 -0
- package/dist/src/cli/commands/persona/update.js.map +1 -0
- package/dist/src/cli/commands/setup.d.ts.map +1 -1
- package/dist/src/cli/commands/setup.js +4 -2
- package/dist/src/cli/commands/setup.js.map +1 -1
- package/dist/src/cli/commands/suite/create.d.ts +6 -0
- package/dist/src/cli/commands/suite/create.d.ts.map +1 -0
- package/dist/src/cli/commands/suite/create.js +30 -0
- package/dist/src/cli/commands/suite/create.js.map +1 -0
- package/dist/src/cli/commands/suite/delete.d.ts +6 -0
- package/dist/src/cli/commands/suite/delete.d.ts.map +1 -0
- package/dist/src/cli/commands/suite/delete.js +31 -0
- package/dist/src/cli/commands/suite/delete.js.map +1 -0
- package/dist/src/cli/commands/suite/index.d.ts +6 -0
- package/dist/src/cli/commands/suite/index.d.ts.map +1 -0
- package/dist/src/cli/commands/suite/index.js +18 -0
- package/dist/src/cli/commands/suite/index.js.map +1 -0
- package/dist/src/cli/commands/suite/info.d.ts +6 -0
- package/dist/src/cli/commands/suite/info.d.ts.map +1 -0
- package/dist/src/cli/commands/suite/info.js +66 -0
- package/dist/src/cli/commands/suite/info.js.map +1 -0
- package/dist/src/cli/commands/suite/list.d.ts +6 -0
- package/dist/src/cli/commands/suite/list.d.ts.map +1 -0
- package/dist/src/cli/commands/suite/list.js +58 -0
- package/dist/src/cli/commands/suite/list.js.map +1 -0
- package/dist/src/cli/commands/suite/run.d.ts +6 -0
- package/dist/src/cli/commands/suite/run.d.ts.map +1 -0
- package/dist/src/cli/commands/suite/run.js +34 -0
- package/dist/src/cli/commands/suite/run.js.map +1 -0
- package/dist/src/cli/commands/suite/update.d.ts +6 -0
- package/dist/src/cli/commands/suite/update.d.ts.map +1 -0
- package/dist/src/cli/commands/suite/update.js +31 -0
- package/dist/src/cli/commands/suite/update.js.map +1 -0
- package/dist/src/cli/commands/test/diff.d.ts.map +1 -1
- package/dist/src/cli/commands/test/diff.js +2 -4
- package/dist/src/cli/commands/test/diff.js.map +1 -1
- package/dist/src/cli/commands/test/export.d.ts.map +1 -1
- package/dist/src/cli/commands/test/export.js +2 -4
- package/dist/src/cli/commands/test/export.js.map +1 -1
- package/dist/src/cli/commands/test/index.js +1 -1
- package/dist/src/cli/commands/test/index.js.map +1 -1
- package/dist/src/cli/commands/test/info.d.ts.map +1 -1
- package/dist/src/cli/commands/test/info.js +150 -46
- package/dist/src/cli/commands/test/info.js.map +1 -1
- package/dist/src/cli/commands/test/list.d.ts.map +1 -1
- package/dist/src/cli/commands/test/list.js +78 -23
- package/dist/src/cli/commands/test/list.js.map +1 -1
- package/dist/src/cli/commands/test/run.d.ts.map +1 -1
- package/dist/src/cli/commands/test/run.js +2 -4
- package/dist/src/cli/commands/test/run.js.map +1 -1
- package/dist/src/cli/commands/test/runs/cancel.d.ts +6 -0
- package/dist/src/cli/commands/test/runs/cancel.d.ts.map +1 -0
- package/dist/src/cli/commands/test/runs/cancel.js +31 -0
- package/dist/src/cli/commands/test/runs/cancel.js.map +1 -0
- package/dist/src/cli/commands/test/runs/index.d.ts +6 -0
- package/dist/src/cli/commands/test/runs/index.d.ts.map +1 -0
- package/dist/src/cli/commands/test/runs/index.js +16 -0
- package/dist/src/cli/commands/test/runs/index.js.map +1 -0
- package/dist/src/cli/commands/test/runs/info.d.ts +6 -0
- package/dist/src/cli/commands/test/runs/info.d.ts.map +1 -0
- package/dist/src/cli/commands/test/runs/info.js +72 -0
- package/dist/src/cli/commands/test/runs/info.js.map +1 -0
- package/dist/src/cli/commands/test/runs/list.d.ts +6 -0
- package/dist/src/cli/commands/test/runs/list.d.ts.map +1 -0
- package/dist/src/cli/commands/test/runs/list.js +128 -0
- package/dist/src/cli/commands/test/runs/list.js.map +1 -0
- package/dist/src/cli/commands/test/runs/logs.d.ts +6 -0
- package/dist/src/cli/commands/test/runs/logs.d.ts.map +1 -0
- package/dist/src/cli/commands/test/runs/logs.js +88 -0
- package/dist/src/cli/commands/test/runs/logs.js.map +1 -0
- package/dist/src/cli/commands/test/runs/steps.d.ts +6 -0
- package/dist/src/cli/commands/test/runs/steps.d.ts.map +1 -0
- package/dist/src/cli/commands/test/runs/steps.js +110 -0
- package/dist/src/cli/commands/test/runs/steps.js.map +1 -0
- package/dist/src/cli/commands/test/runs.d.ts.map +1 -1
- package/dist/src/cli/commands/test/runs.js +2 -4
- package/dist/src/cli/commands/test/runs.js.map +1 -1
- package/dist/src/cli/commands/test/schema.d.ts.map +1 -1
- package/dist/src/cli/commands/test/schema.js +2 -6
- package/dist/src/cli/commands/test/schema.js.map +1 -1
- package/dist/src/cli/commands/test/sync.d.ts.map +1 -1
- package/dist/src/cli/commands/test/sync.js +3 -6
- package/dist/src/cli/commands/test/sync.js.map +1 -1
- package/dist/src/cli/commands/test/validate.d.ts.map +1 -1
- package/dist/src/cli/commands/test/validate.js +2 -4
- package/dist/src/cli/commands/test/validate.js.map +1 -1
- package/dist/src/cli/commands/usage.d.ts +6 -0
- package/dist/src/cli/commands/usage.d.ts.map +1 -0
- package/dist/src/cli/commands/usage.js +106 -0
- package/dist/src/cli/commands/usage.js.map +1 -0
- package/dist/src/cli/generated/docs-content.d.ts +1 -1
- package/dist/src/cli/generated/docs-content.d.ts.map +1 -1
- package/dist/src/cli/generated/docs-content.js +12 -5
- package/dist/src/cli/generated/docs-content.js.map +1 -1
- package/dist/src/cli/index.js +43 -1
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/lib/api-helpers.d.ts +59 -0
- package/dist/src/cli/lib/api-helpers.d.ts.map +1 -0
- package/dist/src/cli/lib/api-helpers.js +149 -0
- package/dist/src/cli/lib/api-helpers.js.map +1 -0
- package/dist/src/cli/lib/config.d.ts +20 -7
- package/dist/src/cli/lib/config.d.ts.map +1 -1
- package/dist/src/cli/lib/config.js +88 -26
- package/dist/src/cli/lib/config.js.map +1 -1
- package/dist/src/cli/lib/table.d.ts +47 -0
- package/dist/src/cli/lib/table.d.ts.map +1 -0
- package/dist/src/cli/lib/table.js +161 -0
- package/dist/src/cli/lib/table.js.map +1 -0
- package/dist/src/types/test-definition.d.ts +29 -2
- package/dist/src/types/test-definition.d.ts.map +1 -1
- package/dist/src/types/test-definition.js +2 -2
- package/lib/api/browser-types.ts +1 -0
- package/lib/api/browser.test.ts +28 -0
- package/lib/api/browser.ts +15 -1
- package/lib/api/index.ts +28 -5
- package/lib/env/index.ts +65 -5
- package/package.json +2 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
const EXAMPLES = `
|
|
3
|
+
API Command Examples
|
|
4
|
+
${'─'.repeat(50)}
|
|
5
|
+
|
|
6
|
+
List endpoints:
|
|
7
|
+
qa-use api ls
|
|
8
|
+
qa-use api ls --method GET
|
|
9
|
+
qa-use api ls --tag "External API v1"
|
|
10
|
+
qa-use api ls -q "tests"
|
|
11
|
+
|
|
12
|
+
Make GET requests:
|
|
13
|
+
qa-use api /api/v1/tests
|
|
14
|
+
qa-use api /api/v1/tests -f limit=5
|
|
15
|
+
qa-use api /api/v1/app-configs
|
|
16
|
+
|
|
17
|
+
Make POST requests:
|
|
18
|
+
qa-use api /api/v1/tests-actions/run -f test_ids='["id1"]'
|
|
19
|
+
qa-use api /api/v1/tests-actions/run --input body.json
|
|
20
|
+
|
|
21
|
+
Inspect routes:
|
|
22
|
+
qa-use api info /api/v1/tests
|
|
23
|
+
qa-use api info /api/v1/tests-actions/run -X POST
|
|
24
|
+
qa-use api info /api/v1/tests --json
|
|
25
|
+
|
|
26
|
+
Include response headers:
|
|
27
|
+
qa-use api /api/v1/tests --include
|
|
28
|
+
|
|
29
|
+
Raw output (no formatting):
|
|
30
|
+
qa-use api /api/v1/tests --raw
|
|
31
|
+
|
|
32
|
+
Custom headers:
|
|
33
|
+
qa-use api /api/v1/tests -H "X-Custom:value"
|
|
34
|
+
|
|
35
|
+
OpenAPI spec:
|
|
36
|
+
qa-use api openapi
|
|
37
|
+
qa-use api openapi --raw
|
|
38
|
+
|
|
39
|
+
Offline mode (use cached spec):
|
|
40
|
+
qa-use api ls --offline
|
|
41
|
+
qa-use api /api/v1/tests --offline
|
|
42
|
+
`.trimStart();
|
|
43
|
+
export const examplesCommand = new Command('examples')
|
|
44
|
+
.description('Show API command usage examples')
|
|
45
|
+
.action(() => {
|
|
46
|
+
console.log(EXAMPLES);
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=examples.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../../../../../src/cli/commands/api/examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,QAAQ,GAAG;;EAEf,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCf,CAAC,SAAS,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,UAAU,SAGtB,CAAC"}
|
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { examplesCommand } from './examples.js';
|
|
3
|
+
import { infoCommand } from './info.js';
|
|
2
4
|
import { lsCommand } from './ls.js';
|
|
5
|
+
import { openapiCommand } from './openapi.js';
|
|
3
6
|
import { registerApiRequestAction } from './request.js';
|
|
4
7
|
export const apiCommand = registerApiRequestAction(new Command('api').description('Call desplega.ai API endpoints using OpenAPI metadata'), { endpointRequired: false });
|
|
5
8
|
apiCommand.addCommand(lsCommand);
|
|
9
|
+
apiCommand.addCommand(infoCommand);
|
|
10
|
+
apiCommand.addCommand(examplesCommand);
|
|
11
|
+
apiCommand.addCommand(openapiCommand);
|
|
12
|
+
apiCommand.addHelpText('after', `
|
|
13
|
+
Subcommands:
|
|
14
|
+
ls List available API endpoints
|
|
15
|
+
info <route> Show detailed route info (input/output types)
|
|
16
|
+
examples Show example use cases
|
|
17
|
+
openapi Show OpenAPI spec URL (--raw for full JSON)
|
|
18
|
+
|
|
19
|
+
Quick Start:
|
|
20
|
+
qa-use api ls List all endpoints
|
|
21
|
+
qa-use api /api/v1/tests GET request
|
|
22
|
+
qa-use api /api/v1/tests -X POST -f id=1 POST with field
|
|
23
|
+
qa-use api info /api/v1/tests Route details
|
|
24
|
+
qa-use api openapi OpenAPI spec URL
|
|
25
|
+
|
|
26
|
+
Use "api info <route>" for detailed route input/output types.
|
|
27
|
+
`);
|
|
6
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/commands/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,CAAC,MAAM,UAAU,GAAG,wBAAwB,CAChD,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,uDAAuD,CAAC,EACvF,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAC5B,CAAC;AAEF,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/commands/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,CAAC,MAAM,UAAU,GAAG,wBAAwB,CAChD,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,uDAAuD,CAAC,EACvF,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAC5B,CAAC;AAEF,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACjC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACnC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACvC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEtC,UAAU,CAAC,WAAW,CACpB,OAAO,EACP;;;;;;;;;;;;;;;CAeD,CACA,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/api/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,WAAW,SA8CpB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { loadConfig } from '../../lib/config.js';
|
|
3
|
+
import { error, formatError, warning } from '../../lib/output.js';
|
|
4
|
+
import { loadOpenApiSpec } from './lib/openapi-spec.js';
|
|
5
|
+
import { renderRouteInfo } from './lib/output.js';
|
|
6
|
+
import { resolveOperationCandidates } from './lib/route-matching.js';
|
|
7
|
+
function getRefreshMode(options) {
|
|
8
|
+
if (options.refresh && options.offline) {
|
|
9
|
+
throw new Error('Cannot use --refresh and --offline together');
|
|
10
|
+
}
|
|
11
|
+
if (options.refresh)
|
|
12
|
+
return 'refresh';
|
|
13
|
+
if (options.offline)
|
|
14
|
+
return 'offline';
|
|
15
|
+
return 'default';
|
|
16
|
+
}
|
|
17
|
+
export const infoCommand = new Command('info')
|
|
18
|
+
.description('Show detailed info for an API route (input/output types)')
|
|
19
|
+
.argument('<route>', 'API route path, e.g. /api/v1/tests')
|
|
20
|
+
.option('-X, --method <method>', 'Filter by HTTP method (GET, POST, PUT, PATCH, DELETE)')
|
|
21
|
+
.option('--json', 'Output as JSON')
|
|
22
|
+
.option('--refresh', 'Force refresh OpenAPI spec from server')
|
|
23
|
+
.option('--offline', 'Use cached OpenAPI spec only')
|
|
24
|
+
.action(async (route, options) => {
|
|
25
|
+
try {
|
|
26
|
+
const config = await loadConfig();
|
|
27
|
+
const apiUrl = config.api_url || process.env.QA_USE_API_URL || 'https://api.desplega.ai';
|
|
28
|
+
const apiKey = config.api_key || process.env.QA_USE_API_KEY;
|
|
29
|
+
const refreshMode = getRefreshMode(options);
|
|
30
|
+
const openApi = await loadOpenApiSpec({
|
|
31
|
+
apiUrl,
|
|
32
|
+
apiKey,
|
|
33
|
+
refreshMode,
|
|
34
|
+
customHeaders: config.headers,
|
|
35
|
+
});
|
|
36
|
+
if (openApi.stale) {
|
|
37
|
+
for (const message of openApi.warnings) {
|
|
38
|
+
console.error(warning(message));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
let candidates = resolveOperationCandidates(route, openApi.index.operations);
|
|
42
|
+
if (options.method) {
|
|
43
|
+
const expectedMethod = options.method.toUpperCase();
|
|
44
|
+
candidates = candidates.filter((op) => op.method === expectedMethod);
|
|
45
|
+
}
|
|
46
|
+
if (candidates.length === 0) {
|
|
47
|
+
const methodHint = options.method ? ` with method ${options.method.toUpperCase()}` : '';
|
|
48
|
+
console.log(error(`No operations found for ${route}${methodHint}`));
|
|
49
|
+
console.log('Use `qa-use api ls` to list available endpoints.');
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
console.log(renderRouteInfo(candidates, { json: options.json }));
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
console.error(error(`Failed to get route info: ${formatError(err)}`));
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../../src/cli/commands/api/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +1,63 @@
|
|
|
1
|
+
import { type OpenApiSchemaRef, type ResolvedSchema } from './schema-resolver.js';
|
|
1
2
|
export type OpenApiRefreshMode = 'default' | 'refresh' | 'offline';
|
|
2
3
|
interface OpenApiPathOperation {
|
|
3
4
|
summary?: string;
|
|
5
|
+
description?: string;
|
|
4
6
|
operationId?: string;
|
|
5
7
|
tags?: string[];
|
|
6
8
|
parameters?: Array<{
|
|
7
9
|
name?: string;
|
|
8
10
|
in?: string;
|
|
9
11
|
required?: boolean;
|
|
12
|
+
description?: string;
|
|
10
13
|
schema?: {
|
|
11
14
|
type?: string;
|
|
12
15
|
};
|
|
13
16
|
}>;
|
|
14
17
|
requestBody?: {
|
|
15
18
|
required?: boolean;
|
|
19
|
+
content?: Record<string, {
|
|
20
|
+
schema?: OpenApiSchemaRef;
|
|
21
|
+
}>;
|
|
16
22
|
};
|
|
23
|
+
responses?: Record<string, {
|
|
24
|
+
description?: string;
|
|
25
|
+
content?: Record<string, {
|
|
26
|
+
schema?: OpenApiSchemaRef;
|
|
27
|
+
}>;
|
|
28
|
+
}>;
|
|
17
29
|
}
|
|
18
30
|
interface OpenApiSpecDocument {
|
|
19
31
|
openapi: string;
|
|
20
32
|
paths: Record<string, Record<string, OpenApiPathOperation>>;
|
|
21
33
|
components?: {
|
|
22
34
|
securitySchemes?: Record<string, unknown>;
|
|
35
|
+
schemas?: Record<string, OpenApiSchemaRef>;
|
|
23
36
|
};
|
|
24
37
|
}
|
|
38
|
+
export interface NormalizedResponseSchema {
|
|
39
|
+
description?: string;
|
|
40
|
+
schema?: ResolvedSchema;
|
|
41
|
+
}
|
|
25
42
|
export interface NormalizedOperation {
|
|
26
43
|
key: string;
|
|
27
44
|
method: string;
|
|
28
45
|
path: string;
|
|
29
46
|
summary?: string;
|
|
47
|
+
description?: string;
|
|
30
48
|
operationId?: string;
|
|
31
49
|
tags: string[];
|
|
32
50
|
parameters: Array<{
|
|
33
51
|
name: string;
|
|
34
52
|
in: 'path' | 'query' | 'header' | 'cookie' | 'unknown';
|
|
35
53
|
required: boolean;
|
|
54
|
+
description?: string;
|
|
36
55
|
schemaType?: string;
|
|
37
56
|
}>;
|
|
38
57
|
parameterCount: number;
|
|
39
58
|
requestBodyRequired: boolean;
|
|
59
|
+
requestBodySchema?: ResolvedSchema;
|
|
60
|
+
responseSchemas?: Record<string, NormalizedResponseSchema>;
|
|
40
61
|
}
|
|
41
62
|
export interface OpenApiSpecIndex {
|
|
42
63
|
raw: OpenApiSpecDocument;
|
|
@@ -56,6 +77,7 @@ export interface LoadOpenApiSpecOptions {
|
|
|
56
77
|
apiUrl: string;
|
|
57
78
|
apiKey?: string;
|
|
58
79
|
refreshMode?: OpenApiRefreshMode;
|
|
80
|
+
customHeaders?: Record<string, string>;
|
|
59
81
|
}
|
|
60
82
|
export declare function loadOpenApiSpec(options: LoadOpenApiSpecOptions): Promise<LoadedOpenApiSpec>;
|
|
61
83
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi-spec.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/api/lib/openapi-spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openapi-spec.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/api/lib/openapi-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
2
|
import { readOpenApiCache, writeOpenApiCache } from './openapi-cache.js';
|
|
3
3
|
import { formatInvalidSpecError, formatMissingSpecError, formatOfflineCacheMissError, formatStaleCacheWarning, OpenApiError, } from './openapi-errors.js';
|
|
4
|
+
import { resolveSchemaRef } from './schema-resolver.js';
|
|
4
5
|
const HTTP_METHODS = new Set(['get', 'post', 'put', 'patch', 'delete', 'options', 'head']);
|
|
5
6
|
function normalizeApiUrl(apiUrl) {
|
|
6
7
|
return apiUrl.replace(/\/$/, '');
|
|
@@ -30,8 +31,33 @@ function validateOpenApiDocument(spec) {
|
|
|
30
31
|
}
|
|
31
32
|
return candidate;
|
|
32
33
|
}
|
|
34
|
+
function resolveRequestBodySchema(op, componentSchemas) {
|
|
35
|
+
const content = op.requestBody?.content;
|
|
36
|
+
if (!content)
|
|
37
|
+
return undefined;
|
|
38
|
+
const jsonContent = content['application/json'];
|
|
39
|
+
if (!jsonContent?.schema)
|
|
40
|
+
return undefined;
|
|
41
|
+
return resolveSchemaRef(jsonContent.schema, componentSchemas);
|
|
42
|
+
}
|
|
43
|
+
function resolveResponseSchemas(op, componentSchemas) {
|
|
44
|
+
if (!op.responses)
|
|
45
|
+
return undefined;
|
|
46
|
+
const result = {};
|
|
47
|
+
for (const [statusCode, response] of Object.entries(op.responses)) {
|
|
48
|
+
const jsonContent = response.content?.['application/json'];
|
|
49
|
+
result[statusCode] = {
|
|
50
|
+
description: response.description,
|
|
51
|
+
schema: jsonContent?.schema
|
|
52
|
+
? resolveSchemaRef(jsonContent.schema, componentSchemas)
|
|
53
|
+
: undefined,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return Object.keys(result).length > 0 ? result : undefined;
|
|
57
|
+
}
|
|
33
58
|
function normalizeOperations(spec) {
|
|
34
59
|
const operations = {};
|
|
60
|
+
const componentSchemas = spec.components?.schemas || {};
|
|
35
61
|
for (const [path, pathItem] of Object.entries(spec.paths)) {
|
|
36
62
|
if (!pathItem || typeof pathItem !== 'object') {
|
|
37
63
|
continue;
|
|
@@ -48,6 +74,7 @@ function normalizeOperations(spec) {
|
|
|
48
74
|
method: normalizedMethod.toUpperCase(),
|
|
49
75
|
path,
|
|
50
76
|
summary: op.summary,
|
|
77
|
+
description: op.description,
|
|
51
78
|
operationId: op.operationId,
|
|
52
79
|
tags: Array.isArray(op.tags) ? op.tags.filter((tag) => typeof tag === 'string') : [],
|
|
53
80
|
parameters: Array.isArray(op.parameters)
|
|
@@ -62,11 +89,14 @@ function normalizeOperations(spec) {
|
|
|
62
89
|
? parameter.in
|
|
63
90
|
: 'unknown',
|
|
64
91
|
required: Boolean(parameter.required),
|
|
92
|
+
description: parameter.description,
|
|
65
93
|
schemaType: parameter.schema?.type,
|
|
66
94
|
}))
|
|
67
95
|
: [],
|
|
68
96
|
parameterCount: Array.isArray(op.parameters) ? op.parameters.length : 0,
|
|
69
97
|
requestBodyRequired: Boolean(op.requestBody?.required),
|
|
98
|
+
requestBodySchema: resolveRequestBodySchema(op, componentSchemas),
|
|
99
|
+
responseSchemas: resolveResponseSchemas(op, componentSchemas),
|
|
70
100
|
};
|
|
71
101
|
}
|
|
72
102
|
}
|
|
@@ -101,7 +131,9 @@ export async function loadOpenApiSpec(options) {
|
|
|
101
131
|
}
|
|
102
132
|
return fromCache(cache, false);
|
|
103
133
|
}
|
|
104
|
-
const headers = {
|
|
134
|
+
const headers = {
|
|
135
|
+
...options.customHeaders,
|
|
136
|
+
};
|
|
105
137
|
if (options.apiKey) {
|
|
106
138
|
headers.Authorization = `Bearer ${options.apiKey}`;
|
|
107
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi-spec.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/api/lib/openapi-spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAA0B,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,EACvB,YAAY,GACb,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"openapi-spec.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/api/lib/openapi-spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAA0B,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,EACvB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA8C,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAmGpG,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3F,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,sBAAsB,CAAC;AAC1D,CAAC;AAED,SAAS,eAAe,CAAC,IAAa;IACpC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAa;IAC5C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,YAAY,CAAC,sBAAsB,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,SAAS,GAAG,IAAoC,CAAC;IAEvD,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,YAAY,CAAC,sBAAsB,CAAC,kCAAkC,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9F,MAAM,IAAI,YAAY,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,IACE,SAAS,CAAC,UAAU;QACpB,SAAS,CAAC,UAAU,CAAC,eAAe,KAAK,SAAS;QAClD,CAAC,OAAO,SAAS,CAAC,UAAU,CAAC,eAAe,KAAK,QAAQ;YACvD,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EACtD,CAAC;QACD,MAAM,IAAI,YAAY,CACpB,sBAAsB,CAAC,gDAAgD,CAAC,CACzE,CAAC;IACJ,CAAC;IAED,OAAO,SAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,wBAAwB,CAC/B,EAAwB,EACxB,gBAAkD;IAElD,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;IACxC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,sBAAsB,CAC7B,EAAwB,EACxB,gBAAkD;IAElD,IAAI,CAAC,EAAE,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACpC,MAAM,MAAM,GAA6C,EAAE,CAAC;IAC5D,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QAClE,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAC3D,MAAM,CAAC,UAAU,CAAC,GAAG;YACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,MAAM,EAAE,WAAW,EAAE,MAAM;gBACzB,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBACxD,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAyB;IACpD,MAAM,UAAU,GAAwC,EAAE,CAAC;IAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC;IAExD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YAED,MAAM,EAAE,GAAG,SAAS,IAAI,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC;YACxD,UAAU,CAAC,GAAG,CAAC,GAAG;gBAChB,GAAG;gBACH,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE;gBACtC,IAAI;gBACJ,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpF,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC;oBACtC,CAAC,CAAC,EAAE,CAAC,UAAU;yBACV,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;yBAC/C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;wBACnB,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;wBAC5B,EAAE,EACA,SAAS,CAAC,EAAE,KAAK,MAAM;4BACvB,SAAS,CAAC,EAAE,KAAK,OAAO;4BACxB,SAAS,CAAC,EAAE,KAAK,QAAQ;4BACzB,SAAS,CAAC,EAAE,KAAK,QAAQ;4BACvB,CAAC,CAAC,SAAS,CAAC,EAAE;4BACd,CAAC,CAAC,SAAS;wBACf,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;wBACrC,WAAW,EAAE,SAAS,CAAC,WAAW;wBAClC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI;qBACnC,CAAC,CAAC;oBACP,CAAC,CAAC,EAAE;gBACN,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvE,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;gBACtD,iBAAiB,EAAE,wBAAwB,CAAC,EAAE,EAAE,gBAAgB,CAAC;gBACjE,eAAe,EAAE,sBAAsB,CAAC,EAAE,EAAE,gBAAgB,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,WAAW,CAAC,IAAyB;IAC5C,OAAO;QACL,GAAG,EAAE,IAAI;QACT,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAwB,EAAE,KAAc,EAAE,OAAgB;IAC3E,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO;QACL,MAAM,EAAE,OAAO;QACf,KAAK;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA+B;IACnE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;IACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,GAAG,OAAO,CAAC,aAAa;KACzB,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,aAAa,GAAG,UAAU,OAAO,CAAC,MAAM,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,WAAW,KAAK,SAAS,IAAI,KAAK,EAAE,IAAI,EAAE,CAAC;QAC7C,OAAO,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,IAAI,QAAkB,CAAC;IAEvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YAC9C,MAAM,EAAE,KAAK;YACb,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CACpB,sBAAsB,CAAC,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAC3F,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CACd,KAAK,EACL,IAAI,EACJ,uBAAuB,CACrB,MAAM,EACN,KAAK,CAAC,SAAS,EACf,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAC3D,CACF,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CAAC,sBAAsB,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CAAC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,WAAoB,CAAC;IACzB,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,YAAY,CAAC,sBAAsB,CAAC,iCAAiC,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,IAAI,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;IAEvD,iBAAiB,CAAC;QAChB,MAAM;QACN,SAAS;QACT,IAAI;QACJ,QAAQ;QACR,IAAI;KACL,CAAC,CAAC;IAEH,OAAO;QACL,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,KAAK;QACZ,MAAM;QACN,SAAS;QACT,IAAI;QACJ,QAAQ;QACR,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;QACxB,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -5,4 +5,8 @@ export interface RenderListOptions {
|
|
|
5
5
|
json?: boolean;
|
|
6
6
|
}
|
|
7
7
|
export declare function renderOperationList(operations: NormalizedOperation[], options: RenderListOptions): string;
|
|
8
|
+
export interface RenderRouteInfoOptions {
|
|
9
|
+
json?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function renderRouteInfo(operations: NormalizedOperation[], options?: RenderRouteInfoOptions): string;
|
|
8
12
|
//# sourceMappingURL=output.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/api/lib/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/api/lib/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,mBAAmB,CAAC;AAGvF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AASD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,mBAAmB,EAAE,EACjC,OAAO,EAAE,iBAAiB,GACzB,MAAM,CAkCR;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA8FD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,mBAAmB,EAAE,EACjC,OAAO,GAAE,sBAA2B,GACnC,MAAM,CAWR"}
|
|
@@ -28,4 +28,94 @@ export function renderOperationList(operations, options) {
|
|
|
28
28
|
}
|
|
29
29
|
return lines.join('\n');
|
|
30
30
|
}
|
|
31
|
+
function renderSchemaProperties(schema, indent) {
|
|
32
|
+
const lines = [];
|
|
33
|
+
if (!schema.properties || Object.keys(schema.properties).length === 0) {
|
|
34
|
+
return lines;
|
|
35
|
+
}
|
|
36
|
+
const entries = Object.entries(schema.properties);
|
|
37
|
+
const nameWidth = Math.max(5, ...entries.map(([name]) => name.length));
|
|
38
|
+
const typeWidth = Math.max(4, ...entries.map(([, prop]) => prop.type.length));
|
|
39
|
+
lines.push(`${indent}${pad('FIELD', nameWidth)} ${pad('TYPE', typeWidth)} REQUIRED`);
|
|
40
|
+
lines.push(`${indent}${'-'.repeat(nameWidth)} ${'-'.repeat(typeWidth)} ${'-'.repeat(8)}`);
|
|
41
|
+
for (const [name, prop] of entries) {
|
|
42
|
+
lines.push(`${indent}${pad(name, nameWidth)} ${pad(prop.type, typeWidth)} ${prop.required ? 'yes' : 'no'}`);
|
|
43
|
+
}
|
|
44
|
+
return lines;
|
|
45
|
+
}
|
|
46
|
+
function renderResponseSchemas(responses, indent) {
|
|
47
|
+
const lines = [];
|
|
48
|
+
const codes = Object.keys(responses).sort();
|
|
49
|
+
for (const code of codes) {
|
|
50
|
+
const resp = responses[code];
|
|
51
|
+
const desc = resp.description ? ` - ${resp.description}` : '';
|
|
52
|
+
lines.push(`${indent}${code}${desc}`);
|
|
53
|
+
if (resp.schema?.title) {
|
|
54
|
+
lines.push(`${indent} Type: ${resp.schema.title}`);
|
|
55
|
+
}
|
|
56
|
+
else if (resp.schema?.type) {
|
|
57
|
+
lines.push(`${indent} Type: ${resp.schema.type}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return lines;
|
|
61
|
+
}
|
|
62
|
+
function renderSingleRouteInfo(op) {
|
|
63
|
+
const lines = [];
|
|
64
|
+
const indent = ' ';
|
|
65
|
+
lines.push(`${op.method} ${op.path}`);
|
|
66
|
+
if (op.summary)
|
|
67
|
+
lines.push(`${indent}Summary: ${op.summary}`);
|
|
68
|
+
if (op.description)
|
|
69
|
+
lines.push(`${indent}Description: ${op.description}`);
|
|
70
|
+
if (op.tags.length > 0)
|
|
71
|
+
lines.push(`${indent}Tags: ${op.tags.join(', ')}`);
|
|
72
|
+
if (op.operationId)
|
|
73
|
+
lines.push(`${indent}Operation: ${op.operationId}`);
|
|
74
|
+
// Parameters
|
|
75
|
+
const params = op.parameters.filter((p) => p.in !== 'header');
|
|
76
|
+
lines.push('');
|
|
77
|
+
lines.push(`${indent}Parameters:`);
|
|
78
|
+
if (params.length === 0) {
|
|
79
|
+
lines.push(`${indent} (none)`);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const nameW = Math.max(4, ...params.map((p) => p.name.length));
|
|
83
|
+
const typeW = Math.max(4, ...params.map((p) => (p.schemaType || 'string').length));
|
|
84
|
+
for (const p of params) {
|
|
85
|
+
const loc = p.in;
|
|
86
|
+
const req = p.required ? 'required' : 'optional';
|
|
87
|
+
lines.push(`${indent} ${pad(p.name, nameW)} ${pad(p.schemaType || 'string', typeW)} (${loc}, ${req})`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Request body
|
|
91
|
+
if (op.requestBodySchema) {
|
|
92
|
+
const reqLabel = op.requestBodyRequired ? ' (required)' : ' (optional)';
|
|
93
|
+
lines.push('');
|
|
94
|
+
lines.push(`${indent}Request Body${reqLabel}:`);
|
|
95
|
+
if (op.requestBodySchema.title) {
|
|
96
|
+
lines.push(`${indent} ${op.requestBodySchema.title}`);
|
|
97
|
+
}
|
|
98
|
+
const propLines = renderSchemaProperties(op.requestBodySchema, `${indent} `);
|
|
99
|
+
if (propLines.length > 0) {
|
|
100
|
+
lines.push(...propLines);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Responses
|
|
104
|
+
if (op.responseSchemas) {
|
|
105
|
+
lines.push('');
|
|
106
|
+
lines.push(`${indent}Responses:`);
|
|
107
|
+
lines.push(...renderResponseSchemas(op.responseSchemas, `${indent} `));
|
|
108
|
+
}
|
|
109
|
+
return lines;
|
|
110
|
+
}
|
|
111
|
+
export function renderRouteInfo(operations, options = {}) {
|
|
112
|
+
if (options.json) {
|
|
113
|
+
return JSON.stringify(operations.length === 1 ? operations[0] : operations, null, 2);
|
|
114
|
+
}
|
|
115
|
+
if (operations.length === 0) {
|
|
116
|
+
return 'No matching operations found.';
|
|
117
|
+
}
|
|
118
|
+
const sections = operations.map((op) => renderSingleRouteInfo(op));
|
|
119
|
+
return sections.map((lines) => lines.join('\n')).join('\n\n');
|
|
120
|
+
}
|
|
31
121
|
//# sourceMappingURL=output.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/api/lib/output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/api/lib/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NormalizedOperation } from './openapi-spec.js';
|
|
2
|
+
export declare function pathTemplateToRegExp(pathTemplate: string): RegExp;
|
|
3
|
+
export declare function resolveOperationCandidates(path: string, operations: Record<string, NormalizedOperation>): NormalizedOperation[];
|
|
4
|
+
//# sourceMappingURL=route-matching.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-matching.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/api/lib/route-matching.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAC9C,mBAAmB,EAAE,CAIvB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function pathTemplateToRegExp(pathTemplate) {
|
|
2
|
+
const escaped = pathTemplate.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
3
|
+
const pattern = escaped.replace(/\\\{[^/]+\\\}/g, '[^/]+');
|
|
4
|
+
return new RegExp(`^${pattern}$`);
|
|
5
|
+
}
|
|
6
|
+
export function resolveOperationCandidates(path, operations) {
|
|
7
|
+
return Object.values(operations).filter((operation) => pathTemplateToRegExp(operation.path).test(path));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=route-matching.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-matching.js","sourceRoot":"","sources":["../../../../../../src/cli/commands/api/lib/route-matching.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,IAAY,EACZ,UAA+C;IAE/C,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACpD,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAChD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface OpenApiSchemaRef {
|
|
2
|
+
$ref?: string;
|
|
3
|
+
type?: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
properties?: Record<string, OpenApiSchemaRef>;
|
|
7
|
+
items?: OpenApiSchemaRef;
|
|
8
|
+
required?: string[];
|
|
9
|
+
anyOf?: OpenApiSchemaRef[];
|
|
10
|
+
allOf?: OpenApiSchemaRef[];
|
|
11
|
+
oneOf?: OpenApiSchemaRef[];
|
|
12
|
+
additionalProperties?: boolean | OpenApiSchemaRef;
|
|
13
|
+
enum?: unknown[];
|
|
14
|
+
format?: string;
|
|
15
|
+
default?: unknown;
|
|
16
|
+
}
|
|
17
|
+
export interface ResolvedSchemaProperty {
|
|
18
|
+
type: string;
|
|
19
|
+
required: boolean;
|
|
20
|
+
description?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ResolvedSchema {
|
|
23
|
+
type?: string;
|
|
24
|
+
title?: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
properties?: Record<string, ResolvedSchemaProperty>;
|
|
27
|
+
}
|
|
28
|
+
export declare function formatSchemaType(schema: OpenApiSchemaRef | undefined): string;
|
|
29
|
+
export declare function resolveSchemaRef(schema: OpenApiSchemaRef | undefined, componentSchemas?: Record<string, OpenApiSchemaRef>): ResolvedSchema | undefined;
|
|
30
|
+
//# sourceMappingURL=schema-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-resolver.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/commands/api/lib/schema-resolver.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC;IAClD,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CACrD;AAOD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAkC7E;AAUD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAM,GACtD,cAAc,GAAG,SAAS,CAqC5B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
function extractRefName(ref) {
|
|
2
|
+
const parts = ref.split('/');
|
|
3
|
+
return parts[parts.length - 1];
|
|
4
|
+
}
|
|
5
|
+
export function formatSchemaType(schema) {
|
|
6
|
+
if (!schema) {
|
|
7
|
+
return 'unknown';
|
|
8
|
+
}
|
|
9
|
+
if (schema.$ref) {
|
|
10
|
+
return extractRefName(schema.$ref);
|
|
11
|
+
}
|
|
12
|
+
if (schema.anyOf) {
|
|
13
|
+
const types = schema.anyOf.map((s) => formatSchemaType(s));
|
|
14
|
+
return types.join(' | ');
|
|
15
|
+
}
|
|
16
|
+
if (schema.oneOf) {
|
|
17
|
+
const types = schema.oneOf.map((s) => formatSchemaType(s));
|
|
18
|
+
return types.join(' | ');
|
|
19
|
+
}
|
|
20
|
+
if (schema.allOf) {
|
|
21
|
+
const types = schema.allOf.map((s) => formatSchemaType(s));
|
|
22
|
+
return types.join(' & ');
|
|
23
|
+
}
|
|
24
|
+
if (schema.type === 'array') {
|
|
25
|
+
const itemType = schema.items ? formatSchemaType(schema.items) : 'unknown';
|
|
26
|
+
return `array<${itemType}>`;
|
|
27
|
+
}
|
|
28
|
+
if (schema.type) {
|
|
29
|
+
return schema.type;
|
|
30
|
+
}
|
|
31
|
+
return 'unknown';
|
|
32
|
+
}
|
|
33
|
+
function lookupRef(ref, componentSchemas) {
|
|
34
|
+
const name = extractRefName(ref);
|
|
35
|
+
return componentSchemas[name];
|
|
36
|
+
}
|
|
37
|
+
export function resolveSchemaRef(schema, componentSchemas = {}) {
|
|
38
|
+
if (!schema) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
let resolved = schema;
|
|
42
|
+
if (schema.$ref) {
|
|
43
|
+
const looked = lookupRef(schema.$ref, componentSchemas);
|
|
44
|
+
if (!looked) {
|
|
45
|
+
return { type: extractRefName(schema.$ref), title: extractRefName(schema.$ref) };
|
|
46
|
+
}
|
|
47
|
+
resolved = looked;
|
|
48
|
+
}
|
|
49
|
+
if (resolved.allOf) {
|
|
50
|
+
return mergeAllOf(resolved.allOf, componentSchemas, resolved);
|
|
51
|
+
}
|
|
52
|
+
const result = {
|
|
53
|
+
type: formatSchemaType(resolved),
|
|
54
|
+
title: resolved.title,
|
|
55
|
+
description: resolved.description,
|
|
56
|
+
};
|
|
57
|
+
if (resolved.properties) {
|
|
58
|
+
const requiredSet = new Set(resolved.required || []);
|
|
59
|
+
result.properties = {};
|
|
60
|
+
for (const [name, propSchema] of Object.entries(resolved.properties)) {
|
|
61
|
+
result.properties[name] = {
|
|
62
|
+
type: formatSchemaType(propSchema),
|
|
63
|
+
required: requiredSet.has(name),
|
|
64
|
+
description: propSchema.description,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
function mergeAllOf(schemas, componentSchemas, parent) {
|
|
71
|
+
const merged = {
|
|
72
|
+
type: 'object',
|
|
73
|
+
title: parent.title,
|
|
74
|
+
description: parent.description,
|
|
75
|
+
properties: {},
|
|
76
|
+
};
|
|
77
|
+
for (const sub of schemas) {
|
|
78
|
+
const resolved = resolveSchemaRef(sub, componentSchemas);
|
|
79
|
+
if (resolved?.properties) {
|
|
80
|
+
Object.assign(merged.properties, resolved.properties);
|
|
81
|
+
}
|
|
82
|
+
if (!merged.title && resolved?.title) {
|
|
83
|
+
merged.title = resolved.title;
|
|
84
|
+
}
|
|
85
|
+
if (!merged.description && resolved?.description) {
|
|
86
|
+
merged.description = resolved.description;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return merged;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=schema-resolver.js.map
|