@confect/core 5.0.0 → 7.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 +132 -0
- package/dist/FunctionProvenance.d.ts +12 -3
- package/dist/FunctionProvenance.d.ts.map +1 -1
- package/dist/FunctionProvenance.js +3 -2
- package/dist/FunctionProvenance.js.map +1 -1
- package/dist/FunctionSpec.d.ts +48 -26
- package/dist/FunctionSpec.d.ts.map +1 -1
- package/dist/FunctionSpec.js +2 -2
- package/dist/FunctionSpec.js.map +1 -1
- package/dist/Ref.d.ts +60 -25
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +70 -15
- package/dist/Ref.js.map +1 -1
- package/dist/Spec.d.ts +4 -4
- package/dist/Types.d.ts +3 -2
- package/dist/Types.d.ts.map +1 -1
- package/dist/Types.js.map +1 -1
- package/package.json +1 -1
- package/src/FunctionProvenance.ts +7 -0
- package/src/FunctionSpec.ts +26 -2
- package/src/Ref.ts +197 -45
- package/src/Types.ts +19 -15
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,137 @@
|
|
|
1
1
|
# @confect/core
|
|
2
2
|
|
|
3
|
+
## 7.0.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 90094d0: Add typed errors to Confect functions (queries, mutations, and actions). Declare an optional `error` schema in `FunctionSpec` and recover it as a typed value at every call site—`useQuery`, `useMutation`, `useAction`, `HttpClient`, `WebSocketClient`, and `TestConfect`—without paying for it on functions that don't fail.
|
|
8
|
+
|
|
9
|
+
Typed errors travel across the function boundary as Convex's native [`ConvexError`](https://docs.convex.dev/functions/error-handling/application-errors#throwing-application-errors): the encoded error sits in `ConvexError.data`, leaving the `returns` channel unsullied and preserving native Convex semantics for non-Confect callers of the same API.
|
|
10
|
+
|
|
11
|
+
### Authoring a function with typed errors
|
|
12
|
+
|
|
13
|
+
`FunctionSpec` constructors now accept an optional `error` schema. To support multiple error shapes, combine them with `Schema.Union`.
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { FunctionSpec, GenericId, GroupSpec } from "@confect/core";
|
|
17
|
+
import { Schema } from "effect";
|
|
18
|
+
|
|
19
|
+
export class NoteNotFound extends Schema.TaggedError<NoteNotFound>()(
|
|
20
|
+
"NoteNotFound",
|
|
21
|
+
{ noteId: GenericId.GenericId("notes") },
|
|
22
|
+
) {}
|
|
23
|
+
|
|
24
|
+
export const notes = GroupSpec.make("notes").addFunction(
|
|
25
|
+
FunctionSpec.publicQuery({
|
|
26
|
+
name: "getOrFail",
|
|
27
|
+
args: Schema.Struct({ noteId: GenericId.GenericId("notes") }),
|
|
28
|
+
returns: Notes.Doc,
|
|
29
|
+
error: NoteNotFound,
|
|
30
|
+
}),
|
|
31
|
+
);
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The `FunctionImpl` for that ref can now `Effect.fail` (or `mapError` to) any value matching the declared schema. Whichever invocation path the caller takes—`useQuery`/`useMutation`/`useAction`, `HttpClient`, `WebSocketClient`, or `TestConfect`—Confect encodes the failure, transports it via `ConvexError`, and surfaces the decoded value in the appropriate channel for that call site.
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
import { FunctionImpl } from "@confect/server";
|
|
38
|
+
import { Effect } from "effect";
|
|
39
|
+
import api from "../_generated/api";
|
|
40
|
+
import { DatabaseReader } from "../_generated/services";
|
|
41
|
+
import { NoteNotFound } from "./notes.spec";
|
|
42
|
+
|
|
43
|
+
const getOrFail = FunctionImpl.make(api, "notes", "getOrFail", ({ noteId }) =>
|
|
44
|
+
Effect.gen(function* () {
|
|
45
|
+
const reader = yield* DatabaseReader;
|
|
46
|
+
return yield* reader
|
|
47
|
+
.table("notes")
|
|
48
|
+
.get(noteId)
|
|
49
|
+
.pipe(Effect.mapError(() => new NoteNotFound({ noteId })));
|
|
50
|
+
}),
|
|
51
|
+
);
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Consuming a typed error
|
|
55
|
+
|
|
56
|
+
`@confect/js` (`HttpClient`, `WebSocketClient`) and `@confect/test` (`TestConfect`) surface the decoded error in the `Effect` error channel alongside the existing `HttpClientError`/`WebSocketClientError`/`ParseError`:
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
HttpClient.query(refs.public.notes.getOrFail, { noteId });
|
|
60
|
+
// Effect.Effect<Note, NoteNotFound | HttpClientError | ParseError>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### `@confect/react`—breaking changes
|
|
64
|
+
|
|
65
|
+
`useQuery`, `useMutation`, and `useAction` now expose typed errors, and `useQuery` returns a tagged result type instead of `Returns | undefined`.
|
|
66
|
+
|
|
67
|
+
**`useQuery` now returns `QueryResult<A, E>`.** Loading and (when an `error` schema is declared) failure are reified as variants alongside success. Match on the result with `QueryResult.match`:
|
|
68
|
+
|
|
69
|
+
Before:
|
|
70
|
+
|
|
71
|
+
```tsx
|
|
72
|
+
const notes = useQuery(refs.public.notes.list, {});
|
|
73
|
+
if (notes === undefined) return <p>Loading…</p>;
|
|
74
|
+
return <NoteList notes={notes} />;
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
After:
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
import { QueryResult, useQuery } from "@confect/react";
|
|
81
|
+
|
|
82
|
+
const notes = useQuery(refs.public.notes.list, {});
|
|
83
|
+
return QueryResult.match(notes, {
|
|
84
|
+
onLoading: (skipped) => (skipped ? null : <p>Loading…</p>),
|
|
85
|
+
onSuccess: (notes) => <NoteList notes={notes} />,
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The `Loading` variant carries a `skipped: boolean` flag, exposed as the argument to `onLoading`. It distinguishes a query that is genuinely in flight (`skipped: false`) from one that is sitting idle because `"skip"` was passed as its args (`skipped: true`)—a distinction `convex/react`'s plain `undefined` return value cannot make. Use it to render a loading indicator only when work is actually happening, and an empty/placeholder state otherwise.
|
|
90
|
+
|
|
91
|
+
When the ref declares an `error` schema, `onFailure` becomes required and receives the decoded typed error:
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
const lookup = useQuery(refs.public.notes.getOrFail, { noteId });
|
|
95
|
+
QueryResult.match(lookup, {
|
|
96
|
+
onLoading: (skipped) => (skipped ? null : "Looking up…"),
|
|
97
|
+
onSuccess: (note) => `Found: ${note.text}`,
|
|
98
|
+
onFailure: (error) => `Note ${error.noteId} not found.`,
|
|
99
|
+
});
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
`QueryResult` is a Confect-native type exported from `@confect/react`.
|
|
103
|
+
|
|
104
|
+
**`useMutation` and `useAction` return `Promise<Either<A, E>>` when the ref declares an `error` schema.** Refs without an `error` schema continue to resolve to `Promise<A>`, matching the prior shape and `convex/react`'s behavior.
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
const deleteOrFail = useMutation(refs.public.notes.deleteOrFail);
|
|
108
|
+
const result = await deleteOrFail({ noteId });
|
|
109
|
+
// Either.Either<null, NoteNotFound | Forbidden>
|
|
110
|
+
Either.match(result, {
|
|
111
|
+
onLeft: (error) => /* typed error */,
|
|
112
|
+
onRight: (value) => /* success */,
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
const deleteNote = useMutation(refs.public.notes.delete_); // no `error` schema
|
|
116
|
+
await deleteNote({ noteId }); // Promise<null>, as before
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Unspecified failures continue to reject the promise.
|
|
120
|
+
|
|
121
|
+
### Migration
|
|
122
|
+
- For each `useQuery` call site, replace `result === undefined` checks and direct property access with `QueryResult.match` (or the lower-level `QueryResult.isLoading`/`isSuccess`/`isFailure` predicates).
|
|
123
|
+
- For each `useMutation`/`useAction` call site whose ref now declares an `error` schema, unwrap the resolved `Either` (e.g. with `Either.match`); call sites against refs without an `error` schema need no change.
|
|
124
|
+
|
|
125
|
+
## 6.0.0
|
|
126
|
+
|
|
127
|
+
### Minor Changes
|
|
128
|
+
|
|
129
|
+
- 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.
|
|
130
|
+
|
|
131
|
+
### Patch Changes
|
|
132
|
+
|
|
133
|
+
- a8083e8: Fix table field path inference when a schema has a `name` field and an optional Convex ID or bytes field.
|
|
134
|
+
|
|
3
135
|
## 5.0.0
|
|
4
136
|
|
|
5
137
|
## 4.0.0
|
|
@@ -10,15 +10,17 @@ type FunctionProvenance = Data.TaggedEnum<{
|
|
|
10
10
|
Confect: {
|
|
11
11
|
args: Schema.Schema.AnyNoContext;
|
|
12
12
|
returns: Schema.Schema.AnyNoContext;
|
|
13
|
+
error?: Schema.Schema.AnyNoContext;
|
|
13
14
|
};
|
|
14
15
|
Convex: {};
|
|
15
16
|
}>;
|
|
16
|
-
interface Confect<Args extends Schema.Schema.AnyNoContext, Returns extends Schema.Schema.AnyNoContext> {
|
|
17
|
+
interface Confect<Args extends Schema.Schema.AnyNoContext, Returns extends Schema.Schema.AnyNoContext, Error extends Schema.Schema.AnyNoContext = never> {
|
|
17
18
|
readonly _tag: "Confect";
|
|
18
19
|
readonly args: Args;
|
|
19
20
|
readonly returns: Returns;
|
|
21
|
+
readonly error?: Error;
|
|
20
22
|
}
|
|
21
|
-
interface AnyConfect extends Confect<Schema.Schema.AnyNoContext, Schema.Schema.AnyNoContext> {}
|
|
23
|
+
interface AnyConfect extends Confect<Schema.Schema.AnyNoContext, Schema.Schema.AnyNoContext, Schema.Schema.AnyNoContext> {}
|
|
22
24
|
interface Convex<Args extends DefaultFunctionArgs, Returns> {
|
|
23
25
|
readonly _tag: "Convex";
|
|
24
26
|
readonly _args: Args;
|
|
@@ -30,6 +32,7 @@ declare const FunctionProvenance: {
|
|
|
30
32
|
readonly _tag: "Confect";
|
|
31
33
|
readonly args: Schema.Schema.AnyNoContext;
|
|
32
34
|
readonly returns: Schema.Schema.AnyNoContext;
|
|
35
|
+
readonly error?: Schema.Schema.AnyNoContext;
|
|
33
36
|
}, "_tag">;
|
|
34
37
|
readonly Convex: Data.Case.Constructor<{
|
|
35
38
|
readonly _tag: "Convex";
|
|
@@ -40,6 +43,7 @@ declare const FunctionProvenance: {
|
|
|
40
43
|
readonly _tag: "Confect";
|
|
41
44
|
readonly args: Schema.Schema.AnyNoContext;
|
|
42
45
|
readonly returns: Schema.Schema.AnyNoContext;
|
|
46
|
+
readonly error?: Schema.Schema.AnyNoContext;
|
|
43
47
|
}, {
|
|
44
48
|
readonly _tag: Tag;
|
|
45
49
|
}> | Extract<{
|
|
@@ -55,6 +59,7 @@ declare const FunctionProvenance: {
|
|
|
55
59
|
readonly _tag: "Confect";
|
|
56
60
|
readonly args: Schema.Schema.AnyNoContext;
|
|
57
61
|
readonly returns: Schema.Schema.AnyNoContext;
|
|
62
|
+
readonly error?: Schema.Schema.AnyNoContext;
|
|
58
63
|
}) => any;
|
|
59
64
|
readonly Convex: (args: {
|
|
60
65
|
readonly _tag: "Convex";
|
|
@@ -65,6 +70,7 @@ declare const FunctionProvenance: {
|
|
|
65
70
|
readonly _tag: "Confect";
|
|
66
71
|
readonly args: Schema.Schema.AnyNoContext;
|
|
67
72
|
readonly returns: Schema.Schema.AnyNoContext;
|
|
73
|
+
readonly error?: Schema.Schema.AnyNoContext;
|
|
68
74
|
} | {
|
|
69
75
|
readonly _tag: "Convex";
|
|
70
76
|
readonly _args: DefaultFunctionArgs;
|
|
@@ -75,6 +81,7 @@ declare const FunctionProvenance: {
|
|
|
75
81
|
readonly _tag: "Confect";
|
|
76
82
|
readonly args: Schema.Schema.AnyNoContext;
|
|
77
83
|
readonly returns: Schema.Schema.AnyNoContext;
|
|
84
|
+
readonly error?: Schema.Schema.AnyNoContext;
|
|
78
85
|
}) => any;
|
|
79
86
|
readonly Convex: (args: {
|
|
80
87
|
readonly _tag: "Convex";
|
|
@@ -85,6 +92,7 @@ declare const FunctionProvenance: {
|
|
|
85
92
|
readonly _tag: "Confect";
|
|
86
93
|
readonly args: Schema.Schema.AnyNoContext;
|
|
87
94
|
readonly returns: Schema.Schema.AnyNoContext;
|
|
95
|
+
readonly error?: Schema.Schema.AnyNoContext;
|
|
88
96
|
} | {
|
|
89
97
|
readonly _tag: "Convex";
|
|
90
98
|
readonly _args: DefaultFunctionArgs;
|
|
@@ -92,10 +100,11 @@ declare const FunctionProvenance: {
|
|
|
92
100
|
}, cases: Cases & { [K in Exclude<keyof Cases, "Confect" | "Convex">]: never }): effect_Unify0.Unify<ReturnType<Cases["Confect" | "Convex"]>>;
|
|
93
101
|
};
|
|
94
102
|
};
|
|
95
|
-
declare const Confect: <Args extends Schema.Schema.AnyNoContext, Returns extends Schema.Schema.AnyNoContext>(args: Args, returns: Returns) => {
|
|
103
|
+
declare const Confect: <Args extends Schema.Schema.AnyNoContext, Returns extends Schema.Schema.AnyNoContext, Error extends Schema.Schema.AnyNoContext = never>(args: Args, returns: Returns, error?: Error) => {
|
|
96
104
|
readonly _tag: "Confect";
|
|
97
105
|
readonly args: Schema.Schema.AnyNoContext;
|
|
98
106
|
readonly returns: Schema.Schema.AnyNoContext;
|
|
107
|
+
readonly error?: Schema.Schema.AnyNoContext;
|
|
99
108
|
};
|
|
100
109
|
declare const Convex: <_Args extends DefaultFunctionArgs, _Returns>() => {
|
|
101
110
|
readonly _tag: "Convex";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionProvenance.d.ts","names":[],"sources":["../src/FunctionProvenance.ts"],"mappings":";;;;;;;;KAIY,kBAAA,GAAqB,IAAA,CAAK,UAAA;EACpC,OAAA;IACE,IAAA,EAAM,MAAA,CAAO,MAAA,CAAO,YAAA;IACpB,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,YAAA;EAAA;
|
|
1
|
+
{"version":3,"file":"FunctionProvenance.d.ts","names":[],"sources":["../src/FunctionProvenance.ts"],"mappings":";;;;;;;;KAIY,kBAAA,GAAqB,IAAA,CAAK,UAAA;EACpC,OAAA;IACE,IAAA,EAAM,MAAA,CAAO,MAAA,CAAO,YAAA;IACpB,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,YAAA;IACvB,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,YAAA;EAAA;EAExB,MAAA;AAAA;AAAA,UAQe,OAAA,cACF,MAAA,CAAO,MAAA,CAAO,YAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA,gBAChB,MAAA,CAAO,MAAA,CAAO,YAAA;EAAA,SAEnB,IAAA;EAAA,SACA,IAAA,EAAM,IAAA;EAAA,SACN,OAAA,EAAS,OAAA;EAAA,SACT,KAAA,GAAQ,KAAA;AAAA;AAAA,UAGF,UAAA,SAAmB,OAAA,CAClC,MAAA,CAAO,MAAA,CAAO,YAAA,EACd,MAAA,CAAO,MAAA,CAAO,YAAA,EACd,MAAA,CAAO,MAAA,CAAO,YAAA;AAAA,UAGC,MAAA,cAAoB,mBAAA;EAAA,SAC1B,IAAA;EAAA,SACA,KAAA,EAAO,IAAA;EAAA,SACP,QAAA,EAAU,OAAA;AAAA;AAAA,UAGJ,SAAA,SAAkB,MAAA,CAAO,mBAAA;AAAA,cAE7B,kBAAA;EAAA;;mBArCH,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA,iBACf,MAAA,CAAO,MAAA,CAAO,YAAA;EAAA;EAAA;;oBAIf,mBAAA;IAAA;;;;mBAND,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA,iBACf,MAAA,CAAO,MAAA,CAAO,YAAA;EAAA;IAAA;;;oBAIf,mBAAA;IAAA;;;;;;;;uBAND,MAAA,CAAO,MAAA,CAAO,YAAA;QAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;QAAA,iBACf,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA;MAAA;;wBAIf,mBAAA;QAAA;;;;qBAND,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA,iBACf,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA;MAAA;sBAIf,mBAAA;MAAA;;;;;uBAND,MAAA,CAAO,MAAA,CAAO,YAAA;QAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;QAAA,iBACf,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA;MAAA;;wBAIf,mBAAA;QAAA;;;;qBAND,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA,iBACf,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA;MAAA;sBAIf,mBAAA;MAAA;;;;cAiCE,OAAA,gBACE,MAAA,CAAO,MAAA,CAAO,YAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA,gBAChB,MAAA,CAAO,MAAA,CAAO,YAAA,UAE5B,IAAA,EAAM,IAAA,EACN,OAAA,EAAS,OAAA,EACT,KAAA,GAAQ,KAAA;EAAA;iBA9CA,MAAA,CAAO,MAAA,CAAO,YAAA;EAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;EAAA,iBACf,MAAA,CAAO,MAAA,CAAO,YAAA;AAAA;AAAA,cAoDb,MAAA,iBAAwB,mBAAA;EAAA;kBAhD1B,mBAAA;EAAA"}
|
|
@@ -8,9 +8,10 @@ var FunctionProvenance_exports = /* @__PURE__ */ __exportAll({
|
|
|
8
8
|
FunctionProvenance: () => FunctionProvenance
|
|
9
9
|
});
|
|
10
10
|
const FunctionProvenance = Data.taggedEnum();
|
|
11
|
-
const Confect = (args, returns) => FunctionProvenance.Confect({
|
|
11
|
+
const Confect = (args, returns, error) => FunctionProvenance.Confect({
|
|
12
12
|
args,
|
|
13
|
-
returns
|
|
13
|
+
returns,
|
|
14
|
+
...error !== void 0 ? { error } : {}
|
|
14
15
|
});
|
|
15
16
|
const Convex = () => FunctionProvenance.Convex({});
|
|
16
17
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionProvenance.js","names":[],"sources":["../src/FunctionProvenance.ts"],"sourcesContent":["import type { DefaultFunctionArgs } from \"convex/server\";\nimport type { Schema } from \"effect\";\nimport { Data } from \"effect\";\n\nexport type FunctionProvenance = Data.TaggedEnum<{\n Confect: {\n args: Schema.Schema.AnyNoContext;\n returns: Schema.Schema.AnyNoContext;\n };\n Convex: {\n /** @internal */\n _args: DefaultFunctionArgs;\n /** @internal */\n _returns: any;\n };\n}>;\n\nexport interface Confect<\n Args extends Schema.Schema.AnyNoContext,\n Returns extends Schema.Schema.AnyNoContext,\n> {\n readonly _tag: \"Confect\";\n readonly args: Args;\n readonly returns: Returns;\n}\n\nexport interface AnyConfect extends Confect<\n Schema.Schema.AnyNoContext,\n Schema.Schema.AnyNoContext\n> {}\n\nexport interface Convex<Args extends DefaultFunctionArgs, Returns> {\n readonly _tag: \"Convex\";\n readonly _args: Args;\n readonly _returns: Returns;\n}\n\nexport interface AnyConvex extends Convex<DefaultFunctionArgs, any> {}\n\nexport const FunctionProvenance = Data.taggedEnum<FunctionProvenance>();\n\nexport const Confect = <\n Args extends Schema.Schema.AnyNoContext,\n Returns extends Schema.Schema.AnyNoContext,\n>(\n args: Args,\n returns: Returns,\n) =>\n FunctionProvenance.Confect({\n args,\n returns,\n });\n\nexport const Convex = <_Args extends DefaultFunctionArgs, _Returns>() =>\n FunctionProvenance.Convex(\n {} as {\n _args: _Args;\n _returns: _Returns;\n },\n );\n"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"FunctionProvenance.js","names":[],"sources":["../src/FunctionProvenance.ts"],"sourcesContent":["import type { DefaultFunctionArgs } from \"convex/server\";\nimport type { Schema } from \"effect\";\nimport { Data } from \"effect\";\n\nexport type FunctionProvenance = Data.TaggedEnum<{\n Confect: {\n args: Schema.Schema.AnyNoContext;\n returns: Schema.Schema.AnyNoContext;\n error?: Schema.Schema.AnyNoContext;\n };\n Convex: {\n /** @internal */\n _args: DefaultFunctionArgs;\n /** @internal */\n _returns: any;\n };\n}>;\n\nexport interface Confect<\n Args extends Schema.Schema.AnyNoContext,\n Returns extends Schema.Schema.AnyNoContext,\n Error extends Schema.Schema.AnyNoContext = never,\n> {\n readonly _tag: \"Confect\";\n readonly args: Args;\n readonly returns: Returns;\n readonly error?: Error;\n}\n\nexport interface AnyConfect extends Confect<\n Schema.Schema.AnyNoContext,\n Schema.Schema.AnyNoContext,\n Schema.Schema.AnyNoContext\n> {}\n\nexport interface Convex<Args extends DefaultFunctionArgs, Returns> {\n readonly _tag: \"Convex\";\n readonly _args: Args;\n readonly _returns: Returns;\n}\n\nexport interface AnyConvex extends Convex<DefaultFunctionArgs, any> {}\n\nexport const FunctionProvenance = Data.taggedEnum<FunctionProvenance>();\n\nexport const Confect = <\n Args extends Schema.Schema.AnyNoContext,\n Returns extends Schema.Schema.AnyNoContext,\n Error extends Schema.Schema.AnyNoContext = never,\n>(\n args: Args,\n returns: Returns,\n error?: Error,\n) =>\n FunctionProvenance.Confect({\n args,\n returns,\n ...(error !== undefined ? { error } : {}),\n });\n\nexport const Convex = <_Args extends DefaultFunctionArgs, _Returns>() =>\n FunctionProvenance.Convex(\n {} as {\n _args: _Args;\n _returns: _Returns;\n },\n );\n"],"mappings":";;;;;;;;;AA2CA,MAAa,qBAAqB,KAAK,YAAgC;AAEvE,MAAa,WAKX,MACA,SACA,UAEA,mBAAmB,QAAQ;CACzB;CACA;CACA,GAAI,UAAU,SAAY,EAAE,OAAO,GAAG,EAAE;CACzC,CAAC;AAEJ,MAAa,eACX,mBAAmB,OACjB,EAAE,CAIH"}
|
package/dist/FunctionSpec.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { FunctionType, FunctionVisibility, RegisteredAction, RegisteredMutation,
|
|
|
5
5
|
|
|
6
6
|
//#region src/FunctionSpec.d.ts
|
|
7
7
|
declare namespace FunctionSpec_d_exports {
|
|
8
|
-
export { Any, AnyConfect, AnyConvex, AnyWithProps, AnyWithPropsWithFunctionProvenance, AnyWithPropsWithFunctionType, AnyWithPropsWithRuntime, Args, EncodedArgs, EncodedReturns, FunctionSpec, GetFunctionVisibility, GetRuntimeAndFunctionType, Name, Returns, TypeId, WithFunctionProvenance, WithFunctionType, WithName, WithRuntimeAndFunctionType, WithoutName, convexInternalAction, convexInternalMutation, convexInternalNodeAction, convexInternalQuery, convexPublicAction, convexPublicMutation, convexPublicNodeAction, convexPublicQuery, internalAction, internalMutation, internalNodeAction, internalQuery, isFunctionSpec, publicAction, publicMutation, publicNodeAction, publicQuery };
|
|
8
|
+
export { Any, AnyConfect, AnyConvex, AnyWithProps, AnyWithPropsWithFunctionProvenance, AnyWithPropsWithFunctionType, AnyWithPropsWithRuntime, Args, EncodedArgs, EncodedError, EncodedReturns, Error, FunctionSpec, GetFunctionVisibility, GetRuntimeAndFunctionType, Name, Returns, TypeId, WithFunctionProvenance, WithFunctionType, WithName, WithRuntimeAndFunctionType, WithoutName, convexInternalAction, convexInternalMutation, convexInternalNodeAction, convexInternalQuery, convexPublicAction, convexPublicMutation, convexPublicNodeAction, convexPublicQuery, internalAction, internalMutation, internalNodeAction, internalQuery, isFunctionSpec, publicAction, publicMutation, publicNodeAction, publicQuery };
|
|
9
9
|
}
|
|
10
10
|
declare const TypeId = "@confect/core/FunctionSpec";
|
|
11
11
|
type TypeId = typeof TypeId;
|
|
@@ -73,6 +73,12 @@ type EncodedReturns<FunctionSpec_ extends AnyWithProps> = FunctionSpec_ extends
|
|
|
73
73
|
_returns: infer Returns_;
|
|
74
74
|
};
|
|
75
75
|
} ? Returns_ : never;
|
|
76
|
+
type Error<FunctionSpec_ extends AnyWithProps> = FunctionSpec_ extends {
|
|
77
|
+
functionProvenance: Confect<any, any, infer ErrorSchema_ extends Schema.Schema.AnyNoContext>;
|
|
78
|
+
} ? ErrorSchema_["Type"] : never;
|
|
79
|
+
type EncodedError<FunctionSpec_ extends AnyWithProps> = FunctionSpec_ extends {
|
|
80
|
+
functionProvenance: Confect<any, any, infer ErrorSchema_ extends Schema.Schema.AnyNoContext>;
|
|
81
|
+
} ? ErrorSchema_["Encoded"] : never;
|
|
76
82
|
type WithName<FunctionSpec_ extends AnyWithProps, Name_ extends string> = Extract<FunctionSpec_, {
|
|
77
83
|
readonly name: Name_;
|
|
78
84
|
}>;
|
|
@@ -90,102 +96,118 @@ type WithFunctionProvenance<FunctionSpec_ extends AnyWithProps, FunctionProvenan
|
|
|
90
96
|
type WithoutName<FunctionSpec_ extends AnyWithProps, Name_ extends Name<FunctionSpec_>> = Exclude<FunctionSpec_, {
|
|
91
97
|
readonly name: Name_;
|
|
92
98
|
}>;
|
|
93
|
-
declare const publicQuery: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext>({
|
|
99
|
+
declare const publicQuery: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext, Error_ extends Schema.Schema.AnyNoContext = never>({
|
|
94
100
|
name,
|
|
95
101
|
args,
|
|
96
|
-
returns
|
|
102
|
+
returns,
|
|
103
|
+
error
|
|
97
104
|
}: {
|
|
98
105
|
name: Name_;
|
|
99
106
|
args: Args_;
|
|
100
107
|
returns: Returns_;
|
|
108
|
+
error?: Error_;
|
|
101
109
|
}) => FunctionSpec<{
|
|
102
110
|
readonly runtime: "Convex";
|
|
103
111
|
readonly functionType: "query";
|
|
104
|
-
}, "public", Name_, Confect<Args_, Returns_>>;
|
|
105
|
-
declare const internalQuery: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext>({
|
|
112
|
+
}, "public", Name_, Confect<Args_, Returns_, Error_>>;
|
|
113
|
+
declare const internalQuery: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext, Error_ extends Schema.Schema.AnyNoContext = never>({
|
|
106
114
|
name,
|
|
107
115
|
args,
|
|
108
|
-
returns
|
|
116
|
+
returns,
|
|
117
|
+
error
|
|
109
118
|
}: {
|
|
110
119
|
name: Name_;
|
|
111
120
|
args: Args_;
|
|
112
121
|
returns: Returns_;
|
|
122
|
+
error?: Error_;
|
|
113
123
|
}) => FunctionSpec<{
|
|
114
124
|
readonly runtime: "Convex";
|
|
115
125
|
readonly functionType: "query";
|
|
116
|
-
}, "internal", Name_, Confect<Args_, Returns_>>;
|
|
117
|
-
declare const publicMutation: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext>({
|
|
126
|
+
}, "internal", Name_, Confect<Args_, Returns_, Error_>>;
|
|
127
|
+
declare const publicMutation: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext, Error_ extends Schema.Schema.AnyNoContext = never>({
|
|
118
128
|
name,
|
|
119
129
|
args,
|
|
120
|
-
returns
|
|
130
|
+
returns,
|
|
131
|
+
error
|
|
121
132
|
}: {
|
|
122
133
|
name: Name_;
|
|
123
134
|
args: Args_;
|
|
124
135
|
returns: Returns_;
|
|
136
|
+
error?: Error_;
|
|
125
137
|
}) => FunctionSpec<{
|
|
126
138
|
readonly runtime: "Convex";
|
|
127
139
|
readonly functionType: "mutation";
|
|
128
|
-
}, "public", Name_, Confect<Args_, Returns_>>;
|
|
129
|
-
declare const internalMutation: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext>({
|
|
140
|
+
}, "public", Name_, Confect<Args_, Returns_, Error_>>;
|
|
141
|
+
declare const internalMutation: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext, Error_ extends Schema.Schema.AnyNoContext = never>({
|
|
130
142
|
name,
|
|
131
143
|
args,
|
|
132
|
-
returns
|
|
144
|
+
returns,
|
|
145
|
+
error
|
|
133
146
|
}: {
|
|
134
147
|
name: Name_;
|
|
135
148
|
args: Args_;
|
|
136
149
|
returns: Returns_;
|
|
150
|
+
error?: Error_;
|
|
137
151
|
}) => FunctionSpec<{
|
|
138
152
|
readonly runtime: "Convex";
|
|
139
153
|
readonly functionType: "mutation";
|
|
140
|
-
}, "internal", Name_, Confect<Args_, Returns_>>;
|
|
141
|
-
declare const publicAction: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext>({
|
|
154
|
+
}, "internal", Name_, Confect<Args_, Returns_, Error_>>;
|
|
155
|
+
declare const publicAction: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext, Error_ extends Schema.Schema.AnyNoContext = never>({
|
|
142
156
|
name,
|
|
143
157
|
args,
|
|
144
|
-
returns
|
|
158
|
+
returns,
|
|
159
|
+
error
|
|
145
160
|
}: {
|
|
146
161
|
name: Name_;
|
|
147
162
|
args: Args_;
|
|
148
163
|
returns: Returns_;
|
|
164
|
+
error?: Error_;
|
|
149
165
|
}) => FunctionSpec<{
|
|
150
166
|
readonly runtime: "Convex";
|
|
151
167
|
readonly functionType: "action";
|
|
152
|
-
}, "public", Name_, Confect<Args_, Returns_>>;
|
|
153
|
-
declare const internalAction: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext>({
|
|
168
|
+
}, "public", Name_, Confect<Args_, Returns_, Error_>>;
|
|
169
|
+
declare const internalAction: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext, Error_ extends Schema.Schema.AnyNoContext = never>({
|
|
154
170
|
name,
|
|
155
171
|
args,
|
|
156
|
-
returns
|
|
172
|
+
returns,
|
|
173
|
+
error
|
|
157
174
|
}: {
|
|
158
175
|
name: Name_;
|
|
159
176
|
args: Args_;
|
|
160
177
|
returns: Returns_;
|
|
178
|
+
error?: Error_;
|
|
161
179
|
}) => FunctionSpec<{
|
|
162
180
|
readonly runtime: "Convex";
|
|
163
181
|
readonly functionType: "action";
|
|
164
|
-
}, "internal", Name_, Confect<Args_, Returns_>>;
|
|
165
|
-
declare const publicNodeAction: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext>({
|
|
182
|
+
}, "internal", Name_, Confect<Args_, Returns_, Error_>>;
|
|
183
|
+
declare const publicNodeAction: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext, Error_ extends Schema.Schema.AnyNoContext = never>({
|
|
166
184
|
name,
|
|
167
185
|
args,
|
|
168
|
-
returns
|
|
186
|
+
returns,
|
|
187
|
+
error
|
|
169
188
|
}: {
|
|
170
189
|
name: Name_;
|
|
171
190
|
args: Args_;
|
|
172
191
|
returns: Returns_;
|
|
192
|
+
error?: Error_;
|
|
173
193
|
}) => FunctionSpec<{
|
|
174
194
|
readonly runtime: "Node";
|
|
175
195
|
readonly functionType: "action";
|
|
176
|
-
}, "public", Name_, Confect<Args_, Returns_>>;
|
|
177
|
-
declare const internalNodeAction: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext>({
|
|
196
|
+
}, "public", Name_, Confect<Args_, Returns_, Error_>>;
|
|
197
|
+
declare const internalNodeAction: <const Name_ extends string, Args_ extends Schema.Schema.AnyNoContext, Returns_ extends Schema.Schema.AnyNoContext, Error_ extends Schema.Schema.AnyNoContext = never>({
|
|
178
198
|
name,
|
|
179
199
|
args,
|
|
180
|
-
returns
|
|
200
|
+
returns,
|
|
201
|
+
error
|
|
181
202
|
}: {
|
|
182
203
|
name: Name_;
|
|
183
204
|
args: Args_;
|
|
184
205
|
returns: Returns_;
|
|
206
|
+
error?: Error_;
|
|
185
207
|
}) => FunctionSpec<{
|
|
186
208
|
readonly runtime: "Node";
|
|
187
209
|
readonly functionType: "action";
|
|
188
|
-
}, "internal", Name_, Confect<Args_, Returns_>>;
|
|
210
|
+
}, "internal", Name_, Confect<Args_, Returns_, Error_>>;
|
|
189
211
|
type ExtractArgs<F> = F extends RegisteredQuery<any, infer A, any> ? A : F extends RegisteredMutation<any, infer A, any> ? A : F extends RegisteredAction<any, infer A, any> ? A : never;
|
|
190
212
|
type ExtractReturns<F> = F extends RegisteredQuery<any, any, infer R> ? R : F extends RegisteredMutation<any, any, infer R> ? R : F extends RegisteredAction<any, any, infer R> ? R : never;
|
|
191
213
|
declare const convexPublicQuery: <F extends RegisteredQuery<"public", any, any>>() => <const Name_ extends string>(name: Name_) => FunctionSpec<{
|
|
@@ -221,5 +243,5 @@ declare const convexInternalNodeAction: <F extends RegisteredAction<"internal",
|
|
|
221
243
|
readonly functionType: "action";
|
|
222
244
|
}, "internal", Name_, Convex<ExtractArgs<F>, ExtractReturns<F>>>;
|
|
223
245
|
//#endregion
|
|
224
|
-
export { Any, AnyConfect, AnyConvex, AnyWithProps, AnyWithPropsWithFunctionProvenance, AnyWithPropsWithFunctionType, AnyWithPropsWithRuntime, Args, EncodedArgs, EncodedReturns, FunctionSpec, FunctionSpec_d_exports, GetFunctionVisibility, GetRuntimeAndFunctionType, Name, Returns, TypeId, WithFunctionProvenance, WithFunctionType, WithName, WithRuntimeAndFunctionType, WithoutName, convexInternalAction, convexInternalMutation, convexInternalNodeAction, convexInternalQuery, convexPublicAction, convexPublicMutation, convexPublicNodeAction, convexPublicQuery, internalAction, internalMutation, internalNodeAction, internalQuery, isFunctionSpec, publicAction, publicMutation, publicNodeAction, publicQuery };
|
|
246
|
+
export { Any, AnyConfect, AnyConvex, AnyWithProps, AnyWithPropsWithFunctionProvenance, AnyWithPropsWithFunctionType, AnyWithPropsWithRuntime, Args, EncodedArgs, EncodedError, EncodedReturns, Error, FunctionSpec, FunctionSpec_d_exports, GetFunctionVisibility, GetRuntimeAndFunctionType, Name, Returns, TypeId, WithFunctionProvenance, WithFunctionType, WithName, WithRuntimeAndFunctionType, WithoutName, convexInternalAction, convexInternalMutation, convexInternalNodeAction, convexInternalQuery, convexPublicAction, convexPublicMutation, convexPublicNodeAction, convexPublicQuery, internalAction, internalMutation, internalNodeAction, internalQuery, isFunctionSpec, publicAction, publicMutation, publicNodeAction, publicQuery };
|
|
225
247
|
//# sourceMappingURL=FunctionSpec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionSpec.d.ts","names":[],"sources":["../src/FunctionSpec.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FunctionSpec.d.ts","names":[],"sources":["../src/FunctionSpec.ts"],"mappings":"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"}
|
package/dist/FunctionSpec.js
CHANGED
|
@@ -28,13 +28,13 @@ var FunctionSpec_exports = /* @__PURE__ */ __exportAll({
|
|
|
28
28
|
const TypeId = "@confect/core/FunctionSpec";
|
|
29
29
|
const isFunctionSpec = (u) => Predicate.hasProperty(u, TypeId);
|
|
30
30
|
const Proto = { [TypeId]: TypeId };
|
|
31
|
-
const make = (runtimeAndFunctionType, functionVisibility) => ({ name, args, returns }) => {
|
|
31
|
+
const make = (runtimeAndFunctionType, functionVisibility) => ({ name, args, returns, error }) => {
|
|
32
32
|
validateConfectFunctionIdentifier(name);
|
|
33
33
|
return Object.assign(Object.create(Proto), {
|
|
34
34
|
runtimeAndFunctionType,
|
|
35
35
|
functionVisibility,
|
|
36
36
|
name,
|
|
37
|
-
functionProvenance: Confect(args, returns)
|
|
37
|
+
functionProvenance: Confect(args, returns, error)
|
|
38
38
|
});
|
|
39
39
|
};
|
|
40
40
|
const publicQuery = make(ConvexQuery, "public");
|
package/dist/FunctionSpec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionSpec.js","names":["FunctionProvenance.Confect","RuntimeAndFunctionType.ConvexQuery","RuntimeAndFunctionType.ConvexMutation","RuntimeAndFunctionType.ConvexAction","RuntimeAndFunctionType.NodeAction","FunctionProvenance.Convex"],"sources":["../src/FunctionSpec.ts"],"sourcesContent":["import type {\n FunctionType,\n FunctionVisibility,\n RegisteredAction,\n RegisteredMutation,\n RegisteredQuery,\n} from \"convex/server\";\nimport type { Schema } from \"effect\";\nimport { Predicate } from \"effect\";\nimport * as FunctionProvenance from \"./FunctionProvenance\";\nimport { validateConfectFunctionIdentifier } from \"./internal/utils\";\nimport * as RuntimeAndFunctionType from \"./RuntimeAndFunctionType\";\n\nexport const TypeId = \"@confect/core/FunctionSpec\";\nexport type TypeId = typeof TypeId;\n\nexport const isFunctionSpec = (u: unknown): u is AnyWithProps =>\n Predicate.hasProperty(u, TypeId);\n\nexport interface FunctionSpec<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Name_ extends string,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n> {\n readonly [TypeId]: TypeId;\n readonly runtimeAndFunctionType: RuntimeAndFunctionType_;\n readonly functionVisibility: FunctionVisibility_;\n readonly name: Name_;\n readonly functionProvenance: FunctionProvenance_;\n}\n\nexport interface Any {\n readonly [TypeId]: TypeId;\n}\n\nexport interface AnyWithProps extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance\n> {}\n\nexport interface AnyConfect extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.AnyConfect\n> {}\n\nexport interface AnyConvex extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.AnyConvex\n> {}\n\nexport interface AnyWithPropsWithRuntime<\n Runtime extends RuntimeAndFunctionType.Runtime,\n> extends FunctionSpec<\n RuntimeAndFunctionType.WithRuntime<Runtime>,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance\n> {}\n\nexport interface AnyWithPropsWithFunctionType<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n> extends FunctionSpec<\n RuntimeAndFunctionType_,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance\n> {}\n\nexport interface AnyWithPropsWithFunctionProvenance<\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n> extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance_\n> {}\n\nexport type GetRuntimeAndFunctionType<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"runtimeAndFunctionType\"];\n\nexport type GetFunctionVisibility<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"functionVisibility\"];\n\nexport type Name<FunctionSpec_ extends AnyWithProps> = FunctionSpec_[\"name\"];\n\nexport type Args<FunctionSpec_ extends AnyWithProps> = FunctionSpec_ extends {\n functionProvenance: {\n _tag: \"Confect\";\n args: infer ArgsSchema_ extends Schema.Schema.AnyNoContext;\n };\n}\n ? ArgsSchema_[\"Type\"]\n : FunctionSpec_ extends {\n functionProvenance: { _tag: \"Convex\"; _args: infer Args_ };\n }\n ? Args_\n : never;\n\nexport type Returns<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n functionProvenance: {\n _tag: \"Confect\";\n returns: infer ReturnsSchema_ extends Schema.Schema.AnyNoContext;\n };\n }\n ? ReturnsSchema_[\"Type\"]\n : FunctionSpec_ extends {\n functionProvenance: { _tag: \"Convex\"; _returns: infer Returns_ };\n }\n ? Awaited<Returns_>\n : never;\n\nexport type EncodedArgs<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n functionProvenance: {\n _tag: \"Confect\";\n args: infer ArgsSchema_ extends Schema.Schema.AnyNoContext;\n };\n }\n ? ArgsSchema_[\"Encoded\"]\n : FunctionSpec_ extends {\n functionProvenance: { _tag: \"Convex\"; _args: infer Args_ };\n }\n ? Args_\n : never;\n\nexport type EncodedReturns<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n functionProvenance: {\n _tag: \"Confect\";\n returns: infer ReturnsSchema_ extends Schema.Schema.AnyNoContext;\n };\n }\n ? ReturnsSchema_[\"Encoded\"]\n : FunctionSpec_ extends {\n functionProvenance: { _tag: \"Convex\"; _returns: infer Returns_ };\n }\n ? Returns_\n : never;\n\nexport type WithName<\n FunctionSpec_ extends AnyWithProps,\n Name_ extends string,\n> = Extract<FunctionSpec_, { readonly name: Name_ }>;\n\nexport type WithRuntimeAndFunctionType<\n FunctionSpec_ extends AnyWithProps,\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n> = Extract<\n FunctionSpec_,\n { readonly runtimeAndFunctionType: RuntimeAndFunctionType_ }\n>;\n\nexport type WithFunctionType<\n FunctionSpec_ extends AnyWithProps,\n FunctionType_ extends FunctionType,\n> = Extract<\n FunctionSpec_,\n { readonly runtimeAndFunctionType: { readonly functionType: FunctionType_ } }\n>;\n\nexport type WithFunctionProvenance<\n FunctionSpec_ extends AnyWithProps,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n> = Extract<\n FunctionSpec_,\n { readonly functionProvenance: FunctionProvenance_ }\n>;\n\nexport type WithoutName<\n FunctionSpec_ extends AnyWithProps,\n Name_ extends Name<FunctionSpec_>,\n> = Exclude<FunctionSpec_, { readonly name: Name_ }>;\n\nconst Proto = {\n [TypeId]: TypeId,\n};\n\nconst make =\n <\n RuntimeAndFunctionType_ extends\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n >(\n runtimeAndFunctionType: RuntimeAndFunctionType_,\n functionVisibility: FunctionVisibility_,\n ) =>\n <\n const Name_ extends string,\n Args_ extends Schema.Schema.AnyNoContext,\n Returns_ extends Schema.Schema.AnyNoContext,\n >({\n name,\n args,\n returns,\n }: {\n name: Name_;\n args: Args_;\n returns: Returns_;\n }): FunctionSpec<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Confect<Args_, Returns_>\n > => {\n validateConfectFunctionIdentifier(name);\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType,\n functionVisibility,\n name,\n functionProvenance: FunctionProvenance.Confect(args, returns),\n });\n };\n\nexport const publicQuery = make(RuntimeAndFunctionType.ConvexQuery, \"public\");\nexport const internalQuery = make(\n RuntimeAndFunctionType.ConvexQuery,\n \"internal\",\n);\nexport const publicMutation = make(\n RuntimeAndFunctionType.ConvexMutation,\n \"public\",\n);\nexport const internalMutation = make(\n RuntimeAndFunctionType.ConvexMutation,\n \"internal\",\n);\nexport const publicAction = make(RuntimeAndFunctionType.ConvexAction, \"public\");\nexport const internalAction = make(\n RuntimeAndFunctionType.ConvexAction,\n \"internal\",\n);\n\nexport const publicNodeAction = make(\n RuntimeAndFunctionType.NodeAction,\n \"public\",\n);\nexport const internalNodeAction = make(\n RuntimeAndFunctionType.NodeAction,\n \"internal\",\n);\n\ntype MatchingRegisteredFunction<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n> =\n RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"query\"\n ? RegisteredQuery<FunctionVisibility_, any, any>\n : RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"mutation\"\n ? RegisteredMutation<FunctionVisibility_, any, any>\n : RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"action\"\n ? RegisteredAction<FunctionVisibility_, any, any>\n : never;\n\ntype ExtractArgs<F> =\n F extends RegisteredQuery<any, infer A, any>\n ? A\n : F extends RegisteredMutation<any, infer A, any>\n ? A\n : F extends RegisteredAction<any, infer A, any>\n ? A\n : never;\n\ntype ExtractReturns<F> =\n F extends RegisteredQuery<any, any, infer R>\n ? R\n : F extends RegisteredMutation<any, any, infer R>\n ? R\n : F extends RegisteredAction<any, any, infer R>\n ? R\n : never;\n\nconst makeConvex =\n <\n RuntimeAndFunctionType_ extends\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n >(\n runtimeAndFunctionType: RuntimeAndFunctionType_,\n functionVisibility: FunctionVisibility_,\n ) =>\n <\n F extends MatchingRegisteredFunction<\n RuntimeAndFunctionType_,\n FunctionVisibility_\n >,\n >() =>\n <const Name_ extends string>(\n name: Name_,\n ): FunctionSpec<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Convex<ExtractArgs<F>, ExtractReturns<F>>\n > => {\n validateConfectFunctionIdentifier(name);\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType,\n functionVisibility,\n name,\n functionProvenance: FunctionProvenance.Convex(),\n }) as any;\n };\n\nexport const convexPublicQuery = makeConvex(\n RuntimeAndFunctionType.ConvexQuery,\n \"public\",\n);\nexport const convexInternalQuery = makeConvex(\n RuntimeAndFunctionType.ConvexQuery,\n \"internal\",\n);\nexport const convexPublicMutation = makeConvex(\n RuntimeAndFunctionType.ConvexMutation,\n \"public\",\n);\nexport const convexInternalMutation = makeConvex(\n RuntimeAndFunctionType.ConvexMutation,\n \"internal\",\n);\nexport const convexPublicAction = makeConvex(\n RuntimeAndFunctionType.ConvexAction,\n \"public\",\n);\nexport const convexInternalAction = makeConvex(\n RuntimeAndFunctionType.ConvexAction,\n \"internal\",\n);\nexport const convexPublicNodeAction = makeConvex(\n RuntimeAndFunctionType.NodeAction,\n \"public\",\n);\nexport const convexInternalNodeAction = makeConvex(\n RuntimeAndFunctionType.NodeAction,\n \"internal\",\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAa,SAAS;AAGtB,MAAa,kBAAkB,MAC7B,UAAU,YAAY,GAAG,OAAO;AAoKlC,MAAM,QAAQ,GACX,SAAS,QACX;AAED,MAAM,QAMF,wBACA,wBAMA,EACA,MACA,MACA,cAUG;AACH,mCAAkC,KAAK;AAEvC,QAAO,OAAO,OAAO,OAAO,OAAO,MAAM,EAAE;EACzC;EACA;EACA;EACA,oBAAoBA,QAA2B,MAAM,QAAQ;EAC9D,CAAC;;AAGN,MAAa,cAAc,KAAKC,aAAoC,SAAS;AAC7E,MAAa,gBAAgB,KAC3BA,aACA,WACD;AACD,MAAa,iBAAiB,KAC5BC,gBACA,SACD;AACD,MAAa,mBAAmB,KAC9BA,gBACA,WACD;AACD,MAAa,eAAe,KAAKC,cAAqC,SAAS;AAC/E,MAAa,iBAAiB,KAC5BA,cACA,WACD;AAED,MAAa,mBAAmB,KAC9BC,YACA,SACD;AACD,MAAa,qBAAqB,KAChCA,YACA,WACD;AAgCD,MAAM,cAMF,wBACA,8BASA,SAMG;AACH,mCAAkC,KAAK;AAEvC,QAAO,OAAO,OAAO,OAAO,OAAO,MAAM,EAAE;EACzC;EACA;EACA;EACA,oBAAoBC,QAA2B;EAChD,CAAC;;AAGN,MAAa,oBAAoB,WAC/BJ,aACA,SACD;AACD,MAAa,sBAAsB,WACjCA,aACA,WACD;AACD,MAAa,uBAAuB,WAClCC,gBACA,SACD;AACD,MAAa,yBAAyB,WACpCA,gBACA,WACD;AACD,MAAa,qBAAqB,WAChCC,cACA,SACD;AACD,MAAa,uBAAuB,WAClCA,cACA,WACD;AACD,MAAa,yBAAyB,WACpCC,YACA,SACD;AACD,MAAa,2BAA2B,WACtCA,YACA,WACD"}
|
|
1
|
+
{"version":3,"file":"FunctionSpec.js","names":["FunctionProvenance.Confect","RuntimeAndFunctionType.ConvexQuery","RuntimeAndFunctionType.ConvexMutation","RuntimeAndFunctionType.ConvexAction","RuntimeAndFunctionType.NodeAction","FunctionProvenance.Convex"],"sources":["../src/FunctionSpec.ts"],"sourcesContent":["import type {\n FunctionType,\n FunctionVisibility,\n RegisteredAction,\n RegisteredMutation,\n RegisteredQuery,\n} from \"convex/server\";\nimport type { Schema } from \"effect\";\nimport { Predicate } from \"effect\";\nimport * as FunctionProvenance from \"./FunctionProvenance\";\nimport { validateConfectFunctionIdentifier } from \"./internal/utils\";\nimport * as RuntimeAndFunctionType from \"./RuntimeAndFunctionType\";\n\nexport const TypeId = \"@confect/core/FunctionSpec\";\nexport type TypeId = typeof TypeId;\n\nexport const isFunctionSpec = (u: unknown): u is AnyWithProps =>\n Predicate.hasProperty(u, TypeId);\n\nexport interface FunctionSpec<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Name_ extends string,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n> {\n readonly [TypeId]: TypeId;\n readonly runtimeAndFunctionType: RuntimeAndFunctionType_;\n readonly functionVisibility: FunctionVisibility_;\n readonly name: Name_;\n readonly functionProvenance: FunctionProvenance_;\n}\n\nexport interface Any {\n readonly [TypeId]: TypeId;\n}\n\nexport interface AnyWithProps extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance\n> {}\n\nexport interface AnyConfect extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.AnyConfect\n> {}\n\nexport interface AnyConvex extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.AnyConvex\n> {}\n\nexport interface AnyWithPropsWithRuntime<\n Runtime extends RuntimeAndFunctionType.Runtime,\n> extends FunctionSpec<\n RuntimeAndFunctionType.WithRuntime<Runtime>,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance\n> {}\n\nexport interface AnyWithPropsWithFunctionType<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n> extends FunctionSpec<\n RuntimeAndFunctionType_,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance\n> {}\n\nexport interface AnyWithPropsWithFunctionProvenance<\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n> extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance_\n> {}\n\nexport type GetRuntimeAndFunctionType<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"runtimeAndFunctionType\"];\n\nexport type GetFunctionVisibility<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"functionVisibility\"];\n\nexport type Name<FunctionSpec_ extends AnyWithProps> = FunctionSpec_[\"name\"];\n\nexport type Args<FunctionSpec_ extends AnyWithProps> = FunctionSpec_ extends {\n functionProvenance: {\n _tag: \"Confect\";\n args: infer ArgsSchema_ extends Schema.Schema.AnyNoContext;\n };\n}\n ? ArgsSchema_[\"Type\"]\n : FunctionSpec_ extends {\n functionProvenance: { _tag: \"Convex\"; _args: infer Args_ };\n }\n ? Args_\n : never;\n\nexport type Returns<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n functionProvenance: {\n _tag: \"Confect\";\n returns: infer ReturnsSchema_ extends Schema.Schema.AnyNoContext;\n };\n }\n ? ReturnsSchema_[\"Type\"]\n : FunctionSpec_ extends {\n functionProvenance: { _tag: \"Convex\"; _returns: infer Returns_ };\n }\n ? Awaited<Returns_>\n : never;\n\nexport type EncodedArgs<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n functionProvenance: {\n _tag: \"Confect\";\n args: infer ArgsSchema_ extends Schema.Schema.AnyNoContext;\n };\n }\n ? ArgsSchema_[\"Encoded\"]\n : FunctionSpec_ extends {\n functionProvenance: { _tag: \"Convex\"; _args: infer Args_ };\n }\n ? Args_\n : never;\n\nexport type EncodedReturns<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n functionProvenance: {\n _tag: \"Confect\";\n returns: infer ReturnsSchema_ extends Schema.Schema.AnyNoContext;\n };\n }\n ? ReturnsSchema_[\"Encoded\"]\n : FunctionSpec_ extends {\n functionProvenance: { _tag: \"Convex\"; _returns: infer Returns_ };\n }\n ? Returns_\n : never;\n\nexport type Error<FunctionSpec_ extends AnyWithProps> = FunctionSpec_ extends {\n functionProvenance: FunctionProvenance.Confect<\n any,\n any,\n infer ErrorSchema_ extends Schema.Schema.AnyNoContext\n >;\n}\n ? ErrorSchema_[\"Type\"]\n : never;\n\nexport type EncodedError<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n functionProvenance: FunctionProvenance.Confect<\n any,\n any,\n infer ErrorSchema_ extends Schema.Schema.AnyNoContext\n >;\n }\n ? ErrorSchema_[\"Encoded\"]\n : never;\n\nexport type WithName<\n FunctionSpec_ extends AnyWithProps,\n Name_ extends string,\n> = Extract<FunctionSpec_, { readonly name: Name_ }>;\n\nexport type WithRuntimeAndFunctionType<\n FunctionSpec_ extends AnyWithProps,\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n> = Extract<\n FunctionSpec_,\n { readonly runtimeAndFunctionType: RuntimeAndFunctionType_ }\n>;\n\nexport type WithFunctionType<\n FunctionSpec_ extends AnyWithProps,\n FunctionType_ extends FunctionType,\n> = Extract<\n FunctionSpec_,\n { readonly runtimeAndFunctionType: { readonly functionType: FunctionType_ } }\n>;\n\nexport type WithFunctionProvenance<\n FunctionSpec_ extends AnyWithProps,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n> = Extract<\n FunctionSpec_,\n { readonly functionProvenance: FunctionProvenance_ }\n>;\n\nexport type WithoutName<\n FunctionSpec_ extends AnyWithProps,\n Name_ extends Name<FunctionSpec_>,\n> = Exclude<FunctionSpec_, { readonly name: Name_ }>;\n\nconst Proto = {\n [TypeId]: TypeId,\n};\n\nconst make =\n <\n RuntimeAndFunctionType_ extends\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n >(\n runtimeAndFunctionType: RuntimeAndFunctionType_,\n functionVisibility: FunctionVisibility_,\n ) =>\n <\n const Name_ extends string,\n Args_ extends Schema.Schema.AnyNoContext,\n Returns_ extends Schema.Schema.AnyNoContext,\n Error_ extends Schema.Schema.AnyNoContext = never,\n >({\n name,\n args,\n returns,\n error,\n }: {\n name: Name_;\n args: Args_;\n returns: Returns_;\n error?: Error_;\n }): FunctionSpec<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Confect<Args_, Returns_, Error_>\n > => {\n validateConfectFunctionIdentifier(name);\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType,\n functionVisibility,\n name,\n functionProvenance: FunctionProvenance.Confect(args, returns, error),\n });\n };\n\nexport const publicQuery = make(RuntimeAndFunctionType.ConvexQuery, \"public\");\nexport const internalQuery = make(\n RuntimeAndFunctionType.ConvexQuery,\n \"internal\",\n);\nexport const publicMutation = make(\n RuntimeAndFunctionType.ConvexMutation,\n \"public\",\n);\nexport const internalMutation = make(\n RuntimeAndFunctionType.ConvexMutation,\n \"internal\",\n);\nexport const publicAction = make(RuntimeAndFunctionType.ConvexAction, \"public\");\nexport const internalAction = make(\n RuntimeAndFunctionType.ConvexAction,\n \"internal\",\n);\n\nexport const publicNodeAction = make(\n RuntimeAndFunctionType.NodeAction,\n \"public\",\n);\nexport const internalNodeAction = make(\n RuntimeAndFunctionType.NodeAction,\n \"internal\",\n);\n\ntype MatchingRegisteredFunction<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n> =\n RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"query\"\n ? RegisteredQuery<FunctionVisibility_, any, any>\n : RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"mutation\"\n ? RegisteredMutation<FunctionVisibility_, any, any>\n : RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"action\"\n ? RegisteredAction<FunctionVisibility_, any, any>\n : never;\n\ntype ExtractArgs<F> =\n F extends RegisteredQuery<any, infer A, any>\n ? A\n : F extends RegisteredMutation<any, infer A, any>\n ? A\n : F extends RegisteredAction<any, infer A, any>\n ? A\n : never;\n\ntype ExtractReturns<F> =\n F extends RegisteredQuery<any, any, infer R>\n ? R\n : F extends RegisteredMutation<any, any, infer R>\n ? R\n : F extends RegisteredAction<any, any, infer R>\n ? R\n : never;\n\nconst makeConvex =\n <\n RuntimeAndFunctionType_ extends\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n >(\n runtimeAndFunctionType: RuntimeAndFunctionType_,\n functionVisibility: FunctionVisibility_,\n ) =>\n <\n F extends MatchingRegisteredFunction<\n RuntimeAndFunctionType_,\n FunctionVisibility_\n >,\n >() =>\n <const Name_ extends string>(\n name: Name_,\n ): FunctionSpec<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Convex<ExtractArgs<F>, ExtractReturns<F>>\n > => {\n validateConfectFunctionIdentifier(name);\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType,\n functionVisibility,\n name,\n functionProvenance: FunctionProvenance.Convex(),\n }) as any;\n };\n\nexport const convexPublicQuery = makeConvex(\n RuntimeAndFunctionType.ConvexQuery,\n \"public\",\n);\nexport const convexInternalQuery = makeConvex(\n RuntimeAndFunctionType.ConvexQuery,\n \"internal\",\n);\nexport const convexPublicMutation = makeConvex(\n RuntimeAndFunctionType.ConvexMutation,\n \"public\",\n);\nexport const convexInternalMutation = makeConvex(\n RuntimeAndFunctionType.ConvexMutation,\n \"internal\",\n);\nexport const convexPublicAction = makeConvex(\n RuntimeAndFunctionType.ConvexAction,\n \"public\",\n);\nexport const convexInternalAction = makeConvex(\n RuntimeAndFunctionType.ConvexAction,\n \"internal\",\n);\nexport const convexPublicNodeAction = makeConvex(\n RuntimeAndFunctionType.NodeAction,\n \"public\",\n);\nexport const convexInternalNodeAction = makeConvex(\n RuntimeAndFunctionType.NodeAction,\n \"internal\",\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAa,SAAS;AAGtB,MAAa,kBAAkB,MAC7B,UAAU,YAAY,GAAG,OAAO;AAyLlC,MAAM,QAAQ,GACX,SAAS,QACX;AAED,MAAM,QAMF,wBACA,wBAOA,EACA,MACA,MACA,SACA,YAWG;AACH,mCAAkC,KAAK;AAEvC,QAAO,OAAO,OAAO,OAAO,OAAO,MAAM,EAAE;EACzC;EACA;EACA;EACA,oBAAoBA,QAA2B,MAAM,SAAS,MAAM;EACrE,CAAC;;AAGN,MAAa,cAAc,KAAKC,aAAoC,SAAS;AAC7E,MAAa,gBAAgB,KAC3BA,aACA,WACD;AACD,MAAa,iBAAiB,KAC5BC,gBACA,SACD;AACD,MAAa,mBAAmB,KAC9BA,gBACA,WACD;AACD,MAAa,eAAe,KAAKC,cAAqC,SAAS;AAC/E,MAAa,iBAAiB,KAC5BA,cACA,WACD;AAED,MAAa,mBAAmB,KAC9BC,YACA,SACD;AACD,MAAa,qBAAqB,KAChCA,YACA,WACD;AAgCD,MAAM,cAMF,wBACA,8BASA,SAMG;AACH,mCAAkC,KAAK;AAEvC,QAAO,OAAO,OAAO,OAAO,OAAO,MAAM,EAAE;EACzC;EACA;EACA;EACA,oBAAoBC,QAA2B;EAChD,CAAC;;AAGN,MAAa,oBAAoB,WAC/BJ,aACA,SACD;AACD,MAAa,sBAAsB,WACjCA,aACA,WACD;AACD,MAAa,uBAAuB,WAClCC,gBACA,SACD;AACD,MAAa,yBAAyB,WACpCA,gBACA,WACD;AACD,MAAa,qBAAqB,WAChCC,cACA,SACD;AACD,MAAa,uBAAuB,WAClCA,cACA,WACD;AACD,MAAa,yBAAyB,WACpCC,YACA,SACD;AACD,MAAa,2BAA2B,WACtCA,YACA,WACD"}
|