@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
package/README.md
CHANGED
|
@@ -125,23 +125,190 @@ const result = await waitForJob(instance, 'my-job-id', execution.id);
|
|
|
125
125
|
await siteArchiveImport(instance, './site-data.zip');
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
+
### Account Manager User Management
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
import {
|
|
132
|
+
getUserByLogin,
|
|
133
|
+
listUsers,
|
|
134
|
+
createUser,
|
|
135
|
+
updateUser,
|
|
136
|
+
deleteUser,
|
|
137
|
+
resetUser,
|
|
138
|
+
grantRole,
|
|
139
|
+
revokeRole,
|
|
140
|
+
} from '@salesforce/b2c-tooling-sdk/operations/users';
|
|
141
|
+
import {createAccountManagerUsersClient} from '@salesforce/b2c-tooling-sdk/clients';
|
|
142
|
+
import {OAuthStrategy} from '@salesforce/b2c-tooling-sdk/auth';
|
|
143
|
+
|
|
144
|
+
const auth = new OAuthStrategy({
|
|
145
|
+
clientId: 'your-client-id',
|
|
146
|
+
clientSecret: 'your-client-secret',
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
const client = createAccountManagerUsersClient({}, auth);
|
|
150
|
+
|
|
151
|
+
// List users with pagination
|
|
152
|
+
const users = await listUsers(client, {size: 25, page: 0});
|
|
153
|
+
|
|
154
|
+
// Get user by email
|
|
155
|
+
const user = await getUserByLogin(client, 'user@example.com');
|
|
156
|
+
|
|
157
|
+
// Create a new user
|
|
158
|
+
const newUser = await createUser(client, {
|
|
159
|
+
user: {
|
|
160
|
+
mail: 'newuser@example.com',
|
|
161
|
+
firstName: 'John',
|
|
162
|
+
lastName: 'Doe',
|
|
163
|
+
organizations: ['org-id'],
|
|
164
|
+
primaryOrganization: 'org-id',
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
// Update a user
|
|
169
|
+
await updateUser(client, {
|
|
170
|
+
userId: user.id!,
|
|
171
|
+
changes: {firstName: 'Jane'},
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Grant a role to a user
|
|
175
|
+
await grantRole(client, {
|
|
176
|
+
userId: user.id!,
|
|
177
|
+
role: 'bm-admin',
|
|
178
|
+
scope: 'tenant1,tenant2', // Optional tenant filter
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// Reset user to INITIAL state
|
|
182
|
+
await resetUser(client, user.id!);
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Account Manager Role Management
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
import {getRole, listRoles} from '@salesforce/b2c-tooling-sdk/operations/roles';
|
|
189
|
+
import {createAccountManagerRolesClient} from '@salesforce/b2c-tooling-sdk/clients';
|
|
190
|
+
import {OAuthStrategy} from '@salesforce/b2c-tooling-sdk/auth';
|
|
191
|
+
|
|
192
|
+
const auth = new OAuthStrategy({
|
|
193
|
+
clientId: 'your-client-id',
|
|
194
|
+
clientSecret: 'your-client-secret',
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
const client = createAccountManagerRolesClient({}, auth);
|
|
198
|
+
|
|
199
|
+
// Get role details by ID
|
|
200
|
+
const role = await getRole(client, 'bm-admin');
|
|
201
|
+
|
|
202
|
+
// List all roles with pagination
|
|
203
|
+
const roles = await listRoles(client, {size: 25, page: 0});
|
|
204
|
+
|
|
205
|
+
// List roles filtered by target type
|
|
206
|
+
const userRoles = await listRoles(client, {
|
|
207
|
+
size: 25,
|
|
208
|
+
page: 0,
|
|
209
|
+
roleTargetType: 'User',
|
|
210
|
+
});
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Account Manager Organization Management
|
|
214
|
+
|
|
215
|
+
```typescript
|
|
216
|
+
import {getOrg, getOrgByName, listOrgs, getOrgAuditLogs} from '@salesforce/b2c-tooling-sdk/operations/orgs';
|
|
217
|
+
import {createAccountManagerOrgsClient} from '@salesforce/b2c-tooling-sdk/clients';
|
|
218
|
+
import {OAuthStrategy} from '@salesforce/b2c-tooling-sdk/auth';
|
|
219
|
+
|
|
220
|
+
const auth = new OAuthStrategy({
|
|
221
|
+
clientId: 'your-client-id',
|
|
222
|
+
clientSecret: 'your-client-secret',
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
const client = createAccountManagerOrgsClient({}, auth);
|
|
226
|
+
|
|
227
|
+
// Get organization by ID
|
|
228
|
+
const org = await getOrg(client, 'org-123');
|
|
229
|
+
|
|
230
|
+
// Get organization by name
|
|
231
|
+
const orgByName = await getOrgByName(client, 'My Organization');
|
|
232
|
+
|
|
233
|
+
// List organizations with pagination
|
|
234
|
+
const orgs = await listOrgs(client, {size: 25, page: 0});
|
|
235
|
+
|
|
236
|
+
// List all organizations (uses max page size of 5000)
|
|
237
|
+
const allOrgs = await listOrgs(client, {all: true});
|
|
238
|
+
|
|
239
|
+
// Get audit logs for an organization
|
|
240
|
+
const auditLogs = await getOrgAuditLogs(client, 'org-123');
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Account Manager API Client Management
|
|
244
|
+
|
|
245
|
+
Manage Account Manager API clients (OAuth client credentials used for API access) via the unified Account Manager client:
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
import {
|
|
249
|
+
createAccountManagerClient,
|
|
250
|
+
type APIClientCreate,
|
|
251
|
+
type APIClientUpdate,
|
|
252
|
+
} from '@salesforce/b2c-tooling-sdk/clients';
|
|
253
|
+
import {OAuthStrategy} from '@salesforce/b2c-tooling-sdk/auth';
|
|
254
|
+
|
|
255
|
+
const auth = new OAuthStrategy({
|
|
256
|
+
clientId: 'your-client-id',
|
|
257
|
+
clientSecret: 'your-client-secret',
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
const client = createAccountManagerClient({}, auth);
|
|
261
|
+
|
|
262
|
+
// List API clients with pagination
|
|
263
|
+
const apiClients = await client.listApiClients({size: 25, page: 0});
|
|
264
|
+
|
|
265
|
+
// Get a single API client by ID (optional expand: organizations, roles)
|
|
266
|
+
const apiClient = await client.getApiClient('api-client-id', ['organizations', 'roles']);
|
|
267
|
+
|
|
268
|
+
// Create a new API client
|
|
269
|
+
const newClient = await client.createApiClient({
|
|
270
|
+
name: 'My API Client',
|
|
271
|
+
password: 'initial-password',
|
|
272
|
+
organizations: ['org-id'],
|
|
273
|
+
roles: ['ECOM_ADMIN'],
|
|
274
|
+
active: true,
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
// Update an API client (e.g. disable, change name, roles, or organizations)
|
|
278
|
+
await client.updateApiClient('api-client-id', {
|
|
279
|
+
name: 'Updated Name',
|
|
280
|
+
active: false,
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
// Change API client password (requires old password)
|
|
284
|
+
await client.changeApiClientPassword('api-client-id', 'old-password', 'new-password');
|
|
285
|
+
|
|
286
|
+
// Delete an API client (must be disabled for at least 7 days first)
|
|
287
|
+
await client.deleteApiClient('api-client-id');
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
For direct access to the API Clients API only, use `createAccountManagerApiClientsClient` from `@salesforce/b2c-tooling-sdk/clients`.
|
|
291
|
+
|
|
128
292
|
## Module Exports
|
|
129
293
|
|
|
130
294
|
The SDK provides subpath exports for tree-shaking and organization:
|
|
131
295
|
|
|
132
|
-
| Export | Description
|
|
133
|
-
| ---------------------------------------------- |
|
|
134
|
-
| `@salesforce/b2c-tooling-sdk` | Main entry point with all exports
|
|
135
|
-
| `@salesforce/b2c-tooling-sdk/config` | Configuration resolution (resolveConfig)
|
|
136
|
-
| `@salesforce/b2c-tooling-sdk/auth` | Authentication strategies (OAuth, Basic, API Key)
|
|
137
|
-
| `@salesforce/b2c-tooling-sdk/instance` | B2CInstance class
|
|
138
|
-
| `@salesforce/b2c-tooling-sdk/clients` | Low-level API clients (WebDAV, OCAPI, SLAS, ODS, MRT) |
|
|
139
|
-
| `@salesforce/b2c-tooling-sdk/operations/code` | Code deployment operations
|
|
140
|
-
| `@salesforce/b2c-tooling-sdk/operations/jobs` | Job execution and site import/export
|
|
141
|
-
| `@salesforce/b2c-tooling-sdk/operations/sites` | Site management
|
|
142
|
-
| `@salesforce/b2c-tooling-sdk/
|
|
143
|
-
| `@salesforce/b2c-tooling-sdk/
|
|
144
|
-
| `@salesforce/b2c-tooling-sdk/
|
|
296
|
+
| Export | Description |
|
|
297
|
+
| ---------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
298
|
+
| `@salesforce/b2c-tooling-sdk` | Main entry point with all exports |
|
|
299
|
+
| `@salesforce/b2c-tooling-sdk/config` | Configuration resolution (resolveConfig) |
|
|
300
|
+
| `@salesforce/b2c-tooling-sdk/auth` | Authentication strategies (OAuth, Basic, API Key) |
|
|
301
|
+
| `@salesforce/b2c-tooling-sdk/instance` | B2CInstance class |
|
|
302
|
+
| `@salesforce/b2c-tooling-sdk/clients` | Low-level API clients (WebDAV, OCAPI, SLAS, ODS, MRT, Account Manager clients) |
|
|
303
|
+
| `@salesforce/b2c-tooling-sdk/operations/code` | Code deployment operations |
|
|
304
|
+
| `@salesforce/b2c-tooling-sdk/operations/jobs` | Job execution and site import/export |
|
|
305
|
+
| `@salesforce/b2c-tooling-sdk/operations/sites` | Site management |
|
|
306
|
+
| `@salesforce/b2c-tooling-sdk/operations/users` | Account Manager user management |
|
|
307
|
+
| `@salesforce/b2c-tooling-sdk/operations/roles` | Account Manager role management |
|
|
308
|
+
| `@salesforce/b2c-tooling-sdk/operations/orgs` | Account Manager organization management |
|
|
309
|
+
| `@salesforce/b2c-tooling-sdk/discovery` | Workspace type detection (PWA Kit, SFRA, etc.) |
|
|
310
|
+
| `@salesforce/b2c-tooling-sdk/cli` | CLI utilities (BaseCommand, table rendering) |
|
|
311
|
+
| `@salesforce/b2c-tooling-sdk/logging` | Structured logging utilities |
|
|
145
312
|
|
|
146
313
|
## Logging
|
|
147
314
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<projectDescription>
|
|
3
|
+
<name><%= cartridgeName %></name>
|
|
4
|
+
<comment></comment>
|
|
5
|
+
<projects>
|
|
6
|
+
</projects>
|
|
7
|
+
<buildSpec>
|
|
8
|
+
<buildCommand>
|
|
9
|
+
<name>com.demandware.studio.core.beehiveElementBuilder</name>
|
|
10
|
+
<arguments>
|
|
11
|
+
</arguments>
|
|
12
|
+
</buildCommand>
|
|
13
|
+
</buildSpec>
|
|
14
|
+
<natures>
|
|
15
|
+
<nature>com.demandware.studio.core.beehiveNature</nature>
|
|
16
|
+
</natures>
|
|
17
|
+
</projectDescription>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Example controller for <%= cartridgeName %>
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
var server = require('server');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Example-Show: Renders an example page
|
|
11
|
+
*/
|
|
12
|
+
server.get('Show', function (req, res, next) {
|
|
13
|
+
res.render('example/show', {
|
|
14
|
+
message: 'Hello from <%= cartridgeName %>!'
|
|
15
|
+
});
|
|
16
|
+
next();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
module.exports = server.exports();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Example model for <%= cartridgeName %>
|
|
5
|
+
* @param {Object} data - The input data
|
|
6
|
+
* @constructor
|
|
7
|
+
*/
|
|
8
|
+
function ExampleModel(data) {
|
|
9
|
+
this.id = data.id || null;
|
|
10
|
+
this.name = data.name || '';
|
|
11
|
+
this.description = data.description || '';
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
module.exports = ExampleModel;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Example helper functions for <%= cartridgeName %>
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Formats a string for display
|
|
9
|
+
* @param {string} input - The input string
|
|
10
|
+
* @returns {string} The formatted string
|
|
11
|
+
*/
|
|
12
|
+
function formatString(input) {
|
|
13
|
+
return input ? input.trim() : '';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
module.exports = {
|
|
17
|
+
formatString: formatString
|
|
18
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<isdecorate template="common/layout/page">
|
|
2
|
+
<isscript>
|
|
3
|
+
var assets = require('*/cartridge/scripts/assets');
|
|
4
|
+
assets.addCss('/css/example.css');
|
|
5
|
+
</isscript>
|
|
6
|
+
|
|
7
|
+
<div class="container">
|
|
8
|
+
<h1>${pdict.message}</h1>
|
|
9
|
+
<p>This is an example page from the <%= cartridgeName %> cartridge.</p>
|
|
10
|
+
</div>
|
|
11
|
+
</isdecorate>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cartridge",
|
|
3
|
+
"displayName": "Cartridge",
|
|
4
|
+
"description": "Create a new B2C Commerce cartridge with standard structure",
|
|
5
|
+
"category": "cartridge",
|
|
6
|
+
"defaultOutputDir": "cartridges",
|
|
7
|
+
"parameters": [
|
|
8
|
+
{
|
|
9
|
+
"name": "cartridgeName",
|
|
10
|
+
"prompt": "What is the cartridge name?",
|
|
11
|
+
"type": "string",
|
|
12
|
+
"required": true,
|
|
13
|
+
"pattern": "^[a-z][a-z0-9_]*$",
|
|
14
|
+
"validationMessage": "Cartridge name must start with a lowercase letter and contain only lowercase letters, numbers, and underscores"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "includeControllers",
|
|
18
|
+
"prompt": "Include controllers directory?",
|
|
19
|
+
"type": "boolean",
|
|
20
|
+
"required": false,
|
|
21
|
+
"default": true
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"name": "includeModels",
|
|
25
|
+
"prompt": "Include models directory?",
|
|
26
|
+
"type": "boolean",
|
|
27
|
+
"required": false,
|
|
28
|
+
"default": true
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "includeScripts",
|
|
32
|
+
"prompt": "Include scripts directory?",
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"required": false,
|
|
35
|
+
"default": true
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "includeTemplates",
|
|
39
|
+
"prompt": "Include templates directory?",
|
|
40
|
+
"type": "boolean",
|
|
41
|
+
"required": false,
|
|
42
|
+
"default": true
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "includeStatic",
|
|
46
|
+
"prompt": "Include static assets directory?",
|
|
47
|
+
"type": "boolean",
|
|
48
|
+
"required": false,
|
|
49
|
+
"default": false
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"files": [
|
|
53
|
+
{
|
|
54
|
+
"template": ".project.ejs",
|
|
55
|
+
"destination": "{{cartridgeName}}/.project"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"template": "cartridge/cartridge.properties.ejs",
|
|
59
|
+
"destination": "{{cartridgeName}}/cartridge/{{cartridgeName}}.properties"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"template": "cartridge/controllers/Example.js.ejs",
|
|
63
|
+
"destination": "{{cartridgeName}}/cartridge/controllers/Example.js",
|
|
64
|
+
"condition": "includeControllers"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"template": "cartridge/models/example.js.ejs",
|
|
68
|
+
"destination": "{{cartridgeName}}/cartridge/models/example.js",
|
|
69
|
+
"condition": "includeModels"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"template": "cartridge/scripts/helpers/exampleHelpers.js.ejs",
|
|
73
|
+
"destination": "{{cartridgeName}}/cartridge/scripts/helpers/exampleHelpers.js",
|
|
74
|
+
"condition": "includeScripts"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"template": "cartridge/templates/default/example/show.isml.ejs",
|
|
78
|
+
"destination": "{{cartridgeName}}/cartridge/templates/default/example/show.isml",
|
|
79
|
+
"condition": "includeTemplates"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"template": "cartridge/static/default/css/example.css",
|
|
83
|
+
"destination": "{{cartridgeName}}/cartridge/static/default/css/example.css",
|
|
84
|
+
"condition": "includeStatic"
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"postInstructions": "Cartridge '<%= cartridgeName %>' has been created.\n\nNext steps:\n1. Add the cartridge to your cartridge path in Business Manager\n2. Deploy the cartridge to your instance"
|
|
88
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* <%= controllerName %> Controller
|
|
5
|
+
*
|
|
6
|
+
* @module controllers/<%= controllerName %>
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
var server = require('server');
|
|
10
|
+
<% if (useMiddleware) { %>
|
|
11
|
+
var cache = require('*/cartridge/scripts/middleware/cache');
|
|
12
|
+
var consentTracking = require('*/cartridge/scripts/middleware/consentTracking');
|
|
13
|
+
var pageMetaData = require('*/cartridge/scripts/middleware/pageMetaData');
|
|
14
|
+
<% } %>
|
|
15
|
+
|
|
16
|
+
<% if (routes.includes('Show')) { %>
|
|
17
|
+
/**
|
|
18
|
+
* <%= controllerName %>-Show : Renders the <%= controllerName.toLowerCase() %> page
|
|
19
|
+
* @name <%= controllerName %>-Show
|
|
20
|
+
* @function
|
|
21
|
+
* @memberof <%= controllerName %>
|
|
22
|
+
<% if (useMiddleware) { %> * @param {middleware} - server.middleware.https
|
|
23
|
+
* @param {middleware} - consentTracking.consent
|
|
24
|
+
* @param {middleware} - cache.applyDefaultCache<% } %>
|
|
25
|
+
* @param {category} - sensitive
|
|
26
|
+
* @param {renders} - isml
|
|
27
|
+
* @param {serverfunction} - get
|
|
28
|
+
*/
|
|
29
|
+
server.get(
|
|
30
|
+
'Show',
|
|
31
|
+
<% if (useMiddleware) { %> server.middleware.https,
|
|
32
|
+
consentTracking.consent,
|
|
33
|
+
cache.applyDefaultCache,
|
|
34
|
+
<% } %> function (req, res, next) {
|
|
35
|
+
var viewData = {
|
|
36
|
+
title: '<%= controllerName %>',
|
|
37
|
+
message: 'Hello from <%= controllerName %>!'
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
res.render('<%= kebabCase(controllerName) %>/show', viewData);
|
|
41
|
+
next();
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
<% if (useMiddleware) { %>
|
|
45
|
+
server.append('Show', pageMetaData.computedPageMetaData);
|
|
46
|
+
<% } %>
|
|
47
|
+
<% } %>
|
|
48
|
+
<% if (routes.includes('Submit')) { %>
|
|
49
|
+
/**
|
|
50
|
+
* <%= controllerName %>-Submit : Handles form submission for <%= controllerName.toLowerCase() %>
|
|
51
|
+
* @name <%= controllerName %>-Submit
|
|
52
|
+
* @function
|
|
53
|
+
* @memberof <%= controllerName %>
|
|
54
|
+
<% if (useMiddleware) { %> * @param {middleware} - server.middleware.https<% } %>
|
|
55
|
+
* @param {httpparameter} - csrf_token - CSRF token
|
|
56
|
+
* @param {category} - sensitive
|
|
57
|
+
* @param {returns} - json
|
|
58
|
+
* @param {serverfunction} - post
|
|
59
|
+
*/
|
|
60
|
+
server.post(
|
|
61
|
+
'Submit',
|
|
62
|
+
<% if (useMiddleware) { %> server.middleware.https,
|
|
63
|
+
<% } %> function (req, res, next) {
|
|
64
|
+
var form = req.form;
|
|
65
|
+
|
|
66
|
+
// TODO: Process form data
|
|
67
|
+
var result = {
|
|
68
|
+
success: true,
|
|
69
|
+
message: 'Form submitted successfully'
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
res.json(result);
|
|
73
|
+
next();
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
<% } %>
|
|
77
|
+
<% if (routes.includes('JSON')) { %>
|
|
78
|
+
/**
|
|
79
|
+
* <%= controllerName %>-JSON : Returns JSON data for <%= controllerName.toLowerCase() %>
|
|
80
|
+
* @name <%= controllerName %>-JSON
|
|
81
|
+
* @function
|
|
82
|
+
* @memberof <%= controllerName %>
|
|
83
|
+
<% if (useMiddleware) { %> * @param {middleware} - cache.applyDefaultCache<% } %>
|
|
84
|
+
* @param {category} - non-sensitive
|
|
85
|
+
* @param {returns} - json
|
|
86
|
+
* @param {serverfunction} - get
|
|
87
|
+
*/
|
|
88
|
+
server.get(
|
|
89
|
+
'JSON',
|
|
90
|
+
<% if (useMiddleware) { %> cache.applyDefaultCache,
|
|
91
|
+
<% } %> function (req, res, next) {
|
|
92
|
+
var data = {
|
|
93
|
+
success: true,
|
|
94
|
+
data: {
|
|
95
|
+
// TODO: Add your data here
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
res.json(data);
|
|
100
|
+
next();
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
<% } %>
|
|
104
|
+
<% if (routes.includes('SubmitJSON')) { %>
|
|
105
|
+
/**
|
|
106
|
+
* <%= controllerName %>-SubmitJSON : Handles AJAX form submission for <%= controllerName.toLowerCase() %>
|
|
107
|
+
* @name <%= controllerName %>-SubmitJSON
|
|
108
|
+
* @function
|
|
109
|
+
* @memberof <%= controllerName %>
|
|
110
|
+
<% if (useMiddleware) { %> * @param {middleware} - server.middleware.https<% } %>
|
|
111
|
+
* @param {httpparameter} - csrf_token - CSRF token
|
|
112
|
+
* @param {category} - sensitive
|
|
113
|
+
* @param {returns} - json
|
|
114
|
+
* @param {serverfunction} - post
|
|
115
|
+
*/
|
|
116
|
+
server.post(
|
|
117
|
+
'SubmitJSON',
|
|
118
|
+
<% if (useMiddleware) { %> server.middleware.https,
|
|
119
|
+
<% } %> function (req, res, next) {
|
|
120
|
+
var form = req.form;
|
|
121
|
+
|
|
122
|
+
// TODO: Validate and process form data
|
|
123
|
+
var result = {
|
|
124
|
+
success: true,
|
|
125
|
+
redirectUrl: null
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
res.json(result);
|
|
129
|
+
next();
|
|
130
|
+
}
|
|
131
|
+
);
|
|
132
|
+
<% } %>
|
|
133
|
+
|
|
134
|
+
module.exports = server.exports();
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<iscontent type="text/html" charset="UTF-8" compact="true"/>
|
|
2
|
+
|
|
3
|
+
<isinclude template="/components/modules"/>
|
|
4
|
+
|
|
5
|
+
<!--- <%= controllerName %> Show Template --->
|
|
6
|
+
|
|
7
|
+
<isdecorate template="common/layout/page">
|
|
8
|
+
<isscript>
|
|
9
|
+
var assets = require('*/cartridge/scripts/assets');
|
|
10
|
+
assets.addCss('/css/<%= kebabCase(controllerName) %>.css');
|
|
11
|
+
assets.addJs('/js/<%= kebabCase(controllerName) %>.js');
|
|
12
|
+
</isscript>
|
|
13
|
+
|
|
14
|
+
<div class="container <%= kebabCase(controllerName) %>-page">
|
|
15
|
+
<div class="row">
|
|
16
|
+
<div class="col-12">
|
|
17
|
+
<h1 class="page-title">${pdict.title}</h1>
|
|
18
|
+
<p class="lead">${pdict.message}</p>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</isdecorate>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "controller",
|
|
3
|
+
"displayName": "SFRA Controller",
|
|
4
|
+
"description": "Create an SFRA controller with route handlers and middleware",
|
|
5
|
+
"category": "cartridge",
|
|
6
|
+
"parameters": [
|
|
7
|
+
{
|
|
8
|
+
"name": "controllerName",
|
|
9
|
+
"prompt": "What is the controller name?",
|
|
10
|
+
"type": "string",
|
|
11
|
+
"required": true,
|
|
12
|
+
"pattern": "^[A-Z][a-zA-Z0-9]*$",
|
|
13
|
+
"validationMessage": "Controller name must be PascalCase (start with uppercase letter)"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "cartridgeName",
|
|
17
|
+
"prompt": "Which cartridge should contain this controller?",
|
|
18
|
+
"type": "string",
|
|
19
|
+
"required": true,
|
|
20
|
+
"source": "cartridges",
|
|
21
|
+
"pattern": "^[a-z][a-z0-9_]*$",
|
|
22
|
+
"validationMessage": "Cartridge name must start with a lowercase letter and contain only lowercase letters, numbers, and underscores"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "routes",
|
|
26
|
+
"prompt": "Which route types do you want to include?",
|
|
27
|
+
"type": "multi-choice",
|
|
28
|
+
"required": true,
|
|
29
|
+
"choices": [
|
|
30
|
+
{ "value": "Show", "label": "Show (GET - render page)" },
|
|
31
|
+
{ "value": "Submit", "label": "Submit (POST - form handler)" },
|
|
32
|
+
{ "value": "JSON", "label": "JSON (GET - AJAX endpoint)" },
|
|
33
|
+
{ "value": "SubmitJSON", "label": "SubmitJSON (POST - AJAX form)" }
|
|
34
|
+
],
|
|
35
|
+
"default": ["Show"]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "useMiddleware",
|
|
39
|
+
"prompt": "Include middleware chain example?",
|
|
40
|
+
"type": "boolean",
|
|
41
|
+
"required": false,
|
|
42
|
+
"default": true
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "includeTemplate",
|
|
46
|
+
"prompt": "Generate accompanying ISML template?",
|
|
47
|
+
"type": "boolean",
|
|
48
|
+
"required": false,
|
|
49
|
+
"default": true
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"files": [
|
|
53
|
+
{
|
|
54
|
+
"template": "controller.js.ejs",
|
|
55
|
+
"destination": "{{cartridgeNamePath}}/cartridge/controllers/{{controllerName}}.js"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"template": "template.isml.ejs",
|
|
59
|
+
"destination": "{{cartridgeNamePath}}/cartridge/templates/default/{{kebabCase controllerName}}/show.isml",
|
|
60
|
+
"condition": "includeTemplate"
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"postInstructions": "Controller '<%= controllerName %>' has been created in '<%= cartridgeName %>'.\n\nRoutes created:\n<% routes.forEach(function(route) { %>\n- <%= controllerName %>-<%= route %>: /<%= controllerName %>-<%= route %>\n<% }); %>\n\nNext steps:\n1. Deploy the cartridge to your instance\n2. Ensure <%= cartridgeName %> is in your cartridge path"
|
|
64
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"endpoints": [
|
|
3
|
+
<% if (includeExampleEndpoints) { %>
|
|
4
|
+
{"endpoint": "getHello", "schema": "schema.yaml", "implementation": "script"},
|
|
5
|
+
{"endpoint": "getItems", "schema": "schema.yaml", "implementation": "script"},
|
|
6
|
+
{"endpoint": "getItem", "schema": "schema.yaml", "implementation": "script"}
|
|
7
|
+
<% } else { %>
|
|
8
|
+
{"endpoint": "getExample", "schema": "schema.yaml", "implementation": "script"}
|
|
9
|
+
<% } %>
|
|
10
|
+
]
|
|
11
|
+
}
|