@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.
Files changed (203) hide show
  1. package/README.md +337 -526
  2. package/dist/browser/web-client-sdk.min.js +1 -1
  3. package/dist/cjs/adapters/index.js +15 -0
  4. package/dist/cjs/adapters/react.js +192 -0
  5. package/dist/cjs/adapters/vanilla.js +38 -0
  6. package/dist/cjs/adapters/vue.js +187 -0
  7. package/dist/cjs/browser.js +58 -0
  8. package/dist/cjs/client/http.js +159 -0
  9. package/dist/cjs/client/index.js +19 -0
  10. package/dist/cjs/client/logger.js +135 -0
  11. package/dist/cjs/client/phone-auth-client.js +439 -0
  12. package/dist/cjs/client/strategies/polling.js +177 -0
  13. package/dist/cjs/core/errors.js +204 -0
  14. package/dist/cjs/core/index.js +83 -0
  15. package/dist/cjs/core/type-guards.js +196 -0
  16. package/dist/cjs/core/types.js +25 -0
  17. package/dist/{core/phone-auth/validation-utils.js → cjs/core/validators.js} +70 -23
  18. package/dist/cjs/index.js +81 -0
  19. package/dist/cjs/ui/index.js +11 -0
  20. package/dist/{core/phone-auth → cjs}/ui/mobile-debug-console.js +149 -78
  21. package/dist/cjs/ui/modal.js +1122 -0
  22. package/dist/esm/adapters/index.js +11 -0
  23. package/dist/esm/adapters/react.js +182 -0
  24. package/dist/esm/adapters/vanilla.js +29 -0
  25. package/dist/esm/adapters/vue.js +177 -0
  26. package/dist/esm/browser.js +30 -11
  27. package/dist/esm/client/http.js +156 -0
  28. package/dist/esm/client/index.js +11 -0
  29. package/dist/esm/client/logger.js +131 -0
  30. package/dist/esm/client/phone-auth-client.js +435 -0
  31. package/dist/esm/client/strategies/polling.js +174 -0
  32. package/dist/esm/core/errors.js +193 -0
  33. package/dist/esm/core/index.js +60 -0
  34. package/dist/esm/core/type-guards.js +181 -0
  35. package/dist/esm/core/types.js +22 -1
  36. package/dist/esm/core/{phone-auth/validation-utils.js → validators.js} +66 -21
  37. package/dist/esm/index.js +45 -17
  38. package/dist/esm/ui/index.js +5 -0
  39. package/dist/esm/{core/phone-auth/ui → ui}/mobile-debug-console.js +149 -78
  40. package/dist/esm/ui/modal.js +1117 -0
  41. package/dist/types/adapters/index.d.ts +10 -0
  42. package/dist/types/adapters/index.d.ts.map +1 -0
  43. package/dist/types/adapters/react.d.ts +70 -0
  44. package/dist/types/adapters/react.d.ts.map +1 -0
  45. package/dist/types/adapters/vanilla.d.ts +29 -0
  46. package/dist/types/adapters/vanilla.d.ts.map +1 -0
  47. package/dist/types/adapters/vue.d.ts +71 -0
  48. package/dist/types/adapters/vue.d.ts.map +1 -0
  49. package/dist/types/browser.d.ts +27 -0
  50. package/dist/types/browser.d.ts.map +1 -0
  51. package/dist/types/client/http.d.ts +41 -0
  52. package/dist/types/client/http.d.ts.map +1 -0
  53. package/dist/types/client/index.d.ts +10 -0
  54. package/dist/types/client/index.d.ts.map +1 -0
  55. package/dist/types/client/logger.d.ts +36 -0
  56. package/dist/types/client/logger.d.ts.map +1 -0
  57. package/dist/types/client/phone-auth-client.d.ts +91 -0
  58. package/dist/types/client/phone-auth-client.d.ts.map +1 -0
  59. package/dist/types/client/strategies/polling.d.ts +36 -0
  60. package/dist/types/client/strategies/polling.d.ts.map +1 -0
  61. package/dist/types/core/errors.d.ts +71 -0
  62. package/dist/types/core/errors.d.ts.map +1 -0
  63. package/dist/types/core/index.d.ts +38 -0
  64. package/dist/types/core/index.d.ts.map +1 -0
  65. package/dist/types/core/type-guards.d.ts +118 -0
  66. package/dist/types/core/type-guards.d.ts.map +1 -0
  67. package/dist/types/core/types.d.ts +534 -0
  68. package/dist/types/core/types.d.ts.map +1 -0
  69. package/dist/types/core/validators.d.ts +63 -0
  70. package/dist/types/core/validators.d.ts.map +1 -0
  71. package/dist/types/index.d.ts +40 -0
  72. package/dist/types/index.d.ts.map +1 -0
  73. package/dist/types/ui/index.d.ts +6 -0
  74. package/dist/types/ui/index.d.ts.map +1 -0
  75. package/dist/{esm/core/phone-auth → types}/ui/mobile-debug-console.d.ts +1 -0
  76. package/dist/types/ui/mobile-debug-console.d.ts.map +1 -0
  77. package/dist/types/ui/modal.d.ts +87 -0
  78. package/dist/types/ui/modal.d.ts.map +1 -0
  79. package/package.json +48 -34
  80. package/dist/adapters/angular/client.service.d.ts +0 -7
  81. package/dist/adapters/angular/client.service.js +0 -30
  82. package/dist/adapters/angular/index.d.ts +0 -3
  83. package/dist/adapters/angular/index.js +0 -18
  84. package/dist/adapters/angular/phone-auth.service.d.ts +0 -38
  85. package/dist/adapters/angular/phone-auth.service.js +0 -130
  86. package/dist/adapters/react/index.d.ts +0 -9
  87. package/dist/adapters/react/index.js +0 -28
  88. package/dist/adapters/react/useClient.d.ts +0 -26
  89. package/dist/adapters/react/useClient.js +0 -121
  90. package/dist/adapters/react/usePhoneAuth.d.ts +0 -23
  91. package/dist/adapters/react/usePhoneAuth.js +0 -95
  92. package/dist/adapters/vanilla/client.d.ts +0 -8
  93. package/dist/adapters/vanilla/client.js +0 -33
  94. package/dist/adapters/vanilla/index.d.ts +0 -3
  95. package/dist/adapters/vanilla/index.js +0 -18
  96. package/dist/adapters/vanilla/phone-auth.d.ts +0 -46
  97. package/dist/adapters/vanilla/phone-auth.js +0 -138
  98. package/dist/adapters/vue/index.d.ts +0 -10
  99. package/dist/adapters/vue/index.js +0 -36
  100. package/dist/adapters/vue/useClient.d.ts +0 -115
  101. package/dist/adapters/vue/useClient.js +0 -131
  102. package/dist/adapters/vue/usePhoneAuth.d.ts +0 -94
  103. package/dist/adapters/vue/usePhoneAuth.js +0 -103
  104. package/dist/browser.d.ts +0 -7
  105. package/dist/browser.js +0 -31
  106. package/dist/core/client.d.ts +0 -22
  107. package/dist/core/client.js +0 -77
  108. package/dist/core/logger.d.ts +0 -130
  109. package/dist/core/logger.js +0 -370
  110. package/dist/core/phone-auth/api-types.d.ts +0 -593
  111. package/dist/core/phone-auth/api-types.js +0 -215
  112. package/dist/core/phone-auth/client.d.ts +0 -189
  113. package/dist/core/phone-auth/client.js +0 -1441
  114. package/dist/core/phone-auth/error-utils.d.ts +0 -110
  115. package/dist/core/phone-auth/error-utils.js +0 -350
  116. package/dist/core/phone-auth/index.d.ts +0 -7
  117. package/dist/core/phone-auth/index.js +0 -50
  118. package/dist/core/phone-auth/status-types.d.ts +0 -107
  119. package/dist/core/phone-auth/status-types.js +0 -31
  120. package/dist/core/phone-auth/strategies/desktop.d.ts +0 -122
  121. package/dist/core/phone-auth/strategies/desktop.js +0 -596
  122. package/dist/core/phone-auth/strategies/index.d.ts +0 -11
  123. package/dist/core/phone-auth/strategies/index.js +0 -15
  124. package/dist/core/phone-auth/strategies/link.d.ts +0 -89
  125. package/dist/core/phone-auth/strategies/link.js +0 -384
  126. package/dist/core/phone-auth/strategies/ts43.d.ts +0 -32
  127. package/dist/core/phone-auth/strategies/ts43.js +0 -161
  128. package/dist/core/phone-auth/strategies/types.d.ts +0 -18
  129. package/dist/core/phone-auth/strategies/types.js +0 -6
  130. package/dist/core/phone-auth/type-guards.d.ts +0 -143
  131. package/dist/core/phone-auth/type-guards.js +0 -198
  132. package/dist/core/phone-auth/types.d.ts +0 -237
  133. package/dist/core/phone-auth/types.js +0 -93
  134. package/dist/core/phone-auth/ui/mobile-debug-console.d.ts +0 -25
  135. package/dist/core/phone-auth/ui/modal.d.ts +0 -88
  136. package/dist/core/phone-auth/ui/modal.js +0 -598
  137. package/dist/core/phone-auth/validation-utils.d.ts +0 -44
  138. package/dist/core/types.d.ts +0 -62
  139. package/dist/core/types.js +0 -2
  140. package/dist/core/version.d.ts +0 -1
  141. package/dist/core/version.js +0 -5
  142. package/dist/esm/adapters/angular/client.service.d.ts +0 -7
  143. package/dist/esm/adapters/angular/client.service.js +0 -27
  144. package/dist/esm/adapters/angular/index.d.ts +0 -3
  145. package/dist/esm/adapters/angular/index.js +0 -4
  146. package/dist/esm/adapters/angular/phone-auth.service.d.ts +0 -38
  147. package/dist/esm/adapters/angular/phone-auth.service.js +0 -127
  148. package/dist/esm/adapters/react/index.d.ts +0 -9
  149. package/dist/esm/adapters/react/index.js +0 -8
  150. package/dist/esm/adapters/react/useClient.d.ts +0 -26
  151. package/dist/esm/adapters/react/useClient.js +0 -116
  152. package/dist/esm/adapters/react/usePhoneAuth.d.ts +0 -23
  153. package/dist/esm/adapters/react/usePhoneAuth.js +0 -92
  154. package/dist/esm/adapters/vanilla/client.d.ts +0 -8
  155. package/dist/esm/adapters/vanilla/client.js +0 -29
  156. package/dist/esm/adapters/vanilla/index.d.ts +0 -3
  157. package/dist/esm/adapters/vanilla/index.js +0 -4
  158. package/dist/esm/adapters/vanilla/phone-auth.d.ts +0 -46
  159. package/dist/esm/adapters/vanilla/phone-auth.js +0 -134
  160. package/dist/esm/adapters/vue/index.d.ts +0 -10
  161. package/dist/esm/adapters/vue/index.js +0 -11
  162. package/dist/esm/adapters/vue/useClient.d.ts +0 -115
  163. package/dist/esm/adapters/vue/useClient.js +0 -127
  164. package/dist/esm/adapters/vue/usePhoneAuth.d.ts +0 -94
  165. package/dist/esm/adapters/vue/usePhoneAuth.js +0 -100
  166. package/dist/esm/browser.d.ts +0 -7
  167. package/dist/esm/core/client.d.ts +0 -22
  168. package/dist/esm/core/client.js +0 -70
  169. package/dist/esm/core/logger.d.ts +0 -130
  170. package/dist/esm/core/logger.js +0 -359
  171. package/dist/esm/core/phone-auth/api-types.d.ts +0 -593
  172. package/dist/esm/core/phone-auth/api-types.js +0 -203
  173. package/dist/esm/core/phone-auth/client.d.ts +0 -189
  174. package/dist/esm/core/phone-auth/client.js +0 -1404
  175. package/dist/esm/core/phone-auth/error-utils.d.ts +0 -110
  176. package/dist/esm/core/phone-auth/error-utils.js +0 -338
  177. package/dist/esm/core/phone-auth/index.d.ts +0 -7
  178. package/dist/esm/core/phone-auth/index.js +0 -8
  179. package/dist/esm/core/phone-auth/status-types.d.ts +0 -107
  180. package/dist/esm/core/phone-auth/status-types.js +0 -26
  181. package/dist/esm/core/phone-auth/strategies/desktop.d.ts +0 -122
  182. package/dist/esm/core/phone-auth/strategies/desktop.js +0 -590
  183. package/dist/esm/core/phone-auth/strategies/index.d.ts +0 -11
  184. package/dist/esm/core/phone-auth/strategies/index.js +0 -7
  185. package/dist/esm/core/phone-auth/strategies/link.d.ts +0 -89
  186. package/dist/esm/core/phone-auth/strategies/link.js +0 -380
  187. package/dist/esm/core/phone-auth/strategies/ts43.d.ts +0 -32
  188. package/dist/esm/core/phone-auth/strategies/ts43.js +0 -157
  189. package/dist/esm/core/phone-auth/strategies/types.d.ts +0 -18
  190. package/dist/esm/core/phone-auth/strategies/types.js +0 -5
  191. package/dist/esm/core/phone-auth/type-guards.d.ts +0 -143
  192. package/dist/esm/core/phone-auth/type-guards.js +0 -185
  193. package/dist/esm/core/phone-auth/types.d.ts +0 -237
  194. package/dist/esm/core/phone-auth/types.js +0 -76
  195. package/dist/esm/core/phone-auth/ui/modal.d.ts +0 -88
  196. package/dist/esm/core/phone-auth/ui/modal.js +0 -594
  197. package/dist/esm/core/phone-auth/validation-utils.d.ts +0 -44
  198. package/dist/esm/core/types.d.ts +0 -62
  199. package/dist/esm/core/version.d.ts +0 -1
  200. package/dist/esm/core/version.js +0 -2
  201. package/dist/esm/index.d.ts +0 -12
  202. package/dist/index.d.ts +0 -12
  203. package/dist/index.js +0 -55
@@ -1,110 +0,0 @@
1
- export declare const PhoneAuthErrorCode: {
2
- readonly BAD_REQUEST: "BAD_REQUEST";
3
- readonly VALIDATION_ERROR: "VALIDATION_ERROR";
4
- readonly INVALID_PARAMETERS: "INVALID_PARAMETERS";
5
- readonly MISSING_PARAMETERS: "MISSING_PARAMETERS";
6
- readonly INVALID_PHONE_NUMBER: "INVALID_PHONE_NUMBER";
7
- readonly INVALID_MCC_MNC: "INVALID_MCC_MNC";
8
- readonly UNAUTHORIZED: "UNAUTHORIZED";
9
- readonly INVALID_CREDENTIALS: "INVALID_CREDENTIALS";
10
- readonly EXPIRED_TOKEN: "EXPIRED_TOKEN";
11
- readonly TOKEN_ACQUISITION_FAILED: "TOKEN_ACQUISITION_FAILED";
12
- readonly INVALID_API_KEY: "INVALID_API_KEY";
13
- readonly MISSING_AUTH_HEADER: "MISSING_AUTH_HEADER";
14
- readonly FORBIDDEN: "FORBIDDEN";
15
- readonly INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS";
16
- readonly ACCESS_DENIED: "ACCESS_DENIED";
17
- readonly NOT_FOUND: "NOT_FOUND";
18
- readonly RESOURCE_NOT_FOUND: "RESOURCE_NOT_FOUND";
19
- readonly SESSION_NOT_FOUND: "SESSION_NOT_FOUND";
20
- readonly CARRIER_NOT_FOUND: "CARRIER_NOT_FOUND";
21
- readonly ENDPOINT_NOT_FOUND: "ENDPOINT_NOT_FOUND";
22
- readonly CONFLICT: "CONFLICT";
23
- readonly RESOURCE_ALREADY_EXISTS: "RESOURCE_ALREADY_EXISTS";
24
- readonly DUPLICATE_SESSION: "DUPLICATE_SESSION";
25
- readonly CONCURRENT_MODIFICATION: "CONCURRENT_MODIFICATION";
26
- readonly UNPROCESSABLE_ENTITY: "UNPROCESSABLE_ENTITY";
27
- readonly UNSUPPORTED_VERIFICATION: "UNSUPPORTED_VERIFICATION";
28
- readonly INVALID_VERIFICATION: "INVALID_VERIFICATION";
29
- readonly VERIFICATION_FAILED: "VERIFICATION_FAILED";
30
- readonly OTP_EXPIRED: "OTP_EXPIRED";
31
- readonly OTP_INVALID: "OTP_INVALID";
32
- readonly RCS_UNAVAILABLE: "RCS_UNAVAILABLE";
33
- readonly CARRIER_IDENTIFICATION_FAILED: "CARRIER_IDENTIFICATION_FAILED";
34
- readonly CARRIER_NOT_ELIGIBLE: "CARRIER_NOT_ELIGIBLE";
35
- readonly UNSUPPORTED_CARRIER: "UNSUPPORTED_CARRIER";
36
- readonly UNSUPPORTED_PLATFORM: "UNSUPPORTED_PLATFORM";
37
- readonly UNSUPPORTED_STRATEGY: "UNSUPPORTED_STRATEGY";
38
- readonly INVALID_SESSION_STATE: "INVALID_SESSION_STATE";
39
- readonly PHONE_NUMBER_MISMATCH: "PHONE_NUMBER_MISMATCH";
40
- readonly INVALID_CREDENTIAL_FORMAT: "INVALID_CREDENTIAL_FORMAT";
41
- readonly RATE_LIMIT_EXCEEDED: "RATE_LIMIT_EXCEEDED";
42
- readonly TOO_MANY_REQUESTS: "TOO_MANY_REQUESTS";
43
- readonly QUOTA_EXCEEDED: "QUOTA_EXCEEDED";
44
- readonly INTERNAL_SERVER_ERROR: "INTERNAL_SERVER_ERROR";
45
- readonly CIRCUIT_BREAKER_CONFIGURATION_ERROR: "CIRCUIT_BREAKER_CONFIGURATION_ERROR";
46
- readonly DATABASE_ERROR: "DATABASE_ERROR";
47
- readonly CACHE_ERROR: "CACHE_ERROR";
48
- readonly SERIALIZATION_ERROR: "SERIALIZATION_ERROR";
49
- readonly CRYPTO_ERROR: "CRYPTO_ERROR";
50
- readonly BAD_GATEWAY: "BAD_GATEWAY";
51
- readonly UPSTREAM_ERROR: "UPSTREAM_ERROR";
52
- readonly INVALID_RESPONSE: "INVALID_RESPONSE";
53
- readonly SERVICE_UNAVAILABLE: "SERVICE_UNAVAILABLE";
54
- readonly DOWNSTREAM_SERVICE_ERROR: "DOWNSTREAM_SERVICE_ERROR";
55
- readonly PROVIDER_ERROR: "PROVIDER_ERROR";
56
- readonly CIRCUIT_BREAKER_OPEN: "CIRCUIT_BREAKER_OPEN";
57
- readonly MAINTENANCE_MODE: "MAINTENANCE_MODE";
58
- readonly GATEWAY_TIMEOUT: "GATEWAY_TIMEOUT";
59
- readonly REQUEST_TIMEOUT: "REQUEST_TIMEOUT";
60
- readonly UPSTREAM_TIMEOUT: "UPSTREAM_TIMEOUT";
61
- readonly DEADLINE_EXCEEDED: "DEADLINE_EXCEEDED";
62
- readonly BROWSER_NOT_SUPPORTED: "BROWSER_NOT_SUPPORTED";
63
- readonly USER_DENIED: "USER_DENIED";
64
- readonly NETWORK_ERROR: "NETWORK_ERROR";
65
- };
66
- export type PhoneAuthErrorCode = typeof PhoneAuthErrorCode[keyof typeof PhoneAuthErrorCode];
67
- import type { AuthError } from './types';
68
- /**
69
- * Type guard to check if an error is a PhoneAuthError
70
- */
71
- export declare function isPhoneAuthError(error: any): error is AuthError;
72
- /**
73
- * Check if error should be shown to user
74
- */
75
- export declare function isUserError(error: AuthError): boolean;
76
- /**
77
- * Get user-friendly error message
78
- */
79
- export declare function getUserMessage(error: AuthError): string;
80
- /**
81
- * Check if error matches a specific code
82
- */
83
- export declare function isErrorCode(error: AuthError, code: PhoneAuthErrorCode): boolean;
84
- /**
85
- * Get retry delay for rate-limited requests
86
- */
87
- export declare function getRetryDelay(error: AuthError): number | null;
88
- /**
89
- * Check if error is retryable
90
- */
91
- export declare function isRetryableError(error: AuthError): boolean;
92
- /**
93
- * Parse error response from backend API
94
- */
95
- export declare function parseBackendError(response: any): AuthError;
96
- /**
97
- * Serialize error for logging/observability tools like Sentry
98
- * This ensures all error details are captured in a format that can be sent over the network
99
- */
100
- export declare function serializeError(error: AuthError): Record<string, any>;
101
- /**
102
- * Create a breadcrumb trail for error tracking
103
- * Useful for understanding the sequence of events leading to an error
104
- */
105
- export declare function createErrorBreadcrumb(error: AuthError): {
106
- category: string;
107
- message: string;
108
- level: 'error' | 'warning' | 'info';
109
- data: Record<string, any>;
110
- };
@@ -1,350 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PhoneAuthErrorCode = void 0;
4
- exports.isPhoneAuthError = isPhoneAuthError;
5
- exports.isUserError = isUserError;
6
- exports.getUserMessage = getUserMessage;
7
- exports.isErrorCode = isErrorCode;
8
- exports.getRetryDelay = getRetryDelay;
9
- exports.isRetryableError = isRetryableError;
10
- exports.parseBackendError = parseBackendError;
11
- exports.serializeError = serializeError;
12
- exports.createErrorBreadcrumb = createErrorBreadcrumb;
13
- const version_1 = require("../version");
14
- // Error constants matching the backend for consistency
15
- exports.PhoneAuthErrorCode = {
16
- // 400 Bad Request errors
17
- BAD_REQUEST: 'BAD_REQUEST',
18
- VALIDATION_ERROR: 'VALIDATION_ERROR',
19
- INVALID_PARAMETERS: 'INVALID_PARAMETERS',
20
- MISSING_PARAMETERS: 'MISSING_PARAMETERS',
21
- INVALID_PHONE_NUMBER: 'INVALID_PHONE_NUMBER',
22
- INVALID_MCC_MNC: 'INVALID_MCC_MNC',
23
- // 401 Unauthorized errors
24
- UNAUTHORIZED: 'UNAUTHORIZED',
25
- INVALID_CREDENTIALS: 'INVALID_CREDENTIALS',
26
- EXPIRED_TOKEN: 'EXPIRED_TOKEN',
27
- TOKEN_ACQUISITION_FAILED: 'TOKEN_ACQUISITION_FAILED',
28
- INVALID_API_KEY: 'INVALID_API_KEY',
29
- MISSING_AUTH_HEADER: 'MISSING_AUTH_HEADER',
30
- // 403 Forbidden errors
31
- FORBIDDEN: 'FORBIDDEN',
32
- INSUFFICIENT_PERMISSIONS: 'INSUFFICIENT_PERMISSIONS',
33
- ACCESS_DENIED: 'ACCESS_DENIED',
34
- // 404 Not Found errors
35
- NOT_FOUND: 'NOT_FOUND',
36
- RESOURCE_NOT_FOUND: 'RESOURCE_NOT_FOUND',
37
- SESSION_NOT_FOUND: 'SESSION_NOT_FOUND',
38
- CARRIER_NOT_FOUND: 'CARRIER_NOT_FOUND',
39
- ENDPOINT_NOT_FOUND: 'ENDPOINT_NOT_FOUND',
40
- // 409 Conflict errors
41
- CONFLICT: 'CONFLICT',
42
- RESOURCE_ALREADY_EXISTS: 'RESOURCE_ALREADY_EXISTS',
43
- DUPLICATE_SESSION: 'DUPLICATE_SESSION',
44
- CONCURRENT_MODIFICATION: 'CONCURRENT_MODIFICATION',
45
- // 422 Unprocessable Entity errors
46
- UNPROCESSABLE_ENTITY: 'UNPROCESSABLE_ENTITY',
47
- UNSUPPORTED_VERIFICATION: 'UNSUPPORTED_VERIFICATION',
48
- INVALID_VERIFICATION: 'INVALID_VERIFICATION',
49
- VERIFICATION_FAILED: 'VERIFICATION_FAILED',
50
- OTP_EXPIRED: 'OTP_EXPIRED',
51
- OTP_INVALID: 'OTP_INVALID',
52
- RCS_UNAVAILABLE: 'RCS_UNAVAILABLE',
53
- CARRIER_IDENTIFICATION_FAILED: 'CARRIER_IDENTIFICATION_FAILED',
54
- CARRIER_NOT_ELIGIBLE: 'CARRIER_NOT_ELIGIBLE',
55
- UNSUPPORTED_CARRIER: 'UNSUPPORTED_CARRIER',
56
- UNSUPPORTED_PLATFORM: 'UNSUPPORTED_PLATFORM',
57
- UNSUPPORTED_STRATEGY: 'UNSUPPORTED_STRATEGY',
58
- INVALID_SESSION_STATE: 'INVALID_SESSION_STATE',
59
- PHONE_NUMBER_MISMATCH: 'PHONE_NUMBER_MISMATCH',
60
- INVALID_CREDENTIAL_FORMAT: 'INVALID_CREDENTIAL_FORMAT',
61
- // 429 Too Many Requests errors
62
- RATE_LIMIT_EXCEEDED: 'RATE_LIMIT_EXCEEDED',
63
- TOO_MANY_REQUESTS: 'TOO_MANY_REQUESTS',
64
- QUOTA_EXCEEDED: 'QUOTA_EXCEEDED',
65
- // 500 Internal Server errors
66
- INTERNAL_SERVER_ERROR: 'INTERNAL_SERVER_ERROR',
67
- CIRCUIT_BREAKER_CONFIGURATION_ERROR: 'CIRCUIT_BREAKER_CONFIGURATION_ERROR',
68
- DATABASE_ERROR: 'DATABASE_ERROR',
69
- CACHE_ERROR: 'CACHE_ERROR',
70
- SERIALIZATION_ERROR: 'SERIALIZATION_ERROR',
71
- CRYPTO_ERROR: 'CRYPTO_ERROR',
72
- // 502 Bad Gateway errors
73
- BAD_GATEWAY: 'BAD_GATEWAY',
74
- UPSTREAM_ERROR: 'UPSTREAM_ERROR',
75
- INVALID_RESPONSE: 'INVALID_RESPONSE',
76
- // 503 Service Unavailable errors
77
- SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',
78
- DOWNSTREAM_SERVICE_ERROR: 'DOWNSTREAM_SERVICE_ERROR',
79
- PROVIDER_ERROR: 'PROVIDER_ERROR',
80
- CIRCUIT_BREAKER_OPEN: 'CIRCUIT_BREAKER_OPEN',
81
- MAINTENANCE_MODE: 'MAINTENANCE_MODE',
82
- // 504 Gateway Timeout errors
83
- GATEWAY_TIMEOUT: 'GATEWAY_TIMEOUT',
84
- REQUEST_TIMEOUT: 'REQUEST_TIMEOUT',
85
- UPSTREAM_TIMEOUT: 'UPSTREAM_TIMEOUT',
86
- DEADLINE_EXCEEDED: 'DEADLINE_EXCEEDED',
87
- // Browser-specific errors (never thrown by backend)
88
- BROWSER_NOT_SUPPORTED: 'BROWSER_NOT_SUPPORTED',
89
- USER_DENIED: 'USER_DENIED',
90
- NETWORK_ERROR: 'NETWORK_ERROR',
91
- };
92
- // User-facing error messages - NEVER expose carrier names or phone numbers
93
- const USER_ERROR_MESSAGES = {
94
- // Privacy-conscious messages - no carrier/phone info exposed
95
- CARRIER_NOT_ELIGIBLE: 'Your carrier is not eligible for this verification method.',
96
- CARRIER_IDENTIFICATION_FAILED: 'Unable to identify carrier for the provided phone number.',
97
- CARRIER_NOT_FOUND: 'Carrier information not available.',
98
- UNSUPPORTED_CARRIER: 'This carrier is not supported.',
99
- // Rate limiting
100
- RATE_LIMIT_EXCEEDED: 'Too many attempts. Please wait a moment and try again.',
101
- TOO_MANY_REQUESTS: 'Too many requests. Please slow down and try again.',
102
- QUOTA_EXCEEDED: 'Usage limit reached. Please try again later.',
103
- // Session errors
104
- SESSION_NOT_FOUND: 'Your session has expired. Please start over.',
105
- INVALID_SESSION_STATE: 'Invalid session state. Please start over.',
106
- DUPLICATE_SESSION: 'A session already exists. Please complete or cancel it first.',
107
- // Browser/platform errors
108
- BROWSER_NOT_SUPPORTED: 'Digital Credentials API is not available. Please enable the #web-identity-digital-credentials flag in chrome://flags',
109
- UNSUPPORTED_PLATFORM: 'This platform is not supported for authentication.',
110
- UNSUPPORTED_STRATEGY: 'This authentication method is not available.',
111
- USER_DENIED: 'Authentication was cancelled. Please try again when you\'re ready.',
112
- // Service availability
113
- SERVICE_UNAVAILABLE: 'The service is temporarily unavailable. Please try again later.',
114
- CIRCUIT_BREAKER_OPEN: 'Service is experiencing issues. Please try again later.',
115
- MAINTENANCE_MODE: 'Service is under maintenance. Please try again later.',
116
- DOWNSTREAM_SERVICE_ERROR: 'A required service is unavailable. Please try again later.',
117
- // Authentication errors
118
- TOKEN_ACQUISITION_FAILED: 'Failed to acquire authentication token. Please try again.',
119
- EXPIRED_TOKEN: 'Your authentication has expired. Please start over.',
120
- INVALID_CREDENTIALS: 'Invalid credentials provided.',
121
- // Validation errors
122
- INVALID_PHONE_NUMBER: 'Please enter a valid phone number.',
123
- PHONE_NUMBER_MISMATCH: 'Phone number mismatch. Please verify your number.',
124
- INVALID_PARAMETERS: 'Invalid parameters provided.',
125
- MISSING_PARAMETERS: 'Required information is missing.',
126
- VALIDATION_ERROR: 'Validation failed. Please check your input.',
127
- // Network errors
128
- NETWORK_ERROR: 'Network connection failed. Please check your connection and try again.',
129
- GATEWAY_TIMEOUT: 'Request timed out. Please try again.',
130
- REQUEST_TIMEOUT: 'Request timed out. Please try again.',
131
- DEADLINE_EXCEEDED: 'Operation took too long. Please try again.',
132
- // Verification errors
133
- VERIFICATION_FAILED: 'Verification failed. Please try again.',
134
- INVALID_VERIFICATION: 'Invalid verification response.',
135
- INVALID_CREDENTIAL_FORMAT: 'Invalid credential format.',
136
- // Generic fallbacks
137
- BAD_REQUEST: 'Invalid request. Please try again.',
138
- UNAUTHORIZED: 'Authentication required.',
139
- FORBIDDEN: 'Access denied.',
140
- NOT_FOUND: 'Resource not found.',
141
- INTERNAL_SERVER_ERROR: 'An error occurred. Please try again later.',
142
- };
143
- // Errors that should be shown to users vs logged internally
144
- const USER_FACING_ERRORS = new Set([
145
- // Carrier errors (privacy-safe messages)
146
- 'CARRIER_NOT_ELIGIBLE',
147
- 'CARRIER_IDENTIFICATION_FAILED',
148
- 'CARRIER_NOT_FOUND',
149
- 'UNSUPPORTED_CARRIER',
150
- // Rate limiting
151
- 'RATE_LIMIT_EXCEEDED',
152
- 'TOO_MANY_REQUESTS',
153
- 'QUOTA_EXCEEDED',
154
- // Browser/platform
155
- 'BROWSER_NOT_SUPPORTED',
156
- 'UNSUPPORTED_PLATFORM',
157
- 'UNSUPPORTED_STRATEGY',
158
- 'USER_DENIED',
159
- // Session
160
- 'SESSION_NOT_FOUND',
161
- 'INVALID_SESSION_STATE',
162
- 'EXPIRED_TOKEN',
163
- // Service availability
164
- 'SERVICE_UNAVAILABLE',
165
- 'CIRCUIT_BREAKER_OPEN',
166
- 'MAINTENANCE_MODE',
167
- // Network
168
- 'NETWORK_ERROR',
169
- 'GATEWAY_TIMEOUT',
170
- 'REQUEST_TIMEOUT',
171
- // Validation
172
- 'INVALID_PHONE_NUMBER',
173
- 'PHONE_NUMBER_MISMATCH',
174
- 'MISSING_PARAMETERS',
175
- 'VALIDATION_ERROR',
176
- ]);
177
- /**
178
- * Type guard to check if an error is a PhoneAuthError
179
- */
180
- function isPhoneAuthError(error) {
181
- return error &&
182
- typeof error.code === 'string' &&
183
- typeof error.message === 'string';
184
- }
185
- /**
186
- * Check if error should be shown to user
187
- */
188
- function isUserError(error) {
189
- return USER_FACING_ERRORS.has(error.code);
190
- }
191
- /**
192
- * Get user-friendly error message
193
- */
194
- function getUserMessage(error) {
195
- return USER_ERROR_MESSAGES[error.code] || 'An unexpected error occurred. Please try again.';
196
- }
197
- /**
198
- * Check if error matches a specific code
199
- */
200
- function isErrorCode(error, code) {
201
- return error.code === code;
202
- }
203
- /**
204
- * Get retry delay for rate-limited requests
205
- */
206
- function getRetryDelay(error) {
207
- if (error.code === exports.PhoneAuthErrorCode.RATE_LIMIT_EXCEEDED && error.retryAfter) {
208
- return error.retryAfter * 1000; // Convert to milliseconds
209
- }
210
- return null;
211
- }
212
- /**
213
- * Check if error is retryable
214
- */
215
- function isRetryableError(error) {
216
- const retryableCodes = [
217
- exports.PhoneAuthErrorCode.NETWORK_ERROR,
218
- exports.PhoneAuthErrorCode.SERVICE_UNAVAILABLE,
219
- exports.PhoneAuthErrorCode.DOWNSTREAM_SERVICE_ERROR,
220
- exports.PhoneAuthErrorCode.RATE_LIMIT_EXCEEDED,
221
- ];
222
- return retryableCodes.includes(error.code);
223
- }
224
- /**
225
- * Parse error response from backend API
226
- */
227
- function parseBackendError(response) {
228
- var _a, _b;
229
- // Direct error structure from backend
230
- if (response && typeof response === 'object' && (response.code || response.error)) {
231
- const errorCode = response.code || response.error;
232
- const error = {
233
- code: errorCode,
234
- message: response.message || getUserMessage({ code: errorCode }),
235
- status: response.status,
236
- requestId: response.requestId || response.request_id,
237
- timestamp: response.timestamp,
238
- details: response.details,
239
- // Include trace info for observability
240
- traceId: response.trace_id || response.traceId,
241
- spanId: response.span_id || response.spanId,
242
- service: response.service
243
- };
244
- // Extract retryAfter from details if present
245
- if ((_a = response.details) === null || _a === void 0 ? void 0 : _a.retryAfter) {
246
- error.retryAfter = response.details.retryAfter;
247
- }
248
- return error;
249
- }
250
- // Handle HTTP response with error
251
- if (response && response.status) {
252
- const code = mapStatusToErrorCode(response.status);
253
- return {
254
- code,
255
- message: response.message || getUserMessage({ code }),
256
- status: response.status,
257
- requestId: (_b = response.headers) === null || _b === void 0 ? void 0 : _b['x-request-id']
258
- };
259
- }
260
- // Default to unexpected error
261
- return {
262
- code: exports.PhoneAuthErrorCode.INTERNAL_SERVER_ERROR,
263
- message: 'An unexpected error occurred',
264
- status: 500
265
- };
266
- }
267
- /**
268
- * Map HTTP status to error code
269
- */
270
- function mapStatusToErrorCode(status) {
271
- switch (status) {
272
- case 400: return exports.PhoneAuthErrorCode.BAD_REQUEST;
273
- case 401: return exports.PhoneAuthErrorCode.UNAUTHORIZED;
274
- case 403: return exports.PhoneAuthErrorCode.FORBIDDEN;
275
- case 404: return exports.PhoneAuthErrorCode.NOT_FOUND;
276
- case 409: return exports.PhoneAuthErrorCode.CONFLICT;
277
- case 422: return exports.PhoneAuthErrorCode.UNPROCESSABLE_ENTITY;
278
- case 429: return exports.PhoneAuthErrorCode.RATE_LIMIT_EXCEEDED;
279
- case 500: return exports.PhoneAuthErrorCode.INTERNAL_SERVER_ERROR;
280
- case 502: return exports.PhoneAuthErrorCode.BAD_GATEWAY;
281
- case 503: return exports.PhoneAuthErrorCode.SERVICE_UNAVAILABLE;
282
- case 504: return exports.PhoneAuthErrorCode.GATEWAY_TIMEOUT;
283
- default: return exports.PhoneAuthErrorCode.INTERNAL_SERVER_ERROR;
284
- }
285
- }
286
- /**
287
- * Serialize error for logging/observability tools like Sentry
288
- * This ensures all error details are captured in a format that can be sent over the network
289
- */
290
- function serializeError(error) {
291
- return {
292
- // Core error info
293
- code: error.code,
294
- message: error.message,
295
- // Backend error details
296
- status: error.status,
297
- requestId: error.requestId,
298
- timestamp: error.timestamp,
299
- // Trace context for distributed tracing
300
- traceId: error.traceId,
301
- spanId: error.spanId,
302
- service: error.service,
303
- // Specific error fields
304
- retryAfter: error.retryAfter,
305
- // Browser error details
306
- browserError: error.browserError,
307
- // Context
308
- context: error.context,
309
- // Additional details (sanitized - no sensitive info)
310
- details: sanitizeDetails(error.details),
311
- // SDK metadata
312
- sdkVersion: version_1.SDK_VERSION,
313
- errorCapturedAt: new Date().toISOString()
314
- };
315
- }
316
- /**
317
- * Sanitize error details to remove sensitive information
318
- */
319
- function sanitizeDetails(details) {
320
- if (!details || typeof details !== 'object') {
321
- return details;
322
- }
323
- // Clone the object
324
- const sanitized = JSON.parse(JSON.stringify(details));
325
- // Remove sensitive fields
326
- const sensitiveFields = ['carrier', 'phone_number', 'mnc', 'mcc', 'carrier_name'];
327
- for (const field of sensitiveFields) {
328
- delete sanitized[field];
329
- }
330
- return sanitized;
331
- }
332
- /**
333
- * Create a breadcrumb trail for error tracking
334
- * Useful for understanding the sequence of events leading to an error
335
- */
336
- function createErrorBreadcrumb(error) {
337
- var _a, _b, _c;
338
- return {
339
- category: 'phone-auth',
340
- message: `Phone Auth Error: ${error.code}`,
341
- level: isUserError(error) ? 'warning' : 'error',
342
- data: {
343
- code: error.code,
344
- step: (_a = error.context) === null || _a === void 0 ? void 0 : _a.step,
345
- useCase: (_b = error.context) === null || _b === void 0 ? void 0 : _b.useCase,
346
- requestId: error.requestId,
347
- browserErrorType: (_c = error.browserError) === null || _c === void 0 ? void 0 : _c.name
348
- }
349
- };
350
- }
@@ -1,7 +0,0 @@
1
- export { PhoneAuthClient } from './client';
2
- export * from './types';
3
- export { PhoneAuthErrorCode, isPhoneAuthError, isUserError, getUserMessage, isErrorCode, getRetryDelay, isRetryableError, serializeError, createErrorBreadcrumb } from './error-utils';
4
- export type { PhoneAuthErrorCode as PhoneAuthErrorCodeType } from './error-utils';
5
- export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements } from './validation-utils';
6
- export { MobileDebugConsole } from './ui/mobile-debug-console';
7
- export { isExtendedResponse, isCredential, isAuthCredential, isLinkStrategy, isTS43Strategy, isDesktopStrategy, getStrategy, hasPollingControls, hasTrigger, isHeadlessResult, requiresPolling, requiresUserAction } from './type-guards';
@@ -1,50 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.requiresUserAction = exports.requiresPolling = exports.isHeadlessResult = exports.hasTrigger = exports.hasPollingControls = exports.getStrategy = exports.isDesktopStrategy = exports.isTS43Strategy = exports.isLinkStrategy = exports.isAuthCredential = exports.isCredential = exports.isExtendedResponse = exports.MobileDebugConsole = exports.validateUseCaseRequirements = exports.validatePlmn = exports.validatePhoneNumber = exports.createErrorBreadcrumb = exports.serializeError = exports.isRetryableError = exports.getRetryDelay = exports.isErrorCode = exports.getUserMessage = exports.isUserError = exports.isPhoneAuthError = exports.PhoneAuthErrorCode = exports.PhoneAuthClient = void 0;
18
- var client_1 = require("./client");
19
- Object.defineProperty(exports, "PhoneAuthClient", { enumerable: true, get: function () { return client_1.PhoneAuthClient; } });
20
- __exportStar(require("./types"), exports);
21
- var error_utils_1 = require("./error-utils");
22
- Object.defineProperty(exports, "PhoneAuthErrorCode", { enumerable: true, get: function () { return error_utils_1.PhoneAuthErrorCode; } });
23
- Object.defineProperty(exports, "isPhoneAuthError", { enumerable: true, get: function () { return error_utils_1.isPhoneAuthError; } });
24
- Object.defineProperty(exports, "isUserError", { enumerable: true, get: function () { return error_utils_1.isUserError; } });
25
- Object.defineProperty(exports, "getUserMessage", { enumerable: true, get: function () { return error_utils_1.getUserMessage; } });
26
- Object.defineProperty(exports, "isErrorCode", { enumerable: true, get: function () { return error_utils_1.isErrorCode; } });
27
- Object.defineProperty(exports, "getRetryDelay", { enumerable: true, get: function () { return error_utils_1.getRetryDelay; } });
28
- Object.defineProperty(exports, "isRetryableError", { enumerable: true, get: function () { return error_utils_1.isRetryableError; } });
29
- Object.defineProperty(exports, "serializeError", { enumerable: true, get: function () { return error_utils_1.serializeError; } });
30
- Object.defineProperty(exports, "createErrorBreadcrumb", { enumerable: true, get: function () { return error_utils_1.createErrorBreadcrumb; } });
31
- var validation_utils_1 = require("./validation-utils");
32
- Object.defineProperty(exports, "validatePhoneNumber", { enumerable: true, get: function () { return validation_utils_1.validatePhoneNumber; } });
33
- Object.defineProperty(exports, "validatePlmn", { enumerable: true, get: function () { return validation_utils_1.validatePlmn; } });
34
- Object.defineProperty(exports, "validateUseCaseRequirements", { enumerable: true, get: function () { return validation_utils_1.validateUseCaseRequirements; } });
35
- var mobile_debug_console_1 = require("./ui/mobile-debug-console");
36
- Object.defineProperty(exports, "MobileDebugConsole", { enumerable: true, get: function () { return mobile_debug_console_1.MobileDebugConsole; } });
37
- var type_guards_1 = require("./type-guards");
38
- Object.defineProperty(exports, "isExtendedResponse", { enumerable: true, get: function () { return type_guards_1.isExtendedResponse; } });
39
- Object.defineProperty(exports, "isCredential", { enumerable: true, get: function () { return type_guards_1.isCredential; } });
40
- Object.defineProperty(exports, "isAuthCredential", { enumerable: true, get: function () { return type_guards_1.isAuthCredential; } });
41
- Object.defineProperty(exports, "isLinkStrategy", { enumerable: true, get: function () { return type_guards_1.isLinkStrategy; } });
42
- Object.defineProperty(exports, "isTS43Strategy", { enumerable: true, get: function () { return type_guards_1.isTS43Strategy; } });
43
- Object.defineProperty(exports, "isDesktopStrategy", { enumerable: true, get: function () { return type_guards_1.isDesktopStrategy; } });
44
- Object.defineProperty(exports, "getStrategy", { enumerable: true, get: function () { return type_guards_1.getStrategy; } });
45
- Object.defineProperty(exports, "hasPollingControls", { enumerable: true, get: function () { return type_guards_1.hasPollingControls; } });
46
- Object.defineProperty(exports, "hasTrigger", { enumerable: true, get: function () { return type_guards_1.hasTrigger; } });
47
- // Deprecated aliases
48
- Object.defineProperty(exports, "isHeadlessResult", { enumerable: true, get: function () { return type_guards_1.isHeadlessResult; } });
49
- Object.defineProperty(exports, "requiresPolling", { enumerable: true, get: function () { return type_guards_1.requiresPolling; } });
50
- Object.defineProperty(exports, "requiresUserAction", { enumerable: true, get: function () { return type_guards_1.requiresUserAction; } });
@@ -1,107 +0,0 @@
1
- /**
2
- * Status Types for Public Status Endpoint
3
- *
4
- * These types define the response format for the public status endpoint
5
- * Used for polling authentication status without exposing sensitive data
6
- */
7
- /**
8
- * Status values returned by the public endpoint (HTTP 200 only)
9
- */
10
- export type AuthenticationStatus = 'pending' | 'completed';
11
- /**
12
- * Authentication protocol/strategy used
13
- */
14
- export type AuthenticationProtocol = 'ts43' | 'link' | 'desktop';
15
- /**
16
- * Public Status Response (HTTP 200 OK)
17
- *
18
- * This response is only returned with HTTP 200 status code
19
- * Failed/expired sessions return HTTP 4xx with ErrorResponse
20
- *
21
- * @example
22
- * ```typescript
23
- * // Public endpoint (no auth required)
24
- * const response = await fetch('/public/status/{sessionKey}');
25
- *
26
- * if (response.status === 200) {
27
- * const status: StatusResponse = await response.json();
28
- * if (status.status === 'completed') {
29
- * // Authentication successful - now call process endpoint
30
- * const result = await processAuthentication(sessionKey);
31
- * }
32
- * } else if (response.status === 410) {
33
- * // Session expired
34
- * } else if (response.status === 422) {
35
- * // Authentication failed (user cancelled, etc.)
36
- * }
37
- * ```
38
- */
39
- export interface StatusResponse {
40
- /**
41
- * The session key/identifier
42
- */
43
- session_key: string;
44
- /**
45
- * Current status of the authentication (only successful states)
46
- */
47
- status: AuthenticationStatus;
48
- /**
49
- * Protocol/strategy used for authentication
50
- * Optional - may not be present during pending state
51
- */
52
- protocol?: AuthenticationProtocol;
53
- /**
54
- * ISO 8601 timestamp when session was created
55
- */
56
- created_at: string;
57
- /**
58
- * ISO 8601 timestamp of last status update
59
- */
60
- last_updated: string;
61
- }
62
- /**
63
- * Error Response (HTTP 4xx)
64
- *
65
- * Returned when session is expired, failed, or not found
66
- */
67
- export interface StatusErrorResponse {
68
- code: 'SESSION_EXPIRED' | 'USER_CANCELLED' | 'AUTHENTICATION_FAILED' | 'SESSION_NOT_FOUND' | 'INVALID_SESSION_KEY';
69
- message: string;
70
- request_id: string;
71
- timestamp: string;
72
- details?: {
73
- session_key?: string;
74
- reason?: string;
75
- expired_at?: string;
76
- duration_seconds?: number;
77
- };
78
- }
79
- /**
80
- * Type guard to check if authentication was successful
81
- */
82
- export declare function isSuccessStatus(status: AuthenticationStatus): boolean;
83
- /**
84
- * Helper to determine if polling should continue based on HTTP status
85
- */
86
- export declare function shouldContinuePolling(httpStatus: number, response?: StatusResponse): boolean;
87
- /**
88
- * Helper to determine if session is terminated based on HTTP status
89
- */
90
- export declare function isTerminalHttpStatus(httpStatus: number): boolean;
91
- /**
92
- * Session binding types for parent-child relationships
93
- */
94
- export interface SessionBinding {
95
- /**
96
- * Parent session ID (desktop QR code session)
97
- */
98
- parent_session_id?: string;
99
- /**
100
- * Child session ID (mobile authentication session)
101
- */
102
- child_session_id?: string;
103
- /**
104
- * Whether this is a parent or child session
105
- */
106
- session_type?: 'parent' | 'child';
107
- }
@@ -1,31 +0,0 @@
1
- "use strict";
2
- /**
3
- * Status Types for Public Status Endpoint
4
- *
5
- * These types define the response format for the public status endpoint
6
- * Used for polling authentication status without exposing sensitive data
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.isSuccessStatus = isSuccessStatus;
10
- exports.shouldContinuePolling = shouldContinuePolling;
11
- exports.isTerminalHttpStatus = isTerminalHttpStatus;
12
- /**
13
- * Type guard to check if authentication was successful
14
- */
15
- function isSuccessStatus(status) {
16
- return status === 'completed';
17
- }
18
- /**
19
- * Helper to determine if polling should continue based on HTTP status
20
- */
21
- function shouldContinuePolling(httpStatus, response) {
22
- // Only continue if HTTP 200 and status is pending
23
- return httpStatus === 200 && (response === null || response === void 0 ? void 0 : response.status) === 'pending';
24
- }
25
- /**
26
- * Helper to determine if session is terminated based on HTTP status
27
- */
28
- function isTerminalHttpStatus(httpStatus) {
29
- // 410 Gone (expired), 422 Unprocessable (failed), 404 Not Found
30
- return httpStatus === 410 || httpStatus === 422 || httpStatus === 404;
31
- }