@confect/server 4.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @confect/server
2
2
 
3
+ ## 5.0.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8853cbf: Update `Scheduler` to accept Confect `Ref`s instead of Convex `SchedulableFunctionReference` values. `runAfter` and `runAt` now take a `Ref` to a mutation or action with typed args, aligning the Scheduler API with all other Confect function-calling APIs.
8
+
9
+ ### Patch Changes
10
+
11
+ - @confect/core@5.0.0
12
+
3
13
  ## 4.0.0
4
14
 
5
15
  ### Major Changes
@@ -1,14 +1,16 @@
1
- import { Context, Effect, Layer, ParseResult } from "effect";
1
+ import { Context, Layer } from "effect";
2
2
  import * as Ref$1 from "@confect/core/Ref";
3
3
  import { GenericActionCtx } from "convex/server";
4
+ import * as effect_ParseResult0 from "effect/ParseResult";
5
+ import * as effect_Effect0 from "effect/Effect";
4
6
 
5
7
  //#region src/ActionRunner.d.ts
6
8
  declare namespace ActionRunner_d_exports {
7
9
  export { ActionRunner, layer };
8
10
  }
9
- declare const ActionRunner: Context.Tag<(<Action extends Ref$1.AnyAction>(action: Action, args: Ref$1.Args<Action>) => Effect.Effect<Ref$1.Returns<Action>, ParseResult.ParseError>), <Action extends Ref$1.AnyAction>(action: Action, args: Ref$1.Args<Action>) => Effect.Effect<Ref$1.Returns<Action>, ParseResult.ParseError>>;
11
+ declare const ActionRunner: Context.Tag<(<Action extends Ref$1.AnyAction>(action: Action, args: Ref$1.Args<Action>) => effect_Effect0.Effect<Ref$1.Ref_d_exports.Returns<Action>, effect_ParseResult0.ParseError, never>), <Action extends Ref$1.AnyAction>(action: Action, args: Ref$1.Args<Action>) => effect_Effect0.Effect<Ref$1.Ref_d_exports.Returns<Action>, effect_ParseResult0.ParseError, never>>;
10
12
  type ActionRunner = typeof ActionRunner.Identifier;
11
- declare const layer: (runAction: GenericActionCtx<any>["runAction"]) => Layer.Layer<(<Action extends Ref$1.AnyAction>(action: Action, args: Ref$1.Args<Action>) => Effect.Effect<Ref$1.Returns<Action>, ParseResult.ParseError>), never, never>;
13
+ declare const layer: (runAction: GenericActionCtx<any>["runAction"]) => Layer.Layer<(<Action extends Ref$1.AnyAction>(action: Action, args: Ref$1.Args<Action>) => effect_Effect0.Effect<Ref$1.Ref_d_exports.Returns<Action>, effect_ParseResult0.ParseError, never>), never, never>;
12
14
  //#endregion
13
15
  export { ActionRunner, ActionRunner_d_exports, layer };
14
16
  //# sourceMappingURL=ActionRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionRunner.d.ts","names":[],"sources":["../src/ActionRunner.ts"],"mappings":";;;;;;;;cAoCa,YAAA,EAAY,OAAA,CAAA,GAAA,kBA7BP,KAAA,CAAI,SAAA,EAAS,MAAA,EACnB,MAAA,EAAM,IAAA,EACR,KAAA,CAAI,IAAA,CAAK,MAAA,MACd,MAAA,CAAO,MAAA,CAAO,KAAA,CAAI,OAAA,CAAQ,MAAA,GAAS,WAAA,CAAY,UAAA,oBAHlC,KAAA,CAAI,SAAA,EAAS,MAAA,EACnB,MAAA,EAAM,IAAA,EACR,KAAA,CAAI,IAAA,CAAK,MAAA,MACd,MAAA,CAAO,MAAA,CAAO,KAAA,CAAI,OAAA,CAAQ,MAAA,GAAS,WAAA,CAAY,UAAA;AAAA,KA6BxC,YAAA,UAAsB,YAAA,CAAa,UAAA;AAAA,cAElC,KAAA,GAAS,SAAA,EAAW,gBAAA,uBAAkC,KAAA,CAAA,KAAA,kBAlCjD,KAAA,CAAI,SAAA,EAAS,MAAA,EACnB,MAAA,EAAM,IAAA,EACR,KAAA,CAAI,IAAA,CAAK,MAAA,MACd,MAAA,CAAO,MAAA,CAAO,KAAA,CAAI,OAAA,CAAQ,MAAA,GAAS,WAAA,CAAY,UAAA"}
1
+ {"version":3,"file":"ActionRunner.d.ts","names":[],"sources":["../src/ActionRunner.ts"],"mappings":";;;;;;;;;;cAWa,YAAA,EAAY,OAAA,CAAA,GAAA,kBALP,KAAA,CAAI,SAAA,EAAS,MAAA,EAAU,MAAA,EAAM,IAAA,EAAQ,KAAA,CAAI,IAAA,CAAK,MAAA,MAAO,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,MAAA,GAAA,mBAAA,CAAA,UAAA,2BAArD,KAAA,CAAI,SAAA,EAAS,MAAA,EAAU,MAAA,EAAM,IAAA,EAAQ,KAAA,CAAI,IAAA,CAAK,MAAA,MAAO,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,MAAA,GAAA,mBAAA,CAAA,UAAA;AAAA,KAQ3D,YAAA,UAAsB,YAAA,CAAa,UAAA;AAAA,cAElC,KAAA,GAAS,SAAA,EAAW,gBAAA,uBAAkC,KAAA,CAAA,KAAA,kBAVjD,KAAA,CAAI,SAAA,EAAS,MAAA,EAAU,MAAA,EAAM,IAAA,EAAQ,KAAA,CAAI,IAAA,CAAK,MAAA,MAAO,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,MAAA,GAAA,mBAAA,CAAA,UAAA"}
@@ -1,5 +1,5 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
- import { Context, Effect, Layer, Match, Schema } from "effect";
2
+ import { Context, Layer } from "effect";
3
3
  import * as Ref$1 from "@confect/core/Ref";
4
4
  import "convex/server";
5
5
 
@@ -8,15 +8,7 @@ var ActionRunner_exports = /* @__PURE__ */ __exportAll({
8
8
  ActionRunner: () => ActionRunner,
9
9
  layer: () => layer
10
10
  });
11
- const make = (runAction) => (action, args) => Effect.gen(function* () {
12
- const functionSpec = Ref$1.getFunctionSpec(action);
13
- const functionName = Ref$1.getConvexFunctionName(action);
14
- return yield* Match.value(functionSpec.functionProvenance).pipe(Match.tag("Confect", (confectFunctionSpec) => Effect.gen(function* () {
15
- const encodedArgs = yield* Schema.encode(confectFunctionSpec.args)(args);
16
- const encodedReturns = yield* Effect.promise(() => runAction(functionName, encodedArgs));
17
- return yield* Schema.decode(confectFunctionSpec.returns)(encodedReturns);
18
- })), Match.tag("Convex", () => Effect.promise(() => runAction(functionName, args))), Match.exhaustive);
19
- });
11
+ const make = (runAction) => (action, args) => Ref$1.runWithCodec(action, args, (functionReference, encodedArgs) => runAction(functionReference, encodedArgs));
20
12
  const ActionRunner = Context.GenericTag("@confect/server/ActionRunner");
21
13
  const layer = (runAction) => Layer.succeed(ActionRunner, make(runAction));
22
14
 
@@ -1 +1 @@
1
- {"version":3,"file":"ActionRunner.js","names":["Ref"],"sources":["../src/ActionRunner.ts"],"sourcesContent":["import * as Ref from \"@confect/core/Ref\";\nimport { type GenericActionCtx } from \"convex/server\";\nimport type { ParseResult } from \"effect\";\nimport { Context, Effect, Layer, Match, Schema } from \"effect\";\n\nconst make =\n (runAction: GenericActionCtx<any>[\"runAction\"]) =>\n <Action extends Ref.AnyAction>(\n action: Action,\n args: Ref.Args<Action>,\n ): Effect.Effect<Ref.Returns<Action>, ParseResult.ParseError> =>\n Effect.gen(function* () {\n const functionSpec = Ref.getFunctionSpec(action);\n const functionName = Ref.getConvexFunctionName(action);\n\n return yield* Match.value(functionSpec.functionProvenance).pipe(\n Match.tag(\"Confect\", (confectFunctionSpec) =>\n Effect.gen(function* () {\n const encodedArgs = yield* Schema.encode(confectFunctionSpec.args)(\n args,\n );\n const encodedReturns = yield* Effect.promise(() =>\n runAction(functionName as any, encodedArgs),\n );\n return yield* Schema.decode(confectFunctionSpec.returns)(\n encodedReturns,\n );\n }),\n ),\n Match.tag(\"Convex\", () =>\n Effect.promise(() => runAction(functionName as any, args as any)),\n ),\n Match.exhaustive,\n );\n });\n\nexport const ActionRunner = Context.GenericTag<ReturnType<typeof make>>(\n \"@confect/server/ActionRunner\",\n);\nexport type ActionRunner = typeof ActionRunner.Identifier;\n\nexport const layer = (runAction: GenericActionCtx<any>[\"runAction\"]) =>\n Layer.succeed(ActionRunner, make(runAction));\n"],"mappings":";;;;;;;;;;AAKA,MAAM,QACH,eAEC,QACA,SAEA,OAAO,IAAI,aAAa;CACtB,MAAM,eAAeA,MAAI,gBAAgB,OAAO;CAChD,MAAM,eAAeA,MAAI,sBAAsB,OAAO;AAEtD,QAAO,OAAO,MAAM,MAAM,aAAa,mBAAmB,CAAC,KACzD,MAAM,IAAI,YAAY,wBACpB,OAAO,IAAI,aAAa;EACtB,MAAM,cAAc,OAAO,OAAO,OAAO,oBAAoB,KAAK,CAChE,KACD;EACD,MAAM,iBAAiB,OAAO,OAAO,cACnC,UAAU,cAAqB,YAAY,CAC5C;AACD,SAAO,OAAO,OAAO,OAAO,oBAAoB,QAAQ,CACtD,eACD;GACD,CACH,EACD,MAAM,IAAI,gBACR,OAAO,cAAc,UAAU,cAAqB,KAAY,CAAC,CAClE,EACD,MAAM,WACP;EACD;AAEN,MAAa,eAAe,QAAQ,WAClC,+BACD;AAGD,MAAa,SAAS,cACpB,MAAM,QAAQ,cAAc,KAAK,UAAU,CAAC"}
1
+ {"version":3,"file":"ActionRunner.js","names":["Ref"],"sources":["../src/ActionRunner.ts"],"sourcesContent":["import * as Ref from \"@confect/core/Ref\";\nimport { type GenericActionCtx } from \"convex/server\";\nimport { Context, Layer } from \"effect\";\n\nconst make =\n (runAction: GenericActionCtx<any>[\"runAction\"]) =>\n <Action extends Ref.AnyAction>(action: Action, args: Ref.Args<Action>) =>\n Ref.runWithCodec(action, args, (functionReference, encodedArgs) =>\n runAction(functionReference, encodedArgs),\n );\n\nexport const ActionRunner = Context.GenericTag<ReturnType<typeof make>>(\n \"@confect/server/ActionRunner\",\n);\nexport type ActionRunner = typeof ActionRunner.Identifier;\n\nexport const layer = (runAction: GenericActionCtx<any>[\"runAction\"]) =>\n Layer.succeed(ActionRunner, make(runAction));\n"],"mappings":";;;;;;;;;;AAIA,MAAM,QACH,eAC8B,QAAgB,SAC7CA,MAAI,aAAa,QAAQ,OAAO,mBAAmB,gBACjD,UAAU,mBAAmB,YAAY,CAC1C;AAEL,MAAa,eAAe,QAAQ,WAClC,+BACD;AAGD,MAAa,SAAS,cACpB,MAAM,QAAQ,cAAc,KAAK,UAAU,CAAC"}
@@ -1,28 +1,20 @@
1
- import { CronJob as CronJob$1 } from "./CronJob.js";
2
- import { Cron, Duration } from "effect";
3
- import { CronJob, Crons } from "convex/server";
1
+ import { CronJob } from "./CronJob.js";
2
+ import { Crons } from "convex/server";
4
3
 
5
4
  //#region src/CronJobs.d.ts
6
5
  declare namespace CronJobs_d_exports {
7
- export { CronJobs, TypeId, cronToConvexCronString, durationToConvexIntervalSchedule, isCronJobs, make };
6
+ export { CronJobs, TypeId, isCronJobs, make };
8
7
  }
9
8
  declare const TypeId = "@confect/server/CronJobs";
10
9
  type TypeId = typeof TypeId;
11
10
  interface CronJobs {
12
11
  readonly [TypeId]: TypeId;
13
- readonly cronJobs: Record<string, CronJob$1>;
12
+ readonly cronJobs: Record<string, CronJob>;
14
13
  readonly convexCronJobs: Crons;
15
- add(cron: CronJob$1): CronJobs;
14
+ add(cron: CronJob): CronJobs;
16
15
  }
17
16
  declare const isCronJobs: (u: unknown) => u is CronJobs;
18
17
  declare const make: () => CronJobs;
19
- /** @internal */
20
- declare const cronToConvexCronString: (cron: Cron.Cron) => string;
21
- /** @internal */
22
- declare const durationToConvexIntervalSchedule: (duration: Duration.Duration) => IntervalSchedule;
23
- type IntervalSchedule = Extract<CronJob["schedule"], {
24
- type: "interval";
25
- }>;
26
18
  //#endregion
27
- export { CronJobs, CronJobs_d_exports, TypeId, cronToConvexCronString, durationToConvexIntervalSchedule, isCronJobs, make };
19
+ export { CronJobs, CronJobs_d_exports, TypeId, isCronJobs, make };
28
20
  //# sourceMappingURL=CronJobs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CronJobs.d.ts","names":[],"sources":["../src/CronJobs.ts"],"mappings":";;;;;;;;cAmBa,MAAA;AAAA,KACD,MAAA,UAAgB,MAAA;AAAA,UAEX,QAAA;EAAA,UACL,MAAA,GAAS,MAAA;EAAA,SACV,QAAA,EAAU,MAAA,SAAe,SAAA;EAAA,SACzB,cAAA,EAAgB,KAAA;EAEzB,GAAA,CAAI,IAAA,EAAM,SAAA,GAAkB,QAAA;AAAA;AAAA,cAGjB,UAAA,GAAc,CAAA,cAAa,CAAA,IAAK,QAAA;AAAA,cA4DhC,IAAA,QAAW,QAAA;AAvExB;AAAA,cA0Ea,sBAAA,GAA0B,IAAA,EAAM,IAAA,CAAK,IAAA;;cAiCrC,gCAAA,GACX,QAAA,EAAU,QAAA,CAAS,QAAA,KAClB,gBAAA;AAAA,KA6BE,gBAAA,GAAmB,OAAA,CACtB,OAAA;EACE,IAAA;AAAA"}
1
+ {"version":3,"file":"CronJobs.d.ts","names":[],"sources":["../src/CronJobs.ts"],"mappings":";;;;;;;cAea,MAAA;AAAA,KACD,MAAA,UAAgB,MAAA;AAAA,UAEX,QAAA;EAAA,UACL,MAAA,GAAS,MAAA;EAAA,SACV,QAAA,EAAU,MAAA,SAAe,OAAA;EAAA,SACzB,cAAA,EAAgB,KAAA;EAEzB,GAAA,CAAI,IAAA,EAAM,OAAA,GAAkB,QAAA;AAAA;AAAA,cAGjB,UAAA,GAAc,CAAA,cAAa,CAAA,IAAK,QAAA;AAAA,cAkDhC,IAAA,QAAW,QAAA"}
package/dist/CronJobs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
- import { Array, Cron, Duration, Match, Order, Predicate, Record, Schema, pipe } from "effect";
2
+ import { Array, Cron, Duration, Match, Order, Predicate, Record, pipe } from "effect";
3
3
  import { cronJobs } from "convex/server";
4
4
  import { Ref as Ref$1 } from "@confect/core";
5
5
 
@@ -17,13 +17,12 @@ const Proto = {
17
17
  [TypeId]: TypeId,
18
18
  add(cronJob) {
19
19
  const newConvexCrons = Object.assign(cronJobs(), { crons: { ...this.convexCronJobs.crons } });
20
- const schedulableFunctionReference = Ref$1.getConvexFunctionName(cronJob.ref);
21
- const functionSpec = Ref$1.getFunctionSpec(cronJob.ref);
22
- const encodedArgs = Match.value(functionSpec.functionProvenance).pipe(Match.tag("Confect", (confect) => Schema.encodeSync(confect.args)(cronJob.args)), Match.tag("Convex", () => cronJob.args), Match.exhaustive);
20
+ const functionReference = Ref$1.getFunctionReference(cronJob.ref);
21
+ const encodedArgs = Ref$1.encodeArgsSync(cronJob.ref, cronJob.args);
23
22
  Match.value(cronJob.schedule).pipe(Match.when(Cron.isCron, (cron) => {
24
- newConvexCrons.cron(cronJob.identifier, cronToConvexCronString(cron), schedulableFunctionReference, encodedArgs);
23
+ newConvexCrons.cron(cronJob.identifier, cronToConvexCronString(cron), functionReference, encodedArgs);
25
24
  }), Match.when(Duration.isDuration, (duration) => {
26
- newConvexCrons.interval(cronJob.identifier, durationToConvexIntervalSchedule(duration), schedulableFunctionReference, encodedArgs);
25
+ newConvexCrons.interval(cronJob.identifier, durationToConvexIntervalSchedule(duration), functionReference, encodedArgs);
27
26
  }), Match.exhaustive);
28
27
  return makeProto(Record.set(this.cronJobs, cronJob.identifier, cronJob), newConvexCrons);
29
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CronJobs.js","names":["makeConvexCrons","Ref"],"sources":["../src/CronJobs.ts"],"sourcesContent":["import { Ref } from \"@confect/core\";\nimport type {\n CronJob as ConvexCronJob,\n SchedulableFunctionReference,\n} from \"convex/server\";\nimport { cronJobs as makeConvexCrons, type Crons } from \"convex/server\";\nimport {\n Array,\n Cron,\n Duration,\n Match,\n Order,\n pipe,\n Predicate,\n Record,\n Schema,\n} from \"effect\";\nimport type * as CronJob from \"./CronJob\";\n\nexport const TypeId = \"@confect/server/CronJobs\";\nexport type TypeId = typeof TypeId;\n\nexport interface CronJobs {\n readonly [TypeId]: TypeId;\n readonly cronJobs: Record<string, CronJob.CronJob>;\n readonly convexCronJobs: Crons;\n\n add(cron: CronJob.CronJob): CronJobs;\n}\n\nexport const isCronJobs = (u: unknown): u is CronJobs =>\n Predicate.hasProperty(u, TypeId);\n\nconst Proto = {\n [TypeId]: TypeId,\n\n add(this: CronJobs, cronJob: CronJob.CronJob) {\n const newConvexCrons = Object.assign(makeConvexCrons(), {\n crons: { ...this.convexCronJobs.crons },\n });\n\n const schedulableFunctionReference = Ref.getConvexFunctionName(\n cronJob.ref,\n ) as unknown as SchedulableFunctionReference;\n\n const functionSpec = Ref.getFunctionSpec(cronJob.ref);\n const encodedArgs = Match.value(functionSpec.functionProvenance).pipe(\n Match.tag(\"Confect\", (confect) =>\n Schema.encodeSync(confect.args)(cronJob.args),\n ),\n Match.tag(\"Convex\", () => cronJob.args),\n Match.exhaustive,\n );\n\n Match.value(cronJob.schedule).pipe(\n Match.when(Cron.isCron, (cron) => {\n newConvexCrons.cron(\n cronJob.identifier,\n cronToConvexCronString(cron),\n schedulableFunctionReference,\n encodedArgs,\n );\n }),\n Match.when(Duration.isDuration, (duration) => {\n newConvexCrons.interval(\n cronJob.identifier,\n durationToConvexIntervalSchedule(duration),\n schedulableFunctionReference,\n encodedArgs,\n );\n }),\n Match.exhaustive,\n );\n\n return makeProto(\n Record.set(this.cronJobs, cronJob.identifier, cronJob),\n newConvexCrons,\n );\n },\n};\n\nconst makeProto = (\n cronJobs: Record<string, CronJob.CronJob>,\n convexCronJobs: Crons,\n): CronJobs =>\n Object.assign(Object.create(Proto), {\n cronJobs,\n convexCronJobs,\n });\n\nexport const make = (): CronJobs => makeProto({}, makeConvexCrons());\n\n/** @internal */\nexport const cronToConvexCronString = (cron: Cron.Cron): string => {\n const hasNonDefaultSeconds = cron.seconds.size !== 1 || !cron.seconds.has(0);\n if (hasNonDefaultSeconds) {\n throw new Error(\n \"Convex cron expressions do not support a seconds field. \" +\n \"The seconds field must be the default {0}. \" +\n \"Sub-minute scheduling is supported only by interval schedules defined using a Duration.\",\n );\n }\n\n return Array.join(\n [\n setToField(cron.minutes),\n setToField(cron.hours),\n setToField(cron.days),\n setToField(cron.months),\n setToField(cron.weekdays),\n ],\n \" \",\n );\n};\n\nconst setToField = (set: ReadonlySet<number>): string => {\n if (set.size === 0) return \"*\";\n return pipe(\n set,\n Array.sort(Order.number),\n Array.map((n) => n.toString()),\n Array.join(\",\"),\n );\n};\n\n/** @internal */\nexport const durationToConvexIntervalSchedule = (\n duration: Duration.Duration,\n): IntervalSchedule => {\n const millis = Duration.toMillis(duration);\n if (millis <= 0) {\n throw new Error(\"Interval must be a positive duration.\");\n }\n\n const oneHourInMillis = Duration.hours(1).pipe(Duration.toMillis);\n const hours = millis / oneHourInMillis;\n if (Number.isInteger(hours)) {\n return { type: \"interval\", hours };\n }\n\n const oneMinuteInMillis = Duration.minutes(1).pipe(Duration.toMillis);\n const minutes = millis / oneMinuteInMillis;\n if (Number.isInteger(minutes)) {\n return { type: \"interval\", minutes };\n }\n\n const oneSecondInMillis = Duration.seconds(1).pipe(Duration.toMillis);\n const seconds = millis / oneSecondInMillis;\n if (Number.isInteger(seconds)) {\n return { type: \"interval\", seconds };\n }\n\n throw new Error(\n \"Interval must be a whole number of seconds, minutes, or hours.\",\n );\n};\n\ntype IntervalSchedule = Extract<\n ConvexCronJob[\"schedule\"],\n { type: \"interval\" }\n>;\n"],"mappings":";;;;;;;;;;;;;AAmBA,MAAa,SAAS;AAWtB,MAAa,cAAc,MACzB,UAAU,YAAY,GAAG,OAAO;AAElC,MAAM,QAAQ;EACX,SAAS;CAEV,IAAoB,SAA0B;EAC5C,MAAM,iBAAiB,OAAO,OAAOA,UAAiB,EAAE,EACtD,OAAO,EAAE,GAAG,KAAK,eAAe,OAAO,EACxC,CAAC;EAEF,MAAM,+BAA+BC,MAAI,sBACvC,QAAQ,IACT;EAED,MAAM,eAAeA,MAAI,gBAAgB,QAAQ,IAAI;EACrD,MAAM,cAAc,MAAM,MAAM,aAAa,mBAAmB,CAAC,KAC/D,MAAM,IAAI,YAAY,YACpB,OAAO,WAAW,QAAQ,KAAK,CAAC,QAAQ,KAAK,CAC9C,EACD,MAAM,IAAI,gBAAgB,QAAQ,KAAK,EACvC,MAAM,WACP;AAED,QAAM,MAAM,QAAQ,SAAS,CAAC,KAC5B,MAAM,KAAK,KAAK,SAAS,SAAS;AAChC,kBAAe,KACb,QAAQ,YACR,uBAAuB,KAAK,EAC5B,8BACA,YACD;IACD,EACF,MAAM,KAAK,SAAS,aAAa,aAAa;AAC5C,kBAAe,SACb,QAAQ,YACR,iCAAiC,SAAS,EAC1C,8BACA,YACD;IACD,EACF,MAAM,WACP;AAED,SAAO,UACL,OAAO,IAAI,KAAK,UAAU,QAAQ,YAAY,QAAQ,EACtD,eACD;;CAEJ;AAED,MAAM,aACJ,UACA,mBAEA,OAAO,OAAO,OAAO,OAAO,MAAM,EAAE;CAClC;CACA;CACD,CAAC;AAEJ,MAAa,aAAuB,UAAU,EAAE,EAAED,UAAiB,CAAC;;AAGpE,MAAa,0BAA0B,SAA4B;AAEjE,KAD6B,KAAK,QAAQ,SAAS,KAAK,CAAC,KAAK,QAAQ,IAAI,EAAE,CAE1E,OAAM,IAAI,MACR,6LAGD;AAGH,QAAO,MAAM,KACX;EACE,WAAW,KAAK,QAAQ;EACxB,WAAW,KAAK,MAAM;EACtB,WAAW,KAAK,KAAK;EACrB,WAAW,KAAK,OAAO;EACvB,WAAW,KAAK,SAAS;EAC1B,EACD,IACD;;AAGH,MAAM,cAAc,QAAqC;AACvD,KAAI,IAAI,SAAS,EAAG,QAAO;AAC3B,QAAO,KACL,KACA,MAAM,KAAK,MAAM,OAAO,EACxB,MAAM,KAAK,MAAM,EAAE,UAAU,CAAC,EAC9B,MAAM,KAAK,IAAI,CAChB;;;AAIH,MAAa,oCACX,aACqB;CACrB,MAAM,SAAS,SAAS,SAAS,SAAS;AAC1C,KAAI,UAAU,EACZ,OAAM,IAAI,MAAM,wCAAwC;CAI1D,MAAM,QAAQ,SADU,SAAS,MAAM,EAAE,CAAC,KAAK,SAAS,SAAS;AAEjE,KAAI,OAAO,UAAU,MAAM,CACzB,QAAO;EAAE,MAAM;EAAY;EAAO;CAIpC,MAAM,UAAU,SADU,SAAS,QAAQ,EAAE,CAAC,KAAK,SAAS,SAAS;AAErE,KAAI,OAAO,UAAU,QAAQ,CAC3B,QAAO;EAAE,MAAM;EAAY;EAAS;CAItC,MAAM,UAAU,SADU,SAAS,QAAQ,EAAE,CAAC,KAAK,SAAS,SAAS;AAErE,KAAI,OAAO,UAAU,QAAQ,CAC3B,QAAO;EAAE,MAAM;EAAY;EAAS;AAGtC,OAAM,IAAI,MACR,iEACD"}
1
+ {"version":3,"file":"CronJobs.js","names":["makeConvexCrons","Ref"],"sources":["../src/CronJobs.ts"],"sourcesContent":["import { Ref } from \"@confect/core\";\nimport type { CronJob as ConvexCronJob } from \"convex/server\";\nimport { cronJobs as makeConvexCrons, type Crons } from \"convex/server\";\nimport {\n Array,\n Cron,\n Duration,\n Match,\n Order,\n pipe,\n Predicate,\n Record,\n} from \"effect\";\nimport type * as CronJob from \"./CronJob\";\n\nexport const TypeId = \"@confect/server/CronJobs\";\nexport type TypeId = typeof TypeId;\n\nexport interface CronJobs {\n readonly [TypeId]: TypeId;\n readonly cronJobs: Record<string, CronJob.CronJob>;\n readonly convexCronJobs: Crons;\n\n add(cron: CronJob.CronJob): CronJobs;\n}\n\nexport const isCronJobs = (u: unknown): u is CronJobs =>\n Predicate.hasProperty(u, TypeId);\n\nconst Proto = {\n [TypeId]: TypeId,\n\n add(this: CronJobs, cronJob: CronJob.CronJob) {\n const newConvexCrons = Object.assign(makeConvexCrons(), {\n crons: { ...this.convexCronJobs.crons },\n });\n\n const functionReference = Ref.getFunctionReference(cronJob.ref);\n const encodedArgs = Ref.encodeArgsSync(cronJob.ref, cronJob.args);\n\n Match.value(cronJob.schedule).pipe(\n Match.when(Cron.isCron, (cron) => {\n newConvexCrons.cron(\n cronJob.identifier,\n cronToConvexCronString(cron),\n functionReference,\n encodedArgs,\n );\n }),\n Match.when(Duration.isDuration, (duration) => {\n newConvexCrons.interval(\n cronJob.identifier,\n durationToConvexIntervalSchedule(duration),\n functionReference,\n encodedArgs,\n );\n }),\n Match.exhaustive,\n );\n\n return makeProto(\n Record.set(this.cronJobs, cronJob.identifier, cronJob),\n newConvexCrons,\n );\n },\n};\n\nconst makeProto = (\n cronJobs: Record<string, CronJob.CronJob>,\n convexCronJobs: Crons,\n): CronJobs =>\n Object.assign(Object.create(Proto), {\n cronJobs,\n convexCronJobs,\n });\n\nexport const make = (): CronJobs => makeProto({}, makeConvexCrons());\n\n/** @internal */\nexport const cronToConvexCronString = (cron: Cron.Cron): string => {\n const hasNonDefaultSeconds = cron.seconds.size !== 1 || !cron.seconds.has(0);\n if (hasNonDefaultSeconds) {\n throw new Error(\n \"Convex cron expressions do not support a seconds field. \" +\n \"The seconds field must be the default {0}. \" +\n \"Sub-minute scheduling is supported only by interval schedules defined using a Duration.\",\n );\n }\n\n return Array.join(\n [\n setToField(cron.minutes),\n setToField(cron.hours),\n setToField(cron.days),\n setToField(cron.months),\n setToField(cron.weekdays),\n ],\n \" \",\n );\n};\n\nconst setToField = (set: ReadonlySet<number>): string => {\n if (set.size === 0) return \"*\";\n return pipe(\n set,\n Array.sort(Order.number),\n Array.map((n) => n.toString()),\n Array.join(\",\"),\n );\n};\n\n/** @internal */\nexport const durationToConvexIntervalSchedule = (\n duration: Duration.Duration,\n): IntervalSchedule => {\n const millis = Duration.toMillis(duration);\n if (millis <= 0) {\n throw new Error(\"Interval must be a positive duration.\");\n }\n\n const oneHourInMillis = Duration.hours(1).pipe(Duration.toMillis);\n const hours = millis / oneHourInMillis;\n if (Number.isInteger(hours)) {\n return { type: \"interval\", hours };\n }\n\n const oneMinuteInMillis = Duration.minutes(1).pipe(Duration.toMillis);\n const minutes = millis / oneMinuteInMillis;\n if (Number.isInteger(minutes)) {\n return { type: \"interval\", minutes };\n }\n\n const oneSecondInMillis = Duration.seconds(1).pipe(Duration.toMillis);\n const seconds = millis / oneSecondInMillis;\n if (Number.isInteger(seconds)) {\n return { type: \"interval\", seconds };\n }\n\n throw new Error(\n \"Interval must be a whole number of seconds, minutes, or hours.\",\n );\n};\n\ntype IntervalSchedule = Extract<\n ConvexCronJob[\"schedule\"],\n { type: \"interval\" }\n>;\n"],"mappings":";;;;;;;;;;;;;AAeA,MAAa,SAAS;AAWtB,MAAa,cAAc,MACzB,UAAU,YAAY,GAAG,OAAO;AAElC,MAAM,QAAQ;EACX,SAAS;CAEV,IAAoB,SAA0B;EAC5C,MAAM,iBAAiB,OAAO,OAAOA,UAAiB,EAAE,EACtD,OAAO,EAAE,GAAG,KAAK,eAAe,OAAO,EACxC,CAAC;EAEF,MAAM,oBAAoBC,MAAI,qBAAqB,QAAQ,IAAI;EAC/D,MAAM,cAAcA,MAAI,eAAe,QAAQ,KAAK,QAAQ,KAAK;AAEjE,QAAM,MAAM,QAAQ,SAAS,CAAC,KAC5B,MAAM,KAAK,KAAK,SAAS,SAAS;AAChC,kBAAe,KACb,QAAQ,YACR,uBAAuB,KAAK,EAC5B,mBACA,YACD;IACD,EACF,MAAM,KAAK,SAAS,aAAa,aAAa;AAC5C,kBAAe,SACb,QAAQ,YACR,iCAAiC,SAAS,EAC1C,mBACA,YACD;IACD,EACF,MAAM,WACP;AAED,SAAO,UACL,OAAO,IAAI,KAAK,UAAU,QAAQ,YAAY,QAAQ,EACtD,eACD;;CAEJ;AAED,MAAM,aACJ,UACA,mBAEA,OAAO,OAAO,OAAO,OAAO,MAAM,EAAE;CAClC;CACA;CACD,CAAC;AAEJ,MAAa,aAAuB,UAAU,EAAE,EAAED,UAAiB,CAAC;;AAGpE,MAAa,0BAA0B,SAA4B;AAEjE,KAD6B,KAAK,QAAQ,SAAS,KAAK,CAAC,KAAK,QAAQ,IAAI,EAAE,CAE1E,OAAM,IAAI,MACR,6LAGD;AAGH,QAAO,MAAM,KACX;EACE,WAAW,KAAK,QAAQ;EACxB,WAAW,KAAK,MAAM;EACtB,WAAW,KAAK,KAAK;EACrB,WAAW,KAAK,OAAO;EACvB,WAAW,KAAK,SAAS;EAC1B,EACD,IACD;;AAGH,MAAM,cAAc,QAAqC;AACvD,KAAI,IAAI,SAAS,EAAG,QAAO;AAC3B,QAAO,KACL,KACA,MAAM,KAAK,MAAM,OAAO,EACxB,MAAM,KAAK,MAAM,EAAE,UAAU,CAAC,EAC9B,MAAM,KAAK,IAAI,CAChB;;;AAIH,MAAa,oCACX,aACqB;CACrB,MAAM,SAAS,SAAS,SAAS,SAAS;AAC1C,KAAI,UAAU,EACZ,OAAM,IAAI,MAAM,wCAAwC;CAI1D,MAAM,QAAQ,SADU,SAAS,MAAM,EAAE,CAAC,KAAK,SAAS,SAAS;AAEjE,KAAI,OAAO,UAAU,MAAM,CACzB,QAAO;EAAE,MAAM;EAAY;EAAO;CAIpC,MAAM,UAAU,SADU,SAAS,QAAQ,EAAE,CAAC,KAAK,SAAS,SAAS;AAErE,KAAI,OAAO,UAAU,QAAQ,CAC3B,QAAO;EAAE,MAAM;EAAY;EAAS;CAItC,MAAM,UAAU,SADU,SAAS,QAAQ,EAAE,CAAC,KAAK,SAAS,SAAS;AAErE,KAAI,OAAO,UAAU,QAAQ,CAC3B,QAAO;EAAE,MAAM;EAAY;EAAS;AAGtC,OAAM,IAAI,MACR,iEACD"}
@@ -9,8 +9,8 @@ import { Context, Layer } from "effect";
9
9
  import * as convex_server0 from "convex/server";
10
10
  import { GenericDatabaseReader } from "convex/server";
11
11
  import * as convex_values0 from "convex/values";
12
- import * as _confect_core_Types0 from "@confect/core/Types";
13
12
  import * as effect_Effect0 from "effect/Effect";
13
+ import * as _confect_core_Types0 from "@confect/core/Types";
14
14
 
15
15
  //#region src/DatabaseReader.d.ts
16
16
  declare namespace DatabaseReader_d_exports {
@@ -19,7 +19,7 @@ declare namespace DatabaseReader_d_exports {
19
19
  declare const make: <DatabaseSchema_ extends AnyWithProps>(databaseSchema: DatabaseSchema_, convexDatabaseReader: GenericDatabaseReader<ToConvex<FromSchema<DatabaseSchema_>>>) => {
20
20
  table: <const TableName extends Name<IncludeSystemTables<Tables<DatabaseSchema_>>>>(tableName: TableName) => {
21
21
  readonly get: {
22
- (id: convex_values0.GenericId<TableName>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], DocumentDecodeError | GetByIdFailure, never>;
22
+ (id: convex_values0.GenericId<TableName>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], GetByIdFailure | DocumentDecodeError, never>;
23
23
  <IndexName extends keyof TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["indexes"]>(indexName: IndexName, ...indexFieldValues: _confect_core_Types0.IndexFieldTypesForEq<ToConvex<DataModel<IncludeSystemTables<Tables<DatabaseSchema_>>>>, TableName, TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["indexes"][IndexName]>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], DocumentDecodeError | GetByIndexFailure, never>;
24
24
  };
25
25
  readonly index: {
@@ -32,7 +32,7 @@ declare const make: <DatabaseSchema_ extends AnyWithProps>(databaseSchema: Datab
32
32
  declare const DatabaseReader: <DatabaseSchema_ extends AnyWithProps>() => Context.Tag<{
33
33
  table: <const TableName extends Name<IncludeSystemTables<Tables<DatabaseSchema_>>>>(tableName: TableName) => {
34
34
  readonly get: {
35
- (id: convex_values0.GenericId<TableName>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], DocumentDecodeError | GetByIdFailure, never>;
35
+ (id: convex_values0.GenericId<TableName>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], GetByIdFailure | DocumentDecodeError, never>;
36
36
  <IndexName extends keyof TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["indexes"]>(indexName: IndexName, ...indexFieldValues: _confect_core_Types0.IndexFieldTypesForEq<ToConvex<DataModel<IncludeSystemTables<Tables<DatabaseSchema_>>>>, TableName, TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["indexes"][IndexName]>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], DocumentDecodeError | GetByIndexFailure, never>;
37
37
  };
38
38
  readonly index: {
@@ -44,7 +44,7 @@ declare const DatabaseReader: <DatabaseSchema_ extends AnyWithProps>() => Contex
44
44
  }, {
45
45
  table: <const TableName extends Name<IncludeSystemTables<Tables<DatabaseSchema_>>>>(tableName: TableName) => {
46
46
  readonly get: {
47
- (id: convex_values0.GenericId<TableName>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], DocumentDecodeError | GetByIdFailure, never>;
47
+ (id: convex_values0.GenericId<TableName>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], GetByIdFailure | DocumentDecodeError, never>;
48
48
  <IndexName extends keyof TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["indexes"]>(indexName: IndexName, ...indexFieldValues: _confect_core_Types0.IndexFieldTypesForEq<ToConvex<DataModel<IncludeSystemTables<Tables<DatabaseSchema_>>>>, TableName, TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["indexes"][IndexName]>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], DocumentDecodeError | GetByIndexFailure, never>;
49
49
  };
50
50
  readonly index: {
@@ -58,7 +58,7 @@ type DatabaseReader<DatabaseSchema_ extends AnyWithProps> = ReturnType<typeof Da
58
58
  declare const layer: <DatabaseSchema_ extends AnyWithProps>(databaseSchema: DatabaseSchema_, convexDatabaseReader: GenericDatabaseReader<ToConvex<FromSchema<DatabaseSchema_>>>) => Layer.Layer<{
59
59
  table: <const TableName extends Name<IncludeSystemTables<Tables<DatabaseSchema_>>>>(tableName: TableName) => {
60
60
  readonly get: {
61
- (id: convex_values0.GenericId<TableName>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], DocumentDecodeError | GetByIdFailure, never>;
61
+ (id: convex_values0.GenericId<TableName>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], GetByIdFailure | DocumentDecodeError, never>;
62
62
  <IndexName extends keyof TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["indexes"]>(indexName: IndexName, ...indexFieldValues: _confect_core_Types0.IndexFieldTypesForEq<ToConvex<DataModel<IncludeSystemTables<Tables<DatabaseSchema_>>>>, TableName, TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["indexes"][IndexName]>): effect_Effect0.Effect<TableInfo<WithName<IncludeSystemTables<Tables<DatabaseSchema_>>, TableName>>["document"], DocumentDecodeError | GetByIndexFailure, never>;
63
63
  };
64
64
  readonly index: {
@@ -13,7 +13,7 @@ declare namespace DatabaseWriter_d_exports {
13
13
  declare const make: <DatabaseSchema_ extends AnyWithProps>(databaseSchema: DatabaseSchema_, convexDatabaseWriter: GenericDatabaseWriter<ToConvex<FromSchema<DatabaseSchema_>>>) => {
14
14
  table: <const TableName extends TableNames<FromSchema<DatabaseSchema_>>>(tableName: TableName) => {
15
15
  insert: (document: WithoutSystemFields$1<DocumentByName<FromSchema<DatabaseSchema_>, TableName>>) => Effect.Effect<GenericId<TableName>, DocumentEncodeError, never>;
16
- patch: (id: GenericId<TableName>, patchedValues: Partial<WithoutSystemFields<DocumentByName<FromSchema<DatabaseSchema_>, TableName>>>) => Effect.Effect<void, DocumentEncodeError | GetByIdFailure | DocumentDecodeError, never>;
16
+ patch: (id: GenericId<TableName>, patchedValues: Partial<WithoutSystemFields<DocumentByName<FromSchema<DatabaseSchema_>, TableName>>>) => Effect.Effect<void, GetByIdFailure | DocumentDecodeError | DocumentEncodeError, never>;
17
17
  replace: (id: GenericId<TableName>, value: WithoutSystemFields<DocumentByName<FromSchema<DatabaseSchema_>, TableName>>) => Effect.Effect<void, DocumentEncodeError, never>;
18
18
  delete: (id: GenericId<TableName>) => Effect.Effect<void, never, never>;
19
19
  };
@@ -21,14 +21,14 @@ declare const make: <DatabaseSchema_ extends AnyWithProps>(databaseSchema: Datab
21
21
  declare const DatabaseWriter: <DatabaseSchema_ extends AnyWithProps>() => Context.Tag<{
22
22
  table: <const TableName extends TableNames<FromSchema<DatabaseSchema_>>>(tableName: TableName) => {
23
23
  insert: (document: WithoutSystemFields$1<DocumentByName<FromSchema<DatabaseSchema_>, TableName>>) => Effect.Effect<GenericId<TableName>, DocumentEncodeError, never>;
24
- patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, DocumentEncodeError | GetByIdFailure | DocumentDecodeError, never>;
24
+ patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, GetByIdFailure | DocumentDecodeError | DocumentEncodeError, never>;
25
25
  replace: (id: GenericId<TableName>, value: Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>) => Effect.Effect<void, DocumentEncodeError, never>;
26
26
  delete: (id: GenericId<TableName>) => Effect.Effect<void, never, never>;
27
27
  };
28
28
  }, {
29
29
  table: <const TableName extends TableNames<FromSchema<DatabaseSchema_>>>(tableName: TableName) => {
30
30
  insert: (document: WithoutSystemFields$1<DocumentByName<FromSchema<DatabaseSchema_>, TableName>>) => Effect.Effect<GenericId<TableName>, DocumentEncodeError, never>;
31
- patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, DocumentEncodeError | GetByIdFailure | DocumentDecodeError, never>;
31
+ patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, GetByIdFailure | DocumentDecodeError | DocumentEncodeError, never>;
32
32
  replace: (id: GenericId<TableName>, value: Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>) => Effect.Effect<void, DocumentEncodeError, never>;
33
33
  delete: (id: GenericId<TableName>) => Effect.Effect<void, never, never>;
34
34
  };
@@ -37,7 +37,7 @@ type DatabaseWriter<DatabaseSchema_ extends AnyWithProps> = ReturnType<typeof Da
37
37
  declare const layer: <DatabaseSchema_ extends AnyWithProps>(databaseSchema: DatabaseSchema_, convexDatabaseWriter: GenericDatabaseWriter<ToConvex<FromSchema<DatabaseSchema_>>>) => Layer.Layer<{
38
38
  table: <const TableName extends TableNames<FromSchema<DatabaseSchema_>>>(tableName: TableName) => {
39
39
  insert: (document: WithoutSystemFields$1<DocumentByName<FromSchema<DatabaseSchema_>, TableName>>) => Effect.Effect<GenericId<TableName>, DocumentEncodeError, never>;
40
- patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, DocumentEncodeError | GetByIdFailure | DocumentDecodeError, never>;
40
+ patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, GetByIdFailure | DocumentDecodeError | DocumentEncodeError, never>;
41
41
  replace: (id: GenericId<TableName>, value: Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>) => Effect.Effect<void, DocumentEncodeError, never>;
42
42
  delete: (id: GenericId<TableName>) => Effect.Effect<void, never, never>;
43
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseWriter.d.ts","names":[],"sources":["../src/DatabaseWriter.ts"],"mappings":";;;;;;;;;;;;cAiBa,IAAA,2BAAgC,YAAA,EAC3C,cAAA,EAAgB,eAAA,EAChB,oBAAA,EAAsB,qBAAA,CACpB,QAAA,CAAmB,UAAA,CAAqB,eAAA;kCAMH,UAAA,CAAoB,UAAA,CAAA,eAAA,IAAY,SAAA,EAC1D,SAAA;uBAQC,qBAAA,CACR,cAAA,CAAe,UAAA,CAAA,eAAA,GAAa,SAAA,OAC7B,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,SAAA,GAAA,mBAAA;gBAsBG,SAAA,CAAU,SAAA,GAAU,aAAA,EACT,OAAA,CACb,mBAAA,CAAoB,cAAA,CAAe,UAAA,CAAA,eAAA,GAAa,SAAA,QACjD,MAAA,CAAA,MAAA,OAAA,mBAAA,GAAA,cAAA,GAAA,mBAAA;kBAiCG,SAAA,CAAU,SAAA,GAAU,KAAA,EACjB,mBAAA,CAAoB,cAAA,CAAe,UAAA,CAAA,eAAA,GAAa,SAAA,OAAW,MAAA,CAAA,MAAA,OAAA,mBAAA;iBAsB/C,SAAA,CAAU,SAAA,MAAU,MAAA,CAAA,MAAA;EAAA;AAAA;AAAA,cAgBhC,cAAA,2BACa,YAAA,OAA2B,OAAA,CAAA,GAAA;kCA7GrB,UAAA,CAAA,UAAA,CAAA,eAAA,IAAA,SAAA,EAAA,SAAA;;;;;;;kCAAA,UAAA,CAAA,UAAA,CAAA,eAAA,IAAA,SAAA,EAAA,SAAA;;;;;;;KAmHpB,cAAA,yBACc,YAAA,IACtB,UAAA,QAAkB,cAAA,CAAe,eAAA;AAAA,cAExB,KAAA,2BAAiC,YAAA,EAC5C,cAAA,EAAgB,eAAA,EAChB,oBAAA,EAAsB,qBAAA,CACpB,QAAA,CAAmB,UAAA,CAAqB,eAAA,QACzC,KAAA,CAAA,KAAA;kCA3H6B,UAAA,CAAA,UAAA,CAAA,eAAA,IAAA,SAAA,EAAA,SAAA"}
1
+ {"version":3,"file":"DatabaseWriter.d.ts","names":[],"sources":["../src/DatabaseWriter.ts"],"mappings":";;;;;;;;;;;;cAiBa,IAAA,2BAAgC,YAAA,EAC3C,cAAA,EAAgB,eAAA,EAChB,oBAAA,EAAsB,qBAAA,CACpB,QAAA,CAAmB,UAAA,CAAqB,eAAA;kCAMH,UAAA,CAAoB,UAAA,CAAA,eAAA,IAAY,SAAA,EAC1D,SAAA;uBAQC,qBAAA,CACR,cAAA,CAAe,UAAA,CAAA,eAAA,GAAa,SAAA,OAC7B,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,SAAA,GAAA,mBAAA;gBAsBG,SAAA,CAAU,SAAA,GAAU,aAAA,EACT,OAAA,CACb,mBAAA,CAAoB,cAAA,CAAe,UAAA,CAAA,eAAA,GAAa,SAAA,QACjD,MAAA,CAAA,MAAA,OAAA,cAAA,GAAA,mBAAA,GAAA,mBAAA;kBAiCG,SAAA,CAAU,SAAA,GAAU,KAAA,EACjB,mBAAA,CAAoB,cAAA,CAAe,UAAA,CAAA,eAAA,GAAa,SAAA,OAAW,MAAA,CAAA,MAAA,OAAA,mBAAA;iBAsB/C,SAAA,CAAU,SAAA,MAAU,MAAA,CAAA,MAAA;EAAA;AAAA;AAAA,cAgBhC,cAAA,2BACa,YAAA,OAA2B,OAAA,CAAA,GAAA;kCA7GrB,UAAA,CAAA,UAAA,CAAA,eAAA,IAAA,SAAA,EAAA,SAAA;;;;;;;kCAAA,UAAA,CAAA,UAAA,CAAA,eAAA,IAAA,SAAA,EAAA,SAAA;;;;;;;KAmHpB,cAAA,yBACc,YAAA,IACtB,UAAA,QAAkB,cAAA,CAAe,eAAA;AAAA,cAExB,KAAA,2BAAiC,YAAA,EAC5C,cAAA,EAAgB,eAAA,EAChB,oBAAA,EAAsB,qBAAA,CACpB,QAAA,CAAmB,UAAA,CAAqB,eAAA,QACzC,KAAA,CAAA,KAAA;kCA3H6B,UAAA,CAAA,UAAA,CAAA,eAAA,IAAA,SAAA,EAAA,SAAA"}
@@ -1,14 +1,16 @@
1
- import { Context, Effect, Layer, ParseResult, Schema } from "effect";
1
+ import { Context, Layer, Schema } from "effect";
2
2
  import * as Ref$1 from "@confect/core/Ref";
3
3
  import { GenericMutationCtx } from "convex/server";
4
+ import * as effect_ParseResult0 from "effect/ParseResult";
5
+ import * as effect_Effect0 from "effect/Effect";
4
6
 
5
7
  //#region src/MutationRunner.d.ts
6
8
  declare namespace MutationRunner_d_exports {
7
9
  export { MutationRollback, MutationRunner, layer };
8
10
  }
9
- declare const MutationRunner: Context.Tag<(<Mutation extends Ref$1.AnyMutation>(mutation: Mutation, args: Ref$1.Args<Mutation>) => Effect.Effect<Ref$1.Returns<Mutation>, ParseResult.ParseError>), <Mutation extends Ref$1.AnyMutation>(mutation: Mutation, args: Ref$1.Args<Mutation>) => Effect.Effect<Ref$1.Returns<Mutation>, ParseResult.ParseError>>;
11
+ declare const MutationRunner: Context.Tag<(<Mutation extends Ref$1.AnyMutation>(mutation: Mutation, args: Ref$1.Args<Mutation>) => effect_Effect0.Effect<Ref$1.Ref_d_exports.Returns<Mutation>, effect_ParseResult0.ParseError, never>), <Mutation extends Ref$1.AnyMutation>(mutation: Mutation, args: Ref$1.Args<Mutation>) => effect_Effect0.Effect<Ref$1.Ref_d_exports.Returns<Mutation>, effect_ParseResult0.ParseError, never>>;
10
12
  type MutationRunner = typeof MutationRunner.Identifier;
11
- declare const layer: (runMutation: GenericMutationCtx<any>["runMutation"]) => Layer.Layer<(<Mutation extends Ref$1.AnyMutation>(mutation: Mutation, args: Ref$1.Args<Mutation>) => Effect.Effect<Ref$1.Returns<Mutation>, ParseResult.ParseError>), never, never>;
13
+ declare const layer: (runMutation: GenericMutationCtx<any>["runMutation"]) => Layer.Layer<(<Mutation extends Ref$1.AnyMutation>(mutation: Mutation, args: Ref$1.Args<Mutation>) => effect_Effect0.Effect<Ref$1.Ref_d_exports.Returns<Mutation>, effect_ParseResult0.ParseError, never>), never, never>;
12
14
  declare const MutationRollback_base: Schema.TaggedErrorClass<MutationRollback, "MutationRollback", {
13
15
  readonly _tag: Schema.tag<"MutationRollback">;
14
16
  } & {
@@ -1 +1 @@
1
- {"version":3,"file":"MutationRunner.d.ts","names":[],"sources":["../src/MutationRunner.ts"],"mappings":";;;;;;;;cAoCa,cAAA,EAAc,OAAA,CAAA,GAAA,oBA7BP,KAAA,CAAI,WAAA,EAAW,QAAA,EACrB,QAAA,EAAQ,IAAA,EACZ,KAAA,CAAI,IAAA,CAAK,QAAA,MACd,MAAA,CAAO,MAAA,CAAO,KAAA,CAAI,OAAA,CAAQ,QAAA,GAAW,WAAA,CAAY,UAAA,sBAHlC,KAAA,CAAI,WAAA,EAAW,QAAA,EACrB,QAAA,EAAQ,IAAA,EACZ,KAAA,CAAI,IAAA,CAAK,QAAA,MACd,MAAA,CAAO,MAAA,CAAO,KAAA,CAAI,OAAA,CAAQ,QAAA,GAAW,WAAA,CAAY,UAAA;AAAA,KA6B1C,cAAA,UAAwB,cAAA,CAAe,UAAA;AAAA,cAEtC,KAAA,GAAS,WAAA,EAAa,kBAAA,yBAAsC,KAAA,CAAA,KAAA,oBAlCrD,KAAA,CAAI,WAAA,EAAW,QAAA,EACrB,QAAA,EAAQ,IAAA,EACZ,KAAA,CAAI,IAAA,CAAK,QAAA,MACd,MAAA,CAAO,MAAA,CAAO,KAAA,CAAI,OAAA,CAAQ,QAAA,GAAW,WAAA,CAAY,UAAA;AAAA,cAgCH,qBAAA;;;;;;cAEtC,gBAAA,SAAyB,qBAAA;EAAA,IAQvB,OAAA,CAAA;AAAA"}
1
+ {"version":3,"file":"MutationRunner.d.ts","names":[],"sources":["../src/MutationRunner.ts"],"mappings":";;;;;;;;;;cAca,cAAA,EAAc,OAAA,CAAA,GAAA,oBARP,KAAA,CAAI,WAAA,EAAW,QAAA,EACrB,QAAA,EAAQ,IAAA,EACZ,KAAA,CAAI,IAAA,CAAK,QAAA,MAAS,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,QAAA,GAAA,mBAAA,CAAA,UAAA,6BAFR,KAAA,CAAI,WAAA,EAAW,QAAA,EACrB,QAAA,EAAQ,IAAA,EACZ,KAAA,CAAI,IAAA,CAAK,QAAA,MAAS,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,QAAA,GAAA,mBAAA,CAAA,UAAA;AAAA,KAShB,cAAA,UAAwB,cAAA,CAAe,UAAA;AAAA,cAEtC,KAAA,GAAS,WAAA,EAAa,kBAAA,yBAAsC,KAAA,CAAA,KAAA,oBAbrD,KAAA,CAAI,WAAA,EAAW,QAAA,EACrB,QAAA,EAAQ,IAAA,EACZ,KAAA,CAAI,IAAA,CAAK,QAAA,MAAS,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,QAAA,GAAA,mBAAA,CAAA,UAAA;AAAA,cAYuB,qBAAA;;;;;;cAEtC,gBAAA,SAAyB,qBAAA;EAAA,IAQvB,OAAA,CAAA;AAAA"}
@@ -1,5 +1,5 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
- import { Context, Effect, Layer, Match, Schema } from "effect";
2
+ import { Context, Layer, Schema } from "effect";
3
3
  import * as Ref$1 from "@confect/core/Ref";
4
4
  import "convex/server";
5
5
 
@@ -9,15 +9,7 @@ var MutationRunner_exports = /* @__PURE__ */ __exportAll({
9
9
  MutationRunner: () => MutationRunner,
10
10
  layer: () => layer
11
11
  });
12
- const make = (runMutation) => (mutation, args) => Effect.gen(function* () {
13
- const functionSpec = Ref$1.getFunctionSpec(mutation);
14
- const functionName = Ref$1.getConvexFunctionName(mutation);
15
- return yield* Match.value(functionSpec.functionProvenance).pipe(Match.tag("Confect", (confectFunctionSpec) => Effect.gen(function* () {
16
- const encodedArgs = yield* Schema.encode(confectFunctionSpec.args)(args);
17
- const encodedReturns = yield* Effect.promise(() => runMutation(functionName, encodedArgs));
18
- return yield* Schema.decode(confectFunctionSpec.returns)(encodedReturns);
19
- })), Match.tag("Convex", () => Effect.promise(() => runMutation(functionName, args))), Match.exhaustive);
20
- });
12
+ const make = (runMutation) => (mutation, args) => Ref$1.runWithCodec(mutation, args, (functionReference, encodedArgs) => runMutation(functionReference, encodedArgs));
21
13
  const MutationRunner = Context.GenericTag("@confect/server/MutationRunner");
22
14
  const layer = (runMutation) => Layer.succeed(MutationRunner, make(runMutation));
23
15
  var MutationRollback = class extends Schema.TaggedError()("MutationRollback", {
@@ -1 +1 @@
1
- {"version":3,"file":"MutationRunner.js","names":["Ref"],"sources":["../src/MutationRunner.ts"],"sourcesContent":["import * as Ref from \"@confect/core/Ref\";\nimport { type GenericMutationCtx } from \"convex/server\";\nimport type { ParseResult } from \"effect\";\nimport { Context, Effect, Layer, Match, Schema } from \"effect\";\n\nconst make =\n (runMutation: GenericMutationCtx<any>[\"runMutation\"]) =>\n <Mutation extends Ref.AnyMutation>(\n mutation: Mutation,\n args: Ref.Args<Mutation>,\n ): Effect.Effect<Ref.Returns<Mutation>, ParseResult.ParseError> =>\n Effect.gen(function* () {\n const functionSpec = Ref.getFunctionSpec(mutation);\n const functionName = Ref.getConvexFunctionName(mutation);\n\n return yield* Match.value(functionSpec.functionProvenance).pipe(\n Match.tag(\"Confect\", (confectFunctionSpec) =>\n Effect.gen(function* () {\n const encodedArgs = yield* Schema.encode(confectFunctionSpec.args)(\n args,\n );\n const encodedReturns = yield* Effect.promise(() =>\n runMutation(functionName as any, encodedArgs),\n );\n return yield* Schema.decode(confectFunctionSpec.returns)(\n encodedReturns,\n );\n }),\n ),\n Match.tag(\"Convex\", () =>\n Effect.promise(() => runMutation(functionName as any, args as any)),\n ),\n Match.exhaustive,\n );\n });\n\nexport const MutationRunner = Context.GenericTag<ReturnType<typeof make>>(\n \"@confect/server/MutationRunner\",\n);\nexport type MutationRunner = typeof MutationRunner.Identifier;\n\nexport const layer = (runMutation: GenericMutationCtx<any>[\"runMutation\"]) =>\n Layer.succeed(MutationRunner, make(runMutation));\n\nexport class MutationRollback extends Schema.TaggedError<MutationRollback>()(\n \"MutationRollback\",\n {\n mutationName: Schema.String,\n error: Schema.Unknown,\n },\n) {\n /* v8 ignore start */\n override get message(): string {\n return `Mutation ${this.mutationName} failed and was rolled back.\\n\\n${this.error}`;\n }\n /* v8 ignore stop */\n}\n"],"mappings":";;;;;;;;;;;AAKA,MAAM,QACH,iBAEC,UACA,SAEA,OAAO,IAAI,aAAa;CACtB,MAAM,eAAeA,MAAI,gBAAgB,SAAS;CAClD,MAAM,eAAeA,MAAI,sBAAsB,SAAS;AAExD,QAAO,OAAO,MAAM,MAAM,aAAa,mBAAmB,CAAC,KACzD,MAAM,IAAI,YAAY,wBACpB,OAAO,IAAI,aAAa;EACtB,MAAM,cAAc,OAAO,OAAO,OAAO,oBAAoB,KAAK,CAChE,KACD;EACD,MAAM,iBAAiB,OAAO,OAAO,cACnC,YAAY,cAAqB,YAAY,CAC9C;AACD,SAAO,OAAO,OAAO,OAAO,oBAAoB,QAAQ,CACtD,eACD;GACD,CACH,EACD,MAAM,IAAI,gBACR,OAAO,cAAc,YAAY,cAAqB,KAAY,CAAC,CACpE,EACD,MAAM,WACP;EACD;AAEN,MAAa,iBAAiB,QAAQ,WACpC,iCACD;AAGD,MAAa,SAAS,gBACpB,MAAM,QAAQ,gBAAgB,KAAK,YAAY,CAAC;AAElD,IAAa,mBAAb,cAAsC,OAAO,aAA+B,CAC1E,oBACA;CACE,cAAc,OAAO;CACrB,OAAO,OAAO;CACf,CACF,CAAC;;CAEA,IAAa,UAAkB;AAC7B,SAAO,YAAY,KAAK,aAAa,kCAAkC,KAAK"}
1
+ {"version":3,"file":"MutationRunner.js","names":["Ref"],"sources":["../src/MutationRunner.ts"],"sourcesContent":["import * as Ref from \"@confect/core/Ref\";\nimport { type GenericMutationCtx } from \"convex/server\";\nimport { Context, Layer, Schema } from \"effect\";\n\nconst make =\n (runMutation: GenericMutationCtx<any>[\"runMutation\"]) =>\n <Mutation extends Ref.AnyMutation>(\n mutation: Mutation,\n args: Ref.Args<Mutation>,\n ) =>\n Ref.runWithCodec(mutation, args, (functionReference, encodedArgs) =>\n runMutation(functionReference, encodedArgs),\n );\n\nexport const MutationRunner = Context.GenericTag<ReturnType<typeof make>>(\n \"@confect/server/MutationRunner\",\n);\nexport type MutationRunner = typeof MutationRunner.Identifier;\n\nexport const layer = (runMutation: GenericMutationCtx<any>[\"runMutation\"]) =>\n Layer.succeed(MutationRunner, make(runMutation));\n\nexport class MutationRollback extends Schema.TaggedError<MutationRollback>()(\n \"MutationRollback\",\n {\n mutationName: Schema.String,\n error: Schema.Unknown,\n },\n) {\n /* v8 ignore start */\n override get message(): string {\n return `Mutation ${this.mutationName} failed and was rolled back.\\n\\n${this.error}`;\n }\n /* v8 ignore stop */\n}\n"],"mappings":";;;;;;;;;;;AAIA,MAAM,QACH,iBAEC,UACA,SAEAA,MAAI,aAAa,UAAU,OAAO,mBAAmB,gBACnD,YAAY,mBAAmB,YAAY,CAC5C;AAEL,MAAa,iBAAiB,QAAQ,WACpC,iCACD;AAGD,MAAa,SAAS,gBACpB,MAAM,QAAQ,gBAAgB,KAAK,YAAY,CAAC;AAElD,IAAa,mBAAb,cAAsC,OAAO,aAA+B,CAC1E,oBACA;CACE,cAAc,OAAO;CACrB,OAAO,OAAO;CACf,CACF,CAAC;;CAEA,IAAa,UAAkB;AAC7B,SAAO,YAAY,KAAK,aAAa,kCAAkC,KAAK"}
@@ -1,14 +1,16 @@
1
- import { Context, Effect, Layer, ParseResult } from "effect";
1
+ import { Context, Layer } from "effect";
2
2
  import * as Ref$1 from "@confect/core/Ref";
3
3
  import { GenericQueryCtx } from "convex/server";
4
+ import * as effect_ParseResult0 from "effect/ParseResult";
5
+ import * as effect_Effect0 from "effect/Effect";
4
6
 
5
7
  //#region src/QueryRunner.d.ts
6
8
  declare namespace QueryRunner_d_exports {
7
9
  export { QueryRunner, layer };
8
10
  }
9
- declare const QueryRunner: Context.Tag<(<Query extends Ref$1.AnyQuery>(query: Query, args: Ref$1.Args<Query>) => Effect.Effect<Ref$1.Returns<Query>, ParseResult.ParseError>), <Query extends Ref$1.AnyQuery>(query: Query, args: Ref$1.Args<Query>) => Effect.Effect<Ref$1.Returns<Query>, ParseResult.ParseError>>;
11
+ declare const QueryRunner: Context.Tag<(<Query extends Ref$1.AnyQuery>(query: Query, args: Ref$1.Args<Query>) => effect_Effect0.Effect<Ref$1.Ref_d_exports.Returns<Query>, effect_ParseResult0.ParseError, never>), <Query extends Ref$1.AnyQuery>(query: Query, args: Ref$1.Args<Query>) => effect_Effect0.Effect<Ref$1.Ref_d_exports.Returns<Query>, effect_ParseResult0.ParseError, never>>;
10
12
  type QueryRunner = typeof QueryRunner.Identifier;
11
- declare const layer: (runQuery: GenericQueryCtx<any>["runQuery"]) => Layer.Layer<(<Query extends Ref$1.AnyQuery>(query: Query, args: Ref$1.Args<Query>) => Effect.Effect<Ref$1.Returns<Query>, ParseResult.ParseError>), never, never>;
13
+ declare const layer: (runQuery: GenericQueryCtx<any>["runQuery"]) => Layer.Layer<(<Query extends Ref$1.AnyQuery>(query: Query, args: Ref$1.Args<Query>) => effect_Effect0.Effect<Ref$1.Ref_d_exports.Returns<Query>, effect_ParseResult0.ParseError, never>), never, never>;
12
14
  //#endregion
13
15
  export { QueryRunner, QueryRunner_d_exports, layer };
14
16
  //# sourceMappingURL=QueryRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryRunner.d.ts","names":[],"sources":["../src/QueryRunner.ts"],"mappings":";;;;;;;;cAoCa,WAAA,EAAW,OAAA,CAAA,GAAA,iBA7BP,KAAA,CAAI,QAAA,EAAQ,KAAA,EAClB,KAAA,EAAK,IAAA,EACN,KAAA,CAAI,IAAA,CAAK,KAAA,MACd,MAAA,CAAO,MAAA,CAAO,KAAA,CAAI,OAAA,CAAQ,KAAA,GAAQ,WAAA,CAAY,UAAA,mBAHlC,KAAA,CAAI,QAAA,EAAQ,KAAA,EAClB,KAAA,EAAK,IAAA,EACN,KAAA,CAAI,IAAA,CAAK,KAAA,MACd,MAAA,CAAO,MAAA,CAAO,KAAA,CAAI,OAAA,CAAQ,KAAA,GAAQ,WAAA,CAAY,UAAA;AAAA,KA6BvC,WAAA,UAAqB,WAAA,CAAY,UAAA;AAAA,cAEhC,KAAA,GAAS,QAAA,EAAU,eAAA,sBAAgC,KAAA,CAAA,KAAA,iBAlC/C,KAAA,CAAI,QAAA,EAAQ,KAAA,EAClB,KAAA,EAAK,IAAA,EACN,KAAA,CAAI,IAAA,CAAK,KAAA,MACd,MAAA,CAAO,MAAA,CAAO,KAAA,CAAI,OAAA,CAAQ,KAAA,GAAQ,WAAA,CAAY,UAAA"}
1
+ {"version":3,"file":"QueryRunner.d.ts","names":[],"sources":["../src/QueryRunner.ts"],"mappings":";;;;;;;;;;cAWa,WAAA,EAAW,OAAA,CAAA,GAAA,iBALP,KAAA,CAAI,QAAA,EAAQ,KAAA,EAAS,KAAA,EAAK,IAAA,EAAQ,KAAA,CAAI,IAAA,CAAK,KAAA,MAAM,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,KAAA,GAAA,mBAAA,CAAA,UAAA,0BAAjD,KAAA,CAAI,QAAA,EAAQ,KAAA,EAAS,KAAA,EAAK,IAAA,EAAQ,KAAA,CAAI,IAAA,CAAK,KAAA,MAAM,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,KAAA,GAAA,mBAAA,CAAA,UAAA;AAAA,KAQtD,WAAA,UAAqB,WAAA,CAAY,UAAA;AAAA,cAEhC,KAAA,GAAS,QAAA,EAAU,eAAA,sBAAgC,KAAA,CAAA,KAAA,iBAV/C,KAAA,CAAI,QAAA,EAAQ,KAAA,EAAS,KAAA,EAAK,IAAA,EAAQ,KAAA,CAAI,IAAA,CAAK,KAAA,MAAM,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,KAAA,GAAA,mBAAA,CAAA,UAAA"}
@@ -1,5 +1,5 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
- import { Context, Effect, Layer, Match, Schema } from "effect";
2
+ import { Context, Layer } from "effect";
3
3
  import * as Ref$1 from "@confect/core/Ref";
4
4
  import "convex/server";
5
5
 
@@ -8,15 +8,7 @@ var QueryRunner_exports = /* @__PURE__ */ __exportAll({
8
8
  QueryRunner: () => QueryRunner,
9
9
  layer: () => layer
10
10
  });
11
- const make = (runQuery) => (query, args) => Effect.gen(function* () {
12
- const functionSpec = Ref$1.getFunctionSpec(query);
13
- const functionName = Ref$1.getConvexFunctionName(query);
14
- return yield* Match.value(functionSpec.functionProvenance).pipe(Match.tag("Confect", (confectFunctionSpec) => Effect.gen(function* () {
15
- const encodedArgs = yield* Schema.encode(confectFunctionSpec.args)(args);
16
- const encodedReturns = yield* Effect.promise(() => runQuery(functionName, encodedArgs));
17
- return yield* Schema.decode(confectFunctionSpec.returns)(encodedReturns);
18
- })), Match.tag("Convex", () => Effect.promise(() => runQuery(functionName, args))), Match.exhaustive);
19
- });
11
+ const make = (runQuery) => (query, args) => Ref$1.runWithCodec(query, args, (functionReference, encodedArgs) => runQuery(functionReference, encodedArgs));
20
12
  const QueryRunner = Context.GenericTag("@confect/server/QueryRunner");
21
13
  const layer = (runQuery) => Layer.succeed(QueryRunner, make(runQuery));
22
14
 
@@ -1 +1 @@
1
- {"version":3,"file":"QueryRunner.js","names":["Ref"],"sources":["../src/QueryRunner.ts"],"sourcesContent":["import * as Ref from \"@confect/core/Ref\";\nimport { type GenericQueryCtx } from \"convex/server\";\nimport type { ParseResult } from \"effect\";\nimport { Context, Effect, Layer, Match, Schema } from \"effect\";\n\nconst make =\n (runQuery: GenericQueryCtx<any>[\"runQuery\"]) =>\n <Query extends Ref.AnyQuery>(\n query: Query,\n args: Ref.Args<Query>,\n ): Effect.Effect<Ref.Returns<Query>, ParseResult.ParseError> =>\n Effect.gen(function* () {\n const functionSpec = Ref.getFunctionSpec(query);\n const functionName = Ref.getConvexFunctionName(query);\n\n return yield* Match.value(functionSpec.functionProvenance).pipe(\n Match.tag(\"Confect\", (confectFunctionSpec) =>\n Effect.gen(function* () {\n const encodedArgs = yield* Schema.encode(confectFunctionSpec.args)(\n args,\n );\n const encodedReturns = yield* Effect.promise(() =>\n runQuery(functionName as any, encodedArgs),\n );\n return yield* Schema.decode(confectFunctionSpec.returns)(\n encodedReturns,\n );\n }),\n ),\n Match.tag(\"Convex\", () =>\n Effect.promise(() => runQuery(functionName as any, args as any)),\n ),\n Match.exhaustive,\n );\n });\n\nexport const QueryRunner = Context.GenericTag<ReturnType<typeof make>>(\n \"@confect/server/QueryRunner\",\n);\nexport type QueryRunner = typeof QueryRunner.Identifier;\n\nexport const layer = (runQuery: GenericQueryCtx<any>[\"runQuery\"]) =>\n Layer.succeed(QueryRunner, make(runQuery));\n"],"mappings":";;;;;;;;;;AAKA,MAAM,QACH,cAEC,OACA,SAEA,OAAO,IAAI,aAAa;CACtB,MAAM,eAAeA,MAAI,gBAAgB,MAAM;CAC/C,MAAM,eAAeA,MAAI,sBAAsB,MAAM;AAErD,QAAO,OAAO,MAAM,MAAM,aAAa,mBAAmB,CAAC,KACzD,MAAM,IAAI,YAAY,wBACpB,OAAO,IAAI,aAAa;EACtB,MAAM,cAAc,OAAO,OAAO,OAAO,oBAAoB,KAAK,CAChE,KACD;EACD,MAAM,iBAAiB,OAAO,OAAO,cACnC,SAAS,cAAqB,YAAY,CAC3C;AACD,SAAO,OAAO,OAAO,OAAO,oBAAoB,QAAQ,CACtD,eACD;GACD,CACH,EACD,MAAM,IAAI,gBACR,OAAO,cAAc,SAAS,cAAqB,KAAY,CAAC,CACjE,EACD,MAAM,WACP;EACD;AAEN,MAAa,cAAc,QAAQ,WACjC,8BACD;AAGD,MAAa,SAAS,aACpB,MAAM,QAAQ,aAAa,KAAK,SAAS,CAAC"}
1
+ {"version":3,"file":"QueryRunner.js","names":["Ref"],"sources":["../src/QueryRunner.ts"],"sourcesContent":["import * as Ref from \"@confect/core/Ref\";\nimport { type GenericQueryCtx } from \"convex/server\";\nimport { Context, Layer } from \"effect\";\n\nconst make =\n (runQuery: GenericQueryCtx<any>[\"runQuery\"]) =>\n <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>) =>\n Ref.runWithCodec(query, args, (functionReference, encodedArgs) =>\n runQuery(functionReference, encodedArgs),\n );\n\nexport const QueryRunner = Context.GenericTag<ReturnType<typeof make>>(\n \"@confect/server/QueryRunner\",\n);\nexport type QueryRunner = typeof QueryRunner.Identifier;\n\nexport const layer = (runQuery: GenericQueryCtx<any>[\"runQuery\"]) =>\n Layer.succeed(QueryRunner, make(runQuery));\n"],"mappings":";;;;;;;;;;AAIA,MAAM,QACH,cAC4B,OAAc,SACzCA,MAAI,aAAa,OAAO,OAAO,mBAAmB,gBAChD,SAAS,mBAAmB,YAAY,CACzC;AAEL,MAAa,cAAc,QAAQ,WACjC,8BACD;AAGD,MAAa,SAAS,aACpB,MAAM,QAAQ,aAAa,KAAK,SAAS,CAAC"}
@@ -22,8 +22,8 @@ import * as _confect_core_Ref0 from "@confect/core/Ref";
22
22
  import * as convex_server0 from "convex/server";
23
23
  import { GenericMutationCtx } from "convex/server";
24
24
  import * as convex_values0 from "convex/values";
25
- import * as _confect_core_Types0 from "@confect/core/Types";
26
25
  import * as effect_ParseResult0 from "effect/ParseResult";
26
+ import * as _confect_core_Types0 from "@confect/core/Types";
27
27
  import * as effect_Duration0 from "effect/Duration";
28
28
  import * as effect_DateTime0 from "effect/DateTime";
29
29
 
@@ -35,7 +35,7 @@ declare const make: <Api_ extends AnyWithPropsWithRuntime<"Convex">>(api: Api_,
35
35
  functionSpec,
36
36
  handler
37
37
  }: AnyWithProps$1) => Any;
38
- declare const mutationLayer: <Schema extends AnyWithProps>(schema: Schema, ctx: GenericMutationCtx<ToConvex<FromSchema<Schema>>>) => Layer.Layer<Auth$1 | (<Mutation extends _confect_core_Ref0.AnyMutation>(mutation: Mutation, args: _confect_core_Ref0.Args<Mutation>) => Effect.Effect<_confect_core_Ref0.Returns<Mutation>, effect_ParseResult0.ParseError>) | GenericMutationCtx<ToConvex<FromSchema<Schema>>> | {
38
+ declare const mutationLayer: <Schema extends AnyWithProps>(schema: Schema, ctx: GenericMutationCtx<ToConvex<FromSchema<Schema>>>) => Layer.Layer<GenericMutationCtx<ToConvex<FromSchema<Schema>>> | {
39
39
  table: <const TableName extends Name<IncludeSystemTables<Tables<Schema>>>>(tableName: TableName) => {
40
40
  readonly get: {
41
41
  (id: convex_values0.GenericId<TableName>): Effect.Effect<TableInfo<WithName<IncludeSystemTables<Tables<Schema>>, TableName>>["document"], GetByIdFailure | DocumentDecodeError, never>;
@@ -50,14 +50,14 @@ declare const mutationLayer: <Schema extends AnyWithProps>(schema: Schema, ctx:
50
50
  } | {
51
51
  table: <const TableName extends TableNames<FromSchema<Schema>>>(tableName: TableName) => {
52
52
  insert: (document: WithoutSystemFields$1<DocumentByName<FromSchema<Schema>, TableName>>) => Effect.Effect<convex_values0.GenericId<TableName>, DocumentEncodeError, never>;
53
- patch: (id: convex_values0.GenericId<TableName>, patchedValues: Partial<convex_server0.Expand<convex_server0.BetterOmit<DocumentByName<FromSchema<Schema>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, DocumentEncodeError | GetByIdFailure | DocumentDecodeError, never>;
53
+ patch: (id: convex_values0.GenericId<TableName>, patchedValues: Partial<convex_server0.Expand<convex_server0.BetterOmit<DocumentByName<FromSchema<Schema>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, GetByIdFailure | DocumentDecodeError | DocumentEncodeError, never>;
54
54
  replace: (id: convex_values0.GenericId<TableName>, value: convex_server0.Expand<convex_server0.BetterOmit<DocumentByName<FromSchema<Schema>, TableName>, "_id" | "_creationTime">>) => Effect.Effect<void, DocumentEncodeError, never>;
55
55
  delete: (id: convex_values0.GenericId<TableName>) => Effect.Effect<void, never, never>;
56
56
  };
57
- } | {
58
- runAfter: <FuncRef extends convex_server0.SchedulableFunctionReference>(delay: effect_Duration0.Duration, functionReference: FuncRef, ...args: convex_server0.OptionalRestArgs<FuncRef>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
59
- runAt: <FuncRef extends convex_server0.SchedulableFunctionReference>(dateTime: effect_DateTime0.DateTime, functionReference: FuncRef, ...args: convex_server0.OptionalRestArgs<FuncRef>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
60
- } | StorageReader$1 | StorageWriter$1 | (<Query extends _confect_core_Ref0.AnyQuery>(query: Query, args: _confect_core_Ref0.Args<Query>) => Effect.Effect<_confect_core_Ref0.Returns<Query>, effect_ParseResult0.ParseError>), never, never>;
57
+ } | Auth$1 | {
58
+ runAfter: <Ref_ extends _confect_core_Ref0.AnyMutation | _confect_core_Ref0.AnyAction>(delay: effect_Duration0.Duration, ref: Ref_, ...args: keyof _confect_core_Ref0.Args<Ref_> extends never ? [args?: _confect_core_Ref0.Args<Ref_>] : [args: _confect_core_Ref0.Args<Ref_>]) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
59
+ runAt: <Ref_ extends _confect_core_Ref0.AnyMutation | _confect_core_Ref0.AnyAction>(dateTime: effect_DateTime0.DateTime, ref: Ref_, ...args: keyof _confect_core_Ref0.Args<Ref_> extends never ? [args?: _confect_core_Ref0.Args<Ref_>] : [args: _confect_core_Ref0.Args<Ref_>]) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
60
+ } | StorageReader$1 | StorageWriter$1 | (<Query extends _confect_core_Ref0.AnyQuery>(query: Query, args: _confect_core_Ref0.Args<Query>) => Effect.Effect<_confect_core_Ref0.Returns<Query>, effect_ParseResult0.ParseError, never>) | (<Mutation extends _confect_core_Ref0.AnyMutation>(mutation: Mutation, args: _confect_core_Ref0.Args<Mutation>) => Effect.Effect<_confect_core_Ref0.Returns<Mutation>, effect_ParseResult0.ParseError, never>), never, never>;
61
61
  type MutationServices<Schema extends AnyWithProps> = DatabaseReader<Schema> | DatabaseWriter<Schema> | Auth$1 | Scheduler$1 | StorageReader$1 | StorageWriter$1 | QueryRunner | MutationRunner | MutationCtx<ToConvex<FromSchema<Schema>>>;
62
62
  //#endregion
63
63
  export { MutationServices, RegisteredConvexFunction_d_exports, make, mutationLayer };
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredConvexFunction.d.ts","names":[],"sources":["../src/RegisteredConvexFunction.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgCa,IAAA,gBAAqB,uBAAA,YAChC,GAAA,EAAK,IAAA;EACL,YAAA;EAAA;AAAA,GAA2B,cAAA,KAC1B,GAAA;AAAA,cAiIU,aAAA,kBAAgC,YAAA,EAC3C,MAAA,EAAQ,MAAA,EACR,GAAA,EAAK,kBAAA,CAAmB,QAAA,CAAmB,UAAA,CAAqB,MAAA,QAAS,KAAA,CAAA,KAAA,CAAA,MAAA,sBAAA,kBAAA,CAAA,WAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAA,CAAA,IAAA,CAAA,QAAA,MAAA,MAAA,CAAA,MAAA,CAAA,kBAAA,CAAA,OAAA,CAAA,QAAA,GAAA,mBAAA,CAAA,UAAA,KAAA,kBAAA,CAAA,QAAA,CAAA,UAAA,CAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;KAoB/D,gBAAA,gBAAgC,YAAA,IACxC,cAAA,CAA8B,MAAA,IAC9B,cAAA,CAA8B,MAAA,IAC9B,MAAA,GACA,WAAA,GACA,eAAA,GACA,eAAA,GACA,WAAA,GACA,cAAA,GACA,WAAA,CAAwB,QAAA,CAAmB,UAAA,CAAqB,MAAA"}
1
+ {"version":3,"file":"RegisteredConvexFunction.d.ts","names":[],"sources":["../src/RegisteredConvexFunction.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgCa,IAAA,gBAAqB,uBAAA,YAChC,GAAA,EAAK,IAAA;EACL,YAAA;EAAA;AAAA,GAA2B,cAAA,KAC1B,GAAA;AAAA,cAiIU,aAAA,kBAAgC,YAAA,EAC3C,MAAA,EAAQ,MAAA,EACR,GAAA,EAAK,kBAAA,CAAmB,QAAA,CAAmB,UAAA,CAAqB,MAAA,QAAS,KAAA,CAAA,KAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,UAAA,CAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;KAoB/D,gBAAA,gBAAgC,YAAA,IACxC,cAAA,CAA8B,MAAA,IAC9B,cAAA,CAA8B,MAAA,IAC9B,MAAA,GACA,WAAA,GACA,eAAA,GACA,eAAA,GACA,WAAA,GACA,cAAA,GACA,WAAA,CAAwB,QAAA,CAAmB,UAAA,CAAqB,MAAA"}
@@ -16,8 +16,8 @@ import * as convex_server0 from "convex/server";
16
16
  import { DefaultFunctionArgs, FunctionVisibility, GenericActionCtx, RegisteredAction, RegisteredMutation, RegisteredQuery } from "convex/server";
17
17
  import { FunctionSpec, RuntimeAndFunctionType } from "@confect/core";
18
18
  import * as convex_values0 from "convex/values";
19
- import * as FunctionProvenance from "@confect/core/FunctionProvenance";
20
19
  import * as effect_ParseResult0 from "effect/ParseResult";
20
+ import * as FunctionProvenance from "@confect/core/FunctionProvenance";
21
21
  import * as effect_Duration0 from "effect/Duration";
22
22
  import * as effect_DateTime0 from "effect/DateTime";
23
23
 
@@ -51,10 +51,10 @@ declare const actionFunctionBase: <Schema extends AnyWithProps, Args, ConvexArgs
51
51
  handler: (ctx: GenericActionCtx<ToConvex<FromSchema<Schema>>>, actualArgs: ConvexArgs) => Promise<ConvexReturns>;
52
52
  };
53
53
  type ActionServices<DatabaseSchema_ extends AnyWithProps> = Scheduler$1 | Auth$1 | StorageReader$1 | StorageWriter$1 | StorageActionWriter$1 | QueryRunner | MutationRunner | ActionRunner | VectorSearch<FromSchema<DatabaseSchema_>> | ActionCtx<ToConvex<FromSchema<DatabaseSchema_>>>;
54
- declare const actionLayer: <DatabaseSchema_ extends AnyWithProps>(databaseSchema: DatabaseSchema_, ctx: GenericActionCtx<ToConvex<FromSchema<DatabaseSchema_>>>) => Layer.Layer<Auth$1 | (<Mutation extends _confect_core_Ref0.AnyMutation>(mutation: Mutation, args: _confect_core_Ref0.Args<Mutation>) => Effect.Effect<_confect_core_Ref0.Returns<Mutation>, effect_ParseResult0.ParseError>) | StorageActionWriter$1 | {
55
- runAfter: <FuncRef extends convex_server0.SchedulableFunctionReference>(delay: effect_Duration0.Duration, functionReference: FuncRef, ...args: convex_server0.OptionalRestArgs<FuncRef>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
56
- runAt: <FuncRef extends convex_server0.SchedulableFunctionReference>(dateTime: effect_DateTime0.DateTime, functionReference: FuncRef, ...args: convex_server0.OptionalRestArgs<FuncRef>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
57
- } | StorageReader$1 | StorageWriter$1 | (<Query extends _confect_core_Ref0.AnyQuery>(query: Query, args: _confect_core_Ref0.Args<Query>) => Effect.Effect<_confect_core_Ref0.Returns<Query>, effect_ParseResult0.ParseError>) | GenericActionCtx<ToConvex<FromSchema<DatabaseSchema_>>> | (<Action extends _confect_core_Ref0.AnyAction>(action: Action, args: _confect_core_Ref0.Args<Action>) => Effect.Effect<_confect_core_Ref0.Returns<Action>, effect_ParseResult0.ParseError>) | (<TableName extends TableNames<FromSchema<DatabaseSchema_>>, IndexName extends keyof convex_server0.VectorIndexes<convex_server0.NamedTableInfo<ToConvex<FromSchema<DatabaseSchema_>>, TableName>>>(tableName: TableName, indexName: IndexName, query: {
54
+ declare const actionLayer: <DatabaseSchema_ extends AnyWithProps>(databaseSchema: DatabaseSchema_, ctx: GenericActionCtx<ToConvex<FromSchema<DatabaseSchema_>>>) => Layer.Layer<GenericActionCtx<ToConvex<FromSchema<DatabaseSchema_>>> | {
55
+ runAfter: <Ref_ extends _confect_core_Ref0.AnyMutation | _confect_core_Ref0.AnyAction>(delay: effect_Duration0.Duration, ref: Ref_, ...args: keyof _confect_core_Ref0.Args<Ref_> extends never ? [args?: _confect_core_Ref0.Args<Ref_>] : [args: _confect_core_Ref0.Args<Ref_>]) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
56
+ runAt: <Ref_ extends _confect_core_Ref0.AnyMutation | _confect_core_Ref0.AnyAction>(dateTime: effect_DateTime0.DateTime, ref: Ref_, ...args: keyof _confect_core_Ref0.Args<Ref_> extends never ? [args?: _confect_core_Ref0.Args<Ref_>] : [args: _confect_core_Ref0.Args<Ref_>]) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
57
+ } | Auth$1 | StorageReader$1 | StorageWriter$1 | StorageActionWriter$1 | (<Query extends _confect_core_Ref0.AnyQuery>(query: Query, args: _confect_core_Ref0.Args<Query>) => Effect.Effect<_confect_core_Ref0.Returns<Query>, effect_ParseResult0.ParseError, never>) | (<Mutation extends _confect_core_Ref0.AnyMutation>(mutation: Mutation, args: _confect_core_Ref0.Args<Mutation>) => Effect.Effect<_confect_core_Ref0.Returns<Mutation>, effect_ParseResult0.ParseError, never>) | (<Action extends _confect_core_Ref0.AnyAction>(action: Action, args: _confect_core_Ref0.Args<Action>) => Effect.Effect<_confect_core_Ref0.Returns<Action>, effect_ParseResult0.ParseError, never>) | (<TableName extends TableNames<FromSchema<DatabaseSchema_>>, IndexName extends keyof convex_server0.VectorIndexes<convex_server0.NamedTableInfo<ToConvex<FromSchema<DatabaseSchema_>>, TableName>>>(tableName: TableName, indexName: IndexName, query: {
58
58
  vector: number[];
59
59
  limit?: number;
60
60
  filter?: (q: convex_server0.VectorFilterBuilder<convex_server0.DocumentByInfo<convex_server0.NamedTableInfo<ToConvex<FromSchema<DatabaseSchema_>>, TableName>>, convex_server0.NamedVectorIndex<convex_server0.NamedTableInfo<ToConvex<FromSchema<DatabaseSchema_>>, TableName>, IndexName>>) => convex_server0.FilterExpression<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredFunction.d.ts","names":[],"sources":["../src/RegisteredFunction.ts"],"mappings":"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"}
1
+ {"version":3,"file":"RegisteredFunction.d.ts","names":[],"sources":["../src/RegisteredFunction.ts"],"mappings":"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"}
@@ -1,22 +1,24 @@
1
1
  import { Context, DateTime, Duration, Effect, Layer } from "effect";
2
- import { OptionalRestArgs, SchedulableFunctionReference, Scheduler as Scheduler$1 } from "convex/server";
2
+ import { Scheduler as Scheduler$1 } from "convex/server";
3
+ import { Ref as Ref$1 } from "@confect/core";
3
4
  import * as convex_values0 from "convex/values";
4
5
 
5
6
  //#region src/Scheduler.d.ts
6
7
  declare namespace Scheduler_d_exports {
7
8
  export { Scheduler, layer };
8
9
  }
10
+ type OptionalArgs<Ref_ extends Ref$1.AnyMutation | Ref$1.AnyAction> = keyof Ref$1.Args<Ref_> extends never ? [args?: Ref$1.Args<Ref_>] : [args: Ref$1.Args<Ref_>];
9
11
  declare const Scheduler: Context.Tag<{
10
- runAfter: <FuncRef extends SchedulableFunctionReference>(delay: Duration.Duration, functionReference: FuncRef, ...args: OptionalRestArgs<FuncRef>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
11
- runAt: <FuncRef extends SchedulableFunctionReference>(dateTime: DateTime.DateTime, functionReference: FuncRef, ...args: OptionalRestArgs<FuncRef>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
12
+ runAfter: <Ref_ extends Ref$1.AnyMutation | Ref$1.AnyAction>(delay: Duration.Duration, ref: Ref_, ...args: OptionalArgs<Ref_>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
13
+ runAt: <Ref_ extends Ref$1.AnyMutation | Ref$1.AnyAction>(dateTime: DateTime.DateTime, ref: Ref_, ...args: OptionalArgs<Ref_>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
12
14
  }, {
13
- runAfter: <FuncRef extends SchedulableFunctionReference>(delay: Duration.Duration, functionReference: FuncRef, ...args: OptionalRestArgs<FuncRef>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
14
- runAt: <FuncRef extends SchedulableFunctionReference>(dateTime: DateTime.DateTime, functionReference: FuncRef, ...args: OptionalRestArgs<FuncRef>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
15
+ runAfter: <Ref_ extends Ref$1.AnyMutation | Ref$1.AnyAction>(delay: Duration.Duration, ref: Ref_, ...args: OptionalArgs<Ref_>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
16
+ runAt: <Ref_ extends Ref$1.AnyMutation | Ref$1.AnyAction>(dateTime: DateTime.DateTime, ref: Ref_, ...args: OptionalArgs<Ref_>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
15
17
  }>;
16
18
  type Scheduler = typeof Scheduler.Identifier;
17
19
  declare const layer: (scheduler: Scheduler$1) => Layer.Layer<{
18
- runAfter: <FuncRef extends SchedulableFunctionReference>(delay: Duration.Duration, functionReference: FuncRef, ...args: OptionalRestArgs<FuncRef>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
19
- runAt: <FuncRef extends SchedulableFunctionReference>(dateTime: DateTime.DateTime, functionReference: FuncRef, ...args: OptionalRestArgs<FuncRef>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
20
+ runAfter: <Ref_ extends Ref$1.AnyMutation | Ref$1.AnyAction>(delay: Duration.Duration, ref: Ref_, ...args: OptionalArgs<Ref_>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
21
+ runAt: <Ref_ extends Ref$1.AnyMutation | Ref$1.AnyAction>(dateTime: DateTime.DateTime, ref: Ref_, ...args: OptionalArgs<Ref_>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
20
22
  }, never, never>;
21
23
  //#endregion
22
24
  export { Scheduler, Scheduler_d_exports, layer };
@@ -1 +1 @@
1
- {"version":3,"file":"Scheduler.d.ts","names":[],"sources":["../src/Scheduler.ts"],"mappings":";;;;;;;;cAgCa,SAAA,EAAS,OAAA,CAAA,GAAA;6BAxBO,4BAAA,EAA4B,KAAA,EAC9C,QAAA,CAAS,QAAA,EAAQ,iBAAA,EACL,OAAA,KAAO,IAAA,EACjB,gBAAA,CAAiB,OAAA,MAAQ,MAAA,CAAA,MAAA,CAAT,cAAA,CAAS,SAAA;0BAQZ,4BAAA,EAA4B,QAAA,EACxC,QAAA,CAAS,QAAA,EAAQ,iBAAA,EACR,OAAA,KAAO,IAAA,EACjB,gBAAA,CAAiB,OAAA,MAAQ,MAAA,CAAA,MAAA,CAAT,cAAA,CAAS,SAAA;AAAA;6BAdT,4BAAA,EAA4B,KAAA,EAC9C,QAAA,CAAS,QAAA,EAAQ,iBAAA,EACL,OAAA,KAAO,IAAA,EACjB,gBAAA,CAAiB,OAAA,MAAQ,MAAA,CAAA,MAAA,CAAT,cAAA,CAAS,SAAA;0BAQZ,4BAAA,EAA4B,QAAA,EACxC,QAAA,CAAS,QAAA,EAAQ,iBAAA,EACR,OAAA,KAAO,IAAA,EACjB,gBAAA,CAAiB,OAAA,MAAQ,MAAA,CAAA,MAAA,CAAT,cAAA,CAAS,SAAA;AAAA;AAAA,KAa1B,SAAA,UAAmB,SAAA,CAAU,UAAA;AAAA,cAE5B,KAAA,GAAS,SAAA,EAAW,WAAA,KAAe,KAAA,CAAA,KAAA;6BA7BnB,4BAAA,EAA4B,KAAA,EAC9C,QAAA,CAAS,QAAA,EAAQ,iBAAA,EACL,OAAA,KAAO,IAAA,EACjB,gBAAA,CAAiB,OAAA,MAAQ,MAAA,CAAA,MAAA,CAAT,cAAA,CAAS,SAAA;0BAQZ,4BAAA,EAA4B,QAAA,EACxC,QAAA,CAAS,QAAA,EAAQ,iBAAA,EACR,OAAA,KAAO,IAAA,EACjB,gBAAA,CAAiB,OAAA,MAAQ,MAAA,CAAA,MAAA,CAAT,cAAA,CAAS,SAAA;AAAA"}
1
+ {"version":3,"file":"Scheduler.d.ts","names":[],"sources":["../src/Scheduler.ts"],"mappings":";;;;;;;;;KAIK,YAAA,cAA0B,KAAA,CAAI,WAAA,GAAc,KAAA,CAAI,SAAA,UAC7C,KAAA,CAAI,IAAA,CAAK,IAAA,mBACV,IAAA,GAAO,KAAA,CAAI,IAAA,CAAK,IAAA,MAChB,IAAA,EAAM,KAAA,CAAI,IAAA,CAAK,IAAA;AAAA,cAqCT,SAAA,EAAS,OAAA,CAAA,GAAA;0BAlCI,KAAA,CAAI,WAAA,GAAc,KAAA,CAAI,SAAA,EAAS,KAAA,EAC9C,QAAA,CAAS,QAAA,EAAQ,GAAA,EACnB,IAAA,KAAI,IAAA,EACA,YAAA,CAAa,IAAA,MAAK,MAAA,CAAA,MAAA,CAAN,cAAA,CAAM,SAAA;uBAaR,KAAA,CAAI,WAAA,GAAc,KAAA,CAAI,SAAA,EAAS,QAAA,EACxC,QAAA,CAAS,QAAA,EAAQ,GAAA,EACtB,IAAA,KAAI,IAAA,EACA,YAAA,CAAa,IAAA,MAAK,MAAA,CAAA,MAAA,CAAN,cAAA,CAAM,SAAA;AAAA;0BAnBL,KAAA,CAAI,WAAA,GAAc,KAAA,CAAI,SAAA,EAAS,KAAA,EAC9C,QAAA,CAAS,QAAA,EAAQ,GAAA,EACnB,IAAA,KAAI,IAAA,EACA,YAAA,CAAa,IAAA,MAAK,MAAA,CAAA,MAAA,CAAN,cAAA,CAAM,SAAA;uBAaR,KAAA,CAAI,WAAA,GAAc,KAAA,CAAI,SAAA,EAAS,QAAA,EACxC,QAAA,CAAS,QAAA,EAAQ,GAAA,EACtB,IAAA,KAAI,IAAA,EACA,YAAA,CAAa,IAAA,MAAK,MAAA,CAAA,MAAA,CAAN,cAAA,CAAM,SAAA;AAAA;AAAA,KAkBnB,SAAA,UAAmB,SAAA,CAAU,UAAA;AAAA,cAE5B,KAAA,GAAS,SAAA,EAAW,WAAA,KAAe,KAAA,CAAA,KAAA;0BAvCtB,KAAA,CAAI,WAAA,GAAc,KAAA,CAAI,SAAA,EAAS,KAAA,EAC9C,QAAA,CAAS,QAAA,EAAQ,GAAA,EACnB,IAAA,KAAI,IAAA,EACA,YAAA,CAAa,IAAA,MAAK,MAAA,CAAA,MAAA,CAAN,cAAA,CAAM,SAAA;uBAaR,KAAA,CAAI,WAAA,GAAc,KAAA,CAAI,SAAA,EAAS,QAAA,EACxC,QAAA,CAAS,QAAA,EAAQ,GAAA,EACtB,IAAA,KAAI,IAAA,EACA,YAAA,CAAa,IAAA,MAAK,MAAA,CAAA,MAAA,CAAN,cAAA,CAAM,SAAA;AAAA"}
package/dist/Scheduler.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
2
  import { Context, DateTime, Duration, Effect, Layer } from "effect";
3
+ import { Ref as Ref$1 } from "@confect/core";
3
4
 
4
5
  //#region src/Scheduler.ts
5
6
  var Scheduler_exports = /* @__PURE__ */ __exportAll({
@@ -7,13 +8,17 @@ var Scheduler_exports = /* @__PURE__ */ __exportAll({
7
8
  layer: () => layer
8
9
  });
9
10
  const make = (scheduler) => ({
10
- runAfter: (delay, functionReference, ...args) => {
11
+ runAfter: (delay, ref, ...args) => {
11
12
  const delayMs = Duration.toMillis(delay);
12
- return Effect.promise(() => scheduler.runAfter(delayMs, functionReference, ...args));
13
+ const functionReference = Ref$1.getFunctionReference(ref);
14
+ const encodedArgs = Ref$1.encodeArgsSync(ref, args[0] ?? {});
15
+ return Effect.promise(() => scheduler.runAfter(delayMs, functionReference, encodedArgs));
13
16
  },
14
- runAt: (dateTime, functionReference, ...args) => {
17
+ runAt: (dateTime, ref, ...args) => {
15
18
  const timestamp = DateTime.toEpochMillis(dateTime);
16
- return Effect.promise(() => scheduler.runAt(timestamp, functionReference, ...args));
19
+ const functionReference = Ref$1.getFunctionReference(ref);
20
+ const encodedArgs = Ref$1.encodeArgsSync(ref, args[0] ?? {});
21
+ return Effect.promise(() => scheduler.runAt(timestamp, functionReference, encodedArgs));
17
22
  }
18
23
  });
19
24
  const Scheduler = Context.GenericTag("@confect/server/Scheduler");
@@ -1 +1 @@
1
- {"version":3,"file":"Scheduler.js","names":[],"sources":["../src/Scheduler.ts"],"sourcesContent":["import type {\n OptionalRestArgs,\n SchedulableFunctionReference,\n Scheduler as ConvexScheduler,\n} from \"convex/server\";\nimport { Context, DateTime, Duration, Effect, Layer } from \"effect\";\n\nconst make = (scheduler: ConvexScheduler) => ({\n runAfter: <FuncRef extends SchedulableFunctionReference>(\n delay: Duration.Duration,\n functionReference: FuncRef,\n ...args: OptionalRestArgs<FuncRef>\n ) => {\n const delayMs = Duration.toMillis(delay);\n\n return Effect.promise(() =>\n scheduler.runAfter(delayMs, functionReference, ...args),\n );\n },\n runAt: <FuncRef extends SchedulableFunctionReference>(\n dateTime: DateTime.DateTime,\n functionReference: FuncRef,\n ...args: OptionalRestArgs<FuncRef>\n ) => {\n const timestamp = DateTime.toEpochMillis(dateTime);\n\n return Effect.promise(() =>\n scheduler.runAt(timestamp, functionReference, ...args),\n );\n },\n});\n\nexport const Scheduler = Context.GenericTag<ReturnType<typeof make>>(\n \"@confect/server/Scheduler\",\n);\nexport type Scheduler = typeof Scheduler.Identifier;\n\nexport const layer = (scheduler: ConvexScheduler) =>\n Layer.succeed(Scheduler, make(scheduler));\n"],"mappings":";;;;;;;;AAOA,MAAM,QAAQ,eAAgC;CAC5C,WACE,OACA,mBACA,GAAG,SACA;EACH,MAAM,UAAU,SAAS,SAAS,MAAM;AAExC,SAAO,OAAO,cACZ,UAAU,SAAS,SAAS,mBAAmB,GAAG,KAAK,CACxD;;CAEH,QACE,UACA,mBACA,GAAG,SACA;EACH,MAAM,YAAY,SAAS,cAAc,SAAS;AAElD,SAAO,OAAO,cACZ,UAAU,MAAM,WAAW,mBAAmB,GAAG,KAAK,CACvD;;CAEJ;AAED,MAAa,YAAY,QAAQ,WAC/B,4BACD;AAGD,MAAa,SAAS,cACpB,MAAM,QAAQ,WAAW,KAAK,UAAU,CAAC"}
1
+ {"version":3,"file":"Scheduler.js","names":["Ref"],"sources":["../src/Scheduler.ts"],"sourcesContent":["import { Ref } from \"@confect/core\";\nimport type { Scheduler as ConvexScheduler } from \"convex/server\";\nimport { Context, DateTime, Duration, Effect, Layer } from \"effect\";\n\ntype OptionalArgs<Ref_ extends Ref.AnyMutation | Ref.AnyAction> =\n keyof Ref.Args<Ref_> extends never\n ? [args?: Ref.Args<Ref_>]\n : [args: Ref.Args<Ref_>];\n\nconst make = (scheduler: ConvexScheduler) => ({\n runAfter: <Ref_ extends Ref.AnyMutation | Ref.AnyAction>(\n delay: Duration.Duration,\n ref: Ref_,\n ...args: OptionalArgs<Ref_>\n ) => {\n const delayMs = Duration.toMillis(delay);\n const functionReference = Ref.getFunctionReference(ref);\n const encodedArgs = Ref.encodeArgsSync(\n ref,\n (args[0] ?? {}) as Ref.Args<Ref_>,\n );\n\n return Effect.promise(() =>\n scheduler.runAfter(delayMs, functionReference, encodedArgs),\n );\n },\n runAt: <Ref_ extends Ref.AnyMutation | Ref.AnyAction>(\n dateTime: DateTime.DateTime,\n ref: Ref_,\n ...args: OptionalArgs<Ref_>\n ) => {\n const timestamp = DateTime.toEpochMillis(dateTime);\n const functionReference = Ref.getFunctionReference(ref);\n const encodedArgs = Ref.encodeArgsSync(\n ref,\n (args[0] ?? {}) as Ref.Args<Ref_>,\n );\n\n return Effect.promise(() =>\n scheduler.runAt(timestamp, functionReference, encodedArgs),\n );\n },\n});\n\nexport const Scheduler = Context.GenericTag<ReturnType<typeof make>>(\n \"@confect/server/Scheduler\",\n);\nexport type Scheduler = typeof Scheduler.Identifier;\n\nexport const layer = (scheduler: ConvexScheduler) =>\n Layer.succeed(Scheduler, make(scheduler));\n"],"mappings":";;;;;;;;;AASA,MAAM,QAAQ,eAAgC;CAC5C,WACE,OACA,KACA,GAAG,SACA;EACH,MAAM,UAAU,SAAS,SAAS,MAAM;EACxC,MAAM,oBAAoBA,MAAI,qBAAqB,IAAI;EACvD,MAAM,cAAcA,MAAI,eACtB,KACC,KAAK,MAAM,EAAE,CACf;AAED,SAAO,OAAO,cACZ,UAAU,SAAS,SAAS,mBAAmB,YAAY,CAC5D;;CAEH,QACE,UACA,KACA,GAAG,SACA;EACH,MAAM,YAAY,SAAS,cAAc,SAAS;EAClD,MAAM,oBAAoBA,MAAI,qBAAqB,IAAI;EACvD,MAAM,cAAcA,MAAI,eACtB,KACC,KAAK,MAAM,EAAE,CACf;AAED,SAAO,OAAO,cACZ,UAAU,MAAM,WAAW,mBAAmB,YAAY,CAC3D;;CAEJ;AAED,MAAa,YAAY,QAAQ,WAC/B,4BACD;AAGD,MAAa,SAAS,cACpB,MAAM,QAAQ,WAAW,KAAK,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@confect/server",
3
- "version": "4.0.0",
3
+ "version": "5.0.0",
4
4
  "description": "Backend bindings to the Convex platform",
5
5
  "repository": {
6
6
  "type": "git",
@@ -67,15 +67,15 @@
67
67
  "vite": "7.3.1",
68
68
  "vite-tsconfig-paths": "6.1.1",
69
69
  "vitest": "3.2.4",
70
- "@confect/cli": "4.0.0",
71
- "@confect/test": "4.0.0"
70
+ "@confect/cli": "5.0.0",
71
+ "@confect/test": "5.0.0"
72
72
  },
73
73
  "peerDependencies": {
74
74
  "@effect/platform": "^0.94.5",
75
75
  "@effect/platform-node": "^0.104.1",
76
76
  "convex": "^1.30.0",
77
77
  "effect": "^3.19.16",
78
- "@confect/core": "4.0.0"
78
+ "@confect/core": "5.0.0"
79
79
  },
80
80
  "engines": {
81
81
  "node": ">=22",
@@ -1,38 +1,13 @@
1
1
  import * as Ref from "@confect/core/Ref";
2
2
  import { type GenericActionCtx } from "convex/server";
3
- import type { ParseResult } from "effect";
4
- import { Context, Effect, Layer, Match, Schema } from "effect";
3
+ import { Context, Layer } from "effect";
5
4
 
6
5
  const make =
7
6
  (runAction: GenericActionCtx<any>["runAction"]) =>
8
- <Action extends Ref.AnyAction>(
9
- action: Action,
10
- args: Ref.Args<Action>,
11
- ): Effect.Effect<Ref.Returns<Action>, ParseResult.ParseError> =>
12
- Effect.gen(function* () {
13
- const functionSpec = Ref.getFunctionSpec(action);
14
- const functionName = Ref.getConvexFunctionName(action);
15
-
16
- return yield* Match.value(functionSpec.functionProvenance).pipe(
17
- Match.tag("Confect", (confectFunctionSpec) =>
18
- Effect.gen(function* () {
19
- const encodedArgs = yield* Schema.encode(confectFunctionSpec.args)(
20
- args,
21
- );
22
- const encodedReturns = yield* Effect.promise(() =>
23
- runAction(functionName as any, encodedArgs),
24
- );
25
- return yield* Schema.decode(confectFunctionSpec.returns)(
26
- encodedReturns,
27
- );
28
- }),
29
- ),
30
- Match.tag("Convex", () =>
31
- Effect.promise(() => runAction(functionName as any, args as any)),
32
- ),
33
- Match.exhaustive,
34
- );
35
- });
7
+ <Action extends Ref.AnyAction>(action: Action, args: Ref.Args<Action>) =>
8
+ Ref.runWithCodec(action, args, (functionReference, encodedArgs) =>
9
+ runAction(functionReference, encodedArgs),
10
+ );
36
11
 
37
12
  export const ActionRunner = Context.GenericTag<ReturnType<typeof make>>(
38
13
  "@confect/server/ActionRunner",
package/src/CronJobs.ts CHANGED
@@ -1,8 +1,5 @@
1
1
  import { Ref } from "@confect/core";
2
- import type {
3
- CronJob as ConvexCronJob,
4
- SchedulableFunctionReference,
5
- } from "convex/server";
2
+ import type { CronJob as ConvexCronJob } from "convex/server";
6
3
  import { cronJobs as makeConvexCrons, type Crons } from "convex/server";
7
4
  import {
8
5
  Array,
@@ -13,7 +10,6 @@ import {
13
10
  pipe,
14
11
  Predicate,
15
12
  Record,
16
- Schema,
17
13
  } from "effect";
18
14
  import type * as CronJob from "./CronJob";
19
15
 
@@ -39,25 +35,15 @@ const Proto = {
39
35
  crons: { ...this.convexCronJobs.crons },
40
36
  });
41
37
 
42
- const schedulableFunctionReference = Ref.getConvexFunctionName(
43
- cronJob.ref,
44
- ) as unknown as SchedulableFunctionReference;
45
-
46
- const functionSpec = Ref.getFunctionSpec(cronJob.ref);
47
- const encodedArgs = Match.value(functionSpec.functionProvenance).pipe(
48
- Match.tag("Confect", (confect) =>
49
- Schema.encodeSync(confect.args)(cronJob.args),
50
- ),
51
- Match.tag("Convex", () => cronJob.args),
52
- Match.exhaustive,
53
- );
38
+ const functionReference = Ref.getFunctionReference(cronJob.ref);
39
+ const encodedArgs = Ref.encodeArgsSync(cronJob.ref, cronJob.args);
54
40
 
55
41
  Match.value(cronJob.schedule).pipe(
56
42
  Match.when(Cron.isCron, (cron) => {
57
43
  newConvexCrons.cron(
58
44
  cronJob.identifier,
59
45
  cronToConvexCronString(cron),
60
- schedulableFunctionReference,
46
+ functionReference,
61
47
  encodedArgs,
62
48
  );
63
49
  }),
@@ -65,7 +51,7 @@ const Proto = {
65
51
  newConvexCrons.interval(
66
52
  cronJob.identifier,
67
53
  durationToConvexIntervalSchedule(duration),
68
- schedulableFunctionReference,
54
+ functionReference,
69
55
  encodedArgs,
70
56
  );
71
57
  }),
@@ -1,38 +1,16 @@
1
1
  import * as Ref from "@confect/core/Ref";
2
2
  import { type GenericMutationCtx } from "convex/server";
3
- import type { ParseResult } from "effect";
4
- import { Context, Effect, Layer, Match, Schema } from "effect";
3
+ import { Context, Layer, Schema } from "effect";
5
4
 
6
5
  const make =
7
6
  (runMutation: GenericMutationCtx<any>["runMutation"]) =>
8
7
  <Mutation extends Ref.AnyMutation>(
9
8
  mutation: Mutation,
10
9
  args: Ref.Args<Mutation>,
11
- ): Effect.Effect<Ref.Returns<Mutation>, ParseResult.ParseError> =>
12
- Effect.gen(function* () {
13
- const functionSpec = Ref.getFunctionSpec(mutation);
14
- const functionName = Ref.getConvexFunctionName(mutation);
15
-
16
- return yield* Match.value(functionSpec.functionProvenance).pipe(
17
- Match.tag("Confect", (confectFunctionSpec) =>
18
- Effect.gen(function* () {
19
- const encodedArgs = yield* Schema.encode(confectFunctionSpec.args)(
20
- args,
21
- );
22
- const encodedReturns = yield* Effect.promise(() =>
23
- runMutation(functionName as any, encodedArgs),
24
- );
25
- return yield* Schema.decode(confectFunctionSpec.returns)(
26
- encodedReturns,
27
- );
28
- }),
29
- ),
30
- Match.tag("Convex", () =>
31
- Effect.promise(() => runMutation(functionName as any, args as any)),
32
- ),
33
- Match.exhaustive,
34
- );
35
- });
10
+ ) =>
11
+ Ref.runWithCodec(mutation, args, (functionReference, encodedArgs) =>
12
+ runMutation(functionReference, encodedArgs),
13
+ );
36
14
 
37
15
  export const MutationRunner = Context.GenericTag<ReturnType<typeof make>>(
38
16
  "@confect/server/MutationRunner",
@@ -1,38 +1,13 @@
1
1
  import * as Ref from "@confect/core/Ref";
2
2
  import { type GenericQueryCtx } from "convex/server";
3
- import type { ParseResult } from "effect";
4
- import { Context, Effect, Layer, Match, Schema } from "effect";
3
+ import { Context, Layer } from "effect";
5
4
 
6
5
  const make =
7
6
  (runQuery: GenericQueryCtx<any>["runQuery"]) =>
8
- <Query extends Ref.AnyQuery>(
9
- query: Query,
10
- args: Ref.Args<Query>,
11
- ): Effect.Effect<Ref.Returns<Query>, ParseResult.ParseError> =>
12
- Effect.gen(function* () {
13
- const functionSpec = Ref.getFunctionSpec(query);
14
- const functionName = Ref.getConvexFunctionName(query);
15
-
16
- return yield* Match.value(functionSpec.functionProvenance).pipe(
17
- Match.tag("Confect", (confectFunctionSpec) =>
18
- Effect.gen(function* () {
19
- const encodedArgs = yield* Schema.encode(confectFunctionSpec.args)(
20
- args,
21
- );
22
- const encodedReturns = yield* Effect.promise(() =>
23
- runQuery(functionName as any, encodedArgs),
24
- );
25
- return yield* Schema.decode(confectFunctionSpec.returns)(
26
- encodedReturns,
27
- );
28
- }),
29
- ),
30
- Match.tag("Convex", () =>
31
- Effect.promise(() => runQuery(functionName as any, args as any)),
32
- ),
33
- Match.exhaustive,
34
- );
35
- });
7
+ <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>) =>
8
+ Ref.runWithCodec(query, args, (functionReference, encodedArgs) =>
9
+ runQuery(functionReference, encodedArgs),
10
+ );
36
11
 
37
12
  export const QueryRunner = Context.GenericTag<ReturnType<typeof make>>(
38
13
  "@confect/server/QueryRunner",
package/src/Scheduler.ts CHANGED
@@ -1,31 +1,43 @@
1
- import type {
2
- OptionalRestArgs,
3
- SchedulableFunctionReference,
4
- Scheduler as ConvexScheduler,
5
- } from "convex/server";
1
+ import { Ref } from "@confect/core";
2
+ import type { Scheduler as ConvexScheduler } from "convex/server";
6
3
  import { Context, DateTime, Duration, Effect, Layer } from "effect";
7
4
 
5
+ type OptionalArgs<Ref_ extends Ref.AnyMutation | Ref.AnyAction> =
6
+ keyof Ref.Args<Ref_> extends never
7
+ ? [args?: Ref.Args<Ref_>]
8
+ : [args: Ref.Args<Ref_>];
9
+
8
10
  const make = (scheduler: ConvexScheduler) => ({
9
- runAfter: <FuncRef extends SchedulableFunctionReference>(
11
+ runAfter: <Ref_ extends Ref.AnyMutation | Ref.AnyAction>(
10
12
  delay: Duration.Duration,
11
- functionReference: FuncRef,
12
- ...args: OptionalRestArgs<FuncRef>
13
+ ref: Ref_,
14
+ ...args: OptionalArgs<Ref_>
13
15
  ) => {
14
16
  const delayMs = Duration.toMillis(delay);
17
+ const functionReference = Ref.getFunctionReference(ref);
18
+ const encodedArgs = Ref.encodeArgsSync(
19
+ ref,
20
+ (args[0] ?? {}) as Ref.Args<Ref_>,
21
+ );
15
22
 
16
23
  return Effect.promise(() =>
17
- scheduler.runAfter(delayMs, functionReference, ...args),
24
+ scheduler.runAfter(delayMs, functionReference, encodedArgs),
18
25
  );
19
26
  },
20
- runAt: <FuncRef extends SchedulableFunctionReference>(
27
+ runAt: <Ref_ extends Ref.AnyMutation | Ref.AnyAction>(
21
28
  dateTime: DateTime.DateTime,
22
- functionReference: FuncRef,
23
- ...args: OptionalRestArgs<FuncRef>
29
+ ref: Ref_,
30
+ ...args: OptionalArgs<Ref_>
24
31
  ) => {
25
32
  const timestamp = DateTime.toEpochMillis(dateTime);
33
+ const functionReference = Ref.getFunctionReference(ref);
34
+ const encodedArgs = Ref.encodeArgsSync(
35
+ ref,
36
+ (args[0] ?? {}) as Ref.Args<Ref_>,
37
+ );
26
38
 
27
39
  return Effect.promise(() =>
28
- scheduler.runAt(timestamp, functionReference, ...args),
40
+ scheduler.runAt(timestamp, functionReference, encodedArgs),
29
41
  );
30
42
  },
31
43
  });