effect-lens 0.1.5 → 0.2.1
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 +55 -11
- package/dist/Lens.d.ts +282 -38
- package/dist/Lens.js +297 -55
- package/dist/Lens.js.map +1 -1
- package/dist/Subscribable.d.ts +70 -7
- package/dist/Subscribable.js +64 -1
- package/dist/Subscribable.js.map +1 -1
- package/package.json +5 -2
package/dist/Subscribable.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Array, Chunk, Effect, Function, Option, Subscribable } from "effect";
|
|
1
|
+
import { Array, Chunk, Effect, Function, Iterable, Option, Stream, Subscribable } from "effect";
|
|
2
2
|
export * from "effect/Subscribable";
|
|
3
3
|
/**
|
|
4
4
|
* Maps over an `Option` value in the `Subscribable`.
|
|
@@ -11,6 +11,57 @@ export const mapOptionEffect = Function.dual(2, (self, f) => Subscribable.mapEff
|
|
|
11
11
|
onSome: a => Effect.map(f(a), Option.some),
|
|
12
12
|
onNone: () => Effect.succeed(Option.none()),
|
|
13
13
|
})));
|
|
14
|
+
/**
|
|
15
|
+
* Maps errors from both the current value and the stream of changes.
|
|
16
|
+
*/
|
|
17
|
+
export const mapError = Function.dual(2, (self, f) => Subscribable.make({
|
|
18
|
+
get get() { return Effect.mapError(self.get, f); },
|
|
19
|
+
get changes() { return Stream.mapError(self.changes, f); },
|
|
20
|
+
}));
|
|
21
|
+
/** Maps complete failure causes from both channels. */
|
|
22
|
+
export const mapErrorCause = Function.dual(2, (self, f) => Subscribable.make({
|
|
23
|
+
get get() { return Effect.mapErrorCause(self.get, f); },
|
|
24
|
+
get changes() { return Stream.mapErrorCause(self.changes, f); },
|
|
25
|
+
}));
|
|
26
|
+
/**
|
|
27
|
+
* Runs an effect when either the current value or the stream of changes fails.
|
|
28
|
+
*/
|
|
29
|
+
export const tapError = Function.dual(2, (self, f) => Subscribable.make({
|
|
30
|
+
get get() { return Effect.tapError(self.get, f); },
|
|
31
|
+
get changes() { return Stream.tapError(self.changes, f); },
|
|
32
|
+
}));
|
|
33
|
+
/** Recovers from typed errors with another `Subscribable`. */
|
|
34
|
+
export const catchAll = Function.dual(2, (self, f) => Subscribable.make({
|
|
35
|
+
get get() { return Effect.catchAll(self.get, error => f(error).get); },
|
|
36
|
+
get changes() { return Stream.catchAll(self.changes, error => f(error).changes); },
|
|
37
|
+
}));
|
|
38
|
+
/** Recovers from all failure causes with another `Subscribable`. */
|
|
39
|
+
export const catchAllCause = Function.dual(2, (self, f) => Subscribable.make({
|
|
40
|
+
get get() { return Effect.catchAllCause(self.get, cause => f(cause).get); },
|
|
41
|
+
get changes() { return Stream.catchAllCause(self.changes, cause => f(cause).changes); },
|
|
42
|
+
}));
|
|
43
|
+
/** Runs an effect when either channel fails, exposing the complete failure cause. */
|
|
44
|
+
export const tapErrorCause = Function.dual(2, (self, f) => Subscribable.make({
|
|
45
|
+
get get() { return Effect.tapErrorCause(self.get, f); },
|
|
46
|
+
get changes() { return Stream.tapErrorCause(self.changes, f); },
|
|
47
|
+
}));
|
|
48
|
+
/** Falls back to another `Subscribable` when either channel fails. */
|
|
49
|
+
export const orElse = Function.dual(2, (self, that) => catchAll(self, that));
|
|
50
|
+
/** Replaces typed errors from either channel with a lazily evaluated value. */
|
|
51
|
+
export const orElseSucceed = Function.dual(2, (self, value) => Subscribable.make({
|
|
52
|
+
get get() { return Effect.orElseSucceed(self.get, value); },
|
|
53
|
+
get changes() { return Stream.orElseSucceed(self.changes, value); },
|
|
54
|
+
}));
|
|
55
|
+
/** Retries failures from both channels according to the supplied schedule. */
|
|
56
|
+
export const retry = Function.dual(2, (self, policy) => Subscribable.make({
|
|
57
|
+
get get() { return Effect.retry(self.get, policy); },
|
|
58
|
+
get changes() { return Stream.retry(self.changes, policy); },
|
|
59
|
+
}));
|
|
60
|
+
/** Converts typed failures from both channels into `Either` values. */
|
|
61
|
+
export const either = (self) => Subscribable.make({
|
|
62
|
+
get get() { return Effect.either(self.get); },
|
|
63
|
+
get changes() { return Stream.either(self.changes); },
|
|
64
|
+
});
|
|
14
65
|
/**
|
|
15
66
|
* Narrows the focus to a field of an object.
|
|
16
67
|
*/
|
|
@@ -19,6 +70,10 @@ export const focusObjectOn = Function.dual(2, (self, key) => Subscribable.map(se
|
|
|
19
70
|
* Narrows the focus to an indexed element of an array.
|
|
20
71
|
*/
|
|
21
72
|
export const focusArrayAt = Function.dual(2, (self, index) => Subscribable.mapEffect(self, Array.get(index)));
|
|
73
|
+
/**
|
|
74
|
+
* Narrows the focus to the length of an array.
|
|
75
|
+
*/
|
|
76
|
+
export const focusArrayLength = (self) => Subscribable.map(self, Array.length);
|
|
22
77
|
/**
|
|
23
78
|
* Narrows the focus to an indexed element of a readonly tuple.
|
|
24
79
|
*/
|
|
@@ -27,4 +82,12 @@ export const focusTupleAt = Function.dual(2, (self, index) => Subscribable.map(s
|
|
|
27
82
|
* Narrows the focus to an indexed element of `Chunk`.
|
|
28
83
|
*/
|
|
29
84
|
export const focusChunkAt = Function.dual(2, (self, index) => Subscribable.mapEffect(self, Chunk.get(index)));
|
|
85
|
+
/**
|
|
86
|
+
* Narrows the focus to the size of a `Chunk`.
|
|
87
|
+
*/
|
|
88
|
+
export const focusChunkSize = (self) => Subscribable.map(self, Chunk.size);
|
|
89
|
+
/**
|
|
90
|
+
* Narrows the focus to the size of a `Iterable`.
|
|
91
|
+
*/
|
|
92
|
+
export const focusIterableSize = (self) => Subscribable.map(self, Iterable.size);
|
|
30
93
|
//# sourceMappingURL=Subscribable.js.map
|
package/dist/Subscribable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Subscribable.js","sourceRoot":"","sources":["../src/Subscribable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"Subscribable.js","sourceRoot":"","sources":["../src/Subscribable.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-lens",
|
|
3
3
|
"description": "An effectful Lens type to easily manage nested state",
|
|
4
|
-
"version": "0.1
|
|
4
|
+
"version": "0.2.1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
7
7
|
"./README.md",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"scripts": {
|
|
30
|
-
"build": "tsc",
|
|
30
|
+
"build": "tsc -p tsconfig.build.json",
|
|
31
31
|
"lint:tsc": "tsc --noEmit",
|
|
32
32
|
"lint:biome": "biome lint",
|
|
33
33
|
"pack": "npm pack",
|
|
@@ -37,5 +37,8 @@
|
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"effect": "^3.21.0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"effect": "^3.21.0"
|
|
40
43
|
}
|
|
41
44
|
}
|