@salesforce/b2c-tooling-sdk 0.3.0 → 0.4.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/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 +189 -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 +19 -2
- 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 +1 -0
- package/dist/cjs/cli/oauth-command.d.ts +21 -1
- package/dist/cjs/cli/oauth-command.js +52 -7
- package/dist/cjs/cli/oauth-command.js.map +1 -1
- package/dist/cjs/cli/ods-command.d.ts +5 -1
- 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 +1 -0
- package/dist/cjs/clients/am-api.d.ts +491 -0
- package/dist/cjs/clients/am-api.js +944 -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 +891 -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 +143 -0
- package/dist/cjs/operations/users/index.js +141 -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 +196 -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 +19 -2
- 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 +1 -0
- package/dist/esm/cli/oauth-command.d.ts +21 -1
- package/dist/esm/cli/oauth-command.js +52 -7
- package/dist/esm/cli/oauth-command.js.map +1 -1
- package/dist/esm/cli/ods-command.d.ts +5 -1
- 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 +1 -0
- package/dist/esm/clients/am-api.d.ts +491 -0
- package/dist/esm/clients/am-api.js +944 -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 +891 -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 +143 -0
- package/dist/esm/operations/users/index.js +141 -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 +1102 -0
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import * as fs from 'node:fs';
|
|
15
15
|
import * as path from 'node:path';
|
|
16
16
|
import { getLogger } from '../logging/logger.js';
|
|
17
|
+
import { normalizeConfigKeys } from './mapping.js';
|
|
17
18
|
/**
|
|
18
19
|
* Finds dw.json by searching upward from the starting directory.
|
|
19
20
|
*
|
|
@@ -83,6 +84,164 @@ function selectConfig(json, instanceName) {
|
|
|
83
84
|
logger.trace({ selection: 'root', instanceName: json.name }, `[DwJsonSource] Selected config "${json.name ?? 'root'}" (default to root)`);
|
|
84
85
|
return json;
|
|
85
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Load the raw dw.json file without selecting a specific instance.
|
|
89
|
+
*
|
|
90
|
+
* This is useful for instance management operations that need to work
|
|
91
|
+
* with the full configs array.
|
|
92
|
+
*
|
|
93
|
+
* @param options - Loading options
|
|
94
|
+
* @returns The raw multi-config structure and path, or undefined if not found
|
|
95
|
+
*/
|
|
96
|
+
export function loadFullDwJson(options = {}) {
|
|
97
|
+
const logger = getLogger();
|
|
98
|
+
const dwJsonPath = options.path ?? path.join(options.startDir || process.cwd(), 'dw.json');
|
|
99
|
+
logger.trace({ path: dwJsonPath }, '[DwJsonSource] Checking for config file');
|
|
100
|
+
if (!fs.existsSync(dwJsonPath)) {
|
|
101
|
+
logger.trace({ path: dwJsonPath }, '[DwJsonSource] No config file found');
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
const content = fs.readFileSync(dwJsonPath, 'utf8');
|
|
106
|
+
const json = JSON.parse(content);
|
|
107
|
+
return { config: json, path: dwJsonPath };
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
111
|
+
logger.trace({ path: dwJsonPath, error: message }, '[DwJsonSource] Failed to parse config file');
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Save a dw.json configuration to disk.
|
|
117
|
+
*
|
|
118
|
+
* @param config - The configuration to save
|
|
119
|
+
* @param filePath - Path to save to
|
|
120
|
+
*/
|
|
121
|
+
export function saveDwJson(config, filePath) {
|
|
122
|
+
const content = JSON.stringify(config, null, 2) + '\n';
|
|
123
|
+
fs.writeFileSync(filePath, content, 'utf8');
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Add a new instance to dw.json.
|
|
127
|
+
*
|
|
128
|
+
* If dw.json doesn't exist, creates a new one. If an instance with the same
|
|
129
|
+
* name already exists, throws an error.
|
|
130
|
+
*
|
|
131
|
+
* @param instance - The instance configuration to add
|
|
132
|
+
* @param options - Options for adding
|
|
133
|
+
* @throws Error if instance with same name already exists
|
|
134
|
+
*/
|
|
135
|
+
export function addInstance(instance, options = {}) {
|
|
136
|
+
const dwJsonPath = options.path ?? path.join(options.startDir || process.cwd(), 'dw.json');
|
|
137
|
+
let existing = {};
|
|
138
|
+
if (fs.existsSync(dwJsonPath)) {
|
|
139
|
+
const content = fs.readFileSync(dwJsonPath, 'utf8');
|
|
140
|
+
existing = JSON.parse(content);
|
|
141
|
+
}
|
|
142
|
+
// Check if instance name already exists
|
|
143
|
+
const instanceName = instance.name;
|
|
144
|
+
if (!instanceName) {
|
|
145
|
+
throw new Error('Instance must have a name');
|
|
146
|
+
}
|
|
147
|
+
// Check root config
|
|
148
|
+
if (existing.name === instanceName) {
|
|
149
|
+
throw new Error(`Instance "${instanceName}" already exists`);
|
|
150
|
+
}
|
|
151
|
+
// Check configs array
|
|
152
|
+
if (existing.configs?.some((c) => c.name === instanceName)) {
|
|
153
|
+
throw new Error(`Instance "${instanceName}" already exists`);
|
|
154
|
+
}
|
|
155
|
+
// Handle setActive - clear other active flags
|
|
156
|
+
if (options.setActive) {
|
|
157
|
+
instance.active = true;
|
|
158
|
+
// Clear active on root if it has it
|
|
159
|
+
if (existing.active !== undefined) {
|
|
160
|
+
existing.active = false;
|
|
161
|
+
}
|
|
162
|
+
// Clear active on all other configs
|
|
163
|
+
if (existing.configs) {
|
|
164
|
+
for (const c of existing.configs) {
|
|
165
|
+
if (c.active !== undefined) {
|
|
166
|
+
c.active = false;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Initialize configs array if needed
|
|
172
|
+
if (!existing.configs) {
|
|
173
|
+
existing.configs = [];
|
|
174
|
+
}
|
|
175
|
+
// Add the new instance
|
|
176
|
+
existing.configs.push(instance);
|
|
177
|
+
saveDwJson(existing, dwJsonPath);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Remove an instance from dw.json.
|
|
181
|
+
*
|
|
182
|
+
* @param name - Name of the instance to remove
|
|
183
|
+
* @param options - Options for removal
|
|
184
|
+
* @throws Error if instance not found or dw.json doesn't exist
|
|
185
|
+
*/
|
|
186
|
+
export function removeInstance(name, options = {}) {
|
|
187
|
+
const dwJsonPath = options.path ?? path.join(options.startDir || process.cwd(), 'dw.json');
|
|
188
|
+
if (!fs.existsSync(dwJsonPath)) {
|
|
189
|
+
throw new Error('No dw.json file found');
|
|
190
|
+
}
|
|
191
|
+
const content = fs.readFileSync(dwJsonPath, 'utf8');
|
|
192
|
+
const existing = JSON.parse(content);
|
|
193
|
+
// Check if trying to remove root config
|
|
194
|
+
if (existing.name === name) {
|
|
195
|
+
throw new Error(`Cannot remove root instance "${name}". Edit dw.json manually to remove root config.`);
|
|
196
|
+
}
|
|
197
|
+
// Find and remove from configs array
|
|
198
|
+
if (!existing.configs || !existing.configs.some((c) => c.name === name)) {
|
|
199
|
+
throw new Error(`Instance "${name}" not found`);
|
|
200
|
+
}
|
|
201
|
+
existing.configs = existing.configs.filter((c) => c.name !== name);
|
|
202
|
+
saveDwJson(existing, dwJsonPath);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Set an instance as the active default.
|
|
206
|
+
*
|
|
207
|
+
* @param name - Name of the instance to set as active
|
|
208
|
+
* @param options - Options
|
|
209
|
+
* @throws Error if instance not found or dw.json doesn't exist
|
|
210
|
+
*/
|
|
211
|
+
export function setActiveInstance(name, options = {}) {
|
|
212
|
+
const dwJsonPath = options.path ?? path.join(options.startDir || process.cwd(), 'dw.json');
|
|
213
|
+
if (!fs.existsSync(dwJsonPath)) {
|
|
214
|
+
throw new Error('No dw.json file found');
|
|
215
|
+
}
|
|
216
|
+
const content = fs.readFileSync(dwJsonPath, 'utf8');
|
|
217
|
+
const existing = JSON.parse(content);
|
|
218
|
+
// Find the target instance
|
|
219
|
+
let found = false;
|
|
220
|
+
// Check root config
|
|
221
|
+
if (existing.name === name) {
|
|
222
|
+
found = true;
|
|
223
|
+
existing.active = true;
|
|
224
|
+
}
|
|
225
|
+
else if (existing.active !== undefined) {
|
|
226
|
+
existing.active = false;
|
|
227
|
+
}
|
|
228
|
+
// Check and update configs array
|
|
229
|
+
if (existing.configs) {
|
|
230
|
+
for (const c of existing.configs) {
|
|
231
|
+
if (c.name === name) {
|
|
232
|
+
found = true;
|
|
233
|
+
c.active = true;
|
|
234
|
+
}
|
|
235
|
+
else if (c.active !== undefined) {
|
|
236
|
+
c.active = false;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (!found) {
|
|
241
|
+
throw new Error(`Instance "${name}" not found`);
|
|
242
|
+
}
|
|
243
|
+
saveDwJson(existing, dwJsonPath);
|
|
244
|
+
}
|
|
86
245
|
/**
|
|
87
246
|
* Loads configuration from a dw.json file.
|
|
88
247
|
*
|
|
@@ -122,8 +281,14 @@ export function loadDwJson(options = {}) {
|
|
|
122
281
|
}
|
|
123
282
|
try {
|
|
124
283
|
const content = fs.readFileSync(dwJsonPath, 'utf8');
|
|
125
|
-
const
|
|
126
|
-
|
|
284
|
+
const raw = JSON.parse(content);
|
|
285
|
+
// Normalize root-level keys to camelCase
|
|
286
|
+
const normalized = normalizeConfigKeys(raw);
|
|
287
|
+
// Normalize keys in each configs[] item
|
|
288
|
+
if (Array.isArray(normalized.configs)) {
|
|
289
|
+
normalized.configs = normalized.configs.map((item) => normalizeConfigKeys(item));
|
|
290
|
+
}
|
|
291
|
+
const config = selectConfig(normalized, options.instance);
|
|
127
292
|
if (!config) {
|
|
128
293
|
return undefined;
|
|
129
294
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dw-json.js","sourceRoot":"","sources":["../../../src/config/dw-json.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"dw-json.js","sourceRoot":"","sources":["../../../src/config/dw-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,7 +90,9 @@
|
|
|
90
90
|
* @module config
|
|
91
91
|
*/
|
|
92
92
|
export { resolveConfig, ConfigResolver, createConfigResolver } from './resolver.js';
|
|
93
|
-
export type { NormalizedConfig, ConfigSource, ConfigLoadResult, ConfigSourceInfo, ConfigResolutionResult, ConfigWarning, ConfigWarningCode, ResolveConfigOptions, ResolvedB2CConfig, CreateOAuthOptions, } from './types.js';
|
|
94
|
-
export { createInstanceFromConfig } from './mapping.js';
|
|
95
|
-
export { loadDwJson, findDwJson } from './dw-json.js';
|
|
96
|
-
export type { DwJsonConfig, DwJsonMultiConfig, LoadDwJsonOptions, LoadDwJsonResult } from './dw-json.js';
|
|
93
|
+
export type { NormalizedConfig, ConfigSource, ConfigLoadResult, ConfigSourceInfo, ConfigResolutionResult, ConfigWarning, ConfigWarningCode, ResolveConfigOptions, ResolvedB2CConfig, CreateOAuthOptions, InstanceInfo, CreateInstanceOptions, } from './types.js';
|
|
94
|
+
export { createInstanceFromConfig, normalizeConfigKeys } from './mapping.js';
|
|
95
|
+
export { loadDwJson, loadFullDwJson, findDwJson, saveDwJson, addInstance, removeInstance, setActiveInstance, } from './dw-json.js';
|
|
96
|
+
export type { DwJsonConfig, DwJsonMultiConfig, LoadDwJsonOptions, LoadDwJsonResult, AddInstanceOptions, RemoveInstanceOptions, SetActiveInstanceOptions, } from './dw-json.js';
|
|
97
|
+
export { InstanceManager, createInstanceManager } from './instance-manager.js';
|
|
98
|
+
export { DwJsonSource } from './sources/dw-json-source.js';
|
package/dist/esm/config/index.js
CHANGED
|
@@ -97,7 +97,11 @@
|
|
|
97
97
|
// High-level API (preferred)
|
|
98
98
|
export { resolveConfig, ConfigResolver, createConfigResolver } from './resolver.js';
|
|
99
99
|
// Instance creation utility (public API for CLI commands)
|
|
100
|
-
export { createInstanceFromConfig } from './mapping.js';
|
|
100
|
+
export { createInstanceFromConfig, normalizeConfigKeys } from './mapping.js';
|
|
101
101
|
// Low-level dw.json API (still available for advanced use)
|
|
102
|
-
export { loadDwJson, findDwJson } from './dw-json.js';
|
|
102
|
+
export { loadDwJson, loadFullDwJson, findDwJson, saveDwJson, addInstance, removeInstance, setActiveInstance, } from './dw-json.js';
|
|
103
|
+
// Instance management
|
|
104
|
+
export { InstanceManager, createInstanceManager } from './instance-manager.js';
|
|
105
|
+
// Config sources (for direct use)
|
|
106
|
+
export { DwJsonSource } from './sources/dw-json-source.js';
|
|
103
107
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AAEH,6BAA6B;AAC7B,OAAO,EAAC,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AAEH,6BAA6B;AAC7B,OAAO,EAAC,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAkBlF,0DAA0D;AAC1D,OAAO,EAAC,wBAAwB,EAAE,mBAAmB,EAAC,MAAM,cAAc,CAAC;AAE3E,2DAA2D;AAC3D,OAAO,EACL,UAAU,EACV,cAAc,EACd,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAWtB,sBAAsB;AACtB,OAAO,EAAC,eAAe,EAAE,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAE7E,kCAAkC;AAClC,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instance management service.
|
|
3
|
+
*
|
|
4
|
+
* Aggregates instance management operations across multiple config sources.
|
|
5
|
+
*
|
|
6
|
+
* @module config/instance-manager
|
|
7
|
+
*/
|
|
8
|
+
import type { ConfigSource, InstanceInfo, CreateInstanceOptions, ResolveConfigOptions, NormalizedConfig } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Service for managing B2C instances across multiple config sources.
|
|
11
|
+
*
|
|
12
|
+
* This class aggregates instance management operations from all sources
|
|
13
|
+
* that implement the optional instance management methods.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { InstanceManager, DwJsonSource } from '@salesforce/b2c-tooling-sdk/config';
|
|
18
|
+
*
|
|
19
|
+
* const manager = new InstanceManager([new DwJsonSource()]);
|
|
20
|
+
*
|
|
21
|
+
* // List all instances
|
|
22
|
+
* const instances = manager.listAllInstances();
|
|
23
|
+
*
|
|
24
|
+
* // Create a new instance
|
|
25
|
+
* manager.createInstance({
|
|
26
|
+
* name: 'staging',
|
|
27
|
+
* config: { hostname: 'staging.example.com' },
|
|
28
|
+
* setActive: true,
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare class InstanceManager {
|
|
33
|
+
private readonly sources;
|
|
34
|
+
constructor(sources: ConfigSource[]);
|
|
35
|
+
/**
|
|
36
|
+
* List instances from all sources that implement listInstances().
|
|
37
|
+
*
|
|
38
|
+
* @param options - Resolution options
|
|
39
|
+
* @returns Array of all instances from all sources
|
|
40
|
+
*/
|
|
41
|
+
listAllInstances(options?: ResolveConfigOptions): InstanceInfo[];
|
|
42
|
+
/**
|
|
43
|
+
* Get sources that can create instances.
|
|
44
|
+
*
|
|
45
|
+
* @returns Array of sources with createInstance() method
|
|
46
|
+
*/
|
|
47
|
+
getInstanceSources(): ConfigSource[];
|
|
48
|
+
/**
|
|
49
|
+
* Get sources that can store a specific credential field.
|
|
50
|
+
*
|
|
51
|
+
* @param field - The credential field to check
|
|
52
|
+
* @returns Array of sources that can store the field
|
|
53
|
+
*/
|
|
54
|
+
getCredentialSources(field: keyof NormalizedConfig): ConfigSource[];
|
|
55
|
+
/**
|
|
56
|
+
* Create an instance in the specified source (or default to first instance source).
|
|
57
|
+
*
|
|
58
|
+
* @param options - Instance creation options
|
|
59
|
+
* @param targetSource - Source name to use (optional, defaults to first available)
|
|
60
|
+
* @throws Error if no instance sources available or specified source not found
|
|
61
|
+
*/
|
|
62
|
+
createInstance(options: CreateInstanceOptions & ResolveConfigOptions, targetSource?: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* Remove an instance from the source that contains it.
|
|
65
|
+
*
|
|
66
|
+
* @param name - Instance name to remove
|
|
67
|
+
* @param options - Resolution options
|
|
68
|
+
* @throws Error if instance not found in any source
|
|
69
|
+
*/
|
|
70
|
+
removeInstance(name: string, options?: ResolveConfigOptions): void;
|
|
71
|
+
/**
|
|
72
|
+
* Set an instance as active in the source that contains it.
|
|
73
|
+
*
|
|
74
|
+
* @param name - Instance name to set as active
|
|
75
|
+
* @param options - Resolution options
|
|
76
|
+
* @throws Error if instance not found in any source
|
|
77
|
+
*/
|
|
78
|
+
setActiveInstance(name: string, options?: ResolveConfigOptions): void;
|
|
79
|
+
/**
|
|
80
|
+
* Store a credential for an instance in the specified source.
|
|
81
|
+
*
|
|
82
|
+
* @param instanceName - Instance name
|
|
83
|
+
* @param field - Config field to store
|
|
84
|
+
* @param value - Value to store
|
|
85
|
+
* @param targetSource - Source name to use (optional)
|
|
86
|
+
* @param options - Resolution options
|
|
87
|
+
* @throws Error if no credential sources support the field
|
|
88
|
+
*/
|
|
89
|
+
storeCredential(instanceName: string, field: keyof NormalizedConfig, value: string, targetSource?: string, options?: ResolveConfigOptions): void;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Create an InstanceManager with the given sources.
|
|
93
|
+
*
|
|
94
|
+
* @param sources - Config sources to use
|
|
95
|
+
* @returns InstanceManager instance
|
|
96
|
+
*/
|
|
97
|
+
export declare function createInstanceManager(sources: ConfigSource[]): InstanceManager;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service for managing B2C instances across multiple config sources.
|
|
3
|
+
*
|
|
4
|
+
* This class aggregates instance management operations from all sources
|
|
5
|
+
* that implement the optional instance management methods.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { InstanceManager, DwJsonSource } from '@salesforce/b2c-tooling-sdk/config';
|
|
10
|
+
*
|
|
11
|
+
* const manager = new InstanceManager([new DwJsonSource()]);
|
|
12
|
+
*
|
|
13
|
+
* // List all instances
|
|
14
|
+
* const instances = manager.listAllInstances();
|
|
15
|
+
*
|
|
16
|
+
* // Create a new instance
|
|
17
|
+
* manager.createInstance({
|
|
18
|
+
* name: 'staging',
|
|
19
|
+
* config: { hostname: 'staging.example.com' },
|
|
20
|
+
* setActive: true,
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class InstanceManager {
|
|
25
|
+
sources;
|
|
26
|
+
constructor(sources) {
|
|
27
|
+
this.sources = sources;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* List instances from all sources that implement listInstances().
|
|
31
|
+
*
|
|
32
|
+
* @param options - Resolution options
|
|
33
|
+
* @returns Array of all instances from all sources
|
|
34
|
+
*/
|
|
35
|
+
listAllInstances(options) {
|
|
36
|
+
const allInstances = [];
|
|
37
|
+
for (const source of this.sources) {
|
|
38
|
+
if (source.listInstances) {
|
|
39
|
+
const instances = source.listInstances(options);
|
|
40
|
+
allInstances.push(...instances);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return allInstances;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get sources that can create instances.
|
|
47
|
+
*
|
|
48
|
+
* @returns Array of sources with createInstance() method
|
|
49
|
+
*/
|
|
50
|
+
getInstanceSources() {
|
|
51
|
+
return this.sources.filter((s) => s.createInstance);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get sources that can store a specific credential field.
|
|
55
|
+
*
|
|
56
|
+
* @param field - The credential field to check
|
|
57
|
+
* @returns Array of sources that can store the field
|
|
58
|
+
*/
|
|
59
|
+
getCredentialSources(field) {
|
|
60
|
+
return this.sources.filter((s) => s.credentialFields?.includes(field));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create an instance in the specified source (or default to first instance source).
|
|
64
|
+
*
|
|
65
|
+
* @param options - Instance creation options
|
|
66
|
+
* @param targetSource - Source name to use (optional, defaults to first available)
|
|
67
|
+
* @throws Error if no instance sources available or specified source not found
|
|
68
|
+
*/
|
|
69
|
+
createInstance(options, targetSource) {
|
|
70
|
+
const instanceSources = this.getInstanceSources();
|
|
71
|
+
if (instanceSources.length === 0) {
|
|
72
|
+
throw new Error('No config sources support instance creation');
|
|
73
|
+
}
|
|
74
|
+
let source;
|
|
75
|
+
if (targetSource) {
|
|
76
|
+
const found = instanceSources.find((s) => s.name === targetSource);
|
|
77
|
+
if (!found) {
|
|
78
|
+
throw new Error(`Source "${targetSource}" not found or does not support instance creation`);
|
|
79
|
+
}
|
|
80
|
+
source = found;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// Default to first (highest priority) instance source
|
|
84
|
+
source = instanceSources[0];
|
|
85
|
+
}
|
|
86
|
+
source.createInstance(options);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Remove an instance from the source that contains it.
|
|
90
|
+
*
|
|
91
|
+
* @param name - Instance name to remove
|
|
92
|
+
* @param options - Resolution options
|
|
93
|
+
* @throws Error if instance not found in any source
|
|
94
|
+
*/
|
|
95
|
+
removeInstance(name, options) {
|
|
96
|
+
// Find the source that has this instance
|
|
97
|
+
for (const source of this.sources) {
|
|
98
|
+
if (source.listInstances && source.removeInstance) {
|
|
99
|
+
const instances = source.listInstances(options);
|
|
100
|
+
if (instances.some((i) => i.name === name)) {
|
|
101
|
+
source.removeInstance(name, options);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
throw new Error(`Instance "${name}" not found in any source`);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Set an instance as active in the source that contains it.
|
|
110
|
+
*
|
|
111
|
+
* @param name - Instance name to set as active
|
|
112
|
+
* @param options - Resolution options
|
|
113
|
+
* @throws Error if instance not found in any source
|
|
114
|
+
*/
|
|
115
|
+
setActiveInstance(name, options) {
|
|
116
|
+
// Find the source that has this instance
|
|
117
|
+
for (const source of this.sources) {
|
|
118
|
+
if (source.listInstances && source.setActiveInstance) {
|
|
119
|
+
const instances = source.listInstances(options);
|
|
120
|
+
if (instances.some((i) => i.name === name)) {
|
|
121
|
+
source.setActiveInstance(name, options);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
throw new Error(`Instance "${name}" not found in any source`);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Store a credential for an instance in the specified source.
|
|
130
|
+
*
|
|
131
|
+
* @param instanceName - Instance name
|
|
132
|
+
* @param field - Config field to store
|
|
133
|
+
* @param value - Value to store
|
|
134
|
+
* @param targetSource - Source name to use (optional)
|
|
135
|
+
* @param options - Resolution options
|
|
136
|
+
* @throws Error if no credential sources support the field
|
|
137
|
+
*/
|
|
138
|
+
storeCredential(instanceName, field, value, targetSource, options) {
|
|
139
|
+
const credentialSources = this.getCredentialSources(field);
|
|
140
|
+
if (credentialSources.length === 0) {
|
|
141
|
+
throw new Error(`No config sources support storing credential field "${String(field)}"`);
|
|
142
|
+
}
|
|
143
|
+
let source;
|
|
144
|
+
if (targetSource) {
|
|
145
|
+
const found = credentialSources.find((s) => s.name === targetSource);
|
|
146
|
+
if (!found) {
|
|
147
|
+
throw new Error(`Source "${targetSource}" not found or does not support credential storage`);
|
|
148
|
+
}
|
|
149
|
+
source = found;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
source = credentialSources[0];
|
|
153
|
+
}
|
|
154
|
+
source.storeCredential(instanceName, field, value, options);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Create an InstanceManager with the given sources.
|
|
159
|
+
*
|
|
160
|
+
* @param sources - Config sources to use
|
|
161
|
+
* @returns InstanceManager instance
|
|
162
|
+
*/
|
|
163
|
+
export function createInstanceManager(sources) {
|
|
164
|
+
return new InstanceManager(sources);
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=instance-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-manager.js","sourceRoot":"","sources":["../../../src/config/instance-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,27 +10,85 @@ import type { AuthConfig } from '../auth/types.js';
|
|
|
10
10
|
import { B2CInstance } from '../instance/index.js';
|
|
11
11
|
import type { DwJsonConfig } from './dw-json.js';
|
|
12
12
|
import type { NormalizedConfig, ConfigWarning } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Converts a kebab-case string to camelCase.
|
|
15
|
+
*
|
|
16
|
+
* @param str - The kebab-case string to convert
|
|
17
|
+
* @returns The camelCase equivalent
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* kebabToCamelCase('code-version'); // 'codeVersion'
|
|
22
|
+
* kebabToCamelCase('client-id'); // 'clientId'
|
|
23
|
+
* kebabToCamelCase('hostname'); // 'hostname' (no change)
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function kebabToCamelCase(str: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Legacy/non-standard aliases that cannot be derived by kebab→camel conversion.
|
|
29
|
+
* Maps alias → canonical camelCase field name.
|
|
30
|
+
*/
|
|
31
|
+
export declare const CONFIG_KEY_ALIASES: Record<string, string>;
|
|
32
|
+
/**
|
|
33
|
+
* Normalizes config keys to canonical camelCase form.
|
|
34
|
+
*
|
|
35
|
+
* Resolution order for each key:
|
|
36
|
+
* 1. Check CONFIG_KEY_ALIASES for legacy/non-standard names
|
|
37
|
+
* 2. Fall back to kebab→camelCase conversion
|
|
38
|
+
* 3. First value wins when multiple keys resolve to the same canonical name
|
|
39
|
+
*
|
|
40
|
+
* @param raw - The raw config object with potentially mixed key formats
|
|
41
|
+
* @returns A new object with all keys in canonical camelCase
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* normalizeConfigKeys({ 'client-id': 'abc', 'code-version': 'v1' });
|
|
46
|
+
* // { clientId: 'abc', codeVersion: 'v1' }
|
|
47
|
+
*
|
|
48
|
+
* normalizeConfigKeys({ server: 'example.com', hostname: 'other.com' });
|
|
49
|
+
* // { hostname: 'example.com' } (first value wins)
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function normalizeConfigKeys(raw: Record<string, unknown>): Record<string, unknown>;
|
|
13
53
|
/**
|
|
14
54
|
* Maps dw.json fields to normalized config format.
|
|
15
55
|
*
|
|
16
56
|
* This is the SINGLE place where dw.json field mapping happens.
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
57
|
+
* Keys are already normalized to camelCase by normalizeConfigKeys() in loadDwJson(),
|
|
58
|
+
* so this function only handles genuine renames (e.g., `name` → `instanceName`,
|
|
59
|
+
* `oauthScopes` → `scopes`).
|
|
20
60
|
*
|
|
21
|
-
* @param json - The
|
|
61
|
+
* @param json - The normalized dw.json config (camelCase keys)
|
|
22
62
|
* @returns Normalized configuration
|
|
23
63
|
*
|
|
24
64
|
* @example
|
|
25
65
|
* ```typescript
|
|
26
66
|
* import { mapDwJsonToNormalizedConfig } from '@salesforce/b2c-tooling-sdk/config';
|
|
27
67
|
*
|
|
28
|
-
* const dwJson = { hostname: 'example.com',
|
|
68
|
+
* const dwJson = { hostname: 'example.com', codeVersion: 'v1' };
|
|
29
69
|
* const config = mapDwJsonToNormalizedConfig(dwJson);
|
|
30
70
|
* // { hostname: 'example.com', codeVersion: 'v1' }
|
|
31
71
|
* ```
|
|
32
72
|
*/
|
|
33
73
|
export declare function mapDwJsonToNormalizedConfig(json: DwJsonConfig): NormalizedConfig;
|
|
74
|
+
/**
|
|
75
|
+
* Maps normalized config to dw.json format.
|
|
76
|
+
*
|
|
77
|
+
* This is the reverse of mapDwJsonToNormalizedConfig. It converts normalized
|
|
78
|
+
* config (camelCase) back to dw.json format (kebab-case).
|
|
79
|
+
*
|
|
80
|
+
* @param config - The normalized configuration
|
|
81
|
+
* @param name - Optional instance name to include
|
|
82
|
+
* @returns DwJsonConfig structure
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const config = { hostname: 'example.com', codeVersion: 'v1', clientId: 'abc' };
|
|
87
|
+
* const dwJson = mapNormalizedConfigToDwJson(config, 'staging');
|
|
88
|
+
* // { name: 'staging', hostname: 'example.com', 'code-version': 'v1', 'client-id': 'abc' }
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function mapNormalizedConfigToDwJson(config: Partial<NormalizedConfig>, name?: string): DwJsonConfig;
|
|
34
92
|
/**
|
|
35
93
|
* Options for merging configurations.
|
|
36
94
|
*/
|