@convex-dev/better-auth 0.7.0-alpha.2 → 0.7.0-alpha.4
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.
- package/dist/commonjs/nextjs/index.d.ts.map +1 -1
- package/dist/commonjs/nextjs/index.js +9 -0
- package/dist/commonjs/nextjs/index.js.map +1 -1
- package/dist/commonjs/react-start/index.d.ts +2 -2
- package/dist/commonjs/react-start/index.d.ts.map +1 -1
- package/dist/commonjs/react-start/index.js +12 -4
- package/dist/commonjs/react-start/index.js.map +1 -1
- package/dist/esm/nextjs/index.d.ts.map +1 -1
- package/dist/esm/nextjs/index.js +9 -0
- package/dist/esm/nextjs/index.js.map +1 -1
- package/dist/esm/react-start/index.d.ts +2 -2
- package/dist/esm/react-start/index.d.ts.map +1 -1
- package/dist/esm/react-start/index.js +12 -4
- package/dist/esm/react-start/index.js.map +1 -1
- package/package.json +2 -2
- package/src/nextjs/index.ts +14 -0
- package/src/react-start/index.ts +18 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAcjD,eAAO,MAAM,QAAQ,GACnB,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,gCAY1E,CAAC;AAYF,eAAO,MAAM,aAAa,GAAI,OAAO;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE;mBAC9C,OAAO;oBACN,OAAO;CACvB,CAAC"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { createCookieGetter } from "better-auth/cookies";
|
|
2
2
|
import { JWT_COOKIE_NAME } from "../plugins/convex";
|
|
3
|
+
const requireBaseURL = (createAuth) => {
|
|
4
|
+
if (!createAuth({}).options.baseURL) {
|
|
5
|
+
throw new Error("No baseURL found in Better Auth config. baseUrl should be set to your Convex Site URL.");
|
|
6
|
+
}
|
|
7
|
+
return createAuth({}).options.baseURL;
|
|
8
|
+
};
|
|
3
9
|
export const getToken = async (createAuth) => {
|
|
10
|
+
// Require baseURL here because it's protocol determines cookie secure mode,
|
|
11
|
+
// and must be set to ensure cookies work between Next.js and Convex.
|
|
12
|
+
requireBaseURL(createAuth);
|
|
4
13
|
const { cookies } = await import("next/headers");
|
|
5
14
|
const cookieStore = await cookies();
|
|
6
15
|
const auth = createAuth({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,UAAyE,EACzE,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,UAAU,CAAC,EAAS,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,KAAK,EAAE,KAAK,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,IAAiC,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,aAAa,GACjB,IAAI,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACjE,MAAM,OAAO,GAAG,GAAG,aAAa,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAiC,EAAE,EAAE,CAAC,CAAC;IACnE,GAAG,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;IACjD,IAAI,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;CACnD,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,cAAc,GAAG,CACrB,UAAyE,EACzE,EAAE;IACF,IAAI,CAAC,UAAU,CAAC,EAAS,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,EAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,UAAyE,EACzE,EAAE;IACF,4EAA4E;IAC5E,qEAAqE;IACrE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,UAAU,CAAC,EAAS,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,KAAK,EAAE,KAAK,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,IAAiC,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,aAAa,GACjB,IAAI,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACjE,MAAM,OAAO,GAAG,GAAG,aAAa,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAiC,EAAE,EAAE,CAAC,CAAC;IACnE,GAAG,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;IACjD,IAAI,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;CACnD,CAAC,CAAC"}
|
|
@@ -4,7 +4,7 @@ export declare const getCookieName: (createAuth: (ctx: GenericActionCtx<any>) =>
|
|
|
4
4
|
export declare const fetchSession: <T extends (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>>(createAuth: T, request?: Request) => Promise<{
|
|
5
5
|
session: ReturnType<T>["$Infer"]["Session"] | null;
|
|
6
6
|
}>;
|
|
7
|
-
export declare const reactStartHandler: (request: Request, opts
|
|
8
|
-
convexSiteUrl
|
|
7
|
+
export declare const reactStartHandler: (request: Request, opts: {
|
|
8
|
+
convexSiteUrl: string;
|
|
9
9
|
}) => Promise<Response>;
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react-start/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react-start/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAejD,eAAO,MAAM,aAAa,GACxB,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,oBAS1E,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,CAAC,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,EAEvE,YAAY,CAAC,EACb,UAAU,OAAO;;EAmBlB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,OAAO,EAChB,MAAM;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,sBAMhC,CAAC"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { createCookieGetter } from "better-auth/cookies";
|
|
2
2
|
import { betterFetch } from "@better-fetch/fetch";
|
|
3
3
|
import { JWT_COOKIE_NAME } from "../plugins/convex";
|
|
4
|
+
const requireBaseURL = (createAuth) => {
|
|
5
|
+
const baseUrl = createAuth({}).options.baseURL;
|
|
6
|
+
if (!baseUrl) {
|
|
7
|
+
throw new Error("No baseURL found in Better Auth config. baseUrl should be set to your Convex Site URL.");
|
|
8
|
+
}
|
|
9
|
+
return baseUrl;
|
|
10
|
+
};
|
|
4
11
|
export const getCookieName = async (createAuth) => {
|
|
12
|
+
// Require baseURL here because it's protocol determines cookie secure mode,
|
|
13
|
+
// and must be set to ensure cookies work between TanStack and Convex.
|
|
14
|
+
requireBaseURL(createAuth);
|
|
5
15
|
const auth = createAuth({});
|
|
6
16
|
const createCookie = createCookieGetter(auth.options);
|
|
7
17
|
const cookie = createCookie(JWT_COOKIE_NAME);
|
|
@@ -11,9 +21,8 @@ export const fetchSession = async (createAuth, request) => {
|
|
|
11
21
|
if (!request) {
|
|
12
22
|
throw new Error("No request found");
|
|
13
23
|
}
|
|
14
|
-
const baseURL = new URL(request.url).origin;
|
|
15
24
|
const { data: session } = await betterFetch("/api/auth/get-session", {
|
|
16
|
-
baseURL,
|
|
25
|
+
baseURL: requireBaseURL(createAuth),
|
|
17
26
|
headers: {
|
|
18
27
|
cookie: request.headers.get("cookie") ?? "",
|
|
19
28
|
},
|
|
@@ -23,9 +32,8 @@ export const fetchSession = async (createAuth, request) => {
|
|
|
23
32
|
};
|
|
24
33
|
};
|
|
25
34
|
export const reactStartHandler = (request, opts) => {
|
|
26
|
-
const convexSiteUrl = opts?.convexSiteUrl ?? process.env.VITE_CONVEX_SITE_URL;
|
|
27
35
|
const requestUrl = new URL(request.url);
|
|
28
|
-
const nextUrl = `${convexSiteUrl}${requestUrl.pathname}${requestUrl.search}`;
|
|
36
|
+
const nextUrl = `${opts.convexSiteUrl}${requestUrl.pathname}${requestUrl.search}`;
|
|
29
37
|
request.headers.set("accept-encoding", "application/json");
|
|
30
38
|
return fetch(nextUrl, new Request(request, { redirect: "manual" }));
|
|
31
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react-start/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,UAAyE,EACzE,EAAE;IACF,MAAM,IAAI,GAAG,UAAU,CAAC,EAAS,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAG/B,UAAa,EACb,OAAiB,EACjB,EAAE;IAGF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react-start/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,cAAc,GAAG,CACrB,UAAyE,EACzE,EAAE;IACF,MAAM,OAAO,GAAG,UAAU,CAAC,EAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,UAAyE,EACzE,EAAE;IACF,4EAA4E;IAC5E,sEAAsE;IACtE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,EAAS,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAG/B,UAAa,EACb,OAAiB,EACjB,EAAE;IAGF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CACzC,uBAAuB,EACvB;QACE,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC;QACnC,OAAO,EAAE;YACP,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;SAC5C;KACF,CACF,CAAC;IACF,OAAO;QACL,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAAgB,EAChB,IAA+B,EAC/B,EAAE;IACF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAClF,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAcjD,eAAO,MAAM,QAAQ,GACnB,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,gCAY1E,CAAC;AAYF,eAAO,MAAM,aAAa,GAAI,OAAO;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE;mBAC9C,OAAO;oBACN,OAAO;CACvB,CAAC"}
|
package/dist/esm/nextjs/index.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { createCookieGetter } from "better-auth/cookies";
|
|
2
2
|
import { JWT_COOKIE_NAME } from "../plugins/convex/index.js";
|
|
3
|
+
const requireBaseURL = (createAuth) => {
|
|
4
|
+
if (!createAuth({}).options.baseURL) {
|
|
5
|
+
throw new Error("No baseURL found in Better Auth config. baseUrl should be set to your Convex Site URL.");
|
|
6
|
+
}
|
|
7
|
+
return createAuth({}).options.baseURL;
|
|
8
|
+
};
|
|
3
9
|
export const getToken = async (createAuth) => {
|
|
10
|
+
// Require baseURL here because it's protocol determines cookie secure mode,
|
|
11
|
+
// and must be set to ensure cookies work between Next.js and Convex.
|
|
12
|
+
requireBaseURL(createAuth);
|
|
4
13
|
const { cookies } = await import("next/headers");
|
|
5
14
|
const cookieStore = await cookies();
|
|
6
15
|
const auth = createAuth({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,UAAyE,EACzE,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,UAAU,CAAC,EAAS,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,KAAK,EAAE,KAAK,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,IAAiC,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,aAAa,GACjB,IAAI,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACjE,MAAM,OAAO,GAAG,GAAG,aAAa,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAiC,EAAE,EAAE,CAAC,CAAC;IACnE,GAAG,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;IACjD,IAAI,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;CACnD,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,cAAc,GAAG,CACrB,UAAyE,EACzE,EAAE;IACF,IAAI,CAAC,UAAU,CAAC,EAAS,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,EAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,UAAyE,EACzE,EAAE;IACF,4EAA4E;IAC5E,qEAAqE;IACrE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,UAAU,CAAC,EAAS,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,KAAK,EAAE,KAAK,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,IAAiC,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,aAAa,GACjB,IAAI,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACjE,MAAM,OAAO,GAAG,GAAG,aAAa,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAiC,EAAE,EAAE,CAAC,CAAC;IACnE,GAAG,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;IACjD,IAAI,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;CACnD,CAAC,CAAC"}
|
|
@@ -4,7 +4,7 @@ export declare const getCookieName: (createAuth: (ctx: GenericActionCtx<any>) =>
|
|
|
4
4
|
export declare const fetchSession: <T extends (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>>(createAuth: T, request?: Request) => Promise<{
|
|
5
5
|
session: ReturnType<T>["$Infer"]["Session"] | null;
|
|
6
6
|
}>;
|
|
7
|
-
export declare const reactStartHandler: (request: Request, opts
|
|
8
|
-
convexSiteUrl
|
|
7
|
+
export declare const reactStartHandler: (request: Request, opts: {
|
|
8
|
+
convexSiteUrl: string;
|
|
9
9
|
}) => Promise<Response>;
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react-start/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react-start/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAejD,eAAO,MAAM,aAAa,GACxB,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,oBAS1E,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,CAAC,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,EAEvE,YAAY,CAAC,EACb,UAAU,OAAO;;EAmBlB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,OAAO,EAChB,MAAM;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,sBAMhC,CAAC"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { createCookieGetter } from "better-auth/cookies";
|
|
2
2
|
import { betterFetch } from "@better-fetch/fetch";
|
|
3
3
|
import { JWT_COOKIE_NAME } from "../plugins/convex/index.js";
|
|
4
|
+
const requireBaseURL = (createAuth) => {
|
|
5
|
+
const baseUrl = createAuth({}).options.baseURL;
|
|
6
|
+
if (!baseUrl) {
|
|
7
|
+
throw new Error("No baseURL found in Better Auth config. baseUrl should be set to your Convex Site URL.");
|
|
8
|
+
}
|
|
9
|
+
return baseUrl;
|
|
10
|
+
};
|
|
4
11
|
export const getCookieName = async (createAuth) => {
|
|
12
|
+
// Require baseURL here because it's protocol determines cookie secure mode,
|
|
13
|
+
// and must be set to ensure cookies work between TanStack and Convex.
|
|
14
|
+
requireBaseURL(createAuth);
|
|
5
15
|
const auth = createAuth({});
|
|
6
16
|
const createCookie = createCookieGetter(auth.options);
|
|
7
17
|
const cookie = createCookie(JWT_COOKIE_NAME);
|
|
@@ -11,9 +21,8 @@ export const fetchSession = async (createAuth, request) => {
|
|
|
11
21
|
if (!request) {
|
|
12
22
|
throw new Error("No request found");
|
|
13
23
|
}
|
|
14
|
-
const baseURL = new URL(request.url).origin;
|
|
15
24
|
const { data: session } = await betterFetch("/api/auth/get-session", {
|
|
16
|
-
baseURL,
|
|
25
|
+
baseURL: requireBaseURL(createAuth),
|
|
17
26
|
headers: {
|
|
18
27
|
cookie: request.headers.get("cookie") ?? "",
|
|
19
28
|
},
|
|
@@ -23,9 +32,8 @@ export const fetchSession = async (createAuth, request) => {
|
|
|
23
32
|
};
|
|
24
33
|
};
|
|
25
34
|
export const reactStartHandler = (request, opts) => {
|
|
26
|
-
const convexSiteUrl = opts?.convexSiteUrl ?? process.env.VITE_CONVEX_SITE_URL;
|
|
27
35
|
const requestUrl = new URL(request.url);
|
|
28
|
-
const nextUrl = `${convexSiteUrl}${requestUrl.pathname}${requestUrl.search}`;
|
|
36
|
+
const nextUrl = `${opts.convexSiteUrl}${requestUrl.pathname}${requestUrl.search}`;
|
|
29
37
|
request.headers.set("accept-encoding", "application/json");
|
|
30
38
|
return fetch(nextUrl, new Request(request, { redirect: "manual" }));
|
|
31
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react-start/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,UAAyE,EACzE,EAAE;IACF,MAAM,IAAI,GAAG,UAAU,CAAC,EAAS,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAG/B,UAAa,EACb,OAAiB,EACjB,EAAE;IAGF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react-start/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,cAAc,GAAG,CACrB,UAAyE,EACzE,EAAE;IACF,MAAM,OAAO,GAAG,UAAU,CAAC,EAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,UAAyE,EACzE,EAAE;IACF,4EAA4E;IAC5E,sEAAsE;IACtE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,EAAS,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAG/B,UAAa,EACb,OAAiB,EACjB,EAAE;IAGF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CACzC,uBAAuB,EACvB;QACE,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC;QACnC,OAAO,EAAE;YACP,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;SAC5C;KACF,CACF,CAAC;IACF,OAAO;QACL,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAAgB,EAChB,IAA+B,EAC/B,EAAE;IACF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAClF,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/get-convex/better-auth/issues"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.7.0-alpha.
|
|
9
|
+
"version": "0.7.0-alpha.4",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"keywords": [
|
|
12
12
|
"convex",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
}
|
|
126
126
|
},
|
|
127
127
|
"peerDependencies": {
|
|
128
|
-
"better-auth": "1.2.7",
|
|
128
|
+
"better-auth": "^1.2.7",
|
|
129
129
|
"convex": "~1.16.5 || >=1.17.0 <1.35.0",
|
|
130
130
|
"react": "^18.3.1 || ^19.0.0",
|
|
131
131
|
"react-dom": "^18.3.1 || ^19.0.0"
|
package/src/nextjs/index.ts
CHANGED
|
@@ -3,9 +3,23 @@ import { createCookieGetter } from "better-auth/cookies";
|
|
|
3
3
|
import { GenericActionCtx } from "convex/server";
|
|
4
4
|
import { JWT_COOKIE_NAME } from "../plugins/convex";
|
|
5
5
|
|
|
6
|
+
const requireBaseURL = (
|
|
7
|
+
createAuth: (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>
|
|
8
|
+
) => {
|
|
9
|
+
if (!createAuth({} as any).options.baseURL) {
|
|
10
|
+
throw new Error(
|
|
11
|
+
"No baseURL found in Better Auth config. baseUrl should be set to your Convex Site URL."
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
return createAuth({} as any).options.baseURL;
|
|
15
|
+
};
|
|
16
|
+
|
|
6
17
|
export const getToken = async (
|
|
7
18
|
createAuth: (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>
|
|
8
19
|
) => {
|
|
20
|
+
// Require baseURL here because it's protocol determines cookie secure mode,
|
|
21
|
+
// and must be set to ensure cookies work between Next.js and Convex.
|
|
22
|
+
requireBaseURL(createAuth);
|
|
9
23
|
const { cookies } = await import("next/headers");
|
|
10
24
|
const cookieStore = await cookies();
|
|
11
25
|
const auth = createAuth({} as any);
|
package/src/react-start/index.ts
CHANGED
|
@@ -4,9 +4,24 @@ import { betterFetch } from "@better-fetch/fetch";
|
|
|
4
4
|
import { GenericActionCtx } from "convex/server";
|
|
5
5
|
import { JWT_COOKIE_NAME } from "../plugins/convex";
|
|
6
6
|
|
|
7
|
+
const requireBaseURL = (
|
|
8
|
+
createAuth: (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>
|
|
9
|
+
) => {
|
|
10
|
+
const baseUrl = createAuth({} as any).options.baseURL;
|
|
11
|
+
if (!baseUrl) {
|
|
12
|
+
throw new Error(
|
|
13
|
+
"No baseURL found in Better Auth config. baseUrl should be set to your Convex Site URL."
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
return baseUrl;
|
|
17
|
+
};
|
|
18
|
+
|
|
7
19
|
export const getCookieName = async (
|
|
8
20
|
createAuth: (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>
|
|
9
21
|
) => {
|
|
22
|
+
// Require baseURL here because it's protocol determines cookie secure mode,
|
|
23
|
+
// and must be set to ensure cookies work between TanStack and Convex.
|
|
24
|
+
requireBaseURL(createAuth);
|
|
10
25
|
const auth = createAuth({} as any);
|
|
11
26
|
const createCookie = createCookieGetter(auth.options);
|
|
12
27
|
const cookie = createCookie(JWT_COOKIE_NAME);
|
|
@@ -24,11 +39,10 @@ export const fetchSession = async <
|
|
|
24
39
|
if (!request) {
|
|
25
40
|
throw new Error("No request found");
|
|
26
41
|
}
|
|
27
|
-
const baseURL = new URL(request.url).origin;
|
|
28
42
|
const { data: session } = await betterFetch<Session>(
|
|
29
43
|
"/api/auth/get-session",
|
|
30
44
|
{
|
|
31
|
-
baseURL,
|
|
45
|
+
baseURL: requireBaseURL(createAuth),
|
|
32
46
|
headers: {
|
|
33
47
|
cookie: request.headers.get("cookie") ?? "",
|
|
34
48
|
},
|
|
@@ -41,11 +55,10 @@ export const fetchSession = async <
|
|
|
41
55
|
|
|
42
56
|
export const reactStartHandler = (
|
|
43
57
|
request: Request,
|
|
44
|
-
opts
|
|
58
|
+
opts: { convexSiteUrl: string }
|
|
45
59
|
) => {
|
|
46
|
-
const convexSiteUrl = opts?.convexSiteUrl ?? process.env.VITE_CONVEX_SITE_URL;
|
|
47
60
|
const requestUrl = new URL(request.url);
|
|
48
|
-
const nextUrl = `${convexSiteUrl}${requestUrl.pathname}${requestUrl.search}`;
|
|
61
|
+
const nextUrl = `${opts.convexSiteUrl}${requestUrl.pathname}${requestUrl.search}`;
|
|
49
62
|
request.headers.set("accept-encoding", "application/json");
|
|
50
63
|
return fetch(nextUrl, new Request(request, { redirect: "manual" }));
|
|
51
64
|
};
|