@salesforce/b2c-tooling-sdk 2.1.0 → 2.3.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.
Files changed (105) hide show
  1. package/data/content-schemas/databindingcontext.json +1 -1
  2. package/data/guides/enrichment.json +2887 -1480
  3. package/data/guides/index.json +3846 -1870
  4. package/data/help/index.json +1537 -1457
  5. package/data/help-kb/enrichment.json +6122 -0
  6. package/data/help-kb/index.json +8496 -0
  7. package/data/job-steps/index.json +1 -1
  8. package/data/job-steps/job-steps.json +1 -1
  9. package/data/script-api/index.json +137 -22
  10. package/data/tooling/index.json +22 -4
  11. package/data/xsd/channels.xsd +47 -0
  12. package/data/xsd/index.json +6 -2
  13. package/data/xsd/library.xsd +31 -0
  14. package/data/xsd/order.xsd +317 -0
  15. package/data/xsd/search2.xsd +1 -1
  16. package/data/xsd/sort.xsd +17 -0
  17. package/data/xsd/storefronts.xsd +34 -48
  18. package/dist/esm/auth/client-credentials.d.ts +43 -0
  19. package/dist/esm/auth/client-credentials.js +55 -0
  20. package/dist/esm/auth/client-credentials.js.map +1 -1
  21. package/dist/esm/auth/index.d.ts +2 -1
  22. package/dist/esm/auth/index.js +1 -1
  23. package/dist/esm/auth/index.js.map +1 -1
  24. package/dist/esm/auth/oauth.d.ts +3 -0
  25. package/dist/esm/auth/oauth.js +3 -3
  26. package/dist/esm/auth/oauth.js.map +1 -1
  27. package/dist/esm/auth/resolve.d.ts +2 -0
  28. package/dist/esm/auth/resolve.js +3 -2
  29. package/dist/esm/auth/resolve.js.map +1 -1
  30. package/dist/esm/auth/types.d.ts +5 -0
  31. package/dist/esm/auth/types.js +0 -5
  32. package/dist/esm/auth/types.js.map +1 -1
  33. package/dist/esm/cli/config.js +1 -0
  34. package/dist/esm/cli/config.js.map +1 -1
  35. package/dist/esm/cli/instance-command.d.ts +1 -0
  36. package/dist/esm/cli/mrt-command.d.ts +1 -0
  37. package/dist/esm/cli/oauth-command.d.ts +1 -0
  38. package/dist/esm/cli/oauth-command.js +8 -0
  39. package/dist/esm/cli/oauth-command.js.map +1 -1
  40. package/dist/esm/cli/ods-command.d.ts +1 -0
  41. package/dist/esm/cli/webdav-command.d.ts +1 -0
  42. package/dist/esm/clients/middleware-registry.d.ts +8 -36
  43. package/dist/esm/clients/middleware-registry.js +62 -1
  44. package/dist/esm/clients/middleware-registry.js.map +1 -1
  45. package/dist/esm/clients/slas-shopper.generated.d.ts +2 -1
  46. package/dist/esm/config/dw-json.d.ts +31 -0
  47. package/dist/esm/config/dw-json.js +47 -1
  48. package/dist/esm/config/dw-json.js.map +1 -1
  49. package/dist/esm/config/index.d.ts +2 -2
  50. package/dist/esm/config/index.js +1 -1
  51. package/dist/esm/config/index.js.map +1 -1
  52. package/dist/esm/config/mapping.js +7 -0
  53. package/dist/esm/config/mapping.js.map +1 -1
  54. package/dist/esm/config/resolved-config.js +1 -0
  55. package/dist/esm/config/resolved-config.js.map +1 -1
  56. package/dist/esm/config/sources/env-source.js +3 -0
  57. package/dist/esm/config/sources/env-source.js.map +1 -1
  58. package/dist/esm/config/types.d.ts +3 -0
  59. package/dist/esm/docs/search.js +4 -1
  60. package/dist/esm/docs/search.js.map +1 -1
  61. package/dist/esm/docs/types.d.ts +6 -1
  62. package/dist/esm/docs/types.js +1 -0
  63. package/dist/esm/docs/types.js.map +1 -1
  64. package/dist/esm/instance/index.js +1 -0
  65. package/dist/esm/instance/index.js.map +1 -1
  66. package/dist/esm/openshell/apply.d.ts +90 -0
  67. package/dist/esm/openshell/apply.js +225 -0
  68. package/dist/esm/openshell/apply.js.map +1 -0
  69. package/dist/esm/openshell/index.d.ts +30 -0
  70. package/dist/esm/openshell/index.js +34 -0
  71. package/dist/esm/openshell/index.js.map +1 -0
  72. package/dist/esm/openshell/setup.d.ts +94 -0
  73. package/dist/esm/openshell/setup.js +307 -0
  74. package/dist/esm/openshell/setup.js.map +1 -0
  75. package/dist/esm/operations/mtls/index.d.ts +135 -0
  76. package/dist/esm/operations/mtls/index.js +270 -0
  77. package/dist/esm/operations/mtls/index.js.map +1 -0
  78. package/dist/esm/scapi/auth-primitives.js +1 -0
  79. package/dist/esm/scapi/auth-primitives.js.map +1 -1
  80. package/dist/esm/scapi/authentication.d.ts +19 -0
  81. package/dist/esm/scapi/authentication.js +65 -6
  82. package/dist/esm/scapi/authentication.js.map +1 -1
  83. package/dist/esm/scapi/catalog.d.ts +2 -0
  84. package/dist/esm/scapi/catalog.js.map +1 -1
  85. package/dist/esm/scapi/index.d.ts +7 -3
  86. package/dist/esm/scapi/index.js +4 -2
  87. package/dist/esm/scapi/index.js.map +1 -1
  88. package/dist/esm/scapi/live.d.ts +52 -0
  89. package/dist/esm/scapi/live.js +142 -0
  90. package/dist/esm/scapi/live.js.map +1 -0
  91. package/dist/esm/scapi/request.d.ts +6 -0
  92. package/dist/esm/scapi/request.js +83 -61
  93. package/dist/esm/scapi/request.js.map +1 -1
  94. package/dist/esm/scapi/shopper.d.ts +31 -0
  95. package/dist/esm/scapi/shopper.js +79 -0
  96. package/dist/esm/scapi/shopper.js.map +1 -0
  97. package/dist/esm/scapi/worker-source.js +1 -1
  98. package/dist/esm/slas/index.d.ts +1 -1
  99. package/dist/esm/slas/index.js +1 -1
  100. package/dist/esm/slas/index.js.map +1 -1
  101. package/dist/esm/slas/token.d.ts +10 -0
  102. package/dist/esm/slas/token.js +27 -0
  103. package/dist/esm/slas/token.js.map +1 -1
  104. package/package.json +11 -1
  105. package/specs/slas-shopper-v1.yaml +2 -1
@@ -0,0 +1,142 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ const SCHEMAS_API = 'dx/scapi-schemas/v1';
7
+ const IDENTITY = /^[a-z0-9-]+$/i;
8
+ /** Identify a tenant's live contracts; schemas differ by custom attributes and custom APIs. */
9
+ export function scapiTenantKey(shortCode, organizationId) {
10
+ return `${shortCode.toLowerCase()}/${organizationId.toLowerCase()}`;
11
+ }
12
+ /** Validate a Schemas API response and describe it as a catalog document. */
13
+ export function createLiveScapiDocument(identity, schema) {
14
+ const { apiFamily, apiName, apiVersion } = identity;
15
+ if (![apiFamily, apiName, apiVersion].every((part) => typeof part === 'string' && IDENTITY.test(part)))
16
+ throw new Error('SCAPI_SCHEMA_INVALID: invalid schema identity.');
17
+ const document = schema;
18
+ if (!document ||
19
+ typeof document !== 'object' ||
20
+ !/^3\./.test(document.openapi) ||
21
+ !document.paths ||
22
+ typeof document.paths !== 'object' ||
23
+ Array.isArray(document.paths))
24
+ throw new Error('SCAPI_SCHEMA_INVALID: Expected an OpenAPI 3 contract with paths from the Schemas API.');
25
+ const id = `${apiFamily}/${apiName}/${apiVersion}`;
26
+ return {
27
+ entry: {
28
+ id,
29
+ apiFamily,
30
+ apiName,
31
+ apiVersion,
32
+ schemaVersion: document.info?.version ?? apiVersion,
33
+ status: identity.status ?? 'live',
34
+ file: '',
35
+ source: `https://{shortCode}.api.commercecloud.salesforce.com/${SCHEMAS_API}/organizations/{organizationId}/schemas/${id}`,
36
+ origin: 'live',
37
+ },
38
+ schema: document,
39
+ };
40
+ }
41
+ /** Bundled contracts with live contracts replacing any with the same id. */
42
+ export function mergeScapiSchemas(bundled, live) {
43
+ const byId = new Map(bundled.map((document) => [document.entry.id, document]));
44
+ for (const document of live)
45
+ byId.set(document.entry.id, document);
46
+ return [...byId.values()];
47
+ }
48
+ /**
49
+ * Per-tenant cache of contracts from the SCAPI Schemas API, including tenant custom
50
+ * properties and custom APIs. Discovery loads it; execution reuses whatever it holds.
51
+ */
52
+ export class ScapiLiveSchemaCache {
53
+ concurrency;
54
+ documents = new Map();
55
+ listings = new Map();
56
+ ttlMs;
57
+ constructor(options = {}) {
58
+ this.ttlMs = options.ttlMs ?? 30 * 60_000;
59
+ this.concurrency = Math.max(1, options.concurrency ?? 4);
60
+ }
61
+ /** All cached live contracts for a tenant, regardless of age. Never fetches. */
62
+ get(tenant) {
63
+ return [...(this.documents.get(tenant)?.values() ?? [])].map((cached) => cached.value);
64
+ }
65
+ /** Fetch the tenant's listing and missing or expired contracts, then return the selected set. */
66
+ async load(tenant, client, organizationId, options = {}) {
67
+ const listing = await this.list(tenant, client, organizationId, options);
68
+ const selected = listing.filter((item) => !options.api || `${item.apiFamily}/${item.apiName}/${item.apiVersion}` === options.api);
69
+ const cached = this.documents.get(tenant) ?? new Map();
70
+ this.documents.set(tenant, cached);
71
+ const now = Date.now();
72
+ const documents = [];
73
+ const failures = [];
74
+ const pending = selected.filter((item) => {
75
+ const hit = cached.get(`${item.apiFamily}/${item.apiName}/${item.apiVersion}`);
76
+ if (!options.refresh && hit && now - hit.at < this.ttlMs) {
77
+ documents.push(hit.value);
78
+ return false;
79
+ }
80
+ return true;
81
+ });
82
+ const fetchOne = async (item) => {
83
+ const api = `${item.apiFamily}/${item.apiName}/${item.apiVersion}`;
84
+ try {
85
+ options.signal?.throwIfAborted();
86
+ const { data, error, response } = await client.GET('/organizations/{organizationId}/schemas/{apiFamily}/{apiName}/{apiVersion}', {
87
+ params: {
88
+ path: { organizationId, apiFamily: item.apiFamily, apiName: item.apiName, apiVersion: item.apiVersion },
89
+ query: { expand: 'custom_properties' },
90
+ },
91
+ signal: options.signal,
92
+ });
93
+ if (error)
94
+ throw new Error(`HTTP ${response.status}`);
95
+ const document = createLiveScapiDocument({ apiFamily: item.apiFamily, apiName: item.apiName, apiVersion: item.apiVersion, status: item.status }, data);
96
+ cached.set(api, { value: document, at: Date.now() });
97
+ documents.push(document);
98
+ }
99
+ catch (error) {
100
+ if (options.signal?.aborted)
101
+ throw error;
102
+ // A failed refetch keeps the previous contract available.
103
+ const previous = cached.get(api);
104
+ if (previous)
105
+ documents.push(previous.value);
106
+ failures.push({ api, error: error instanceof Error ? error.message : String(error) });
107
+ }
108
+ };
109
+ const queue = [...pending];
110
+ await Promise.all(Array.from({ length: Math.min(this.concurrency, queue.length) }, async () => {
111
+ while (queue.length)
112
+ await fetchOne(queue.shift());
113
+ }));
114
+ documents.sort((a, b) => a.entry.id.localeCompare(b.entry.id, 'en'));
115
+ return { documents, failures };
116
+ }
117
+ /** Record a contract fetched elsewhere (for example by scapi_schemas_list or inside an execution). */
118
+ put(tenant, document) {
119
+ const cached = this.documents.get(tenant) ?? new Map();
120
+ cached.set(document.entry.id, { value: document, at: Date.now() });
121
+ this.documents.set(tenant, cached);
122
+ }
123
+ async list(tenant, client, organizationId, options) {
124
+ const hit = this.listings.get(tenant);
125
+ if (!options.refresh && hit && Date.now() - hit.at < this.ttlMs)
126
+ return hit.value;
127
+ const { data, error, response } = await client.GET('/organizations/{organizationId}/schemas', {
128
+ params: { path: { organizationId } },
129
+ signal: options.signal,
130
+ });
131
+ if (error)
132
+ throw new Error(`SCAPI_LIVE_SCHEMAS_UNAVAILABLE: Schemas API listing failed (HTTP ${response.status}). ` +
133
+ 'The API client needs sfcc.scapi-schemas; omit schemas:"live" to search bundled contracts offline.');
134
+ const items = (data?.data ?? []).filter((item) => item.apiFamily &&
135
+ item.apiName &&
136
+ item.apiVersion &&
137
+ [item.apiFamily, item.apiName, item.apiVersion].every((part) => IDENTITY.test(part)));
138
+ this.listings.set(tenant, { value: items, at: Date.now() });
139
+ return items;
140
+ }
141
+ }
142
+ //# sourceMappingURL=live.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/scapi/live.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { AuthStrategy } from '../auth/types.js';
2
2
  import { type MiddlewareRegistry } from '../clients/middleware-registry.js';
3
3
  import { type SafetyConfig } from '../safety/index.js';
4
4
  import { type ScapiSchemaDocument } from './catalog.js';
5
+ import type { ScapiShopperAuth } from './shopper.js';
5
6
  /** Exact, resolved request awaiting approval. Credentials are never included. */
6
7
  export interface ScapiConfirmation {
7
8
  operationId: string;
@@ -15,7 +16,10 @@ export interface ScapiRequestOptions {
15
16
  shortCode: string;
16
17
  tenantId: string;
17
18
  siteId?: string;
19
+ /** Account Manager auth for operations declaring AmOAuth2. */
18
20
  auth: AuthStrategy | (() => AuthStrategy);
21
+ /** Guest shopper auth for operations declaring ShopperToken. Omit to reject Shopper operations. */
22
+ shopperAuth?: ScapiShopperAuth;
19
23
  safety: SafetyConfig;
20
24
  documents: ScapiSchemaDocument[];
21
25
  middlewareRegistry?: MiddlewareRegistry;
@@ -23,6 +27,8 @@ export interface ScapiRequestOptions {
23
27
  confirm?: (request: ScapiConfirmation, signal: AbortSignal) => Promise<void>;
24
28
  /** Called immediately before network dispatch, for tracking potentially applied writes. */
25
29
  onDispatch?: () => void;
30
+ /** Called with each contract fetched from the Schemas API; `customProperties` reports expand=custom_properties. */
31
+ onSchema?: (document: ScapiSchemaDocument, customProperties: boolean) => void;
26
32
  }
27
33
  /** Build one execution's SCAPI request helper. Auth, policy, and responses stay in the host. */
28
34
  export declare function createScapiRequest(options: ScapiRequestOptions): (input: unknown, signal: AbortSignal) => Promise<unknown>;
@@ -11,7 +11,8 @@ import { globalMiddlewareRegistry } from '../clients/middleware-registry.js';
11
11
  import { SafetyGuard, extractJobIdFromPath } from '../safety/index.js';
12
12
  import { getLogger } from '../logging/logger.js';
13
13
  import { findScapiOperation, resolveScapiReference } from './catalog.js';
14
- import { scapiAuthError, scapiAuthResponse, unsupportedScapiAuth, unsupportedScapiTransfer, isScapiTextMediaType, } from './authentication.js';
14
+ import { createLiveScapiDocument } from './live.js';
15
+ import { scapiAuthError, scapiAuthResponse, scapiShopperAuthError, selectScapiAuth, shopperTokenScopes, unsupportedScapiAuth, unsupportedScapiTransfer, isScapiTextMediaType, } from './authentication.js';
15
16
  /** Build one execution's SCAPI request helper. Auth, policy, and responses stay in the host. */
16
17
  export function createScapiRequest(options) {
17
18
  if (!/^[a-z0-9-]+$/i.test(options.shortCode))
@@ -44,18 +45,21 @@ export function createScapiRequest(options) {
44
45
  const [, , apiName, apiVersion] = path.split('/');
45
46
  const id = `custom/${apiName}/${apiVersion}`;
46
47
  if (!documents.some((document) => document.entry.id === id))
47
- throw new Error(`SCAPI_CUSTOM_SCHEMA_REQUIRED: Fetch /dx/scapi-schemas/v1/organizations/{organizationId}/schemas/${id} ` +
48
- 'with scapi.request in this execution before calling its endpoints. Inspect the contract and declared authentication.');
48
+ throw new Error(`SCAPI_CUSTOM_SCHEMA_REQUIRED: Search it with scapi_search schemas:"live", or fetch ` +
49
+ `/dx/scapi-schemas/v1/organizations/{organizationId}/schemas/${id} with scapi.request in this execution, ` +
50
+ 'before calling its endpoints. Inspect the contract and declared authentication.');
49
51
  }
50
52
  const matched = findScapiOperation(documents, method, path);
51
53
  if (matched.parameters.organizationId && matched.parameters.organizationId !== organizationId)
52
54
  throw new Error('SCAPI target differs from resolved organizationId.');
53
55
  const { schema } = matched.document;
54
56
  const { operation } = matched;
55
- const security = operation.security ?? schema.security ?? [];
56
- const admin = security.find((requirement) => Array.isArray(requirement.AmOAuth2) && Object.keys(requirement).length === 1);
57
- if (!admin)
57
+ const selected = selectScapiAuth(matched.document, operation);
58
+ if (!selected)
58
59
  throw unsupportedScapiAuth(matched.document, operation);
60
+ const shopper = selected.type === 'shopper';
61
+ if (shopper && !options.shopperAuth)
62
+ throw new Error(`SCAPI_SHOPPER_AUTH_UNAVAILABLE: ${operation.operationId} (${matched.document.entry.id}) is a Shopper API and this host provides Admin authentication only.`);
59
63
  const transferLimit = unsupportedScapiTransfer(matched.document, operation);
60
64
  if (transferLimit)
61
65
  throw new Error(`SCAPI_TRANSFER_UNSUPPORTED: ${operation.operationId}. ${transferLimit} Use a file-capable HTTP client.`);
@@ -87,17 +91,22 @@ export function createScapiRequest(options) {
87
91
  if (Buffer.byteLength(JSON.stringify(args.body)) > 1_048_576)
88
92
  throw new Error('SCAPI_REQUEST_TOO_LARGE');
89
93
  }
90
- const scopes = admin.AmOAuth2;
94
+ const { scopes } = selected;
91
95
  // SCAPI standard contracts list ro/rw domain alternatives together; reuse SDK scope negotiation.
92
- const alternatives = scopes.length === 2 && scopes.some((scope) => scopes.includes(`${scope}.rw`));
96
+ const alternatives = !shopper && scopes.length === 2 && scopes.some((scope) => scopes.includes(`${scope}.rw`));
93
97
  const candidates = alternatives
94
98
  ? [...scopes].sort((a, b) => Number(a.endsWith('.rw')) - Number(b.endsWith('.rw'))).map((scope) => [scope])
95
99
  : [scopes];
100
+ // A shopper token is issued for one site (SLAS channel).
101
+ const shopperSiteId = typeof queryValues.siteId === 'string' ? queryValues.siteId : options.siteId;
102
+ if (shopper && !shopperSiteId)
103
+ throw new Error(`SCAPI_ARGUMENT_INVALID: ${operation.operationId} is a Shopper API; set query.siteId or configure siteId for the selected project.`);
96
104
  const authContext = {
97
105
  operationId: operation.operationId,
98
106
  api: matched.document.entry.id,
99
107
  candidates,
100
108
  tenantScope: buildTenantScope(options.tenantId),
109
+ ...(shopper ? { shopper: { siteId: shopperSiteId } } : {}),
101
110
  };
102
111
  const querySerializer = (values) => Object.entries(values)
103
112
  .map(([name, value]) => {
@@ -140,31 +149,49 @@ export function createScapiRequest(options) {
140
149
  (request.method !== method || request.url !== approvedUrl || (await request.clone().text()) !== approvedBody))
141
150
  throw new Error('SCAPI_APPROVAL_MISMATCH: request changed after approval; no request sent.');
142
151
  };
143
- let baseAuth;
144
- try {
145
- baseAuth = withScopes(typeof options.auth === 'function' ? options.auth() : options.auth, [
146
- authContext.tenantScope,
147
- ]);
148
- }
149
- catch (error) {
150
- throw scapiAuthError(error, authContext);
151
- }
152
- const auth = {
153
- fetch: baseAuth.fetch.bind(baseAuth),
154
- getAuthorizationHeader: async () => {
155
- try {
156
- if (baseAuth.getAccessTokenForCascade)
157
- return `Bearer ${await baseAuth.getAccessTokenForCascade(candidates)}`;
158
- const scoped = withScopes(baseAuth, scopes);
159
- if (!scoped.getAuthorizationHeader)
160
- throw new Error('SCAPI_ADMIN_AUTH_UNSUPPORTED: The configured auth strategy cannot provide an authorization header. Use Account Manager OAuth credentials or a supported JWT strategy.');
161
- return await scoped.getAuthorizationHeader();
162
- }
163
- catch (error) {
164
- throw scapiAuthError(error, authContext);
165
- }
166
- },
152
+ const adminAuth = () => {
153
+ let baseAuth;
154
+ try {
155
+ baseAuth = withScopes(typeof options.auth === 'function' ? options.auth() : options.auth, [
156
+ authContext.tenantScope,
157
+ ]);
158
+ }
159
+ catch (error) {
160
+ throw scapiAuthError(error, authContext);
161
+ }
162
+ return {
163
+ fetch: baseAuth.fetch.bind(baseAuth),
164
+ getAuthorizationHeader: async () => {
165
+ try {
166
+ if (baseAuth.getAccessTokenForCascade)
167
+ return `Bearer ${await baseAuth.getAccessTokenForCascade(candidates)}`;
168
+ const scoped = withScopes(baseAuth, scopes);
169
+ if (!scoped.getAuthorizationHeader)
170
+ throw new Error('SCAPI_ADMIN_AUTH_UNSUPPORTED: The configured auth strategy cannot provide an authorization header. Use Account Manager OAuth credentials or a supported JWT strategy.');
171
+ return await scoped.getAuthorizationHeader();
172
+ }
173
+ catch (error) {
174
+ throw scapiAuthError(error, authContext);
175
+ }
176
+ },
177
+ };
167
178
  };
179
+ const auth = shopper
180
+ ? {
181
+ fetch,
182
+ getAuthorizationHeader: async () => {
183
+ try {
184
+ const token = await options.shopperAuth.getAccessToken(shopperSiteId, signal);
185
+ authContext.shopper.tokenScopes = shopperTokenScopes(token);
186
+ return `Bearer ${token}`;
187
+ }
188
+ catch (error) {
189
+ signal.throwIfAborted();
190
+ throw scapiShopperAuthError(error, authContext);
191
+ }
192
+ },
193
+ }
194
+ : adminAuth();
168
195
  const client = createClient({
169
196
  baseUrl: origin,
170
197
  headers: { Accept: 'application/json, text/*' },
@@ -234,38 +261,33 @@ export function createScapiRequest(options) {
234
261
  }
235
262
  }
236
263
  const diagnostic = scapiAuthResponse(result.response.status, authContext);
237
- // Only authenticated live schema responses extend this execution's custom API catalog.
264
+ if (shopper && result.response.status === 401)
265
+ options.shopperAuth?.invalidate(shopperSiteId);
266
+ // Authenticated live schema responses extend this execution's catalog, replacing bundled contracts.
238
267
  if (result.response.ok &&
239
268
  method === 'GET' &&
240
269
  matched.document.entry.id === 'dx/scapi-schemas/v1' &&
241
- matched.parameters.apiFamily === 'custom') {
242
- const schema = data;
243
- if (!schema ||
244
- !/^3\./.test(schema.openapi) ||
245
- !schema.paths ||
246
- typeof schema.paths !== 'object' ||
247
- Array.isArray(schema.paths))
248
- throw new Error('SCAPI_CUSTOM_SCHEMA_INVALID: Expected an OpenAPI 3 contract with paths from the Schemas API.');
249
- const { apiName, apiVersion } = matched.parameters;
250
- const id = `custom/${apiName}/${apiVersion}`;
251
- const document = {
252
- entry: {
253
- id,
254
- apiFamily: 'custom',
255
- apiName,
256
- apiVersion,
257
- schemaVersion: schema.info?.version ?? apiVersion,
258
- status: 'live',
259
- file: '',
260
- source: url,
261
- },
262
- schema,
263
- };
264
- const previous = documents.findIndex((item) => item.entry.id === id);
265
- if (previous < 0)
266
- documents.push(document);
267
- else
268
- documents[previous] = document;
270
+ matched.parameters.apiFamily &&
271
+ matched.parameters.apiName &&
272
+ matched.parameters.apiVersion) {
273
+ const { apiFamily, apiName, apiVersion } = matched.parameters;
274
+ let document;
275
+ try {
276
+ document = createLiveScapiDocument({ apiFamily, apiName, apiVersion }, data);
277
+ }
278
+ catch (error) {
279
+ // Custom endpoints are unreachable without their contract; standard reads remain plain data.
280
+ if (apiFamily === 'custom')
281
+ throw error;
282
+ }
283
+ if (document) {
284
+ const previous = documents.findIndex((item) => item.entry.id === document.entry.id);
285
+ if (previous < 0)
286
+ documents.push(document);
287
+ else
288
+ documents[previous] = document;
289
+ options.onSchema?.(document, String(queryValues.expand ?? '').includes('custom_properties'));
290
+ }
269
291
  }
270
292
  return { status: result.response.status, ok: result.response.ok, data, ...(diagnostic ? { diagnostic } : {}) };
271
293
  };
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/scapi/request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/scapi/request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { MiddlewareRegistry } from '../clients/middleware-registry.js';
2
+ export interface ScapiShopperConfig {
3
+ shortCode: string;
4
+ tenantId: string;
5
+ slasClientId?: string;
6
+ slasClientSecret?: string;
7
+ /** Redirect URI registered on a public SLAS client. Defaults to `http://localhost:3000/callback`. */
8
+ redirectUri?: string;
9
+ middlewareRegistry?: MiddlewareRegistry;
10
+ }
11
+ /** Host-held shopper access; the token never reaches executed code. */
12
+ export interface ScapiShopperAuth {
13
+ /** Bearer token for a guest shopper on the site. */
14
+ getAccessToken(siteId: string, signal: AbortSignal): Promise<string>;
15
+ /** Drop a rejected token so the next request starts a new session. */
16
+ invalidate(siteId: string): void;
17
+ }
18
+ /**
19
+ * Guest shopper sessions per tenant, SLAS client, and site. A session outlives
20
+ * individual executions so baskets and other shopper state carry across them;
21
+ * expired tokens are refreshed, keeping the same shopper.
22
+ */
23
+ export declare class ScapiShopperSessions {
24
+ private readonly pending;
25
+ private readonly sessions;
26
+ /** Shopper auth bound to one configuration. */
27
+ for(config: ScapiShopperConfig): ScapiShopperAuth;
28
+ /** Forget all sessions; subsequent requests start as new guests. */
29
+ reset(): void;
30
+ private session;
31
+ }
@@ -0,0 +1,79 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { toOrganizationId } from '../clients/custom-apis.js';
7
+ import { getGuestToken, refreshShopperToken } from '../slas/token.js';
8
+ /** Refresh this long before expiry so a request does not race the token's lifetime. */
9
+ const EXPIRY_MARGIN_MS = 60_000;
10
+ /**
11
+ * Guest shopper sessions per tenant, SLAS client, and site. A session outlives
12
+ * individual executions so baskets and other shopper state carry across them;
13
+ * expired tokens are refreshed, keeping the same shopper.
14
+ */
15
+ export class ScapiShopperSessions {
16
+ pending = new Map();
17
+ sessions = new Map();
18
+ /** Shopper auth bound to one configuration. */
19
+ for(config) {
20
+ return {
21
+ getAccessToken: async (siteId, signal) => (await this.session(config, siteId, signal)).token.access_token,
22
+ invalidate: (siteId) => {
23
+ if (config.slasClientId)
24
+ this.sessions.delete(sessionKey(config, siteId));
25
+ },
26
+ };
27
+ }
28
+ /** Forget all sessions; subsequent requests start as new guests. */
29
+ reset() {
30
+ this.sessions.clear();
31
+ this.pending.clear();
32
+ }
33
+ async session(config, siteId, signal) {
34
+ if (!config.slasClientId)
35
+ throw new Error('SCAPI_SHOPPER_CONFIG_MISSING: Shopper APIs require slasClientId (and slasClientSecret for private clients). Use config_inspect; Storefront Next projects provide these through .env.');
36
+ const key = sessionKey(config, siteId);
37
+ const current = this.sessions.get(key);
38
+ if (current && current.expiresAt - EXPIRY_MARGIN_MS > Date.now())
39
+ return current;
40
+ let pending = this.pending.get(key);
41
+ if (!pending) {
42
+ const tokenConfig = {
43
+ shortCode: config.shortCode,
44
+ organizationId: toOrganizationId(config.tenantId),
45
+ slasClientId: config.slasClientId,
46
+ slasClientSecret: config.slasClientSecret,
47
+ siteId,
48
+ redirectUri: config.redirectUri ?? 'http://localhost:3000/callback',
49
+ middlewareRegistry: config.middlewareRegistry,
50
+ };
51
+ pending = (async () => {
52
+ let token;
53
+ if (current?.token.refresh_token)
54
+ token = await refreshShopperToken(tokenConfig, current.token.refresh_token).catch(() => undefined);
55
+ token ??= await getGuestToken(tokenConfig);
56
+ const session = { token, expiresAt: Date.now() + token.expires_in * 1000 };
57
+ this.sessions.set(key, session);
58
+ return session;
59
+ })().finally(() => this.pending.delete(key));
60
+ this.pending.set(key, pending);
61
+ }
62
+ // A shared token request is not tied to the first caller's signal.
63
+ return await abortable(pending, signal);
64
+ }
65
+ }
66
+ function sessionKey(config, siteId) {
67
+ return [config.shortCode, toOrganizationId(config.tenantId), config.slasClientId, siteId]
68
+ .map((part) => String(part).toLowerCase())
69
+ .join('/');
70
+ }
71
+ function abortable(promise, signal) {
72
+ signal.throwIfAborted();
73
+ return new Promise((resolve, reject) => {
74
+ const onAbort = () => reject(signal.reason);
75
+ signal.addEventListener('abort', onAbort, { once: true });
76
+ promise.then(resolve, reject).finally(() => signal.removeEventListener('abort', onAbort));
77
+ });
78
+ }
79
+ //# sourceMappingURL=shopper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopper.js","sourceRoot":"","sources":["../../../src/scapi/shopper.ts"],"names":[],"mappings":"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"}
@@ -50,7 +50,7 @@ process.on('message', async message => {
50
50
  parameters: [...(item.parameters || []), ...(item[method].parameters || [])],
51
51
  security: item[method].security ?? schema.security ?? []}, entry.id);
52
52
  }
53
- spec.paths['/' + entry.id + path] = methods;
53
+ spec.paths['/' + entry.id + (entry.apiFamily === 'custom' ? '/organizations/{organizationId}' : '') + path] = methods;
54
54
  }
55
55
  }
56
56
  const scapi = {request: options => new Promise((resolve, reject) => {
@@ -9,4 +9,4 @@
9
9
  */
10
10
  export type { SlasTokenConfig, SlasTokenResponse, SlasRegisteredLoginConfig } from './types.js';
11
11
  export { generateCodeChallenge, generateCodeVerifier } from './pkce.js';
12
- export { getGuestToken, getRegisteredToken } from './token.js';
12
+ export { getGuestToken, getRegisteredToken, refreshShopperToken } from './token.js';
@@ -4,5 +4,5 @@
4
4
  * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
6
  export { generateCodeChallenge, generateCodeVerifier } from './pkce.js';
7
- export { getGuestToken, getRegisteredToken } from './token.js';
7
+ export { getGuestToken, getRegisteredToken, refreshShopperToken } from './token.js';
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/slas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,EAAC,qBAAqB,EAAE,oBAAoB,EAAC,MAAM,WAAW,CAAC;AACtE,OAAO,EAAC,aAAa,EAAE,kBAAkB,EAAC,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/slas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,EAAC,qBAAqB,EAAE,oBAAoB,EAAC,MAAM,WAAW,CAAC;AACtE,OAAO,EAAC,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAC,MAAM,YAAY,CAAC"}
@@ -29,3 +29,13 @@ export declare function getGuestToken(config: SlasTokenConfig): Promise<SlasToke
29
29
  * @returns The token response including access_token and refresh_token
30
30
  */
31
31
  export declare function getRegisteredToken(config: SlasRegisteredLoginConfig): Promise<SlasTokenResponse>;
32
+ /**
33
+ * Refreshes a shopper access token, keeping the shopper's session (usid).
34
+ *
35
+ * Private clients authenticate with HTTP Basic using the client secret.
36
+ *
37
+ * @param config - SLAS token configuration
38
+ * @param refreshToken - Refresh token from a previous token response
39
+ * @returns The token response including a new access_token and refresh_token
40
+ */
41
+ export declare function refreshShopperToken(config: SlasTokenConfig, refreshToken: string): Promise<SlasTokenResponse>;