@loxtep/sdk 0.1.0
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/CHANGELOG.md +30 -0
- package/README.md +274 -0
- package/dist/auth/index.d.ts +6 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +4 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/jwt.d.ts +10 -0
- package/dist/auth/jwt.d.ts.map +1 -0
- package/dist/auth/jwt.js +24 -0
- package/dist/auth/jwt.js.map +1 -0
- package/dist/auth/login.d.ts +49 -0
- package/dist/auth/login.d.ts.map +1 -0
- package/dist/auth/login.js +131 -0
- package/dist/auth/login.js.map +1 -0
- package/dist/auth/token-manager.d.ts +30 -0
- package/dist/auth/token-manager.d.ts.map +1 -0
- package/dist/auth/token-manager.js +61 -0
- package/dist/auth/token-manager.js.map +1 -0
- package/dist/checkpoint/index.d.ts +6 -0
- package/dist/checkpoint/index.d.ts.map +1 -0
- package/dist/checkpoint/index.js +5 -0
- package/dist/checkpoint/index.js.map +1 -0
- package/dist/checkpoint/memory-store.d.ts +6 -0
- package/dist/checkpoint/memory-store.d.ts.map +1 -0
- package/dist/checkpoint/memory-store.js +16 -0
- package/dist/checkpoint/memory-store.js.map +1 -0
- package/dist/checkpoint/types.d.ts +14 -0
- package/dist/checkpoint/types.d.ts.map +1 -0
- package/dist/checkpoint/types.js +5 -0
- package/dist/checkpoint/types.js.map +1 -0
- package/dist/cli/auth-resolve.d.ts +19 -0
- package/dist/cli/auth-resolve.d.ts.map +1 -0
- package/dist/cli/auth-resolve.js +25 -0
- package/dist/cli/auth-resolve.js.map +1 -0
- package/dist/cli/commands/bus-cmd.d.ts +6 -0
- package/dist/cli/commands/bus-cmd.d.ts.map +1 -0
- package/dist/cli/commands/bus-cmd.js +19 -0
- package/dist/cli/commands/bus-cmd.js.map +1 -0
- package/dist/cli/commands/config-cmd.d.ts +105 -0
- package/dist/cli/commands/config-cmd.d.ts.map +1 -0
- package/dist/cli/commands/config-cmd.js +334 -0
- package/dist/cli/commands/config-cmd.js.map +1 -0
- package/dist/cli/commands/connections-cmd.d.ts +19 -0
- package/dist/cli/commands/connections-cmd.d.ts.map +1 -0
- package/dist/cli/commands/connections-cmd.js +39 -0
- package/dist/cli/commands/connections-cmd.js.map +1 -0
- package/dist/cli/commands/data-assets-cmd.d.ts +12 -0
- package/dist/cli/commands/data-assets-cmd.d.ts.map +1 -0
- package/dist/cli/commands/data-assets-cmd.js +75 -0
- package/dist/cli/commands/data-assets-cmd.js.map +1 -0
- package/dist/cli/commands/data-contracts-cmd.d.ts +12 -0
- package/dist/cli/commands/data-contracts-cmd.d.ts.map +1 -0
- package/dist/cli/commands/data-contracts-cmd.js +28 -0
- package/dist/cli/commands/data-contracts-cmd.js.map +1 -0
- package/dist/cli/commands/data-products-cmd.d.ts +15 -0
- package/dist/cli/commands/data-products-cmd.d.ts.map +1 -0
- package/dist/cli/commands/data-products-cmd.js +30 -0
- package/dist/cli/commands/data-products-cmd.js.map +1 -0
- package/dist/cli/commands/domains-cmd.d.ts +12 -0
- package/dist/cli/commands/domains-cmd.d.ts.map +1 -0
- package/dist/cli/commands/domains-cmd.js +28 -0
- package/dist/cli/commands/domains-cmd.js.map +1 -0
- package/dist/cli/commands/flows-cmd.d.ts +19 -0
- package/dist/cli/commands/flows-cmd.d.ts.map +1 -0
- package/dist/cli/commands/flows-cmd.js +37 -0
- package/dist/cli/commands/flows-cmd.js.map +1 -0
- package/dist/cli/commands/login.d.ts +28 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +110 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +5 -0
- package/dist/cli/commands/logout.d.ts.map +1 -0
- package/dist/cli/commands/logout.js +9 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/metrics-cmd.d.ts +15 -0
- package/dist/cli/commands/metrics-cmd.d.ts.map +1 -0
- package/dist/cli/commands/metrics-cmd.js +21 -0
- package/dist/cli/commands/metrics-cmd.js.map +1 -0
- package/dist/cli/commands/observe-cmd.d.ts +10 -0
- package/dist/cli/commands/observe-cmd.d.ts.map +1 -0
- package/dist/cli/commands/observe-cmd.js +10 -0
- package/dist/cli/commands/observe-cmd.js.map +1 -0
- package/dist/cli/commands/pipelines-cmd.d.ts +17 -0
- package/dist/cli/commands/pipelines-cmd.d.ts.map +1 -0
- package/dist/cli/commands/pipelines-cmd.js +52 -0
- package/dist/cli/commands/pipelines-cmd.js.map +1 -0
- package/dist/cli/commands/promises-cmd.d.ts +11 -0
- package/dist/cli/commands/promises-cmd.d.ts.map +1 -0
- package/dist/cli/commands/promises-cmd.js +53 -0
- package/dist/cli/commands/promises-cmd.js.map +1 -0
- package/dist/cli/commands/queue-cmd.d.ts +13 -0
- package/dist/cli/commands/queue-cmd.d.ts.map +1 -0
- package/dist/cli/commands/queue-cmd.js +21 -0
- package/dist/cli/commands/queue-cmd.js.map +1 -0
- package/dist/cli/commands/standards-cmd.d.ts +12 -0
- package/dist/cli/commands/standards-cmd.d.ts.map +1 -0
- package/dist/cli/commands/standards-cmd.js +28 -0
- package/dist/cli/commands/standards-cmd.js.map +1 -0
- package/dist/cli/commands/whoami.d.ts +24 -0
- package/dist/cli/commands/whoami.d.ts.map +1 -0
- package/dist/cli/commands/whoami.js +46 -0
- package/dist/cli/commands/whoami.js.map +1 -0
- package/dist/cli/commands/workflows-cmd.d.ts +18 -0
- package/dist/cli/commands/workflows-cmd.d.ts.map +1 -0
- package/dist/cli/commands/workflows-cmd.js +32 -0
- package/dist/cli/commands/workflows-cmd.js.map +1 -0
- package/dist/cli/create-cli-client.d.ts +32 -0
- package/dist/cli/create-cli-client.d.ts.map +1 -0
- package/dist/cli/create-cli-client.js +143 -0
- package/dist/cli/create-cli-client.js.map +1 -0
- package/dist/cli/credentials.d.ts +25 -0
- package/dist/cli/credentials.d.ts.map +1 -0
- package/dist/cli/credentials.js +70 -0
- package/dist/cli/credentials.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +424 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/client/catalog-types.d.ts +22 -0
- package/dist/client/catalog-types.d.ts.map +1 -0
- package/dist/client/catalog-types.js +5 -0
- package/dist/client/catalog-types.js.map +1 -0
- package/dist/client/catalog.d.ts +9 -0
- package/dist/client/catalog.d.ts.map +1 -0
- package/dist/client/catalog.js +29 -0
- package/dist/client/catalog.js.map +1 -0
- package/dist/client/connection-types.d.ts +98 -0
- package/dist/client/connection-types.d.ts.map +1 -0
- package/dist/client/connection-types.js +18 -0
- package/dist/client/connection-types.js.map +1 -0
- package/dist/client/connections.d.ts +18 -0
- package/dist/client/connections.d.ts.map +1 -0
- package/dist/client/connections.js +66 -0
- package/dist/client/connections.js.map +1 -0
- package/dist/client/connectors-types.d.ts +61 -0
- package/dist/client/connectors-types.d.ts.map +1 -0
- package/dist/client/connectors-types.js +6 -0
- package/dist/client/connectors-types.js.map +1 -0
- package/dist/client/connectors.d.ts +27 -0
- package/dist/client/connectors.d.ts.map +1 -0
- package/dist/client/connectors.js +71 -0
- package/dist/client/connectors.js.map +1 -0
- package/dist/client/consumptions-types.d.ts +80 -0
- package/dist/client/consumptions-types.d.ts.map +1 -0
- package/dist/client/consumptions-types.js +5 -0
- package/dist/client/consumptions-types.js.map +1 -0
- package/dist/client/consumptions.d.ts +14 -0
- package/dist/client/consumptions.d.ts.map +1 -0
- package/dist/client/consumptions.js +47 -0
- package/dist/client/consumptions.js.map +1 -0
- package/dist/client/data-assets-types.d.ts +150 -0
- package/dist/client/data-assets-types.d.ts.map +1 -0
- package/dist/client/data-assets-types.js +5 -0
- package/dist/client/data-assets-types.js.map +1 -0
- package/dist/client/data-assets.d.ts +31 -0
- package/dist/client/data-assets.d.ts.map +1 -0
- package/dist/client/data-assets.js +182 -0
- package/dist/client/data-assets.js.map +1 -0
- package/dist/client/data-product-resolver.d.ts +92 -0
- package/dist/client/data-product-resolver.d.ts.map +1 -0
- package/dist/client/data-product-resolver.js +165 -0
- package/dist/client/data-product-resolver.js.map +1 -0
- package/dist/client/data-products-types.d.ts +182 -0
- package/dist/client/data-products-types.d.ts.map +1 -0
- package/dist/client/data-products-types.js +5 -0
- package/dist/client/data-products-types.js.map +1 -0
- package/dist/client/data-products.d.ts +63 -0
- package/dist/client/data-products.d.ts.map +1 -0
- package/dist/client/data-products.js +461 -0
- package/dist/client/data-products.js.map +1 -0
- package/dist/client/discovery-types.d.ts +74 -0
- package/dist/client/discovery-types.d.ts.map +1 -0
- package/dist/client/discovery-types.js +6 -0
- package/dist/client/discovery-types.js.map +1 -0
- package/dist/client/discovery.d.ts +14 -0
- package/dist/client/discovery.d.ts.map +1 -0
- package/dist/client/discovery.js +57 -0
- package/dist/client/discovery.js.map +1 -0
- package/dist/client/domains-types.d.ts +46 -0
- package/dist/client/domains-types.d.ts.map +1 -0
- package/dist/client/domains-types.js +6 -0
- package/dist/client/domains-types.js.map +1 -0
- package/dist/client/domains.d.ts +11 -0
- package/dist/client/domains.d.ts.map +1 -0
- package/dist/client/domains.js +39 -0
- package/dist/client/domains.js.map +1 -0
- package/dist/client/flow-queue-resolve.d.ts +9 -0
- package/dist/client/flow-queue-resolve.d.ts.map +1 -0
- package/dist/client/flow-queue-resolve.js +17 -0
- package/dist/client/flow-queue-resolve.js.map +1 -0
- package/dist/client/flow-types.d.ts +112 -0
- package/dist/client/flow-types.d.ts.map +1 -0
- package/dist/client/flow-types.js +6 -0
- package/dist/client/flow-types.js.map +1 -0
- package/dist/client/flows.d.ts +33 -0
- package/dist/client/flows.d.ts.map +1 -0
- package/dist/client/flows.js +293 -0
- package/dist/client/flows.js.map +1 -0
- package/dist/client/index.d.ts +28 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/instances-types.d.ts +40 -0
- package/dist/client/instances-types.d.ts.map +1 -0
- package/dist/client/instances-types.js +6 -0
- package/dist/client/instances-types.js.map +1 -0
- package/dist/client/instances.d.ts +29 -0
- package/dist/client/instances.d.ts.map +1 -0
- package/dist/client/instances.js +41 -0
- package/dist/client/instances.js.map +1 -0
- package/dist/client/loxtep-client.d.ts +111 -0
- package/dist/client/loxtep-client.d.ts.map +1 -0
- package/dist/client/loxtep-client.js +262 -0
- package/dist/client/loxtep-client.js.map +1 -0
- package/dist/client/observe-types.d.ts +17 -0
- package/dist/client/observe-types.d.ts.map +1 -0
- package/dist/client/observe-types.js +5 -0
- package/dist/client/observe-types.js.map +1 -0
- package/dist/client/observe.d.ts +15 -0
- package/dist/client/observe.d.ts.map +1 -0
- package/dist/client/observe.js +22 -0
- package/dist/client/observe.js.map +1 -0
- package/dist/client/pipelines-types.d.ts +3 -0
- package/dist/client/pipelines-types.d.ts.map +1 -0
- package/dist/client/pipelines-types.js +3 -0
- package/dist/client/pipelines-types.js.map +1 -0
- package/dist/client/pipelines.d.ts +3 -0
- package/dist/client/pipelines.d.ts.map +1 -0
- package/dist/client/pipelines.js +3 -0
- package/dist/client/pipelines.js.map +1 -0
- package/dist/client/procedures-types.d.ts +25 -0
- package/dist/client/procedures-types.d.ts.map +1 -0
- package/dist/client/procedures-types.js +6 -0
- package/dist/client/procedures-types.js.map +1 -0
- package/dist/client/procedures.d.ts +19 -0
- package/dist/client/procedures.d.ts.map +1 -0
- package/dist/client/procedures.js +33 -0
- package/dist/client/procedures.js.map +1 -0
- package/dist/client/process-intelligence-types.d.ts +45 -0
- package/dist/client/process-intelligence-types.d.ts.map +1 -0
- package/dist/client/process-intelligence-types.js +6 -0
- package/dist/client/process-intelligence-types.js.map +1 -0
- package/dist/client/process-intelligence.d.ts +17 -0
- package/dist/client/process-intelligence.d.ts.map +1 -0
- package/dist/client/process-intelligence.js +50 -0
- package/dist/client/process-intelligence.js.map +1 -0
- package/dist/client/projects-types.d.ts +79 -0
- package/dist/client/projects-types.d.ts.map +1 -0
- package/dist/client/projects-types.js +6 -0
- package/dist/client/projects-types.js.map +1 -0
- package/dist/client/projects.d.ts +19 -0
- package/dist/client/projects.d.ts.map +1 -0
- package/dist/client/projects.js +53 -0
- package/dist/client/projects.js.map +1 -0
- package/dist/client/promises-types.d.ts +56 -0
- package/dist/client/promises-types.d.ts.map +1 -0
- package/dist/client/promises-types.js +6 -0
- package/dist/client/promises-types.js.map +1 -0
- package/dist/client/promises.d.ts +11 -0
- package/dist/client/promises.d.ts.map +1 -0
- package/dist/client/promises.js +41 -0
- package/dist/client/promises.js.map +1 -0
- package/dist/client/quality-types.d.ts +62 -0
- package/dist/client/quality-types.d.ts.map +1 -0
- package/dist/client/quality-types.js +5 -0
- package/dist/client/quality-types.js.map +1 -0
- package/dist/client/quality.d.ts +12 -0
- package/dist/client/quality.d.ts.map +1 -0
- package/dist/client/quality.js +57 -0
- package/dist/client/quality.js.map +1 -0
- package/dist/client/queue-types.d.ts +84 -0
- package/dist/client/queue-types.d.ts.map +1 -0
- package/dist/client/queue-types.js +5 -0
- package/dist/client/queue-types.js.map +1 -0
- package/dist/client/queues.d.ts +61 -0
- package/dist/client/queues.d.ts.map +1 -0
- package/dist/client/queues.js +138 -0
- package/dist/client/queues.js.map +1 -0
- package/dist/client/schemas-types.d.ts +27 -0
- package/dist/client/schemas-types.d.ts.map +1 -0
- package/dist/client/schemas-types.js +5 -0
- package/dist/client/schemas-types.js.map +1 -0
- package/dist/client/schemas.d.ts +11 -0
- package/dist/client/schemas.d.ts.map +1 -0
- package/dist/client/schemas.js +22 -0
- package/dist/client/schemas.js.map +1 -0
- package/dist/client/standards-types.d.ts +45 -0
- package/dist/client/standards-types.d.ts.map +1 -0
- package/dist/client/standards-types.js +6 -0
- package/dist/client/standards-types.js.map +1 -0
- package/dist/client/standards.d.ts +11 -0
- package/dist/client/standards.d.ts.map +1 -0
- package/dist/client/standards.js +41 -0
- package/dist/client/standards.js.map +1 -0
- package/dist/client/stubs.d.ts +35 -0
- package/dist/client/stubs.d.ts.map +1 -0
- package/dist/client/stubs.js +30 -0
- package/dist/client/stubs.js.map +1 -0
- package/dist/client/templates-types.d.ts +70 -0
- package/dist/client/templates-types.d.ts.map +1 -0
- package/dist/client/templates-types.js +7 -0
- package/dist/client/templates-types.js.map +1 -0
- package/dist/client/templates.d.ts +12 -0
- package/dist/client/templates.d.ts.map +1 -0
- package/dist/client/templates.js +38 -0
- package/dist/client/templates.js.map +1 -0
- package/dist/client/thesaurus-types.d.ts +28 -0
- package/dist/client/thesaurus-types.d.ts.map +1 -0
- package/dist/client/thesaurus-types.js +5 -0
- package/dist/client/thesaurus-types.js.map +1 -0
- package/dist/client/thesaurus.d.ts +11 -0
- package/dist/client/thesaurus.d.ts.map +1 -0
- package/dist/client/thesaurus.js +35 -0
- package/dist/client/thesaurus.js.map +1 -0
- package/dist/client/types.d.ts +80 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/versions-types.d.ts +47 -0
- package/dist/client/versions-types.d.ts.map +1 -0
- package/dist/client/versions-types.js +9 -0
- package/dist/client/versions-types.js.map +1 -0
- package/dist/client/versions.d.ts +14 -0
- package/dist/client/versions.d.ts.map +1 -0
- package/dist/client/versions.js +14 -0
- package/dist/client/versions.js.map +1 -0
- package/dist/client/workflows-types.d.ts +56 -0
- package/dist/client/workflows-types.d.ts.map +1 -0
- package/dist/client/workflows-types.js +6 -0
- package/dist/client/workflows-types.js.map +1 -0
- package/dist/client/workflows.d.ts +15 -0
- package/dist/client/workflows.d.ts.map +1 -0
- package/dist/client/workflows.js +50 -0
- package/dist/client/workflows.js.map +1 -0
- package/dist/config/api-path.d.ts +17 -0
- package/dist/config/api-path.d.ts.map +1 -0
- package/dist/config/api-path.js +57 -0
- package/dist/config/api-path.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +9 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/load.d.ts +12 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +152 -0
- package/dist/config/load.js.map +1 -0
- package/dist/config/paths.d.ts +5 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +11 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/platform-request-url.d.ts +35 -0
- package/dist/config/platform-request-url.d.ts.map +1 -0
- package/dist/config/platform-request-url.js +100 -0
- package/dist/config/platform-request-url.js.map +1 -0
- package/dist/config/resolve-sdk-urls.d.ts +39 -0
- package/dist/config/resolve-sdk-urls.d.ts.map +1 -0
- package/dist/config/resolve-sdk-urls.js +130 -0
- package/dist/config/resolve-sdk-urls.js.map +1 -0
- package/dist/config/save.d.ts +7 -0
- package/dist/config/save.d.ts.map +1 -0
- package/dist/config/save.js +26 -0
- package/dist/config/save.js.map +1 -0
- package/dist/config/streams-partial.d.ts +9 -0
- package/dist/config/streams-partial.d.ts.map +1 -0
- package/dist/config/streams-partial.js +30 -0
- package/dist/config/streams-partial.js.map +1 -0
- package/dist/config/types.d.ts +37 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +11 -0
- package/dist/config/types.js.map +1 -0
- package/dist/errors/auth.d.ts +10 -0
- package/dist/errors/auth.d.ts.map +1 -0
- package/dist/errors/auth.js +26 -0
- package/dist/errors/auth.js.map +1 -0
- package/dist/errors/base.d.ts +15 -0
- package/dist/errors/base.d.ts.map +1 -0
- package/dist/errors/base.js +32 -0
- package/dist/errors/base.js.map +1 -0
- package/dist/errors/index.d.ts +15 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +14 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/parse-http.d.ts +13 -0
- package/dist/errors/parse-http.d.ts.map +1 -0
- package/dist/errors/parse-http.js +68 -0
- package/dist/errors/parse-http.js.map +1 -0
- package/dist/errors/rate-limit.d.ts +17 -0
- package/dist/errors/rate-limit.d.ts.map +1 -0
- package/dist/errors/rate-limit.js +23 -0
- package/dist/errors/rate-limit.js.map +1 -0
- package/dist/errors/resource.d.ts +18 -0
- package/dist/errors/resource.d.ts.map +1 -0
- package/dist/errors/resource.js +32 -0
- package/dist/errors/resource.js.map +1 -0
- package/dist/errors/streaming.d.ts +19 -0
- package/dist/errors/streaming.d.ts.map +1 -0
- package/dist/errors/streaming.js +32 -0
- package/dist/errors/streaming.js.map +1 -0
- package/dist/errors/types.d.ts +44 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +2 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/errors/validation.d.ts +23 -0
- package/dist/errors/validation.d.ts.map +1 -0
- package/dist/errors/validation.js +37 -0
- package/dist/errors/validation.js.map +1 -0
- package/dist/http/client.d.ts +51 -0
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/client.js +164 -0
- package/dist/http/client.js.map +1 -0
- package/dist/http/index.d.ts +5 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +3 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/signer.d.ts +15 -0
- package/dist/http/signer.d.ts.map +1 -0
- package/dist/http/signer.js +55 -0
- package/dist/http/signer.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/rstreams/configuration.d.ts +11 -0
- package/dist/rstreams/configuration.d.ts.map +1 -0
- package/dist/rstreams/configuration.js +43 -0
- package/dist/rstreams/configuration.js.map +1 -0
- package/dist/rstreams/event-bridge.d.ts +16 -0
- package/dist/rstreams/event-bridge.d.ts.map +1 -0
- package/dist/rstreams/event-bridge.js +45 -0
- package/dist/rstreams/event-bridge.js.map +1 -0
- package/dist/rstreams/leo-runtime.d.ts +9 -0
- package/dist/rstreams/leo-runtime.d.ts.map +1 -0
- package/dist/rstreams/leo-runtime.js +14 -0
- package/dist/rstreams/leo-runtime.js.map +1 -0
- package/dist/streaming/index.d.ts +2 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +2 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/streaming/transformer.d.ts +15 -0
- package/dist/streaming/transformer.d.ts.map +1 -0
- package/dist/streaming/transformer.js +25 -0
- package/dist/streaming/transformer.js.map +1 -0
- package/dist/types/generated-api.d.ts +146 -0
- package/dist/types/generated-api.d.ts.map +1 -0
- package/dist/types/generated-api.js +7 -0
- package/dist/types/generated-api.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/docs/event-replay-cookbook.md +152 -0
- package/docs/getting-started.md +332 -0
- package/docs/quick-reference.md +256 -0
- package/docs/sdk-bus-rbac-threat-model.md +46 -0
- package/docs/sdk-control-vs-data-plane.md +32 -0
- package/docs/sdk-ingestion-export-guide.md +480 -0
- package/docs/sdk-mcp-mapping.md +20 -0
- package/docs/sdk-pairing.md +42 -0
- package/docs/sdk-rest-vs-bus.md +131 -0
- package/package.json +85 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { buildAuthServiceUrl, extendClientBaseUrl } from './api-path.js';
|
|
2
|
+
import { buildPlatformRequestUrl } from './platform-request-url.js';
|
|
3
|
+
/** Placeholder UUIDs for `loxtep config paths` (not real resource IDs). */
|
|
4
|
+
const PH_ID = '00000000-0000-0000-0000-000000000001';
|
|
5
|
+
const PH_Q = 'queue-name';
|
|
6
|
+
/**
|
|
7
|
+
* One example path per LoxtepClient surface (see `src/client/*.ts`). Used only for `resolveSdkApiPaths` / CLI output.
|
|
8
|
+
*/
|
|
9
|
+
export const SDK_EXAMPLE_PATHS = [
|
|
10
|
+
{ label: 'data_products: list, create', path: '/dataproducts' },
|
|
11
|
+
{ label: 'data_products: get, schema', path: `/dataproducts/${PH_ID}` },
|
|
12
|
+
{ label: 'data_products: post query', path: '/dataproducts/query' },
|
|
13
|
+
{ label: 'data_products: list tables', path: `/dataproducts/${PH_ID}/tables` },
|
|
14
|
+
{ label: 'data_products: catalog / internal search', path: '/search' },
|
|
15
|
+
{ label: 'templates: list, get', path: '/dataproducts/templates' },
|
|
16
|
+
{ label: 'quality: list, get', path: '/dataproducts/quality-metrics' },
|
|
17
|
+
{ label: 'data_contracts: list, get', path: '/dataproducts/datacontracts' },
|
|
18
|
+
{ label: 'consumptions: per data product', path: `/dataproducts/${PH_ID}/consumptions` },
|
|
19
|
+
{ label: 'flows, workflows: list, create', path: '/workflows/workflows' },
|
|
20
|
+
{ label: 'flows, workflows: get + graph', path: `/workflows/workflows/${PH_ID}/graph` },
|
|
21
|
+
{ label: 'projects: list, crud, apply template', path: '/workflows/projects' },
|
|
22
|
+
{ label: 'projects: deploy', path: `/workflows/projects/${PH_ID}/deploy` },
|
|
23
|
+
{ label: 'connections: crud, test', path: '/workflows/connections' },
|
|
24
|
+
{ label: 'domains: list, get', path: '/organizations/domains' },
|
|
25
|
+
{ label: 'instances: list, get', path: '/organizations/instances' },
|
|
26
|
+
{ label: 'standards: list, get', path: '/governance/standards' },
|
|
27
|
+
{ label: 'connectors: org-level', path: '/connectors/connectors' },
|
|
28
|
+
{ label: 'observe: bot status', path: '/observe/bots' },
|
|
29
|
+
{ label: 'observe: stream bus resource names (proxy)', path: '/observe/stream-config' },
|
|
30
|
+
{ label: 'queues: reader checkpoint (HTTP)', path: '/observe/queues/checkpoint' },
|
|
31
|
+
{ label: 'trace: replay / HTTP fallback', path: `/observe/trace/${PH_Q}/events` },
|
|
32
|
+
{ label: 'discovery: MCP tool call', path: '/ai/mcp/tools/call' },
|
|
33
|
+
{ label: 'thesaurus: terms', path: `/graph/organizations/${PH_ID}/thesaurus` },
|
|
34
|
+
{
|
|
35
|
+
label: 'process_intelligence: decision traces',
|
|
36
|
+
path: `/process-intelligence/organizations/${PH_ID}/decision-traces`,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
label: 'process_intelligence: entity context',
|
|
40
|
+
path: `/process-intelligence/organizations/${PH_ID}/context`,
|
|
41
|
+
},
|
|
42
|
+
{ label: 'procedures: list', path: `/process-intelligence/organizations/${PH_ID}/procedures` },
|
|
43
|
+
{ label: 'client: rate limit probe', path: '/rate-limits' },
|
|
44
|
+
];
|
|
45
|
+
function configApiOrigin(apiUrl) {
|
|
46
|
+
const raw = (apiUrl || '').trim();
|
|
47
|
+
if (!raw)
|
|
48
|
+
return '';
|
|
49
|
+
try {
|
|
50
|
+
return new URL(/^https?:\/\//i.test(raw) ? raw : `https://${raw}`).origin;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return raw.replace(/\/$/, '');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Resolve an SDK-relative path the same way `LoxtepClient` does (platform vs legacy). Exported for tools/tests. */
|
|
57
|
+
export function resolveConfigSdkPath(c, sdkPath) {
|
|
58
|
+
const hasLegacyPrefix = c.api_path_prefix != null && String(c.api_path_prefix).length > 0;
|
|
59
|
+
const path = sdkPath.startsWith('/') ? sdkPath : `/${sdkPath}`;
|
|
60
|
+
if (hasLegacyPrefix) {
|
|
61
|
+
return `${extendClientBaseUrl(c.api_url || '', c.api_path_prefix).replace(/\/$/, '')}${path}`;
|
|
62
|
+
}
|
|
63
|
+
const origin = configApiOrigin(c.api_url || '');
|
|
64
|
+
if (!origin)
|
|
65
|
+
return '';
|
|
66
|
+
return buildPlatformRequestUrl(origin, path);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Derive concrete URLs from config (after env/file merge in {@link loadConfig}).
|
|
70
|
+
* - Auth: `buildAuthServiceUrl` → default first segment `app` for `/auth/*` when `auth_path_prefix` is unset.
|
|
71
|
+
* - LoxtepClient (default): `api_url` = API **origin**; data-plane paths are resolved with `buildPlatformRequestUrl` (see `config/platform-request-url.ts`).
|
|
72
|
+
* - Legacy: `api_path_prefix` set → one static `base_url` = `api_url` + that segment (old behavior).
|
|
73
|
+
*/
|
|
74
|
+
export function resolveSdkApiPaths(c) {
|
|
75
|
+
const raw = (c.api_url || '').trim().replace(/\/$/, '');
|
|
76
|
+
const post_auth_login = buildAuthServiceUrl(raw, c.auth_path_prefix, '/auth/login');
|
|
77
|
+
const post_auth_refresh = buildAuthServiceUrl(raw, c.auth_path_prefix, '/auth/refresh');
|
|
78
|
+
const hasLegacyPrefix = c.api_path_prefix != null && String(c.api_path_prefix).length > 0;
|
|
79
|
+
const loxtep_url_mode = hasLegacyPrefix ? 'legacy' : 'platform';
|
|
80
|
+
const origin = configApiOrigin(c.api_url || '');
|
|
81
|
+
const loxtep_client_base_url = hasLegacyPrefix
|
|
82
|
+
? extendClientBaseUrl(c.api_url || '', c.api_path_prefix)
|
|
83
|
+
: origin;
|
|
84
|
+
const post_dataproducts_create = hasLegacyPrefix
|
|
85
|
+
? `${extendClientBaseUrl(c.api_url || '', c.api_path_prefix).replace(/\/$/, '')}/dataproducts`
|
|
86
|
+
: origin
|
|
87
|
+
? buildPlatformRequestUrl(origin, '/dataproducts')
|
|
88
|
+
: '';
|
|
89
|
+
const get_dataproducts_list = hasLegacyPrefix
|
|
90
|
+
? `${extendClientBaseUrl(c.api_url || '', c.api_path_prefix).replace(/\/$/, '')}/dataproducts`
|
|
91
|
+
: origin
|
|
92
|
+
? buildPlatformRequestUrl(origin, '/dataproducts')
|
|
93
|
+
: '';
|
|
94
|
+
const notes = [
|
|
95
|
+
'Token refresh in the CLI uses the same `POST` URL as "POST refresh" above (from `loadConfig` + `auth_path_prefix`); TokenManager calls `refresh(apiUrl, token, { auth_path_prefix })`.',
|
|
96
|
+
'Data-product HTTP calls: SDK paths start with `/dataproducts` (see `data-products.ts`).',
|
|
97
|
+
];
|
|
98
|
+
if (!raw) {
|
|
99
|
+
notes.push('Set `api_url` (or `LOXTEP_API_URL`) to see real URLs.');
|
|
100
|
+
}
|
|
101
|
+
if (hasLegacyPrefix) {
|
|
102
|
+
notes.push(`Legacy mode: \`api_path_prefix=${c.api_path_prefix}\` — LoxtepClient uses a single \`base_url\`; paths like \`/dataproducts\` append to that base.`);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
notes.push('Default **platform** URL resolution: `api_url` is the host **origin** only; `buildPlatformRequestUrl` maps each SDK path (data products double-segment, workflows/projects single prefix, /search via `LOXTEP_PLATFORM_SEARCH_MS`, etc.). See `src/config/platform-request-url.ts`.');
|
|
106
|
+
}
|
|
107
|
+
if (c.auth_path_prefix === undefined) {
|
|
108
|
+
notes.push('`auth_path_prefix` is unset; auth uses the default first segment `app` (app microservice).');
|
|
109
|
+
}
|
|
110
|
+
else if (c.auth_path_prefix === '') {
|
|
111
|
+
notes.push('`auth_path_prefix` is explicitly empty: auth URLs have no extra segment (use if `api_url` already points at the app service path).');
|
|
112
|
+
}
|
|
113
|
+
const example_endpoints = SDK_EXAMPLE_PATHS.map(({ label, path: sdk_path }) => ({
|
|
114
|
+
label,
|
|
115
|
+
sdk_path,
|
|
116
|
+
resolved_url: resolveConfigSdkPath(c, sdk_path),
|
|
117
|
+
}));
|
|
118
|
+
return {
|
|
119
|
+
raw_api_url: raw,
|
|
120
|
+
loxtep_url_mode,
|
|
121
|
+
post_auth_login,
|
|
122
|
+
post_auth_refresh,
|
|
123
|
+
loxtep_client_base_url: loxtep_client_base_url,
|
|
124
|
+
post_dataproducts_create,
|
|
125
|
+
get_dataproducts_list,
|
|
126
|
+
example_endpoints,
|
|
127
|
+
notes,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=resolve-sdk-urls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-sdk-urls.js","sourceRoot":"","sources":["../../src/config/resolve-sdk-urls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LoxtepConfig } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Save config to file. Writes api_url, organization_id, project_id, instance_id (when set).
|
|
4
|
+
* No secrets (token) are ever written; token stays in memory only.
|
|
5
|
+
*/
|
|
6
|
+
export declare function saveConfig(config: Partial<LoxtepConfig>, filePath?: string): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=save.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../src/config/save.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;;GAGG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
import { getDefaultConfigPath } from './paths.js';
|
|
4
|
+
/**
|
|
5
|
+
* Save config to file. Writes api_url, organization_id, project_id, instance_id (when set).
|
|
6
|
+
* No secrets (token) are ever written; token stays in memory only.
|
|
7
|
+
*/
|
|
8
|
+
export async function saveConfig(config, filePath) {
|
|
9
|
+
const path = filePath ?? getDefaultConfigPath();
|
|
10
|
+
const dir = dirname(path);
|
|
11
|
+
await mkdir(dir, { recursive: true });
|
|
12
|
+
const payload = {
|
|
13
|
+
api_url: config.api_url,
|
|
14
|
+
auth_path_prefix: config.auth_path_prefix,
|
|
15
|
+
api_path_prefix: config.api_path_prefix,
|
|
16
|
+
organization_id: config.organization_id,
|
|
17
|
+
project_id: config.project_id,
|
|
18
|
+
instance_id: config.instance_id,
|
|
19
|
+
region: config.region,
|
|
20
|
+
...(config.streams && Object.keys(config.streams).length > 0
|
|
21
|
+
? { streams: config.streams }
|
|
22
|
+
: {}),
|
|
23
|
+
};
|
|
24
|
+
await writeFile(path, JSON.stringify(payload, null, 2), 'utf-8');
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=save.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/config/save.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAA6B,EAAE,QAAiB;IAC/E,MAAM,IAAI,GAAG,QAAQ,IAAI,oBAAoB,EAAE,CAAC;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,GAA4B;QACvC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;YAC1D,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;YAC7B,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse `streams` object from JSON config (PascalCase keys matching leo-sdk `ConfigurationResources`).
|
|
3
|
+
*/
|
|
4
|
+
import type { ConfigurationResources } from '../rstreams/leo-runtime.js';
|
|
5
|
+
/**
|
|
6
|
+
* Extract a partial bus config from unknown JSON. Ignores unknown keys; only non-empty strings kept.
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseStreamsPartial(value: unknown): Partial<ConfigurationResources> | undefined;
|
|
9
|
+
//# sourceMappingURL=streams-partial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streams-partial.d.ts","sourceRoot":"","sources":["../../src/config/streams-partial.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAazE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAW/F"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse `streams` object from JSON config (PascalCase keys matching leo-sdk `ConfigurationResources`).
|
|
3
|
+
*/
|
|
4
|
+
const STREAM_KEYS = [
|
|
5
|
+
'Region',
|
|
6
|
+
'LeoEvent',
|
|
7
|
+
'LeoStream',
|
|
8
|
+
'LeoCron',
|
|
9
|
+
'LeoS3',
|
|
10
|
+
'LeoKinesisStream',
|
|
11
|
+
'LeoFirehoseStream',
|
|
12
|
+
'LeoSettings',
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* Extract a partial bus config from unknown JSON. Ignores unknown keys; only non-empty strings kept.
|
|
16
|
+
*/
|
|
17
|
+
export function parseStreamsPartial(value) {
|
|
18
|
+
if (value == null || typeof value !== 'object' || Array.isArray(value))
|
|
19
|
+
return undefined;
|
|
20
|
+
const o = value;
|
|
21
|
+
const out = {};
|
|
22
|
+
for (const k of STREAM_KEYS) {
|
|
23
|
+
const v = o[k];
|
|
24
|
+
if (typeof v === 'string' && v.trim() !== '') {
|
|
25
|
+
out[k] = v.trim();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=streams-partial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streams-partial.js","sourceRoot":"","sources":["../../src/config/streams-partial.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,GAAqC;IACpD,QAAQ;IACR,UAAU;IACV,WAAW;IACX,SAAS;IACT,OAAO;IACP,kBAAkB;IAClB,mBAAmB;IACnB,aAAa;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzF,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,GAAG,GAAoC,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAW,CAAC,CAAC;QACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5C,GAA8B,CAAC,CAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ConfigurationResources } from '../rstreams/leo-runtime.js';
|
|
2
|
+
/**
|
|
3
|
+
* SDK/CLI config. All fields snake_case per backend conventions.
|
|
4
|
+
* No secrets (token) in config file; token in memory only.
|
|
5
|
+
*/
|
|
6
|
+
export interface LoxtepConfig {
|
|
7
|
+
/** Base URL of the Loxtep API (e.g. https://apidev.loxtep.io), without the microservice segment. */
|
|
8
|
+
api_url: string;
|
|
9
|
+
/**
|
|
10
|
+
* First path segment for auth (`POST` `/auth/login`, `/auth/refresh`), usually `app` on a shared host.
|
|
11
|
+
* Omitted: defaults to `app`. Set to `""` in config to disable (if `api_url` already includes `/app`).
|
|
12
|
+
*/
|
|
13
|
+
auth_path_prefix?: string;
|
|
14
|
+
/**
|
|
15
|
+
* **Legacy** only: one static first segment baked into the SDK client `base_url` (e.g. `dataproducts`).
|
|
16
|
+
* Omit for default **platform** resolution (per-request microservice prefix from each path; see `buildPlatformRequestUrl`).
|
|
17
|
+
*/
|
|
18
|
+
api_path_prefix?: string;
|
|
19
|
+
/** Default organization ID (optional). */
|
|
20
|
+
organization_id?: string;
|
|
21
|
+
/** Default project ID (optional). */
|
|
22
|
+
project_id?: string;
|
|
23
|
+
/** Default instance ID (optional). */
|
|
24
|
+
instance_id?: string;
|
|
25
|
+
/**
|
|
26
|
+
* AWS region for SigV4 on Loxtep HTTP requests (e.g. `us-east-1`). Env: `LOXTEP_REGION`.
|
|
27
|
+
* Stream bus region is also set via `streams.Region` / `LEO_REGION` / `AWS_REGION` for `resolveStreamsConfiguration`.
|
|
28
|
+
*/
|
|
29
|
+
region?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Partial Loxtep stream bus resource names (merged with `LEO_*` process env by `resolveStreamsConfiguration`).
|
|
32
|
+
* Store as JSON object with PascalCase keys: `Region`, `LeoEvent`, `LeoStream`, etc.
|
|
33
|
+
*/
|
|
34
|
+
streams?: Partial<ConfigurationResources>;
|
|
35
|
+
}
|
|
36
|
+
export declare const DEFAULT_CONFIG: LoxtepConfig;
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,oGAAoG;IACpG,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC3C;AAED,eAAO,MAAM,cAAc,EAAE,YAS5B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const DEFAULT_CONFIG = {
|
|
2
|
+
api_url: '',
|
|
3
|
+
auth_path_prefix: undefined,
|
|
4
|
+
api_path_prefix: undefined,
|
|
5
|
+
organization_id: undefined,
|
|
6
|
+
project_id: undefined,
|
|
7
|
+
instance_id: undefined,
|
|
8
|
+
region: undefined,
|
|
9
|
+
streams: undefined,
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAqCA,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,OAAO,EAAE,EAAE;IACX,gBAAgB,EAAE,SAAS;IAC3B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;IACtB,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;CACnB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { LoxtepError } from './base.js';
|
|
2
|
+
/** 401 - Token expired, invalid credentials. */
|
|
3
|
+
export declare class AuthenticationError extends LoxtepError {
|
|
4
|
+
constructor(message: string, details?: Record<string, unknown>);
|
|
5
|
+
}
|
|
6
|
+
/** 403 - Insufficient permissions. */
|
|
7
|
+
export declare class AuthorizationError extends LoxtepError {
|
|
8
|
+
constructor(message: string, details?: Record<string, unknown>);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/errors/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,gDAAgD;AAChD,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAS/D;AAED,sCAAsC;AACtC,qBAAa,kBAAmB,SAAQ,WAAW;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAS/D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { LoxtepError } from './base.js';
|
|
2
|
+
/** 401 - Token expired, invalid credentials. */
|
|
3
|
+
export class AuthenticationError extends LoxtepError {
|
|
4
|
+
constructor(message, details) {
|
|
5
|
+
super(message, {
|
|
6
|
+
code: 'AUTHENTICATION_ERROR',
|
|
7
|
+
status_code: 401,
|
|
8
|
+
details,
|
|
9
|
+
});
|
|
10
|
+
this.name = 'AuthenticationError';
|
|
11
|
+
Object.setPrototypeOf(this, AuthenticationError.prototype);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/** 403 - Insufficient permissions. */
|
|
15
|
+
export class AuthorizationError extends LoxtepError {
|
|
16
|
+
constructor(message, details) {
|
|
17
|
+
super(message, {
|
|
18
|
+
code: 'AUTHORIZATION_ERROR',
|
|
19
|
+
status_code: 403,
|
|
20
|
+
details,
|
|
21
|
+
});
|
|
22
|
+
this.name = 'AuthorizationError';
|
|
23
|
+
Object.setPrototypeOf(this, AuthorizationError.prototype);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/errors/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,gDAAgD;AAChD,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAClD,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,GAAG;YAChB,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,sCAAsC;AACtC,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,GAAG;YAChB,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { LoxtepErrorOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base error class for all Loxtep SDK errors.
|
|
4
|
+
* All API-facing properties use snake_case per backend conventions.
|
|
5
|
+
*/
|
|
6
|
+
export declare class LoxtepError extends Error {
|
|
7
|
+
readonly code: string;
|
|
8
|
+
readonly status_code?: number;
|
|
9
|
+
readonly details?: Record<string, unknown>;
|
|
10
|
+
readonly request_id?: string;
|
|
11
|
+
constructor(message: string, options: LoxtepErrorOptions);
|
|
12
|
+
/** Whether this error is retryable (e.g. rate limit, transient server error). */
|
|
13
|
+
get is_retryable(): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/errors/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAWrD;;;GAGG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;IAUxD,iFAAiF;IACjF,IAAI,YAAY,IAAI,OAAO,CAE1B;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Error codes that are considered retryable (e.g. 429, 503). */
|
|
2
|
+
const RETRYABLE_CODES = new Set([
|
|
3
|
+
'RATE_LIMIT_EXCEEDED',
|
|
4
|
+
'RATE_LIMIT_ERROR',
|
|
5
|
+
'SERVICE_UNAVAILABLE',
|
|
6
|
+
'GATEWAY_TIMEOUT',
|
|
7
|
+
'INTERNAL_SERVER_ERROR',
|
|
8
|
+
]);
|
|
9
|
+
/**
|
|
10
|
+
* Base error class for all Loxtep SDK errors.
|
|
11
|
+
* All API-facing properties use snake_case per backend conventions.
|
|
12
|
+
*/
|
|
13
|
+
export class LoxtepError extends Error {
|
|
14
|
+
code;
|
|
15
|
+
status_code;
|
|
16
|
+
details;
|
|
17
|
+
request_id;
|
|
18
|
+
constructor(message, options) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = 'LoxtepError';
|
|
21
|
+
this.code = options.code;
|
|
22
|
+
this.status_code = options.status_code;
|
|
23
|
+
this.details = options.details;
|
|
24
|
+
this.request_id = options.request_id;
|
|
25
|
+
Object.setPrototypeOf(this, LoxtepError.prototype);
|
|
26
|
+
}
|
|
27
|
+
/** Whether this error is retryable (e.g. rate limit, transient server error). */
|
|
28
|
+
get is_retryable() {
|
|
29
|
+
return RETRYABLE_CODES.has(this.code);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/errors/base.ts"],"names":[],"mappings":"AAEA,iEAAiE;AACjE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,qBAAqB;IACrB,kBAAkB;IAClB,qBAAqB;IACrB,iBAAiB;IACjB,uBAAuB;CACxB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,CAAS;IACb,WAAW,CAAU;IACrB,OAAO,CAA2B;IAClC,UAAU,CAAU;IAE7B,YAAY,OAAe,EAAE,OAA2B;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,iFAAiF;IACjF,IAAI,YAAY;QACd,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loxtep SDK error hierarchy and HTTP→error mapping.
|
|
3
|
+
* All API-facing properties use snake_case per backend conventions.
|
|
4
|
+
*/
|
|
5
|
+
export { LoxtepError } from './base.js';
|
|
6
|
+
export { AuthenticationError, AuthorizationError } from './auth.js';
|
|
7
|
+
export { NotFoundError, ConflictError } from './resource.js';
|
|
8
|
+
export { ValidationError, DefinitionValidationError } from './validation.js';
|
|
9
|
+
/** Alias for DefinitionValidationError (backend: schema → customer term: definition). */
|
|
10
|
+
export { DefinitionValidationError as SchemaValidationError } from './validation.js';
|
|
11
|
+
export { RateLimitError } from './rate-limit.js';
|
|
12
|
+
export { StreamingError, CheckpointError } from './streaming.js';
|
|
13
|
+
export { parseHttpError } from './parse-http.js';
|
|
14
|
+
export type { LoxtepErrorOptions, FieldError, DefinitionValidationErrorEntry, RateLimitErrorBody, ApiErrorBody, } from './types.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,yFAAyF;AACzF,OAAO,EAAE,yBAAyB,IAAI,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,8BAA8B,EAC9B,kBAAkB,EAClB,YAAY,GACb,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loxtep SDK error hierarchy and HTTP→error mapping.
|
|
3
|
+
* All API-facing properties use snake_case per backend conventions.
|
|
4
|
+
*/
|
|
5
|
+
export { LoxtepError } from './base.js';
|
|
6
|
+
export { AuthenticationError, AuthorizationError } from './auth.js';
|
|
7
|
+
export { NotFoundError, ConflictError } from './resource.js';
|
|
8
|
+
export { ValidationError, DefinitionValidationError } from './validation.js';
|
|
9
|
+
/** Alias for DefinitionValidationError (backend: schema → customer term: definition). */
|
|
10
|
+
export { DefinitionValidationError as SchemaValidationError } from './validation.js';
|
|
11
|
+
export { RateLimitError } from './rate-limit.js';
|
|
12
|
+
export { StreamingError, CheckpointError } from './streaming.js';
|
|
13
|
+
export { parseHttpError } from './parse-http.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,yFAAyF;AACzF,OAAO,EAAE,yBAAyB,IAAI,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { LoxtepError } from './base.js';
|
|
2
|
+
import type { ApiErrorBody, RateLimitErrorBody } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Map HTTP status code and response body to the appropriate Loxtep error class.
|
|
5
|
+
* Used by the HTTP client (LOX-951) to throw typed errors on 4xx/5xx.
|
|
6
|
+
*
|
|
7
|
+
* @param status_code - HTTP status (e.g. 401, 403, 404, 429)
|
|
8
|
+
* @param body - Parsed JSON body (message, code, details, etc.)
|
|
9
|
+
* @param request_id - Optional request ID from headers
|
|
10
|
+
* @returns Instance of the corresponding error class
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseHttpError(status_code: number, body: ApiErrorBody | RateLimitErrorBody | unknown, request_id?: string): LoxtepError;
|
|
13
|
+
//# sourceMappingURL=parse-http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-http.d.ts","sourceRoot":"","sources":["../../src/errors/parse-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAMxC,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,YAAY,GAAG,kBAAkB,GAAG,OAAO,EACjD,UAAU,CAAC,EAAE,MAAM,GAClB,WAAW,CA0Db"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { LoxtepError } from './base.js';
|
|
2
|
+
import { AuthenticationError } from './auth.js';
|
|
3
|
+
import { AuthorizationError } from './auth.js';
|
|
4
|
+
import { NotFoundError, ConflictError } from './resource.js';
|
|
5
|
+
import { ValidationError } from './validation.js';
|
|
6
|
+
import { RateLimitError } from './rate-limit.js';
|
|
7
|
+
/**
|
|
8
|
+
* Map HTTP status code and response body to the appropriate Loxtep error class.
|
|
9
|
+
* Used by the HTTP client (LOX-951) to throw typed errors on 4xx/5xx.
|
|
10
|
+
*
|
|
11
|
+
* @param status_code - HTTP status (e.g. 401, 403, 404, 429)
|
|
12
|
+
* @param body - Parsed JSON body (message, code, details, etc.)
|
|
13
|
+
* @param request_id - Optional request ID from headers
|
|
14
|
+
* @returns Instance of the corresponding error class
|
|
15
|
+
*/
|
|
16
|
+
export function parseHttpError(status_code, body, request_id) {
|
|
17
|
+
const safe = body && typeof body === 'object' ? body : {};
|
|
18
|
+
const message = typeof safe.message === 'string' ? safe.message : `HTTP ${status_code}`;
|
|
19
|
+
const details = safe.details && typeof safe.details === 'object'
|
|
20
|
+
? safe.details
|
|
21
|
+
: undefined;
|
|
22
|
+
const reqId = typeof safe.request_id === 'string' ? safe.request_id : request_id;
|
|
23
|
+
switch (status_code) {
|
|
24
|
+
case 401:
|
|
25
|
+
return new AuthenticationError(message, details);
|
|
26
|
+
case 403:
|
|
27
|
+
return new AuthorizationError(message, details);
|
|
28
|
+
case 404: {
|
|
29
|
+
const resource_type = typeof safe.resource_type === 'string' ? safe.resource_type : 'resource';
|
|
30
|
+
const resource_id = typeof safe.resource_id === 'string' ? safe.resource_id : '';
|
|
31
|
+
return new NotFoundError(message, resource_type, resource_id, { details, request_id: reqId });
|
|
32
|
+
}
|
|
33
|
+
case 409:
|
|
34
|
+
return new ConflictError(message, { details, request_id: reqId });
|
|
35
|
+
case 429: {
|
|
36
|
+
const rl = body;
|
|
37
|
+
const retry_after_seconds = typeof rl?.retry_after_seconds === 'number' ? rl.retry_after_seconds : 60;
|
|
38
|
+
const limit = typeof rl?.limit === 'number' ? rl.limit : 0;
|
|
39
|
+
const remaining = typeof rl?.remaining === 'number' ? rl.remaining : 0;
|
|
40
|
+
const reset_at = typeof rl?.reset_at === 'string'
|
|
41
|
+
? rl.reset_at
|
|
42
|
+
: new Date(Date.now() + retry_after_seconds * 1000).toISOString();
|
|
43
|
+
return new RateLimitError(message, {
|
|
44
|
+
retry_after_seconds,
|
|
45
|
+
limit,
|
|
46
|
+
remaining,
|
|
47
|
+
reset_at,
|
|
48
|
+
details,
|
|
49
|
+
request_id: reqId,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
case 400: {
|
|
53
|
+
const field_errors = Array.isArray(safe.field_errors)
|
|
54
|
+
? safe.field_errors.filter(e => typeof e?.field === 'string' && typeof e?.message === 'string')
|
|
55
|
+
: [];
|
|
56
|
+
return new ValidationError(message, field_errors, { details, request_id: reqId });
|
|
57
|
+
}
|
|
58
|
+
default: {
|
|
59
|
+
return new LoxtepError(message, {
|
|
60
|
+
code: safe.code ?? 'UNKNOWN_ERROR',
|
|
61
|
+
status_code,
|
|
62
|
+
details,
|
|
63
|
+
request_id: reqId,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=parse-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-http.js","sourceRoot":"","sources":["../../src/errors/parse-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LoxtepError } from './base.js';
|
|
2
|
+
/** 429 - Too many requests. */
|
|
3
|
+
export declare class RateLimitError extends LoxtepError {
|
|
4
|
+
readonly retry_after_seconds: number;
|
|
5
|
+
readonly limit: number;
|
|
6
|
+
readonly remaining: number;
|
|
7
|
+
readonly reset_at: string;
|
|
8
|
+
constructor(message: string, options: {
|
|
9
|
+
retry_after_seconds: number;
|
|
10
|
+
limit: number;
|
|
11
|
+
remaining: number;
|
|
12
|
+
reset_at: string;
|
|
13
|
+
details?: Record<string, unknown>;
|
|
14
|
+
request_id?: string;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=rate-limit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/errors/rate-limit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,+BAA+B;AAC/B,qBAAa,cAAe,SAAQ,WAAW;IAC7C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAGxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,mBAAmB,EAAE,MAAM,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;CAeJ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { LoxtepError } from './base.js';
|
|
2
|
+
/** 429 - Too many requests. */
|
|
3
|
+
export class RateLimitError extends LoxtepError {
|
|
4
|
+
retry_after_seconds;
|
|
5
|
+
limit;
|
|
6
|
+
remaining;
|
|
7
|
+
reset_at;
|
|
8
|
+
constructor(message, options) {
|
|
9
|
+
super(message, {
|
|
10
|
+
code: 'RATE_LIMIT_EXCEEDED',
|
|
11
|
+
status_code: 429,
|
|
12
|
+
details: options.details,
|
|
13
|
+
request_id: options.request_id,
|
|
14
|
+
});
|
|
15
|
+
this.name = 'RateLimitError';
|
|
16
|
+
this.retry_after_seconds = options.retry_after_seconds;
|
|
17
|
+
this.limit = options.limit;
|
|
18
|
+
this.remaining = options.remaining;
|
|
19
|
+
this.reset_at = options.reset_at;
|
|
20
|
+
Object.setPrototypeOf(this, RateLimitError.prototype);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=rate-limit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/errors/rate-limit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,+BAA+B;AAC/B,MAAM,OAAO,cAAe,SAAQ,WAAW;IACpC,mBAAmB,CAAS;IAC5B,KAAK,CAAS;IACd,SAAS,CAAS;IAClB,QAAQ,CAAS;IAE1B,YACE,OAAe,EACf,OAOC;QAED,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,GAAG;YAChB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LoxtepError } from './base.js';
|
|
2
|
+
/** 404 - Resource doesn't exist. */
|
|
3
|
+
export declare class NotFoundError extends LoxtepError {
|
|
4
|
+
readonly resource_type: string;
|
|
5
|
+
readonly resource_id: string;
|
|
6
|
+
constructor(message: string, resource_type: string, resource_id: string, options?: {
|
|
7
|
+
details?: Record<string, unknown>;
|
|
8
|
+
request_id?: string;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
/** 409 - Resource already exists or version conflict. */
|
|
12
|
+
export declare class ConflictError extends LoxtepError {
|
|
13
|
+
constructor(message: string, options?: {
|
|
14
|
+
details?: Record<string, unknown>;
|
|
15
|
+
request_id?: string;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/errors/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,oCAAoC;AACpC,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAG3B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAavE;AAED,yDAAyD;AACzD,qBAAa,aAAc,SAAQ,WAAW;gBAE1C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAWvE"}
|