better-auth 1.6.6 → 1.6.7
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.
|
@@ -98,16 +98,43 @@ function toAuthEndpoints(endpoints, ctx) {
|
|
|
98
98
|
[ATTR_HTTP_ROUTE]: route,
|
|
99
99
|
[ATTR_OPERATION_ID]: operationId
|
|
100
100
|
}, () => endpoint(internalContext))).catch((e) => {
|
|
101
|
-
if (isAPIError(e))
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
101
|
+
if (isAPIError(e)) {
|
|
102
|
+
/**
|
|
103
|
+
* API Errors from response are caught
|
|
104
|
+
* and returned to hooks.
|
|
105
|
+
*
|
|
106
|
+
* Headers come from two sources that must both
|
|
107
|
+
* survive:
|
|
108
|
+
* - `kAPIErrorHeaderSymbol`: ctx.responseHeaders
|
|
109
|
+
* accumulated via c.setCookie / c.setHeader
|
|
110
|
+
* before the throw.
|
|
111
|
+
* - `e.headers`: explicit headers on the APIError
|
|
112
|
+
* (e.g. `location` from c.redirect).
|
|
113
|
+
*
|
|
114
|
+
* Start from the accumulated ctx headers, then
|
|
115
|
+
* apply e.headers on top — appending `set-cookie`
|
|
116
|
+
* and setting others — so explicit APIError
|
|
117
|
+
* headers override while cookies accumulate.
|
|
118
|
+
*/
|
|
119
|
+
const ctxHeaders = e[kAPIErrorHeaderSymbol];
|
|
120
|
+
const errHeaders = e.headers ? new Headers(e.headers) : null;
|
|
121
|
+
let headers = null;
|
|
122
|
+
if (ctxHeaders || errHeaders) {
|
|
123
|
+
headers = new Headers();
|
|
124
|
+
ctxHeaders?.forEach((value, key) => {
|
|
125
|
+
headers.append(key, value);
|
|
126
|
+
});
|
|
127
|
+
errHeaders?.forEach((value, key) => {
|
|
128
|
+
if (key.toLowerCase() === "set-cookie") headers.append(key, value);
|
|
129
|
+
else headers.set(key, value);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
response: e,
|
|
134
|
+
status: e.statusCode,
|
|
135
|
+
headers
|
|
136
|
+
};
|
|
137
|
+
}
|
|
111
138
|
throw e;
|
|
112
139
|
});
|
|
113
140
|
if (result && result instanceof Response) return result;
|
|
@@ -116,7 +143,26 @@ function toAuthEndpoints(endpoints, ctx) {
|
|
|
116
143
|
const after = await runAfterHooks(internalContext, afterHooks, endpoint, operationId);
|
|
117
144
|
if (after.response) result.response = after.response;
|
|
118
145
|
if (isAPIError(result.response) && shouldPublishLog(authContext.logger.level, "debug")) result.response.stack = result.response.errorStack;
|
|
119
|
-
if (isAPIError(result.response) && !shouldReturnResponse)
|
|
146
|
+
if (isAPIError(result.response) && !shouldReturnResponse) {
|
|
147
|
+
/**
|
|
148
|
+
* Non-response path: we re-throw the raw APIError
|
|
149
|
+
* to callers of `auth.api.*`. `result.headers`
|
|
150
|
+
* holds the merged ctx + explicit headers (see
|
|
151
|
+
* catch block above) — rewrite
|
|
152
|
+
* `kAPIErrorHeaderSymbol` with the merged set so
|
|
153
|
+
* downstream pipelines (e.g. better-call's
|
|
154
|
+
* response builder, or an outer hook catch) see
|
|
155
|
+
* the same headers we'd have written on the
|
|
156
|
+
* response.
|
|
157
|
+
*/
|
|
158
|
+
if (result.headers) Object.defineProperty(result.response, kAPIErrorHeaderSymbol, {
|
|
159
|
+
enumerable: false,
|
|
160
|
+
configurable: true,
|
|
161
|
+
writable: false,
|
|
162
|
+
value: result.headers
|
|
163
|
+
});
|
|
164
|
+
throw result.response;
|
|
165
|
+
}
|
|
120
166
|
return shouldReturnResponse ? toResponse(result.response, {
|
|
121
167
|
headers: result.headers,
|
|
122
168
|
status: result.status
|
package/dist/oauth2/state.mjs
CHANGED
|
@@ -29,7 +29,7 @@ async function generateState(c, link, additionalData) {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
async function parseState(c) {
|
|
32
|
-
const state = c.query.state || c.body
|
|
32
|
+
const state = c.query.state || c.body?.state;
|
|
33
33
|
const errorURL = c.context.options.onAPIError?.errorURL || `${c.context.baseURL}/error`;
|
|
34
34
|
let parsedData;
|
|
35
35
|
try {
|
package/dist/package.mjs
CHANGED
|
@@ -312,6 +312,11 @@ const verifyPhoneNumber = (opts) => createAuthEndpoint("/phone-number/verify", {
|
|
|
312
312
|
[opts.phoneNumber]: ctx.body.phoneNumber,
|
|
313
313
|
[opts.phoneNumberVerified]: true
|
|
314
314
|
});
|
|
315
|
+
if (!user) throw APIError.from("INTERNAL_SERVER_ERROR", BASE_ERROR_CODES.FAILED_TO_UPDATE_USER);
|
|
316
|
+
await opts?.callbackOnVerification?.({
|
|
317
|
+
phoneNumber: ctx.body.phoneNumber,
|
|
318
|
+
user
|
|
319
|
+
}, ctx);
|
|
315
320
|
return ctx.json({
|
|
316
321
|
status: true,
|
|
317
322
|
token: session.session.token,
|
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
//#region src/utils/is-api-error.d.ts
|
|
4
|
-
declare function isAPIError(error: unknown): error is APIError;
|
|
5
|
-
//#endregion
|
|
1
|
+
import { isAPIError } from "@better-auth/core/utils/is-api-error";
|
|
6
2
|
export { isAPIError };
|
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { APIError as APIError$1 } from "better-call";
|
|
3
|
-
//#region src/utils/is-api-error.ts
|
|
4
|
-
function isAPIError(error) {
|
|
5
|
-
return error instanceof APIError$1 || error instanceof APIError || error?.name === "APIError";
|
|
6
|
-
}
|
|
7
|
-
//#endregion
|
|
1
|
+
import { isAPIError } from "@better-auth/core/utils/is-api-error";
|
|
8
2
|
export { isAPIError };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "better-auth",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.7",
|
|
4
4
|
"description": "The most comprehensive authentication framework for TypeScript.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -489,13 +489,13 @@
|
|
|
489
489
|
"kysely": "^0.28.14",
|
|
490
490
|
"nanostores": "^1.1.1",
|
|
491
491
|
"zod": "^4.3.6",
|
|
492
|
-
"@better-auth/core": "1.6.
|
|
493
|
-
"@better-auth/drizzle-adapter": "1.6.
|
|
494
|
-
"@better-auth/kysely-adapter": "1.6.
|
|
495
|
-
"@better-auth/memory-adapter": "1.6.
|
|
496
|
-
"@better-auth/mongo-adapter": "1.6.
|
|
497
|
-
"@better-auth/prisma-adapter": "1.6.
|
|
498
|
-
"@better-auth/telemetry": "1.6.
|
|
492
|
+
"@better-auth/core": "1.6.7",
|
|
493
|
+
"@better-auth/drizzle-adapter": "1.6.7",
|
|
494
|
+
"@better-auth/kysely-adapter": "1.6.7",
|
|
495
|
+
"@better-auth/memory-adapter": "1.6.7",
|
|
496
|
+
"@better-auth/mongo-adapter": "1.6.7",
|
|
497
|
+
"@better-auth/prisma-adapter": "1.6.7",
|
|
498
|
+
"@better-auth/telemetry": "1.6.7"
|
|
499
499
|
},
|
|
500
500
|
"devDependencies": {
|
|
501
501
|
"@lynx-js/react": "^0.116.3",
|