@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,215 @@
1
+ import { type TokenPayload, type VerifyOptions, type JWKSKeyGetter } from "./verify.js";
2
+ /**
3
+ * User info extracted from a verified token
4
+ */
5
+ export interface AuthUser {
6
+ /** User ID */
7
+ id: string;
8
+ /** Email address */
9
+ email: string | null;
10
+ /** Phone number */
11
+ phone: string | null;
12
+ /** User role */
13
+ role: string;
14
+ /** Authenticator assurance level */
15
+ aal: "aal1" | "aal2";
16
+ /** App metadata */
17
+ appMetadata: Record<string, unknown>;
18
+ /** User metadata */
19
+ userMetadata: Record<string, unknown>;
20
+ }
21
+ /**
22
+ * Auth context extracted from a request
23
+ */
24
+ export interface AuthContext {
25
+ /** Whether the request is authenticated */
26
+ isAuthenticated: boolean;
27
+ /** Authenticated user (null if not authenticated) */
28
+ user: AuthUser | null;
29
+ /** Raw token payload (null if not authenticated) */
30
+ tokenPayload: TokenPayload | null;
31
+ /** Access token (null if not authenticated) */
32
+ accessToken: string | null;
33
+ }
34
+ /**
35
+ * Request-like interface (works with Hono, Express, Fetch API, etc.)
36
+ */
37
+ interface RequestLike {
38
+ headers: {
39
+ get(name: string): string | null;
40
+ };
41
+ }
42
+ /**
43
+ * Get authenticated user from a request
44
+ *
45
+ * Extracts and verifies the JWT from the Authorization header.
46
+ * Returns null if no token or invalid token.
47
+ *
48
+ * ## Token Handling
49
+ *
50
+ * | Token Type | Result |
51
+ * |---------------|-------------------------------------------------|
52
+ * | No token | Returns `null` |
53
+ * | Invalid token | Returns `null` |
54
+ * | Anon JWT | Returns `AuthUser` with `role = "anon"` |
55
+ * | Auth JWT | Returns `AuthUser` with `role = "authenticated"`|
56
+ * | Service JWT | Returns `AuthUser` with `role = "service_role"` |
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * import { getUserFromRequest, createJWKS } from "@kaiz11/stack-client/auth/server";
61
+ *
62
+ * const getKey = createJWKS("https://stack.zenku.app", "my-tenant");
63
+ *
64
+ * // Hono
65
+ * app.get("/api/me", async (c) => {
66
+ * const user = await getUserFromRequest(c.req.raw, getKey);
67
+ * if (!user) {
68
+ * return c.json({ error: "Unauthorized" }, 401);
69
+ * }
70
+ * return c.json({ user });
71
+ * });
72
+ *
73
+ * // Express
74
+ * app.get("/api/me", async (req, res) => {
75
+ * const user = await getUserFromRequest(req, getKey);
76
+ * if (!user) {
77
+ * return res.status(401).json({ error: "Unauthorized" });
78
+ * }
79
+ * res.json({ user });
80
+ * });
81
+ * ```
82
+ */
83
+ export declare function getUserFromRequest(request: RequestLike, keyGetter: JWKSKeyGetter, options?: VerifyOptions): Promise<AuthUser | null>;
84
+ /**
85
+ * Get auth context from a request
86
+ *
87
+ * Returns full auth context including authentication status,
88
+ * user info, and raw token payload.
89
+ *
90
+ * ## Token Handling
91
+ *
92
+ * | Token Type | `isAuthenticated` | `user.role` |
93
+ * |---------------|-------------------|---------------------|
94
+ * | No token | `false` | N/A (`user = null`) |
95
+ * | Invalid token | `false` | N/A (`user = null`) |
96
+ * | Anon JWT | `true` | `"anon"` |
97
+ * | Auth JWT | `true` | `"authenticated"` |
98
+ * | Service JWT | `true` | `"service_role"` |
99
+ *
100
+ * **Note:** `isAuthenticated = true` for anon tokens because they are
101
+ * valid, signed JWTs. Check `user.role` if you need to distinguish.
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * import { getAuthContext, createJWKS } from "@kaiz11/stack-client/auth/server";
106
+ *
107
+ * const getKey = createJWKS("https://stack.zenku.app", "my-tenant");
108
+ * const ctx = await getAuthContext(request, getKey);
109
+ *
110
+ * if (!ctx.isAuthenticated) {
111
+ * // No token or invalid token
112
+ * } else if (ctx.user.role === "anon") {
113
+ * // Valid anon token
114
+ * } else {
115
+ * // Authenticated or service_role
116
+ * }
117
+ * ```
118
+ */
119
+ export declare function getAuthContext(request: RequestLike, keyGetter: JWKSKeyGetter, options?: VerifyOptions): Promise<AuthContext>;
120
+ /**
121
+ * Require authentication for a request
122
+ *
123
+ * Throws VerifyError if not authenticated.
124
+ *
125
+ * ## Token Handling
126
+ *
127
+ * | Token Type | Result |
128
+ * |---------------|-------------------------------------------------|
129
+ * | No token | Throws `VerifyError` (401) |
130
+ * | Invalid token | Throws `VerifyError` (401) |
131
+ * | Anon JWT | ✅ Returns `AuthUser` with `role = "anon"` |
132
+ * | Auth JWT | ✅ Returns `AuthUser` with `role = "authenticated"` |
133
+ * | Service JWT | ✅ Returns `AuthUser` with `role = "service_role"` |
134
+ *
135
+ * **Note:** Anon tokens pass because they are valid JWTs. Use `requireRole`
136
+ * if you need to reject anon tokens.
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * import { requireAuth, createJWKS } from "@kaiz11/stack-client/auth/server";
141
+ *
142
+ * const getKey = createJWKS("https://stack.zenku.app", "my-tenant");
143
+ *
144
+ * try {
145
+ * const user = await requireAuth(request, getKey);
146
+ * // User has a valid token (anon, authenticated, or service_role)
147
+ * } catch (error) {
148
+ * if (error instanceof VerifyError) {
149
+ * return new Response(error.message, { status: error.statusCode });
150
+ * }
151
+ * }
152
+ * ```
153
+ */
154
+ export declare function requireAuth(request: RequestLike, keyGetter: JWKSKeyGetter, options?: VerifyOptions): Promise<AuthUser>;
155
+ /**
156
+ * Require a specific role
157
+ *
158
+ * ## Token Handling
159
+ *
160
+ * | Token Type | `requireRole(..., "authenticated")` | `requireRole(..., "service_role")` |
161
+ * |---------------|-------------------------------------|-----------------------------------|
162
+ * | No token | Throws (401) | Throws (401) |
163
+ * | Invalid token | Throws (401) | Throws (401) |
164
+ * | Anon JWT | Throws (403) | Throws (403) |
165
+ * | Auth JWT | ✅ Returns user | Throws (403) |
166
+ * | Service JWT | Throws (403) | ✅ Returns user |
167
+ *
168
+ * **Common patterns:**
169
+ * - `requireRole(req, key, "authenticated")` — Reject anon, require login
170
+ * - `requireRole(req, key, "service_role")` — Server-only / admin endpoints
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * import { requireRole, createJWKS } from "@kaiz11/stack-client/auth/server";
175
+ *
176
+ * const getKey = createJWKS("https://stack.zenku.app", "my-tenant");
177
+ *
178
+ * // Require actual login (reject anon)
179
+ * const user = await requireRole(request, getKey, "authenticated");
180
+ *
181
+ * // Require service_role for admin endpoints
182
+ * const admin = await requireRole(request, getKey, "service_role");
183
+ * ```
184
+ */
185
+ export declare function requireRole(request: RequestLike, keyGetter: JWKSKeyGetter, role: string): Promise<AuthUser>;
186
+ /**
187
+ * Require MFA (AAL2)
188
+ *
189
+ * ## Token Handling
190
+ *
191
+ * | Token Type | AAL Level | Result |
192
+ * |------------------|-----------|------------------|
193
+ * | No token | N/A | Throws (401) |
194
+ * | Invalid token | N/A | Throws (401) |
195
+ * | Anon JWT | aal1 | Throws (403) |
196
+ * | Auth JWT | aal1 | Throws (403) |
197
+ * | Auth JWT + MFA | aal2 | ✅ Returns user |
198
+ * | Service JWT | aal1 | Throws (403) |
199
+ *
200
+ * **Note:** Service role tokens typically have aal1. For admin access to
201
+ * MFA-protected operations, check the role explicitly.
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * import { requireMfa, createJWKS } from "@kaiz11/stack-client/auth/server";
206
+ *
207
+ * const getKey = createJWKS("https://stack.zenku.app", "my-tenant");
208
+ *
209
+ * // Require MFA for sensitive operations
210
+ * const user = await requireMfa(request, getKey);
211
+ * ```
212
+ */
213
+ export declare function requireMfa(request: RequestLike, keyGetter: JWKSKeyGetter): Promise<AuthUser>;
214
+ export {};
215
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/auth/server/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,cAAc;IACd,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,mBAAmB;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,eAAe,EAAE,OAAO,CAAC;IACzB,qDAAqD;IACrD,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,oDAAoD;IACpD,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,+CAA+C;IAC/C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;GAEG;AACH,UAAU,WAAW;IACnB,OAAO,EAAE;QACP,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;KAClC,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAc1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,WAAW,CAAC,CA6BtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,QAAQ,CAAC,CAUnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,GACvB,OAAO,CAAC,QAAQ,CAAC,CAEnB"}
@@ -0,0 +1,241 @@
1
+ import { verifyToken, extractBearerToken, VerifyError, } from "./verify.js";
2
+ /**
3
+ * Get authenticated user from a request
4
+ *
5
+ * Extracts and verifies the JWT from the Authorization header.
6
+ * Returns null if no token or invalid token.
7
+ *
8
+ * ## Token Handling
9
+ *
10
+ * | Token Type | Result |
11
+ * |---------------|-------------------------------------------------|
12
+ * | No token | Returns `null` |
13
+ * | Invalid token | Returns `null` |
14
+ * | Anon JWT | Returns `AuthUser` with `role = "anon"` |
15
+ * | Auth JWT | Returns `AuthUser` with `role = "authenticated"`|
16
+ * | Service JWT | Returns `AuthUser` with `role = "service_role"` |
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { getUserFromRequest, createJWKS } from "@kaiz11/stack-client/auth/server";
21
+ *
22
+ * const getKey = createJWKS("https://stack.zenku.app", "my-tenant");
23
+ *
24
+ * // Hono
25
+ * app.get("/api/me", async (c) => {
26
+ * const user = await getUserFromRequest(c.req.raw, getKey);
27
+ * if (!user) {
28
+ * return c.json({ error: "Unauthorized" }, 401);
29
+ * }
30
+ * return c.json({ user });
31
+ * });
32
+ *
33
+ * // Express
34
+ * app.get("/api/me", async (req, res) => {
35
+ * const user = await getUserFromRequest(req, getKey);
36
+ * if (!user) {
37
+ * return res.status(401).json({ error: "Unauthorized" });
38
+ * }
39
+ * res.json({ user });
40
+ * });
41
+ * ```
42
+ */
43
+ export async function getUserFromRequest(request, keyGetter, options) {
44
+ const authHeader = request.headers.get("authorization");
45
+ const token = extractBearerToken(authHeader);
46
+ if (!token) {
47
+ return null;
48
+ }
49
+ try {
50
+ const payload = await verifyToken(token, keyGetter, options);
51
+ return tokenPayloadToUser(payload);
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ }
57
+ /**
58
+ * Get auth context from a request
59
+ *
60
+ * Returns full auth context including authentication status,
61
+ * user info, and raw token payload.
62
+ *
63
+ * ## Token Handling
64
+ *
65
+ * | Token Type | `isAuthenticated` | `user.role` |
66
+ * |---------------|-------------------|---------------------|
67
+ * | No token | `false` | N/A (`user = null`) |
68
+ * | Invalid token | `false` | N/A (`user = null`) |
69
+ * | Anon JWT | `true` | `"anon"` |
70
+ * | Auth JWT | `true` | `"authenticated"` |
71
+ * | Service JWT | `true` | `"service_role"` |
72
+ *
73
+ * **Note:** `isAuthenticated = true` for anon tokens because they are
74
+ * valid, signed JWTs. Check `user.role` if you need to distinguish.
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * import { getAuthContext, createJWKS } from "@kaiz11/stack-client/auth/server";
79
+ *
80
+ * const getKey = createJWKS("https://stack.zenku.app", "my-tenant");
81
+ * const ctx = await getAuthContext(request, getKey);
82
+ *
83
+ * if (!ctx.isAuthenticated) {
84
+ * // No token or invalid token
85
+ * } else if (ctx.user.role === "anon") {
86
+ * // Valid anon token
87
+ * } else {
88
+ * // Authenticated or service_role
89
+ * }
90
+ * ```
91
+ */
92
+ export async function getAuthContext(request, keyGetter, options) {
93
+ const authHeader = request.headers.get("authorization");
94
+ const token = extractBearerToken(authHeader);
95
+ if (!token) {
96
+ return {
97
+ isAuthenticated: false,
98
+ user: null,
99
+ tokenPayload: null,
100
+ accessToken: null,
101
+ };
102
+ }
103
+ try {
104
+ const payload = await verifyToken(token, keyGetter, options);
105
+ return {
106
+ isAuthenticated: true,
107
+ user: tokenPayloadToUser(payload),
108
+ tokenPayload: payload,
109
+ accessToken: token,
110
+ };
111
+ }
112
+ catch {
113
+ return {
114
+ isAuthenticated: false,
115
+ user: null,
116
+ tokenPayload: null,
117
+ accessToken: null,
118
+ };
119
+ }
120
+ }
121
+ /**
122
+ * Require authentication for a request
123
+ *
124
+ * Throws VerifyError if not authenticated.
125
+ *
126
+ * ## Token Handling
127
+ *
128
+ * | Token Type | Result |
129
+ * |---------------|-------------------------------------------------|
130
+ * | No token | Throws `VerifyError` (401) |
131
+ * | Invalid token | Throws `VerifyError` (401) |
132
+ * | Anon JWT | ✅ Returns `AuthUser` with `role = "anon"` |
133
+ * | Auth JWT | ✅ Returns `AuthUser` with `role = "authenticated"` |
134
+ * | Service JWT | ✅ Returns `AuthUser` with `role = "service_role"` |
135
+ *
136
+ * **Note:** Anon tokens pass because they are valid JWTs. Use `requireRole`
137
+ * if you need to reject anon tokens.
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * import { requireAuth, createJWKS } from "@kaiz11/stack-client/auth/server";
142
+ *
143
+ * const getKey = createJWKS("https://stack.zenku.app", "my-tenant");
144
+ *
145
+ * try {
146
+ * const user = await requireAuth(request, getKey);
147
+ * // User has a valid token (anon, authenticated, or service_role)
148
+ * } catch (error) {
149
+ * if (error instanceof VerifyError) {
150
+ * return new Response(error.message, { status: error.statusCode });
151
+ * }
152
+ * }
153
+ * ```
154
+ */
155
+ export async function requireAuth(request, keyGetter, options) {
156
+ const authHeader = request.headers.get("authorization");
157
+ const token = extractBearerToken(authHeader);
158
+ if (!token) {
159
+ throw VerifyError.missingToken();
160
+ }
161
+ const payload = await verifyToken(token, keyGetter, options);
162
+ return tokenPayloadToUser(payload);
163
+ }
164
+ /**
165
+ * Require a specific role
166
+ *
167
+ * ## Token Handling
168
+ *
169
+ * | Token Type | `requireRole(..., "authenticated")` | `requireRole(..., "service_role")` |
170
+ * |---------------|-------------------------------------|-----------------------------------|
171
+ * | No token | Throws (401) | Throws (401) |
172
+ * | Invalid token | Throws (401) | Throws (401) |
173
+ * | Anon JWT | Throws (403) | Throws (403) |
174
+ * | Auth JWT | ✅ Returns user | Throws (403) |
175
+ * | Service JWT | Throws (403) | ✅ Returns user |
176
+ *
177
+ * **Common patterns:**
178
+ * - `requireRole(req, key, "authenticated")` — Reject anon, require login
179
+ * - `requireRole(req, key, "service_role")` — Server-only / admin endpoints
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * import { requireRole, createJWKS } from "@kaiz11/stack-client/auth/server";
184
+ *
185
+ * const getKey = createJWKS("https://stack.zenku.app", "my-tenant");
186
+ *
187
+ * // Require actual login (reject anon)
188
+ * const user = await requireRole(request, getKey, "authenticated");
189
+ *
190
+ * // Require service_role for admin endpoints
191
+ * const admin = await requireRole(request, getKey, "service_role");
192
+ * ```
193
+ */
194
+ export async function requireRole(request, keyGetter, role) {
195
+ return requireAuth(request, keyGetter, { requiredRole: role });
196
+ }
197
+ /**
198
+ * Require MFA (AAL2)
199
+ *
200
+ * ## Token Handling
201
+ *
202
+ * | Token Type | AAL Level | Result |
203
+ * |------------------|-----------|------------------|
204
+ * | No token | N/A | Throws (401) |
205
+ * | Invalid token | N/A | Throws (401) |
206
+ * | Anon JWT | aal1 | Throws (403) |
207
+ * | Auth JWT | aal1 | Throws (403) |
208
+ * | Auth JWT + MFA | aal2 | ✅ Returns user |
209
+ * | Service JWT | aal1 | Throws (403) |
210
+ *
211
+ * **Note:** Service role tokens typically have aal1. For admin access to
212
+ * MFA-protected operations, check the role explicitly.
213
+ *
214
+ * @example
215
+ * ```typescript
216
+ * import { requireMfa, createJWKS } from "@kaiz11/stack-client/auth/server";
217
+ *
218
+ * const getKey = createJWKS("https://stack.zenku.app", "my-tenant");
219
+ *
220
+ * // Require MFA for sensitive operations
221
+ * const user = await requireMfa(request, getKey);
222
+ * ```
223
+ */
224
+ export async function requireMfa(request, keyGetter) {
225
+ return requireAuth(request, keyGetter, { requiredAal: "aal2" });
226
+ }
227
+ /**
228
+ * Convert token payload to AuthUser
229
+ */
230
+ function tokenPayloadToUser(payload) {
231
+ return {
232
+ id: payload.sub,
233
+ email: payload.email ?? null,
234
+ phone: payload.phone ?? null,
235
+ role: payload.role,
236
+ aal: payload.aal || "aal1",
237
+ appMetadata: payload.app_metadata ?? {},
238
+ userMetadata: payload.user_metadata ?? {},
239
+ };
240
+ }
241
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/auth/server/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Backend auth utilities for server-side token verification
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * // Platform API (omit tenantId)
7
+ * import { createStackAuthMiddleware } from "@kaiz11/stack-client/auth/server";
8
+ *
9
+ * app.use("*", createStackAuthMiddleware({
10
+ * baseUrl: "https://stack.zenku.app",
11
+ * }));
12
+ *
13
+ * // Tenant API (specify tenantId)
14
+ * app.use("*", createStackAuthMiddleware({
15
+ * baseUrl: "https://stack.zenku.app",
16
+ * tenantId: "acme-corp",
17
+ * }));
18
+ * ```
19
+ */
20
+ export { verifyToken, extractBearerToken, createJWKS, getJWKSUrl, createRemoteJWKS, createLocalJWKS, clearJWKSCache, VerifyError, type TokenPayload, type VerifyOptions, type JWKSKeyGetter, } from "./verify.js";
21
+ export { getUserFromRequest, getAuthContext, requireAuth, requireRole, requireMfa, type AuthUser, type AuthContext, } from "./helpers.js";
22
+ export { createStackAuthMiddleware, optionalStackAuthMiddleware, createAuthMiddleware, optionalAuthMiddleware, requireRoleMiddleware, requireMfaMiddleware, type StackAuthMiddlewareConfig, type AuthMiddlewareConfig, type OptionalStackAuthConfig, type OptionalAuthConfig, } from "./middleware.js";
23
+ export { fetchAnonKey, fetchAnonKeyCached, clearAnonKeyCache, buildPublicKeyUrl, AnonKeyError, } from "../../lib/keys.js";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EACL,WAAW,EACX,kBAAkB,EAElB,UAAU,EACV,UAAU,EAEV,gBAAgB,EAChB,eAAe,EACf,cAAc,EAEd,WAAW,EAEX,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,WAAW,EACX,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEL,yBAAyB,EACzB,2BAA2B,EAE3B,oBAAoB,EACpB,sBAAsB,EAEtB,qBAAqB,EACrB,oBAAoB,EAEpB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GACb,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Backend auth utilities for server-side token verification
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * // Platform API (omit tenantId)
7
+ * import { createStackAuthMiddleware } from "@kaiz11/stack-client/auth/server";
8
+ *
9
+ * app.use("*", createStackAuthMiddleware({
10
+ * baseUrl: "https://stack.zenku.app",
11
+ * }));
12
+ *
13
+ * // Tenant API (specify tenantId)
14
+ * app.use("*", createStackAuthMiddleware({
15
+ * baseUrl: "https://stack.zenku.app",
16
+ * tenantId: "acme-corp",
17
+ * }));
18
+ * ```
19
+ */
20
+ // Verification
21
+ export { verifyToken, extractBearerToken,
22
+ // JWKS helpers (unified)
23
+ createJWKS, getJWKSUrl,
24
+ // JWKS helpers (advanced)
25
+ createRemoteJWKS, createLocalJWKS, clearJWKSCache,
26
+ // Error
27
+ VerifyError, } from "./verify.js";
28
+ // Helpers
29
+ export { getUserFromRequest, getAuthContext, requireAuth, requireRole, requireMfa, } from "./helpers.js";
30
+ // Middleware
31
+ export {
32
+ // Unified middleware (recommended)
33
+ createStackAuthMiddleware, optionalStackAuthMiddleware,
34
+ // Advanced middleware (with custom keyGetter)
35
+ createAuthMiddleware, optionalAuthMiddleware,
36
+ // Guard middleware
37
+ requireRoleMiddleware, requireMfaMiddleware, } from "./middleware.js";
38
+ // Key utilities (re-export from lib for convenience)
39
+ export { fetchAnonKey, fetchAnonKeyCached, clearAnonKeyCache, buildPublicKeyUrl, AnonKeyError, } from "../../lib/keys.js";
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAe;AACf,OAAO,EACL,WAAW,EACX,kBAAkB;AAClB,yBAAyB;AACzB,UAAU,EACV,UAAU;AACV,0BAA0B;AAC1B,gBAAgB,EAChB,eAAe,EACf,cAAc;AACd,QAAQ;AACR,WAAW,GAKZ,MAAM,aAAa,CAAC;AAErB,UAAU;AACV,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,WAAW,EACX,UAAU,GAGX,MAAM,cAAc,CAAC;AAEtB,aAAa;AACb,OAAO;AACL,mCAAmC;AACnC,yBAAyB,EACzB,2BAA2B;AAC3B,8CAA8C;AAC9C,oBAAoB,EACpB,sBAAsB;AACtB,mBAAmB;AACnB,qBAAqB,EACrB,oBAAoB,GAMrB,MAAM,iBAAiB,CAAC;AAEzB,qDAAqD;AACrD,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GACb,MAAM,mBAAmB,CAAC"}