@typed/guard 0.7.2 → 1.0.0-beta.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 +98 -0
- package/dist/index.d.ts +247 -3
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +176 -4
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +314 -0
- package/package.json +18 -24
- package/src/index.test.ts +370 -0
- package/src/index.ts +661 -3
- package/tsconfig.json +4 -26
- package/.nvmrc +0 -1
- package/biome.json +0 -36
- package/dist/ExtensibleFunction.d.ts +0 -1
- package/dist/ExtensibleFunction.js +0 -7
- package/dist/ExtensibleFunction.js.map +0 -1
- package/dist/Guard.d.ts +0 -143
- package/dist/Guard.js +0 -95
- package/dist/Guard.js.map +0 -1
- package/dist/Guardable.d.ts +0 -10
- package/dist/Guardable.js +0 -13
- package/dist/Guardable.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/readme.md +0 -199
- package/src/ExtensibleFunction.test.ts +0 -102
- package/src/ExtensibleFunction.ts +0 -8
- package/src/Guard.test.ts +0 -189
- package/src/Guard.ts +0 -536
- package/src/Guardable.test.ts +0 -18
- package/src/Guardable.ts +0 -22
package/README.md
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# @typed/guard
|
|
2
|
+
|
|
3
|
+
> **Beta:** This package is in beta; APIs may change.
|
|
4
|
+
|
|
5
|
+
`@typed/guard` provides **Effect-based guards**: functions that take an input and produce `Effect<Option<O>, E, R>`. Guards can be composed with `pipe`, `map`, `filter`, `bind`, and integrated with Effect Schema (`fromSchemaDecode` / `fromSchemaEncode`, `decode` / `encode`). Use them for validation, parsing, and route matching when you want a composable “maybe this input becomes this output” with effects.
|
|
6
|
+
|
|
7
|
+
## Dependencies
|
|
8
|
+
|
|
9
|
+
- `effect`
|
|
10
|
+
|
|
11
|
+
## API overview
|
|
12
|
+
|
|
13
|
+
- **Type:** `Guard<I, O, E, R>` — `(input: I) => Effect.Effect<Option.Option<O>, E, R>`; `GuardInput` = Guard | AsGuard.
|
|
14
|
+
- **Composition:** `getGuard`, `pipe` (chain guards), `map`, `mapEffect`, `filter`, `filterMap`, `tap`.
|
|
15
|
+
- **Building:** `liftPredicate` (from predicate); `any(guards)` for tagged unions.
|
|
16
|
+
- **Schema:** `fromSchemaDecode(schema)`, `fromSchemaEncode(schema)`; `decode(guard, schema)`, `encode(guard, schema)`.
|
|
17
|
+
- **Effects:** `provide`, `provideService`, `provideServiceEffect`; `catchAll`, `catchTag`, `catchCause`.
|
|
18
|
+
- **Struct helpers:** `addTag`, `bindTo`, `bind`, `let`.
|
|
19
|
+
|
|
20
|
+
## API Reference
|
|
21
|
+
|
|
22
|
+
### Types
|
|
23
|
+
|
|
24
|
+
- **`Guard<I, O, E, R>`** — Core guard type: `(input: I) => Effect.Effect<Option.Option<O>, E, R>`.
|
|
25
|
+
- **`Guard.Input<T>`**, **`Guard.Output<T>`**, **`Guard.Error<T>`**, **`Guard.Services<T>`** — Type-level extractors for a guard or `AsGuard` type.
|
|
26
|
+
- **`AsGuard<I, O, E, R>`** — Interface with `asGuard(): Guard<I, O, E, R>` for types that can be used as guards.
|
|
27
|
+
- **`GuardInput<I, O, E, R>`** — Union `Guard<I, O, E, R> | AsGuard<I, O, E, R>`; accepted wherever a guard is expected.
|
|
28
|
+
- **`AnyInput<GS>`**, **`AnyOutput<GS>`** — Input and output types for `any(guards)`; `AnyOutput<GS>` is a tagged union `{ _tag: K; value: Guard.Output<GS[K]> }`.
|
|
29
|
+
|
|
30
|
+
### Core
|
|
31
|
+
|
|
32
|
+
- **`getGuard(guard)`** — Normalizes a `GuardInput` to a `Guard` (unwraps `AsGuard`).
|
|
33
|
+
|
|
34
|
+
### Composition
|
|
35
|
+
|
|
36
|
+
- **`pipe(input, output)`** — Chains two guards; the second runs on the first’s output when the first succeeds. Signature: `(input, output) => Guard<I, B, E | E2, R | R2>`.
|
|
37
|
+
- **`map(guard, f)`** — Maps the guard’s output with a pure function. Dual (data-first / data-last).
|
|
38
|
+
- **`mapEffect(guard, f)`** — Maps the guard’s output with an Effect. Dual.
|
|
39
|
+
- **`filter(guard, predicate)`** — Keeps only outputs that satisfy the predicate (type refinement or boolean). Dual.
|
|
40
|
+
- **`filterMap(guard, f)`** — Transforms output to `Option<B>`; `None` means no match. Dual.
|
|
41
|
+
- **`tap(guard, f)`** — Runs a side effect (or Effect) on the output and passes the original output through. Dual.
|
|
42
|
+
|
|
43
|
+
### Building
|
|
44
|
+
|
|
45
|
+
- **`liftPredicate(predicate)`** — Builds a guard from a predicate. With a refinement `(a: A) => a is B`, output is narrowed to `B`; otherwise `Guard<A, A>`.
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
liftPredicate<A, B extends A>(predicate: (a: A) => a is B): Guard<A, B>;
|
|
49
|
+
liftPredicate<A>(predicate: (a: A) => boolean): Guard<A, A>;
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
- **`any(guards)`** — Takes an object of named guards and returns a guard whose input is the intersection of all guard inputs and whose output is the tagged union `{ _tag: key; value: output }`. Tries each guard in order and returns the first match.
|
|
53
|
+
|
|
54
|
+
### Schema
|
|
55
|
+
|
|
56
|
+
- **`fromSchemaDecode(schema)`** — Builds a guard from an Effect Schema: input is the schema’s encoded type, output is the schema’s type. Uses `Schema.decodeEffect`.
|
|
57
|
+
- **`fromSchemaEncode(schema)`** — Builds a guard from an Effect Schema: input is the schema’s type, output is the encoded type. Uses `Schema.encodeEffect`.
|
|
58
|
+
- **`decode(guard, schema)`** — Composes the guard with schema decoding (pipe with `fromSchemaDecode(schema)`). Dual.
|
|
59
|
+
- **`encode(guard, schema)`** — Composes the guard with schema encoding (pipe with `fromSchemaEncode(schema)`). Dual.
|
|
60
|
+
|
|
61
|
+
### Effect integration
|
|
62
|
+
|
|
63
|
+
- **`provide(guard, provided)`** — Provides a `ServiceMap` or `Layer` to the guard’s environment.
|
|
64
|
+
- **`provideService(guard, tag, service)`** — Provides a single service to the guard’s environment.
|
|
65
|
+
- **`provideServiceEffect(guard, tag, effect)`** — Provides a service via an Effect to the guard’s environment.
|
|
66
|
+
- **`catchAll(guard, f)`** — Recovers from any error by running `f` and treating its result as a successful match. Alias: **`catch`**.
|
|
67
|
+
- **`catchTag(guard, tag, f)`** — Recovers from a specific tagged error.
|
|
68
|
+
- **`catchCause(guard, f)`** — Recovers from the full `Cause` of the guard’s failure.
|
|
69
|
+
|
|
70
|
+
### Struct helpers
|
|
71
|
+
|
|
72
|
+
- **`addTag(guard, value)`** — Adds a readonly `_tag` property to the guard’s output. Dual.
|
|
73
|
+
- **`bindTo(guard, key)`** — Wraps the guard’s output in an object under the given key: `{ [key]: O }`. Dual.
|
|
74
|
+
- **`bind(guard, key, f)`** — Runs a second guard on the first’s output and merges the result under `key` into the output object. Dual.
|
|
75
|
+
- **`let(guard, key, value)`** — Adds a fixed property to the guard’s output. Dual.
|
|
76
|
+
|
|
77
|
+
## Example
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { Effect, Option } from "effect";
|
|
81
|
+
import * as Guard from "@typed/guard";
|
|
82
|
+
import * as Schema from "effect/Schema";
|
|
83
|
+
|
|
84
|
+
const Positive = Schema.Number.pipe(Schema.positive());
|
|
85
|
+
const guardDecode = Guard.fromSchemaDecode(Positive);
|
|
86
|
+
|
|
87
|
+
// Inside Effect.gen(function* () { ... })
|
|
88
|
+
const result = yield* guardDecode(42).pipe(
|
|
89
|
+
Effect.map(Option.match({
|
|
90
|
+
onNone: () => "invalid",
|
|
91
|
+
onSome: (n) => `ok: ${n}`,
|
|
92
|
+
})),
|
|
93
|
+
);
|
|
94
|
+
// result === "ok: 42"
|
|
95
|
+
|
|
96
|
+
const even = Guard.liftPredicate((n: number) => n % 2 === 0);
|
|
97
|
+
const positiveEven = Guard.pipe(guardDecode, even);
|
|
98
|
+
```
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,247 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Cause from "effect/Cause";
|
|
5
|
+
import * as Effect from "effect/Effect";
|
|
6
|
+
import type * as Layer from "effect/Layer";
|
|
7
|
+
import * as Option from "effect/Option";
|
|
8
|
+
import type * as Predicate from "effect/Predicate";
|
|
9
|
+
import * as Schema from "effect/Schema";
|
|
10
|
+
import type * as ServiceMap from "effect/ServiceMap";
|
|
11
|
+
/**
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
export type Guard<in I, out O, out E = never, out R = never> = (input: I) => Effect.Effect<Option.Option<O>, E, R>;
|
|
15
|
+
/**
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
*/
|
|
18
|
+
export declare namespace Guard {
|
|
19
|
+
/**
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
type Input<T> = [T] extends [Guard<infer I, infer _R, infer _E, infer _O>] ? I : [T] extends [AsGuard<infer I, infer _R, infer _E, infer _O>] ? I : never;
|
|
23
|
+
/**
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
*/
|
|
26
|
+
type Services<T> = [T] extends [Guard<infer _I, infer _O, infer _E, infer R>] ? R : [T] extends [AsGuard<infer _I, infer _O, infer _E, infer R>] ? R : never;
|
|
27
|
+
/**
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
*/
|
|
30
|
+
type Error<T> = [T] extends [Guard<infer _I, infer _O, infer E, infer _R>] ? E : [T] extends [AsGuard<infer _I, infer _O, infer E, infer _R>] ? E : never;
|
|
31
|
+
/**
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
*/
|
|
34
|
+
type Output<T> = [T] extends [Guard<infer _I, infer O, infer _E, infer _R>] ? O : [T] extends [AsGuard<infer _I, infer O, infer _E, infer _R>] ? O : never;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @since 1.0.0
|
|
38
|
+
*/
|
|
39
|
+
export interface AsGuard<in I, out O, out E = never, out R = never> {
|
|
40
|
+
readonly asGuard: () => Guard<I, O, E, R>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* @since 1.0.0
|
|
44
|
+
*/
|
|
45
|
+
export type GuardInput<I, O, E = never, R = never> = Guard<I, O, E, R> | AsGuard<I, O, E, R>;
|
|
46
|
+
/**
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
*/
|
|
49
|
+
export declare const getGuard: <I, O, E = never, R = never>(guard: GuardInput<I, O, E, R>) => Guard<I, O, E, R>;
|
|
50
|
+
/**
|
|
51
|
+
* @since 1.0.0
|
|
52
|
+
*/
|
|
53
|
+
export declare const pipe: {
|
|
54
|
+
<O, B, E2, R2>(output: GuardInput<O, B, E2, R2>): <I, R, E>(input: GuardInput<I, O, E, R>) => Guard<I, B, E | E2, R | R2>;
|
|
55
|
+
<I, O, E, R, B, E2, R2>(input: GuardInput<I, O, E, R>, output: GuardInput<O, B, E2, R2>): Guard<I, B, E | E2, R | R2>;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
*/
|
|
60
|
+
export declare const mapEffect: {
|
|
61
|
+
<O, B, E2, R2>(f: (o: O) => Effect.Effect<B, E2, R2>): <I, R, E>(guard: GuardInput<I, O, E, R>) => Guard<I, B, E | E2, R | R2>;
|
|
62
|
+
<I, O, E, R, B, E2, R2>(guard: GuardInput<I, O, E, R>, f: (o: O) => Effect.Effect<B, E2, R2>): Guard<I, B, E | E2, R | R2>;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
*/
|
|
67
|
+
export declare const map: {
|
|
68
|
+
<O, B>(f: (o: O) => B): <I, R, E>(guard: GuardInput<I, O, E, R>) => Guard<I, B, E, R>;
|
|
69
|
+
<I, O, E, R, B>(guard: GuardInput<I, O, E, R>, f: (o: O) => B): Guard<I, B, E, R>;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* @since 1.0.0
|
|
73
|
+
*/
|
|
74
|
+
export declare const tap: {
|
|
75
|
+
<O, B, E2 = never, R2 = never>(f: (o: O) => void | Effect.Effect<B, E2, R2>): <I, R, E>(guard: GuardInput<I, O, E, R>) => Guard<I, O, E | E2, R | R2>;
|
|
76
|
+
<I, O, E, R, B, E2, R2>(guard: GuardInput<I, O, E, R>, f: (o: O) => void | Effect.Effect<B, E2, R2>): Guard<I, O, E | E2, R | R2>;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* @since 1.0.0
|
|
80
|
+
*/
|
|
81
|
+
export declare const filterMap: {
|
|
82
|
+
<O, B>(f: (o: O) => Option.Option<B>): <I, R, E>(guard: GuardInput<I, O, E, R>) => Guard<I, B, E, R>;
|
|
83
|
+
<I, O, E, R, B>(guard: GuardInput<I, O, E, R>, f: (o: O) => Option.Option<B>): Guard<I, B, E, R>;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* @since 1.0.0
|
|
87
|
+
*/
|
|
88
|
+
export declare const filter: {
|
|
89
|
+
<O, O2 extends O>(predicate: (o: O) => o is O2): <I, R, E>(guard: GuardInput<I, O, E, R>) => Guard<I, O, E, R>;
|
|
90
|
+
<O>(predicate: (o: O) => boolean): <I, R, E>(guard: GuardInput<I, O, E, R>) => Guard<I, O, E, R>;
|
|
91
|
+
<I, O, E, R, O2 extends O>(guard: GuardInput<I, O, E, R>, predicate: (o: O) => o is O2): Guard<I, O, E, R>;
|
|
92
|
+
<I, O, E, R>(guard: GuardInput<I, O, E, R>, predicate: (o: O) => boolean): Guard<I, O, E, R>;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* @since 1.0.0
|
|
96
|
+
*/
|
|
97
|
+
export declare function any<const GS extends Readonly<Record<string, GuardInput<any, any, any, any>>>>(guards: GS): Guard<AnyInput<GS>, AnyOutput<GS>, Guard.Error<GS[keyof GS]>, Guard.Services<GS[keyof GS]>>;
|
|
98
|
+
/**
|
|
99
|
+
* @since 1.0.0
|
|
100
|
+
*/
|
|
101
|
+
export type AnyInput<GS extends Readonly<Record<string, GuardInput<any, any, any, any>>>> = UnionToIntersection<Guard.Input<GS[keyof GS]>>;
|
|
102
|
+
type UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any ? R : never;
|
|
103
|
+
/**
|
|
104
|
+
* @since 1.0.0
|
|
105
|
+
*/
|
|
106
|
+
export type AnyOutput<GS extends Readonly<Record<string, GuardInput<any, any, any, any>>>> = [
|
|
107
|
+
{
|
|
108
|
+
[K in keyof GS]: {
|
|
109
|
+
readonly _tag: K;
|
|
110
|
+
readonly value: Guard.Output<GS[K]>;
|
|
111
|
+
};
|
|
112
|
+
}[keyof GS]
|
|
113
|
+
] extends [infer R] ? R : never;
|
|
114
|
+
/**
|
|
115
|
+
* @since 1.0.0
|
|
116
|
+
*/
|
|
117
|
+
export declare function liftPredicate<A, B extends A>(predicate: Predicate.Refinement<A, B>): Guard<A, B>;
|
|
118
|
+
export declare function liftPredicate<A>(predicate: Predicate.Predicate<A>): Guard<A, A>;
|
|
119
|
+
/**
|
|
120
|
+
* @since 1.0.0
|
|
121
|
+
*/
|
|
122
|
+
export declare const catchCause: {
|
|
123
|
+
<E, O2, E2, R2>(f: (e: Cause.Cause<E>) => Effect.Effect<O2, E2, R2>): <I, O, R>(guard: GuardInput<I, O, E, R>) => Guard<I, O | O2, E2, R | R2>;
|
|
124
|
+
<I, O, E, R, O2, E2, R2>(guard: GuardInput<I, O, E, R>, f: (e: Cause.Cause<E>) => Effect.Effect<O2, E2, R2>): Guard<I, O | O2, E2, R | R2>;
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* @since 1.0.0
|
|
128
|
+
*/
|
|
129
|
+
export declare const catchAll: {
|
|
130
|
+
<E, O2, E2, R2>(f: (e: E) => Effect.Effect<O2, E2, R2>): <I, O, R>(guard: GuardInput<I, O, E, R>) => Guard<I, O | O2, E2, R | R2>;
|
|
131
|
+
<I, O, E, R, O2, E2, R2>(guard: GuardInput<I, O, E, R>, f: (e: E) => Effect.Effect<O2, E2, R2>): Guard<I, O | O2, E2, R | R2>;
|
|
132
|
+
};
|
|
133
|
+
export { catchAll as catch };
|
|
134
|
+
/**
|
|
135
|
+
* @since 1.0.0
|
|
136
|
+
*/
|
|
137
|
+
export declare const catchTag: {
|
|
138
|
+
<E, K extends E extends {
|
|
139
|
+
_tag: string;
|
|
140
|
+
} ? E["_tag"] : never, O2, E2, R2>(tag: K, f: (e: Extract<E, {
|
|
141
|
+
_tag: K;
|
|
142
|
+
}>) => Effect.Effect<O2, E2, R2>): <I, O, R>(guard: GuardInput<I, O, E, R>) => Guard<I, O | O2, E2 | Exclude<E, {
|
|
143
|
+
_tag: K;
|
|
144
|
+
}>, R | R2>;
|
|
145
|
+
<I, O, E, R, K extends E extends {
|
|
146
|
+
_tag: string;
|
|
147
|
+
} ? E["_tag"] : never, O2, E2, R2>(guard: GuardInput<I, O, E, R>, tag: K, f: (e: Extract<E, {
|
|
148
|
+
_tag: K;
|
|
149
|
+
}>) => Effect.Effect<O2, E2, R2>): Guard<I, O | O2, E2 | Exclude<E, {
|
|
150
|
+
_tag: K;
|
|
151
|
+
}>, R | R2>;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* @since 1.0.0
|
|
155
|
+
*/
|
|
156
|
+
export declare const provide: {
|
|
157
|
+
<R2>(provided: ServiceMap.ServiceMap<R2>): <I, O, E, R>(guard: GuardInput<I, O, E, R>) => Guard<I, O, E, Exclude<R, R2>>;
|
|
158
|
+
<R2, E2, R3>(provided: Layer.Layer<R2, E2, R3>): <I, O, E, R>(guard: GuardInput<I, O, E, R>) => Guard<I, O, E | E2, Exclude<R, R2> | R3>;
|
|
159
|
+
<I, O, E, R, R2>(guard: GuardInput<I, O, E, R>, provided: ServiceMap.ServiceMap<R2>): Guard<I, O, E, Exclude<R, R2>>;
|
|
160
|
+
<I, O, E, R, R2, E2, R3>(guard: GuardInput<I, O, E, R>, provided: Layer.Layer<R2, E2, R3>): Guard<I, O, E | E2, Exclude<R, R2> | R3>;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* @since 1.0.0
|
|
164
|
+
*/
|
|
165
|
+
export declare const provideService: {
|
|
166
|
+
<Id, S>(tag: ServiceMap.Service<Id, S>, service: S): <I, O, E, R>(guard: GuardInput<I, O, E, R>) => Guard<I, O, E, Exclude<R, Id>>;
|
|
167
|
+
<I, O, E, R, Id, S>(guard: GuardInput<I, O, E, R>, tag: ServiceMap.Service<Id, S>, service: S): Guard<I, O, E, Exclude<R, Id>>;
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* @since 1.0.0
|
|
171
|
+
*/
|
|
172
|
+
export declare const provideServiceEffect: {
|
|
173
|
+
<Id, S, E2, R2>(tag: ServiceMap.Service<Id, S>, service: Effect.Effect<S, E2, R2>): <I, O, E, R>(guard: GuardInput<I, O, E, R>) => Guard<I, O, E | E2, Exclude<R, Id> | R2>;
|
|
174
|
+
<I, O, E, R, Id, S, E2, R2>(guard: GuardInput<I, O, E, R>, tag: ServiceMap.Service<Id, S>, service: Effect.Effect<S, E2, R2>): Guard<I, O, E | E2, Exclude<R, Id> | R2>;
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* @since 1.0.0
|
|
178
|
+
*/
|
|
179
|
+
export declare function fromSchemaDecode<S extends Schema.Top>(schema: S): Guard<S["Encoded"], S["Type"], Schema.SchemaError, S["DecodingServices"]>;
|
|
180
|
+
/**
|
|
181
|
+
* @since 1.0.0
|
|
182
|
+
*/
|
|
183
|
+
export declare function fromSchemaEncode<S extends Schema.Top>(schema: S): Guard<S["Type"], S["Encoded"], Schema.SchemaError, S["EncodingServices"]>;
|
|
184
|
+
/**
|
|
185
|
+
* @since 1.0.0
|
|
186
|
+
*/
|
|
187
|
+
export declare const decode: {
|
|
188
|
+
<S extends Schema.Top>(schema: S): <I, E = never, R = never>(guard: GuardInput<I, S["Type"], E, R>) => Guard<I, S["Type"], Schema.SchemaError | E, R | S["DecodingServices"]>;
|
|
189
|
+
<I, O, E, R, S extends Schema.Top>(guard: GuardInput<I, O, E, R>, schema: S): Guard<I, S["Type"], Schema.SchemaError | E, R | S["DecodingServices"]>;
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* @since 1.0.0
|
|
193
|
+
*/
|
|
194
|
+
export declare const encode: {
|
|
195
|
+
<S extends Schema.Top>(schema: S): <I, E = never, R = never>(guard: GuardInput<I, S["Type"], E, R>) => Guard<I, S["Type"], Schema.SchemaError | E, R | S["EncodingServices"]>;
|
|
196
|
+
<I, O, E, R, S extends Schema.Top>(guard: GuardInput<I, O, E, R>, schema: S): Guard<I, S["Encoded"], Schema.SchemaError | E, R | S["EncodingServices"]>;
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* @since 1.0.0
|
|
200
|
+
*/
|
|
201
|
+
declare const let_: {
|
|
202
|
+
<K extends PropertyKey, B>(key: K, value: B): <I, O, E = never, R = never>(guard: Guard<I, O, E, R>) => Guard<I, O & {
|
|
203
|
+
[k in K]: B;
|
|
204
|
+
}, E, R>;
|
|
205
|
+
<I, O, E, R, K extends PropertyKey, B>(guard: Guard<I, O, E, R>, key: K, value: B): Guard<I, O & {
|
|
206
|
+
[k in K]: B;
|
|
207
|
+
}, E, R>;
|
|
208
|
+
};
|
|
209
|
+
export {
|
|
210
|
+
/**
|
|
211
|
+
* @since 1.0.0
|
|
212
|
+
*/
|
|
213
|
+
let_ as let, };
|
|
214
|
+
/**
|
|
215
|
+
* @since 1.0.0
|
|
216
|
+
*/
|
|
217
|
+
export declare const addTag: {
|
|
218
|
+
<B>(value: B): <I, O, E = never, R = never>(guard: GuardInput<I, O, E, R>) => Guard<I, O & {
|
|
219
|
+
readonly _tag: B;
|
|
220
|
+
}, E, R>;
|
|
221
|
+
<I, O, E, R, B>(guard: GuardInput<I, O, E, R>, value: B): Guard<I, O & {
|
|
222
|
+
readonly _tag: B;
|
|
223
|
+
}, E, R>;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* @since 1.0.0
|
|
227
|
+
*/
|
|
228
|
+
export declare const bindTo: {
|
|
229
|
+
<K extends PropertyKey>(key: K): <I, O, E, R>(guard: GuardInput<I, O, E, R>) => Guard<I, {
|
|
230
|
+
[k in K]: O;
|
|
231
|
+
}, E, R>;
|
|
232
|
+
<I, O, E, R, K extends PropertyKey>(guard: GuardInput<I, O, E, R>, key: K): Guard<I, {
|
|
233
|
+
[k in K]: O;
|
|
234
|
+
}, E, R>;
|
|
235
|
+
};
|
|
236
|
+
/**
|
|
237
|
+
* @since 1.0.0
|
|
238
|
+
*/
|
|
239
|
+
export declare const bind: {
|
|
240
|
+
<I, O, E, R, K extends PropertyKey, B, E2, R2>(key: K, f: GuardInput<O, B, E2, R2>): (guard: GuardInput<I, O, E, R>) => Guard<I, O & {
|
|
241
|
+
[k in K]: B;
|
|
242
|
+
}, E | E2, R | R2>;
|
|
243
|
+
<I, O, E, R, K extends PropertyKey, B, E2, R2>(guard: GuardInput<I, O, E, R>, key: K, f: GuardInput<O, B, E2, R2>): Guard<I, O & {
|
|
244
|
+
[k in K]: B;
|
|
245
|
+
}, E | E2, R | R2>;
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,176 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import { dual } from "effect/Function";
|
|
6
|
+
import * as Option from "effect/Option";
|
|
7
|
+
import * as Schema from "effect/Schema";
|
|
8
|
+
/**
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
export const getGuard = (guard) => ("asGuard" in guard ? guard.asGuard() : guard);
|
|
12
|
+
/**
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
export const pipe = dual(2, function flatMap(input, output) {
|
|
16
|
+
const g1 = getGuard(input);
|
|
17
|
+
const g2 = getGuard(output);
|
|
18
|
+
return (i) => Effect.flatMapEager(g1(i), Option.match({
|
|
19
|
+
onNone: () => Effect.succeedNone,
|
|
20
|
+
onSome: g2,
|
|
21
|
+
}));
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
*/
|
|
26
|
+
export const mapEffect = dual(2, function mapEffect(guard, f) {
|
|
27
|
+
return pipe(guard, (o) => Effect.asSome(f(o)));
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* @since 1.0.0
|
|
31
|
+
*/
|
|
32
|
+
export const map = dual(2, function map(guard, f) {
|
|
33
|
+
const g = getGuard(guard);
|
|
34
|
+
return (i) => Effect.mapEager(g(i), Option.map(f));
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* @since 1.0.0
|
|
38
|
+
*/
|
|
39
|
+
export const tap = dual(2, function tap(guard, f) {
|
|
40
|
+
return pipe(guard, (o) => {
|
|
41
|
+
const x = f(o);
|
|
42
|
+
if (Effect.isEffect(x))
|
|
43
|
+
return Effect.as(x, Option.some(o));
|
|
44
|
+
return Effect.succeedSome(o);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
*/
|
|
50
|
+
export const filterMap = dual(2, (guard, f) => {
|
|
51
|
+
const g = getGuard(guard);
|
|
52
|
+
return (i) => Effect.mapEager(g(i), Option.filterMap(f));
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* @since 1.0.0
|
|
56
|
+
*/
|
|
57
|
+
export const filter = dual(2, (guard, predicate) => {
|
|
58
|
+
const g = getGuard(guard);
|
|
59
|
+
return (i) => Effect.mapEager(g(i), Option.filter(predicate));
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* @since 1.0.0
|
|
63
|
+
*/
|
|
64
|
+
export function any(guards) {
|
|
65
|
+
const entries = Object.entries(guards).map(([k, v]) => [k, getGuard(v)]);
|
|
66
|
+
return (i) => Effect.gen(function* () {
|
|
67
|
+
for (const [_tag, guard] of entries) {
|
|
68
|
+
const match = yield* guard(i);
|
|
69
|
+
if (Option.isSome(match)) {
|
|
70
|
+
return Option.some({ _tag, value: match.value });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return Option.none();
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
export function liftPredicate(predicate) {
|
|
77
|
+
return (a) => Effect.succeed(predicate(a) ? Option.some(a) : Option.none());
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* @since 1.0.0
|
|
81
|
+
*/
|
|
82
|
+
export const catchCause = dual(2, function catchCause(guard, f) {
|
|
83
|
+
const g = getGuard(guard);
|
|
84
|
+
return (i) => Effect.catchCause(g(i), (a) => Effect.asSome(f(a)));
|
|
85
|
+
});
|
|
86
|
+
/**
|
|
87
|
+
* @since 1.0.0
|
|
88
|
+
*/
|
|
89
|
+
export const catchAll = dual(2, function catchAll(guard, f) {
|
|
90
|
+
const g = getGuard(guard);
|
|
91
|
+
return (i) => Effect.catchEager(g(i), (a) => Effect.asSome(f(a)));
|
|
92
|
+
});
|
|
93
|
+
export { catchAll as catch };
|
|
94
|
+
/**
|
|
95
|
+
* @since 1.0.0
|
|
96
|
+
*/
|
|
97
|
+
export const catchTag = dual(3, function catchTag(guard, tag, f) {
|
|
98
|
+
const g = getGuard(guard);
|
|
99
|
+
return (i) => Effect.catchTag(g(i), tag, (e) => Effect.asSome(f(e)));
|
|
100
|
+
});
|
|
101
|
+
/**
|
|
102
|
+
* @since 1.0.0
|
|
103
|
+
*/
|
|
104
|
+
export const provide = dual(2, function provide(guard, provided) {
|
|
105
|
+
const g = getGuard(guard);
|
|
106
|
+
return (i) => Effect.provide(g(i), provided);
|
|
107
|
+
});
|
|
108
|
+
/**
|
|
109
|
+
* @since 1.0.0
|
|
110
|
+
*/
|
|
111
|
+
export const provideService = dual(3, function provideService(guard, tag, service) {
|
|
112
|
+
const g = getGuard(guard);
|
|
113
|
+
return (i) => Effect.provideService(g(i), tag, service);
|
|
114
|
+
});
|
|
115
|
+
/**
|
|
116
|
+
* @since 1.0.0
|
|
117
|
+
*/
|
|
118
|
+
export const provideServiceEffect = dual(3, function provideServiceEffect(guard, tag, service) {
|
|
119
|
+
const g = getGuard(guard);
|
|
120
|
+
return (i) => Effect.provideServiceEffect(g(i), tag, service);
|
|
121
|
+
});
|
|
122
|
+
const parseOptions = { errors: "all", onExcessProperty: "ignore" };
|
|
123
|
+
/**
|
|
124
|
+
* @since 1.0.0
|
|
125
|
+
*/
|
|
126
|
+
export function fromSchemaDecode(schema) {
|
|
127
|
+
const decode_ = Schema.decodeEffect(schema);
|
|
128
|
+
return (i) => Effect.asSome(decode_(i, parseOptions));
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* @since 1.0.0
|
|
132
|
+
*/
|
|
133
|
+
export function fromSchemaEncode(schema) {
|
|
134
|
+
const encode_ = Schema.encodeEffect(schema);
|
|
135
|
+
return (a) => Effect.asSome(encode_(a, parseOptions));
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* @since 1.0.0
|
|
139
|
+
*/
|
|
140
|
+
export const decode = dual(2, function decode(guard, schema) {
|
|
141
|
+
return pipe(guard, fromSchemaDecode(schema));
|
|
142
|
+
});
|
|
143
|
+
/**
|
|
144
|
+
* @since 1.0.0
|
|
145
|
+
*/
|
|
146
|
+
export const encode = dual(2, function encode(guard, schema) {
|
|
147
|
+
return pipe(guard, fromSchemaEncode(schema));
|
|
148
|
+
});
|
|
149
|
+
/**
|
|
150
|
+
* @since 1.0.0
|
|
151
|
+
*/
|
|
152
|
+
const let_ = dual(3, function attachProperty(guard, key, value) {
|
|
153
|
+
return map(guard, (a) => ({ ...a, [key]: value }));
|
|
154
|
+
});
|
|
155
|
+
export {
|
|
156
|
+
/**
|
|
157
|
+
* @since 1.0.0
|
|
158
|
+
*/
|
|
159
|
+
let_ as let, };
|
|
160
|
+
/**
|
|
161
|
+
* @since 1.0.0
|
|
162
|
+
*/
|
|
163
|
+
export const addTag = dual(2, function attachProperty(guard, value) {
|
|
164
|
+
return map(guard, (a) => ({ ...a, _tag: value }));
|
|
165
|
+
});
|
|
166
|
+
/**
|
|
167
|
+
* @since 1.0.0
|
|
168
|
+
*/
|
|
169
|
+
export const bindTo = dual(2, (guard, key) => map(guard, (a) => ({ [key]: a })));
|
|
170
|
+
/**
|
|
171
|
+
* @since 1.0.0
|
|
172
|
+
*/
|
|
173
|
+
export const bind = dual(3, function bind(guard, key, f) {
|
|
174
|
+
const f_ = bindTo(f, key);
|
|
175
|
+
return pipe(guard, (o) => Effect.mapEager(f_(o), Option.map((b) => ({ ...o, ...b }))));
|
|
176
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
|