woodsportal-client-sdk 4.0.7 → 4.0.8-dev.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 +26 -0
- package/dist/adapters/angular/index.js +8 -6
- package/dist/adapters/angular/index.js.map +1 -1
- package/dist/adapters/native/index.d.ts +3 -0
- package/dist/adapters/native/index.js +11 -0
- package/dist/adapters/native/index.js.map +1 -0
- package/dist/adapters/react/index.d.ts +1 -1
- package/dist/adapters/react/index.js +9 -19
- package/dist/adapters/react/index.js.map +1 -1
- package/dist/adapters/vue/index.js +8 -6
- package/dist/adapters/vue/index.js.map +1 -1
- package/dist/auth-interceptor-policy-RGQ26NWR.js +6 -0
- package/dist/{auth-interceptor-policy-ACKZEQ6J.js.map → auth-interceptor-policy-RGQ26NWR.js.map} +1 -1
- package/dist/auth-utils-T4FIBK3O.js +7 -0
- package/dist/{auth-utils-CPO4LG4K.js.map → auth-utils-T4FIBK3O.js.map} +1 -1
- package/dist/{http-errors-CCCQECil.d.ts → build-error-description-DUXvNW7O.d.ts} +57 -6
- package/dist/{chunk-YZPW5F6U.js → chunk-5LISZE2R.js} +11 -7
- package/dist/chunk-5LISZE2R.js.map +1 -0
- package/dist/{chunk-BGUHACLT.js → chunk-AVMMEQLO.js} +3 -3
- package/dist/{chunk-BGUHACLT.js.map → chunk-AVMMEQLO.js.map} +1 -1
- package/dist/{chunk-OAFDB4TJ.js → chunk-C73AH5CW.js} +173 -102
- package/dist/chunk-C73AH5CW.js.map +1 -0
- package/dist/chunk-DB6W3CJT.js +73 -0
- package/dist/chunk-DB6W3CJT.js.map +1 -0
- package/dist/{chunk-BKDJOWLW.js → chunk-ETYE73AH.js} +35 -8
- package/dist/chunk-ETYE73AH.js.map +1 -0
- package/dist/{chunk-ZQTCAG6K.js → chunk-JG3TEXWP.js} +7 -11
- package/dist/chunk-JG3TEXWP.js.map +1 -0
- package/dist/{chunk-WSUXZOHL.js → chunk-KPHAQNS2.js} +51 -6
- package/dist/chunk-KPHAQNS2.js.map +1 -0
- package/dist/{chunk-7J265W43.js → chunk-NDDE6ZZ3.js} +273 -87
- package/dist/chunk-NDDE6ZZ3.js.map +1 -0
- package/dist/{chunk-MO22VWRI.js → chunk-QXUSO7MR.js} +15 -9
- package/dist/chunk-QXUSO7MR.js.map +1 -0
- package/dist/{chunk-EFEBZBMU.js → chunk-UDAPRD7Z.js} +3 -2
- package/dist/chunk-UDAPRD7Z.js.map +1 -0
- package/dist/{chunk-TYJO2PSR.js → chunk-VN6VPM5C.js} +4 -4
- package/dist/{chunk-TYJO2PSR.js.map → chunk-VN6VPM5C.js.map} +1 -1
- package/dist/chunk-YJOQG7DQ.js +1272 -0
- package/dist/chunk-YJOQG7DQ.js.map +1 -0
- package/dist/chunk-ZEGKRQA4.js +16 -0
- package/dist/chunk-ZEGKRQA4.js.map +1 -0
- package/dist/cross-tab-session-B34BLQU4.js +11 -0
- package/dist/{cross-tab-session-AGJVA2UZ.js.map → cross-tab-session-B34BLQU4.js.map} +1 -1
- package/dist/entries/auth.d.ts +4 -3
- package/dist/entries/auth.js +9 -8
- package/dist/entries/auth.js.map +1 -1
- package/dist/entries/crm.d.ts +3 -3
- package/dist/entries/crm.js +10 -9
- package/dist/entries/crm.js.map +1 -1
- package/dist/{index-Bh9eY8sA.d.ts → index-DhoGEpj3.d.ts} +9 -1
- package/dist/index.d.ts +45 -7
- package/dist/index.js +70 -17
- package/dist/index.js.map +1 -1
- package/dist/{pipeline-ui-DbEzI_v1.d.ts → pipeline-ui-Bdrqupf0.d.ts} +2 -2
- package/dist/storage-migration-2PF52ZSB.js +4 -0
- package/dist/{storage-migration-CZTBKXQV.js.map → storage-migration-2PF52ZSB.js.map} +1 -1
- package/package.json +6 -1
- package/dist/auth-interceptor-policy-ACKZEQ6J.js +0 -5
- package/dist/auth-utils-CPO4LG4K.js +0 -5
- package/dist/chunk-7J265W43.js.map +0 -1
- package/dist/chunk-BKDJOWLW.js.map +0 -1
- package/dist/chunk-EFEBZBMU.js.map +0 -1
- package/dist/chunk-MO22VWRI.js.map +0 -1
- package/dist/chunk-OAFDB4TJ.js.map +0 -1
- package/dist/chunk-PK7GZY5P.js +0 -737
- package/dist/chunk-PK7GZY5P.js.map +0 -1
- package/dist/chunk-WSUXZOHL.js.map +0 -1
- package/dist/chunk-YZPW5F6U.js.map +0 -1
- package/dist/chunk-ZQTCAG6K.js.map +0 -1
- package/dist/cross-tab-session-AGJVA2UZ.js +0 -9
- package/dist/storage-migration-CZTBKXQV.js +0 -4
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
import { WP_STORAGE_KEYS, CLIENT_COOKIE_MIGRATIONS, CLIENT_SESSION_STORAGE_MIGRATIONS, LEGACY_CLIENT_AUTH_COOKIES, LEGACY_CLIENT_SESSION_EXACT, wpClientIframeRefreshKey, wpClientIframeRefreshExpKey, WP_UI_THEME } from './chunk-
|
|
1
|
+
import { WP_STORAGE_KEYS, CLIENT_COOKIE_MIGRATIONS, CLIENT_SESSION_STORAGE_MIGRATIONS, LEGACY_CLIENT_AUTH_COOKIES, LEGACY_CLIENT_SESSION_EXACT, wpClientIframeRefreshKey, wpClientIframeRefreshExpKey, WP_UI_THEME } from './chunk-UDAPRD7Z.js';
|
|
2
2
|
import Cookies from 'js-cookie';
|
|
3
3
|
|
|
4
|
+
// src/main/core/http/client-type.ts
|
|
5
|
+
var clientType = "web";
|
|
6
|
+
function setClientType(type) {
|
|
7
|
+
clientType = type;
|
|
8
|
+
}
|
|
9
|
+
function getClientType() {
|
|
10
|
+
return clientType;
|
|
11
|
+
}
|
|
12
|
+
|
|
4
13
|
// src/main/core/utils/storage-keys.ts
|
|
5
14
|
var defaults = {
|
|
6
15
|
loginDetails: WP_STORAGE_KEYS.c.auth.login,
|
|
@@ -26,8 +35,29 @@ function resetStorageKeysForTests() {
|
|
|
26
35
|
function getStorageKeys() {
|
|
27
36
|
return runtimeKeys;
|
|
28
37
|
}
|
|
38
|
+
function hasWindowLocation() {
|
|
39
|
+
if (typeof window === "undefined") {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
return window.location != null && typeof window.location.protocol === "string";
|
|
44
|
+
} catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function isBrowserCookieContextAvailable() {
|
|
49
|
+
if (getClientType() === "mobile") {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
if (typeof document === "undefined") {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return hasWindowLocation();
|
|
56
|
+
}
|
|
29
57
|
function cookieSecureFlag() {
|
|
30
|
-
if (
|
|
58
|
+
if (!hasWindowLocation()) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
31
61
|
return window.location.protocol === "https:";
|
|
32
62
|
}
|
|
33
63
|
function isCorruptCookieRawValue(raw) {
|
|
@@ -47,7 +77,7 @@ function stringifyCookieValue(value) {
|
|
|
47
77
|
return serialized;
|
|
48
78
|
}
|
|
49
79
|
var setCookie = (key, value, expire) => {
|
|
50
|
-
if (!key || isCorruptCookieRawValue(value)) {
|
|
80
|
+
if (!key || isCorruptCookieRawValue(value) || !isBrowserCookieContextAvailable()) {
|
|
51
81
|
return void 0;
|
|
52
82
|
}
|
|
53
83
|
return Cookies.set(key, value, {
|
|
@@ -57,6 +87,9 @@ var setCookie = (key, value, expire) => {
|
|
|
57
87
|
});
|
|
58
88
|
};
|
|
59
89
|
var getCookie = (key) => {
|
|
90
|
+
if (!isBrowserCookieContextAvailable()) {
|
|
91
|
+
return void 0;
|
|
92
|
+
}
|
|
60
93
|
return Cookies.get(key);
|
|
61
94
|
};
|
|
62
95
|
function parseCookieJson(key) {
|
|
@@ -78,15 +111,24 @@ function parseCookieJson(key) {
|
|
|
78
111
|
}
|
|
79
112
|
}
|
|
80
113
|
var removeCookie = (key) => {
|
|
114
|
+
if (!isBrowserCookieContextAvailable()) {
|
|
115
|
+
return void 0;
|
|
116
|
+
}
|
|
81
117
|
return Cookies.remove(key);
|
|
82
118
|
};
|
|
83
119
|
var clearClientAuthCookies = () => {
|
|
120
|
+
if (!isBrowserCookieContextAvailable()) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
84
123
|
getClientAuthCookieNamesToClear().forEach((name) => Cookies.remove(name));
|
|
85
124
|
for (const legacyAccess of ["woodsportal_access_token", "AUTH_CRED"]) {
|
|
86
125
|
Cookies.remove(legacyAccess);
|
|
87
126
|
}
|
|
88
127
|
};
|
|
89
128
|
var isCookieExpired = (key) => {
|
|
129
|
+
if (!isBrowserCookieContextAvailable()) {
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
90
132
|
const value = Cookies.get(key);
|
|
91
133
|
if (value === void 0) {
|
|
92
134
|
return true;
|
|
@@ -189,6 +231,9 @@ function removeLegacyAccessTokenCookies() {
|
|
|
189
231
|
}
|
|
190
232
|
}
|
|
191
233
|
function migrateLegacyStorageKeys() {
|
|
234
|
+
if (getClientType() === "mobile") {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
192
237
|
if (typeof window === "undefined") {
|
|
193
238
|
return;
|
|
194
239
|
}
|
|
@@ -304,6 +349,6 @@ function clearStaleIframeRefreshForOtherHubs(activeHubId) {
|
|
|
304
349
|
}
|
|
305
350
|
}
|
|
306
351
|
|
|
307
|
-
export { clearClientAuthCookies, clearClientIframeRefreshLocalKeys, clearClientSessionStorageKeys, clearStaleIframeRefreshForOtherHubs, configureStorageKeys, getClientAuthCookieNamesToClear, getCookie, getStorageKeys, isCookieExpired, isCorruptCookieRawValue, migrateLegacyStorageKeys, parseCookieJson, removeCookie, resetStorageKeysForTests, setCookie, stringifyCookieValue };
|
|
308
|
-
//# sourceMappingURL=chunk-
|
|
309
|
-
//# sourceMappingURL=chunk-
|
|
352
|
+
export { clearClientAuthCookies, clearClientIframeRefreshLocalKeys, clearClientSessionStorageKeys, clearStaleIframeRefreshForOtherHubs, configureStorageKeys, getClientAuthCookieNamesToClear, getClientType, getCookie, getStorageKeys, isBrowserCookieContextAvailable, isCookieExpired, isCorruptCookieRawValue, migrateLegacyStorageKeys, parseCookieJson, removeCookie, resetStorageKeysForTests, setClientType, setCookie, stringifyCookieValue };
|
|
353
|
+
//# sourceMappingURL=chunk-KPHAQNS2.js.map
|
|
354
|
+
//# sourceMappingURL=chunk-KPHAQNS2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/main/core/http/client-type.ts","../src/main/core/utils/storage-keys.ts","../src/main/core/utils/cookie.ts","../src/main/core/utils/storage-migration.ts"],"names":["Cookies"],"mappings":"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","file":"chunk-KPHAQNS2.js","sourcesContent":["export type SdkClientType = 'web' | 'mobile'\n\nlet clientType: SdkClientType = 'web'\n\nexport function setClientType(type: SdkClientType): void {\n clientType = type\n}\n\nexport function getClientType(): SdkClientType {\n return clientType\n}\n\n/** Test helper — restore default web client type. */\nexport function resetClientTypeForTests(): void {\n clientType = 'web'\n}\n","import { WP_STORAGE_KEYS } from './wp-storage-keys'\n\nexport interface StorageKeyConfig {\n loginDetails?: string\n refreshToken?: string\n portal?: string\n subscriptionType?: string\n authUser?: string\n pagination?: string\n routeMenu?: string\n associationView?: string\n emailVerified?: string\n}\n\nconst defaults: Required<StorageKeyConfig> = {\n loginDetails: WP_STORAGE_KEYS.c.auth.login,\n refreshToken: WP_STORAGE_KEYS.c.auth.refresh,\n portal: WP_STORAGE_KEYS.c.auth.portal,\n subscriptionType: WP_STORAGE_KEYS.c.auth.sub,\n authUser: WP_STORAGE_KEYS.c.auth.login,\n pagination: WP_STORAGE_KEYS.c.ui.pag,\n routeMenu: WP_STORAGE_KEYS.c.ui.menu,\n associationView: WP_STORAGE_KEYS.c.ui.assoc,\n emailVerified: WP_STORAGE_KEYS.c.auth.emailOk\n}\n\nlet runtimeKeys: Required<StorageKeyConfig> = { ...defaults }\n\nexport function configureStorageKeys(overrides: StorageKeyConfig = {}): void {\n runtimeKeys = { ...defaults, ...runtimeKeys, ...overrides }\n if (overrides.authUser === undefined) {\n runtimeKeys.authUser = runtimeKeys.loginDetails\n }\n}\n\n/** Test helper — restore default cookie key names. */\nexport function resetStorageKeysForTests(): void {\n runtimeKeys = { ...defaults }\n}\n\nexport function getStorageKeys(): Readonly<Required<StorageKeyConfig>> {\n return runtimeKeys\n}\n\nexport { WP_STORAGE_KEYS } from './wp-storage-keys'\n","import Cookies from 'js-cookie'\nimport { getClientType } from '../http/client-type'\nimport { getClientAuthCookieNamesToClear } from './storage-migration'\n\nfunction hasWindowLocation(): boolean {\n if (typeof window === 'undefined') {\n return false\n }\n try {\n return window.location != null && typeof window.location.protocol === 'string'\n } catch {\n return false\n }\n}\n\n/** True when js-cookie can read/write `document.cookie` (browser hosts only). */\nexport function isBrowserCookieContextAvailable(): boolean {\n if (getClientType() === 'mobile') {\n return false\n }\n if (typeof document === 'undefined') {\n return false\n }\n return hasWindowLocation()\n}\n\nfunction cookieSecureFlag(): boolean {\n if (!hasWindowLocation()) {\n return true\n }\n return window.location!.protocol === 'https:'\n}\n\n/** Values that must never be persisted in readable cookies. */\nexport function isCorruptCookieRawValue(raw: string | null | undefined): boolean {\n return raw == null || raw === '' || raw === 'undefined' || raw === 'null'\n}\n\n/** Serialize a value for cookie storage; returns null when write should be skipped. */\nexport function stringifyCookieValue(value: unknown): string | null {\n if (value === undefined || value === null) {\n return null\n }\n if (typeof value === 'string') {\n return isCorruptCookieRawValue(value) ? null : value\n }\n const serialized = JSON.stringify(value)\n if (serialized === undefined || isCorruptCookieRawValue(serialized)) {\n return null\n }\n return serialized\n}\n\nexport const setCookie = (key: string, value: string, expire?: number | Date) => {\n if (!key || isCorruptCookieRawValue(value) || !isBrowserCookieContextAvailable()) {\n return undefined\n }\n return Cookies.set(key, value, {\n expires: expire,\n sameSite: cookieSecureFlag() ? 'none' : 'lax',\n secure: cookieSecureFlag()\n })\n}\n\nexport const getCookie: any = (key: any) => {\n if (!isBrowserCookieContextAvailable()) {\n return undefined\n }\n return Cookies.get(key)\n}\n\n/** Parse JSON stored in a cookie; removes corrupt values on read (self-heal). */\nexport function parseCookieJson<T = unknown>(key: string | null | undefined): T | null {\n if (key == null || key === '') {\n return null\n }\n const raw = getCookie(key)\n if (isCorruptCookieRawValue(raw)) {\n if (raw === 'undefined' || raw === 'null') {\n Cookies.remove(key)\n }\n return null\n }\n try {\n return JSON.parse(raw) as T\n } catch {\n Cookies.remove(key)\n return null\n }\n}\n\nexport const removeCookie = (key: any) => {\n if (!isBrowserCookieContextAvailable()) {\n return undefined\n }\n return Cookies.remove(key)\n}\n\n/** Clears client-portal session cookies only (does not wipe admin cookies on shared localhost). */\nexport const clearClientAuthCookies = () => {\n if (!isBrowserCookieContextAvailable()) {\n return\n }\n getClientAuthCookieNamesToClear().forEach((name) => Cookies.remove(name))\n for (const legacyAccess of ['woodsportal_access_token', 'AUTH_CRED']) {\n Cookies.remove(legacyAccess)\n }\n}\n\n/** @deprecated Prefer {@link clearClientAuthCookies} */\nexport const removeAllCookie = clearClientAuthCookies\n\nexport const isCookieExpired = (key: string): boolean => {\n if (!isBrowserCookieContextAvailable()) {\n return true\n }\n const value = Cookies.get(key)\n if (value === undefined) {\n return true\n }\n try {\n const parsed = JSON.parse(value)\n if (parsed && typeof parsed === 'object' && 'expiresAt' in parsed) {\n const expiresAt = (parsed as { expiresAt?: number }).expiresAt\n return typeof expiresAt === 'number' && Date.now() > expiresAt\n }\n return false\n } catch {\n // Plain string values (e.g. refresh token) rely on browser cookie expiry.\n return false\n }\n}\n","import Cookies from 'js-cookie'\nimport { getClientType } from '../http/client-type'\nimport {\n CLIENT_COOKIE_MIGRATIONS,\n CLIENT_SESSION_STORAGE_MIGRATIONS,\n LEGACY_CLIENT_AUTH_COOKIES,\n LEGACY_CLIENT_SESSION_EXACT,\n WP_STORAGE_KEYS,\n WP_UI_THEME,\n wpClientIframeRefreshKey,\n wpClientIframeRefreshExpKey\n} from './wp-storage-keys'\nimport { getStorageKeys } from './storage-keys'\nimport { isCorruptCookieRawValue } from './cookie'\n\nfunction migrateCookiePair(legacy: string, canonical: string): void {\n const value = Cookies.get(legacy)\n if (value === undefined) {\n return\n }\n if (isCorruptCookieRawValue(value)) {\n Cookies.remove(legacy)\n return\n }\n if (!Cookies.get(canonical)) {\n Cookies.set(canonical, value)\n }\n Cookies.remove(legacy)\n}\n\nfunction migrateLocalStoragePair(legacy: string, canonical: string): void {\n if (typeof window === 'undefined' || !window.localStorage) {\n return\n }\n try {\n const value = window.localStorage.getItem(legacy)\n if (value == null) {\n return\n }\n if (!window.localStorage.getItem(canonical)) {\n window.localStorage.setItem(canonical, value)\n }\n window.localStorage.removeItem(legacy)\n } catch {\n // private mode\n }\n}\n\nfunction migrateSessionStoragePair(legacy: string, canonical: string): void {\n if (typeof window === 'undefined' || !window.sessionStorage) {\n return\n }\n try {\n const value = window.sessionStorage.getItem(legacy)\n if (value == null) {\n return\n }\n if (!window.sessionStorage.getItem(canonical)) {\n window.sessionStorage.setItem(canonical, value)\n }\n window.sessionStorage.removeItem(legacy)\n } catch {\n // ignore\n }\n}\n\nfunction migrateIframeRefreshKeys(): void {\n if (typeof window === 'undefined' || !window.localStorage) {\n return\n }\n try {\n const keys = Object.keys(window.localStorage).filter((k) => k.startsWith('wp_iframe_rt_'))\n for (const legacyKey of keys) {\n const suffix = legacyKey.slice('wp_iframe_rt_'.length)\n if (suffix.endsWith('_exp')) {\n continue\n }\n const hubId = suffix\n const token = window.localStorage.getItem(legacyKey)\n const exp = window.localStorage.getItem(`${legacyKey}_exp`)\n const newKey = wpClientIframeRefreshKey(hubId)\n const newExpKey = wpClientIframeRefreshExpKey(hubId)\n if (token != null && !window.localStorage.getItem(newKey)) {\n window.localStorage.setItem(newKey, token)\n }\n if (exp != null && !window.localStorage.getItem(newExpKey)) {\n window.localStorage.setItem(newExpKey, exp)\n }\n window.localStorage.removeItem(legacyKey)\n window.localStorage.removeItem(`${legacyKey}_exp`)\n }\n } catch {\n // ignore\n }\n}\n\nfunction removeLegacyAccessTokenCookies(): void {\n const keys = getStorageKeys()\n const legacyAccess = ['woodsportal_access_token', 'AUTH_CRED']\n for (const name of legacyAccess) {\n Cookies.remove(name)\n }\n if (keys.authUser && keys.authUser !== keys.loginDetails) {\n // legacy duplicate profile mirror — uplift handled by migration; drop separate user cookie\n Cookies.remove(keys.authUser)\n }\n}\n\n/**\n * One-time uplift: read legacy browser keys, write canonical `wp.*` keys, delete legacy.\n * Safe to call on every boot (idempotent).\n */\nexport function migrateLegacyStorageKeys(): void {\n if (getClientType() === 'mobile') {\n return\n }\n\n if (typeof window === 'undefined') {\n return\n }\n\n for (const [legacy, canonical] of CLIENT_COOKIE_MIGRATIONS) {\n migrateCookiePair(legacy, canonical)\n }\n\n migrateLocalStoragePair('hubSpotData', WP_STORAGE_KEYS.c.hub)\n migrateLocalStoragePair('theme', WP_UI_THEME)\n\n for (const [legacy, canonical] of CLIENT_SESSION_STORAGE_MIGRATIONS) {\n migrateSessionStoragePair(legacy, canonical)\n }\n\n migrateIframeRefreshKeys()\n removeLegacyAccessTokenCookies()\n\n // Drop dead forget-password key\n try {\n window.sessionStorage?.removeItem('entredEmail')\n } catch {\n // ignore\n }\n}\n\n/** All client auth cookie names to remove on logout (canonical + legacy + configured). */\nexport function getClientAuthCookieNamesToClear(): string[] {\n const keys = getStorageKeys()\n const configured = [\n keys.loginDetails,\n keys.refreshToken,\n keys.portal,\n keys.subscriptionType,\n keys.authUser,\n keys.pagination,\n keys.routeMenu,\n keys.associationView,\n keys.emailVerified\n ].filter((name): name is string => Boolean(name))\n\n const canonical = [\n WP_STORAGE_KEYS.c.auth.login,\n WP_STORAGE_KEYS.c.auth.refresh,\n WP_STORAGE_KEYS.c.auth.portal,\n WP_STORAGE_KEYS.c.auth.sub,\n WP_STORAGE_KEYS.c.auth.emailOk,\n WP_STORAGE_KEYS.c.ui.pag,\n WP_STORAGE_KEYS.c.ui.menu,\n WP_STORAGE_KEYS.c.ui.assoc\n ]\n\n return [...new Set([...configured, ...canonical, ...LEGACY_CLIENT_AUTH_COOKIES])]\n}\n\nexport function clearClientSessionStorageKeys(): void {\n if (typeof window === 'undefined' || !window.sessionStorage) {\n return\n }\n try {\n for (const [legacy, canonical] of CLIENT_SESSION_STORAGE_MIGRATIONS) {\n if (\n canonical === WP_STORAGE_KEYS.c.login.email ||\n canonical === WP_STORAGE_KEYS.c.login.force ||\n canonical === WP_STORAGE_KEYS.c.login.passkey ||\n canonical === WP_STORAGE_KEYS.c.login.done\n ) {\n continue\n }\n window.sessionStorage.removeItem(legacy)\n window.sessionStorage.removeItem(canonical)\n }\n for (const key of LEGACY_CLIENT_SESSION_EXACT) {\n if (key === 'entredEmail') {\n window.sessionStorage.removeItem(key)\n }\n }\n const preservedLoginKeys = new Set([\n WP_STORAGE_KEYS.c.login.email,\n WP_STORAGE_KEYS.c.login.force,\n WP_STORAGE_KEYS.c.login.passkey,\n WP_STORAGE_KEYS.c.login.done,\n 'woodsportal.login.email',\n 'woodsportal.login.forcePreLogin',\n 'woodsportal.login.passkeyPrimaryEnrolled',\n 'woodsportal.login.preLoginCompletedKey'\n ])\n const keysToRemove: string[] = []\n for (let i = 0; i < window.sessionStorage.length; i++) {\n const key = window.sessionStorage.key(i)\n if (!key || preservedLoginKeys.has(key)) continue\n if (key.startsWith('woodsportal.mfa.') || key.startsWith('wp.c.mfa.')) {\n keysToRemove.push(key)\n }\n if (key === WP_STORAGE_KEYS.c.auth.err || key === WP_STORAGE_KEYS.c.auth.refreshExhausted || key === 'authError') {\n keysToRemove.push(key)\n }\n if (key === WP_STORAGE_KEYS.c.sso.cb || key === 'sso_callback_processed') {\n keysToRemove.push(key)\n }\n }\n keysToRemove.forEach((k) => window.sessionStorage.removeItem(k))\n } catch {\n // ignore\n }\n}\n\nexport function clearClientIframeRefreshLocalKeys(): void {\n if (typeof window === 'undefined' || !window.localStorage) {\n return\n }\n try {\n const keys = Object.keys(window.localStorage).filter(\n (k) => k.startsWith('wp_iframe_rt_') || k.startsWith(WP_STORAGE_KEYS.c.auth.iframeRtPrefix)\n )\n keys.forEach((k) => window.localStorage.removeItem(k))\n } catch {\n // ignore\n }\n}\n\nexport function clearStaleIframeRefreshForOtherHubs(activeHubId: string | number | undefined): void {\n if (activeHubId == null || typeof window === 'undefined' || !window.localStorage) {\n return\n }\n const activePrefix = WP_STORAGE_KEYS.c.auth.iframeRtPrefix\n const activeKey = wpClientIframeRefreshKey(activeHubId)\n try {\n const keys = Object.keys(window.localStorage).filter(\n (k) => (k.startsWith('wp_iframe_rt_') || k.startsWith(activePrefix)) && k !== activeKey && k !== wpClientIframeRefreshExpKey(activeHubId)\n )\n keys.forEach((k) => window.localStorage.removeItem(k))\n } catch {\n // ignore\n }\n}\n"]}
|