@salesforce/storefront-next-runtime 0.3.1-alpha.1 → 0.4.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -0
- package/dist/DesignComponent.js +37 -12
- package/dist/DesignComponent.js.map +1 -1
- package/dist/DesignContext.js +47 -2
- package/dist/DesignContext.js.map +1 -1
- package/dist/DesignFrame.js +1 -1
- package/dist/DesignRegion.js +1 -1
- package/dist/config.d.ts +4 -4
- package/dist/custom-global-preferences.d.ts +20 -0
- package/dist/custom-global-preferences.d.ts.map +1 -0
- package/dist/custom-global-preferences.js +28 -0
- package/dist/custom-global-preferences.js.map +1 -0
- package/dist/custom-site-preferences.d.ts +20 -0
- package/dist/custom-site-preferences.d.ts.map +1 -0
- package/dist/custom-site-preferences.js +28 -0
- package/dist/custom-site-preferences.js.map +1 -0
- package/dist/data-store-custom-global-preferences.d.ts +2 -0
- package/dist/data-store-custom-global-preferences.js +6 -0
- package/dist/data-store-custom-site-preferences.d.ts +2 -0
- package/dist/data-store-custom-site-preferences.js +6 -0
- package/dist/data-store-gcp-preferences.d.ts +2 -0
- package/dist/data-store-gcp-preferences.js +6 -0
- package/dist/data-store.d.ts +97 -0
- package/dist/data-store.d.ts.map +1 -0
- package/dist/data-store.js +42 -0
- package/dist/data-store.js.map +1 -0
- package/dist/design-data.d.ts +82 -88
- package/dist/design-data.d.ts.map +1 -1
- package/dist/design-data.js +95 -57
- package/dist/design-data.js.map +1 -1
- package/dist/design-messaging.d.ts +2 -2
- package/dist/events.d.ts +34 -6
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +6 -6
- package/dist/events.js.map +1 -1
- package/dist/gcp-preferences.d.ts +52 -0
- package/dist/gcp-preferences.d.ts.map +1 -0
- package/dist/gcp-preferences.js +61 -0
- package/dist/gcp-preferences.js.map +1 -0
- package/dist/i18n-client.d.ts +38 -0
- package/dist/i18n-client.d.ts.map +1 -0
- package/dist/i18n-client.js +72 -0
- package/dist/i18n-client.js.map +1 -0
- package/dist/i18n.d.ts +63 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +98 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +60 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/messaging-api.js +3 -1
- package/dist/messaging-api.js.map +1 -1
- package/dist/scapi.d.ts +247 -2
- package/dist/scapi.d.ts.map +1 -1
- package/dist/scapi.js +1 -1
- package/dist/scapi.js.map +1 -1
- package/dist/site-context.d.ts +94 -18
- package/dist/site-context.d.ts.map +1 -1
- package/dist/site-context.js +2 -417
- package/dist/site-context2.js +513 -0
- package/dist/site-context2.js.map +1 -0
- package/dist/types2.d.ts +210 -0
- package/dist/types2.d.ts.map +1 -1
- package/dist/utils.js +179 -0
- package/dist/utils.js.map +1 -0
- package/package.json +63 -4
- package/dist/site-context.js.map +0 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { a as sitePreferencesContext, i as getSitePreferences, n as SitePreferences, t as DEFAULT_SITE_PREFERENCES_KEY } from "./custom-site-preferences.js";
|
|
2
|
+
import { a as getCustomGlobalPreferences, n as DEFAULT_CUSTOM_GLOBAL_PREFERENCES_KEY, r as customGlobalPreferencesContext, t as CustomGlobalPreferences } from "./custom-global-preferences.js";
|
|
3
|
+
import { a as getGcpApiKey, n as GcpPreferences, o as getGcpPreferences, r as gcpPreferencesContext, t as DEFAULT_GCP_PREFERENCES_KEY } from "./gcp-preferences.js";
|
|
4
|
+
import * as react_router6 from "react-router";
|
|
5
|
+
import { MiddlewareFunction, RouterContextProvider, createContext } from "react-router";
|
|
6
|
+
import { DataStoreNotFoundError, DataStoreServiceError, DataStoreUnavailableError } from "@salesforce/mrt-utilities";
|
|
7
|
+
|
|
8
|
+
//#region src/data-store/provider.d.ts
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Copyright 2026 Salesforce, Inc.
|
|
12
|
+
*
|
|
13
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
14
|
+
* you may not use this file except in compliance with the License.
|
|
15
|
+
* You may obtain a copy of the License at
|
|
16
|
+
*
|
|
17
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18
|
+
*
|
|
19
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
20
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
21
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
22
|
+
* See the License for the specific language governing permissions and
|
|
23
|
+
* limitations under the License.
|
|
24
|
+
*/
|
|
25
|
+
type DataStoreEntry<TValue = unknown> = {
|
|
26
|
+
value?: TValue;
|
|
27
|
+
};
|
|
28
|
+
type DataStoreProvider = {
|
|
29
|
+
kind: 'mrt' | 'local';
|
|
30
|
+
getEntry: <TValue = unknown>(key: string) => Promise<DataStoreEntry<TValue> | null>;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Resolve the default data-store provider based on MRT environment variables.
|
|
34
|
+
*
|
|
35
|
+
* Environment variables:
|
|
36
|
+
* - `AWS_REGION` (required for MRT): AWS region for the data store table (e.g., "us-east-1")
|
|
37
|
+
* - `MOBIFY_PROPERTY_ID` (required for MRT): MRT property identifier (e.g., "abcd1234")
|
|
38
|
+
* - `DEPLOY_TARGET` (required for MRT): MRT deploy target (e.g., "production")
|
|
39
|
+
* - `SFNEXT_DATA_STORE_ALLOW_LOCAL` (optional): allow local provider outside development ("true")
|
|
40
|
+
* - `CI` (optional): allow local provider when set to "true"
|
|
41
|
+
*
|
|
42
|
+
* @returns Provider promise resolved for the current environment.
|
|
43
|
+
* @example
|
|
44
|
+
* const provider = await getDefaultDataStoreProvider();
|
|
45
|
+
* const entry = await provider.getEntry('custom-global-preferences');
|
|
46
|
+
*/
|
|
47
|
+
declare function getDefaultDataStoreProvider(): Promise<DataStoreProvider>;
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/data-store/utils.d.ts
|
|
50
|
+
type DataStoreContextKey<T> = ReturnType<typeof createContext<T | null>>;
|
|
51
|
+
type DataStoreEntryKey = string | ((context: Readonly<RouterContextProvider>) => string);
|
|
52
|
+
type DataStoreMiddlewareOptions<T> = {
|
|
53
|
+
entryKey: DataStoreEntryKey;
|
|
54
|
+
context: DataStoreContextKey<T>;
|
|
55
|
+
transform?: (value: Record<string, unknown>) => T;
|
|
56
|
+
provider?: DataStoreProvider | Promise<DataStoreProvider>;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Creates a typed React Router context for data store entries.
|
|
60
|
+
*
|
|
61
|
+
* Initializes the context with `null` so middleware can populate it during requests.
|
|
62
|
+
*
|
|
63
|
+
* @returns React Router context key for data store values
|
|
64
|
+
*/
|
|
65
|
+
declare function createDataStoreContext<T>(): DataStoreContextKey<T>;
|
|
66
|
+
/**
|
|
67
|
+
* Creates a data-store middleware that fetches site preferences from MRT data access layer
|
|
68
|
+
* and stores them in the router context.
|
|
69
|
+
*
|
|
70
|
+
* Environment variables:
|
|
71
|
+
* - `AWS_REGION` (required): AWS region for the data store table (e.g., "us-east-1")
|
|
72
|
+
* - `MOBIFY_PROPERTY_ID` (required): MRT property identifier (e.g., "abcd1234")
|
|
73
|
+
* - `DEPLOY_TARGET` (required): MRT deploy target (e.g., "production")
|
|
74
|
+
*
|
|
75
|
+
* @param options - Middleware options for data store entry and context
|
|
76
|
+
* @returns React Router middleware for server requests
|
|
77
|
+
*/
|
|
78
|
+
declare function createDataStoreMiddleware<T>(options: DataStoreMiddlewareOptions<T>): MiddlewareFunction<Response>;
|
|
79
|
+
//#endregion
|
|
80
|
+
//#region src/data-store/middleware/login-preferences.d.ts
|
|
81
|
+
type LoginPreferences = {
|
|
82
|
+
emailVerificationEnabled?: boolean;
|
|
83
|
+
};
|
|
84
|
+
declare const loginPreferencesContext: react_router6.RouterContext<LoginPreferences | null>;
|
|
85
|
+
/**
|
|
86
|
+
* Read login preferences from router context.
|
|
87
|
+
*
|
|
88
|
+
* @param context - Router context provider
|
|
89
|
+
* @returns Login preferences data stored by data-store middleware
|
|
90
|
+
*/
|
|
91
|
+
declare function getLoginPreferences(context: Readonly<RouterContextProvider>): LoginPreferences;
|
|
92
|
+
//#endregion
|
|
93
|
+
//#region src/data-store/index.d.ts
|
|
94
|
+
declare const dataStoreMiddleware: react_router6.MiddlewareFunction<Response>[];
|
|
95
|
+
//#endregion
|
|
96
|
+
export { type CustomGlobalPreferences, DEFAULT_CUSTOM_GLOBAL_PREFERENCES_KEY, DEFAULT_GCP_PREFERENCES_KEY, DEFAULT_SITE_PREFERENCES_KEY, type DataStoreContextKey, type DataStoreEntry, type DataStoreEntryKey, type DataStoreMiddlewareOptions, DataStoreNotFoundError, type DataStoreProvider, DataStoreServiceError, DataStoreUnavailableError, type GcpPreferences, type LoginPreferences, type SitePreferences, createDataStoreContext, createDataStoreMiddleware, customGlobalPreferencesContext, dataStoreMiddleware, gcpPreferencesContext, getCustomGlobalPreferences, getDefaultDataStoreProvider, getGcpApiKey, getGcpPreferences, getLoginPreferences, getSitePreferences, loginPreferencesContext, sitePreferencesContext };
|
|
97
|
+
//# sourceMappingURL=data-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-store.d.ts","names":[],"sources":["../src/data-store/provider.ts","../src/data-store/utils.ts","../src/data-store/middleware/login-preferences.ts","../src/data-store/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;AAmBA;AAIA;;;;;AA+BA;KAnCY;UACA;;ACKA,KDFA,iBAAA,GCEmB;EAAsC,IAAA,EAAA,KAAA,GAAA,OAAA;EAAd,QAAA,EAAA,CAAA,SAAA,OAAA,CAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GDAN,OCAM,CDAE,cCAF,CDAiB,MCAjB,CAAA,GAAA,IAAA,CAAA;CAAlB;;;;;;;AAkBrC;AAgBA;;;;;;;;iBDLgB,2BAAA,CAAA,GAA+B,QAAQ;;;KC7B3C,yBAAyB,kBAAkB,cAAc;AAAzD,KAEA,iBAAA,GAFmB,MAAA,GAAA,CAAA,CAAA,OAAA,EAEqB,QAFrB,CAE8B,qBAF9B,CAAA,EAAA,GAAA,MAAA,CAAA;AAAsC,KAIzD,0BAJyD,CAAA,CAAA,CAAA,GAAA;EAAd,QAAA,EAKzC,iBALyC;EAAlB,OAAA,EAMxB,mBANwB,CAMJ,CANI,CAAA;EAAU,SAAA,CAAA,EAAA,CAAA,KAAA,EAOvB,MAPuB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GAOK,CAPL;EAEnC,QAAA,CAAA,EAMG,iBANc,GAMM,OAN0B,CAMlB,iBANS,CAAA;AAEpD,CAAA;;;;;;;;AAImC,iBAUnB,sBAVmB,CAAA,CAAA,CAAA,CAAA,CAAA,EAUU,mBAVV,CAU8B,CAV9B,CAAA;;AAUnC;AAgBA;;;;;;;;;ACxCA;AAIa,iBDoCG,yBCpCoB,CAAA,CAAA,CAAA,CAAA,OAAA,EDoCkB,0BCpClB,CDoC6C,CCpC7C,CAAA,CAAA,EDoCkD,kBCpClD,CDoCqE,QCpCrE,CAAA;;;KAJxB,gBAAA;;ADMZ,CAAA;AAAqE,cCFxD,uBDEwD,ECFjC,aAAA,CAAA,aDEiC,CCFjC,gBDEiC,GAAA,IAAA,CAAA;;;;AAErE;AAEA;;AAEiC,iBCAjB,mBAAA,CDAiB,OAAA,ECAY,QDAZ,CCAqB,qBDArB,CAAA,CAAA,ECA8C,gBDA9C;;;AAElB,cEiBF,mBFjBE,EEiBiB,aAAA,CAAA,kBFjBjB,CEiBiB,QFjBjB,CAAA,EAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { i as getDefaultDataStoreProvider, n as createDataStoreMiddleware, r as prefixWithSiteId, t as createDataStoreContext } from "./utils.js";
|
|
2
|
+
import "./site-context2.js";
|
|
3
|
+
import "./apply-url-config.js";
|
|
4
|
+
import { i as sitePreferencesContext, n as customSitePreferencesMiddleware, r as getSitePreferences, t as DEFAULT_SITE_PREFERENCES_KEY } from "./custom-site-preferences.js";
|
|
5
|
+
import { i as getCustomGlobalPreferences, n as customGlobalPreferencesContext, r as customGlobalPreferencesMiddleware, t as DEFAULT_CUSTOM_GLOBAL_PREFERENCES_KEY } from "./custom-global-preferences.js";
|
|
6
|
+
import { a as getGcpPreferences, i as getGcpApiKey, n as gcpPreferencesContext, r as gcpPreferencesMiddleware, t as DEFAULT_GCP_PREFERENCES_KEY } from "./gcp-preferences.js";
|
|
7
|
+
import { DataStoreNotFoundError, DataStoreServiceError, DataStoreUnavailableError } from "@salesforce/mrt-utilities";
|
|
8
|
+
|
|
9
|
+
//#region src/data-store/middleware/login-preferences.ts
|
|
10
|
+
const loginPreferencesContext = createDataStoreContext();
|
|
11
|
+
/**
|
|
12
|
+
* Read login preferences from router context.
|
|
13
|
+
*
|
|
14
|
+
* @param context - Router context provider
|
|
15
|
+
* @returns Login preferences data stored by data-store middleware
|
|
16
|
+
*/
|
|
17
|
+
function getLoginPreferences(context) {
|
|
18
|
+
const data = context.get(loginPreferencesContext);
|
|
19
|
+
if (!data) {
|
|
20
|
+
console.warn("Login preferences context not found. Ensure data-store middleware runs before loaders and the required env vars are set.");
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
return data;
|
|
24
|
+
}
|
|
25
|
+
const loginPreferencesMiddleware = createDataStoreMiddleware({
|
|
26
|
+
entryKey: prefixWithSiteId("login-preferences"),
|
|
27
|
+
context: loginPreferencesContext,
|
|
28
|
+
transform: (value) => value.data
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/data-store/index.ts
|
|
33
|
+
const dataStoreMiddleware = [
|
|
34
|
+
customSitePreferencesMiddleware,
|
|
35
|
+
customGlobalPreferencesMiddleware,
|
|
36
|
+
gcpPreferencesMiddleware,
|
|
37
|
+
loginPreferencesMiddleware
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
//#endregion
|
|
41
|
+
export { DEFAULT_CUSTOM_GLOBAL_PREFERENCES_KEY, DEFAULT_GCP_PREFERENCES_KEY, DEFAULT_SITE_PREFERENCES_KEY, DataStoreNotFoundError, DataStoreServiceError, DataStoreUnavailableError, createDataStoreContext, createDataStoreMiddleware, customGlobalPreferencesContext, dataStoreMiddleware, gcpPreferencesContext, getCustomGlobalPreferences, getDefaultDataStoreProvider, getGcpApiKey, getGcpPreferences, getLoginPreferences, getSitePreferences, loginPreferencesContext, sitePreferencesContext };
|
|
42
|
+
//# sourceMappingURL=data-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-store.js","names":[],"sources":["../src/data-store/middleware/login-preferences.ts","../src/data-store/index.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 */\n\nimport type { RouterContextProvider } from 'react-router';\nimport { createDataStoreContext, createDataStoreMiddleware, prefixWithSiteId } from '../utils';\n\nexport type LoginPreferences = {\n emailVerificationEnabled?: boolean;\n};\n\nexport const loginPreferencesContext = createDataStoreContext<LoginPreferences>();\n\n/**\n * Read login preferences from router context.\n *\n * @param context - Router context provider\n * @returns Login preferences data stored by data-store middleware\n */\nexport function getLoginPreferences(context: Readonly<RouterContextProvider>): LoginPreferences {\n const data = context.get(loginPreferencesContext);\n if (!data) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Login preferences context not found. Ensure data-store middleware runs before loaders and the required env vars are set.'\n );\n return {};\n }\n return data;\n}\n\nexport const loginPreferencesMiddleware = createDataStoreMiddleware<LoginPreferences>({\n entryKey: prefixWithSiteId('login-preferences'),\n context: loginPreferencesContext,\n transform: (value) => value.data as LoginPreferences,\n});\n","/**\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 */\n\nexport { createDataStoreMiddleware } from './utils';\nexport { createDataStoreContext } from './utils';\nexport { getDefaultDataStoreProvider } from './provider';\nexport {\n DEFAULT_SITE_PREFERENCES_KEY,\n getSitePreferences,\n sitePreferencesContext,\n} from './middleware/custom-site-preferences';\nexport {\n customGlobalPreferencesContext,\n DEFAULT_CUSTOM_GLOBAL_PREFERENCES_KEY,\n getCustomGlobalPreferences,\n} from './middleware/custom-global-preferences';\nexport {\n DEFAULT_GCP_PREFERENCES_KEY,\n gcpPreferencesContext,\n getGcpApiKey,\n getGcpPreferences,\n} from './middleware/gcp-preferences';\nexport type { DataStoreMiddlewareOptions } from './utils';\nexport type { SitePreferences } from './middleware/custom-site-preferences';\nexport type { DataStoreContextKey, DataStoreEntryKey } from './utils';\nexport type { DataStoreEntry, DataStoreProvider } from './provider';\nexport type { CustomGlobalPreferences } from './middleware/custom-global-preferences';\nexport { getLoginPreferences, loginPreferencesContext } from './middleware/login-preferences';\nexport type { LoginPreferences } from './middleware/login-preferences';\nexport type { GcpPreferences } from './middleware/gcp-preferences';\nexport { DataStoreNotFoundError, DataStoreServiceError, DataStoreUnavailableError } from '@salesforce/mrt-utilities';\n\nimport { customSitePreferencesMiddleware } from './middleware/custom-site-preferences';\nimport { customGlobalPreferencesMiddleware } from './middleware/custom-global-preferences';\nimport { gcpPreferencesMiddleware } from './middleware/gcp-preferences';\nimport { loginPreferencesMiddleware } from './middleware/login-preferences';\n\nexport const dataStoreMiddleware = [\n customSitePreferencesMiddleware,\n customGlobalPreferencesMiddleware,\n gcpPreferencesMiddleware,\n loginPreferencesMiddleware,\n];\n"],"mappings":";;;;;;;;;AAuBA,MAAa,0BAA0B,wBAA0C;;;;;;;AAQjF,SAAgB,oBAAoB,SAA4D;CAC5F,MAAM,OAAO,QAAQ,IAAI,wBAAwB;AACjD,KAAI,CAAC,MAAM;AAEP,UAAQ,KACJ,2HACH;AACD,SAAO,EAAE;;AAEb,QAAO;;AAGX,MAAa,6BAA6B,0BAA4C;CAClF,UAAU,iBAAiB,oBAAoB;CAC/C,SAAS;CACT,YAAY,UAAU,MAAM;CAC/B,CAAC;;;;ACGF,MAAa,sBAAsB;CAC/B;CACA;CACA;CACA;CACH"}
|
package/dist/design-data.d.ts
CHANGED
|
@@ -36,9 +36,26 @@ interface PageManifest {
|
|
|
36
36
|
content?: {
|
|
37
37
|
[locale: string]: Record<string, unknown>;
|
|
38
38
|
};
|
|
39
|
+
/** Data binding metadata for this component, or `null` if not bound. */
|
|
40
|
+
dataBinding?: ComponentDataBinding | null;
|
|
41
|
+
/** Region-level configuration (e.g. maxComponents limits), keyed by region ID. */
|
|
42
|
+
regions: {
|
|
43
|
+
[regionId: string]: RegionInfo;
|
|
44
|
+
};
|
|
39
45
|
};
|
|
40
46
|
};
|
|
41
47
|
}
|
|
48
|
+
/** Region-level configuration extracted from the page manifest, including type filters and component limits. */
|
|
49
|
+
interface RegionInfo {
|
|
50
|
+
/** The name of the region. */
|
|
51
|
+
name: string;
|
|
52
|
+
/** The component type exclusions for the region. */
|
|
53
|
+
componentTypeExclusions: string[] | null;
|
|
54
|
+
/** The component type inclusions for the region. */
|
|
55
|
+
componentTypeInclusions: string[] | null;
|
|
56
|
+
/** Maximum number of visible components to render in this region, or `null` for no limit. */
|
|
57
|
+
maxComponents: number | null;
|
|
58
|
+
}
|
|
42
59
|
/**
|
|
43
60
|
* Site-wide manifest containing content assignments that map product and category
|
|
44
61
|
* identifiers to page IDs, plus the category hierarchy used for parent-category
|
|
@@ -77,17 +94,22 @@ interface SiteManifest {
|
|
|
77
94
|
};
|
|
78
95
|
};
|
|
79
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Data binding metadata for a component instance. Stored in the page manifest's
|
|
99
|
+
* `componentInfo` map, keyed by component ID.
|
|
100
|
+
*/
|
|
101
|
+
interface ComponentDataBinding {
|
|
102
|
+
/** Maps attribute names to expression strings (e.g. `"content_asset.body"`). */
|
|
103
|
+
expressions: Record<string, string>;
|
|
104
|
+
/** The data contexts bound to this component, identifying the records to resolve against. */
|
|
105
|
+
contexts: DataBindingRequirement[];
|
|
106
|
+
}
|
|
80
107
|
/**
|
|
81
108
|
* A campaign and promotion pair used in visibility rules. Both the campaign and
|
|
82
109
|
* the specific promotion within it must be active in the shopper's context for
|
|
83
110
|
* the qualifier to match.
|
|
84
111
|
*/
|
|
85
|
-
|
|
86
|
-
/** The campaign identifier. */
|
|
87
|
-
campaignId: string;
|
|
88
|
-
/** The promotion identifier within the campaign. */
|
|
89
|
-
promotionId: string;
|
|
90
|
-
}
|
|
112
|
+
type CampaignQualifier = ShopperExperience.schemas['CampaignQualifier'];
|
|
91
113
|
/**
|
|
92
114
|
* Metadata extracted from all variation rules in a {@link PageManifest}. Lists
|
|
93
115
|
* every campaign qualifier and customer group referenced, so the runtime knows
|
|
@@ -109,12 +131,7 @@ interface PageManifestContext {
|
|
|
109
131
|
* These requirements are hoisted into {@link PageManifestContext} so MRT can
|
|
110
132
|
* request all required external data in a single batch during context resolution.
|
|
111
133
|
*/
|
|
112
|
-
|
|
113
|
-
/** The data provider type (e.g. `"content_asset"`, `"product"`, `"personalization"`). */
|
|
114
|
-
type: string;
|
|
115
|
-
/** The UUID or identifier of the specific record. */
|
|
116
|
-
id: string;
|
|
117
|
-
}
|
|
134
|
+
type DataBindingRequirement = ShopperExperience.schemas['DataBindingRequirement'];
|
|
118
135
|
/**
|
|
119
136
|
* A single page variation within a {@link PageManifest}. Each variation holds
|
|
120
137
|
* the full page data and flags indicating whether qualifier context is needed
|
|
@@ -137,6 +154,10 @@ interface VariationEntry {
|
|
|
137
154
|
visibilityRule?: VisibilityRuleDef;
|
|
138
155
|
/** The full page data for this variation. */
|
|
139
156
|
page: ShopperExperience.schemas['Page'];
|
|
157
|
+
/** Page-level region configuration for this variation, keyed by region ID. These are top-level regions owned by the page itself, not nested under a component. */
|
|
158
|
+
regions: {
|
|
159
|
+
[regionId: string]: RegionInfo;
|
|
160
|
+
};
|
|
140
161
|
}
|
|
141
162
|
/**
|
|
142
163
|
* A visibility rule definition that controls when a page variation or component
|
|
@@ -163,42 +184,13 @@ interface VisibilityRuleDef {
|
|
|
163
184
|
* Passed to {@link validateRule} to evaluate visibility rules. This context
|
|
164
185
|
* is typically resolved lazily — only fetched when a rule actually needs it.
|
|
165
186
|
*/
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Active campaign qualifiers. Outer key is campaign ID, inner key is
|
|
169
|
-
* promotion ID. A value of `true` means the qualifier is active.
|
|
170
|
-
*/
|
|
171
|
-
campaignQualifiers: {
|
|
172
|
-
[campaignId: string]: {
|
|
173
|
-
[promotionId: string]: boolean;
|
|
174
|
-
};
|
|
175
|
-
};
|
|
176
|
-
/**
|
|
177
|
-
* Customer group memberships. Key is the customer group ID, value of
|
|
178
|
-
* `true` means the shopper belongs to that group.
|
|
179
|
-
*/
|
|
180
|
-
customerGroups: {
|
|
181
|
-
[customerGroupId: string]: boolean;
|
|
182
|
-
};
|
|
183
|
-
/**
|
|
184
|
-
* Resolved data binding objects returned from context resolution. Grouped
|
|
185
|
-
* by provider type, then by record ID. The `ExpressionResolver` uses this
|
|
186
|
-
* to evaluate attribute expressions like `content_asset.body`.
|
|
187
|
-
*/
|
|
188
|
-
dataBindings?: {
|
|
189
|
-
[type: string]: {
|
|
190
|
-
[id: string]: ResolvedDataBinding;
|
|
191
|
-
};
|
|
192
|
-
};
|
|
193
|
-
}
|
|
187
|
+
type QualifierContext = ShopperExperience.schemas['QualifierResolveResponse'];
|
|
194
188
|
/**
|
|
195
189
|
* A resolved data binding object containing the fields returned by the data
|
|
196
190
|
* provider for a specific record. For example, a resolved `content_asset`
|
|
197
191
|
* might contain `{ title: "Winter Sale", body: "<div>…</div>" }`.
|
|
198
192
|
*/
|
|
199
|
-
|
|
200
|
-
[field: string]: unknown;
|
|
201
|
-
}
|
|
193
|
+
type ResolvedDataBinding = ShopperExperience.schemas['ResolvedDataBinding'];
|
|
202
194
|
/**
|
|
203
195
|
* The type of identifier used to look up a page. Determines how the ID is
|
|
204
196
|
* resolved to a page manifest:
|
|
@@ -213,12 +205,12 @@ type IdentifierType = 'page' | 'category' | 'product';
|
|
|
213
205
|
* filesystem, CDN, database).
|
|
214
206
|
*/
|
|
215
207
|
interface ManifestStorage {
|
|
216
|
-
/** Fetch the page manifest for a given page ID
|
|
217
|
-
getPageManifest(id: string
|
|
208
|
+
/** Fetch the page manifest for a given page ID. */
|
|
209
|
+
getPageManifest(id: string): Promise<PageManifest | null>;
|
|
218
210
|
/** Fetch the site-wide manifest for a given locale. */
|
|
219
|
-
getSiteManifest(
|
|
211
|
+
getSiteManifest(): Promise<SiteManifest | null>;
|
|
220
212
|
}
|
|
221
|
-
type ContextResolver = (context: PageManifest['context']) => Promise<QualifierContext>;
|
|
213
|
+
type ContextResolver = (context: PageManifest['context']) => Promise<QualifierContext | null>;
|
|
222
214
|
type VisitorContextType = 'page' | 'region' | 'component' | 'root';
|
|
223
215
|
type InferNodeFromType<TType extends VisitorContextType> = TType extends 'page' ? ShopperExperience.schemas['Page'] : TType extends 'region' ? ShopperExperience.schemas['Region'] : ShopperExperience.schemas['Component'];
|
|
224
216
|
//#endregion
|
|
@@ -233,8 +225,19 @@ interface PageProcessorContext {
|
|
|
233
225
|
qualifiers: QualifierContext | null;
|
|
234
226
|
/** Component visibility rule definitions extracted from the page layout. */
|
|
235
227
|
componentInfo: PageManifest['componentInfo'];
|
|
228
|
+
/** Page-level region configuration (e.g. maxComponents limits) for top-level regions not nested under a component. */
|
|
229
|
+
pageInfo: {
|
|
230
|
+
regions: VariationEntry['regions'];
|
|
231
|
+
};
|
|
236
232
|
/** The locale to use when resolving locale-specific component content (e.g. `"en_US"`). */
|
|
237
233
|
locale: string;
|
|
234
|
+
/**
|
|
235
|
+
* When `true` (default), invisible components are removed from the tree and
|
|
236
|
+
* regions are truncated to their `maxComponents` limit. When `false`, invisible
|
|
237
|
+
* components and overflow components are kept in the tree but marked with
|
|
238
|
+
* `visible: false` — used in design/preview mode so the editor can display them.
|
|
239
|
+
*/
|
|
240
|
+
pruneInvisible?: boolean;
|
|
238
241
|
}
|
|
239
242
|
/**
|
|
240
243
|
* Filters a page's components based on their visibility rules and resolves
|
|
@@ -312,6 +315,8 @@ declare class VisitorContext<TNode> {
|
|
|
312
315
|
visitor: PageVisitor;
|
|
313
316
|
/** The root page being traversed. */
|
|
314
317
|
page?: ShopperExperience.schemas['Page'];
|
|
318
|
+
/** The parent visitor context, providing access to the node that contains the current one in the page tree. */
|
|
319
|
+
parent?: VisitorContext<ShopperExperience.schemas['Page'] | ShopperExperience.schemas['Region'] | ShopperExperience.schemas['Component']>;
|
|
315
320
|
/** The parent region of the current node, if traversing within a region. */
|
|
316
321
|
parentRegion?: ShopperExperience.schemas['Region'];
|
|
317
322
|
/** The parent component of the current node, if traversing within a component's nested regions. */
|
|
@@ -326,6 +331,10 @@ declare class VisitorContext<TNode> {
|
|
|
326
331
|
* The root page being traversed.
|
|
327
332
|
*/
|
|
328
333
|
get page(): ShopperExperience.schemas['Page'] | undefined;
|
|
334
|
+
/**
|
|
335
|
+
* The parent visitor context, providing access to the node that contains the current one in the page tree.
|
|
336
|
+
*/
|
|
337
|
+
get parent(): VisitorContext<ShopperExperience.schemas['Page'] | ShopperExperience.schemas['Region'] | ShopperExperience.schemas['Component']> | undefined;
|
|
329
338
|
/**
|
|
330
339
|
* The parent region of the current node, if traversing within a region.
|
|
331
340
|
*/
|
|
@@ -568,27 +577,6 @@ declare class RequiredError extends Error {
|
|
|
568
577
|
}
|
|
569
578
|
//#endregion
|
|
570
579
|
//#region src/design/data/page/resolve-data-bindings.d.ts
|
|
571
|
-
/**
|
|
572
|
-
* Data binding metadata attached to a component instance. Stored in the
|
|
573
|
-
* component's `custom.dataBinding` field by ECOM when the author binds a
|
|
574
|
-
* data source to the component in Page Designer.
|
|
575
|
-
*/
|
|
576
|
-
interface ComponentDataBinding {
|
|
577
|
-
/** Maps attribute names to expression strings (e.g. `"content_asset.body"`). */
|
|
578
|
-
expressions: Record<string, string>;
|
|
579
|
-
/** The data contexts bound to this component, identifying the records to resolve against. */
|
|
580
|
-
contexts: DataBindingContext[];
|
|
581
|
-
}
|
|
582
|
-
/**
|
|
583
|
-
* A data context reference on a component instance, identifying a specific
|
|
584
|
-
* record from a data provider.
|
|
585
|
-
*/
|
|
586
|
-
interface DataBindingContext {
|
|
587
|
-
/** The data provider type (e.g. `"content_asset"`). */
|
|
588
|
-
type: string;
|
|
589
|
-
/** The record identifier (e.g. a content asset UUID). */
|
|
590
|
-
id: string;
|
|
591
|
-
}
|
|
592
580
|
/**
|
|
593
581
|
* Parses a binding expression string into its provider type and field name.
|
|
594
582
|
* Supports the bare `type.field` format.
|
|
@@ -619,7 +607,7 @@ declare function parseExpression(expression: string): {
|
|
|
619
607
|
* @param dataBindings - The resolved data bindings from {@link QualifierContext}.
|
|
620
608
|
* @returns The resolved value, or `''` if resolution fails.
|
|
621
609
|
*/
|
|
622
|
-
declare function resolveExpression(expression: string, contexts:
|
|
610
|
+
declare function resolveExpression(expression: string, contexts: DataBindingRequirement[], dataBindings: NonNullable<QualifierContext['dataBindings']>): unknown;
|
|
623
611
|
/**
|
|
624
612
|
* Resolves data binding expressions for a single component. Replaces attribute
|
|
625
613
|
* values in the component's `data` with the resolved values from context
|
|
@@ -631,6 +619,7 @@ declare function resolveExpression(expression: string, contexts: DataBindingCont
|
|
|
631
619
|
* `dataBindings` is `undefined`.
|
|
632
620
|
*
|
|
633
621
|
* @param component - The component to resolve data bindings for.
|
|
622
|
+
* @param binding - The component's data binding metadata from the page manifest's `componentInfo`, or `null`/`undefined` if not bound.
|
|
634
623
|
* @param dataBindings - The resolved data bindings from {@link QualifierContext}, or `undefined` if no bindings were resolved.
|
|
635
624
|
* @returns The component with resolved attribute values, or the original component if no bindings apply.
|
|
636
625
|
*
|
|
@@ -642,18 +631,17 @@ declare function resolveExpression(expression: string, contexts: DataBindingCont
|
|
|
642
631
|
* id: 'banner',
|
|
643
632
|
* typeId: 'commerce_assets.contentBanner',
|
|
644
633
|
* data: { heading: 'Fallback Title', body: 'Fallback Body' },
|
|
645
|
-
* custom: {
|
|
646
|
-
* dataBinding: {
|
|
647
|
-
* expressions: {
|
|
648
|
-
* heading: 'content_asset.title',
|
|
649
|
-
* body: 'content_asset.body',
|
|
650
|
-
* },
|
|
651
|
-
* contexts: [{ type: 'content_asset', id: 'winter-sale-uuid' }],
|
|
652
|
-
* },
|
|
653
|
-
* },
|
|
654
634
|
* regions: [],
|
|
655
635
|
* };
|
|
656
636
|
*
|
|
637
|
+
* const binding = {
|
|
638
|
+
* expressions: {
|
|
639
|
+
* heading: 'content_asset.title',
|
|
640
|
+
* body: 'content_asset.body',
|
|
641
|
+
* },
|
|
642
|
+
* contexts: [{ type: 'content_asset', id: 'winter-sale-uuid' }],
|
|
643
|
+
* };
|
|
644
|
+
*
|
|
657
645
|
* const dataBindings = {
|
|
658
646
|
* content_asset: {
|
|
659
647
|
* 'winter-sale-uuid': {
|
|
@@ -663,12 +651,12 @@ declare function resolveExpression(expression: string, contexts: DataBindingCont
|
|
|
663
651
|
* },
|
|
664
652
|
* };
|
|
665
653
|
*
|
|
666
|
-
* const resolved = resolveComponentDataBindings(component, dataBindings);
|
|
654
|
+
* const resolved = resolveComponentDataBindings(component, binding, dataBindings);
|
|
667
655
|
* // resolved.data.heading === 'Winter Sale'
|
|
668
656
|
* // resolved.data.body === '<div>Free Shipping on all orders!</div>'
|
|
669
657
|
* ```
|
|
670
658
|
*/
|
|
671
|
-
declare function resolveComponentDataBindings(component: ShopperExperience.schemas['Component'], dataBindings: QualifierContext['dataBindings']): ShopperExperience.schemas['Component'];
|
|
659
|
+
declare function resolveComponentDataBindings(component: ShopperExperience.schemas['Component'], binding: ComponentDataBinding | null | undefined, dataBindings: QualifierContext['dataBindings']): ShopperExperience.schemas['Component'];
|
|
672
660
|
//#endregion
|
|
673
661
|
//#region src/design/data/page/resolve-page.d.ts
|
|
674
662
|
/**
|
|
@@ -691,6 +679,7 @@ declare function resolveComponentDataBindings(component: ShopperExperience.schem
|
|
|
691
679
|
* @param options.manifestStorage - Storage implementation for fetching manifests.
|
|
692
680
|
* @param options.contextResolver - Optional async function that returns the shopper's qualifier context. Only called if a visibility rule needs it.
|
|
693
681
|
* @param options.aspectType - The aspect type to resolve the page for when the identifier type is `'product'` or `'category'`.
|
|
682
|
+
* @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.
|
|
694
683
|
* @returns The fully resolved and filtered page, or `null`.
|
|
695
684
|
*
|
|
696
685
|
* @example
|
|
@@ -704,12 +693,12 @@ declare function resolveComponentDataBindings(component: ShopperExperience.schem
|
|
|
704
693
|
* aspectType: 'pdp',
|
|
705
694
|
* locale: 'en-US',
|
|
706
695
|
* manifestStorage: {
|
|
707
|
-
* async getPageManifest(id
|
|
696
|
+
* async getPageManifest(id) {
|
|
708
697
|
* // Fetch from CDN, filesystem, or database
|
|
709
|
-
* return fetchManifest(`/manifests/${
|
|
698
|
+
* return fetchManifest(`/manifests/${id}.json`);
|
|
710
699
|
* },
|
|
711
|
-
* async getSiteManifest(
|
|
712
|
-
* return fetchManifest(
|
|
700
|
+
* async getSiteManifest() {
|
|
701
|
+
* return fetchManifest('/manifests/site.json');
|
|
713
702
|
* },
|
|
714
703
|
* },
|
|
715
704
|
* contextResolver: async () => ({
|
|
@@ -733,7 +722,8 @@ declare function resolvePage({
|
|
|
733
722
|
aspectType,
|
|
734
723
|
locale,
|
|
735
724
|
manifestStorage,
|
|
736
|
-
contextResolver
|
|
725
|
+
contextResolver,
|
|
726
|
+
pruneInvisible
|
|
737
727
|
}: {
|
|
738
728
|
id: string;
|
|
739
729
|
identifierType: IdentifierType;
|
|
@@ -741,6 +731,7 @@ declare function resolvePage({
|
|
|
741
731
|
locale: string;
|
|
742
732
|
manifestStorage: ManifestStorage;
|
|
743
733
|
contextResolver?: ContextResolver;
|
|
734
|
+
pruneInvisible?: boolean;
|
|
744
735
|
}): Promise<ShopperExperience.schemas['Page'] | null>;
|
|
745
736
|
//#endregion
|
|
746
737
|
//#region src/design/data/manifest/resolve-dynamic-page-id.d.ts
|
|
@@ -802,7 +793,7 @@ declare function resolveDynamicPageId<TIdentifier extends IdentifierType = Ident
|
|
|
802
793
|
id: string;
|
|
803
794
|
identifierType: TIdentifier;
|
|
804
795
|
aspectType: string;
|
|
805
|
-
siteManifest?: SiteManifest;
|
|
796
|
+
siteManifest?: SiteManifest | null;
|
|
806
797
|
}): string | null;
|
|
807
798
|
//#endregion
|
|
808
799
|
//#region src/design/data/manifest/get-page.d.ts
|
|
@@ -835,6 +826,7 @@ declare function resolveDynamicPageId<TIdentifier extends IdentifierType = Ident
|
|
|
835
826
|
* pageRequiresContext: false,
|
|
836
827
|
* visibilityRule: { activeLocales: ['en-US'], customerGroups: ['vip-customers'] },
|
|
837
828
|
* page: { id: 'homepage', typeId: 'storePage', regions: [] },
|
|
829
|
+
* regions: {},
|
|
838
830
|
* },
|
|
839
831
|
* 'holiday-homepage': {
|
|
840
832
|
* ruleRequiresContext: false,
|
|
@@ -847,11 +839,13 @@ declare function resolveDynamicPageId<TIdentifier extends IdentifierType = Ident
|
|
|
847
839
|
* },
|
|
848
840
|
* },
|
|
849
841
|
* page: { id: 'homepage', typeId: 'storePage', regions: [] },
|
|
842
|
+
* regions: {},
|
|
850
843
|
* },
|
|
851
844
|
* 'default-homepage': {
|
|
852
845
|
* ruleRequiresContext: false,
|
|
853
846
|
* pageRequiresContext: false,
|
|
854
847
|
* page: { id: 'homepage', typeId: 'storePage', regions: [] },
|
|
848
|
+
* regions: {},
|
|
855
849
|
* },
|
|
856
850
|
* },
|
|
857
851
|
* defaultVariation: 'default-homepage',
|
|
@@ -907,7 +901,7 @@ interface ResolvedContentAssignmentLookup {
|
|
|
907
901
|
* into a {@link ResolvedContentAssignmentLookup} describing where to search
|
|
908
902
|
* in the site manifest for the assigned page ID.
|
|
909
903
|
*/
|
|
910
|
-
type ContentAssignmentResolver = (key: string, manifest?: SiteManifest) => ResolvedContentAssignmentLookup;
|
|
904
|
+
type ContentAssignmentResolver = (key: string, manifest?: SiteManifest | null) => ResolvedContentAssignmentLookup;
|
|
911
905
|
/**
|
|
912
906
|
* Registry of content assignment resolvers keyed by {@link IdentifierType}.
|
|
913
907
|
* Each resolver knows how to convert its identifier type into a set of lookup
|
|
@@ -992,5 +986,5 @@ declare const ContentAssignmentResolvers: Map<string, ContentAssignmentResolver>
|
|
|
992
986
|
*/
|
|
993
987
|
declare function validateRule(rule: VisibilityRuleDef, locale: string, context?: QualifierContext | null): boolean;
|
|
994
988
|
//#endregion
|
|
995
|
-
export { CampaignQualifier,
|
|
989
|
+
export { CampaignQualifier, ComponentDataBinding, ContentAssignmentResolvers, ContextResolver, DataBindingRequirement, IdentifierType, InferNodeFromType, ManifestStorage, PageManifest, PageManifestContext, type PageProcessorContext, type PageVisitor, QualifierContext, RegionInfo, RequiredError, ResolvedDataBinding, SiteManifest, VariationEntry, VisibilityRuleDef, type VisitorContext, VisitorContextType, getPageFromManifest, parseExpression, processPage, resolveComponentDataBindings, resolveDynamicPageId, resolveExpression, resolvePage, transformComponent, transformPage, transformRegion, validateRule };
|
|
996
990
|
//# sourceMappingURL=design-data.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-data.d.ts","names":[],"sources":["../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"],"sourcesContent":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"design-data.d.ts","names":[],"sources":["../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"],"sourcesContent":[],"mappings":"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"}
|