@pureq/auth 0.2.0

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 (198) hide show
  1. package/README.md +293 -0
  2. package/dist/adapter/capabilities.d.ts +23 -0
  3. package/dist/adapter/capabilities.d.ts.map +1 -0
  4. package/dist/adapter/capabilities.js +77 -0
  5. package/dist/adapter/capabilities.js.map +1 -0
  6. package/dist/adapter/index.d.ts +12 -0
  7. package/dist/adapter/index.d.ts.map +1 -0
  8. package/dist/adapter/index.js +121 -0
  9. package/dist/adapter/index.js.map +1 -0
  10. package/dist/adapter/sql.d.ts +36 -0
  11. package/dist/adapter/sql.d.ts.map +1 -0
  12. package/dist/adapter/sql.js +268 -0
  13. package/dist/adapter/sql.js.map +1 -0
  14. package/dist/adapters/index.d.ts +4 -0
  15. package/dist/adapters/index.d.ts.map +1 -0
  16. package/dist/adapters/index.js +42 -0
  17. package/dist/adapters/index.js.map +1 -0
  18. package/dist/authorization/index.d.ts +8 -0
  19. package/dist/authorization/index.d.ts.map +1 -0
  20. package/dist/authorization/index.js +49 -0
  21. package/dist/authorization/index.js.map +1 -0
  22. package/dist/bridge/index.d.ts +23 -0
  23. package/dist/bridge/index.d.ts.map +1 -0
  24. package/dist/bridge/index.js +124 -0
  25. package/dist/bridge/index.js.map +1 -0
  26. package/dist/callbacks/index.d.ts +8 -0
  27. package/dist/callbacks/index.d.ts.map +1 -0
  28. package/dist/callbacks/index.js +53 -0
  29. package/dist/callbacks/index.js.map +1 -0
  30. package/dist/core/index.d.ts +12 -0
  31. package/dist/core/index.d.ts.map +1 -0
  32. package/dist/core/index.js +481 -0
  33. package/dist/core/index.js.map +1 -0
  34. package/dist/core/kit.d.ts +7 -0
  35. package/dist/core/kit.d.ts.map +1 -0
  36. package/dist/core/kit.js +145 -0
  37. package/dist/core/kit.js.map +1 -0
  38. package/dist/core/starter.d.ts +28 -0
  39. package/dist/core/starter.d.ts.map +1 -0
  40. package/dist/core/starter.js +67 -0
  41. package/dist/core/starter.js.map +1 -0
  42. package/dist/csrf/index.d.ts +7 -0
  43. package/dist/csrf/index.d.ts.map +1 -0
  44. package/dist/csrf/index.js +126 -0
  45. package/dist/csrf/index.js.map +1 -0
  46. package/dist/debug/index.d.ts +8 -0
  47. package/dist/debug/index.d.ts.map +1 -0
  48. package/dist/debug/index.js +21 -0
  49. package/dist/debug/index.js.map +1 -0
  50. package/dist/encryption/index.d.ts +8 -0
  51. package/dist/encryption/index.d.ts.map +1 -0
  52. package/dist/encryption/index.js +43 -0
  53. package/dist/encryption/index.js.map +1 -0
  54. package/dist/events/index.d.ts +22 -0
  55. package/dist/events/index.d.ts.map +1 -0
  56. package/dist/events/index.js +53 -0
  57. package/dist/events/index.js.map +1 -0
  58. package/dist/framework/index.d.ts +10 -0
  59. package/dist/framework/index.d.ts.map +1 -0
  60. package/dist/framework/index.js +68 -0
  61. package/dist/framework/index.js.map +1 -0
  62. package/dist/framework/packs.d.ts +54 -0
  63. package/dist/framework/packs.d.ts.map +1 -0
  64. package/dist/framework/packs.js +124 -0
  65. package/dist/framework/packs.js.map +1 -0
  66. package/dist/framework/recipes.d.ts +6 -0
  67. package/dist/framework/recipes.d.ts.map +1 -0
  68. package/dist/framework/recipes.js +108 -0
  69. package/dist/framework/recipes.js.map +1 -0
  70. package/dist/hooks/index.d.ts +11 -0
  71. package/dist/hooks/index.d.ts.map +1 -0
  72. package/dist/hooks/index.js +95 -0
  73. package/dist/hooks/index.js.map +1 -0
  74. package/dist/hooks/react.d.ts +9 -0
  75. package/dist/hooks/react.d.ts.map +1 -0
  76. package/dist/hooks/react.js +24 -0
  77. package/dist/hooks/react.js.map +1 -0
  78. package/dist/hooks/vue.d.ts +4 -0
  79. package/dist/hooks/vue.d.ts.map +1 -0
  80. package/dist/hooks/vue.js +32 -0
  81. package/dist/hooks/vue.js.map +1 -0
  82. package/dist/index.d.ts +36 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +31 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/jwt/index.d.ts +13 -0
  87. package/dist/jwt/index.d.ts.map +1 -0
  88. package/dist/jwt/index.js +82 -0
  89. package/dist/jwt/index.js.map +1 -0
  90. package/dist/middleware/authBasic.d.ts +5 -0
  91. package/dist/middleware/authBasic.d.ts.map +1 -0
  92. package/dist/middleware/authBasic.js +25 -0
  93. package/dist/middleware/authBasic.js.map +1 -0
  94. package/dist/middleware/authBearer.d.ts +4 -0
  95. package/dist/middleware/authBearer.d.ts.map +1 -0
  96. package/dist/middleware/authBearer.js +26 -0
  97. package/dist/middleware/authBearer.js.map +1 -0
  98. package/dist/middleware/authCustom.d.ts +4 -0
  99. package/dist/middleware/authCustom.d.ts.map +1 -0
  100. package/dist/middleware/authCustom.js +22 -0
  101. package/dist/middleware/authCustom.js.map +1 -0
  102. package/dist/middleware/authRefresh.d.ts +4 -0
  103. package/dist/middleware/authRefresh.d.ts.map +1 -0
  104. package/dist/middleware/authRefresh.js +68 -0
  105. package/dist/middleware/authRefresh.js.map +1 -0
  106. package/dist/middleware/authSession.d.ts +5 -0
  107. package/dist/middleware/authSession.d.ts.map +1 -0
  108. package/dist/middleware/authSession.js +35 -0
  109. package/dist/middleware/authSession.js.map +1 -0
  110. package/dist/middleware/broadcastSync.d.ts +7 -0
  111. package/dist/middleware/broadcastSync.d.ts.map +1 -0
  112. package/dist/middleware/broadcastSync.js +36 -0
  113. package/dist/middleware/broadcastSync.js.map +1 -0
  114. package/dist/middleware/common.d.ts +3 -0
  115. package/dist/middleware/common.d.ts.map +1 -0
  116. package/dist/middleware/common.js +10 -0
  117. package/dist/middleware/common.js.map +1 -0
  118. package/dist/middleware/index.d.ts +8 -0
  119. package/dist/middleware/index.d.ts.map +1 -0
  120. package/dist/middleware/index.js +8 -0
  121. package/dist/middleware/index.js.map +1 -0
  122. package/dist/middleware/tokenLifecycle.d.ts +4 -0
  123. package/dist/middleware/tokenLifecycle.d.ts.map +1 -0
  124. package/dist/middleware/tokenLifecycle.js +52 -0
  125. package/dist/middleware/tokenLifecycle.js.map +1 -0
  126. package/dist/migration/index.d.ts +40 -0
  127. package/dist/migration/index.d.ts.map +1 -0
  128. package/dist/migration/index.js +136 -0
  129. package/dist/migration/index.js.map +1 -0
  130. package/dist/oidc/index.d.ts +25 -0
  131. package/dist/oidc/index.d.ts.map +1 -0
  132. package/dist/oidc/index.js +392 -0
  133. package/dist/oidc/index.js.map +1 -0
  134. package/dist/oidc/providers.d.ts +21 -0
  135. package/dist/oidc/providers.d.ts.map +1 -0
  136. package/dist/oidc/providers.js +51 -0
  137. package/dist/oidc/providers.js.map +1 -0
  138. package/dist/presets/index.d.ts +13 -0
  139. package/dist/presets/index.d.ts.map +1 -0
  140. package/dist/presets/index.js +12 -0
  141. package/dist/presets/index.js.map +1 -0
  142. package/dist/providers/callbackContracts.d.ts +14 -0
  143. package/dist/providers/callbackContracts.d.ts.map +1 -0
  144. package/dist/providers/callbackContracts.js +14 -0
  145. package/dist/providers/callbackContracts.js.map +1 -0
  146. package/dist/providers/errors.d.ts +9 -0
  147. package/dist/providers/errors.d.ts.map +1 -0
  148. package/dist/providers/errors.js +66 -0
  149. package/dist/providers/errors.js.map +1 -0
  150. package/dist/providers/index.d.ts +28 -0
  151. package/dist/providers/index.d.ts.map +1 -0
  152. package/dist/providers/index.js +29 -0
  153. package/dist/providers/index.js.map +1 -0
  154. package/dist/providers/presets.d.ts +17 -0
  155. package/dist/providers/presets.d.ts.map +1 -0
  156. package/dist/providers/presets.js +84 -0
  157. package/dist/providers/presets.js.map +1 -0
  158. package/dist/revocation/index.d.ts +10 -0
  159. package/dist/revocation/index.d.ts.map +1 -0
  160. package/dist/revocation/index.js +182 -0
  161. package/dist/revocation/index.js.map +1 -0
  162. package/dist/session/exporters.d.ts +15 -0
  163. package/dist/session/exporters.d.ts.map +1 -0
  164. package/dist/session/exporters.js +62 -0
  165. package/dist/session/exporters.js.map +1 -0
  166. package/dist/session/index.d.ts +11 -0
  167. package/dist/session/index.d.ts.map +1 -0
  168. package/dist/session/index.js +324 -0
  169. package/dist/session/index.js.map +1 -0
  170. package/dist/shared/encoding.d.ts +5 -0
  171. package/dist/shared/encoding.d.ts.map +1 -0
  172. package/dist/shared/encoding.js +27 -0
  173. package/dist/shared/encoding.js.map +1 -0
  174. package/dist/shared/errors.d.ts +13 -0
  175. package/dist/shared/errors.d.ts.map +1 -0
  176. package/dist/shared/errors.js +12 -0
  177. package/dist/shared/errors.js.map +1 -0
  178. package/dist/shared/index.d.ts +5 -0
  179. package/dist/shared/index.d.ts.map +1 -0
  180. package/dist/shared/index.js +5 -0
  181. package/dist/shared/index.js.map +1 -0
  182. package/dist/shared/types.d.ts +585 -0
  183. package/dist/shared/types.d.ts.map +1 -0
  184. package/dist/shared/types.js +2 -0
  185. package/dist/shared/types.js.map +1 -0
  186. package/dist/shared/values.d.ts +3 -0
  187. package/dist/shared/values.d.ts.map +1 -0
  188. package/dist/shared/values.js +23 -0
  189. package/dist/shared/values.js.map +1 -0
  190. package/dist/storage/index.d.ts +44 -0
  191. package/dist/storage/index.d.ts.map +1 -0
  192. package/dist/storage/index.js +318 -0
  193. package/dist/storage/index.js.map +1 -0
  194. package/dist/templates/index.d.ts +9 -0
  195. package/dist/templates/index.d.ts.map +1 -0
  196. package/dist/templates/index.js +146 -0
  197. package/dist/templates/index.js.map +1 -0
  198. package/package.json +173 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/callbacks/index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAG,YAA+C;IACrF,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,MAAM;YACjB,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;gBAC9B,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;oBACd,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACvC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;wBACrB,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;gBAC9B,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,MAAM;YACrB,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;gBAC9B,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,MAAM;YACtB,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;gBAC9B,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC7B,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;gBAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;oBACf,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,MAAM;YACd,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YACzB,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;gBAC9B,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;oBACX,KAAK,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { AuthConfig, AuthInstance } from "../shared";
2
+ /**
3
+ * DX-H2: Unified auth configuration entry point.
4
+ * Composes storage, session manager, bridge, route handlers, and debug logger from a single config object.
5
+ */
6
+ export declare function createAuth(config?: AuthConfig): AuthInstance;
7
+ export type { AuthConfig, AuthInstance, AuthRouteHandlers } from "../shared";
8
+ export { createAuthKit } from "./kit";
9
+ export type { AuthKit, AuthKitConfig } from "./kit";
10
+ export { createAuthStarter } from "./starter";
11
+ export type { AuthStarter, AuthStarterConfig } from "./starter";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,UAAU,EACV,YAAY,EAMb,MAAM,WAAW,CAAC;AA+kBnB;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,GAAE,UAAe,GAAG,YAAY,CA2BhE;AAED,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,481 @@
1
+ import { generateSecureId } from "@pureq/pureq";
2
+ import { createAuthPreset } from "../presets";
3
+ import { createAuthBridge } from "../bridge";
4
+ import { createAuthDebugLogger } from "../debug";
5
+ import { createAuthError } from "../shared";
6
+ const SESSION_TOKEN_PREFIX = "session:";
7
+ const REFRESH_TOKEN_PREFIX = "refresh:";
8
+ const DEFAULT_SESSION_TTL_MS = 30 * 24 * 60 * 60 * 1000;
9
+ function toJsonResponse(body, status, headers) {
10
+ const responseHeaders = headers ?? new Headers();
11
+ if (!responseHeaders.has("content-type")) {
12
+ responseHeaders.set("content-type", "application/json");
13
+ }
14
+ return new Response(JSON.stringify(body), {
15
+ status,
16
+ headers: responseHeaders,
17
+ });
18
+ }
19
+ function appendSetCookieHeaders(headers, values) {
20
+ for (const value of values) {
21
+ headers.append("Set-Cookie", value);
22
+ }
23
+ }
24
+ function readMethod(request) {
25
+ return (request.method ?? "GET").toUpperCase();
26
+ }
27
+ function parseUrlSearchParams(url) {
28
+ if (!url) {
29
+ return new URLSearchParams();
30
+ }
31
+ try {
32
+ return new URL(url, "https://pureq.local").searchParams;
33
+ }
34
+ catch {
35
+ return new URLSearchParams();
36
+ }
37
+ }
38
+ function readBodyRecord(body) {
39
+ if (body && typeof body === "object") {
40
+ return body;
41
+ }
42
+ if (typeof body === "string") {
43
+ try {
44
+ const parsed = JSON.parse(body);
45
+ if (parsed && typeof parsed === "object") {
46
+ return parsed;
47
+ }
48
+ }
49
+ catch {
50
+ return {};
51
+ }
52
+ }
53
+ return {};
54
+ }
55
+ function readString(record, key) {
56
+ const value = record[key];
57
+ if (typeof value !== "string") {
58
+ return null;
59
+ }
60
+ const normalized = value.trim();
61
+ return normalized ? normalized : null;
62
+ }
63
+ function toProviderType(value) {
64
+ if (value === "oauth" || value === "oidc" || value === "credentials" || value === "email") {
65
+ return value;
66
+ }
67
+ return "oidc";
68
+ }
69
+ function toSessionToken(accessToken) {
70
+ if (!accessToken || !accessToken.startsWith(SESSION_TOKEN_PREFIX)) {
71
+ return null;
72
+ }
73
+ const token = accessToken.slice(SESSION_TOKEN_PREFIX.length);
74
+ return token || null;
75
+ }
76
+ function toStatusFromErrorCode(code) {
77
+ if (code === "PUREQ_AUTH_UNAUTHORIZED") {
78
+ return 401;
79
+ }
80
+ if (code === "PUREQ_AUTH_INVALID_PROVIDER" ||
81
+ code === "PUREQ_AUTH_INVALID_CREDENTIALS" ||
82
+ code === "PUREQ_AUTH_MISSING_TOKEN") {
83
+ return 400;
84
+ }
85
+ return 500;
86
+ }
87
+ function toErrorResponse(error, fallbackCode, fallbackMessage) {
88
+ const code = error && typeof error === "object" && "code" in error && typeof error.code === "string"
89
+ ? error.code
90
+ : fallbackCode;
91
+ const message = error && typeof error === "object" && "message" in error && typeof error.message === "string"
92
+ ? error.message
93
+ : fallbackMessage;
94
+ return toJsonResponse({
95
+ error: {
96
+ code,
97
+ message,
98
+ },
99
+ }, toStatusFromErrorCode(code));
100
+ }
101
+ async function resolveAdapterUser(config, user) {
102
+ const adapter = config.adapter;
103
+ if (!adapter) {
104
+ return user;
105
+ }
106
+ const byId = await adapter.getUser(user.id);
107
+ if (byId) {
108
+ return byId;
109
+ }
110
+ if (user.email) {
111
+ const byEmail = await adapter.getUserByEmail(user.email);
112
+ if (byEmail) {
113
+ return byEmail;
114
+ }
115
+ }
116
+ const created = await adapter.createUser({
117
+ ...(user.email !== undefined ? { email: user.email } : {}),
118
+ ...(user.emailVerified !== undefined ? { emailVerified: user.emailVerified } : {}),
119
+ ...(user.name !== undefined ? { name: user.name } : {}),
120
+ ...(user.image !== undefined ? { image: user.image } : {}),
121
+ });
122
+ await config.callbacks?.createUser?.({ user: created });
123
+ return created;
124
+ }
125
+ async function issueSession(config, instance, userId) {
126
+ const sessionToken = generateSecureId();
127
+ const accessToken = `${SESSION_TOKEN_PREFIX}${sessionToken}`;
128
+ const refreshToken = `${REFRESH_TOKEN_PREFIX}${generateSecureId()}`;
129
+ const expiresAt = new Date(Date.now() + DEFAULT_SESSION_TTL_MS);
130
+ const persisted = {
131
+ sessionToken,
132
+ userId,
133
+ expiresAt,
134
+ };
135
+ if (config.adapter) {
136
+ await config.adapter.createSession(persisted);
137
+ }
138
+ await instance.session.setTokens({ accessToken, refreshToken });
139
+ const state = await instance.session.getState();
140
+ return { state, persisted };
141
+ }
142
+ async function ensureLinkedAccount(config, user, account) {
143
+ const adapter = config.adapter;
144
+ if (!adapter) {
145
+ return;
146
+ }
147
+ const existing = await adapter.getUserByAccount(account.provider, account.providerAccountId);
148
+ if (!existing) {
149
+ await adapter.linkAccount(account);
150
+ await config.callbacks?.linkAccount?.({ user, account });
151
+ }
152
+ }
153
+ function findProvider(config, providerId) {
154
+ if (!providerId) {
155
+ return null;
156
+ }
157
+ return (config.providers ?? []).find((provider) => provider.id === providerId) ?? null;
158
+ }
159
+ /**
160
+ * FEAT-H4: Route handlers for sign-in, callback, sign-out, and session.
161
+ * Provides a minimal but complete auth route handler surface.
162
+ */
163
+ function createRouteHandlers(config, instance) {
164
+ const bridge = instance.bridge;
165
+ const session = instance.session;
166
+ return {
167
+ async handleSignIn(request) {
168
+ instance.debug.log("routes", "sign-in request received");
169
+ const method = readMethod(request);
170
+ if (method === "GET") {
171
+ const providers = config.providers ?? [];
172
+ const providerList = providers.map((p) => ({ id: p.id, name: p.name, type: p.type }));
173
+ return toJsonResponse({ providers: providerList }, 200);
174
+ }
175
+ const body = readBodyRecord(request.body);
176
+ const provider = findProvider(config, readString(body, "provider"));
177
+ if (!provider) {
178
+ return toJsonResponse({
179
+ error: {
180
+ code: "PUREQ_AUTH_INVALID_PROVIDER",
181
+ message: "provider is required",
182
+ },
183
+ }, 400);
184
+ }
185
+ if (provider.type === "email") {
186
+ const email = readString(body, "email");
187
+ if (!email) {
188
+ return toJsonResponse({
189
+ error: {
190
+ code: "PUREQ_AUTH_INVALID_CREDENTIALS",
191
+ message: "email is required",
192
+ },
193
+ }, 400);
194
+ }
195
+ if (!config.adapter?.createVerificationToken || !config.adapter?.useVerificationToken) {
196
+ return toJsonResponse({
197
+ error: {
198
+ code: "PUREQ_AUTH_INVALID_PROVIDER",
199
+ message: "email provider requires adapter verification token support",
200
+ },
201
+ }, 400);
202
+ }
203
+ const token = generateSecureId();
204
+ const callbackUrl = readString(body, "callbackUrl") ?? "https://pureq.local/auth/callback";
205
+ const verificationUrl = `${callbackUrl}${callbackUrl.includes("?") ? "&" : "?"}provider=${encodeURIComponent(provider.id)}&token=${encodeURIComponent(token)}&email=${encodeURIComponent(email)}`;
206
+ if ("sendVerificationRequest" in provider && typeof provider.sendVerificationRequest === "function") {
207
+ await provider.sendVerificationRequest({
208
+ identifier: email,
209
+ token,
210
+ url: verificationUrl,
211
+ });
212
+ }
213
+ await config.adapter.createVerificationToken({
214
+ identifier: email,
215
+ token,
216
+ expiresAt: new Date(Date.now() + 15 * 60 * 1000),
217
+ });
218
+ return toJsonResponse({ ok: true, provider: provider.id, email }, 200);
219
+ }
220
+ if (provider.type !== "credentials" || !("authorize" in provider) || typeof provider.authorize !== "function") {
221
+ return toJsonResponse({
222
+ error: {
223
+ code: "PUREQ_AUTH_INVALID_PROVIDER",
224
+ message: "unsupported sign-in provider type",
225
+ },
226
+ }, 400);
227
+ }
228
+ const credentialsRaw = body.credentials;
229
+ const credentials = credentialsRaw && typeof credentialsRaw === "object"
230
+ ? Object.fromEntries(Object.entries(credentialsRaw).filter((entry) => typeof entry[1] === "string"))
231
+ : {};
232
+ const maybeUser = await provider.authorize(credentials);
233
+ if (!maybeUser) {
234
+ return toJsonResponse({
235
+ error: {
236
+ code: "PUREQ_AUTH_INVALID_CREDENTIALS",
237
+ message: "invalid credentials",
238
+ },
239
+ }, 401);
240
+ }
241
+ const user = await resolveAdapterUser(config, maybeUser);
242
+ const account = {
243
+ userId: user.id,
244
+ type: "credentials",
245
+ provider: provider.id,
246
+ providerAccountId: user.id,
247
+ };
248
+ const allow = await config.callbacks?.signIn?.({ user, account });
249
+ if (allow === false) {
250
+ return toJsonResponse({
251
+ error: {
252
+ code: "PUREQ_AUTH_UNAUTHORIZED",
253
+ message: "sign-in denied by callback",
254
+ },
255
+ }, 401);
256
+ }
257
+ await ensureLinkedAccount(config, user, account);
258
+ const { state, persisted } = await issueSession(config, instance, user.id);
259
+ const projectedSession = await config.callbacks?.session?.({
260
+ session: persisted,
261
+ user,
262
+ token: {
263
+ accessToken: state.accessToken,
264
+ refreshToken: state.refreshToken,
265
+ },
266
+ });
267
+ const responseHeaders = new Headers();
268
+ appendSetCookieHeaders(responseHeaders, bridge.buildSetCookieHeaders(state));
269
+ return toJsonResponse({
270
+ ok: true,
271
+ provider: provider.id,
272
+ user,
273
+ session: projectedSession ?? persisted,
274
+ state,
275
+ }, 200, responseHeaders);
276
+ },
277
+ async handleCallback(request) {
278
+ instance.debug.log("routes", "callback received");
279
+ try {
280
+ const query = parseUrlSearchParams(request.url);
281
+ const providerId = query.get("provider");
282
+ const providerAccountId = query.get("providerAccountId");
283
+ if (providerId === "email") {
284
+ if (!config.adapter?.useVerificationToken) {
285
+ return toJsonResponse({
286
+ error: {
287
+ code: "PUREQ_AUTH_INVALID_PROVIDER",
288
+ message: "email callback requires adapter verification token support",
289
+ },
290
+ }, 400);
291
+ }
292
+ const email = query.get("email");
293
+ const token = query.get("token");
294
+ if (!email || !token) {
295
+ return toJsonResponse({
296
+ error: {
297
+ code: "PUREQ_AUTH_MISSING_TOKEN",
298
+ message: "email callback requires token and email",
299
+ },
300
+ }, 400);
301
+ }
302
+ const verification = await config.adapter.useVerificationToken({ identifier: email, token });
303
+ if (!verification) {
304
+ return toJsonResponse({
305
+ error: {
306
+ code: "PUREQ_AUTH_UNAUTHORIZED",
307
+ message: "invalid or expired email verification token",
308
+ },
309
+ }, 401);
310
+ }
311
+ let user = await config.adapter.getUserByEmail(email);
312
+ if (!user) {
313
+ user = await config.adapter.createUser({ email });
314
+ await config.callbacks?.createUser?.({ user });
315
+ }
316
+ const account = {
317
+ userId: user.id,
318
+ type: "email",
319
+ provider: "email",
320
+ providerAccountId: email,
321
+ };
322
+ const allow = await config.callbacks?.signIn?.({ user, account });
323
+ if (allow === false) {
324
+ return toJsonResponse({
325
+ error: {
326
+ code: "PUREQ_AUTH_UNAUTHORIZED",
327
+ message: "sign-in denied by callback",
328
+ },
329
+ }, 401);
330
+ }
331
+ await ensureLinkedAccount(config, user, account);
332
+ const { state } = await issueSession(config, instance, user.id);
333
+ const responseHeaders = new Headers();
334
+ appendSetCookieHeaders(responseHeaders, bridge.buildSetCookieHeaders(state));
335
+ return toJsonResponse({ ok: true, state, user, provider: "email" }, 200, responseHeaders);
336
+ }
337
+ if (!config.adapter || !providerId || !providerAccountId) {
338
+ const state = bridge.readSession(request);
339
+ const responseHeaders = new Headers();
340
+ appendSetCookieHeaders(responseHeaders, bridge.buildSetCookieHeaders(state));
341
+ return toJsonResponse({ ok: true, state }, 200, responseHeaders);
342
+ }
343
+ const adapter = config.adapter;
344
+ const linked = await adapter.getUserByAccount(providerId, providerAccountId);
345
+ const explicitUserId = query.get("userId");
346
+ const email = query.get("email");
347
+ let user = linked;
348
+ if (!user && explicitUserId) {
349
+ user = await adapter.getUser(explicitUserId);
350
+ }
351
+ if (!user && email) {
352
+ const byEmail = await adapter.getUserByEmail(email);
353
+ if (byEmail && !config.allowDangerousAccountLinking) {
354
+ throw createAuthError("PUREQ_AUTH_UNAUTHORIZED", "account linking requires explicit approval", { details: { provider: providerId } });
355
+ }
356
+ user = byEmail;
357
+ }
358
+ if (!user && email) {
359
+ user = await adapter.createUser({ email });
360
+ await config.callbacks?.createUser?.({ user });
361
+ }
362
+ if (!user) {
363
+ return toJsonResponse({
364
+ error: {
365
+ code: "PUREQ_AUTH_MISSING_TOKEN",
366
+ message: "callback user context is required",
367
+ },
368
+ }, 400);
369
+ }
370
+ const account = {
371
+ userId: user.id,
372
+ type: toProviderType(query.get("type")),
373
+ provider: providerId,
374
+ providerAccountId,
375
+ ...(query.get("accessToken") ? { accessToken: query.get("accessToken") } : {}),
376
+ ...(query.get("refreshToken") ? { refreshToken: query.get("refreshToken") } : {}),
377
+ ...(query.get("tokenType") ? { tokenType: query.get("tokenType") } : {}),
378
+ ...(query.get("scope") ? { scope: query.get("scope") } : {}),
379
+ ...(query.get("idToken") ? { idToken: query.get("idToken") } : {}),
380
+ };
381
+ const allow = await config.callbacks?.signIn?.({ user, account });
382
+ if (allow === false) {
383
+ return toJsonResponse({
384
+ error: {
385
+ code: "PUREQ_AUTH_UNAUTHORIZED",
386
+ message: "sign-in denied by callback",
387
+ },
388
+ }, 401);
389
+ }
390
+ await ensureLinkedAccount(config, user, account);
391
+ const { state } = await issueSession(config, instance, user.id);
392
+ const responseHeaders = new Headers();
393
+ appendSetCookieHeaders(responseHeaders, bridge.buildSetCookieHeaders(state));
394
+ return toJsonResponse({ ok: true, state, user, linked: Boolean(linked) }, 200, responseHeaders);
395
+ }
396
+ catch (error) {
397
+ instance.debug.log("routes", "callback failed", {
398
+ error: error instanceof Error ? error.message : String(error),
399
+ });
400
+ return toErrorResponse(error, "PUREQ_AUTH_UNKNOWN", "callback failed");
401
+ }
402
+ },
403
+ async handleSignOut(request) {
404
+ instance.debug.log("routes", "sign-out request");
405
+ const snapshot = bridge.readSession(request);
406
+ const sessionToken = toSessionToken(snapshot.accessToken);
407
+ if (sessionToken && config.adapter) {
408
+ const existing = await config.adapter.getSessionAndUser(sessionToken);
409
+ if (existing) {
410
+ await config.callbacks?.signOut?.({
411
+ session: existing.session,
412
+ token: {
413
+ accessToken: snapshot.accessToken,
414
+ refreshToken: snapshot.refreshToken,
415
+ },
416
+ });
417
+ }
418
+ await config.adapter.deleteSession(sessionToken);
419
+ }
420
+ await session.logout();
421
+ const emptyState = { accessToken: null, refreshToken: null };
422
+ const headers = bridge.buildSetCookieHeaders(emptyState);
423
+ const responseHeaders = new Headers();
424
+ appendSetCookieHeaders(responseHeaders, headers);
425
+ return toJsonResponse({ ok: true }, 200, responseHeaders);
426
+ },
427
+ async handleSession(request) {
428
+ instance.debug.log("routes", "session request");
429
+ const state = bridge.readSession(request);
430
+ const sessionToken = toSessionToken(state.accessToken);
431
+ if (sessionToken && config.adapter) {
432
+ const existing = await config.adapter.getSessionAndUser(sessionToken);
433
+ if (existing) {
434
+ const projectedSession = await config.callbacks?.session?.({
435
+ session: existing.session,
436
+ user: existing.user,
437
+ token: {
438
+ accessToken: state.accessToken,
439
+ refreshToken: state.refreshToken,
440
+ },
441
+ });
442
+ return toJsonResponse({
443
+ ...state,
444
+ user: existing.user,
445
+ ...(projectedSession ? { session: projectedSession } : {}),
446
+ }, 200);
447
+ }
448
+ }
449
+ return toJsonResponse(state, 200);
450
+ },
451
+ };
452
+ }
453
+ /**
454
+ * DX-H2: Unified auth configuration entry point.
455
+ * Composes storage, session manager, bridge, route handlers, and debug logger from a single config object.
456
+ */
457
+ export function createAuth(config = {}) {
458
+ const debug = createAuthDebugLogger(config.debug ?? false);
459
+ debug.log("core", "initializing auth instance");
460
+ const preset = createAuthPreset({
461
+ ...(config.storage !== undefined ? { storage: config.storage } : {}),
462
+ ...(config.session !== undefined ? { session: config.session } : {}),
463
+ ...(config.bridge !== undefined ? { bridge: config.bridge } : {}),
464
+ });
465
+ const bridge = createAuthBridge(config.bridge);
466
+ const instance = {
467
+ storage: preset.storage,
468
+ session: preset.session,
469
+ bridge,
470
+ debug,
471
+ handlers: undefined,
472
+ };
473
+ // Create handlers with access to the instance
474
+ const handlers = createRouteHandlers(config, instance);
475
+ instance.handlers = handlers;
476
+ debug.log("core", "auth instance initialized");
477
+ return instance;
478
+ }
479
+ export { createAuthKit } from "./kit";
480
+ export { createAuthStarter } from "./starter";
481
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { AuthKit, AuthKitConfig } from "../shared";
2
+ /**
3
+ * AuthKit alpha: one entrypoint that wires core auth and framework session integrations.
4
+ */
5
+ export declare function createAuthKit(config?: AuthKitConfig): AuthKit;
6
+ export type { AuthKit, AuthKitConfig } from "../shared";
7
+ //# sourceMappingURL=kit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kit.d.ts","sourceRoot":"","sources":["../../src/core/kit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EAQd,MAAM,WAAW,CAAC;AA8EnB;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAE,aAAkB,GAAG,OAAO,CA+FjE;AAED,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}