fluent-convex 0.4.2 → 0.5.2

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/builder.d.ts CHANGED
@@ -1,33 +1,55 @@
1
1
  import { type RegisteredQuery, type RegisteredMutation, type RegisteredAction, type GenericDataModel, type DataModelFromSchemaDefinition, type SchemaDefinition } from "convex/server";
2
2
  import type { ConvexMiddleware, AnyConvexMiddleware } from "./middleware";
3
- import type { Context, ConvexArgsValidator, ConvexReturnsValidator, InferArgs, FunctionType, Visibility, QueryCtx, MutationCtx, ActionCtx } from "./types";
3
+ import type { Context, ConvexArgsValidator, ConvexReturnsValidator, InferArgs, InferReturns, FunctionType, Visibility, QueryCtx, MutationCtx, ActionCtx, EmptyObject } from "./types";
4
4
  import { type ValidatorInput, type ReturnsValidatorInput, type ToConvexArgsValidator, type ToConvexReturnsValidator } from "./zod_support";
5
- type InferredArgs<T extends ConvexArgsValidator | undefined> = T extends ConvexArgsValidator ? InferArgs<T> : Record<never, never>;
5
+ type InferredArgs<T extends ConvexArgsValidator | undefined> = T extends ConvexArgsValidator ? InferArgs<T> : EmptyObject;
6
+ type ExpectedReturnType<TReturnsValidator extends ConvexReturnsValidator | undefined> = TReturnsValidator extends ConvexReturnsValidator ? InferReturns<TReturnsValidator> : any;
6
7
  interface ConvexBuilderDef<TFunctionType extends FunctionType | undefined, TArgsValidator extends ConvexArgsValidator | undefined, TReturnsValidator extends ConvexReturnsValidator | undefined, TVisibility extends Visibility> {
7
8
  functionType?: TFunctionType;
8
9
  middlewares: readonly AnyConvexMiddleware[];
9
10
  argsValidator?: TArgsValidator;
10
11
  returnsValidator?: TReturnsValidator;
11
12
  visibility: TVisibility;
13
+ handler?: (context: Context, input: any) => Promise<any>;
12
14
  }
13
- export declare class ConvexBuilder<TDataModel extends GenericDataModel = GenericDataModel, TFunctionType extends FunctionType | undefined = undefined, TInitialContext extends Context = Record<never, never>, TCurrentContext extends Context = Record<never, never>, TArgsValidator extends ConvexArgsValidator | undefined = undefined, TReturnsValidator extends ConvexReturnsValidator | undefined = undefined, TVisibility extends Visibility = "public"> {
15
+ export declare class ConvexBuilder<TDataModel extends GenericDataModel = GenericDataModel> {
14
16
  private def;
15
- constructor(def: ConvexBuilderDef<TFunctionType, TArgsValidator, TReturnsValidator, TVisibility>);
16
- $context<U extends Context>(): ConvexBuilder<TDataModel, TFunctionType, U & Record<never, never>, U, TArgsValidator, TReturnsValidator, TVisibility>;
17
+ constructor(def: ConvexBuilderDef<undefined, undefined, undefined, "public">);
18
+ query(): ConvexBuilderWithFunctionKind<TDataModel, "query", QueryCtx<TDataModel>, QueryCtx<TDataModel>>;
19
+ mutation(): ConvexBuilderWithFunctionKind<TDataModel, "mutation", MutationCtx<TDataModel>, MutationCtx<TDataModel>>;
20
+ action(): ConvexBuilderWithFunctionKind<TDataModel, "action", ActionCtx<TDataModel>, ActionCtx<TDataModel>>;
21
+ $context<U extends Context>(): {
22
+ middleware<UOutContext extends Context>(middleware: ConvexMiddleware<U, UOutContext>): ConvexMiddleware<U, UOutContext>;
23
+ };
24
+ middleware<UOutContext extends Context>(middleware: ConvexMiddleware<EmptyObject, UOutContext>): ConvexMiddleware<EmptyObject, UOutContext>;
17
25
  middleware<UInContext extends Context, UOutContext extends Context>(middleware: ConvexMiddleware<UInContext, UOutContext>): ConvexMiddleware<UInContext, UOutContext>;
26
+ }
27
+ 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> {
28
+ protected def: ConvexBuilderDef<TFunctionType, TArgsValidator, TReturnsValidator, TVisibility>;
29
+ constructor(def: ConvexBuilderDef<TFunctionType, TArgsValidator, TReturnsValidator, TVisibility>);
30
+ $context<U extends Context>(): ConvexBuilderWithFunctionKind<TDataModel, TFunctionType, U & EmptyObject, U, TArgsValidator, TReturnsValidator, TVisibility, THasHandler, THandlerReturn>;
18
31
  middleware<UOutContext extends Context>(middleware: ConvexMiddleware<TInitialContext, UOutContext>): ConvexMiddleware<TInitialContext, UOutContext>;
19
- use<UOutContext extends Context>(middleware: ConvexMiddleware<TCurrentContext, UOutContext>): ConvexBuilder<TDataModel, TFunctionType, TInitialContext, TCurrentContext & UOutContext, TArgsValidator, TReturnsValidator, TVisibility>;
20
- query(): ConvexBuilder<TDataModel, "query", TInitialContext extends Record<never, never> ? QueryCtx<TDataModel> : TInitialContext, TCurrentContext extends Record<never, never> ? QueryCtx<TDataModel> : TCurrentContext, TArgsValidator, TReturnsValidator, TVisibility>;
21
- mutation(): ConvexBuilder<TDataModel, "mutation", TInitialContext extends Record<never, never> ? MutationCtx<TDataModel> : TInitialContext, TCurrentContext extends Record<never, never> ? MutationCtx<TDataModel> : TCurrentContext, TArgsValidator, TReturnsValidator, TVisibility>;
22
- action(): ConvexBuilder<TDataModel, "action", TInitialContext extends Record<never, never> ? ActionCtx<TDataModel> : TInitialContext, TCurrentContext extends Record<never, never> ? ActionCtx<TDataModel> : TCurrentContext, TArgsValidator, TReturnsValidator, TVisibility>;
23
- internal(): ConvexBuilder<TDataModel, TFunctionType, TInitialContext, TCurrentContext, TArgsValidator, TReturnsValidator, "internal">;
24
- input<UInput extends ValidatorInput>(validator: UInput): ConvexBuilder<TDataModel, TFunctionType, TInitialContext, TCurrentContext, ToConvexArgsValidator<UInput>, TReturnsValidator, TVisibility>;
25
- returns<UReturns extends ReturnsValidatorInput>(validator: UReturns): ConvexBuilder<TDataModel, TFunctionType, TInitialContext, TCurrentContext, TArgsValidator, ToConvexReturnsValidator<UReturns>, TVisibility>;
26
- handler<TReturn>(handlerFn: (options: {
32
+ middleware<UInContext extends Context, UOutContext extends Context>(middleware: ConvexMiddleware<UInContext, UOutContext>): ConvexMiddleware<UInContext, UOutContext>;
33
+ use<UOutContext extends Context>(middleware: ConvexMiddleware<TCurrentContext, UOutContext>): ConvexBuilderWithFunctionKind<TDataModel, TFunctionType, TInitialContext, TCurrentContext & UOutContext, TArgsValidator, TReturnsValidator, TVisibility, THasHandler, THandlerReturn>;
34
+ input<UInput extends ValidatorInput>(validator: UInput): ConvexBuilderWithFunctionKind<TDataModel, TFunctionType, TInitialContext, TCurrentContext, ToConvexArgsValidator<UInput>, TReturnsValidator, TVisibility, THasHandler, THandlerReturn>;
35
+ returns<UReturns extends ReturnsValidatorInput>(validator: UReturns): ConvexBuilderWithFunctionKind<TDataModel, TFunctionType, TInitialContext, TCurrentContext, TArgsValidator, ToConvexReturnsValidator<UReturns>, TVisibility, THasHandler, THandlerReturn>;
36
+ handler<TReturn extends ExpectedReturnType<TReturnsValidator> = ExpectedReturnType<TReturnsValidator>>(handlerFn: (options: {
27
37
  context: TCurrentContext;
28
38
  input: InferredArgs<TArgsValidator>;
29
- }) => Promise<TReturn>): TFunctionType extends "query" ? RegisteredQuery<TVisibility, InferredArgs<TArgsValidator>, Promise<TReturn>> : TFunctionType extends "mutation" ? RegisteredMutation<TVisibility, InferredArgs<TArgsValidator>, Promise<TReturn>> : TFunctionType extends "action" ? RegisteredAction<TVisibility, InferredArgs<TArgsValidator>, Promise<TReturn>> : never;
39
+ }) => Promise<TReturn>): ConvexBuilderWithHandler<TDataModel, TFunctionType, TInitialContext, TCurrentContext, TArgsValidator, TReturnsValidator, TVisibility, TReturn> & CallableBuilder<TCurrentContext, TArgsValidator, TReturn>;
40
+ }
41
+ type CallableBuilder<TCurrentContext extends Context, TArgsValidator extends ConvexArgsValidator | undefined, THandlerReturn> = {
42
+ (context: TCurrentContext): (args: InferredArgs<TArgsValidator>) => Promise<THandlerReturn>;
43
+ };
44
+ 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> {
45
+ private def;
46
+ constructor(def: ConvexBuilderDef<TFunctionType, TArgsValidator, TReturnsValidator, TVisibility>);
47
+ private _call;
48
+ use<UOutContext extends Context>(middleware: ConvexMiddleware<TCurrentContext, UOutContext>): ConvexBuilderWithHandler<TDataModel, TFunctionType, TInitialContext, TCurrentContext & UOutContext, TArgsValidator, TReturnsValidator, TVisibility, THandlerReturn> & CallableBuilder<TCurrentContext & UOutContext, TArgsValidator, THandlerReturn>;
49
+ 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;
50
+ 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;
51
+ private _register;
30
52
  }
31
- export declare function createBuilder<TSchema extends SchemaDefinition<any, boolean>>(_schema: TSchema): ConvexBuilder<DataModelFromSchemaDefinition<TSchema>, undefined, Record<never, never>, Record<never, never>, undefined, undefined, "public">;
53
+ export declare function createBuilder<TSchema extends SchemaDefinition<any, boolean>>(_schema: TSchema): ConvexBuilder<DataModelFromSchemaDefinition<TSchema>>;
32
54
  export {};
33
55
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EAOrB,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,KAAK,EACV,OAAO,EACP,mBAAmB,EACnB,sBAAsB,EACtB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,eAAe,CAAC;AAEvB,KAAK,YAAY,CAAC,CAAC,SAAS,mBAAmB,GAAG,SAAS,IACzD,CAAC,SAAS,mBAAmB,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEtE,UAAU,gBAAgB,CACxB,aAAa,SAAS,YAAY,GAAG,SAAS,EAC9C,cAAc,SAAS,mBAAmB,GAAG,SAAS,EACtD,iBAAiB,SAAS,sBAAsB,GAAG,SAAS,EAC5D,WAAW,SAAS,UAAU;IAE9B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,UAAU,EAAE,WAAW,CAAC;CACzB;AAED,qBAAa,aAAa,CACxB,UAAU,SAAS,gBAAgB,GAAG,gBAAgB,EACtD,aAAa,SAAS,YAAY,GAAG,SAAS,GAAG,SAAS,EAC1D,eAAe,SAAS,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACtD,eAAe,SAAS,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACtD,cAAc,SAAS,mBAAmB,GAAG,SAAS,GAAG,SAAS,EAClE,iBAAiB,SAAS,sBAAsB,GAAG,SAAS,GAAG,SAAS,EACxE,WAAW,SAAS,UAAU,GAAG,QAAQ;IAEzC,OAAO,CAAC,GAAG,CAKT;gBAGA,GAAG,EAAE,gBAAgB,CACnB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,WAAW,CACZ;IAKH,QAAQ,CAAC,CAAC,SAAS,OAAO,KAAK,aAAa,CAC1C,UAAU,EACV,aAAa,EACb,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACxB,CAAC,EACD,cAAc,EACd,iBAAiB,EACjB,WAAW,CACZ;IAOD,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;IAC5C,UAAU,CAAC,WAAW,SAAS,OAAO,EACpC,UAAU,EAAE,gBAAgB,CAAC,eAAe,EAAE,WAAW,CAAC,GACzD,gBAAgB,CAAC,eAAe,EAAE,WAAW,CAAC;IAOjD,GAAG,CAAC,WAAW,SAAS,OAAO,EAC7B,UAAU,EAAE,gBAAgB,CAAC,eAAe,EAAE,WAAW,CAAC,GACzD,aAAa,CACd,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,GAAG,WAAW,EAC7B,cAAc,EACd,iBAAiB,EACjB,WAAW,CACZ;IAOD,KAAK,IAAI,aAAa,CACpB,UAAU,EACV,OAAO,EACP,eAAe,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GACxC,QAAQ,CAAC,UAAU,CAAC,GACpB,eAAe,EACnB,eAAe,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GACxC,QAAQ,CAAC,UAAU,CAAC,GACpB,eAAe,EACnB,cAAc,EACd,iBAAiB,EACjB,WAAW,CACZ;IAOD,QAAQ,IAAI,aAAa,CACvB,UAAU,EACV,UAAU,EACV,eAAe,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GACxC,WAAW,CAAC,UAAU,CAAC,GACvB,eAAe,EACnB,eAAe,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GACxC,WAAW,CAAC,UAAU,CAAC,GACvB,eAAe,EACnB,cAAc,EACd,iBAAiB,EACjB,WAAW,CACZ;IAOD,MAAM,IAAI,aAAa,CACrB,UAAU,EACV,QAAQ,EACR,eAAe,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GACxC,SAAS,CAAC,UAAU,CAAC,GACrB,eAAe,EACnB,eAAe,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GACxC,SAAS,CAAC,UAAU,CAAC,GACrB,eAAe,EACnB,cAAc,EACd,iBAAiB,EACjB,WAAW,CACZ;IAOD,QAAQ,IAAI,aAAa,CACvB,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,UAAU,CACX;IAOD,KAAK,CAAC,MAAM,SAAS,cAAc,EACjC,SAAS,EAAE,MAAM,GAChB,aAAa,CACd,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,qBAAqB,CAAC,MAAM,CAAC,EAC7B,iBAAiB,EACjB,WAAW,CACZ;IAWD,OAAO,CAAC,QAAQ,SAAS,qBAAqB,EAC5C,SAAS,EAAE,QAAQ,GAClB,aAAa,CACd,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,cAAc,EACd,wBAAwB,CAAC,QAAQ,CAAC,EAClC,WAAW,CACZ;IAWD,OAAO,CAAC,OAAO,EACb,SAAS,EAAE,CAAC,OAAO,EAAE;QACnB,OAAO,EAAE,eAAe,CAAC;QACzB,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;KACrC,KAAK,OAAO,CAAC,OAAO,CAAC,GACrB,aAAa,SAAS,OAAO,GAC5B,eAAe,CACb,WAAW,EACX,YAAY,CAAC,cAAc,CAAC,EAC5B,OAAO,CAAC,OAAO,CAAC,CACjB,GACD,aAAa,SAAS,UAAU,GAC9B,kBAAkB,CAChB,WAAW,EACX,YAAY,CAAC,cAAc,CAAC,EAC5B,OAAO,CAAC,OAAO,CAAC,CACjB,GACD,aAAa,SAAS,QAAQ,GAC5B,gBAAgB,CACd,WAAW,EACX,YAAY,CAAC,cAAc,CAAC,EAC5B,OAAO,CAAC,OAAO,CAAC,CACjB,GACD,KAAK;CAqDd;AAED,wBAAgB,aAAa,CAAC,OAAO,SAAS,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,EAC1E,OAAO,EAAE,OAAO,GACf,aAAa,CACd,6BAA6B,CAAC,OAAO,CAAC,EACtC,SAAS,EACT,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACpB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACpB,SAAS,EACT,SAAS,EACT,QAAQ,CACT,CAKA"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
package/dist/builder.js CHANGED
@@ -5,50 +5,61 @@ export class ConvexBuilder {
5
5
  constructor(def) {
6
6
  this.def = def;
7
7
  }
8
- $context() {
9
- return new ConvexBuilder({
10
- ...this.def,
11
- middlewares: [],
12
- });
13
- }
14
- middleware(middleware) {
15
- return middleware;
16
- }
17
- use(middleware) {
18
- return new ConvexBuilder({
19
- ...this.def,
20
- middlewares: [...this.def.middlewares, middleware],
21
- });
22
- }
23
8
  query() {
24
- return new ConvexBuilder({
9
+ return new ConvexBuilderWithFunctionKind({
25
10
  ...this.def,
26
11
  functionType: "query",
27
12
  });
28
13
  }
29
14
  mutation() {
30
- return new ConvexBuilder({
15
+ return new ConvexBuilderWithFunctionKind({
31
16
  ...this.def,
32
17
  functionType: "mutation",
33
18
  });
34
19
  }
35
20
  action() {
36
- return new ConvexBuilder({
21
+ return new ConvexBuilderWithFunctionKind({
37
22
  ...this.def,
38
23
  functionType: "action",
39
24
  });
40
25
  }
41
- internal() {
42
- return new ConvexBuilder({
26
+ $context() {
27
+ // Return an object that allows middleware creation with a specific context type
28
+ return {
29
+ middleware(middleware) {
30
+ return middleware;
31
+ },
32
+ };
33
+ }
34
+ middleware(middleware) {
35
+ return middleware;
36
+ }
37
+ }
38
+ export class ConvexBuilderWithFunctionKind {
39
+ def;
40
+ constructor(def) {
41
+ this.def = def;
42
+ }
43
+ $context() {
44
+ return new ConvexBuilderWithFunctionKind({
45
+ ...this.def,
46
+ middlewares: [],
47
+ });
48
+ }
49
+ middleware(middleware) {
50
+ return middleware;
51
+ }
52
+ use(middleware) {
53
+ return new ConvexBuilderWithFunctionKind({
43
54
  ...this.def,
44
- visibility: "internal",
55
+ middlewares: [...this.def.middlewares, middleware],
45
56
  });
46
57
  }
47
58
  input(validator) {
48
59
  const convexValidator = isZodSchema(validator)
49
60
  ? toConvexValidator(validator)
50
61
  : validator;
51
- return new ConvexBuilder({
62
+ return new ConvexBuilderWithFunctionKind({
52
63
  ...this.def,
53
64
  argsValidator: convexValidator,
54
65
  });
@@ -57,18 +68,85 @@ export class ConvexBuilder {
57
68
  const convexValidator = isZodSchema(validator)
58
69
  ? toConvexValidator(validator)
59
70
  : validator;
60
- return new ConvexBuilder({
71
+ return new ConvexBuilderWithFunctionKind({
61
72
  ...this.def,
62
73
  returnsValidator: convexValidator,
63
74
  });
64
75
  }
65
76
  handler(handlerFn) {
66
- const { functionType, middlewares, argsValidator, returnsValidator, visibility, } = this.def;
77
+ if (this.def.handler) {
78
+ throw new Error("Handler already defined. Only one handler can be set per function chain.");
79
+ }
80
+ // Store the raw handler function - it will be composed with all middlewares
81
+ // (including those added after .handler()) when .public() or .internal() is called
82
+ // The handler signature matches what Convex expects: (ctx, args) => Promise<return>
83
+ const rawHandler = async (transformedCtx, baseArgs) => {
84
+ return handlerFn({
85
+ context: transformedCtx,
86
+ input: baseArgs,
87
+ });
88
+ };
89
+ return new ConvexBuilderWithHandler({
90
+ ...this.def,
91
+ handler: rawHandler,
92
+ });
93
+ }
94
+ }
95
+ export class ConvexBuilderWithHandler {
96
+ def;
97
+ constructor(def) {
98
+ this.def = def;
99
+ // Make the instance callable by returning a Proxy
100
+ return new Proxy(this, {
101
+ apply: (_target, _thisArg, args) => {
102
+ return this._call(args[0]);
103
+ },
104
+ });
105
+ }
106
+ // Internal method to handle the call
107
+ _call(context) {
108
+ const { handler, middlewares } = this.def;
109
+ if (!handler) {
110
+ throw new Error("Handler not set.");
111
+ }
112
+ return async (args) => {
113
+ let currentContext = context;
114
+ // Apply all middlewares in order
115
+ for (const middleware of middlewares) {
116
+ const result = await middleware({
117
+ context: currentContext,
118
+ next: async (options) => ({ context: options.context }),
119
+ });
120
+ currentContext = result.context;
121
+ }
122
+ // Call the raw handler with the transformed context
123
+ return handler(currentContext, args);
124
+ };
125
+ }
126
+ use(middleware) {
127
+ return new ConvexBuilderWithHandler({
128
+ ...this.def,
129
+ middlewares: [...this.def.middlewares, middleware],
130
+ });
131
+ }
132
+ public() {
133
+ return this._register("public");
134
+ }
135
+ internal() {
136
+ return this._register("internal");
137
+ }
138
+ _register(visibility) {
139
+ const { functionType, argsValidator, returnsValidator, handler, middlewares, } = this.def;
67
140
  if (!functionType) {
68
141
  throw new Error("Function type not set. Call .query(), .mutation(), or .action() first.");
69
142
  }
143
+ if (!handler) {
144
+ throw new Error("Handler not set. Call .handler() before .public() or .internal().");
145
+ }
146
+ // Compose the handler with all middlewares (including those added after .handler())
70
147
  const composedHandler = async (baseCtx, baseArgs) => {
71
148
  let currentContext = baseCtx;
149
+ // Apply all middlewares in order
72
150
  for (const middleware of middlewares) {
73
151
  const result = await middleware({
74
152
  context: currentContext,
@@ -76,10 +154,8 @@ export class ConvexBuilder {
76
154
  });
77
155
  currentContext = result.context;
78
156
  }
79
- return handlerFn({
80
- context: currentContext,
81
- input: baseArgs,
82
- });
157
+ // Call the raw handler with the transformed context
158
+ return handler(currentContext, baseArgs);
83
159
  };
84
160
  const config = {
85
161
  args: argsValidator || {},
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,qBAAqB,GAItB,MAAM,eAAe,CAAC;AAavB,OAAO,EACL,WAAW,EACX,iBAAiB,GAKlB,MAAM,eAAe,CAAC;AAkBvB,MAAM,OAAO,aAAa;IAShB,GAAG,CAKT;IAEF,YACE,GAKC;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,QAAQ;QASN,OAAO,IAAI,aAAa,CAAC;YACvB,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;QAU1D,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,IAAI,CAAC,GAAG;YACX,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QAaH,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,IAAI,CAAC,GAAG;YACX,YAAY,EAAE,OAAO;SACtB,CAAQ,CAAC;IACZ,CAAC;IAED,QAAQ;QAaN,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,IAAI,CAAC,GAAG;YACX,YAAY,EAAE,UAAU;SACzB,CAAQ,CAAC;IACZ,CAAC;IAED,MAAM;QAaJ,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,IAAI,CAAC,GAAG;YACX,YAAY,EAAE,QAAQ;SACvB,CAAQ,CAAC;IACZ,CAAC;IAED,QAAQ;QASN,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,IAAI,CAAC,GAAG;YACX,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CACH,SAAiB;QAUjB,MAAM,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC;YAC5C,CAAC,CAAE,iBAAiB,CAAC,SAAS,CAAyB;YACvD,CAAC,CAAE,SAAiC,CAAC;QAEvC,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,IAAI,CAAC,GAAG;YACX,aAAa,EAAE,eAAe;SAC/B,CAAQ,CAAC;IACZ,CAAC;IAED,OAAO,CACL,SAAmB;QAUnB,MAAM,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC;YAC5C,CAAC,CAAE,iBAAiB,CAAC,SAAS,CAA4B;YAC1D,CAAC,CAAE,SAAoC,CAAC;QAE1C,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,IAAI,CAAC,GAAG;YACX,gBAAgB,EAAE,eAAe;SAClC,CAAQ,CAAC;IACZ,CAAC;IAED,OAAO,CACL,SAGsB;QAoBtB,MAAM,EACJ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,UAAU,GACX,GAAG,IAAI,CAAC,GAAG,CAAC;QAEb,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,KAAK,EAC3B,OAGyB,EACzB,QAAsC,EACtC,EAAE;YACF,IAAI,cAAc,GAAQ,OAAO,CAAC;YAElC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;oBAC9B,OAAO,EAAE,cAAc;oBACvB,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;iBACxD,CAAC,CAAC;gBACH,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;YAClC,CAAC;YAED,OAAO,SAAS,CAAC;gBACf,OAAO,EAAE,cAAiC;gBAC1C,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,aAAa,IAAI,EAAE;YACzB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,EAAE,eAAe;SAClB,CAAC;QAET,MAAM,QAAQ,GAAG,UAAU,KAAK,QAAQ,CAAC;QACzC,MAAM,cAAc,GAAG;YACrB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB;YACrD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB;YAC9D,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB;SACzD,CAAC,YAAY,CAAC,CAAC;QAEhB,OAAO,cAAc,CAAC,MAAM,CAAQ,CAAC;IACvC,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAC3B,OAAgB;IAUhB,OAAO,IAAI,aAAa,CAAC;QACvB,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,QAAQ;KACrB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { ConvexArgsValidator, ConvexReturnsValidator } from "./types";
2
+ import type { ValidatorInput, ReturnsValidatorInput } from "./zod_support";
3
+ interface CallableMethodMetadata {
4
+ inputValidator?: ConvexArgsValidator;
5
+ inputValidatorOriginal?: ValidatorInput;
6
+ returnsValidator?: ConvexReturnsValidator;
7
+ returnsValidatorOriginal?: ReturnsValidatorInput;
8
+ }
9
+ /**
10
+ * Decorator to specify input validation for a callable method
11
+ * Compatible with both legacy (esbuild) and modern decorator syntax
12
+ */
13
+ export declare function input<UInput extends ValidatorInput>(validator: UInput): any;
14
+ /**
15
+ * Decorator to specify return validation for a callable method
16
+ * Compatible with both legacy (esbuild) and modern decorator syntax
17
+ */
18
+ export declare function returns<UReturns extends ReturnsValidatorInput>(validator: UReturns): any;
19
+ /**
20
+ * Get metadata for a specific method
21
+ */
22
+ export declare function getMetadata(target: any, propertyKey: string | symbol): CallableMethodMetadata;
23
+ /**
24
+ * Get metadata for a method from a class constructor
25
+ * This is the public API for accessing decorator metadata
26
+ */
27
+ export declare function getMethodMetadataFromClass<T extends new (...args: any[]) => any>(ModelClass: T, methodName: string | symbol): CallableMethodMetadata;
28
+ /**
29
+ * Create a proxy that automatically makes all decorated methods callable
30
+ * Usage: const callableModel = makeCallableMethods(new MyQueryModel(context));
31
+ * Then: await callableModel.listNumbers({ count: 10 });
32
+ */
33
+ export declare function makeCallableMethods<T extends object>(instance: T): T;
34
+ /**
35
+ * Make a method callable with validation
36
+ * This wraps the original method to validate inputs and optionally outputs
37
+ */
38
+ export declare function makeCallable<T extends object>(instance: T, methodName: keyof T): (...args: any[]) => Promise<any>;
39
+ export {};
40
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAO3E,UAAU,sBAAsB;IAC9B,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,sBAAsB,CAAC,EAAE,cAAc,CAAC;IACxC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,wBAAwB,CAAC,EAAE,qBAAqB,CAAC;CAClD;AA6BD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,MAAM,SAAS,cAAc,EACjD,SAAS,EAAE,MAAM,GAChB,GAAG,CAuBL;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,QAAQ,SAAS,qBAAqB,EAC5D,SAAS,EAAE,QAAQ,GAClB,GAAG,CAyBL;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,sBAAsB,CAExB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC9E,UAAU,EAAE,CAAC,EACb,UAAU,EAAE,MAAM,GAAG,MAAM,GAC1B,sBAAsB,CAExB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAgCpE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,QAAQ,EAAE,CAAC,EACX,UAAU,EAAE,MAAM,CAAC,GAClB,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAwClC"}
@@ -0,0 +1,148 @@
1
+ import { isZodSchema, toConvexValidator } from "./zod_support";
2
+ // Metadata stored on decorated methods
3
+ // Using WeakMap for legacy decorator compatibility with esbuild
4
+ const methodMetadataMap = new WeakMap();
5
+ // Get metadata from a method (legacy decorator support)
6
+ function getMethodMetadata(target, propertyKey) {
7
+ const prototype = typeof target === "function" ? target.prototype : target;
8
+ const metadataMap = methodMetadataMap.get(prototype);
9
+ if (!metadataMap)
10
+ return {};
11
+ return metadataMap.get(propertyKey) || {};
12
+ }
13
+ // Set metadata on a method (legacy decorator support)
14
+ function setMethodMetadata(target, propertyKey, metadata) {
15
+ const prototype = typeof target === "function" ? target.prototype : target;
16
+ let metadataMap = methodMetadataMap.get(prototype);
17
+ if (!metadataMap) {
18
+ metadataMap = new Map();
19
+ methodMetadataMap.set(prototype, metadataMap);
20
+ }
21
+ const existing = metadataMap.get(propertyKey) || {};
22
+ metadataMap.set(propertyKey, { ...existing, ...metadata });
23
+ }
24
+ /**
25
+ * Decorator to specify input validation for a callable method
26
+ * Compatible with both legacy (esbuild) and modern decorator syntax
27
+ */
28
+ export function input(validator) {
29
+ return function (target, propertyKey, descriptor) {
30
+ // Handle both legacy (3 args) and modern (2 args) decorator calls
31
+ if (descriptor === undefined) {
32
+ // Modern decorator - get descriptor from target
33
+ descriptor = Object.getOwnPropertyDescriptor(target, propertyKey) || {};
34
+ }
35
+ const convexValidator = isZodSchema(validator)
36
+ ? toConvexValidator(validator)
37
+ : validator;
38
+ setMethodMetadata(target, propertyKey, {
39
+ inputValidator: convexValidator,
40
+ inputValidatorOriginal: validator,
41
+ });
42
+ return descriptor;
43
+ };
44
+ }
45
+ /**
46
+ * Decorator to specify return validation for a callable method
47
+ * Compatible with both legacy (esbuild) and modern decorator syntax
48
+ */
49
+ export function returns(validator) {
50
+ return function (target, propertyKey, descriptor) {
51
+ // Handle both legacy (3 args) and modern (2 args) decorator calls
52
+ if (descriptor === undefined) {
53
+ // Modern decorator - get descriptor from target
54
+ descriptor = Object.getOwnPropertyDescriptor(target, propertyKey) || {};
55
+ }
56
+ // For returns validators, we need GenericValidator, not PropertyValidators
57
+ // If it's a Zod schema, convert it; otherwise assume it's already a GenericValidator
58
+ const convexValidator = isZodSchema(validator)
59
+ ? toConvexValidator(validator)
60
+ : validator;
61
+ setMethodMetadata(target, propertyKey, {
62
+ returnsValidator: convexValidator,
63
+ returnsValidatorOriginal: validator,
64
+ });
65
+ return descriptor;
66
+ };
67
+ }
68
+ /**
69
+ * Get metadata for a specific method
70
+ */
71
+ export function getMetadata(target, propertyKey) {
72
+ return getMethodMetadata(target, propertyKey);
73
+ }
74
+ /**
75
+ * Get metadata for a method from a class constructor
76
+ * This is the public API for accessing decorator metadata
77
+ */
78
+ export function getMethodMetadataFromClass(ModelClass, methodName) {
79
+ return getMethodMetadata(ModelClass.prototype, methodName);
80
+ }
81
+ /**
82
+ * Create a proxy that automatically makes all decorated methods callable
83
+ * Usage: const callableModel = makeCallableMethods(new MyQueryModel(context));
84
+ * Then: await callableModel.listNumbers({ count: 10 });
85
+ */
86
+ export function makeCallableMethods(instance) {
87
+ const callableMethods = new Map();
88
+ const prototype = Object.getPrototypeOf(instance);
89
+ // Find all methods on the prototype and check if they have metadata
90
+ const propertyNames = Object.getOwnPropertyNames(prototype);
91
+ for (const propName of propertyNames) {
92
+ if (propName !== "constructor") {
93
+ const metadata = getMethodMetadata(prototype, propName);
94
+ // If method has metadata, make it callable
95
+ if (metadata.inputValidator || metadata.returnsValidator) {
96
+ callableMethods.set(propName, makeCallable(instance, propName));
97
+ }
98
+ }
99
+ }
100
+ return new Proxy(instance, {
101
+ get(target, prop) {
102
+ // Return callable version if available
103
+ if (callableMethods.has(prop)) {
104
+ return callableMethods.get(prop);
105
+ }
106
+ // Otherwise return original property
107
+ return target[prop];
108
+ },
109
+ });
110
+ }
111
+ /**
112
+ * Make a method callable with validation
113
+ * This wraps the original method to validate inputs and optionally outputs
114
+ */
115
+ export function makeCallable(instance, methodName) {
116
+ const originalMethod = instance[methodName];
117
+ if (typeof originalMethod !== "function") {
118
+ throw new Error(`Method '${String(methodName)}' is not a function on ${instance.constructor.name}`);
119
+ }
120
+ // Get metadata from the prototype
121
+ const prototype = Object.getPrototypeOf(instance);
122
+ const metadata = getMethodMetadata(prototype, methodName);
123
+ return async (...args) => {
124
+ // Validate input if validator is provided
125
+ if (metadata.inputValidatorOriginal) {
126
+ const input = args[0] || {};
127
+ if (isZodSchema(metadata.inputValidatorOriginal)) {
128
+ // Use Zod's parse for runtime validation
129
+ const parsed = metadata.inputValidatorOriginal.parse(input);
130
+ args[0] = parsed;
131
+ }
132
+ // For Convex validators, we skip runtime validation
133
+ // as they're primarily for type checking and Convex handles validation
134
+ }
135
+ // Call the original method
136
+ const result = await originalMethod.apply(instance, args);
137
+ // Validate return value if validator is provided
138
+ if (metadata.returnsValidatorOriginal) {
139
+ if (isZodSchema(metadata.returnsValidatorOriginal)) {
140
+ // Use Zod's parse for runtime validation
141
+ return metadata.returnsValidatorOriginal.parse(result);
142
+ }
143
+ // For Convex validators, we skip runtime validation
144
+ }
145
+ return result;
146
+ };
147
+ }
148
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,4 +2,5 @@ export { ConvexBuilder, createBuilder } from "./builder";
2
2
  export type { ConvexMiddleware, ConvexMiddlewareOptions, AnyConvexMiddleware, } from "./middleware";
3
3
  export type { Context, ConvexArgsValidator, ConvexReturnsValidator, InferArgs, QueryCtx, MutationCtx, ActionCtx, FunctionType, Visibility, } from "./types";
4
4
  export { isZodSchema, toConvexValidator, type ValidatorInput, type ReturnsValidatorInput, } from "./zod_support";
5
+ export { input, returns, getMetadata, getMethodMetadataFromClass, makeCallableMethods, makeCallable, } from "./decorators";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEzD,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,OAAO,EACP,mBAAmB,EACnB,sBAAsB,EACtB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEzD,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,OAAO,EACP,mBAAmB,EACnB,sBAAsB,EACtB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,EACL,OAAO,EACP,WAAW,EACX,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,GACb,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { ConvexBuilder, createBuilder } from "./builder";
2
2
  export { isZodSchema, toConvexValidator, } from "./zod_support";
3
+ export { input, returns, getMetadata, getMethodMetadataFromClass, makeCallableMethods, makeCallable, } from "./decorators";
3
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAoBzD,OAAO,EACL,WAAW,EACX,iBAAiB,GAGlB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAoBzD,OAAO,EACL,WAAW,EACX,iBAAiB,GAGlB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,EACL,OAAO,EACP,WAAW,EACX,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,GACb,MAAM,cAAc,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  import type { PropertyValidators, GenericValidator } from "convex/values";
2
2
  import type { GenericActionCtx, GenericMutationCtx, GenericQueryCtx, GenericDataModel } from "convex/server";
3
- export type Context = Record<PropertyKey, any>;
3
+ export type Context = object;
4
4
  export type ConvexArgsValidator = PropertyValidators | GenericValidator;
5
5
  export type ConvexReturnsValidator = GenericValidator;
6
6
  type ValidatorType<T> = T extends GenericValidator ? T["type"] : never;
7
+ export type EmptyObject = Record<never, never>;
8
+ export type MaybeDefaultContext<TExisting extends Context, TFallback extends Context> = TExisting extends EmptyObject ? TFallback : TExisting;
7
9
  type OptionalKeys<T extends Record<PropertyKey, any>> = {
8
10
  [K in keyof T]: T[K] extends GenericValidator ? T[K]["isOptional"] extends "optional" ? K : never : never;
9
11
  }[keyof T];
@@ -17,6 +19,7 @@ type RequiredArgs<T extends Record<PropertyKey, any>> = {
17
19
  [K in RequiredKeys<T>]: ValidatorType<T[K]>;
18
20
  };
19
21
  export type InferArgs<T extends ConvexArgsValidator> = T extends GenericValidator ? T["type"] : RequiredArgs<T> & OptionalArgs<T>;
22
+ export type InferReturns<T extends ConvexReturnsValidator> = ValidatorType<T>;
20
23
  export type Promisable<T> = T | PromiseLike<T>;
21
24
  export type QueryCtx<DataModel extends GenericDataModel = GenericDataModel> = GenericQueryCtx<DataModel>;
22
25
  export type MutationCtx<DataModel extends GenericDataModel = GenericDataModel> = GenericMutationCtx<DataModel>;
@@ -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;AAEvB,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;AACxE,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEtD,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAEvE,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI;KACrD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,gBAAgB,GACzC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,UAAU,GACnC,CAAC,GACD,KAAK,GACP,KAAK;CACV,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI;KACrD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,gBAAgB,GACzC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,UAAU,GACnC,KAAK,GACL,CAAC,GACH,KAAK;CACV,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI;KACrD,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,gBAAgB,GAClD,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GAC/B,KAAK;CACV,CAAC;AAEF,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI;KACrD,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,mBAAmB,IACjD,CAAC,SAAS,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAE7E,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,QAAQ,CAAC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IACxE,eAAe,CAAC,SAAS,CAAC,CAAC;AAC7B,MAAM,MAAM,WAAW,CAAC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IAC3E,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAChC,MAAM,MAAM,SAAS,CAAC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IACzE,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAE9B,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluent-convex",
3
- "version": "0.4.2",
3
+ "version": "0.5.2",
4
4
  "description": "A fluent API builder for Convex functions with middleware support, inspired by oRPC",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",