ignotum 0.0.0 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +161 -0
- package/dist/cli/bin.d.mts +1 -0
- package/dist/cli/bin.mjs +1696 -0
- package/dist/cli/bin.mjs.map +1 -0
- package/dist/runtime/api-BXXIZc_Q.js +119 -0
- package/dist/runtime/api-BXXIZc_Q.js.map +1 -0
- package/dist/runtime/api-Cpx57mk3.d.ts +47 -0
- package/dist/runtime/client/jsx-dev-runtime.d.ts +2 -0
- package/dist/runtime/client/jsx-dev-runtime.js +2 -0
- package/dist/runtime/client/jsx-runtime.d.ts +2 -0
- package/dist/runtime/client/jsx-runtime.js +2 -0
- package/dist/runtime/client.d.ts +29 -0
- package/dist/runtime/client.js +364 -0
- package/dist/runtime/client.js.map +1 -0
- package/dist/runtime/index-BgWROoyk.d.ts +249 -0
- package/dist/runtime/internal/api.d.ts +2 -0
- package/dist/runtime/internal/api.js +2 -0
- package/dist/runtime/internal/server.d.ts +6 -0
- package/dist/runtime/internal/server.js +7 -0
- package/dist/runtime/internal/server.js.map +1 -0
- package/dist/runtime/internal/types.d.ts +2 -0
- package/dist/runtime/internal/types.js +2 -0
- package/dist/runtime/result-B2W-z2wG.js +136 -0
- package/dist/runtime/result-B2W-z2wG.js.map +1 -0
- package/dist/runtime/result-C1ZdsM6Y.d.ts +106 -0
- package/dist/runtime/schema-CNEVLF7D.js +116 -0
- package/dist/runtime/schema-CNEVLF7D.js.map +1 -0
- package/dist/runtime/server.d.ts +9 -0
- package/dist/runtime/server.js +9 -0
- package/dist/runtime/server.js.map +1 -0
- package/package.json +81 -2
- package/src/cli/agent-files.ts +35 -0
- package/src/cli/bin.ts +5 -0
- package/src/cli/client-plugin.ts +66 -0
- package/src/cli/codegen.ts +203 -0
- package/src/cli/command.ts +155 -0
- package/src/cli/dev.ts +206 -0
- package/src/cli/new-project.ts +377 -0
- package/src/cli/package-manager.ts +55 -0
- package/src/client/errors.ts +83 -0
- package/src/client/hooks.ts +141 -0
- package/src/client/index.ts +90 -0
- package/src/client/jsx-dev-runtime.ts +2 -0
- package/src/client/jsx-runtime.ts +2 -0
- package/src/client/query.ts +17 -0
- package/src/client/sync.ts +487 -0
- package/src/dev-runtime/database.ts +374 -0
- package/src/dev-runtime/dev-database.ts +199 -0
- package/src/dev-runtime/functions.ts +293 -0
- package/src/dev-runtime/id.ts +11 -0
- package/src/dev-runtime/sync.ts +473 -0
- package/src/internal/api.ts +141 -0
- package/src/internal/http-paths.ts +5 -0
- package/src/internal/server.ts +3 -0
- package/src/internal/types.ts +2 -0
- package/src/raw.d.ts +4 -0
- package/src/server/index.ts +8 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { n as ErrorBrand, r as ErrorValue, s as Result, t as DocumentNotFoundValue } from "./result-C1ZdsM6Y.js";
|
|
2
|
+
import { Brand, Effect, Schema } from "effect";
|
|
3
|
+
//#region ../contracts/dist/id-BD_sn1pR.d.ts
|
|
4
|
+
declare const GeneratedId: Schema.brand<Schema.String, "ignotum/id">;
|
|
5
|
+
type GeneratedId = typeof GeneratedId.Type;
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region ../contracts/dist/types-C3kZpWHV.d.ts
|
|
8
|
+
//#region src/schema/types.d.ts
|
|
9
|
+
/** A document identifier branded with the table it belongs to. */
|
|
10
|
+
type Id<TableName extends string> = GeneratedId & Brand.Brand<`ignotum/id/${TableName}`>;
|
|
11
|
+
declare const SchemaDefinitionTypeId: unique symbol;
|
|
12
|
+
interface SchemaDefinitionContract<Definition> {
|
|
13
|
+
readonly [SchemaDefinitionTypeId]: Definition;
|
|
14
|
+
}
|
|
15
|
+
type SchemaDefinitionOf<SchemaDefinition> = SchemaDefinition extends SchemaDefinitionContract<infer Definition> ? Definition : never;
|
|
16
|
+
interface TableDefinitionLike {
|
|
17
|
+
readonly fields: Schema.Struct.Fields;
|
|
18
|
+
}
|
|
19
|
+
interface TablesLike {
|
|
20
|
+
readonly [tableName: string]: TableDefinitionLike;
|
|
21
|
+
}
|
|
22
|
+
type TableNameOf$1<Definition extends TablesLike> = keyof Definition & string;
|
|
23
|
+
interface SystemFields<TableName extends string> {
|
|
24
|
+
readonly id: Id<TableName>;
|
|
25
|
+
readonly createdAt: Date;
|
|
26
|
+
readonly updatedAt: Date;
|
|
27
|
+
}
|
|
28
|
+
type DocumentFields<TableName extends string, Table extends TableDefinitionLike> = SystemFields<TableName> & Schema.Struct.Type<Table["fields"]>;
|
|
29
|
+
/** The complete document returned for a table, including Ignotum system fields. */
|
|
30
|
+
type Document<Definition extends TablesLike, TableName extends TableNameOf$1<Definition>> = { readonly [FieldName in keyof DocumentFields<TableName, Definition[TableName]>]: DocumentFields<TableName, Definition[TableName]>[FieldName]; };
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region ../contracts/dist/schema/values.d.ts
|
|
33
|
+
//#region src/schema/values.d.ts
|
|
34
|
+
declare const IdTargetsTypeId: unique symbol;
|
|
35
|
+
declare const UnresolvedReferencesTypeId: unique symbol;
|
|
36
|
+
interface IdTargets<TableName extends string> {
|
|
37
|
+
readonly [IdTargetsTypeId]: TableName;
|
|
38
|
+
}
|
|
39
|
+
interface UnresolvedReferences<TableName extends string> {
|
|
40
|
+
readonly [UnresolvedReferencesTypeId]: TableName;
|
|
41
|
+
}
|
|
42
|
+
type IdTargetsOf<Value> = Value extends IdTargets<infer TableName> ? TableName : never;
|
|
43
|
+
type UnresolvedReferencesOf<Value> = Value extends UnresolvedReferences<infer TableName> ? TableName : never;
|
|
44
|
+
type WithIdTargets<Value, TableName extends string> = [TableName] extends [never] ? Value : Value & IdTargets<TableName>;
|
|
45
|
+
type WithUnresolvedReferences<Value, TableName extends string> = [TableName] extends [never] ? Value : Value & UnresolvedReferences<TableName>;
|
|
46
|
+
type PreserveIdMetadata<Value, Source> = WithUnresolvedReferences<WithIdTargets<Value, IdTargetsOf<Source>>, UnresolvedReferencesOf<Source>>;
|
|
47
|
+
type IdDefinition<TableName extends string> = Schema.brand<typeof GeneratedId, `ignotum/id/${TableName}`> & IdTargets<TableName>;
|
|
48
|
+
type ReferenceDefinition<TableName extends string> = IdDefinition<TableName> & UnresolvedReferences<TableName>;
|
|
49
|
+
type LiteralValue = string | number | boolean;
|
|
50
|
+
interface TableDefinition<Fields extends Schema.Struct.Fields> {
|
|
51
|
+
readonly _tag: "Table";
|
|
52
|
+
readonly fields: Fields;
|
|
53
|
+
readonly schema: Schema.Struct<Fields>;
|
|
54
|
+
}
|
|
55
|
+
type ReservedFieldName = "createdAt" | "id" | "updatedAt";
|
|
56
|
+
type ReservedErrorTagName = "InternalServerError";
|
|
57
|
+
declare const ReservedFieldTypeId: unique symbol;
|
|
58
|
+
interface ReservedField<FieldName extends string> {
|
|
59
|
+
readonly [ReservedFieldTypeId]: `The field name '${FieldName}' is reserved by Ignotum`;
|
|
60
|
+
}
|
|
61
|
+
declare const ReservedErrorTagTypeId: unique symbol;
|
|
62
|
+
interface ReservedErrorTag<Tag extends string> {
|
|
63
|
+
readonly [ReservedErrorTagTypeId]: `The error tag '${Tag}' is reserved by Ignotum`;
|
|
64
|
+
}
|
|
65
|
+
type ErrorTagValidation<Tag extends string> = Tag extends ReservedErrorTagName ? ReservedErrorTag<Tag> : unknown;
|
|
66
|
+
type ReservedFieldValidation<Fields extends Schema.Struct.Fields> = { readonly [FieldName in Extract<keyof Fields, ReservedFieldName>]: ReservedField<FieldName>; };
|
|
67
|
+
type ReservedErrorFieldValidation<Fields extends Schema.Struct.Fields> = { readonly [FieldName in Extract<keyof Fields, "_tag">]: ReservedField<FieldName>; };
|
|
68
|
+
type ErrorDefinition<Tag extends string, Fields extends Schema.Struct.Fields> = PreserveIdMetadata<Schema.brand<Schema.TaggedStruct<Tag, Fields>, typeof ErrorBrand> & ((fields: Schema.Struct.MakeIn<Fields>) => Schema.brand<Schema.TaggedStruct<Tag, Fields>, typeof ErrorBrand>["Type"]), Fields[keyof Fields]>;
|
|
69
|
+
declare const table: <const Fields extends Schema.Struct.Fields>(fields: Fields & ReservedFieldValidation<NoInfer<Fields>>) => TableDefinition<Fields>;
|
|
70
|
+
declare const string: () => Schema.String;
|
|
71
|
+
declare const number: () => Schema.Finite;
|
|
72
|
+
declare const integer: () => Schema.Int;
|
|
73
|
+
declare const boolean: () => Schema.Boolean;
|
|
74
|
+
declare const date: () => Schema.DateFromMillis;
|
|
75
|
+
declare const never: () => Schema.Never;
|
|
76
|
+
declare const nullValue: () => Schema.Null;
|
|
77
|
+
declare const literal: <const Value extends LiteralValue>(value: Value) => Schema.Literal<Value>;
|
|
78
|
+
declare const literals: <const Members extends readonly [LiteralValue, LiteralValue, ...ReadonlyArray<LiteralValue>]>(...members: Members) => Schema.Literals<Members>;
|
|
79
|
+
declare const id: <const TableName extends string>(tableName: TableName) => ReferenceDefinition<TableName>;
|
|
80
|
+
declare const array: <Value extends Schema.Constraint>(value: Value) => PreserveIdMetadata<Schema.$Array<Value>, Value>;
|
|
81
|
+
declare const object: <const Fields extends Schema.Struct.Fields>(fields: Fields) => PreserveIdMetadata<Schema.Struct<Fields>, Fields[keyof Fields]>;
|
|
82
|
+
declare const optional: <Value extends Schema.Constraint>(value: Value) => PreserveIdMetadata<Schema.optional<Value>, Value>;
|
|
83
|
+
declare const nullable: <Value extends Schema.Constraint>(value: Value) => PreserveIdMetadata<Schema.NullOr<Value>, Value>;
|
|
84
|
+
declare const record: <Value extends Schema.Constraint>(value: Value) => PreserveIdMetadata<Schema.$Record<Schema.String, Value>, Value>;
|
|
85
|
+
declare const union: <const Members extends ReadonlyArray<Schema.Constraint>>(...members: Members) => PreserveIdMetadata<Schema.Union<Members>, Members[number]>;
|
|
86
|
+
declare const error: <const Tag extends string, const Fields extends Schema.Struct.Fields>(tag: Tag & ErrorTagValidation<Tag>, fields: Fields & ReservedErrorFieldValidation<NoInfer<Fields>>) => ErrorDefinition<Tag, Fields>;
|
|
87
|
+
declare const values: {
|
|
88
|
+
array: typeof array;
|
|
89
|
+
boolean: typeof boolean;
|
|
90
|
+
date: typeof date;
|
|
91
|
+
error: typeof error;
|
|
92
|
+
id: typeof id;
|
|
93
|
+
integer: typeof integer;
|
|
94
|
+
literal: typeof literal;
|
|
95
|
+
literals: typeof literals;
|
|
96
|
+
never: typeof never;
|
|
97
|
+
null: typeof nullValue;
|
|
98
|
+
nullable: typeof nullable;
|
|
99
|
+
number: typeof number;
|
|
100
|
+
object: typeof object;
|
|
101
|
+
optional: typeof optional;
|
|
102
|
+
record: typeof record;
|
|
103
|
+
string: typeof string;
|
|
104
|
+
union: typeof union;
|
|
105
|
+
};
|
|
106
|
+
type BoundValues<TableName extends string> = Omit<typeof values, "id"> & {
|
|
107
|
+
readonly id: <const Target extends TableName>(tableName: Target) => IdDefinition<Target>;
|
|
108
|
+
};
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region ../contracts/dist/schema/index.d.ts
|
|
111
|
+
//#region src/schema/definition.d.ts
|
|
112
|
+
type AnyTableDefinition = TableDefinition<Schema.Struct.Fields>;
|
|
113
|
+
interface Tables {
|
|
114
|
+
readonly [tableName: string]: AnyTableDefinition;
|
|
115
|
+
}
|
|
116
|
+
type FieldsOf<Table extends AnyTableDefinition> = Table["fields"];
|
|
117
|
+
type IdTargetsOfFields<Fields extends Schema.Struct.Fields> = { readonly [FieldName in keyof Fields]: IdTargetsOf<Fields[FieldName]>; }[keyof Fields];
|
|
118
|
+
declare const UnknownTableReferenceTypeId: unique symbol;
|
|
119
|
+
interface UnknownTableReference<TableName extends string> {
|
|
120
|
+
readonly [UnknownTableReferenceTypeId]: `Unknown table reference: ${TableName}`;
|
|
121
|
+
}
|
|
122
|
+
type DefinitionReferenceValidation<Definitions extends Tables> = { readonly [TableName in keyof Definitions]: Exclude<IdTargetsOfFields<FieldsOf<Definitions[TableName]>>, keyof Definitions & string> extends (infer UnknownTarget extends string) ? [UnknownTarget] extends [never] ? unknown : UnknownTableReference<UnknownTarget> : never; };
|
|
123
|
+
type TableNameOf<SchemaDefinition extends Tables> = keyof SchemaDefinition & string;
|
|
124
|
+
interface DefinedSchema<SchemaDefinition extends Tables> extends SchemaDefinitionContract<SchemaDefinition> {
|
|
125
|
+
readonly _tag: "Schema";
|
|
126
|
+
}
|
|
127
|
+
interface SchemaAuthoring {
|
|
128
|
+
readonly table: typeof table;
|
|
129
|
+
readonly values: typeof values;
|
|
130
|
+
}
|
|
131
|
+
declare const defineSchema: <const Definitions extends Tables>(define: (authoring: SchemaAuthoring) => Definitions & DefinitionReferenceValidation<NoInfer<Definitions>>) => DefinedSchema<Definitions>;
|
|
132
|
+
//#endregion
|
|
133
|
+
//#region src/schema/server.d.ts
|
|
134
|
+
type TransportSchema = Schema.ConstraintCodec<unknown, unknown, never, never>;
|
|
135
|
+
interface ErrorSchema extends Schema.ConstraintCodec<ErrorValue, unknown, never, never> {
|
|
136
|
+
readonly Type: ErrorValue;
|
|
137
|
+
}
|
|
138
|
+
interface ResolvedFunctionValue {
|
|
139
|
+
readonly [UnresolvedReferencesTypeId]?: never;
|
|
140
|
+
}
|
|
141
|
+
type ResolvedFunctionFields<Fields extends Schema.Struct.Fields> = { readonly [FieldName in keyof Fields]: Fields[FieldName] & ResolvedFunctionValue & TransportSchema; };
|
|
142
|
+
interface ForbiddenSystemFields {
|
|
143
|
+
readonly id?: never;
|
|
144
|
+
readonly createdAt?: never;
|
|
145
|
+
readonly updatedAt?: never;
|
|
146
|
+
}
|
|
147
|
+
type InsertOf<Table extends Tables[string]> = Schema.Struct.MakeIn<FieldsOf<Table>> & ForbiddenSystemFields;
|
|
148
|
+
type PatchOf<Table extends Tables[string]> = Partial<Schema.Struct.MakeIn<FieldsOf<Table>>> & ForbiddenSystemFields;
|
|
149
|
+
type FunctionArgs = Schema.Struct.Fields | undefined;
|
|
150
|
+
type FunctionReturns = TransportSchema | undefined;
|
|
151
|
+
type ArgsOf<Args extends FunctionArgs> = Args extends Schema.Struct.Fields ? keyof Args extends never ? void : Schema.Struct.Type<Args> : void;
|
|
152
|
+
type ReturnOf<Returns extends FunctionReturns> = Returns extends TransportSchema ? Returns["Type"] : void;
|
|
153
|
+
type DocumentNotFound<TableName extends string = string> = DocumentNotFoundValue<TableName, Id<TableName>>;
|
|
154
|
+
interface DatabaseQuery<Definition extends Tables, Name extends TableNameOf<Definition>> {
|
|
155
|
+
collect(): Result<ReadonlyArray<Document<Definition, Name>>, never>;
|
|
156
|
+
}
|
|
157
|
+
interface DatabaseReader<Definition extends Tables> {
|
|
158
|
+
query<const Name extends TableNameOf<Definition>>(name: Name): DatabaseQuery<Definition, Name>;
|
|
159
|
+
find<const Name extends TableNameOf<Definition>>(name: Name, id: Id<NoInfer<Name>>): Result<Document<Definition, Name> | undefined, never>;
|
|
160
|
+
get<const Name extends TableNameOf<Definition>>(name: Name, id: Id<NoInfer<Name>>): Result<Document<Definition, Name>, DocumentNotFound<Name>>;
|
|
161
|
+
}
|
|
162
|
+
interface DatabaseWriter<Definition extends Tables> extends DatabaseReader<Definition> {
|
|
163
|
+
delete<const Name extends TableNameOf<Definition>>(name: Name, id: Id<NoInfer<Name>>): Result<void, never>;
|
|
164
|
+
insert<const Name extends TableNameOf<Definition>>(name: Name, value: InsertOf<Definition[NoInfer<Name>]>): Result<Id<Name>, never>;
|
|
165
|
+
patch<const Name extends TableNameOf<Definition>>(name: Name, id: Id<NoInfer<Name>>, value: PatchOf<Definition[NoInfer<Name>]>): Result<void, never>;
|
|
166
|
+
replace<const Name extends TableNameOf<Definition>>(name: Name, id: Id<NoInfer<Name>>, value: InsertOf<Definition[NoInfer<Name>]>): Result<void, never>;
|
|
167
|
+
}
|
|
168
|
+
interface QueryContext<Definition extends Tables> {
|
|
169
|
+
readonly db: DatabaseReader<Definition>;
|
|
170
|
+
}
|
|
171
|
+
interface MutationContext<Definition extends Tables> {
|
|
172
|
+
readonly db: DatabaseWriter<Definition>;
|
|
173
|
+
}
|
|
174
|
+
type FunctionKind = "Mutation" | "Query";
|
|
175
|
+
type HandlerContext<Kind extends FunctionKind, Definition extends Tables> = Kind extends "Query" ? QueryContext<Definition> : MutationContext<Definition>;
|
|
176
|
+
type Handler<Kind extends FunctionKind, Definition extends Tables, Args extends FunctionArgs, Success, Failure extends ErrorValue> = (ctx: HandlerContext<Kind, Definition>, args: ArgsOf<Args>) => Generator<Effect.Effect<unknown, Failure, never>, Success, never>;
|
|
177
|
+
type HandlerFailure<HandlerType> = HandlerType extends ((...arguments_: infer _Arguments) => Generator<infer Yielded, unknown, never>) ? Yielded extends Effect.Effect<unknown, infer Failure extends ErrorValue, never> ? Failure : never : never;
|
|
178
|
+
type FunctionDefinition<Kind extends FunctionKind, Definition extends Tables, Args extends FunctionArgs, Returns extends FunctionReturns, Errors extends ErrorSchema | undefined, Failure extends ErrorValue> = {
|
|
179
|
+
readonly _tag: Kind;
|
|
180
|
+
readonly handler: Handler<Kind, Definition, Args, ReturnOf<Returns>, Failure>;
|
|
181
|
+
} & (Args extends Schema.Struct.Fields ? {
|
|
182
|
+
readonly args: Args;
|
|
183
|
+
} : {
|
|
184
|
+
readonly args?: never;
|
|
185
|
+
}) & (Returns extends TransportSchema ? {
|
|
186
|
+
readonly returns: Returns;
|
|
187
|
+
} : {
|
|
188
|
+
readonly returns?: never;
|
|
189
|
+
}) & (Errors extends ErrorSchema ? {
|
|
190
|
+
readonly errors: Errors;
|
|
191
|
+
} : {
|
|
192
|
+
readonly errors?: never;
|
|
193
|
+
});
|
|
194
|
+
interface FunctionInput<Kind extends FunctionKind, Definition extends Tables, Args extends FunctionArgs, Success, Failure extends ErrorValue> {
|
|
195
|
+
readonly handler: Handler<Kind, Definition, Args, Success, Failure>;
|
|
196
|
+
}
|
|
197
|
+
type WithArgs<Args extends Schema.Struct.Fields> = {
|
|
198
|
+
readonly args: Args & ResolvedFunctionFields<NoInfer<Args>>;
|
|
199
|
+
};
|
|
200
|
+
interface WithoutArgs {
|
|
201
|
+
readonly args?: never;
|
|
202
|
+
}
|
|
203
|
+
type WithReturns<Returns extends TransportSchema> = {
|
|
204
|
+
readonly returns: Returns & ResolvedFunctionValue;
|
|
205
|
+
};
|
|
206
|
+
interface WithoutReturns {
|
|
207
|
+
readonly returns?: never;
|
|
208
|
+
}
|
|
209
|
+
interface DefineFunction<Kind extends FunctionKind, Definition extends Tables> {
|
|
210
|
+
<const Args extends Schema.Struct.Fields, Returns extends TransportSchema, Errors extends ErrorSchema>(definition: FunctionInput<Kind, Definition, Args, Returns["Type"], Errors["Type"]> & WithArgs<Args> & WithReturns<Returns> & {
|
|
211
|
+
readonly errors: Errors & ResolvedFunctionValue;
|
|
212
|
+
}): FunctionDefinition<Kind, Definition, Args, Returns, Errors, Errors["Type"]>;
|
|
213
|
+
<Returns extends TransportSchema, Errors extends ErrorSchema>(definition: FunctionInput<Kind, Definition, undefined, Returns["Type"], Errors["Type"]> & WithoutArgs & WithReturns<Returns> & {
|
|
214
|
+
readonly errors: Errors & ResolvedFunctionValue;
|
|
215
|
+
}): FunctionDefinition<Kind, Definition, undefined, Returns, Errors, Errors["Type"]>;
|
|
216
|
+
<const Args extends Schema.Struct.Fields, Errors extends ErrorSchema>(definition: FunctionInput<Kind, Definition, Args, void, Errors["Type"]> & WithArgs<Args> & WithoutReturns & {
|
|
217
|
+
readonly errors: Errors & ResolvedFunctionValue;
|
|
218
|
+
}): FunctionDefinition<Kind, Definition, Args, undefined, Errors, Errors["Type"]>;
|
|
219
|
+
<Errors extends ErrorSchema>(definition: FunctionInput<Kind, Definition, undefined, void, Errors["Type"]> & WithoutArgs & WithoutReturns & {
|
|
220
|
+
readonly errors: Errors & ResolvedFunctionValue;
|
|
221
|
+
}): FunctionDefinition<Kind, Definition, undefined, undefined, Errors, Errors["Type"]>;
|
|
222
|
+
<const Args extends Schema.Struct.Fields, Returns extends TransportSchema, HandlerType extends Handler<Kind, Definition, Args, Returns["Type"], ErrorValue> = Handler<Kind, Definition, Args, Returns["Type"], never>>(definition: WithArgs<Args> & WithReturns<Returns> & {
|
|
223
|
+
readonly errors?: never;
|
|
224
|
+
readonly handler: HandlerType;
|
|
225
|
+
}): FunctionDefinition<Kind, Definition, Args, Returns, undefined, HandlerFailure<HandlerType>>;
|
|
226
|
+
<Returns extends TransportSchema, HandlerType extends Handler<Kind, Definition, undefined, Returns["Type"], ErrorValue> = Handler<Kind, Definition, undefined, Returns["Type"], never>>(definition: WithoutArgs & WithReturns<Returns> & {
|
|
227
|
+
readonly errors?: never;
|
|
228
|
+
readonly handler: HandlerType;
|
|
229
|
+
}): FunctionDefinition<Kind, Definition, undefined, Returns, undefined, HandlerFailure<HandlerType>>;
|
|
230
|
+
<const Args extends Schema.Struct.Fields, HandlerType extends Handler<Kind, Definition, Args, void, ErrorValue> = Handler<Kind, Definition, Args, void, never>>(definition: WithArgs<Args> & WithoutReturns & {
|
|
231
|
+
readonly errors?: never;
|
|
232
|
+
readonly handler: HandlerType;
|
|
233
|
+
}): FunctionDefinition<Kind, Definition, Args, undefined, undefined, HandlerFailure<HandlerType>>;
|
|
234
|
+
<HandlerType extends Handler<Kind, Definition, undefined, void, ErrorValue> = Handler<Kind, Definition, undefined, void, never>>(definition: WithoutArgs & WithoutReturns & {
|
|
235
|
+
readonly errors?: never;
|
|
236
|
+
readonly handler: HandlerType;
|
|
237
|
+
}): FunctionDefinition<Kind, Definition, undefined, undefined, undefined, HandlerFailure<HandlerType>>;
|
|
238
|
+
}
|
|
239
|
+
interface FunctionBuilders<Definition extends Tables> {
|
|
240
|
+
readonly query: DefineFunction<"Query", Definition>;
|
|
241
|
+
readonly mutation: DefineFunction<"Mutation", Definition>;
|
|
242
|
+
}
|
|
243
|
+
interface SchemaBindings<Definition extends Tables> extends FunctionBuilders<Definition> {
|
|
244
|
+
readonly values: BoundValues<TableNameOf<Definition>>;
|
|
245
|
+
}
|
|
246
|
+
declare const bindSchema: <const Definition extends Tables>(schema: DefinedSchema<Definition>) => SchemaBindings<Definition>;
|
|
247
|
+
//#endregion
|
|
248
|
+
export { Document as a, SchemaDefinitionTypeId as c, defineSchema as i, SchemaAuthoring as n, Id as o, bindSchema as r, SchemaDefinitionOf as s, DefinedSchema as t };
|
|
249
|
+
//# sourceMappingURL=index-BgWROoyk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","names":["bindContractSchema"],"sources":["../../../src/internal/server.ts"],"sourcesContent":["import { bindSchema as bindContractSchema } from \"@ignotum/contracts/schema\";\n\nexport const bindSchema: typeof bindContractSchema = bindContractSchema;\n"],"mappings":";;AAEA,MAAa,aAAwCA"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Brand, Effect, Effectable, Function, Option, Predicate, Schema } from "effect";
|
|
2
|
+
//#region ../contracts/dist/value-Briqf-Ua.js
|
|
3
|
+
const TransportValueSchema = Schema.suspend(() => Schema.Union([
|
|
4
|
+
Schema.Null,
|
|
5
|
+
Schema.Boolean,
|
|
6
|
+
Schema.Finite,
|
|
7
|
+
Schema.String,
|
|
8
|
+
Schema.Date,
|
|
9
|
+
Schema.Array(TransportValueSchema),
|
|
10
|
+
Schema.Record(Schema.String, Schema.UndefinedOr(TransportValueSchema))
|
|
11
|
+
]));
|
|
12
|
+
const encodeTransportValue = (value) => {
|
|
13
|
+
if (Predicate.isDate(value)) return Schema.encodeSync(Schema.DateFromMillis)(value);
|
|
14
|
+
if (globalThis.Array.isArray(value)) return value.map(encodeTransportValue);
|
|
15
|
+
if (Predicate.isNumber(value)) return Schema.decodeSync(Schema.Finite)(value);
|
|
16
|
+
if (Predicate.isNull(value) || Predicate.isString(value) || Predicate.isBoolean(value)) return value;
|
|
17
|
+
return Object.fromEntries(Object.entries(value).flatMap(([key, child]) => child === void 0 ? [] : [[key, encodeTransportValue(child)]]));
|
|
18
|
+
};
|
|
19
|
+
const encodeTransportObject = (value) => Schema.decodeUnknownSync(Schema.JsonObject)(encodeTransportValue(Schema.decodeUnknownSync(TransportValueSchema)(value)));
|
|
20
|
+
const pathKey = (path) => JSON.stringify(path);
|
|
21
|
+
const decodeTransportValueAt = (value, path, encodedDatePaths) => {
|
|
22
|
+
if (encodedDatePaths.has(pathKey(path))) return Schema.decodeUnknownSync(Schema.DateFromMillis)(value);
|
|
23
|
+
if (globalThis.Array.isArray(value)) return value.map((item, index) => decodeTransportValueAt(item, [...path, index], encodedDatePaths));
|
|
24
|
+
if (Predicate.isNull(value) || Predicate.isString(value) || Predicate.isNumber(value) || Predicate.isBoolean(value)) return value;
|
|
25
|
+
return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, decodeTransportValueAt(item, [...path, key], encodedDatePaths)]));
|
|
26
|
+
};
|
|
27
|
+
const decodeTransportValue = (value, datePaths) => decodeTransportValueAt(value, [], new Set(datePaths.map(pathKey)));
|
|
28
|
+
const decodeTransportObject = (value, datePaths) => {
|
|
29
|
+
const encodedDatePaths = new Set(datePaths.map(pathKey));
|
|
30
|
+
return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, decodeTransportValueAt(child, [key], encodedDatePaths)]));
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region ../contracts/dist/runtime/result.js
|
|
34
|
+
const ResultTypeId = Symbol.for("ignotum/runtime/result/Result");
|
|
35
|
+
const CompletedResultTypeId = Symbol.for("ignotum/runtime/result/Completed");
|
|
36
|
+
const PendingResultTypeId = Symbol.for("ignotum/runtime/result/Pending");
|
|
37
|
+
const ErrorBrand = "ignotum/error";
|
|
38
|
+
const makeErrorValue = Brand.nominal();
|
|
39
|
+
const ErrorValueSchema = Schema.StructWithRest(Schema.Struct({ _tag: Schema.String }), [Schema.Record(Schema.String, Schema.Json)]).pipe(Schema.brand(ErrorBrand));
|
|
40
|
+
var InternalServerErrorCause = class extends Schema.TaggedError()("InternalServerError", { requestId: Schema.String }) {};
|
|
41
|
+
const InternalServerErrorSchema = InternalServerErrorCause.pipe(Schema.brand(ErrorBrand));
|
|
42
|
+
const effectOf = (value) => Predicate.hasProperty(value, ResultTypeId) ? value[ResultTypeId] : Effect.succeed(value);
|
|
43
|
+
function makeResultEffectBase() {
|
|
44
|
+
const Base = function() {};
|
|
45
|
+
Base.prototype = Effectable.Prototype({
|
|
46
|
+
label: "IgnotumResult",
|
|
47
|
+
evaluate() {
|
|
48
|
+
return this[ResultTypeId];
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return Base;
|
|
52
|
+
}
|
|
53
|
+
const ResultEffectBase = makeResultEffectBase();
|
|
54
|
+
var ResultOperation = class ResultOperation extends ResultEffectBase {
|
|
55
|
+
[ResultTypeId];
|
|
56
|
+
constructor(effect, completed) {
|
|
57
|
+
super();
|
|
58
|
+
this[ResultTypeId] = effect;
|
|
59
|
+
if (completed !== void 0) Object.defineProperty(this, CompletedResultTypeId, { value: completed });
|
|
60
|
+
}
|
|
61
|
+
catch(cases) {
|
|
62
|
+
const effectCases = {};
|
|
63
|
+
for (const [tag, handler] of Object.entries(cases)) if (Predicate.isFunction(handler)) effectCases[tag] = (failure) => effectOf(handler(failure));
|
|
64
|
+
const runtimeEffect = this[ResultTypeId];
|
|
65
|
+
const caught = Effect.catchTags(runtimeEffect, effectCases);
|
|
66
|
+
return new ResultOperation(caught);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
var PendingQueryResult = class {
|
|
70
|
+
[PendingResultTypeId] = PendingResultTypeId;
|
|
71
|
+
};
|
|
72
|
+
const inspectResult = (value) => {
|
|
73
|
+
if (!Predicate.hasProperty(value, CompletedResultTypeId)) return void 0;
|
|
74
|
+
return value[CompletedResultTypeId];
|
|
75
|
+
};
|
|
76
|
+
const isFailureResult = (result) => Predicate.hasProperty(result, CompletedResultTypeId) && Predicate.isObject(result[CompletedResultTypeId]) && Predicate.hasProperty(result[CompletedResultTypeId], "type") && result[CompletedResultTypeId].type === "Failure";
|
|
77
|
+
const succeed = (value) => new ResultOperation(Effect.succeed(value), {
|
|
78
|
+
type: "Success",
|
|
79
|
+
value
|
|
80
|
+
});
|
|
81
|
+
const fail = (error) => new ResultOperation(Effect.fail(error), {
|
|
82
|
+
type: "Failure",
|
|
83
|
+
error
|
|
84
|
+
});
|
|
85
|
+
const tryResult = (body) => {
|
|
86
|
+
return new ResultOperation(Effect.gen(body));
|
|
87
|
+
};
|
|
88
|
+
const match = Function.dual(2, (result, matchers) => {
|
|
89
|
+
if (result instanceof PendingQueryResult) {
|
|
90
|
+
if (matchers.pending === void 0) throw new Error("A pending Result requires a pending matcher.");
|
|
91
|
+
return matchers.pending();
|
|
92
|
+
}
|
|
93
|
+
if (!Predicate.hasProperty(result, ResultTypeId)) throw new Error("Unknown Result implementation.");
|
|
94
|
+
const inspected = inspectResult(result);
|
|
95
|
+
if (inspected?.type === "Success") {
|
|
96
|
+
const value = inspected.value;
|
|
97
|
+
return matchers.value(value);
|
|
98
|
+
}
|
|
99
|
+
if (!isFailureResult(result)) throw new Error("Unknown or incomplete Result operation.");
|
|
100
|
+
const error = result[CompletedResultTypeId].error;
|
|
101
|
+
if (error._tag === "InternalServerError") {
|
|
102
|
+
const internalError = Schema.decodeUnknownSync(InternalServerErrorSchema)(error);
|
|
103
|
+
const handler = matchers.internalError;
|
|
104
|
+
if (handler === void 0) throw internalError;
|
|
105
|
+
return handler(internalError);
|
|
106
|
+
}
|
|
107
|
+
const errorMatcher = matchers.error;
|
|
108
|
+
if (errorMatcher === void 0) throw new Error(`No matcher was provided for ${error._tag}.`);
|
|
109
|
+
if (Predicate.isFunction(errorMatcher)) return errorMatcher(error);
|
|
110
|
+
const handlers = errorMatcher;
|
|
111
|
+
const handler = Object.hasOwn(handlers, error._tag) ? handlers[error._tag] : void 0;
|
|
112
|
+
if (handler === void 0) throw new Error(`No matcher was provided for ${error._tag}.`);
|
|
113
|
+
return handler(error);
|
|
114
|
+
});
|
|
115
|
+
const pending = () => new PendingQueryResult();
|
|
116
|
+
const failureFromWire = (error, datePaths = []) => {
|
|
117
|
+
const internalError = Schema.decodeUnknownOption(InternalServerErrorSchema)(error);
|
|
118
|
+
if (Option.isSome(internalError)) return fail(internalError.value);
|
|
119
|
+
const decoded = Schema.decodeUnknownOption(ErrorValueSchema)(error);
|
|
120
|
+
if (Option.isNone(decoded)) throw new Error("The server returned an invalid application error.");
|
|
121
|
+
const restored = decodeTransportObject(decoded.value, datePaths);
|
|
122
|
+
return fail(makeErrorValue({
|
|
123
|
+
...restored,
|
|
124
|
+
_tag: decoded.value._tag
|
|
125
|
+
}));
|
|
126
|
+
};
|
|
127
|
+
const Result = {
|
|
128
|
+
fail,
|
|
129
|
+
match,
|
|
130
|
+
succeed,
|
|
131
|
+
try: tryResult
|
|
132
|
+
};
|
|
133
|
+
//#endregion
|
|
134
|
+
export { decodeTransportValue as a, pending as i, Result as n, encodeTransportObject as o, failureFromWire as r, ErrorBrand as t };
|
|
135
|
+
|
|
136
|
+
//# sourceMappingURL=result-B2W-z2wG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-B2W-z2wG.js","names":[],"sources":["../../../contracts/dist/value-Briqf-Ua.js","../../../contracts/dist/runtime/result.js"],"sourcesContent":["import { Predicate, Schema } from \"effect\";\n//#region src/runtime/value.ts\nconst TransportValueSchema = Schema.suspend(() => Schema.Union([\n\tSchema.Null,\n\tSchema.Boolean,\n\tSchema.Finite,\n\tSchema.String,\n\tSchema.Date,\n\tSchema.Array(TransportValueSchema),\n\tSchema.Record(Schema.String, Schema.UndefinedOr(TransportValueSchema))\n]));\nconst encodeTransportValue = (value) => {\n\tif (Predicate.isDate(value)) return Schema.encodeSync(Schema.DateFromMillis)(value);\n\tif (globalThis.Array.isArray(value)) return value.map(encodeTransportValue);\n\tif (Predicate.isNumber(value)) return Schema.decodeSync(Schema.Finite)(value);\n\tif (Predicate.isNull(value) || Predicate.isString(value) || Predicate.isBoolean(value)) return value;\n\treturn Object.fromEntries(Object.entries(value).flatMap(([key, child]) => child === void 0 ? [] : [[key, encodeTransportValue(child)]]));\n};\nconst encodeTransportObject = (value) => Schema.decodeUnknownSync(Schema.JsonObject)(encodeTransportValue(Schema.decodeUnknownSync(TransportValueSchema)(value)));\nconst collectDatePaths = (value, path, paths) => {\n\tif (Predicate.isDate(value)) {\n\t\tSchema.decodeSync(Schema.Date)(value);\n\t\tpaths.push(path);\n\t\treturn;\n\t}\n\tif (globalThis.Array.isArray(value)) {\n\t\tfor (const [index, child] of value.entries()) collectDatePaths(child, [...path, index], paths);\n\t\treturn;\n\t}\n\tif (value === void 0 || Predicate.isNull(value) || Predicate.isString(value) || Predicate.isNumber(value) || Predicate.isBoolean(value)) return;\n\tfor (const [key, child] of Object.entries(value)) collectDatePaths(child, [...path, key], paths);\n};\nconst datePathsOf = (value) => {\n\tconst paths = [];\n\tcollectDatePaths(value, [], paths);\n\treturn paths;\n};\nconst datePathsOfObject = (value) => datePathsOf(Schema.decodeUnknownSync(TransportValueSchema)(value));\nconst pathKey = (path) => JSON.stringify(path);\nconst decodeTransportValueAt = (value, path, encodedDatePaths) => {\n\tif (encodedDatePaths.has(pathKey(path))) return Schema.decodeUnknownSync(Schema.DateFromMillis)(value);\n\tif (globalThis.Array.isArray(value)) return value.map((item, index) => decodeTransportValueAt(item, [...path, index], encodedDatePaths));\n\tif (Predicate.isNull(value) || Predicate.isString(value) || Predicate.isNumber(value) || Predicate.isBoolean(value)) return value;\n\treturn Object.fromEntries(Object.entries(value).map(([key, item]) => [key, decodeTransportValueAt(item, [...path, key], encodedDatePaths)]));\n};\nconst decodeTransportValue = (value, datePaths) => decodeTransportValueAt(value, [], new Set(datePaths.map(pathKey)));\nconst decodeTransportObject = (value, datePaths) => {\n\tconst encodedDatePaths = new Set(datePaths.map(pathKey));\n\treturn Object.fromEntries(Object.entries(value).map(([key, child]) => [key, decodeTransportValueAt(child, [key], encodedDatePaths)]));\n};\n//#endregion\nexport { decodeTransportValue as a, decodeTransportObject as i, datePathsOf as n, encodeTransportObject as o, datePathsOfObject as r, encodeTransportValue as s, TransportValueSchema as t };\n\n//# sourceMappingURL=value-Briqf-Ua.js.map","import { i as decodeTransportObject } from \"../value-Briqf-Ua.js\";\nimport { Brand, Effect, Effectable, Function, Option, Predicate, Schema } from \"effect\";\n//#region src/runtime/result.ts\nconst ResultTypeId = Symbol.for(\"ignotum/runtime/result/Result\");\nconst CompletedResultTypeId = Symbol.for(\"ignotum/runtime/result/Completed\");\nconst PendingResultTypeId = Symbol.for(\"ignotum/runtime/result/Pending\");\nconst ErrorBrand = \"ignotum/error\";\nconst makeErrorValue = Brand.nominal();\nconst ErrorValueSchema = Schema.StructWithRest(Schema.Struct({ _tag: Schema.String }), [Schema.Record(Schema.String, Schema.Json)]).pipe(Schema.brand(ErrorBrand));\nvar InternalServerErrorCause = class extends Schema.TaggedError()(\"InternalServerError\", { requestId: Schema.String }) {};\nconst InternalServerError = InternalServerErrorCause;\nconst InternalServerErrorSchema = InternalServerErrorCause.pipe(Schema.brand(ErrorBrand));\nconst effectOf = (value) => Predicate.hasProperty(value, ResultTypeId) ? value[ResultTypeId] : Effect.succeed(value);\nfunction makeResultEffectBase() {\n\tconst Base = function() {};\n\tBase.prototype = Effectable.Prototype({\n\t\tlabel: \"IgnotumResult\",\n\t\tevaluate() {\n\t\t\treturn this[ResultTypeId];\n\t\t}\n\t});\n\treturn Base;\n}\nconst ResultEffectBase = makeResultEffectBase();\nvar ResultOperation = class ResultOperation extends ResultEffectBase {\n\t[ResultTypeId];\n\tconstructor(effect, completed) {\n\t\tsuper();\n\t\tthis[ResultTypeId] = effect;\n\t\tif (completed !== void 0) Object.defineProperty(this, CompletedResultTypeId, { value: completed });\n\t}\n\tcatch(cases) {\n\t\tconst effectCases = {};\n\t\tfor (const [tag, handler] of Object.entries(cases)) if (Predicate.isFunction(handler)) effectCases[tag] = (failure) => effectOf(handler(failure));\n\t\tconst runtimeEffect = this[ResultTypeId];\n\t\tconst caught = Effect.catchTags(runtimeEffect, effectCases);\n\t\treturn new ResultOperation(caught);\n\t}\n};\nvar PendingQueryResult = class {\n\t[PendingResultTypeId] = PendingResultTypeId;\n};\nconst inspectResult = (value) => {\n\tif (!Predicate.hasProperty(value, CompletedResultTypeId)) return void 0;\n\treturn value[CompletedResultTypeId];\n};\nconst effectFromResult = (result) => result[ResultTypeId];\nconst resultFromEffect = (effect) => new ResultOperation(effect);\nconst isFailureResult = (result) => Predicate.hasProperty(result, CompletedResultTypeId) && Predicate.isObject(result[CompletedResultTypeId]) && Predicate.hasProperty(result[CompletedResultTypeId], \"type\") && result[CompletedResultTypeId].type === \"Failure\";\nconst succeed = (value) => new ResultOperation(Effect.succeed(value), {\n\ttype: \"Success\",\n\tvalue\n});\nconst fail = (error) => new ResultOperation(Effect.fail(error), {\n\ttype: \"Failure\",\n\terror\n});\nconst tryResult = (body) => {\n\treturn new ResultOperation(Effect.gen(body));\n};\nconst match = Function.dual(2, (result, matchers) => {\n\tif (result instanceof PendingQueryResult) {\n\t\tif (matchers.pending === void 0) throw new Error(\"A pending Result requires a pending matcher.\");\n\t\treturn matchers.pending();\n\t}\n\tif (!Predicate.hasProperty(result, ResultTypeId)) throw new Error(\"Unknown Result implementation.\");\n\tconst inspected = inspectResult(result);\n\tif (inspected?.type === \"Success\") {\n\t\tconst value = inspected.value;\n\t\treturn matchers.value(value);\n\t}\n\tif (!isFailureResult(result)) throw new Error(\"Unknown or incomplete Result operation.\");\n\tconst error = result[CompletedResultTypeId].error;\n\tif (error._tag === \"InternalServerError\") {\n\t\tconst internalError = Schema.decodeUnknownSync(InternalServerErrorSchema)(error);\n\t\tconst handler = matchers.internalError;\n\t\tif (handler === void 0) throw internalError;\n\t\treturn handler(internalError);\n\t}\n\tconst errorMatcher = matchers.error;\n\tif (errorMatcher === void 0) throw new Error(`No matcher was provided for ${error._tag}.`);\n\tif (Predicate.isFunction(errorMatcher)) return errorMatcher(error);\n\tconst handlers = errorMatcher;\n\tconst handler = Object.hasOwn(handlers, error._tag) ? handlers[error._tag] : void 0;\n\tif (handler === void 0) throw new Error(`No matcher was provided for ${error._tag}.`);\n\treturn handler(error);\n});\nconst pending = () => new PendingQueryResult();\nconst failureFromWire = (error, datePaths = []) => {\n\tconst internalError = Schema.decodeUnknownOption(InternalServerErrorSchema)(error);\n\tif (Option.isSome(internalError)) return fail(internalError.value);\n\tconst decoded = Schema.decodeUnknownOption(ErrorValueSchema)(error);\n\tif (Option.isNone(decoded)) throw new Error(\"The server returned an invalid application error.\");\n\tconst restored = decodeTransportObject(decoded.value, datePaths);\n\treturn fail(makeErrorValue({\n\t\t...restored,\n\t\t_tag: decoded.value._tag\n\t}));\n};\nconst documentNotFound = (table, id) => Brand.nominal()({\n\t_tag: \"DocumentNotFound\",\n\ttable,\n\tid\n});\nconst Result = {\n\tfail,\n\tmatch,\n\tsucceed,\n\ttry: tryResult\n};\n//#endregion\nexport { ErrorBrand, ErrorValueSchema, InternalServerError, InternalServerErrorSchema, Result, documentNotFound, effectFromResult, failureFromWire, inspectResult, match, pending, resultFromEffect };\n\n//# sourceMappingURL=result.js.map"],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Brand, Effect, Schema } from "effect";
|
|
2
|
+
//#region ../contracts/dist/runtime/result.d.ts
|
|
3
|
+
//#region src/runtime/result.d.ts
|
|
4
|
+
declare const ResultTypeId: unique symbol;
|
|
5
|
+
declare const PendingResultTypeId: unique symbol;
|
|
6
|
+
declare const ErrorBrand: "ignotum/error";
|
|
7
|
+
type ErrorValue = {
|
|
8
|
+
readonly _tag: string;
|
|
9
|
+
} & Brand.Brand<typeof ErrorBrand>;
|
|
10
|
+
declare const InternalServerErrorCause_base: Schema.Class<InternalServerErrorCause, Schema.TaggedStruct<"InternalServerError", {
|
|
11
|
+
readonly requestId: Schema.String;
|
|
12
|
+
}>, import("effect/Cause").YieldableError>;
|
|
13
|
+
declare class InternalServerErrorCause extends InternalServerErrorCause_base {}
|
|
14
|
+
declare const InternalServerError: typeof InternalServerErrorCause;
|
|
15
|
+
declare const InternalServerErrorSchema: Schema.brand<Schema.decodeTo<Schema.declareConstructor<InternalServerErrorCause, {
|
|
16
|
+
readonly _tag: "InternalServerError";
|
|
17
|
+
readonly requestId: string;
|
|
18
|
+
}, readonly [Schema.TaggedStruct<"InternalServerError", {
|
|
19
|
+
readonly requestId: Schema.String;
|
|
20
|
+
}>], {
|
|
21
|
+
readonly _tag: "InternalServerError";
|
|
22
|
+
readonly requestId: string;
|
|
23
|
+
}>, Schema.TaggedStruct<"InternalServerError", {
|
|
24
|
+
readonly requestId: Schema.String;
|
|
25
|
+
}>, never, never>, "ignotum/error">;
|
|
26
|
+
type InternalServerError = typeof InternalServerErrorSchema.Type;
|
|
27
|
+
type DocumentNotFoundValue<TableName extends string = string, Identifier extends string = string> = ErrorValue & {
|
|
28
|
+
readonly _tag: "DocumentNotFound";
|
|
29
|
+
readonly table: TableName;
|
|
30
|
+
readonly id: Identifier;
|
|
31
|
+
};
|
|
32
|
+
type CatchOutput = object | string | number | boolean | bigint | symbol | null | undefined;
|
|
33
|
+
type CatchCases<Failure extends ErrorValue> = { readonly [Tag in Failure["_tag"]]?: (failure: Extract<Failure, {
|
|
34
|
+
readonly _tag: Tag;
|
|
35
|
+
}>) => CatchOutput; };
|
|
36
|
+
type CaseReturn<Cases> = ReturnType<Extract<Cases[keyof Cases], (...args: never) => CatchOutput>>;
|
|
37
|
+
type SuccessOfReturn<Value> = Value extends Result<infer Success, ErrorValue> ? Success : Value;
|
|
38
|
+
type FailureOfReturn<Value> = Value extends Result<unknown, infer Failure> ? Failure : never;
|
|
39
|
+
type HandledTags<Cases> = Extract<keyof Cases, string>;
|
|
40
|
+
type YieldFailure<Yielded> = Yielded extends Effect.Effect<unknown, infer Failure, never> ? Failure extends ErrorValue ? Failure : never : never;
|
|
41
|
+
interface Result<out Success, out Failure extends ErrorValue> {
|
|
42
|
+
readonly [ResultTypeId]: Effect.Effect<Success, Failure>;
|
|
43
|
+
[Symbol.iterator](): Effect.EffectIterator<Effect.Effect<Success, Failure>>;
|
|
44
|
+
catch<const Cases extends CatchCases<Failure>>(cases: Cases & { readonly [Tag in Exclude<keyof Cases, Failure["_tag"]>]: never; }): Result<Success | SuccessOfReturn<CaseReturn<Cases>>, Exclude<Failure, {
|
|
45
|
+
readonly _tag: HandledTags<Cases>;
|
|
46
|
+
}> | FailureOfReturn<CaseReturn<Cases>>>;
|
|
47
|
+
}
|
|
48
|
+
type SettledResult<Success, Failure extends ErrorValue> = Omit<Result<Success, Failure>, "catch" | typeof Symbol.iterator>;
|
|
49
|
+
interface PendingResult {
|
|
50
|
+
readonly [PendingResultTypeId]: typeof PendingResultTypeId;
|
|
51
|
+
}
|
|
52
|
+
type QueryResult<Success, Failure extends ErrorValue> = PendingResult | SettledResult<Success, Failure>;
|
|
53
|
+
type ApplicationError<Failure extends ErrorValue> = Exclude<Failure, {
|
|
54
|
+
readonly _tag: "InternalServerError";
|
|
55
|
+
}>;
|
|
56
|
+
type InternalError<Failure extends ErrorValue> = Extract<Failure, {
|
|
57
|
+
readonly _tag: "InternalServerError";
|
|
58
|
+
}>;
|
|
59
|
+
type ErrorHandlers<Failure extends ErrorValue, Output> = { readonly [Tag in Failure["_tag"]]: (error: Extract<Failure, {
|
|
60
|
+
readonly _tag: Tag;
|
|
61
|
+
}>) => Output; };
|
|
62
|
+
type ErrorMatcher<Failure extends ErrorValue, Output> = [ApplicationError<Failure>] extends [never] ? {
|
|
63
|
+
readonly error?: never;
|
|
64
|
+
} : {
|
|
65
|
+
readonly error: ((error: ApplicationError<Failure>) => Output) | ErrorHandlers<ApplicationError<Failure>, Output>;
|
|
66
|
+
};
|
|
67
|
+
type InternalErrorMatcher<Failure extends ErrorValue, Output> = [InternalError<Failure>] extends [never] ? {
|
|
68
|
+
readonly internalError?: never;
|
|
69
|
+
} : {
|
|
70
|
+
readonly internalError?: (error: InternalError<Failure>) => Output;
|
|
71
|
+
};
|
|
72
|
+
type ResultMatchers<Success, Failure extends ErrorValue, Output> = {
|
|
73
|
+
readonly value: (value: Success) => Output;
|
|
74
|
+
} & ErrorMatcher<Failure, Output> & InternalErrorMatcher<Failure, Output>;
|
|
75
|
+
type QueryResultMatchers<Success, Failure extends ErrorValue, Output> = {
|
|
76
|
+
readonly pending: () => Output;
|
|
77
|
+
readonly value: (value: Success) => Output;
|
|
78
|
+
} & ErrorMatcher<Failure, Output> & InternalErrorMatcher<Failure, Output>;
|
|
79
|
+
type CurriedResultMatchers<Success, Failure extends ErrorValue, Output> = Omit<ResultMatchers<Success, Failure, Output>, "internalError"> & ([InternalError<Failure>] extends [never] ? {
|
|
80
|
+
readonly internalError?: never;
|
|
81
|
+
} : {
|
|
82
|
+
readonly internalError?: (error: InternalError<NoInfer<Failure>>) => Output;
|
|
83
|
+
});
|
|
84
|
+
type CurriedQueryResultMatchers<Success, Failure extends ErrorValue, Output> = Omit<QueryResultMatchers<Success, Failure, Output>, "internalError"> & ([InternalError<Failure>] extends [never] ? {
|
|
85
|
+
readonly internalError?: never;
|
|
86
|
+
} : {
|
|
87
|
+
readonly internalError?: (error: InternalError<NoInfer<Failure>>) => Output;
|
|
88
|
+
});
|
|
89
|
+
declare const succeed: <Actual, Expected = Actual>(value: Actual & NoInfer<Expected>) => Result<Expected, never>;
|
|
90
|
+
declare const fail: <Actual extends ErrorValue, Expected extends ErrorValue = Actual>(error: Actual & NoInfer<Expected>) => Result<never, Expected>;
|
|
91
|
+
declare const tryResult: <Success, Yielded extends Effect.Effect<unknown, ErrorValue, never>>(body: () => Generator<Yielded, Success, never>) => Result<Success, [Yielded] extends [never] ? never : YieldFailure<Yielded>>;
|
|
92
|
+
interface Match {
|
|
93
|
+
<Success, Failure extends ErrorValue, Output>(result: SettledResult<Success, Failure>, matchers: ResultMatchers<Success, Failure, Output>): Output;
|
|
94
|
+
<Success, Failure extends ErrorValue, Output>(result: QueryResult<Success, Failure>, matchers: QueryResultMatchers<Success, Failure, Output>): Output;
|
|
95
|
+
<Success, Failure extends ErrorValue, Output>(matchers: CurriedQueryResultMatchers<Success, Failure, Output>): (result: QueryResult<Success, Failure>) => Output;
|
|
96
|
+
<Success, Failure extends ErrorValue, Output>(matchers: CurriedResultMatchers<Success, Failure, Output>): (result: SettledResult<Success, Failure>) => Output;
|
|
97
|
+
}
|
|
98
|
+
declare const Result: {
|
|
99
|
+
fail: typeof fail;
|
|
100
|
+
match: Match;
|
|
101
|
+
succeed: typeof succeed;
|
|
102
|
+
try: typeof tryResult;
|
|
103
|
+
};
|
|
104
|
+
//#endregion
|
|
105
|
+
export { Match as a, SettledResult as c, InternalServerError as i, ErrorBrand as n, QueryResult as o, ErrorValue as r, Result as s, DocumentNotFoundValue as t };
|
|
106
|
+
//# sourceMappingURL=result-C1ZdsM6Y.d.ts.map
|