@memberstack/dom 2.0.1 → 2.0.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +356 -3
  2. package/lib/auth/index.d.mts +58 -4
  3. package/lib/auth/index.d.ts +58 -4
  4. package/lib/auth/index.js +5 -2
  5. package/lib/auth/index.mjs +4 -2
  6. package/lib/constants/endpoints.js +2 -1
  7. package/lib/constants/endpoints.mjs +1 -1
  8. package/lib/index.d.mts +1874 -61
  9. package/lib/index.d.ts +1874 -61
  10. package/lib/index.js +1544 -30624
  11. package/lib/index.mjs +1530 -30624
  12. package/lib/methods/dom/index.js +1 -0
  13. package/lib/methods/dom/main-dom.d.mts +1 -13
  14. package/lib/methods/dom/main-dom.d.ts +1 -13
  15. package/lib/methods/dom/main-dom.js +14545 -29552
  16. package/lib/methods/dom/main-dom.mjs +14544 -29552
  17. package/lib/methods/dom/methods.d.mts +88 -6
  18. package/lib/methods/dom/methods.d.ts +88 -6
  19. package/lib/methods/dom/methods.js +137 -30637
  20. package/lib/methods/dom/methods.mjs +135 -30639
  21. package/lib/methods/index.d.mts +111 -29
  22. package/lib/methods/index.d.ts +111 -29
  23. package/lib/methods/index.js +1020 -30615
  24. package/lib/methods/index.mjs +1019 -30615
  25. package/lib/methods/requests/index.d.mts +843 -23
  26. package/lib/methods/requests/index.d.ts +843 -23
  27. package/lib/methods/requests/index.js +863 -40
  28. package/lib/methods/requests/index.mjs +862 -40
  29. package/lib/methods/requests/requests.d.mts +9 -8
  30. package/lib/methods/requests/requests.d.ts +9 -8
  31. package/lib/methods/requests/requests.js +5 -3
  32. package/lib/methods/requests/requests.mjs +4 -3
  33. package/lib/models-BmZS-mc4.d.ts +193 -0
  34. package/lib/models-CTRKogoR.d.ts +487 -0
  35. package/lib/models-le7xaT4H.d.ts +193 -0
  36. package/lib/testing/index.d.mts +272 -0
  37. package/lib/testing/index.d.ts +272 -0
  38. package/lib/testing/index.js +313 -0
  39. package/lib/testing/index.mjs +284 -0
  40. package/lib/types/index.d.mts +1 -0
  41. package/lib/types/index.d.ts +1 -0
  42. package/lib/types/index.js +1 -0
  43. package/lib/types/params.d.mts +632 -8
  44. package/lib/types/params.d.ts +632 -8
  45. package/lib/types/params.js +1 -0
  46. package/lib/types/payloads.d.mts +200 -1
  47. package/lib/types/payloads.d.ts +200 -1
  48. package/lib/types/payloads.js +1 -0
  49. package/lib/types/translations.d.mts +58 -0
  50. package/lib/types/translations.d.ts +58 -0
  51. package/lib/types/translations.js +1 -0
  52. package/lib/types/utils/payloads.d.mts +1 -3
  53. package/lib/types/utils/payloads.d.ts +1 -3
  54. package/lib/types/utils/payloads.js +1 -0
  55. package/lib/utils/cookies.d.mts +5 -5
  56. package/lib/utils/cookies.d.ts +5 -5
  57. package/lib/utils/cookies.js +14 -3
  58. package/lib/utils/cookies.mjs +13 -3
  59. package/lib/utils/defaultMessageBox.js +1 -0
  60. package/package.json +23 -12
  61. package/lib/index.global.js +0 -46364
@@ -0,0 +1,272 @@
1
+ import { M as Member, a as Plan, c as PlanConnection, g as MemberCard, A as App, C as ContentGroup } from '../models-CTRKogoR.js';
2
+
3
+ /**
4
+ * @fileoverview Test utilities for Memberstack SDK.
5
+ * Provides mock factories and helpers for testing applications that use Memberstack.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createMockMemberstack, mockMember, mockPlan } from '@memberstack/dom/testing';
10
+ *
11
+ * // Create a mock SDK instance
12
+ * const mockMs = createMockMemberstack({
13
+ * member: mockMember({ email: 'test@example.com' }),
14
+ * plans: [mockPlan({ name: 'Pro' })]
15
+ * });
16
+ *
17
+ * // Use in tests
18
+ * const { data: member } = await mockMs.getCurrentMember();
19
+ * expect(member?.auth.email).toBe('test@example.com');
20
+ * ```
21
+ *
22
+ * @packageDocumentation
23
+ */
24
+
25
+ /**
26
+ * Creates a mock member object with sensible defaults.
27
+ * Override any property by passing it in the options.
28
+ *
29
+ * @param overrides - Partial member data to override defaults
30
+ * @returns A complete mock Member object
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Basic usage
35
+ * const member = mockMember();
36
+ *
37
+ * // With custom email
38
+ * const member = mockMember({ auth: { email: 'custom@test.com' } });
39
+ *
40
+ * // With plans
41
+ * const member = mockMember({
42
+ * planConnections: [mockPlanConnection({ planId: 'pln_abc123' })]
43
+ * });
44
+ * ```
45
+ */
46
+ declare function mockMember(overrides?: DeepPartial<Member>): Member;
47
+ /**
48
+ * Creates a mock plan object.
49
+ *
50
+ * @param overrides - Partial plan data to override defaults
51
+ * @returns A complete mock Plan object
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * const freePlan = mockPlan({ name: 'Free', prices: [] });
56
+ * const proPlan = mockPlan({
57
+ * name: 'Pro',
58
+ * prices: [mockPrice({ amount: '9.99' })]
59
+ * });
60
+ * ```
61
+ */
62
+ declare function mockPlan(overrides?: DeepPartial<Plan>): Plan;
63
+ /**
64
+ * Creates a mock plan connection (member's subscription to a plan).
65
+ *
66
+ * @param overrides - Partial connection data to override defaults
67
+ * @returns A complete mock PlanConnection object
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * // Active subscription
72
+ * const conn = mockPlanConnection({ active: true, status: 'ACTIVE' });
73
+ *
74
+ * // Canceled subscription
75
+ * const conn = mockPlanConnection({
76
+ * active: false,
77
+ * status: 'CANCELED',
78
+ * payment: { cancelAtDate: Date.now() + 86400000 }
79
+ * });
80
+ * ```
81
+ */
82
+ declare function mockPlanConnection(overrides?: DeepPartial<PlanConnection>): PlanConnection;
83
+ /**
84
+ * Creates a mock payment card.
85
+ *
86
+ * @param overrides - Partial card data to override defaults
87
+ * @returns A complete mock MemberCard object
88
+ */
89
+ declare function mockCard(overrides?: DeepPartial<MemberCard>): MemberCard;
90
+ /**
91
+ * Creates a mock app configuration.
92
+ *
93
+ * @param overrides - Partial app data to override defaults
94
+ * @returns A complete mock App object
95
+ */
96
+ declare function mockApp(overrides?: DeepPartial<App>): App;
97
+ /**
98
+ * Creates a mock content group (restricted URL group).
99
+ *
100
+ * @param overrides - Partial group data to override defaults
101
+ * @returns A complete mock ContentGroup object
102
+ */
103
+ declare function mockContentGroup(overrides?: DeepPartial<ContentGroup>): ContentGroup;
104
+ /**
105
+ * Options for creating a mock Memberstack instance.
106
+ */
107
+ interface MockMemberstackOptions {
108
+ /** The currently logged-in member, or null if logged out */
109
+ member?: Member | null;
110
+ /** Available plans in the app */
111
+ plans?: Plan[];
112
+ /** App configuration */
113
+ app?: App;
114
+ /** Content groups */
115
+ contentGroups?: ContentGroup[];
116
+ /** Member's saved cards */
117
+ cards?: MemberCard[];
118
+ /** Custom method overrides */
119
+ overrides?: Partial<MockMemberstackInstance>;
120
+ }
121
+ /**
122
+ * Mock implementation of the Memberstack SDK.
123
+ * Implements the most commonly used methods for testing.
124
+ */
125
+ interface MockMemberstackInstance {
126
+ getCurrentMember: () => Promise<{
127
+ data: Member | null;
128
+ }>;
129
+ getPlans: () => Promise<{
130
+ data: Plan[];
131
+ }>;
132
+ getPlan: (params: {
133
+ planId: string;
134
+ }) => Promise<{
135
+ data: Plan | null;
136
+ }>;
137
+ getApp: () => Promise<{
138
+ data: App;
139
+ }>;
140
+ getRestrictedUrlGroups: () => Promise<{
141
+ data: ContentGroup[];
142
+ }>;
143
+ getMemberCards: () => Promise<{
144
+ data: MemberCard[];
145
+ }>;
146
+ loginMemberEmailPassword: (params: {
147
+ email: string;
148
+ password: string;
149
+ }) => Promise<{
150
+ data: {
151
+ member: Member;
152
+ tokens: {
153
+ accessToken: string;
154
+ };
155
+ };
156
+ }>;
157
+ signupMemberEmailPassword: (params: {
158
+ email: string;
159
+ password: string;
160
+ }) => Promise<{
161
+ data: {
162
+ member: Member;
163
+ tokens: {
164
+ accessToken: string;
165
+ };
166
+ };
167
+ }>;
168
+ logout: () => Promise<{
169
+ data: {
170
+ redirect?: string;
171
+ };
172
+ }>;
173
+ updateMember: (params: {
174
+ customFields?: object;
175
+ }) => Promise<{
176
+ data: Member;
177
+ }>;
178
+ onAuthChange: (callback: (payload: {
179
+ member: Member | null;
180
+ }) => void) => () => void;
181
+ _setMember: (member: Member | null) => void;
182
+ _getMockState: () => {
183
+ member: Member | null;
184
+ plans: Plan[];
185
+ app: App;
186
+ };
187
+ }
188
+ /**
189
+ * Creates a mock Memberstack SDK instance for testing.
190
+ * All methods return promises with mock data based on the provided options.
191
+ *
192
+ * @param options - Configuration for the mock instance
193
+ * @returns A mock Memberstack instance with common methods
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * // Basic setup
198
+ * const mockMs = createMockMemberstack({
199
+ * member: mockMember({ auth: { email: 'test@test.com' } }),
200
+ * plans: [mockPlan({ name: 'Free' }), mockPlan({ name: 'Pro' })]
201
+ * });
202
+ *
203
+ * // Use in component tests
204
+ * const { data: member } = await mockMs.getCurrentMember();
205
+ * expect(member).not.toBeNull();
206
+ *
207
+ * // Test logout flow
208
+ * await mockMs.logout();
209
+ * const { data: afterLogout } = await mockMs.getCurrentMember();
210
+ * expect(afterLogout).toBeNull();
211
+ *
212
+ * // Subscribe to auth changes
213
+ * const authCallback = jest.fn();
214
+ * mockMs.onAuthChange(authCallback);
215
+ * mockMs._setMember(null); // Simulate logout
216
+ * expect(authCallback).toHaveBeenCalledWith({ member: null });
217
+ * ```
218
+ */
219
+ declare function createMockMemberstack(options?: MockMemberstackOptions): MockMemberstackInstance;
220
+ /** Deep partial type for nested object overrides */
221
+ type DeepPartial<T> = {
222
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
223
+ };
224
+ /**
225
+ * Custom matchers for testing Memberstack data.
226
+ * These can be extended with Jest's expect.extend() or Vitest's expect.extend().
227
+ *
228
+ * @example
229
+ * ```typescript
230
+ * // In your test setup file:
231
+ * import { memberstackMatchers } from '@memberstack/dom/testing';
232
+ * expect.extend(memberstackMatchers);
233
+ *
234
+ * // In tests:
235
+ * expect(member).toBeLoggedIn();
236
+ * expect(member).toHavePlan('pln_abc123');
237
+ * ```
238
+ */
239
+ declare const memberstackMatchers: {
240
+ /**
241
+ * Assert that a member is logged in (not null and has an email).
242
+ */
243
+ toBeLoggedIn(received: Member | null): {
244
+ pass: boolean;
245
+ message: () => string;
246
+ };
247
+ /**
248
+ * Assert that a member has a specific plan.
249
+ */
250
+ toHavePlan(received: Member | null, planId: string): {
251
+ pass: boolean;
252
+ message: () => string;
253
+ };
254
+ /**
255
+ * Assert that a member's email is verified.
256
+ */
257
+ toBeVerified(received: Member | null): {
258
+ pass: boolean;
259
+ message: () => "Expected member not to be verified" | "Expected member to be verified";
260
+ };
261
+ };
262
+ declare global {
263
+ namespace jest {
264
+ interface Matchers<R> {
265
+ toBeLoggedIn(): R;
266
+ toHavePlan(planId: string): R;
267
+ toBeVerified(): R;
268
+ }
269
+ }
270
+ }
271
+
272
+ export { type MockMemberstackInstance, type MockMemberstackOptions, createMockMemberstack, memberstackMatchers, mockApp, mockCard, mockContentGroup, mockMember, mockPlan, mockPlanConnection };
@@ -0,0 +1,272 @@
1
+ import { M as Member, a as Plan, c as PlanConnection, g as MemberCard, A as App, C as ContentGroup } from '../models-CTRKogoR.js';
2
+
3
+ /**
4
+ * @fileoverview Test utilities for Memberstack SDK.
5
+ * Provides mock factories and helpers for testing applications that use Memberstack.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createMockMemberstack, mockMember, mockPlan } from '@memberstack/dom/testing';
10
+ *
11
+ * // Create a mock SDK instance
12
+ * const mockMs = createMockMemberstack({
13
+ * member: mockMember({ email: 'test@example.com' }),
14
+ * plans: [mockPlan({ name: 'Pro' })]
15
+ * });
16
+ *
17
+ * // Use in tests
18
+ * const { data: member } = await mockMs.getCurrentMember();
19
+ * expect(member?.auth.email).toBe('test@example.com');
20
+ * ```
21
+ *
22
+ * @packageDocumentation
23
+ */
24
+
25
+ /**
26
+ * Creates a mock member object with sensible defaults.
27
+ * Override any property by passing it in the options.
28
+ *
29
+ * @param overrides - Partial member data to override defaults
30
+ * @returns A complete mock Member object
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Basic usage
35
+ * const member = mockMember();
36
+ *
37
+ * // With custom email
38
+ * const member = mockMember({ auth: { email: 'custom@test.com' } });
39
+ *
40
+ * // With plans
41
+ * const member = mockMember({
42
+ * planConnections: [mockPlanConnection({ planId: 'pln_abc123' })]
43
+ * });
44
+ * ```
45
+ */
46
+ declare function mockMember(overrides?: DeepPartial<Member>): Member;
47
+ /**
48
+ * Creates a mock plan object.
49
+ *
50
+ * @param overrides - Partial plan data to override defaults
51
+ * @returns A complete mock Plan object
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * const freePlan = mockPlan({ name: 'Free', prices: [] });
56
+ * const proPlan = mockPlan({
57
+ * name: 'Pro',
58
+ * prices: [mockPrice({ amount: '9.99' })]
59
+ * });
60
+ * ```
61
+ */
62
+ declare function mockPlan(overrides?: DeepPartial<Plan>): Plan;
63
+ /**
64
+ * Creates a mock plan connection (member's subscription to a plan).
65
+ *
66
+ * @param overrides - Partial connection data to override defaults
67
+ * @returns A complete mock PlanConnection object
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * // Active subscription
72
+ * const conn = mockPlanConnection({ active: true, status: 'ACTIVE' });
73
+ *
74
+ * // Canceled subscription
75
+ * const conn = mockPlanConnection({
76
+ * active: false,
77
+ * status: 'CANCELED',
78
+ * payment: { cancelAtDate: Date.now() + 86400000 }
79
+ * });
80
+ * ```
81
+ */
82
+ declare function mockPlanConnection(overrides?: DeepPartial<PlanConnection>): PlanConnection;
83
+ /**
84
+ * Creates a mock payment card.
85
+ *
86
+ * @param overrides - Partial card data to override defaults
87
+ * @returns A complete mock MemberCard object
88
+ */
89
+ declare function mockCard(overrides?: DeepPartial<MemberCard>): MemberCard;
90
+ /**
91
+ * Creates a mock app configuration.
92
+ *
93
+ * @param overrides - Partial app data to override defaults
94
+ * @returns A complete mock App object
95
+ */
96
+ declare function mockApp(overrides?: DeepPartial<App>): App;
97
+ /**
98
+ * Creates a mock content group (restricted URL group).
99
+ *
100
+ * @param overrides - Partial group data to override defaults
101
+ * @returns A complete mock ContentGroup object
102
+ */
103
+ declare function mockContentGroup(overrides?: DeepPartial<ContentGroup>): ContentGroup;
104
+ /**
105
+ * Options for creating a mock Memberstack instance.
106
+ */
107
+ interface MockMemberstackOptions {
108
+ /** The currently logged-in member, or null if logged out */
109
+ member?: Member | null;
110
+ /** Available plans in the app */
111
+ plans?: Plan[];
112
+ /** App configuration */
113
+ app?: App;
114
+ /** Content groups */
115
+ contentGroups?: ContentGroup[];
116
+ /** Member's saved cards */
117
+ cards?: MemberCard[];
118
+ /** Custom method overrides */
119
+ overrides?: Partial<MockMemberstackInstance>;
120
+ }
121
+ /**
122
+ * Mock implementation of the Memberstack SDK.
123
+ * Implements the most commonly used methods for testing.
124
+ */
125
+ interface MockMemberstackInstance {
126
+ getCurrentMember: () => Promise<{
127
+ data: Member | null;
128
+ }>;
129
+ getPlans: () => Promise<{
130
+ data: Plan[];
131
+ }>;
132
+ getPlan: (params: {
133
+ planId: string;
134
+ }) => Promise<{
135
+ data: Plan | null;
136
+ }>;
137
+ getApp: () => Promise<{
138
+ data: App;
139
+ }>;
140
+ getRestrictedUrlGroups: () => Promise<{
141
+ data: ContentGroup[];
142
+ }>;
143
+ getMemberCards: () => Promise<{
144
+ data: MemberCard[];
145
+ }>;
146
+ loginMemberEmailPassword: (params: {
147
+ email: string;
148
+ password: string;
149
+ }) => Promise<{
150
+ data: {
151
+ member: Member;
152
+ tokens: {
153
+ accessToken: string;
154
+ };
155
+ };
156
+ }>;
157
+ signupMemberEmailPassword: (params: {
158
+ email: string;
159
+ password: string;
160
+ }) => Promise<{
161
+ data: {
162
+ member: Member;
163
+ tokens: {
164
+ accessToken: string;
165
+ };
166
+ };
167
+ }>;
168
+ logout: () => Promise<{
169
+ data: {
170
+ redirect?: string;
171
+ };
172
+ }>;
173
+ updateMember: (params: {
174
+ customFields?: object;
175
+ }) => Promise<{
176
+ data: Member;
177
+ }>;
178
+ onAuthChange: (callback: (payload: {
179
+ member: Member | null;
180
+ }) => void) => () => void;
181
+ _setMember: (member: Member | null) => void;
182
+ _getMockState: () => {
183
+ member: Member | null;
184
+ plans: Plan[];
185
+ app: App;
186
+ };
187
+ }
188
+ /**
189
+ * Creates a mock Memberstack SDK instance for testing.
190
+ * All methods return promises with mock data based on the provided options.
191
+ *
192
+ * @param options - Configuration for the mock instance
193
+ * @returns A mock Memberstack instance with common methods
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * // Basic setup
198
+ * const mockMs = createMockMemberstack({
199
+ * member: mockMember({ auth: { email: 'test@test.com' } }),
200
+ * plans: [mockPlan({ name: 'Free' }), mockPlan({ name: 'Pro' })]
201
+ * });
202
+ *
203
+ * // Use in component tests
204
+ * const { data: member } = await mockMs.getCurrentMember();
205
+ * expect(member).not.toBeNull();
206
+ *
207
+ * // Test logout flow
208
+ * await mockMs.logout();
209
+ * const { data: afterLogout } = await mockMs.getCurrentMember();
210
+ * expect(afterLogout).toBeNull();
211
+ *
212
+ * // Subscribe to auth changes
213
+ * const authCallback = jest.fn();
214
+ * mockMs.onAuthChange(authCallback);
215
+ * mockMs._setMember(null); // Simulate logout
216
+ * expect(authCallback).toHaveBeenCalledWith({ member: null });
217
+ * ```
218
+ */
219
+ declare function createMockMemberstack(options?: MockMemberstackOptions): MockMemberstackInstance;
220
+ /** Deep partial type for nested object overrides */
221
+ type DeepPartial<T> = {
222
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
223
+ };
224
+ /**
225
+ * Custom matchers for testing Memberstack data.
226
+ * These can be extended with Jest's expect.extend() or Vitest's expect.extend().
227
+ *
228
+ * @example
229
+ * ```typescript
230
+ * // In your test setup file:
231
+ * import { memberstackMatchers } from '@memberstack/dom/testing';
232
+ * expect.extend(memberstackMatchers);
233
+ *
234
+ * // In tests:
235
+ * expect(member).toBeLoggedIn();
236
+ * expect(member).toHavePlan('pln_abc123');
237
+ * ```
238
+ */
239
+ declare const memberstackMatchers: {
240
+ /**
241
+ * Assert that a member is logged in (not null and has an email).
242
+ */
243
+ toBeLoggedIn(received: Member | null): {
244
+ pass: boolean;
245
+ message: () => string;
246
+ };
247
+ /**
248
+ * Assert that a member has a specific plan.
249
+ */
250
+ toHavePlan(received: Member | null, planId: string): {
251
+ pass: boolean;
252
+ message: () => string;
253
+ };
254
+ /**
255
+ * Assert that a member's email is verified.
256
+ */
257
+ toBeVerified(received: Member | null): {
258
+ pass: boolean;
259
+ message: () => "Expected member not to be verified" | "Expected member to be verified";
260
+ };
261
+ };
262
+ declare global {
263
+ namespace jest {
264
+ interface Matchers<R> {
265
+ toBeLoggedIn(): R;
266
+ toHavePlan(planId: string): R;
267
+ toBeVerified(): R;
268
+ }
269
+ }
270
+ }
271
+
272
+ export { type MockMemberstackInstance, type MockMemberstackOptions, createMockMemberstack, memberstackMatchers, mockApp, mockCard, mockContentGroup, mockMember, mockPlan, mockPlanConnection };