@salesforce/b2c-tooling-sdk 0.3.0 → 0.4.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 +180 -13
- package/data/scaffolds/cartridge/files/.project.ejs +17 -0
- package/data/scaffolds/cartridge/files/cartridge/cartridge.properties.ejs +4 -0
- package/data/scaffolds/cartridge/files/cartridge/controllers/Example.js.ejs +19 -0
- package/data/scaffolds/cartridge/files/cartridge/models/example.js.ejs +14 -0
- package/data/scaffolds/cartridge/files/cartridge/scripts/helpers/exampleHelpers.js.ejs +18 -0
- package/data/scaffolds/cartridge/files/cartridge/static/default/css/example.css +6 -0
- package/data/scaffolds/cartridge/files/cartridge/templates/default/example/show.isml.ejs +11 -0
- package/data/scaffolds/cartridge/scaffold.json +88 -0
- package/data/scaffolds/controller/files/controller.js.ejs +134 -0
- package/data/scaffolds/controller/files/template.isml.ejs +22 -0
- package/data/scaffolds/controller/scaffold.json +64 -0
- package/data/scaffolds/custom-api/files/api.json.ejs +11 -0
- package/data/scaffolds/custom-api/files/schema.yaml.ejs +188 -0
- package/data/scaffolds/custom-api/files/script.js.ejs +95 -0
- package/data/scaffolds/custom-api/scaffold.json +65 -0
- package/data/scaffolds/hook/files/hook.js.ejs +99 -0
- package/data/scaffolds/hook/files/hooks-entry.json.ejs +6 -0
- package/data/scaffolds/hook/scaffold.json +60 -0
- package/data/scaffolds/job-step/files/step-chunk.js.ejs +136 -0
- package/data/scaffolds/job-step/files/step-task.js.ejs +47 -0
- package/data/scaffolds/job-step/files/steptypes-entry.json.ejs +41 -0
- package/data/scaffolds/job-step/scaffold.json +64 -0
- package/data/scaffolds/page-designer-component/files/component.isml.ejs +23 -0
- package/data/scaffolds/page-designer-component/files/component.js.ejs +35 -0
- package/data/scaffolds/page-designer-component/files/component.json.ejs +50 -0
- package/data/scaffolds/page-designer-component/scaffold.json +66 -0
- package/data/scaffolds/service/files/service-http.js.ejs +245 -0
- package/data/scaffolds/service/files/service-sftp.js.ejs +371 -0
- package/data/scaffolds/service/files/service-soap.js.ejs +230 -0
- package/data/scaffolds/service/scaffold.json +83 -0
- package/data/script-api/dw.extensions.payments.SalesforcePaymentsMgr.md +48 -0
- package/data/script-api/dw.system.Request.md +5 -0
- package/data/script-api/dw.web.Cookie.md +108 -31
- package/data/script-api/index.json +2 -2
- package/data/script-api/index.md +1 -1
- package/dist/cjs/auth/oauth-implicit.d.ts +1 -0
- package/dist/cjs/auth/oauth-implicit.js +8 -3
- package/dist/cjs/auth/oauth-implicit.js.map +1 -1
- package/dist/cjs/auth/oauth.d.ts +1 -0
- package/dist/cjs/auth/oauth.js +8 -3
- package/dist/cjs/auth/oauth.js.map +1 -1
- package/dist/cjs/auth/types.d.ts +5 -0
- package/dist/cjs/auth/types.js.map +1 -1
- package/dist/cjs/cli/am-command.d.ts +74 -0
- package/dist/cjs/cli/am-command.js +191 -0
- package/dist/cjs/cli/am-command.js.map +1 -0
- package/dist/cjs/cli/base-command.d.ts +38 -0
- package/dist/cjs/cli/base-command.js +142 -0
- package/dist/cjs/cli/base-command.js.map +1 -1
- package/dist/cjs/cli/config.d.ts +9 -0
- package/dist/cjs/cli/config.js +20 -3
- package/dist/cjs/cli/config.js.map +1 -1
- package/dist/cjs/cli/index.d.ts +1 -0
- package/dist/cjs/cli/index.js +1 -0
- package/dist/cjs/cli/index.js.map +1 -1
- package/dist/cjs/cli/instance-command.d.ts +2 -1
- package/dist/cjs/cli/oauth-command.d.ts +22 -2
- package/dist/cjs/cli/oauth-command.js +53 -8
- package/dist/cjs/cli/oauth-command.js.map +1 -1
- package/dist/cjs/cli/ods-command.d.ts +6 -2
- package/dist/cjs/cli/ods-command.js +10 -4
- package/dist/cjs/cli/ods-command.js.map +1 -1
- package/dist/cjs/cli/webdav-command.d.ts +2 -1
- package/dist/cjs/clients/am-api.d.ts +521 -0
- package/dist/cjs/clients/am-api.js +986 -0
- package/dist/cjs/clients/am-api.js.map +1 -0
- package/dist/cjs/clients/am-apiclients-api.generated.d.ts +803 -0
- package/dist/cjs/clients/am-apiclients-api.generated.js +6 -0
- package/dist/cjs/clients/am-apiclients-api.generated.js.map +1 -0
- package/dist/cjs/clients/am-roles-api.generated.d.ts +298 -0
- package/dist/cjs/clients/am-roles-api.generated.js +6 -0
- package/dist/cjs/clients/am-roles-api.generated.js.map +1 -0
- package/dist/cjs/clients/am-users-api.generated.d.ts +954 -0
- package/dist/cjs/clients/am-users-api.generated.js +6 -0
- package/dist/cjs/clients/am-users-api.generated.js.map +1 -0
- package/dist/cjs/clients/index.d.ts +4 -2
- package/dist/cjs/clients/index.js +2 -1
- package/dist/cjs/clients/index.js.map +1 -1
- package/dist/cjs/clients/middleware-registry.d.ts +1 -1
- package/dist/cjs/clients/middleware-registry.js.map +1 -1
- package/dist/cjs/clients/middleware.d.ts +49 -2
- package/dist/cjs/clients/middleware.js +214 -2
- package/dist/cjs/clients/middleware.js.map +1 -1
- package/dist/cjs/clients/mrt.js +5 -1
- package/dist/cjs/clients/mrt.js.map +1 -1
- package/dist/cjs/config/dw-json.d.ts +104 -33
- package/dist/cjs/config/dw-json.js +167 -2
- package/dist/cjs/config/dw-json.js.map +1 -1
- package/dist/cjs/config/index.d.ts +6 -4
- package/dist/cjs/config/index.js +6 -2
- package/dist/cjs/config/index.js.map +1 -1
- package/dist/cjs/config/instance-manager.d.ts +97 -0
- package/dist/cjs/config/instance-manager.js +166 -0
- package/dist/cjs/config/instance-manager.js.map +1 -0
- package/dist/cjs/config/mapping.d.ts +63 -5
- package/dist/cjs/config/mapping.js +165 -20
- package/dist/cjs/config/mapping.js.map +1 -1
- package/dist/cjs/config/sources/dw-json-source.d.ts +17 -1
- package/dist/cjs/config/sources/dw-json-source.js +70 -3
- package/dist/cjs/config/sources/dw-json-source.js.map +1 -1
- package/dist/cjs/config/sources/package-json-source.js +6 -3
- package/dist/cjs/config/sources/package-json-source.js.map +1 -1
- package/dist/cjs/config/types.d.ts +72 -0
- package/dist/cjs/defaults.d.ts +6 -0
- package/dist/cjs/defaults.js +6 -0
- package/dist/cjs/defaults.js.map +1 -1
- package/dist/cjs/i18n/index.js +3 -0
- package/dist/cjs/i18n/index.js.map +1 -1
- package/dist/cjs/index.d.ts +8 -4
- package/dist/cjs/index.js +9 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/logging/logger.js +13 -1
- package/dist/cjs/logging/logger.js.map +1 -1
- package/dist/cjs/operations/content/asset-query.d.ts +22 -0
- package/dist/cjs/operations/content/asset-query.js +77 -0
- package/dist/cjs/operations/content/asset-query.js.map +1 -0
- package/dist/cjs/operations/content/export.d.ts +57 -0
- package/dist/cjs/operations/content/export.js +224 -0
- package/dist/cjs/operations/content/export.js.map +1 -0
- package/dist/cjs/operations/content/index.d.ts +43 -0
- package/dist/cjs/operations/content/index.js +48 -0
- package/dist/cjs/operations/content/index.js.map +1 -0
- package/dist/cjs/operations/content/library.d.ts +137 -0
- package/dist/cjs/operations/content/library.js +392 -0
- package/dist/cjs/operations/content/library.js.map +1 -0
- package/dist/cjs/operations/content/types.d.ts +144 -0
- package/dist/cjs/operations/content/types.js +7 -0
- package/dist/cjs/operations/content/types.js.map +1 -0
- package/dist/cjs/operations/mrt/b2c-config.js +19 -4
- package/dist/cjs/operations/mrt/b2c-config.js.map +1 -1
- package/dist/cjs/operations/mrt/index.d.ts +2 -0
- package/dist/cjs/operations/mrt/index.js +2 -0
- package/dist/cjs/operations/mrt/index.js.map +1 -1
- package/dist/cjs/operations/mrt/tail-logs.d.ts +130 -0
- package/dist/cjs/operations/mrt/tail-logs.js +223 -0
- package/dist/cjs/operations/mrt/tail-logs.js.map +1 -0
- package/dist/cjs/operations/ods/index.d.ts +2 -0
- package/dist/cjs/operations/ods/index.js +1 -0
- package/dist/cjs/operations/ods/index.js.map +1 -1
- package/dist/cjs/operations/ods/wait-for-sandbox.d.ts +64 -0
- package/dist/cjs/operations/ods/wait-for-sandbox.js +114 -0
- package/dist/cjs/operations/ods/wait-for-sandbox.js.map +1 -0
- package/dist/cjs/operations/orgs/index.d.ts +74 -0
- package/dist/cjs/operations/orgs/index.js +33 -0
- package/dist/cjs/operations/orgs/index.js.map +1 -0
- package/dist/cjs/operations/roles/index.d.ts +43 -0
- package/dist/cjs/operations/roles/index.js +48 -0
- package/dist/cjs/operations/roles/index.js.map +1 -0
- package/dist/cjs/operations/users/index.d.ts +153 -0
- package/dist/cjs/operations/users/index.js +139 -0
- package/dist/cjs/operations/users/index.js.map +1 -0
- package/dist/cjs/scaffold/engine.d.ts +68 -0
- package/dist/cjs/scaffold/engine.js +149 -0
- package/dist/cjs/scaffold/engine.js.map +1 -0
- package/dist/cjs/scaffold/executor.d.ts +36 -0
- package/dist/cjs/scaffold/executor.js +285 -0
- package/dist/cjs/scaffold/executor.js.map +1 -0
- package/dist/cjs/scaffold/index.d.ts +74 -0
- package/dist/cjs/scaffold/index.js +23 -0
- package/dist/cjs/scaffold/index.js.map +1 -0
- package/dist/cjs/scaffold/merge.d.ts +56 -0
- package/dist/cjs/scaffold/merge.js +183 -0
- package/dist/cjs/scaffold/merge.js.map +1 -0
- package/dist/cjs/scaffold/parameter-resolver.d.ts +86 -0
- package/dist/cjs/scaffold/parameter-resolver.js +179 -0
- package/dist/cjs/scaffold/parameter-resolver.js.map +1 -0
- package/dist/cjs/scaffold/registry.d.ts +45 -0
- package/dist/cjs/scaffold/registry.js +219 -0
- package/dist/cjs/scaffold/registry.js.map +1 -0
- package/dist/cjs/scaffold/sources.d.ts +45 -0
- package/dist/cjs/scaffold/sources.js +113 -0
- package/dist/cjs/scaffold/sources.js.map +1 -0
- package/dist/cjs/scaffold/types.d.ts +280 -0
- package/dist/cjs/scaffold/types.js +14 -0
- package/dist/cjs/scaffold/types.js.map +1 -0
- package/dist/cjs/scaffold/validation.d.ts +81 -0
- package/dist/cjs/scaffold/validation.js +250 -0
- package/dist/cjs/scaffold/validation.js.map +1 -0
- package/dist/cjs/scaffold/validators.d.ts +33 -0
- package/dist/cjs/scaffold/validators.js +334 -0
- package/dist/cjs/scaffold/validators.js.map +1 -0
- package/dist/cjs/telemetry/index.d.ts +26 -0
- package/dist/cjs/telemetry/index.js +32 -0
- package/dist/cjs/telemetry/index.js.map +1 -0
- package/dist/cjs/telemetry/telemetry.d.ts +90 -0
- package/dist/cjs/telemetry/telemetry.js +283 -0
- package/dist/cjs/telemetry/telemetry.js.map +1 -0
- package/dist/cjs/telemetry/types.d.ts +62 -0
- package/dist/cjs/telemetry/types.js +7 -0
- package/dist/cjs/telemetry/types.js.map +1 -0
- package/dist/esm/auth/oauth-implicit.d.ts +1 -0
- package/dist/esm/auth/oauth-implicit.js +8 -3
- package/dist/esm/auth/oauth-implicit.js.map +1 -1
- package/dist/esm/auth/oauth.d.ts +1 -0
- package/dist/esm/auth/oauth.js +8 -3
- package/dist/esm/auth/oauth.js.map +1 -1
- package/dist/esm/auth/types.d.ts +5 -0
- package/dist/esm/auth/types.js.map +1 -1
- package/dist/esm/cli/am-command.d.ts +74 -0
- package/dist/esm/cli/am-command.js +198 -0
- package/dist/esm/cli/am-command.js.map +1 -0
- package/dist/esm/cli/base-command.d.ts +38 -0
- package/dist/esm/cli/base-command.js +142 -0
- package/dist/esm/cli/base-command.js.map +1 -1
- package/dist/esm/cli/config.d.ts +9 -0
- package/dist/esm/cli/config.js +20 -3
- package/dist/esm/cli/config.js.map +1 -1
- package/dist/esm/cli/index.d.ts +1 -0
- package/dist/esm/cli/index.js +1 -0
- package/dist/esm/cli/index.js.map +1 -1
- package/dist/esm/cli/instance-command.d.ts +2 -1
- package/dist/esm/cli/oauth-command.d.ts +22 -2
- package/dist/esm/cli/oauth-command.js +53 -8
- package/dist/esm/cli/oauth-command.js.map +1 -1
- package/dist/esm/cli/ods-command.d.ts +6 -2
- package/dist/esm/cli/ods-command.js +10 -4
- package/dist/esm/cli/ods-command.js.map +1 -1
- package/dist/esm/cli/webdav-command.d.ts +2 -1
- package/dist/esm/clients/am-api.d.ts +521 -0
- package/dist/esm/clients/am-api.js +986 -0
- package/dist/esm/clients/am-api.js.map +1 -0
- package/dist/esm/clients/am-apiclients-api.generated.d.ts +803 -0
- package/dist/esm/clients/am-apiclients-api.generated.js +6 -0
- package/dist/esm/clients/am-apiclients-api.generated.js.map +1 -0
- package/dist/esm/clients/am-roles-api.generated.d.ts +298 -0
- package/dist/esm/clients/am-roles-api.generated.js +6 -0
- package/dist/esm/clients/am-roles-api.generated.js.map +1 -0
- package/dist/esm/clients/am-users-api.generated.d.ts +954 -0
- package/dist/esm/clients/am-users-api.generated.js +6 -0
- package/dist/esm/clients/am-users-api.generated.js.map +1 -0
- package/dist/esm/clients/index.d.ts +4 -2
- package/dist/esm/clients/index.js +2 -1
- package/dist/esm/clients/index.js.map +1 -1
- package/dist/esm/clients/middleware-registry.d.ts +1 -1
- package/dist/esm/clients/middleware-registry.js.map +1 -1
- package/dist/esm/clients/middleware.d.ts +49 -2
- package/dist/esm/clients/middleware.js +214 -2
- package/dist/esm/clients/middleware.js.map +1 -1
- package/dist/esm/clients/mrt.js +5 -1
- package/dist/esm/clients/mrt.js.map +1 -1
- package/dist/esm/config/dw-json.d.ts +104 -33
- package/dist/esm/config/dw-json.js +167 -2
- package/dist/esm/config/dw-json.js.map +1 -1
- package/dist/esm/config/index.d.ts +6 -4
- package/dist/esm/config/index.js +6 -2
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/instance-manager.d.ts +97 -0
- package/dist/esm/config/instance-manager.js +166 -0
- package/dist/esm/config/instance-manager.js.map +1 -0
- package/dist/esm/config/mapping.d.ts +63 -5
- package/dist/esm/config/mapping.js +165 -20
- package/dist/esm/config/mapping.js.map +1 -1
- package/dist/esm/config/sources/dw-json-source.d.ts +17 -1
- package/dist/esm/config/sources/dw-json-source.js +70 -3
- package/dist/esm/config/sources/dw-json-source.js.map +1 -1
- package/dist/esm/config/sources/package-json-source.js +6 -3
- package/dist/esm/config/sources/package-json-source.js.map +1 -1
- package/dist/esm/config/types.d.ts +72 -0
- package/dist/esm/defaults.d.ts +6 -0
- package/dist/esm/defaults.js +6 -0
- package/dist/esm/defaults.js.map +1 -1
- package/dist/esm/i18n/index.js +3 -0
- package/dist/esm/i18n/index.js.map +1 -1
- package/dist/esm/index.d.ts +8 -4
- package/dist/esm/index.js +9 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/logging/logger.js +13 -1
- package/dist/esm/logging/logger.js.map +1 -1
- package/dist/esm/operations/content/asset-query.d.ts +22 -0
- package/dist/esm/operations/content/asset-query.js +77 -0
- package/dist/esm/operations/content/asset-query.js.map +1 -0
- package/dist/esm/operations/content/export.d.ts +57 -0
- package/dist/esm/operations/content/export.js +224 -0
- package/dist/esm/operations/content/export.js.map +1 -0
- package/dist/esm/operations/content/index.d.ts +43 -0
- package/dist/esm/operations/content/index.js +48 -0
- package/dist/esm/operations/content/index.js.map +1 -0
- package/dist/esm/operations/content/library.d.ts +137 -0
- package/dist/esm/operations/content/library.js +392 -0
- package/dist/esm/operations/content/library.js.map +1 -0
- package/dist/esm/operations/content/types.d.ts +144 -0
- package/dist/esm/operations/content/types.js +7 -0
- package/dist/esm/operations/content/types.js.map +1 -0
- package/dist/esm/operations/mrt/b2c-config.js +19 -4
- package/dist/esm/operations/mrt/b2c-config.js.map +1 -1
- package/dist/esm/operations/mrt/index.d.ts +2 -0
- package/dist/esm/operations/mrt/index.js +2 -0
- package/dist/esm/operations/mrt/index.js.map +1 -1
- package/dist/esm/operations/mrt/tail-logs.d.ts +130 -0
- package/dist/esm/operations/mrt/tail-logs.js +223 -0
- package/dist/esm/operations/mrt/tail-logs.js.map +1 -0
- package/dist/esm/operations/ods/index.d.ts +2 -0
- package/dist/esm/operations/ods/index.js +1 -0
- package/dist/esm/operations/ods/index.js.map +1 -1
- package/dist/esm/operations/ods/wait-for-sandbox.d.ts +64 -0
- package/dist/esm/operations/ods/wait-for-sandbox.js +114 -0
- package/dist/esm/operations/ods/wait-for-sandbox.js.map +1 -0
- package/dist/esm/operations/orgs/index.d.ts +74 -0
- package/dist/esm/operations/orgs/index.js +33 -0
- package/dist/esm/operations/orgs/index.js.map +1 -0
- package/dist/esm/operations/roles/index.d.ts +43 -0
- package/dist/esm/operations/roles/index.js +48 -0
- package/dist/esm/operations/roles/index.js.map +1 -0
- package/dist/esm/operations/users/index.d.ts +153 -0
- package/dist/esm/operations/users/index.js +139 -0
- package/dist/esm/operations/users/index.js.map +1 -0
- package/dist/esm/scaffold/engine.d.ts +68 -0
- package/dist/esm/scaffold/engine.js +149 -0
- package/dist/esm/scaffold/engine.js.map +1 -0
- package/dist/esm/scaffold/executor.d.ts +36 -0
- package/dist/esm/scaffold/executor.js +285 -0
- package/dist/esm/scaffold/executor.js.map +1 -0
- package/dist/esm/scaffold/index.d.ts +74 -0
- package/dist/esm/scaffold/index.js +23 -0
- package/dist/esm/scaffold/index.js.map +1 -0
- package/dist/esm/scaffold/merge.d.ts +56 -0
- package/dist/esm/scaffold/merge.js +183 -0
- package/dist/esm/scaffold/merge.js.map +1 -0
- package/dist/esm/scaffold/parameter-resolver.d.ts +86 -0
- package/dist/esm/scaffold/parameter-resolver.js +179 -0
- package/dist/esm/scaffold/parameter-resolver.js.map +1 -0
- package/dist/esm/scaffold/registry.d.ts +45 -0
- package/dist/esm/scaffold/registry.js +219 -0
- package/dist/esm/scaffold/registry.js.map +1 -0
- package/dist/esm/scaffold/sources.d.ts +45 -0
- package/dist/esm/scaffold/sources.js +113 -0
- package/dist/esm/scaffold/sources.js.map +1 -0
- package/dist/esm/scaffold/types.d.ts +280 -0
- package/dist/esm/scaffold/types.js +14 -0
- package/dist/esm/scaffold/types.js.map +1 -0
- package/dist/esm/scaffold/validation.d.ts +81 -0
- package/dist/esm/scaffold/validation.js +250 -0
- package/dist/esm/scaffold/validation.js.map +1 -0
- package/dist/esm/scaffold/validators.d.ts +33 -0
- package/dist/esm/scaffold/validators.js +334 -0
- package/dist/esm/scaffold/validators.js.map +1 -0
- package/dist/esm/telemetry/index.d.ts +26 -0
- package/dist/esm/telemetry/index.js +32 -0
- package/dist/esm/telemetry/index.js.map +1 -0
- package/dist/esm/telemetry/telemetry.d.ts +90 -0
- package/dist/esm/telemetry/telemetry.js +283 -0
- package/dist/esm/telemetry/telemetry.js.map +1 -0
- package/dist/esm/telemetry/types.d.ts +62 -0
- package/dist/esm/telemetry/types.js +7 -0
- package/dist/esm/telemetry/types.js.map +1 -0
- package/package.json +86 -17
- package/specs/am-apiclients-api-v1.yaml +965 -0
- package/specs/am-roles-api-v1.yaml +316 -0
- package/specs/am-users-api-v1.yaml +1142 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"am-users-api.generated.js","sourceRoot":"","sources":["../../../src/clients/am-users-api.generated.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -112,8 +112,8 @@
|
|
|
112
112
|
*/
|
|
113
113
|
export { WebDavClient } from './webdav.js';
|
|
114
114
|
export type { PropfindEntry, WebDavClientOptions } from './webdav.js';
|
|
115
|
-
export { createAuthMiddleware, createLoggingMiddleware, createExtraParamsMiddleware, createUserAgentMiddleware, } from './middleware.js';
|
|
116
|
-
export type { ExtraParamsConfig, LoggingMiddlewareConfig, UserAgentConfig } from './middleware.js';
|
|
115
|
+
export { createAuthMiddleware, createRateLimitMiddleware, createLoggingMiddleware, createExtraParamsMiddleware, createUserAgentMiddleware, } from './middleware.js';
|
|
116
|
+
export type { ExtraParamsConfig, LoggingMiddlewareConfig, UserAgentConfig, RateLimitMiddlewareConfig, } from './middleware.js';
|
|
117
117
|
export { setUserAgent, getUserAgent, resetUserAgent, userAgentProvider } from './user-agent.js';
|
|
118
118
|
export { MiddlewareRegistry, globalMiddlewareRegistry } from './middleware-registry.js';
|
|
119
119
|
export type { HttpClientType, HttpMiddlewareProvider, UnifiedMiddleware } from './middleware-registry.js';
|
|
@@ -129,6 +129,8 @@ export { createCustomApisClient, toOrganizationId, toTenantId, buildTenantScope,
|
|
|
129
129
|
export type { CustomApisClient, CustomApisClientConfig, CustomApisError, CustomApisResponse, paths as CustomApisPaths, components as CustomApisComponents, } from './custom-apis.js';
|
|
130
130
|
export { createScapiSchemasClient, SCAPI_SCHEMAS_DEFAULT_SCOPES } from './scapi-schemas.js';
|
|
131
131
|
export type { ScapiSchemasClient, ScapiSchemasClientConfig, ScapiSchemasError, ScapiSchemasResponse, SchemaListItem, SchemaListResult, OpenApiSchema, paths as ScapiSchemasPaths, components as ScapiSchemasComponents, } from './scapi-schemas.js';
|
|
132
|
+
export { createAccountManagerClient, createAccountManagerUsersClient, getUser, listUsers, createUser, updateUser, deleteUser, purgeUser, resetUser, findUserByLogin, fetchRoleMapping, resolveToInternalRole, resolveFromInternalRole, createAccountManagerRolesClient, getRole, listRoles, createAccountManagerApiClientsClient, createAccountManagerOrgsClient, isValidRoleTenantFilter, ROLE_TENANT_FILTER_PATTERN, } from './am-api.js';
|
|
133
|
+
export type { AccountManagerClient, AccountManagerClientConfig, AccountManagerUsersClient, AccountManagerUser, AccountManagerResponse, AccountManagerError, UserExpandOption, UserCreate, UserUpdate, UserCollection, UserState, ListUsersOptions, AccountManagerRolesClient, AccountManagerRole, AccountManagerRolesResponse, AccountManagerRolesError, RoleCollection, ListRolesOptions, RoleMapping, OrgMapping, AccountManagerApiClientsClient, AccountManagerApiClient, APIClientCreate, APIClientUpdate, APIClientCollection, ApiClientExpandOption, ListApiClientsOptions, AccountManagerOrgsClient, AccountManagerOrganization, OrganizationCollection, ListOrgsOptions, } from './am-api.js';
|
|
132
134
|
export { createCdnZonesClient, CDN_ZONES_READ_SCOPES, CDN_ZONES_RW_SCOPES } from './cdn-zones.js';
|
|
133
135
|
export type { CdnZonesClient, CdnZonesClientConfig, CdnZonesClientOptions, CdnZonesError, CdnZonesResponse, Zone, ZonesEnvelope, Certificate, SecuritySetting, SpeedSetting, paths as CdnZonesPaths, components as CdnZonesComponents, } from './cdn-zones.js';
|
|
134
136
|
export { createMrtB2CClient, DEFAULT_MRT_B2C_ORIGIN } from './mrt-b2c.js';
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
* @module clients
|
|
117
117
|
*/
|
|
118
118
|
export { WebDavClient } from './webdav.js';
|
|
119
|
-
export { createAuthMiddleware, createLoggingMiddleware, createExtraParamsMiddleware, createUserAgentMiddleware, } from './middleware.js';
|
|
119
|
+
export { createAuthMiddleware, createRateLimitMiddleware, createLoggingMiddleware, createExtraParamsMiddleware, createUserAgentMiddleware, } from './middleware.js';
|
|
120
120
|
// User-Agent provider (auto-registers on import)
|
|
121
121
|
export { setUserAgent, getUserAgent, resetUserAgent, userAgentProvider } from './user-agent.js';
|
|
122
122
|
export { MiddlewareRegistry, globalMiddlewareRegistry } from './middleware-registry.js';
|
|
@@ -126,6 +126,7 @@ export { createOdsClient } from './ods.js';
|
|
|
126
126
|
export { createMrtClient, DEFAULT_MRT_ORIGIN } from './mrt.js';
|
|
127
127
|
export { createCustomApisClient, toOrganizationId, toTenantId, buildTenantScope, ORGANIZATION_ID_PREFIX, SCAPI_TENANT_SCOPE_PREFIX, CUSTOM_APIS_DEFAULT_SCOPES, } from './custom-apis.js';
|
|
128
128
|
export { createScapiSchemasClient, SCAPI_SCHEMAS_DEFAULT_SCOPES } from './scapi-schemas.js';
|
|
129
|
+
export { createAccountManagerClient, createAccountManagerUsersClient, getUser, listUsers, createUser, updateUser, deleteUser, purgeUser, resetUser, findUserByLogin, fetchRoleMapping, resolveToInternalRole, resolveFromInternalRole, createAccountManagerRolesClient, getRole, listRoles, createAccountManagerApiClientsClient, createAccountManagerOrgsClient, isValidRoleTenantFilter, ROLE_TENANT_FILTER_PATTERN, } from './am-api.js';
|
|
129
130
|
export { createCdnZonesClient, CDN_ZONES_READ_SCOPES, CDN_ZONES_RW_SCOPES } from './cdn-zones.js';
|
|
130
131
|
export { createMrtB2CClient, DEFAULT_MRT_B2C_ORIGIN } from './mrt-b2c.js';
|
|
131
132
|
export { getApiErrorMessage } from './error-utils.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+GG;AACH,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAGzC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+GG;AACH,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAGzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAQzB,iDAAiD;AACjD,OAAO,EAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAC,kBAAkB,EAAE,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AAGtF,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAU7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAUjD,OAAO,EAAC,eAAe,EAAC,MAAM,UAAU,CAAC;AAUzC,OAAO,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,UAAU,CAAC;AAW7D,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EAAC,wBAAwB,EAAE,4BAA4B,EAAC,MAAM,oBAAoB,CAAC;AAa1F,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,OAAO,EACP,SAAS,EACT,oCAAoC,EACpC,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAmCrB,OAAO,EAAC,oBAAoB,EAAE,qBAAqB,EAAE,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAgBhG,OAAO,EAAC,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,cAAc,CAAC;AAaxE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC"}
|
|
@@ -38,7 +38,7 @@ import type { Middleware } from 'openapi-fetch';
|
|
|
38
38
|
/**
|
|
39
39
|
* Types of HTTP clients that can receive middleware.
|
|
40
40
|
*/
|
|
41
|
-
export type HttpClientType = 'ocapi' | 'slas' | 'ods' | 'mrt' | 'mrt-b2c' | 'custom-apis' | 'scapi-schemas' | 'cdn-zones' | 'webdav';
|
|
41
|
+
export type HttpClientType = 'ocapi' | 'slas' | 'ods' | 'mrt' | 'mrt-b2c' | 'custom-apis' | 'scapi-schemas' | 'cdn-zones' | 'webdav' | 'am-users-api' | 'am-roles-api' | 'am-apiclients-api' | 'am-orgs-api';
|
|
42
42
|
/**
|
|
43
43
|
* Middleware interface compatible with openapi-fetch.
|
|
44
44
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware-registry.js","sourceRoot":"","sources":["../../../src/clients/middleware-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"middleware-registry.js","sourceRoot":"","sources":["../../../src/clients/middleware-registry.ts"],"names":[],"mappings":"AAgIA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,kBAAkB;IACrB,SAAS,GAA6B,EAAE,CAAC;IAEjD;;;;;;OAMG;IACH,QAAQ,CAAC,QAAgC;QACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAY;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC/D,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,UAA0B;QACtC,MAAM,UAAU,GAAwB,EAAE,CAAC;QAE3C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
|
|
@@ -23,12 +23,59 @@ export interface ExtraParamsConfig {
|
|
|
23
23
|
* Creates authentication middleware for openapi-fetch.
|
|
24
24
|
*
|
|
25
25
|
* This middleware intercepts requests and adds OAuth authentication headers
|
|
26
|
-
* using the provided AuthStrategy.
|
|
26
|
+
* using the provided AuthStrategy. It also handles 401 responses by invalidating
|
|
27
|
+
* the token and retrying the request once with a fresh token.
|
|
27
28
|
*
|
|
28
29
|
* @param auth - The authentication strategy to use
|
|
29
|
-
* @returns Middleware that adds auth headers to requests
|
|
30
|
+
* @returns Middleware that adds auth headers to requests and retries on 401
|
|
30
31
|
*/
|
|
31
32
|
export declare function createAuthMiddleware(auth: AuthStrategy): Middleware;
|
|
33
|
+
/**
|
|
34
|
+
* Configuration for rate limiting middleware.
|
|
35
|
+
*/
|
|
36
|
+
export interface RateLimitMiddlewareConfig {
|
|
37
|
+
/**
|
|
38
|
+
* Maximum number of retry attempts when a rate limit response is received.
|
|
39
|
+
* Defaults to 3.
|
|
40
|
+
*/
|
|
41
|
+
maxRetries?: number;
|
|
42
|
+
/**
|
|
43
|
+
* Base delay in milliseconds used for exponential backoff when no Retry-After
|
|
44
|
+
* header is present. Defaults to 1000ms.
|
|
45
|
+
*/
|
|
46
|
+
baseDelayMs?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Maximum delay in milliseconds between retries. Defaults to 30000ms.
|
|
49
|
+
*/
|
|
50
|
+
maxDelayMs?: number;
|
|
51
|
+
/**
|
|
52
|
+
* HTTP status codes that should trigger rate limit handling.
|
|
53
|
+
* Defaults to [429]. 503 is often used for overload, but is not included
|
|
54
|
+
* by default to avoid surprising retries for maintenance windows.
|
|
55
|
+
*/
|
|
56
|
+
statusCodes?: number[];
|
|
57
|
+
/**
|
|
58
|
+
* Optional log prefix (e.g., 'MRT') used in log messages.
|
|
59
|
+
*/
|
|
60
|
+
prefix?: string;
|
|
61
|
+
/**
|
|
62
|
+
* Optional fetch implementation used for retries when the middleware context
|
|
63
|
+
* does not provide a re-dispatch helper.
|
|
64
|
+
*/
|
|
65
|
+
fetch?: (request: Request) => Promise<Response>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Creates rate limiting middleware for openapi-fetch clients.
|
|
69
|
+
*
|
|
70
|
+
* This middleware inspects responses for rate-limit status codes (by default
|
|
71
|
+
* 429 Too Many Requests), uses the Retry-After header when present to
|
|
72
|
+
* determine a delay, and retries the request up to a configurable limit.
|
|
73
|
+
*
|
|
74
|
+
* The middleware is generic and can be used by MRT and other clients. It does
|
|
75
|
+
* not currently read CLI configuration directly; callers should pass
|
|
76
|
+
* configuration via the factory function.
|
|
77
|
+
*/
|
|
78
|
+
export declare function createRateLimitMiddleware(config?: RateLimitMiddlewareConfig): Middleware;
|
|
32
79
|
/**
|
|
33
80
|
* Configuration for logging middleware.
|
|
34
81
|
*/
|
|
@@ -9,24 +9,236 @@ function headersToObject(headers) {
|
|
|
9
9
|
});
|
|
10
10
|
return result;
|
|
11
11
|
}
|
|
12
|
+
// Track which requests have been retried to prevent infinite loops
|
|
13
|
+
const retriedRequests = new WeakSet();
|
|
14
|
+
// Store cloned request bodies for potential retry (body can only be read once)
|
|
15
|
+
const requestBodies = new WeakMap();
|
|
12
16
|
/**
|
|
13
17
|
* Creates authentication middleware for openapi-fetch.
|
|
14
18
|
*
|
|
15
19
|
* This middleware intercepts requests and adds OAuth authentication headers
|
|
16
|
-
* using the provided AuthStrategy.
|
|
20
|
+
* using the provided AuthStrategy. It also handles 401 responses by invalidating
|
|
21
|
+
* the token and retrying the request once with a fresh token.
|
|
17
22
|
*
|
|
18
23
|
* @param auth - The authentication strategy to use
|
|
19
|
-
* @returns Middleware that adds auth headers to requests
|
|
24
|
+
* @returns Middleware that adds auth headers to requests and retries on 401
|
|
20
25
|
*/
|
|
21
26
|
export function createAuthMiddleware(auth) {
|
|
27
|
+
const logger = getLogger();
|
|
28
|
+
let hasHadSuccess = false;
|
|
22
29
|
return {
|
|
23
30
|
async onRequest({ request }) {
|
|
24
31
|
if (auth.getAuthorizationHeader) {
|
|
25
32
|
const authHeader = await auth.getAuthorizationHeader();
|
|
26
33
|
request.headers.set('Authorization', authHeader);
|
|
27
34
|
}
|
|
35
|
+
// Clone the request body before it gets consumed, so we can retry if needed
|
|
36
|
+
if (request.body && auth.invalidateToken && auth.getAuthorizationHeader) {
|
|
37
|
+
const clonedRequest = request.clone();
|
|
38
|
+
const bodyBuffer = await clonedRequest.arrayBuffer();
|
|
39
|
+
requestBodies.set(request, bodyBuffer);
|
|
40
|
+
}
|
|
28
41
|
return request;
|
|
29
42
|
},
|
|
43
|
+
async onResponse({ request, response }) {
|
|
44
|
+
if (response.status !== 401) {
|
|
45
|
+
hasHadSuccess = true;
|
|
46
|
+
}
|
|
47
|
+
// Only retry on 401 if we have had a prior successful response (indicating
|
|
48
|
+
// token expiry rather than bad credentials), haven't already retried this
|
|
49
|
+
// request, and the strategy supports token invalidation
|
|
50
|
+
if (response.status === 401 &&
|
|
51
|
+
hasHadSuccess &&
|
|
52
|
+
!retriedRequests.has(request) &&
|
|
53
|
+
auth.invalidateToken &&
|
|
54
|
+
auth.getAuthorizationHeader) {
|
|
55
|
+
logger.debug('[AuthMiddleware] Received 401, invalidating token and retrying');
|
|
56
|
+
// Mark this request as retried to prevent infinite loops
|
|
57
|
+
retriedRequests.add(request);
|
|
58
|
+
// Invalidate the cached token
|
|
59
|
+
auth.invalidateToken();
|
|
60
|
+
// Get a fresh token
|
|
61
|
+
const newAuthHeader = await auth.getAuthorizationHeader();
|
|
62
|
+
// Rebuild the request with the new auth header
|
|
63
|
+
const newHeaders = new Headers(request.headers);
|
|
64
|
+
newHeaders.set('Authorization', newAuthHeader);
|
|
65
|
+
// Get the saved body (if any)
|
|
66
|
+
const savedBody = requestBodies.get(request);
|
|
67
|
+
// Create a new request with the fresh token
|
|
68
|
+
const retryRequest = new Request(request.url, {
|
|
69
|
+
method: request.method,
|
|
70
|
+
headers: newHeaders,
|
|
71
|
+
body: savedBody,
|
|
72
|
+
// TypeScript doesn't know about duplex, but it's needed for streaming bodies
|
|
73
|
+
...(savedBody ? { duplex: 'half' } : {}),
|
|
74
|
+
});
|
|
75
|
+
// Retry the request
|
|
76
|
+
const retryResponse = await fetch(retryRequest);
|
|
77
|
+
logger.debug({ status: retryResponse.status }, `[AuthMiddleware] Retry response: ${retryResponse.status}`);
|
|
78
|
+
return retryResponse;
|
|
79
|
+
}
|
|
80
|
+
return response;
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const DEFAULT_RATE_LIMIT_MAX_RETRIES = 3;
|
|
85
|
+
const DEFAULT_RATE_LIMIT_BASE_DELAY_MS = 1000;
|
|
86
|
+
const DEFAULT_RATE_LIMIT_MAX_DELAY_MS = 30000;
|
|
87
|
+
const DEFAULT_RATE_LIMIT_STATUS_CODES = [429];
|
|
88
|
+
const DEFAULT_RATE_LIMIT_JITTER_RATIO = 0.2;
|
|
89
|
+
async function sleepWithAbort(ms, signal) {
|
|
90
|
+
if (ms <= 0) {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
if (signal?.aborted) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
await new Promise((resolve) => {
|
|
97
|
+
function onAbort() {
|
|
98
|
+
clearTimeout(timeout);
|
|
99
|
+
signal?.removeEventListener('abort', onAbort);
|
|
100
|
+
resolve();
|
|
101
|
+
}
|
|
102
|
+
const timeout = setTimeout(() => {
|
|
103
|
+
signal?.removeEventListener('abort', onAbort);
|
|
104
|
+
resolve();
|
|
105
|
+
}, ms);
|
|
106
|
+
signal?.addEventListener('abort', onAbort);
|
|
107
|
+
});
|
|
108
|
+
return !signal?.aborted;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Parses the Retry-After header into a delay in milliseconds.
|
|
112
|
+
* Supports both seconds and HTTP date formats. Returns undefined if
|
|
113
|
+
* the header is missing or invalid.
|
|
114
|
+
*/
|
|
115
|
+
function parseRetryAfter(headerValue) {
|
|
116
|
+
if (!headerValue) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
const seconds = Number(headerValue);
|
|
120
|
+
if (!Number.isNaN(seconds)) {
|
|
121
|
+
return Math.max(0, Math.round(seconds * 1000));
|
|
122
|
+
}
|
|
123
|
+
const dateMs = Date.parse(headerValue);
|
|
124
|
+
if (!Number.isNaN(dateMs)) {
|
|
125
|
+
const diff = dateMs - Date.now();
|
|
126
|
+
return diff > 0 ? diff : 0;
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Returns the next backoff delay based on attempt count.
|
|
132
|
+
*/
|
|
133
|
+
function computeBackoffDelayMs(attempt, baseDelayMs, maxDelayMs) {
|
|
134
|
+
const delay = baseDelayMs * Math.pow(2, Math.max(0, attempt));
|
|
135
|
+
if (delay <= 0) {
|
|
136
|
+
return 0;
|
|
137
|
+
}
|
|
138
|
+
const jitter = Math.round(delay * DEFAULT_RATE_LIMIT_JITTER_RATIO * Math.random());
|
|
139
|
+
return Math.min(delay + jitter, maxDelayMs);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Creates rate limiting middleware for openapi-fetch clients.
|
|
143
|
+
*
|
|
144
|
+
* This middleware inspects responses for rate-limit status codes (by default
|
|
145
|
+
* 429 Too Many Requests), uses the Retry-After header when present to
|
|
146
|
+
* determine a delay, and retries the request up to a configurable limit.
|
|
147
|
+
*
|
|
148
|
+
* The middleware is generic and can be used by MRT and other clients. It does
|
|
149
|
+
* not currently read CLI configuration directly; callers should pass
|
|
150
|
+
* configuration via the factory function.
|
|
151
|
+
*/
|
|
152
|
+
export function createRateLimitMiddleware(config = {}) {
|
|
153
|
+
const logger = getLogger();
|
|
154
|
+
const { maxRetries = DEFAULT_RATE_LIMIT_MAX_RETRIES, baseDelayMs = DEFAULT_RATE_LIMIT_BASE_DELAY_MS, maxDelayMs = DEFAULT_RATE_LIMIT_MAX_DELAY_MS, statusCodes = DEFAULT_RATE_LIMIT_STATUS_CODES, prefix, fetch: configFetch, } = config;
|
|
155
|
+
const tag = prefix ? `[${prefix} RATE]` : '[RATE]';
|
|
156
|
+
return {
|
|
157
|
+
async onResponse(ctx) {
|
|
158
|
+
const { request, response } = ctx;
|
|
159
|
+
const ctxFetch = ctx.fetch;
|
|
160
|
+
// Only handle configured status codes
|
|
161
|
+
if (!statusCodes.includes(response.status) || maxRetries <= 0) {
|
|
162
|
+
return response;
|
|
163
|
+
}
|
|
164
|
+
const fetchFn = ctxFetch ?? configFetch ?? (typeof fetch === 'function' ? fetch : undefined);
|
|
165
|
+
if (!fetchFn) {
|
|
166
|
+
return response;
|
|
167
|
+
}
|
|
168
|
+
const reqWithAttempt = request;
|
|
169
|
+
const startingAttempt = reqWithAttempt._rateLimitAttempt ?? 0;
|
|
170
|
+
// If openapi-fetch provides ctx.fetch, it typically re-enters the middleware chain.
|
|
171
|
+
// In that case, do a single retry and let subsequent attempts be handled by
|
|
172
|
+
// subsequent middleware invocations (guarded by _rateLimitAttempt).
|
|
173
|
+
if (ctxFetch) {
|
|
174
|
+
if (startingAttempt >= maxRetries) {
|
|
175
|
+
logger.debug({ status: response.status, attempt: startingAttempt, maxRetries }, `${tag} Max retries reached, not retrying request`);
|
|
176
|
+
return response;
|
|
177
|
+
}
|
|
178
|
+
const retryAfterHeader = response.headers.get('Retry-After');
|
|
179
|
+
let delayMs = parseRetryAfter(retryAfterHeader);
|
|
180
|
+
if (delayMs === undefined) {
|
|
181
|
+
delayMs = computeBackoffDelayMs(startingAttempt, baseDelayMs, maxDelayMs);
|
|
182
|
+
}
|
|
183
|
+
logger.warn({
|
|
184
|
+
status: response.status,
|
|
185
|
+
attempt: startingAttempt + 1,
|
|
186
|
+
maxRetries,
|
|
187
|
+
delayMs,
|
|
188
|
+
retryAfter: retryAfterHeader ?? undefined,
|
|
189
|
+
url: request.url,
|
|
190
|
+
}, `${tag} Rate limit encountered, retrying request after ${delayMs}ms (attempt ${startingAttempt + 1}/${maxRetries})`);
|
|
191
|
+
const canRetry = await sleepWithAbort(delayMs, request.signal);
|
|
192
|
+
if (!canRetry) {
|
|
193
|
+
return response;
|
|
194
|
+
}
|
|
195
|
+
reqWithAttempt._rateLimitAttempt = startingAttempt + 1;
|
|
196
|
+
let retryRequest = request;
|
|
197
|
+
try {
|
|
198
|
+
retryRequest = request.clone();
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
logger.debug({ url: request.url }, `${tag} Could not clone request for retry; retrying with original request`);
|
|
202
|
+
}
|
|
203
|
+
return fetchFn(retryRequest);
|
|
204
|
+
}
|
|
205
|
+
// Fallback path: if ctx.fetch is not provided, handle retries in this invocation.
|
|
206
|
+
let lastResponse = response;
|
|
207
|
+
let attempt = startingAttempt;
|
|
208
|
+
while (statusCodes.includes(lastResponse.status) && attempt < maxRetries) {
|
|
209
|
+
const retryAfterHeader = lastResponse.headers.get('Retry-After');
|
|
210
|
+
let delayMs = parseRetryAfter(retryAfterHeader);
|
|
211
|
+
if (delayMs === undefined) {
|
|
212
|
+
delayMs = computeBackoffDelayMs(attempt, baseDelayMs, maxDelayMs);
|
|
213
|
+
}
|
|
214
|
+
logger.warn({
|
|
215
|
+
status: lastResponse.status,
|
|
216
|
+
attempt: attempt + 1,
|
|
217
|
+
maxRetries,
|
|
218
|
+
delayMs,
|
|
219
|
+
retryAfter: retryAfterHeader ?? undefined,
|
|
220
|
+
url: request.url,
|
|
221
|
+
}, `${tag} Rate limit encountered, retrying request after ${delayMs}ms (attempt ${attempt + 1}/${maxRetries})`);
|
|
222
|
+
const canRetry = await sleepWithAbort(delayMs, request.signal);
|
|
223
|
+
if (!canRetry) {
|
|
224
|
+
return lastResponse;
|
|
225
|
+
}
|
|
226
|
+
attempt += 1;
|
|
227
|
+
reqWithAttempt._rateLimitAttempt = attempt;
|
|
228
|
+
let retryRequest = request;
|
|
229
|
+
try {
|
|
230
|
+
retryRequest = request.clone();
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
logger.debug({ url: request.url }, `${tag} Could not clone request for retry; retrying with original request`);
|
|
234
|
+
}
|
|
235
|
+
lastResponse = await fetchFn(retryRequest);
|
|
236
|
+
}
|
|
237
|
+
if (statusCodes.includes(lastResponse.status) && attempt >= maxRetries) {
|
|
238
|
+
logger.debug({ status: lastResponse.status, attempt, maxRetries }, `${tag} Max retries reached, not retrying request`);
|
|
239
|
+
}
|
|
240
|
+
return lastResponse;
|
|
241
|
+
},
|
|
30
242
|
};
|
|
31
243
|
}
|
|
32
244
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/clients/middleware.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/clients/middleware.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/clients/mrt.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* @module clients/mrt
|
|
14
14
|
*/
|
|
15
15
|
import createClient, {} from 'openapi-fetch';
|
|
16
|
-
import { createAuthMiddleware, createLoggingMiddleware } from './middleware.js';
|
|
16
|
+
import { createAuthMiddleware, createLoggingMiddleware, createRateLimitMiddleware } from './middleware.js';
|
|
17
17
|
import { globalMiddlewareRegistry } from './middleware-registry.js';
|
|
18
18
|
/**
|
|
19
19
|
* Default MRT API origin.
|
|
@@ -77,6 +77,10 @@ export function createMrtClient(config, auth) {
|
|
|
77
77
|
for (const middleware of registry.getMiddleware('mrt')) {
|
|
78
78
|
client.use(middleware);
|
|
79
79
|
}
|
|
80
|
+
// Rate limiting middleware (retries on 429 using Retry-After/header-based backoff)
|
|
81
|
+
client.use(createRateLimitMiddleware({
|
|
82
|
+
prefix: 'MRT',
|
|
83
|
+
}));
|
|
80
84
|
// Logging middleware last (sees complete request with all modifications)
|
|
81
85
|
client.use(createLoggingMiddleware({
|
|
82
86
|
prefix: 'MRT',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mrt.js","sourceRoot":"","sources":["../../../src/clients/mrt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;GAQG;AACH,OAAO,YAAY,EAAE,EAAa,MAAM,eAAe,CAAC;AAGxD,OAAO,EAAC,oBAAoB,EAAE,uBAAuB,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mrt.js","sourceRoot":"","sources":["../../../src/clients/mrt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;GAQG;AACH,OAAO,YAAY,EAAE,EAAa,MAAM,eAAe,CAAC;AAGxD,OAAO,EAAC,oBAAoB,EAAE,uBAAuB,EAAE,yBAAyB,EAAC,MAAM,iBAAiB,CAAC;AACzG,OAAO,EAAC,wBAAwB,EAA0B,MAAM,0BAA0B,CAAC;AAwF3F;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,UAAU,eAAe,CAAC,MAAuB,EAAE,IAAkB;IACzE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,kBAAkB,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,IAAI,wBAAwB,CAAC;IAEvE,0DAA0D;IAC1D,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9E,MAAM,GAAG,WAAW,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAQ;QACjC,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,8BAA8B;IAC9B,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvC,kCAAkC;IAClC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,mFAAmF;IACnF,MAAM,CAAC,GAAG,CACR,yBAAyB,CAAC;QACxB,MAAM,EAAE,KAAK;KACd,CAAC,CACH,CAAC;IAEF,yEAAyE;IACzE,MAAM,CAAC,GAAG,CACR,uBAAuB,CAAC;QACtB,MAAM,EAAE,KAAK;QACb,gDAAgD;QAChD,YAAY,EAAE,CAAC,MAAM,CAAC;KACvB,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import type { AuthMethod } from '../auth/types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Configuration structure
|
|
4
|
-
*
|
|
3
|
+
* Configuration structure for dw.json after key normalization.
|
|
4
|
+
*
|
|
5
|
+
* All keys are normalized to camelCase by `normalizeConfigKeys()` when loading.
|
|
6
|
+
* Both camelCase and kebab-case are accepted in the raw file; the interface
|
|
7
|
+
* documents the canonical (post-normalization) field names.
|
|
8
|
+
*
|
|
9
|
+
* Legacy aliases (e.g., `server`, `secureHostname`, `passphrase`, `selfsigned`,
|
|
10
|
+
* `cloudOrigin`, `scapi-shortcode`) are also accepted and mapped to their
|
|
11
|
+
* canonical names during normalization.
|
|
5
12
|
*/
|
|
6
13
|
export interface DwJsonConfig {
|
|
7
14
|
/** Instance name (for multi-config files) */
|
|
@@ -10,58 +17,46 @@ export interface DwJsonConfig {
|
|
|
10
17
|
active?: boolean;
|
|
11
18
|
/** B2C instance hostname */
|
|
12
19
|
hostname?: string;
|
|
13
|
-
/** B2C instance hostname (alias for CLI flag consistency) */
|
|
14
|
-
server?: string;
|
|
15
20
|
/** Code version for deployments */
|
|
16
|
-
|
|
21
|
+
codeVersion?: string;
|
|
17
22
|
/** Username for Basic auth (WebDAV) */
|
|
18
23
|
username?: string;
|
|
19
24
|
/** Password/access-key for Basic auth (WebDAV) */
|
|
20
25
|
password?: string;
|
|
21
26
|
/** OAuth client ID */
|
|
22
|
-
|
|
27
|
+
clientId?: string;
|
|
23
28
|
/** OAuth client secret */
|
|
24
|
-
|
|
29
|
+
clientSecret?: string;
|
|
25
30
|
/** OAuth scopes */
|
|
26
|
-
|
|
27
|
-
/** SCAPI short code
|
|
28
|
-
'short-code'?: string;
|
|
29
|
-
/** SCAPI short code (camelCase) */
|
|
31
|
+
oauthScopes?: string[];
|
|
32
|
+
/** SCAPI short code */
|
|
30
33
|
shortCode?: string;
|
|
31
|
-
/** SCAPI short code (alternate kebab-case) */
|
|
32
|
-
'scapi-shortcode'?: string;
|
|
33
34
|
/** Alternate hostname for WebDAV (if different from main hostname) */
|
|
34
|
-
|
|
35
|
-
/** Alternate hostname for WebDAV (matches CLI flag name) */
|
|
36
|
-
'webdav-server'?: string;
|
|
37
|
-
/** Alternate hostname for WebDAV (legacy camelCase format) */
|
|
38
|
-
secureHostname?: string;
|
|
39
|
-
/** Alternate hostname for WebDAV (legacy kebab-case format) */
|
|
40
|
-
'secure-server'?: string;
|
|
35
|
+
webdavHostname?: string;
|
|
41
36
|
/** Allowed authentication methods in priority order */
|
|
42
|
-
|
|
37
|
+
authMethods?: AuthMethod[];
|
|
43
38
|
/** Account Manager hostname for OAuth */
|
|
44
|
-
|
|
39
|
+
accountManagerHost?: string;
|
|
45
40
|
/** MRT project slug */
|
|
46
41
|
mrtProject?: string;
|
|
47
42
|
/** MRT environment name (e.g., staging, production) */
|
|
48
43
|
mrtEnvironment?: string;
|
|
44
|
+
/** MRT API key */
|
|
45
|
+
mrtApiKey?: string;
|
|
49
46
|
/** MRT cloud origin URL */
|
|
50
47
|
mrtOrigin?: string;
|
|
51
|
-
/** MRT cloud origin URL (alias) */
|
|
52
|
-
cloudOrigin?: string;
|
|
53
48
|
/** Tenant/Organization ID for SCAPI */
|
|
54
|
-
|
|
49
|
+
tenantId?: string;
|
|
50
|
+
/** ODS API hostname */
|
|
51
|
+
sandboxApiHost?: string;
|
|
52
|
+
/** Default content library ID for content export/list commands */
|
|
53
|
+
contentLibrary?: string;
|
|
55
54
|
/** Path to PKCS12 certificate file for mTLS (two-factor auth) */
|
|
56
55
|
certificate?: string;
|
|
57
|
-
/** Passphrase for the certificate
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
|
|
61
|
-
/** Allow self-signed certificates (kebab-case) */
|
|
62
|
-
'self-signed'?: boolean;
|
|
63
|
-
/** Allow self-signed certificates (legacy) */
|
|
64
|
-
selfsigned?: boolean;
|
|
56
|
+
/** Passphrase for the certificate */
|
|
57
|
+
certificatePassphrase?: string;
|
|
58
|
+
/** Whether to skip SSL/TLS certificate verification (self-signed certs) */
|
|
59
|
+
selfSigned?: boolean;
|
|
65
60
|
}
|
|
66
61
|
/**
|
|
67
62
|
* dw.json with multi-config support (configs array).
|
|
@@ -103,6 +98,82 @@ export interface LoadDwJsonResult {
|
|
|
103
98
|
* }
|
|
104
99
|
*/
|
|
105
100
|
export declare function findDwJson(startDir?: string): string | undefined;
|
|
101
|
+
/**
|
|
102
|
+
* Load the raw dw.json file without selecting a specific instance.
|
|
103
|
+
*
|
|
104
|
+
* This is useful for instance management operations that need to work
|
|
105
|
+
* with the full configs array.
|
|
106
|
+
*
|
|
107
|
+
* @param options - Loading options
|
|
108
|
+
* @returns The raw multi-config structure and path, or undefined if not found
|
|
109
|
+
*/
|
|
110
|
+
export declare function loadFullDwJson(options?: LoadDwJsonOptions): {
|
|
111
|
+
config: DwJsonMultiConfig;
|
|
112
|
+
path: string;
|
|
113
|
+
} | undefined;
|
|
114
|
+
/**
|
|
115
|
+
* Save a dw.json configuration to disk.
|
|
116
|
+
*
|
|
117
|
+
* @param config - The configuration to save
|
|
118
|
+
* @param filePath - Path to save to
|
|
119
|
+
*/
|
|
120
|
+
export declare function saveDwJson(config: DwJsonMultiConfig, filePath: string): void;
|
|
121
|
+
/**
|
|
122
|
+
* Options for adding an instance.
|
|
123
|
+
*/
|
|
124
|
+
export interface AddInstanceOptions {
|
|
125
|
+
/** Path to dw.json (defaults to ./dw.json) */
|
|
126
|
+
path?: string;
|
|
127
|
+
/** Starting directory for search */
|
|
128
|
+
startDir?: string;
|
|
129
|
+
/** Whether to set as active instance */
|
|
130
|
+
setActive?: boolean;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Add a new instance to dw.json.
|
|
134
|
+
*
|
|
135
|
+
* If dw.json doesn't exist, creates a new one. If an instance with the same
|
|
136
|
+
* name already exists, throws an error.
|
|
137
|
+
*
|
|
138
|
+
* @param instance - The instance configuration to add
|
|
139
|
+
* @param options - Options for adding
|
|
140
|
+
* @throws Error if instance with same name already exists
|
|
141
|
+
*/
|
|
142
|
+
export declare function addInstance(instance: DwJsonConfig, options?: AddInstanceOptions): void;
|
|
143
|
+
/**
|
|
144
|
+
* Options for removing an instance.
|
|
145
|
+
*/
|
|
146
|
+
export interface RemoveInstanceOptions {
|
|
147
|
+
/** Path to dw.json */
|
|
148
|
+
path?: string;
|
|
149
|
+
/** Starting directory for search */
|
|
150
|
+
startDir?: string;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Remove an instance from dw.json.
|
|
154
|
+
*
|
|
155
|
+
* @param name - Name of the instance to remove
|
|
156
|
+
* @param options - Options for removal
|
|
157
|
+
* @throws Error if instance not found or dw.json doesn't exist
|
|
158
|
+
*/
|
|
159
|
+
export declare function removeInstance(name: string, options?: RemoveInstanceOptions): void;
|
|
160
|
+
/**
|
|
161
|
+
* Options for setting active instance.
|
|
162
|
+
*/
|
|
163
|
+
export interface SetActiveInstanceOptions {
|
|
164
|
+
/** Path to dw.json */
|
|
165
|
+
path?: string;
|
|
166
|
+
/** Starting directory for search */
|
|
167
|
+
startDir?: string;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Set an instance as the active default.
|
|
171
|
+
*
|
|
172
|
+
* @param name - Name of the instance to set as active
|
|
173
|
+
* @param options - Options
|
|
174
|
+
* @throws Error if instance not found or dw.json doesn't exist
|
|
175
|
+
*/
|
|
176
|
+
export declare function setActiveInstance(name: string, options?: SetActiveInstanceOptions): void;
|
|
106
177
|
/**
|
|
107
178
|
* Loads configuration from a dw.json file.
|
|
108
179
|
*
|