better-convex 0.5.7 → 0.6.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/auth/index.d.ts +54 -38
- package/dist/auth/index.js +578 -114
- package/dist/auth-client/index.d.ts +2 -1
- package/dist/auth-client/index.js +2 -1
- package/dist/auth-config/index.d.ts +45 -0
- package/dist/auth-config/index.js +24 -0
- package/dist/auth-nextjs/index.d.ts +2 -2
- package/dist/auth-nextjs/index.js +2 -2
- package/dist/{caller-factory-CeZ07fQ2.js → caller-factory-B1FvYSKr.js} +18 -12
- package/dist/cli.mjs +246 -0
- package/dist/{codegen-CSeApTME.cjs → codegen-DkpPBVPn.mjs} +28 -60
- package/dist/context-utils-DSuX99Da.d.ts +17 -0
- package/dist/{create-schema-B4CUvqik.js → create-schema-DhWXOhnU.js} +1 -1
- package/dist/create-schema-orm-DplxTtYj.js +145 -0
- package/dist/crpc/index.d.ts +3 -3
- package/dist/crpc/index.js +4 -3
- package/dist/customFunctions-C1okqCzL.js +377 -0
- package/dist/{http-types-BrMbHGYR.d.ts → http-types-BRLY10NX.d.ts} +70 -20
- package/dist/index-BQkhP2ny.d.ts +1326 -0
- package/dist/orm/index.d.ts +2977 -0
- package/dist/orm/index.js +3 -0
- package/dist/orm-Banm-XXb.js +8812 -0
- package/dist/react/index.d.ts +46 -9
- package/dist/react/index.js +362 -123
- package/dist/rsc/index.d.ts +7 -4
- package/dist/rsc/index.js +10 -7
- package/dist/server/index.d.ts +4 -617
- package/dist/server/index.js +914 -50
- package/dist/transformer-CTNSPjwp.js +194 -0
- package/dist/types-jftzhhuc.d.ts +42 -0
- package/dist/{types-DrFf50wo.d.ts → types-o-5rYcTr.d.ts} +1 -1
- package/dist/watcher.mjs +41 -0
- package/package.json +10 -12
- package/dist/cli.cjs +0 -215
- package/dist/watcher.cjs +0 -29
- /package/dist/{error-BPjr9_gg.js → error-BZUhlhYz.js} +0 -0
- /package/dist/{meta-utils-DS5fA5GB.js → meta-utils-DCpLSBWB.js} +0 -0
- /package/dist/{query-options-Dbyr-NY1.js → query-options-BL1Q0X7q.js} +0 -0
package/dist/auth/index.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
import { t as GenericCtx } from "../context-utils-DSuX99Da.js";
|
|
2
|
+
import { convex } from "@convex-dev/better-auth/plugins";
|
|
1
3
|
import * as better_auth_adapters1 from "better-auth/adapters";
|
|
2
4
|
import { DBAdapterDebugLogOption } from "better-auth/adapters";
|
|
3
5
|
import { BetterAuthDBSchema } from "better-auth/db";
|
|
4
6
|
import * as convex_server24 from "convex/server";
|
|
5
|
-
import { DocumentByName, FunctionReference, GenericDataModel, GenericMutationCtx, GenericQueryCtx, GenericSchema,
|
|
7
|
+
import { DocumentByName, FunctionReference, GenericDataModel, GenericMutationCtx, GenericQueryCtx, GenericSchema, HttpRouter, PaginationOptions, PaginationResult, SchemaDefinition, TableNamesInDataModel, internalMutationGeneric } from "convex/server";
|
|
6
8
|
import * as convex_values0 from "convex/values";
|
|
7
9
|
import { Infer } from "convex/values";
|
|
8
10
|
import { MiddlewareHandler } from "hono";
|
|
9
11
|
import * as better_auth0 from "better-auth";
|
|
10
12
|
import { BetterAuthOptions, Where, betterAuth } from "better-auth";
|
|
11
|
-
import { GenericCtx } from "@convex-dev/better-auth";
|
|
12
13
|
import { SetOptional } from "type-fest";
|
|
13
14
|
|
|
14
15
|
//#region src/auth/create-client.d.ts
|
|
@@ -27,38 +28,36 @@ type AuthFunctions = {
|
|
|
27
28
|
beforeDelete?: FunctionReference<'mutation', 'internal', Record<string, any>>;
|
|
28
29
|
beforeUpdate?: FunctionReference<'mutation', 'internal', Record<string, any>>;
|
|
29
30
|
};
|
|
30
|
-
type Triggers<DataModel extends GenericDataModel, Schema extends SchemaDefinition<any, any>> = { [K in keyof Schema['tables'] & string]?: {
|
|
31
|
-
beforeCreate?: (ctx:
|
|
32
|
-
beforeDelete?: (ctx:
|
|
33
|
-
beforeUpdate?: (ctx:
|
|
34
|
-
onCreate?: (ctx:
|
|
35
|
-
onDelete?: (ctx:
|
|
36
|
-
onUpdate?: (ctx:
|
|
37
|
-
_creationTime: number;
|
|
38
|
-
}, oldDoc: Infer<Schema['tables'][K]['validator']> & IdField<K> & SystemFields) => Promise<void>;
|
|
31
|
+
type Triggers<DataModel extends GenericDataModel, Schema extends SchemaDefinition<any, any>, TriggerCtx extends GenericMutationCtx<DataModel> = GenericMutationCtx<DataModel>> = { [K in Extract<keyof Schema['tables'] & string, TableNamesInDataModel<DataModel>>]?: {
|
|
32
|
+
beforeCreate?: (ctx: TriggerCtx, data: Omit<DocumentByName<DataModel, K>, '_id' | '_creationTime'>) => Promise<Omit<DocumentByName<DataModel, K>, '_id' | '_creationTime'> | undefined>;
|
|
33
|
+
beforeDelete?: (ctx: TriggerCtx, doc: DocumentByName<DataModel, K>) => Promise<DocumentByName<DataModel, K> | undefined>;
|
|
34
|
+
beforeUpdate?: (ctx: TriggerCtx, doc: DocumentByName<DataModel, K>, update: Partial<Omit<DocumentByName<DataModel, K>, '_id' | '_creationTime'>>) => Promise<Partial<Omit<DocumentByName<DataModel, K>, '_id' | '_creationTime'>> | undefined>;
|
|
35
|
+
onCreate?: (ctx: TriggerCtx, doc: DocumentByName<DataModel, K>) => Promise<void>;
|
|
36
|
+
onDelete?: (ctx: TriggerCtx, doc: DocumentByName<DataModel, K>) => Promise<void>;
|
|
37
|
+
onUpdate?: (ctx: TriggerCtx, newDoc: DocumentByName<DataModel, K>, oldDoc: DocumentByName<DataModel, K>) => Promise<void>;
|
|
39
38
|
} };
|
|
40
|
-
declare const createClient: <DataModel extends GenericDataModel, Schema extends SchemaDefinition<GenericSchema, true>>(config: {
|
|
39
|
+
declare const createClient: <DataModel extends GenericDataModel, Schema extends SchemaDefinition<GenericSchema, true>, TriggerCtx extends GenericMutationCtx<DataModel> = GenericMutationCtx<DataModel>>(config: {
|
|
41
40
|
authFunctions: AuthFunctions;
|
|
42
41
|
schema: Schema;
|
|
43
42
|
internalMutation?: typeof internalMutationGeneric;
|
|
44
|
-
|
|
43
|
+
context?: (ctx: GenericMutationCtx<DataModel>) => TriggerCtx | Promise<TriggerCtx>;
|
|
44
|
+
triggers?: Triggers<DataModel, Schema, TriggerCtx>;
|
|
45
45
|
}) => {
|
|
46
46
|
authFunctions: AuthFunctions;
|
|
47
|
-
triggers: Triggers<DataModel, Schema> | undefined;
|
|
48
|
-
adapter: (ctx: GenericCtx<DataModel>,
|
|
49
|
-
httpAdapter: (ctx: GenericCtx<DataModel>) => better_auth_adapters1.AdapterFactory;
|
|
47
|
+
triggers: Triggers<DataModel, Schema, TriggerCtx> | undefined;
|
|
48
|
+
adapter: (ctx: GenericCtx<DataModel>, getAuthOptions: (ctx: any) => BetterAuthOptions) => better_auth_adapters1.AdapterFactory;
|
|
50
49
|
triggersApi: () => {
|
|
51
50
|
beforeCreate: convex_server24.RegisteredMutation<"internal", {
|
|
52
|
-
model: string;
|
|
53
51
|
data: any;
|
|
52
|
+
model: string;
|
|
54
53
|
}, Promise<any>>;
|
|
55
54
|
beforeDelete: convex_server24.RegisteredMutation<"internal", {
|
|
56
55
|
model: string;
|
|
57
56
|
doc: any;
|
|
58
57
|
}, Promise<any>>;
|
|
59
58
|
beforeUpdate: convex_server24.RegisteredMutation<"internal", {
|
|
60
|
-
model: string;
|
|
61
59
|
update: any;
|
|
60
|
+
model: string;
|
|
62
61
|
doc: any;
|
|
63
62
|
}, Promise<any>>;
|
|
64
63
|
onCreate: convex_server24.RegisteredMutation<"internal", {
|
|
@@ -125,7 +124,7 @@ declare const adapterConfig: {
|
|
|
125
124
|
field: string;
|
|
126
125
|
action: "create" | "update" | "findOne" | "findMany" | "updateMany" | "delete" | "deleteMany" | "count";
|
|
127
126
|
model: string;
|
|
128
|
-
schema:
|
|
127
|
+
schema: BetterAuthDBSchema;
|
|
129
128
|
options: BetterAuthOptions;
|
|
130
129
|
}) => any;
|
|
131
130
|
customTransformOutput: ({
|
|
@@ -137,20 +136,22 @@ declare const adapterConfig: {
|
|
|
137
136
|
field: string;
|
|
138
137
|
select: string[];
|
|
139
138
|
model: string;
|
|
140
|
-
schema:
|
|
139
|
+
schema: BetterAuthDBSchema;
|
|
141
140
|
options: BetterAuthOptions;
|
|
142
141
|
}) => any;
|
|
143
142
|
};
|
|
144
143
|
declare const httpAdapter: <DataModel extends GenericDataModel, Schema extends SchemaDefinition<any, any>>(ctx: GenericCtx<DataModel>, {
|
|
145
144
|
authFunctions,
|
|
146
145
|
debugLogs,
|
|
146
|
+
schema,
|
|
147
147
|
triggers
|
|
148
148
|
}: {
|
|
149
149
|
authFunctions: AuthFunctions;
|
|
150
150
|
debugLogs?: DBAdapterDebugLogOption;
|
|
151
|
+
schema?: Schema;
|
|
151
152
|
triggers?: Triggers<DataModel, Schema>;
|
|
152
153
|
}) => better_auth_adapters1.AdapterFactory;
|
|
153
|
-
declare const dbAdapter: <DataModel extends GenericDataModel, Schema extends SchemaDefinition<any, any>>(ctx: GenericCtx<DataModel>,
|
|
154
|
+
declare const dbAdapter: <DataModel extends GenericDataModel, Schema extends SchemaDefinition<any, any>>(ctx: GenericCtx<DataModel>, getAuthOptions: (ctx: any) => BetterAuthOptions, {
|
|
154
155
|
authFunctions,
|
|
155
156
|
debugLogs,
|
|
156
157
|
schema,
|
|
@@ -163,6 +164,10 @@ declare const dbAdapter: <DataModel extends GenericDataModel, Schema extends Sch
|
|
|
163
164
|
}) => better_auth_adapters1.AdapterFactory;
|
|
164
165
|
//#endregion
|
|
165
166
|
//#region src/auth/adapter-utils.d.ts
|
|
167
|
+
type AdapterPaginationOptions = PaginationOptions & {
|
|
168
|
+
endCursor?: string | null;
|
|
169
|
+
maximumRowsRead?: number;
|
|
170
|
+
};
|
|
166
171
|
declare const adapterWhereValidator: convex_values0.VObject<{
|
|
167
172
|
connector?: "AND" | "OR" | undefined;
|
|
168
173
|
operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "not_in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
|
|
@@ -176,8 +181,8 @@ declare const adapterWhereValidator: convex_values0.VObject<{
|
|
|
176
181
|
}, "required", "connector" | "field" | "operator" | "value">;
|
|
177
182
|
declare const adapterArgsValidator: convex_values0.VObject<{
|
|
178
183
|
limit?: number | undefined;
|
|
179
|
-
offset?: number | undefined;
|
|
180
184
|
select?: string[] | undefined;
|
|
185
|
+
offset?: number | undefined;
|
|
181
186
|
sortBy?: {
|
|
182
187
|
field: string;
|
|
183
188
|
direction: "asc" | "desc";
|
|
@@ -217,17 +222,17 @@ declare const adapterArgsValidator: convex_values0.VObject<{
|
|
|
217
222
|
operator: convex_values0.VUnion<"lt" | "lte" | "gt" | "gte" | "eq" | "in" | "not_in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined, [convex_values0.VLiteral<"lt", "required">, convex_values0.VLiteral<"lte", "required">, convex_values0.VLiteral<"gt", "required">, convex_values0.VLiteral<"gte", "required">, convex_values0.VLiteral<"eq", "required">, convex_values0.VLiteral<"in", "required">, convex_values0.VLiteral<"not_in", "required">, convex_values0.VLiteral<"ne", "required">, convex_values0.VLiteral<"contains", "required">, convex_values0.VLiteral<"starts_with", "required">, convex_values0.VLiteral<"ends_with", "required">], "optional", never>;
|
|
218
223
|
value: convex_values0.VUnion<string | number | boolean | string[] | number[] | null, [convex_values0.VString<string, "required">, convex_values0.VFloat64<number, "required">, convex_values0.VBoolean<boolean, "required">, convex_values0.VArray<string[], convex_values0.VString<string, "required">, "required">, convex_values0.VArray<number[], convex_values0.VFloat64<number, "required">, "required">, convex_values0.VNull<null, "required">], "required", never>;
|
|
219
224
|
}, "required", "connector" | "field" | "operator" | "value">, "optional">;
|
|
220
|
-
}, "required", "limit" | "model" | "
|
|
225
|
+
}, "required", "limit" | "model" | "select" | "offset" | "sortBy" | "where" | "sortBy.field" | "sortBy.direction">;
|
|
221
226
|
declare const hasUniqueFields: (betterAuthSchema: BetterAuthDBSchema, model: string, input: Record<string, any>) => boolean;
|
|
222
227
|
declare const checkUniqueFields: <Schema extends SchemaDefinition<any, any>>(ctx: GenericQueryCtx<GenericDataModel>, schema: Schema, betterAuthSchema: BetterAuthDBSchema, table: string, input: Record<string, any>, doc?: Record<string, any>) => Promise<void>;
|
|
223
228
|
declare const selectFields: <T extends TableNamesInDataModel<GenericDataModel>, D extends DocumentByName<GenericDataModel, T>>(doc: D | null, select?: string[]) => Promise<D | null>;
|
|
224
229
|
declare const paginate: <Doc extends DocumentByName<GenericDataModel, T>, T extends TableNamesInDataModel<GenericDataModel>>(ctx: GenericQueryCtx<GenericDataModel>, schema: SchemaDefinition<any, any>, betterAuthSchema: BetterAuthDBSchema, args: Infer<typeof adapterArgsValidator> & {
|
|
225
|
-
paginationOpts:
|
|
230
|
+
paginationOpts: AdapterPaginationOptions;
|
|
226
231
|
}) => Promise<PaginationResult<Doc>>;
|
|
227
232
|
declare const listOne: <Doc extends DocumentByName<GenericDataModel, T>, T extends TableNamesInDataModel<GenericDataModel>>(ctx: GenericQueryCtx<GenericDataModel>, schema: SchemaDefinition<any, any>, betterAuthSchema: BetterAuthDBSchema, args: Infer<typeof adapterArgsValidator>) => Promise<Doc | null>;
|
|
228
233
|
//#endregion
|
|
229
234
|
//#region src/auth/types.d.ts
|
|
230
|
-
type
|
|
235
|
+
type GetAuth = (ctx: any) => ReturnType<typeof betterAuth>;
|
|
231
236
|
//#endregion
|
|
232
237
|
//#region src/auth/create-api.d.ts
|
|
233
238
|
type Schema = SchemaDefinition<any, any>;
|
|
@@ -309,8 +314,9 @@ declare const deleteManyHandler: (ctx: any, args: {
|
|
|
309
314
|
splitCursor?: convex_server24.Cursor | null;
|
|
310
315
|
pageStatus?: "SplitRecommended" | "SplitRequired" | null;
|
|
311
316
|
}>;
|
|
312
|
-
declare const createApi: <Schema extends SchemaDefinition<any, any>>(schema: Schema,
|
|
313
|
-
internalMutation?: typeof internalMutationGeneric;
|
|
317
|
+
declare const createApi: <Schema extends SchemaDefinition<any, any>>(schema: Schema, getAuth: GetAuth, options?: {
|
|
318
|
+
internalMutation?: typeof internalMutationGeneric;
|
|
319
|
+
context?: (ctx: any) => any | Promise<any>; /** Skip input validation for smaller generated types. Since these are internal functions, validation is optional. */
|
|
314
320
|
skipValidation?: boolean;
|
|
315
321
|
}) => {
|
|
316
322
|
create: convex_server24.RegisteredMutation<"internal", {
|
|
@@ -318,15 +324,15 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>>(schema: Sch
|
|
|
318
324
|
beforeCreateHandle?: string | undefined;
|
|
319
325
|
onCreateHandle?: string | undefined;
|
|
320
326
|
input: {
|
|
321
|
-
model: string;
|
|
322
327
|
data: any;
|
|
323
|
-
} | {
|
|
324
328
|
model: string;
|
|
329
|
+
} | {
|
|
325
330
|
data: {
|
|
326
331
|
[x: string]: unknown;
|
|
327
332
|
[x: number]: unknown;
|
|
328
333
|
[x: symbol]: unknown;
|
|
329
334
|
};
|
|
335
|
+
model: string;
|
|
330
336
|
};
|
|
331
337
|
}, Promise<any>>;
|
|
332
338
|
deleteMany: convex_server24.RegisteredMutation<"internal", {
|
|
@@ -377,8 +383,8 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>>(schema: Sch
|
|
|
377
383
|
};
|
|
378
384
|
}, Promise<convex_server24.GenericDocument | undefined>>;
|
|
379
385
|
findMany: convex_server24.RegisteredQuery<"internal", {
|
|
380
|
-
join?: any;
|
|
381
386
|
limit?: number | undefined;
|
|
387
|
+
join?: any;
|
|
382
388
|
offset?: number | undefined;
|
|
383
389
|
sortBy?: {
|
|
384
390
|
field: string;
|
|
@@ -390,7 +396,6 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>>(schema: Sch
|
|
|
390
396
|
field: string;
|
|
391
397
|
value: string | number | boolean | string[] | number[] | null;
|
|
392
398
|
}[] | undefined;
|
|
393
|
-
model: string;
|
|
394
399
|
paginationOpts: {
|
|
395
400
|
id?: number;
|
|
396
401
|
endCursor?: string | null;
|
|
@@ -399,6 +404,7 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>>(schema: Sch
|
|
|
399
404
|
numItems: number;
|
|
400
405
|
cursor: string | null;
|
|
401
406
|
};
|
|
407
|
+
model: string;
|
|
402
408
|
}, Promise<convex_server24.PaginationResult<convex_server24.GenericDocument>>>;
|
|
403
409
|
findOne: convex_server24.RegisteredQuery<"internal", {
|
|
404
410
|
join?: any;
|
|
@@ -424,8 +430,8 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>>(schema: Sch
|
|
|
424
430
|
};
|
|
425
431
|
input: {
|
|
426
432
|
where?: any[] | undefined;
|
|
427
|
-
model: string;
|
|
428
433
|
update: any;
|
|
434
|
+
model: string;
|
|
429
435
|
} | {
|
|
430
436
|
where?: {
|
|
431
437
|
connector?: "AND" | "OR" | undefined;
|
|
@@ -433,12 +439,12 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>>(schema: Sch
|
|
|
433
439
|
field: string;
|
|
434
440
|
value: string | number | boolean | string[] | number[] | null;
|
|
435
441
|
}[] | undefined;
|
|
436
|
-
model: string;
|
|
437
442
|
update: {
|
|
438
443
|
[x: string]: unknown;
|
|
439
444
|
[x: number]: unknown;
|
|
440
445
|
[x: symbol]: unknown;
|
|
441
446
|
};
|
|
447
|
+
model: string;
|
|
442
448
|
};
|
|
443
449
|
}, Promise<{
|
|
444
450
|
count: number;
|
|
@@ -453,8 +459,8 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>>(schema: Sch
|
|
|
453
459
|
onUpdateHandle?: string | undefined;
|
|
454
460
|
input: {
|
|
455
461
|
where?: any[] | undefined;
|
|
456
|
-
model: string;
|
|
457
462
|
update: any;
|
|
463
|
+
model: string;
|
|
458
464
|
} | {
|
|
459
465
|
where?: {
|
|
460
466
|
connector?: "AND" | "OR" | undefined;
|
|
@@ -462,12 +468,12 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>>(schema: Sch
|
|
|
462
468
|
field: string;
|
|
463
469
|
value: string | number | boolean | string[] | number[] | null;
|
|
464
470
|
}[] | undefined;
|
|
465
|
-
model: string;
|
|
466
471
|
update: {
|
|
467
472
|
[x: string]: unknown;
|
|
468
473
|
[x: number]: unknown;
|
|
469
474
|
[x: symbol]: unknown;
|
|
470
475
|
};
|
|
476
|
+
model: string;
|
|
471
477
|
};
|
|
472
478
|
}, Promise<any>>;
|
|
473
479
|
getLatestJwks: convex_server24.RegisteredAction<"internal", {}, Promise<any>>;
|
|
@@ -522,11 +528,21 @@ interface AuthMiddlewareOptions {
|
|
|
522
528
|
*
|
|
523
529
|
* const app = new Hono();
|
|
524
530
|
* app.use('/api/*', cors({ origin: process.env.SITE_URL, credentials: true }));
|
|
525
|
-
* app.use(authMiddleware(
|
|
531
|
+
* app.use(authMiddleware(getAuth));
|
|
526
532
|
*
|
|
527
533
|
* export default createHttpRouter(app, appRouter);
|
|
528
534
|
* ```
|
|
529
535
|
*/
|
|
530
|
-
declare function authMiddleware(
|
|
536
|
+
declare function authMiddleware(getAuth: GetAuth, opts?: AuthMiddlewareOptions): MiddlewareHandler;
|
|
537
|
+
//#endregion
|
|
538
|
+
//#region src/auth/registerRoutes.d.ts
|
|
539
|
+
declare const registerRoutes: (http: HttpRouter, getAuth: GetAuth, opts?: {
|
|
540
|
+
cors?: {
|
|
541
|
+
allowedHeaders?: string[];
|
|
542
|
+
allowedOrigins?: string[];
|
|
543
|
+
exposedHeaders?: string[];
|
|
544
|
+
} | boolean;
|
|
545
|
+
verbose?: boolean;
|
|
546
|
+
}) => void;
|
|
531
547
|
//#endregion
|
|
532
|
-
export { AuthFunctions, AuthMiddlewareOptions, ConvexCleanedWhere,
|
|
548
|
+
export { type AuthFunctions, AuthMiddlewareOptions, ConvexCleanedWhere, GetAuth, adapterArgsValidator, adapterConfig, adapterWhereValidator, authMiddleware, checkUniqueFields, convex, createApi, createClient, createHandler, dbAdapter, deleteManyHandler, deleteOneHandler, findManyHandler, findOneHandler, getAuthUserId, getAuthUserIdentity, getHeaders, getSession, handlePagination, hasUniqueFields, httpAdapter, listOne, paginate, registerRoutes, selectFields, updateManyHandler, updateOneHandler };
|