@memberstack/dom 2.0.2-beta.0 → 2.0.3
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/lib/index.d.mts +76 -61
- package/lib/index.d.ts +76 -61
- package/lib/index.js +840 -61
- package/lib/index.mjs +840 -61
- package/lib/{models-CTRKogoR.d.ts → models-CFT_ABd5.d.ts} +2 -2
- package/lib/testing/index.d.mts +25 -2
- package/lib/testing/index.d.ts +25 -2
- package/lib/testing/index.js +28 -6
- package/lib/testing/index.mjs +26 -5
- package/package.json +1 -1
- package/lib/auth/index.d.mts +0 -63
- package/lib/auth/index.d.ts +0 -63
- package/lib/auth/index.global.js +0 -244
- package/lib/auth/index.js +0 -161
- package/lib/auth/index.mjs +0 -123
- package/lib/constants/endpoints.d.mts +0 -5
- package/lib/constants/endpoints.d.ts +0 -5
- package/lib/constants/endpoints.global.js +0 -29
- package/lib/constants/endpoints.js +0 -32
- package/lib/constants/endpoints.mjs +0 -7
- package/lib/methods/dom/index.d.mts +0 -2
- package/lib/methods/dom/index.d.ts +0 -2
- package/lib/methods/dom/index.global.js +0 -2
- package/lib/methods/dom/index.js +0 -1
- package/lib/methods/dom/index.mjs +0 -0
- package/lib/methods/dom/main-dom.d.mts +0 -2
- package/lib/methods/dom/main-dom.d.ts +0 -2
- package/lib/methods/dom/main-dom.global.js +0 -30620
- package/lib/methods/dom/main-dom.js +0 -15611
- package/lib/methods/dom/main-dom.mjs +0 -15593
- package/lib/methods/dom/methods.d.mts +0 -100
- package/lib/methods/dom/methods.d.ts +0 -100
- package/lib/methods/dom/methods.global.js +0 -30827
- package/lib/methods/dom/methods.js +0 -335
- package/lib/methods/dom/methods.mjs +0 -302
- package/lib/methods/index.d.mts +0 -185
- package/lib/methods/index.d.ts +0 -185
- package/lib/methods/index.global.js +0 -46361
- package/lib/methods/index.js +0 -2530
- package/lib/methods/index.mjs +0 -2500
- package/lib/methods/requests/index.d.mts +0 -912
- package/lib/methods/requests/index.d.ts +0 -912
- package/lib/methods/requests/index.global.js +0 -15553
- package/lib/methods/requests/index.js +0 -2145
- package/lib/methods/requests/index.mjs +0 -2110
- package/lib/methods/requests/requests.d.mts +0 -43
- package/lib/methods/requests/requests.d.ts +0 -43
- package/lib/methods/requests/requests.global.js +0 -14528
- package/lib/methods/requests/requests.js +0 -244
- package/lib/methods/requests/requests.mjs +0 -210
- package/lib/models-BmZS-mc4.d.ts +0 -193
- package/lib/models-le7xaT4H.d.ts +0 -193
- package/lib/types/index.d.mts +0 -5
- package/lib/types/index.d.ts +0 -5
- package/lib/types/index.global.js +0 -19
- package/lib/types/index.js +0 -18
- package/lib/types/index.mjs +0 -0
- package/lib/types/params.d.mts +0 -946
- package/lib/types/params.d.ts +0 -946
- package/lib/types/params.global.js +0 -19
- package/lib/types/params.js +0 -18
- package/lib/types/params.mjs +0 -0
- package/lib/types/payloads.d.mts +0 -342
- package/lib/types/payloads.d.ts +0 -342
- package/lib/types/payloads.global.js +0 -19
- package/lib/types/payloads.js +0 -18
- package/lib/types/payloads.mjs +0 -0
- package/lib/types/translations.d.mts +0 -101
- package/lib/types/translations.d.ts +0 -101
- package/lib/types/translations.global.js +0 -19
- package/lib/types/translations.js +0 -18
- package/lib/types/translations.mjs +0 -0
- package/lib/types/utils/payloads.d.mts +0 -297
- package/lib/types/utils/payloads.d.ts +0 -297
- package/lib/types/utils/payloads.global.js +0 -19
- package/lib/types/utils/payloads.js +0 -18
- package/lib/types/utils/payloads.mjs +0 -0
- package/lib/utils/cookies.d.mts +0 -13
- package/lib/utils/cookies.d.ts +0 -13
- package/lib/utils/cookies.global.js +0 -261
- package/lib/utils/cookies.js +0 -190
- package/lib/utils/cookies.mjs +0 -148
- package/lib/utils/defaultMessageBox.d.mts +0 -5
- package/lib/utils/defaultMessageBox.d.ts +0 -5
- package/lib/utils/defaultMessageBox.global.js +0 -125
- package/lib/utils/defaultMessageBox.js +0 -130
- 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:
|
|
139
|
-
customFields:
|
|
138
|
+
metaData: Record<string, unknown>;
|
|
139
|
+
customFields: Record<string, unknown>;
|
|
140
140
|
permissions: string[] | [];
|
|
141
141
|
planConnections: Transforms["MemberPlanConnection"][];
|
|
142
142
|
};
|
package/lib/testing/index.d.mts
CHANGED
|
@@ -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-
|
|
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 };
|
package/lib/testing/index.d.ts
CHANGED
|
@@ -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-
|
|
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 };
|
package/lib/testing/index.js
CHANGED
|
@@ -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:
|
|
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
|
|
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
|
});
|
package/lib/testing/index.mjs
CHANGED
|
@@ -90,12 +90,27 @@ function mockCard(overrides = {}) {
|
|
|
90
90
|
id: `card_${randomId()}`,
|
|
91
91
|
brand: "visa",
|
|
92
92
|
expMonth: "12",
|
|
93
|
-
expYear:
|
|
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
|
|
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
package/lib/auth/index.d.mts
DELETED
|
@@ -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 };
|
package/lib/auth/index.d.ts
DELETED
|
@@ -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 };
|
package/lib/auth/index.global.js
DELETED
|
@@ -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
|
-
*/
|