@confect/core 6.0.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,141 @@
1
1
  # @confect/core
2
2
 
3
+ ## 8.0.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 4bb2722: Bump Effect ecosystem to latest. `@effect/platform` is now `^0.96.1` and `@effect/platform-node` is now `^0.106.0` in `@confect/server`'s peer dependencies; `effect` peer is now `^3.21.2` across packages. Consumers must upgrade `@effect/platform`, `@effect/platform-node`, and `effect` in lockstep when bumping `@confect/server`.
8
+
9
+ ### Patch Changes
10
+
11
+ - 40c1cff: Switch sibling `@confect/*` peer-dependency specifiers from `workspace:*` to `workspace:^`. Published peer ranges are now caret-based (e.g. `^7.0.0`) instead of exact-pinned, so non-major upgrades of one `@confect/*` package no longer fall out of range for its peer dependents.
12
+
13
+ Paired with the Changesets `onlyUpdatePeerDependentsWhenOutOfRange` flag, this prevents the entire `@confect/*` family from being promoted to a major bump on every release when only minor/patch changes are present.
14
+
15
+ `@confect/cli` additionally moves `@effect/platform` from `peerDependencies` to `dependencies`, since the CLI consumes it as an internal implementation detail (for `FileSystem`/`Path`) rather than exposing it in its public API. Consumers no longer need to install `@effect/platform` themselves to use the CLI.
16
+
17
+ ## 7.0.0
18
+
19
+ ### Minor Changes
20
+
21
+ - 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.
22
+
23
+ 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.
24
+
25
+ ### Authoring a function with typed errors
26
+
27
+ `FunctionSpec` constructors now accept an optional `error` schema. To support multiple error shapes, combine them with `Schema.Union`.
28
+
29
+ ```ts
30
+ import { FunctionSpec, GenericId, GroupSpec } from "@confect/core";
31
+ import { Schema } from "effect";
32
+
33
+ export class NoteNotFound extends Schema.TaggedError<NoteNotFound>()(
34
+ "NoteNotFound",
35
+ { noteId: GenericId.GenericId("notes") },
36
+ ) {}
37
+
38
+ export const notes = GroupSpec.make("notes").addFunction(
39
+ FunctionSpec.publicQuery({
40
+ name: "getOrFail",
41
+ args: Schema.Struct({ noteId: GenericId.GenericId("notes") }),
42
+ returns: Notes.Doc,
43
+ error: NoteNotFound,
44
+ }),
45
+ );
46
+ ```
47
+
48
+ 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.
49
+
50
+ ```ts
51
+ import { FunctionImpl } from "@confect/server";
52
+ import { Effect } from "effect";
53
+ import api from "../_generated/api";
54
+ import { DatabaseReader } from "../_generated/services";
55
+ import { NoteNotFound } from "./notes.spec";
56
+
57
+ const getOrFail = FunctionImpl.make(api, "notes", "getOrFail", ({ noteId }) =>
58
+ Effect.gen(function* () {
59
+ const reader = yield* DatabaseReader;
60
+ return yield* reader
61
+ .table("notes")
62
+ .get(noteId)
63
+ .pipe(Effect.mapError(() => new NoteNotFound({ noteId })));
64
+ }),
65
+ );
66
+ ```
67
+
68
+ ### Consuming a typed error
69
+
70
+ `@confect/js` (`HttpClient`, `WebSocketClient`) and `@confect/test` (`TestConfect`) surface the decoded error in the `Effect` error channel alongside the existing `HttpClientError`/`WebSocketClientError`/`ParseError`:
71
+
72
+ ```ts
73
+ HttpClient.query(refs.public.notes.getOrFail, { noteId });
74
+ // Effect.Effect<Note, NoteNotFound | HttpClientError | ParseError>
75
+ ```
76
+
77
+ ### `@confect/react`—breaking changes
78
+
79
+ `useQuery`, `useMutation`, and `useAction` now expose typed errors, and `useQuery` returns a tagged result type instead of `Returns | undefined`.
80
+
81
+ **`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`:
82
+
83
+ Before:
84
+
85
+ ```tsx
86
+ const notes = useQuery(refs.public.notes.list, {});
87
+ if (notes === undefined) return <p>Loading…</p>;
88
+ return <NoteList notes={notes} />;
89
+ ```
90
+
91
+ After:
92
+
93
+ ```tsx
94
+ import { QueryResult, useQuery } from "@confect/react";
95
+
96
+ const notes = useQuery(refs.public.notes.list, {});
97
+ return QueryResult.match(notes, {
98
+ onLoading: (skipped) => (skipped ? null : <p>Loading…</p>),
99
+ onSuccess: (notes) => <NoteList notes={notes} />,
100
+ });
101
+ ```
102
+
103
+ 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.
104
+
105
+ When the ref declares an `error` schema, `onFailure` becomes required and receives the decoded typed error:
106
+
107
+ ```tsx
108
+ const lookup = useQuery(refs.public.notes.getOrFail, { noteId });
109
+ QueryResult.match(lookup, {
110
+ onLoading: (skipped) => (skipped ? null : "Looking up…"),
111
+ onSuccess: (note) => `Found: ${note.text}`,
112
+ onFailure: (error) => `Note ${error.noteId} not found.`,
113
+ });
114
+ ```
115
+
116
+ `QueryResult` is a Confect-native type exported from `@confect/react`.
117
+
118
+ **`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.
119
+
120
+ ```ts
121
+ const deleteOrFail = useMutation(refs.public.notes.deleteOrFail);
122
+ const result = await deleteOrFail({ noteId });
123
+ // Either.Either<null, NoteNotFound | Forbidden>
124
+ Either.match(result, {
125
+ onLeft: (error) => /* typed error */,
126
+ onRight: (value) => /* success */,
127
+ });
128
+
129
+ const deleteNote = useMutation(refs.public.notes.delete_); // no `error` schema
130
+ await deleteNote({ noteId }); // Promise<null>, as before
131
+ ```
132
+
133
+ Unspecified failures continue to reject the promise.
134
+
135
+ ### Migration
136
+ - 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).
137
+ - 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.
138
+
3
139
  ## 6.0.0
4
140
 
5
141
  ### Minor Changes
@@ -0,0 +1,12 @@
1
+ declare namespace DatabaseSchema_d_exports {
2
+ export { Any, TypeId, isDatabaseSchema };
3
+ }
4
+ declare const TypeId = "@confect/server/DatabaseSchema";
5
+ type TypeId = typeof TypeId;
6
+ interface Any {
7
+ readonly [TypeId]: TypeId;
8
+ }
9
+ declare const isDatabaseSchema: (u: unknown) => u is Any;
10
+ //#endregion
11
+ export { Any, DatabaseSchema_d_exports, TypeId, isDatabaseSchema };
12
+ //# sourceMappingURL=DatabaseSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseSchema.d.ts","names":[],"sources":["../src/DatabaseSchema.ts"],"mappings":";;;cAEa,MAAA;AAAA,KACD,MAAA,UAAgB,MAAA;AAAA,UAEX,GAAA;EAAA,UACL,MAAA,GAAS,MAAA;AAAA;AAAA,cAGR,gBAAA,GAAoB,CAAA,cAAa,CAAA,IAAK,GAAA"}
@@ -0,0 +1,14 @@
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import { Predicate } from "effect";
3
+
4
+ //#region src/DatabaseSchema.ts
5
+ var DatabaseSchema_exports = /* @__PURE__ */ __exportAll({
6
+ TypeId: () => TypeId,
7
+ isDatabaseSchema: () => isDatabaseSchema
8
+ });
9
+ const TypeId = "@confect/server/DatabaseSchema";
10
+ const isDatabaseSchema = (u) => Predicate.hasProperty(u, TypeId);
11
+
12
+ //#endregion
13
+ export { DatabaseSchema_exports, TypeId, isDatabaseSchema };
14
+ //# sourceMappingURL=DatabaseSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseSchema.js","names":[],"sources":["../src/DatabaseSchema.ts"],"sourcesContent":["import { Predicate } from \"effect\";\n\nexport const TypeId = \"@confect/server/DatabaseSchema\";\nexport type TypeId = typeof TypeId;\n\nexport interface Any {\n readonly [TypeId]: TypeId;\n}\n\nexport const isDatabaseSchema = (u: unknown): u is Any =>\n Predicate.hasProperty(u, TypeId);\n"],"mappings":";;;;;;;;AAEA,MAAa,SAAS;AAOtB,MAAa,oBAAoB,MAC/B,UAAU,YAAY,GAAG,OAAO"}
@@ -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;
@@ -26,76 +28,83 @@ interface Convex<Args extends DefaultFunctionArgs, Returns> {
26
28
  }
27
29
  interface AnyConvex extends Convex<DefaultFunctionArgs, any> {}
28
30
  declare const FunctionProvenance: {
29
- readonly Confect: Data.Case.Constructor<{
30
- readonly _tag: "Confect";
31
- readonly args: Schema.Schema.AnyNoContext;
32
- readonly returns: Schema.Schema.AnyNoContext;
33
- }, "_tag">;
34
31
  readonly Convex: Data.Case.Constructor<{
35
32
  readonly _tag: "Convex";
36
33
  readonly _args: DefaultFunctionArgs;
37
34
  readonly _returns: any;
38
35
  }, "_tag">;
39
- readonly $is: <Tag extends "Confect" | "Convex">(tag: Tag) => (u: unknown) => u is Extract<{
36
+ readonly Confect: Data.Case.Constructor<{
40
37
  readonly _tag: "Confect";
41
38
  readonly args: Schema.Schema.AnyNoContext;
42
39
  readonly returns: Schema.Schema.AnyNoContext;
43
- }, {
44
- readonly _tag: Tag;
45
- }> | Extract<{
40
+ readonly error?: Schema.Schema.AnyNoContext;
41
+ }, "_tag">;
42
+ readonly $is: <Tag extends "Convex" | "Confect">(tag: Tag) => (u: unknown) => u is Extract<{
46
43
  readonly _tag: "Convex";
47
44
  readonly _args: DefaultFunctionArgs;
48
45
  readonly _returns: any;
49
46
  }, {
50
47
  readonly _tag: Tag;
48
+ }> | Extract<{
49
+ readonly _tag: "Confect";
50
+ readonly args: Schema.Schema.AnyNoContext;
51
+ readonly returns: Schema.Schema.AnyNoContext;
52
+ readonly error?: Schema.Schema.AnyNoContext;
53
+ }, {
54
+ readonly _tag: Tag;
51
55
  }>;
52
56
  readonly $match: {
53
57
  <const Cases extends {
54
- readonly Confect: (args: {
55
- readonly _tag: "Confect";
56
- readonly args: Schema.Schema.AnyNoContext;
57
- readonly returns: Schema.Schema.AnyNoContext;
58
- }) => any;
59
58
  readonly Convex: (args: {
60
59
  readonly _tag: "Convex";
61
60
  readonly _args: DefaultFunctionArgs;
62
61
  readonly _returns: any;
63
62
  }) => any;
64
- }>(cases: Cases & { [K in Exclude<keyof Cases, "Confect" | "Convex">]: never }): (value: {
65
- readonly _tag: "Confect";
66
- readonly args: Schema.Schema.AnyNoContext;
67
- readonly returns: Schema.Schema.AnyNoContext;
68
- } | {
69
- readonly _tag: "Convex";
70
- readonly _args: DefaultFunctionArgs;
71
- readonly _returns: any;
72
- }) => effect_Unify0.Unify<ReturnType<Cases["Confect" | "Convex"]>>;
73
- <const Cases extends {
74
63
  readonly Confect: (args: {
75
64
  readonly _tag: "Confect";
76
65
  readonly args: Schema.Schema.AnyNoContext;
77
66
  readonly returns: Schema.Schema.AnyNoContext;
67
+ readonly error?: Schema.Schema.AnyNoContext;
78
68
  }) => any;
69
+ }>(cases: Cases & { [K in Exclude<keyof Cases, "Convex" | "Confect">]: never }): (value: {
70
+ readonly _tag: "Convex";
71
+ readonly _args: DefaultFunctionArgs;
72
+ readonly _returns: any;
73
+ } | {
74
+ readonly _tag: "Confect";
75
+ readonly args: Schema.Schema.AnyNoContext;
76
+ readonly returns: Schema.Schema.AnyNoContext;
77
+ readonly error?: Schema.Schema.AnyNoContext;
78
+ }) => effect_Unify0.Unify<ReturnType<Cases["Convex" | "Confect"]>>;
79
+ <const Cases extends {
79
80
  readonly Convex: (args: {
80
81
  readonly _tag: "Convex";
81
82
  readonly _args: DefaultFunctionArgs;
82
83
  readonly _returns: any;
83
84
  }) => any;
85
+ readonly Confect: (args: {
86
+ readonly _tag: "Confect";
87
+ readonly args: Schema.Schema.AnyNoContext;
88
+ readonly returns: Schema.Schema.AnyNoContext;
89
+ readonly error?: Schema.Schema.AnyNoContext;
90
+ }) => any;
84
91
  }>(value: {
85
- readonly _tag: "Confect";
86
- readonly args: Schema.Schema.AnyNoContext;
87
- readonly returns: Schema.Schema.AnyNoContext;
88
- } | {
89
92
  readonly _tag: "Convex";
90
93
  readonly _args: DefaultFunctionArgs;
91
94
  readonly _returns: any;
92
- }, cases: Cases & { [K in Exclude<keyof Cases, "Confect" | "Convex">]: never }): effect_Unify0.Unify<ReturnType<Cases["Confect" | "Convex"]>>;
95
+ } | {
96
+ readonly _tag: "Confect";
97
+ readonly args: Schema.Schema.AnyNoContext;
98
+ readonly returns: Schema.Schema.AnyNoContext;
99
+ readonly error?: Schema.Schema.AnyNoContext;
100
+ }, cases: Cases & { [K in Exclude<keyof Cases, "Convex" | "Confect">]: never }): effect_Unify0.Unify<ReturnType<Cases["Convex" | "Confect"]>>;
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;EAEzB,MAAA;AAAA;AAAA,UAQe,OAAA,cACF,MAAA,CAAO,MAAA,CAAO,YAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;EAAA,SAErB,IAAA;EAAA,SACA,IAAA,EAAM,IAAA;EAAA,SACN,OAAA,EAAS,OAAA;AAAA;AAAA,UAGH,UAAA,SAAmB,OAAA,CAClC,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;;mBAjCH,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;EAAA;EAAA;;oBAIhB,mBAAA;IAAA;;;;mBALD,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;EAAA;IAAA;;;oBAIhB,mBAAA;IAAA;;;;;;;;uBALD,MAAA,CAAO,MAAA,CAAO,YAAA;QAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA;MAAA;;wBAIhB,mBAAA;QAAA;;;;qBALD,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA;MAAA;sBAIhB,mBAAA;MAAA;;;;;uBALD,MAAA,CAAO,MAAA,CAAO,YAAA;QAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA;MAAA;;wBAIhB,mBAAA;QAAA;;;;qBALD,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA;MAAA;sBAIhB,mBAAA;MAAA;;;;cA8BE,OAAA,gBACE,MAAA,CAAO,MAAA,CAAO,YAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA,EAE9B,IAAA,EAAM,IAAA,EACN,OAAA,EAAS,OAAA;EAAA;iBAxCD,MAAA,CAAO,MAAA,CAAO,YAAA;EAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;AAAA;AAAA,cA8Cd,MAAA,iBAAwB,mBAAA;EAAA;kBA1C1B,mBAAA;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;;oBA/BF,mBAAA;IAAA;;;;mBAND,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;;;;;;wBAIf,mBAAA;QAAA;;;;uBAND,MAAA,CAAO,MAAA,CAAO,YAAA;QAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;QAAA,iBACf,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA;IAAA;;sBAIf,mBAAA;MAAA;;;qBAND,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA,iBACf,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA;;;;wBAIf,mBAAA;QAAA;;;;uBAND,MAAA,CAAO,MAAA,CAAO,YAAA;QAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;QAAA,iBACf,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA;IAAA;;sBAIf,mBAAA;MAAA;;;qBAND,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA,kBACX,MAAA,CAAO,MAAA,CAAO,YAAA;MAAA,iBACf,MAAA,CAAO,MAAA,CAAO,YAAA;IAAA;;;cAqCb,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":";;;;;;;;;AAuCA,MAAa,qBAAqB,KAAK,YAAgC;AAEvE,MAAa,WAIX,MACA,YAEA,mBAAmB,QAAQ;CACzB;CACA;CACD,CAAC;AAEJ,MAAa,eACX,mBAAmB,OACjB,EAAE,CAIH"}
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"}
@@ -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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"}
@@ -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");
@@ -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"}