@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,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for JSON merge operations
|
|
3
|
+
*/
|
|
4
|
+
export interface JsonMergeOptions {
|
|
5
|
+
/** JSON path to the target location (e.g., "scripts", "hooks.dw.ocapi") */
|
|
6
|
+
jsonPath?: string;
|
|
7
|
+
/** Whether to create the path if it doesn't exist */
|
|
8
|
+
createPath?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Merge JSON content into an existing JSON string
|
|
12
|
+
* @param existingJson - The existing JSON string
|
|
13
|
+
* @param newContent - JSON content to merge (string or object)
|
|
14
|
+
* @param options - Merge options
|
|
15
|
+
* @returns Updated JSON string
|
|
16
|
+
*/
|
|
17
|
+
export declare function mergeJson(existingJson: string, newContent: string | Record<string, unknown>, options?: JsonMergeOptions): string;
|
|
18
|
+
/**
|
|
19
|
+
* Options for text insertion operations
|
|
20
|
+
*/
|
|
21
|
+
export interface TextInsertOptions {
|
|
22
|
+
/** Marker string to find for insert-after/insert-before */
|
|
23
|
+
marker?: string;
|
|
24
|
+
/** Whether to add a newline after the inserted content */
|
|
25
|
+
addNewline?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Insert text after a marker in existing content
|
|
29
|
+
* @param existingContent - The existing text content
|
|
30
|
+
* @param newContent - Content to insert
|
|
31
|
+
* @param marker - Marker string to find
|
|
32
|
+
* @returns Updated content
|
|
33
|
+
*/
|
|
34
|
+
export declare function insertAfter(existingContent: string, newContent: string, marker: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Insert text before a marker in existing content
|
|
37
|
+
* @param existingContent - The existing text content
|
|
38
|
+
* @param newContent - Content to insert
|
|
39
|
+
* @param marker - Marker string to find
|
|
40
|
+
* @returns Updated content
|
|
41
|
+
*/
|
|
42
|
+
export declare function insertBefore(existingContent: string, newContent: string, marker: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Append content to the end of existing content
|
|
45
|
+
* @param existingContent - The existing text content
|
|
46
|
+
* @param newContent - Content to append
|
|
47
|
+
* @returns Updated content
|
|
48
|
+
*/
|
|
49
|
+
export declare function appendContent(existingContent: string, newContent: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Prepend content to the beginning of existing content
|
|
52
|
+
* @param existingContent - The existing text content
|
|
53
|
+
* @param newContent - Content to prepend
|
|
54
|
+
* @returns Updated content
|
|
55
|
+
*/
|
|
56
|
+
export declare function prependContent(existingContent: string, newContent: string): string;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Navigate to a nested JSON path and return parent + key
|
|
8
|
+
* @param obj - The object to navigate
|
|
9
|
+
* @param path - Dot-separated path (e.g., "hooks.dw.ocapi")
|
|
10
|
+
* @returns Tuple of [parent object, final key, success]
|
|
11
|
+
*/
|
|
12
|
+
function navigateToPath(obj, path) {
|
|
13
|
+
if (!path) {
|
|
14
|
+
return [null, '', false];
|
|
15
|
+
}
|
|
16
|
+
const parts = path.split('.');
|
|
17
|
+
const finalKey = parts.pop();
|
|
18
|
+
let current = obj;
|
|
19
|
+
for (const part of parts) {
|
|
20
|
+
if (current === null || typeof current !== 'object') {
|
|
21
|
+
return [null, finalKey, false];
|
|
22
|
+
}
|
|
23
|
+
if (!(part in current)) {
|
|
24
|
+
return [null, finalKey, false];
|
|
25
|
+
}
|
|
26
|
+
current = current[part];
|
|
27
|
+
}
|
|
28
|
+
if (current === null || typeof current !== 'object') {
|
|
29
|
+
return [null, finalKey, false];
|
|
30
|
+
}
|
|
31
|
+
return [current, finalKey, true];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create a nested path in an object
|
|
35
|
+
* @param obj - The object to modify
|
|
36
|
+
* @param path - Dot-separated path to create
|
|
37
|
+
* @returns The parent object of the final key
|
|
38
|
+
*/
|
|
39
|
+
function createPath(obj, path) {
|
|
40
|
+
const parts = path.split('.');
|
|
41
|
+
const finalKey = parts.pop();
|
|
42
|
+
let current = obj;
|
|
43
|
+
for (const part of parts) {
|
|
44
|
+
if (!(part in current) || typeof current[part] !== 'object' || current[part] === null) {
|
|
45
|
+
current[part] = {};
|
|
46
|
+
}
|
|
47
|
+
current = current[part];
|
|
48
|
+
}
|
|
49
|
+
return [current, finalKey];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Deep merge two objects, with source overriding target for conflicts
|
|
53
|
+
*/
|
|
54
|
+
function deepMerge(target, source) {
|
|
55
|
+
if (Array.isArray(source)) {
|
|
56
|
+
if (Array.isArray(target)) {
|
|
57
|
+
// Merge arrays by appending source items not already in target
|
|
58
|
+
const result = [...target];
|
|
59
|
+
for (const item of source) {
|
|
60
|
+
const itemStr = JSON.stringify(item);
|
|
61
|
+
const exists = result.some((existing) => JSON.stringify(existing) === itemStr);
|
|
62
|
+
if (!exists) {
|
|
63
|
+
result.push(item);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
return source;
|
|
69
|
+
}
|
|
70
|
+
if (source !== null && typeof source === 'object') {
|
|
71
|
+
if (target !== null && typeof target === 'object' && !Array.isArray(target)) {
|
|
72
|
+
const result = { ...target };
|
|
73
|
+
for (const key of Object.keys(source)) {
|
|
74
|
+
result[key] = deepMerge(result[key], source[key]);
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
return source;
|
|
79
|
+
}
|
|
80
|
+
return source;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Merge JSON content into an existing JSON string
|
|
84
|
+
* @param existingJson - The existing JSON string
|
|
85
|
+
* @param newContent - JSON content to merge (string or object)
|
|
86
|
+
* @param options - Merge options
|
|
87
|
+
* @returns Updated JSON string
|
|
88
|
+
*/
|
|
89
|
+
export function mergeJson(existingJson, newContent, options = {}) {
|
|
90
|
+
const existing = JSON.parse(existingJson);
|
|
91
|
+
const content = typeof newContent === 'string' ? JSON.parse(newContent) : newContent;
|
|
92
|
+
if (options.jsonPath) {
|
|
93
|
+
const [parent, key, found] = navigateToPath(existing, options.jsonPath);
|
|
94
|
+
if (!found) {
|
|
95
|
+
if (options.createPath !== false) {
|
|
96
|
+
const [newParent, newKey] = createPath(existing, options.jsonPath);
|
|
97
|
+
newParent[newKey] = content;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
throw new Error(`JSON path not found: ${options.jsonPath}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else if (parent) {
|
|
104
|
+
parent[key] = deepMerge(parent[key], content);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Merge at root level
|
|
109
|
+
const merged = deepMerge(existing, content);
|
|
110
|
+
return JSON.stringify(merged, null, 2);
|
|
111
|
+
}
|
|
112
|
+
return JSON.stringify(existing, null, 2);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Insert text after a marker in existing content
|
|
116
|
+
* @param existingContent - The existing text content
|
|
117
|
+
* @param newContent - Content to insert
|
|
118
|
+
* @param marker - Marker string to find
|
|
119
|
+
* @returns Updated content
|
|
120
|
+
*/
|
|
121
|
+
export function insertAfter(existingContent, newContent, marker) {
|
|
122
|
+
const index = existingContent.indexOf(marker);
|
|
123
|
+
if (index === -1) {
|
|
124
|
+
throw new Error(`Marker not found: ${marker}`);
|
|
125
|
+
}
|
|
126
|
+
let insertPoint = index + marker.length;
|
|
127
|
+
// If there's a newline right after the marker, insert after it
|
|
128
|
+
if (existingContent[insertPoint] === '\n') {
|
|
129
|
+
insertPoint++;
|
|
130
|
+
}
|
|
131
|
+
// Check if we need to add a newline before the new content
|
|
132
|
+
const needsNewlineBefore = insertPoint > 0 && existingContent[insertPoint - 1] !== '\n' && !newContent.startsWith('\n');
|
|
133
|
+
// Check if we need to add a newline after the new content
|
|
134
|
+
const needsNewlineAfter = !newContent.endsWith('\n') && insertPoint < existingContent.length && existingContent[insertPoint] !== '\n';
|
|
135
|
+
return (existingContent.slice(0, insertPoint) +
|
|
136
|
+
(needsNewlineBefore ? '\n' : '') +
|
|
137
|
+
newContent +
|
|
138
|
+
(needsNewlineAfter ? '\n' : '') +
|
|
139
|
+
existingContent.slice(insertPoint));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Insert text before a marker in existing content
|
|
143
|
+
* @param existingContent - The existing text content
|
|
144
|
+
* @param newContent - Content to insert
|
|
145
|
+
* @param marker - Marker string to find
|
|
146
|
+
* @returns Updated content
|
|
147
|
+
*/
|
|
148
|
+
export function insertBefore(existingContent, newContent, marker) {
|
|
149
|
+
const index = existingContent.indexOf(marker);
|
|
150
|
+
if (index === -1) {
|
|
151
|
+
throw new Error(`Marker not found: ${marker}`);
|
|
152
|
+
}
|
|
153
|
+
// Check if we need to add a newline before the new content
|
|
154
|
+
const needsNewlineBefore = index > 0 && existingContent[index - 1] !== '\n' && !newContent.startsWith('\n');
|
|
155
|
+
// Check if we need to add a newline after the new content (before marker)
|
|
156
|
+
const needsNewlineAfter = !newContent.endsWith('\n');
|
|
157
|
+
return (existingContent.slice(0, index) +
|
|
158
|
+
(needsNewlineBefore ? '\n' : '') +
|
|
159
|
+
newContent +
|
|
160
|
+
(needsNewlineAfter ? '\n' : '') +
|
|
161
|
+
existingContent.slice(index));
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Append content to the end of existing content
|
|
165
|
+
* @param existingContent - The existing text content
|
|
166
|
+
* @param newContent - Content to append
|
|
167
|
+
* @returns Updated content
|
|
168
|
+
*/
|
|
169
|
+
export function appendContent(existingContent, newContent) {
|
|
170
|
+
const needsNewline = existingContent.length > 0 && !existingContent.endsWith('\n');
|
|
171
|
+
return existingContent + (needsNewline ? '\n' : '') + newContent;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Prepend content to the beginning of existing content
|
|
175
|
+
* @param existingContent - The existing text content
|
|
176
|
+
* @param newContent - Content to prepend
|
|
177
|
+
* @returns Updated content
|
|
178
|
+
*/
|
|
179
|
+
export function prependContent(existingContent, newContent) {
|
|
180
|
+
const needsNewline = !newContent.endsWith('\n') && existingContent.length > 0;
|
|
181
|
+
return newContent + (needsNewline ? '\n' : '') + existingContent;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/scaffold/merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { B2CInstance } from '../instance/index.js';
|
|
2
|
+
import type { Scaffold, ScaffoldParameter, ScaffoldChoice } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Options for resolving scaffold parameters.
|
|
5
|
+
*/
|
|
6
|
+
export interface ResolveParametersOptions {
|
|
7
|
+
/** Pre-provided variables (from flags, env, etc.) */
|
|
8
|
+
providedVariables?: Record<string, string | boolean | string[]>;
|
|
9
|
+
/** Project root for resolving local sources */
|
|
10
|
+
projectRoot?: string;
|
|
11
|
+
/** B2C instance for resolving remote sources (sites) */
|
|
12
|
+
b2cInstance?: B2CInstance;
|
|
13
|
+
/** Use defaults for missing values instead of erroring */
|
|
14
|
+
useDefaults?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Error encountered during parameter validation.
|
|
18
|
+
*/
|
|
19
|
+
export interface ParameterResolutionError {
|
|
20
|
+
/** Parameter name */
|
|
21
|
+
parameter: string;
|
|
22
|
+
/** Error message */
|
|
23
|
+
message: string;
|
|
24
|
+
/** The invalid value, if applicable */
|
|
25
|
+
value?: unknown;
|
|
26
|
+
/** Available choices, if applicable */
|
|
27
|
+
availableChoices?: string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Result of resolving scaffold parameters.
|
|
31
|
+
*/
|
|
32
|
+
export interface ResolvedParameters {
|
|
33
|
+
/** All resolved variable values */
|
|
34
|
+
variables: Record<string, string | boolean | string[]>;
|
|
35
|
+
/** Parameters still missing values (need prompting) */
|
|
36
|
+
missingParameters: ScaffoldParameter[];
|
|
37
|
+
/** Validation errors encountered */
|
|
38
|
+
errors: ParameterResolutionError[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Schema for a resolved parameter with source choices populated.
|
|
42
|
+
*/
|
|
43
|
+
export interface ResolvedParameterSchema {
|
|
44
|
+
/** Parameter definition */
|
|
45
|
+
parameter: ScaffoldParameter;
|
|
46
|
+
/** Resolved choices from dynamic source */
|
|
47
|
+
resolvedChoices?: ScaffoldChoice[];
|
|
48
|
+
/** Path map for cartridges (name -> absolute path) */
|
|
49
|
+
pathMap?: Map<string, string>;
|
|
50
|
+
/** Warning message if source resolution failed */
|
|
51
|
+
warning?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Resolve scaffold parameters by:
|
|
55
|
+
* 1. Validating provided variables against sources
|
|
56
|
+
* 2. Setting companion path variables for cartridges
|
|
57
|
+
* 3. Applying defaults where appropriate
|
|
58
|
+
* 4. Filtering by condition (`when` field)
|
|
59
|
+
* 5. Collecting missing required parameters
|
|
60
|
+
*
|
|
61
|
+
* @param scaffold - The scaffold to resolve parameters for
|
|
62
|
+
* @param options - Resolution options
|
|
63
|
+
* @returns Resolved parameters, missing parameters, and any errors
|
|
64
|
+
*/
|
|
65
|
+
export declare function resolveScaffoldParameters(scaffold: Scaffold, options?: ResolveParametersOptions): Promise<ResolvedParameters>;
|
|
66
|
+
/**
|
|
67
|
+
* Parse key=value option strings into variables object.
|
|
68
|
+
* Handles boolean values and array values for multi-choice params.
|
|
69
|
+
*
|
|
70
|
+
* @param options - Array of "key=value" strings
|
|
71
|
+
* @param scaffold - Optional scaffold for multi-choice detection
|
|
72
|
+
* @returns Variables object
|
|
73
|
+
*/
|
|
74
|
+
export declare function parseParameterOptions(options: string[], scaffold?: Scaffold): Record<string, boolean | string | string[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Get parameter metadata with resolved source choices.
|
|
77
|
+
* Useful for MCP/other consumers to build input schemas.
|
|
78
|
+
*
|
|
79
|
+
* @param scaffold - The scaffold to get parameter schemas for
|
|
80
|
+
* @param options - Options for resolving sources
|
|
81
|
+
* @returns Array of resolved parameter schemas
|
|
82
|
+
*/
|
|
83
|
+
export declare function getParameterSchemas(scaffold: Scaffold, options?: {
|
|
84
|
+
projectRoot?: string;
|
|
85
|
+
b2cInstance?: B2CInstance;
|
|
86
|
+
}): Promise<ResolvedParameterSchema[]>;
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { evaluateCondition } from './validators.js';
|
|
7
|
+
import { resolveLocalSource, resolveRemoteSource, isRemoteSource, validateAgainstSource } from './sources.js';
|
|
8
|
+
/**
|
|
9
|
+
* Resolve scaffold parameters by:
|
|
10
|
+
* 1. Validating provided variables against sources
|
|
11
|
+
* 2. Setting companion path variables for cartridges
|
|
12
|
+
* 3. Applying defaults where appropriate
|
|
13
|
+
* 4. Filtering by condition (`when` field)
|
|
14
|
+
* 5. Collecting missing required parameters
|
|
15
|
+
*
|
|
16
|
+
* @param scaffold - The scaffold to resolve parameters for
|
|
17
|
+
* @param options - Resolution options
|
|
18
|
+
* @returns Resolved parameters, missing parameters, and any errors
|
|
19
|
+
*/
|
|
20
|
+
export async function resolveScaffoldParameters(scaffold, options = {}) {
|
|
21
|
+
const { providedVariables = {}, projectRoot = process.cwd(), useDefaults = false } = options;
|
|
22
|
+
const variables = { ...providedVariables };
|
|
23
|
+
const missingParameters = [];
|
|
24
|
+
const errors = [];
|
|
25
|
+
// Cache for cartridge paths (only resolved once if needed)
|
|
26
|
+
let cartridgePathMap;
|
|
27
|
+
for (const param of scaffold.manifest.parameters) {
|
|
28
|
+
// Check if conditional parameter should be evaluated
|
|
29
|
+
if (param.when && !evaluateCondition(param.when, variables)) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
// If value was already provided, validate it against source
|
|
33
|
+
if (variables[param.name] !== undefined && param.source) {
|
|
34
|
+
const providedValue = String(variables[param.name]);
|
|
35
|
+
const validation = validateAgainstSource(param.source, providedValue, projectRoot);
|
|
36
|
+
if (!validation.valid) {
|
|
37
|
+
errors.push({
|
|
38
|
+
parameter: param.name,
|
|
39
|
+
message: `Invalid value "${providedValue}" for ${param.name}. Available ${param.source}: ${validation.availableChoices?.join(', ') || 'none'}`,
|
|
40
|
+
value: providedValue,
|
|
41
|
+
availableChoices: validation.availableChoices,
|
|
42
|
+
});
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
// Set companion path variable for cartridges source
|
|
46
|
+
if (param.source === 'cartridges') {
|
|
47
|
+
if (!cartridgePathMap) {
|
|
48
|
+
const result = resolveLocalSource('cartridges', projectRoot);
|
|
49
|
+
cartridgePathMap = result.pathMap;
|
|
50
|
+
}
|
|
51
|
+
const cartridgePath = cartridgePathMap?.get(providedValue);
|
|
52
|
+
if (cartridgePath) {
|
|
53
|
+
variables[`${param.name}Path`] = cartridgePath;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
// Skip if already provided (no source validation needed)
|
|
59
|
+
if (variables[param.name] !== undefined) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
// Use default if available and useDefaults is enabled
|
|
63
|
+
if (useDefaults && param.default !== undefined) {
|
|
64
|
+
variables[param.name] = param.default;
|
|
65
|
+
// Set companion path variable for cartridges source with default value
|
|
66
|
+
if (param.source === 'cartridges' && typeof param.default === 'string') {
|
|
67
|
+
if (!cartridgePathMap) {
|
|
68
|
+
const result = resolveLocalSource('cartridges', projectRoot);
|
|
69
|
+
cartridgePathMap = result.pathMap;
|
|
70
|
+
}
|
|
71
|
+
const cartridgePath = cartridgePathMap?.get(param.default);
|
|
72
|
+
if (cartridgePath) {
|
|
73
|
+
variables[`${param.name}Path`] = cartridgePath;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
// Parameter is missing - track it
|
|
79
|
+
if (param.required || param.default === undefined) {
|
|
80
|
+
missingParameters.push(param);
|
|
81
|
+
}
|
|
82
|
+
else if (param.default !== undefined) {
|
|
83
|
+
// Optional parameter with default - apply it
|
|
84
|
+
variables[param.name] = param.default;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return { variables, missingParameters, errors };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Parse key=value option strings into variables object.
|
|
91
|
+
* Handles boolean values and array values for multi-choice params.
|
|
92
|
+
*
|
|
93
|
+
* @param options - Array of "key=value" strings
|
|
94
|
+
* @param scaffold - Optional scaffold for multi-choice detection
|
|
95
|
+
* @returns Variables object
|
|
96
|
+
*/
|
|
97
|
+
export function parseParameterOptions(options, scaffold) {
|
|
98
|
+
const variables = {};
|
|
99
|
+
// Build set of multi-choice parameter names
|
|
100
|
+
const multiChoiceParams = new Set();
|
|
101
|
+
if (scaffold) {
|
|
102
|
+
for (const param of scaffold.manifest.parameters) {
|
|
103
|
+
if (param.type === 'multi-choice') {
|
|
104
|
+
multiChoiceParams.add(param.name);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
for (const opt of options) {
|
|
109
|
+
const eqIndex = opt.indexOf('=');
|
|
110
|
+
if (eqIndex === -1) {
|
|
111
|
+
// No equals sign - treat as boolean flag
|
|
112
|
+
variables[opt] = true;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
const key = opt.slice(0, Math.max(0, eqIndex));
|
|
116
|
+
const value = opt.slice(Math.max(0, eqIndex + 1));
|
|
117
|
+
if (value === 'true') {
|
|
118
|
+
variables[key] = true;
|
|
119
|
+
}
|
|
120
|
+
else if (value === 'false') {
|
|
121
|
+
variables[key] = false;
|
|
122
|
+
}
|
|
123
|
+
else if (multiChoiceParams.has(key)) {
|
|
124
|
+
// Split comma-separated values for multi-choice parameters
|
|
125
|
+
variables[key] = value.split(',').map((v) => v.trim());
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
variables[key] = value;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return variables;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get parameter metadata with resolved source choices.
|
|
136
|
+
* Useful for MCP/other consumers to build input schemas.
|
|
137
|
+
*
|
|
138
|
+
* @param scaffold - The scaffold to get parameter schemas for
|
|
139
|
+
* @param options - Options for resolving sources
|
|
140
|
+
* @returns Array of resolved parameter schemas
|
|
141
|
+
*/
|
|
142
|
+
export async function getParameterSchemas(scaffold, options = {}) {
|
|
143
|
+
const { projectRoot = process.cwd(), b2cInstance } = options;
|
|
144
|
+
const schemas = [];
|
|
145
|
+
for (const param of scaffold.manifest.parameters) {
|
|
146
|
+
const schema = { parameter: param };
|
|
147
|
+
if (param.source) {
|
|
148
|
+
if (isRemoteSource(param.source)) {
|
|
149
|
+
// Remote source - needs B2C instance
|
|
150
|
+
if (b2cInstance) {
|
|
151
|
+
try {
|
|
152
|
+
schema.resolvedChoices = await resolveRemoteSource(param.source, b2cInstance);
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
schema.warning = `Could not fetch ${param.source}: ${error.message}`;
|
|
156
|
+
schema.resolvedChoices = [];
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
schema.warning = `Remote source '${param.source}' requires B2C instance`;
|
|
161
|
+
schema.resolvedChoices = [];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
// Local source
|
|
166
|
+
const result = resolveLocalSource(param.source, projectRoot);
|
|
167
|
+
schema.resolvedChoices = result.choices;
|
|
168
|
+
schema.pathMap = result.pathMap;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else if (param.choices) {
|
|
172
|
+
// Static choices
|
|
173
|
+
schema.resolvedChoices = param.choices;
|
|
174
|
+
}
|
|
175
|
+
schemas.push(schema);
|
|
176
|
+
}
|
|
177
|
+
return schemas;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=parameter-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter-resolver.js","sourceRoot":"","sources":["../../../src/scaffold/parameter-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Scaffold, ScaffoldDiscoveryOptions, ScaffoldProvider, ScaffoldTransformer } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Scaffold registry for discovering and managing scaffolds
|
|
4
|
+
*/
|
|
5
|
+
export declare class ScaffoldRegistry {
|
|
6
|
+
private providers;
|
|
7
|
+
private transformers;
|
|
8
|
+
private scaffoldCache;
|
|
9
|
+
/**
|
|
10
|
+
* Add scaffold providers
|
|
11
|
+
*/
|
|
12
|
+
addProviders(providers: ScaffoldProvider[]): void;
|
|
13
|
+
/**
|
|
14
|
+
* Add scaffold transformers
|
|
15
|
+
*/
|
|
16
|
+
addTransformers(transformers: ScaffoldTransformer[]): void;
|
|
17
|
+
/**
|
|
18
|
+
* Clear the scaffold cache
|
|
19
|
+
*/
|
|
20
|
+
clearCache(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Get all scaffolds from all sources
|
|
23
|
+
* @param options - Discovery options
|
|
24
|
+
* @returns Array of scaffolds (deduplicated by name, later sources override earlier)
|
|
25
|
+
*/
|
|
26
|
+
getScaffolds(options?: ScaffoldDiscoveryOptions): Promise<Scaffold[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Get a specific scaffold by ID
|
|
29
|
+
* @param id - Scaffold ID
|
|
30
|
+
* @param options - Discovery options
|
|
31
|
+
* @returns Scaffold or null if not found
|
|
32
|
+
*/
|
|
33
|
+
getScaffold(id: string, options?: ScaffoldDiscoveryOptions): Promise<Scaffold | null>;
|
|
34
|
+
/**
|
|
35
|
+
* Search scaffolds by query
|
|
36
|
+
* @param query - Search query
|
|
37
|
+
* @param options - Additional discovery options
|
|
38
|
+
* @returns Matching scaffolds
|
|
39
|
+
*/
|
|
40
|
+
searchScaffolds(query: string, options?: ScaffoldDiscoveryOptions): Promise<Scaffold[]>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create a new scaffold registry instance
|
|
44
|
+
*/
|
|
45
|
+
export declare function createScaffoldRegistry(): ScaffoldRegistry;
|