fluent-convex 0.7.2 → 0.7.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/ConvexBuilder.d.ts +12 -21
- package/dist/ConvexBuilder.d.ts.map +1 -1
- package/dist/ConvexBuilder.js +10 -44
- package/dist/ConvexBuilder.js.map +1 -1
- package/dist/ConvexBuilderWithFunctionKind.d.ts +28 -0
- package/dist/ConvexBuilderWithFunctionKind.d.ts.map +1 -0
- package/dist/ConvexBuilderWithFunctionKind.js +60 -0
- package/dist/ConvexBuilderWithFunctionKind.js.map +1 -0
- package/dist/ConvexBuilderWithHandler.d.ts +4 -7
- package/dist/ConvexBuilderWithHandler.d.ts.map +1 -1
- package/dist/ConvexBuilderWithHandler.js +22 -5
- package/dist/ConvexBuilderWithHandler.js.map +1 -1
- package/dist/builder.d.ts +0 -3
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +1 -11
- package/dist/builder.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ConvexBuilder.ts +45 -221
- package/src/ConvexBuilderWithFunctionKind.ts +265 -0
- package/src/ConvexBuilderWithHandler.ts +69 -14
- package/src/builder.ts +1 -17
- package/src/types.ts +3 -9
package/dist/ConvexBuilder.d.ts
CHANGED
|
@@ -1,27 +1,18 @@
|
|
|
1
1
|
import type { GenericDataModel } from "convex/server";
|
|
2
|
-
import { InferredArgs } from "./types";
|
|
3
|
-
import { InferHandlerReturn } from "./types";
|
|
4
2
|
import { ConvexBuilderDef } from "./types";
|
|
5
|
-
import {
|
|
6
|
-
import { ConvexBuilderWithHandler } from "./ConvexBuilderWithHandler";
|
|
3
|
+
import { ConvexBuilderWithFunctionKind } from "./ConvexBuilderWithFunctionKind";
|
|
7
4
|
import type { ConvexMiddleware } from "./middleware";
|
|
8
|
-
import type {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
5
|
+
import type { QueryCtx, MutationCtx, ActionCtx, Context, EmptyObject } from "./types";
|
|
6
|
+
export declare class ConvexBuilder<TDataModel extends GenericDataModel = GenericDataModel> {
|
|
7
|
+
private def;
|
|
8
|
+
constructor(def: ConvexBuilderDef<undefined, undefined, undefined, "public">);
|
|
9
|
+
query(): ConvexBuilderWithFunctionKind<TDataModel, "query", QueryCtx<TDataModel>, QueryCtx<TDataModel>>;
|
|
10
|
+
mutation(): ConvexBuilderWithFunctionKind<TDataModel, "mutation", MutationCtx<TDataModel>, MutationCtx<TDataModel>>;
|
|
11
|
+
action(): ConvexBuilderWithFunctionKind<TDataModel, "action", ActionCtx<TDataModel>, ActionCtx<TDataModel>>;
|
|
12
|
+
$context<U extends Context>(): {
|
|
13
|
+
middleware<UOutContext extends Context>(middleware: ConvexMiddleware<U, UOutContext>): ConvexMiddleware<U, UOutContext>;
|
|
14
|
+
};
|
|
15
|
+
middleware<UOutContext extends Context>(middleware: ConvexMiddleware<EmptyObject, UOutContext>): ConvexMiddleware<EmptyObject, UOutContext>;
|
|
18
16
|
middleware<UInContext extends Context, UOutContext extends Context>(middleware: ConvexMiddleware<UInContext, UOutContext>): ConvexMiddleware<UInContext, UOutContext>;
|
|
19
|
-
use<UOutContext extends Context>(this: ConvexBuilder<TDataModel, FunctionType, TInitialContext, TCurrentContext, TArgsValidator, TReturnsValidator>, middleware: ConvexMiddleware<TCurrentContext, UOutContext>): ConvexBuilder<TDataModel, TFunctionType, TInitialContext, TCurrentContext & UOutContext, TArgsValidator, TReturnsValidator>;
|
|
20
|
-
input<UInput extends ValidatorInput>(this: ConvexBuilder<TDataModel, FunctionType, TInitialContext, TCurrentContext, TArgsValidator, TReturnsValidator>, validator: UInput): ConvexBuilder<TDataModel, TFunctionType, TInitialContext, TCurrentContext, ToConvexArgsValidator<UInput>, TReturnsValidator>;
|
|
21
|
-
returns<UReturns extends ReturnsValidatorInput>(this: ConvexBuilder<TDataModel, FunctionType, TInitialContext, TCurrentContext, TArgsValidator, TReturnsValidator>, validator: UReturns): ConvexBuilder<TDataModel, TFunctionType, TInitialContext, TCurrentContext, TArgsValidator, ToConvexReturnsValidator<UReturns>>;
|
|
22
|
-
handler<TReturn extends InferHandlerReturn<TReturnsValidator, any> = InferHandlerReturn<TReturnsValidator, any>>(this: ConvexBuilder<TDataModel, FunctionType, TInitialContext, TCurrentContext, TArgsValidator, TReturnsValidator>, handlerFn: (options: {
|
|
23
|
-
context: TCurrentContext;
|
|
24
|
-
input: InferredArgs<TArgsValidator>;
|
|
25
|
-
}) => Promise<TReturn>): ConvexBuilderWithHandler<TDataModel, TFunctionType & FunctionType, TCurrentContext, TArgsValidator, TReturnsValidator, InferHandlerReturn<TReturnsValidator, TReturn>> & CallableBuilder<TCurrentContext, TArgsValidator, InferHandlerReturn<TReturnsValidator, TReturn>>;
|
|
26
17
|
}
|
|
27
18
|
//# sourceMappingURL=ConvexBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvexBuilder.d.ts","sourceRoot":"","sources":["../src/ConvexBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ConvexBuilder.d.ts","sourceRoot":"","sources":["../src/ConvexBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,OAAO,EACP,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,qBAAa,aAAa,CACxB,UAAU,SAAS,gBAAgB,GAAG,gBAAgB;IAEtD,OAAO,CAAC,GAAG,CAA8D;gBAGvE,GAAG,EAAE,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;IAKlE,KAAK,IAAI,6BAA6B,CACpC,UAAU,EACV,OAAO,EACP,QAAQ,CAAC,UAAU,CAAC,EACpB,QAAQ,CAAC,UAAU,CAAC,CACrB;IAYD,QAAQ,IAAI,6BAA6B,CACvC,UAAU,EACV,UAAU,EACV,WAAW,CAAC,UAAU,CAAC,EACvB,WAAW,CAAC,UAAU,CAAC,CACxB;IAYD,MAAM,IAAI,6BAA6B,CACrC,UAAU,EACV,QAAQ,EACR,SAAS,CAAC,UAAU,CAAC,EACrB,SAAS,CAAC,UAAU,CAAC,CACtB;IAYD,QAAQ,CAAC,CAAC,SAAS,OAAO,KAAK;QAC7B,UAAU,CAAC,WAAW,SAAS,OAAO,EACpC,UAAU,EAAE,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,GAC3C,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;KACrC;IAWD,UAAU,CAAC,WAAW,SAAS,OAAO,EACpC,UAAU,EAAE,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,GACrD,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC;IAC7C,UAAU,CAAC,UAAU,SAAS,OAAO,EAAE,WAAW,SAAS,OAAO,EAChE,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,GACpD,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC;CAM7C"}
|
package/dist/ConvexBuilder.js
CHANGED
|
@@ -1,71 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isZodSchema, toConvexValidator, } from "./zod_support";
|
|
1
|
+
import { ConvexBuilderWithFunctionKind } from "./ConvexBuilderWithFunctionKind";
|
|
3
2
|
export class ConvexBuilder {
|
|
4
3
|
def;
|
|
5
4
|
constructor(def) {
|
|
6
5
|
this.def = def;
|
|
7
6
|
}
|
|
8
7
|
query() {
|
|
9
|
-
return new
|
|
8
|
+
return new ConvexBuilderWithFunctionKind({
|
|
10
9
|
...this.def,
|
|
11
10
|
functionType: "query",
|
|
12
11
|
});
|
|
13
12
|
}
|
|
14
13
|
mutation() {
|
|
15
|
-
return new
|
|
14
|
+
return new ConvexBuilderWithFunctionKind({
|
|
16
15
|
...this.def,
|
|
17
16
|
functionType: "mutation",
|
|
18
17
|
});
|
|
19
18
|
}
|
|
20
19
|
action() {
|
|
21
|
-
return new
|
|
20
|
+
return new ConvexBuilderWithFunctionKind({
|
|
22
21
|
...this.def,
|
|
23
22
|
functionType: "action",
|
|
24
23
|
});
|
|
25
24
|
}
|
|
26
25
|
$context() {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
// Return an object that allows middleware creation with a specific context type
|
|
27
|
+
return {
|
|
28
|
+
middleware(middleware) {
|
|
29
|
+
return middleware;
|
|
30
|
+
},
|
|
31
|
+
};
|
|
31
32
|
}
|
|
32
33
|
middleware(middleware) {
|
|
33
34
|
return middleware;
|
|
34
35
|
}
|
|
35
|
-
use(middleware) {
|
|
36
|
-
return new ConvexBuilder({
|
|
37
|
-
...this.def,
|
|
38
|
-
middlewares: [...this.def.middlewares, middleware],
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
input(validator) {
|
|
42
|
-
const convexValidator = (isZodSchema(validator) ? toConvexValidator(validator) : validator);
|
|
43
|
-
return new ConvexBuilder({
|
|
44
|
-
...this.def,
|
|
45
|
-
argsValidator: convexValidator,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
returns(validator) {
|
|
49
|
-
const convexValidator = (isZodSchema(validator) ? toConvexValidator(validator) : validator);
|
|
50
|
-
return new ConvexBuilder({
|
|
51
|
-
...this.def,
|
|
52
|
-
returnsValidator: convexValidator,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
handler(handlerFn) {
|
|
56
|
-
if (this.def.handler) {
|
|
57
|
-
throw new Error("Handler already defined. Only one handler can be set per function chain.");
|
|
58
|
-
}
|
|
59
|
-
const rawHandler = async (transformedCtx, baseArgs) => {
|
|
60
|
-
return handlerFn({
|
|
61
|
-
context: transformedCtx,
|
|
62
|
-
input: baseArgs,
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
return new ConvexBuilderWithHandler({
|
|
66
|
-
...this.def,
|
|
67
|
-
handler: rawHandler,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
36
|
}
|
|
71
37
|
//# sourceMappingURL=ConvexBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvexBuilder.js","sourceRoot":"","sources":["../src/ConvexBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConvexBuilder.js","sourceRoot":"","sources":["../src/ConvexBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAUhF,MAAM,OAAO,aAAa;IAGhB,GAAG,CAA8D;IAEzE,YACE,GAAgE;QAEhE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK;QAMH,OAAO,IAAI,6BAA6B,CAKtC;YACA,GAAG,IAAI,CAAC,GAAG;YACX,YAAY,EAAE,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QAMN,OAAO,IAAI,6BAA6B,CAKtC;YACA,GAAG,IAAI,CAAC,GAAG;YACX,YAAY,EAAE,UAAU;SACzB,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QAMJ,OAAO,IAAI,6BAA6B,CAKtC;YACA,GAAG,IAAI,CAAC,GAAG;YACX,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QAKN,gFAAgF;QAChF,OAAO;YACL,UAAU,CACR,UAA4C;gBAE5C,OAAO,UAAU,CAAC;YACpB,CAAC;SACF,CAAC;IACJ,CAAC;IAQD,UAAU,CACR,UAAqD;QAErD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { GenericDataModel } from "convex/server";
|
|
2
|
+
import { ConvexBuilderWithHandler } from "./ConvexBuilderWithHandler";
|
|
3
|
+
import { InferredArgs } from "./types";
|
|
4
|
+
import { ExpectedReturnType } from "./types";
|
|
5
|
+
import { ConvexBuilderDef } from "./types";
|
|
6
|
+
import { CallableBuilder } from "./types";
|
|
7
|
+
import type { ConvexMiddleware } from "./middleware";
|
|
8
|
+
import type { FunctionType, Context, EmptyObject, ConvexArgsValidator, ConvexReturnsValidator, Visibility } from "./types";
|
|
9
|
+
import { type ValidatorInput, type ToConvexArgsValidator, type ReturnsValidatorInput, type ToConvexReturnsValidator } from "./zod_support";
|
|
10
|
+
export declare class ConvexBuilderWithFunctionKind<TDataModel extends GenericDataModel = GenericDataModel, TFunctionType extends FunctionType = FunctionType, TInitialContext extends Context = EmptyObject, TCurrentContext extends Context = EmptyObject, TArgsValidator extends ConvexArgsValidator | undefined = undefined, TReturnsValidator extends ConvexReturnsValidator | undefined = undefined, TVisibility extends Visibility = "public", THasHandler extends boolean = false, THandlerReturn = any> {
|
|
11
|
+
protected def: ConvexBuilderDef<TFunctionType, TArgsValidator, TReturnsValidator, TVisibility>;
|
|
12
|
+
constructor(def: ConvexBuilderDef<TFunctionType, TArgsValidator, TReturnsValidator, TVisibility>);
|
|
13
|
+
$context<U extends Context>(): ConvexBuilderWithFunctionKind<TDataModel, TFunctionType, U & EmptyObject, U, TArgsValidator, TReturnsValidator, TVisibility, THasHandler, THandlerReturn>;
|
|
14
|
+
middleware<UOutContext extends Context>(middleware: ConvexMiddleware<TInitialContext, UOutContext>): ConvexMiddleware<TInitialContext, UOutContext>;
|
|
15
|
+
middleware<UInContext extends Context, UOutContext extends Context>(middleware: ConvexMiddleware<UInContext, UOutContext>): ConvexMiddleware<UInContext, UOutContext>;
|
|
16
|
+
use<UOutContext extends Context>(middleware: ConvexMiddleware<TCurrentContext, UOutContext>): ConvexBuilderWithFunctionKind<TDataModel, TFunctionType, TInitialContext, TCurrentContext & UOutContext, TArgsValidator, TReturnsValidator, TVisibility, THasHandler, THandlerReturn>;
|
|
17
|
+
input<UInput extends ValidatorInput>(validator: UInput): ConvexBuilderWithFunctionKind<TDataModel, TFunctionType, TInitialContext, TCurrentContext, ToConvexArgsValidator<UInput>, TReturnsValidator, TVisibility, THasHandler, THandlerReturn>;
|
|
18
|
+
returns<UReturns extends ReturnsValidatorInput>(validator: UReturns): ConvexBuilderWithFunctionKind<TDataModel, TFunctionType, TInitialContext, TCurrentContext, TArgsValidator, ToConvexReturnsValidator<UReturns>, TVisibility, THasHandler, THandlerReturn>;
|
|
19
|
+
handler<TReturn extends [TReturnsValidator] extends [ConvexReturnsValidator] ? ExpectedReturnType<TReturnsValidator> : any = [TReturnsValidator] extends [ConvexReturnsValidator] ? ExpectedReturnType<TReturnsValidator> : any>(handlerFn: (options: {
|
|
20
|
+
context: TCurrentContext;
|
|
21
|
+
input: InferredArgs<TArgsValidator>;
|
|
22
|
+
}) => Promise<TReturn>): ConvexBuilderWithHandler<TDataModel, TFunctionType, TInitialContext, TCurrentContext, TArgsValidator, TReturnsValidator, TVisibility, [
|
|
23
|
+
TReturnsValidator
|
|
24
|
+
] extends [ConvexReturnsValidator] ? ExpectedReturnType<TReturnsValidator> : TReturn> & CallableBuilder<TCurrentContext, TArgsValidator, [
|
|
25
|
+
TReturnsValidator
|
|
26
|
+
] extends [ConvexReturnsValidator] ? ExpectedReturnType<TReturnsValidator> : TReturn>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=ConvexBuilderWithFunctionKind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConvexBuilderWithFunctionKind.d.ts","sourceRoot":"","sources":["../src/ConvexBuilderWithFunctionKind.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ConvexBuilderWithHandler } from "./ConvexBuilderWithHandler";
|
|
2
|
+
import { isZodSchema, toConvexValidator, } from "./zod_support";
|
|
3
|
+
export class ConvexBuilderWithFunctionKind {
|
|
4
|
+
def;
|
|
5
|
+
constructor(def) {
|
|
6
|
+
this.def = def;
|
|
7
|
+
}
|
|
8
|
+
$context() {
|
|
9
|
+
return new ConvexBuilderWithFunctionKind({
|
|
10
|
+
...this.def,
|
|
11
|
+
middlewares: [],
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
middleware(middleware) {
|
|
15
|
+
return middleware;
|
|
16
|
+
}
|
|
17
|
+
use(middleware) {
|
|
18
|
+
return new ConvexBuilderWithFunctionKind({
|
|
19
|
+
...this.def,
|
|
20
|
+
middlewares: [...this.def.middlewares, middleware],
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
input(validator) {
|
|
24
|
+
const convexValidator = isZodSchema(validator)
|
|
25
|
+
? toConvexValidator(validator)
|
|
26
|
+
: validator;
|
|
27
|
+
return new ConvexBuilderWithFunctionKind({
|
|
28
|
+
...this.def,
|
|
29
|
+
argsValidator: convexValidator,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
returns(validator) {
|
|
33
|
+
const convexValidator = isZodSchema(validator)
|
|
34
|
+
? toConvexValidator(validator)
|
|
35
|
+
: validator;
|
|
36
|
+
return new ConvexBuilderWithFunctionKind({
|
|
37
|
+
...this.def,
|
|
38
|
+
returnsValidator: convexValidator,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
handler(handlerFn) {
|
|
42
|
+
if (this.def.handler) {
|
|
43
|
+
throw new Error("Handler already defined. Only one handler can be set per function chain.");
|
|
44
|
+
}
|
|
45
|
+
// Store the raw handler function - it will be composed with all middlewares
|
|
46
|
+
// (including those added after .handler()) when .public() or .internal() is called
|
|
47
|
+
// The handler signature matches what Convex expects: (ctx, args) => Promise<return>
|
|
48
|
+
const rawHandler = async (transformedCtx, baseArgs) => {
|
|
49
|
+
return handlerFn({
|
|
50
|
+
context: transformedCtx,
|
|
51
|
+
input: baseArgs,
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
return new ConvexBuilderWithHandler({
|
|
55
|
+
...this.def,
|
|
56
|
+
handler: rawHandler,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=ConvexBuilderWithFunctionKind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConvexBuilderWithFunctionKind.js","sourceRoot":"","sources":["../src/ConvexBuilderWithFunctionKind.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AActE,OAAO,EAGL,WAAW,EACX,iBAAiB,GAGlB,MAAM,eAAe,CAAC;AAEvB,MAAM,OAAO,6BAA6B;IAW9B,GAAG,CAKX;IAEF,YACE,GAKC;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,QAAQ;QAWN,OAAO,IAAI,6BAA6B,CAUtC;YACA,GAAG,IAAI,CAAC,GAAG;YACX,WAAW,EAAE,EAAE;SAChB,CAAC,CAAC;IACL,CAAC;IAQD,UAAU,CACR,UAAqD;QAErD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,GAAG,CACD,UAA0D;QAY1D,OAAO,IAAI,6BAA6B,CAUtC;YACA,GAAG,IAAI,CAAC,GAAG;YACX,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAiC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CACH,SAAiB;QAYjB,MAAM,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC;YAC5C,CAAC,CAAE,iBAAiB,CAAC,SAAS,CAAmC;YACjE,CAAC,CAAE,SAA2C,CAAC;QAEjD,OAAO,IAAI,6BAA6B,CAUtC;YACA,GAAG,IAAI,CAAC,GAAG;YACX,aAAa,EAAE,eAAe;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CACL,SAAmB;QAYnB,MAAM,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC;YAC5C,CAAC,CAAE,iBAAiB,CAAC,SAAS,CAAwC;YACtE,CAAC,CAAE,SAAgD,CAAC;QAEtD,OAAO,IAAI,6BAA6B,CAUtC;YACA,GAAG,IAAI,CAAC,GAAG;YACX,gBAAgB,EAAE,eAAe;SAClC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAOL,SAGsB;QAoBtB,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QAED,4EAA4E;QAC5E,mFAAmF;QACnF,oFAAoF;QACpF,MAAM,UAAU,GAAG,KAAK,EACtB,cAAuB,EACvB,QAAsC,EACtC,EAAE;YACF,OAAO,SAAS,CAAC;gBACf,OAAO,EAAE,cAAiC;gBAC1C,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC,CAAC;QAMF,OAAO,IAAI,wBAAwB,CASjC;YACA,GAAG,IAAI,CAAC,GAAG;YACX,OAAO,EAAE,UAAiB;SAC3B,CAUiE,CAAC;IACrE,CAAC;CACF"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { type GenericDataModel, type RegisteredQuery, type RegisteredMutation, type RegisteredAction } from "convex/server";
|
|
2
|
-
import { InferredArgs } from "./types";
|
|
3
|
-
import { ConvexBuilderDef } from "./types";
|
|
4
|
-
import { CallableBuilder } from "./types";
|
|
5
2
|
import type { ConvexMiddleware } from "./middleware";
|
|
6
|
-
import type { FunctionType, Context, EmptyObject, ConvexArgsValidator, ConvexReturnsValidator } from "./types";
|
|
7
|
-
export declare class ConvexBuilderWithHandler<TDataModel extends GenericDataModel = GenericDataModel, TFunctionType extends FunctionType =
|
|
3
|
+
import type { FunctionType, Context, EmptyObject, ConvexArgsValidator, ConvexReturnsValidator, Visibility, ConvexBuilderDef, InferredArgs, CallableBuilder } from "./types";
|
|
4
|
+
export declare class ConvexBuilderWithHandler<TDataModel extends GenericDataModel = GenericDataModel, TFunctionType extends FunctionType | undefined = undefined, TInitialContext extends Context = EmptyObject, TCurrentContext extends Context = EmptyObject, TArgsValidator extends ConvexArgsValidator | undefined = undefined, TReturnsValidator extends ConvexReturnsValidator | undefined = undefined, TVisibility extends Visibility = "public", THandlerReturn = any> {
|
|
8
5
|
private def;
|
|
9
|
-
constructor(def: ConvexBuilderDef<TFunctionType, TArgsValidator, TReturnsValidator>);
|
|
6
|
+
constructor(def: ConvexBuilderDef<TFunctionType, TArgsValidator, TReturnsValidator, TVisibility>);
|
|
10
7
|
private _call;
|
|
11
|
-
use<UOutContext extends Context>(middleware: ConvexMiddleware<TCurrentContext, UOutContext>): ConvexBuilderWithHandler<TDataModel, TFunctionType, TCurrentContext & UOutContext, TArgsValidator, TReturnsValidator, THandlerReturn> & CallableBuilder<TCurrentContext & UOutContext, TArgsValidator, THandlerReturn>;
|
|
8
|
+
use<UOutContext extends Context>(middleware: ConvexMiddleware<TCurrentContext, UOutContext>): ConvexBuilderWithHandler<TDataModel, TFunctionType, TInitialContext, TCurrentContext & UOutContext, TArgsValidator, TReturnsValidator, TVisibility, THandlerReturn> & CallableBuilder<TCurrentContext & UOutContext, TArgsValidator, THandlerReturn>;
|
|
12
9
|
public(): TFunctionType extends "query" ? RegisteredQuery<"public", InferredArgs<TArgsValidator>, Promise<THandlerReturn>> : TFunctionType extends "mutation" ? RegisteredMutation<"public", InferredArgs<TArgsValidator>, Promise<THandlerReturn>> : TFunctionType extends "action" ? RegisteredAction<"public", InferredArgs<TArgsValidator>, Promise<THandlerReturn>> : never;
|
|
13
10
|
internal(): TFunctionType extends "query" ? RegisteredQuery<"internal", InferredArgs<TArgsValidator>, Promise<THandlerReturn>> : TFunctionType extends "mutation" ? RegisteredMutation<"internal", InferredArgs<TArgsValidator>, Promise<THandlerReturn>> : TFunctionType extends "action" ? RegisteredAction<"internal", InferredArgs<TArgsValidator>, Promise<THandlerReturn>> : never;
|
|
14
11
|
private _register;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvexBuilderWithHandler.d.ts","sourceRoot":"","sources":["../src/ConvexBuilderWithHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EAOtB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ConvexBuilderWithHandler.d.ts","sourceRoot":"","sources":["../src/ConvexBuilderWithHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EAOtB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAuB,MAAM,cAAc,CAAC;AAC1E,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,eAAe,EAIhB,MAAM,SAAS,CAAC;AAEjB,qBAAa,wBAAwB,CACnC,UAAU,SAAS,gBAAgB,GAAG,gBAAgB,EACtD,aAAa,SAAS,YAAY,GAAG,SAAS,GAAG,SAAS,EAC1D,eAAe,SAAS,OAAO,GAAG,WAAW,EAC7C,eAAe,SAAS,OAAO,GAAG,WAAW,EAC7C,cAAc,SAAS,mBAAmB,GAAG,SAAS,GAAG,SAAS,EAClE,iBAAiB,SAAS,sBAAsB,GAAG,SAAS,GAAG,SAAS,EACxE,WAAW,SAAS,UAAU,GAAG,QAAQ,EACzC,cAAc,GAAG,GAAG;IAEpB,OAAO,CAAC,GAAG,CAKT;gBAGA,GAAG,EAAE,gBAAgB,CACnB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,WAAW,CACZ;IAaH,OAAO,CAAC,KAAK;IA0Bb,GAAG,CAAC,WAAW,SAAS,OAAO,EAC7B,UAAU,EAAE,gBAAgB,CAAC,eAAe,EAAE,WAAW,CAAC,GACzD,wBAAwB,CACzB,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,GAAG,WAAW,EAC7B,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,cAAc,CACf,GACC,eAAe,CACb,eAAe,GAAG,WAAW,EAC7B,cAAc,EACd,cAAc,CACf;IA8BH,MAAM,IAAI,aAAa,SAAS,OAAO,GACnC,eAAe,CACb,QAAQ,EACR,YAAY,CAAC,cAAc,CAAC,EAC5B,OAAO,CAAC,cAAc,CAAC,CACxB,GACD,aAAa,SAAS,UAAU,GAC9B,kBAAkB,CAChB,QAAQ,EACR,YAAY,CAAC,cAAc,CAAC,EAC5B,OAAO,CAAC,cAAc,CAAC,CACxB,GACD,aAAa,SAAS,QAAQ,GAC5B,gBAAgB,CACd,QAAQ,EACR,YAAY,CAAC,cAAc,CAAC,EAC5B,OAAO,CAAC,cAAc,CAAC,CACxB,GACD,KAAK;IAIb,QAAQ,IAAI,aAAa,SAAS,OAAO,GACrC,eAAe,CACb,UAAU,EACV,YAAY,CAAC,cAAc,CAAC,EAC5B,OAAO,CAAC,cAAc,CAAC,CACxB,GACD,aAAa,SAAS,UAAU,GAC9B,kBAAkB,CAChB,UAAU,EACV,YAAY,CAAC,cAAc,CAAC,EAC5B,OAAO,CAAC,cAAc,CAAC,CACxB,GACD,aAAa,SAAS,QAAQ,GAC5B,gBAAgB,CACd,UAAU,EACV,YAAY,CAAC,cAAc,CAAC,EAC5B,OAAO,CAAC,cAAc,CAAC,CACxB,GACD,KAAK;IAIb,OAAO,CAAC,SAAS;CA2DlB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { queryGeneric, internalQueryGeneric, mutationGeneric, internalMutationGeneric, actionGeneric, internalActionGeneric, } from "convex/server";
|
|
2
|
-
import { applyMiddlewares } from "./builder";
|
|
3
2
|
export class ConvexBuilderWithHandler {
|
|
4
3
|
def;
|
|
5
4
|
constructor(def) {
|
|
@@ -18,8 +17,17 @@ export class ConvexBuilderWithHandler {
|
|
|
18
17
|
throw new Error("Handler not set.");
|
|
19
18
|
}
|
|
20
19
|
return async (args) => {
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
let currentContext = context;
|
|
21
|
+
// Apply all middlewares in order
|
|
22
|
+
for (const middleware of middlewares) {
|
|
23
|
+
const result = await middleware({
|
|
24
|
+
context: currentContext,
|
|
25
|
+
next: async (options) => ({ context: options.context }),
|
|
26
|
+
});
|
|
27
|
+
currentContext = result.context;
|
|
28
|
+
}
|
|
29
|
+
// Call the raw handler with the transformed context
|
|
30
|
+
return handler(currentContext, args);
|
|
23
31
|
};
|
|
24
32
|
}
|
|
25
33
|
use(middleware) {
|
|
@@ -44,8 +52,17 @@ export class ConvexBuilderWithHandler {
|
|
|
44
52
|
}
|
|
45
53
|
// Compose the handler with all middlewares (including those added after .handler())
|
|
46
54
|
const composedHandler = async (baseCtx, baseArgs) => {
|
|
47
|
-
|
|
48
|
-
|
|
55
|
+
let currentContext = baseCtx;
|
|
56
|
+
// Apply all middlewares in order
|
|
57
|
+
for (const middleware of middlewares) {
|
|
58
|
+
const result = await middleware({
|
|
59
|
+
context: currentContext,
|
|
60
|
+
next: async (options) => ({ context: options.context }),
|
|
61
|
+
});
|
|
62
|
+
currentContext = result.context;
|
|
63
|
+
}
|
|
64
|
+
// Call the raw handler with the transformed context
|
|
65
|
+
return handler(currentContext, baseArgs);
|
|
49
66
|
};
|
|
50
67
|
const config = {
|
|
51
68
|
args: argsValidator || {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvexBuilderWithHandler.js","sourceRoot":"","sources":["../src/ConvexBuilderWithHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,qBAAqB,GACtB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ConvexBuilderWithHandler.js","sourceRoot":"","sources":["../src/ConvexBuilderWithHandler.ts"],"names":[],"mappings":"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"}
|
package/dist/builder.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { type GenericDataModel } from "convex/server";
|
|
2
|
-
import type { AnyConvexMiddleware } from "./middleware";
|
|
3
|
-
import type { Context } from "./types";
|
|
4
2
|
import { ConvexBuilder } from "./ConvexBuilder";
|
|
5
|
-
export declare function applyMiddlewares(initialContext: Context, middlewares: readonly AnyConvexMiddleware[]): Promise<Context>;
|
|
6
3
|
export declare function createBuilder<TDataModel extends GenericDataModel>(): ConvexBuilder<TDataModel>;
|
|
7
4
|
//# sourceMappingURL=builder.d.ts.map
|
package/dist/builder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,wBAAgB,aAAa,CAC3B,UAAU,SAAS,gBAAgB,KAChC,aAAa,CAAC,UAAU,CAAC,CAK7B"}
|
package/dist/builder.js
CHANGED
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
import { ConvexBuilder } from "./ConvexBuilder";
|
|
2
|
-
export async function applyMiddlewares(initialContext, middlewares) {
|
|
3
|
-
let currentContext = initialContext;
|
|
4
|
-
for (const middleware of middlewares) {
|
|
5
|
-
const result = await middleware({
|
|
6
|
-
context: currentContext,
|
|
7
|
-
next: async (options) => ({ context: options.context }),
|
|
8
|
-
});
|
|
9
|
-
currentContext = result.context;
|
|
10
|
-
}
|
|
11
|
-
return currentContext;
|
|
12
|
-
}
|
|
13
2
|
export function createBuilder() {
|
|
14
3
|
return new ConvexBuilder({
|
|
15
4
|
middlewares: [],
|
|
5
|
+
visibility: "public",
|
|
16
6
|
});
|
|
17
7
|
}
|
|
18
8
|
//# sourceMappingURL=builder.js.map
|
package/dist/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,UAAU,aAAa;IAG3B,OAAO,IAAI,aAAa,CAAa;QACnC,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,QAAQ;KACrB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -30,14 +30,14 @@ export type Visibility = "public" | "internal";
|
|
|
30
30
|
export type CallableBuilder<TCurrentContext extends Context, TArgsValidator extends ConvexArgsValidator | undefined, THandlerReturn> = {
|
|
31
31
|
(context: TCurrentContext): (args: InferredArgs<TArgsValidator>) => Promise<THandlerReturn>;
|
|
32
32
|
};
|
|
33
|
-
export interface ConvexBuilderDef<TFunctionType extends FunctionType | undefined, TArgsValidator extends ConvexArgsValidator | undefined, TReturnsValidator extends ConvexReturnsValidator | undefined> {
|
|
33
|
+
export interface ConvexBuilderDef<TFunctionType extends FunctionType | undefined, TArgsValidator extends ConvexArgsValidator | undefined, TReturnsValidator extends ConvexReturnsValidator | undefined, TVisibility extends Visibility> {
|
|
34
34
|
functionType?: TFunctionType;
|
|
35
35
|
middlewares: readonly AnyConvexMiddleware[];
|
|
36
36
|
argsValidator?: TArgsValidator;
|
|
37
37
|
returnsValidator?: TReturnsValidator;
|
|
38
|
+
visibility: TVisibility;
|
|
38
39
|
handler?: (context: Context, input: any) => Promise<any>;
|
|
39
40
|
}
|
|
40
|
-
export type InferHandlerReturn<TReturnsValidator extends ConvexReturnsValidator | undefined, TReturn> = [TReturnsValidator] extends [ConvexReturnsValidator] ? ExpectedReturnType<TReturnsValidator> : TReturn;
|
|
41
41
|
export type ExpectedReturnType<TReturnsValidator extends ConvexReturnsValidator | undefined> = TReturnsValidator extends ConvexReturnsValidator ? InferReturns<TReturnsValidator> : any;
|
|
42
42
|
export type InferredArgs<T extends ConvexArgsValidator | undefined> = T extends ConvexArgsValidator ? InferArgs<T> : EmptyObject;
|
|
43
43
|
export {};
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EACjB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/ConvexBuilder.ts
CHANGED
|
@@ -1,129 +1,95 @@
|
|
|
1
1
|
import type { GenericDataModel } from "convex/server";
|
|
2
|
-
import { InferredArgs } from "./types";
|
|
3
|
-
import { InferHandlerReturn } from "./types";
|
|
4
2
|
import { ConvexBuilderDef } from "./types";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import type { ConvexMiddleware, AnyConvexMiddleware } from "./middleware";
|
|
3
|
+
import { ConvexBuilderWithFunctionKind } from "./ConvexBuilderWithFunctionKind";
|
|
4
|
+
import type { ConvexMiddleware } from "./middleware";
|
|
8
5
|
import type {
|
|
9
|
-
FunctionType,
|
|
10
|
-
Context,
|
|
11
|
-
EmptyObject,
|
|
12
|
-
ConvexArgsValidator,
|
|
13
|
-
ConvexReturnsValidator,
|
|
14
6
|
QueryCtx,
|
|
15
7
|
MutationCtx,
|
|
16
8
|
ActionCtx,
|
|
9
|
+
Context,
|
|
10
|
+
EmptyObject,
|
|
17
11
|
} from "./types";
|
|
18
|
-
import {
|
|
19
|
-
type ValidatorInput,
|
|
20
|
-
type ToConvexArgsValidator,
|
|
21
|
-
isZodSchema,
|
|
22
|
-
toConvexValidator,
|
|
23
|
-
type ReturnsValidatorInput,
|
|
24
|
-
type ToConvexReturnsValidator,
|
|
25
|
-
} from "./zod_support";
|
|
26
12
|
|
|
27
13
|
export class ConvexBuilder<
|
|
28
14
|
TDataModel extends GenericDataModel = GenericDataModel,
|
|
29
|
-
TFunctionType extends FunctionType | undefined = undefined,
|
|
30
|
-
TInitialContext extends Context = EmptyObject,
|
|
31
|
-
TCurrentContext extends Context = EmptyObject,
|
|
32
|
-
TArgsValidator extends ConvexArgsValidator | undefined = undefined,
|
|
33
|
-
TReturnsValidator extends ConvexReturnsValidator | undefined = undefined,
|
|
34
15
|
> {
|
|
35
|
-
|
|
36
|
-
TFunctionType,
|
|
37
|
-
TArgsValidator,
|
|
38
|
-
TReturnsValidator
|
|
39
|
-
>;
|
|
16
|
+
private def: ConvexBuilderDef<undefined, undefined, undefined, "public">;
|
|
40
17
|
|
|
41
18
|
constructor(
|
|
42
|
-
def: ConvexBuilderDef<
|
|
19
|
+
def: ConvexBuilderDef<undefined, undefined, undefined, "public">
|
|
43
20
|
) {
|
|
44
21
|
this.def = def;
|
|
45
22
|
}
|
|
46
23
|
|
|
47
|
-
query(
|
|
48
|
-
this: ConvexBuilder<
|
|
49
|
-
TDataModel,
|
|
50
|
-
undefined,
|
|
51
|
-
TInitialContext,
|
|
52
|
-
TCurrentContext,
|
|
53
|
-
TArgsValidator,
|
|
54
|
-
TReturnsValidator
|
|
55
|
-
>
|
|
56
|
-
): ConvexBuilder<
|
|
24
|
+
query(): ConvexBuilderWithFunctionKind<
|
|
57
25
|
TDataModel,
|
|
58
26
|
"query",
|
|
59
27
|
QueryCtx<TDataModel>,
|
|
60
28
|
QueryCtx<TDataModel>
|
|
61
29
|
> {
|
|
62
|
-
return new
|
|
30
|
+
return new ConvexBuilderWithFunctionKind<
|
|
31
|
+
TDataModel,
|
|
32
|
+
"query",
|
|
33
|
+
QueryCtx<TDataModel>,
|
|
34
|
+
QueryCtx<TDataModel>
|
|
35
|
+
>({
|
|
63
36
|
...this.def,
|
|
64
37
|
functionType: "query",
|
|
65
|
-
})
|
|
38
|
+
});
|
|
66
39
|
}
|
|
67
40
|
|
|
68
|
-
mutation(
|
|
69
|
-
this: ConvexBuilder<
|
|
70
|
-
TDataModel,
|
|
71
|
-
undefined,
|
|
72
|
-
TInitialContext,
|
|
73
|
-
TCurrentContext,
|
|
74
|
-
TArgsValidator,
|
|
75
|
-
TReturnsValidator
|
|
76
|
-
>
|
|
77
|
-
): ConvexBuilder<
|
|
41
|
+
mutation(): ConvexBuilderWithFunctionKind<
|
|
78
42
|
TDataModel,
|
|
79
43
|
"mutation",
|
|
80
44
|
MutationCtx<TDataModel>,
|
|
81
45
|
MutationCtx<TDataModel>
|
|
82
46
|
> {
|
|
83
|
-
return new
|
|
47
|
+
return new ConvexBuilderWithFunctionKind<
|
|
48
|
+
TDataModel,
|
|
49
|
+
"mutation",
|
|
50
|
+
MutationCtx<TDataModel>,
|
|
51
|
+
MutationCtx<TDataModel>
|
|
52
|
+
>({
|
|
84
53
|
...this.def,
|
|
85
54
|
functionType: "mutation",
|
|
86
|
-
})
|
|
55
|
+
});
|
|
87
56
|
}
|
|
88
57
|
|
|
89
|
-
action(
|
|
90
|
-
this: ConvexBuilder<
|
|
91
|
-
TDataModel,
|
|
92
|
-
undefined,
|
|
93
|
-
TInitialContext,
|
|
94
|
-
TCurrentContext,
|
|
95
|
-
TArgsValidator,
|
|
96
|
-
TReturnsValidator
|
|
97
|
-
>
|
|
98
|
-
): ConvexBuilder<
|
|
58
|
+
action(): ConvexBuilderWithFunctionKind<
|
|
99
59
|
TDataModel,
|
|
100
60
|
"action",
|
|
101
61
|
ActionCtx<TDataModel>,
|
|
102
62
|
ActionCtx<TDataModel>
|
|
103
63
|
> {
|
|
104
|
-
return new
|
|
64
|
+
return new ConvexBuilderWithFunctionKind<
|
|
65
|
+
TDataModel,
|
|
66
|
+
"action",
|
|
67
|
+
ActionCtx<TDataModel>,
|
|
68
|
+
ActionCtx<TDataModel>
|
|
69
|
+
>({
|
|
105
70
|
...this.def,
|
|
106
71
|
functionType: "action",
|
|
107
|
-
})
|
|
72
|
+
});
|
|
108
73
|
}
|
|
109
74
|
|
|
110
|
-
$context<U extends Context>():
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
U
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
75
|
+
$context<U extends Context>(): {
|
|
76
|
+
middleware<UOutContext extends Context>(
|
|
77
|
+
middleware: ConvexMiddleware<U, UOutContext>
|
|
78
|
+
): ConvexMiddleware<U, UOutContext>;
|
|
79
|
+
} {
|
|
80
|
+
// Return an object that allows middleware creation with a specific context type
|
|
81
|
+
return {
|
|
82
|
+
middleware<UOutContext extends Context>(
|
|
83
|
+
middleware: ConvexMiddleware<U, UOutContext>
|
|
84
|
+
): ConvexMiddleware<U, UOutContext> {
|
|
85
|
+
return middleware;
|
|
86
|
+
},
|
|
87
|
+
};
|
|
122
88
|
}
|
|
123
89
|
|
|
124
90
|
middleware<UOutContext extends Context>(
|
|
125
|
-
middleware: ConvexMiddleware<
|
|
126
|
-
): ConvexMiddleware<
|
|
91
|
+
middleware: ConvexMiddleware<EmptyObject, UOutContext>
|
|
92
|
+
): ConvexMiddleware<EmptyObject, UOutContext>;
|
|
127
93
|
middleware<UInContext extends Context, UOutContext extends Context>(
|
|
128
94
|
middleware: ConvexMiddleware<UInContext, UOutContext>
|
|
129
95
|
): ConvexMiddleware<UInContext, UOutContext>;
|
|
@@ -132,146 +98,4 @@ export class ConvexBuilder<
|
|
|
132
98
|
): ConvexMiddleware<UInContext, UOutContext> {
|
|
133
99
|
return middleware;
|
|
134
100
|
}
|
|
135
|
-
|
|
136
|
-
use<UOutContext extends Context>(
|
|
137
|
-
this: ConvexBuilder<
|
|
138
|
-
TDataModel,
|
|
139
|
-
FunctionType,
|
|
140
|
-
TInitialContext,
|
|
141
|
-
TCurrentContext,
|
|
142
|
-
TArgsValidator,
|
|
143
|
-
TReturnsValidator
|
|
144
|
-
>,
|
|
145
|
-
middleware: ConvexMiddleware<TCurrentContext, UOutContext>
|
|
146
|
-
): ConvexBuilder<
|
|
147
|
-
TDataModel,
|
|
148
|
-
TFunctionType,
|
|
149
|
-
TInitialContext,
|
|
150
|
-
TCurrentContext & UOutContext,
|
|
151
|
-
TArgsValidator,
|
|
152
|
-
TReturnsValidator
|
|
153
|
-
> {
|
|
154
|
-
return new ConvexBuilder({
|
|
155
|
-
...this.def,
|
|
156
|
-
middlewares: [...this.def.middlewares, middleware as AnyConvexMiddleware],
|
|
157
|
-
}) as any;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
input<UInput extends ValidatorInput>(
|
|
161
|
-
this: ConvexBuilder<
|
|
162
|
-
TDataModel,
|
|
163
|
-
FunctionType,
|
|
164
|
-
TInitialContext,
|
|
165
|
-
TCurrentContext,
|
|
166
|
-
TArgsValidator,
|
|
167
|
-
TReturnsValidator
|
|
168
|
-
>,
|
|
169
|
-
validator: UInput
|
|
170
|
-
): ConvexBuilder<
|
|
171
|
-
TDataModel,
|
|
172
|
-
TFunctionType,
|
|
173
|
-
TInitialContext,
|
|
174
|
-
TCurrentContext,
|
|
175
|
-
ToConvexArgsValidator<UInput>,
|
|
176
|
-
TReturnsValidator
|
|
177
|
-
> {
|
|
178
|
-
const convexValidator = (
|
|
179
|
-
isZodSchema(validator) ? toConvexValidator(validator) : validator
|
|
180
|
-
) as ToConvexArgsValidator<UInput>;
|
|
181
|
-
|
|
182
|
-
return new ConvexBuilder({
|
|
183
|
-
...this.def,
|
|
184
|
-
argsValidator: convexValidator,
|
|
185
|
-
}) as any;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
returns<UReturns extends ReturnsValidatorInput>(
|
|
189
|
-
this: ConvexBuilder<
|
|
190
|
-
TDataModel,
|
|
191
|
-
FunctionType,
|
|
192
|
-
TInitialContext,
|
|
193
|
-
TCurrentContext,
|
|
194
|
-
TArgsValidator,
|
|
195
|
-
TReturnsValidator
|
|
196
|
-
>,
|
|
197
|
-
validator: UReturns
|
|
198
|
-
): ConvexBuilder<
|
|
199
|
-
TDataModel,
|
|
200
|
-
TFunctionType,
|
|
201
|
-
TInitialContext,
|
|
202
|
-
TCurrentContext,
|
|
203
|
-
TArgsValidator,
|
|
204
|
-
ToConvexReturnsValidator<UReturns>
|
|
205
|
-
> {
|
|
206
|
-
const convexValidator = (
|
|
207
|
-
isZodSchema(validator) ? toConvexValidator(validator) : validator
|
|
208
|
-
) as ToConvexReturnsValidator<UReturns>;
|
|
209
|
-
|
|
210
|
-
return new ConvexBuilder({
|
|
211
|
-
...this.def,
|
|
212
|
-
returnsValidator: convexValidator,
|
|
213
|
-
}) as any;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
handler<
|
|
217
|
-
TReturn extends InferHandlerReturn<
|
|
218
|
-
TReturnsValidator,
|
|
219
|
-
any
|
|
220
|
-
> = InferHandlerReturn<TReturnsValidator, any>,
|
|
221
|
-
>(
|
|
222
|
-
this: ConvexBuilder<
|
|
223
|
-
TDataModel,
|
|
224
|
-
FunctionType,
|
|
225
|
-
TInitialContext,
|
|
226
|
-
TCurrentContext,
|
|
227
|
-
TArgsValidator,
|
|
228
|
-
TReturnsValidator
|
|
229
|
-
>,
|
|
230
|
-
handlerFn: (options: {
|
|
231
|
-
context: TCurrentContext;
|
|
232
|
-
input: InferredArgs<TArgsValidator>;
|
|
233
|
-
}) => Promise<TReturn>
|
|
234
|
-
): ConvexBuilderWithHandler<
|
|
235
|
-
TDataModel,
|
|
236
|
-
TFunctionType & FunctionType,
|
|
237
|
-
TCurrentContext,
|
|
238
|
-
TArgsValidator,
|
|
239
|
-
TReturnsValidator,
|
|
240
|
-
InferHandlerReturn<TReturnsValidator, TReturn>
|
|
241
|
-
> &
|
|
242
|
-
CallableBuilder<
|
|
243
|
-
TCurrentContext,
|
|
244
|
-
TArgsValidator,
|
|
245
|
-
InferHandlerReturn<TReturnsValidator, TReturn>
|
|
246
|
-
> {
|
|
247
|
-
if (this.def.handler) {
|
|
248
|
-
throw new Error(
|
|
249
|
-
"Handler already defined. Only one handler can be set per function chain."
|
|
250
|
-
);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
const rawHandler = async (
|
|
254
|
-
transformedCtx: Context,
|
|
255
|
-
baseArgs: InferredArgs<TArgsValidator>
|
|
256
|
-
) => {
|
|
257
|
-
return handlerFn({
|
|
258
|
-
context: transformedCtx as TCurrentContext,
|
|
259
|
-
input: baseArgs,
|
|
260
|
-
});
|
|
261
|
-
};
|
|
262
|
-
|
|
263
|
-
type InferredReturn = InferHandlerReturn<TReturnsValidator, TReturn>;
|
|
264
|
-
|
|
265
|
-
return new ConvexBuilderWithHandler<
|
|
266
|
-
TDataModel,
|
|
267
|
-
TFunctionType & FunctionType,
|
|
268
|
-
TCurrentContext,
|
|
269
|
-
TArgsValidator,
|
|
270
|
-
TReturnsValidator,
|
|
271
|
-
InferredReturn
|
|
272
|
-
>({
|
|
273
|
-
...this.def,
|
|
274
|
-
handler: rawHandler as any,
|
|
275
|
-
} as any) as any;
|
|
276
|
-
}
|
|
277
101
|
}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import type { GenericDataModel } from "convex/server";
|
|
2
|
+
import { ConvexBuilderWithHandler } from "./ConvexBuilderWithHandler";
|
|
3
|
+
import { InferredArgs } from "./types";
|
|
4
|
+
import { ExpectedReturnType } from "./types";
|
|
5
|
+
import { ConvexBuilderDef } from "./types";
|
|
6
|
+
import { CallableBuilder } from "./types";
|
|
7
|
+
import type { ConvexMiddleware, AnyConvexMiddleware } from "./middleware";
|
|
8
|
+
import type {
|
|
9
|
+
FunctionType,
|
|
10
|
+
Context,
|
|
11
|
+
EmptyObject,
|
|
12
|
+
ConvexArgsValidator,
|
|
13
|
+
ConvexReturnsValidator,
|
|
14
|
+
Visibility,
|
|
15
|
+
} from "./types";
|
|
16
|
+
import {
|
|
17
|
+
type ValidatorInput,
|
|
18
|
+
type ToConvexArgsValidator,
|
|
19
|
+
isZodSchema,
|
|
20
|
+
toConvexValidator,
|
|
21
|
+
type ReturnsValidatorInput,
|
|
22
|
+
type ToConvexReturnsValidator,
|
|
23
|
+
} from "./zod_support";
|
|
24
|
+
|
|
25
|
+
export class ConvexBuilderWithFunctionKind<
|
|
26
|
+
TDataModel extends GenericDataModel = GenericDataModel,
|
|
27
|
+
TFunctionType extends FunctionType = FunctionType,
|
|
28
|
+
TInitialContext extends Context = EmptyObject,
|
|
29
|
+
TCurrentContext extends Context = EmptyObject,
|
|
30
|
+
TArgsValidator extends ConvexArgsValidator | undefined = undefined,
|
|
31
|
+
TReturnsValidator extends ConvexReturnsValidator | undefined = undefined,
|
|
32
|
+
TVisibility extends Visibility = "public",
|
|
33
|
+
THasHandler extends boolean = false,
|
|
34
|
+
THandlerReturn = any,
|
|
35
|
+
> {
|
|
36
|
+
protected def: ConvexBuilderDef<
|
|
37
|
+
TFunctionType,
|
|
38
|
+
TArgsValidator,
|
|
39
|
+
TReturnsValidator,
|
|
40
|
+
TVisibility
|
|
41
|
+
>;
|
|
42
|
+
|
|
43
|
+
constructor(
|
|
44
|
+
def: ConvexBuilderDef<
|
|
45
|
+
TFunctionType,
|
|
46
|
+
TArgsValidator,
|
|
47
|
+
TReturnsValidator,
|
|
48
|
+
TVisibility
|
|
49
|
+
>
|
|
50
|
+
) {
|
|
51
|
+
this.def = def;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
$context<U extends Context>(): ConvexBuilderWithFunctionKind<
|
|
55
|
+
TDataModel,
|
|
56
|
+
TFunctionType,
|
|
57
|
+
U & EmptyObject,
|
|
58
|
+
U,
|
|
59
|
+
TArgsValidator,
|
|
60
|
+
TReturnsValidator,
|
|
61
|
+
TVisibility,
|
|
62
|
+
THasHandler,
|
|
63
|
+
THandlerReturn
|
|
64
|
+
> {
|
|
65
|
+
return new ConvexBuilderWithFunctionKind<
|
|
66
|
+
TDataModel,
|
|
67
|
+
TFunctionType,
|
|
68
|
+
U & EmptyObject,
|
|
69
|
+
U,
|
|
70
|
+
TArgsValidator,
|
|
71
|
+
TReturnsValidator,
|
|
72
|
+
TVisibility,
|
|
73
|
+
THasHandler,
|
|
74
|
+
THandlerReturn
|
|
75
|
+
>({
|
|
76
|
+
...this.def,
|
|
77
|
+
middlewares: [],
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
middleware<UOutContext extends Context>(
|
|
82
|
+
middleware: ConvexMiddleware<TInitialContext, UOutContext>
|
|
83
|
+
): ConvexMiddleware<TInitialContext, UOutContext>;
|
|
84
|
+
middleware<UInContext extends Context, UOutContext extends Context>(
|
|
85
|
+
middleware: ConvexMiddleware<UInContext, UOutContext>
|
|
86
|
+
): ConvexMiddleware<UInContext, UOutContext>;
|
|
87
|
+
middleware<UInContext extends Context, UOutContext extends Context>(
|
|
88
|
+
middleware: ConvexMiddleware<UInContext, UOutContext>
|
|
89
|
+
): ConvexMiddleware<UInContext, UOutContext> {
|
|
90
|
+
return middleware;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
use<UOutContext extends Context>(
|
|
94
|
+
middleware: ConvexMiddleware<TCurrentContext, UOutContext>
|
|
95
|
+
): ConvexBuilderWithFunctionKind<
|
|
96
|
+
TDataModel,
|
|
97
|
+
TFunctionType,
|
|
98
|
+
TInitialContext,
|
|
99
|
+
TCurrentContext & UOutContext,
|
|
100
|
+
TArgsValidator,
|
|
101
|
+
TReturnsValidator,
|
|
102
|
+
TVisibility,
|
|
103
|
+
THasHandler,
|
|
104
|
+
THandlerReturn
|
|
105
|
+
> {
|
|
106
|
+
return new ConvexBuilderWithFunctionKind<
|
|
107
|
+
TDataModel,
|
|
108
|
+
TFunctionType,
|
|
109
|
+
TInitialContext,
|
|
110
|
+
TCurrentContext & UOutContext,
|
|
111
|
+
TArgsValidator,
|
|
112
|
+
TReturnsValidator,
|
|
113
|
+
TVisibility,
|
|
114
|
+
THasHandler,
|
|
115
|
+
THandlerReturn
|
|
116
|
+
>({
|
|
117
|
+
...this.def,
|
|
118
|
+
middlewares: [...this.def.middlewares, middleware as AnyConvexMiddleware],
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
input<UInput extends ValidatorInput>(
|
|
123
|
+
validator: UInput
|
|
124
|
+
): ConvexBuilderWithFunctionKind<
|
|
125
|
+
TDataModel,
|
|
126
|
+
TFunctionType,
|
|
127
|
+
TInitialContext,
|
|
128
|
+
TCurrentContext,
|
|
129
|
+
ToConvexArgsValidator<UInput>,
|
|
130
|
+
TReturnsValidator,
|
|
131
|
+
TVisibility,
|
|
132
|
+
THasHandler,
|
|
133
|
+
THandlerReturn
|
|
134
|
+
> {
|
|
135
|
+
const convexValidator = isZodSchema(validator)
|
|
136
|
+
? (toConvexValidator(validator) as ToConvexArgsValidator<UInput>)
|
|
137
|
+
: (validator as ToConvexArgsValidator<UInput>);
|
|
138
|
+
|
|
139
|
+
return new ConvexBuilderWithFunctionKind<
|
|
140
|
+
TDataModel,
|
|
141
|
+
TFunctionType,
|
|
142
|
+
TInitialContext,
|
|
143
|
+
TCurrentContext,
|
|
144
|
+
ToConvexArgsValidator<UInput>,
|
|
145
|
+
TReturnsValidator,
|
|
146
|
+
TVisibility,
|
|
147
|
+
THasHandler,
|
|
148
|
+
THandlerReturn
|
|
149
|
+
>({
|
|
150
|
+
...this.def,
|
|
151
|
+
argsValidator: convexValidator,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
returns<UReturns extends ReturnsValidatorInput>(
|
|
156
|
+
validator: UReturns
|
|
157
|
+
): ConvexBuilderWithFunctionKind<
|
|
158
|
+
TDataModel,
|
|
159
|
+
TFunctionType,
|
|
160
|
+
TInitialContext,
|
|
161
|
+
TCurrentContext,
|
|
162
|
+
TArgsValidator,
|
|
163
|
+
ToConvexReturnsValidator<UReturns>,
|
|
164
|
+
TVisibility,
|
|
165
|
+
THasHandler,
|
|
166
|
+
THandlerReturn
|
|
167
|
+
> {
|
|
168
|
+
const convexValidator = isZodSchema(validator)
|
|
169
|
+
? (toConvexValidator(validator) as ToConvexReturnsValidator<UReturns>)
|
|
170
|
+
: (validator as ToConvexReturnsValidator<UReturns>);
|
|
171
|
+
|
|
172
|
+
return new ConvexBuilderWithFunctionKind<
|
|
173
|
+
TDataModel,
|
|
174
|
+
TFunctionType,
|
|
175
|
+
TInitialContext,
|
|
176
|
+
TCurrentContext,
|
|
177
|
+
TArgsValidator,
|
|
178
|
+
ToConvexReturnsValidator<UReturns>,
|
|
179
|
+
TVisibility,
|
|
180
|
+
THasHandler,
|
|
181
|
+
THandlerReturn
|
|
182
|
+
>({
|
|
183
|
+
...this.def,
|
|
184
|
+
returnsValidator: convexValidator,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
handler<
|
|
189
|
+
TReturn extends [TReturnsValidator] extends [ConvexReturnsValidator]
|
|
190
|
+
? ExpectedReturnType<TReturnsValidator>
|
|
191
|
+
: any = [TReturnsValidator] extends [ConvexReturnsValidator]
|
|
192
|
+
? ExpectedReturnType<TReturnsValidator>
|
|
193
|
+
: any,
|
|
194
|
+
>(
|
|
195
|
+
handlerFn: (options: {
|
|
196
|
+
context: TCurrentContext;
|
|
197
|
+
input: InferredArgs<TArgsValidator>;
|
|
198
|
+
}) => Promise<TReturn>
|
|
199
|
+
): ConvexBuilderWithHandler<
|
|
200
|
+
TDataModel,
|
|
201
|
+
TFunctionType,
|
|
202
|
+
TInitialContext,
|
|
203
|
+
TCurrentContext,
|
|
204
|
+
TArgsValidator,
|
|
205
|
+
TReturnsValidator,
|
|
206
|
+
TVisibility,
|
|
207
|
+
[TReturnsValidator] extends [ConvexReturnsValidator]
|
|
208
|
+
? ExpectedReturnType<TReturnsValidator>
|
|
209
|
+
: TReturn
|
|
210
|
+
> &
|
|
211
|
+
CallableBuilder<
|
|
212
|
+
TCurrentContext,
|
|
213
|
+
TArgsValidator,
|
|
214
|
+
[TReturnsValidator] extends [ConvexReturnsValidator]
|
|
215
|
+
? ExpectedReturnType<TReturnsValidator>
|
|
216
|
+
: TReturn
|
|
217
|
+
> {
|
|
218
|
+
if (this.def.handler) {
|
|
219
|
+
throw new Error(
|
|
220
|
+
"Handler already defined. Only one handler can be set per function chain."
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Store the raw handler function - it will be composed with all middlewares
|
|
225
|
+
// (including those added after .handler()) when .public() or .internal() is called
|
|
226
|
+
// The handler signature matches what Convex expects: (ctx, args) => Promise<return>
|
|
227
|
+
const rawHandler = async (
|
|
228
|
+
transformedCtx: Context,
|
|
229
|
+
baseArgs: InferredArgs<TArgsValidator>
|
|
230
|
+
) => {
|
|
231
|
+
return handlerFn({
|
|
232
|
+
context: transformedCtx as TCurrentContext,
|
|
233
|
+
input: baseArgs,
|
|
234
|
+
});
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
type InferredReturn = [TReturnsValidator] extends [ConvexReturnsValidator]
|
|
238
|
+
? ExpectedReturnType<TReturnsValidator>
|
|
239
|
+
: TReturn;
|
|
240
|
+
|
|
241
|
+
return new ConvexBuilderWithHandler<
|
|
242
|
+
TDataModel,
|
|
243
|
+
TFunctionType,
|
|
244
|
+
TInitialContext,
|
|
245
|
+
TCurrentContext,
|
|
246
|
+
TArgsValidator,
|
|
247
|
+
TReturnsValidator,
|
|
248
|
+
TVisibility,
|
|
249
|
+
InferredReturn
|
|
250
|
+
>({
|
|
251
|
+
...this.def,
|
|
252
|
+
handler: rawHandler as any,
|
|
253
|
+
}) as ConvexBuilderWithHandler<
|
|
254
|
+
TDataModel,
|
|
255
|
+
TFunctionType,
|
|
256
|
+
TInitialContext,
|
|
257
|
+
TCurrentContext,
|
|
258
|
+
TArgsValidator,
|
|
259
|
+
TReturnsValidator,
|
|
260
|
+
TVisibility,
|
|
261
|
+
InferredReturn
|
|
262
|
+
> &
|
|
263
|
+
CallableBuilder<TCurrentContext, TArgsValidator, InferredReturn>;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
@@ -10,10 +10,6 @@ import {
|
|
|
10
10
|
actionGeneric,
|
|
11
11
|
internalActionGeneric,
|
|
12
12
|
} from "convex/server";
|
|
13
|
-
import { applyMiddlewares } from "./builder";
|
|
14
|
-
import { InferredArgs } from "./types";
|
|
15
|
-
import { ConvexBuilderDef } from "./types";
|
|
16
|
-
import { CallableBuilder } from "./types";
|
|
17
13
|
import type { ConvexMiddleware, AnyConvexMiddleware } from "./middleware";
|
|
18
14
|
import type {
|
|
19
15
|
FunctionType,
|
|
@@ -21,6 +17,10 @@ import type {
|
|
|
21
17
|
EmptyObject,
|
|
22
18
|
ConvexArgsValidator,
|
|
23
19
|
ConvexReturnsValidator,
|
|
20
|
+
Visibility,
|
|
21
|
+
ConvexBuilderDef,
|
|
22
|
+
InferredArgs,
|
|
23
|
+
CallableBuilder,
|
|
24
24
|
QueryCtx,
|
|
25
25
|
MutationCtx,
|
|
26
26
|
ActionCtx,
|
|
@@ -28,20 +28,28 @@ import type {
|
|
|
28
28
|
|
|
29
29
|
export class ConvexBuilderWithHandler<
|
|
30
30
|
TDataModel extends GenericDataModel = GenericDataModel,
|
|
31
|
-
TFunctionType extends FunctionType =
|
|
31
|
+
TFunctionType extends FunctionType | undefined = undefined,
|
|
32
|
+
TInitialContext extends Context = EmptyObject,
|
|
32
33
|
TCurrentContext extends Context = EmptyObject,
|
|
33
34
|
TArgsValidator extends ConvexArgsValidator | undefined = undefined,
|
|
34
35
|
TReturnsValidator extends ConvexReturnsValidator | undefined = undefined,
|
|
36
|
+
TVisibility extends Visibility = "public",
|
|
35
37
|
THandlerReturn = any,
|
|
36
38
|
> {
|
|
37
39
|
private def: ConvexBuilderDef<
|
|
38
40
|
TFunctionType,
|
|
39
41
|
TArgsValidator,
|
|
40
|
-
TReturnsValidator
|
|
42
|
+
TReturnsValidator,
|
|
43
|
+
TVisibility
|
|
41
44
|
>;
|
|
42
45
|
|
|
43
46
|
constructor(
|
|
44
|
-
def: ConvexBuilderDef<
|
|
47
|
+
def: ConvexBuilderDef<
|
|
48
|
+
TFunctionType,
|
|
49
|
+
TArgsValidator,
|
|
50
|
+
TReturnsValidator,
|
|
51
|
+
TVisibility
|
|
52
|
+
>
|
|
45
53
|
) {
|
|
46
54
|
this.def = def;
|
|
47
55
|
|
|
@@ -64,8 +72,19 @@ export class ConvexBuilderWithHandler<
|
|
|
64
72
|
}
|
|
65
73
|
|
|
66
74
|
return async (args: InferredArgs<TArgsValidator>) => {
|
|
67
|
-
|
|
68
|
-
|
|
75
|
+
let currentContext: Context = context;
|
|
76
|
+
|
|
77
|
+
// Apply all middlewares in order
|
|
78
|
+
for (const middleware of middlewares) {
|
|
79
|
+
const result = await middleware({
|
|
80
|
+
context: currentContext,
|
|
81
|
+
next: async (options) => ({ context: options.context }),
|
|
82
|
+
});
|
|
83
|
+
currentContext = result.context;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Call the raw handler with the transformed context
|
|
87
|
+
return handler(currentContext as any, args);
|
|
69
88
|
};
|
|
70
89
|
}
|
|
71
90
|
|
|
@@ -74,9 +93,11 @@ export class ConvexBuilderWithHandler<
|
|
|
74
93
|
): ConvexBuilderWithHandler<
|
|
75
94
|
TDataModel,
|
|
76
95
|
TFunctionType,
|
|
96
|
+
TInitialContext,
|
|
77
97
|
TCurrentContext & UOutContext,
|
|
78
98
|
TArgsValidator,
|
|
79
99
|
TReturnsValidator,
|
|
100
|
+
TVisibility,
|
|
80
101
|
THandlerReturn
|
|
81
102
|
> &
|
|
82
103
|
CallableBuilder<
|
|
@@ -84,10 +105,33 @@ export class ConvexBuilderWithHandler<
|
|
|
84
105
|
TArgsValidator,
|
|
85
106
|
THandlerReturn
|
|
86
107
|
> {
|
|
87
|
-
return new ConvexBuilderWithHandler
|
|
108
|
+
return new ConvexBuilderWithHandler<
|
|
109
|
+
TDataModel,
|
|
110
|
+
TFunctionType,
|
|
111
|
+
TInitialContext,
|
|
112
|
+
TCurrentContext & UOutContext,
|
|
113
|
+
TArgsValidator,
|
|
114
|
+
TReturnsValidator,
|
|
115
|
+
TVisibility,
|
|
116
|
+
THandlerReturn
|
|
117
|
+
>({
|
|
88
118
|
...this.def,
|
|
89
119
|
middlewares: [...this.def.middlewares, middleware as AnyConvexMiddleware],
|
|
90
|
-
}) as
|
|
120
|
+
}) as ConvexBuilderWithHandler<
|
|
121
|
+
TDataModel,
|
|
122
|
+
TFunctionType,
|
|
123
|
+
TInitialContext,
|
|
124
|
+
TCurrentContext & UOutContext,
|
|
125
|
+
TArgsValidator,
|
|
126
|
+
TReturnsValidator,
|
|
127
|
+
TVisibility,
|
|
128
|
+
THandlerReturn
|
|
129
|
+
> &
|
|
130
|
+
CallableBuilder<
|
|
131
|
+
TCurrentContext & UOutContext,
|
|
132
|
+
TArgsValidator,
|
|
133
|
+
THandlerReturn
|
|
134
|
+
>;
|
|
91
135
|
}
|
|
92
136
|
|
|
93
137
|
public(): TFunctionType extends "query"
|
|
@@ -134,7 +178,7 @@ export class ConvexBuilderWithHandler<
|
|
|
134
178
|
return this._register("internal") as any;
|
|
135
179
|
}
|
|
136
180
|
|
|
137
|
-
private _register(visibility:
|
|
181
|
+
private _register(visibility: Visibility): any {
|
|
138
182
|
const {
|
|
139
183
|
functionType,
|
|
140
184
|
argsValidator,
|
|
@@ -163,8 +207,19 @@ export class ConvexBuilderWithHandler<
|
|
|
163
207
|
| ActionCtx<TDataModel>,
|
|
164
208
|
baseArgs: any
|
|
165
209
|
) => {
|
|
166
|
-
|
|
167
|
-
|
|
210
|
+
let currentContext: Context = baseCtx;
|
|
211
|
+
|
|
212
|
+
// Apply all middlewares in order
|
|
213
|
+
for (const middleware of middlewares) {
|
|
214
|
+
const result = await middleware({
|
|
215
|
+
context: currentContext,
|
|
216
|
+
next: async (options) => ({ context: options.context }),
|
|
217
|
+
});
|
|
218
|
+
currentContext = result.context;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Call the raw handler with the transformed context
|
|
222
|
+
return handler(currentContext as any, baseArgs);
|
|
168
223
|
};
|
|
169
224
|
|
|
170
225
|
const config = {
|
package/src/builder.ts
CHANGED
|
@@ -1,27 +1,11 @@
|
|
|
1
1
|
import { type GenericDataModel } from "convex/server";
|
|
2
|
-
import type { AnyConvexMiddleware } from "./middleware";
|
|
3
|
-
import type { Context } from "./types";
|
|
4
2
|
import { ConvexBuilder } from "./ConvexBuilder";
|
|
5
3
|
|
|
6
|
-
export async function applyMiddlewares(
|
|
7
|
-
initialContext: Context,
|
|
8
|
-
middlewares: readonly AnyConvexMiddleware[]
|
|
9
|
-
): Promise<Context> {
|
|
10
|
-
let currentContext: Context = initialContext;
|
|
11
|
-
for (const middleware of middlewares) {
|
|
12
|
-
const result = await middleware({
|
|
13
|
-
context: currentContext,
|
|
14
|
-
next: async (options) => ({ context: options.context }),
|
|
15
|
-
});
|
|
16
|
-
currentContext = result.context;
|
|
17
|
-
}
|
|
18
|
-
return currentContext;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
4
|
export function createBuilder<
|
|
22
5
|
TDataModel extends GenericDataModel,
|
|
23
6
|
>(): ConvexBuilder<TDataModel> {
|
|
24
7
|
return new ConvexBuilder<TDataModel>({
|
|
25
8
|
middlewares: [],
|
|
9
|
+
visibility: "public",
|
|
26
10
|
});
|
|
27
11
|
}
|
package/src/types.ts
CHANGED
|
@@ -5,7 +5,6 @@ import type {
|
|
|
5
5
|
GenericQueryCtx,
|
|
6
6
|
GenericDataModel,
|
|
7
7
|
} from "convex/server";
|
|
8
|
-
|
|
9
8
|
import type { AnyConvexMiddleware } from "./middleware";
|
|
10
9
|
|
|
11
10
|
export type Context = object;
|
|
@@ -63,8 +62,7 @@ export type ActionCtx<DataModel extends GenericDataModel = GenericDataModel> =
|
|
|
63
62
|
GenericActionCtx<DataModel>;
|
|
64
63
|
|
|
65
64
|
export type FunctionType = "query" | "mutation" | "action";
|
|
66
|
-
export type Visibility = "public" | "internal";
|
|
67
|
-
// Type for a callable ConvexBuilderWithHandler
|
|
65
|
+
export type Visibility = "public" | "internal"; // Type for a callable ConvexBuilderWithHandler
|
|
68
66
|
|
|
69
67
|
export type CallableBuilder<
|
|
70
68
|
TCurrentContext extends Context,
|
|
@@ -79,19 +77,15 @@ export interface ConvexBuilderDef<
|
|
|
79
77
|
TFunctionType extends FunctionType | undefined,
|
|
80
78
|
TArgsValidator extends ConvexArgsValidator | undefined,
|
|
81
79
|
TReturnsValidator extends ConvexReturnsValidator | undefined,
|
|
80
|
+
TVisibility extends Visibility,
|
|
82
81
|
> {
|
|
83
82
|
functionType?: TFunctionType;
|
|
84
83
|
middlewares: readonly AnyConvexMiddleware[];
|
|
85
84
|
argsValidator?: TArgsValidator;
|
|
86
85
|
returnsValidator?: TReturnsValidator;
|
|
86
|
+
visibility: TVisibility;
|
|
87
87
|
handler?: (context: Context, input: any) => Promise<any>;
|
|
88
88
|
}
|
|
89
|
-
export type InferHandlerReturn<
|
|
90
|
-
TReturnsValidator extends ConvexReturnsValidator | undefined,
|
|
91
|
-
TReturn,
|
|
92
|
-
> = [TReturnsValidator] extends [ConvexReturnsValidator]
|
|
93
|
-
? ExpectedReturnType<TReturnsValidator>
|
|
94
|
-
: TReturn;
|
|
95
89
|
export type ExpectedReturnType<
|
|
96
90
|
TReturnsValidator extends ConvexReturnsValidator | undefined,
|
|
97
91
|
> = TReturnsValidator extends ConvexReturnsValidator
|