@glideidentity/web-client-sdk 5.1.3 → 6.0.0-beta.2

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 +428 -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 +424 -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 +535 -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
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Type Guards for Phone Authentication.
3
+ *
4
+ * These utilities help developers work with SDK responses in a type-safe way
5
+ * without having to write their own type checking logic.
6
+ */
7
+ import type { InvokeResult, AuthCredential, PrepareResponse, TS43Data, LinkData, DesktopData, GetPhoneNumberResponse, VerifyPhoneNumberResponse, PhoneAuthResult } from './types';
8
+ /**
9
+ * Type guard to check if result is an InvokeResult.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const result = await sdk.invokeSecurePrompt(prepared);
14
+ * if (isInvokeResult(result)) {
15
+ * const credential = await result.credential;
16
+ * }
17
+ * ```
18
+ */
19
+ export declare function isInvokeResult(result: unknown): result is InvokeResult;
20
+ /**
21
+ * Type guard to check if result is an AuthCredential.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const credential = await result.credential;
26
+ * if (isAuthCredential(credential)) {
27
+ * console.log(credential.phone_number);
28
+ * }
29
+ * ```
30
+ */
31
+ export declare function isAuthCredential(result: unknown): result is AuthCredential;
32
+ /**
33
+ * Check if result is from TS43 strategy.
34
+ * TS43 uses Android Digital Credentials API.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const result = await sdk.invokeSecurePrompt(prepared);
39
+ * if (isTS43Strategy(result)) {
40
+ * // result.cancel is undefined for TS43
41
+ * // To retry: call invokeSecurePrompt again
42
+ * }
43
+ * ```
44
+ */
45
+ export declare function isTS43Strategy(result: InvokeResult): boolean;
46
+ /**
47
+ * Check if result is from Link strategy.
48
+ * Link strategy uses iOS App Clips or Android App Links.
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * const result = await sdk.invokeSecurePrompt(prepared);
53
+ * if (isLinkStrategy(result)) {
54
+ * // Can cancel polling
55
+ * result.cancel?.();
56
+ * }
57
+ * ```
58
+ */
59
+ export declare function isLinkStrategy(result: InvokeResult): boolean;
60
+ /**
61
+ * Check if result is from Desktop strategy.
62
+ * Desktop strategy uses QR codes for cross-device auth.
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * const result = await sdk.invokeSecurePrompt(prepared);
67
+ * if (isDesktopStrategy(result)) {
68
+ * // QR code data is in prepared.data
69
+ * // Can cancel polling
70
+ * result.cancel?.();
71
+ * }
72
+ * ```
73
+ */
74
+ export declare function isDesktopStrategy(result: InvokeResult): boolean;
75
+ /**
76
+ * Check if result has cancel capability.
77
+ * Only Link and Desktop strategies support cancel.
78
+ */
79
+ export declare function isCancellable(result: InvokeResult): boolean;
80
+ /**
81
+ * Check if prepare response data is TS43Data.
82
+ */
83
+ export declare function isTS43Data(data: unknown): data is TS43Data;
84
+ /**
85
+ * Check if prepare response data is LinkData.
86
+ */
87
+ export declare function isLinkData(data: unknown): data is LinkData;
88
+ /**
89
+ * Check if prepare response data is DesktopData.
90
+ */
91
+ export declare function isDesktopData(data: unknown): data is DesktopData;
92
+ /**
93
+ * Get strategy-specific data from PrepareResponse with proper typing.
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const prepared = await sdk.prepare(request);
98
+ *
99
+ * if (prepared.authentication_strategy === 'desktop') {
100
+ * const desktopData = getStrategyData(prepared);
101
+ * // Show QR code: desktopData.data.ios_qr_image
102
+ * }
103
+ * ```
104
+ */
105
+ export declare function getStrategyData<T extends PrepareResponse>(prepared: T): T['data'];
106
+ /**
107
+ * Check if response is GetPhoneNumberResponse.
108
+ */
109
+ export declare function isGetPhoneNumberResponse(result: PhoneAuthResult): result is GetPhoneNumberResponse;
110
+ /**
111
+ * Check if response is VerifyPhoneNumberResponse.
112
+ */
113
+ export declare function isVerifyPhoneNumberResponse(result: PhoneAuthResult): result is VerifyPhoneNumberResponse;
114
+ /**
115
+ * Check if response is an error response from server.
116
+ */
117
+ export declare function isErrorResponse(response: unknown): boolean;
118
+ //# sourceMappingURL=type-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../../../src/core/type-guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EAChB,MAAM,SAAS,CAAC;AAOjB;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAQtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,cAAc,CAQ1E;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE5D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE5D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE3D;AAMD;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,QAAQ,CAS1D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,QAAQ,CAO1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,WAAW,CAOhE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,eAAe,EACvD,QAAQ,EAAE,CAAC,GACV,CAAC,CAAC,MAAM,CAAC,CAEX;AAMD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,GACtB,MAAM,IAAI,sBAAsB,CAElC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,GACtB,MAAM,IAAI,yBAAyB,CAErC;AAQD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAO1D"}
@@ -0,0 +1,535 @@
1
+ /**
2
+ * Glide Phone Authentication - Core Types
3
+ *
4
+ * This file contains all types for the Phone Auth SDK.
5
+ * Zero runtime dependencies - pure TypeScript types and constants.
6
+ *
7
+ * NAMING CONVENTION:
8
+ * - All types use snake_case to match API communication
9
+ * - This eliminates conversion errors and makes debugging easier
10
+ */
11
+ /** E.164 format phone number: "+1234567890" */
12
+ export type PhoneNumber = string;
13
+ /** ISO 8601 timestamp: "2024-01-15T09:30:00Z" */
14
+ export type Timestamp = string;
15
+ /** RFC 4122 UUID: "550e8400-e29b-41d4-a716-446655440000" */
16
+ export type UUID = string;
17
+ export declare const USE_CASE: {
18
+ readonly GET_PHONE_NUMBER: "GetPhoneNumber";
19
+ readonly VERIFY_PHONE_NUMBER: "VerifyPhoneNumber";
20
+ };
21
+ export type UseCase = typeof USE_CASE[keyof typeof USE_CASE];
22
+ export declare const AUTHENTICATION_STRATEGY: {
23
+ readonly TS43: "ts43";
24
+ readonly LINK: "link";
25
+ readonly DESKTOP: "desktop";
26
+ };
27
+ export type AuthenticationStrategy = typeof AUTHENTICATION_STRATEGY[keyof typeof AUTHENTICATION_STRATEGY];
28
+ /**
29
+ * Session information used across all operations.
30
+ * Maintains state between prepare and process steps.
31
+ */
32
+ export interface SessionInfo {
33
+ /** Unique session identifier */
34
+ session_key: string;
35
+ /** Use case for this session (returned by server) */
36
+ use_case?: UseCase;
37
+ /** Security nonce */
38
+ nonce?: string;
39
+ /** Additional metadata from server */
40
+ metadata?: Record<string, string>;
41
+ }
42
+ /**
43
+ * Public Land Mobile Network identifiers.
44
+ * Identifies the carrier network.
45
+ *
46
+ * @deprecated PLMN will be removed in a future version.
47
+ * GetPhoneNumber will always pass prepare but may fail later in the flow.
48
+ * Use phone_number for VerifyPhoneNumber instead.
49
+ *
50
+ * TODO: Remove PLMN support in next major version
51
+ */
52
+ export interface PLMN {
53
+ /** Mobile Country Code (exactly 3 digits) */
54
+ mcc: string;
55
+ /** Mobile Network Code (2-3 digits) */
56
+ mnc: string;
57
+ }
58
+ /**
59
+ * Browser/client information for strategy selection.
60
+ */
61
+ export interface ClientInfo {
62
+ /** navigator.userAgent */
63
+ user_agent: string;
64
+ /** navigator.platform */
65
+ platform: string;
66
+ }
67
+ /**
68
+ * Advanced options for prepare requests.
69
+ * Contains optional configuration for special features.
70
+ */
71
+ export interface PrepareOptions {
72
+ /**
73
+ * Parent session ID for desktop-mobile binding.
74
+ * When a mobile device scans a desktop QR code, the mobile session (child)
75
+ * links back to the desktop session (parent).
76
+ */
77
+ parent_session_id?: string;
78
+ /**
79
+ * UI theme preference for consistency across all authentication touchpoints.
80
+ * Affects SDK modals, mobile app, and OAuth callback pages.
81
+ * @default 'dark'
82
+ */
83
+ theme?: 'dark' | 'light';
84
+ }
85
+ /**
86
+ * Request to prepare authentication session.
87
+ */
88
+ export interface PrepareRequest {
89
+ /**
90
+ * Use case for this authentication.
91
+ * Optional when parent_session_id is provided (inherited from parent).
92
+ */
93
+ use_case?: UseCase;
94
+ /** E.164 format phone number (required for VerifyPhoneNumber) */
95
+ phone_number?: PhoneNumber;
96
+ /**
97
+ * @deprecated PLMN will be removed. GetPhoneNumber passes prepare but may fail later.
98
+ * TODO: Remove in next major version
99
+ */
100
+ plmn?: PLMN;
101
+ /**
102
+ * Request identifier.
103
+ * Auto-generated by SDK if not provided.
104
+ */
105
+ id?: string;
106
+ /** Client information for strategy selection */
107
+ client_info?: ClientInfo;
108
+ /** Advanced options for special features */
109
+ options?: PrepareOptions;
110
+ }
111
+ /**
112
+ * Response from prepare authentication.
113
+ */
114
+ export interface PrepareResponse {
115
+ /** Selected authentication strategy */
116
+ authentication_strategy: AuthenticationStrategy;
117
+ /** Session information for subsequent requests */
118
+ session: SessionInfo;
119
+ /** Strategy-specific data */
120
+ data: TS43Data | LinkData | DesktopData;
121
+ }
122
+ /**
123
+ * TS43 strategy data.
124
+ * Used for Android Digital Credentials API.
125
+ */
126
+ export interface TS43Data {
127
+ /** Protocol identifier (e.g., 'openid4vp-v1-unsigned') */
128
+ protocol: string;
129
+ /** Protocol-specific data for Digital Credentials API */
130
+ data: {
131
+ nonce: string;
132
+ response_mode: string;
133
+ response_type: string;
134
+ dcql_query: {
135
+ credentials: Array<{
136
+ id: string;
137
+ format: string;
138
+ meta: {
139
+ vct_values: string[];
140
+ credential_authorization_jwt: string;
141
+ };
142
+ claims?: string[];
143
+ }>;
144
+ };
145
+ };
146
+ }
147
+ /**
148
+ * Link strategy data.
149
+ * Used for iOS App Clips and Android App Links.
150
+ */
151
+ export interface LinkData {
152
+ /** URL to redirect user to (App Clip or App Link) */
153
+ url: string;
154
+ /** URL to return to after authentication */
155
+ return_url?: string;
156
+ /** Status URL for polling authentication status */
157
+ status_url?: string;
158
+ /** Additional parameters */
159
+ params?: Record<string, string>;
160
+ }
161
+ /**
162
+ * Desktop strategy data.
163
+ * Used for QR code-based authentication from desktop browsers.
164
+ */
165
+ export interface DesktopData {
166
+ /** Protocol version for QR authentication */
167
+ protocol?: string;
168
+ /** QR code and authentication data */
169
+ data: {
170
+ /** QR code image as base64 data URI */
171
+ qr_code_image?: string;
172
+ /** iOS-specific QR code image */
173
+ ios_qr_image?: string;
174
+ /** Android-specific QR code image */
175
+ android_qr_image?: string;
176
+ /** iOS authentication URL */
177
+ ios_url?: string;
178
+ /** Android authentication URL */
179
+ android_url?: string;
180
+ /** Unique session identifier for the QR code */
181
+ session_id?: string;
182
+ /** Status polling URL */
183
+ status_url?: string;
184
+ /** Mobile authentication URL */
185
+ url?: string;
186
+ /** Polling interval in milliseconds @default 2000 */
187
+ polling_interval?: number;
188
+ /** QR code expiration time in seconds */
189
+ expires_in?: number;
190
+ };
191
+ }
192
+ /**
193
+ * Options for invokeSecurePrompt.
194
+ *
195
+ * IMPORTANT: invokeSecurePrompt must be called from a user gesture (button click)
196
+ * because both iOS App Clips and Android Digital Credentials API require
197
+ * transient activation (user interaction) to open system UI.
198
+ */
199
+ export interface InvokeOptions {
200
+ /**
201
+ * Prevents SDK from showing its UI components.
202
+ * Only affects Desktop strategy (hides QR modal).
203
+ * When true, developer must show QR codes from PrepareResponse.data.
204
+ *
205
+ * @default false
206
+ */
207
+ preventDefaultUI?: boolean;
208
+ /**
209
+ * Custom polling endpoint.
210
+ * Overrides SDK config and backend-provided status URL.
211
+ */
212
+ pollingEndpoint?: string;
213
+ /**
214
+ * Polling interval in milliseconds.
215
+ * @default 2000
216
+ */
217
+ pollingInterval?: number;
218
+ /**
219
+ * Maximum polling attempts before timeout.
220
+ * @default 30 (1 minute with 2s interval)
221
+ */
222
+ maxPollingAttempts?: number;
223
+ /**
224
+ * Modal customization options.
225
+ * Only used when preventDefaultUI is false (Desktop strategy).
226
+ */
227
+ modalOptions?: ModalOptions;
228
+ }
229
+ /**
230
+ * View mode for the QR code modal.
231
+ * - 'toggle': Single QR with toggle button to switch between iOS/Android (default)
232
+ * - 'dual': Shows both iOS and Android QR codes side-by-side
233
+ * - 'pre-step': First shows OS choice, then shows the appropriate QR
234
+ */
235
+ export type ModalViewMode = 'toggle' | 'dual' | 'pre-step';
236
+ /**
237
+ * Theme for the modal UI.
238
+ * - 'dark': Dark theme
239
+ * - 'light': Light theme
240
+ * - 'auto': Uses system preference (prefers-color-scheme)
241
+ */
242
+ export type ModalTheme = 'dark' | 'light' | 'auto';
243
+ /**
244
+ * Modal customization options for Desktop QR code flow.
245
+ */
246
+ export interface ModalOptions {
247
+ /**
248
+ * View mode for QR codes.
249
+ * @default 'toggle'
250
+ */
251
+ viewMode?: ModalViewMode;
252
+ /**
253
+ * UI theme for the modal.
254
+ * @default 'auto'
255
+ */
256
+ theme?: ModalTheme;
257
+ /** Title text for the modal */
258
+ title?: string;
259
+ /** Description text for the modal */
260
+ description?: string;
261
+ /** Whether to show close button @default true */
262
+ showCloseButton?: boolean;
263
+ /** Whether pressing Escape closes the modal @default true */
264
+ closeOnEscape?: boolean;
265
+ /** Whether clicking backdrop closes the modal @default true */
266
+ closeOnBackdropClick?: boolean;
267
+ }
268
+ /**
269
+ * Authentication credential result (legacy, kept for compatibility).
270
+ * @deprecated Use credential string directly from InvokeResult
271
+ */
272
+ export interface AuthCredential {
273
+ /** Authentication credential token */
274
+ credential: string;
275
+ /** Phone number if available */
276
+ phone_number?: PhoneNumber;
277
+ /** Session information */
278
+ session: SessionInfo;
279
+ /** Whether authentication was successful */
280
+ authenticated: boolean;
281
+ }
282
+ /**
283
+ * Unified result from invokeSecurePrompt.
284
+ * Same shape for all strategies (TS43, Link, Desktop).
285
+ *
286
+ * For TS43: credential promise resolves immediately.
287
+ * For Link/Desktop: credential promise resolves when polling completes.
288
+ */
289
+ export interface InvokeResult {
290
+ /**
291
+ * Promise that resolves to the credential string.
292
+ * For TS43: resolves immediately after user completes system prompt.
293
+ * For Link/Desktop: resolves when polling detects completion.
294
+ */
295
+ credential: Promise<string>;
296
+ /**
297
+ * Cancel the authentication flow.
298
+ * Causes credential promise to reject with error code 'CANCELLED'.
299
+ *
300
+ * For TS43: undefined (cannot cancel system prompt).
301
+ * For Link/Desktop: stops polling and rejects promise.
302
+ *
303
+ * To retry: call invokeSecurePrompt again from a new user gesture.
304
+ */
305
+ cancel?: () => void;
306
+ /** Authentication strategy for this result */
307
+ strategy: AuthenticationStrategy;
308
+ /** Session information */
309
+ session: SessionInfo;
310
+ }
311
+ /**
312
+ * Request to get phone number from credential.
313
+ */
314
+ export interface GetPhoneNumberRequest {
315
+ /** Session from PrepareResponse */
316
+ session: SessionInfo;
317
+ /** Credential string from InvokeResult */
318
+ credential: string;
319
+ /** Use case (always 'GetPhoneNumber' for this request) */
320
+ use_case: typeof USE_CASE.GET_PHONE_NUMBER;
321
+ }
322
+ /**
323
+ * Response with retrieved phone number.
324
+ */
325
+ export interface GetPhoneNumberResponse {
326
+ /** E.164 format phone number */
327
+ phone_number: PhoneNumber;
328
+ /** Audience from carrier (optional) */
329
+ aud?: string;
330
+ }
331
+ /**
332
+ * Request to verify phone number with credential.
333
+ */
334
+ export interface VerifyPhoneNumberRequest {
335
+ /** Session from PrepareResponse */
336
+ session: SessionInfo;
337
+ /** Credential string from InvokeResult */
338
+ credential: string;
339
+ /** Use case (always 'VerifyPhoneNumber' for this request) */
340
+ use_case: typeof USE_CASE.VERIFY_PHONE_NUMBER;
341
+ }
342
+ /**
343
+ * Response from phone number verification.
344
+ */
345
+ export interface VerifyPhoneNumberResponse {
346
+ /** The phone number that was verified */
347
+ phone_number: PhoneNumber;
348
+ /** Whether verification was successful */
349
+ verified: boolean;
350
+ /** Audience from carrier (optional) */
351
+ aud?: string;
352
+ }
353
+ /** Union of all process response types */
354
+ export type PhoneAuthResult = GetPhoneNumberResponse | VerifyPhoneNumberResponse;
355
+ /**
356
+ * SDK configuration options.
357
+ */
358
+ export interface AuthConfig {
359
+ /**
360
+ * Custom endpoints for authentication flow.
361
+ */
362
+ endpoints?: {
363
+ /** Prepare endpoint @default '/api/magic-auth/prepare' */
364
+ prepare?: string;
365
+ /** Process endpoint @default '/api/magic-auth/process' */
366
+ process?: string;
367
+ /** Desktop/Link polling endpoint */
368
+ polling?: string;
369
+ };
370
+ /**
371
+ * Timeout for API calls in milliseconds.
372
+ * @default 30000
373
+ */
374
+ timeout?: number;
375
+ /**
376
+ * Polling interval in milliseconds for status checks.
377
+ * @default 2000
378
+ */
379
+ pollingInterval?: number;
380
+ /**
381
+ * Maximum polling attempts before timeout.
382
+ * @default 30 (1 minute with 2s interval)
383
+ */
384
+ maxPollingAttempts?: number;
385
+ /**
386
+ * Enable debug logging.
387
+ * @default false
388
+ */
389
+ debug?: boolean;
390
+ /**
391
+ * Developer environment for testing (e.g., 'dev1', 'dev2').
392
+ * When set, adds a 'developer' header to polling requests.
393
+ */
394
+ devEnv?: string;
395
+ /**
396
+ * Developer tools configuration for debugging.
397
+ */
398
+ devtools?: {
399
+ /**
400
+ * Show mobile console overlay for on-device debugging.
401
+ * Displays all console logs at the bottom of the screen.
402
+ * @default false
403
+ */
404
+ showMobileConsole?: boolean;
405
+ };
406
+ /**
407
+ * Custom HTTP client.
408
+ * When provided, SDK uses this instead of built-in fetch.
409
+ */
410
+ httpClient?: HttpClient;
411
+ /**
412
+ * Custom logger.
413
+ * When provided, SDK uses this for all logging.
414
+ */
415
+ logger?: Logger;
416
+ /**
417
+ * Static headers to include in requests.
418
+ */
419
+ headers?: HeaderConfig;
420
+ /**
421
+ * Dynamic headers function.
422
+ * Called before each request to get additional headers.
423
+ */
424
+ dynamicHeaders?: (context: HeaderContext) => Record<string, string> | Promise<Record<string, string>>;
425
+ }
426
+ /**
427
+ * HTTP Client interface for BYOH (Bring Your Own HTTP).
428
+ * Implement this to use your own HTTP client (axios, ky, etc.).
429
+ */
430
+ export interface HttpClient {
431
+ post<T>(url: string, body: unknown, options?: HttpOptions): Promise<T>;
432
+ get<T>(url: string, options?: HttpOptions): Promise<T>;
433
+ }
434
+ export interface HttpOptions {
435
+ headers?: Record<string, string>;
436
+ timeout?: number;
437
+ signal?: AbortSignal;
438
+ }
439
+ /**
440
+ * Logger interface for custom logging.
441
+ * Implement this to integrate with your logging infrastructure.
442
+ */
443
+ export interface Logger {
444
+ debug(message: string, data?: unknown): void;
445
+ info(message: string, data?: unknown): void;
446
+ warn(message: string, data?: unknown): void;
447
+ error(message: string, data?: unknown): void;
448
+ }
449
+ /**
450
+ * Header configuration for requests.
451
+ */
452
+ export interface HeaderConfig {
453
+ /** Headers for all requests */
454
+ common?: Record<string, string>;
455
+ /** Headers for prepare requests */
456
+ prepare?: Record<string, string>;
457
+ /** Headers for process requests */
458
+ process?: Record<string, string>;
459
+ /** Headers for polling requests */
460
+ polling?: Record<string, string>;
461
+ }
462
+ /**
463
+ * Context passed to dynamicHeaders function.
464
+ */
465
+ export interface HeaderContext {
466
+ endpoint: 'prepare' | 'process' | 'polling';
467
+ method: 'GET' | 'POST';
468
+ sessionId?: string;
469
+ }
470
+ /**
471
+ * SDK authentication error.
472
+ */
473
+ export interface AuthError extends Error {
474
+ /** Machine-readable error code */
475
+ code: string;
476
+ /** HTTP status code (if from server) */
477
+ status?: number;
478
+ /** Additional error details */
479
+ details?: unknown;
480
+ /** Request tracking ID */
481
+ requestId?: string;
482
+ /** ISO 8601 timestamp */
483
+ timestamp?: string;
484
+ /** Seconds until retry allowed (for rate limits) */
485
+ retryAfter?: number;
486
+ /** Distributed tracing context */
487
+ traceId?: string;
488
+ spanId?: string;
489
+ service?: string;
490
+ /** Browser error details (for Digital Credentials API errors) */
491
+ browserError?: {
492
+ name: string;
493
+ message: string;
494
+ stack?: string;
495
+ code?: number;
496
+ };
497
+ /** Context about when/where error occurred */
498
+ context?: {
499
+ step?: 'prepare' | 'invoke' | 'process';
500
+ useCase?: UseCase;
501
+ timestamp: string;
502
+ userAgent?: string;
503
+ url?: string;
504
+ };
505
+ }
506
+ /**
507
+ * Browser Digital Credential type (extends standard Credential).
508
+ */
509
+ export interface DigitalCredential extends Credential {
510
+ data: {
511
+ vp_token: {
512
+ [aggregatorId: string]: string | string[];
513
+ };
514
+ };
515
+ }
516
+ /**
517
+ * Browser credential request structure for Digital Credentials API.
518
+ */
519
+ export interface SecureCredentialRequest {
520
+ digital: {
521
+ requests: Array<{
522
+ protocol: string;
523
+ data: unknown;
524
+ }>;
525
+ };
526
+ }
527
+ /**
528
+ * Response from browser's Digital Credentials API.
529
+ */
530
+ export interface SecureCredentialResponse {
531
+ vp_token: {
532
+ [aggregator_id: string]: string | string[];
533
+ };
534
+ }
535
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}