@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.
- package/CHANGELOG.md +129 -0
- package/dist/core/client/create-client.d.ts.map +1 -1
- package/dist/core/client/create-client.js +8 -1
- package/dist/core/client/remote-debug-transport.d.ts +48 -0
- package/dist/core/client/remote-debug-transport.d.ts.map +1 -0
- package/dist/core/client/remote-debug-transport.js +198 -0
- package/dist/core/client/types.d.ts +51 -1
- package/dist/core/client/types.d.ts.map +1 -1
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -0
- package/dist/react/cookies.d.ts +16 -23
- package/dist/react/cookies.d.ts.map +1 -1
- package/dist/react/cookies.js +16 -51
- package/dist/react/hooks/use-cart-manager.d.ts +7 -0
- package/dist/react/hooks/use-cart-manager.d.ts.map +1 -1
- package/dist/react/hooks/use-cart-manager.js +5 -2
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +3 -2
- package/dist/react/providers/cart-manager-provider.d.ts +8 -1
- package/dist/react/providers/cart-manager-provider.d.ts.map +1 -1
- package/dist/react/providers/cart-manager-provider.js +2 -1
- package/dist/react/providers/storefront-provider.d.ts +12 -1
- package/dist/react/providers/storefront-provider.d.ts.map +1 -1
- package/dist/react/providers/storefront-provider.js +4 -3
- package/dist/react/server/cookie-readers.d.ts +29 -0
- package/dist/react/server/cookie-readers.d.ts.map +1 -0
- package/dist/react/server/cookie-readers.js +52 -0
- package/dist/react/server/index.d.ts +1 -0
- package/dist/react/server/index.d.ts.map +1 -1
- package/dist/react/server/index.js +2 -0
- package/dist/react/stores/currency.store.d.ts +6 -1
- package/dist/react/stores/currency.store.d.ts.map +1 -1
- package/dist/react/stores/currency.store.js +49 -41
- package/dist/react/stores/language.store.d.ts +6 -1
- package/dist/react/stores/language.store.d.ts.map +1 -1
- package/dist/react/stores/language.store.js +46 -38
- 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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
language
|
|
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
|
-
|
|
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": "
|
|
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,
|