@salesforce/b2c-tooling-sdk 1.24.2 → 2.0.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/data/content-schemas/componenttype.json +0 -30
- package/data/scapi-snippets/campaign-promotions.js +40 -0
- package/data/scapi-snippets/code-version-inspect.js +31 -0
- package/data/scapi-snippets/create-product.js +108 -0
- package/data/scapi-snippets/failed-job-triage.js +37 -0
- package/data/scapi-snippets/job-execution-inspect.js +52 -0
- package/data/scapi-snippets/job-execution-review.js +46 -0
- package/data/scapi-snippets/manifest.json +220 -0
- package/data/scapi-snippets/site-cartridge-inspect.js +27 -0
- package/data/tooling/index.json +80 -116
- package/dist/esm/auth/index.d.ts +2 -2
- package/dist/esm/auth/index.js +1 -1
- package/dist/esm/auth/index.js.map +1 -1
- package/dist/esm/auth/oauth-implicit.d.ts +1 -0
- package/dist/esm/auth/oauth-implicit.js +1 -0
- package/dist/esm/auth/oauth-implicit.js.map +1 -1
- package/dist/esm/auth/oauth-jwt.d.ts +18 -4
- package/dist/esm/auth/oauth-jwt.js +67 -17
- package/dist/esm/auth/oauth-jwt.js.map +1 -1
- package/dist/esm/auth/oauth-pkce-fallback.d.ts +1 -0
- package/dist/esm/auth/oauth-pkce-fallback.js +1 -0
- package/dist/esm/auth/oauth-pkce-fallback.js.map +1 -1
- package/dist/esm/auth/oauth-pkce.d.ts +1 -0
- package/dist/esm/auth/oauth-pkce.js +1 -0
- package/dist/esm/auth/oauth-pkce.js.map +1 -1
- package/dist/esm/auth/oauth.d.ts +55 -6
- package/dist/esm/auth/oauth.js +139 -21
- package/dist/esm/auth/oauth.js.map +1 -1
- package/dist/esm/auth/resolve.d.ts +37 -0
- package/dist/esm/auth/resolve.js +48 -0
- package/dist/esm/auth/resolve.js.map +1 -1
- package/dist/esm/auth/types.d.ts +44 -0
- package/dist/esm/auth/types.js.map +1 -1
- package/dist/esm/cli/base-command.d.ts +9 -0
- package/dist/esm/cli/base-command.js +31 -0
- package/dist/esm/cli/base-command.js.map +1 -1
- package/dist/esm/cli/bm-command.d.ts +15 -0
- package/dist/esm/cli/bm-command.js +25 -0
- package/dist/esm/cli/bm-command.js.map +1 -0
- package/dist/esm/cli/code-command.d.ts +14 -0
- package/dist/esm/cli/code-command.js +22 -0
- package/dist/esm/cli/code-command.js.map +1 -0
- package/dist/esm/cli/config.js +3 -0
- package/dist/esm/cli/config.js.map +1 -1
- package/dist/esm/cli/index.d.ts +5 -1
- package/dist/esm/cli/index.js +7 -1
- package/dist/esm/cli/index.js.map +1 -1
- package/dist/esm/cli/instance-command.d.ts +45 -0
- package/dist/esm/cli/instance-command.js +66 -1
- package/dist/esm/cli/instance-command.js.map +1 -1
- package/dist/esm/cli/job-command.d.ts +37 -16
- package/dist/esm/cli/job-command.js +73 -23
- package/dist/esm/cli/job-command.js.map +1 -1
- package/dist/esm/cli/mrt-command.d.ts +138 -9
- package/dist/esm/cli/mrt-command.js +277 -16
- package/dist/esm/cli/mrt-command.js.map +1 -1
- package/dist/esm/cli/oauth-command.d.ts +1 -1
- package/dist/esm/cli/oauth-command.js +2 -0
- package/dist/esm/cli/oauth-command.js.map +1 -1
- package/dist/esm/cli/webdav-command.d.ts +1 -0
- package/dist/esm/clients/cdn-zones.js +2 -5
- package/dist/esm/clients/cdn-zones.js.map +1 -1
- package/dist/esm/clients/cip.d.ts +12 -3
- package/dist/esm/clients/cip.js +85 -30
- package/dist/esm/clients/cip.js.map +1 -1
- package/dist/esm/clients/custom-apis.js +2 -5
- package/dist/esm/clients/custom-apis.js.map +1 -1
- package/dist/esm/clients/dual-backend-factory.d.ts +70 -0
- package/dist/esm/clients/dual-backend-factory.js +48 -0
- package/dist/esm/clients/dual-backend-factory.js.map +1 -0
- package/dist/esm/clients/error-utils.d.ts +62 -0
- package/dist/esm/clients/error-utils.js +98 -0
- package/dist/esm/clients/error-utils.js.map +1 -1
- package/dist/esm/clients/granular-replications.js +2 -5
- package/dist/esm/clients/granular-replications.js.map +1 -1
- package/dist/esm/clients/index.d.ts +28 -3
- package/dist/esm/clients/index.js +24 -2
- package/dist/esm/clients/index.js.map +1 -1
- package/dist/esm/clients/metrics.js +2 -5
- package/dist/esm/clients/metrics.js.map +1 -1
- package/dist/esm/clients/middleware-registry.d.ts +4 -2
- package/dist/esm/clients/middleware-registry.js +3 -1
- package/dist/esm/clients/middleware-registry.js.map +1 -1
- package/dist/esm/clients/middleware.d.ts +39 -0
- package/dist/esm/clients/middleware.js +126 -25
- package/dist/esm/clients/middleware.js.map +1 -1
- package/dist/esm/clients/mrt-b2c.js +3 -0
- package/dist/esm/clients/mrt-b2c.js.map +1 -1
- package/dist/esm/clients/mrt.d.ts +27 -10
- package/dist/esm/clients/mrt.generated.d.ts +77 -0
- package/dist/esm/clients/mrt.js +68 -0
- package/dist/esm/clients/mrt.js.map +1 -1
- package/dist/esm/clients/preferences.js +2 -5
- package/dist/esm/clients/preferences.js.map +1 -1
- package/dist/esm/clients/scapi-backend-utils.d.ts +163 -0
- package/dist/esm/clients/scapi-backend-utils.js +180 -0
- package/dist/esm/clients/scapi-backend-utils.js.map +1 -0
- package/dist/esm/clients/scapi-catalogs.d.ts +12 -0
- package/dist/esm/clients/scapi-catalogs.generated.d.ts +104 -0
- package/dist/esm/clients/scapi-catalogs.generated.js +6 -0
- package/dist/esm/clients/scapi-catalogs.generated.js.map +1 -0
- package/dist/esm/clients/scapi-catalogs.js +14 -0
- package/dist/esm/clients/scapi-catalogs.js.map +1 -0
- package/dist/esm/clients/scapi-client-factory.d.ts +81 -0
- package/dist/esm/clients/scapi-client-factory.js +84 -0
- package/dist/esm/clients/scapi-client-factory.js.map +1 -0
- package/dist/esm/clients/scapi-fallback-backend.d.ts +34 -0
- package/dist/esm/clients/scapi-fallback-backend.js +132 -0
- package/dist/esm/clients/scapi-fallback-backend.js.map +1 -0
- package/dist/esm/clients/scapi-jobs.d.ts +32 -0
- package/dist/esm/clients/scapi-jobs.generated.d.ts +535 -0
- package/dist/esm/clients/scapi-jobs.generated.js +6 -0
- package/dist/esm/clients/scapi-jobs.generated.js.map +1 -0
- package/dist/esm/clients/scapi-jobs.js +24 -0
- package/dist/esm/clients/scapi-jobs.js.map +1 -0
- package/dist/esm/clients/scapi-merchant-roles.d.ts +19 -0
- package/dist/esm/clients/scapi-merchant-roles.generated.d.ts +726 -0
- package/dist/esm/clients/scapi-merchant-roles.generated.js +6 -0
- package/dist/esm/clients/scapi-merchant-roles.generated.js.map +1 -0
- package/dist/esm/clients/scapi-merchant-roles.js +12 -0
- package/dist/esm/clients/scapi-merchant-roles.js.map +1 -0
- package/dist/esm/clients/scapi-merchant-users.d.ts +19 -0
- package/dist/esm/clients/scapi-merchant-users.generated.d.ts +300 -0
- package/dist/esm/clients/scapi-merchant-users.generated.js +6 -0
- package/dist/esm/clients/scapi-merchant-users.generated.js.map +1 -0
- package/dist/esm/clients/scapi-merchant-users.js +12 -0
- package/dist/esm/clients/scapi-merchant-users.js.map +1 -0
- package/dist/esm/clients/scapi-schemas.js +2 -5
- package/dist/esm/clients/scapi-schemas.js.map +1 -1
- package/dist/esm/clients/scapi-scope-tier.d.ts +78 -0
- package/dist/esm/clients/scapi-scope-tier.js +113 -0
- package/dist/esm/clients/scapi-scope-tier.js.map +1 -0
- package/dist/esm/clients/scapi-scripts.d.ts +17 -0
- package/dist/esm/clients/scapi-scripts.generated.d.ts +392 -0
- package/dist/esm/clients/scapi-scripts.generated.js +6 -0
- package/dist/esm/clients/scapi-scripts.generated.js.map +1 -0
- package/dist/esm/clients/scapi-scripts.js +12 -0
- package/dist/esm/clients/scapi-scripts.js.map +1 -0
- package/dist/esm/clients/scapi-sites.d.ts +26 -0
- package/dist/esm/clients/scapi-sites.generated.d.ts +500 -0
- package/dist/esm/clients/scapi-sites.generated.js +6 -0
- package/dist/esm/clients/scapi-sites.generated.js.map +1 -0
- package/dist/esm/clients/scapi-sites.js +25 -0
- package/dist/esm/clients/scapi-sites.js.map +1 -0
- package/dist/esm/clients/slas-shopper.d.ts +19 -0
- package/dist/esm/clients/slas-shopper.generated.d.ts +165 -0
- package/dist/esm/clients/slas-shopper.generated.js +6 -0
- package/dist/esm/clients/slas-shopper.generated.js.map +1 -0
- package/dist/esm/clients/slas-shopper.js +35 -0
- package/dist/esm/clients/slas-shopper.js.map +1 -0
- package/dist/esm/clients/storefront-deployments.d.ts +56 -0
- package/dist/esm/clients/storefront-deployments.generated.d.ts +558 -0
- package/dist/esm/clients/storefront-deployments.generated.js +6 -0
- package/dist/esm/clients/storefront-deployments.generated.js.map +1 -0
- package/dist/esm/clients/storefront-deployments.js +24 -0
- package/dist/esm/clients/storefront-deployments.js.map +1 -0
- package/dist/esm/clients/webdav.js +4 -1
- package/dist/esm/clients/webdav.js.map +1 -1
- package/dist/esm/compat/dispatcher.d.ts +49 -0
- package/dist/esm/compat/dispatcher.js +124 -0
- package/dist/esm/compat/dispatcher.js.map +1 -0
- package/dist/esm/compat/index.d.ts +10 -0
- package/dist/esm/compat/index.js +15 -0
- package/dist/esm/compat/index.js.map +1 -0
- package/dist/esm/compat/jobs-backend.d.ts +31 -0
- package/dist/esm/compat/jobs-backend.js +76 -0
- package/dist/esm/compat/jobs-backend.js.map +1 -0
- package/dist/esm/config/dw-json.d.ts +4 -0
- package/dist/esm/config/dw-json.js.map +1 -1
- package/dist/esm/config/index.d.ts +1 -1
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/mapping.d.ts +2 -5
- package/dist/esm/config/mapping.js +25 -1
- package/dist/esm/config/mapping.js.map +1 -1
- package/dist/esm/config/resolved-config.d.ts +2 -2
- package/dist/esm/config/resolved-config.js.map +1 -1
- package/dist/esm/config/sources/env-source.js +17 -0
- package/dist/esm/config/sources/env-source.js.map +1 -1
- package/dist/esm/config/types.d.ts +21 -2
- package/dist/esm/docs/search.js +2 -25
- package/dist/esm/docs/search.js.map +1 -1
- package/dist/esm/guidance/catalog.d.ts +37 -0
- package/dist/esm/guidance/catalog.js +282 -0
- package/dist/esm/guidance/catalog.js.map +1 -0
- package/dist/esm/guidance/index.d.ts +8 -0
- package/dist/esm/guidance/index.js +14 -0
- package/dist/esm/guidance/index.js.map +1 -0
- package/dist/esm/guidance/markdown.d.ts +10 -0
- package/dist/esm/guidance/markdown.js +52 -0
- package/dist/esm/guidance/markdown.js.map +1 -0
- package/dist/esm/guidance/types.d.ts +92 -0
- package/dist/esm/guidance/types.js +17 -0
- package/dist/esm/guidance/types.js.map +1 -0
- package/dist/esm/index.d.ts +14 -5
- package/dist/esm/index.js +14 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instance/index.d.ts +96 -2
- package/dist/esm/instance/index.js +98 -5
- package/dist/esm/instance/index.js.map +1 -1
- package/dist/esm/operations/bm-roles/backend.d.ts +4 -0
- package/dist/esm/operations/bm-roles/backend.js +11 -0
- package/dist/esm/operations/bm-roles/backend.js.map +1 -0
- package/dist/esm/operations/bm-roles/index.d.ts +6 -0
- package/dist/esm/operations/bm-roles/index.js +4 -0
- package/dist/esm/operations/bm-roles/index.js.map +1 -1
- package/dist/esm/operations/bm-roles/ocapi-backend.d.ts +17 -0
- package/dist/esm/operations/bm-roles/ocapi-backend.js +151 -0
- package/dist/esm/operations/bm-roles/ocapi-backend.js.map +1 -0
- package/dist/esm/operations/bm-roles/roles.js +13 -17
- package/dist/esm/operations/bm-roles/roles.js.map +1 -1
- package/dist/esm/operations/bm-roles/scapi-backend.d.ts +27 -0
- package/dist/esm/operations/bm-roles/scapi-backend.js +138 -0
- package/dist/esm/operations/bm-roles/scapi-backend.js.map +1 -0
- package/dist/esm/operations/bm-roles/types.d.ts +49 -0
- package/dist/esm/operations/bm-roles/types.js +2 -0
- package/dist/esm/operations/bm-roles/types.js.map +1 -0
- package/dist/esm/operations/bm-users/backend.d.ts +4 -0
- package/dist/esm/operations/bm-users/backend.js +11 -0
- package/dist/esm/operations/bm-users/backend.js.map +1 -0
- package/dist/esm/operations/bm-users/index.d.ts +11 -3
- package/dist/esm/operations/bm-users/index.js +9 -3
- package/dist/esm/operations/bm-users/index.js.map +1 -1
- package/dist/esm/operations/bm-users/ocapi-backend.d.ts +13 -0
- package/dist/esm/operations/bm-users/ocapi-backend.js +92 -0
- package/dist/esm/operations/bm-users/ocapi-backend.js.map +1 -0
- package/dist/esm/operations/bm-users/scapi-backend.d.ts +23 -0
- package/dist/esm/operations/bm-users/scapi-backend.js +199 -0
- package/dist/esm/operations/bm-users/scapi-backend.js.map +1 -0
- package/dist/esm/operations/bm-users/types.d.ts +99 -0
- package/dist/esm/operations/bm-users/types.js +2 -0
- package/dist/esm/operations/bm-users/types.js.map +1 -0
- package/dist/esm/operations/bm-users/users.d.ts +4 -3
- package/dist/esm/operations/bm-users/users.js +23 -19
- package/dist/esm/operations/bm-users/users.js.map +1 -1
- package/dist/esm/operations/cap/install.js +23 -45
- package/dist/esm/operations/cap/install.js.map +1 -1
- package/dist/esm/operations/cap/list.js +4 -8
- package/dist/esm/operations/cap/list.js.map +1 -1
- package/dist/esm/operations/cap/uninstall.js +17 -37
- package/dist/esm/operations/cap/uninstall.js.map +1 -1
- package/dist/esm/operations/catalogs/catalogs-backend.d.ts +4 -0
- package/dist/esm/operations/catalogs/catalogs-backend.js +16 -0
- package/dist/esm/operations/catalogs/catalogs-backend.js.map +1 -0
- package/dist/esm/operations/catalogs/catalogs-types.d.ts +14 -0
- package/dist/esm/operations/catalogs/catalogs-types.js +2 -0
- package/dist/esm/operations/catalogs/catalogs-types.js.map +1 -0
- package/dist/esm/operations/catalogs/index.d.ts +7 -0
- package/dist/esm/operations/catalogs/index.js +10 -0
- package/dist/esm/operations/catalogs/index.js.map +1 -0
- package/dist/esm/operations/catalogs/ocapi-catalogs-backend.d.ts +8 -0
- package/dist/esm/operations/catalogs/ocapi-catalogs-backend.js +36 -0
- package/dist/esm/operations/catalogs/ocapi-catalogs-backend.js.map +1 -0
- package/dist/esm/operations/catalogs/scapi-catalogs-backend.d.ts +15 -0
- package/dist/esm/operations/catalogs/scapi-catalogs-backend.js +42 -0
- package/dist/esm/operations/catalogs/scapi-catalogs-backend.js.map +1 -0
- package/dist/esm/operations/cip/index.js +10 -2
- package/dist/esm/operations/cip/index.js.map +1 -1
- package/dist/esm/operations/cip/reports.js +19 -3
- package/dist/esm/operations/cip/reports.js.map +1 -1
- package/dist/esm/operations/cip/types.d.ts +8 -4
- package/dist/esm/operations/code/deploy.d.ts +3 -0
- package/dist/esm/operations/code/deploy.js +5 -3
- package/dist/esm/operations/code/deploy.js.map +1 -1
- package/dist/esm/operations/code/download.d.ts +3 -0
- package/dist/esm/operations/code/download.js +5 -5
- package/dist/esm/operations/code/download.js.map +1 -1
- package/dist/esm/operations/code/index.d.ts +7 -1
- package/dist/esm/operations/code/index.js +5 -1
- package/dist/esm/operations/code/index.js.map +1 -1
- package/dist/esm/operations/code/ocapi-scripts-backend.d.ts +12 -0
- package/dist/esm/operations/code/ocapi-scripts-backend.js +40 -0
- package/dist/esm/operations/code/ocapi-scripts-backend.js.map +1 -0
- package/dist/esm/operations/code/scapi-scripts-backend.d.ts +22 -0
- package/dist/esm/operations/code/scapi-scripts-backend.js +94 -0
- package/dist/esm/operations/code/scapi-scripts-backend.js.map +1 -0
- package/dist/esm/operations/code/scripts-backend.d.ts +17 -0
- package/dist/esm/operations/code/scripts-backend.js +40 -0
- package/dist/esm/operations/code/scripts-backend.js.map +1 -0
- package/dist/esm/operations/code/scripts-types.d.ts +43 -0
- package/dist/esm/operations/code/scripts-types.js +2 -0
- package/dist/esm/operations/code/scripts-types.js.map +1 -0
- package/dist/esm/operations/code/upload-files.d.ts +6 -0
- package/dist/esm/operations/code/upload-files.js +58 -7
- package/dist/esm/operations/code/upload-files.js.map +1 -1
- package/dist/esm/operations/code/versions.d.ts +0 -20
- package/dist/esm/operations/code/versions.js +16 -51
- package/dist/esm/operations/code/versions.js.map +1 -1
- package/dist/esm/operations/code/watch.d.ts +3 -0
- package/dist/esm/operations/code/watch.js +3 -2
- package/dist/esm/operations/code/watch.js.map +1 -1
- package/dist/esm/operations/jobs/discover.d.ts +1 -1
- package/dist/esm/operations/jobs/discover.js +51 -21
- package/dist/esm/operations/jobs/discover.js.map +1 -1
- package/dist/esm/operations/jobs/index.d.ts +14 -57
- package/dist/esm/operations/jobs/index.js +15 -59
- package/dist/esm/operations/jobs/index.js.map +1 -1
- package/dist/esm/operations/jobs/ocapi-mapping.d.ts +34 -0
- package/dist/esm/operations/jobs/ocapi-mapping.js +100 -0
- package/dist/esm/operations/jobs/ocapi-mapping.js.map +1 -0
- package/dist/esm/operations/jobs/run-system-job.d.ts +81 -0
- package/dist/esm/operations/jobs/run-system-job.js +137 -0
- package/dist/esm/operations/jobs/run-system-job.js.map +1 -0
- package/dist/esm/operations/jobs/run.js +16 -4
- package/dist/esm/operations/jobs/run.js.map +1 -1
- package/dist/esm/operations/jobs/scapi-ops.d.ts +61 -0
- package/dist/esm/operations/jobs/scapi-ops.js +214 -0
- package/dist/esm/operations/jobs/scapi-ops.js.map +1 -0
- package/dist/esm/operations/jobs/site-archive.js +28 -66
- package/dist/esm/operations/jobs/site-archive.js.map +1 -1
- package/dist/esm/operations/jobs/types.d.ts +46 -0
- package/dist/esm/operations/jobs/types.js +2 -0
- package/dist/esm/operations/jobs/types.js.map +1 -0
- package/dist/esm/operations/jobs/wait-canonical.d.ts +28 -0
- package/dist/esm/operations/jobs/wait-canonical.js +48 -0
- package/dist/esm/operations/jobs/wait-canonical.js.map +1 -0
- package/dist/esm/operations/mrt/bundle.d.ts +164 -2
- package/dist/esm/operations/mrt/bundle.js +315 -9
- package/dist/esm/operations/mrt/bundle.js.map +1 -1
- package/dist/esm/operations/mrt/deployment.d.ts +221 -0
- package/dist/esm/operations/mrt/deployment.js +239 -0
- package/dist/esm/operations/mrt/deployment.js.map +1 -1
- package/dist/esm/operations/mrt/index.d.ts +8 -6
- package/dist/esm/operations/mrt/index.js +5 -3
- package/dist/esm/operations/mrt/index.js.map +1 -1
- package/dist/esm/operations/mrt/mrt-backend.d.ts +117 -0
- package/dist/esm/operations/mrt/mrt-backend.js +84 -0
- package/dist/esm/operations/mrt/mrt-backend.js.map +1 -0
- package/dist/esm/operations/mrt/push.d.ts +83 -1
- package/dist/esm/operations/mrt/push.js +102 -1
- package/dist/esm/operations/mrt/push.js.map +1 -1
- package/dist/esm/operations/sites/cartridges.d.ts +10 -8
- package/dist/esm/operations/sites/cartridges.js +35 -67
- package/dist/esm/operations/sites/cartridges.js.map +1 -1
- package/dist/esm/operations/sites/index.d.ts +10 -6
- package/dist/esm/operations/sites/index.js +9 -6
- package/dist/esm/operations/sites/index.js.map +1 -1
- package/dist/esm/operations/sites/ocapi-sites-backend.d.ts +20 -0
- package/dist/esm/operations/sites/ocapi-sites-backend.js +98 -0
- package/dist/esm/operations/sites/ocapi-sites-backend.js.map +1 -0
- package/dist/esm/operations/sites/scapi-sites-backend.d.ts +33 -0
- package/dist/esm/operations/sites/scapi-sites-backend.js +166 -0
- package/dist/esm/operations/sites/scapi-sites-backend.js.map +1 -0
- package/dist/esm/operations/sites/sites-backend.d.ts +9 -0
- package/dist/esm/operations/sites/sites-backend.js +16 -0
- package/dist/esm/operations/sites/sites-backend.js.map +1 -0
- package/dist/esm/operations/sites/sites-scopes.d.ts +2 -0
- package/dist/esm/operations/sites/sites-scopes.js +16 -0
- package/dist/esm/operations/sites/sites-scopes.js.map +1 -0
- package/dist/esm/operations/sites/sites-types.d.ts +50 -0
- package/dist/esm/operations/sites/sites-types.js +2 -0
- package/dist/esm/operations/sites/sites-types.js.map +1 -0
- package/dist/esm/safety/safety-middleware.d.ts +7 -3
- package/dist/esm/safety/safety-middleware.js +13 -9
- package/dist/esm/safety/safety-middleware.js.map +1 -1
- package/dist/esm/scaffold/sources.js +6 -9
- package/dist/esm/scaffold/sources.js.map +1 -1
- package/dist/esm/scapi/auth-primitives.d.ts +3 -0
- package/dist/esm/scapi/auth-primitives.js +104 -0
- package/dist/esm/scapi/auth-primitives.js.map +1 -0
- package/dist/esm/scapi/authentication.d.ts +30 -0
- package/dist/esm/scapi/authentication.js +136 -0
- package/dist/esm/scapi/authentication.js.map +1 -0
- package/dist/esm/scapi/catalog.d.ts +29 -0
- package/dist/esm/scapi/catalog.js +81 -0
- package/dist/esm/scapi/catalog.js.map +1 -0
- package/dist/esm/scapi/index.d.ts +12 -0
- package/dist/esm/scapi/index.js +13 -0
- package/dist/esm/scapi/index.js.map +1 -0
- package/dist/esm/scapi/request.d.ts +15 -0
- package/dist/esm/scapi/request.js +239 -0
- package/dist/esm/scapi/request.js.map +1 -0
- package/dist/esm/scapi/runtime.d.ts +20 -0
- package/dist/esm/scapi/runtime.js +131 -0
- package/dist/esm/scapi/runtime.js.map +1 -0
- package/dist/esm/scapi/snippets.d.ts +22 -0
- package/dist/esm/scapi/snippets.js +140 -0
- package/dist/esm/scapi/snippets.js.map +1 -0
- package/dist/esm/scapi/worker-source.d.ts +2 -0
- package/dist/esm/scapi/worker-source.js +101 -0
- package/dist/esm/scapi/worker-source.js.map +1 -0
- package/dist/esm/search/ranking.d.ts +12 -0
- package/dist/esm/search/ranking.js +28 -0
- package/dist/esm/search/ranking.js.map +1 -0
- package/dist/esm/skills/sources.d.ts +2 -2
- package/dist/esm/skills/sources.js +10 -2
- package/dist/esm/skills/sources.js.map +1 -1
- package/dist/esm/skills/types.d.ts +1 -1
- package/dist/esm/slas/token.js +33 -94
- package/dist/esm/slas/token.js.map +1 -1
- package/dist/esm/slas/types.d.ts +5 -0
- package/node_modules/@salesforce/b2c-api-schemas/README.md +23 -0
- package/node_modules/@salesforce/b2c-api-schemas/manifest.json +576 -0
- package/node_modules/@salesforce/b2c-api-schemas/package.json +15 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/cdn/zones/v1.json +11490 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/orders/v1.json +3589 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v1.json +6544 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v2.json +7148 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-orders/v1.json +4411 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-payments/v1.json +643 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/cors/v1.json +295 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/preferences/v1.json +2036 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/shopper-configurations/v1.json +327 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/timeouts/v1.json +234 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/custom-objects/v1.json +1542 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/shopper-custom-objects/v1.json +405 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/customers/v1.json +2531 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/shopper-customers/v1.json +7944 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/custom-apis/v1.json +292 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/object-definitions/v1.json +2537 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scapi-schemas/v1.json +517 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scripts/v1.json +589 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/experiences/v1.json +3600 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/shopper-experience/v1.json +2319 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/intelligence/analytics/v1.json +658 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/availability/v1.json +2649 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/impex/v1.json +6615 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/reservation/v1.json +2103 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/roles/v1.json +1760 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/users/v1.json +640 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/observability/metrics/v1.json +1263 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/jobs/v1.json +1259 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/replications/v1.json +760 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/assignments/v1.json +1047 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/campaigns/v1.json +1929 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/coupons/v1.json +1542 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/gift-certificates/v1.json +1093 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/promotions/v1.json +1324 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-gift-certificates/v1.json +325 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-promotions/v1.json +631 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/source-code-groups/v1.json +1036 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/catalogs/v1.json +5175 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/inventory-lists/v1.json +866 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/price-books/v1.json +747 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/products/v1.json +5076 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-availability/v1.json +509 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-delivery-estimates/v1.json +517 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-products/v1.json +2961 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/search/shopper-search/v1.json +1889 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth/v1.json +7014 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth-admin/v1.json +1898 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/consents/v1.json +622 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-agents/v1.json +192 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-consents/v1.json +913 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-context/v1.json +630 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/site/seo/v1.json +223 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/site/shopper-seo/v1.json +423 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/site/sites/v1.json +1088 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/store/shopper-stores/v1.json +798 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/store/store-redirect-mappings/v1.json +607 -0
- package/node_modules/@salesforce/b2c-api-schemas/scapi/store/stores/v1.json +1418 -0
- package/package.json +24 -3
- package/specs/dx-scripts-v1.yaml +409 -0
- package/specs/merchant-roles-v1.yaml +1085 -0
- package/specs/merchant-users-v1.yaml +398 -0
- package/specs/mrt-api-v1.json +105 -0
- package/specs/operations-jobs-v1.yaml +793 -0
- package/specs/product-catalogs-v1.yaml +111 -0
- package/specs/site-sites-v1.yaml +667 -0
- package/specs/slas-shopper-v1.yaml +83 -0
- package/specs/storefront-deployments-v1.yaml +630 -0
|
@@ -15,6 +15,8 @@ import { createWriteStream } from 'node:fs';
|
|
|
15
15
|
import { readFile, stat, mkdtemp, rm } from 'node:fs/promises';
|
|
16
16
|
import path from 'node:path';
|
|
17
17
|
import os from 'node:os';
|
|
18
|
+
import { pathToFileURL } from 'node:url';
|
|
19
|
+
import zlib from 'node:zlib';
|
|
18
20
|
import tar from 'tar-fs';
|
|
19
21
|
import { Minimatch } from 'minimatch';
|
|
20
22
|
import { getLogger } from '../../logging/logger.js';
|
|
@@ -29,7 +31,7 @@ export const DEFAULT_SSR_PARAMETERS = {
|
|
|
29
31
|
* Node.js version for the SSR function runtime.
|
|
30
32
|
* @see https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/upgrading-node-version.html
|
|
31
33
|
*/
|
|
32
|
-
SSRFunctionNodeVersion: '
|
|
34
|
+
SSRFunctionNodeVersion: '24.x',
|
|
33
35
|
};
|
|
34
36
|
/**
|
|
35
37
|
* Creates a glob filter function from patterns.
|
|
@@ -86,6 +88,65 @@ export function getDefaultMessage() {
|
|
|
86
88
|
* });
|
|
87
89
|
* ```
|
|
88
90
|
*/
|
|
91
|
+
/**
|
|
92
|
+
* Extracts the exported {@link MrtServerConfig} from an imported config module,
|
|
93
|
+
* accepting either a named `config` export or a default export.
|
|
94
|
+
*/
|
|
95
|
+
function pickServerConfig(mod) {
|
|
96
|
+
const record = mod;
|
|
97
|
+
const config = record.config ?? record.default?.config ?? record.default;
|
|
98
|
+
return config ?? null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Candidate `config.server` filenames in the project directory, in the order
|
|
102
|
+
* they are tried. `.ts` is preferred (the authored source); compiled `.js`/`.mjs`
|
|
103
|
+
* variants are accepted for compatibility.
|
|
104
|
+
*/
|
|
105
|
+
const PROJECT_SERVER_CONFIG_FILENAMES = ['config.server.ts', 'config.server.js', 'config.server.mjs'];
|
|
106
|
+
/**
|
|
107
|
+
* Reads `config.server.{ts,js,mjs}` from the project directory and returns the
|
|
108
|
+
* exported {@link MrtServerConfig}, or `null` if no such file exists.
|
|
109
|
+
*
|
|
110
|
+
* The config is read straight from source at bundle time (no build step): the
|
|
111
|
+
* reference apps keep `config.server.ts` in the project root defining
|
|
112
|
+
* ssrOnly/ssrShared/ssrParameters. TypeScript is loaded via jiti, so any
|
|
113
|
+
* type-only imports in the file are erased and need not be resolved.
|
|
114
|
+
*
|
|
115
|
+
* Throws if a config file exists but cannot be imported, so a broken config
|
|
116
|
+
* fails loudly rather than silently falling back to defaults.
|
|
117
|
+
*/
|
|
118
|
+
async function loadProjectServerConfig(projectDirectory) {
|
|
119
|
+
for (const filename of PROJECT_SERVER_CONFIG_FILENAMES) {
|
|
120
|
+
const filePath = path.join(projectDirectory, filename);
|
|
121
|
+
try {
|
|
122
|
+
await stat(filePath);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
// jiti transpiles and evaluates the (possibly TypeScript) config in-memory
|
|
129
|
+
// so it can be read from source without a build step. Imported lazily so
|
|
130
|
+
// consumers that never build a bundle don't pay for it.
|
|
131
|
+
const { createJiti } = await import('jiti');
|
|
132
|
+
const jiti = createJiti(import.meta.url, { fsCache: false, interopDefault: true });
|
|
133
|
+
const mod = await jiti.import(filePath);
|
|
134
|
+
return pickServerConfig(mod);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
138
|
+
throw new Error(`Failed to load server config at "${filePath}": ${detail}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Reads the legacy compiled `build/config.server.js` from the build directory,
|
|
145
|
+
* returning the exported {@link MrtServerConfig} or `null` if it is absent or
|
|
146
|
+
* fails to import. Kept as a fallback for builds that still emit it; new builds
|
|
147
|
+
* should keep `config.server.ts` in the project directory instead
|
|
148
|
+
* (see {@link loadProjectServerConfig}).
|
|
149
|
+
*/
|
|
89
150
|
async function loadServerConfig(buildPath) {
|
|
90
151
|
const configPath = path.join(buildPath, 'config.server.js');
|
|
91
152
|
try {
|
|
@@ -95,34 +156,77 @@ async function loadServerConfig(buildPath) {
|
|
|
95
156
|
return null;
|
|
96
157
|
}
|
|
97
158
|
try {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
159
|
+
// Convert the absolute path to a file:// URL before dynamic import. On
|
|
160
|
+
// Windows a bare absolute path (e.g. `D:\build\config.server.js`) is parsed
|
|
161
|
+
// as a URL whose scheme is the drive letter and fails to import; a file://
|
|
162
|
+
// URL imports correctly on all platforms.
|
|
163
|
+
const mod = await import(pathToFileURL(configPath).href);
|
|
164
|
+
return pickServerConfig(mod);
|
|
101
165
|
}
|
|
102
166
|
catch {
|
|
103
167
|
return null;
|
|
104
168
|
}
|
|
105
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Reads the project's `package.json` and returns its declared dependencies
|
|
172
|
+
* (merged `dependencies` + `devDependencies`) for inclusion in bundle metadata,
|
|
173
|
+
* mirroring how pwa-kit and storefront-next populate `bundle_metadata.dependencies`.
|
|
174
|
+
*
|
|
175
|
+
* Best-effort: returns `undefined` when there is no readable/parseable
|
|
176
|
+
* `package.json`, so metadata collection never blocks a bundle. The resolved
|
|
177
|
+
* dependency-tree versions those tools overlay via `npm ls` are intentionally
|
|
178
|
+
* not collected here — that overlay targets specific runtime packages and does
|
|
179
|
+
* not generalize; the declared `package.json` versions are the portable metadata.
|
|
180
|
+
*/
|
|
181
|
+
async function loadProjectDependencies(projectDirectory) {
|
|
182
|
+
const logger = getLogger();
|
|
183
|
+
const packagePath = path.join(projectDirectory, 'package.json');
|
|
184
|
+
let raw;
|
|
185
|
+
try {
|
|
186
|
+
raw = await readFile(packagePath, 'utf8');
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
logger.debug({ packagePath }, '[MRT] No package.json found; omitting bundle dependency metadata');
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
try {
|
|
193
|
+
const pkg = JSON.parse(raw);
|
|
194
|
+
const dependencies = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
195
|
+
return Object.keys(dependencies).length > 0 ? dependencies : undefined;
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
199
|
+
logger.warn({ packagePath, detail }, '[MRT] Could not parse package.json; omitting bundle dependency metadata');
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
106
203
|
export async function createBundle(options) {
|
|
107
204
|
const logger = getLogger();
|
|
108
205
|
const { projectSlug } = options;
|
|
109
206
|
const buildDirectory = options.buildDirectory || 'build';
|
|
110
207
|
const message = options.message || getDefaultMessage();
|
|
208
|
+
const projectDirectory = options.projectDirectory ?? process.cwd();
|
|
111
209
|
const buildPath = path.isAbsolute(buildDirectory) ? buildDirectory : path.join(process.cwd(), buildDirectory);
|
|
112
|
-
|
|
210
|
+
// Prefer config.server.{ts,js} read from the project directory; fall back to a
|
|
211
|
+
// legacy compiled build/config.server.js for builds that still emit one.
|
|
212
|
+
const serverConfig = (await loadProjectServerConfig(projectDirectory)) ?? (await loadServerConfig(buildPath));
|
|
213
|
+
// Collect declared package.json dependencies for bundle metadata (best-effort).
|
|
214
|
+
const dependencies = await loadProjectDependencies(projectDirectory);
|
|
113
215
|
const ssrOnly = options.ssrOnly ?? serverConfig?.ssrOnly ?? DEFAULT_SSR_ONLY;
|
|
114
216
|
const ssrShared = options.ssrShared ?? serverConfig?.ssrShared ?? DEFAULT_SSR_SHARED;
|
|
115
217
|
const ssrParamsFromConfig = serverConfig?.ssrParameters ?? {};
|
|
116
|
-
// Merge: defaults < config.server
|
|
218
|
+
// Merge: defaults < config.server < explicit options (explicit values win)
|
|
117
219
|
const ssrParameters = {
|
|
118
220
|
...DEFAULT_SSR_PARAMETERS,
|
|
119
221
|
...ssrParamsFromConfig,
|
|
120
222
|
...options.ssrParameters,
|
|
121
223
|
};
|
|
122
224
|
logger.debug({ projectSlug, buildDirectory, ssrParameters }, '[MRT] Creating bundle');
|
|
123
|
-
// Validate SSR patterns
|
|
124
|
-
|
|
125
|
-
|
|
225
|
+
// Validate SSR patterns. An SSR entry point is mandatory, but ssrShared may
|
|
226
|
+
// legitimately be empty for a pure-SSR app with no shared/static assets, so
|
|
227
|
+
// only require ssrOnly to be non-empty.
|
|
228
|
+
if (ssrOnly.length === 0) {
|
|
229
|
+
throw new Error('ssrOnly patterns are required and cannot be empty');
|
|
126
230
|
}
|
|
127
231
|
try {
|
|
128
232
|
await stat(buildPath);
|
|
@@ -179,6 +283,7 @@ export async function createBundle(options) {
|
|
|
179
283
|
ssr_parameters: ssrParameters,
|
|
180
284
|
ssr_only: ssrOnlyFiles,
|
|
181
285
|
ssr_shared: ssrSharedFiles,
|
|
286
|
+
...(dependencies ? { bundle_metadata: { dependencies } } : {}),
|
|
182
287
|
};
|
|
183
288
|
}
|
|
184
289
|
finally {
|
|
@@ -186,4 +291,205 @@ export async function createBundle(options) {
|
|
|
186
291
|
await rm(tmpDir, { recursive: true }).catch(() => { });
|
|
187
292
|
}
|
|
188
293
|
}
|
|
294
|
+
/** Default archive path prefix under which built files and the config file live. */
|
|
295
|
+
export const DEFAULT_V2_ROOT_DIR = 'bld';
|
|
296
|
+
/** Default path to the in-archive config file, relative to the root directory. */
|
|
297
|
+
export const DEFAULT_V2_CONFIG_PATH = '.mrt/config.json';
|
|
298
|
+
/** Default match mode for ssrOnly/ssrShared pattern matching. */
|
|
299
|
+
export const DEFAULT_V2_MATCH_MODE = 'strict';
|
|
300
|
+
/**
|
|
301
|
+
* Joins path segments using forward slashes, as required for tar entry names.
|
|
302
|
+
*/
|
|
303
|
+
function tarJoin(...segments) {
|
|
304
|
+
return path.posix.join(...segments.map((s) => s.split(path.sep).join('/')));
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Reads the v2 in-archive config file from disk, if the build emits one.
|
|
308
|
+
*
|
|
309
|
+
* v2 builds write their SSR configuration to `{buildPath}/{configPath}` (by
|
|
310
|
+
* default `bld/.mrt/config.json` relative to the archive, i.e.
|
|
311
|
+
* `{buildDirectory}/.mrt/config.json` on disk). Returns the parsed object — a
|
|
312
|
+
* partial {@link BundleV2Config} plus any extra top-level keys the build wrote —
|
|
313
|
+
* or `null` if no such file exists. Throws if the file exists but is not valid
|
|
314
|
+
* JSON or is not a JSON object, so a malformed build config fails loudly rather
|
|
315
|
+
* than being silently discarded.
|
|
316
|
+
*/
|
|
317
|
+
async function loadV2Config(buildPath, configPath) {
|
|
318
|
+
const filePath = path.join(buildPath, configPath);
|
|
319
|
+
let contents;
|
|
320
|
+
try {
|
|
321
|
+
contents = await readFile(filePath, 'utf8');
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
// Only treat a genuinely-absent file as "no config"; surface any other read
|
|
325
|
+
// failure (permissions, path-is-a-directory, etc.) so a present-but-broken
|
|
326
|
+
// config fails loudly rather than silently falling back to defaults.
|
|
327
|
+
if (error instanceof Error && error.code === 'ENOENT') {
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
331
|
+
throw new Error(`Failed to read v2 bundle config at "${filePath}": ${detail}`);
|
|
332
|
+
}
|
|
333
|
+
let parsed;
|
|
334
|
+
try {
|
|
335
|
+
parsed = JSON.parse(contents);
|
|
336
|
+
}
|
|
337
|
+
catch (error) {
|
|
338
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
339
|
+
throw new Error(`Failed to parse v2 bundle config at "${filePath}": ${detail}`);
|
|
340
|
+
}
|
|
341
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
342
|
+
throw new Error(`Invalid v2 bundle config at "${filePath}": expected a JSON object`);
|
|
343
|
+
}
|
|
344
|
+
return parsed;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Creates a v2-format bundle archive from a build directory.
|
|
348
|
+
*
|
|
349
|
+
* Produces a gzip-compressed tar archive whose entries sit directly under
|
|
350
|
+
* `{rootDir}/` (no project-slug prefix, unlike v1), with the SSR configuration
|
|
351
|
+
* written into the archive at `{rootDir}/{configPath}` (default
|
|
352
|
+
* `bld/.mrt/config.json`). The returned object carries the archive bytes plus
|
|
353
|
+
* the `rootDir`/`configPath`/`matchMode` values to send as multipart request
|
|
354
|
+
* fields, so the builder and the request stay consistent.
|
|
355
|
+
*
|
|
356
|
+
* The SSR configuration is resolved as follows: if the build emitted an on-disk
|
|
357
|
+
* v2 config file at `{buildDirectory}/{configPath}`, it is used; otherwise the
|
|
358
|
+
* project's `config.server.{ts,js}` is read and used to build the config that
|
|
359
|
+
* goes into the bundle; explicit options override either, merged per key. When
|
|
360
|
+
* the build already emitted the v2 config file, it is excluded from the archive
|
|
361
|
+
* walk and replaced by the resolved config so there is exactly one copy.
|
|
362
|
+
*
|
|
363
|
+
* @param options - v2 bundle creation options
|
|
364
|
+
* @returns v2 bundle object ready for multipart upload
|
|
365
|
+
* @throws Error if the build directory doesn't exist or ssr patterns are empty
|
|
366
|
+
*
|
|
367
|
+
* @example
|
|
368
|
+
* ```typescript
|
|
369
|
+
* const bundle = await createBundleV2({
|
|
370
|
+
* ssrOnly: ['ssr.js'],
|
|
371
|
+
* ssrShared: ['static/**\/*'],
|
|
372
|
+
* buildDirectory: './build',
|
|
373
|
+
* message: 'Release v1.0.0'
|
|
374
|
+
* });
|
|
375
|
+
* ```
|
|
376
|
+
*/
|
|
377
|
+
export async function createBundleV2(options) {
|
|
378
|
+
const logger = getLogger();
|
|
379
|
+
const buildDirectory = options.buildDirectory || 'build';
|
|
380
|
+
const message = options.message || getDefaultMessage();
|
|
381
|
+
const rootDir = options.rootDir || DEFAULT_V2_ROOT_DIR;
|
|
382
|
+
const configPath = options.configPath || DEFAULT_V2_CONFIG_PATH;
|
|
383
|
+
const matchMode = options.matchMode || DEFAULT_V2_MATCH_MODE;
|
|
384
|
+
const projectDirectory = options.projectDirectory ?? process.cwd();
|
|
385
|
+
const buildPath = path.isAbsolute(buildDirectory) ? buildDirectory : path.join(process.cwd(), buildDirectory);
|
|
386
|
+
// Resolve the base SSR config. Prefer the v2 config file the build emits at
|
|
387
|
+
// {buildPath}/{configPath}; if absent, read the project's config.server.{ts,js}
|
|
388
|
+
// (falling back to a legacy compiled build/config.server.js); if neither
|
|
389
|
+
// exists, use defaults. Explicit options always win over the resolved base,
|
|
390
|
+
// per key.
|
|
391
|
+
const v2Config = await loadV2Config(buildPath, configPath);
|
|
392
|
+
const serverConfig = v2Config
|
|
393
|
+
? null
|
|
394
|
+
: ((await loadProjectServerConfig(projectDirectory)) ?? (await loadServerConfig(buildPath)));
|
|
395
|
+
const baseSsrOnly = v2Config?.ssrOnly ?? serverConfig?.ssrOnly;
|
|
396
|
+
const baseSsrShared = v2Config?.ssrShared ?? serverConfig?.ssrShared;
|
|
397
|
+
const baseSsrParameters = v2Config?.ssrParameters ?? serverConfig?.ssrParameters ?? {};
|
|
398
|
+
const ssrOnly = options.ssrOnly ?? baseSsrOnly ?? DEFAULT_SSR_ONLY;
|
|
399
|
+
const ssrShared = options.ssrShared ?? baseSsrShared ?? DEFAULT_SSR_SHARED;
|
|
400
|
+
// Merge: defaults < base config file < explicit options (explicit values win)
|
|
401
|
+
const ssrParameters = {
|
|
402
|
+
...DEFAULT_SSR_PARAMETERS,
|
|
403
|
+
...baseSsrParameters,
|
|
404
|
+
...options.ssrParameters,
|
|
405
|
+
};
|
|
406
|
+
logger.debug({
|
|
407
|
+
buildDirectory,
|
|
408
|
+
rootDir,
|
|
409
|
+
configPath,
|
|
410
|
+
matchMode,
|
|
411
|
+
ssrParameters,
|
|
412
|
+
configSource: v2Config ? 'v2-config-file' : serverConfig ? 'config.server' : 'defaults',
|
|
413
|
+
}, '[MRT] Creating v2 bundle');
|
|
414
|
+
// Validate SSR patterns. An SSR entry point is mandatory, but ssrShared may
|
|
415
|
+
// legitimately be empty for a pure-SSR app with no shared/static assets, so
|
|
416
|
+
// only require ssrOnly to be non-empty.
|
|
417
|
+
if (ssrOnly.length === 0) {
|
|
418
|
+
throw new Error('ssrOnly patterns are required and cannot be empty');
|
|
419
|
+
}
|
|
420
|
+
try {
|
|
421
|
+
await stat(buildPath);
|
|
422
|
+
}
|
|
423
|
+
catch {
|
|
424
|
+
throw new Error(`Build directory at path "${buildPath}" not found.\n` + 'Ensure your project has been built first.');
|
|
425
|
+
}
|
|
426
|
+
// Assemble the in-archive config file contents. Preserve any extra top-level
|
|
427
|
+
// keys the build wrote into its v2 config file, then apply the resolved SSR
|
|
428
|
+
// values on top.
|
|
429
|
+
const config = { ...v2Config, ssrOnly, ssrShared, ssrParameters };
|
|
430
|
+
// Merge bundle metadata per-key: explicit options override the file's values.
|
|
431
|
+
// Only the server-allowlisted sub-keys (dependencies, ccOverrides) are kept.
|
|
432
|
+
const fileMetadata = v2Config?.bundleMetadata ?? {};
|
|
433
|
+
// Explicit option > v2 config file > declared package.json dependencies.
|
|
434
|
+
const dependencies = options.bundleMetadata?.dependencies ??
|
|
435
|
+
fileMetadata.dependencies ??
|
|
436
|
+
(await loadProjectDependencies(projectDirectory));
|
|
437
|
+
const ccOverrides = options.bundleMetadata?.ccOverrides ?? fileMetadata.ccOverrides;
|
|
438
|
+
const metadata = {};
|
|
439
|
+
if (dependencies)
|
|
440
|
+
metadata.dependencies = dependencies;
|
|
441
|
+
if (ccOverrides)
|
|
442
|
+
metadata.ccOverrides = ccOverrides;
|
|
443
|
+
if (Object.keys(metadata).length > 0) {
|
|
444
|
+
config.bundleMetadata = metadata;
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
delete config.bundleMetadata;
|
|
448
|
+
}
|
|
449
|
+
const configBytes = Buffer.from(JSON.stringify(config), 'utf8');
|
|
450
|
+
const configEntryName = tarJoin(rootDir, configPath);
|
|
451
|
+
// Build a gzip-compressed tar with all built files prefixed by rootDir and the
|
|
452
|
+
// config file injected at {rootDir}/{configPath}. Collect the output in memory.
|
|
453
|
+
const filesInArchive = [];
|
|
454
|
+
const gzip = zlib.createGzip();
|
|
455
|
+
const chunks = [];
|
|
456
|
+
// If the build already emitted the config file on disk, exclude it from the
|
|
457
|
+
// walk so the injected (resolved) config is the only copy in the archive.
|
|
458
|
+
// tar-fs invokes `ignore` with the absolute path of each candidate entry.
|
|
459
|
+
const onDiskConfigPath = path.resolve(buildPath, configPath);
|
|
460
|
+
const pack = tar.pack(buildPath, {
|
|
461
|
+
// Do not auto-finalize; we inject the config entry in finish() first.
|
|
462
|
+
finalize: false,
|
|
463
|
+
ignore(name) {
|
|
464
|
+
return path.resolve(name) === onDiskConfigPath;
|
|
465
|
+
},
|
|
466
|
+
map(header) {
|
|
467
|
+
if (header.type === 'file') {
|
|
468
|
+
filesInArchive.push(header.name);
|
|
469
|
+
}
|
|
470
|
+
header.name = tarJoin(rootDir, header.name);
|
|
471
|
+
return header;
|
|
472
|
+
},
|
|
473
|
+
finish(packStream) {
|
|
474
|
+
packStream.entry({ name: configEntryName }, configBytes, (err) => {
|
|
475
|
+
if (err) {
|
|
476
|
+
packStream.destroy(err);
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
packStream.finalize();
|
|
480
|
+
});
|
|
481
|
+
},
|
|
482
|
+
});
|
|
483
|
+
await new Promise((resolve, reject) => {
|
|
484
|
+
pack.on('error', reject);
|
|
485
|
+
gzip.on('error', reject);
|
|
486
|
+
gzip.on('data', (chunk) => chunks.push(chunk));
|
|
487
|
+
gzip.on('end', resolve);
|
|
488
|
+
pack.pipe(gzip);
|
|
489
|
+
});
|
|
490
|
+
const archive = Buffer.concat(chunks);
|
|
491
|
+
logger.debug({ fileCount: filesInArchive.length, configEntryName, archiveBytes: archive.length }, '[MRT] v2 bundle archive created');
|
|
492
|
+
logger.trace({ files: filesInArchive.slice(0, 20) }, '[MRT] First 20 files in v2 archive');
|
|
493
|
+
return { message, archive, rootDir, configPath, matchMode, config };
|
|
494
|
+
}
|
|
189
495
|
//# sourceMappingURL=bundle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../src/operations/mrt/bundle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../src/operations/mrt/bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { AuthStrategy } from '../../auth/types.js';
|
|
9
9
|
import type { components } from '../../clients/mrt.js';
|
|
10
|
+
import { type Deployment as DeploymentScapi } from '../../clients/storefront-deployments.js';
|
|
11
|
+
import { type MrtBackend, type MrtBackendPreference, type ScapiMrtConnection } from './mrt-backend.js';
|
|
10
12
|
/**
|
|
11
13
|
* Deployment list item from API.
|
|
12
14
|
*/
|
|
@@ -160,3 +162,222 @@ export interface CreateDeploymentResult {
|
|
|
160
162
|
* ```
|
|
161
163
|
*/
|
|
162
164
|
export declare function createDeployment(options: CreateDeploymentOptions, auth: AuthStrategy): Promise<CreateDeploymentResult>;
|
|
165
|
+
/**
|
|
166
|
+
* A single deployment history row, normalized across the legacy and SCAPI
|
|
167
|
+
* backends so the CLI table renders one shape regardless of backend.
|
|
168
|
+
*
|
|
169
|
+
* Status and type strings are kept **raw** per backend (legacy `"Finished"` /
|
|
170
|
+
* `"Publish"`, SCAPI `"finished"` / `"publish"`) so display doesn't silently
|
|
171
|
+
* change for existing legacy users; terminal-state logic for `--wait` lives in
|
|
172
|
+
* {@link waitForDeploymentScapi} and operates on the SCAPI enum directly.
|
|
173
|
+
*/
|
|
174
|
+
export interface MrtDeploymentView {
|
|
175
|
+
/** SCAPI deployment UUID. Undefined for legacy (its list has no per-deploy id). */
|
|
176
|
+
deploymentId?: string;
|
|
177
|
+
/** Numeric bundle identifier. */
|
|
178
|
+
bundleId?: number;
|
|
179
|
+
/** Human-readable bundle message/description. */
|
|
180
|
+
bundleMessage?: string;
|
|
181
|
+
/** Raw backend status string. */
|
|
182
|
+
status?: string;
|
|
183
|
+
/** Raw backend deployment type. */
|
|
184
|
+
deploymentType?: string;
|
|
185
|
+
/** Creation timestamp (ISO 8601). */
|
|
186
|
+
creationDate?: string;
|
|
187
|
+
/** Email of the user who triggered the deployment. */
|
|
188
|
+
createdBy?: string;
|
|
189
|
+
/** Backend that produced this row. */
|
|
190
|
+
backend: MrtBackend;
|
|
191
|
+
}
|
|
192
|
+
/** Normalizes a legacy MRT deployment list item into an {@link MrtDeploymentView}. */
|
|
193
|
+
export declare function normalizeLegacyDeployment(deploy: MrtDeployment): MrtDeploymentView;
|
|
194
|
+
/** Normalizes a SCAPI MRT {@link DeploymentScapi} into an {@link MrtDeploymentView}. */
|
|
195
|
+
export declare function normalizeDeploymentScapi(deployment: DeploymentScapi): MrtDeploymentView;
|
|
196
|
+
/**
|
|
197
|
+
* Lists deployments for an environment via the SCAPI MRT Deployments API.
|
|
198
|
+
*
|
|
199
|
+
* Forwards the standard SCAPI `limit`/`offset` pagination query parameters when
|
|
200
|
+
* provided (max 200 per page, default 25 server-side; the response echoes the
|
|
201
|
+
* full `total`), mirroring the legacy list and the other SCAPI collection
|
|
202
|
+
* clients (`scapi-sites`, `scapi-catalogs`).
|
|
203
|
+
*
|
|
204
|
+
* @throws {ScapiRequestError} carrying the HTTP status on a non-2xx response.
|
|
205
|
+
*/
|
|
206
|
+
export declare function listDeploymentsScapi(conn: ScapiMrtConnection, params: {
|
|
207
|
+
storefrontId: string;
|
|
208
|
+
environmentId: string;
|
|
209
|
+
limit?: number;
|
|
210
|
+
offset?: number;
|
|
211
|
+
}): Promise<{
|
|
212
|
+
deployments: MrtDeploymentView[];
|
|
213
|
+
count: number;
|
|
214
|
+
raw: unknown;
|
|
215
|
+
}>;
|
|
216
|
+
/** Result of a SCAPI deployment create. */
|
|
217
|
+
export interface CreateDeploymentScapiResult {
|
|
218
|
+
/** Deployment UUID assigned by SCAPI (used by `--wait`). */
|
|
219
|
+
deploymentId?: string;
|
|
220
|
+
/** Initial deployment status (typically `queued`). */
|
|
221
|
+
status?: string;
|
|
222
|
+
/** Bundle that was deployed. */
|
|
223
|
+
bundleId: number;
|
|
224
|
+
/** Raw, native SCAPI create response, surfaced verbatim under `--json`. */
|
|
225
|
+
raw: unknown;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Creates (queues) a deployment via the SCAPI MRT Deployments API.
|
|
229
|
+
*
|
|
230
|
+
* @throws {ScapiRequestError} carrying the HTTP status on a non-2xx response
|
|
231
|
+
* (including 409 Conflict — the caller decides whether that is fatal).
|
|
232
|
+
*/
|
|
233
|
+
export declare function createDeploymentScapi(conn: ScapiMrtConnection, params: {
|
|
234
|
+
storefrontId: string;
|
|
235
|
+
environmentId: string;
|
|
236
|
+
bundleId: number;
|
|
237
|
+
}): Promise<CreateDeploymentScapiResult>;
|
|
238
|
+
/**
|
|
239
|
+
* Fetches a single deployment by ID via the SCAPI MRT Deployments API.
|
|
240
|
+
*
|
|
241
|
+
* @throws {ScapiRequestError} carrying the HTTP status on a non-2xx response.
|
|
242
|
+
*/
|
|
243
|
+
export declare function getDeploymentScapi(conn: ScapiMrtConnection, params: {
|
|
244
|
+
storefrontId: string;
|
|
245
|
+
environmentId: string;
|
|
246
|
+
deploymentId: string;
|
|
247
|
+
}): Promise<DeploymentScapi>;
|
|
248
|
+
/** Progress info reported on each poll of {@link waitForDeploymentScapi}. */
|
|
249
|
+
export interface DeploymentScapiPollInfo {
|
|
250
|
+
/** Seconds elapsed since waiting started. */
|
|
251
|
+
elapsedSeconds: number;
|
|
252
|
+
/** Current raw deployment status. */
|
|
253
|
+
status: string;
|
|
254
|
+
/** Human-readable stage description, when present. */
|
|
255
|
+
description?: string;
|
|
256
|
+
/** Percentage complete, when present. */
|
|
257
|
+
percentage?: number | null;
|
|
258
|
+
}
|
|
259
|
+
/** Options for {@link waitForDeploymentScapi}. */
|
|
260
|
+
export interface WaitForDeploymentScapiOptions {
|
|
261
|
+
storefrontId: string;
|
|
262
|
+
environmentId: string;
|
|
263
|
+
/** Deployment UUID returned by {@link createDeploymentScapi}. */
|
|
264
|
+
deploymentId: string;
|
|
265
|
+
/**
|
|
266
|
+
* Polling interval in seconds.
|
|
267
|
+
* @default 30
|
|
268
|
+
*/
|
|
269
|
+
pollIntervalSeconds?: number;
|
|
270
|
+
/**
|
|
271
|
+
* Maximum time to wait in seconds (0 for no timeout).
|
|
272
|
+
* @default 600
|
|
273
|
+
*/
|
|
274
|
+
timeoutSeconds?: number;
|
|
275
|
+
/** Optional callback invoked on each poll with current status. */
|
|
276
|
+
onPoll?: (info: DeploymentScapiPollInfo) => void;
|
|
277
|
+
/** Custom sleep function for testing. */
|
|
278
|
+
sleep?: (ms: number) => Promise<void>;
|
|
279
|
+
/** Custom clock for testing. Defaults to Date.now. */
|
|
280
|
+
now?: () => number;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Polls a SCAPI deployment by ID until it reaches a terminal status
|
|
284
|
+
* (`finished` or `failed`) or the timeout elapses.
|
|
285
|
+
*
|
|
286
|
+
* Uses `getDeploymentById`, which shares the `sfcc.storefront.deployments` read
|
|
287
|
+
* scope with the list — a direct by-ID poll costs no extra scope over
|
|
288
|
+
* list-polling and avoids page-scanning ambiguity.
|
|
289
|
+
*
|
|
290
|
+
* @throws Error if the timeout is reached or the deployment fails.
|
|
291
|
+
*/
|
|
292
|
+
export declare function waitForDeploymentScapi(conn: ScapiMrtConnection, options: WaitForDeploymentScapiOptions): Promise<DeploymentScapi>;
|
|
293
|
+
/** Options for {@link listMrtDeployments}. */
|
|
294
|
+
export interface ListMrtDeploymentsBackendOptions {
|
|
295
|
+
/** Resolved `--mrt-backend` preference. */
|
|
296
|
+
preference: MrtBackendPreference;
|
|
297
|
+
/** SCAPI connection; when absent, `auto` uses legacy and `scapi` throws. */
|
|
298
|
+
scapiConnection?: ScapiMrtConnection;
|
|
299
|
+
/** Legacy API-key auth strategy. Optional; required only when the legacy backend actually runs. */
|
|
300
|
+
legacyAuth?: AuthStrategy;
|
|
301
|
+
/** Project slug (= SCAPI storefront ID). */
|
|
302
|
+
projectSlug: string;
|
|
303
|
+
/** Target/environment slug (= SCAPI environment ID). */
|
|
304
|
+
targetSlug: string;
|
|
305
|
+
/** Maximum results per page (forwarded to both backends; SCAPI caps at 200). */
|
|
306
|
+
limit?: number;
|
|
307
|
+
/** Pagination offset (forwarded to both backends). */
|
|
308
|
+
offset?: number;
|
|
309
|
+
/** Legacy MRT API origin. */
|
|
310
|
+
origin?: string;
|
|
311
|
+
/** Invoked when `auto` falls back from SCAPI to legacy. */
|
|
312
|
+
onFallback?: (reason: string) => void;
|
|
313
|
+
/** Invoked with the backend that serves the call (for `-D` debug). */
|
|
314
|
+
onResolve?: (backend: MrtBackend) => void;
|
|
315
|
+
}
|
|
316
|
+
/** Backend-neutral deployment list result. */
|
|
317
|
+
export interface MrtDeploymentsView {
|
|
318
|
+
/** Backend that served the list. */
|
|
319
|
+
backend: MrtBackend;
|
|
320
|
+
/** Total count reported by the backend. */
|
|
321
|
+
count: number;
|
|
322
|
+
/** Normalized deployment rows, consumed by the CLI table. */
|
|
323
|
+
deployments: MrtDeploymentView[];
|
|
324
|
+
/**
|
|
325
|
+
* The raw, backend-native list response, surfaced verbatim under `--json` so
|
|
326
|
+
* each backend keeps its original machine contract (legacy: the MRT Cloud API
|
|
327
|
+
* list shape — `count`/`next`/`previous`/`deployments`; SCAPI: the Storefront
|
|
328
|
+
* Deployments response — `data`/`total`). The normalized {@link deployments}
|
|
329
|
+
* feed the human table only.
|
|
330
|
+
*/
|
|
331
|
+
raw: unknown;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Lists deployment history, routing to the SCAPI or legacy backend per the
|
|
335
|
+
* given preference (with safe `auto` fallback). Returns normalized rows.
|
|
336
|
+
*/
|
|
337
|
+
export declare function listMrtDeployments(options: ListMrtDeploymentsBackendOptions): Promise<MrtDeploymentsView>;
|
|
338
|
+
/** Options for {@link deployMrtBundle}. */
|
|
339
|
+
export interface DeployMrtBundleBackendOptions {
|
|
340
|
+
/** Resolved `--mrt-backend` preference. */
|
|
341
|
+
preference: MrtBackendPreference;
|
|
342
|
+
/** SCAPI connection; when absent, `auto` uses legacy and `scapi` throws. */
|
|
343
|
+
scapiConnection?: ScapiMrtConnection;
|
|
344
|
+
/** Legacy API-key auth strategy. Optional; required only when the legacy backend actually runs. */
|
|
345
|
+
legacyAuth?: AuthStrategy;
|
|
346
|
+
/** Project slug (= SCAPI storefront ID). */
|
|
347
|
+
projectSlug: string;
|
|
348
|
+
/** Target/environment slug (= SCAPI environment ID). */
|
|
349
|
+
targetSlug: string;
|
|
350
|
+
/** Bundle ID to deploy. */
|
|
351
|
+
bundleId: number;
|
|
352
|
+
/** Legacy MRT API origin. */
|
|
353
|
+
origin?: string;
|
|
354
|
+
/** Invoked when `auto` falls back from SCAPI to legacy. */
|
|
355
|
+
onFallback?: (reason: string) => void;
|
|
356
|
+
/** Invoked with the backend that serves the call (for `-D` debug). */
|
|
357
|
+
onResolve?: (backend: MrtBackend) => void;
|
|
358
|
+
}
|
|
359
|
+
/** Backend-neutral deploy result. */
|
|
360
|
+
export interface MrtDeployResultView {
|
|
361
|
+
/** Backend that served the deploy (pins the `--wait` strategy). */
|
|
362
|
+
backend: MrtBackend;
|
|
363
|
+
/** Bundle that was deployed. */
|
|
364
|
+
bundleId: number;
|
|
365
|
+
/** SCAPI deployment UUID for `--wait` polling; undefined for legacy. */
|
|
366
|
+
deploymentId?: string;
|
|
367
|
+
/** Initial deployment status. */
|
|
368
|
+
status: string;
|
|
369
|
+
/** Non-blocking warnings returned by the backend. */
|
|
370
|
+
warnings?: string[];
|
|
371
|
+
/**
|
|
372
|
+
* The raw, backend-native create response, surfaced verbatim under `--json`
|
|
373
|
+
* (legacy: the MRT Cloud API deploy result; SCAPI: the Storefront Deployments
|
|
374
|
+
* create response). The typed fields above drive `--wait` and human output.
|
|
375
|
+
*/
|
|
376
|
+
raw: unknown;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Deploys an existing bundle, routing to the SCAPI or legacy backend per the
|
|
380
|
+
* given preference (with safe `auto` fallback). The returned `backend` pins
|
|
381
|
+
* which `--wait` strategy the caller should use.
|
|
382
|
+
*/
|
|
383
|
+
export declare function deployMrtBundle(options: DeployMrtBundleBackendOptions): Promise<MrtDeployResultView>;
|