@memberstack/dom 2.0.2-beta.0 → 2.0.2

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 (87) hide show
  1. package/lib/index.d.mts +61 -26
  2. package/lib/index.d.ts +61 -26
  3. package/lib/index.js +793 -53
  4. package/lib/index.mjs +793 -53
  5. package/lib/{models-CTRKogoR.d.ts → models-CFT_ABd5.d.ts} +2 -2
  6. package/lib/testing/index.d.mts +25 -2
  7. package/lib/testing/index.d.ts +25 -2
  8. package/lib/testing/index.js +28 -6
  9. package/lib/testing/index.mjs +26 -5
  10. package/package.json +1 -1
  11. package/lib/auth/index.d.mts +0 -63
  12. package/lib/auth/index.d.ts +0 -63
  13. package/lib/auth/index.global.js +0 -244
  14. package/lib/auth/index.js +0 -161
  15. package/lib/auth/index.mjs +0 -123
  16. package/lib/constants/endpoints.d.mts +0 -5
  17. package/lib/constants/endpoints.d.ts +0 -5
  18. package/lib/constants/endpoints.global.js +0 -29
  19. package/lib/constants/endpoints.js +0 -32
  20. package/lib/constants/endpoints.mjs +0 -7
  21. package/lib/methods/dom/index.d.mts +0 -2
  22. package/lib/methods/dom/index.d.ts +0 -2
  23. package/lib/methods/dom/index.global.js +0 -2
  24. package/lib/methods/dom/index.js +0 -1
  25. package/lib/methods/dom/index.mjs +0 -0
  26. package/lib/methods/dom/main-dom.d.mts +0 -2
  27. package/lib/methods/dom/main-dom.d.ts +0 -2
  28. package/lib/methods/dom/main-dom.global.js +0 -30620
  29. package/lib/methods/dom/main-dom.js +0 -15611
  30. package/lib/methods/dom/main-dom.mjs +0 -15593
  31. package/lib/methods/dom/methods.d.mts +0 -100
  32. package/lib/methods/dom/methods.d.ts +0 -100
  33. package/lib/methods/dom/methods.global.js +0 -30827
  34. package/lib/methods/dom/methods.js +0 -335
  35. package/lib/methods/dom/methods.mjs +0 -302
  36. package/lib/methods/index.d.mts +0 -185
  37. package/lib/methods/index.d.ts +0 -185
  38. package/lib/methods/index.global.js +0 -46361
  39. package/lib/methods/index.js +0 -2530
  40. package/lib/methods/index.mjs +0 -2500
  41. package/lib/methods/requests/index.d.mts +0 -912
  42. package/lib/methods/requests/index.d.ts +0 -912
  43. package/lib/methods/requests/index.global.js +0 -15553
  44. package/lib/methods/requests/index.js +0 -2145
  45. package/lib/methods/requests/index.mjs +0 -2110
  46. package/lib/methods/requests/requests.d.mts +0 -43
  47. package/lib/methods/requests/requests.d.ts +0 -43
  48. package/lib/methods/requests/requests.global.js +0 -14528
  49. package/lib/methods/requests/requests.js +0 -244
  50. package/lib/methods/requests/requests.mjs +0 -210
  51. package/lib/models-BmZS-mc4.d.ts +0 -193
  52. package/lib/models-le7xaT4H.d.ts +0 -193
  53. package/lib/types/index.d.mts +0 -5
  54. package/lib/types/index.d.ts +0 -5
  55. package/lib/types/index.global.js +0 -19
  56. package/lib/types/index.js +0 -18
  57. package/lib/types/index.mjs +0 -0
  58. package/lib/types/params.d.mts +0 -946
  59. package/lib/types/params.d.ts +0 -946
  60. package/lib/types/params.global.js +0 -19
  61. package/lib/types/params.js +0 -18
  62. package/lib/types/params.mjs +0 -0
  63. package/lib/types/payloads.d.mts +0 -342
  64. package/lib/types/payloads.d.ts +0 -342
  65. package/lib/types/payloads.global.js +0 -19
  66. package/lib/types/payloads.js +0 -18
  67. package/lib/types/payloads.mjs +0 -0
  68. package/lib/types/translations.d.mts +0 -101
  69. package/lib/types/translations.d.ts +0 -101
  70. package/lib/types/translations.global.js +0 -19
  71. package/lib/types/translations.js +0 -18
  72. package/lib/types/translations.mjs +0 -0
  73. package/lib/types/utils/payloads.d.mts +0 -297
  74. package/lib/types/utils/payloads.d.ts +0 -297
  75. package/lib/types/utils/payloads.global.js +0 -19
  76. package/lib/types/utils/payloads.js +0 -18
  77. package/lib/types/utils/payloads.mjs +0 -0
  78. package/lib/utils/cookies.d.mts +0 -13
  79. package/lib/utils/cookies.d.ts +0 -13
  80. package/lib/utils/cookies.global.js +0 -261
  81. package/lib/utils/cookies.js +0 -190
  82. package/lib/utils/cookies.mjs +0 -148
  83. package/lib/utils/defaultMessageBox.d.mts +0 -5
  84. package/lib/utils/defaultMessageBox.d.ts +0 -5
  85. package/lib/utils/defaultMessageBox.global.js +0 -125
  86. package/lib/utils/defaultMessageBox.js +0 -130
  87. package/lib/utils/defaultMessageBox.mjs +0 -103
@@ -135,8 +135,8 @@ declare namespace Payload {
135
135
  loginRedirect: string;
136
136
  stripeCustomerId: string;
137
137
  createdAt: string;
138
- metaData: object;
139
- customFields: object;
138
+ metaData: Record<string, unknown>;
139
+ customFields: Record<string, unknown>;
140
140
  permissions: string[] | [];
141
141
  planConnections: Transforms["MemberPlanConnection"][];
142
142
  };
@@ -1,4 +1,4 @@
1
- import { M as Member, a as Plan, c as PlanConnection, g as MemberCard, A as App, C as ContentGroup } from '../models-CTRKogoR.js';
1
+ import { M as Member, a as Plan, c as PlanConnection, g as MemberCard, b as Price, A as App, C as ContentGroup } from '../models-CFT_ABd5.js';
2
2
 
3
3
  /**
4
4
  * @fileoverview Test utilities for Memberstack SDK.
@@ -87,6 +87,23 @@ declare function mockPlanConnection(overrides?: DeepPartial<PlanConnection>): Pl
87
87
  * @returns A complete mock MemberCard object
88
88
  */
89
89
  declare function mockCard(overrides?: DeepPartial<MemberCard>): MemberCard;
90
+ /**
91
+ * Creates a mock price object for a plan.
92
+ *
93
+ * @param overrides - Partial price data to override defaults
94
+ * @returns A complete mock Price object
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * const monthlyPrice = mockPrice({ amount: '9.99', name: 'Monthly' });
99
+ * const yearlyPrice = mockPrice({
100
+ * amount: '99.99',
101
+ * name: 'Yearly',
102
+ * interval: { type: 'year', count: 1 }
103
+ * });
104
+ * ```
105
+ */
106
+ declare function mockPrice(overrides?: DeepPartial<Price>): Price;
90
107
  /**
91
108
  * Creates a mock app configuration.
92
109
  *
@@ -151,7 +168,10 @@ interface MockMemberstackInstance {
151
168
  member: Member;
152
169
  tokens: {
153
170
  accessToken: string;
171
+ expires: number;
172
+ type: string;
154
173
  };
174
+ redirect: string;
155
175
  };
156
176
  }>;
157
177
  signupMemberEmailPassword: (params: {
@@ -162,7 +182,10 @@ interface MockMemberstackInstance {
162
182
  member: Member;
163
183
  tokens: {
164
184
  accessToken: string;
185
+ expires: number;
186
+ type: string;
165
187
  };
188
+ redirect: string;
166
189
  };
167
190
  }>;
168
191
  logout: () => Promise<{
@@ -269,4 +292,4 @@ declare global {
269
292
  }
270
293
  }
271
294
 
272
- export { type MockMemberstackInstance, type MockMemberstackOptions, createMockMemberstack, memberstackMatchers, mockApp, mockCard, mockContentGroup, mockMember, mockPlan, mockPlanConnection };
295
+ export { type MockMemberstackInstance, type MockMemberstackOptions, createMockMemberstack, memberstackMatchers, mockApp, mockCard, mockContentGroup, mockMember, mockPlan, mockPlanConnection, mockPrice };
@@ -1,4 +1,4 @@
1
- import { M as Member, a as Plan, c as PlanConnection, g as MemberCard, A as App, C as ContentGroup } from '../models-CTRKogoR.js';
1
+ import { M as Member, a as Plan, c as PlanConnection, g as MemberCard, b as Price, A as App, C as ContentGroup } from '../models-CFT_ABd5.js';
2
2
 
3
3
  /**
4
4
  * @fileoverview Test utilities for Memberstack SDK.
@@ -87,6 +87,23 @@ declare function mockPlanConnection(overrides?: DeepPartial<PlanConnection>): Pl
87
87
  * @returns A complete mock MemberCard object
88
88
  */
89
89
  declare function mockCard(overrides?: DeepPartial<MemberCard>): MemberCard;
90
+ /**
91
+ * Creates a mock price object for a plan.
92
+ *
93
+ * @param overrides - Partial price data to override defaults
94
+ * @returns A complete mock Price object
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * const monthlyPrice = mockPrice({ amount: '9.99', name: 'Monthly' });
99
+ * const yearlyPrice = mockPrice({
100
+ * amount: '99.99',
101
+ * name: 'Yearly',
102
+ * interval: { type: 'year', count: 1 }
103
+ * });
104
+ * ```
105
+ */
106
+ declare function mockPrice(overrides?: DeepPartial<Price>): Price;
90
107
  /**
91
108
  * Creates a mock app configuration.
92
109
  *
@@ -151,7 +168,10 @@ interface MockMemberstackInstance {
151
168
  member: Member;
152
169
  tokens: {
153
170
  accessToken: string;
171
+ expires: number;
172
+ type: string;
154
173
  };
174
+ redirect: string;
155
175
  };
156
176
  }>;
157
177
  signupMemberEmailPassword: (params: {
@@ -162,7 +182,10 @@ interface MockMemberstackInstance {
162
182
  member: Member;
163
183
  tokens: {
164
184
  accessToken: string;
185
+ expires: number;
186
+ type: string;
165
187
  };
188
+ redirect: string;
166
189
  };
167
190
  }>;
168
191
  logout: () => Promise<{
@@ -269,4 +292,4 @@ declare global {
269
292
  }
270
293
  }
271
294
 
272
- export { type MockMemberstackInstance, type MockMemberstackOptions, createMockMemberstack, memberstackMatchers, mockApp, mockCard, mockContentGroup, mockMember, mockPlan, mockPlanConnection };
295
+ export { type MockMemberstackInstance, type MockMemberstackOptions, createMockMemberstack, memberstackMatchers, mockApp, mockCard, mockContentGroup, mockMember, mockPlan, mockPlanConnection, mockPrice };
@@ -64,7 +64,8 @@ __export(testing_exports, {
64
64
  mockContentGroup: () => mockContentGroup,
65
65
  mockMember: () => mockMember,
66
66
  mockPlan: () => mockPlan,
67
- mockPlanConnection: () => mockPlanConnection
67
+ mockPlanConnection: () => mockPlanConnection,
68
+ mockPrice: () => mockPrice
68
69
  });
69
70
  module.exports = __toCommonJS(testing_exports);
70
71
  function mockMember(overrides = {}) {
@@ -118,12 +119,27 @@ function mockCard(overrides = {}) {
118
119
  id: `card_${randomId()}`,
119
120
  brand: "visa",
120
121
  expMonth: "12",
121
- expYear: "2025",
122
+ expYear: String((/* @__PURE__ */ new Date()).getFullYear() + 3),
122
123
  last4: "4242",
123
124
  default: true
124
125
  };
125
126
  return deepMerge(defaults, overrides);
126
127
  }
128
+ function mockPrice(overrides = {}) {
129
+ const defaults = {
130
+ id: `prc_${randomId()}`,
131
+ amount: "0",
132
+ interval: {
133
+ type: "month",
134
+ count: 1
135
+ },
136
+ name: "Monthly",
137
+ type: "SUBSCRIPTION",
138
+ status: "ACTIVE",
139
+ currency: "usd"
140
+ };
141
+ return deepMerge(defaults, overrides);
142
+ }
127
143
  function mockApp(overrides = {}) {
128
144
  const defaults = {
129
145
  id: `app_${randomId()}`,
@@ -198,7 +214,8 @@ function createMockMemberstack(options = {}) {
198
214
  return {
199
215
  data: {
200
216
  member: currentMember,
201
- tokens: { accessToken: `mock_token_${randomId()}` }
217
+ tokens: { accessToken: `mock_token_${randomId()}`, expires: Date.now() + 36e5, type: "bearer" },
218
+ redirect: "/"
202
219
  }
203
220
  };
204
221
  }),
@@ -208,7 +225,8 @@ function createMockMemberstack(options = {}) {
208
225
  return {
209
226
  data: {
210
227
  member: currentMember,
211
- tokens: { accessToken: `mock_token_${randomId()}` }
228
+ tokens: { accessToken: `mock_token_${randomId()}`, expires: Date.now() + 36e5, type: "bearer" },
229
+ redirect: "/"
212
230
  }
213
231
  };
214
232
  }),
@@ -218,7 +236,10 @@ function createMockMemberstack(options = {}) {
218
236
  return { data: {} };
219
237
  }),
220
238
  updateMember: (_0) => __async(this, [_0], function* ({ customFields }) {
221
- if (currentMember && customFields) {
239
+ if (!currentMember) {
240
+ throw new Error("Not logged in");
241
+ }
242
+ if (customFields) {
222
243
  currentMember = __spreadProps(__spreadValues({}, currentMember), {
223
244
  customFields: __spreadValues(__spreadValues({}, currentMember.customFields), customFields)
224
245
  });
@@ -309,5 +330,6 @@ var memberstackMatchers = {
309
330
  mockContentGroup,
310
331
  mockMember,
311
332
  mockPlan,
312
- mockPlanConnection
333
+ mockPlanConnection,
334
+ mockPrice
313
335
  });
@@ -90,12 +90,27 @@ function mockCard(overrides = {}) {
90
90
  id: `card_${randomId()}`,
91
91
  brand: "visa",
92
92
  expMonth: "12",
93
- expYear: "2025",
93
+ expYear: String((/* @__PURE__ */ new Date()).getFullYear() + 3),
94
94
  last4: "4242",
95
95
  default: true
96
96
  };
97
97
  return deepMerge(defaults, overrides);
98
98
  }
99
+ function mockPrice(overrides = {}) {
100
+ const defaults = {
101
+ id: `prc_${randomId()}`,
102
+ amount: "0",
103
+ interval: {
104
+ type: "month",
105
+ count: 1
106
+ },
107
+ name: "Monthly",
108
+ type: "SUBSCRIPTION",
109
+ status: "ACTIVE",
110
+ currency: "usd"
111
+ };
112
+ return deepMerge(defaults, overrides);
113
+ }
99
114
  function mockApp(overrides = {}) {
100
115
  const defaults = {
101
116
  id: `app_${randomId()}`,
@@ -170,7 +185,8 @@ function createMockMemberstack(options = {}) {
170
185
  return {
171
186
  data: {
172
187
  member: currentMember,
173
- tokens: { accessToken: `mock_token_${randomId()}` }
188
+ tokens: { accessToken: `mock_token_${randomId()}`, expires: Date.now() + 36e5, type: "bearer" },
189
+ redirect: "/"
174
190
  }
175
191
  };
176
192
  }),
@@ -180,7 +196,8 @@ function createMockMemberstack(options = {}) {
180
196
  return {
181
197
  data: {
182
198
  member: currentMember,
183
- tokens: { accessToken: `mock_token_${randomId()}` }
199
+ tokens: { accessToken: `mock_token_${randomId()}`, expires: Date.now() + 36e5, type: "bearer" },
200
+ redirect: "/"
184
201
  }
185
202
  };
186
203
  }),
@@ -190,7 +207,10 @@ function createMockMemberstack(options = {}) {
190
207
  return { data: {} };
191
208
  }),
192
209
  updateMember: (_0) => __async(this, [_0], function* ({ customFields }) {
193
- if (currentMember && customFields) {
210
+ if (!currentMember) {
211
+ throw new Error("Not logged in");
212
+ }
213
+ if (customFields) {
194
214
  currentMember = __spreadProps(__spreadValues({}, currentMember), {
195
215
  customFields: __spreadValues(__spreadValues({}, currentMember.customFields), customFields)
196
216
  });
@@ -280,5 +300,6 @@ export {
280
300
  mockContentGroup,
281
301
  mockMember,
282
302
  mockPlan,
283
- mockPlanConnection
303
+ mockPlanConnection,
304
+ mockPrice
284
305
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberstack/dom",
3
- "version": "2.0.2-beta.0",
3
+ "version": "2.0.2",
4
4
  "main": "./lib/index.js",
5
5
  "module": "./lib/index.mjs",
6
6
  "types": "./lib/index.d.ts",
@@ -1,63 +0,0 @@
1
- import { M as Member } from '../models-le7xaT4H.js';
2
- import '../types/utils/payloads.mjs';
3
-
4
- /** Callback type for auth state changes */
5
- type AuthCallback = (member: Member | null) => void;
6
- declare const getPersistedMember: () => Member | null;
7
- declare const setPersistedMember: (member: Member | null) => void;
8
- declare const updatePersistedMember: (member: Member | null) => void;
9
- declare const unsetPersistedMember: () => void;
10
- /**
11
- * Subscribes to authentication state changes.
12
- * The callback is called whenever a member logs in, logs out, or their data changes.
13
- *
14
- * @param cb - Callback function that receives the member object (or null when logged out)
15
- * @returns An object with an `unsubscribe` method to stop listening for changes
16
- *
17
- * @example Basic usage
18
- * ```typescript
19
- * const { unsubscribe } = memberstack.onAuthChange((member) => {
20
- * if (member) {
21
- * console.log('Logged in:', member.auth.email);
22
- * } else {
23
- * console.log('Logged out');
24
- * }
25
- * });
26
- *
27
- * // Later, when you want to stop listening:
28
- * unsubscribe();
29
- * ```
30
- *
31
- * @example React component integration
32
- * ```typescript
33
- * useEffect(() => {
34
- * const { unsubscribe } = memberstack.onAuthChange((member) => {
35
- * setUser(member);
36
- * setLoading(false);
37
- * });
38
- *
39
- * return () => unsubscribe(); // Cleanup on unmount
40
- * }, []);
41
- * ```
42
- *
43
- * @example Conditional UI based on auth state
44
- * ```typescript
45
- * memberstack.onAuthChange((member) => {
46
- * const loginBtn = document.getElementById('login-btn');
47
- * const userMenu = document.getElementById('user-menu');
48
- *
49
- * if (member) {
50
- * loginBtn.style.display = 'none';
51
- * userMenu.style.display = 'block';
52
- * } else {
53
- * loginBtn.style.display = 'block';
54
- * userMenu.style.display = 'none';
55
- * }
56
- * });
57
- * ```
58
- */
59
- declare const onAuthChange: (cb: AuthCallback) => {
60
- unsubscribe: () => boolean;
61
- };
62
-
63
- export { getPersistedMember, onAuthChange, setPersistedMember, unsetPersistedMember, updatePersistedMember };
@@ -1,63 +0,0 @@
1
- import { M as Member } from '../models-BmZS-mc4.js';
2
- import '../types/utils/payloads.js';
3
-
4
- /** Callback type for auth state changes */
5
- type AuthCallback = (member: Member | null) => void;
6
- declare const getPersistedMember: () => Member | null;
7
- declare const setPersistedMember: (member: Member | null) => void;
8
- declare const updatePersistedMember: (member: Member | null) => void;
9
- declare const unsetPersistedMember: () => void;
10
- /**
11
- * Subscribes to authentication state changes.
12
- * The callback is called whenever a member logs in, logs out, or their data changes.
13
- *
14
- * @param cb - Callback function that receives the member object (or null when logged out)
15
- * @returns An object with an `unsubscribe` method to stop listening for changes
16
- *
17
- * @example Basic usage
18
- * ```typescript
19
- * const { unsubscribe } = memberstack.onAuthChange((member) => {
20
- * if (member) {
21
- * console.log('Logged in:', member.auth.email);
22
- * } else {
23
- * console.log('Logged out');
24
- * }
25
- * });
26
- *
27
- * // Later, when you want to stop listening:
28
- * unsubscribe();
29
- * ```
30
- *
31
- * @example React component integration
32
- * ```typescript
33
- * useEffect(() => {
34
- * const { unsubscribe } = memberstack.onAuthChange((member) => {
35
- * setUser(member);
36
- * setLoading(false);
37
- * });
38
- *
39
- * return () => unsubscribe(); // Cleanup on unmount
40
- * }, []);
41
- * ```
42
- *
43
- * @example Conditional UI based on auth state
44
- * ```typescript
45
- * memberstack.onAuthChange((member) => {
46
- * const loginBtn = document.getElementById('login-btn');
47
- * const userMenu = document.getElementById('user-menu');
48
- *
49
- * if (member) {
50
- * loginBtn.style.display = 'none';
51
- * userMenu.style.display = 'block';
52
- * } else {
53
- * loginBtn.style.display = 'block';
54
- * userMenu.style.display = 'none';
55
- * }
56
- * });
57
- * ```
58
- */
59
- declare const onAuthChange: (cb: AuthCallback) => {
60
- unsubscribe: () => boolean;
61
- };
62
-
63
- export { getPersistedMember, onAuthChange, setPersistedMember, unsetPersistedMember, updatePersistedMember };
@@ -1,244 +0,0 @@
1
- var MemberstackDOM = (() => {
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __spreadValues = (a, b) => {
10
- for (var prop in b || (b = {}))
11
- if (__hasOwnProp.call(b, prop))
12
- __defNormalProp(a, prop, b[prop]);
13
- if (__getOwnPropSymbols)
14
- for (var prop of __getOwnPropSymbols(b)) {
15
- if (__propIsEnum.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- }
18
- return a;
19
- };
20
- var __export = (target, all) => {
21
- for (var name in all)
22
- __defProp(target, name, { get: all[name], enumerable: true });
23
- };
24
- var __copyProps = (to, from, except, desc) => {
25
- if (from && typeof from === "object" || typeof from === "function") {
26
- for (let key of __getOwnPropNames(from))
27
- if (!__hasOwnProp.call(to, key) && key !== except)
28
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
29
- }
30
- return to;
31
- };
32
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
-
34
- // src/auth/index.ts
35
- var auth_exports = {};
36
- __export(auth_exports, {
37
- getPersistedMember: () => getPersistedMember,
38
- onAuthChange: () => onAuthChange,
39
- setPersistedMember: () => setPersistedMember,
40
- unsetPersistedMember: () => unsetPersistedMember,
41
- updatePersistedMember: () => updatePersistedMember
42
- });
43
-
44
- // ../../node_modules/js-cookie/dist/js.cookie.mjs
45
- function assign(target) {
46
- for (var i = 1; i < arguments.length; i++) {
47
- var source = arguments[i];
48
- for (var key in source) {
49
- target[key] = source[key];
50
- }
51
- }
52
- return target;
53
- }
54
- var defaultConverter = {
55
- read: function(value) {
56
- if (value[0] === '"') {
57
- value = value.slice(1, -1);
58
- }
59
- return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
60
- },
61
- write: function(value) {
62
- return encodeURIComponent(value).replace(
63
- /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,
64
- decodeURIComponent
65
- );
66
- }
67
- };
68
- function init(converter, defaultAttributes) {
69
- function set(name, value, attributes) {
70
- if (typeof document === "undefined") {
71
- return;
72
- }
73
- attributes = assign({}, defaultAttributes, attributes);
74
- if (typeof attributes.expires === "number") {
75
- attributes.expires = new Date(Date.now() + attributes.expires * 864e5);
76
- }
77
- if (attributes.expires) {
78
- attributes.expires = attributes.expires.toUTCString();
79
- }
80
- name = encodeURIComponent(name).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);
81
- var stringifiedAttributes = "";
82
- for (var attributeName in attributes) {
83
- if (!attributes[attributeName]) {
84
- continue;
85
- }
86
- stringifiedAttributes += "; " + attributeName;
87
- if (attributes[attributeName] === true) {
88
- continue;
89
- }
90
- stringifiedAttributes += "=" + attributes[attributeName].split(";")[0];
91
- }
92
- return document.cookie = name + "=" + converter.write(value, name) + stringifiedAttributes;
93
- }
94
- function get(name) {
95
- if (typeof document === "undefined" || arguments.length && !name) {
96
- return;
97
- }
98
- var cookies = document.cookie ? document.cookie.split("; ") : [];
99
- var jar = {};
100
- for (var i = 0; i < cookies.length; i++) {
101
- var parts = cookies[i].split("=");
102
- var value = parts.slice(1).join("=");
103
- try {
104
- var found = decodeURIComponent(parts[0]);
105
- jar[found] = converter.read(value, found);
106
- if (name === found) {
107
- break;
108
- }
109
- } catch (e) {
110
- }
111
- }
112
- return name ? jar[name] : jar;
113
- }
114
- return Object.create(
115
- {
116
- set,
117
- get,
118
- remove: function(name, attributes) {
119
- set(
120
- name,
121
- "",
122
- assign({}, attributes, {
123
- expires: -1
124
- })
125
- );
126
- },
127
- withAttributes: function(attributes) {
128
- return init(this.converter, assign({}, this.attributes, attributes));
129
- },
130
- withConverter: function(converter2) {
131
- return init(assign({}, this.converter, converter2), this.attributes);
132
- }
133
- },
134
- {
135
- attributes: { value: Object.freeze(defaultAttributes) },
136
- converter: { value: Object.freeze(converter) }
137
- }
138
- );
139
- }
140
- var api = init(defaultConverter, { path: "/" });
141
-
142
- // src/utils/cookies.ts
143
- var memberAuthTokenName = "_ms-mid";
144
- function isLocalStorageAvailable() {
145
- try {
146
- localStorage.setItem("test", "test");
147
- localStorage.removeItem("test");
148
- return true;
149
- } catch (e) {
150
- return false;
151
- }
152
- }
153
- var localStorageAvailable = isLocalStorageAvailable();
154
- var setCookieOnRootDomain = false;
155
- var extractDomainFromHostname = (hostname) => {
156
- const hostnameParts = hostname.split(".");
157
- const isCountryCodeTLD = hostnameParts.length >= 3 && hostnameParts[hostnameParts.length - 2].length <= 3;
158
- if (isCountryCodeTLD) {
159
- return hostnameParts.slice(-3).join(".");
160
- } else {
161
- return hostnameParts.slice(-2).join(".");
162
- }
163
- };
164
- var removeMemberToken = () => {
165
- if (localStorageAvailable) {
166
- localStorage.removeItem(memberAuthTokenName);
167
- }
168
- const domain = extractDomainFromHostname(window.location.hostname);
169
- api.set(memberAuthTokenName, "", __spreadValues({
170
- expires: -1,
171
- sameSite: "strict"
172
- }, setCookieOnRootDomain && { domain }));
173
- api.set(memberAuthTokenName, "", {
174
- expires: -1,
175
- sameSite: "strict"
176
- });
177
- };
178
- var removeSessionId = () => {
179
- if (typeof window !== "undefined") {
180
- window.localStorage.removeItem("ms_session_id");
181
- } else {
182
- console.warn("removeSessionId: window is not defined");
183
- }
184
- };
185
-
186
- // src/auth/index.ts
187
- var createObservable = () => {
188
- const observer = /* @__PURE__ */ new Map();
189
- return {
190
- subscribe: (key, fn) => {
191
- if (typeof fn !== "function")
192
- return;
193
- return observer.set(key, fn);
194
- },
195
- unsubscribe: (key) => {
196
- return observer.delete(key);
197
- },
198
- notify: (data) => {
199
- return [...observer.values()].forEach((fn) => fn(data));
200
- }
201
- };
202
- };
203
- var observable = createObservable();
204
- var getPersistedMember = () => {
205
- return JSON.parse(localStorage == null ? void 0 : localStorage.getItem("_ms-mem"));
206
- };
207
- var setPersistedMember = (member) => {
208
- if (member) {
209
- const data = JSON.stringify(member);
210
- if (data)
211
- localStorage == null ? void 0 : localStorage.setItem("_ms-mem", data);
212
- observable.notify(member);
213
- }
214
- };
215
- var updatePersistedMember = (member) => {
216
- if (member) {
217
- const data = JSON.stringify(member);
218
- if (data)
219
- localStorage == null ? void 0 : localStorage.setItem("_ms-mem", data);
220
- } else {
221
- localStorage == null ? void 0 : localStorage.removeItem("_ms-mem");
222
- removeMemberToken();
223
- }
224
- };
225
- var unsetPersistedMember = () => {
226
- localStorage == null ? void 0 : localStorage.removeItem("_ms-mem");
227
- removeMemberToken();
228
- removeSessionId();
229
- observable.notify(null);
230
- };
231
- var onAuthChange = (cb) => {
232
- const id = Math.floor(Math.random() * 1e3);
233
- observable.subscribe(id, cb);
234
- return {
235
- unsubscribe: () => observable.unsubscribe(id)
236
- };
237
- };
238
- return __toCommonJS(auth_exports);
239
- })();
240
- /*! Bundled license information:
241
-
242
- js-cookie/dist/js.cookie.mjs:
243
- (*! js-cookie v3.0.5 | MIT *)
244
- */