@convex-dev/better-auth 0.7.0-alpha.9 → 0.7.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/client/adapter.d.ts +10 -1
- package/dist/commonjs/client/adapter.d.ts.map +1 -1
- package/dist/commonjs/client/adapter.js +190 -192
- package/dist/commonjs/client/adapter.js.map +1 -1
- package/dist/commonjs/client/index.d.ts +283 -179
- package/dist/commonjs/client/index.d.ts.map +1 -1
- package/dist/commonjs/client/index.js +46 -58
- package/dist/commonjs/client/index.js.map +1 -1
- package/dist/commonjs/component/adapterTest.d.ts +19 -0
- package/dist/commonjs/component/adapterTest.d.ts.map +1 -0
- package/dist/commonjs/component/adapterTest.js +82 -0
- package/dist/commonjs/component/adapterTest.js.map +1 -0
- package/dist/commonjs/component/lib.d.ts +308 -536
- package/dist/commonjs/component/lib.d.ts.map +1 -1
- package/dist/commonjs/component/lib.js +469 -292
- package/dist/commonjs/component/lib.js.map +1 -1
- package/dist/commonjs/component/schema.d.ts +465 -26
- package/dist/commonjs/component/schema.d.ts.map +1 -1
- package/dist/commonjs/component/schema.js +334 -18
- package/dist/commonjs/component/schema.js.map +1 -1
- package/dist/commonjs/component/util.d.ts +944 -68
- package/dist/commonjs/component/util.d.ts.map +1 -1
- package/dist/commonjs/nextjs/index.d.ts.map +1 -1
- package/dist/commonjs/nextjs/index.js +3 -9
- package/dist/commonjs/nextjs/index.js.map +1 -1
- package/dist/commonjs/plugins/convex/index.d.ts +14 -11
- package/dist/commonjs/plugins/convex/index.d.ts.map +1 -1
- package/dist/commonjs/plugins/convex/index.js +3 -2
- package/dist/commonjs/plugins/convex/index.js.map +1 -1
- package/dist/commonjs/plugins/cross-domain/client.d.ts +1 -1
- package/dist/commonjs/plugins/cross-domain/index.d.ts +5 -3
- package/dist/commonjs/plugins/cross-domain/index.d.ts.map +1 -1
- package/dist/commonjs/plugins/cross-domain/index.js +19 -5
- package/dist/commonjs/plugins/cross-domain/index.js.map +1 -1
- package/dist/commonjs/react/client.d.ts +1 -1
- package/dist/commonjs/react/client.d.ts.map +1 -1
- package/dist/commonjs/react/client.js +3 -9
- package/dist/commonjs/react/client.js.map +1 -1
- package/dist/commonjs/react-start/index.d.ts +4 -4
- package/dist/commonjs/react-start/index.d.ts.map +1 -1
- package/dist/commonjs/react-start/index.js +3 -0
- package/dist/commonjs/react-start/index.js.map +1 -1
- package/dist/commonjs/utils/index.d.ts +2 -0
- package/dist/commonjs/utils/index.d.ts.map +1 -0
- package/dist/commonjs/utils/index.js +8 -0
- package/dist/commonjs/utils/index.js.map +1 -0
- package/dist/esm/client/adapter.d.ts +10 -1
- package/dist/esm/client/adapter.d.ts.map +1 -1
- package/dist/esm/client/adapter.js +190 -192
- package/dist/esm/client/adapter.js.map +1 -1
- package/dist/esm/client/index.d.ts +283 -179
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +46 -58
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/component/adapterTest.d.ts +19 -0
- package/dist/esm/component/adapterTest.d.ts.map +1 -0
- package/dist/esm/component/adapterTest.js +82 -0
- package/dist/esm/component/adapterTest.js.map +1 -0
- package/dist/esm/component/lib.d.ts +308 -536
- package/dist/esm/component/lib.d.ts.map +1 -1
- package/dist/esm/component/lib.js +469 -292
- package/dist/esm/component/lib.js.map +1 -1
- package/dist/esm/component/schema.d.ts +465 -26
- package/dist/esm/component/schema.d.ts.map +1 -1
- package/dist/esm/component/schema.js +334 -18
- package/dist/esm/component/schema.js.map +1 -1
- package/dist/esm/component/util.d.ts +944 -68
- package/dist/esm/component/util.d.ts.map +1 -1
- package/dist/esm/nextjs/index.d.ts.map +1 -1
- package/dist/esm/nextjs/index.js +3 -9
- package/dist/esm/nextjs/index.js.map +1 -1
- package/dist/esm/plugins/convex/index.d.ts +14 -11
- package/dist/esm/plugins/convex/index.d.ts.map +1 -1
- package/dist/esm/plugins/convex/index.js +3 -2
- package/dist/esm/plugins/convex/index.js.map +1 -1
- package/dist/esm/plugins/cross-domain/client.d.ts +1 -1
- package/dist/esm/plugins/cross-domain/index.d.ts +5 -3
- package/dist/esm/plugins/cross-domain/index.d.ts.map +1 -1
- package/dist/esm/plugins/cross-domain/index.js +19 -5
- package/dist/esm/plugins/cross-domain/index.js.map +1 -1
- package/dist/esm/react/client.d.ts +1 -1
- package/dist/esm/react/client.d.ts.map +1 -1
- package/dist/esm/react/client.js +3 -9
- package/dist/esm/react/client.js.map +1 -1
- package/dist/esm/react-start/index.d.ts +4 -4
- package/dist/esm/react-start/index.d.ts.map +1 -1
- package/dist/esm/react-start/index.js +3 -0
- package/dist/esm/react-start/index.js.map +1 -1
- package/dist/esm/utils/index.d.ts +2 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +8 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/package.json +24 -7
- package/src/client/adapter.test.ts +378 -0
- package/src/client/adapter.ts +206 -198
- package/src/client/index.ts +46 -71
- package/src/component/_generated/api.d.ts +2189 -171
- package/src/component/adapterTest.ts +141 -0
- package/src/component/lib.ts +648 -342
- package/src/component/schema.ts +349 -18
- package/src/nextjs/index.ts +3 -14
- package/src/plugins/convex/index.ts +5 -2
- package/src/plugins/cross-domain/index.ts +19 -5
- package/src/react/client.tsx +5 -11
- package/src/react-start/index.ts +4 -1
- package/src/client/cors.ts +0 -425
- /package/src/{util.ts → utils/index.ts} +0 -0
|
@@ -2,30 +2,34 @@ import { httpActionGeneric, internalMutationGeneric, queryGeneric, } from "conve
|
|
|
2
2
|
import { v } from "convex/values";
|
|
3
3
|
import schema from "../component/schema";
|
|
4
4
|
import { convexAdapter } from "./adapter";
|
|
5
|
-
import corsRouter from "./cors";
|
|
6
|
-
import { getByArgsValidator, updateArgsInputValidator } from "../component/lib";
|
|
7
5
|
import { omit } from "convex-helpers";
|
|
8
6
|
import { createCookieGetter } from "better-auth/cookies";
|
|
9
7
|
import { fetchQuery } from "convex/nextjs";
|
|
10
8
|
import { JWT_COOKIE_NAME } from "../plugins/convex";
|
|
11
|
-
import { requireEnv } from "../
|
|
9
|
+
import { requireEnv } from "../utils";
|
|
10
|
+
import { partial } from "convex-helpers/validators";
|
|
11
|
+
import { adapterArgsValidator, adapterWhereValidator } from "../component/lib";
|
|
12
|
+
import { corsRouter } from "convex-helpers/server/cors";
|
|
12
13
|
export { convexAdapter };
|
|
13
14
|
const createUserFields = omit(schema.tables.user.validator.fields, ["userId"]);
|
|
14
15
|
const createUserValidator = v.object(createUserFields);
|
|
15
16
|
const createUserArgsValidator = v.object({
|
|
16
17
|
input: v.object({
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
model: v.literal("user"),
|
|
19
|
+
data: v.object(createUserFields),
|
|
19
20
|
}),
|
|
20
21
|
});
|
|
21
22
|
const updateUserArgsValidator = v.object({
|
|
22
|
-
input:
|
|
23
|
+
input: v.object({
|
|
24
|
+
model: v.literal("user"),
|
|
25
|
+
where: v.optional(v.array(adapterWhereValidator)),
|
|
26
|
+
update: v.object(partial(createUserFields)),
|
|
27
|
+
}),
|
|
23
28
|
});
|
|
24
|
-
const deleteUserArgsValidator = v.object(getByArgsValidator);
|
|
25
29
|
const createSessionArgsValidator = v.object({
|
|
26
30
|
input: v.object({
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
model: v.literal("session"),
|
|
32
|
+
data: v.object(schema.tables.session.validator.fields),
|
|
29
33
|
}),
|
|
30
34
|
});
|
|
31
35
|
export class BetterAuth {
|
|
@@ -65,10 +69,14 @@ export class BetterAuth {
|
|
|
65
69
|
if (!identity) {
|
|
66
70
|
return null;
|
|
67
71
|
}
|
|
68
|
-
const doc = await ctx.runQuery(this.component.lib.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
const doc = await ctx.runQuery(this.component.lib.findOne, {
|
|
73
|
+
model: "user",
|
|
74
|
+
where: [
|
|
75
|
+
{
|
|
76
|
+
field: "userId",
|
|
77
|
+
value: identity.subject,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
72
80
|
});
|
|
73
81
|
if (!doc) {
|
|
74
82
|
return null;
|
|
@@ -98,32 +106,35 @@ export class BetterAuth {
|
|
|
98
106
|
createUser: internalMutationGeneric({
|
|
99
107
|
args: createUserArgsValidator,
|
|
100
108
|
handler: async (ctx, args) => {
|
|
101
|
-
const userId = await opts.onCreateUser(ctx, args.input);
|
|
102
|
-
const input = { ...args.input, table: "user", userId };
|
|
109
|
+
const userId = await opts.onCreateUser(ctx, args.input.data);
|
|
103
110
|
return ctx.runMutation(this.component.lib.create, {
|
|
104
|
-
input
|
|
111
|
+
input: {
|
|
112
|
+
...args.input,
|
|
113
|
+
data: { ...args.input.data, userId },
|
|
114
|
+
},
|
|
105
115
|
});
|
|
106
116
|
},
|
|
107
117
|
}),
|
|
108
118
|
deleteUser: internalMutationGeneric({
|
|
109
|
-
args:
|
|
119
|
+
args: adapterArgsValidator,
|
|
110
120
|
handler: async (ctx, args) => {
|
|
111
|
-
const doc = await ctx.runMutation(this.component.lib.
|
|
112
|
-
if (opts.onDeleteUser) {
|
|
121
|
+
const doc = await ctx.runMutation(this.component.lib.deleteOne, args);
|
|
122
|
+
if (doc && opts.onDeleteUser) {
|
|
113
123
|
await opts.onDeleteUser(ctx, doc.userId);
|
|
114
124
|
}
|
|
125
|
+
return doc;
|
|
115
126
|
},
|
|
116
127
|
}),
|
|
117
128
|
updateUser: internalMutationGeneric({
|
|
118
129
|
args: updateUserArgsValidator,
|
|
119
130
|
handler: async (ctx, args) => {
|
|
120
|
-
const updatedUser = await ctx.runMutation(this.component.lib.
|
|
131
|
+
const updatedUser = await ctx.runMutation(this.component.lib.updateOne, { input: args.input });
|
|
121
132
|
// Type narrowing
|
|
122
133
|
if (!("emailVerified" in updatedUser)) {
|
|
123
134
|
throw new Error("invalid user");
|
|
124
135
|
}
|
|
125
136
|
if (opts.onUpdateUser) {
|
|
126
|
-
await opts.onUpdateUser(ctx, omit(updatedUser, ["
|
|
137
|
+
await opts.onUpdateUser(ctx, omit(updatedUser, ["_id"]));
|
|
127
138
|
}
|
|
128
139
|
return updatedUser;
|
|
129
140
|
},
|
|
@@ -131,11 +142,9 @@ export class BetterAuth {
|
|
|
131
142
|
createSession: internalMutationGeneric({
|
|
132
143
|
args: createSessionArgsValidator,
|
|
133
144
|
handler: async (ctx, args) => {
|
|
134
|
-
const session = await ctx.runMutation(this.component.lib.create,
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
throw new Error("invalid session");
|
|
138
|
-
}
|
|
145
|
+
const session = await ctx.runMutation(this.component.lib.create, {
|
|
146
|
+
input: args.input,
|
|
147
|
+
});
|
|
139
148
|
await opts.onCreateSession?.(ctx, session);
|
|
140
149
|
return session;
|
|
141
150
|
},
|
|
@@ -183,39 +192,18 @@ export class BetterAuth {
|
|
|
183
192
|
});
|
|
184
193
|
return;
|
|
185
194
|
}
|
|
186
|
-
const trustedOrigins = [
|
|
187
|
-
...(Array.isArray(betterAuthOptions.trustedOrigins)
|
|
188
|
-
? betterAuthOptions.trustedOrigins
|
|
189
|
-
: [betterAuthOptions.trustedOrigins]),
|
|
190
|
-
betterAuthOptions.baseURL,
|
|
191
|
-
];
|
|
192
|
-
// The crossDomain plugin adds siteUrl to trustedOrigins
|
|
193
|
-
const trustedOriginsFromPlugins = betterAuthOptions.plugins?.reduce((acc, plugin) => {
|
|
194
|
-
if (plugin.options?.trustedOrigins) {
|
|
195
|
-
acc.push(...plugin.options.trustedOrigins);
|
|
196
|
-
}
|
|
197
|
-
return acc;
|
|
198
|
-
}, []) ?? [];
|
|
199
|
-
// Reuse trustedOrigins as default for allowedOrigins
|
|
200
|
-
const allowedOrigins = async (request) => {
|
|
201
|
-
return (await Promise.all([...trustedOrigins, ...trustedOriginsFromPlugins].map(async (origin) => {
|
|
202
|
-
if (!origin) {
|
|
203
|
-
return [];
|
|
204
|
-
}
|
|
205
|
-
if (typeof origin === "function") {
|
|
206
|
-
return origin(request);
|
|
207
|
-
}
|
|
208
|
-
return [origin];
|
|
209
|
-
})))
|
|
210
|
-
.flat()
|
|
211
|
-
.map((origin) =>
|
|
212
|
-
// Strip trailing wildcards, unsupported for allowedOrigins
|
|
213
|
-
origin.endsWith("*") && origin.length > 1
|
|
214
|
-
? origin.slice(0, -1)
|
|
215
|
-
: origin);
|
|
216
|
-
};
|
|
217
195
|
const cors = corsRouter(http, {
|
|
218
|
-
allowedOrigins
|
|
196
|
+
allowedOrigins: async (request) => {
|
|
197
|
+
const trustedOriginsOption = (await createAuth({}).$context).options.trustedOrigins ?? [];
|
|
198
|
+
const trustedOrigins = Array.isArray(trustedOriginsOption)
|
|
199
|
+
? trustedOriginsOption
|
|
200
|
+
: await trustedOriginsOption(request);
|
|
201
|
+
return trustedOrigins.map((origin) =>
|
|
202
|
+
// Strip trailing wildcards, unsupported for allowedOrigins
|
|
203
|
+
origin.endsWith("*") && origin.length > 1
|
|
204
|
+
? origin.slice(0, -1)
|
|
205
|
+
: origin);
|
|
206
|
+
},
|
|
219
207
|
allowCredentials: true,
|
|
220
208
|
allowedHeaders: ["Content-Type", "Better-Auth-Cookie"],
|
|
221
209
|
exposedHeaders: ["Set-Better-Auth-Cookie"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAyB,CAAC,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { GenericCtx } from "./_generated/server";
|
|
2
|
+
import { RegisteredMutation, RegisteredQuery } from "convex/server";
|
|
3
|
+
export declare const betterAuthComponent: any;
|
|
4
|
+
export declare const createAdapter: (ctx: GenericCtx) => (options: import("better-auth").BetterAuthOptions) => import("better-auth").Adapter;
|
|
5
|
+
export declare const createUser: any, deleteUser: any, updateUser: any, createSession: any, isAuthenticated: any;
|
|
6
|
+
export declare const deserialize: (data: any) => {
|
|
7
|
+
[k: string]: unknown;
|
|
8
|
+
};
|
|
9
|
+
export declare const serialize: (data: any) => any;
|
|
10
|
+
export declare const create: RegisteredMutation<"public", any, Promise<any>>;
|
|
11
|
+
export declare const findOne: RegisteredQuery<"public", any, Promise<any>>;
|
|
12
|
+
export declare const findMany: RegisteredQuery<"public", any, Promise<any>>;
|
|
13
|
+
export declare const count: RegisteredQuery<"public", any, Promise<any>>;
|
|
14
|
+
export declare const update: RegisteredMutation<"public", any, Promise<any>>;
|
|
15
|
+
export declare const updateMany: RegisteredMutation<"public", any, Promise<any>>;
|
|
16
|
+
declare const deleteMutation: RegisteredMutation<"public", any, Promise<any>>;
|
|
17
|
+
export { deleteMutation as delete };
|
|
18
|
+
export declare const deleteMany: RegisteredMutation<"public", any, Promise<any>>;
|
|
19
|
+
//# sourceMappingURL=adapterTest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapterTest.d.ts","sourceRoot":"","sources":["../../../src/component/adapterTest.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAmB,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAGL,kBAAkB,EAClB,eAAe,EAChB,MAAM,eAAe,CAAC;AAOvB,eAAO,MAAM,mBAAmB,EAI1B,GAAG,CAAC;AAEV,eAAO,MAAM,aAAa,GAAI,KAAK,UAAU,wFAKzC,CAAC;AAEL,eAAO,MACL,UAAU,OACV,UAAU,OACV,UAAU,OACV,aAAa,OACb,eAAe,KAMf,CAAC;AAEH,eAAO,MAAM,WAAW,GAAI,MAAM,GAAG;;CASpC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,MAAM,GAAG,QAUlC,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CASlE,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAMhE,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAMjE,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAK9D,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CASlE,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,kBAAkB,CACzC,QAAQ,EACR,GAAG,EACH,OAAO,CAAC,GAAG,CAAC,CAIZ,CAAC;AAEH,QAAA,MAAM,cAAc,EAAE,kBAAkB,CACtC,QAAQ,EACR,GAAG,EACH,OAAO,CAAC,GAAG,CAAC,CAIZ,CAAC;AACH,OAAO,EAAE,cAAc,IAAI,MAAM,EAAE,CAAC;AAEpC,eAAO,MAAM,UAAU,EAAE,kBAAkB,CACzC,QAAQ,EACR,GAAG,EACH,OAAO,CAAC,GAAG,CAAC,CAIZ,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { convexAdapter, BetterAuth, } from "../client";
|
|
2
|
+
import { api, internal } from "./_generated/api";
|
|
3
|
+
import { mutation, query } from "./_generated/server";
|
|
4
|
+
// @ts-expect-error - this is a test
|
|
5
|
+
const authFunctions = internal.adapterTest;
|
|
6
|
+
const publicAuthFunctions = api.adapterTest;
|
|
7
|
+
export const betterAuthComponent = new BetterAuth(api, {
|
|
8
|
+
authFunctions,
|
|
9
|
+
publicAuthFunctions,
|
|
10
|
+
verbose: false,
|
|
11
|
+
});
|
|
12
|
+
export const createAdapter = (ctx) => convexAdapter(ctx, betterAuthComponent, {
|
|
13
|
+
debugLogs: {
|
|
14
|
+
isRunningAdapterTests: true,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
export const { createUser, deleteUser, updateUser, createSession, isAuthenticated, } = betterAuthComponent.createAuthFunctions({
|
|
18
|
+
onCreateUser: async () => {
|
|
19
|
+
// noop
|
|
20
|
+
// not required for the adapter test
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
export const deserialize = (data) => {
|
|
24
|
+
const dateStringRegex = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/;
|
|
25
|
+
return Object.fromEntries(Object.entries(data).map(([key, value]) => [
|
|
26
|
+
key,
|
|
27
|
+
dateStringRegex.test(value) ? new Date(value) : value,
|
|
28
|
+
]));
|
|
29
|
+
};
|
|
30
|
+
export const serialize = (data) => {
|
|
31
|
+
if (!data) {
|
|
32
|
+
return data;
|
|
33
|
+
}
|
|
34
|
+
return Object.fromEntries(Object.entries(data).map(([key, value]) => [
|
|
35
|
+
key,
|
|
36
|
+
value instanceof Date ? value.toISOString() : value,
|
|
37
|
+
]));
|
|
38
|
+
};
|
|
39
|
+
export const create = mutation(async (ctx, args) => {
|
|
40
|
+
const adapter = createAdapter(ctx);
|
|
41
|
+
const result = await adapter({}).create({
|
|
42
|
+
...args,
|
|
43
|
+
data: deserialize(args.data),
|
|
44
|
+
});
|
|
45
|
+
return serialize(result);
|
|
46
|
+
});
|
|
47
|
+
export const findOne = query(async (ctx, args) => {
|
|
48
|
+
const adapter = createAdapter(ctx);
|
|
49
|
+
const result = await adapter({}).findOne(args);
|
|
50
|
+
return serialize(result);
|
|
51
|
+
});
|
|
52
|
+
export const findMany = query(async (ctx, args) => {
|
|
53
|
+
const adapter = createAdapter(ctx);
|
|
54
|
+
const result = await adapter({}).findMany(args);
|
|
55
|
+
return result.map(serialize);
|
|
56
|
+
});
|
|
57
|
+
export const count = query(async (ctx, args) => {
|
|
58
|
+
const adapter = createAdapter(ctx);
|
|
59
|
+
return adapter({}).count(args);
|
|
60
|
+
});
|
|
61
|
+
export const update = mutation(async (ctx, args) => {
|
|
62
|
+
const adapter = createAdapter(ctx);
|
|
63
|
+
const result = await adapter({}).update({
|
|
64
|
+
...args,
|
|
65
|
+
update: deserialize(args.update),
|
|
66
|
+
});
|
|
67
|
+
return serialize(result);
|
|
68
|
+
});
|
|
69
|
+
export const updateMany = mutation(async (ctx, args) => {
|
|
70
|
+
const adapter = createAdapter(ctx);
|
|
71
|
+
return adapter({}).updateMany(args);
|
|
72
|
+
});
|
|
73
|
+
const deleteMutation = mutation(async (ctx, args) => {
|
|
74
|
+
const adapter = createAdapter(ctx);
|
|
75
|
+
await adapter({}).delete(args);
|
|
76
|
+
});
|
|
77
|
+
export { deleteMutation as delete };
|
|
78
|
+
export const deleteMany = mutation(async (ctx, args) => {
|
|
79
|
+
const adapter = createAdapter(ctx);
|
|
80
|
+
return adapter({}).deleteMany(args);
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=adapterTest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapterTest.js","sourceRoot":"","sources":["../../../src/component/adapterTest.ts"],"names":[],"mappings":"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"}
|