@viu/emporix-sdk-react 2.11.0 → 2.13.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 +16 -0
- package/dist/{chunk-SMJ5IQZJ.js → chunk-4YDWCA7A.js} +51 -6
- package/dist/chunk-4YDWCA7A.js.map +1 -0
- package/dist/{chunk-KLLY4YD7.js → chunk-KOVOQJ5F.js} +82 -67
- package/dist/chunk-KOVOQJ5F.js.map +1 -0
- package/dist/{chunk-FBQY2N7S.js → chunk-VMDBYVWG.js} +21 -2
- package/dist/chunk-VMDBYVWG.js.map +1 -0
- package/dist/hooks.cjs +79 -63
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.cts +2 -2
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +3 -3
- package/dist/index.cjs +146 -66
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/{provider--y2yz3Jj.d.ts → provider-Bcb-tOpS.d.ts} +17 -2
- package/dist/{provider-CfgMAu8B.d.cts → provider-Ddo7aSOI.d.cts} +17 -2
- package/dist/provider.cjs +54 -3
- package/dist/provider.cjs.map +1 -1
- package/dist/provider.d.cts +1 -1
- package/dist/provider.d.ts +1 -1
- package/dist/provider.js +2 -2
- package/dist/storage.cjs +19 -0
- package/dist/storage.cjs.map +1 -1
- package/dist/storage.d.cts +3 -1
- package/dist/storage.d.ts +3 -1
- package/dist/storage.js +1 -1
- package/dist/{use-returns-DDH_HnPS.d.cts → use-returns-DT98Ptod.d.cts} +9 -2
- package/dist/{use-returns-vxGoBH1I.d.ts → use-returns-uZJiO46w.d.ts} +9 -2
- package/package.json +3 -3
- package/dist/chunk-FBQY2N7S.js.map +0 -1
- package/dist/chunk-KLLY4YD7.js.map +0 -1
- package/dist/chunk-SMJ5IQZJ.js.map +0 -1
package/dist/storage.cjs
CHANGED
|
@@ -6,6 +6,7 @@ function createMemoryStorage(opts = {}) {
|
|
|
6
6
|
let cartId = null;
|
|
7
7
|
let anon = null;
|
|
8
8
|
let siteCode = null;
|
|
9
|
+
let language = null;
|
|
9
10
|
let activeLegalEntityId = null;
|
|
10
11
|
let refreshToken = null;
|
|
11
12
|
const tokenListeners = /* @__PURE__ */ new Set();
|
|
@@ -36,6 +37,11 @@ function createMemoryStorage(opts = {}) {
|
|
|
36
37
|
siteCode = code;
|
|
37
38
|
all.notify("siteCode");
|
|
38
39
|
},
|
|
40
|
+
getLanguage: () => language,
|
|
41
|
+
setLanguage: (l) => {
|
|
42
|
+
language = l;
|
|
43
|
+
all.notify("language");
|
|
44
|
+
},
|
|
39
45
|
getActiveLegalEntityId: () => activeLegalEntityId,
|
|
40
46
|
setActiveLegalEntityId: (id) => {
|
|
41
47
|
activeLegalEntityId = id;
|
|
@@ -55,6 +61,7 @@ var DEFAULT_TOKEN_KEY = "emporix.customerToken";
|
|
|
55
61
|
var CART_KEY = "emporix.cartId";
|
|
56
62
|
var ANON_KEY = "emporix.anonymousSession";
|
|
57
63
|
var SITE_KEY = "emporix.siteCode";
|
|
64
|
+
var LANGUAGE_KEY = "emporix.language";
|
|
58
65
|
var ACTIVE_LE_KEY = "emporix.activeLegalEntityId";
|
|
59
66
|
var REFRESH_KEY = "emporix.refreshToken";
|
|
60
67
|
function createLocalStorageStorage(opts = {}) {
|
|
@@ -97,6 +104,12 @@ function createLocalStorageStorage(opts = {}) {
|
|
|
97
104
|
else ls.setItem(SITE_KEY, code);
|
|
98
105
|
all.notify("siteCode");
|
|
99
106
|
},
|
|
107
|
+
getLanguage: () => ls.getItem(LANGUAGE_KEY),
|
|
108
|
+
setLanguage: (l) => {
|
|
109
|
+
if (l === null) ls.removeItem(LANGUAGE_KEY);
|
|
110
|
+
else ls.setItem(LANGUAGE_KEY, l);
|
|
111
|
+
all.notify("language");
|
|
112
|
+
},
|
|
100
113
|
getActiveLegalEntityId: () => ls.getItem(ACTIVE_LE_KEY),
|
|
101
114
|
setActiveLegalEntityId: (id) => {
|
|
102
115
|
if (id === null) ls.removeItem(ACTIVE_LE_KEY);
|
|
@@ -118,6 +131,7 @@ var DEFAULT_TOKEN_NAME = "emporix.customerToken";
|
|
|
118
131
|
var CART_NAME = "emporix.cartId";
|
|
119
132
|
var ANON_NAME = "emporix.anonymousSession";
|
|
120
133
|
var SITE_NAME = "emporix.siteCode";
|
|
134
|
+
var LANGUAGE_NAME = "emporix.language";
|
|
121
135
|
var ACTIVE_LE_NAME = "emporix.activeLegalEntityId";
|
|
122
136
|
var REFRESH_NAME = "emporix.refreshToken";
|
|
123
137
|
function createCookieStorage(opts = {}) {
|
|
@@ -164,6 +178,11 @@ function createCookieStorage(opts = {}) {
|
|
|
164
178
|
writeCookie(SITE_NAME, code);
|
|
165
179
|
all.notify("siteCode");
|
|
166
180
|
},
|
|
181
|
+
getLanguage: () => readCookie(LANGUAGE_NAME),
|
|
182
|
+
setLanguage: (l) => {
|
|
183
|
+
writeCookie(LANGUAGE_NAME, l);
|
|
184
|
+
all.notify("language");
|
|
185
|
+
},
|
|
167
186
|
getActiveLegalEntityId: () => readCookie(ACTIVE_LE_NAME),
|
|
168
187
|
setActiveLegalEntityId: (id) => {
|
|
169
188
|
writeCookie(ACTIVE_LE_NAME, id);
|
package/dist/storage.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/storage/memory.ts","../src/storage/local-storage.ts","../src/storage/cookie.ts","../src/storage/index.ts"],"names":[],"mappings":"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","file":"storage.cjs","sourcesContent":["import {\n createListenerSet,\n type EmporixStorage,\n type EmporixStorageKey,\n type PersistedAnonymousSession,\n} from \"./index\";\n\n/** In-memory token store. Default, SSR-safe, no persistence. */\nexport function createMemoryStorage(opts: { initial?: string } = {}): EmporixStorage {\n let token: string | null = opts.initial ?? null;\n let cartId: string | null = null;\n let anon: PersistedAnonymousSession | null = null;\n let siteCode: string | null = null;\n let activeLegalEntityId: string | null = null;\n let refreshToken: string | null = null;\n const tokenListeners = new Set<(t: string | null) => void>();\n const all = createListenerSet<EmporixStorageKey>();\n return {\n getCustomerToken: () => token,\n setCustomerToken: (t) => {\n token = t;\n for (const l of tokenListeners) l(token);\n all.notify(\"customerToken\");\n },\n subscribe: (l) => {\n tokenListeners.add(l);\n return () => tokenListeners.delete(l);\n },\n getCartId: () => cartId,\n setCartId: (id) => {\n cartId = id;\n all.notify(\"cartId\");\n },\n getAnonymousSession: () => anon,\n setAnonymousSession: (s) => {\n anon = s;\n all.notify(\"anonymousSession\");\n },\n getSiteCode: () => siteCode,\n setSiteCode: (code) => {\n siteCode = code;\n all.notify(\"siteCode\");\n },\n getActiveLegalEntityId: () => activeLegalEntityId,\n setActiveLegalEntityId: (id) => {\n activeLegalEntityId = id;\n all.notify(\"activeLegalEntityId\");\n },\n getRefreshToken: () => refreshToken,\n setRefreshToken: (t) => {\n refreshToken = t;\n all.notify(\"refreshToken\");\n },\n subscribeAll: (l) => all.add(l),\n };\n}\n","import {\n createListenerSet,\n parseAnonymousSession,\n type EmporixStorage,\n type EmporixStorageKey,\n} from \"./index\";\nimport { createMemoryStorage } from \"./memory\";\n\nconst DEFAULT_TOKEN_KEY = \"emporix.customerToken\";\nconst CART_KEY = \"emporix.cartId\";\nconst ANON_KEY = \"emporix.anonymousSession\";\nconst SITE_KEY = \"emporix.siteCode\";\nconst ACTIVE_LE_KEY = \"emporix.activeLegalEntityId\";\nconst REFRESH_KEY = \"emporix.refreshToken\";\n\n/** Browser `localStorage`-backed store. Falls back to memory on the server. */\nexport function createLocalStorageStorage(opts: { key?: string } = {}): EmporixStorage {\n const tokenKey = opts.key ?? DEFAULT_TOKEN_KEY;\n const available =\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as { localStorage?: Storage }).localStorage !== \"undefined\";\n if (!available) {\n // eslint-disable-next-line no-console\n console.warn(\"[emporix] localStorage unavailable; falling back to in-memory storage\");\n return createMemoryStorage();\n }\n const ls = (globalThis as unknown as { localStorage: Storage }).localStorage;\n const tokenListeners = new Set<(t: string | null) => void>();\n const all = createListenerSet<EmporixStorageKey>();\n return {\n getCustomerToken: () => ls.getItem(tokenKey),\n setCustomerToken: (t) => {\n if (t === null) ls.removeItem(tokenKey);\n else ls.setItem(tokenKey, t);\n for (const l of tokenListeners) l(t);\n all.notify(\"customerToken\");\n },\n subscribe: (l) => {\n tokenListeners.add(l);\n return () => tokenListeners.delete(l);\n },\n getCartId: () => ls.getItem(CART_KEY),\n setCartId: (id) => {\n if (id === null) ls.removeItem(CART_KEY);\n else ls.setItem(CART_KEY, id);\n all.notify(\"cartId\");\n },\n getAnonymousSession: () => parseAnonymousSession(ls.getItem(ANON_KEY)),\n setAnonymousSession: (s) => {\n if (s === null) ls.removeItem(ANON_KEY);\n else ls.setItem(ANON_KEY, JSON.stringify({ refreshToken: s.refreshToken, sessionId: s.sessionId }));\n all.notify(\"anonymousSession\");\n },\n getSiteCode: () => ls.getItem(SITE_KEY),\n setSiteCode: (code) => {\n if (code === null) ls.removeItem(SITE_KEY);\n else ls.setItem(SITE_KEY, code);\n all.notify(\"siteCode\");\n },\n getActiveLegalEntityId: () => ls.getItem(ACTIVE_LE_KEY),\n setActiveLegalEntityId: (id) => {\n if (id === null) ls.removeItem(ACTIVE_LE_KEY);\n else ls.setItem(ACTIVE_LE_KEY, id);\n all.notify(\"activeLegalEntityId\");\n },\n getRefreshToken: () => ls.getItem(REFRESH_KEY),\n setRefreshToken: (t) => {\n if (t === null) ls.removeItem(REFRESH_KEY);\n else ls.setItem(REFRESH_KEY, t);\n all.notify(\"refreshToken\");\n },\n subscribeAll: (l) => all.add(l),\n };\n}\n","import {\n createListenerSet,\n parseAnonymousSession,\n type EmporixStorage,\n type EmporixStorageKey,\n} from \"./index\";\nimport { createMemoryStorage } from \"./memory\";\n\nconst DEFAULT_TOKEN_NAME = \"emporix.customerToken\";\nconst CART_NAME = \"emporix.cartId\";\nconst ANON_NAME = \"emporix.anonymousSession\";\nconst SITE_NAME = \"emporix.siteCode\";\nconst ACTIVE_LE_NAME = \"emporix.activeLegalEntityId\";\nconst REFRESH_NAME = \"emporix.refreshToken\";\n\n/** Cookie-backed store. Consumer must set SameSite/Secure for CSRF safety. */\nexport function createCookieStorage(\n opts: { name?: string; secure?: boolean; sameSite?: \"lax\" | \"strict\" | \"none\" } = {},\n): EmporixStorage {\n const tokenName = opts.name ?? DEFAULT_TOKEN_NAME;\n const sameSite = opts.sameSite ?? \"lax\";\n const secure = opts.secure ?? false;\n if (typeof document === \"undefined\") {\n // eslint-disable-next-line no-console\n console.warn(\"[emporix] document unavailable; cookie storage falling back to in-memory\");\n return createMemoryStorage();\n }\n const attrs = `path=/; SameSite=${sameSite}${secure ? \"; Secure\" : \"\"}`;\n const readCookie = (name: string): string | null => {\n for (const part of document.cookie.split(\"; \")) {\n const [k, ...v] = part.split(\"=\");\n if (k === name) return decodeURIComponent(v.join(\"=\")) || null;\n }\n return null;\n };\n const writeCookie = (name: string, value: string | null): void => {\n document.cookie =\n value === null\n ? `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; ${attrs}`\n : `${name}=${encodeURIComponent(value)}; ${attrs}`;\n };\n const all = createListenerSet<EmporixStorageKey>();\n return {\n getCustomerToken: () => readCookie(tokenName),\n setCustomerToken: (t) => {\n writeCookie(tokenName, t);\n all.notify(\"customerToken\");\n },\n getCartId: () => readCookie(CART_NAME),\n setCartId: (id) => {\n writeCookie(CART_NAME, id);\n all.notify(\"cartId\");\n },\n getAnonymousSession: () => parseAnonymousSession(readCookie(ANON_NAME)),\n setAnonymousSession: (s) => {\n writeCookie(\n ANON_NAME,\n s === null\n ? null\n : JSON.stringify({ refreshToken: s.refreshToken, sessionId: s.sessionId }),\n );\n all.notify(\"anonymousSession\");\n },\n getSiteCode: () => readCookie(SITE_NAME),\n setSiteCode: (code) => {\n writeCookie(SITE_NAME, code);\n all.notify(\"siteCode\");\n },\n getActiveLegalEntityId: () => readCookie(ACTIVE_LE_NAME),\n setActiveLegalEntityId: (id) => {\n writeCookie(ACTIVE_LE_NAME, id);\n all.notify(\"activeLegalEntityId\");\n },\n getRefreshToken: () => readCookie(REFRESH_NAME),\n setRefreshToken: (t) => {\n writeCookie(REFRESH_NAME, t);\n all.notify(\"refreshToken\");\n },\n subscribeAll: (l) => all.add(l),\n };\n}\n","/** Pluggable persistence for SDK session state. SSR-safe by default (memory). */\nexport interface EmporixStorage {\n // Customer token (unchanged).\n getCustomerToken(): string | null;\n setCustomerToken(token: string | null): void;\n subscribe?(listener: (token: string | null) => void): () => void;\n\n // Active guest / customer cart id.\n getCartId(): string | null;\n setCartId(id: string | null): void;\n\n // Anonymous session — used by DefaultTokenProvider (via EmporixProvider\n // wiring) to preserve sessionId across page reloads.\n getAnonymousSession(): PersistedAnonymousSession | null;\n setAnonymousSession(session: PersistedAnonymousSession | null): void;\n\n // Active site code (MS-2). `null` = no site bound yet.\n getSiteCode(): string | null;\n setSiteCode(code: string | null): void;\n\n // Active legal entity id (B2B). `null` = B2C mode.\n getActiveLegalEntityId(): string | null;\n setActiveLegalEntityId(id: string | null): void;\n\n // Refresh token — optional persistence. When absent, B2B company-switch\n // falls back to a local-state-only update (no server-side token rescope).\n getRefreshToken(): string | null;\n setRefreshToken(token: string | null): void;\n\n /**\n * Subscribe to any storage write. The listener receives the key that\n * changed. Returns an unsubscribe function. Optional — backends may no-op.\n * Used by the telemetry layer to emit `storage.write` events.\n */\n subscribeAll?(\n listener: (key: EmporixStorageKey) => void,\n ): () => void;\n}\n\n/** Minimal subset of `AnonymousSession` that needs to outlive a page load. */\nexport interface PersistedAnonymousSession {\n refreshToken: string;\n sessionId: string;\n}\n\n/** Backward-compat alias. New code should prefer `EmporixStorage`. */\nexport type TokenStorage = EmporixStorage;\n\n/** Keys that participate in {@link EmporixStorage.subscribeAll}. */\nexport type EmporixStorageKey =\n | \"customerToken\"\n | \"cartId\"\n | \"siteCode\"\n | \"anonymousSession\"\n | \"activeLegalEntityId\"\n | \"refreshToken\";\n\n/**\n * Internal: create a swallow-on-throw listener set used by all three storage\n * backends for `subscribeAll`. Centralizes the try/catch wrapper so a buggy\n * telemetry handler never breaks a storage write.\n */\nexport function createListenerSet<T>(): {\n add(l: (value: T) => void): () => void;\n notify(value: T): void;\n} {\n const listeners = new Set<(v: T) => void>();\n return {\n add(l) {\n listeners.add(l);\n return () => listeners.delete(l);\n },\n notify(value) {\n for (const l of listeners) {\n try {\n l(value);\n } catch {\n // Swallow handler errors; telemetry must never break writes.\n }\n }\n },\n };\n}\n\n/**\n * Internal: parses a raw `anonymousSession` JSON payload (from localStorage\n * or a cookie) into a {@link PersistedAnonymousSession}. Returns `null` for\n * any malformed or missing input.\n */\nexport function parseAnonymousSession(raw: string | null): PersistedAnonymousSession | null {\n if (!raw) return null;\n try {\n const parsed = JSON.parse(raw) as Partial<PersistedAnonymousSession>;\n if (typeof parsed.refreshToken === \"string\" && typeof parsed.sessionId === \"string\") {\n return { refreshToken: parsed.refreshToken, sessionId: parsed.sessionId };\n }\n return null;\n } catch {\n return null;\n }\n}\n\nexport { createMemoryStorage } from \"./memory\";\nexport { createLocalStorageStorage } from \"./local-storage\";\nexport { createCookieStorage } from \"./cookie\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/storage/memory.ts","../src/storage/local-storage.ts","../src/storage/cookie.ts","../src/storage/index.ts"],"names":[],"mappings":"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","file":"storage.cjs","sourcesContent":["import {\n createListenerSet,\n type EmporixStorage,\n type EmporixStorageKey,\n type PersistedAnonymousSession,\n} from \"./index\";\n\n/** In-memory token store. Default, SSR-safe, no persistence. */\nexport function createMemoryStorage(opts: { initial?: string } = {}): EmporixStorage {\n let token: string | null = opts.initial ?? null;\n let cartId: string | null = null;\n let anon: PersistedAnonymousSession | null = null;\n let siteCode: string | null = null;\n let language: string | null = null;\n let activeLegalEntityId: string | null = null;\n let refreshToken: string | null = null;\n const tokenListeners = new Set<(t: string | null) => void>();\n const all = createListenerSet<EmporixStorageKey>();\n return {\n getCustomerToken: () => token,\n setCustomerToken: (t) => {\n token = t;\n for (const l of tokenListeners) l(token);\n all.notify(\"customerToken\");\n },\n subscribe: (l) => {\n tokenListeners.add(l);\n return () => tokenListeners.delete(l);\n },\n getCartId: () => cartId,\n setCartId: (id) => {\n cartId = id;\n all.notify(\"cartId\");\n },\n getAnonymousSession: () => anon,\n setAnonymousSession: (s) => {\n anon = s;\n all.notify(\"anonymousSession\");\n },\n getSiteCode: () => siteCode,\n setSiteCode: (code) => {\n siteCode = code;\n all.notify(\"siteCode\");\n },\n getLanguage: () => language,\n setLanguage: (l) => {\n language = l;\n all.notify(\"language\");\n },\n getActiveLegalEntityId: () => activeLegalEntityId,\n setActiveLegalEntityId: (id) => {\n activeLegalEntityId = id;\n all.notify(\"activeLegalEntityId\");\n },\n getRefreshToken: () => refreshToken,\n setRefreshToken: (t) => {\n refreshToken = t;\n all.notify(\"refreshToken\");\n },\n subscribeAll: (l) => all.add(l),\n };\n}\n","import {\n createListenerSet,\n parseAnonymousSession,\n type EmporixStorage,\n type EmporixStorageKey,\n} from \"./index\";\nimport { createMemoryStorage } from \"./memory\";\n\nconst DEFAULT_TOKEN_KEY = \"emporix.customerToken\";\nconst CART_KEY = \"emporix.cartId\";\nconst ANON_KEY = \"emporix.anonymousSession\";\nconst SITE_KEY = \"emporix.siteCode\";\nconst LANGUAGE_KEY = \"emporix.language\";\nconst ACTIVE_LE_KEY = \"emporix.activeLegalEntityId\";\nconst REFRESH_KEY = \"emporix.refreshToken\";\n\n/** Browser `localStorage`-backed store. Falls back to memory on the server. */\nexport function createLocalStorageStorage(opts: { key?: string } = {}): EmporixStorage {\n const tokenKey = opts.key ?? DEFAULT_TOKEN_KEY;\n const available =\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as { localStorage?: Storage }).localStorage !== \"undefined\";\n if (!available) {\n // eslint-disable-next-line no-console\n console.warn(\"[emporix] localStorage unavailable; falling back to in-memory storage\");\n return createMemoryStorage();\n }\n const ls = (globalThis as unknown as { localStorage: Storage }).localStorage;\n const tokenListeners = new Set<(t: string | null) => void>();\n const all = createListenerSet<EmporixStorageKey>();\n return {\n getCustomerToken: () => ls.getItem(tokenKey),\n setCustomerToken: (t) => {\n if (t === null) ls.removeItem(tokenKey);\n else ls.setItem(tokenKey, t);\n for (const l of tokenListeners) l(t);\n all.notify(\"customerToken\");\n },\n subscribe: (l) => {\n tokenListeners.add(l);\n return () => tokenListeners.delete(l);\n },\n getCartId: () => ls.getItem(CART_KEY),\n setCartId: (id) => {\n if (id === null) ls.removeItem(CART_KEY);\n else ls.setItem(CART_KEY, id);\n all.notify(\"cartId\");\n },\n getAnonymousSession: () => parseAnonymousSession(ls.getItem(ANON_KEY)),\n setAnonymousSession: (s) => {\n if (s === null) ls.removeItem(ANON_KEY);\n else ls.setItem(ANON_KEY, JSON.stringify({ refreshToken: s.refreshToken, sessionId: s.sessionId }));\n all.notify(\"anonymousSession\");\n },\n getSiteCode: () => ls.getItem(SITE_KEY),\n setSiteCode: (code) => {\n if (code === null) ls.removeItem(SITE_KEY);\n else ls.setItem(SITE_KEY, code);\n all.notify(\"siteCode\");\n },\n getLanguage: () => ls.getItem(LANGUAGE_KEY),\n setLanguage: (l) => {\n if (l === null) ls.removeItem(LANGUAGE_KEY);\n else ls.setItem(LANGUAGE_KEY, l);\n all.notify(\"language\");\n },\n getActiveLegalEntityId: () => ls.getItem(ACTIVE_LE_KEY),\n setActiveLegalEntityId: (id) => {\n if (id === null) ls.removeItem(ACTIVE_LE_KEY);\n else ls.setItem(ACTIVE_LE_KEY, id);\n all.notify(\"activeLegalEntityId\");\n },\n getRefreshToken: () => ls.getItem(REFRESH_KEY),\n setRefreshToken: (t) => {\n if (t === null) ls.removeItem(REFRESH_KEY);\n else ls.setItem(REFRESH_KEY, t);\n all.notify(\"refreshToken\");\n },\n subscribeAll: (l) => all.add(l),\n };\n}\n","import {\n createListenerSet,\n parseAnonymousSession,\n type EmporixStorage,\n type EmporixStorageKey,\n} from \"./index\";\nimport { createMemoryStorage } from \"./memory\";\n\nconst DEFAULT_TOKEN_NAME = \"emporix.customerToken\";\nconst CART_NAME = \"emporix.cartId\";\nconst ANON_NAME = \"emporix.anonymousSession\";\nconst SITE_NAME = \"emporix.siteCode\";\nconst LANGUAGE_NAME = \"emporix.language\";\nconst ACTIVE_LE_NAME = \"emporix.activeLegalEntityId\";\nconst REFRESH_NAME = \"emporix.refreshToken\";\n\n/** Cookie-backed store. Consumer must set SameSite/Secure for CSRF safety. */\nexport function createCookieStorage(\n opts: { name?: string; secure?: boolean; sameSite?: \"lax\" | \"strict\" | \"none\" } = {},\n): EmporixStorage {\n const tokenName = opts.name ?? DEFAULT_TOKEN_NAME;\n const sameSite = opts.sameSite ?? \"lax\";\n const secure = opts.secure ?? false;\n if (typeof document === \"undefined\") {\n // eslint-disable-next-line no-console\n console.warn(\"[emporix] document unavailable; cookie storage falling back to in-memory\");\n return createMemoryStorage();\n }\n const attrs = `path=/; SameSite=${sameSite}${secure ? \"; Secure\" : \"\"}`;\n const readCookie = (name: string): string | null => {\n for (const part of document.cookie.split(\"; \")) {\n const [k, ...v] = part.split(\"=\");\n if (k === name) return decodeURIComponent(v.join(\"=\")) || null;\n }\n return null;\n };\n const writeCookie = (name: string, value: string | null): void => {\n document.cookie =\n value === null\n ? `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; ${attrs}`\n : `${name}=${encodeURIComponent(value)}; ${attrs}`;\n };\n const all = createListenerSet<EmporixStorageKey>();\n return {\n getCustomerToken: () => readCookie(tokenName),\n setCustomerToken: (t) => {\n writeCookie(tokenName, t);\n all.notify(\"customerToken\");\n },\n getCartId: () => readCookie(CART_NAME),\n setCartId: (id) => {\n writeCookie(CART_NAME, id);\n all.notify(\"cartId\");\n },\n getAnonymousSession: () => parseAnonymousSession(readCookie(ANON_NAME)),\n setAnonymousSession: (s) => {\n writeCookie(\n ANON_NAME,\n s === null\n ? null\n : JSON.stringify({ refreshToken: s.refreshToken, sessionId: s.sessionId }),\n );\n all.notify(\"anonymousSession\");\n },\n getSiteCode: () => readCookie(SITE_NAME),\n setSiteCode: (code) => {\n writeCookie(SITE_NAME, code);\n all.notify(\"siteCode\");\n },\n getLanguage: () => readCookie(LANGUAGE_NAME),\n setLanguage: (l) => {\n writeCookie(LANGUAGE_NAME, l);\n all.notify(\"language\");\n },\n getActiveLegalEntityId: () => readCookie(ACTIVE_LE_NAME),\n setActiveLegalEntityId: (id) => {\n writeCookie(ACTIVE_LE_NAME, id);\n all.notify(\"activeLegalEntityId\");\n },\n getRefreshToken: () => readCookie(REFRESH_NAME),\n setRefreshToken: (t) => {\n writeCookie(REFRESH_NAME, t);\n all.notify(\"refreshToken\");\n },\n subscribeAll: (l) => all.add(l),\n };\n}\n","/** Pluggable persistence for SDK session state. SSR-safe by default (memory). */\nexport interface EmporixStorage {\n // Customer token (unchanged).\n getCustomerToken(): string | null;\n setCustomerToken(token: string | null): void;\n subscribe?(listener: (token: string | null) => void): () => void;\n\n // Active guest / customer cart id.\n getCartId(): string | null;\n setCartId(id: string | null): void;\n\n // Anonymous session — used by DefaultTokenProvider (via EmporixProvider\n // wiring) to preserve sessionId across page reloads.\n getAnonymousSession(): PersistedAnonymousSession | null;\n setAnonymousSession(session: PersistedAnonymousSession | null): void;\n\n // Active site code (MS-2). `null` = no site bound yet.\n getSiteCode(): string | null;\n setSiteCode(code: string | null): void;\n\n // Active language (Accept-Language). `null` = use the site/tenant default.\n getLanguage(): string | null;\n setLanguage(language: string | null): void;\n\n // Active legal entity id (B2B). `null` = B2C mode.\n getActiveLegalEntityId(): string | null;\n setActiveLegalEntityId(id: string | null): void;\n\n // Refresh token — optional persistence. When absent, B2B company-switch\n // falls back to a local-state-only update (no server-side token rescope).\n getRefreshToken(): string | null;\n setRefreshToken(token: string | null): void;\n\n /**\n * Subscribe to any storage write. The listener receives the key that\n * changed. Returns an unsubscribe function. Optional — backends may no-op.\n * Used by the telemetry layer to emit `storage.write` events.\n */\n subscribeAll?(\n listener: (key: EmporixStorageKey) => void,\n ): () => void;\n}\n\n/** Minimal subset of `AnonymousSession` that needs to outlive a page load. */\nexport interface PersistedAnonymousSession {\n refreshToken: string;\n sessionId: string;\n}\n\n/** Backward-compat alias. New code should prefer `EmporixStorage`. */\nexport type TokenStorage = EmporixStorage;\n\n/** Keys that participate in {@link EmporixStorage.subscribeAll}. */\nexport type EmporixStorageKey =\n | \"customerToken\"\n | \"cartId\"\n | \"siteCode\"\n | \"language\"\n | \"anonymousSession\"\n | \"activeLegalEntityId\"\n | \"refreshToken\";\n\n/**\n * Internal: create a swallow-on-throw listener set used by all three storage\n * backends for `subscribeAll`. Centralizes the try/catch wrapper so a buggy\n * telemetry handler never breaks a storage write.\n */\nexport function createListenerSet<T>(): {\n add(l: (value: T) => void): () => void;\n notify(value: T): void;\n} {\n const listeners = new Set<(v: T) => void>();\n return {\n add(l) {\n listeners.add(l);\n return () => listeners.delete(l);\n },\n notify(value) {\n for (const l of listeners) {\n try {\n l(value);\n } catch {\n // Swallow handler errors; telemetry must never break writes.\n }\n }\n },\n };\n}\n\n/**\n * Internal: parses a raw `anonymousSession` JSON payload (from localStorage\n * or a cookie) into a {@link PersistedAnonymousSession}. Returns `null` for\n * any malformed or missing input.\n */\nexport function parseAnonymousSession(raw: string | null): PersistedAnonymousSession | null {\n if (!raw) return null;\n try {\n const parsed = JSON.parse(raw) as Partial<PersistedAnonymousSession>;\n if (typeof parsed.refreshToken === \"string\" && typeof parsed.sessionId === \"string\") {\n return { refreshToken: parsed.refreshToken, sessionId: parsed.sessionId };\n }\n return null;\n } catch {\n return null;\n }\n}\n\nexport { createMemoryStorage } from \"./memory\";\nexport { createLocalStorageStorage } from \"./local-storage\";\nexport { createCookieStorage } from \"./cookie\";\n"]}
|
package/dist/storage.d.cts
CHANGED
|
@@ -26,6 +26,8 @@ interface EmporixStorage {
|
|
|
26
26
|
setAnonymousSession(session: PersistedAnonymousSession | null): void;
|
|
27
27
|
getSiteCode(): string | null;
|
|
28
28
|
setSiteCode(code: string | null): void;
|
|
29
|
+
getLanguage(): string | null;
|
|
30
|
+
setLanguage(language: string | null): void;
|
|
29
31
|
getActiveLegalEntityId(): string | null;
|
|
30
32
|
setActiveLegalEntityId(id: string | null): void;
|
|
31
33
|
getRefreshToken(): string | null;
|
|
@@ -45,7 +47,7 @@ interface PersistedAnonymousSession {
|
|
|
45
47
|
/** Backward-compat alias. New code should prefer `EmporixStorage`. */
|
|
46
48
|
type TokenStorage = EmporixStorage;
|
|
47
49
|
/** Keys that participate in {@link EmporixStorage.subscribeAll}. */
|
|
48
|
-
type EmporixStorageKey = "customerToken" | "cartId" | "siteCode" | "anonymousSession" | "activeLegalEntityId" | "refreshToken";
|
|
50
|
+
type EmporixStorageKey = "customerToken" | "cartId" | "siteCode" | "language" | "anonymousSession" | "activeLegalEntityId" | "refreshToken";
|
|
49
51
|
/**
|
|
50
52
|
* Internal: create a swallow-on-throw listener set used by all three storage
|
|
51
53
|
* backends for `subscribeAll`. Centralizes the try/catch wrapper so a buggy
|
package/dist/storage.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ interface EmporixStorage {
|
|
|
26
26
|
setAnonymousSession(session: PersistedAnonymousSession | null): void;
|
|
27
27
|
getSiteCode(): string | null;
|
|
28
28
|
setSiteCode(code: string | null): void;
|
|
29
|
+
getLanguage(): string | null;
|
|
30
|
+
setLanguage(language: string | null): void;
|
|
29
31
|
getActiveLegalEntityId(): string | null;
|
|
30
32
|
setActiveLegalEntityId(id: string | null): void;
|
|
31
33
|
getRefreshToken(): string | null;
|
|
@@ -45,7 +47,7 @@ interface PersistedAnonymousSession {
|
|
|
45
47
|
/** Backward-compat alias. New code should prefer `EmporixStorage`. */
|
|
46
48
|
type TokenStorage = EmporixStorage;
|
|
47
49
|
/** Keys that participate in {@link EmporixStorage.subscribeAll}. */
|
|
48
|
-
type EmporixStorageKey = "customerToken" | "cartId" | "siteCode" | "anonymousSession" | "activeLegalEntityId" | "refreshToken";
|
|
50
|
+
type EmporixStorageKey = "customerToken" | "cartId" | "siteCode" | "language" | "anonymousSession" | "activeLegalEntityId" | "refreshToken";
|
|
49
51
|
/**
|
|
50
52
|
* Internal: create a swallow-on-throw listener set used by all three storage
|
|
51
53
|
* backends for `subscribeAll`. Centralizes the try/catch wrapper so a buggy
|
package/dist/storage.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createCookieStorage, createListenerSet, createLocalStorageStorage, createMemoryStorage, parseAnonymousSession } from './chunk-
|
|
1
|
+
export { createCookieStorage, createListenerSet, createLocalStorageStorage, createMemoryStorage, parseAnonymousSession } from './chunk-VMDBYVWG.js';
|
|
2
2
|
//# sourceMappingURL=storage.js.map
|
|
3
3
|
//# sourceMappingURL=storage.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Customer, AuthContext, Product, PaginatedItems, ShoppingListItem, ShoppingListDraft, ShoppingList, Category, Cart, CartItemInput, CartItemUpdate, CartAddress, CartCreated, CreateCartInput, CheckoutResult, CheckoutInput, QuoteCheckoutInput, PaymentMode, PriceMatchByContextInput, PriceMatch, Media, SegmentCategoryTree, SegmentItem, Segment, PasswordChangeInput, CustomerUpdateInput, Address, AddressCreateInput, AddressUpdateInput, PasswordResetRequestInput, PasswordResetConfirmInput, Site, LegalEntity, ContactAssignment, Location, IamGroup, IamGroupMemberAssignment, ContactAssignmentCreate, LegalEntityCreate, LocationCreate, LegalEntityUpdate, ContactAssignmentUpdate, LocationUpdate, InvokeCloudFunctionOptions, OrderStatus, Order, SalesOrderPatch, Availability, RedemptionInput, RedemptionCreated, PointsSummary, RedeemOptionList, RedeemCouponResult, RedeemMyPointsInput, ReturnCreated, ReturnInput, ReturnList, Return } from '@viu/emporix-sdk';
|
|
2
2
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
3
3
|
import { UseQueryResult, UseInfiniteQueryResult, UseMutationResult } from '@tanstack/react-query';
|
|
4
|
-
import { S as SiteContextValue } from './provider-
|
|
4
|
+
import { S as SiteContextValue } from './provider-Ddo7aSOI.cjs';
|
|
5
5
|
|
|
6
6
|
/** Customer authentication state and actions. */
|
|
7
7
|
interface CustomerSessionApi {
|
|
@@ -462,6 +462,13 @@ declare function usePasswordReset(): PasswordResetApi;
|
|
|
462
462
|
declare function useSites(options?: QueryOpts): UseQueryResult<Site[]>;
|
|
463
463
|
/** Convenience: the tenant's default site (the one flagged `default: true`). */
|
|
464
464
|
declare function useDefaultSite(options?: QueryOpts): UseQueryResult<Site>;
|
|
465
|
+
/**
|
|
466
|
+
* The active site — the one whose `code` matches `useSiteContext().siteCode`.
|
|
467
|
+
* Returns `undefined` while the sites list is loading, when no site is active,
|
|
468
|
+
* or when the active code has no match. Derives from the shared `useSites()`
|
|
469
|
+
* query (React-Query dedupes — no extra request).
|
|
470
|
+
*/
|
|
471
|
+
declare function useActiveSite(options?: QueryOpts): Site | undefined;
|
|
465
472
|
|
|
466
473
|
/**
|
|
467
474
|
* Returns the active site context: `{ siteCode, currency, targetLocation,
|
|
@@ -698,4 +705,4 @@ declare function useReturn(returnId: string | undefined): UseQueryResult<Return>
|
|
|
698
705
|
/** Create a return for the signed-in customer. Invalidates the returns list. */
|
|
699
706
|
declare function useCreateReturn(): UseMutationResult<ReturnCreated, unknown, ReturnInput>;
|
|
700
707
|
|
|
701
|
-
export {
|
|
708
|
+
export { useInvokeCloudFunction as $, type AddressMutationsApi as A, useCategoriesInfinite as B, type CartMutationsApi as C, useCategory as D, useCategoryTree as E, useChangePassword as F, useCheckout as G, useCloudFunction as H, type InvokeCloudFunctionVars as I, useCompany as J, useCompanyContacts as K, useCompanyGroups as L, useCompanyLocations as M, useCompanySwitcher as N, useCreateCart as O, type PasswordResetApi as P, useCreateCompany as Q, useCreateLocation as R, useCreateReturn as S, useCreateShoppingList as T, type UseAvailabilitiesOptions as U, useCustomerAddresses as V, useCustomerSession as W, useDefaultSite as X, useDeleteCompany as Y, useDeleteLocation as Z, useDeleteShoppingList as _, type CheckoutApi as a, useMatchPrices as a0, useMatchPricesChunked as a1, useMyCompanies as a2, useMyOrders as a3, useMyOrdersInfinite as a4, useMyReturns as a5, useMyRewardPoints as a6, useMyRewardPointsSummary as a7, useMySegmentCategories as a8, useMySegmentCategoriesInfinite as a9, useSalesOrder as aA, useSetShoppingListItemQuantity as aB, useShoppingLists as aC, useSiteContext as aD, useSites as aE, useSubcategories as aF, useUnassignContact as aG, useUpdateCompany as aH, useUpdateContactAssignment as aI, useUpdateCustomer as aJ, useUpdateLocation as aK, useUpdateSalesOrder as aL, useValidateCoupon as aM, useVariantChildren as aN, useMySegmentCategoryTree as aa, useMySegmentItems as ab, useMySegmentProducts as ac, useMySegmentProductsInfinite as ad, useMySegments as ae, useOrder as af, useOrderTransition as ag, usePasswordReset as ah, usePaymentModes as ai, useProduct as aj, useProductByCode as ak, useProductMedia as al, useProductNameSearch as am, useProductSearch as an, useProducts as ao, useProductsByCodes as ap, useProductsInCategory as aq, useProductsInCategoryInfinite as ar, useProductsInfinite as as, useRedeemCoupon as at, useRedeemOptions as au, useRedeemRewardPoints as av, useRemoveFromShoppingList as aw, useRemoveGroupMember as ax, useReorder as ay, useReturn as az, type CompanySwitcherApi as b, type CouponActionVars as c, type CustomerSessionApi as d, type UseAvailabilityOptions as e, type UseCancelOrderVars as f, type UseMyOrdersInfiniteOptions as g, type UseMyOrdersOptions as h, type UseOrderOptions as i, type UseOrderTransitionVars as j, type UseReorderResult as k, type UseReorderVars as l, type UseUpdateSalesOrderVars as m, type UseVariantChildrenOptions as n, useActiveSite as o, useAddGroupMember as p, useAddToShoppingList as q, useAddressMutations as r, useAssignContact as s, useAvailabilities as t, useActiveCart as u, useAvailability as v, useCancelOrder as w, useCart as x, useCartMutations as y, useCategories as z };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Customer, AuthContext, Product, PaginatedItems, ShoppingListItem, ShoppingListDraft, ShoppingList, Category, Cart, CartItemInput, CartItemUpdate, CartAddress, CartCreated, CreateCartInput, CheckoutResult, CheckoutInput, QuoteCheckoutInput, PaymentMode, PriceMatchByContextInput, PriceMatch, Media, SegmentCategoryTree, SegmentItem, Segment, PasswordChangeInput, CustomerUpdateInput, Address, AddressCreateInput, AddressUpdateInput, PasswordResetRequestInput, PasswordResetConfirmInput, Site, LegalEntity, ContactAssignment, Location, IamGroup, IamGroupMemberAssignment, ContactAssignmentCreate, LegalEntityCreate, LocationCreate, LegalEntityUpdate, ContactAssignmentUpdate, LocationUpdate, InvokeCloudFunctionOptions, OrderStatus, Order, SalesOrderPatch, Availability, RedemptionInput, RedemptionCreated, PointsSummary, RedeemOptionList, RedeemCouponResult, RedeemMyPointsInput, ReturnCreated, ReturnInput, ReturnList, Return } from '@viu/emporix-sdk';
|
|
2
2
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
3
3
|
import { UseQueryResult, UseInfiniteQueryResult, UseMutationResult } from '@tanstack/react-query';
|
|
4
|
-
import { S as SiteContextValue } from './provider
|
|
4
|
+
import { S as SiteContextValue } from './provider-Bcb-tOpS.js';
|
|
5
5
|
|
|
6
6
|
/** Customer authentication state and actions. */
|
|
7
7
|
interface CustomerSessionApi {
|
|
@@ -462,6 +462,13 @@ declare function usePasswordReset(): PasswordResetApi;
|
|
|
462
462
|
declare function useSites(options?: QueryOpts): UseQueryResult<Site[]>;
|
|
463
463
|
/** Convenience: the tenant's default site (the one flagged `default: true`). */
|
|
464
464
|
declare function useDefaultSite(options?: QueryOpts): UseQueryResult<Site>;
|
|
465
|
+
/**
|
|
466
|
+
* The active site — the one whose `code` matches `useSiteContext().siteCode`.
|
|
467
|
+
* Returns `undefined` while the sites list is loading, when no site is active,
|
|
468
|
+
* or when the active code has no match. Derives from the shared `useSites()`
|
|
469
|
+
* query (React-Query dedupes — no extra request).
|
|
470
|
+
*/
|
|
471
|
+
declare function useActiveSite(options?: QueryOpts): Site | undefined;
|
|
465
472
|
|
|
466
473
|
/**
|
|
467
474
|
* Returns the active site context: `{ siteCode, currency, targetLocation,
|
|
@@ -698,4 +705,4 @@ declare function useReturn(returnId: string | undefined): UseQueryResult<Return>
|
|
|
698
705
|
/** Create a return for the signed-in customer. Invalidates the returns list. */
|
|
699
706
|
declare function useCreateReturn(): UseMutationResult<ReturnCreated, unknown, ReturnInput>;
|
|
700
707
|
|
|
701
|
-
export {
|
|
708
|
+
export { useInvokeCloudFunction as $, type AddressMutationsApi as A, useCategoriesInfinite as B, type CartMutationsApi as C, useCategory as D, useCategoryTree as E, useChangePassword as F, useCheckout as G, useCloudFunction as H, type InvokeCloudFunctionVars as I, useCompany as J, useCompanyContacts as K, useCompanyGroups as L, useCompanyLocations as M, useCompanySwitcher as N, useCreateCart as O, type PasswordResetApi as P, useCreateCompany as Q, useCreateLocation as R, useCreateReturn as S, useCreateShoppingList as T, type UseAvailabilitiesOptions as U, useCustomerAddresses as V, useCustomerSession as W, useDefaultSite as X, useDeleteCompany as Y, useDeleteLocation as Z, useDeleteShoppingList as _, type CheckoutApi as a, useMatchPrices as a0, useMatchPricesChunked as a1, useMyCompanies as a2, useMyOrders as a3, useMyOrdersInfinite as a4, useMyReturns as a5, useMyRewardPoints as a6, useMyRewardPointsSummary as a7, useMySegmentCategories as a8, useMySegmentCategoriesInfinite as a9, useSalesOrder as aA, useSetShoppingListItemQuantity as aB, useShoppingLists as aC, useSiteContext as aD, useSites as aE, useSubcategories as aF, useUnassignContact as aG, useUpdateCompany as aH, useUpdateContactAssignment as aI, useUpdateCustomer as aJ, useUpdateLocation as aK, useUpdateSalesOrder as aL, useValidateCoupon as aM, useVariantChildren as aN, useMySegmentCategoryTree as aa, useMySegmentItems as ab, useMySegmentProducts as ac, useMySegmentProductsInfinite as ad, useMySegments as ae, useOrder as af, useOrderTransition as ag, usePasswordReset as ah, usePaymentModes as ai, useProduct as aj, useProductByCode as ak, useProductMedia as al, useProductNameSearch as am, useProductSearch as an, useProducts as ao, useProductsByCodes as ap, useProductsInCategory as aq, useProductsInCategoryInfinite as ar, useProductsInfinite as as, useRedeemCoupon as at, useRedeemOptions as au, useRedeemRewardPoints as av, useRemoveFromShoppingList as aw, useRemoveGroupMember as ax, useReorder as ay, useReturn as az, type CompanySwitcherApi as b, type CouponActionVars as c, type CustomerSessionApi as d, type UseAvailabilityOptions as e, type UseCancelOrderVars as f, type UseMyOrdersInfiniteOptions as g, type UseMyOrdersOptions as h, type UseOrderOptions as i, type UseOrderTransitionVars as j, type UseReorderResult as k, type UseReorderVars as l, type UseUpdateSalesOrderVars as m, type UseVariantChildrenOptions as n, useActiveSite as o, useAddGroupMember as p, useAddToShoppingList as q, useAddressMutations as r, useAssignContact as s, useAvailabilities as t, useActiveCart as u, useAvailability as v, useCancelOrder as w, useCart as x, useCartMutations as y, useCategories as z };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@viu/emporix-sdk-react",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.13.0",
|
|
4
4
|
"description": "React bindings for the Emporix SDK",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"@tanstack/react-query": "^5.51.0",
|
|
73
73
|
"react": "^18.0.0 || ^19.0.0",
|
|
74
|
-
"@viu/emporix-sdk": "^2.
|
|
74
|
+
"@viu/emporix-sdk": "^2.12.0"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"@tanstack/react-query": "^5.51.0",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"typescript": "^5.6.0",
|
|
94
94
|
"undici": "^6.19.0",
|
|
95
95
|
"vitest": "^2.0.0",
|
|
96
|
-
"@viu/emporix-sdk": "2.
|
|
96
|
+
"@viu/emporix-sdk": "2.12.0"
|
|
97
97
|
},
|
|
98
98
|
"scripts": {
|
|
99
99
|
"build": "tsup",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/storage/memory.ts","../src/storage/local-storage.ts","../src/storage/cookie.ts","../src/storage/index.ts"],"names":[],"mappings":";AAQO,SAAS,mBAAA,CAAoB,IAAA,GAA6B,EAAC,EAAmB;AACnF,EAAA,IAAI,KAAA,GAAuB,KAAK,OAAA,IAAW,IAAA;AAC3C,EAAA,IAAI,MAAA,GAAwB,IAAA;AAC5B,EAAA,IAAI,IAAA,GAAyC,IAAA;AAC7C,EAAA,IAAI,QAAA,GAA0B,IAAA;AAC9B,EAAA,IAAI,mBAAA,GAAqC,IAAA;AACzC,EAAA,IAAI,YAAA,GAA8B,IAAA;AAClC,EAAA,MAAM,cAAA,uBAAqB,GAAA,EAAgC;AAC3D,EAAA,MAAM,MAAM,iBAAA,EAAqC;AACjD,EAAA,OAAO;AAAA,IACL,kBAAkB,MAAM,KAAA;AAAA,IACxB,gBAAA,EAAkB,CAAC,CAAA,KAAM;AACvB,MAAA,KAAA,GAAQ,CAAA;AACR,MAAA,KAAA,MAAW,CAAA,IAAK,cAAA,EAAgB,CAAA,CAAE,KAAK,CAAA;AACvC,MAAA,GAAA,CAAI,OAAO,eAAe,CAAA;AAAA,IAC5B,CAAA;AAAA,IACA,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,MAAA,cAAA,CAAe,IAAI,CAAC,CAAA;AACpB,MAAA,OAAO,MAAM,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA;AAAA,IACtC,CAAA;AAAA,IACA,WAAW,MAAM,MAAA;AAAA,IACjB,SAAA,EAAW,CAAC,EAAA,KAAO;AACjB,MAAA,MAAA,GAAS,EAAA;AACT,MAAA,GAAA,CAAI,OAAO,QAAQ,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,qBAAqB,MAAM,IAAA;AAAA,IAC3B,mBAAA,EAAqB,CAAC,CAAA,KAAM;AAC1B,MAAA,IAAA,GAAO,CAAA;AACP,MAAA,GAAA,CAAI,OAAO,kBAAkB,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,aAAa,MAAM,QAAA;AAAA,IACnB,WAAA,EAAa,CAAC,IAAA,KAAS;AACrB,MAAA,QAAA,GAAW,IAAA;AACX,MAAA,GAAA,CAAI,OAAO,UAAU,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,wBAAwB,MAAM,mBAAA;AAAA,IAC9B,sBAAA,EAAwB,CAAC,EAAA,KAAO;AAC9B,MAAA,mBAAA,GAAsB,EAAA;AACtB,MAAA,GAAA,CAAI,OAAO,qBAAqB,CAAA;AAAA,IAClC,CAAA;AAAA,IACA,iBAAiB,MAAM,YAAA;AAAA,IACvB,eAAA,EAAiB,CAAC,CAAA,KAAM;AACtB,MAAA,YAAA,GAAe,CAAA;AACf,MAAA,GAAA,CAAI,OAAO,cAAc,CAAA;AAAA,IAC3B,CAAA;AAAA,IACA,YAAA,EAAc,CAAC,CAAA,KAAM,GAAA,CAAI,IAAI,CAAC;AAAA,GAChC;AACF;;;AC/CA,IAAM,iBAAA,GAAoB,uBAAA;AAC1B,IAAM,QAAA,GAAW,gBAAA;AACjB,IAAM,QAAA,GAAW,0BAAA;AACjB,IAAM,QAAA,GAAW,kBAAA;AACjB,IAAM,aAAA,GAAgB,6BAAA;AACtB,IAAM,WAAA,GAAc,sBAAA;AAGb,SAAS,yBAAA,CAA0B,IAAA,GAAyB,EAAC,EAAmB;AACrF,EAAA,MAAM,QAAA,GAAW,KAAK,GAAA,IAAO,iBAAA;AAC7B,EAAA,MAAM,YACJ,OAAO,UAAA,KAAe,WAAA,IACtB,OAAQ,WAA0C,YAAA,KAAiB,WAAA;AACrE,EAAA,IAAI,CAAC,SAAA,EAAW;AAEd,IAAA,OAAA,CAAQ,KAAK,uEAAuE,CAAA;AACpF,IAAA,OAAO,mBAAA,EAAoB;AAAA,EAC7B;AACA,EAAA,MAAM,KAAM,UAAA,CAAoD,YAAA;AAChE,EAAA,MAAM,cAAA,uBAAqB,GAAA,EAAgC;AAC3D,EAAA,MAAM,MAAM,iBAAA,EAAqC;AACjD,EAAA,OAAO;AAAA,IACL,gBAAA,EAAkB,MAAM,EAAA,CAAG,OAAA,CAAQ,QAAQ,CAAA;AAAA,IAC3C,gBAAA,EAAkB,CAAC,CAAA,KAAM;AACvB,MAAA,IAAI,CAAA,KAAM,IAAA,EAAM,EAAA,CAAG,UAAA,CAAW,QAAQ,CAAA;AAAA,WACjC,EAAA,CAAG,OAAA,CAAQ,QAAA,EAAU,CAAC,CAAA;AAC3B,MAAA,KAAA,MAAW,CAAA,IAAK,cAAA,EAAgB,CAAA,CAAE,CAAC,CAAA;AACnC,MAAA,GAAA,CAAI,OAAO,eAAe,CAAA;AAAA,IAC5B,CAAA;AAAA,IACA,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,MAAA,cAAA,CAAe,IAAI,CAAC,CAAA;AACpB,MAAA,OAAO,MAAM,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA;AAAA,IACtC,CAAA;AAAA,IACA,SAAA,EAAW,MAAM,EAAA,CAAG,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACpC,SAAA,EAAW,CAAC,EAAA,KAAO;AACjB,MAAA,IAAI,EAAA,KAAO,IAAA,EAAM,EAAA,CAAG,UAAA,CAAW,QAAQ,CAAA;AAAA,WAClC,EAAA,CAAG,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAC5B,MAAA,GAAA,CAAI,OAAO,QAAQ,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,qBAAqB,MAAM,qBAAA,CAAsB,EAAA,CAAG,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAAA,IACrE,mBAAA,EAAqB,CAAC,CAAA,KAAM;AAC1B,MAAA,IAAI,CAAA,KAAM,IAAA,EAAM,EAAA,CAAG,UAAA,CAAW,QAAQ,CAAA;AAAA,WACjC,EAAA,CAAG,OAAA,CAAQ,QAAA,EAAU,IAAA,CAAK,SAAA,CAAU,EAAE,YAAA,EAAc,CAAA,CAAE,YAAA,EAAc,SAAA,EAAW,CAAA,CAAE,SAAA,EAAW,CAAC,CAAA;AAClG,MAAA,GAAA,CAAI,OAAO,kBAAkB,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,WAAA,EAAa,MAAM,EAAA,CAAG,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACtC,WAAA,EAAa,CAAC,IAAA,KAAS;AACrB,MAAA,IAAI,IAAA,KAAS,IAAA,EAAM,EAAA,CAAG,UAAA,CAAW,QAAQ,CAAA;AAAA,WACpC,EAAA,CAAG,OAAA,CAAQ,QAAA,EAAU,IAAI,CAAA;AAC9B,MAAA,GAAA,CAAI,OAAO,UAAU,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,sBAAA,EAAwB,MAAM,EAAA,CAAG,OAAA,CAAQ,aAAa,CAAA;AAAA,IACtD,sBAAA,EAAwB,CAAC,EAAA,KAAO;AAC9B,MAAA,IAAI,EAAA,KAAO,IAAA,EAAM,EAAA,CAAG,UAAA,CAAW,aAAa,CAAA;AAAA,WACvC,EAAA,CAAG,OAAA,CAAQ,aAAA,EAAe,EAAE,CAAA;AACjC,MAAA,GAAA,CAAI,OAAO,qBAAqB,CAAA;AAAA,IAClC,CAAA;AAAA,IACA,eAAA,EAAiB,MAAM,EAAA,CAAG,OAAA,CAAQ,WAAW,CAAA;AAAA,IAC7C,eAAA,EAAiB,CAAC,CAAA,KAAM;AACtB,MAAA,IAAI,CAAA,KAAM,IAAA,EAAM,EAAA,CAAG,UAAA,CAAW,WAAW,CAAA;AAAA,WACpC,EAAA,CAAG,OAAA,CAAQ,WAAA,EAAa,CAAC,CAAA;AAC9B,MAAA,GAAA,CAAI,OAAO,cAAc,CAAA;AAAA,IAC3B,CAAA;AAAA,IACA,YAAA,EAAc,CAAC,CAAA,KAAM,GAAA,CAAI,IAAI,CAAC;AAAA,GAChC;AACF;;;ACjEA,IAAM,kBAAA,GAAqB,uBAAA;AAC3B,IAAM,SAAA,GAAY,gBAAA;AAClB,IAAM,SAAA,GAAY,0BAAA;AAClB,IAAM,SAAA,GAAY,kBAAA;AAClB,IAAM,cAAA,GAAiB,6BAAA;AACvB,IAAM,YAAA,GAAe,sBAAA;AAGd,SAAS,mBAAA,CACd,IAAA,GAAkF,EAAC,EACnE;AAChB,EAAA,MAAM,SAAA,GAAY,KAAK,IAAA,IAAQ,kBAAA;AAC/B,EAAA,MAAM,QAAA,GAAW,KAAK,QAAA,IAAY,KAAA;AAClC,EAAA,MAAM,MAAA,GAAS,KAAK,MAAA,IAAU,KAAA;AAC9B,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AAEnC,IAAA,OAAA,CAAQ,KAAK,0EAA0E,CAAA;AACvF,IAAA,OAAO,mBAAA,EAAoB;AAAA,EAC7B;AACA,EAAA,MAAM,QAAQ,CAAA,iBAAA,EAAoB,QAAQ,CAAA,EAAG,MAAA,GAAS,aAAa,EAAE,CAAA,CAAA;AACrE,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAgC;AAClD,IAAA,KAAA,MAAW,IAAA,IAAQ,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA,EAAG;AAC9C,MAAA,MAAM,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA,GAAI,IAAA,CAAK,MAAM,GAAG,CAAA;AAChC,MAAA,IAAI,CAAA,KAAM,MAAM,OAAO,kBAAA,CAAmB,EAAE,IAAA,CAAK,GAAG,CAAC,CAAA,IAAK,IAAA;AAAA,IAC5D;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AACA,EAAA,MAAM,WAAA,GAAc,CAAC,IAAA,EAAc,KAAA,KAA+B;AAChE,IAAA,QAAA,CAAS,MAAA,GACP,KAAA,KAAU,IAAA,GACN,CAAA,EAAG,IAAI,CAAA,0CAAA,EAA6C,KAAK,CAAA,CAAA,GACzD,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,kBAAA,CAAmB,KAAK,CAAC,KAAK,KAAK,CAAA,CAAA;AAAA,EACtD,CAAA;AACA,EAAA,MAAM,MAAM,iBAAA,EAAqC;AACjD,EAAA,OAAO;AAAA,IACL,gBAAA,EAAkB,MAAM,UAAA,CAAW,SAAS,CAAA;AAAA,IAC5C,gBAAA,EAAkB,CAAC,CAAA,KAAM;AACvB,MAAA,WAAA,CAAY,WAAW,CAAC,CAAA;AACxB,MAAA,GAAA,CAAI,OAAO,eAAe,CAAA;AAAA,IAC5B,CAAA;AAAA,IACA,SAAA,EAAW,MAAM,UAAA,CAAW,SAAS,CAAA;AAAA,IACrC,SAAA,EAAW,CAAC,EAAA,KAAO;AACjB,MAAA,WAAA,CAAY,WAAW,EAAE,CAAA;AACzB,MAAA,GAAA,CAAI,OAAO,QAAQ,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,mBAAA,EAAqB,MAAM,qBAAA,CAAsB,UAAA,CAAW,SAAS,CAAC,CAAA;AAAA,IACtE,mBAAA,EAAqB,CAAC,CAAA,KAAM;AAC1B,MAAA,WAAA;AAAA,QACE,SAAA;AAAA,QACA,CAAA,KAAM,IAAA,GACF,IAAA,GACA,IAAA,CAAK,SAAA,CAAU,EAAE,YAAA,EAAc,CAAA,CAAE,YAAA,EAAc,SAAA,EAAW,CAAA,CAAE,SAAA,EAAW;AAAA,OAC7E;AACA,MAAA,GAAA,CAAI,OAAO,kBAAkB,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,WAAA,EAAa,MAAM,UAAA,CAAW,SAAS,CAAA;AAAA,IACvC,WAAA,EAAa,CAAC,IAAA,KAAS;AACrB,MAAA,WAAA,CAAY,WAAW,IAAI,CAAA;AAC3B,MAAA,GAAA,CAAI,OAAO,UAAU,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,sBAAA,EAAwB,MAAM,UAAA,CAAW,cAAc,CAAA;AAAA,IACvD,sBAAA,EAAwB,CAAC,EAAA,KAAO;AAC9B,MAAA,WAAA,CAAY,gBAAgB,EAAE,CAAA;AAC9B,MAAA,GAAA,CAAI,OAAO,qBAAqB,CAAA;AAAA,IAClC,CAAA;AAAA,IACA,eAAA,EAAiB,MAAM,UAAA,CAAW,YAAY,CAAA;AAAA,IAC9C,eAAA,EAAiB,CAAC,CAAA,KAAM;AACtB,MAAA,WAAA,CAAY,cAAc,CAAC,CAAA;AAC3B,MAAA,GAAA,CAAI,OAAO,cAAc,CAAA;AAAA,IAC3B,CAAA;AAAA,IACA,YAAA,EAAc,CAAC,CAAA,KAAM,GAAA,CAAI,IAAI,CAAC;AAAA,GAChC;AACF;;;AClBO,SAAS,iBAAA,GAGd;AACA,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAoB;AAC1C,EAAA,OAAO;AAAA,IACL,IAAI,CAAA,EAAG;AACL,MAAA,SAAA,CAAU,IAAI,CAAC,CAAA;AACf,MAAA,OAAO,MAAM,SAAA,CAAU,MAAA,CAAO,CAAC,CAAA;AAAA,IACjC,CAAA;AAAA,IACA,OAAO,KAAA,EAAO;AACZ,MAAA,KAAA,MAAW,KAAK,SAAA,EAAW;AACzB,QAAA,IAAI;AACF,UAAA,CAAA,CAAE,KAAK,CAAA;AAAA,QACT,CAAA,CAAA,MAAQ;AAAA,QAER;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AAOO,SAAS,sBAAsB,GAAA,EAAsD;AAC1F,EAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC7B,IAAA,IAAI,OAAO,MAAA,CAAO,YAAA,KAAiB,YAAY,OAAO,MAAA,CAAO,cAAc,QAAA,EAAU;AACnF,MAAA,OAAO,EAAE,YAAA,EAAc,MAAA,CAAO,YAAA,EAAc,SAAA,EAAW,OAAO,SAAA,EAAU;AAAA,IAC1E;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF","file":"chunk-FBQY2N7S.js","sourcesContent":["import {\n createListenerSet,\n type EmporixStorage,\n type EmporixStorageKey,\n type PersistedAnonymousSession,\n} from \"./index\";\n\n/** In-memory token store. Default, SSR-safe, no persistence. */\nexport function createMemoryStorage(opts: { initial?: string } = {}): EmporixStorage {\n let token: string | null = opts.initial ?? null;\n let cartId: string | null = null;\n let anon: PersistedAnonymousSession | null = null;\n let siteCode: string | null = null;\n let activeLegalEntityId: string | null = null;\n let refreshToken: string | null = null;\n const tokenListeners = new Set<(t: string | null) => void>();\n const all = createListenerSet<EmporixStorageKey>();\n return {\n getCustomerToken: () => token,\n setCustomerToken: (t) => {\n token = t;\n for (const l of tokenListeners) l(token);\n all.notify(\"customerToken\");\n },\n subscribe: (l) => {\n tokenListeners.add(l);\n return () => tokenListeners.delete(l);\n },\n getCartId: () => cartId,\n setCartId: (id) => {\n cartId = id;\n all.notify(\"cartId\");\n },\n getAnonymousSession: () => anon,\n setAnonymousSession: (s) => {\n anon = s;\n all.notify(\"anonymousSession\");\n },\n getSiteCode: () => siteCode,\n setSiteCode: (code) => {\n siteCode = code;\n all.notify(\"siteCode\");\n },\n getActiveLegalEntityId: () => activeLegalEntityId,\n setActiveLegalEntityId: (id) => {\n activeLegalEntityId = id;\n all.notify(\"activeLegalEntityId\");\n },\n getRefreshToken: () => refreshToken,\n setRefreshToken: (t) => {\n refreshToken = t;\n all.notify(\"refreshToken\");\n },\n subscribeAll: (l) => all.add(l),\n };\n}\n","import {\n createListenerSet,\n parseAnonymousSession,\n type EmporixStorage,\n type EmporixStorageKey,\n} from \"./index\";\nimport { createMemoryStorage } from \"./memory\";\n\nconst DEFAULT_TOKEN_KEY = \"emporix.customerToken\";\nconst CART_KEY = \"emporix.cartId\";\nconst ANON_KEY = \"emporix.anonymousSession\";\nconst SITE_KEY = \"emporix.siteCode\";\nconst ACTIVE_LE_KEY = \"emporix.activeLegalEntityId\";\nconst REFRESH_KEY = \"emporix.refreshToken\";\n\n/** Browser `localStorage`-backed store. Falls back to memory on the server. */\nexport function createLocalStorageStorage(opts: { key?: string } = {}): EmporixStorage {\n const tokenKey = opts.key ?? DEFAULT_TOKEN_KEY;\n const available =\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as { localStorage?: Storage }).localStorage !== \"undefined\";\n if (!available) {\n // eslint-disable-next-line no-console\n console.warn(\"[emporix] localStorage unavailable; falling back to in-memory storage\");\n return createMemoryStorage();\n }\n const ls = (globalThis as unknown as { localStorage: Storage }).localStorage;\n const tokenListeners = new Set<(t: string | null) => void>();\n const all = createListenerSet<EmporixStorageKey>();\n return {\n getCustomerToken: () => ls.getItem(tokenKey),\n setCustomerToken: (t) => {\n if (t === null) ls.removeItem(tokenKey);\n else ls.setItem(tokenKey, t);\n for (const l of tokenListeners) l(t);\n all.notify(\"customerToken\");\n },\n subscribe: (l) => {\n tokenListeners.add(l);\n return () => tokenListeners.delete(l);\n },\n getCartId: () => ls.getItem(CART_KEY),\n setCartId: (id) => {\n if (id === null) ls.removeItem(CART_KEY);\n else ls.setItem(CART_KEY, id);\n all.notify(\"cartId\");\n },\n getAnonymousSession: () => parseAnonymousSession(ls.getItem(ANON_KEY)),\n setAnonymousSession: (s) => {\n if (s === null) ls.removeItem(ANON_KEY);\n else ls.setItem(ANON_KEY, JSON.stringify({ refreshToken: s.refreshToken, sessionId: s.sessionId }));\n all.notify(\"anonymousSession\");\n },\n getSiteCode: () => ls.getItem(SITE_KEY),\n setSiteCode: (code) => {\n if (code === null) ls.removeItem(SITE_KEY);\n else ls.setItem(SITE_KEY, code);\n all.notify(\"siteCode\");\n },\n getActiveLegalEntityId: () => ls.getItem(ACTIVE_LE_KEY),\n setActiveLegalEntityId: (id) => {\n if (id === null) ls.removeItem(ACTIVE_LE_KEY);\n else ls.setItem(ACTIVE_LE_KEY, id);\n all.notify(\"activeLegalEntityId\");\n },\n getRefreshToken: () => ls.getItem(REFRESH_KEY),\n setRefreshToken: (t) => {\n if (t === null) ls.removeItem(REFRESH_KEY);\n else ls.setItem(REFRESH_KEY, t);\n all.notify(\"refreshToken\");\n },\n subscribeAll: (l) => all.add(l),\n };\n}\n","import {\n createListenerSet,\n parseAnonymousSession,\n type EmporixStorage,\n type EmporixStorageKey,\n} from \"./index\";\nimport { createMemoryStorage } from \"./memory\";\n\nconst DEFAULT_TOKEN_NAME = \"emporix.customerToken\";\nconst CART_NAME = \"emporix.cartId\";\nconst ANON_NAME = \"emporix.anonymousSession\";\nconst SITE_NAME = \"emporix.siteCode\";\nconst ACTIVE_LE_NAME = \"emporix.activeLegalEntityId\";\nconst REFRESH_NAME = \"emporix.refreshToken\";\n\n/** Cookie-backed store. Consumer must set SameSite/Secure for CSRF safety. */\nexport function createCookieStorage(\n opts: { name?: string; secure?: boolean; sameSite?: \"lax\" | \"strict\" | \"none\" } = {},\n): EmporixStorage {\n const tokenName = opts.name ?? DEFAULT_TOKEN_NAME;\n const sameSite = opts.sameSite ?? \"lax\";\n const secure = opts.secure ?? false;\n if (typeof document === \"undefined\") {\n // eslint-disable-next-line no-console\n console.warn(\"[emporix] document unavailable; cookie storage falling back to in-memory\");\n return createMemoryStorage();\n }\n const attrs = `path=/; SameSite=${sameSite}${secure ? \"; Secure\" : \"\"}`;\n const readCookie = (name: string): string | null => {\n for (const part of document.cookie.split(\"; \")) {\n const [k, ...v] = part.split(\"=\");\n if (k === name) return decodeURIComponent(v.join(\"=\")) || null;\n }\n return null;\n };\n const writeCookie = (name: string, value: string | null): void => {\n document.cookie =\n value === null\n ? `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; ${attrs}`\n : `${name}=${encodeURIComponent(value)}; ${attrs}`;\n };\n const all = createListenerSet<EmporixStorageKey>();\n return {\n getCustomerToken: () => readCookie(tokenName),\n setCustomerToken: (t) => {\n writeCookie(tokenName, t);\n all.notify(\"customerToken\");\n },\n getCartId: () => readCookie(CART_NAME),\n setCartId: (id) => {\n writeCookie(CART_NAME, id);\n all.notify(\"cartId\");\n },\n getAnonymousSession: () => parseAnonymousSession(readCookie(ANON_NAME)),\n setAnonymousSession: (s) => {\n writeCookie(\n ANON_NAME,\n s === null\n ? null\n : JSON.stringify({ refreshToken: s.refreshToken, sessionId: s.sessionId }),\n );\n all.notify(\"anonymousSession\");\n },\n getSiteCode: () => readCookie(SITE_NAME),\n setSiteCode: (code) => {\n writeCookie(SITE_NAME, code);\n all.notify(\"siteCode\");\n },\n getActiveLegalEntityId: () => readCookie(ACTIVE_LE_NAME),\n setActiveLegalEntityId: (id) => {\n writeCookie(ACTIVE_LE_NAME, id);\n all.notify(\"activeLegalEntityId\");\n },\n getRefreshToken: () => readCookie(REFRESH_NAME),\n setRefreshToken: (t) => {\n writeCookie(REFRESH_NAME, t);\n all.notify(\"refreshToken\");\n },\n subscribeAll: (l) => all.add(l),\n };\n}\n","/** Pluggable persistence for SDK session state. SSR-safe by default (memory). */\nexport interface EmporixStorage {\n // Customer token (unchanged).\n getCustomerToken(): string | null;\n setCustomerToken(token: string | null): void;\n subscribe?(listener: (token: string | null) => void): () => void;\n\n // Active guest / customer cart id.\n getCartId(): string | null;\n setCartId(id: string | null): void;\n\n // Anonymous session — used by DefaultTokenProvider (via EmporixProvider\n // wiring) to preserve sessionId across page reloads.\n getAnonymousSession(): PersistedAnonymousSession | null;\n setAnonymousSession(session: PersistedAnonymousSession | null): void;\n\n // Active site code (MS-2). `null` = no site bound yet.\n getSiteCode(): string | null;\n setSiteCode(code: string | null): void;\n\n // Active legal entity id (B2B). `null` = B2C mode.\n getActiveLegalEntityId(): string | null;\n setActiveLegalEntityId(id: string | null): void;\n\n // Refresh token — optional persistence. When absent, B2B company-switch\n // falls back to a local-state-only update (no server-side token rescope).\n getRefreshToken(): string | null;\n setRefreshToken(token: string | null): void;\n\n /**\n * Subscribe to any storage write. The listener receives the key that\n * changed. Returns an unsubscribe function. Optional — backends may no-op.\n * Used by the telemetry layer to emit `storage.write` events.\n */\n subscribeAll?(\n listener: (key: EmporixStorageKey) => void,\n ): () => void;\n}\n\n/** Minimal subset of `AnonymousSession` that needs to outlive a page load. */\nexport interface PersistedAnonymousSession {\n refreshToken: string;\n sessionId: string;\n}\n\n/** Backward-compat alias. New code should prefer `EmporixStorage`. */\nexport type TokenStorage = EmporixStorage;\n\n/** Keys that participate in {@link EmporixStorage.subscribeAll}. */\nexport type EmporixStorageKey =\n | \"customerToken\"\n | \"cartId\"\n | \"siteCode\"\n | \"anonymousSession\"\n | \"activeLegalEntityId\"\n | \"refreshToken\";\n\n/**\n * Internal: create a swallow-on-throw listener set used by all three storage\n * backends for `subscribeAll`. Centralizes the try/catch wrapper so a buggy\n * telemetry handler never breaks a storage write.\n */\nexport function createListenerSet<T>(): {\n add(l: (value: T) => void): () => void;\n notify(value: T): void;\n} {\n const listeners = new Set<(v: T) => void>();\n return {\n add(l) {\n listeners.add(l);\n return () => listeners.delete(l);\n },\n notify(value) {\n for (const l of listeners) {\n try {\n l(value);\n } catch {\n // Swallow handler errors; telemetry must never break writes.\n }\n }\n },\n };\n}\n\n/**\n * Internal: parses a raw `anonymousSession` JSON payload (from localStorage\n * or a cookie) into a {@link PersistedAnonymousSession}. Returns `null` for\n * any malformed or missing input.\n */\nexport function parseAnonymousSession(raw: string | null): PersistedAnonymousSession | null {\n if (!raw) return null;\n try {\n const parsed = JSON.parse(raw) as Partial<PersistedAnonymousSession>;\n if (typeof parsed.refreshToken === \"string\" && typeof parsed.sessionId === \"string\") {\n return { refreshToken: parsed.refreshToken, sessionId: parsed.sessionId };\n }\n return null;\n } catch {\n return null;\n }\n}\n\nexport { createMemoryStorage } from \"./memory\";\nexport { createLocalStorageStorage } from \"./local-storage\";\nexport { createCookieStorage } from \"./cookie\";\n"]}
|