@salesforce/storefront-next-runtime 0.2.0-alpha.2 → 0.3.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.
Files changed (42) hide show
  1. package/dist/DesignFrame.js +6 -2
  2. package/dist/DesignFrame.js.map +1 -1
  3. package/dist/DesignRegion.js +2 -1
  4. package/dist/DesignRegion.js.map +1 -1
  5. package/dist/component.types.d.ts +6 -0
  6. package/dist/component.types.d.ts.map +1 -1
  7. package/dist/config-load.d.ts +27 -0
  8. package/dist/config-load.d.ts.map +1 -0
  9. package/dist/config-load.js +3 -0
  10. package/dist/config.d.ts +248 -1
  11. package/dist/config.d.ts.map +1 -0
  12. package/dist/config.js +429 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/design-data.d.ts +40 -27
  15. package/dist/design-data.d.ts.map +1 -1
  16. package/dist/design-data.js +50 -26
  17. package/dist/design-data.js.map +1 -1
  18. package/dist/design-react-core.d.ts +2 -2
  19. package/dist/design-react-core.js +3 -1
  20. package/dist/design-react-core.js.map +1 -1
  21. package/dist/events.d.ts +9 -4
  22. package/dist/events.d.ts.map +1 -1
  23. package/dist/events.js +6 -6
  24. package/dist/events.js.map +1 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/load-config.js +41 -0
  27. package/dist/load-config.js.map +1 -0
  28. package/dist/multi-site.d.ts +68 -43
  29. package/dist/multi-site.d.ts.map +1 -1
  30. package/dist/multi-site.js +36 -10
  31. package/dist/multi-site.js.map +1 -1
  32. package/dist/routing.d.ts.map +1 -1
  33. package/dist/routing.js +4 -37
  34. package/dist/routing.js.map +1 -1
  35. package/dist/scapi.d.ts +8 -0
  36. package/dist/scapi.d.ts.map +1 -1
  37. package/dist/scapi.js +1 -1
  38. package/dist/scapi.js.map +1 -1
  39. package/dist/schema.d.ts +78 -0
  40. package/dist/schema.d.ts.map +1 -0
  41. package/dist/types.d.ts.map +1 -1
  42. package/package.json +7 -1
@@ -0,0 +1,78 @@
1
+ //#region src/config/schema.d.ts
2
+ /**
3
+ * Base configuration type for storefront-next projects.
4
+ *
5
+ * Generic parameter `App` represents the template's application config shape.
6
+ * The SDK does not prescribe what fields `app` must contain — templates define
7
+ * their own `AppConfig` type with SCAPI credentials, pages, features, etc.
8
+ * and pass it as `BaseConfig<AppConfig>`.
9
+ *
10
+ * The SDK accesses specific `app` fields (e.g., `commerce.api.clientId`) at
11
+ * runtime via the middleware validation, not via compile-time type constraints.
12
+ *
13
+ * @typeParam App - The template's application config shape (defaults to `Record<string, unknown>`)
14
+ *
15
+ * @example
16
+ * // In the template's types file:
17
+ * type AppConfig = { commerce: { api: {...} }; pages: {...}; features: {...} };
18
+ * type Config = BaseConfig<AppConfig>;
19
+ *
20
+ * // In config.server.ts:
21
+ * export default defineConfig<Config>({ metadata: {...}, app: {...} });
22
+ */
23
+ type BaseConfig<App extends Record<string, unknown> = Record<string, unknown>> = {
24
+ metadata: {
25
+ projectName: string;
26
+ projectSlug: string;
27
+ };
28
+ runtime?: {
29
+ defaultMrtProject?: string;
30
+ defaultMrtTarget?: string;
31
+ ssrOnly?: string[];
32
+ ssrShared?: string[];
33
+ ssrParameters?: Record<string, string | number | boolean>;
34
+ };
35
+ app: App;
36
+ };
37
+ interface DefineConfigOptions {
38
+ /**
39
+ * Config paths that cannot be overridden by environment variables.
40
+ * Paths use double underscore separators and are matched case-insensitively.
41
+ *
42
+ * @example ['app__engagement'] — prevents PUBLIC__app__engagement__* from being set via env
43
+ */
44
+ protectedPaths?: string[];
45
+ }
46
+ /**
47
+ * Define a type-safe storefront configuration with IDE autocomplete.
48
+ *
49
+ * Automatically merges `PUBLIC__` prefixed environment variables into the config
50
+ * at load time. Validates env vars against the base config structure (strict mode —
51
+ * only allows overriding existing paths).
52
+ *
53
+ * Environment variables:
54
+ * - `PUBLIC__<path>` (optional): Override any config path using double underscore separators.
55
+ * e.g. `PUBLIC__app__commerce__api__clientId=abc123` maps to `config.app.commerce.api.clientId`
56
+ * - `PUBLIC__app__pages__cart__quantityUpdateDebounce=1000` maps to a number (optimistic JSON parsing)
57
+ * - `PUBLIC__app__features__socialLogin__providers=["Apple","Google"]` maps to an array
58
+ *
59
+ * @param config - The base configuration object with all defaults
60
+ * @param options - Optional settings (e.g., protectedPaths to prevent env var overrides)
61
+ * @returns The config with environment variable overrides merged in
62
+ *
63
+ * @example
64
+ * // In config.server.ts:
65
+ * import { defineConfig } from '@salesforce/storefront-next-runtime/config';
66
+ *
67
+ * export default defineConfig({
68
+ * metadata: { projectName: 'My Store', projectSlug: 'my-store' },
69
+ * app: {
70
+ * commerce: { api: { clientId: '', organizationId: '', shortCode: '' }, sites: [] },
71
+ * defaultSiteId: 'RefArch',
72
+ * },
73
+ * }, { protectedPaths: ['app__engagement'] });
74
+ */
75
+ declare function defineConfig<T extends BaseConfig>(config: T, options?: DefineConfigOptions): T;
76
+ //#endregion
77
+ export { DefineConfigOptions as n, defineConfig as r, BaseConfig as t };
78
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","names":[],"sources":["../src/config/schema.ts"],"sourcesContent":[],"mappings":";;AAsCA;;;;;;AAeA;AAuCA;;;;;;;;;;;;;KAtDY,uBAAuB,0BAA0B;;;;;;;;;;oBAUrC;;OAEf;;UAGQ,mBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuCD,uBAAuB,oBAAoB,aAAa,sBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../src/config/types.ts"],"sourcesContent":[],"mappings":";;AAiBA;AAKA;AAYA;;;;;;;;;;;;KAjBY,MAAA;;;;KAKA,IAAA;;;;;;;;;oBASU,MAAM;;KAGhB,GAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../src/config/types.ts"],"sourcesContent":[],"mappings":";;AAgBA;AAKA;AAYA;;;;;;;;;;;;KAjBY,MAAA;;;;KAKA,IAAA;;;;;;;;;oBASU,MAAM;;KAGhB,GAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/storefront-next-runtime",
3
- "version": "0.2.0-alpha.2",
3
+ "version": "0.3.0-alpha.0",
4
4
  "description": "Runtime agnostic libraries for SFCC Storefront Next",
5
5
  "type": "module",
6
6
  "exports": {
@@ -50,6 +50,12 @@
50
50
  "default": "./dist/config.js"
51
51
  }
52
52
  },
53
+ "./config/load-config": {
54
+ "import": {
55
+ "types": "./dist/config-load.d.ts",
56
+ "default": "./dist/config-load.js"
57
+ }
58
+ },
53
59
  "./events": {
54
60
  "import": {
55
61
  "types": "./dist/events.d.ts",