@doswiftly/storefront-sdk 18.1.0 → 19.1.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 (39) hide show
  1. package/CHANGELOG.md +129 -0
  2. package/dist/core/client/create-client.d.ts.map +1 -1
  3. package/dist/core/client/create-client.js +8 -1
  4. package/dist/core/client/remote-debug-transport.d.ts +48 -0
  5. package/dist/core/client/remote-debug-transport.d.ts.map +1 -0
  6. package/dist/core/client/remote-debug-transport.js +198 -0
  7. package/dist/core/client/types.d.ts +51 -1
  8. package/dist/core/client/types.d.ts.map +1 -1
  9. package/dist/core/index.d.ts +3 -1
  10. package/dist/core/index.d.ts.map +1 -1
  11. package/dist/core/index.js +3 -0
  12. package/dist/react/cookies.d.ts +16 -23
  13. package/dist/react/cookies.d.ts.map +1 -1
  14. package/dist/react/cookies.js +16 -51
  15. package/dist/react/hooks/use-cart-manager.d.ts +7 -0
  16. package/dist/react/hooks/use-cart-manager.d.ts.map +1 -1
  17. package/dist/react/hooks/use-cart-manager.js +5 -2
  18. package/dist/react/index.d.ts +1 -1
  19. package/dist/react/index.d.ts.map +1 -1
  20. package/dist/react/index.js +3 -2
  21. package/dist/react/providers/cart-manager-provider.d.ts +8 -1
  22. package/dist/react/providers/cart-manager-provider.d.ts.map +1 -1
  23. package/dist/react/providers/cart-manager-provider.js +2 -1
  24. package/dist/react/providers/storefront-provider.d.ts +12 -1
  25. package/dist/react/providers/storefront-provider.d.ts.map +1 -1
  26. package/dist/react/providers/storefront-provider.js +4 -3
  27. package/dist/react/server/cookie-readers.d.ts +29 -0
  28. package/dist/react/server/cookie-readers.d.ts.map +1 -0
  29. package/dist/react/server/cookie-readers.js +52 -0
  30. package/dist/react/server/index.d.ts +1 -0
  31. package/dist/react/server/index.d.ts.map +1 -1
  32. package/dist/react/server/index.js +2 -0
  33. package/dist/react/stores/currency.store.d.ts +6 -1
  34. package/dist/react/stores/currency.store.d.ts.map +1 -1
  35. package/dist/react/stores/currency.store.js +49 -41
  36. package/dist/react/stores/language.store.d.ts +6 -1
  37. package/dist/react/stores/language.store.d.ts.map +1 -1
  38. package/dist/react/stores/language.store.js +46 -38
  39. package/package.json +1 -1
@@ -19,45 +19,53 @@
19
19
  import { createStore } from 'zustand/vanilla';
20
20
  import { LANGUAGE_COOKIE_NAME, LANGUAGE_COOKIE_MAX_AGE } from '../../core/language/cookie-config';
21
21
  import { getCookie, setCookie } from '../cookies';
22
- export const createLanguageStore = (initialLanguage) => createStore()((set, get) => ({
23
- defaultLanguage: null,
24
- supportedLanguages: [],
25
- language: initialLanguage ?? null,
26
- isLoaded: false,
27
- initialize: (shopData) => {
28
- const supported = shopData.supportedLanguages ?? [];
29
- const current = get().language;
30
- const saved = getCookie(LANGUAGE_COOKIE_NAME);
31
- // Priority: current (from initialLanguage/URL) > cookie (validated) > default
32
- const finalLanguage = current && (supported.length === 0 || supported.includes(current))
33
- ? current
34
- : saved && (supported.length === 0 || supported.includes(saved))
35
- ? saved
36
- : shopData.defaultLanguage ?? null;
37
- set({
38
- defaultLanguage: shopData.defaultLanguage ?? null,
39
- supportedLanguages: supported,
40
- language: finalLanguage,
41
- isLoaded: true,
42
- });
43
- // Persist cookie if determined from fallback (not already saved)
44
- if (finalLanguage && finalLanguage !== saved) {
45
- setCookie(LANGUAGE_COOKIE_NAME, finalLanguage, { maxAge: LANGUAGE_COOKIE_MAX_AGE });
46
- }
47
- },
48
- setLanguage: (language) => {
49
- const { supportedLanguages } = get();
50
- // Validate vs supported (bypass if empty — LanguageSyncProvider may call before initialize)
51
- if (supportedLanguages.length > 0 && !supportedLanguages.includes(language)) {
52
- console.warn(`[LanguageStore] Language ${language} not supported`);
53
- return;
54
- }
55
- if (get().language === language)
56
- return;
22
+ import { cookieDebugEvent } from '../../core/client/remote-debug-transport';
23
+ export const createLanguageStore = (initialLanguage, options) => {
24
+ const emit = options?.onDebug;
25
+ const persist = (language) => {
57
26
  setCookie(LANGUAGE_COOKIE_NAME, language, { maxAge: LANGUAGE_COOKIE_MAX_AGE });
58
- set({ language });
59
- },
60
- }));
27
+ emit?.(cookieDebugEvent(LANGUAGE_COOKIE_NAME, 'set', language, LANGUAGE_COOKIE_MAX_AGE));
28
+ };
29
+ return createStore()((set, get) => ({
30
+ defaultLanguage: null,
31
+ supportedLanguages: [],
32
+ language: initialLanguage ?? null,
33
+ isLoaded: false,
34
+ initialize: (shopData) => {
35
+ const supported = shopData.supportedLanguages ?? [];
36
+ const current = get().language;
37
+ const saved = getCookie(LANGUAGE_COOKIE_NAME);
38
+ // Priority: current (from initialLanguage/URL) > cookie (validated) > default
39
+ const finalLanguage = current && (supported.length === 0 || supported.includes(current))
40
+ ? current
41
+ : saved && (supported.length === 0 || supported.includes(saved))
42
+ ? saved
43
+ : shopData.defaultLanguage ?? null;
44
+ set({
45
+ defaultLanguage: shopData.defaultLanguage ?? null,
46
+ supportedLanguages: supported,
47
+ language: finalLanguage,
48
+ isLoaded: true,
49
+ });
50
+ // Persist cookie if determined from fallback (not already saved)
51
+ if (finalLanguage && finalLanguage !== saved) {
52
+ persist(finalLanguage);
53
+ }
54
+ },
55
+ setLanguage: (language) => {
56
+ const { supportedLanguages } = get();
57
+ // Validate vs supported (bypass if empty — LanguageSyncProvider may call before initialize)
58
+ if (supportedLanguages.length > 0 && !supportedLanguages.includes(language)) {
59
+ console.warn(`[LanguageStore] Language ${language} not supported`);
60
+ return;
61
+ }
62
+ if (get().language === language)
63
+ return;
64
+ persist(language);
65
+ set({ language });
66
+ },
67
+ }));
68
+ };
61
69
  // ---------------------------------------------------------------------------
62
70
  // Selectors (for use with useLanguageStore(selector))
63
71
  // ---------------------------------------------------------------------------
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doswiftly/storefront-sdk",
3
- "version": "18.1.0",
3
+ "version": "19.1.0",
4
4
  "description": "Storefront runtime SDK for DoSwiftly Commerce — layered transport, middleware pipeline, React providers, Zustand stores, cache strategies. 0 runtime dependencies in core.",
5
5
  "type": "module",
6
6
  "sideEffects": false,