effect-zero 0.7.0 → 0.9.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/README.md +86 -77
- package/dist/client-transaction.d.ts +0 -1
- package/dist/client-transaction.d.ts.map +1 -1
- package/dist/client.d.ts +38 -138
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +75 -24
- package/dist/client.js.map +1 -1
- package/dist/internal/utils.d.ts +0 -7
- package/dist/internal/utils.d.ts.map +1 -1
- package/dist/internal/utils.js +0 -7
- package/dist/internal/utils.js.map +1 -1
- package/dist/mutator.d.ts +115 -0
- package/dist/mutator.d.ts.map +1 -0
- package/dist/mutator.js +67 -0
- package/dist/mutator.js.map +1 -0
- package/dist/mutator.test.d.ts +2 -0
- package/dist/mutator.test.d.ts.map +1 -0
- package/dist/{client.test.js → mutator.test.js} +5 -5
- package/dist/mutator.test.js.map +1 -0
- package/dist/query.d.ts +2 -2
- package/dist/result.d.ts +1 -1
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +1 -1
- package/dist/result.js.map +1 -1
- package/dist/server-transaction.d.ts +0 -1
- package/dist/server-transaction.d.ts.map +1 -1
- package/dist/server.d.ts +7 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +30 -15
- package/dist/server.js.map +1 -1
- package/dist/types.test.js +85 -120
- package/dist/types.test.js.map +1 -1
- package/package.json +49 -48
- package/src/client.ts +159 -56
- package/src/internal/utils.ts +0 -8
- package/src/mutator.ts +232 -0
- package/src/result.ts +2 -2
- package/src/server.ts +49 -34
- package/dist/client.test.d.ts +0 -2
- package/dist/client.test.d.ts.map +0 -1
- package/dist/client.test.js.map +0 -1
- package/dist/mutators.d.ts +0 -30
- package/dist/mutators.d.ts.map +0 -1
- package/dist/mutators.js +0 -17
- package/dist/mutators.js.map +0 -1
- package/src/mutators.ts +0 -80
package/dist/client.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,6FAA6F;IAC7F,4FAA4F;IAC5F,wGAAwG;IACxG,EAAE,CAAC,MAAM,CACP,wDAAwD,EACxD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO;QAElC,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/dist/mutators.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type * as Effect from "effect/Effect";
|
|
2
|
-
import * as Schema from "effect/Schema";
|
|
3
|
-
export type AnyMutatorFn<R = any, TArgs extends any[] = any[]> = (...args: TArgs) => Effect.Effect<any, any, R>;
|
|
4
|
-
export type AnyMutatorFns<R = any> = {
|
|
5
|
-
[K: string]: AnyMutatorFn<R> | {
|
|
6
|
-
[K: string]: AnyMutatorFn<R>;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
export type AnyMutatorSchema = Schema.Codec<any, any>;
|
|
10
|
-
export type AnyMutatorSchemas = Record<string, AnyMutatorSchema | Record<string, AnyMutatorSchema>>;
|
|
11
|
-
export type MutatorFns<TSchema extends AnyMutatorSchemas> = {
|
|
12
|
-
[K in keyof TSchema]: TSchema[K] extends AnyMutatorSchema ? AnyMutatorFn<unknown, [Schema.Schema.Type<TSchema[K]>]> : TSchema[K] extends infer TSchema extends Record<string, AnyMutatorSchema> ? {
|
|
13
|
-
[K in keyof TSchema]: AnyMutatorFn<unknown, [Schema.Schema.Type<TSchema[K]>]>;
|
|
14
|
-
} : never;
|
|
15
|
-
};
|
|
16
|
-
export declare const MutatorSchemaSymbol: unique symbol;
|
|
17
|
-
export type Mutator<TFunc extends AnyMutatorFn = AnyMutatorFn, TSchema extends AnyMutatorSchema = AnyMutatorSchema> = TFunc & {
|
|
18
|
-
[MutatorSchemaSymbol]: TSchema;
|
|
19
|
-
};
|
|
20
|
-
export type Mutators<TSchema extends AnyMutatorSchemas, TFns extends AnyMutatorFns> = {
|
|
21
|
-
[K in keyof TFns & keyof TSchema]: TFns[K] extends AnyMutatorFn ? TSchema[K] extends AnyMutatorSchema ? Mutator<TFns[K], TSchema[K]> : never : TSchema[K] extends infer TSchema extends Record<string, AnyMutatorSchema> ? TFns[K] extends infer TFns extends Record<string, AnyMutatorFn> ? {
|
|
22
|
-
[K in keyof TFns & keyof TSchema]: Mutator<TFns[K], TSchema[K]>;
|
|
23
|
-
} : never : never;
|
|
24
|
-
} & {};
|
|
25
|
-
export type AnyMutator<R = any, E = any> = Mutator<(...args: any[]) => Effect.Effect<any, E, R>>;
|
|
26
|
-
export type AnyMutators<R = any> = Record<string, AnyMutator<R> | Record<string, AnyMutator<R>>>;
|
|
27
|
-
export type ExtractMutatorsRequirements<TMutators extends AnyMutators> = TMutators extends AnyMutators<infer R> ? R : never;
|
|
28
|
-
export declare const schema: <TSchema extends AnyMutatorSchemas>(schema: TSchema) => TSchema;
|
|
29
|
-
export declare function make<TSchema extends AnyMutatorSchemas, TFns extends MutatorFns<TSchema>>(schema: TSchema, mutators: TFns): Mutators<TSchema, TFns>;
|
|
30
|
-
//# sourceMappingURL=mutators.d.ts.map
|
package/dist/mutators.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mutators.d.ts","sourceRoot":"","sources":["../src/mutators.ts"],"names":[],"mappings":"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"}
|
package/dist/mutators.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import * as Match from "effect/Match";
|
|
2
|
-
import * as Option from "effect/Option";
|
|
3
|
-
import * as Predicate from "effect/Predicate";
|
|
4
|
-
import * as Rec from "effect/Record";
|
|
5
|
-
import * as Schema from "effect/Schema";
|
|
6
|
-
import { prefixId } from "./internal/utils.js";
|
|
7
|
-
export const MutatorSchemaSymbol = Symbol.for(prefixId("MutatorSchema"));
|
|
8
|
-
export const schema = (schema) => schema;
|
|
9
|
-
export function make(schema, mutators) {
|
|
10
|
-
function makeMutator(schema, fn) {
|
|
11
|
-
return Object.assign(fn, { [MutatorSchemaSymbol]: schema });
|
|
12
|
-
}
|
|
13
|
-
return Rec.map(mutators, (v, name) => {
|
|
14
|
-
return Match.value([v, schema[name]]).pipe(Match.when([Predicate.isFunction, Schema.isSchema], ([mutator, schema]) => makeMutator(schema, mutator)), Match.when([Predicate.isObject, Predicate.isObject], ([mutator, schema]) => Rec.map(mutator, (mutator, name) => makeMutator(Option.getOrThrow(Rec.get(schema, name)), mutator))), Match.orElseAbsurd);
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=mutators.js.map
|
package/dist/mutators.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mutators.js","sourceRoot":"","sources":["../src/mutators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAsB/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AA+BzE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAoC,MAAe,EAAE,EAAE,CAAC,MAAM,CAAC;AAMrF,MAAM,UAAU,IAAI,CAAC,MAAyB,EAAE,QAAuB;IACrE,SAAS,WAAW,CAAC,MAAwB,EAAE,EAAgB;QAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QACnC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACxC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CACzE,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CACpG,EACD,KAAK,CAAC,YAAY,CACnB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/src/mutators.ts
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import type * as Effect from "effect/Effect";
|
|
2
|
-
import * as Match from "effect/Match";
|
|
3
|
-
import * as Option from "effect/Option";
|
|
4
|
-
import * as Predicate from "effect/Predicate";
|
|
5
|
-
import * as Rec from "effect/Record";
|
|
6
|
-
import * as Schema from "effect/Schema";
|
|
7
|
-
import { prefixId } from "./internal/utils.js";
|
|
8
|
-
|
|
9
|
-
// biome-ignore lint/suspicious/noExplicitAny: upper bound to allow everything
|
|
10
|
-
export type AnyMutatorFn<R = any, TArgs extends any[] = any[]> = (...args: TArgs) => Effect.Effect<any, any, R>;
|
|
11
|
-
|
|
12
|
-
// biome-ignore lint/suspicious/noExplicitAny: upper bound to allow everything
|
|
13
|
-
export type AnyMutatorFns<R = any> = {
|
|
14
|
-
[K: string]: AnyMutatorFn<R> | { [K: string]: AnyMutatorFn<R> };
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
// biome-ignore lint/suspicious/noExplicitAny: upper bound to allow everything
|
|
18
|
-
export type AnyMutatorSchema = Schema.Codec<any, any>;
|
|
19
|
-
export type AnyMutatorSchemas = Record<string, AnyMutatorSchema | Record<string, AnyMutatorSchema>>;
|
|
20
|
-
|
|
21
|
-
export type MutatorFns<TSchema extends AnyMutatorSchemas> = {
|
|
22
|
-
[K in keyof TSchema]: TSchema[K] extends AnyMutatorSchema
|
|
23
|
-
? AnyMutatorFn<unknown, [Schema.Schema.Type<TSchema[K]>]>
|
|
24
|
-
: TSchema[K] extends infer TSchema extends Record<string, AnyMutatorSchema>
|
|
25
|
-
? { [K in keyof TSchema]: AnyMutatorFn<unknown, [Schema.Schema.Type<TSchema[K]>]> }
|
|
26
|
-
: never;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export const MutatorSchemaSymbol = Symbol.for(prefixId("MutatorSchema"));
|
|
30
|
-
|
|
31
|
-
export type Mutator<
|
|
32
|
-
TFunc extends AnyMutatorFn = AnyMutatorFn,
|
|
33
|
-
TSchema extends AnyMutatorSchema = AnyMutatorSchema,
|
|
34
|
-
> = TFunc & {
|
|
35
|
-
[MutatorSchemaSymbol]: TSchema;
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
export type Mutators<TSchema extends AnyMutatorSchemas, TFns extends AnyMutatorFns> = {
|
|
39
|
-
[K in keyof TFns & keyof TSchema]: TFns[K] extends AnyMutatorFn
|
|
40
|
-
? TSchema[K] extends AnyMutatorSchema
|
|
41
|
-
? Mutator<TFns[K], TSchema[K]>
|
|
42
|
-
: never
|
|
43
|
-
: TSchema[K] extends infer TSchema extends Record<string, AnyMutatorSchema>
|
|
44
|
-
? TFns[K] extends infer TFns extends Record<string, AnyMutatorFn>
|
|
45
|
-
? { [K in keyof TFns & keyof TSchema]: Mutator<TFns[K], TSchema[K]> }
|
|
46
|
-
: never
|
|
47
|
-
: never;
|
|
48
|
-
} & {};
|
|
49
|
-
|
|
50
|
-
// biome-ignore lint/suspicious/noExplicitAny: upper bound to allow everything
|
|
51
|
-
export type AnyMutator<R = any, E = any> = Mutator<(...args: any[]) => Effect.Effect<any, E, R>>;
|
|
52
|
-
|
|
53
|
-
// biome-ignore lint/suspicious/noExplicitAny: upper bound to allow everything
|
|
54
|
-
export type AnyMutators<R = any> = Record<string, AnyMutator<R> | Record<string, AnyMutator<R>>>;
|
|
55
|
-
|
|
56
|
-
export type ExtractMutatorsRequirements<TMutators extends AnyMutators> = TMutators extends AnyMutators<infer R>
|
|
57
|
-
? R
|
|
58
|
-
: never;
|
|
59
|
-
|
|
60
|
-
export const schema = <TSchema extends AnyMutatorSchemas>(schema: TSchema) => schema;
|
|
61
|
-
|
|
62
|
-
export function make<TSchema extends AnyMutatorSchemas, TFns extends MutatorFns<TSchema>>(
|
|
63
|
-
schema: TSchema,
|
|
64
|
-
mutators: TFns,
|
|
65
|
-
): Mutators<TSchema, TFns>;
|
|
66
|
-
export function make(schema: AnyMutatorSchemas, mutators: AnyMutatorFns): AnyMutators {
|
|
67
|
-
function makeMutator(schema: AnyMutatorSchema, fn: AnyMutatorFn) {
|
|
68
|
-
return Object.assign(fn, { [MutatorSchemaSymbol]: schema });
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return Rec.map(mutators, (v, name) => {
|
|
72
|
-
return Match.value([v, schema[name]]).pipe(
|
|
73
|
-
Match.when([Predicate.isFunction, Schema.isSchema], ([mutator, schema]) => makeMutator(schema, mutator)),
|
|
74
|
-
Match.when([Predicate.isObject, Predicate.isObject], ([mutator, schema]) =>
|
|
75
|
-
Rec.map(mutator, (mutator, name) => makeMutator(Option.getOrThrow(Rec.get(schema, name)), mutator)),
|
|
76
|
-
),
|
|
77
|
-
Match.orElseAbsurd,
|
|
78
|
-
);
|
|
79
|
-
});
|
|
80
|
-
}
|