woodsportal-client-sdk 4.0.4-dev.9 → 4.0.7-dev.1

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 (65) hide show
  1. package/dist/adapters/angular/index.d.ts +1 -0
  2. package/dist/adapters/angular/index.js +6 -4
  3. package/dist/adapters/angular/index.js.map +1 -1
  4. package/dist/adapters/react/index.d.ts +1 -0
  5. package/dist/adapters/react/index.js +6 -4
  6. package/dist/adapters/react/index.js.map +1 -1
  7. package/dist/adapters/vue/index.d.ts +1 -0
  8. package/dist/adapters/vue/index.js +6 -4
  9. package/dist/adapters/vue/index.js.map +1 -1
  10. package/dist/auth-error-codes-D7CXVBEN.js +3 -0
  11. package/dist/auth-error-codes-D7CXVBEN.js.map +1 -0
  12. package/dist/auth-interceptor-policy-LU2L5NJM.js +5 -0
  13. package/dist/auth-interceptor-policy-LU2L5NJM.js.map +1 -0
  14. package/dist/auth-utils-Z5P6SMLJ.js +5 -0
  15. package/dist/{auth-utils-MNMC2QGX.js.map → auth-utils-Z5P6SMLJ.js.map} +1 -1
  16. package/dist/chunk-55MIERLJ.js +3 -0
  17. package/dist/chunk-55MIERLJ.js.map +1 -0
  18. package/dist/chunk-6YOL5LPB.js +163 -0
  19. package/dist/chunk-6YOL5LPB.js.map +1 -0
  20. package/dist/chunk-B2OVKOJU.js +633 -0
  21. package/dist/chunk-B2OVKOJU.js.map +1 -0
  22. package/dist/chunk-BKT4MFQM.js +161 -0
  23. package/dist/chunk-BKT4MFQM.js.map +1 -0
  24. package/dist/{chunk-7Q6HRCUA.js → chunk-BURJ2NUL.js} +3 -3
  25. package/dist/{chunk-7Q6HRCUA.js.map → chunk-BURJ2NUL.js.map} +1 -1
  26. package/dist/chunk-COHBSTHF.js +82 -0
  27. package/dist/chunk-COHBSTHF.js.map +1 -0
  28. package/dist/{chunk-2TG7X2ML.js → chunk-FJAOCLB4.js} +12 -11
  29. package/dist/chunk-FJAOCLB4.js.map +1 -0
  30. package/dist/chunk-GUYIJ4ZE.js +165 -0
  31. package/dist/chunk-GUYIJ4ZE.js.map +1 -0
  32. package/dist/{chunk-VCYJAVD3.js → chunk-HAXXPW65.js} +167 -13
  33. package/dist/chunk-HAXXPW65.js.map +1 -0
  34. package/dist/{chunk-IBKBTIT6.js → chunk-OFPD644E.js} +6 -6
  35. package/dist/{chunk-IBKBTIT6.js.map → chunk-OFPD644E.js.map} +1 -1
  36. package/dist/{chunk-ZEJGWZK3.js → chunk-PFOSN7EB.js} +1242 -1269
  37. package/dist/chunk-PFOSN7EB.js.map +1 -0
  38. package/dist/{chunk-4AMFPSO2.js → chunk-WNE4LSVH.js} +465 -258
  39. package/dist/chunk-WNE4LSVH.js.map +1 -0
  40. package/dist/chunk-YNOZWRK3.js +306 -0
  41. package/dist/chunk-YNOZWRK3.js.map +1 -0
  42. package/dist/cross-tab-session-TUFJ6KU7.js +9 -0
  43. package/dist/cross-tab-session-TUFJ6KU7.js.map +1 -0
  44. package/dist/entries/auth.d.ts +17 -3
  45. package/dist/entries/auth.js +9 -4
  46. package/dist/entries/auth.js.map +1 -1
  47. package/dist/entries/crm.d.ts +1 -0
  48. package/dist/entries/crm.js +10 -6
  49. package/dist/entries/crm.js.map +1 -1
  50. package/dist/{http-errors-DqdtoJ1y.d.ts → http-errors-Bwhj6cfB.d.ts} +192 -9
  51. package/dist/index.d.ts +141 -3
  52. package/dist/index.js +16 -9
  53. package/dist/index.js.map +1 -1
  54. package/dist/refresh-lock-JQVP4YOS.js +72 -0
  55. package/dist/refresh-lock-JQVP4YOS.js.map +1 -0
  56. package/dist/storage-migration-BY2QL6YD.js +4 -0
  57. package/dist/storage-migration-BY2QL6YD.js.map +1 -0
  58. package/package.json +11 -9
  59. package/dist/auth-utils-MNMC2QGX.js +0 -3
  60. package/dist/chunk-2TG7X2ML.js.map +0 -1
  61. package/dist/chunk-4AMFPSO2.js.map +0 -1
  62. package/dist/chunk-QPSCMK4W.js +0 -237
  63. package/dist/chunk-QPSCMK4W.js.map +0 -1
  64. package/dist/chunk-VCYJAVD3.js.map +0 -1
  65. package/dist/chunk-ZEJGWZK3.js.map +0 -1
@@ -0,0 +1,306 @@
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-BKT4MFQM.js';
2
+ import Cookies from 'js-cookie';
3
+
4
+ // src/main/core/utils/storage-keys.ts
5
+ var defaults = {
6
+ loginDetails: WP_STORAGE_KEYS.c.auth.login,
7
+ refreshToken: WP_STORAGE_KEYS.c.auth.refresh,
8
+ portal: WP_STORAGE_KEYS.c.auth.portal,
9
+ subscriptionType: WP_STORAGE_KEYS.c.auth.sub,
10
+ authUser: WP_STORAGE_KEYS.c.auth.login,
11
+ pagination: WP_STORAGE_KEYS.c.ui.pag,
12
+ routeMenu: WP_STORAGE_KEYS.c.ui.menu,
13
+ associationView: WP_STORAGE_KEYS.c.ui.assoc,
14
+ emailVerified: WP_STORAGE_KEYS.c.auth.emailOk
15
+ };
16
+ var runtimeKeys = { ...defaults };
17
+ function configureStorageKeys(overrides = {}) {
18
+ runtimeKeys = { ...defaults, ...runtimeKeys, ...overrides };
19
+ if (overrides.authUser === void 0) {
20
+ runtimeKeys.authUser = runtimeKeys.loginDetails;
21
+ }
22
+ }
23
+ function resetStorageKeysForTests() {
24
+ runtimeKeys = { ...defaults };
25
+ }
26
+ function getStorageKeys() {
27
+ return runtimeKeys;
28
+ }
29
+ function cookieSecureFlag() {
30
+ if (typeof window === "undefined") return true;
31
+ return window.location.protocol === "https:";
32
+ }
33
+ function isCorruptCookieRawValue(raw) {
34
+ return raw == null || raw === "" || raw === "undefined" || raw === "null";
35
+ }
36
+ function stringifyCookieValue(value) {
37
+ if (value === void 0 || value === null) {
38
+ return null;
39
+ }
40
+ if (typeof value === "string") {
41
+ return isCorruptCookieRawValue(value) ? null : value;
42
+ }
43
+ const serialized = JSON.stringify(value);
44
+ if (serialized === void 0 || isCorruptCookieRawValue(serialized)) {
45
+ return null;
46
+ }
47
+ return serialized;
48
+ }
49
+ var setCookie = (key, value, expire) => {
50
+ if (!key || isCorruptCookieRawValue(value)) {
51
+ return void 0;
52
+ }
53
+ return Cookies.set(key, value, {
54
+ expires: expire,
55
+ sameSite: cookieSecureFlag() ? "none" : "lax",
56
+ secure: cookieSecureFlag()
57
+ });
58
+ };
59
+ var getCookie = (key) => {
60
+ return Cookies.get(key);
61
+ };
62
+ function parseCookieJson(key) {
63
+ if (key == null || key === "") {
64
+ return null;
65
+ }
66
+ const raw = getCookie(key);
67
+ if (isCorruptCookieRawValue(raw)) {
68
+ if (raw === "undefined" || raw === "null") {
69
+ Cookies.remove(key);
70
+ }
71
+ return null;
72
+ }
73
+ try {
74
+ return JSON.parse(raw);
75
+ } catch {
76
+ Cookies.remove(key);
77
+ return null;
78
+ }
79
+ }
80
+ var clearClientAuthCookies = () => {
81
+ getClientAuthCookieNamesToClear().forEach((name) => Cookies.remove(name));
82
+ for (const legacyAccess of ["woodsportal_access_token", "AUTH_CRED"]) {
83
+ Cookies.remove(legacyAccess);
84
+ }
85
+ };
86
+ var isCookieExpired = (key) => {
87
+ const value = Cookies.get(key);
88
+ if (value === void 0) {
89
+ return true;
90
+ }
91
+ try {
92
+ const parsed = JSON.parse(value);
93
+ if (parsed && typeof parsed === "object" && "expiresAt" in parsed) {
94
+ const expiresAt = parsed.expiresAt;
95
+ return typeof expiresAt === "number" && Date.now() > expiresAt;
96
+ }
97
+ return false;
98
+ } catch {
99
+ return false;
100
+ }
101
+ };
102
+
103
+ // src/main/core/utils/storage-migration.ts
104
+ function migrateCookiePair(legacy, canonical) {
105
+ const value = Cookies.get(legacy);
106
+ if (value === void 0) {
107
+ return;
108
+ }
109
+ if (isCorruptCookieRawValue(value)) {
110
+ Cookies.remove(legacy);
111
+ return;
112
+ }
113
+ if (!Cookies.get(canonical)) {
114
+ Cookies.set(canonical, value);
115
+ }
116
+ Cookies.remove(legacy);
117
+ }
118
+ function migrateLocalStoragePair(legacy, canonical) {
119
+ if (typeof window === "undefined" || !window.localStorage) {
120
+ return;
121
+ }
122
+ try {
123
+ const value = window.localStorage.getItem(legacy);
124
+ if (value == null) {
125
+ return;
126
+ }
127
+ if (!window.localStorage.getItem(canonical)) {
128
+ window.localStorage.setItem(canonical, value);
129
+ }
130
+ window.localStorage.removeItem(legacy);
131
+ } catch {
132
+ }
133
+ }
134
+ function migrateSessionStoragePair(legacy, canonical) {
135
+ if (typeof window === "undefined" || !window.sessionStorage) {
136
+ return;
137
+ }
138
+ try {
139
+ const value = window.sessionStorage.getItem(legacy);
140
+ if (value == null) {
141
+ return;
142
+ }
143
+ if (!window.sessionStorage.getItem(canonical)) {
144
+ window.sessionStorage.setItem(canonical, value);
145
+ }
146
+ window.sessionStorage.removeItem(legacy);
147
+ } catch {
148
+ }
149
+ }
150
+ function migrateIframeRefreshKeys() {
151
+ if (typeof window === "undefined" || !window.localStorage) {
152
+ return;
153
+ }
154
+ try {
155
+ const keys = Object.keys(window.localStorage).filter((k) => k.startsWith("wp_iframe_rt_"));
156
+ for (const legacyKey of keys) {
157
+ const suffix = legacyKey.slice("wp_iframe_rt_".length);
158
+ if (suffix.endsWith("_exp")) {
159
+ continue;
160
+ }
161
+ const hubId = suffix;
162
+ const token = window.localStorage.getItem(legacyKey);
163
+ const exp = window.localStorage.getItem(`${legacyKey}_exp`);
164
+ const newKey = wpClientIframeRefreshKey(hubId);
165
+ const newExpKey = wpClientIframeRefreshExpKey(hubId);
166
+ if (token != null && !window.localStorage.getItem(newKey)) {
167
+ window.localStorage.setItem(newKey, token);
168
+ }
169
+ if (exp != null && !window.localStorage.getItem(newExpKey)) {
170
+ window.localStorage.setItem(newExpKey, exp);
171
+ }
172
+ window.localStorage.removeItem(legacyKey);
173
+ window.localStorage.removeItem(`${legacyKey}_exp`);
174
+ }
175
+ } catch {
176
+ }
177
+ }
178
+ function removeLegacyAccessTokenCookies() {
179
+ const keys = getStorageKeys();
180
+ const legacyAccess = ["woodsportal_access_token", "AUTH_CRED"];
181
+ for (const name of legacyAccess) {
182
+ Cookies.remove(name);
183
+ }
184
+ if (keys.authUser && keys.authUser !== keys.loginDetails) {
185
+ Cookies.remove(keys.authUser);
186
+ }
187
+ }
188
+ function migrateLegacyStorageKeys() {
189
+ if (typeof window === "undefined") {
190
+ return;
191
+ }
192
+ for (const [legacy, canonical] of CLIENT_COOKIE_MIGRATIONS) {
193
+ migrateCookiePair(legacy, canonical);
194
+ }
195
+ migrateLocalStoragePair("hubSpotData", WP_STORAGE_KEYS.c.hub);
196
+ migrateLocalStoragePair("theme", WP_UI_THEME);
197
+ for (const [legacy, canonical] of CLIENT_SESSION_STORAGE_MIGRATIONS) {
198
+ migrateSessionStoragePair(legacy, canonical);
199
+ }
200
+ migrateIframeRefreshKeys();
201
+ removeLegacyAccessTokenCookies();
202
+ try {
203
+ window.sessionStorage?.removeItem("entredEmail");
204
+ } catch {
205
+ }
206
+ }
207
+ function getClientAuthCookieNamesToClear() {
208
+ const keys = getStorageKeys();
209
+ const configured = [
210
+ keys.loginDetails,
211
+ keys.refreshToken,
212
+ keys.portal,
213
+ keys.subscriptionType,
214
+ keys.authUser,
215
+ keys.pagination,
216
+ keys.routeMenu,
217
+ keys.associationView,
218
+ keys.emailVerified
219
+ ].filter((name) => Boolean(name));
220
+ const canonical = [
221
+ WP_STORAGE_KEYS.c.auth.login,
222
+ WP_STORAGE_KEYS.c.auth.refresh,
223
+ WP_STORAGE_KEYS.c.auth.portal,
224
+ WP_STORAGE_KEYS.c.auth.sub,
225
+ WP_STORAGE_KEYS.c.auth.emailOk,
226
+ WP_STORAGE_KEYS.c.ui.pag,
227
+ WP_STORAGE_KEYS.c.ui.menu,
228
+ WP_STORAGE_KEYS.c.ui.assoc
229
+ ];
230
+ return [.../* @__PURE__ */ new Set([...configured, ...canonical, ...LEGACY_CLIENT_AUTH_COOKIES])];
231
+ }
232
+ function clearClientSessionStorageKeys() {
233
+ if (typeof window === "undefined" || !window.sessionStorage) {
234
+ return;
235
+ }
236
+ try {
237
+ for (const [legacy, canonical] of CLIENT_SESSION_STORAGE_MIGRATIONS) {
238
+ if (canonical === WP_STORAGE_KEYS.c.login.email || canonical === WP_STORAGE_KEYS.c.login.force || canonical === WP_STORAGE_KEYS.c.login.passkey || canonical === WP_STORAGE_KEYS.c.login.done) {
239
+ continue;
240
+ }
241
+ window.sessionStorage.removeItem(legacy);
242
+ window.sessionStorage.removeItem(canonical);
243
+ }
244
+ for (const key of LEGACY_CLIENT_SESSION_EXACT) {
245
+ if (key === "entredEmail") {
246
+ window.sessionStorage.removeItem(key);
247
+ }
248
+ }
249
+ const preservedLoginKeys = /* @__PURE__ */ new Set([
250
+ WP_STORAGE_KEYS.c.login.email,
251
+ WP_STORAGE_KEYS.c.login.force,
252
+ WP_STORAGE_KEYS.c.login.passkey,
253
+ WP_STORAGE_KEYS.c.login.done,
254
+ "woodsportal.login.email",
255
+ "woodsportal.login.forcePreLogin",
256
+ "woodsportal.login.passkeyPrimaryEnrolled",
257
+ "woodsportal.login.preLoginCompletedKey"
258
+ ]);
259
+ const keysToRemove = [];
260
+ for (let i = 0; i < window.sessionStorage.length; i++) {
261
+ const key = window.sessionStorage.key(i);
262
+ if (!key || preservedLoginKeys.has(key)) continue;
263
+ if (key.startsWith("woodsportal.mfa.") || key.startsWith("wp.c.mfa.")) {
264
+ keysToRemove.push(key);
265
+ }
266
+ if (key === WP_STORAGE_KEYS.c.auth.err || key === WP_STORAGE_KEYS.c.auth.refreshExhausted || key === "authError") {
267
+ keysToRemove.push(key);
268
+ }
269
+ if (key === WP_STORAGE_KEYS.c.sso.cb || key === "sso_callback_processed") {
270
+ keysToRemove.push(key);
271
+ }
272
+ }
273
+ keysToRemove.forEach((k) => window.sessionStorage.removeItem(k));
274
+ } catch {
275
+ }
276
+ }
277
+ function clearClientIframeRefreshLocalKeys() {
278
+ if (typeof window === "undefined" || !window.localStorage) {
279
+ return;
280
+ }
281
+ try {
282
+ const keys = Object.keys(window.localStorage).filter(
283
+ (k) => k.startsWith("wp_iframe_rt_") || k.startsWith(WP_STORAGE_KEYS.c.auth.iframeRtPrefix)
284
+ );
285
+ keys.forEach((k) => window.localStorage.removeItem(k));
286
+ } catch {
287
+ }
288
+ }
289
+ function clearStaleIframeRefreshForOtherHubs(activeHubId) {
290
+ if (activeHubId == null || typeof window === "undefined" || !window.localStorage) {
291
+ return;
292
+ }
293
+ const activePrefix = WP_STORAGE_KEYS.c.auth.iframeRtPrefix;
294
+ const activeKey = wpClientIframeRefreshKey(activeHubId);
295
+ try {
296
+ const keys = Object.keys(window.localStorage).filter(
297
+ (k) => (k.startsWith("wp_iframe_rt_") || k.startsWith(activePrefix)) && k !== activeKey && k !== wpClientIframeRefreshExpKey(activeHubId)
298
+ );
299
+ keys.forEach((k) => window.localStorage.removeItem(k));
300
+ } catch {
301
+ }
302
+ }
303
+
304
+ export { clearClientAuthCookies, clearClientIframeRefreshLocalKeys, clearClientSessionStorageKeys, clearStaleIframeRefreshForOtherHubs, configureStorageKeys, getClientAuthCookieNamesToClear, getCookie, getStorageKeys, isCookieExpired, isCorruptCookieRawValue, migrateLegacyStorageKeys, parseCookieJson, resetStorageKeysForTests, setCookie, stringifyCookieValue };
305
+ //# sourceMappingURL=chunk-YNOZWRK3.js.map
306
+ //# sourceMappingURL=chunk-YNOZWRK3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../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-YNOZWRK3.js","sourcesContent":["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 { getClientAuthCookieNamesToClear } from './storage-migration'\n\nfunction cookieSecureFlag(): boolean {\n if (typeof window === 'undefined') return true\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)) {\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 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 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 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 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 {\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 (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"]}
@@ -0,0 +1,9 @@
1
+ export { applyCrossTabSessionRevocation, installCrossTabSessionListener, resetCrossTabSessionSyncForTests, signalSessionChanged } from './chunk-6YOL5LPB.js';
2
+ import './chunk-55MIERLJ.js';
3
+ import './chunk-BURJ2NUL.js';
4
+ import './chunk-PFOSN7EB.js';
5
+ import './chunk-B2OVKOJU.js';
6
+ import './chunk-YNOZWRK3.js';
7
+ import './chunk-BKT4MFQM.js';
8
+ //# sourceMappingURL=cross-tab-session-TUFJ6KU7.js.map
9
+ //# sourceMappingURL=cross-tab-session-TUFJ6KU7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"cross-tab-session-TUFJ6KU7.js"}
@@ -1,5 +1,5 @@
1
- import { p as preLogin, l as login, c as clientSession, h as handoff, a as logout, v as verifyEmail, r as registerExistingUser, f as forgetPassword, b as resetPassword, d as resetPasswordVerifyToken, e as verifyEmailResend, g as resendEmail, i as changePassword, m as me, j as profile, k as profileUpdate, n as verifyOtp, s as sendMfaOtp, o as pendingPasskeyOptions, q as pendingPasskeyVerify, t as getMfaStatus, u as setMfaPreferences, w as startPhoneVerify, x as confirmPhoneVerify, y as totpEnrollStart, z as totpEnrollVerify, A as totpDisable, B as phoneUnverify, C as backupCodesRegenerate, D as mfaOptOut, E as webauthnRegisterOptions, F as webauthnRegisterVerify, G as webauthnAuthOptions, H as webauthnAuthVerify, I as listWebauthnCredentials, J as deleteWebauthnCredential, K as passkeyLoginOptions, L as passkeyLoginVerify, M as getSecurityOverview, N as getSecurityLoginActivity, O as getSecuritySessions, P as revokeSecuritySession, Q as revokeOtherSecuritySessions, R as getLoginBootstrap, S as getSsoDetails, T as generateSsoUrl, U as ssoCallback, V as getRefreshToken, W as getAuthRefreshToken, X as getAccessToken, Y as clearAccessToken, Z as isAuthenticated, _ as isAuthenticateApp, $ as isAccessTokenExpired, a0 as isExpiresAccessToken } from '../http-errors-DqdtoJ1y.js';
2
- export { an as ActiveSession, aH as EditorPreviewMockHandler, aI as EditorPreviewMockResult, ao as HttpClientConfig, ap as HttpErrorKind, aJ as LoginBootstrapMfaPolicy, aK as LoginBootstrapPortal, aL as LoginBootstrapResponse, aM as LoginBootstrapSsoProvider, ar as LoginHistoryRow, as as LoginResponseData, at as MfaEnrollmentStatus, au as MfaMethod, av as MfaMethodOption, aw as MfaPortalScopeContext, ax as PaginationResponse, ay as SERVICE_UNAVAILABLE_MESSAGE, az as SecurityOverview, a2 as TwoFaVerificationRequest, aB as classifyHttpError, aC as getFieldErrors, aD as getFormErrors, aE as getHttpErrorMessage, aF as initializeHttpClient, aG as isServiceUnavailableError, aN as setEditorPreviewMockHandler } from '../http-errors-DqdtoJ1y.js';
1
+ import { p as preLogin, l as login, c as clientSession, h as handoff, a as logout, r as register, v as verifyEmail, b as registerExistingUser, f as forgetPassword, d as resetPassword, e as resetPasswordVerifyToken, g as verifyEmailResend, i as resendEmail, j as changePassword, m as me, k as profile, n as profileUpdate, o as verifyOtp, s as sendMfaOtp, q as pendingPasskeyOptions, t as pendingPasskeyVerify, u as getMfaStatus, w as setMfaPreferences, x as startPhoneVerify, y as confirmPhoneVerify, z as totpEnrollStart, A as totpEnrollVerify, B as totpDisable, C as phoneUnverify, D as backupCodesRegenerate, E as mfaOptOut, F as webauthnRegisterOptions, G as webauthnRegisterVerify, H as webauthnAuthOptions, I as webauthnAuthVerify, J as listWebauthnCredentials, K as deleteWebauthnCredential, L as passkeyLoginOptions, M as passkeyLoginVerify, N as getSecurityOverview, O as getSecurityLoginActivity, P as getSecuritySessions, Q as revokeSecuritySession, R as revokeOtherSecuritySessions, S as getLoginBootstrap, T as getSsoDetails, U as generateSsoUrl, V as ssoCallback, W as getRefreshToken, X as refreshSession, Y as getAuthRefreshToken, Z as getAccessToken, _ as clearAccessToken, $ as isAuthenticated, a0 as isAuthenticateApp, a1 as isAccessTokenExpired, a2 as isExpiresAccessToken, a3 as hasRefreshSession, a4 as hasValidAccessToken, a5 as didLastRefreshFail, a6 as isSessionRefreshExhausted, a7 as isRefreshInFlight, a8 as resetSessionAuthState, a9 as clearSessionRefreshExhaustedState, aa as hydrateSessionRefreshState, ab as SessionContractInput } from '../http-errors-Bwhj6cfB.js';
2
+ export { ay as ActiveSession, az as ApiErrorPayload, aA as AuthErrorAction, aB as AuthErrorCode, aC as AuthErrorCodeValue, aD as AuthFunnelState, aE as AuthInterceptorPolicyConfig, aF as AuthPolicyRoutes, aG as AuthRouteAction, bl as EditorPreviewMockHandler, bm as EditorPreviewMockResult, aH as HttpClientConfig, aI as HttpErrorKind, bn as LoginBootstrapMfaPolicy, bo as LoginBootstrapPortal, bp as LoginBootstrapResponse, bq as LoginBootstrapSsoProvider, aK as LoginHistoryRow, aL as LoginResponseData, aM as MfaBootRecoveryResult, aN as MfaEnrollmentStatus, aO as MfaMethod, aP as MfaMethodOption, aQ as MfaPortalScopeContext, aR as PaginationResponse, aS as SERVICE_UNAVAILABLE_MESSAGE, aT as SecurityOverview, aV as StoredAuthError, ad as TwoFaVerificationRequest, aW as UnauthorizedPageCopy, aX as WoodsportalRequestConfig, aY as classifyHttpError, a_ as getFieldErrors, a$ as getFormErrors, b0 as getHttpErrorMessage, b2 as getUnauthorizedPageCopy, b3 as hasAuthenticatedAccess, b4 as hasValidAccess, b5 as initializeHttpClient, b6 as isFullyAuthenticated, b7 as isMfaPendingSession, b8 as isOptionalAuthFailureUrl, b9 as isServiceUnavailableError, ba as isSessionProbeUrl, bb as parseApiErrorPayload, bc as persistAuthError, bd as readPersistedAuthError, be as recoverMfaGateOnBoot, bg as resolveAuthErrorAction, bh as resolveAuthRouteAction, br as setEditorPreviewMockHandler, bi as setSessionLifecycleListener, bj as startVisibilityRefreshScheduler, bk as stopVisibilityRefreshScheduler } from '../http-errors-Bwhj6cfB.js';
3
3
  export { C as ChangePasswordPayload, F as ForgetPasswordPayload, L as LoginPayload, P as PreLoginPayload, a as ResetPasswordPayload, R as ResetPasswordVerifyTokenPayload, V as VerifyEmailPayload } from '../index-Bh9eY8sA.js';
4
4
  import 'axios';
5
5
 
@@ -10,6 +10,7 @@ declare const api: {
10
10
  clientSession: typeof clientSession;
11
11
  handoff: typeof handoff;
12
12
  logout: typeof logout;
13
+ register: typeof register;
13
14
  verifyEmail: typeof verifyEmail;
14
15
  registerExistingUser: typeof registerExistingUser;
15
16
  forgetPassword: typeof forgetPassword;
@@ -61,6 +62,7 @@ declare const api: {
61
62
  };
62
63
  session: {
63
64
  getRefreshToken: typeof getRefreshToken;
65
+ refreshSession: typeof refreshSession;
64
66
  refreshAccessToken: typeof getAuthRefreshToken;
65
67
  getAccessToken: typeof getAccessToken;
66
68
  clearAccessToken: typeof clearAccessToken;
@@ -69,8 +71,20 @@ declare const api: {
69
71
  isAccessTokenExpired: typeof isAccessTokenExpired;
70
72
  isExpiresAccessToken: typeof isExpiresAccessToken;
71
73
  isCookieExpired: (key: string) => boolean;
74
+ hasRefreshSession: typeof hasRefreshSession;
75
+ hasValidAccessToken: typeof hasValidAccessToken;
76
+ didLastRefreshFail: typeof didLastRefreshFail;
77
+ isSessionRefreshExhausted: typeof isSessionRefreshExhausted;
78
+ isRefreshInFlight: typeof isRefreshInFlight;
79
+ resetSessionAuthState: typeof resetSessionAuthState;
80
+ clearSessionRefreshExhaustedState: typeof clearSessionRefreshExhaustedState;
81
+ hydrateSessionRefreshState: typeof hydrateSessionRefreshState;
82
+ contract: () => SessionContractInput;
83
+ isFullyAuthenticated: () => boolean;
84
+ hasAuthenticatedAccess: () => boolean;
85
+ hasValidAccess: () => boolean;
72
86
  };
73
87
  };
74
88
  };
75
89
 
76
- export { api };
90
+ export { SessionContractInput, api };
@@ -1,7 +1,12 @@
1
- import { authApi } from '../chunk-VCYJAVD3.js';
2
- export { SERVICE_UNAVAILABLE_MESSAGE, classifyHttpError, getFieldErrors, getFormErrors, getHttpErrorMessage, initializeHttpClient, isServiceUnavailableError, setEditorPreviewMockHandler } from '../chunk-4AMFPSO2.js';
3
- import '../chunk-ZEJGWZK3.js';
4
- import '../chunk-QPSCMK4W.js';
1
+ import { authApi } from '../chunk-HAXXPW65.js';
2
+ export { hasAuthenticatedAccess, hasValidAccess, isFullyAuthenticated, isMfaPendingSession, recoverMfaGateOnBoot, resolveAuthRouteAction } from '../chunk-HAXXPW65.js';
3
+ export { isOptionalAuthFailureUrl, isSessionProbeUrl, persistAuthError, readPersistedAuthError, resolveAuthErrorAction } from '../chunk-GUYIJ4ZE.js';
4
+ export { SERVICE_UNAVAILABLE_MESSAGE, classifyHttpError, getFieldErrors, getFormErrors, getHttpErrorMessage, initializeHttpClient, isServiceUnavailableError, setEditorPreviewMockHandler, startVisibilityRefreshScheduler, stopVisibilityRefreshScheduler } from '../chunk-WNE4LSVH.js';
5
+ import '../chunk-PFOSN7EB.js';
6
+ export { setSessionLifecycleListener } from '../chunk-B2OVKOJU.js';
7
+ export { AuthErrorCode, getUnauthorizedPageCopy, parseApiErrorPayload } from '../chunk-COHBSTHF.js';
8
+ import '../chunk-YNOZWRK3.js';
9
+ import '../chunk-BKT4MFQM.js';
5
10
 
6
11
  // src/main/entries/auth.ts
7
12
  var api = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/main/entries/auth.ts"],"names":[],"mappings":";;;;;;AAoCO,IAAM,GAAA,GAAM;AAAA,EACf,IAAA,EAAM;AACV","file":"auth.js","sourcesContent":["/**\n * Auth-only subpath export — login, MFA, security, SSO, token helpers.\n * Does not import CRM feature modules.\n */\nimport { authApi } from '../api/nested-auth-api'\n\nexport { initializeHttpClient, getFormErrors, getFieldErrors, setEditorPreviewMockHandler } from '../core/http/http-client'\nexport type { HttpClientConfig, EditorPreviewMockHandler, EditorPreviewMockResult } from '../core/http/http-client'\n\nexport { classifyHttpError, getHttpErrorMessage, isServiceUnavailableError, SERVICE_UNAVAILABLE_MESSAGE } from '../core/http/http-errors'\nexport type { HttpErrorKind } from '../core/http/http-errors'\n\nexport type {\n PreLoginPayload,\n LoginPayload,\n VerifyEmailPayload,\n ResetPasswordVerifyTokenPayload,\n ResetPasswordPayload,\n ForgetPasswordPayload,\n ChangePasswordPayload,\n MfaMethod,\n MfaMethodOption,\n MfaPortalScopeContext,\n LoginBootstrapResponse,\n LoginBootstrapMfaPolicy,\n LoginBootstrapPortal,\n LoginBootstrapSsoProvider,\n LoginResponseData,\n TwoFaVerificationRequest,\n MfaEnrollmentStatus,\n SecurityOverview,\n LoginHistoryRow,\n ActiveSession,\n PaginationResponse\n} from '../core/types'\n\nexport const api = {\n auth: authApi\n}\n"]}
1
+ {"version":3,"sources":["../../src/main/entries/auth.ts"],"names":[],"mappings":";;;;;;;;;;;AAsEO,IAAM,GAAA,GAAM;AAAA,EACf,IAAA,EAAM;AACV","file":"auth.js","sourcesContent":["/**\n * Auth-only subpath export — login, MFA, security, SSO, token helpers.\n * Does not import CRM feature modules.\n */\nimport { authApi } from '../api/nested-auth-api'\n\nexport { initializeHttpClient, getFormErrors, getFieldErrors, setEditorPreviewMockHandler } from '../core/http/http-client'\nexport { setSessionLifecycleListener } from '../core/http/token-store'\nexport type { HttpClientConfig, EditorPreviewMockHandler, EditorPreviewMockResult } from '../core/http/http-client'\n\nexport { classifyHttpError, getHttpErrorMessage, isServiceUnavailableError, SERVICE_UNAVAILABLE_MESSAGE } from '../core/http/http-errors'\nexport type { HttpErrorKind } from '../core/http/http-errors'\n\nexport {\n AuthErrorCode,\n parseApiErrorPayload,\n getUnauthorizedPageCopy,\n resolveAuthErrorAction,\n isOptionalAuthFailureUrl,\n isSessionProbeUrl,\n persistAuthError,\n readPersistedAuthError,\n hasValidAccess,\n isFullyAuthenticated,\n isMfaPendingSession,\n hasAuthenticatedAccess,\n recoverMfaGateOnBoot,\n startVisibilityRefreshScheduler,\n stopVisibilityRefreshScheduler,\n resolveAuthRouteAction\n} from '../core/auth/index.js'\nexport type {\n ApiErrorPayload,\n StoredAuthError,\n AuthErrorCodeValue,\n UnauthorizedPageCopy,\n AuthErrorAction,\n AuthPolicyRoutes,\n AuthInterceptorPolicyConfig,\n WoodsportalRequestConfig,\n SessionContractInput,\n MfaBootRecoveryResult,\n AuthRouteAction,\n AuthFunnelState\n} from '../core/auth/index.js'\n\nexport type {\n PreLoginPayload,\n LoginPayload,\n VerifyEmailPayload,\n ResetPasswordVerifyTokenPayload,\n ResetPasswordPayload,\n ForgetPasswordPayload,\n ChangePasswordPayload,\n MfaMethod,\n MfaMethodOption,\n MfaPortalScopeContext,\n LoginBootstrapResponse,\n LoginBootstrapMfaPolicy,\n LoginBootstrapPortal,\n LoginBootstrapSsoProvider,\n LoginResponseData,\n TwoFaVerificationRequest,\n MfaEnrollmentStatus,\n SecurityOverview,\n LoginHistoryRow,\n ActiveSession,\n PaginationResponse\n} from '../core/types'\n\nexport const api = {\n auth: authApi\n}\n"]}
@@ -160,6 +160,7 @@ declare const store: {
160
160
  modifiedObjectsData(results: any): void;
161
161
  clearTablePrependData(): void;
162
162
  setTablePrependData(response: any, props?: any): Promise<void>;
163
+ updateTablePrependData(response: any, payload?: any): any;
163
164
  };
164
165
  };
165
166
  user: {
@@ -1,8 +1,12 @@
1
- import { crmApi } from '../chunk-2TG7X2ML.js';
2
- import { navigationApi, storage } from '../chunk-4AMFPSO2.js';
3
- import '../chunk-7Q6HRCUA.js';
4
- import { actions8, syncStore, actions5, emailStore, actions4, noteStore, actions7, userStore, actions2, tableStore, tableUiActions, tableUiStore } from '../chunk-ZEJGWZK3.js';
5
- import '../chunk-QPSCMK4W.js';
1
+ import { crmApi } from '../chunk-FJAOCLB4.js';
2
+ import '../chunk-55MIERLJ.js';
3
+ import { navigationApi } from '../chunk-WNE4LSVH.js';
4
+ import '../chunk-BURJ2NUL.js';
5
+ import { actions8, syncStore, actions5, emailStore, actions4, noteStore, actions6, userStore, actions2, tableStore, tableUiActions, tableUiStore } from '../chunk-PFOSN7EB.js';
6
+ import { storage } from '../chunk-B2OVKOJU.js';
7
+ import '../chunk-COHBSTHF.js';
8
+ import '../chunk-YNOZWRK3.js';
9
+ import '../chunk-BKT4MFQM.js';
6
10
 
7
11
  // src/main/entries/crm.ts
8
12
  var api = {
@@ -13,7 +17,7 @@ var store = {
13
17
  storage,
14
18
  tableUi: { store: tableUiStore, actions: tableUiActions },
15
19
  table: { store: tableStore, actions: actions2 },
16
- user: { store: userStore, actions: actions7 },
20
+ user: { store: userStore, actions: actions6 },
17
21
  note: { store: noteStore, actions: actions4 },
18
22
  email: { store: emailStore, actions: actions5 },
19
23
  sync: { store: syncStore, actions: actions8 }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/main/entries/crm.ts"],"names":["actions"],"mappings":";;;;;;;AAqBO,IAAM,GAAA,GAAM;AAAA,EACf,GAAA,EAAK,MAAA;AAAA,EACL,UAAA,EAAY;AAChB;AAEO,IAAM,KAAA,GAAQ;AAAA,EACjB,OAAA;AAAA,EACA,OAAA,EAAS,EAAE,KAAA,EAAO,YAAA,EAAc,SAAS,cAAA,EAAe;AAAA,EACxD,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,WAAYA,QAAA,EAAsB;AAAA,EAClD,IAAA,EAAM,EAAE,KAAA,EAAO,SAAA,EAAW,SAASA,QAAAA,EAAY;AAAA,EAC/C,IAAA,EAAM,EAAE,KAAA,EAAO,SAAA,EAAW,SAASA,QAAAA,EAAY;AAAA,EAC/C,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,EAAY,SAASA,QAAAA,EAAa;AAAA,EAClD,IAAA,EAAM,EAAE,KAAA,EAAO,SAAA,EAAW,SAASA,QAAAA;AACvC","file":"crm.js","sourcesContent":["/**\n * CRM subpath export — pipelines, objects, notes, emails, files, cache purge, navigation, state.\n */\nimport { crmApi } from '../api/nested-crm-api'\nimport { navigationApi } from '../api/navigation-api'\nimport {\n tableStore,\n tableActions,\n tableUiStore,\n tableUiActions,\n userStore,\n userActions,\n noteStore,\n noteActions,\n emailStore,\n emailActions,\n syncStore,\n syncActions\n} from '../state'\nimport { storage } from '../core/utils/localStorage'\n\nexport const api = {\n crm: crmApi,\n navigation: navigationApi\n}\n\nexport const store = {\n storage,\n tableUi: { store: tableUiStore, actions: tableUiActions },\n table: { store: tableStore, actions: tableActions },\n user: { store: userStore, actions: userActions },\n note: { store: noteStore, actions: noteActions },\n email: { store: emailStore, actions: emailActions },\n sync: { store: syncStore, actions: syncActions }\n}\n\nexport type { CrmCachePurgeOptions } from '../core/types/cache-purge'\nexport type {\n CachePurgeRequest,\n CachePurgeTarget,\n CachePurgeListQuery,\n CachePurgeView,\n CachePurgeDomain,\n CachePurgeMode,\n PurgeResult,\n CreateCachePurgeJobOptions\n} from '../core/types/cache-purge'\n"]}
1
+ {"version":3,"sources":["../../src/main/entries/crm.ts"],"names":["actions"],"mappings":";;;;;;;;;;;AAqBO,IAAM,GAAA,GAAM;AAAA,EACf,GAAA,EAAK,MAAA;AAAA,EACL,UAAA,EAAY;AAChB;AAEO,IAAM,KAAA,GAAQ;AAAA,EACjB,OAAA;AAAA,EACA,OAAA,EAAS,EAAE,KAAA,EAAO,YAAA,EAAc,SAAS,cAAA,EAAe;AAAA,EACxD,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,WAAYA,QAAA,EAAsB;AAAA,EAClD,IAAA,EAAM,EAAE,KAAA,EAAO,SAAA,EAAW,SAASA,QAAAA,EAAY;AAAA,EAC/C,IAAA,EAAM,EAAE,KAAA,EAAO,SAAA,EAAW,SAASA,QAAAA,EAAY;AAAA,EAC/C,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,EAAY,SAASA,QAAAA,EAAa;AAAA,EAClD,IAAA,EAAM,EAAE,KAAA,EAAO,SAAA,EAAW,SAASA,QAAAA;AACvC","file":"crm.js","sourcesContent":["/**\n * CRM subpath export — pipelines, objects, notes, emails, files, cache purge, navigation, state.\n */\nimport { crmApi } from '../api/nested-crm-api'\nimport { navigationApi } from '../api/navigation-api'\nimport {\n tableStore,\n tableActions,\n tableUiStore,\n tableUiActions,\n userStore,\n userActions,\n noteStore,\n noteActions,\n emailStore,\n emailActions,\n syncStore,\n syncActions\n} from '../state'\nimport { storage } from '../core/utils/localStorage'\n\nexport const api = {\n crm: crmApi,\n navigation: navigationApi\n}\n\nexport const store = {\n storage,\n tableUi: { store: tableUiStore, actions: tableUiActions },\n table: { store: tableStore, actions: tableActions },\n user: { store: userStore, actions: userActions },\n note: { store: noteStore, actions: noteActions },\n email: { store: emailStore, actions: emailActions },\n sync: { store: syncStore, actions: syncActions }\n}\n\nexport type { CrmCachePurgeOptions } from '../core/types/cache-purge'\nexport type {\n CachePurgeRequest,\n CachePurgeTarget,\n CachePurgeListQuery,\n CachePurgeView,\n CachePurgeDomain,\n CachePurgeMode,\n PurgeResult,\n CreateCachePurgeJobOptions\n} from '../core/types/cache-purge'\n"]}