@glideidentity/web-client-sdk 6.0.0-beta.3 → 6.0.0-beta.5
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/dist/browser/web-client-sdk.min.js +1 -1
- package/dist/cjs/adapters/react.js +10 -1
- package/dist/cjs/adapters/vue.js +10 -1
- package/dist/cjs/client/http.js +5 -1
- package/dist/cjs/client/logger.js +1 -7
- package/dist/cjs/client/phone-auth-client.js +35 -2
- package/dist/cjs/client/strategies/polling.js +5 -10
- package/dist/cjs/core/index.js +1 -2
- package/dist/cjs/core/type-guards.js +16 -4
- package/dist/cjs/core/validators.js +0 -29
- package/dist/cjs/index.js +1 -2
- package/dist/cjs/test/fixtures.js +273 -0
- package/dist/cjs/test/setup.js +117 -0
- package/dist/esm/adapters/react.js +10 -1
- package/dist/esm/adapters/vue.js +10 -1
- package/dist/esm/client/http.js +5 -1
- package/dist/esm/client/logger.js +1 -7
- package/dist/esm/client/phone-auth-client.js +36 -3
- package/dist/esm/client/strategies/polling.js +5 -10
- package/dist/esm/core/index.js +1 -1
- package/dist/esm/core/type-guards.js +16 -4
- package/dist/esm/core/validators.js +0 -28
- package/dist/esm/index.js +1 -1
- package/dist/esm/test/fixtures.js +270 -0
- package/dist/esm/test/setup.js +110 -0
- package/dist/types/adapters/react.d.ts.map +1 -1
- package/dist/types/adapters/vue.d.ts.map +1 -1
- package/dist/types/client/http.d.ts.map +1 -1
- package/dist/types/client/logger.d.ts.map +1 -1
- package/dist/types/client/phone-auth-client.d.ts.map +1 -1
- package/dist/types/client/strategies/polling.d.ts.map +1 -1
- package/dist/types/core/index.d.ts +1 -1
- package/dist/types/core/index.d.ts.map +1 -1
- package/dist/types/core/type-guards.d.ts +3 -0
- package/dist/types/core/type-guards.d.ts.map +1 -1
- package/dist/types/core/validators.d.ts +0 -7
- package/dist/types/core/validators.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/test/fixtures.d.ts +178 -0
- package/dist/types/test/fixtures.d.ts.map +1 -0
- package/dist/types/test/setup.d.ts +39 -0
- package/dist/types/test/setup.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -128,12 +128,24 @@ export function isLinkData(data) {
|
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
130
130
|
* Check if prepare response data is DesktopData.
|
|
131
|
+
*
|
|
132
|
+
* Note: Both TS43Data and DesktopData have nested 'data' objects,
|
|
133
|
+
* so we must explicitly exclude TS43Data by checking for absence of 'dcql_query'.
|
|
131
134
|
*/
|
|
132
135
|
export function isDesktopData(data) {
|
|
133
|
-
|
|
134
|
-
typeof data
|
|
135
|
-
'data' in data
|
|
136
|
-
typeof data.data
|
|
136
|
+
if (data === null ||
|
|
137
|
+
typeof data !== 'object' ||
|
|
138
|
+
!('data' in data) ||
|
|
139
|
+
typeof data.data !== 'object' ||
|
|
140
|
+
data.data === null) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
// Exclude TS43Data which also has a nested 'data' object but contains 'dcql_query'
|
|
144
|
+
const nestedData = data.data;
|
|
145
|
+
if ('dcql_query' in nestedData) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
return true;
|
|
137
149
|
}
|
|
138
150
|
/**
|
|
139
151
|
* Get strategy-specific data from PrepareResponse with proper typing.
|
|
@@ -106,34 +106,6 @@ export function validateUseCaseRequirements(useCase, phoneNumber, hasParentSessi
|
|
|
106
106
|
}
|
|
107
107
|
return { valid: true };
|
|
108
108
|
}
|
|
109
|
-
/**
|
|
110
|
-
* Validates nonce format.
|
|
111
|
-
*
|
|
112
|
-
* @param nonce - Nonce string to validate
|
|
113
|
-
* @returns Validation result
|
|
114
|
-
*/
|
|
115
|
-
export function validateNonce(nonce) {
|
|
116
|
-
const base64urlRegex = /^[A-Za-z0-9_-]+$/;
|
|
117
|
-
if (!nonce || nonce.length === 0) {
|
|
118
|
-
return {
|
|
119
|
-
valid: false,
|
|
120
|
-
error: 'Nonce is required'
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
if (!base64urlRegex.test(nonce)) {
|
|
124
|
-
return {
|
|
125
|
-
valid: false,
|
|
126
|
-
error: 'Nonce must be base64url encoded'
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
if (nonce.length < 32 || nonce.length > 128) {
|
|
130
|
-
return {
|
|
131
|
-
valid: false,
|
|
132
|
-
error: 'Nonce must be between 32 and 128 characters'
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
return { valid: true };
|
|
136
|
-
}
|
|
137
109
|
/**
|
|
138
110
|
* Validates session key format.
|
|
139
111
|
*
|
package/dist/esm/index.js
CHANGED
|
@@ -37,7 +37,7 @@ export { isAuthError, isClientError, isRetryableError, getUserMessage, createAut
|
|
|
37
37
|
// Type guards
|
|
38
38
|
export { isInvokeResult, isAuthCredential, isTS43Strategy, isLinkStrategy, isDesktopStrategy, isCancellable, isTS43Data, isLinkData, isDesktopData, isGetPhoneNumberResponse, isVerifyPhoneNumberResponse, isErrorResponse, } from './core/type-guards';
|
|
39
39
|
// Validators
|
|
40
|
-
export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements,
|
|
40
|
+
export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements, validateSessionKey, E164_REGEX, } from './core/validators';
|
|
41
41
|
// Client utilities (for advanced use)
|
|
42
42
|
export { createHttpClient } from './client/http';
|
|
43
43
|
export { createLogger, createNoopLogger } from './client/logger';
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Fixtures - Mock Data for Unit Tests
|
|
3
|
+
*
|
|
4
|
+
* Contains valid and invalid mock data for all SDK types.
|
|
5
|
+
* Based on TypeScript type definitions - may need adjustment
|
|
6
|
+
* to match actual backend responses.
|
|
7
|
+
*/
|
|
8
|
+
import { AUTHENTICATION_STRATEGY, USE_CASE } from '../core/types';
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// SESSION FIXTURES
|
|
11
|
+
// ============================================================================
|
|
12
|
+
export const validSession = {
|
|
13
|
+
session_key: 'test-session-key-12345678',
|
|
14
|
+
use_case: USE_CASE.GET_PHONE_NUMBER,
|
|
15
|
+
nonce: 'abc123nonce',
|
|
16
|
+
metadata: { request_id: 'req-123' },
|
|
17
|
+
};
|
|
18
|
+
export const minimalSession = {
|
|
19
|
+
session_key: 'minimal-session-1234567',
|
|
20
|
+
};
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// TS43 STRATEGY FIXTURES
|
|
23
|
+
// ============================================================================
|
|
24
|
+
export const validTS43Data = {
|
|
25
|
+
protocol: 'openid4vp-v1-unsigned',
|
|
26
|
+
data: {
|
|
27
|
+
nonce: 'ts43-nonce-value-12345',
|
|
28
|
+
response_mode: 'direct_post',
|
|
29
|
+
response_type: 'vp_token',
|
|
30
|
+
dcql_query: {
|
|
31
|
+
credentials: [
|
|
32
|
+
{
|
|
33
|
+
id: 'phone-credential',
|
|
34
|
+
format: 'vc+sd-jwt',
|
|
35
|
+
meta: {
|
|
36
|
+
vct_values: ['urn:glide:phone-number:v1'],
|
|
37
|
+
// Fake JWT structure for testing - NOT a real token
|
|
38
|
+
credential_authorization_jwt: 'eyJGQUtFIjoiVEVTVCJ9.eyJGQUtFIjoiVEVTVCJ9.FAKE',
|
|
39
|
+
},
|
|
40
|
+
claims: ['phone_number'],
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
export const validTS43Response = {
|
|
47
|
+
authentication_strategy: AUTHENTICATION_STRATEGY.TS43,
|
|
48
|
+
session: validSession,
|
|
49
|
+
data: validTS43Data,
|
|
50
|
+
};
|
|
51
|
+
// ============================================================================
|
|
52
|
+
// LINK STRATEGY FIXTURES
|
|
53
|
+
// ============================================================================
|
|
54
|
+
export const validLinkData = {
|
|
55
|
+
url: 'https://appclip.glideidentity.app/auth?session=abc123',
|
|
56
|
+
return_url: 'https://myapp.com/callback',
|
|
57
|
+
status_url: 'https://api.glideidentity.app/public/status/abc123',
|
|
58
|
+
params: { theme: 'dark' },
|
|
59
|
+
};
|
|
60
|
+
export const minimalLinkData = {
|
|
61
|
+
url: 'https://appclip.glideidentity.app/auth',
|
|
62
|
+
};
|
|
63
|
+
export const validLinkResponse = {
|
|
64
|
+
authentication_strategy: AUTHENTICATION_STRATEGY.LINK,
|
|
65
|
+
session: validSession,
|
|
66
|
+
data: validLinkData,
|
|
67
|
+
};
|
|
68
|
+
// ============================================================================
|
|
69
|
+
// DESKTOP STRATEGY FIXTURES
|
|
70
|
+
// ============================================================================
|
|
71
|
+
export const validDesktopData = {
|
|
72
|
+
protocol: 'qr-auth-v1',
|
|
73
|
+
data: {
|
|
74
|
+
qr_code_image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...',
|
|
75
|
+
ios_qr_image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUB...',
|
|
76
|
+
android_qr_image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUC...',
|
|
77
|
+
ios_url: 'https://appclip.glideidentity.app/ios?session=abc123',
|
|
78
|
+
android_url: 'https://glideidentity.app/android?session=abc123',
|
|
79
|
+
session_id: 'desktop-session-abc123',
|
|
80
|
+
status_url: 'https://api.glideidentity.app/public/status/desktop-session-abc123',
|
|
81
|
+
url: 'https://glideidentity.app/mobile?session=abc123',
|
|
82
|
+
polling_interval: 2000,
|
|
83
|
+
expires_in: 300,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
export const minimalDesktopData = {
|
|
87
|
+
data: {
|
|
88
|
+
status_url: 'https://api.glideidentity.app/public/status/minimal123',
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
export const validDesktopResponse = {
|
|
92
|
+
authentication_strategy: AUTHENTICATION_STRATEGY.DESKTOP,
|
|
93
|
+
session: validSession,
|
|
94
|
+
data: validDesktopData,
|
|
95
|
+
};
|
|
96
|
+
// ============================================================================
|
|
97
|
+
// INVOKE RESULT FIXTURES
|
|
98
|
+
// ============================================================================
|
|
99
|
+
export const validInvokeResult = {
|
|
100
|
+
credential: Promise.resolve('mock-credential-token-abc123'),
|
|
101
|
+
strategy: AUTHENTICATION_STRATEGY.TS43,
|
|
102
|
+
session: validSession,
|
|
103
|
+
};
|
|
104
|
+
export const cancellableInvokeResult = {
|
|
105
|
+
credential: Promise.resolve('mock-credential-token-abc123'),
|
|
106
|
+
strategy: AUTHENTICATION_STRATEGY.DESKTOP,
|
|
107
|
+
session: validSession,
|
|
108
|
+
cancel: jest.fn(),
|
|
109
|
+
};
|
|
110
|
+
// ============================================================================
|
|
111
|
+
// AUTH CREDENTIAL FIXTURES
|
|
112
|
+
// ============================================================================
|
|
113
|
+
export const validAuthCredential = {
|
|
114
|
+
credential: 'mock-credential-token-xyz789',
|
|
115
|
+
phone_number: '+14155551234',
|
|
116
|
+
session: validSession,
|
|
117
|
+
authenticated: true,
|
|
118
|
+
};
|
|
119
|
+
// ============================================================================
|
|
120
|
+
// PROCESS RESPONSE FIXTURES
|
|
121
|
+
// ============================================================================
|
|
122
|
+
export const validGetPhoneNumberResponse = {
|
|
123
|
+
phone_number: '+14155551234',
|
|
124
|
+
aud: 'carrier-audience-id',
|
|
125
|
+
};
|
|
126
|
+
export const validVerifyPhoneNumberResponse = {
|
|
127
|
+
phone_number: '+14155551234',
|
|
128
|
+
verified: true,
|
|
129
|
+
aud: 'carrier-audience-id',
|
|
130
|
+
};
|
|
131
|
+
// ============================================================================
|
|
132
|
+
// POLLING STATUS FIXTURES
|
|
133
|
+
// ============================================================================
|
|
134
|
+
export const pollingStatusPending = {
|
|
135
|
+
status: 'pending',
|
|
136
|
+
message: 'Waiting for user authentication',
|
|
137
|
+
};
|
|
138
|
+
export const pollingStatusCompleted = {
|
|
139
|
+
status: 'completed',
|
|
140
|
+
credential: 'completed-credential-token-123',
|
|
141
|
+
session: validSession,
|
|
142
|
+
};
|
|
143
|
+
export const pollingStatusExpired = {
|
|
144
|
+
status: 'expired',
|
|
145
|
+
message: 'Session has expired',
|
|
146
|
+
};
|
|
147
|
+
export const pollingStatusError = {
|
|
148
|
+
status: 'error',
|
|
149
|
+
message: 'Authentication failed',
|
|
150
|
+
code: 'AUTH_FAILED',
|
|
151
|
+
};
|
|
152
|
+
// ============================================================================
|
|
153
|
+
// BACKEND ERROR FIXTURES
|
|
154
|
+
// ============================================================================
|
|
155
|
+
export const backendErrorWithCode = {
|
|
156
|
+
code: 'INVALID_SESSION',
|
|
157
|
+
message: 'Session not found or expired',
|
|
158
|
+
status: 400,
|
|
159
|
+
request_id: 'req-error-123',
|
|
160
|
+
trace_id: 'trace-abc123',
|
|
161
|
+
span_id: 'span-xyz789',
|
|
162
|
+
service: 'magic-auth',
|
|
163
|
+
};
|
|
164
|
+
export const backendErrorWithError = {
|
|
165
|
+
error: 'RATE_LIMITED',
|
|
166
|
+
message: 'Too many requests',
|
|
167
|
+
status: 429,
|
|
168
|
+
details: { retryAfter: 60 },
|
|
169
|
+
};
|
|
170
|
+
export const backendErrorMinimal = {
|
|
171
|
+
status: 500,
|
|
172
|
+
};
|
|
173
|
+
export const backendErrorAsString = 'Internal Server Error';
|
|
174
|
+
export const backendErrorAsArray = ['error1', 'error2'];
|
|
175
|
+
export const backendErrorAsNull = null;
|
|
176
|
+
// ============================================================================
|
|
177
|
+
// INVALID/MISLEADING DATA FIXTURES
|
|
178
|
+
// ============================================================================
|
|
179
|
+
/**
|
|
180
|
+
* Data that looks like TS43Data but is actually DesktopData.
|
|
181
|
+
* Used to test type guard discrimination.
|
|
182
|
+
*/
|
|
183
|
+
export const misleadingDataLooksLikeTS43 = {
|
|
184
|
+
protocol: 'some-protocol',
|
|
185
|
+
data: {
|
|
186
|
+
// Has nested data object like TS43, but no dcql_query
|
|
187
|
+
nonce: 'fake-nonce',
|
|
188
|
+
session_id: 'session-123',
|
|
189
|
+
status_url: 'https://example.com/status',
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* Data that has nested data object (could be TS43 or Desktop).
|
|
194
|
+
* Should be correctly identified by type guards.
|
|
195
|
+
*/
|
|
196
|
+
export const ambiguousNestedData = {
|
|
197
|
+
data: {
|
|
198
|
+
something: 'value',
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Invalid InvokeResult - missing required fields.
|
|
203
|
+
*/
|
|
204
|
+
export const invalidInvokeResultMissingCredential = {
|
|
205
|
+
strategy: AUTHENTICATION_STRATEGY.TS43,
|
|
206
|
+
session: validSession,
|
|
207
|
+
};
|
|
208
|
+
export const invalidInvokeResultMissingStrategy = {
|
|
209
|
+
credential: Promise.resolve('token'),
|
|
210
|
+
session: validSession,
|
|
211
|
+
};
|
|
212
|
+
export const invalidInvokeResultMissingSession = {
|
|
213
|
+
credential: Promise.resolve('token'),
|
|
214
|
+
strategy: AUTHENTICATION_STRATEGY.TS43,
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Invalid phone numbers for validation tests.
|
|
218
|
+
*/
|
|
219
|
+
export const invalidPhoneNumbers = {
|
|
220
|
+
missingPlus: '14155551234',
|
|
221
|
+
tooShort: '+123456',
|
|
222
|
+
tooLong: '+12345678901234567',
|
|
223
|
+
withSpaces: '+1 415 555 1234',
|
|
224
|
+
withDashes: '+1-415-555-1234',
|
|
225
|
+
withParens: '+1(415)5551234',
|
|
226
|
+
withLetters: '+1415ABC1234',
|
|
227
|
+
startsWithZero: '+0123456789',
|
|
228
|
+
empty: '',
|
|
229
|
+
};
|
|
230
|
+
/**
|
|
231
|
+
* Valid phone numbers for validation tests.
|
|
232
|
+
*/
|
|
233
|
+
export const validPhoneNumbers = {
|
|
234
|
+
us: '+14155551234',
|
|
235
|
+
uk: '+447911123456',
|
|
236
|
+
india: '+919876543210',
|
|
237
|
+
germany: '+4915112345678',
|
|
238
|
+
minimum: '+1234567', // 8 chars total
|
|
239
|
+
maximum: '+123456789012345', // 16 chars total (+ plus 15 digits)
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* Invalid PLMN values for validation tests.
|
|
243
|
+
*/
|
|
244
|
+
export const invalidPlmn = {
|
|
245
|
+
mccTooShort: { mcc: '31', mnc: '260' },
|
|
246
|
+
mccTooLong: { mcc: '3100', mnc: '260' },
|
|
247
|
+
mncTooShort: { mcc: '310', mnc: '2' },
|
|
248
|
+
mncTooLong: { mcc: '310', mnc: '2600' },
|
|
249
|
+
mccWithLetters: { mcc: 'ABC', mnc: '260' },
|
|
250
|
+
mncWithLetters: { mcc: '310', mnc: 'AB' },
|
|
251
|
+
};
|
|
252
|
+
/**
|
|
253
|
+
* Valid PLMN values for validation tests.
|
|
254
|
+
*/
|
|
255
|
+
export const validPlmn = {
|
|
256
|
+
att: { mcc: '310', mnc: '410' },
|
|
257
|
+
verizon: { mcc: '311', mnc: '480' },
|
|
258
|
+
tmobile: { mcc: '310', mnc: '260' },
|
|
259
|
+
twoDigitMnc: { mcc: '234', mnc: '15' },
|
|
260
|
+
threeDigitMnc: { mcc: '234', mnc: '150' },
|
|
261
|
+
};
|
|
262
|
+
/**
|
|
263
|
+
* Session keys for validation tests.
|
|
264
|
+
*/
|
|
265
|
+
export const sessionKeys = {
|
|
266
|
+
valid: 'valid-session-key-1234567890',
|
|
267
|
+
tooShort: 'short-key',
|
|
268
|
+
minimum: '1234567890123456', // exactly 16 chars
|
|
269
|
+
empty: '',
|
|
270
|
+
};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jest Test Setup
|
|
3
|
+
*
|
|
4
|
+
* Global setup for all unit tests including:
|
|
5
|
+
* - Jest DOM matchers
|
|
6
|
+
* - Global mocks
|
|
7
|
+
* - Test utilities
|
|
8
|
+
*/
|
|
9
|
+
import '@testing-library/jest-dom';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// GLOBAL MOCKS
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Mock fetch globally for HTTP tests.
|
|
15
|
+
* Individual tests can override this.
|
|
16
|
+
*/
|
|
17
|
+
global.fetch = jest.fn();
|
|
18
|
+
/**
|
|
19
|
+
* Mock AbortController for timeout tests.
|
|
20
|
+
*/
|
|
21
|
+
global.AbortController = class MockAbortController {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.signal = {
|
|
24
|
+
aborted: false,
|
|
25
|
+
addEventListener: jest.fn(),
|
|
26
|
+
removeEventListener: jest.fn(),
|
|
27
|
+
onabort: null,
|
|
28
|
+
reason: undefined,
|
|
29
|
+
throwIfAborted: jest.fn(),
|
|
30
|
+
dispatchEvent: jest.fn(),
|
|
31
|
+
};
|
|
32
|
+
this.abort = jest.fn(() => {
|
|
33
|
+
this.signal.aborted = true;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// TEST UTILITIES
|
|
39
|
+
// ============================================================================
|
|
40
|
+
/**
|
|
41
|
+
* Helper to create a mock Response object.
|
|
42
|
+
*/
|
|
43
|
+
export function createMockResponse(body, options = {}) {
|
|
44
|
+
const { status = 200, ok = status >= 200 && status < 300, headers = {} } = options;
|
|
45
|
+
return {
|
|
46
|
+
ok,
|
|
47
|
+
status,
|
|
48
|
+
statusText: status === 200 ? 'OK' : 'Error',
|
|
49
|
+
headers: new Headers(headers),
|
|
50
|
+
json: jest.fn().mockResolvedValue(body),
|
|
51
|
+
text: jest.fn().mockResolvedValue(JSON.stringify(body)),
|
|
52
|
+
blob: jest.fn(),
|
|
53
|
+
arrayBuffer: jest.fn(),
|
|
54
|
+
formData: jest.fn(),
|
|
55
|
+
clone: jest.fn(),
|
|
56
|
+
body: null,
|
|
57
|
+
bodyUsed: false,
|
|
58
|
+
redirected: false,
|
|
59
|
+
type: 'basic',
|
|
60
|
+
url: '',
|
|
61
|
+
bytes: jest.fn(),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Helper to wait for async operations.
|
|
66
|
+
*/
|
|
67
|
+
export function flushPromises() {
|
|
68
|
+
return new Promise(resolve => setImmediate(resolve));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Helper to advance timers and flush promises.
|
|
72
|
+
*/
|
|
73
|
+
export async function advanceTimersAndFlush(ms) {
|
|
74
|
+
jest.advanceTimersByTime(ms);
|
|
75
|
+
await flushPromises();
|
|
76
|
+
}
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// CONSOLE MOCK HELPERS
|
|
79
|
+
// ============================================================================
|
|
80
|
+
/**
|
|
81
|
+
* Create spies on console methods for logger tests.
|
|
82
|
+
*/
|
|
83
|
+
export function createConsoleMocks() {
|
|
84
|
+
return {
|
|
85
|
+
debug: jest.spyOn(console, 'debug').mockImplementation(),
|
|
86
|
+
info: jest.spyOn(console, 'info').mockImplementation(),
|
|
87
|
+
warn: jest.spyOn(console, 'warn').mockImplementation(),
|
|
88
|
+
error: jest.spyOn(console, 'error').mockImplementation(),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Restore console mocks.
|
|
93
|
+
*/
|
|
94
|
+
export function restoreConsoleMocks(mocks) {
|
|
95
|
+
mocks.debug.mockRestore();
|
|
96
|
+
mocks.info.mockRestore();
|
|
97
|
+
mocks.warn.mockRestore();
|
|
98
|
+
mocks.error.mockRestore();
|
|
99
|
+
}
|
|
100
|
+
// ============================================================================
|
|
101
|
+
// CLEANUP
|
|
102
|
+
// ============================================================================
|
|
103
|
+
beforeEach(() => {
|
|
104
|
+
// Clear all mocks before each test
|
|
105
|
+
jest.clearAllMocks();
|
|
106
|
+
});
|
|
107
|
+
afterEach(() => {
|
|
108
|
+
// Reset fetch mock
|
|
109
|
+
global.fetch.mockReset();
|
|
110
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/adapters/react.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,SAAS,EAET,WAAW,EACZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,SAAS,EACT,cAAc,EACd,WAAW,EACX,OAAO,EACP,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAMvB,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;AAE/F,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,2BAA2B;IAC3B,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,6BAA6B;IAC7B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,oCAAoC;IACpC,IAAI,EAAE,QAAQ,CAAC;IACf,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAC;IAErB,+CAA+C;IAC/C,YAAY,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAE7F,gCAAgC;IAChC,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,qCAAqC;IACrC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAClG,iDAAiD;IACjD,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACvF,oDAAoD;IACpD,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAE1F,kBAAkB;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,+CAA+C;IAC/C,MAAM,EAAE,eAAe,CAAC;CACzB;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/adapters/react.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,SAAS,EAET,WAAW,EACZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,SAAS,EACT,cAAc,EACd,WAAW,EACX,OAAO,EACP,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAMvB,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;AAE/F,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,2BAA2B;IAC3B,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,6BAA6B;IAC7B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,oCAAoC;IACpC,IAAI,EAAE,QAAQ,CAAC;IACf,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAC;IAErB,+CAA+C;IAC/C,YAAY,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAE7F,gCAAgC;IAChC,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,qCAAqC;IACrC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAClG,iDAAiD;IACjD,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACvF,oDAAoD;IACpD,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAE1F,kBAAkB;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,+CAA+C;IAC/C,MAAM,EAAE,eAAe,CAAC;CACzB;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAwKpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../../src/adapters/vue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,SAAS,EAET,WAAW,EACZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,yBAAyB,EACzB,SAAS,EACT,cAAc,EACd,WAAW,EACX,OAAO,EACP,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAMvB,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;AAM/F;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;4BAiBnC,cAAc,YACb,aAAa,KACtB,OAAO,CAAC,eAAe,CAAC;uBAsBK,cAAc,KAAG,OAAO,CAAC,eAAe,CAAC;mCAsB7D,eAAe,YACf,aAAa,KACtB,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../../src/adapters/vue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,SAAS,EAET,WAAW,EACZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,yBAAyB,EACzB,SAAS,EACT,cAAc,EACd,WAAW,EACX,OAAO,EACP,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAMvB,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;AAM/F;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;4BAiBnC,cAAc,YACb,aAAa,KACtB,OAAO,CAAC,eAAe,CAAC;uBAsBK,cAAc,KAAG,OAAO,CAAC,eAAe,CAAC;mCAsB7D,eAAe,YACf,aAAa,KACtB,OAAO,CAAC,YAAY,CAAC;iCAsBV,MAAM,WACT,WAAW,KACnB,OAAO,CAAC,eAAe,CAAC;oCAuBb,MAAM,WACT,WAAW,KACnB,OAAO,CAAC,eAAe,CAAC;;;EA2C5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/client/http.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAO1F;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,uDAAuD;IACvD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvG;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,gBAAqB,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/client/http.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAO1F;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,uDAAuD;IACvD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvG;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,gBAAqB,GAAG,UAAU,CA0K1E;AAMD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/client/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAM5C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/client/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAM5C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA6ED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,GAAE,YAAiB,GAAG,MAAM,CAwC9D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC;AAMD,YAAY,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phone-auth-client.d.ts","sourceRoot":"","sources":["../../../src/client/phone-auth-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EAEZ,WAAW,EAEX,sBAAsB,EAEtB,yBAAyB,EACzB,eAAe,EAShB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"phone-auth-client.d.ts","sourceRoot":"","sources":["../../../src/client/phone-auth-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EAEZ,WAAW,EAEX,sBAAsB,EAEtB,yBAAyB,EACzB,eAAe,EAShB,MAAM,eAAe,CAAC;AAyDvB,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,UAAe;IA+CnC;;;;;;;;;;;;;;;;OAgBG;IACG,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IAoC9F;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAgEhE;;;;;;;;;;OAUG;IACG,kBAAkB,CACtB,QAAQ,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC;IAuBxB;;OAEG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,sBAAsB,CAAC;IAuBlC;;OAEG;IACG,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,yBAAyB,CAAC;IA2BrC;;OAEG;IACH,WAAW,IAAI,OAAO;IAKtB;;OAEG;IACH,qBAAqB,IAAI;QACvB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;IA4BD;;OAEG;YACW,UAAU;IAwGxB;;;OAGG;IACH,OAAO,CAAC,UAAU;IA0DlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAgGrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAG1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../../../src/client/strategies/polling.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAC;AAO5E,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa;iBAgDtC,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../../../src/client/strategies/polling.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAC;AAO5E,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa;iBAgDtC,OAAO,CAAC,aAAa,CAAC;gBAqGvB,IAAI;kBAWF,IAAI;qBAcD,OAAO;mBAOT,IAAI;EAazB"}
|
|
@@ -32,7 +32,7 @@ export type { AuthError, } from './types';
|
|
|
32
32
|
export type { DigitalCredential, SecureCredentialRequest, SecureCredentialResponse, } from './types';
|
|
33
33
|
export { USE_CASE, AUTHENTICATION_STRATEGY, } from './types';
|
|
34
34
|
export { ERROR_CODES, type ErrorCode, } from './errors';
|
|
35
|
-
export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements,
|
|
35
|
+
export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements, validateSessionKey, E164_REGEX, type ValidationResult, } from './validators';
|
|
36
36
|
export { isInvokeResult, isAuthCredential, isTS43Strategy, isLinkStrategy, isDesktopStrategy, isCancellable, isTS43Data, isLinkData, isDesktopData, getStrategyData, isGetPhoneNumberResponse, isVerifyPhoneNumberResponse, isErrorResponse, } from './type-guards';
|
|
37
37
|
export { isAuthError, isClientError, isRetryableError, getUserMessage, createAuthError, createAuthErrorWithContext, parseBackendError, serializeError, } from './errors';
|
|
38
38
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,YAAY,EACV,WAAW,EACX,SAAS,EACT,IAAI,GACL,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,OAAO,EACP,sBAAsB,EACtB,WAAW,EACX,IAAI,EACJ,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,GAChB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,MAAM,EACN,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,SAAS,GACV,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAMjB,OAAO,EACL,QAAQ,EACR,uBAAuB,GACxB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,WAAW,EACX,KAAK,SAAS,GACf,MAAM,UAAU,CAAC;AAMlB,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,2BAA2B,EAC3B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,YAAY,EACV,WAAW,EACX,SAAS,EACT,IAAI,GACL,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,OAAO,EACP,sBAAsB,EACtB,WAAW,EACX,IAAI,EACJ,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,GAChB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,MAAM,EACN,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,SAAS,GACV,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAMjB,OAAO,EACL,QAAQ,EACR,uBAAuB,GACxB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,WAAW,EACX,KAAK,SAAS,GACf,MAAM,UAAU,CAAC;AAMlB,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,UAAU,EACV,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AAMtB,OAAO,EAEL,cAAc,EACd,gBAAgB,EAGhB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EAGb,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,EAGf,wBAAwB,EACxB,2BAA2B,EAG3B,eAAe,GAChB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAEL,WAAW,EACX,aAAa,EACb,gBAAgB,EAGhB,cAAc,EAGd,eAAe,EACf,0BAA0B,EAG1B,iBAAiB,EAGjB,cAAc,GACf,MAAM,UAAU,CAAC"}
|
|
@@ -87,6 +87,9 @@ export declare function isTS43Data(data: unknown): data is TS43Data;
|
|
|
87
87
|
export declare function isLinkData(data: unknown): data is LinkData;
|
|
88
88
|
/**
|
|
89
89
|
* Check if prepare response data is DesktopData.
|
|
90
|
+
*
|
|
91
|
+
* Note: Both TS43Data and DesktopData have nested 'data' objects,
|
|
92
|
+
* so we must explicitly exclude TS43Data by checking for absence of 'dcql_query'.
|
|
90
93
|
*/
|
|
91
94
|
export declare function isDesktopData(data: unknown): data is DesktopData;
|
|
92
95
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../../src/core/type-guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EAChB,MAAM,SAAS,CAAC;AAOjB;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAQtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,cAAc,CAQ1E;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE5D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE5D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE3D;AAMD;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,QAAQ,CAS1D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,QAAQ,CAO1D;AAED
|
|
1
|
+
{"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../../src/core/type-guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EAChB,MAAM,SAAS,CAAC;AAOjB;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAQtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,cAAc,CAQ1E;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE5D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE5D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE3D;AAMD;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,QAAQ,CAS1D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,QAAQ,CAO1D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,WAAW,CAkBhE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,eAAe,EACvD,QAAQ,EAAE,CAAC,GACV,CAAC,CAAC,MAAM,CAAC,CAEX;AAMD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,GACtB,MAAM,IAAI,sBAAsB,CAElC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,GACtB,MAAM,IAAI,yBAAyB,CAErC;AAQD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAO1D"}
|
|
@@ -46,13 +46,6 @@ export declare function validatePlmn(plmn?: PLMN): ValidationResult;
|
|
|
46
46
|
* @returns Validation result
|
|
47
47
|
*/
|
|
48
48
|
export declare function validateUseCaseRequirements(useCase: UseCase, phoneNumber?: string, hasParentSessionId?: boolean): ValidationResult;
|
|
49
|
-
/**
|
|
50
|
-
* Validates nonce format.
|
|
51
|
-
*
|
|
52
|
-
* @param nonce - Nonce string to validate
|
|
53
|
-
* @returns Validation result
|
|
54
|
-
*/
|
|
55
|
-
export declare function validateNonce(nonce: string): ValidationResult;
|
|
56
49
|
/**
|
|
57
50
|
* Validates session key format.
|
|
58
51
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../src/core/validators.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAG7C,6BAA6B;AAC7B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,+BAA+B;AAC/B,eAAO,MAAM,UAAU,QAAsB,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA0C1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,gBAAgB,CAwB1D;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,OAAO,GAC3B,gBAAgB,CAUlB;AAED;;;;;GAKG;AACH,wBAAgB,
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../src/core/validators.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAG7C,6BAA6B;AAC7B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,+BAA+B;AAC/B,eAAO,MAAM,UAAU,QAAsB,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA0C1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,gBAAgB,CAwB1D;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,OAAO,GAC3B,gBAAgB,CAUlB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CASxE"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export { USE_CASE, AUTHENTICATION_STRATEGY } from './core/types';
|
|
|
33
33
|
export { ERROR_CODES, type ErrorCode } from './core/errors';
|
|
34
34
|
export { isAuthError, isClientError, isRetryableError, getUserMessage, createAuthError, parseBackendError, } from './core/errors';
|
|
35
35
|
export { isInvokeResult, isAuthCredential, isTS43Strategy, isLinkStrategy, isDesktopStrategy, isCancellable, isTS43Data, isLinkData, isDesktopData, isGetPhoneNumberResponse, isVerifyPhoneNumberResponse, isErrorResponse, } from './core/type-guards';
|
|
36
|
-
export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements,
|
|
36
|
+
export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements, validateSessionKey, E164_REGEX, type ValidationResult, } from './core/validators';
|
|
37
37
|
export { createHttpClient, type HttpClientConfig } from './client/http';
|
|
38
38
|
export { createLogger, createNoopLogger, type LoggerConfig } from './client/logger';
|
|
39
39
|
export { AuthModal, createQRCodeDataFromDesktop, type QRCodeData } from './ui/modal';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,YAAY,EAEV,WAAW,EACX,SAAS,EACT,IAAI,EACJ,OAAO,EACP,sBAAsB,EAGtB,WAAW,EACX,IAAI,EACJ,UAAU,EAGV,cAAc,EACd,cAAc,EACd,eAAe,EAGf,QAAQ,EACR,QAAQ,EACR,WAAW,EAGX,aAAa,EACb,YAAY,EACZ,cAAc,EAGd,aAAa,EACb,UAAU,EACV,YAAY,EAGZ,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EAGf,UAAU,EACV,UAAU,EACV,WAAW,EACX,MAAM,EACN,YAAY,EACZ,aAAa,EAGb,SAAS,GACV,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,EACb,wBAAwB,EACxB,2BAA2B,EAC3B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,2BAA2B,EAC3B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,YAAY,EAEV,WAAW,EACX,SAAS,EACT,IAAI,EACJ,OAAO,EACP,sBAAsB,EAGtB,WAAW,EACX,IAAI,EACJ,UAAU,EAGV,cAAc,EACd,cAAc,EACd,eAAe,EAGf,QAAQ,EACR,QAAQ,EACR,WAAW,EAGX,aAAa,EACb,YAAY,EACZ,cAAc,EAGd,aAAa,EACb,UAAU,EACV,YAAY,EAGZ,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EAGf,UAAU,EACV,UAAU,EACV,WAAW,EACX,MAAM,EACN,YAAY,EACZ,aAAa,EAGb,SAAS,GACV,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,EACb,wBAAwB,EACxB,2BAA2B,EAC3B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,UAAU,EACV,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpF,OAAO,EAAE,SAAS,EAAE,2BAA2B,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC"}
|