@salesforce/storefront-next-runtime 1.0.0-alpha.0 → 1.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/ComponentContext.js +199 -4
  2. package/dist/ComponentContext.js.map +1 -1
  3. package/dist/DesignComponent.js +2 -2
  4. package/dist/DesignRegion.js +2 -2
  5. package/dist/RegionContext.js +9 -0
  6. package/dist/RegionContext.js.map +1 -0
  7. package/dist/component.types.d.ts +1 -1
  8. package/dist/config.d.ts +6 -5
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +2 -1
  11. package/dist/config.js.map +1 -1
  12. package/dist/data-store.d.ts +3 -3
  13. package/dist/data-store.d.ts.map +1 -1
  14. package/dist/defaults.d.ts +106 -0
  15. package/dist/defaults.d.ts.map +1 -0
  16. package/dist/defaults.js +67 -0
  17. package/dist/defaults.js.map +1 -0
  18. package/dist/design-data.d.ts +10 -332
  19. package/dist/design-data.d.ts.map +1 -1
  20. package/dist/design-data.js +67 -23
  21. package/dist/design-data.js.map +1 -1
  22. package/dist/design-react-core.d.ts +5 -15
  23. package/dist/design-react-core.d.ts.map +1 -1
  24. package/dist/design-react-core.js +2 -2
  25. package/dist/design-react.d.ts +2 -2
  26. package/dist/design.d.ts +2 -2
  27. package/dist/scapi.d.ts.map +1 -1
  28. package/dist/security-react.d.ts +34 -0
  29. package/dist/security-react.d.ts.map +1 -0
  30. package/dist/security-react.js +21 -0
  31. package/dist/security-react.js.map +1 -0
  32. package/dist/security.d.ts +61 -0
  33. package/dist/security.d.ts.map +1 -0
  34. package/dist/security.js +304 -0
  35. package/dist/security.js.map +1 -0
  36. package/dist/site-context.d.ts +2 -2
  37. package/dist/types3.d.ts +1 -35
  38. package/dist/types3.d.ts.map +1 -1
  39. package/package.json +15 -2
  40. package/dist/DesignFrame.js +0 -204
  41. package/dist/DesignFrame.js.map +0 -1
@@ -0,0 +1,106 @@
1
+ //#region src/security/types.d.ts
2
+ /**
3
+ * Copyright 2026 Salesforce, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * Security response headers configuration. Plumb into the template's
19
+ * `Config` via `AppConfig.security`; the SDK fills in defaults for any
20
+ * field omitted.
21
+ *
22
+ * Setting any directive on `csp.directives` fully replaces the SDK
23
+ * default for that directive — copy from `defaultCspDirectives` to extend.
24
+ */
25
+ interface SecurityConfig {
26
+ /** Master toggle. When false, the middleware is a no-op. Default: true. */
27
+ enabled?: boolean;
28
+ /** CSP configuration. Set to false to disable CSP only. */
29
+ csp?: CspConfig | false;
30
+ /** HSTS configuration. Set to false to disable HSTS only. */
31
+ hsts?: HstsConfig | false;
32
+ /** X-Frame-Options. Set to false to disable. Default: 'SAMEORIGIN'. */
33
+ frameOptions?: 'DENY' | 'SAMEORIGIN' | false;
34
+ /** X-Content-Type-Options. Set to false to disable. Default: 'nosniff'. */
35
+ contentTypeOptions?: 'nosniff' | false;
36
+ /** Referrer-Policy. Set to false to disable. Default: 'strict-origin-when-cross-origin'. */
37
+ referrerPolicy?: ReferrerPolicyValue | false;
38
+ /** Permissions-Policy. Set to false to disable. Default: deny camera/microphone/geolocation. */
39
+ permissionsPolicy?: Record<string, string[]> | false;
40
+ }
41
+ interface CspConfig {
42
+ /** Map of CSP directive name → array of source values. Each directive fully replaces the SDK default. */
43
+ directives?: CspDirectives;
44
+ /**
45
+ * Send 'Content-Security-Policy-Report-Only' instead of 'Content-Security-Policy'.
46
+ * Logs a boot warning. For migration only — flip to false for production. Default: false.
47
+ */
48
+ reportOnly?: boolean;
49
+ }
50
+ /**
51
+ * CSP directive map. `'upgrade-insecure-requests'` is a no-value directive
52
+ * (its presence is the signal); all others take an array of source expressions.
53
+ */
54
+ type CspDirectives = Partial<Record<'default-src' | 'script-src' | 'style-src' | 'img-src' | 'font-src' | 'connect-src' | 'frame-src' | 'frame-ancestors' | 'form-action' | 'base-uri' | 'object-src' | 'manifest-src' | 'media-src' | 'worker-src' | 'child-src' | 'report-uri' | 'report-to', string[]> & {
55
+ 'upgrade-insecure-requests'?: true;
56
+ }>;
57
+ interface HstsConfig {
58
+ /** Max age in seconds. Default: 15552000 (180 days). */
59
+ maxAge?: number;
60
+ /** Default: true. */
61
+ includeSubDomains?: boolean;
62
+ /** Default: false. Setting true is a one-way decision (requires hstspreload.org submission). */
63
+ preload?: boolean;
64
+ }
65
+ type ReferrerPolicyValue = 'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url';
66
+ /**
67
+ * Fully resolved (post-merge) security config — every field non-optional.
68
+ * Used internally by the middleware after applying defaults to customer config.
69
+ */
70
+ interface ResolvedSecurityConfig {
71
+ enabled: boolean;
72
+ csp: {
73
+ directives: CspDirectives;
74
+ reportOnly: boolean;
75
+ } | false;
76
+ hsts: Required<HstsConfig> | false;
77
+ frameOptions: 'DENY' | 'SAMEORIGIN' | false;
78
+ contentTypeOptions: 'nosniff' | false;
79
+ referrerPolicy: ReferrerPolicyValue | false;
80
+ permissionsPolicy: Record<string, string[]> | false;
81
+ }
82
+ //#endregion
83
+ //#region src/security/defaults.d.ts
84
+ /**
85
+ * SDK default CSP directives. Customers extending CSP should spread this:
86
+ *
87
+ * ```ts
88
+ * import { defaultCspDirectives } from '@salesforce/storefront-next-runtime/security';
89
+ * security: {
90
+ * csp: {
91
+ * directives: {
92
+ * ...defaultCspDirectives,
93
+ * 'script-src': [...defaultCspDirectives['script-src']!, 'https://cdn.foo.com'],
94
+ * },
95
+ * },
96
+ * }
97
+ * ```
98
+ *
99
+ * The per-request nonce is appended to `script-src` at request time; it is
100
+ * NOT in this static map.
101
+ */
102
+ declare const defaultCspDirectives: CspDirectives;
103
+ declare const defaultSecurityHeaders: ResolvedSecurityConfig;
104
+ //#endregion
105
+ export { HstsConfig as a, SecurityConfig as c, CspDirectives as i, defaultSecurityHeaders as n, ReferrerPolicyValue as o, CspConfig as r, ResolvedSecurityConfig as s, defaultCspDirectives as t };
106
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","names":[],"sources":["../src/security/types.ts","../src/security/defaults.ts"],"sourcesContent":[],"mappings":";;AAwBA;;;;;;AAiBA;AAcA;AAuBA;AASA;AAcA;;;;;;;;;;AClEA;AA4BA;UDvCiB,cAAA;;;;QAIP;;SAEC;;;;;;mBAMU;;sBAEG;;UAGP,SAAA;;eAEA;;;;;;;;;;;KAYL,aAAA,GAAgB,QACxB;;;UAsBa,UAAA;;;;;;;;KASL,mBAAA;;;;;UAcK,sBAAA;;;gBAEM;;;QACb,SAAS;;;kBAGC;qBACG;;;;;;;;;ACzEvB;AA4BA;;;;;;;;;;;;cA5Ba,sBAAsB;cA4BtB,wBAAwB"}
@@ -0,0 +1,67 @@
1
+ //#region src/security/defaults.ts
2
+ /**
3
+ * SDK default CSP directives. Customers extending CSP should spread this:
4
+ *
5
+ * ```ts
6
+ * import { defaultCspDirectives } from '@salesforce/storefront-next-runtime/security';
7
+ * security: {
8
+ * csp: {
9
+ * directives: {
10
+ * ...defaultCspDirectives,
11
+ * 'script-src': [...defaultCspDirectives['script-src']!, 'https://cdn.foo.com'],
12
+ * },
13
+ * },
14
+ * }
15
+ * ```
16
+ *
17
+ * The per-request nonce is appended to `script-src` at request time; it is
18
+ * NOT in this static map.
19
+ */
20
+ const defaultCspDirectives = {
21
+ "default-src": ["'self'"],
22
+ "script-src": ["'self'", "https://challenges.cloudflare.com"],
23
+ "style-src": ["'self'", "'unsafe-inline'"],
24
+ "img-src": [
25
+ "'self'",
26
+ "data:",
27
+ "https://*.commercecloud.salesforce.com",
28
+ "https://*.demandware.net"
29
+ ],
30
+ "font-src": ["'self'", "data:"],
31
+ "connect-src": [
32
+ "'self'",
33
+ "https://*.commercecloud.salesforce.com",
34
+ "https://*.demandware.net",
35
+ "https://challenges.cloudflare.com"
36
+ ],
37
+ "frame-src": ["https://challenges.cloudflare.com"],
38
+ "frame-ancestors": ["'self'"],
39
+ "form-action": ["'self'"],
40
+ "base-uri": ["'self'"],
41
+ "object-src": ["'none'"],
42
+ "upgrade-insecure-requests": true
43
+ };
44
+ const defaultSecurityHeaders = {
45
+ enabled: true,
46
+ csp: {
47
+ directives: defaultCspDirectives,
48
+ reportOnly: false
49
+ },
50
+ hsts: {
51
+ maxAge: 15552e3,
52
+ includeSubDomains: true,
53
+ preload: false
54
+ },
55
+ frameOptions: "SAMEORIGIN",
56
+ contentTypeOptions: "nosniff",
57
+ referrerPolicy: "strict-origin-when-cross-origin",
58
+ permissionsPolicy: {
59
+ camera: [],
60
+ microphone: [],
61
+ geolocation: []
62
+ }
63
+ };
64
+
65
+ //#endregion
66
+ export { defaultSecurityHeaders as n, defaultCspDirectives as t };
67
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","names":["defaultCspDirectives: CspDirectives","defaultSecurityHeaders: ResolvedSecurityConfig"],"sources":["../src/security/defaults.ts"],"sourcesContent":["/**\n * Copyright 2026 Salesforce, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type { CspDirectives, ResolvedSecurityConfig } from './types.js';\n\n/**\n * SDK default CSP directives. Customers extending CSP should spread this:\n *\n * ```ts\n * import { defaultCspDirectives } from '@salesforce/storefront-next-runtime/security';\n * security: {\n * csp: {\n * directives: {\n * ...defaultCspDirectives,\n * 'script-src': [...defaultCspDirectives['script-src']!, 'https://cdn.foo.com'],\n * },\n * },\n * }\n * ```\n *\n * The per-request nonce is appended to `script-src` at request time; it is\n * NOT in this static map.\n */\nexport const defaultCspDirectives: CspDirectives = {\n 'default-src': [\"'self'\"],\n 'script-src': [\"'self'\", 'https://challenges.cloudflare.com'],\n // Tailwind v4 + shadcn rely on inline styles. Removing 'unsafe-inline'\n // breaks the design system out of the box.\n 'style-src': [\"'self'\", \"'unsafe-inline'\"],\n 'img-src': [\"'self'\", 'data:', 'https://*.commercecloud.salesforce.com', 'https://*.demandware.net'],\n 'font-src': [\"'self'\", 'data:'],\n 'connect-src': [\n \"'self'\",\n 'https://*.commercecloud.salesforce.com',\n 'https://*.demandware.net',\n // Browser-initiated XHR/fetch from the Cloudflare Turnstile widget after\n // its api.js loads. (The server-side siteverify call is not subject to CSP.)\n 'https://challenges.cloudflare.com',\n ],\n // Cloudflare Turnstile widget iframe.\n 'frame-src': ['https://challenges.cloudflare.com'],\n // Modern equivalent of X-Frame-Options.\n 'frame-ancestors': [\"'self'\"],\n // Restrict form submissions to same-origin. CSP3 does NOT fall back to\n // default-src for form-action; without this, forms could POST anywhere.\n 'form-action': [\"'self'\"],\n 'base-uri': [\"'self'\"],\n 'object-src': [\"'none'\"],\n 'upgrade-insecure-requests': true,\n};\n\nexport const defaultSecurityHeaders: ResolvedSecurityConfig = {\n enabled: true,\n csp: { directives: defaultCspDirectives, reportOnly: false },\n hsts: { maxAge: 15552000, includeSubDomains: true, preload: false },\n frameOptions: 'SAMEORIGIN',\n contentTypeOptions: 'nosniff',\n referrerPolicy: 'strict-origin-when-cross-origin',\n permissionsPolicy: { camera: [], microphone: [], geolocation: [] },\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAmCA,MAAaA,uBAAsC;CAC/C,eAAe,CAAC,SAAS;CACzB,cAAc,CAAC,UAAU,oCAAoC;CAG7D,aAAa,CAAC,UAAU,kBAAkB;CAC1C,WAAW;EAAC;EAAU;EAAS;EAA0C;EAA2B;CACpG,YAAY,CAAC,UAAU,QAAQ;CAC/B,eAAe;EACX;EACA;EACA;EAGA;EACH;CAED,aAAa,CAAC,oCAAoC;CAElD,mBAAmB,CAAC,SAAS;CAG7B,eAAe,CAAC,SAAS;CACzB,YAAY,CAAC,SAAS;CACtB,cAAc,CAAC,SAAS;CACxB,6BAA6B;CAChC;AAED,MAAaC,yBAAiD;CAC1D,SAAS;CACT,KAAK;EAAE,YAAY;EAAsB,YAAY;EAAO;CAC5D,MAAM;EAAE,QAAQ;EAAU,mBAAmB;EAAM,SAAS;EAAO;CACnE,cAAc;CACd,oBAAoB;CACpB,gBAAgB;CAChB,mBAAmB;EAAE,QAAQ,EAAE;EAAE,YAAY,EAAE;EAAE,aAAa,EAAE;EAAE;CACrE"}
@@ -127,36 +127,6 @@ interface AttributeDefinition {
127
127
  */
128
128
  defaultValue?: unknown;
129
129
  }
130
- /**
131
- * Resolves every attribute on a component's `data` map to the wire shape
132
- * SCAPI `getPage` would have returned.
133
- *
134
- * Dispatch is type-driven when {@code typeAttributeDefinitions} is supplied.
135
- * Otherwise the resolver inspects each value structurally — it recognizes
136
- * the image envelope by the presence of `media.libraryDomain` and
137
- * `media.path` and passes everything else through unchanged.
138
- *
139
- * Forward-compatibility (Q9): unknown attribute types pass through. Each
140
- * `(typeId, attrId, attrType)` triple is logged once per process via a
141
- * module-scoped dedup set.
142
- *
143
- * @param data attribute map to resolve, already
144
- * locale-merged + data-binding-resolved by
145
- * {@link processPage}.
146
- * @param typeId component type identifier, used as part
147
- * of the dedup key for warnings. Empty
148
- * string is acceptable for anonymous
149
- * callers (page-level data).
150
- * @param typeAttributeDefinitions attribute definitions for {@code typeId}
151
- * from `manifest.componentTypes`. When
152
- * omitted, falls back to structural
153
- * detection of the image envelope.
154
- * @param ctx per-request resolution surface.
155
- * @returns a new map with each attribute's value replaced by the resolved
156
- * wire shape; pass-through for any attribute type the resolver
157
- * doesn't yet recognize.
158
- */
159
- declare function resolveAttributeValues(data: Record<string, unknown> | undefined | null, typeId: string, typeAttributeDefinitions: Record<string, AttributeDefinition> | undefined, ctx: AttributeResolutionContext): Record<string, unknown>;
160
130
  //#endregion
161
131
  //#region src/design/data/types.d.ts
162
132
 
@@ -404,12 +374,6 @@ interface VisibilityRuleDef {
404
374
  * is typically resolved lazily — only fetched when a rule actually needs it.
405
375
  */
406
376
  type QualifierContext = ShopperExperience.schemas['QualifierResolveResponse'];
407
- /**
408
- * A resolved data binding object containing the fields returned by the data
409
- * provider for a specific record. For example, a resolved `content_asset`
410
- * might contain `{ title: "Winter Sale", body: "<div>…</div>" }`.
411
- */
412
- type ResolvedDataBinding = ShopperExperience.schemas['ResolvedDataBinding'];
413
377
  /**
414
378
  * The type of identifier used to look up a page. Determines how the ID is
415
379
  * resolved to a page manifest:
@@ -762,88 +726,6 @@ declare class RequiredError extends Error {
762
726
  static assert<TValue>(value: TValue, message: string, isEmpty?: (value: TValue) => boolean): asserts value is NonNullable<TValue>;
763
727
  }
764
728
  //#endregion
765
- //#region src/design/data/page/resolve-data-bindings.d.ts
766
- /**
767
- * Parses a binding expression string into its provider type and field name.
768
- * Supports the bare `type.field` format.
769
- *
770
- * @param expression - The expression string to parse.
771
- * @returns The parsed type and field, or `null` if the expression is invalid.
772
- *
773
- * @example
774
- * ```ts
775
- * parseExpression('content_asset.title'); // { type: 'content_asset', field: 'title' }
776
- * parseExpression('invalid'); // null
777
- * ```
778
- */
779
- declare function parseExpression(expression: string): {
780
- type: string;
781
- field: string;
782
- } | null;
783
- /**
784
- * Resolves a single binding expression against the component's data contexts
785
- * and the resolved data bindings from context resolution.
786
- *
787
- * Returns the resolved field value, or an empty string if the expression is
788
- * invalid, the matching context or record is not found, or the field does not
789
- * exist on the resolved record.
790
- *
791
- * @param expression - The expression string (e.g. `"content_asset.body"`).
792
- * @param contexts - The component's data binding contexts.
793
- * @param dataBindings - The resolved data bindings from {@link QualifierContext}.
794
- * @returns The resolved value, or `''` if resolution fails.
795
- */
796
- declare function resolveExpression(expression: string, contexts: DataBindingRequirement[], dataBindings: NonNullable<QualifierContext['dataBindings']>): unknown;
797
- /**
798
- * Resolves data binding expressions for a single component. Replaces attribute
799
- * values in the component's `data` with the resolved values from context
800
- * resolution. Attributes without a matching expression are preserved as-is.
801
- * When an expression cannot be resolved, the attribute value is set to an
802
- * empty string.
803
- *
804
- * Returns the component unchanged if it has no data binding metadata or if
805
- * `dataBindings` is `undefined`.
806
- *
807
- * @param component - The component to resolve data bindings for.
808
- * @param binding - The component's data binding metadata from the page manifest's `componentInfo`, or `null`/`undefined` if not bound.
809
- * @param dataBindings - The resolved data bindings from {@link QualifierContext}, or `undefined` if no bindings were resolved.
810
- * @returns The component with resolved attribute values, or the original component if no bindings apply.
811
- *
812
- * @example
813
- * ```ts
814
- * import { resolveComponentDataBindings } from '@salesforce/storefront-next-runtime/design/data';
815
- *
816
- * const component = {
817
- * id: 'banner',
818
- * typeId: 'commerce_assets.contentBanner',
819
- * data: { heading: 'Fallback Title', body: 'Fallback Body' },
820
- * regions: [],
821
- * };
822
- *
823
- * const binding = {
824
- * expressions: {
825
- * heading: 'content_asset.title',
826
- * body: 'content_asset.body',
827
- * },
828
- * contexts: [{ type: 'content_asset', id: 'winter-sale-uuid' }],
829
- * };
830
- *
831
- * const dataBindings = {
832
- * content_asset: {
833
- * 'winter-sale-uuid': {
834
- * title: 'Winter Sale',
835
- * body: '<div>Free Shipping on all orders!</div>',
836
- * },
837
- * },
838
- * };
839
- *
840
- * const resolved = resolveComponentDataBindings(component, binding, dataBindings);
841
- * // resolved.data.heading === 'Winter Sale'
842
- * // resolved.data.body === '<div>Free Shipping on all orders!</div>'
843
- * ```
844
- */
845
- declare function resolveComponentDataBindings(component: ShopperExperience.schemas['Component'], binding: ComponentDataBinding | null | undefined, dataBindings: QualifierContext['dataBindings']): ShopperExperience.schemas['Component'];
846
- //#endregion
847
729
  //#region src/design/data/page/resolve-page.d.ts
848
730
  /**
849
731
  * Main entry point for the page resolution pipeline. Orchestrates the full flow:
@@ -865,6 +747,7 @@ declare function resolveComponentDataBindings(component: ShopperExperience.schem
865
747
  * @param options.manifestStorage - Storage implementation for fetching manifests.
866
748
  * @param options.contextResolver - Optional async function that returns the shopper's qualifier context. Only called if a visibility rule needs it.
867
749
  * @param options.aspectType - The aspect type to resolve the page for when the identifier type is `'product'` or `'category'`.
750
+ * @param options.categoryId - Optional fallback category ID (or a Promise resolving to one) used only when `identifierType` is `'product'` and the product has no content assignment for the requested aspect type. The promise is awaited lazily — the happy path never pays for it.
868
751
  * @param options.pruneInvisible - When `true` (default), invisible and overflow components are removed. When `false`, they are kept but marked `visible: false` for design/preview mode.
869
752
  * @returns The fully resolved and filtered page, or `null`.
870
753
  *
@@ -906,6 +789,7 @@ declare function resolvePage({
906
789
  id,
907
790
  identifierType,
908
791
  aspectType,
792
+ categoryId,
909
793
  locale,
910
794
  defaultLocale,
911
795
  manifestStorage,
@@ -916,6 +800,13 @@ declare function resolvePage({
916
800
  id: string;
917
801
  identifierType: IdentifierType;
918
802
  aspectType?: string;
803
+ /**
804
+ * Fallback category ID (or a Promise resolving to one) consulted only
805
+ * when `identifierType === 'product'` and the product has no content
806
+ * assignment for the requested aspect type. Awaited lazily — the happy
807
+ * path skips it.
808
+ */
809
+ categoryId?: string | Promise<string | null | undefined> | null;
919
810
  locale: string;
920
811
  defaultLocale: string;
921
812
  manifestStorage: ManifestStorage;
@@ -931,212 +822,6 @@ declare function resolvePage({
931
822
  pruneInvisible?: boolean;
932
823
  }): Promise<ShopperExperience.schemas['Page'] | null>;
933
824
  //#endregion
934
- //#region src/design/data/manifest/resolve-dynamic-page-id.d.ts
935
- /**
936
- * Converts a product or category identifier into a page ID by looking up
937
- * content assignments in the site manifest. For categories, the lookup
938
- * traverses the category hierarchy from the given category up to the root,
939
- * returning the first matching assignment.
940
- *
941
- * Returns `null` if no content assignment is found for the identifier or if
942
- * the identifier type has no registered resolver.
943
- *
944
- * @param options - The resolution options.
945
- * @param options.id - The identifier to resolve (product ID, category ID, or page ID).
946
- * @param options.identifierType - The type of identifier: `'product'`, `'category'`, or `'page'`.
947
- * @param options.siteManifest - The site manifest containing content assignments and category hierarchy.
948
- * @returns The resolved page ID, or `null` if no assignment was found.
949
- *
950
- * @example
951
- * ```ts
952
- * import { resolveDynamicPageId } from '@salesforce/storefront-next-runtime/design/data';
953
- *
954
- * const siteManifest = {
955
- * contentObjectAssignments: {
956
- * plp: {
957
- * category: {
958
- * 'mens-shoes': {
959
- * lookupMode: 'category-explicit',
960
- * contentId: 'page-mens-shoes-plp',
961
- * },
962
- * },
963
- * },
964
- * },
965
- * categories: {
966
- * 'mens-running-shoes': { name: 'Running Shoes', parentCategory: 'mens-shoes' },
967
- * 'mens-shoes': { name: "Men's Shoes" },
968
- * },
969
- * };
970
- *
971
- * // Direct match
972
- * resolveDynamicPageId({ id: 'mens-shoes', identifierType: 'category', siteManifest });
973
- * // => 'page-mens-shoes-plp'
974
- *
975
- * // Inherited from parent category
976
- * resolveDynamicPageId({ id: 'mens-running-shoes', identifierType: 'category', siteManifest });
977
- * // => 'page-mens-shoes-plp' (found via parent traversal)
978
- *
979
- * // No assignment found
980
- * resolveDynamicPageId({ id: 'womens-shoes', identifierType: 'category', siteManifest });
981
- * // => null
982
- * ```
983
- */
984
- declare function resolveDynamicPageId<TIdentifier extends IdentifierType = IdentifierType>({
985
- id,
986
- identifierType,
987
- siteManifest,
988
- aspectType
989
- }: {
990
- id: string;
991
- identifierType: TIdentifier;
992
- aspectType: string;
993
- siteManifest?: SiteManifest | null;
994
- }): string | null;
995
- //#endregion
996
- //#region src/design/data/manifest/get-page.d.ts
997
- /**
998
- * Selects the appropriate page variation from a manifest by evaluating each
999
- * variation's visibility rule in order. Returns the first variation whose rule
1000
- * passes, or falls back to the manifest's default variation.
1001
- *
1002
- * The qualifier context is resolved lazily — the `contextResolver` is only
1003
- * called when a variation's `ruleRequiresContext` flag is `true`, and only
1004
- * once (the result is cached for subsequent variations).
1005
- *
1006
- * @param manifest - The page manifest containing all variations.
1007
- * @param options - Resolution options.
1008
- * @param options.contextResolver - Optional async function that returns the shopper's qualifier context. Only called if a variation's rule needs it.
1009
- * @param options.locale - The current locale (e.g. `"en_US"`). Used to evaluate locale-based visibility rules.
1010
- * @returns The selected variation entry and resolved context, or `null` if no variation (including default) exists.
1011
- *
1012
- * @example
1013
- * ```ts
1014
- * import { getPageFromManifest } from '@salesforce/storefront-next-runtime/design/data';
1015
- *
1016
- * const manifest = {
1017
- * pageId: 'homepage',
1018
- * context: { campaignQualifiers: [], customerGroups: ['vip-customers'], dataBindings: [] },
1019
- * variationOrder: ['vip-homepage', 'holiday-homepage'],
1020
- * variations: {
1021
- * 'vip-homepage': {
1022
- * ruleRequiresContext: true,
1023
- * pageRequiresContext: false,
1024
- * visibilityRule: { activeLocales: ['en-US'], customerGroups: ['vip-customers'] },
1025
- * page: { id: 'homepage', typeId: 'storePage', regions: [] },
1026
- * regions: {},
1027
- * },
1028
- * 'holiday-homepage': {
1029
- * ruleRequiresContext: false,
1030
- * pageRequiresContext: false,
1031
- * visibilityRule: {
1032
- * activeLocales: ['en-US'],
1033
- * schedule: {
1034
- * start: new Date('2026-12-01').toISOString(),
1035
- * end: new Date('2026-12-31').toISOString(),
1036
- * },
1037
- * },
1038
- * page: { id: 'homepage', typeId: 'storePage', regions: [] },
1039
- * regions: {},
1040
- * },
1041
- * 'default-homepage': {
1042
- * ruleRequiresContext: false,
1043
- * pageRequiresContext: false,
1044
- * page: { id: 'homepage', typeId: 'storePage', regions: [] },
1045
- * regions: {},
1046
- * },
1047
- * },
1048
- * defaultVariation: 'default-homepage',
1049
- * componentInfo: {},
1050
- * };
1051
- *
1052
- * // VIP shopper — matches first variation
1053
- * const result = await getPageFromManifest(manifest, {
1054
- * locale: 'en-US',
1055
- * contextResolver: async () => ({
1056
- * customerGroups: { 'vip-customers': true },
1057
- * campaignQualifiers: {},
1058
- * }),
1059
- * });
1060
- * // result.entry === manifest.variations['vip-homepage']
1061
- *
1062
- * // Non-VIP shopper outside holiday window — falls back to default
1063
- * const fallback = await getPageFromManifest(manifest, {
1064
- * locale: 'en-US',
1065
- * contextResolver: async () => ({
1066
- * customerGroups: {},
1067
- * campaignQualifiers: {},
1068
- * }),
1069
- * });
1070
- * // fallback.entry === manifest.variations['default-homepage']
1071
- * ```
1072
- */
1073
- declare function getPageFromManifest(manifest: PageManifest, {
1074
- contextResolver,
1075
- locale
1076
- }: {
1077
- contextResolver?: ContextResolver;
1078
- locale: string;
1079
- }): Promise<{
1080
- entry: VariationEntry;
1081
- context: QualifierContext | null;
1082
- } | null>;
1083
- //#endregion
1084
- //#region src/design/data/manifest/content-assignment-resolvers.d.ts
1085
- /**
1086
- * The result of resolving an identifier through a content assignment resolver.
1087
- * Contains the object type, aspect type, and ordered list of keys to search
1088
- * in the site manifest's content assignments.
1089
- */
1090
- interface ResolvedContentAssignmentLookup {
1091
- /** The type of commerce object (e.g. `'product'`, `'category'`). */
1092
- objectType: string;
1093
- /** Ordered list of object IDs to search in the site manifest's content assignments. */
1094
- keys: string[];
1095
- }
1096
- /**
1097
- * A function that converts an identifier key (e.g., a product or category ID)
1098
- * into a {@link ResolvedContentAssignmentLookup} describing where to search
1099
- * in the site manifest for the assigned page ID.
1100
- */
1101
- type ContentAssignmentResolver = (key: string, manifest?: SiteManifest | null) => ResolvedContentAssignmentLookup;
1102
- /**
1103
- * Registry of content assignment resolvers keyed by {@link IdentifierType}.
1104
- * Each resolver knows how to convert its identifier type into a set of lookup
1105
- * keys for the site manifest.
1106
- *
1107
- * Built-in resolvers:
1108
- * - **`'product'`** — Maps a product ID to a single PDP lookup key.
1109
- * - **`'category'`** — Maps a category ID to an ordered list of keys that
1110
- * traverses the category hierarchy from child to root, enabling inherited
1111
- * page assignments.
1112
- *
1113
- * The `'page'` identifier type has no resolver — page IDs are used directly.
1114
- *
1115
- * @example
1116
- * ```ts
1117
- * import { ContentAssignmentResolvers } from '@salesforce/storefront-next-runtime/design/data';
1118
- *
1119
- * // Resolve a product identifier for PDP lookup
1120
- * const productResolver = ContentAssignmentResolvers.get('product');
1121
- * productResolver('nike-air-max-90');
1122
- * // => { objectType: 'product', aspectType: 'pdp', keys: ['nike-air-max-90'] }
1123
- *
1124
- * // Resolve a category identifier — traverses hierarchy to find inherited assignments
1125
- * const categoryResolver = ContentAssignmentResolvers.get('category');
1126
- * const siteManifest = {
1127
- * categories: {
1128
- * 'mens-running-shoes': { name: 'Running Shoes', parentCategory: 'mens-shoes' },
1129
- * 'mens-shoes': { name: "Men's Shoes", parentCategory: 'mens' },
1130
- * 'mens': { name: 'Men' },
1131
- * },
1132
- * contentObjectAssignments: {},
1133
- * };
1134
- * categoryResolver('mens-running-shoes', siteManifest);
1135
- * // => { objectType: 'category', aspectType: 'plp', keys: ['mens-running-shoes', 'mens-shoes', 'mens'] }
1136
- * ```
1137
- */
1138
- declare const ContentAssignmentResolvers: Map<string, ContentAssignmentResolver>;
1139
- //#endregion
1140
825
  //#region src/design/data/validate-rule.d.ts
1141
826
  /**
1142
827
  * Evaluates a visibility rule against a shopper's qualifier context.
@@ -1183,12 +868,5 @@ declare const ContentAssignmentResolvers: Map<string, ContentAssignmentResolver>
1183
868
  */
1184
869
  declare function validateRule(rule: VisibilityRuleDef, locale: string, context?: QualifierContext | null): boolean;
1185
870
  //#endregion
1186
- //#region src/design/data/page/markup-url-rewriter.d.ts
1187
- /**
1188
- * Rewrites `?$staticlink$` placeholders in markup to fully-qualified
1189
- * static-content URLs. Pipeline-action placeholders pass through unchanged.
1190
- */
1191
- declare function rewriteMarkup(source: string, ctx: AttributeResolutionContext): string;
1192
- //#endregion
1193
- export { type AttributeDefinition, type AttributeResolutionContext, type AttributeResolutionWarning, CampaignQualifier, ComponentDataBinding, ContentAssignmentResolvers, ContextResolver, DataBindingRequirement, IdentifierType, InferNodeFromType, ManifestStorage, PageManifest, PageManifestContext, PageMetadataOverlay, type PageProcessorContext, type PageVisitor, QualifierContext, RegionInfo, RequiredError, ResolvedDataBinding, SiteManifest, VariationEntry, VisibilityRuleDef, type VisitorContext, VisitorContextType, getPageFromManifest, parseExpression, processPage, resolveAttributeValues, resolveComponentDataBindings, resolveDynamicPageId, resolveExpression, resolvePage, rewriteMarkup, transformComponent, transformPage, transformRegion, validateRule };
871
+ export { type AttributeResolutionContext, type AttributeResolutionWarning, type ContextResolver, type IdentifierType, type InferNodeFromType, type ManifestStorage, type PageManifest, type PageProcessorContext, type PageVisitor, type QualifierContext, RequiredError, type SiteManifest, type VisibilityRuleDef, type VisitorContext, type VisitorContextType, processPage, resolvePage, transformComponent, transformPage, transformRegion, validateRule };
1194
872
  //# sourceMappingURL=design-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-data.d.ts","names":[],"sources":["../src/design/data/page/attribute-resolution.ts","../src/design/data/types.ts","../src/design/data/page/process-page.ts","../src/design/data/page/transform.ts","../src/design/data/errors/required.ts","../src/design/data/page/resolve-data-bindings.ts","../src/design/data/page/resolve-page.ts","../src/design/data/manifest/resolve-dynamic-page-id.ts","../src/design/data/manifest/get-page.ts","../src/design/data/manifest/content-assignment-resolvers.ts","../src/design/data/validate-rule.ts","../src/design/data/page/markup-url-rewriter.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"design-data.d.ts","names":[],"sources":["../src/design/data/page/attribute-resolution.ts","../src/design/data/types.ts","../src/design/data/page/process-page.ts","../src/design/data/page/transform.ts","../src/design/data/errors/required.ts","../src/design/data/page/resolve-page.ts","../src/design/data/validate-rule.ts"],"sourcesContent":[],"mappings":"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"}