@glideidentity/web-client-sdk 5.1.3 → 6.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +337 -526
- package/dist/browser/web-client-sdk.min.js +1 -1
- package/dist/cjs/adapters/index.js +15 -0
- package/dist/cjs/adapters/react.js +192 -0
- package/dist/cjs/adapters/vanilla.js +38 -0
- package/dist/cjs/adapters/vue.js +187 -0
- package/dist/cjs/browser.js +58 -0
- package/dist/cjs/client/http.js +159 -0
- package/dist/cjs/client/index.js +19 -0
- package/dist/cjs/client/logger.js +135 -0
- package/dist/cjs/client/phone-auth-client.js +439 -0
- package/dist/cjs/client/strategies/polling.js +177 -0
- package/dist/cjs/core/errors.js +204 -0
- package/dist/cjs/core/index.js +83 -0
- package/dist/cjs/core/type-guards.js +196 -0
- package/dist/cjs/core/types.js +25 -0
- package/dist/{core/phone-auth/validation-utils.js → cjs/core/validators.js} +70 -23
- package/dist/cjs/index.js +81 -0
- package/dist/cjs/ui/index.js +11 -0
- package/dist/{core/phone-auth → cjs}/ui/mobile-debug-console.js +149 -78
- package/dist/cjs/ui/modal.js +1122 -0
- package/dist/esm/adapters/index.js +11 -0
- package/dist/esm/adapters/react.js +182 -0
- package/dist/esm/adapters/vanilla.js +29 -0
- package/dist/esm/adapters/vue.js +177 -0
- package/dist/esm/browser.js +30 -11
- package/dist/esm/client/http.js +156 -0
- package/dist/esm/client/index.js +11 -0
- package/dist/esm/client/logger.js +131 -0
- package/dist/esm/client/phone-auth-client.js +435 -0
- package/dist/esm/client/strategies/polling.js +174 -0
- package/dist/esm/core/errors.js +193 -0
- package/dist/esm/core/index.js +60 -0
- package/dist/esm/core/type-guards.js +181 -0
- package/dist/esm/core/types.js +22 -1
- package/dist/esm/core/{phone-auth/validation-utils.js → validators.js} +66 -21
- package/dist/esm/index.js +45 -17
- package/dist/esm/ui/index.js +5 -0
- package/dist/esm/{core/phone-auth/ui → ui}/mobile-debug-console.js +149 -78
- package/dist/esm/ui/modal.js +1117 -0
- package/dist/types/adapters/index.d.ts +10 -0
- package/dist/types/adapters/index.d.ts.map +1 -0
- package/dist/types/adapters/react.d.ts +70 -0
- package/dist/types/adapters/react.d.ts.map +1 -0
- package/dist/types/adapters/vanilla.d.ts +29 -0
- package/dist/types/adapters/vanilla.d.ts.map +1 -0
- package/dist/types/adapters/vue.d.ts +71 -0
- package/dist/types/adapters/vue.d.ts.map +1 -0
- package/dist/types/browser.d.ts +27 -0
- package/dist/types/browser.d.ts.map +1 -0
- package/dist/types/client/http.d.ts +41 -0
- package/dist/types/client/http.d.ts.map +1 -0
- package/dist/types/client/index.d.ts +10 -0
- package/dist/types/client/index.d.ts.map +1 -0
- package/dist/types/client/logger.d.ts +36 -0
- package/dist/types/client/logger.d.ts.map +1 -0
- package/dist/types/client/phone-auth-client.d.ts +91 -0
- package/dist/types/client/phone-auth-client.d.ts.map +1 -0
- package/dist/types/client/strategies/polling.d.ts +36 -0
- package/dist/types/client/strategies/polling.d.ts.map +1 -0
- package/dist/types/core/errors.d.ts +71 -0
- package/dist/types/core/errors.d.ts.map +1 -0
- package/dist/types/core/index.d.ts +38 -0
- package/dist/types/core/index.d.ts.map +1 -0
- package/dist/types/core/type-guards.d.ts +118 -0
- package/dist/types/core/type-guards.d.ts.map +1 -0
- package/dist/types/core/types.d.ts +534 -0
- package/dist/types/core/types.d.ts.map +1 -0
- package/dist/types/core/validators.d.ts +63 -0
- package/dist/types/core/validators.d.ts.map +1 -0
- package/dist/types/index.d.ts +40 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/ui/index.d.ts +6 -0
- package/dist/types/ui/index.d.ts.map +1 -0
- package/dist/{esm/core/phone-auth → types}/ui/mobile-debug-console.d.ts +1 -0
- package/dist/types/ui/mobile-debug-console.d.ts.map +1 -0
- package/dist/types/ui/modal.d.ts +87 -0
- package/dist/types/ui/modal.d.ts.map +1 -0
- package/package.json +48 -34
- package/dist/adapters/angular/client.service.d.ts +0 -7
- package/dist/adapters/angular/client.service.js +0 -30
- package/dist/adapters/angular/index.d.ts +0 -3
- package/dist/adapters/angular/index.js +0 -18
- package/dist/adapters/angular/phone-auth.service.d.ts +0 -38
- package/dist/adapters/angular/phone-auth.service.js +0 -130
- package/dist/adapters/react/index.d.ts +0 -9
- package/dist/adapters/react/index.js +0 -28
- package/dist/adapters/react/useClient.d.ts +0 -26
- package/dist/adapters/react/useClient.js +0 -121
- package/dist/adapters/react/usePhoneAuth.d.ts +0 -23
- package/dist/adapters/react/usePhoneAuth.js +0 -95
- package/dist/adapters/vanilla/client.d.ts +0 -8
- package/dist/adapters/vanilla/client.js +0 -33
- package/dist/adapters/vanilla/index.d.ts +0 -3
- package/dist/adapters/vanilla/index.js +0 -18
- package/dist/adapters/vanilla/phone-auth.d.ts +0 -46
- package/dist/adapters/vanilla/phone-auth.js +0 -138
- package/dist/adapters/vue/index.d.ts +0 -10
- package/dist/adapters/vue/index.js +0 -36
- package/dist/adapters/vue/useClient.d.ts +0 -115
- package/dist/adapters/vue/useClient.js +0 -131
- package/dist/adapters/vue/usePhoneAuth.d.ts +0 -94
- package/dist/adapters/vue/usePhoneAuth.js +0 -103
- package/dist/browser.d.ts +0 -7
- package/dist/browser.js +0 -31
- package/dist/core/client.d.ts +0 -22
- package/dist/core/client.js +0 -77
- package/dist/core/logger.d.ts +0 -130
- package/dist/core/logger.js +0 -370
- package/dist/core/phone-auth/api-types.d.ts +0 -593
- package/dist/core/phone-auth/api-types.js +0 -215
- package/dist/core/phone-auth/client.d.ts +0 -189
- package/dist/core/phone-auth/client.js +0 -1441
- package/dist/core/phone-auth/error-utils.d.ts +0 -110
- package/dist/core/phone-auth/error-utils.js +0 -350
- package/dist/core/phone-auth/index.d.ts +0 -7
- package/dist/core/phone-auth/index.js +0 -50
- package/dist/core/phone-auth/status-types.d.ts +0 -107
- package/dist/core/phone-auth/status-types.js +0 -31
- package/dist/core/phone-auth/strategies/desktop.d.ts +0 -122
- package/dist/core/phone-auth/strategies/desktop.js +0 -596
- package/dist/core/phone-auth/strategies/index.d.ts +0 -11
- package/dist/core/phone-auth/strategies/index.js +0 -15
- package/dist/core/phone-auth/strategies/link.d.ts +0 -89
- package/dist/core/phone-auth/strategies/link.js +0 -384
- package/dist/core/phone-auth/strategies/ts43.d.ts +0 -32
- package/dist/core/phone-auth/strategies/ts43.js +0 -161
- package/dist/core/phone-auth/strategies/types.d.ts +0 -18
- package/dist/core/phone-auth/strategies/types.js +0 -6
- package/dist/core/phone-auth/type-guards.d.ts +0 -143
- package/dist/core/phone-auth/type-guards.js +0 -198
- package/dist/core/phone-auth/types.d.ts +0 -237
- package/dist/core/phone-auth/types.js +0 -93
- package/dist/core/phone-auth/ui/mobile-debug-console.d.ts +0 -25
- package/dist/core/phone-auth/ui/modal.d.ts +0 -88
- package/dist/core/phone-auth/ui/modal.js +0 -598
- package/dist/core/phone-auth/validation-utils.d.ts +0 -44
- package/dist/core/types.d.ts +0 -62
- package/dist/core/types.js +0 -2
- package/dist/core/version.d.ts +0 -1
- package/dist/core/version.js +0 -5
- package/dist/esm/adapters/angular/client.service.d.ts +0 -7
- package/dist/esm/adapters/angular/client.service.js +0 -27
- package/dist/esm/adapters/angular/index.d.ts +0 -3
- package/dist/esm/adapters/angular/index.js +0 -4
- package/dist/esm/adapters/angular/phone-auth.service.d.ts +0 -38
- package/dist/esm/adapters/angular/phone-auth.service.js +0 -127
- package/dist/esm/adapters/react/index.d.ts +0 -9
- package/dist/esm/adapters/react/index.js +0 -8
- package/dist/esm/adapters/react/useClient.d.ts +0 -26
- package/dist/esm/adapters/react/useClient.js +0 -116
- package/dist/esm/adapters/react/usePhoneAuth.d.ts +0 -23
- package/dist/esm/adapters/react/usePhoneAuth.js +0 -92
- package/dist/esm/adapters/vanilla/client.d.ts +0 -8
- package/dist/esm/adapters/vanilla/client.js +0 -29
- package/dist/esm/adapters/vanilla/index.d.ts +0 -3
- package/dist/esm/adapters/vanilla/index.js +0 -4
- package/dist/esm/adapters/vanilla/phone-auth.d.ts +0 -46
- package/dist/esm/adapters/vanilla/phone-auth.js +0 -134
- package/dist/esm/adapters/vue/index.d.ts +0 -10
- package/dist/esm/adapters/vue/index.js +0 -11
- package/dist/esm/adapters/vue/useClient.d.ts +0 -115
- package/dist/esm/adapters/vue/useClient.js +0 -127
- package/dist/esm/adapters/vue/usePhoneAuth.d.ts +0 -94
- package/dist/esm/adapters/vue/usePhoneAuth.js +0 -100
- package/dist/esm/browser.d.ts +0 -7
- package/dist/esm/core/client.d.ts +0 -22
- package/dist/esm/core/client.js +0 -70
- package/dist/esm/core/logger.d.ts +0 -130
- package/dist/esm/core/logger.js +0 -359
- package/dist/esm/core/phone-auth/api-types.d.ts +0 -593
- package/dist/esm/core/phone-auth/api-types.js +0 -203
- package/dist/esm/core/phone-auth/client.d.ts +0 -189
- package/dist/esm/core/phone-auth/client.js +0 -1404
- package/dist/esm/core/phone-auth/error-utils.d.ts +0 -110
- package/dist/esm/core/phone-auth/error-utils.js +0 -338
- package/dist/esm/core/phone-auth/index.d.ts +0 -7
- package/dist/esm/core/phone-auth/index.js +0 -8
- package/dist/esm/core/phone-auth/status-types.d.ts +0 -107
- package/dist/esm/core/phone-auth/status-types.js +0 -26
- package/dist/esm/core/phone-auth/strategies/desktop.d.ts +0 -122
- package/dist/esm/core/phone-auth/strategies/desktop.js +0 -590
- package/dist/esm/core/phone-auth/strategies/index.d.ts +0 -11
- package/dist/esm/core/phone-auth/strategies/index.js +0 -7
- package/dist/esm/core/phone-auth/strategies/link.d.ts +0 -89
- package/dist/esm/core/phone-auth/strategies/link.js +0 -380
- package/dist/esm/core/phone-auth/strategies/ts43.d.ts +0 -32
- package/dist/esm/core/phone-auth/strategies/ts43.js +0 -157
- package/dist/esm/core/phone-auth/strategies/types.d.ts +0 -18
- package/dist/esm/core/phone-auth/strategies/types.js +0 -5
- package/dist/esm/core/phone-auth/type-guards.d.ts +0 -143
- package/dist/esm/core/phone-auth/type-guards.js +0 -185
- package/dist/esm/core/phone-auth/types.d.ts +0 -237
- package/dist/esm/core/phone-auth/types.js +0 -76
- package/dist/esm/core/phone-auth/ui/modal.d.ts +0 -88
- package/dist/esm/core/phone-auth/ui/modal.js +0 -594
- package/dist/esm/core/phone-auth/validation-utils.d.ts +0 -44
- package/dist/esm/core/types.d.ts +0 -62
- package/dist/esm/core/version.d.ts +0 -1
- package/dist/esm/core/version.js +0 -2
- package/dist/esm/index.d.ts +0 -12
- package/dist/index.d.ts +0 -12
- package/dist/index.js +0 -55
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* React Adapter for Phone Authentication SDK.
|
|
4
|
+
*
|
|
5
|
+
* Provides a React hook that wraps PhoneAuthClient with React state management.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* import { usePhoneAuth } from '@glideidentity/web-client-sdk/react';
|
|
10
|
+
*
|
|
11
|
+
* function AuthButton() {
|
|
12
|
+
* const { authenticate, isLoading, error, result } = usePhoneAuth({ debug: true });
|
|
13
|
+
*
|
|
14
|
+
* const handleClick = async () => {
|
|
15
|
+
* try {
|
|
16
|
+
* const result = await authenticate({
|
|
17
|
+
* use_case: 'VerifyPhoneNumber',
|
|
18
|
+
* phone_number: '+14155551234'
|
|
19
|
+
* });
|
|
20
|
+
* console.log('Verified:', result.verified);
|
|
21
|
+
* } catch (err) {
|
|
22
|
+
* // Error is also in `error` state
|
|
23
|
+
* }
|
|
24
|
+
* };
|
|
25
|
+
*
|
|
26
|
+
* return (
|
|
27
|
+
* <button onClick={handleClick} disabled={isLoading}>
|
|
28
|
+
* {isLoading ? 'Verifying...' : 'Verify Phone'}
|
|
29
|
+
* </button>
|
|
30
|
+
* );
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.createAuthError = exports.isAuthError = exports.ERROR_CODES = exports.AUTHENTICATION_STRATEGY = exports.USE_CASE = exports.PhoneAuthClient = void 0;
|
|
36
|
+
exports.usePhoneAuth = usePhoneAuth;
|
|
37
|
+
const react_1 = require("react");
|
|
38
|
+
const phone_auth_client_1 = require("../client/phone-auth-client");
|
|
39
|
+
// Re-export PhoneAuthClient and core types/constants for convenience
|
|
40
|
+
var phone_auth_client_2 = require("../client/phone-auth-client");
|
|
41
|
+
Object.defineProperty(exports, "PhoneAuthClient", { enumerable: true, get: function () { return phone_auth_client_2.PhoneAuthClient; } });
|
|
42
|
+
var types_1 = require("../core/types");
|
|
43
|
+
Object.defineProperty(exports, "USE_CASE", { enumerable: true, get: function () { return types_1.USE_CASE; } });
|
|
44
|
+
Object.defineProperty(exports, "AUTHENTICATION_STRATEGY", { enumerable: true, get: function () { return types_1.AUTHENTICATION_STRATEGY; } });
|
|
45
|
+
var errors_1 = require("../core/errors");
|
|
46
|
+
Object.defineProperty(exports, "ERROR_CODES", { enumerable: true, get: function () { return errors_1.ERROR_CODES; } });
|
|
47
|
+
Object.defineProperty(exports, "isAuthError", { enumerable: true, get: function () { return errors_1.isAuthError; } });
|
|
48
|
+
Object.defineProperty(exports, "createAuthError", { enumerable: true, get: function () { return errors_1.createAuthError; } });
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// HOOK
|
|
51
|
+
// ============================================================================
|
|
52
|
+
/**
|
|
53
|
+
* React hook for phone authentication.
|
|
54
|
+
*/
|
|
55
|
+
function usePhoneAuth(config) {
|
|
56
|
+
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
57
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
58
|
+
const [result, setResult] = (0, react_1.useState)(null);
|
|
59
|
+
const [step, setStep] = (0, react_1.useState)('idle');
|
|
60
|
+
// Memoize client - recreate if config changes
|
|
61
|
+
// Using JSON.stringify for stable comparison of config object
|
|
62
|
+
const configKey = JSON.stringify(config);
|
|
63
|
+
const client = (0, react_1.useMemo)(() => new phone_auth_client_1.PhoneAuthClient(config), [configKey]);
|
|
64
|
+
const isSupported = (0, react_1.useMemo)(() => client.isSupported(), [client]);
|
|
65
|
+
/**
|
|
66
|
+
* High-level authentication.
|
|
67
|
+
*/
|
|
68
|
+
const authenticate = (0, react_1.useCallback)(async (request, options) => {
|
|
69
|
+
setIsLoading(true);
|
|
70
|
+
setError(null);
|
|
71
|
+
setStep('preparing');
|
|
72
|
+
try {
|
|
73
|
+
const authResult = await client.authenticate(request, options);
|
|
74
|
+
setResult(authResult);
|
|
75
|
+
setStep('complete');
|
|
76
|
+
return authResult;
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
const authError = err;
|
|
80
|
+
setError(authError);
|
|
81
|
+
setStep('error');
|
|
82
|
+
throw err;
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
setIsLoading(false);
|
|
86
|
+
}
|
|
87
|
+
}, [client]);
|
|
88
|
+
/**
|
|
89
|
+
* Granular: Prepare.
|
|
90
|
+
*/
|
|
91
|
+
const prepare = (0, react_1.useCallback)(async (request) => {
|
|
92
|
+
setIsLoading(true);
|
|
93
|
+
setError(null);
|
|
94
|
+
setStep('preparing');
|
|
95
|
+
try {
|
|
96
|
+
const result = await client.prepare(request);
|
|
97
|
+
setStep('idle'); // Reset step on success (prepare is just first step)
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
const authError = err;
|
|
102
|
+
setError(authError);
|
|
103
|
+
setStep('error');
|
|
104
|
+
throw err;
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
setIsLoading(false);
|
|
108
|
+
}
|
|
109
|
+
}, [client]);
|
|
110
|
+
/**
|
|
111
|
+
* Granular: Invoke.
|
|
112
|
+
*/
|
|
113
|
+
const invokeSecurePrompt = (0, react_1.useCallback)(async (prepared, options) => {
|
|
114
|
+
setStep('invoking');
|
|
115
|
+
try {
|
|
116
|
+
return await client.invokeSecurePrompt(prepared, options);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
const authError = err;
|
|
120
|
+
setError(authError);
|
|
121
|
+
setStep('error');
|
|
122
|
+
throw err;
|
|
123
|
+
}
|
|
124
|
+
}, [client]);
|
|
125
|
+
/**
|
|
126
|
+
* Granular: Get phone number.
|
|
127
|
+
*/
|
|
128
|
+
const getPhoneNumber = (0, react_1.useCallback)(async (credential, session) => {
|
|
129
|
+
setIsLoading(true);
|
|
130
|
+
setStep('processing');
|
|
131
|
+
try {
|
|
132
|
+
const authResult = await client.getPhoneNumber(credential, session);
|
|
133
|
+
setResult(authResult);
|
|
134
|
+
setStep('complete');
|
|
135
|
+
return authResult;
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
const authError = err;
|
|
139
|
+
setError(authError);
|
|
140
|
+
setStep('error');
|
|
141
|
+
throw err;
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
setIsLoading(false);
|
|
145
|
+
}
|
|
146
|
+
}, [client]);
|
|
147
|
+
/**
|
|
148
|
+
* Granular: Verify phone number.
|
|
149
|
+
*/
|
|
150
|
+
const verifyPhoneNumber = (0, react_1.useCallback)(async (credential, session) => {
|
|
151
|
+
setIsLoading(true);
|
|
152
|
+
setStep('processing');
|
|
153
|
+
try {
|
|
154
|
+
const authResult = await client.verifyPhoneNumber(credential, session);
|
|
155
|
+
setResult(authResult);
|
|
156
|
+
setStep('complete');
|
|
157
|
+
return authResult;
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
const authError = err;
|
|
161
|
+
setError(authError);
|
|
162
|
+
setStep('error');
|
|
163
|
+
throw err;
|
|
164
|
+
}
|
|
165
|
+
finally {
|
|
166
|
+
setIsLoading(false);
|
|
167
|
+
}
|
|
168
|
+
}, [client]);
|
|
169
|
+
/**
|
|
170
|
+
* Reset state.
|
|
171
|
+
*/
|
|
172
|
+
const reset = (0, react_1.useCallback)(() => {
|
|
173
|
+
setIsLoading(false);
|
|
174
|
+
setError(null);
|
|
175
|
+
setResult(null);
|
|
176
|
+
setStep('idle');
|
|
177
|
+
}, []);
|
|
178
|
+
return {
|
|
179
|
+
isLoading,
|
|
180
|
+
error,
|
|
181
|
+
result,
|
|
182
|
+
step,
|
|
183
|
+
isSupported,
|
|
184
|
+
authenticate,
|
|
185
|
+
prepare,
|
|
186
|
+
invokeSecurePrompt,
|
|
187
|
+
getPhoneNumber,
|
|
188
|
+
verifyPhoneNumber,
|
|
189
|
+
reset,
|
|
190
|
+
client,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vanilla JavaScript Adapter for Phone Authentication SDK.
|
|
4
|
+
*
|
|
5
|
+
* Simply re-exports the PhoneAuthClient for use without a framework.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```javascript
|
|
9
|
+
* import { PhoneAuthClient } from '@glideidentity/web-client-sdk/vanilla';
|
|
10
|
+
*
|
|
11
|
+
* const client = new PhoneAuthClient({ debug: true });
|
|
12
|
+
*
|
|
13
|
+
* document.getElementById('auth-btn').addEventListener('click', async () => {
|
|
14
|
+
* try {
|
|
15
|
+
* const result = await client.authenticate({
|
|
16
|
+
* use_case: 'VerifyPhoneNumber',
|
|
17
|
+
* phone_number: '+14155551234'
|
|
18
|
+
* });
|
|
19
|
+
* console.log('Verified:', result.verified);
|
|
20
|
+
* } catch (error) {
|
|
21
|
+
* console.error('Auth failed:', error);
|
|
22
|
+
* }
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.createAuthError = exports.isAuthError = exports.ERROR_CODES = exports.AUTHENTICATION_STRATEGY = exports.USE_CASE = exports.PhoneAuthClient = void 0;
|
|
28
|
+
// Re-export everything from client
|
|
29
|
+
var phone_auth_client_1 = require("../client/phone-auth-client");
|
|
30
|
+
Object.defineProperty(exports, "PhoneAuthClient", { enumerable: true, get: function () { return phone_auth_client_1.PhoneAuthClient; } });
|
|
31
|
+
// Re-export constants
|
|
32
|
+
var types_1 = require("../core/types");
|
|
33
|
+
Object.defineProperty(exports, "USE_CASE", { enumerable: true, get: function () { return types_1.USE_CASE; } });
|
|
34
|
+
Object.defineProperty(exports, "AUTHENTICATION_STRATEGY", { enumerable: true, get: function () { return types_1.AUTHENTICATION_STRATEGY; } });
|
|
35
|
+
var errors_1 = require("../core/errors");
|
|
36
|
+
Object.defineProperty(exports, "ERROR_CODES", { enumerable: true, get: function () { return errors_1.ERROR_CODES; } });
|
|
37
|
+
Object.defineProperty(exports, "isAuthError", { enumerable: true, get: function () { return errors_1.isAuthError; } });
|
|
38
|
+
Object.defineProperty(exports, "createAuthError", { enumerable: true, get: function () { return errors_1.createAuthError; } });
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vue Adapter for Phone Authentication SDK.
|
|
4
|
+
*
|
|
5
|
+
* Provides a Vue composable that wraps PhoneAuthClient with Vue reactivity.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```vue
|
|
9
|
+
* <script setup>
|
|
10
|
+
* import { usePhoneAuth } from '@glideidentity/web-client-sdk/vue';
|
|
11
|
+
*
|
|
12
|
+
* const { authenticate, isLoading, error, result } = usePhoneAuth({ debug: true });
|
|
13
|
+
*
|
|
14
|
+
* const handleClick = async () => {
|
|
15
|
+
* try {
|
|
16
|
+
* const result = await authenticate({
|
|
17
|
+
* use_case: 'VerifyPhoneNumber',
|
|
18
|
+
* phone_number: '+14155551234'
|
|
19
|
+
* });
|
|
20
|
+
* console.log('Verified:', result.verified);
|
|
21
|
+
* } catch (err) {
|
|
22
|
+
* // Error is also in `error` ref
|
|
23
|
+
* }
|
|
24
|
+
* };
|
|
25
|
+
* </script>
|
|
26
|
+
*
|
|
27
|
+
* <template>
|
|
28
|
+
* <button @click="handleClick" :disabled="isLoading">
|
|
29
|
+
* {{ isLoading ? 'Verifying...' : 'Verify Phone' }}
|
|
30
|
+
* </button>
|
|
31
|
+
* </template>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.createAuthError = exports.isAuthError = exports.ERROR_CODES = exports.AUTHENTICATION_STRATEGY = exports.USE_CASE = exports.PhoneAuthClient = void 0;
|
|
36
|
+
exports.usePhoneAuth = usePhoneAuth;
|
|
37
|
+
const vue_1 = require("vue");
|
|
38
|
+
const phone_auth_client_1 = require("../client/phone-auth-client");
|
|
39
|
+
// Re-export PhoneAuthClient and core types/constants for convenience
|
|
40
|
+
var phone_auth_client_2 = require("../client/phone-auth-client");
|
|
41
|
+
Object.defineProperty(exports, "PhoneAuthClient", { enumerable: true, get: function () { return phone_auth_client_2.PhoneAuthClient; } });
|
|
42
|
+
var types_1 = require("../core/types");
|
|
43
|
+
Object.defineProperty(exports, "USE_CASE", { enumerable: true, get: function () { return types_1.USE_CASE; } });
|
|
44
|
+
Object.defineProperty(exports, "AUTHENTICATION_STRATEGY", { enumerable: true, get: function () { return types_1.AUTHENTICATION_STRATEGY; } });
|
|
45
|
+
var errors_1 = require("../core/errors");
|
|
46
|
+
Object.defineProperty(exports, "ERROR_CODES", { enumerable: true, get: function () { return errors_1.ERROR_CODES; } });
|
|
47
|
+
Object.defineProperty(exports, "isAuthError", { enumerable: true, get: function () { return errors_1.isAuthError; } });
|
|
48
|
+
Object.defineProperty(exports, "createAuthError", { enumerable: true, get: function () { return errors_1.createAuthError; } });
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// COMPOSABLE
|
|
51
|
+
// ============================================================================
|
|
52
|
+
/**
|
|
53
|
+
* Vue composable for phone authentication.
|
|
54
|
+
*/
|
|
55
|
+
function usePhoneAuth(config) {
|
|
56
|
+
// Create client once
|
|
57
|
+
const client = new phone_auth_client_1.PhoneAuthClient(config);
|
|
58
|
+
// Reactive state
|
|
59
|
+
const isLoading = (0, vue_1.ref)(false);
|
|
60
|
+
const error = (0, vue_1.ref)(null);
|
|
61
|
+
const result = (0, vue_1.ref)(null);
|
|
62
|
+
const step = (0, vue_1.ref)('idle');
|
|
63
|
+
// Computed
|
|
64
|
+
const isSupported = (0, vue_1.computed)(() => client.isSupported());
|
|
65
|
+
/**
|
|
66
|
+
* High-level authentication.
|
|
67
|
+
*/
|
|
68
|
+
async function authenticate(request, options) {
|
|
69
|
+
isLoading.value = true;
|
|
70
|
+
error.value = null;
|
|
71
|
+
step.value = 'preparing';
|
|
72
|
+
try {
|
|
73
|
+
const authResult = await client.authenticate(request, options);
|
|
74
|
+
result.value = authResult;
|
|
75
|
+
step.value = 'complete';
|
|
76
|
+
return authResult;
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
error.value = err;
|
|
80
|
+
step.value = 'error';
|
|
81
|
+
throw err;
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
isLoading.value = false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Granular: Prepare.
|
|
89
|
+
*/
|
|
90
|
+
async function prepare(request) {
|
|
91
|
+
isLoading.value = true;
|
|
92
|
+
error.value = null;
|
|
93
|
+
step.value = 'preparing';
|
|
94
|
+
try {
|
|
95
|
+
const result = await client.prepare(request);
|
|
96
|
+
step.value = 'idle'; // Reset step on success (prepare is just first step)
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
error.value = err;
|
|
101
|
+
step.value = 'error';
|
|
102
|
+
throw err;
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
isLoading.value = false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Granular: Invoke.
|
|
110
|
+
*/
|
|
111
|
+
async function invokeSecurePrompt(prepared, options) {
|
|
112
|
+
step.value = 'invoking';
|
|
113
|
+
try {
|
|
114
|
+
return await client.invokeSecurePrompt(prepared, options);
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
error.value = err;
|
|
118
|
+
step.value = 'error';
|
|
119
|
+
throw err;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Granular: Get phone number.
|
|
124
|
+
*/
|
|
125
|
+
async function getPhoneNumber(credential, session) {
|
|
126
|
+
isLoading.value = true;
|
|
127
|
+
step.value = 'processing';
|
|
128
|
+
try {
|
|
129
|
+
const authResult = await client.getPhoneNumber(credential, session);
|
|
130
|
+
result.value = authResult;
|
|
131
|
+
step.value = 'complete';
|
|
132
|
+
return authResult;
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
error.value = err;
|
|
136
|
+
step.value = 'error';
|
|
137
|
+
throw err;
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
isLoading.value = false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Granular: Verify phone number.
|
|
145
|
+
*/
|
|
146
|
+
async function verifyPhoneNumber(credential, session) {
|
|
147
|
+
isLoading.value = true;
|
|
148
|
+
step.value = 'processing';
|
|
149
|
+
try {
|
|
150
|
+
const authResult = await client.verifyPhoneNumber(credential, session);
|
|
151
|
+
result.value = authResult;
|
|
152
|
+
step.value = 'complete';
|
|
153
|
+
return authResult;
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
error.value = err;
|
|
157
|
+
step.value = 'error';
|
|
158
|
+
throw err;
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
isLoading.value = false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Reset state.
|
|
166
|
+
*/
|
|
167
|
+
function reset() {
|
|
168
|
+
isLoading.value = false;
|
|
169
|
+
error.value = null;
|
|
170
|
+
result.value = null;
|
|
171
|
+
step.value = 'idle';
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
isLoading,
|
|
175
|
+
error,
|
|
176
|
+
result,
|
|
177
|
+
step,
|
|
178
|
+
isSupported,
|
|
179
|
+
authenticate,
|
|
180
|
+
prepare,
|
|
181
|
+
invokeSecurePrompt,
|
|
182
|
+
getPhoneNumber,
|
|
183
|
+
verifyPhoneNumber,
|
|
184
|
+
reset,
|
|
185
|
+
client,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser-specific entry point for vanilla JavaScript usage.
|
|
4
|
+
* This is bundled via webpack and exposed as `window.GlideWebClientSDK`.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```html
|
|
8
|
+
* <script src="/sdk/web-client-sdk.min.js"></script>
|
|
9
|
+
* <script>
|
|
10
|
+
* const client = new GlideWebClientSDK.PhoneAuthClient({ debug: true });
|
|
11
|
+
* const result = await client.authenticate({
|
|
12
|
+
* use_case: GlideWebClientSDK.USE_CASE.VERIFY_PHONE_NUMBER,
|
|
13
|
+
* phone_number: '+14155551234'
|
|
14
|
+
* });
|
|
15
|
+
* </script>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.createQRCodeDataFromDesktop = exports.AuthModal = exports.validatePlmn = exports.validatePhoneNumber = exports.createAuthError = exports.getUserMessage = exports.isRetryableError = exports.isClientError = exports.isAuthError = exports.isErrorResponse = exports.isVerifyPhoneNumberResponse = exports.isGetPhoneNumberResponse = exports.isDesktopData = exports.isLinkData = exports.isTS43Data = exports.isCancellable = exports.isDesktopStrategy = exports.isLinkStrategy = exports.isTS43Strategy = exports.isAuthCredential = exports.isInvokeResult = exports.ERROR_CODES = exports.AUTHENTICATION_STRATEGY = exports.USE_CASE = exports.PhoneAuthClient = void 0;
|
|
20
|
+
// Main client
|
|
21
|
+
var phone_auth_client_1 = require("./client/phone-auth-client");
|
|
22
|
+
Object.defineProperty(exports, "PhoneAuthClient", { enumerable: true, get: function () { return phone_auth_client_1.PhoneAuthClient; } });
|
|
23
|
+
// Constants
|
|
24
|
+
var types_1 = require("./core/types");
|
|
25
|
+
Object.defineProperty(exports, "USE_CASE", { enumerable: true, get: function () { return types_1.USE_CASE; } });
|
|
26
|
+
Object.defineProperty(exports, "AUTHENTICATION_STRATEGY", { enumerable: true, get: function () { return types_1.AUTHENTICATION_STRATEGY; } });
|
|
27
|
+
// Error codes
|
|
28
|
+
var errors_1 = require("./core/errors");
|
|
29
|
+
Object.defineProperty(exports, "ERROR_CODES", { enumerable: true, get: function () { return errors_1.ERROR_CODES; } });
|
|
30
|
+
// Type guards
|
|
31
|
+
var type_guards_1 = require("./core/type-guards");
|
|
32
|
+
Object.defineProperty(exports, "isInvokeResult", { enumerable: true, get: function () { return type_guards_1.isInvokeResult; } });
|
|
33
|
+
Object.defineProperty(exports, "isAuthCredential", { enumerable: true, get: function () { return type_guards_1.isAuthCredential; } });
|
|
34
|
+
Object.defineProperty(exports, "isTS43Strategy", { enumerable: true, get: function () { return type_guards_1.isTS43Strategy; } });
|
|
35
|
+
Object.defineProperty(exports, "isLinkStrategy", { enumerable: true, get: function () { return type_guards_1.isLinkStrategy; } });
|
|
36
|
+
Object.defineProperty(exports, "isDesktopStrategy", { enumerable: true, get: function () { return type_guards_1.isDesktopStrategy; } });
|
|
37
|
+
Object.defineProperty(exports, "isCancellable", { enumerable: true, get: function () { return type_guards_1.isCancellable; } });
|
|
38
|
+
Object.defineProperty(exports, "isTS43Data", { enumerable: true, get: function () { return type_guards_1.isTS43Data; } });
|
|
39
|
+
Object.defineProperty(exports, "isLinkData", { enumerable: true, get: function () { return type_guards_1.isLinkData; } });
|
|
40
|
+
Object.defineProperty(exports, "isDesktopData", { enumerable: true, get: function () { return type_guards_1.isDesktopData; } });
|
|
41
|
+
Object.defineProperty(exports, "isGetPhoneNumberResponse", { enumerable: true, get: function () { return type_guards_1.isGetPhoneNumberResponse; } });
|
|
42
|
+
Object.defineProperty(exports, "isVerifyPhoneNumberResponse", { enumerable: true, get: function () { return type_guards_1.isVerifyPhoneNumberResponse; } });
|
|
43
|
+
Object.defineProperty(exports, "isErrorResponse", { enumerable: true, get: function () { return type_guards_1.isErrorResponse; } });
|
|
44
|
+
// Error utilities
|
|
45
|
+
var errors_2 = require("./core/errors");
|
|
46
|
+
Object.defineProperty(exports, "isAuthError", { enumerable: true, get: function () { return errors_2.isAuthError; } });
|
|
47
|
+
Object.defineProperty(exports, "isClientError", { enumerable: true, get: function () { return errors_2.isClientError; } });
|
|
48
|
+
Object.defineProperty(exports, "isRetryableError", { enumerable: true, get: function () { return errors_2.isRetryableError; } });
|
|
49
|
+
Object.defineProperty(exports, "getUserMessage", { enumerable: true, get: function () { return errors_2.getUserMessage; } });
|
|
50
|
+
Object.defineProperty(exports, "createAuthError", { enumerable: true, get: function () { return errors_2.createAuthError; } });
|
|
51
|
+
// Validators
|
|
52
|
+
var validators_1 = require("./core/validators");
|
|
53
|
+
Object.defineProperty(exports, "validatePhoneNumber", { enumerable: true, get: function () { return validators_1.validatePhoneNumber; } });
|
|
54
|
+
Object.defineProperty(exports, "validatePlmn", { enumerable: true, get: function () { return validators_1.validatePlmn; } });
|
|
55
|
+
// UI components
|
|
56
|
+
var modal_1 = require("./ui/modal");
|
|
57
|
+
Object.defineProperty(exports, "AuthModal", { enumerable: true, get: function () { return modal_1.AuthModal; } });
|
|
58
|
+
Object.defineProperty(exports, "createQRCodeDataFromDesktop", { enumerable: true, get: function () { return modal_1.createQRCodeDataFromDesktop; } });
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HTTP Client for Phone Authentication SDK.
|
|
4
|
+
*
|
|
5
|
+
* Provides a default fetch-based implementation with:
|
|
6
|
+
* - Timeout support
|
|
7
|
+
* - Static and dynamic headers
|
|
8
|
+
* - Error parsing using Core utilities
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.createHttpClient = createHttpClient;
|
|
12
|
+
const errors_1 = require("../core/errors");
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// DEFAULT HTTP CLIENT
|
|
15
|
+
// ============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Create a default fetch-based HTTP client.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const http = createHttpClient({
|
|
22
|
+
* timeout: 30000,
|
|
23
|
+
* headers: {
|
|
24
|
+
* common: { 'X-Client-Version': '2.0.0' },
|
|
25
|
+
* prepare: { 'X-Prepare-Only': 'true' }
|
|
26
|
+
* },
|
|
27
|
+
* dynamicHeaders: async (ctx) => {
|
|
28
|
+
* const token = await getAuthToken();
|
|
29
|
+
* return { 'Authorization': `Bearer ${token}` };
|
|
30
|
+
* }
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
function createHttpClient(config = {}) {
|
|
35
|
+
const { timeout = 30000, headers = {}, dynamicHeaders } = config;
|
|
36
|
+
/**
|
|
37
|
+
* Build headers for a request.
|
|
38
|
+
*/
|
|
39
|
+
async function buildHeaders(context, additionalHeaders) {
|
|
40
|
+
const result = {
|
|
41
|
+
'Content-Type': 'application/json',
|
|
42
|
+
};
|
|
43
|
+
// Add common headers
|
|
44
|
+
if (headers.common) {
|
|
45
|
+
Object.assign(result, headers.common);
|
|
46
|
+
}
|
|
47
|
+
// Add endpoint-specific headers
|
|
48
|
+
const endpointHeaders = headers[context.endpoint];
|
|
49
|
+
if (endpointHeaders && typeof endpointHeaders === 'object') {
|
|
50
|
+
Object.assign(result, endpointHeaders);
|
|
51
|
+
}
|
|
52
|
+
// Add dynamic headers
|
|
53
|
+
if (dynamicHeaders) {
|
|
54
|
+
const dynamic = await dynamicHeaders(context);
|
|
55
|
+
Object.assign(result, dynamic);
|
|
56
|
+
}
|
|
57
|
+
// Add additional headers from options
|
|
58
|
+
if (additionalHeaders) {
|
|
59
|
+
Object.assign(result, additionalHeaders);
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Make a fetch request with timeout.
|
|
65
|
+
*/
|
|
66
|
+
async function fetchWithTimeout(url, init, requestTimeout, signal) {
|
|
67
|
+
const controller = new AbortController();
|
|
68
|
+
const timeoutId = setTimeout(() => controller.abort(), requestTimeout);
|
|
69
|
+
// If external signal provided, link it to our controller
|
|
70
|
+
// Store handler reference so we can remove it later (prevent memory leak)
|
|
71
|
+
const abortHandler = signal ? () => controller.abort() : null;
|
|
72
|
+
if (signal && abortHandler) {
|
|
73
|
+
signal.addEventListener('abort', abortHandler);
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
const response = await fetch(url, {
|
|
77
|
+
...init,
|
|
78
|
+
signal: controller.signal,
|
|
79
|
+
});
|
|
80
|
+
return response;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// Check if it's a timeout (AbortError from our controller)
|
|
84
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
85
|
+
// Check if it was our timeout or external abort
|
|
86
|
+
if (signal?.aborted) {
|
|
87
|
+
throw (0, errors_1.createAuthError)(errors_1.ERROR_CODES.CANCELLED, 'Request was cancelled');
|
|
88
|
+
}
|
|
89
|
+
throw (0, errors_1.createAuthError)(errors_1.ERROR_CODES.TIMEOUT, 'Request timed out');
|
|
90
|
+
}
|
|
91
|
+
// Network error
|
|
92
|
+
throw (0, errors_1.createAuthError)(errors_1.ERROR_CODES.NETWORK_ERROR, error instanceof Error ? error.message : 'Network request failed');
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
clearTimeout(timeoutId);
|
|
96
|
+
// Clean up event listener to prevent memory leak
|
|
97
|
+
if (signal && abortHandler) {
|
|
98
|
+
signal.removeEventListener('abort', abortHandler);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Parse response and handle errors.
|
|
104
|
+
*/
|
|
105
|
+
async function parseResponse(response) {
|
|
106
|
+
// Try to parse JSON
|
|
107
|
+
let data;
|
|
108
|
+
try {
|
|
109
|
+
data = await response.json();
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// If JSON parsing fails and response is not ok, throw generic error
|
|
113
|
+
if (!response.ok) {
|
|
114
|
+
throw (0, errors_1.createAuthError)(errors_1.ERROR_CODES.INVALID_RESPONSE, `Request failed with status ${response.status}`);
|
|
115
|
+
}
|
|
116
|
+
throw (0, errors_1.createAuthError)(errors_1.ERROR_CODES.INVALID_RESPONSE, 'Failed to parse response');
|
|
117
|
+
}
|
|
118
|
+
// If response is not ok, parse as error
|
|
119
|
+
if (!response.ok) {
|
|
120
|
+
throw (0, errors_1.parseBackendError)({ ...data, status: response.status });
|
|
121
|
+
}
|
|
122
|
+
return data;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Determine endpoint type from URL for header context.
|
|
126
|
+
*/
|
|
127
|
+
function getEndpointType(url) {
|
|
128
|
+
if (url.includes('/prepare'))
|
|
129
|
+
return 'prepare';
|
|
130
|
+
if (url.includes('/process') || url.includes('/get-phone') || url.includes('/verify-phone'))
|
|
131
|
+
return 'process';
|
|
132
|
+
if (url.includes('/status'))
|
|
133
|
+
return 'polling';
|
|
134
|
+
return 'prepare'; // Default
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
async post(url, body, options) {
|
|
138
|
+
const endpointType = getEndpointType(url);
|
|
139
|
+
const requestHeaders = await buildHeaders({ endpoint: endpointType, method: 'POST' }, options?.headers);
|
|
140
|
+
const response = await fetchWithTimeout(url, {
|
|
141
|
+
method: 'POST',
|
|
142
|
+
headers: requestHeaders,
|
|
143
|
+
body: JSON.stringify(body),
|
|
144
|
+
}, options?.timeout || timeout, options?.signal);
|
|
145
|
+
return parseResponse(response);
|
|
146
|
+
},
|
|
147
|
+
async get(url, options) {
|
|
148
|
+
const endpointType = getEndpointType(url);
|
|
149
|
+
const requestHeaders = await buildHeaders({ endpoint: endpointType, method: 'GET' }, options?.headers);
|
|
150
|
+
// Remove Content-Type for GET requests
|
|
151
|
+
delete requestHeaders['Content-Type'];
|
|
152
|
+
const response = await fetchWithTimeout(url, {
|
|
153
|
+
method: 'GET',
|
|
154
|
+
headers: requestHeaders,
|
|
155
|
+
}, options?.timeout || timeout, options?.signal);
|
|
156
|
+
return parseResponse(response);
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Client module exports.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createPollingHandler = exports.createNoopLogger = exports.createLogger = exports.createHttpClient = exports.PhoneAuthClient = void 0;
|
|
7
|
+
// Main Client
|
|
8
|
+
var phone_auth_client_1 = require("./phone-auth-client");
|
|
9
|
+
Object.defineProperty(exports, "PhoneAuthClient", { enumerable: true, get: function () { return phone_auth_client_1.PhoneAuthClient; } });
|
|
10
|
+
// HTTP Client
|
|
11
|
+
var http_1 = require("./http");
|
|
12
|
+
Object.defineProperty(exports, "createHttpClient", { enumerable: true, get: function () { return http_1.createHttpClient; } });
|
|
13
|
+
// Logger
|
|
14
|
+
var logger_1 = require("./logger");
|
|
15
|
+
Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logger_1.createLogger; } });
|
|
16
|
+
Object.defineProperty(exports, "createNoopLogger", { enumerable: true, get: function () { return logger_1.createNoopLogger; } });
|
|
17
|
+
// Strategies (internal, but exported for advanced use)
|
|
18
|
+
var polling_1 = require("./strategies/polling");
|
|
19
|
+
Object.defineProperty(exports, "createPollingHandler", { enumerable: true, get: function () { return polling_1.createPollingHandler; } });
|