@glideidentity/web-client-sdk 5.1.2 → 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 -151
- 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 -147
- 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,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation utilities for phone authentication.
|
|
3
|
+
*
|
|
4
|
+
* Pure functions with no runtime dependencies.
|
|
5
|
+
* All validators return { valid: boolean; error?: string }.
|
|
6
|
+
*/
|
|
7
|
+
import type { PLMN, UseCase } from './types';
|
|
8
|
+
/** Validation result type */
|
|
9
|
+
export interface ValidationResult {
|
|
10
|
+
valid: boolean;
|
|
11
|
+
error?: string;
|
|
12
|
+
}
|
|
13
|
+
/** E.164 phone number regex */
|
|
14
|
+
export declare const E164_REGEX: RegExp;
|
|
15
|
+
/**
|
|
16
|
+
* Validates E.164 phone number format.
|
|
17
|
+
*
|
|
18
|
+
* @param phoneNumber - Phone number to validate
|
|
19
|
+
* @returns Validation result with error if invalid
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const result = validatePhoneNumber('+14155551234');
|
|
24
|
+
* if (!result.valid) {
|
|
25
|
+
* console.error(result.error);
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function validatePhoneNumber(phoneNumber?: string): ValidationResult;
|
|
30
|
+
/**
|
|
31
|
+
* Validates PLMN (MCC/MNC) values.
|
|
32
|
+
*
|
|
33
|
+
* @deprecated PLMN validation will be removed with PLMN support.
|
|
34
|
+
* TODO: Remove in next major version
|
|
35
|
+
*
|
|
36
|
+
* @param plmn - PLMN object with MCC and MNC
|
|
37
|
+
* @returns Validation result
|
|
38
|
+
*/
|
|
39
|
+
export declare function validatePlmn(plmn?: PLMN): ValidationResult;
|
|
40
|
+
/**
|
|
41
|
+
* Validates use case and required parameters combination.
|
|
42
|
+
*
|
|
43
|
+
* @param useCase - The use case
|
|
44
|
+
* @param phoneNumber - The phone number (required for VerifyPhoneNumber)
|
|
45
|
+
* @param hasParentSessionId - Whether parent_session_id is provided
|
|
46
|
+
* @returns Validation result
|
|
47
|
+
*/
|
|
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
|
+
/**
|
|
57
|
+
* Validates session key format.
|
|
58
|
+
*
|
|
59
|
+
* @param sessionKey - Session key to validate
|
|
60
|
+
* @returns Validation result
|
|
61
|
+
*/
|
|
62
|
+
export declare function validateSessionKey(sessionKey?: string): ValidationResult;
|
|
63
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +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,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAyB7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CASxE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Glide Phone Authentication SDK
|
|
3
|
+
*
|
|
4
|
+
* @example Basic Usage
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import { PhoneAuthClient } from '@glideidentity/web-client-sdk';
|
|
7
|
+
*
|
|
8
|
+
* const client = new PhoneAuthClient({ debug: true });
|
|
9
|
+
* const result = await client.authenticate({
|
|
10
|
+
* use_case: 'VerifyPhoneNumber',
|
|
11
|
+
* phone_number: '+14155551234'
|
|
12
|
+
* });
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @example React
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { usePhoneAuth } from '@glideidentity/web-client-sdk/react';
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @example Vue
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { usePhoneAuth } from '@glideidentity/web-client-sdk/vue';
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example Core Types Only
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import type { PrepareRequest } from '@glideidentity/web-client-sdk/core';
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export { PhoneAuthClient } from './client/phone-auth-client';
|
|
31
|
+
export type { PhoneNumber, Timestamp, UUID, UseCase, AuthenticationStrategy, SessionInfo, PLMN, ClientInfo, PrepareOptions, PrepareRequest, PrepareResponse, TS43Data, LinkData, DesktopData, InvokeOptions, InvokeResult, AuthCredential, ModalViewMode, ModalTheme, ModalOptions, GetPhoneNumberRequest, GetPhoneNumberResponse, VerifyPhoneNumberRequest, VerifyPhoneNumberResponse, PhoneAuthResult, AuthConfig, HttpClient, HttpOptions, Logger, HeaderConfig, HeaderContext, AuthError, } from './core/types';
|
|
32
|
+
export { USE_CASE, AUTHENTICATION_STRATEGY } from './core/types';
|
|
33
|
+
export { ERROR_CODES, type ErrorCode } from './core/errors';
|
|
34
|
+
export { isAuthError, isClientError, isRetryableError, getUserMessage, createAuthError, parseBackendError, } from './core/errors';
|
|
35
|
+
export { isInvokeResult, isAuthCredential, isTS43Strategy, isLinkStrategy, isDesktopStrategy, isCancellable, isTS43Data, isLinkData, isDesktopData, isGetPhoneNumberResponse, isVerifyPhoneNumberResponse, isErrorResponse, } from './core/type-guards';
|
|
36
|
+
export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements, validateNonce, validateSessionKey, E164_REGEX, type ValidationResult, } from './core/validators';
|
|
37
|
+
export { createHttpClient, type HttpClientConfig } from './client/http';
|
|
38
|
+
export { createLogger, createNoopLogger, type LoggerConfig } from './client/logger';
|
|
39
|
+
export { AuthModal, createQRCodeDataFromDesktop, type QRCodeData } from './ui/modal';
|
|
40
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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,aAAa,EACb,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,2BAA2B,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-debug-console.d.ts","sourceRoot":"","sources":["../../../src/ui/mobile-debug-console.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmC;IAC1D,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,eAAe,CAMrB;;IAOF,MAAM,CAAC,IAAI,IAAI,kBAAkB;IAOjC,MAAM,CAAC,OAAO,IAAI,IAAI;IAOtB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,MAAM;IAgDd,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,QAAQ;IAuOhB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,MAAM;IAcd,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,OAAO;CAiBhB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modal UI Component for Phone Authentication
|
|
3
|
+
*
|
|
4
|
+
* This file creates the UI components (modals, buttons) that are shown
|
|
5
|
+
* for Desktop QR code authentication flow.
|
|
6
|
+
*
|
|
7
|
+
* Supports three view modes:
|
|
8
|
+
* - toggle: Single QR with iOS/Android toggle (default)
|
|
9
|
+
* - dual: Side-by-side QR codes for both platforms
|
|
10
|
+
* - pre-step: OS selection first, then QR
|
|
11
|
+
*/
|
|
12
|
+
import type { ModalOptions } from '../core/types';
|
|
13
|
+
/**
|
|
14
|
+
* QR code data for the modal.
|
|
15
|
+
* Can be a simple string (same QR for both platforms) or separate QRs.
|
|
16
|
+
*/
|
|
17
|
+
export interface QRCodeData {
|
|
18
|
+
iosQRCode: string;
|
|
19
|
+
androidQRCode?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Creates and manages a modal dialog for authentication
|
|
23
|
+
*/
|
|
24
|
+
export declare class AuthModal {
|
|
25
|
+
private container;
|
|
26
|
+
private backdrop;
|
|
27
|
+
private isOpen;
|
|
28
|
+
private options;
|
|
29
|
+
private closeCallback?;
|
|
30
|
+
private theme;
|
|
31
|
+
private currentStep;
|
|
32
|
+
private qrCodeData;
|
|
33
|
+
private statusMessage;
|
|
34
|
+
private originalBodyOverflow;
|
|
35
|
+
private isClosing;
|
|
36
|
+
private readonly iconApple;
|
|
37
|
+
private readonly iconAndroid;
|
|
38
|
+
private readonly iconBack;
|
|
39
|
+
constructor(options?: ModalOptions);
|
|
40
|
+
/**
|
|
41
|
+
* Determines if dark mode should be used based on theme setting
|
|
42
|
+
*/
|
|
43
|
+
private shouldUseDarkMode;
|
|
44
|
+
private handleEscapeKey;
|
|
45
|
+
private escapeHtml;
|
|
46
|
+
/**
|
|
47
|
+
* Shows the modal with a QR code
|
|
48
|
+
* @param qrCodeData - Either a string (single QR) or QRCodeData (separate iOS/Android)
|
|
49
|
+
* @param statusMessage - Optional status message to display
|
|
50
|
+
*/
|
|
51
|
+
showQRCode(qrCodeData: string | QRCodeData, statusMessage?: string): void;
|
|
52
|
+
/**
|
|
53
|
+
* Updates the status message shown in the modal
|
|
54
|
+
*/
|
|
55
|
+
updateStatus(status: string, isError?: boolean): void;
|
|
56
|
+
setCloseCallback(callback: () => void): void;
|
|
57
|
+
private renderToggleMode;
|
|
58
|
+
private renderDualMode;
|
|
59
|
+
private renderPreStepMode;
|
|
60
|
+
private setupPreStepListeners;
|
|
61
|
+
private updatePreStepUI;
|
|
62
|
+
private setupBackButton;
|
|
63
|
+
private createModal;
|
|
64
|
+
private setupHelpInteraction;
|
|
65
|
+
private injectStyles;
|
|
66
|
+
show(): void;
|
|
67
|
+
private setupPlatformToggles;
|
|
68
|
+
private lockBodyScroll;
|
|
69
|
+
private unlockBodyScroll;
|
|
70
|
+
close(): void;
|
|
71
|
+
private cleanup;
|
|
72
|
+
/**
|
|
73
|
+
* Check if modal is currently open
|
|
74
|
+
*/
|
|
75
|
+
isModalOpen(): boolean;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Helper to create QRCodeData from DesktopData
|
|
79
|
+
*/
|
|
80
|
+
export declare function createQRCodeDataFromDesktop(desktopData: {
|
|
81
|
+
data: {
|
|
82
|
+
qr_code_image?: string;
|
|
83
|
+
ios_qr_image?: string;
|
|
84
|
+
android_qr_image?: string;
|
|
85
|
+
};
|
|
86
|
+
}): QRCodeData | string;
|
|
87
|
+
//# sourceMappingURL=modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/ui/modal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,eAAe,CAAC;AAE7E;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,KAAK,CAAa;IAG1B,OAAO,CAAC,WAAW,CAAsD;IACzE,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,aAAa,CAAc;IAGnC,OAAO,CAAC,oBAAoB,CAAc;IAG1C,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2hB;IACrjB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqZ;IACjb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2Q;gBAExR,OAAO,CAAC,EAAE,YAAY;IAMlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,UAAU;IASlB;;;;OAIG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE,aAAa,SAAgC,GAAG,IAAI;IA4BhG;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,IAAI;IAe5D,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAM5C,OAAO,CAAC,gBAAgB;IA8CxB,OAAO,CAAC,cAAc;IA4CtB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,eAAe;IAwEvB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,WAAW;IAyEnB,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,YAAY;IAqmBpB,IAAI,IAAI,IAAI;IA+BZ,OAAO,CAAC,oBAAoB;IAkC5B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAIxB,KAAK,IAAI,IAAI;IAsBb,OAAO,CAAC,OAAO;IASf;;OAEG;IACH,WAAW,IAAI,OAAO;CAGvB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE;IACvD,IAAI,EAAE;QACJ,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,GAAG,UAAU,GAAG,MAAM,CAiBtB"}
|
package/package.json
CHANGED
|
@@ -1,71 +1,82 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@glideidentity/web-client-sdk",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
3
|
+
"version": "6.0.0-beta.1",
|
|
4
|
+
"description": "Glide Phone Authentication SDK for web applications",
|
|
5
|
+
"main": "./dist/cjs/index.js",
|
|
5
6
|
"module": "./dist/esm/index.js",
|
|
6
|
-
"types": "./dist/index.d.ts",
|
|
7
|
+
"types": "./dist/types/index.d.ts",
|
|
7
8
|
"browser": "./dist/browser/web-client-sdk.min.js",
|
|
9
|
+
"sideEffects": false,
|
|
8
10
|
"files": [
|
|
9
11
|
"dist"
|
|
10
12
|
],
|
|
11
13
|
"exports": {
|
|
12
14
|
".": {
|
|
13
|
-
"types": "./dist/index.d.ts",
|
|
15
|
+
"types": "./dist/types/index.d.ts",
|
|
14
16
|
"import": "./dist/esm/index.js",
|
|
15
|
-
"require": "./dist/index.js",
|
|
16
|
-
"
|
|
17
|
-
"default": "./dist/index.js"
|
|
17
|
+
"require": "./dist/cjs/index.js",
|
|
18
|
+
"default": "./dist/cjs/index.js"
|
|
18
19
|
},
|
|
19
|
-
"./
|
|
20
|
-
"types": "./dist/
|
|
21
|
-
"import": "./dist/esm/
|
|
22
|
-
"require": "./dist/
|
|
23
|
-
"default": "./dist/
|
|
20
|
+
"./core": {
|
|
21
|
+
"types": "./dist/types/core/index.d.ts",
|
|
22
|
+
"import": "./dist/esm/core/index.js",
|
|
23
|
+
"require": "./dist/cjs/core/index.js",
|
|
24
|
+
"default": "./dist/cjs/core/index.js"
|
|
24
25
|
},
|
|
25
26
|
"./react": {
|
|
26
|
-
"types": "./dist/adapters/react
|
|
27
|
-
"import": "./dist/esm/adapters/react
|
|
28
|
-
"require": "./dist/adapters/react
|
|
29
|
-
"default": "./dist/adapters/react
|
|
27
|
+
"types": "./dist/types/adapters/react.d.ts",
|
|
28
|
+
"import": "./dist/esm/adapters/react.js",
|
|
29
|
+
"require": "./dist/cjs/adapters/react.js",
|
|
30
|
+
"default": "./dist/cjs/adapters/react.js"
|
|
31
|
+
},
|
|
32
|
+
"./vue": {
|
|
33
|
+
"types": "./dist/types/adapters/vue.d.ts",
|
|
34
|
+
"import": "./dist/esm/adapters/vue.js",
|
|
35
|
+
"require": "./dist/cjs/adapters/vue.js",
|
|
36
|
+
"default": "./dist/cjs/adapters/vue.js"
|
|
30
37
|
},
|
|
31
|
-
"./
|
|
32
|
-
"types": "./dist/adapters/
|
|
33
|
-
"import": "./dist/esm/adapters/
|
|
34
|
-
"require": "./dist/adapters/
|
|
35
|
-
"default": "./dist/adapters/
|
|
38
|
+
"./vanilla": {
|
|
39
|
+
"types": "./dist/types/adapters/vanilla.d.ts",
|
|
40
|
+
"import": "./dist/esm/adapters/vanilla.js",
|
|
41
|
+
"require": "./dist/cjs/adapters/vanilla.js",
|
|
42
|
+
"default": "./dist/cjs/adapters/vanilla.js"
|
|
36
43
|
}
|
|
37
44
|
},
|
|
38
45
|
"scripts": {
|
|
39
|
-
"build": "npm run clean && npm run build:cjs && npm run build:esm && npm run build:
|
|
40
|
-
"build:cjs": "tsc -p tsconfig.
|
|
46
|
+
"build": "npm run clean && npm run build:cjs && npm run build:esm && npm run build:types && npm run build:browser",
|
|
47
|
+
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
41
48
|
"build:esm": "tsc -p tsconfig.esm.json",
|
|
49
|
+
"build:types": "tsc -p tsconfig.types.json",
|
|
42
50
|
"build:browser": "webpack",
|
|
43
51
|
"clean": "rm -rf dist",
|
|
44
|
-
"inject-version": "node scripts/inject-version.js",
|
|
45
52
|
"prepublishOnly": "npm run build",
|
|
46
|
-
"test": "jest"
|
|
53
|
+
"test": "jest",
|
|
54
|
+
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
47
55
|
},
|
|
48
56
|
"publishConfig": {
|
|
49
57
|
"access": "public"
|
|
50
58
|
},
|
|
51
59
|
"keywords": [
|
|
52
60
|
"sdk",
|
|
53
|
-
"authentication",
|
|
54
|
-
"
|
|
61
|
+
"phone-authentication",
|
|
62
|
+
"glide",
|
|
55
63
|
"react",
|
|
56
64
|
"vue",
|
|
57
|
-
"
|
|
65
|
+
"typescript"
|
|
58
66
|
],
|
|
59
67
|
"peerDependencies": {
|
|
60
|
-
"
|
|
61
|
-
"react": "^18.0.0",
|
|
68
|
+
"react": "^17.0.0 || ^18.0.0",
|
|
62
69
|
"vue": "^3.0.0"
|
|
63
70
|
},
|
|
64
|
-
"
|
|
65
|
-
"
|
|
71
|
+
"peerDependenciesMeta": {
|
|
72
|
+
"react": {
|
|
73
|
+
"optional": true
|
|
74
|
+
},
|
|
75
|
+
"vue": {
|
|
76
|
+
"optional": true
|
|
77
|
+
}
|
|
66
78
|
},
|
|
67
79
|
"devDependencies": {
|
|
68
|
-
"@angular/core": "^19.0.6",
|
|
69
80
|
"@testing-library/jest-dom": "^6.0.0",
|
|
70
81
|
"@testing-library/react": "^14.0.0",
|
|
71
82
|
"@types/jest": "^29.5.14",
|
|
@@ -81,12 +92,15 @@
|
|
|
81
92
|
"jest-environment-jsdom": "^29.0.0",
|
|
82
93
|
"react": "^18.2.0",
|
|
83
94
|
"react-dom": "^18.2.0",
|
|
84
|
-
"rxjs": "^7.8.1",
|
|
85
95
|
"ts-jest": "^29.2.5",
|
|
86
96
|
"ts-loader": "^9.5.1",
|
|
87
97
|
"typescript": "^5.9.2",
|
|
88
98
|
"vue": "^3.3.0",
|
|
89
99
|
"webpack": "^5.89.0",
|
|
90
100
|
"webpack-cli": "^5.1.4"
|
|
101
|
+
},
|
|
102
|
+
"dependencies": {
|
|
103
|
+
"-": "^0.0.1",
|
|
104
|
+
"baseline-browser-mapping": "^2.9.7"
|
|
91
105
|
}
|
|
92
106
|
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.ClientService = void 0;
|
|
13
|
-
const core_1 = require("@angular/core");
|
|
14
|
-
const client_1 = require("../../core/client");
|
|
15
|
-
const rxjs_1 = require("rxjs");
|
|
16
|
-
let ClientService = class ClientService {
|
|
17
|
-
constructor(config) {
|
|
18
|
-
this.client = new client_1.SDKClient(config);
|
|
19
|
-
}
|
|
20
|
-
query(path) {
|
|
21
|
-
return (0, rxjs_1.from)(this.client.get(path));
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
exports.ClientService = ClientService;
|
|
25
|
-
exports.ClientService = ClientService = __decorate([
|
|
26
|
-
(0, core_1.Injectable)({
|
|
27
|
-
providedIn: 'root',
|
|
28
|
-
}),
|
|
29
|
-
__metadata("design:paramtypes", [Object])
|
|
30
|
-
], ClientService);
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { ClientService } from './client.service';
|
|
2
|
-
export { PhoneAuthService } from './phone-auth.service';
|
|
3
|
-
export { PhoneAuthErrorCode, isPhoneAuthError, isUserError, getUserMessage, isErrorCode, getRetryDelay, isRetryableError, serializeError, createErrorBreadcrumb } from '../../core/phone-auth';
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createErrorBreadcrumb = exports.serializeError = exports.isRetryableError = exports.getRetryDelay = exports.isErrorCode = exports.getUserMessage = exports.isUserError = exports.isPhoneAuthError = exports.PhoneAuthErrorCode = exports.PhoneAuthService = exports.ClientService = void 0;
|
|
4
|
-
var client_service_1 = require("./client.service");
|
|
5
|
-
Object.defineProperty(exports, "ClientService", { enumerable: true, get: function () { return client_service_1.ClientService; } });
|
|
6
|
-
var phone_auth_service_1 = require("./phone-auth.service");
|
|
7
|
-
Object.defineProperty(exports, "PhoneAuthService", { enumerable: true, get: function () { return phone_auth_service_1.PhoneAuthService; } });
|
|
8
|
-
// Export error utilities
|
|
9
|
-
var phone_auth_1 = require("../../core/phone-auth");
|
|
10
|
-
Object.defineProperty(exports, "PhoneAuthErrorCode", { enumerable: true, get: function () { return phone_auth_1.PhoneAuthErrorCode; } });
|
|
11
|
-
Object.defineProperty(exports, "isPhoneAuthError", { enumerable: true, get: function () { return phone_auth_1.isPhoneAuthError; } });
|
|
12
|
-
Object.defineProperty(exports, "isUserError", { enumerable: true, get: function () { return phone_auth_1.isUserError; } });
|
|
13
|
-
Object.defineProperty(exports, "getUserMessage", { enumerable: true, get: function () { return phone_auth_1.getUserMessage; } });
|
|
14
|
-
Object.defineProperty(exports, "isErrorCode", { enumerable: true, get: function () { return phone_auth_1.isErrorCode; } });
|
|
15
|
-
Object.defineProperty(exports, "getRetryDelay", { enumerable: true, get: function () { return phone_auth_1.getRetryDelay; } });
|
|
16
|
-
Object.defineProperty(exports, "isRetryableError", { enumerable: true, get: function () { return phone_auth_1.isRetryableError; } });
|
|
17
|
-
Object.defineProperty(exports, "serializeError", { enumerable: true, get: function () { return phone_auth_1.serializeError; } });
|
|
18
|
-
Object.defineProperty(exports, "createErrorBreadcrumb", { enumerable: true, get: function () { return phone_auth_1.createErrorBreadcrumb; } });
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { AuthConfig, PhoneAuthResult, AuthError, AuthStep, PhoneAuthOptions } from '../../core/phone-auth';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
export declare class PhoneAuthService {
|
|
4
|
-
private client;
|
|
5
|
-
private isLoadingSubject;
|
|
6
|
-
private errorSubject;
|
|
7
|
-
private resultSubject;
|
|
8
|
-
private currentStepSubject;
|
|
9
|
-
isLoading$: Observable<boolean>;
|
|
10
|
-
error$: Observable<AuthError | null>;
|
|
11
|
-
result$: Observable<PhoneAuthResult | null>;
|
|
12
|
-
currentStep$: Observable<AuthStep>;
|
|
13
|
-
constructor();
|
|
14
|
-
/**
|
|
15
|
-
* Configure the phone auth client
|
|
16
|
-
*/
|
|
17
|
-
configure(config: AuthConfig): void;
|
|
18
|
-
/**
|
|
19
|
-
* Check if browser supports secure phone authentication
|
|
20
|
-
*/
|
|
21
|
-
isSupported(): boolean;
|
|
22
|
-
/**
|
|
23
|
-
* Verify phone number
|
|
24
|
-
*/
|
|
25
|
-
verify(options: PhoneAuthOptions): Promise<PhoneAuthResult>;
|
|
26
|
-
/**
|
|
27
|
-
* Get phone number
|
|
28
|
-
*/
|
|
29
|
-
getPhoneNumber(options?: Omit<PhoneAuthOptions, 'use_case' | 'phone_number'>): Promise<PhoneAuthResult>;
|
|
30
|
-
/**
|
|
31
|
-
* Verify specific phone number
|
|
32
|
-
*/
|
|
33
|
-
verifyPhoneNumber(phoneNumber: string, options?: Omit<PhoneAuthOptions, 'use_case' | 'phone_number'>): Promise<PhoneAuthResult>;
|
|
34
|
-
/**
|
|
35
|
-
* Reset state
|
|
36
|
-
*/
|
|
37
|
-
reset(): void;
|
|
38
|
-
}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.PhoneAuthService = void 0;
|
|
22
|
-
const core_1 = require("@angular/core");
|
|
23
|
-
const phone_auth_1 = require("../../core/phone-auth");
|
|
24
|
-
const rxjs_1 = require("rxjs");
|
|
25
|
-
let PhoneAuthService = class PhoneAuthService {
|
|
26
|
-
constructor() {
|
|
27
|
-
// State subjects
|
|
28
|
-
this.isLoadingSubject = new rxjs_1.BehaviorSubject(false);
|
|
29
|
-
this.errorSubject = new rxjs_1.BehaviorSubject(null);
|
|
30
|
-
this.resultSubject = new rxjs_1.BehaviorSubject(null);
|
|
31
|
-
this.currentStepSubject = new rxjs_1.BehaviorSubject('idle');
|
|
32
|
-
// Public observables
|
|
33
|
-
this.isLoading$ = this.isLoadingSubject.asObservable();
|
|
34
|
-
this.error$ = this.errorSubject.asObservable();
|
|
35
|
-
this.result$ = this.resultSubject.asObservable();
|
|
36
|
-
this.currentStep$ = this.currentStepSubject.asObservable();
|
|
37
|
-
this.client = new phone_auth_1.PhoneAuthClient();
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Configure the phone auth client
|
|
41
|
-
*/
|
|
42
|
-
configure(config) {
|
|
43
|
-
this.client = new phone_auth_1.PhoneAuthClient(config);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Check if browser supports secure phone authentication
|
|
47
|
-
*/
|
|
48
|
-
isSupported() {
|
|
49
|
-
return this.client.isSupported();
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Verify phone number
|
|
53
|
-
*/
|
|
54
|
-
verify(options) {
|
|
55
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
-
this.isLoadingSubject.next(true);
|
|
57
|
-
this.errorSubject.next(null);
|
|
58
|
-
this.resultSubject.next(null);
|
|
59
|
-
this.currentStepSubject.next('requesting');
|
|
60
|
-
try {
|
|
61
|
-
// Step 1: Prepare request
|
|
62
|
-
const preparedRequest = yield this.client.preparePhoneRequest(options);
|
|
63
|
-
// Step 2: Show authenticating state
|
|
64
|
-
this.currentStepSubject.next('authenticating');
|
|
65
|
-
const credentialResponse = yield this.client.invokeSecurePrompt(preparedRequest);
|
|
66
|
-
// Step 3: Process response through appropriate endpoint
|
|
67
|
-
this.currentStepSubject.next('processing');
|
|
68
|
-
// Cast to credential type - adapters never use headless mode
|
|
69
|
-
const credential = credentialResponse;
|
|
70
|
-
const processedResult = options.use_case === 'GetPhoneNumber'
|
|
71
|
-
? yield this.client.getPhoneNumber(credential, preparedRequest.session)
|
|
72
|
-
: yield this.client.verifyPhoneNumber(credential, preparedRequest.session);
|
|
73
|
-
// Create final result
|
|
74
|
-
const isVerifyResponse = 'verified' in processedResult;
|
|
75
|
-
const result = processedResult;
|
|
76
|
-
this.resultSubject.next(result);
|
|
77
|
-
this.currentStepSubject.next('complete');
|
|
78
|
-
return result;
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
// Enhance error with context
|
|
82
|
-
const authError = error;
|
|
83
|
-
const enhancedError = Object.assign(Object.assign({}, authError), { context: authError.context || {
|
|
84
|
-
useCase: options.use_case,
|
|
85
|
-
timestamp: new Date().toISOString(),
|
|
86
|
-
userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : undefined,
|
|
87
|
-
url: typeof window !== 'undefined' ? window.location.href : undefined
|
|
88
|
-
} });
|
|
89
|
-
this.errorSubject.next(enhancedError);
|
|
90
|
-
this.currentStepSubject.next('idle');
|
|
91
|
-
throw enhancedError;
|
|
92
|
-
}
|
|
93
|
-
finally {
|
|
94
|
-
this.isLoadingSubject.next(false);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Get phone number
|
|
100
|
-
*/
|
|
101
|
-
getPhoneNumber(options) {
|
|
102
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
103
|
-
return this.verify(Object.assign({ use_case: 'GetPhoneNumber' }, options));
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Verify specific phone number
|
|
108
|
-
*/
|
|
109
|
-
verifyPhoneNumber(phoneNumber, options) {
|
|
110
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
-
return this.verify(Object.assign({ use_case: 'VerifyPhoneNumber', phone_number: phoneNumber }, options));
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Reset state
|
|
116
|
-
*/
|
|
117
|
-
reset() {
|
|
118
|
-
this.isLoadingSubject.next(false);
|
|
119
|
-
this.errorSubject.next(null);
|
|
120
|
-
this.resultSubject.next(null);
|
|
121
|
-
this.currentStepSubject.next('idle');
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
exports.PhoneAuthService = PhoneAuthService;
|
|
125
|
-
exports.PhoneAuthService = PhoneAuthService = __decorate([
|
|
126
|
-
(0, core_1.Injectable)({
|
|
127
|
-
providedIn: 'root'
|
|
128
|
-
}),
|
|
129
|
-
__metadata("design:paramtypes", [])
|
|
130
|
-
], PhoneAuthService);
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { usePhoneAuth } from './usePhoneAuth';
|
|
2
|
-
export { useClient } from './useClient';
|
|
3
|
-
export type { UsePhoneAuthOptions } from './usePhoneAuth';
|
|
4
|
-
export type { ClientConfig, ClientResponse, RequestOptions } from '../../core/types';
|
|
5
|
-
export type { AuthConfig as PhoneAuthConfig, PhoneAuthOptions, PhoneAuthResult, AuthError, AuthStep } from '../../core/phone-auth';
|
|
6
|
-
export { PhoneAuthErrorCode, isPhoneAuthError, isUserError, getUserMessage, isErrorCode, getRetryDelay, isRetryableError, serializeError, createErrorBreadcrumb } from '../../core/phone-auth';
|
|
7
|
-
export type { PhoneAuthCallbacks, PLMN, SessionInfo, PrepareRequest, PrepareResponse, GetPhoneNumberRequest, GetPhoneNumberResponse, VerifyPhoneNumberRequest, VerifyPhoneNumberResponse, SecureCredentialRequest, SecureCredentialResponse, DigitalCredential, TS43Data, LinkData, ClientInfo, BrowserErrorType, BrowserErrorCodeType, BrowserNameType } from '../../core/phone-auth/types';
|
|
8
|
-
export { USE_CASE as UseCase, AUTHENTICATION_STRATEGY as AuthenticationStrategy, BrowserError, BrowserErrorCode, BrowserName } from '../../core/phone-auth/types';
|
|
9
|
-
export { PhoneAuthClient } from '../../core/phone-auth';
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PhoneAuthClient = exports.BrowserName = exports.BrowserErrorCode = exports.BrowserError = exports.AuthenticationStrategy = exports.UseCase = exports.createErrorBreadcrumb = exports.serializeError = exports.isRetryableError = exports.getRetryDelay = exports.isErrorCode = exports.getUserMessage = exports.isUserError = exports.isPhoneAuthError = exports.PhoneAuthErrorCode = exports.useClient = exports.usePhoneAuth = void 0;
|
|
4
|
-
var usePhoneAuth_1 = require("./usePhoneAuth");
|
|
5
|
-
Object.defineProperty(exports, "usePhoneAuth", { enumerable: true, get: function () { return usePhoneAuth_1.usePhoneAuth; } });
|
|
6
|
-
var useClient_1 = require("./useClient");
|
|
7
|
-
Object.defineProperty(exports, "useClient", { enumerable: true, get: function () { return useClient_1.useClient; } });
|
|
8
|
-
// Export error utilities
|
|
9
|
-
var phone_auth_1 = require("../../core/phone-auth");
|
|
10
|
-
Object.defineProperty(exports, "PhoneAuthErrorCode", { enumerable: true, get: function () { return phone_auth_1.PhoneAuthErrorCode; } });
|
|
11
|
-
Object.defineProperty(exports, "isPhoneAuthError", { enumerable: true, get: function () { return phone_auth_1.isPhoneAuthError; } });
|
|
12
|
-
Object.defineProperty(exports, "isUserError", { enumerable: true, get: function () { return phone_auth_1.isUserError; } });
|
|
13
|
-
Object.defineProperty(exports, "getUserMessage", { enumerable: true, get: function () { return phone_auth_1.getUserMessage; } });
|
|
14
|
-
Object.defineProperty(exports, "isErrorCode", { enumerable: true, get: function () { return phone_auth_1.isErrorCode; } });
|
|
15
|
-
Object.defineProperty(exports, "getRetryDelay", { enumerable: true, get: function () { return phone_auth_1.getRetryDelay; } });
|
|
16
|
-
Object.defineProperty(exports, "isRetryableError", { enumerable: true, get: function () { return phone_auth_1.isRetryableError; } });
|
|
17
|
-
Object.defineProperty(exports, "serializeError", { enumerable: true, get: function () { return phone_auth_1.serializeError; } });
|
|
18
|
-
Object.defineProperty(exports, "createErrorBreadcrumb", { enumerable: true, get: function () { return phone_auth_1.createErrorBreadcrumb; } });
|
|
19
|
-
// Export constants for use case and strategy
|
|
20
|
-
var types_1 = require("../../core/phone-auth/types");
|
|
21
|
-
Object.defineProperty(exports, "UseCase", { enumerable: true, get: function () { return types_1.USE_CASE; } });
|
|
22
|
-
Object.defineProperty(exports, "AuthenticationStrategy", { enumerable: true, get: function () { return types_1.AUTHENTICATION_STRATEGY; } });
|
|
23
|
-
Object.defineProperty(exports, "BrowserError", { enumerable: true, get: function () { return types_1.BrowserError; } });
|
|
24
|
-
Object.defineProperty(exports, "BrowserErrorCode", { enumerable: true, get: function () { return types_1.BrowserErrorCode; } });
|
|
25
|
-
Object.defineProperty(exports, "BrowserName", { enumerable: true, get: function () { return types_1.BrowserName; } });
|
|
26
|
-
// Export the PhoneAuthClient class for direct use
|
|
27
|
-
var phone_auth_2 = require("../../core/phone-auth");
|
|
28
|
-
Object.defineProperty(exports, "PhoneAuthClient", { enumerable: true, get: function () { return phone_auth_2.PhoneAuthClient; } });
|