@convex-dev/better-auth 0.8.0-alpha.9 → 0.8.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.
- package/dist/commonjs/auth.d.ts +4 -0
- package/dist/commonjs/auth.d.ts.map +1 -0
- package/dist/commonjs/auth.js +44 -0
- package/dist/commonjs/auth.js.map +1 -0
- package/dist/commonjs/client/adapter.d.ts +8 -10
- package/dist/commonjs/client/adapter.d.ts.map +1 -1
- package/dist/commonjs/client/adapter.js +48 -32
- package/dist/commonjs/client/adapter.js.map +1 -1
- package/dist/commonjs/client/adapterUtils.d.ts +66 -0
- package/dist/commonjs/client/adapterUtils.d.ts.map +1 -0
- package/dist/commonjs/client/adapterUtils.js +429 -0
- package/dist/commonjs/client/adapterUtils.js.map +1 -0
- package/dist/commonjs/client/createSchema.d.ts +24 -0
- package/dist/commonjs/client/createSchema.d.ts.map +1 -0
- package/dist/commonjs/client/createSchema.js +101 -0
- package/dist/commonjs/client/createSchema.js.map +1 -0
- package/dist/commonjs/client/index.d.ts +449 -601
- package/dist/commonjs/client/index.d.ts.map +1 -1
- package/dist/commonjs/client/index.js +339 -212
- package/dist/commonjs/client/index.js.map +1 -1
- package/dist/commonjs/component/adapter.d.ts +128 -0
- package/dist/commonjs/component/adapter.d.ts.map +1 -0
- package/dist/commonjs/component/adapter.js +5 -0
- package/dist/commonjs/component/adapter.js.map +1 -0
- package/dist/commonjs/component/adapterTest.d.ts +3 -5
- package/dist/commonjs/component/adapterTest.d.ts.map +1 -1
- package/dist/commonjs/component/adapterTest.js +3 -17
- package/dist/commonjs/component/adapterTest.js.map +1 -1
- package/dist/commonjs/component/schema.d.ts +451 -207
- package/dist/commonjs/component/schema.d.ts.map +1 -1
- package/dist/commonjs/component/schema.js +50 -177
- package/dist/commonjs/component/schema.js.map +1 -1
- package/dist/commonjs/component/util.d.ts.map +1 -1
- package/dist/commonjs/nextjs/index.d.ts +1 -2
- package/dist/commonjs/nextjs/index.d.ts.map +1 -1
- package/dist/commonjs/nextjs/index.js +3 -2
- package/dist/commonjs/nextjs/index.js.map +1 -1
- package/dist/commonjs/plugins/convex/client.d.ts +2 -5
- package/dist/commonjs/plugins/convex/client.d.ts.map +1 -1
- package/dist/commonjs/plugins/convex/client.js.map +1 -1
- package/dist/commonjs/plugins/convex/index.d.ts +7 -134
- package/dist/commonjs/plugins/convex/index.d.ts.map +1 -1
- package/dist/commonjs/plugins/convex/index.js +10 -125
- package/dist/commonjs/plugins/convex/index.js.map +1 -1
- package/dist/commonjs/plugins/cross-domain/index.js +2 -2
- package/dist/commonjs/plugins/cross-domain/index.js.map +1 -1
- package/dist/commonjs/react-start/index.d.ts +17 -36
- package/dist/commonjs/react-start/index.d.ts.map +1 -1
- package/dist/commonjs/react-start/index.js +43 -31
- package/dist/commonjs/react-start/index.js.map +1 -1
- package/dist/commonjs/src/auth.d.ts +3085 -0
- package/dist/commonjs/src/auth.d.ts.map +1 -0
- package/dist/commonjs/src/auth.js +72 -0
- package/dist/commonjs/src/auth.js.map +1 -0
- package/dist/commonjs/src/client/adapter.d.ts +18 -0
- package/dist/commonjs/src/client/adapter.d.ts.map +1 -0
- package/dist/commonjs/src/client/adapter.js +211 -0
- package/dist/commonjs/src/client/adapter.js.map +1 -0
- package/dist/commonjs/src/client/createSchema.d.ts +25 -0
- package/dist/commonjs/src/client/createSchema.d.ts.map +1 -0
- package/dist/commonjs/src/client/createSchema.js +103 -0
- package/dist/commonjs/src/client/createSchema.js.map +1 -0
- package/dist/commonjs/src/client/index.d.ts +3310 -0
- package/dist/commonjs/src/client/index.d.ts.map +1 -0
- package/dist/commonjs/src/client/index.js +377 -0
- package/dist/commonjs/src/client/index.js.map +1 -0
- package/dist/commonjs/src/client/plugins/index.d.ts +3 -0
- package/dist/commonjs/src/client/plugins/index.d.ts.map +1 -0
- package/dist/commonjs/src/client/plugins/index.js +3 -0
- package/dist/commonjs/src/client/plugins/index.js.map +1 -0
- package/dist/commonjs/src/component/_generated/api.d.ts +12 -0
- package/dist/commonjs/src/component/_generated/api.d.ts.map +1 -0
- package/dist/commonjs/src/component/_generated/api.js +22 -0
- package/dist/commonjs/src/component/_generated/api.js.map +1 -0
- package/dist/commonjs/src/component/_generated/server.d.ts +64 -0
- package/dist/commonjs/src/component/_generated/server.d.ts.map +1 -0
- package/dist/commonjs/src/component/_generated/server.js +74 -0
- package/dist/commonjs/src/component/_generated/server.js.map +1 -0
- package/dist/commonjs/src/component/adapter.d.ts +355 -0
- package/dist/commonjs/src/component/adapter.d.ts.map +1 -0
- package/dist/commonjs/src/component/adapter.js +573 -0
- package/dist/commonjs/src/component/adapter.js.map +1 -0
- package/dist/commonjs/src/component/adapterTest.d.ts +18 -0
- package/dist/commonjs/src/component/adapterTest.d.ts.map +1 -0
- package/dist/commonjs/src/component/adapterTest.js +75 -0
- package/dist/commonjs/src/component/adapterTest.js.map +1 -0
- package/dist/commonjs/src/component/convex.config.d.ts +3 -0
- package/dist/commonjs/src/component/convex.config.d.ts.map +1 -0
- package/dist/commonjs/src/component/convex.config.js +4 -0
- package/dist/commonjs/src/component/convex.config.js.map +1 -0
- package/dist/commonjs/src/component/schema.d.ts +562 -0
- package/dist/commonjs/src/component/schema.d.ts.map +1 -0
- package/dist/commonjs/src/component/schema.js +217 -0
- package/dist/commonjs/src/component/schema.js.map +1 -0
- package/dist/commonjs/src/nextjs/index.d.ts +10 -0
- package/dist/commonjs/src/nextjs/index.d.ts.map +1 -0
- package/dist/commonjs/src/nextjs/index.js +43 -0
- package/dist/commonjs/src/nextjs/index.js.map +1 -0
- package/dist/commonjs/src/plugins/convex/client.d.ts +9 -0
- package/dist/commonjs/src/plugins/convex/client.d.ts.map +1 -0
- package/dist/commonjs/src/plugins/convex/client.js +7 -0
- package/dist/commonjs/src/plugins/convex/client.js.map +1 -0
- package/dist/commonjs/src/plugins/convex/index.d.ts +415 -0
- package/dist/commonjs/src/plugins/convex/index.d.ts.map +1 -0
- package/dist/commonjs/src/plugins/convex/index.js +354 -0
- package/dist/commonjs/src/plugins/convex/index.js.map +1 -0
- package/dist/commonjs/src/plugins/cross-domain/client.d.ts +132 -0
- package/dist/commonjs/src/plugins/cross-domain/client.d.ts.map +1 -0
- package/dist/commonjs/src/plugins/cross-domain/client.js +176 -0
- package/dist/commonjs/src/plugins/cross-domain/client.js.map +1 -0
- package/dist/commonjs/src/plugins/cross-domain/index.d.ts +83 -0
- package/dist/commonjs/src/plugins/cross-domain/index.d.ts.map +1 -0
- package/dist/commonjs/src/plugins/cross-domain/index.js +153 -0
- package/dist/commonjs/src/plugins/cross-domain/index.js.map +1 -0
- package/dist/commonjs/src/plugins/index.d.ts +3 -0
- package/dist/commonjs/src/plugins/index.d.ts.map +1 -0
- package/dist/commonjs/src/plugins/index.js +3 -0
- package/dist/commonjs/src/plugins/index.js.map +1 -0
- package/dist/commonjs/src/react/client.d.ts +31 -0
- package/dist/commonjs/src/react/client.d.ts.map +1 -0
- package/dist/commonjs/src/react/client.js +96 -0
- package/dist/commonjs/src/react/client.js.map +1 -0
- package/dist/commonjs/src/react/index.d.ts +9 -0
- package/dist/commonjs/src/react/index.d.ts.map +1 -0
- package/dist/commonjs/src/react/index.js +15 -0
- package/dist/commonjs/src/react/index.js.map +1 -0
- package/dist/commonjs/src/react-start/index.d.ts +45 -0
- package/dist/commonjs/src/react-start/index.d.ts.map +1 -0
- package/dist/commonjs/src/react-start/index.js +60 -0
- package/dist/commonjs/src/react-start/index.js.map +1 -0
- package/dist/commonjs/src/utils/index.d.ts +9 -0
- package/dist/commonjs/src/utils/index.d.ts.map +1 -0
- package/dist/commonjs/src/utils/index.js +35 -0
- package/dist/commonjs/src/utils/index.js.map +1 -0
- package/dist/esm/auth.d.ts +4 -0
- package/dist/esm/auth.d.ts.map +1 -0
- package/dist/esm/auth.js +44 -0
- package/dist/esm/auth.js.map +1 -0
- package/dist/esm/client/adapter.d.ts +8 -10
- package/dist/esm/client/adapter.d.ts.map +1 -1
- package/dist/esm/client/adapter.js +48 -32
- package/dist/esm/client/adapter.js.map +1 -1
- package/dist/esm/client/adapterUtils.d.ts +66 -0
- package/dist/esm/client/adapterUtils.d.ts.map +1 -0
- package/dist/esm/client/adapterUtils.js +429 -0
- package/dist/esm/client/adapterUtils.js.map +1 -0
- package/dist/esm/client/createSchema.d.ts +24 -0
- package/dist/esm/client/createSchema.d.ts.map +1 -0
- package/dist/esm/client/createSchema.js +101 -0
- package/dist/esm/client/createSchema.js.map +1 -0
- package/dist/esm/client/index.d.ts +449 -601
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +339 -212
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/component/adapter.d.ts +128 -0
- package/dist/esm/component/adapter.d.ts.map +1 -0
- package/dist/esm/component/adapter.js +5 -0
- package/dist/esm/component/adapter.js.map +1 -0
- package/dist/esm/component/adapterTest.d.ts +3 -5
- package/dist/esm/component/adapterTest.d.ts.map +1 -1
- package/dist/esm/component/adapterTest.js +3 -17
- package/dist/esm/component/adapterTest.js.map +1 -1
- package/dist/esm/component/schema.d.ts +451 -207
- package/dist/esm/component/schema.d.ts.map +1 -1
- package/dist/esm/component/schema.js +50 -177
- package/dist/esm/component/schema.js.map +1 -1
- package/dist/esm/component/util.d.ts.map +1 -1
- package/dist/esm/nextjs/index.d.ts +1 -2
- package/dist/esm/nextjs/index.d.ts.map +1 -1
- package/dist/esm/nextjs/index.js +3 -2
- package/dist/esm/nextjs/index.js.map +1 -1
- package/dist/esm/plugins/convex/client.d.ts +2 -5
- package/dist/esm/plugins/convex/client.d.ts.map +1 -1
- package/dist/esm/plugins/convex/client.js.map +1 -1
- package/dist/esm/plugins/convex/index.d.ts +7 -134
- package/dist/esm/plugins/convex/index.d.ts.map +1 -1
- package/dist/esm/plugins/convex/index.js +10 -125
- package/dist/esm/plugins/convex/index.js.map +1 -1
- package/dist/esm/plugins/cross-domain/index.js +2 -2
- package/dist/esm/plugins/cross-domain/index.js.map +1 -1
- package/dist/esm/react-start/index.d.ts +17 -36
- package/dist/esm/react-start/index.d.ts.map +1 -1
- package/dist/esm/react-start/index.js +43 -31
- package/dist/esm/react-start/index.js.map +1 -1
- package/dist/esm/src/auth.d.ts +3085 -0
- package/dist/esm/src/auth.d.ts.map +1 -0
- package/dist/esm/src/auth.js +72 -0
- package/dist/esm/src/auth.js.map +1 -0
- package/dist/esm/src/client/adapter.d.ts +18 -0
- package/dist/esm/src/client/adapter.d.ts.map +1 -0
- package/dist/esm/src/client/adapter.js +211 -0
- package/dist/esm/src/client/adapter.js.map +1 -0
- package/dist/esm/src/client/createSchema.d.ts +25 -0
- package/dist/esm/src/client/createSchema.d.ts.map +1 -0
- package/dist/esm/src/client/createSchema.js +103 -0
- package/dist/esm/src/client/createSchema.js.map +1 -0
- package/dist/esm/src/client/index.d.ts +3310 -0
- package/dist/esm/src/client/index.d.ts.map +1 -0
- package/dist/esm/src/client/index.js +377 -0
- package/dist/esm/src/client/index.js.map +1 -0
- package/dist/esm/src/client/plugins/index.d.ts +3 -0
- package/dist/esm/src/client/plugins/index.d.ts.map +1 -0
- package/dist/esm/src/client/plugins/index.js +3 -0
- package/dist/esm/src/client/plugins/index.js.map +1 -0
- package/dist/esm/src/component/_generated/api.d.ts +12 -0
- package/dist/esm/src/component/_generated/api.d.ts.map +1 -0
- package/dist/esm/src/component/_generated/api.js +22 -0
- package/dist/esm/src/component/_generated/api.js.map +1 -0
- package/dist/esm/src/component/_generated/server.d.ts +64 -0
- package/dist/esm/src/component/_generated/server.d.ts.map +1 -0
- package/dist/esm/src/component/_generated/server.js +74 -0
- package/dist/esm/src/component/_generated/server.js.map +1 -0
- package/dist/esm/src/component/adapter.d.ts +355 -0
- package/dist/esm/src/component/adapter.d.ts.map +1 -0
- package/dist/esm/src/component/adapter.js +573 -0
- package/dist/esm/src/component/adapter.js.map +1 -0
- package/dist/esm/src/component/adapterTest.d.ts +18 -0
- package/dist/esm/src/component/adapterTest.d.ts.map +1 -0
- package/dist/esm/src/component/adapterTest.js +75 -0
- package/dist/esm/src/component/adapterTest.js.map +1 -0
- package/dist/esm/src/component/convex.config.d.ts +3 -0
- package/dist/esm/src/component/convex.config.d.ts.map +1 -0
- package/dist/esm/src/component/convex.config.js +4 -0
- package/dist/esm/src/component/convex.config.js.map +1 -0
- package/dist/esm/src/component/schema.d.ts +562 -0
- package/dist/esm/src/component/schema.d.ts.map +1 -0
- package/dist/esm/src/component/schema.js +217 -0
- package/dist/esm/src/component/schema.js.map +1 -0
- package/dist/esm/src/nextjs/index.d.ts +10 -0
- package/dist/esm/src/nextjs/index.d.ts.map +1 -0
- package/dist/esm/src/nextjs/index.js +43 -0
- package/dist/esm/src/nextjs/index.js.map +1 -0
- package/dist/esm/src/plugins/convex/client.d.ts +9 -0
- package/dist/esm/src/plugins/convex/client.d.ts.map +1 -0
- package/dist/esm/src/plugins/convex/client.js +7 -0
- package/dist/esm/src/plugins/convex/client.js.map +1 -0
- package/dist/esm/src/plugins/convex/index.d.ts +415 -0
- package/dist/esm/src/plugins/convex/index.d.ts.map +1 -0
- package/dist/esm/src/plugins/convex/index.js +354 -0
- package/dist/esm/src/plugins/convex/index.js.map +1 -0
- package/dist/esm/src/plugins/cross-domain/client.d.ts +132 -0
- package/dist/esm/src/plugins/cross-domain/client.d.ts.map +1 -0
- package/dist/esm/src/plugins/cross-domain/client.js +176 -0
- package/dist/esm/src/plugins/cross-domain/client.js.map +1 -0
- package/dist/esm/src/plugins/cross-domain/index.d.ts +83 -0
- package/dist/esm/src/plugins/cross-domain/index.d.ts.map +1 -0
- package/dist/esm/src/plugins/cross-domain/index.js +153 -0
- package/dist/esm/src/plugins/cross-domain/index.js.map +1 -0
- package/dist/esm/src/plugins/index.d.ts +3 -0
- package/dist/esm/src/plugins/index.d.ts.map +1 -0
- package/dist/esm/src/plugins/index.js +3 -0
- package/dist/esm/src/plugins/index.js.map +1 -0
- package/dist/esm/src/react/client.d.ts +31 -0
- package/dist/esm/src/react/client.d.ts.map +1 -0
- package/dist/esm/src/react/client.js +96 -0
- package/dist/esm/src/react/client.js.map +1 -0
- package/dist/esm/src/react/index.d.ts +9 -0
- package/dist/esm/src/react/index.d.ts.map +1 -0
- package/dist/esm/src/react/index.js +15 -0
- package/dist/esm/src/react/index.js.map +1 -0
- package/dist/esm/src/react-start/index.d.ts +45 -0
- package/dist/esm/src/react-start/index.d.ts.map +1 -0
- package/dist/esm/src/react-start/index.js +60 -0
- package/dist/esm/src/react-start/index.js.map +1 -0
- package/dist/esm/src/utils/index.d.ts +9 -0
- package/dist/esm/src/utils/index.d.ts.map +1 -0
- package/dist/esm/src/utils/index.js +35 -0
- package/dist/esm/src/utils/index.js.map +1 -0
- package/package.json +21 -4
- package/src/auth.ts +57 -0
- package/src/client/adapter.test.ts +15 -0
- package/src/client/adapter.ts +83 -58
- package/src/{component/lib.ts → client/adapterUtils.ts} +106 -256
- package/src/client/createSchema.ts +149 -0
- package/src/client/index.ts +561 -317
- package/src/component/_generated/api.d.ts +1711 -547
- package/src/component/adapter.ts +13 -0
- package/src/component/adapterTest.ts +8 -34
- package/src/component/schema.ts +58 -192
- package/src/nextjs/index.ts +5 -5
- package/src/plugins/convex/client.ts +2 -3
- package/src/plugins/convex/index.ts +15 -147
- package/src/plugins/cross-domain/index.ts +2 -2
- package/src/react-start/index.ts +76 -44
- package/dist/commonjs/client/cors.d.ts +0 -77
- package/dist/commonjs/client/cors.d.ts.map +0 -1
- package/dist/commonjs/client/cors.js +0 -297
- package/dist/commonjs/client/cors.js.map +0 -1
- package/dist/commonjs/util.d.ts +0 -2
- package/dist/commonjs/util.d.ts.map +0 -1
- package/dist/commonjs/util.js +0 -8
- package/dist/commonjs/util.js.map +0 -1
- package/dist/esm/client/cors.d.ts +0 -77
- package/dist/esm/client/cors.d.ts.map +0 -1
- package/dist/esm/client/cors.js +0 -297
- package/dist/esm/client/cors.js.map +0 -1
- package/dist/esm/util.d.ts +0 -2
- package/dist/esm/util.d.ts.map +0 -1
- package/dist/esm/util.js +0 -8
- package/dist/esm/util.js.map +0 -1
- package/src/component/util.ts +0 -4
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { betterAuth } from "better-auth";
|
|
2
|
+
import { GenericActionCtx } from "convex/server";
|
|
3
|
+
import { CreateAuth } from "../client/index.js";
|
|
4
|
+
export declare const getCookieName: (createAuth: CreateAuth) => Promise<string>;
|
|
5
|
+
export declare const fetchSession: <T extends (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>>(request: Request, opts: {
|
|
6
|
+
convexSiteUrl: string;
|
|
7
|
+
verbose?: boolean;
|
|
8
|
+
}) => Promise<{
|
|
9
|
+
session: ReturnType<T>["$Infer"]["Session"] | null;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const reactStartHandler: (request: Request, opts: {
|
|
12
|
+
convexSiteUrl: string;
|
|
13
|
+
verbose?: boolean;
|
|
14
|
+
}) => Promise<Response>;
|
|
15
|
+
export declare const reactStartHelpers: (createAuth: CreateAuth, opts: {
|
|
16
|
+
convexSiteUrl: string;
|
|
17
|
+
verbose?: boolean;
|
|
18
|
+
}) => {
|
|
19
|
+
fetchSession: (request: Request) => Promise<{
|
|
20
|
+
session: {
|
|
21
|
+
session: {
|
|
22
|
+
id: string;
|
|
23
|
+
userId: string;
|
|
24
|
+
expiresAt: Date;
|
|
25
|
+
createdAt: Date;
|
|
26
|
+
updatedAt: Date;
|
|
27
|
+
token: string;
|
|
28
|
+
ipAddress?: string | null | undefined;
|
|
29
|
+
userAgent?: string | null | undefined;
|
|
30
|
+
};
|
|
31
|
+
user: {
|
|
32
|
+
id: string;
|
|
33
|
+
email: string;
|
|
34
|
+
emailVerified: boolean;
|
|
35
|
+
name: string;
|
|
36
|
+
createdAt: Date;
|
|
37
|
+
updatedAt: Date;
|
|
38
|
+
image?: string | null | undefined;
|
|
39
|
+
};
|
|
40
|
+
} | null;
|
|
41
|
+
}>;
|
|
42
|
+
reactStartHandler: (request: Request) => Promise<Response>;
|
|
43
|
+
getCookieName: () => Promise<string>;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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;AAGjD,OAAO,EAAE,UAAU,EAA2B,MAAM,WAAW,CAAC;AAEhE,eAAO,MAAM,aAAa,GAAU,YAAY,UAAU,oBAKzD,CAAC;AAeF,eAAO,MAAM,YAAY,GACvB,CAAC,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,EAEvE,SAAS,OAAO,EAChB,MAAM;IACJ,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;;EAoBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,OAAO,EAChB,MAAM;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,sBAOnD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,YAAY,UAAU,EACtB,MAAM;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE;4BAexB,OAAO;;;;;;;;;;;;;;;;;;;;;;;iCACF,OAAO;;CAGvC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { createCookieGetter } from "better-auth/cookies";
|
|
2
|
+
import { betterFetch } from "@better-fetch/fetch";
|
|
3
|
+
import { JWT_COOKIE_NAME } from "../plugins/convex/index.js";
|
|
4
|
+
import { oneLine } from "common-tags";
|
|
5
|
+
import { getInactiveAuthInstance } from "../client/index.js";
|
|
6
|
+
export const getCookieName = async (createAuth) => {
|
|
7
|
+
const auth = getInactiveAuthInstance(createAuth);
|
|
8
|
+
const createCookie = createCookieGetter(auth.options);
|
|
9
|
+
const cookie = createCookie(JWT_COOKIE_NAME);
|
|
10
|
+
return cookie.name;
|
|
11
|
+
};
|
|
12
|
+
const requireConvexSiteUrl = (opts, calledFrom) => {
|
|
13
|
+
if (!opts.convexSiteUrl) {
|
|
14
|
+
throw new Error(`${calledFrom}: opts.convexSiteUrl is required`);
|
|
15
|
+
}
|
|
16
|
+
if (opts.verbose) {
|
|
17
|
+
console.log(`${calledFrom}: opts.convexSiteUrl: ${opts.convexSiteUrl}`);
|
|
18
|
+
}
|
|
19
|
+
return opts.convexSiteUrl;
|
|
20
|
+
};
|
|
21
|
+
export const fetchSession = async (request, opts) => {
|
|
22
|
+
if (!request) {
|
|
23
|
+
throw new Error("No request found");
|
|
24
|
+
}
|
|
25
|
+
const convexSiteUrl = requireConvexSiteUrl(opts, "fetchSession");
|
|
26
|
+
const { data: session } = await betterFetch("/api/auth/get-session", {
|
|
27
|
+
baseURL: convexSiteUrl,
|
|
28
|
+
headers: {
|
|
29
|
+
cookie: request.headers.get("cookie") ?? "",
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
session,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export const reactStartHandler = (request, opts) => {
|
|
37
|
+
const requestUrl = new URL(request.url);
|
|
38
|
+
const convexSiteUrl = requireConvexSiteUrl(opts, "reactStartHandler");
|
|
39
|
+
const nextUrl = `${convexSiteUrl}${requestUrl.pathname}${requestUrl.search}`;
|
|
40
|
+
request.headers.set("accept-encoding", "application/json");
|
|
41
|
+
return fetch(nextUrl, new Request(request, { redirect: "manual" }));
|
|
42
|
+
};
|
|
43
|
+
export const reactStartHelpers = (createAuth, opts) => {
|
|
44
|
+
if (!opts.convexSiteUrl) {
|
|
45
|
+
throw new Error("opts.convexSiteUrl is required");
|
|
46
|
+
}
|
|
47
|
+
if (opts.convexSiteUrl.endsWith(".convex.cloud")) {
|
|
48
|
+
throw new Error(oneLine(`
|
|
49
|
+
opts.convexSiteUrl ends with .convex.cloud, which is your cloud URL.
|
|
50
|
+
Use your Convex site URL instead.
|
|
51
|
+
https://docs.convex.dev/production/environment-variables#system-environment-variables
|
|
52
|
+
`));
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
fetchSession: (request) => fetchSession(request, opts),
|
|
56
|
+
reactStartHandler: (request) => reactStartHandler(request, opts),
|
|
57
|
+
getCookieName: () => getCookieName(createAuth),
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/react-start/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RunActionCtx, RunCtx, RunMutationCtx, RunQueryCtx } from "../client/index.js";
|
|
2
|
+
export declare const requireEnv: (name: string) => string;
|
|
3
|
+
export declare const isQueryCtx: (ctx: RunCtx) => ctx is RunQueryCtx;
|
|
4
|
+
export declare const isMutationCtx: (ctx: RunCtx) => ctx is RunMutationCtx;
|
|
5
|
+
export declare const isActionCtx: (ctx: RunCtx) => ctx is RunActionCtx;
|
|
6
|
+
export declare const requireQueryCtx: (ctx: RunCtx) => RunQueryCtx;
|
|
7
|
+
export declare const requireMutationCtx: (ctx: RunCtx) => RunMutationCtx;
|
|
8
|
+
export declare const requireActionCtx: (ctx: RunCtx) => RunActionCtx;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE9E,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,WAMtC,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,GAAG,IAAI,WAE/C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,GAAG,IAAI,cAElD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,GAAG,IAAI,YAEhD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,WAK7C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG,cAKhD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,YAK9C,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const requireEnv = (name) => {
|
|
2
|
+
const value = process.env[name];
|
|
3
|
+
if (value === undefined) {
|
|
4
|
+
throw new Error(`Missing environment variable \`${name}\``);
|
|
5
|
+
}
|
|
6
|
+
return value;
|
|
7
|
+
};
|
|
8
|
+
export const isQueryCtx = (ctx) => {
|
|
9
|
+
return "runQuery" in ctx;
|
|
10
|
+
};
|
|
11
|
+
export const isMutationCtx = (ctx) => {
|
|
12
|
+
return "runMutation" in ctx;
|
|
13
|
+
};
|
|
14
|
+
export const isActionCtx = (ctx) => {
|
|
15
|
+
return "runAction" in ctx;
|
|
16
|
+
};
|
|
17
|
+
export const requireQueryCtx = (ctx) => {
|
|
18
|
+
if (!isQueryCtx(ctx)) {
|
|
19
|
+
throw new Error("Query context required");
|
|
20
|
+
}
|
|
21
|
+
return ctx;
|
|
22
|
+
};
|
|
23
|
+
export const requireMutationCtx = (ctx) => {
|
|
24
|
+
if (!isMutationCtx(ctx)) {
|
|
25
|
+
throw new Error("Mutation context required");
|
|
26
|
+
}
|
|
27
|
+
return ctx;
|
|
28
|
+
};
|
|
29
|
+
export const requireActionCtx = (ctx) => {
|
|
30
|
+
if (!isActionCtx(ctx)) {
|
|
31
|
+
throw new Error("Action context required");
|
|
32
|
+
}
|
|
33
|
+
return ctx;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,IAAI,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAsB,EAAE;IAC5D,OAAO,UAAU,IAAI,GAAG,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAyB,EAAE;IAClE,OAAO,aAAa,IAAI,GAAG,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAuB,EAAE;IAC9D,OAAO,WAAW,IAAI,GAAG,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAe,EAAE;IAC1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAkB,EAAE;IAChE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAgB,EAAE;IAC5D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,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.8.0
|
|
9
|
+
"version": "0.8.0",
|
|
10
10
|
"versionMetadata": {
|
|
11
11
|
"branch": "main",
|
|
12
12
|
"label": "alpha"
|
|
@@ -29,9 +29,8 @@
|
|
|
29
29
|
"build:cjs:generatePackageJson": "echo '{\\n \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json",
|
|
30
30
|
"build:watch": "chokidar 'tsconfig*.json' 'src/**/*.ts' -c 'npm run build' --initial",
|
|
31
31
|
"typecheck": "tsc --noEmit",
|
|
32
|
-
"prepare": "npm run build",
|
|
33
32
|
"prepack": "node node10stubs.mjs",
|
|
34
|
-
"prepublishOnly": "npm run
|
|
33
|
+
"prepublishOnly": "npm run build",
|
|
35
34
|
"postpack": "node node10stubs.mjs --cleanup",
|
|
36
35
|
"generate": "concurrently \"cd examples/next && npm run generate\" \"cd examples/react && npm run generate\" \"cd examples/tanstack && npm run generate\"",
|
|
37
36
|
"test": "vitest run",
|
|
@@ -53,10 +52,23 @@
|
|
|
53
52
|
"default": "./dist/esm/client/index.js"
|
|
54
53
|
},
|
|
55
54
|
"require": {
|
|
55
|
+
"@convex-dev/component-source": "./src/client/index.ts",
|
|
56
56
|
"types": "./dist/commonjs/client/index.d.ts",
|
|
57
57
|
"default": "./dist/commonjs/client/index.js"
|
|
58
58
|
}
|
|
59
59
|
},
|
|
60
|
+
"./adapter": {
|
|
61
|
+
"import": {
|
|
62
|
+
"@convex-dev/component-source": "./src/component/adapter.ts",
|
|
63
|
+
"types": "./dist/esm/component/adapter.d.ts",
|
|
64
|
+
"default": "./dist/esm/component/adapter.js"
|
|
65
|
+
},
|
|
66
|
+
"require": {
|
|
67
|
+
"@convex-dev/component-source": "./src/component/adapter.ts",
|
|
68
|
+
"types": "./dist/commonjs/component/adapter.d.ts",
|
|
69
|
+
"default": "./dist/commonjs/component/adapter.js"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
60
72
|
"./client/plugins": {
|
|
61
73
|
"import": {
|
|
62
74
|
"@convex-dev/component-source": "./src/client/plugins/index.ts",
|
|
@@ -64,6 +76,7 @@
|
|
|
64
76
|
"default": "./dist/esm/client/plugins/index.js"
|
|
65
77
|
},
|
|
66
78
|
"require": {
|
|
79
|
+
"@convex-dev/component-source": "./src/client/plugins/index.ts",
|
|
67
80
|
"types": "./dist/commonjs/client/plugins/index.d.ts",
|
|
68
81
|
"default": "./dist/commonjs/client/plugins/index.js"
|
|
69
82
|
}
|
|
@@ -85,6 +98,7 @@
|
|
|
85
98
|
"default": "./dist/esm/plugins/index.js"
|
|
86
99
|
},
|
|
87
100
|
"require": {
|
|
101
|
+
"@convex-dev/component-source": "./src/plugins/index.ts",
|
|
88
102
|
"types": "./dist/commonjs/plugins/index.d.ts",
|
|
89
103
|
"default": "./dist/commonjs/plugins/index.js"
|
|
90
104
|
}
|
|
@@ -96,6 +110,7 @@
|
|
|
96
110
|
"default": "./dist/esm/react/index.js"
|
|
97
111
|
},
|
|
98
112
|
"require": {
|
|
113
|
+
"@convex-dev/component-source": "./src/react/index.tsx",
|
|
99
114
|
"types": "./dist/commonjs/react/index.d.ts",
|
|
100
115
|
"default": "./dist/commonjs/react/index.js"
|
|
101
116
|
}
|
|
@@ -117,6 +132,7 @@
|
|
|
117
132
|
"default": "./dist/esm/utils/index.js"
|
|
118
133
|
},
|
|
119
134
|
"require": {
|
|
135
|
+
"@convex-dev/component-source": "./src/utils/index.ts",
|
|
120
136
|
"types": "./dist/commonjs/utils/index.d.ts",
|
|
121
137
|
"default": "./dist/commonjs/utils/index.js"
|
|
122
138
|
}
|
|
@@ -163,7 +179,7 @@
|
|
|
163
179
|
"prettier": "3.2.5",
|
|
164
180
|
"semver": "^7.7.2",
|
|
165
181
|
"tsc-alias": "^1.8.16",
|
|
166
|
-
"typescript": "
|
|
182
|
+
"typescript": "5.8.3",
|
|
167
183
|
"typescript-eslint": "^8.4.0",
|
|
168
184
|
"vitest": "^3.2.2"
|
|
169
185
|
},
|
|
@@ -171,6 +187,7 @@
|
|
|
171
187
|
"types": "./dist/commonjs/client/index.d.ts",
|
|
172
188
|
"module": "./dist/esm/client/index.js",
|
|
173
189
|
"dependencies": {
|
|
190
|
+
"@better-fetch/fetch": "^1.1.18",
|
|
174
191
|
"common-tags": "^1.8.2",
|
|
175
192
|
"convex-helpers": "^0.1.95",
|
|
176
193
|
"is-network-error": "^1.1.0",
|
package/src/auth.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { betterAuth, BetterAuthOptions } from "better-auth";
|
|
2
|
+
import {
|
|
3
|
+
anonymous,
|
|
4
|
+
bearer,
|
|
5
|
+
emailOTP,
|
|
6
|
+
genericOAuth,
|
|
7
|
+
jwt,
|
|
8
|
+
magicLink,
|
|
9
|
+
oidcProvider,
|
|
10
|
+
oneTap,
|
|
11
|
+
oneTimeToken,
|
|
12
|
+
phoneNumber,
|
|
13
|
+
twoFactor,
|
|
14
|
+
username,
|
|
15
|
+
} from "better-auth/plugins";
|
|
16
|
+
import { convex } from "./plugins";
|
|
17
|
+
import { passkey } from "better-auth/plugins/passkey";
|
|
18
|
+
import { convexAdapter } from "./client";
|
|
19
|
+
|
|
20
|
+
// This is the config used to generate the schema
|
|
21
|
+
const options = {
|
|
22
|
+
logger: {
|
|
23
|
+
disabled: true,
|
|
24
|
+
},
|
|
25
|
+
database: convexAdapter({} as any, {} as any),
|
|
26
|
+
rateLimit: {
|
|
27
|
+
storage: "database",
|
|
28
|
+
},
|
|
29
|
+
plugins: [
|
|
30
|
+
twoFactor(),
|
|
31
|
+
anonymous(),
|
|
32
|
+
username(),
|
|
33
|
+
phoneNumber(),
|
|
34
|
+
magicLink({ sendMagicLink: async () => {} }),
|
|
35
|
+
emailOTP({ sendVerificationOTP: async () => {} }),
|
|
36
|
+
passkey(),
|
|
37
|
+
genericOAuth({
|
|
38
|
+
config: [
|
|
39
|
+
{
|
|
40
|
+
clientId: "",
|
|
41
|
+
clientSecret: "",
|
|
42
|
+
providerId: "",
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
}),
|
|
46
|
+
oneTap(),
|
|
47
|
+
oidcProvider({
|
|
48
|
+
loginPage: "/login",
|
|
49
|
+
}),
|
|
50
|
+
bearer(),
|
|
51
|
+
oneTimeToken(),
|
|
52
|
+
jwt(),
|
|
53
|
+
convex(),
|
|
54
|
+
],
|
|
55
|
+
} as BetterAuthOptions; // assert type to avoid overloading ts compiler
|
|
56
|
+
const config = betterAuth(options) as ReturnType<typeof betterAuth>;
|
|
57
|
+
export { config as auth };
|
|
@@ -421,4 +421,19 @@ describe("Convex Adapter Tests", async () => {
|
|
|
421
421
|
})
|
|
422
422
|
).toEqual(null);
|
|
423
423
|
});
|
|
424
|
+
|
|
425
|
+
test("should fail to create a record with a unique field that already exists", async () => {
|
|
426
|
+
const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
|
|
427
|
+
const adapter = await getAdapter(t)();
|
|
428
|
+
await adapter.create({
|
|
429
|
+
model: "user",
|
|
430
|
+
data: { name: "foo", email: "foo@bar.com" },
|
|
431
|
+
});
|
|
432
|
+
await expect(
|
|
433
|
+
adapter.create({
|
|
434
|
+
model: "user",
|
|
435
|
+
data: { name: "foo", email: "foo@bar.com" },
|
|
436
|
+
})
|
|
437
|
+
).rejects.toThrow("user email already exists");
|
|
438
|
+
});
|
|
424
439
|
});
|
package/src/client/adapter.ts
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
import { BetterAuth } from "./index";
|
|
2
1
|
import {
|
|
3
2
|
AdapterDebugLogs,
|
|
4
3
|
CleanedWhere,
|
|
5
4
|
createAdapter,
|
|
6
5
|
} from "better-auth/adapters";
|
|
7
6
|
import {
|
|
7
|
+
createFunctionHandle,
|
|
8
|
+
FunctionHandle,
|
|
8
9
|
GenericActionCtx,
|
|
9
|
-
|
|
10
|
-
GenericQueryCtx,
|
|
10
|
+
GenericDataModel,
|
|
11
11
|
PaginationOptions,
|
|
12
12
|
PaginationResult,
|
|
13
|
+
SchemaDefinition,
|
|
13
14
|
} from "convex/server";
|
|
14
15
|
import { SetOptional } from "type-fest";
|
|
16
|
+
import { createSchema } from "./createSchema";
|
|
17
|
+
import { AuthFunctions, GenericCtx, Triggers, UseApi } from ".";
|
|
18
|
+
import defaultSchema from "../component/schema";
|
|
19
|
+
import { api as componentApi } from "../component/_generated/api";
|
|
15
20
|
|
|
16
21
|
const handlePagination = async (
|
|
17
22
|
next: ({
|
|
@@ -88,28 +93,24 @@ const parseWhere = (where?: CleanedWhere[]): ConvexCleanedWhere[] => {
|
|
|
88
93
|
}) as ConvexCleanedWhere[];
|
|
89
94
|
};
|
|
90
95
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
ctx: GenericCtx,
|
|
104
|
-
component: BetterAuth,
|
|
105
|
-
config: ConvexAdapterConfig = {}
|
|
96
|
+
export const convexAdapter = <
|
|
97
|
+
DataModel extends GenericDataModel,
|
|
98
|
+
Ctx extends GenericCtx<DataModel> = GenericActionCtx<DataModel>,
|
|
99
|
+
Schema extends SchemaDefinition<any, any> = typeof defaultSchema,
|
|
100
|
+
>(
|
|
101
|
+
ctx: Ctx,
|
|
102
|
+
api: UseApi<typeof componentApi>,
|
|
103
|
+
config: {
|
|
104
|
+
debugLogs?: AdapterDebugLogs;
|
|
105
|
+
authFunctions?: AuthFunctions;
|
|
106
|
+
triggers?: Triggers<DataModel, Schema>;
|
|
107
|
+
} = {}
|
|
106
108
|
) => {
|
|
107
|
-
const { debugLogs } = config;
|
|
108
109
|
return createAdapter({
|
|
109
110
|
config: {
|
|
110
111
|
adapterId: "convex",
|
|
111
112
|
adapterName: "Convex Adapter",
|
|
112
|
-
debugLogs:
|
|
113
|
+
debugLogs: config.debugLogs || false,
|
|
113
114
|
disableIdGeneration: true,
|
|
114
115
|
supportsNumericIds: false,
|
|
115
116
|
usePlural: false,
|
|
@@ -137,39 +138,36 @@ export const convexAdapter = (
|
|
|
137
138
|
options.telemetry = { enabled: false };
|
|
138
139
|
return {
|
|
139
140
|
id: "convex",
|
|
141
|
+
createSchema,
|
|
140
142
|
create: async ({ model, data, select }): Promise<any> => {
|
|
141
143
|
if (!("runMutation" in ctx)) {
|
|
142
144
|
throw new Error("ctx is not a mutation ctx");
|
|
143
145
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
? component.config.authFunctions.createSession
|
|
152
|
-
: component.component.lib.create;
|
|
153
|
-
return await ctx.runMutation(createFn, {
|
|
146
|
+
const onCreateHandle =
|
|
147
|
+
config.authFunctions?.onCreate && config.triggers?.[model]?.onCreate
|
|
148
|
+
? ((await createFunctionHandle(
|
|
149
|
+
config.authFunctions.onCreate
|
|
150
|
+
)) as FunctionHandle<"mutation">)
|
|
151
|
+
: undefined;
|
|
152
|
+
return ctx.runMutation(api.adapter.create, {
|
|
154
153
|
input: { model, data },
|
|
154
|
+
select,
|
|
155
|
+
onCreateHandle: onCreateHandle,
|
|
155
156
|
});
|
|
156
157
|
},
|
|
157
158
|
findOne: async (data): Promise<any> => {
|
|
158
159
|
if (data.where?.every((w) => w.connector === "OR")) {
|
|
159
160
|
for (const w of data.where) {
|
|
160
|
-
const result = await ctx.runQuery(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
where: parseWhere([w]),
|
|
165
|
-
}
|
|
166
|
-
);
|
|
161
|
+
const result = await ctx.runQuery(api.adapter.findOne, {
|
|
162
|
+
...data,
|
|
163
|
+
where: parseWhere([w]),
|
|
164
|
+
});
|
|
167
165
|
if (result) {
|
|
168
166
|
return result;
|
|
169
167
|
}
|
|
170
168
|
}
|
|
171
169
|
}
|
|
172
|
-
return await ctx.runQuery(
|
|
170
|
+
return await ctx.runQuery(api.adapter.findOne, {
|
|
173
171
|
...data,
|
|
174
172
|
where: parseWhere(data.where),
|
|
175
173
|
});
|
|
@@ -183,7 +181,7 @@ export const convexAdapter = (
|
|
|
183
181
|
}
|
|
184
182
|
const result = await handlePagination(
|
|
185
183
|
async ({ paginationOpts }) => {
|
|
186
|
-
return await ctx.runQuery(
|
|
184
|
+
return await ctx.runQuery(api.adapter.findMany, {
|
|
187
185
|
...data,
|
|
188
186
|
where: parseWhere(data.where),
|
|
189
187
|
paginationOpts,
|
|
@@ -199,7 +197,7 @@ export const convexAdapter = (
|
|
|
199
197
|
throw new Error("OR connector not supported in findMany");
|
|
200
198
|
}
|
|
201
199
|
const result = await handlePagination(async ({ paginationOpts }) => {
|
|
202
|
-
return await ctx.runQuery(
|
|
200
|
+
return await ctx.runQuery(api.adapter.findMany, {
|
|
203
201
|
...data,
|
|
204
202
|
where: parseWhere(data.where),
|
|
205
203
|
paginationOpts,
|
|
@@ -212,16 +210,20 @@ export const convexAdapter = (
|
|
|
212
210
|
throw new Error("ctx is not a mutation ctx");
|
|
213
211
|
}
|
|
214
212
|
if (data.where?.length === 1 && data.where[0].operator === "eq") {
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
213
|
+
const onUpdateHandle =
|
|
214
|
+
config.authFunctions?.onUpdate &&
|
|
215
|
+
config.triggers?.[data.model]?.onUpdate
|
|
216
|
+
? ((await createFunctionHandle(
|
|
217
|
+
config.authFunctions.onUpdate
|
|
218
|
+
)) as FunctionHandle<"mutation">)
|
|
219
|
+
: undefined;
|
|
220
|
+
return ctx.runMutation(api.adapter.updateOne, {
|
|
220
221
|
input: {
|
|
221
222
|
model: data.model,
|
|
222
223
|
where: parseWhere(data.where),
|
|
223
224
|
update: data.update as any,
|
|
224
225
|
},
|
|
226
|
+
onUpdateHandle: onUpdateHandle,
|
|
225
227
|
});
|
|
226
228
|
}
|
|
227
229
|
throw new Error("where clause not supported");
|
|
@@ -230,25 +232,40 @@ export const convexAdapter = (
|
|
|
230
232
|
if (!("runMutation" in ctx)) {
|
|
231
233
|
throw new Error("ctx is not a mutation ctx");
|
|
232
234
|
}
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
235
|
+
const onDeleteHandle =
|
|
236
|
+
config.authFunctions?.onDelete &&
|
|
237
|
+
config.triggers?.[data.model]?.onDelete
|
|
238
|
+
? ((await createFunctionHandle(
|
|
239
|
+
config.authFunctions.onDelete
|
|
240
|
+
)) as FunctionHandle<"mutation">)
|
|
241
|
+
: undefined;
|
|
242
|
+
await ctx.runMutation(api.adapter.deleteOne, {
|
|
243
|
+
input: {
|
|
244
|
+
model: data.model,
|
|
245
|
+
where: parseWhere(data.where),
|
|
246
|
+
},
|
|
247
|
+
onDeleteHandle: onDeleteHandle,
|
|
240
248
|
});
|
|
241
|
-
return;
|
|
242
249
|
},
|
|
243
250
|
deleteMany: async (data) => {
|
|
244
251
|
if (!("runMutation" in ctx)) {
|
|
245
252
|
throw new Error("ctx is not a mutation ctx");
|
|
246
253
|
}
|
|
254
|
+
const onDeleteHandle =
|
|
255
|
+
config.authFunctions?.onDelete &&
|
|
256
|
+
config.triggers?.[data.model]?.onDelete
|
|
257
|
+
? ((await createFunctionHandle(
|
|
258
|
+
config.authFunctions.onDelete
|
|
259
|
+
)) as FunctionHandle<"mutation">)
|
|
260
|
+
: undefined;
|
|
247
261
|
const result = await handlePagination(async ({ paginationOpts }) => {
|
|
248
|
-
return await ctx.runMutation(
|
|
249
|
-
|
|
250
|
-
|
|
262
|
+
return await ctx.runMutation(api.adapter.deleteMany, {
|
|
263
|
+
input: {
|
|
264
|
+
...data,
|
|
265
|
+
where: parseWhere(data.where),
|
|
266
|
+
},
|
|
251
267
|
paginationOpts,
|
|
268
|
+
onDeleteHandle: onDeleteHandle,
|
|
252
269
|
});
|
|
253
270
|
});
|
|
254
271
|
return result.count;
|
|
@@ -257,13 +274,21 @@ export const convexAdapter = (
|
|
|
257
274
|
if (!("runMutation" in ctx)) {
|
|
258
275
|
throw new Error("ctx is not an action ctx");
|
|
259
276
|
}
|
|
277
|
+
const onUpdateHandle =
|
|
278
|
+
config.authFunctions?.onUpdate &&
|
|
279
|
+
config.triggers?.[data.model]?.onUpdate
|
|
280
|
+
? ((await createFunctionHandle(
|
|
281
|
+
config.authFunctions.onUpdate
|
|
282
|
+
)) as FunctionHandle<"mutation">)
|
|
283
|
+
: undefined;
|
|
260
284
|
const result = await handlePagination(async ({ paginationOpts }) => {
|
|
261
|
-
return await ctx.runMutation(
|
|
285
|
+
return await ctx.runMutation(api.adapter.updateMany, {
|
|
262
286
|
input: {
|
|
263
287
|
...data,
|
|
264
288
|
where: parseWhere(data.where),
|
|
265
|
-
paginationOpts,
|
|
266
289
|
},
|
|
290
|
+
paginationOpts,
|
|
291
|
+
onUpdateHandle: onUpdateHandle,
|
|
267
292
|
});
|
|
268
293
|
});
|
|
269
294
|
return result.count;
|