@confect/server 4.0.0 → 6.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 +27 -0
- package/dist/ActionRunner.d.ts +5 -3
- package/dist/ActionRunner.d.ts.map +1 -1
- package/dist/ActionRunner.js +2 -10
- package/dist/ActionRunner.js.map +1 -1
- package/dist/CronJob.d.ts +1 -2
- package/dist/CronJob.d.ts.map +1 -1
- package/dist/CronJob.js.map +1 -1
- package/dist/CronJobs.d.ts +6 -14
- package/dist/CronJobs.d.ts.map +1 -1
- package/dist/CronJobs.js +5 -6
- package/dist/CronJobs.js.map +1 -1
- package/dist/DatabaseReader.d.ts +1 -1
- package/dist/DatabaseWriter.d.ts +4 -4
- package/dist/MutationRunner.d.ts +5 -3
- package/dist/MutationRunner.d.ts.map +1 -1
- package/dist/MutationRunner.js +2 -10
- package/dist/MutationRunner.js.map +1 -1
- package/dist/QueryInitializer.d.ts +1 -1
- package/dist/QueryInitializer.d.ts.map +1 -1
- package/dist/QueryRunner.d.ts +5 -3
- package/dist/QueryRunner.d.ts.map +1 -1
- package/dist/QueryRunner.js +2 -10
- package/dist/QueryRunner.js.map +1 -1
- package/dist/RegisteredConvexFunction.d.ts +8 -8
- package/dist/RegisteredConvexFunction.d.ts.map +1 -1
- package/dist/RegisteredConvexFunction.js +24 -2
- package/dist/RegisteredConvexFunction.js.map +1 -1
- package/dist/RegisteredFunction.d.ts +5 -5
- package/dist/RegisteredFunction.d.ts.map +1 -1
- package/dist/Scheduler.d.ts +8 -7
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +9 -4
- package/dist/Scheduler.js.map +1 -1
- package/package.json +4 -4
- package/src/ActionRunner.ts +9 -28
- package/src/CronJob.ts +1 -4
- package/src/CronJobs.ts +5 -19
- package/src/MutationRunner.ts +9 -28
- package/src/QueryRunner.ts +9 -28
- package/src/RegisteredConvexFunction.ts +64 -24
- package/src/Scheduler.ts +20 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# @confect/server
|
|
2
2
|
|
|
3
|
+
## 6.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- 228589b: Fixed an issue where the cached value for any Confect query would be regularly busted by a hidden Effect dependency on `Date.now()`. This has been solved by stubbing `Date.now()` to always return the Unix epoch (`0`). If you previously relied on `Date.now()` in your queries, (1) try to rewrite them to avoid it (see [Convex best practices](https://docs.convex.dev/understanding/best-practices/#date-in-queries) on using dates in queries), or (2) use Effect's `Clock` service, which will still return an unstubbed timestamp.
|
|
8
|
+
|
|
9
|
+
### Minor Changes
|
|
10
|
+
|
|
11
|
+
- df95ce7: Add `Ref.OptionalArgs` type utility to `@confect/core` for conditionally optional function args. `QueryRunner`, `MutationRunner`, and `ActionRunner` now accept optional args for no-arg Confect functions. `useQuery`, `useMutation`, and `useAction` now accept optional args for no-arg Confect functions. `TestConfect` `query`/`mutation`/`action` helpers now accept optional args for no-arg Confect functions.
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- a8083e8: Fix table field path inference when a schema has a `name` field and an optional Convex ID or bytes field.
|
|
16
|
+
- Updated dependencies [df95ce7]
|
|
17
|
+
- Updated dependencies [a8083e8]
|
|
18
|
+
- @confect/core@6.0.0
|
|
19
|
+
|
|
20
|
+
## 5.0.0
|
|
21
|
+
|
|
22
|
+
### Minor Changes
|
|
23
|
+
|
|
24
|
+
- 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.
|
|
25
|
+
|
|
26
|
+
### Patch Changes
|
|
27
|
+
|
|
28
|
+
- @confect/core@5.0.0
|
|
29
|
+
|
|
3
30
|
## 4.0.0
|
|
4
31
|
|
|
5
32
|
### Major Changes
|
package/dist/ActionRunner.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { Context,
|
|
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.
|
|
11
|
+
declare const ActionRunner: Context.Tag<(<Action extends Ref$1.AnyAction>(action: Action, ...args: Ref$1.OptionalArgs<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.OptionalArgs<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.
|
|
13
|
+
declare const layer: (runAction: GenericActionCtx<any>["runAction"]) => Layer.Layer<(<Action extends Ref$1.AnyAction>(action: Action, ...args: Ref$1.OptionalArgs<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":"
|
|
1
|
+
{"version":3,"file":"ActionRunner.d.ts","names":[],"sources":["../src/ActionRunner.ts"],"mappings":";;;;;;;;;;cAiBa,YAAA,EAAY,OAAA,CAAA,GAAA,kBAXP,KAAA,CAAI,SAAA,EAAS,MAAA,EACnB,MAAA,KAAM,IAAA,EACL,KAAA,CAAI,YAAA,CAAa,MAAA,MAAO,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,MAAA,GAAA,mBAAA,CAAA,UAAA,2BAFnB,KAAA,CAAI,SAAA,EAAS,MAAA,EACnB,MAAA,KAAM,IAAA,EACL,KAAA,CAAI,YAAA,CAAa,MAAA,MAAO,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,MAAA,GAAA,mBAAA,CAAA,UAAA;AAAA,KAYzB,YAAA,UAAsB,YAAA,CAAa,UAAA;AAAA,cAElC,KAAA,GAAS,SAAA,EAAW,gBAAA,uBAAkC,KAAA,CAAA,KAAA,kBAhBjD,KAAA,CAAI,SAAA,EAAS,MAAA,EACnB,MAAA,KAAM,IAAA,EACL,KAAA,CAAI,YAAA,CAAa,MAAA,MAAO,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,MAAA,GAAA,mBAAA,CAAA,UAAA"}
|
package/dist/ActionRunner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { Context,
|
|
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) =>
|
|
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[0] ?? {}, (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
|
|
package/dist/ActionRunner.js.map
CHANGED
|
@@ -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
|
|
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>(\n action: Action,\n ...args: Ref.OptionalArgs<Action>\n ) =>\n Ref.runWithCodec(\n action,\n (args[0] ?? {}) as Ref.Args<Action>,\n (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,eAEC,QACA,GAAG,SAEHA,MAAI,aACF,QACC,KAAK,MAAM,EAAE,GACb,mBAAmB,gBAClB,UAAU,mBAAmB,YAAY,CAC5C;AAEL,MAAa,eAAe,QAAQ,WAClC,+BACD;AAGD,MAAa,SAAS,cACpB,MAAM,QAAQ,cAAc,KAAK,UAAU,CAAC"}
|
package/dist/CronJob.d.ts
CHANGED
|
@@ -15,8 +15,7 @@ interface CronJob {
|
|
|
15
15
|
readonly args: Record<string, unknown>;
|
|
16
16
|
}
|
|
17
17
|
declare const isCronJob: (u: unknown) => u is CronJob;
|
|
18
|
-
|
|
19
|
-
declare const make: <R extends Ref$1.AnyMutation | Ref$1.AnyAction>(identifier: string, schedule: Cron.Cron | Duration.Duration, ref: R, ...args: OptionalArgs<R>) => CronJob;
|
|
18
|
+
declare const make: <R extends Ref$1.AnyMutation | Ref$1.AnyAction>(identifier: string, schedule: Cron.Cron | Duration.Duration, ref: R, ...args: Ref$1.OptionalArgs<R>) => CronJob;
|
|
20
19
|
//#endregion
|
|
21
20
|
export { CronJob, CronJob_d_exports, TypeId, isCronJob, make };
|
|
22
21
|
//# sourceMappingURL=CronJob.d.ts.map
|
package/dist/CronJob.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CronJob.d.ts","names":[],"sources":["../src/CronJob.ts"],"mappings":";;;;;;;cAIa,MAAA;AAAA,KACD,MAAA,UAAgB,MAAA;AAAA,UAEX,OAAA;EAAA,UACL,MAAA,GAAS,MAAA;EAAA,SAEV,UAAA;EAAA,SACA,QAAA,EAAU,IAAA,CAAK,IAAA,GAAO,QAAA,CAAS,QAAA;EAAA,SAC/B,GAAA,EAAK,KAAA,CAAI,WAAA,GAAc,KAAA,CAAI,SAAA;EAAA,SAC3B,IAAA,EAAM,MAAA;AAAA;AAAA,cAGJ,SAAA,GAAa,CAAA,cAAa,CAAA,IAAK,OAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"CronJob.d.ts","names":[],"sources":["../src/CronJob.ts"],"mappings":";;;;;;;cAIa,MAAA;AAAA,KACD,MAAA,UAAgB,MAAA;AAAA,UAEX,OAAA;EAAA,UACL,MAAA,GAAS,MAAA;EAAA,SAEV,UAAA;EAAA,SACA,QAAA,EAAU,IAAA,CAAK,IAAA,GAAO,QAAA,CAAS,QAAA;EAAA,SAC/B,GAAA,EAAK,KAAA,CAAI,WAAA,GAAc,KAAA,CAAI,SAAA;EAAA,SAC3B,IAAA,EAAM,MAAA;AAAA;AAAA,cAGJ,SAAA,GAAa,CAAA,cAAa,CAAA,IAAK,OAAA;AAAA,cAoB/B,IAAA,aAAkB,KAAA,CAAI,WAAA,GAAc,KAAA,CAAI,SAAA,EACnD,UAAA,UACA,QAAA,EAAU,IAAA,CAAK,IAAA,GAAO,QAAA,CAAS,QAAA,EAC/B,GAAA,EAAK,CAAA,KACF,IAAA,EAAM,KAAA,CAAI,YAAA,CAAa,CAAA,MACzB,OAAA"}
|
package/dist/CronJob.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CronJob.js","names":[],"sources":["../src/CronJob.ts"],"sourcesContent":["import type { Ref } from \"@confect/core\";\nimport type { Cron, Duration } from \"effect\";\nimport { Predicate } from \"effect\";\n\nexport const TypeId = \"@confect/server/CronJob\";\nexport type TypeId = typeof TypeId;\n\nexport interface CronJob {\n readonly [TypeId]: TypeId;\n\n readonly identifier: string;\n readonly schedule: Cron.Cron | Duration.Duration;\n readonly ref: Ref.AnyMutation | Ref.AnyAction;\n readonly args: Record<string, unknown>;\n}\n\nexport const isCronJob = (u: unknown): u is CronJob =>\n Predicate.hasProperty(u, TypeId);\n\
|
|
1
|
+
{"version":3,"file":"CronJob.js","names":[],"sources":["../src/CronJob.ts"],"sourcesContent":["import type { Ref } from \"@confect/core\";\nimport type { Cron, Duration } from \"effect\";\nimport { Predicate } from \"effect\";\n\nexport const TypeId = \"@confect/server/CronJob\";\nexport type TypeId = typeof TypeId;\n\nexport interface CronJob {\n readonly [TypeId]: TypeId;\n\n readonly identifier: string;\n readonly schedule: Cron.Cron | Duration.Duration;\n readonly ref: Ref.AnyMutation | Ref.AnyAction;\n readonly args: Record<string, unknown>;\n}\n\nexport const isCronJob = (u: unknown): u is CronJob =>\n Predicate.hasProperty(u, TypeId);\n\nconst Proto = {\n [TypeId]: TypeId,\n};\n\nconst makeProto = (\n identifier: string,\n schedule: Cron.Cron | Duration.Duration,\n ref: Ref.AnyMutation | Ref.AnyAction,\n args: Record<string, unknown>,\n): CronJob =>\n Object.assign(Object.create(Proto), {\n identifier,\n schedule,\n ref,\n args,\n });\n\nexport const make = <R extends Ref.AnyMutation | Ref.AnyAction>(\n identifier: string,\n schedule: Cron.Cron | Duration.Duration,\n ref: R,\n ...args: Ref.OptionalArgs<R>\n): CronJob => makeProto(identifier, schedule, ref, args[0] ?? {});\n"],"mappings":";;;;;;;;;AAIA,MAAa,SAAS;AAYtB,MAAa,aAAa,MACxB,UAAU,YAAY,GAAG,OAAO;AAElC,MAAM,QAAQ,GACX,SAAS,QACX;AAED,MAAM,aACJ,YACA,UACA,KACA,SAEA,OAAO,OAAO,OAAO,OAAO,MAAM,EAAE;CAClC;CACA;CACA;CACA;CACD,CAAC;AAEJ,MAAa,QACX,YACA,UACA,KACA,GAAG,SACS,UAAU,YAAY,UAAU,KAAK,KAAK,MAAM,EAAE,CAAC"}
|
package/dist/CronJobs.d.ts
CHANGED
|
@@ -1,28 +1,20 @@
|
|
|
1
|
-
import { CronJob
|
|
2
|
-
import {
|
|
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,
|
|
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
|
|
12
|
+
readonly cronJobs: Record<string, CronJob>;
|
|
14
13
|
readonly convexCronJobs: Crons;
|
|
15
|
-
add(cron: CronJob
|
|
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,
|
|
19
|
+
export { CronJobs, CronJobs_d_exports, TypeId, isCronJobs, make };
|
|
28
20
|
//# sourceMappingURL=CronJobs.d.ts.map
|
package/dist/CronJobs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CronJobs.d.ts","names":[],"sources":["../src/CronJobs.ts"],"mappings":"
|
|
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,
|
|
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
|
|
21
|
-
const
|
|
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),
|
|
23
|
+
newConvexCrons.cron(cronJob.identifier, cronToConvexCronString(cron), functionReference, encodedArgs);
|
|
25
24
|
}), Match.when(Duration.isDuration, (duration) => {
|
|
26
|
-
newConvexCrons.interval(cronJob.identifier, durationToConvexIntervalSchedule(duration),
|
|
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
|
}
|
package/dist/CronJobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CronJobs.js","names":["makeConvexCrons","Ref"],"sources":["../src/CronJobs.ts"],"sourcesContent":["import { Ref } from \"@confect/core\";\nimport type {
|
|
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"}
|
package/dist/DatabaseReader.d.ts
CHANGED
|
@@ -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 {
|
package/dist/DatabaseWriter.d.ts
CHANGED
|
@@ -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,
|
|
16
|
+
patch: (id: GenericId<TableName>, patchedValues: Partial<WithoutSystemFields<DocumentByName<FromSchema<DatabaseSchema_>, TableName>>>) => Effect.Effect<void, DocumentDecodeError | GetByIdFailure | 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,
|
|
24
|
+
patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, DocumentDecodeError | GetByIdFailure | 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,
|
|
31
|
+
patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, DocumentDecodeError | GetByIdFailure | 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,
|
|
40
|
+
patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DocumentByName<FromSchema<DatabaseSchema_>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, DocumentDecodeError | GetByIdFailure | 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
|
};
|
package/dist/MutationRunner.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { Context,
|
|
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.
|
|
11
|
+
declare const MutationRunner: Context.Tag<(<Mutation extends Ref$1.AnyMutation>(mutation: Mutation, ...args: Ref$1.OptionalArgs<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.OptionalArgs<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.
|
|
13
|
+
declare const layer: (runMutation: GenericMutationCtx<any>["runMutation"]) => Layer.Layer<(<Mutation extends Ref$1.AnyMutation>(mutation: Mutation, ...args: Ref$1.OptionalArgs<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":"
|
|
1
|
+
{"version":3,"file":"MutationRunner.d.ts","names":[],"sources":["../src/MutationRunner.ts"],"mappings":";;;;;;;;;;cAiBa,cAAA,EAAc,OAAA,CAAA,GAAA,oBAXP,KAAA,CAAI,WAAA,EAAW,QAAA,EACrB,QAAA,KAAQ,IAAA,EACT,KAAA,CAAI,YAAA,CAAa,QAAA,MAAS,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,QAAA,GAAA,mBAAA,CAAA,UAAA,6BAFnB,KAAA,CAAI,WAAA,EAAW,QAAA,EACrB,QAAA,KAAQ,IAAA,EACT,KAAA,CAAI,YAAA,CAAa,QAAA,MAAS,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,QAAA,GAAA,mBAAA,CAAA,UAAA;AAAA,KAY3B,cAAA,UAAwB,cAAA,CAAe,UAAA;AAAA,cAEtC,KAAA,GAAS,WAAA,EAAa,kBAAA,yBAAsC,KAAA,CAAA,KAAA,oBAhBrD,KAAA,CAAI,WAAA,EAAW,QAAA,EACrB,QAAA,KAAQ,IAAA,EACT,KAAA,CAAI,YAAA,CAAa,QAAA,MAAS,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,QAAA,GAAA,mBAAA,CAAA,UAAA;AAAA,cAeY,qBAAA;;;;;;cAEtC,gBAAA,SAAyB,qBAAA;EAAA,IAQvB,OAAA,CAAA;AAAA"}
|
package/dist/MutationRunner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { Context,
|
|
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) =>
|
|
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[0] ?? {}, (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
|
|
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.OptionalArgs<Mutation>\n ) =>\n Ref.runWithCodec(\n mutation,\n (args[0] ?? {}) as Ref.Args<Mutation>,\n (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,GAAG,SAEHA,MAAI,aACF,UACC,KAAK,MAAM,EAAE,GACb,mBAAmB,gBAClB,YAAY,mBAAmB,YAAY,CAC9C;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"}
|
|
@@ -24,7 +24,7 @@ type QueryInitializer<DataModel_ extends AnyWithProps$2, TableName extends Table
|
|
|
24
24
|
readonly search: <IndexName extends keyof SearchIndexes<_ConvexTableInfo>>(indexName: IndexName, searchFilter: (q: SearchFilterBuilder<DocumentByInfo<_ConvexTableInfo>, NamedSearchIndex<_ConvexTableInfo, IndexName>>) => SearchFilter) => OrderedQuery$1<_TableInfo, TableName>;
|
|
25
25
|
};
|
|
26
26
|
declare const make: <Tables extends AnyWithProps, TableName extends Name<Tables>>(tableName: TableName, convexDatabaseReader: BaseDatabaseReader<ToConvex<FromTables<Tables>>>, table: WithName<Tables, TableName>) => QueryInitializer<DataModel<Tables>, TableName, TableInfoWithName<DataModel<Tables>, TableName>, TableInfoWithName_<DataModel<Tables>, TableName>>;
|
|
27
|
-
declare const getById: <Tables extends AnyWithProps, TableName extends Name<Tables>>(tableName: TableName, convexDatabaseReader: BaseDatabaseReader<ToConvex<FromTables<Tables>>>, table: WithName<Tables, TableName>) => (id: GenericId<TableName>) => Effect.Effect<any,
|
|
27
|
+
declare const getById: <Tables extends AnyWithProps, TableName extends Name<Tables>>(tableName: TableName, convexDatabaseReader: BaseDatabaseReader<ToConvex<FromTables<Tables>>>, table: WithName<Tables, TableName>) => (id: GenericId<TableName>) => Effect.Effect<any, DocumentDecodeError | GetByIdFailure, never>;
|
|
28
28
|
declare const GetByIdFailure_base: Schema.TaggedErrorClass<GetByIdFailure, "GetByIdFailure", {
|
|
29
29
|
readonly _tag: Schema.tag<"GetByIdFailure">;
|
|
30
30
|
} & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryInitializer.d.ts","names":[],"sources":["../src/QueryInitializer.ts"],"mappings":";;;;;;;;;;;;;;KA6BK,gBAAA,oBACgB,cAAA,oBACD,UAAA,CAAqB,UAAA,4BACd,gBAAA,qBACN,cAAA;EAAA,SAEV,GAAA;IAAA,CAEL,EAAA,EAAI,SAAA,CAAU,SAAA,IACb,MAAA,CAAO,MAAA,CACR,UAAA,cACA,mBAAA,GAA+B,cAAA;IAAA,yBAER,OAAA,CAAQ,gBAAA,GAC/B,SAAA,EAAW,SAAA,KACR,gBAAA,EAAkB,oBAAA,CACnB,QAAA,CAAmB,UAAA,GACnB,SAAA,EACA,OAAA,CAAQ,gBAAA,EAAkB,SAAA,KAE3B,MAAA,CAAO,MAAA,CACR,UAAA,cACA,mBAAA,GAA+B,iBAAA;EAAA;EAAA,SAG1B,KAAA;IAAA,yBACkB,OAAA,CAAQ,gBAAA,GAC/B,SAAA,EAAW,SAAA,EACX,UAAA,IACE,CAAA,EAAG,iBAAA,CACD,UAAA,oBACA,UAAA,CAAW,gBAAA,EAAkB,SAAA,OAE5B,UAAA,EACL,KAAA,oBACC,cAAA,CAA0B,UAAA,EAAY,SAAA;IAAA,yBAChB,OAAA,CAAQ,gBAAA,GAC/B,SAAA,EAAW,SAAA,EACX,KAAA,oBACC,cAAA,CAA0B,UAAA,EAAY,SAAA;EAAA;EAAA,SAElC,MAAA,2BAAiC,aAAA,CAAc,gBAAA,GACtD,SAAA,EAAW,SAAA,EACX,YAAA,GACE,CAAA,EAAG,mBAAA,CACD,cAAA,CAAe,gBAAA,GACf,gBAAA,CAAiB,gBAAA,EAAkB,SAAA,OAElC,YAAA,KACF,cAAA,CAA0B,UAAA,EAAY,SAAA;AAAA;AAAA,cAGhC,IAAA,kBACI,YAAA,oBACG,IAAA,CAAW,MAAA,GAE7B,SAAA,EAAW,SAAA,EACX,oBAAA,EAAsB,kBAAA,CACpB,QAAA,CAAmB,UAAA,CAAqB,MAAA,KAE1C,KAAA,EAAO,QAAA,CAAe,MAAA,EAAQ,SAAA,MAC7B,gBAAA,CACD,SAAA,CAAoB,MAAA,GACpB,SAAA,EACA,iBAAA,CAA4B,SAAA,CAAoB,MAAA,GAAS,SAAA,GACzD,kBAAA,CAA6B,SAAA,CAAoB,MAAA,GAAS,SAAA;AAAA,cA2K/C,OAAA,kBACK,YAAA,oBAAsC,IAAA,CAAW,MAAA,GAC/D,SAAA,EAAW,SAAA,EACX,oBAAA,EAAsB,kBAAA,CACpB,QAAA,CAAmB,UAAA,CAAqB,MAAA,KAE1C,KAAA,EAAO,QAAA,CAAe,MAAA,EAAQ,SAAA,OAE/B,EAAA,EAAI,SAAA,CAAU,SAAA,MAAU,MAAA,CAAA,MAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"QueryInitializer.d.ts","names":[],"sources":["../src/QueryInitializer.ts"],"mappings":";;;;;;;;;;;;;;KA6BK,gBAAA,oBACgB,cAAA,oBACD,UAAA,CAAqB,UAAA,4BACd,gBAAA,qBACN,cAAA;EAAA,SAEV,GAAA;IAAA,CAEL,EAAA,EAAI,SAAA,CAAU,SAAA,IACb,MAAA,CAAO,MAAA,CACR,UAAA,cACA,mBAAA,GAA+B,cAAA;IAAA,yBAER,OAAA,CAAQ,gBAAA,GAC/B,SAAA,EAAW,SAAA,KACR,gBAAA,EAAkB,oBAAA,CACnB,QAAA,CAAmB,UAAA,GACnB,SAAA,EACA,OAAA,CAAQ,gBAAA,EAAkB,SAAA,KAE3B,MAAA,CAAO,MAAA,CACR,UAAA,cACA,mBAAA,GAA+B,iBAAA;EAAA;EAAA,SAG1B,KAAA;IAAA,yBACkB,OAAA,CAAQ,gBAAA,GAC/B,SAAA,EAAW,SAAA,EACX,UAAA,IACE,CAAA,EAAG,iBAAA,CACD,UAAA,oBACA,UAAA,CAAW,gBAAA,EAAkB,SAAA,OAE5B,UAAA,EACL,KAAA,oBACC,cAAA,CAA0B,UAAA,EAAY,SAAA;IAAA,yBAChB,OAAA,CAAQ,gBAAA,GAC/B,SAAA,EAAW,SAAA,EACX,KAAA,oBACC,cAAA,CAA0B,UAAA,EAAY,SAAA;EAAA;EAAA,SAElC,MAAA,2BAAiC,aAAA,CAAc,gBAAA,GACtD,SAAA,EAAW,SAAA,EACX,YAAA,GACE,CAAA,EAAG,mBAAA,CACD,cAAA,CAAe,gBAAA,GACf,gBAAA,CAAiB,gBAAA,EAAkB,SAAA,OAElC,YAAA,KACF,cAAA,CAA0B,UAAA,EAAY,SAAA;AAAA;AAAA,cAGhC,IAAA,kBACI,YAAA,oBACG,IAAA,CAAW,MAAA,GAE7B,SAAA,EAAW,SAAA,EACX,oBAAA,EAAsB,kBAAA,CACpB,QAAA,CAAmB,UAAA,CAAqB,MAAA,KAE1C,KAAA,EAAO,QAAA,CAAe,MAAA,EAAQ,SAAA,MAC7B,gBAAA,CACD,SAAA,CAAoB,MAAA,GACpB,SAAA,EACA,iBAAA,CAA4B,SAAA,CAAoB,MAAA,GAAS,SAAA,GACzD,kBAAA,CAA6B,SAAA,CAAoB,MAAA,GAAS,SAAA;AAAA,cA2K/C,OAAA,kBACK,YAAA,oBAAsC,IAAA,CAAW,MAAA,GAC/D,SAAA,EAAW,SAAA,EACX,oBAAA,EAAsB,kBAAA,CACpB,QAAA,CAAmB,UAAA,CAAqB,MAAA,KAE1C,KAAA,EAAO,QAAA,CAAe,MAAA,EAAQ,SAAA,OAE/B,EAAA,EAAI,SAAA,CAAU,SAAA,MAAU,MAAA,CAAA,MAAA,MAAA,mBAAA,GAAA,cAAA;AAAA,cAOrB,mBAAA;;;;;;cAEO,cAAA,SAAuB,mBAAA;EAAA,IAOrB,OAAA,CAAA;AAAA;AAAA,cAOd,sBAAA;;;;;;;cAEY,iBAAA,SAA0B,sBAAA;EAAA,IAQxB,OAAA,CAAA;AAAA"}
|
package/dist/QueryRunner.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { Context,
|
|
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.
|
|
11
|
+
declare const QueryRunner: Context.Tag<(<Query extends Ref$1.AnyQuery>(query: Query, ...args: Ref$1.OptionalArgs<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.OptionalArgs<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.
|
|
13
|
+
declare const layer: (runQuery: GenericQueryCtx<any>["runQuery"]) => Layer.Layer<(<Query extends Ref$1.AnyQuery>(query: Query, ...args: Ref$1.OptionalArgs<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":"
|
|
1
|
+
{"version":3,"file":"QueryRunner.d.ts","names":[],"sources":["../src/QueryRunner.ts"],"mappings":";;;;;;;;;;cAiBa,WAAA,EAAW,OAAA,CAAA,GAAA,iBAXP,KAAA,CAAI,QAAA,EAAQ,KAAA,EAClB,KAAA,KAAK,IAAA,EACH,KAAA,CAAI,YAAA,CAAa,KAAA,MAAM,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,KAAA,GAAA,mBAAA,CAAA,UAAA,0BAFnB,KAAA,CAAI,QAAA,EAAQ,KAAA,EAClB,KAAA,KAAK,IAAA,EACH,KAAA,CAAI,YAAA,CAAa,KAAA,MAAM,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,KAAA,GAAA,mBAAA,CAAA,UAAA;AAAA,KAYxB,WAAA,UAAqB,WAAA,CAAY,UAAA;AAAA,cAEhC,KAAA,GAAS,QAAA,EAAU,eAAA,sBAAgC,KAAA,CAAA,KAAA,iBAhB/C,KAAA,CAAI,QAAA,EAAQ,KAAA,EAClB,KAAA,KAAK,IAAA,EACH,KAAA,CAAI,YAAA,CAAa,KAAA,MAAM,cAAA,CAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,OAAA,CAAA,KAAA,GAAA,mBAAA,CAAA,UAAA"}
|
package/dist/QueryRunner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { Context,
|
|
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) =>
|
|
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[0] ?? {}, (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
|
|
package/dist/QueryRunner.js.map
CHANGED
|
@@ -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
|
|
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>(\n query: Query,\n ...args: Ref.OptionalArgs<Query>\n ) =>\n Ref.runWithCodec(\n query,\n (args[0] ?? {}) as Ref.Args<Query>,\n (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,cAEC,OACA,GAAG,SAEHA,MAAI,aACF,OACC,KAAK,MAAM,EAAE,GACb,mBAAmB,gBAClB,SAAS,mBAAmB,YAAY,CAC3C;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,10 +35,13 @@ 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<
|
|
38
|
+
declare const mutationLayer: <Schema extends AnyWithProps>(schema: Schema, ctx: GenericMutationCtx<ToConvex<FromSchema<Schema>>>) => Layer.Layer<{
|
|
39
|
+
runAfter: <Ref_ extends _confect_core_Ref0.AnyMutation | _confect_core_Ref0.AnyAction>(delay: effect_Duration0.Duration, ref: Ref_, ...args: _confect_core_Ref0.OptionalArgs<Ref_>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
|
|
40
|
+
runAt: <Ref_ extends _confect_core_Ref0.AnyMutation | _confect_core_Ref0.AnyAction>(dateTime: effect_DateTime0.DateTime, ref: Ref_, ...args: _confect_core_Ref0.OptionalArgs<Ref_>) => Effect.Effect<convex_values0.GenericId<"_scheduled_functions">, never, never>;
|
|
41
|
+
} | Auth$1 | StorageReader$1 | StorageWriter$1 | (<Query extends _confect_core_Ref0.AnyQuery>(query: Query, ...args: _confect_core_Ref0.OptionalArgs<Query>) => Effect.Effect<_confect_core_Ref0.Returns<Query>, effect_ParseResult0.ParseError, never>) | (<Mutation extends _confect_core_Ref0.AnyMutation>(mutation: Mutation, ...args: _confect_core_Ref0.OptionalArgs<Mutation>) => Effect.Effect<_confect_core_Ref0.Returns<Mutation>, effect_ParseResult0.ParseError, never>) | GenericMutationCtx<ToConvex<FromSchema<Schema>>> | {
|
|
39
42
|
table: <const TableName extends Name<IncludeSystemTables<Tables<Schema>>>>(tableName: TableName) => {
|
|
40
43
|
readonly get: {
|
|
41
|
-
(id: convex_values0.GenericId<TableName>): Effect.Effect<TableInfo<WithName<IncludeSystemTables<Tables<Schema>>, TableName>>["document"],
|
|
44
|
+
(id: convex_values0.GenericId<TableName>): Effect.Effect<TableInfo<WithName<IncludeSystemTables<Tables<Schema>>, TableName>>["document"], DocumentDecodeError | GetByIdFailure, never>;
|
|
42
45
|
<IndexName extends keyof TableInfo<WithName<IncludeSystemTables<Tables<Schema>>, TableName>>["indexes"]>(indexName: IndexName, ...indexFieldValues: _confect_core_Types0.IndexFieldTypesForEq<ToConvex<DataModel<IncludeSystemTables<Tables<Schema>>>>, TableName, TableInfo<WithName<IncludeSystemTables<Tables<Schema>>, TableName>>["indexes"][IndexName]>): Effect.Effect<TableInfo<WithName<IncludeSystemTables<Tables<Schema>>, TableName>>["document"], DocumentDecodeError | GetByIndexFailure, never>;
|
|
43
46
|
};
|
|
44
47
|
readonly index: {
|
|
@@ -50,14 +53,11 @@ declare const mutationLayer: <Schema extends AnyWithProps>(schema: Schema, ctx:
|
|
|
50
53
|
} | {
|
|
51
54
|
table: <const TableName extends TableNames<FromSchema<Schema>>>(tableName: TableName) => {
|
|
52
55
|
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,
|
|
56
|
+
patch: (id: convex_values0.GenericId<TableName>, patchedValues: Partial<convex_server0.Expand<convex_server0.BetterOmit<DocumentByName<FromSchema<Schema>, TableName>, "_id" | "_creationTime">>>) => Effect.Effect<void, DocumentDecodeError | GetByIdFailure | DocumentEncodeError, never>;
|
|
54
57
|
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
58
|
delete: (id: convex_values0.GenericId<TableName>) => Effect.Effect<void, never, never>;
|
|
56
59
|
};
|
|
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>;
|
|
60
|
+
}, 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,
|
|
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,cAyKU,aAAA,kBAAgC,YAAA,EAC3C,MAAA,EAAQ,MAAA,EACR,GAAA,EAAK,kBAAA,CAAmB,QAAA,CAAmB,UAAA,CAAqB,MAAA,QAAS,KAAA,CAAA,KAAA;0BAAlD,kBAAA,CAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;KAoBb,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"}
|
|
@@ -12,7 +12,7 @@ import { StorageWriter as StorageWriter$1 } from "./StorageWriter.js";
|
|
|
12
12
|
import { MutationCtx } from "./MutationCtx.js";
|
|
13
13
|
import { QueryCtx } from "./QueryCtx.js";
|
|
14
14
|
import { actionFunctionBase, actionLayer } from "./RegisteredFunction.js";
|
|
15
|
-
import { Effect, Layer, Match, Schema, pipe } from "effect";
|
|
15
|
+
import { Clock, Effect, Layer, Match, Schema, pipe } from "effect";
|
|
16
16
|
import { actionGeneric, internalActionGeneric, internalMutationGeneric, internalQueryGeneric, mutationGeneric, queryGeneric } from "convex/server";
|
|
17
17
|
|
|
18
18
|
//#region src/RegisteredConvexFunction.ts
|
|
@@ -42,10 +42,32 @@ const make = (api, { functionSpec, handler }) => Match.value(functionSpec.functi
|
|
|
42
42
|
}));
|
|
43
43
|
}), Match.exhaustive);
|
|
44
44
|
}), Match.exhaustive);
|
|
45
|
+
const unpatchedClock = (realDateNow) => {
|
|
46
|
+
const bigint1e6 = BigInt(1e6);
|
|
47
|
+
const unsafeCurrentTimeMillis = () => realDateNow();
|
|
48
|
+
const unsafeCurrentTimeNanos = () => BigInt(realDateNow()) * bigint1e6;
|
|
49
|
+
return {
|
|
50
|
+
...Clock.make(),
|
|
51
|
+
unsafeCurrentTimeMillis,
|
|
52
|
+
unsafeCurrentTimeNanos,
|
|
53
|
+
currentTimeMillis: Effect.sync(unsafeCurrentTimeMillis),
|
|
54
|
+
currentTimeNanos: Effect.sync(unsafeCurrentTimeNanos)
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
const withStubbedDateNow = async (queryHandler) => {
|
|
58
|
+
const realDateNow = Date.now;
|
|
59
|
+
const clock = unpatchedClock(realDateNow);
|
|
60
|
+
Date.now = () => 0;
|
|
61
|
+
try {
|
|
62
|
+
return await queryHandler(clock);
|
|
63
|
+
} finally {
|
|
64
|
+
Date.now = realDateNow;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
45
67
|
const queryFunction = (databaseSchema, { args, returns, handler }) => ({
|
|
46
68
|
args: compileArgsSchema(args),
|
|
47
69
|
returns: compileReturnsSchema(returns),
|
|
48
|
-
handler: (ctx, actualArgs) => pipe(actualArgs, Schema.decode(args), Effect.orDie, Effect.andThen((decodedArgs) => pipe(handler(decodedArgs), Effect.provide(Layer.mergeAll(layer$1(databaseSchema, ctx.db), layer(ctx.auth), StorageReader$1.layer(ctx.storage), layer$4(ctx.runQuery), Layer.succeed(QueryCtx(), ctx), Layer.setConfigProvider(make$1()))))), Effect.andThen((convexReturns) => Schema.encodeUnknown(returns)(convexReturns)), Effect.runPromise)
|
|
70
|
+
handler: (ctx, actualArgs) => withStubbedDateNow((clock) => pipe(actualArgs, Schema.decode(args), Effect.orDie, Effect.andThen((decodedArgs) => pipe(handler(decodedArgs), Effect.provide(Layer.mergeAll(layer$1(databaseSchema, ctx.db), layer(ctx.auth), StorageReader$1.layer(ctx.storage), layer$4(ctx.runQuery), Layer.succeed(QueryCtx(), ctx), Layer.setConfigProvider(make$1()))))), Effect.andThen((convexReturns) => Schema.encodeUnknown(returns)(convexReturns)), Effect.withClock(clock), Effect.runPromise))
|
|
49
71
|
});
|
|
50
72
|
const mutationLayer = (schema, ctx) => Layer.mergeAll(layer$1(schema, ctx.db), layer$2(schema, ctx.db), layer(ctx.auth), layer$5(ctx.scheduler), StorageReader$1.layer(ctx.storage), StorageWriter$1.layer(ctx.storage), layer$4(ctx.runQuery), layer$3(ctx.runMutation), Layer.succeed(MutationCtx(), ctx), Layer.setConfigProvider(make$1()));
|
|
51
73
|
const mutationFunction = (schema, { args, returns, handler }) => ({
|