@kaiz11/stack-client 0.0.14

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 (263) hide show
  1. package/LICENSE +32 -0
  2. package/README.md +586 -0
  3. package/dist/accounts/accounts-client.d.ts +188 -0
  4. package/dist/accounts/accounts-client.d.ts.map +1 -0
  5. package/dist/accounts/accounts-client.js +264 -0
  6. package/dist/accounts/accounts-client.js.map +1 -0
  7. package/dist/accounts/index.d.ts +8 -0
  8. package/dist/accounts/index.d.ts.map +1 -0
  9. package/dist/accounts/index.js +8 -0
  10. package/dist/accounts/index.js.map +1 -0
  11. package/dist/accounts/mock-accounts.d.ts +90 -0
  12. package/dist/accounts/mock-accounts.d.ts.map +1 -0
  13. package/dist/accounts/mock-accounts.js +434 -0
  14. package/dist/accounts/mock-accounts.js.map +1 -0
  15. package/dist/accounts/types.d.ts +180 -0
  16. package/dist/accounts/types.d.ts.map +1 -0
  17. package/dist/accounts/types.js +59 -0
  18. package/dist/accounts/types.js.map +1 -0
  19. package/dist/auth/auth-client.d.ts +224 -0
  20. package/dist/auth/auth-client.d.ts.map +1 -0
  21. package/dist/auth/auth-client.js +230 -0
  22. package/dist/auth/auth-client.js.map +1 -0
  23. package/dist/auth/base-auth.d.ts +44 -0
  24. package/dist/auth/base-auth.d.ts.map +1 -0
  25. package/dist/auth/base-auth.js +55 -0
  26. package/dist/auth/base-auth.js.map +1 -0
  27. package/dist/auth/index.d.ts +11 -0
  28. package/dist/auth/index.d.ts.map +1 -0
  29. package/dist/auth/index.js +11 -0
  30. package/dist/auth/index.js.map +1 -0
  31. package/dist/auth/methods/admin.d.ts +59 -0
  32. package/dist/auth/methods/admin.d.ts.map +1 -0
  33. package/dist/auth/methods/admin.js +55 -0
  34. package/dist/auth/methods/admin.js.map +1 -0
  35. package/dist/auth/methods/index.d.ts +9 -0
  36. package/dist/auth/methods/index.d.ts.map +1 -0
  37. package/dist/auth/methods/index.js +8 -0
  38. package/dist/auth/methods/index.js.map +1 -0
  39. package/dist/auth/methods/magic-link.d.ts +27 -0
  40. package/dist/auth/methods/magic-link.d.ts.map +1 -0
  41. package/dist/auth/methods/magic-link.js +37 -0
  42. package/dist/auth/methods/magic-link.js.map +1 -0
  43. package/dist/auth/methods/mfa.d.ts +92 -0
  44. package/dist/auth/methods/mfa.d.ts.map +1 -0
  45. package/dist/auth/methods/mfa.js +153 -0
  46. package/dist/auth/methods/mfa.js.map +1 -0
  47. package/dist/auth/methods/oauth.d.ts +62 -0
  48. package/dist/auth/methods/oauth.d.ts.map +1 -0
  49. package/dist/auth/methods/oauth.js +165 -0
  50. package/dist/auth/methods/oauth.js.map +1 -0
  51. package/dist/auth/methods/otp.d.ts +43 -0
  52. package/dist/auth/methods/otp.d.ts.map +1 -0
  53. package/dist/auth/methods/otp.js +66 -0
  54. package/dist/auth/methods/otp.js.map +1 -0
  55. package/dist/auth/methods/password.d.ts +64 -0
  56. package/dist/auth/methods/password.d.ts.map +1 -0
  57. package/dist/auth/methods/password.js +116 -0
  58. package/dist/auth/methods/password.js.map +1 -0
  59. package/dist/auth/methods/recovery.d.ts +62 -0
  60. package/dist/auth/methods/recovery.d.ts.map +1 -0
  61. package/dist/auth/methods/recovery.js +100 -0
  62. package/dist/auth/methods/recovery.js.map +1 -0
  63. package/dist/auth/mock-auth.d.ts +135 -0
  64. package/dist/auth/mock-auth.d.ts.map +1 -0
  65. package/dist/auth/mock-auth.js +417 -0
  66. package/dist/auth/mock-auth.js.map +1 -0
  67. package/dist/auth/server/helpers.d.ts +215 -0
  68. package/dist/auth/server/helpers.d.ts.map +1 -0
  69. package/dist/auth/server/helpers.js +241 -0
  70. package/dist/auth/server/helpers.js.map +1 -0
  71. package/dist/auth/server/index.d.ts +24 -0
  72. package/dist/auth/server/index.d.ts.map +1 -0
  73. package/dist/auth/server/index.js +40 -0
  74. package/dist/auth/server/index.js.map +1 -0
  75. package/dist/auth/server/middleware.d.ts +305 -0
  76. package/dist/auth/server/middleware.d.ts.map +1 -0
  77. package/dist/auth/server/middleware.js +405 -0
  78. package/dist/auth/server/middleware.js.map +1 -0
  79. package/dist/auth/server/verify.d.ts +184 -0
  80. package/dist/auth/server/verify.d.ts.map +1 -0
  81. package/dist/auth/server/verify.js +222 -0
  82. package/dist/auth/server/verify.js.map +1 -0
  83. package/dist/auth/token-manager.d.ts +94 -0
  84. package/dist/auth/token-manager.d.ts.map +1 -0
  85. package/dist/auth/token-manager.js +231 -0
  86. package/dist/auth/token-manager.js.map +1 -0
  87. package/dist/auth/types.d.ts +412 -0
  88. package/dist/auth/types.d.ts.map +1 -0
  89. package/dist/auth/types.js +66 -0
  90. package/dist/auth/types.js.map +1 -0
  91. package/dist/auth/user/identities.d.ts +62 -0
  92. package/dist/auth/user/identities.d.ts.map +1 -0
  93. package/dist/auth/user/identities.js +88 -0
  94. package/dist/auth/user/identities.js.map +1 -0
  95. package/dist/auth/user/index.d.ts +4 -0
  96. package/dist/auth/user/index.d.ts.map +1 -0
  97. package/dist/auth/user/index.js +4 -0
  98. package/dist/auth/user/index.js.map +1 -0
  99. package/dist/auth/user/user.d.ts +64 -0
  100. package/dist/auth/user/user.d.ts.map +1 -0
  101. package/dist/auth/user/user.js +105 -0
  102. package/dist/auth/user/user.js.map +1 -0
  103. package/dist/auth/user/verification.d.ts +49 -0
  104. package/dist/auth/user/verification.d.ts.map +1 -0
  105. package/dist/auth/user/verification.js +71 -0
  106. package/dist/auth/user/verification.js.map +1 -0
  107. package/dist/cli/browser.d.ts +11 -0
  108. package/dist/cli/browser.d.ts.map +1 -0
  109. package/dist/cli/browser.js +35 -0
  110. package/dist/cli/browser.js.map +1 -0
  111. package/dist/cli/callback-server.d.ts +30 -0
  112. package/dist/cli/callback-server.d.ts.map +1 -0
  113. package/dist/cli/callback-server.js +100 -0
  114. package/dist/cli/callback-server.js.map +1 -0
  115. package/dist/cli/file-token-store.d.ts +79 -0
  116. package/dist/cli/file-token-store.d.ts.map +1 -0
  117. package/dist/cli/file-token-store.js +138 -0
  118. package/dist/cli/file-token-store.js.map +1 -0
  119. package/dist/cli/index.d.ts +33 -0
  120. package/dist/cli/index.d.ts.map +1 -0
  121. package/dist/cli/index.js +38 -0
  122. package/dist/cli/index.js.map +1 -0
  123. package/dist/cli/oauth.d.ts +67 -0
  124. package/dist/cli/oauth.d.ts.map +1 -0
  125. package/dist/cli/oauth.js +101 -0
  126. package/dist/cli/oauth.js.map +1 -0
  127. package/dist/cli/pkce.d.ts +35 -0
  128. package/dist/cli/pkce.d.ts.map +1 -0
  129. package/dist/cli/pkce.js +43 -0
  130. package/dist/cli/pkce.js.map +1 -0
  131. package/dist/client.d.ts +22 -0
  132. package/dist/client.d.ts.map +1 -0
  133. package/dist/client.js +99 -0
  134. package/dist/client.js.map +1 -0
  135. package/dist/db/client.d.ts +9 -0
  136. package/dist/db/client.d.ts.map +1 -0
  137. package/dist/db/client.js +19 -0
  138. package/dist/db/client.js.map +1 -0
  139. package/dist/db/errors.d.ts +19 -0
  140. package/dist/db/errors.d.ts.map +1 -0
  141. package/dist/db/errors.js +57 -0
  142. package/dist/db/errors.js.map +1 -0
  143. package/dist/db/index.d.ts +7 -0
  144. package/dist/db/index.d.ts.map +1 -0
  145. package/dist/db/index.js +5 -0
  146. package/dist/db/index.js.map +1 -0
  147. package/dist/db/mock.d.ts +28 -0
  148. package/dist/db/mock.d.ts.map +1 -0
  149. package/dist/db/mock.js +459 -0
  150. package/dist/db/mock.js.map +1 -0
  151. package/dist/db/types.d.ts +73 -0
  152. package/dist/db/types.d.ts.map +1 -0
  153. package/dist/db/types.js +2 -0
  154. package/dist/db/types.js.map +1 -0
  155. package/dist/index.d.ts +21 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +20 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/lib/errors.d.ts +33 -0
  160. package/dist/lib/errors.d.ts.map +1 -0
  161. package/dist/lib/errors.js +76 -0
  162. package/dist/lib/errors.js.map +1 -0
  163. package/dist/lib/http.d.ts +81 -0
  164. package/dist/lib/http.d.ts.map +1 -0
  165. package/dist/lib/http.js +163 -0
  166. package/dist/lib/http.js.map +1 -0
  167. package/dist/lib/keys.d.ts +87 -0
  168. package/dist/lib/keys.d.ts.map +1 -0
  169. package/dist/lib/keys.js +147 -0
  170. package/dist/lib/keys.js.map +1 -0
  171. package/dist/lib/paths.d.ts +37 -0
  172. package/dist/lib/paths.d.ts.map +1 -0
  173. package/dist/lib/paths.js +49 -0
  174. package/dist/lib/paths.js.map +1 -0
  175. package/dist/lib/token-store.d.ts +42 -0
  176. package/dist/lib/token-store.d.ts.map +1 -0
  177. package/dist/lib/token-store.js +75 -0
  178. package/dist/lib/token-store.js.map +1 -0
  179. package/dist/mocks/handlers.d.ts +29 -0
  180. package/dist/mocks/handlers.d.ts.map +1 -0
  181. package/dist/mocks/handlers.js +79 -0
  182. package/dist/mocks/handlers.js.map +1 -0
  183. package/dist/mocks/index.d.ts +5 -0
  184. package/dist/mocks/index.d.ts.map +1 -0
  185. package/dist/mocks/index.js +9 -0
  186. package/dist/mocks/index.js.map +1 -0
  187. package/dist/mocks/responses.d.ts +76 -0
  188. package/dist/mocks/responses.d.ts.map +1 -0
  189. package/dist/mocks/responses.js +91 -0
  190. package/dist/mocks/responses.js.map +1 -0
  191. package/dist/mocks/server.d.ts +7 -0
  192. package/dist/mocks/server.d.ts.map +1 -0
  193. package/dist/mocks/server.js +9 -0
  194. package/dist/mocks/server.js.map +1 -0
  195. package/dist/mocks/state.d.ts +86 -0
  196. package/dist/mocks/state.d.ts.map +1 -0
  197. package/dist/mocks/state.js +77 -0
  198. package/dist/mocks/state.js.map +1 -0
  199. package/dist/storage/bucket-ref.d.ts +183 -0
  200. package/dist/storage/bucket-ref.d.ts.map +1 -0
  201. package/dist/storage/bucket-ref.js +529 -0
  202. package/dist/storage/bucket-ref.js.map +1 -0
  203. package/dist/storage/errors.d.ts +27 -0
  204. package/dist/storage/errors.d.ts.map +1 -0
  205. package/dist/storage/errors.js +89 -0
  206. package/dist/storage/errors.js.map +1 -0
  207. package/dist/storage/index.d.ts +13 -0
  208. package/dist/storage/index.d.ts.map +1 -0
  209. package/dist/storage/index.js +11 -0
  210. package/dist/storage/index.js.map +1 -0
  211. package/dist/storage/interface.d.ts +245 -0
  212. package/dist/storage/interface.d.ts.map +1 -0
  213. package/dist/storage/interface.js +2 -0
  214. package/dist/storage/interface.js.map +1 -0
  215. package/dist/storage/mock-storage.d.ts +67 -0
  216. package/dist/storage/mock-storage.d.ts.map +1 -0
  217. package/dist/storage/mock-storage.js +478 -0
  218. package/dist/storage/mock-storage.js.map +1 -0
  219. package/dist/storage/policies-client.d.ts +77 -0
  220. package/dist/storage/policies-client.d.ts.map +1 -0
  221. package/dist/storage/policies-client.js +115 -0
  222. package/dist/storage/policies-client.js.map +1 -0
  223. package/dist/storage/policy-templates.d.ts +6 -0
  224. package/dist/storage/policy-templates.d.ts.map +1 -0
  225. package/dist/storage/policy-templates.js +290 -0
  226. package/dist/storage/policy-templates.js.map +1 -0
  227. package/dist/storage/policy-types.d.ts +98 -0
  228. package/dist/storage/policy-types.d.ts.map +1 -0
  229. package/dist/storage/policy-types.js +20 -0
  230. package/dist/storage/policy-types.js.map +1 -0
  231. package/dist/storage/storage-client.d.ts +32 -0
  232. package/dist/storage/storage-client.d.ts.map +1 -0
  233. package/dist/storage/storage-client.js +94 -0
  234. package/dist/storage/storage-client.js.map +1 -0
  235. package/dist/storage/tus-upload.d.ts +56 -0
  236. package/dist/storage/tus-upload.d.ts.map +1 -0
  237. package/dist/storage/tus-upload.js +236 -0
  238. package/dist/storage/tus-upload.js.map +1 -0
  239. package/dist/storage/types.d.ts +335 -0
  240. package/dist/storage/types.d.ts.map +1 -0
  241. package/dist/storage/types.js +39 -0
  242. package/dist/storage/types.js.map +1 -0
  243. package/dist/test/auth/helpers.d.ts +33 -0
  244. package/dist/test/auth/helpers.d.ts.map +1 -0
  245. package/dist/test/auth/helpers.js +80 -0
  246. package/dist/test/auth/helpers.js.map +1 -0
  247. package/dist/test/helpers/jwt.d.ts +61 -0
  248. package/dist/test/helpers/jwt.d.ts.map +1 -0
  249. package/dist/test/helpers/jwt.js +132 -0
  250. package/dist/test/helpers/jwt.js.map +1 -0
  251. package/dist/test/helpers/mailpit.d.ts +61 -0
  252. package/dist/test/helpers/mailpit.d.ts.map +1 -0
  253. package/dist/test/helpers/mailpit.js +107 -0
  254. package/dist/test/helpers/mailpit.js.map +1 -0
  255. package/dist/test/setup.d.ts +2 -0
  256. package/dist/test/setup.d.ts.map +1 -0
  257. package/dist/test/setup.js +17 -0
  258. package/dist/test/setup.js.map +1 -0
  259. package/dist/types.d.ts +96 -0
  260. package/dist/types.d.ts.map +1 -0
  261. package/dist/types.js +5 -0
  262. package/dist/types.js.map +1 -0
  263. package/package.json +78 -0
@@ -0,0 +1,135 @@
1
+ import { BaseAuthClient } from "./base-auth.js";
2
+ import type { IAuthClient } from "./auth-client.js";
3
+ import type { TokenManager } from "./token-manager.js";
4
+ import { type EmailPasswordCredentials, type SignUpOptions, type SignUpResult, type OAuthSignInOptions, type MagicLinkOptions, type OtpSignInOptions, type OtpVerifyOptions, type PasswordResetOptions, type UpdatePasswordOptions, type ReauthenticateOptions, type UpdateUserOptions, type EnrollFactorOptions, type ChallengeFactorOptions, type VerifyFactorOptions, type LinkIdentityOptions, type UnlinkIdentityOptions, type VerifyOptions, type ResendVerificationOptions, type Session, type User, type Factor, type UserIdentity, type LogoutScope } from "./types.js";
5
+ import type { AdminInviteOptions, InvitedUser } from "./methods/admin.js";
6
+ /**
7
+ * Mock auth client configuration
8
+ */
9
+ export interface MockAuthClientConfig {
10
+ tokenManager: TokenManager;
11
+ }
12
+ /**
13
+ * Mock implementation of AuthClient
14
+ *
15
+ * Uses the same response generation as MSW handlers,
16
+ * ensuring consistent behavior between SDK tests and developer tests.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { MockAuthClient, TokenManager, createMemoryStore } from "@kaiz11/stack-client";
21
+ *
22
+ * const tokenManager = new TokenManager({ store: createMemoryStore() });
23
+ * const auth = new MockAuthClient({ tokenManager });
24
+ *
25
+ * // Use like real AuthClient
26
+ * await auth.signInWithPassword({ email: "test@example.com", password: "password" });
27
+ * const user = auth.getUser();
28
+ * ```
29
+ */
30
+ export declare class MockAuthClient extends BaseAuthClient implements IAuthClient {
31
+ private enrolledFactors;
32
+ constructor(config: MockAuthClientConfig);
33
+ /**
34
+ * Mock sign in with password
35
+ */
36
+ signInWithPassword(credentials: EmailPasswordCredentials): Promise<Session>;
37
+ /**
38
+ * Mock sign up
39
+ */
40
+ signUp(options: SignUpOptions): Promise<SignUpResult>;
41
+ /**
42
+ * Mock sign out
43
+ */
44
+ signOut(_scope?: LogoutScope): Promise<void>;
45
+ /**
46
+ * Mock OAuth sign in - returns a mock authorization URL
47
+ */
48
+ signInWithOAuth(options: OAuthSignInOptions): Promise<{
49
+ url: string;
50
+ provider: string;
51
+ }>;
52
+ /**
53
+ * Mock OAuth callback - simulates successful OAuth completion
54
+ */
55
+ handleOAuthCallback(): Promise<Session | null>;
56
+ /**
57
+ * Mock magic link - simulates sending email
58
+ */
59
+ signInWithMagicLink(_options: MagicLinkOptions): Promise<void>;
60
+ /**
61
+ * Mock OTP send - simulates sending OTP
62
+ */
63
+ signInWithOtp(_options: OtpSignInOptions): Promise<void>;
64
+ /**
65
+ * Mock OTP verify - simulates verification
66
+ */
67
+ verifyOtp(options: OtpVerifyOptions): Promise<Session>;
68
+ /**
69
+ * Mock password reset email
70
+ */
71
+ resetPasswordForEmail(_options: PasswordResetOptions): Promise<void>;
72
+ /**
73
+ * Mock update password
74
+ */
75
+ updatePassword(_options: UpdatePasswordOptions): Promise<Session>;
76
+ /**
77
+ * Mock reauthenticate - sends OTP to user's email (simulated)
78
+ */
79
+ reauthenticate(_options?: ReauthenticateOptions): Promise<void>;
80
+ /**
81
+ * Mock refresh session
82
+ */
83
+ refreshSession(): Promise<Session>;
84
+ /**
85
+ * User management methods
86
+ */
87
+ get user(): {
88
+ getCurrent: () => User | null;
89
+ get: () => Promise<User>;
90
+ update: (options: UpdateUserOptions) => Promise<Session>;
91
+ };
92
+ /**
93
+ * MFA methods
94
+ */
95
+ get mfa(): {
96
+ enroll: (options: EnrollFactorOptions) => Promise<{
97
+ id: string;
98
+ totpUri?: string;
99
+ qrCode?: string;
100
+ }>;
101
+ challenge: (options: ChallengeFactorOptions) => Promise<{
102
+ id: string;
103
+ expiresAt: number;
104
+ }>;
105
+ verify: (options: VerifyFactorOptions) => Promise<Session>;
106
+ unenroll: (factorId: string) => Promise<void>;
107
+ listFactors: () => Promise<Factor[]>;
108
+ getAuthenticatorAssuranceLevel: () => {
109
+ currentLevel: "aal1" | "aal2" | null;
110
+ nextLevel: "aal1" | "aal2" | null;
111
+ };
112
+ };
113
+ /**
114
+ * Identity management methods
115
+ */
116
+ get identities(): {
117
+ list: () => Promise<UserIdentity[]>;
118
+ link: (options: LinkIdentityOptions) => Promise<{
119
+ url: string;
120
+ provider: string;
121
+ }>;
122
+ unlink: (_options: UnlinkIdentityOptions) => Promise<void>;
123
+ };
124
+ /**
125
+ * Verification methods
126
+ */
127
+ get verification(): {
128
+ verify: (options: VerifyOptions) => Promise<Session>;
129
+ resend: (_options: ResendVerificationOptions) => Promise<void>;
130
+ };
131
+ get admin(): {
132
+ inviteUserByEmail: (options: AdminInviteOptions) => Promise<InvitedUser>;
133
+ };
134
+ }
135
+ //# sourceMappingURL=mock-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-auth.d.ts","sourceRoot":"","sources":["../../src/auth/mock-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,417 @@
1
+ import { AuthError } from "../lib/errors.js";
2
+ import { createTokenResponse, } from "../mocks/responses.js";
3
+ import { mockState, requestCounts, delay } from "../mocks/state.js";
4
+ import { BaseAuthClient } from "./base-auth.js";
5
+ import { normalizeSession, normalizeUser, } from "./types.js";
6
+ /**
7
+ * Mock implementation of AuthClient
8
+ *
9
+ * Uses the same response generation as MSW handlers,
10
+ * ensuring consistent behavior between SDK tests and developer tests.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { MockAuthClient, TokenManager, createMemoryStore } from "@kaiz11/stack-client";
15
+ *
16
+ * const tokenManager = new TokenManager({ store: createMemoryStore() });
17
+ * const auth = new MockAuthClient({ tokenManager });
18
+ *
19
+ * // Use like real AuthClient
20
+ * await auth.signInWithPassword({ email: "test@example.com", password: "password" });
21
+ * const user = auth.getUser();
22
+ * ```
23
+ */
24
+ export class MockAuthClient extends BaseAuthClient {
25
+ // Mock state for enrolled factors
26
+ enrolledFactors = [];
27
+ constructor(config) {
28
+ super(config.tokenManager);
29
+ // Set the refresh function on tokenManager for auto-refresh support
30
+ // This allows TokenManager's auto-refresh timer to use our mock logic
31
+ this.tokenManager.setRefreshFn(() => this.refreshSession());
32
+ }
33
+ // ============================================
34
+ // Password Authentication
35
+ // ============================================
36
+ /**
37
+ * Mock sign in with password
38
+ */
39
+ async signInWithPassword(credentials) {
40
+ await delay(mockState.latency);
41
+ requestCounts.signIn++;
42
+ if (mockState.shouldFailSignIn) {
43
+ throw new AuthError(mockState.signInError.msg, mockState.signInError.error_code, mockState.signInError.code);
44
+ }
45
+ const response = createTokenResponse({ email: credentials.email });
46
+ const session = normalizeSession(response);
47
+ this.tokenManager.setSession(session);
48
+ return session;
49
+ }
50
+ /**
51
+ * Mock sign up
52
+ */
53
+ async signUp(options) {
54
+ await delay(mockState.latency);
55
+ requestCounts.signUp++;
56
+ if (mockState.shouldFailSignUp) {
57
+ throw new AuthError(mockState.signUpError.msg, mockState.signUpError.error_code, mockState.signUpError.code);
58
+ }
59
+ const tokenOptions = {
60
+ email: options.email,
61
+ };
62
+ if (options.data) {
63
+ tokenOptions.userMetadata = options.data;
64
+ }
65
+ const response = createTokenResponse(tokenOptions);
66
+ const session = normalizeSession(response);
67
+ this.tokenManager.setSession(session);
68
+ // Mock mode always returns a session (no email verification)
69
+ return { session, user: session.user };
70
+ }
71
+ /**
72
+ * Mock sign out
73
+ */
74
+ async signOut(_scope = "local") {
75
+ // Don't count as a request if not authenticated
76
+ if (!this.tokenManager.getSession()) {
77
+ return;
78
+ }
79
+ await delay(mockState.latency);
80
+ requestCounts.signOut++;
81
+ this.tokenManager.clearSession();
82
+ }
83
+ // ============================================
84
+ // OAuth Authentication
85
+ // ============================================
86
+ /**
87
+ * Mock OAuth sign in - returns a mock authorization URL
88
+ */
89
+ async signInWithOAuth(options) {
90
+ await delay(mockState.latency);
91
+ const redirectTo = options.redirectTo ?? "http://localhost:3000/callback";
92
+ const url = `https://mock-auth.example.com/authorize?provider=${options.provider}&redirect_to=${encodeURIComponent(redirectTo)}`;
93
+ return { url, provider: options.provider };
94
+ }
95
+ /**
96
+ * Mock OAuth callback - simulates successful OAuth completion
97
+ */
98
+ async handleOAuthCallback() {
99
+ await delay(mockState.latency);
100
+ // Simulate getting tokens from URL hash/params
101
+ const response = createTokenResponse({ email: "oauth-user@example.com" });
102
+ const session = normalizeSession(response);
103
+ this.tokenManager.setSession(session);
104
+ return session;
105
+ }
106
+ // ============================================
107
+ // Magic Link Authentication
108
+ // ============================================
109
+ /**
110
+ * Mock magic link - simulates sending email
111
+ */
112
+ async signInWithMagicLink(_options) {
113
+ await delay(mockState.latency);
114
+ // In real implementation, this triggers email sending
115
+ // Mock just simulates success
116
+ }
117
+ // ============================================
118
+ // OTP Authentication
119
+ // ============================================
120
+ /**
121
+ * Mock OTP send - simulates sending OTP
122
+ */
123
+ async signInWithOtp(_options) {
124
+ await delay(mockState.latency);
125
+ // In real implementation, this triggers OTP sending
126
+ // Mock just simulates success
127
+ }
128
+ /**
129
+ * Mock OTP verify - simulates verification
130
+ */
131
+ async verifyOtp(options) {
132
+ await delay(mockState.latency);
133
+ const email = "email" in options && options.email
134
+ ? options.email
135
+ : `${options.phone}@phone.local`;
136
+ const response = createTokenResponse({ email });
137
+ const session = normalizeSession(response);
138
+ this.tokenManager.setSession(session);
139
+ return session;
140
+ }
141
+ // ============================================
142
+ // Password Recovery
143
+ // ============================================
144
+ /**
145
+ * Mock password reset email
146
+ */
147
+ async resetPasswordForEmail(_options) {
148
+ await delay(mockState.latency);
149
+ // Simulates sending password reset email
150
+ }
151
+ /**
152
+ * Mock update password
153
+ */
154
+ async updatePassword(_options) {
155
+ await delay(mockState.latency);
156
+ const currentSession = this.tokenManager.getSession();
157
+ if (!currentSession) {
158
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
159
+ }
160
+ // Return current session (password updated)
161
+ return currentSession;
162
+ }
163
+ /**
164
+ * Mock reauthenticate - sends OTP to user's email (simulated)
165
+ */
166
+ async reauthenticate(_options) {
167
+ await delay(mockState.latency);
168
+ if (!this.tokenManager.getSession()) {
169
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
170
+ }
171
+ }
172
+ // ============================================
173
+ // Session Management
174
+ // ============================================
175
+ /**
176
+ * Mock refresh session
177
+ */
178
+ async refreshSession() {
179
+ // Throw if not authenticated
180
+ if (!this.tokenManager.getSession()) {
181
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
182
+ }
183
+ await delay(mockState.latency);
184
+ requestCounts.refresh++;
185
+ if (mockState.shouldFailRefresh) {
186
+ this.tokenManager.clearSession();
187
+ throw new AuthError(mockState.refreshError.msg, mockState.refreshError.error_code, mockState.refreshError.code);
188
+ }
189
+ // Get current session to preserve email
190
+ const currentSession = this.tokenManager.getSession();
191
+ const email = currentSession?.user.email ?? "user@example.com";
192
+ const response = createTokenResponse({
193
+ email,
194
+ refreshToken: `new-refresh-${Date.now()}`,
195
+ });
196
+ const session = normalizeSession(response);
197
+ this.tokenManager.setSession(session, "TOKEN_REFRESHED");
198
+ return session;
199
+ }
200
+ // ============================================
201
+ // User Management
202
+ // ============================================
203
+ /**
204
+ * User management methods
205
+ */
206
+ get user() {
207
+ return {
208
+ getCurrent: () => {
209
+ return this.getUser();
210
+ },
211
+ get: async () => {
212
+ await delay(mockState.latency);
213
+ const session = this.tokenManager.getSession();
214
+ if (!session) {
215
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
216
+ }
217
+ return session.user;
218
+ },
219
+ update: async (options) => {
220
+ await delay(mockState.latency);
221
+ const session = this.tokenManager.getSession();
222
+ if (!session) {
223
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
224
+ }
225
+ // Create updated user with new metadata
226
+ const updatedUser = {
227
+ ...session.user,
228
+ email: options.email ?? session.user.email,
229
+ phone: options.phone ?? session.user.phone,
230
+ userMetadata: {
231
+ ...session.user.userMetadata,
232
+ ...(options.data ?? {}),
233
+ },
234
+ };
235
+ // Create new session with updated user
236
+ const updatedSession = {
237
+ ...session,
238
+ user: updatedUser,
239
+ };
240
+ this.tokenManager.setSession(updatedSession);
241
+ return updatedSession;
242
+ },
243
+ };
244
+ }
245
+ // ============================================
246
+ // MFA
247
+ // ============================================
248
+ /**
249
+ * MFA methods
250
+ */
251
+ get mfa() {
252
+ return {
253
+ enroll: async (options) => {
254
+ await delay(mockState.latency);
255
+ if (!this.tokenManager.getSession()) {
256
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
257
+ }
258
+ const factorId = `factor-${Date.now()}`;
259
+ const factor = {
260
+ id: factorId,
261
+ type: options.type,
262
+ status: "unverified",
263
+ friendlyName: options.friendlyName,
264
+ createdAt: new Date().toISOString(),
265
+ updatedAt: new Date().toISOString(),
266
+ };
267
+ this.enrolledFactors.push(factor);
268
+ if (options.type === "totp") {
269
+ return {
270
+ id: factorId,
271
+ totpUri: `otpauth://totp/MockApp:user@example.com?secret=MOCK_SECRET&issuer=MockApp`,
272
+ qrCode: "data:image/png;base64,MOCK_QR_CODE",
273
+ };
274
+ }
275
+ return { id: factorId };
276
+ },
277
+ challenge: async (options) => {
278
+ await delay(mockState.latency);
279
+ if (!this.tokenManager.getSession()) {
280
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
281
+ }
282
+ const factor = this.enrolledFactors.find((f) => f.id === options.factorId);
283
+ if (!factor) {
284
+ throw new AuthError("Factor not found", "factor_not_found", 404);
285
+ }
286
+ return {
287
+ id: `challenge-${Date.now()}`,
288
+ expiresAt: Date.now() + 300000, // 5 minutes
289
+ };
290
+ },
291
+ verify: async (options) => {
292
+ await delay(mockState.latency);
293
+ const session = this.tokenManager.getSession();
294
+ if (!session) {
295
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
296
+ }
297
+ const factor = this.enrolledFactors.find((f) => f.id === options.factorId);
298
+ if (!factor) {
299
+ throw new AuthError("Factor not found", "factor_not_found", 404);
300
+ }
301
+ // Mark factor as verified
302
+ factor.status = "verified";
303
+ // Return session (in real impl, tokens would have aal2)
304
+ return session;
305
+ },
306
+ unenroll: async (factorId) => {
307
+ await delay(mockState.latency);
308
+ if (!this.tokenManager.getSession()) {
309
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
310
+ }
311
+ const index = this.enrolledFactors.findIndex((f) => f.id === factorId);
312
+ if (index === -1) {
313
+ throw new AuthError("Factor not found", "factor_not_found", 404);
314
+ }
315
+ this.enrolledFactors.splice(index, 1);
316
+ },
317
+ listFactors: async () => {
318
+ await delay(mockState.latency);
319
+ if (!this.tokenManager.getSession()) {
320
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
321
+ }
322
+ return [...this.enrolledFactors];
323
+ },
324
+ getAuthenticatorAssuranceLevel: () => {
325
+ const session = this.tokenManager.getSession();
326
+ if (!session) {
327
+ return { currentLevel: null, nextLevel: null };
328
+ }
329
+ const hasVerifiedFactor = this.enrolledFactors.some((f) => f.status === "verified");
330
+ return {
331
+ currentLevel: "aal1",
332
+ nextLevel: hasVerifiedFactor ? "aal2" : "aal1",
333
+ };
334
+ },
335
+ };
336
+ }
337
+ // ============================================
338
+ // Identity Management
339
+ // ============================================
340
+ /**
341
+ * Identity management methods
342
+ */
343
+ get identities() {
344
+ return {
345
+ list: async () => {
346
+ await delay(mockState.latency);
347
+ const session = this.tokenManager.getSession();
348
+ if (!session) {
349
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
350
+ }
351
+ return session.user.identities ?? [];
352
+ },
353
+ link: async (options) => {
354
+ await delay(mockState.latency);
355
+ if (!this.tokenManager.getSession()) {
356
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
357
+ }
358
+ const redirectTo = options.redirectTo ?? "http://localhost:3000/callback";
359
+ const url = `https://mock-auth.example.com/authorize?provider=${options.provider}&redirect_to=${encodeURIComponent(redirectTo)}&linking=true`;
360
+ return { url, provider: options.provider };
361
+ },
362
+ unlink: async (_options) => {
363
+ await delay(mockState.latency);
364
+ if (!this.tokenManager.getSession()) {
365
+ throw new AuthError("Not authenticated", "not_authenticated", 401);
366
+ }
367
+ // In real implementation, this would remove the identity
368
+ },
369
+ };
370
+ }
371
+ // ============================================
372
+ // Verification
373
+ // ============================================
374
+ /**
375
+ * Verification methods
376
+ */
377
+ get verification() {
378
+ return {
379
+ verify: async (options) => {
380
+ await delay(mockState.latency);
381
+ const email = "email" in options && options.email
382
+ ? options.email
383
+ : `${options.phone}@phone.local`;
384
+ const response = createTokenResponse({ email });
385
+ const session = normalizeSession(response);
386
+ this.tokenManager.setSession(session);
387
+ return session;
388
+ },
389
+ resend: async (_options) => {
390
+ await delay(mockState.latency);
391
+ },
392
+ };
393
+ }
394
+ get admin() {
395
+ return {
396
+ inviteUserByEmail: async (options) => {
397
+ await delay(mockState.latency);
398
+ const now = new Date().toISOString();
399
+ const user = normalizeUser({
400
+ id: `user-${Date.now()}`,
401
+ aud: "authenticated",
402
+ email: options.email,
403
+ created_at: now,
404
+ updated_at: now,
405
+ app_metadata: { provider: "email", providers: ["email"] },
406
+ user_metadata: options.data ?? {},
407
+ });
408
+ return {
409
+ ...user,
410
+ invitedAt: now,
411
+ confirmationSentAt: now,
412
+ };
413
+ },
414
+ };
415
+ }
416
+ }
417
+ //# sourceMappingURL=mock-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-auth.js","sourceRoot":"","sources":["../../src/auth/mock-auth.ts"],"names":[],"mappings":"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"}