@livestore/utils 0.4.0-dev.9 → 0.5.0-dev.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/dist/.tsbuildinfo +1 -0
- package/dist/NoopTracer.d.ts +7 -8
- package/dist/NoopTracer.d.ts.map +1 -1
- package/dist/NoopTracer.js +13 -15
- package/dist/NoopTracer.js.map +1 -1
- package/dist/NoopTracer.test.d.ts +2 -0
- package/dist/NoopTracer.test.d.ts.map +1 -0
- package/dist/NoopTracer.test.js +17 -0
- package/dist/NoopTracer.test.js.map +1 -0
- package/dist/binary.js +1 -1
- package/dist/binary.js.map +1 -1
- package/dist/browser/Opfs/Opfs.d.ts +201 -0
- package/dist/browser/Opfs/Opfs.d.ts.map +1 -0
- package/dist/browser/Opfs/Opfs.js +170 -0
- package/dist/browser/Opfs/Opfs.js.map +1 -0
- package/dist/browser/Opfs/debug-utils.d.ts +20 -0
- package/dist/browser/Opfs/debug-utils.d.ts.map +1 -0
- package/dist/browser/Opfs/debug-utils.js +95 -0
- package/dist/browser/Opfs/debug-utils.js.map +1 -0
- package/dist/browser/Opfs/mod.d.ts +4 -0
- package/dist/browser/Opfs/mod.d.ts.map +1 -0
- package/dist/browser/Opfs/mod.js +4 -0
- package/dist/browser/Opfs/mod.js.map +1 -0
- package/dist/browser/Opfs/utils.d.ts +71 -0
- package/dist/browser/Opfs/utils.d.ts.map +1 -0
- package/dist/browser/Opfs/utils.js +227 -0
- package/dist/browser/Opfs/utils.js.map +1 -0
- package/dist/browser/QuotaExceededError.d.ts +60 -0
- package/dist/browser/QuotaExceededError.d.ts.map +1 -0
- package/dist/browser/QuotaExceededError.js +2 -0
- package/dist/browser/QuotaExceededError.js.map +1 -0
- package/dist/browser/WebChannelBrowser.d.ts +22 -0
- package/dist/browser/WebChannelBrowser.d.ts.map +1 -0
- package/dist/browser/WebChannelBrowser.js +87 -0
- package/dist/browser/WebChannelBrowser.js.map +1 -0
- package/dist/browser/WebError.d.ts +389 -0
- package/dist/browser/WebError.d.ts.map +1 -0
- package/dist/browser/WebError.js +423 -0
- package/dist/browser/WebError.js.map +1 -0
- package/dist/browser/WebError.test.d.ts +2 -0
- package/dist/browser/WebError.test.d.ts.map +1 -0
- package/dist/browser/WebError.test.js +46 -0
- package/dist/browser/WebError.test.js.map +1 -0
- package/dist/browser/WebLock.d.ts.map +1 -0
- package/dist/{effect → browser}/WebLock.js +21 -21
- package/dist/browser/WebLock.js.map +1 -0
- package/dist/{browser.d.ts → browser/detect.d.ts} +1 -1
- package/dist/browser/detect.d.ts.map +1 -0
- package/dist/{browser.js → browser/detect.js} +7 -7
- package/dist/browser/detect.js.map +1 -0
- package/dist/browser/mod.d.ts +8 -0
- package/dist/browser/mod.d.ts.map +1 -0
- package/dist/browser/mod.js +8 -0
- package/dist/browser/mod.js.map +1 -0
- package/dist/cuid/cuid.browser.js +1 -1
- package/dist/cuid/cuid.browser.js.map +1 -1
- package/dist/cuid/cuid.node.js +1 -1
- package/dist/cuid/cuid.node.js.map +1 -1
- package/dist/effect/Debug.d.ts +38 -0
- package/dist/effect/Debug.d.ts.map +1 -0
- package/dist/effect/Debug.js +350 -0
- package/dist/effect/Debug.js.map +1 -0
- package/dist/effect/Effect.d.ts +91 -22
- package/dist/effect/Effect.d.ts.map +1 -1
- package/dist/effect/Effect.js +126 -38
- package/dist/effect/Effect.js.map +1 -1
- package/dist/effect/Effect.test.d.ts +2 -0
- package/dist/effect/Effect.test.d.ts.map +1 -0
- package/dist/effect/Effect.test.js +72 -0
- package/dist/effect/Effect.test.js.map +1 -0
- package/dist/effect/Error.d.ts +4 -6
- package/dist/effect/Error.d.ts.map +1 -1
- package/dist/effect/Error.js +1 -1
- package/dist/effect/Error.js.map +1 -1
- package/dist/effect/Logger.d.ts +0 -6
- package/dist/effect/Logger.d.ts.map +1 -1
- package/dist/effect/Logger.js +0 -32
- package/dist/effect/Logger.js.map +1 -1
- package/dist/effect/OtelTracer.d.ts +1 -1
- package/dist/effect/OtelTracer.d.ts.map +1 -1
- package/dist/effect/OtelTracer.js +2 -3
- package/dist/effect/OtelTracer.js.map +1 -1
- package/dist/effect/RpcClient.d.ts +7 -7
- package/dist/effect/RpcClient.d.ts.map +1 -1
- package/dist/effect/RpcClient.js +74 -54
- package/dist/effect/RpcClient.js.map +1 -1
- package/dist/effect/Schedule.d.ts +1 -1
- package/dist/effect/Schedule.d.ts.map +1 -1
- package/dist/effect/Schedule.js +2 -2
- package/dist/effect/Schedule.js.map +1 -1
- package/dist/effect/Schema/debug-diff.d.ts +1 -1
- package/dist/effect/Schema/debug-diff.d.ts.map +1 -1
- package/dist/effect/Schema/debug-diff.js +9 -10
- package/dist/effect/Schema/debug-diff.js.map +1 -1
- package/dist/effect/Schema/debug-diff.test.js +7 -4
- package/dist/effect/Schema/debug-diff.test.js.map +1 -1
- package/dist/effect/Schema/index.d.ts +28 -18
- package/dist/effect/Schema/index.d.ts.map +1 -1
- package/dist/effect/Schema/index.js +55 -28
- package/dist/effect/Schema/index.js.map +1 -1
- package/dist/effect/Stream.d.ts +13 -5
- package/dist/effect/Stream.d.ts.map +1 -1
- package/dist/effect/Stream.js +19 -12
- package/dist/effect/Stream.js.map +1 -1
- package/dist/effect/Stream.test.js +12 -12
- package/dist/effect/Stream.test.js.map +1 -1
- package/dist/effect/Subscribable.d.ts +9 -3
- package/dist/effect/Subscribable.d.ts.map +1 -1
- package/dist/effect/Subscribable.js +20 -35
- package/dist/effect/Subscribable.js.map +1 -1
- package/dist/effect/SubscriptionRef.d.ts +5 -6
- package/dist/effect/SubscriptionRef.d.ts.map +1 -1
- package/dist/effect/SubscriptionRef.js +2 -3
- package/dist/effect/SubscriptionRef.js.map +1 -1
- package/dist/effect/TaskTracing.d.ts +1 -1
- package/dist/effect/TaskTracing.d.ts.map +1 -1
- package/dist/effect/TaskTracing.js +12 -16
- package/dist/effect/TaskTracing.js.map +1 -1
- package/dist/effect/WebChannel/WebChannel.d.ts +11 -30
- package/dist/effect/WebChannel/WebChannel.d.ts.map +1 -1
- package/dist/effect/WebChannel/WebChannel.js +70 -125
- package/dist/effect/WebChannel/WebChannel.js.map +1 -1
- package/dist/effect/WebChannel/WebChannel.test.js +16 -16
- package/dist/effect/WebChannel/WebChannel.test.js.map +1 -1
- package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts.map +1 -1
- package/dist/effect/WebChannel/broadcastChannelWithAck.js +20 -13
- package/dist/effect/WebChannel/broadcastChannelWithAck.js.map +1 -1
- package/dist/effect/WebChannel/common.d.ts +17 -18
- package/dist/effect/WebChannel/common.d.ts.map +1 -1
- package/dist/effect/WebChannel/common.js +7 -7
- package/dist/effect/WebChannel/common.js.map +1 -1
- package/dist/effect/WebSocket.d.ts +4 -6
- package/dist/effect/WebSocket.d.ts.map +1 -1
- package/dist/effect/WebSocket.js +17 -17
- package/dist/effect/WebSocket.js.map +1 -1
- package/dist/effect/WebSocket.test.js +2 -2
- package/dist/effect/WebSocket.test.js.map +1 -1
- package/dist/effect/mod.browser-build.test.d.ts +2 -0
- package/dist/effect/mod.browser-build.test.d.ts.map +1 -0
- package/dist/effect/mod.browser-build.test.js +18 -0
- package/dist/effect/mod.browser-build.test.js.map +1 -0
- package/dist/effect/mod.d.ts +30 -0
- package/dist/effect/mod.d.ts.map +1 -0
- package/dist/effect/mod.js +30 -0
- package/dist/effect/mod.js.map +1 -0
- package/dist/effect/spanEvent.d.ts +12 -0
- package/dist/effect/spanEvent.d.ts.map +1 -0
- package/dist/effect/spanEvent.js +12 -0
- package/dist/effect/spanEvent.js.map +1 -0
- package/dist/effect/spanEvent.test.d.ts +2 -0
- package/dist/effect/spanEvent.test.d.ts.map +1 -0
- package/dist/effect/spanEvent.test.js +79 -0
- package/dist/effect/spanEvent.test.js.map +1 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +1 -1
- package/dist/env.js.map +1 -1
- package/dist/fast-deep-equal.d.ts.map +1 -1
- package/dist/fast-deep-equal.js +9 -10
- package/dist/fast-deep-equal.js.map +1 -1
- package/dist/global.d.ts +3 -0
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js.map +1 -1
- package/dist/misc.d.ts +9 -1
- package/dist/misc.d.ts.map +1 -1
- package/dist/misc.js +12 -4
- package/dist/misc.js.map +1 -1
- package/dist/mod.d.ts +177 -20
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +159 -22
- package/dist/mod.js.map +1 -1
- package/dist/node/mod.d.ts +45 -6
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +51 -9
- package/dist/node/mod.js.map +1 -1
- package/dist/object/index.d.ts +0 -9
- package/dist/object/index.d.ts.map +1 -1
- package/dist/object/index.js +0 -9
- package/dist/object/index.js.map +1 -1
- package/dist/object/stringify-object.js +2 -2
- package/dist/object/stringify-object.js.map +1 -1
- package/dist/object/stringify-object.test.js.map +1 -1
- package/dist/qr.d.ts +38 -0
- package/dist/qr.d.ts.map +1 -0
- package/dist/qr.js +109 -0
- package/dist/qr.js.map +1 -0
- package/dist/set.js +1 -1
- package/dist/set.js.map +1 -1
- package/dist/string.d.ts +0 -2
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +0 -2
- package/dist/string.js.map +1 -1
- package/package.json +61 -55
- package/src/NoopTracer.test.ts +20 -0
- package/src/NoopTracer.ts +28 -37
- package/src/binary.ts +1 -1
- package/src/browser/Opfs/Opfs.ts +463 -0
- package/src/browser/Opfs/debug-utils.ts +154 -0
- package/src/browser/Opfs/mod.ts +3 -0
- package/src/browser/Opfs/utils.ts +297 -0
- package/src/browser/QuotaExceededError.ts +60 -0
- package/src/browser/WebChannelBrowser.ts +145 -0
- package/src/browser/WebError.test.ts +66 -0
- package/src/browser/WebError.ts +587 -0
- package/src/{effect → browser}/WebLock.ts +27 -28
- package/src/{browser.ts → browser/detect.ts} +6 -6
- package/src/browser/mod.ts +8 -0
- package/src/cuid/cuid.browser.ts +1 -1
- package/src/cuid/cuid.node.ts +1 -1
- package/src/effect/Debug.ts +477 -0
- package/src/effect/Effect.test.ts +117 -0
- package/src/effect/Effect.ts +174 -79
- package/src/effect/Error.ts +1 -1
- package/src/effect/Logger.ts +0 -48
- package/src/effect/OtelTracer.ts +2 -3
- package/src/effect/RpcClient.ts +85 -65
- package/src/effect/Schedule.ts +4 -5
- package/src/effect/Schema/debug-diff.test.ts +7 -7
- package/src/effect/Schema/debug-diff.ts +11 -12
- package/src/effect/Schema/index.ts +121 -57
- package/src/effect/Stream.test.ts +14 -13
- package/src/effect/Stream.ts +23 -16
- package/src/effect/Subscribable.ts +31 -42
- package/src/effect/SubscriptionRef.ts +9 -13
- package/src/effect/TaskTracing.ts +13 -16
- package/src/effect/WebChannel/WebChannel.test.ts +24 -24
- package/src/effect/WebChannel/WebChannel.ts +102 -192
- package/src/effect/WebChannel/broadcastChannelWithAck.ts +25 -15
- package/src/effect/WebChannel/common.ts +16 -17
- package/src/effect/WebSocket.test.ts +2 -2
- package/src/effect/WebSocket.ts +20 -16
- package/src/effect/mod.browser-build.test.ts +19 -0
- package/src/effect/{index.ts → mod.ts} +43 -69
- package/src/effect/spanEvent.test.ts +92 -0
- package/src/effect/spanEvent.ts +17 -0
- package/src/env.ts +2 -1
- package/src/fast-deep-equal.ts +9 -10
- package/src/global.ts +4 -2
- package/src/misc.ts +13 -5
- package/src/mod.ts +188 -32
- package/src/node/mod.ts +57 -12
- package/src/object/index.ts +0 -24
- package/src/object/stringify-object.test.ts +1 -0
- package/src/object/stringify-object.ts +2 -2
- package/src/qr.ts +125 -0
- package/src/set.ts +1 -1
- package/src/string.ts +0 -3
- package/dist/.tsbuildinfo.json +0 -1
- package/dist/browser.d.ts.map +0 -1
- package/dist/browser.js.map +0 -1
- package/dist/effect/BucketQueue.d.ts +0 -20
- package/dist/effect/BucketQueue.d.ts.map +0 -1
- package/dist/effect/BucketQueue.js +0 -34
- package/dist/effect/BucketQueue.js.map +0 -1
- package/dist/effect/Scheduler.d.ts +0 -4
- package/dist/effect/Scheduler.d.ts.map +0 -1
- package/dist/effect/Scheduler.js +0 -9
- package/dist/effect/Scheduler.js.map +0 -1
- package/dist/effect/ServiceContext.d.ts +0 -37
- package/dist/effect/ServiceContext.d.ts.map +0 -1
- package/dist/effect/ServiceContext.js +0 -55
- package/dist/effect/ServiceContext.js.map +0 -1
- package/dist/effect/WebLock.d.ts.map +0 -1
- package/dist/effect/WebLock.js.map +0 -1
- package/dist/effect/index.d.ts +0 -32
- package/dist/effect/index.d.ts.map +0 -1
- package/dist/effect/index.js +0 -35
- package/dist/effect/index.js.map +0 -1
- package/dist/guards.d.ts +0 -6
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js +0 -6
- package/dist/guards.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts +0 -4
- package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunner.js +0 -122
- package/dist/node/ChildProcessRunner/ChildProcessRunner.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts +0 -2
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js +0 -218
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts +0 -84
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js +0 -68
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts +0 -2
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js +0 -52
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts +0 -23
- package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessWorker.js +0 -138
- package/dist/node/ChildProcessRunner/ChildProcessWorker.js.map +0 -1
- package/dist/object/omit.d.ts +0 -3
- package/dist/object/omit.d.ts.map +0 -1
- package/dist/object/omit.js +0 -14
- package/dist/object/omit.js.map +0 -1
- package/dist/object/pick.d.ts +0 -14
- package/dist/object/pick.d.ts.map +0 -1
- package/dist/object/pick.js +0 -17
- package/dist/object/pick.js.map +0 -1
- package/dist/time.d.ts +0 -12
- package/dist/time.d.ts.map +0 -1
- package/dist/time.js +0 -22
- package/dist/time.js.map +0 -1
- package/src/effect/BucketQueue.ts +0 -49
- package/src/effect/Scheduler.ts +0 -13
- package/src/effect/ServiceContext.ts +0 -108
- package/src/guards.ts +0 -8
- package/src/node/ChildProcessRunner/ChildProcessRunner.ts +0 -135
- package/src/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.ts +0 -302
- package/src/node/ChildProcessRunner/ChildProcessRunnerTest/schema.ts +0 -78
- package/src/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.ts +0 -66
- package/src/node/ChildProcessRunner/ChildProcessWorker.ts +0 -168
- package/src/object/omit.ts +0 -17
- package/src/object/pick.ts +0 -27
- package/src/time.ts +0 -25
- /package/dist/{effect → browser}/WebLock.d.ts +0 -0
package/dist/effect/Effect.d.ts
CHANGED
|
@@ -1,42 +1,111 @@
|
|
|
1
|
-
import { type Context, Deferred, Duration, Effect, Scope, type Stream } from 'effect';
|
|
2
|
-
import type { UnknownException } from 'effect/Cause';
|
|
3
|
-
import { type LazyArg } from 'effect/Function';
|
|
4
|
-
import type { Predicate, Refinement } from 'effect/Predicate';
|
|
1
|
+
import { Cause, type Context, Deferred, Duration, Effect, Predicate, Scope, type Stream } from 'effect';
|
|
5
2
|
export * from 'effect/Effect';
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
export { spanEvent } from './spanEvent.ts';
|
|
4
|
+
/** Same as `Effect.scopeWith` but with a closeable `Scope`. */
|
|
5
|
+
export declare const scopeWithCloseable: <R, E, A>(fn: (scope: Scope.Closeable) => Effect.Effect<A, E, R | Scope.Scope>) => Effect.Effect<A, E, R | Scope.Scope>;
|
|
8
6
|
export type SyncOrPromiseOrEffect<TResult, TError = never, TContext = never> = TResult | Promise<TResult> | Effect.Effect<TResult, TError, TContext>;
|
|
9
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Creates an Effect from an operation that may return a value, a Promise-like value, or another Effect.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* Synchronous values succeed directly, and Promise-like values are awaited. Synchronous throws and Promise rejections
|
|
12
|
+
* are mapped to `Cause.UnknownError`. When the operation returns an Effect, that Effect is executed rather than
|
|
13
|
+
* produced as a successful value; its failures and service requirements are preserved.
|
|
14
|
+
*
|
|
15
|
+
* @param operation - A callback that may return a synchronous value, a Promise-like value, or an Effect
|
|
16
|
+
* @returns An Effect representing the normalized outcome of the operation
|
|
17
|
+
*/
|
|
18
|
+
export declare function trySyncOrPromiseOrEffect<Return>(operation: () => Return): Effect.Effect<Return extends Effect.Effect<infer A, infer _E, infer _R> ? A : Return extends PromiseLike<infer A> ? A : Return, Cause.UnknownError | (Return extends Effect.Effect<infer _A, infer E, infer _R> ? E : never), Return extends Effect.Effect<infer _A, infer _E, infer R> ? R : never>;
|
|
10
19
|
export declare const acquireReleaseLog: (label: string) => Effect.Effect<void, never, Scope.Scope>;
|
|
11
20
|
export declare const addFinalizerLog: (...msgs: any[]) => Effect.Effect<void, never, Scope.Scope>;
|
|
12
21
|
export declare const logBefore: (...msgs: any[]) => <A, E, R>(eff: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
13
22
|
/** Logs both on errors and defects */
|
|
14
23
|
export declare const tapCauseLogPretty: <R, E, A>(eff: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
24
|
+
/**
|
|
25
|
+
* Creates a defect, pausing at a breakpoint in development.
|
|
26
|
+
*
|
|
27
|
+
* @param msg - The error message to include in the defect.
|
|
28
|
+
* @param args - Arbitrary arguments available for inspection during debugging.
|
|
29
|
+
*
|
|
30
|
+
* @see {@link shouldNeverHappen} for the non-Effect equivalent that throws synchronously.
|
|
31
|
+
* @see {@link orDieDebugger}
|
|
32
|
+
*/
|
|
33
|
+
export declare const dieDebugger: (msg: string, ...args: ReadonlyArray<unknown>) => Effect.Effect<never>;
|
|
34
|
+
/**
|
|
35
|
+
* Converts a failure into a defect, pausing at a breakpoint in development.
|
|
36
|
+
*
|
|
37
|
+
* @param self - The effect on which to apply the operation.
|
|
38
|
+
*
|
|
39
|
+
* @see {@link Effect.orDie}
|
|
40
|
+
* @see {@link dieDebugger}
|
|
41
|
+
*/
|
|
42
|
+
export declare const orDieDebugger: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, never, R>;
|
|
15
43
|
export declare const ignoreIf: {
|
|
16
|
-
<E, EB extends E>(refinement: Refinement<NoInfer<E>, EB>): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<void, Exclude<E, EB>, R>;
|
|
17
|
-
<E>(predicate: Predicate<NoInfer<E>>): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<void, E, R>;
|
|
18
|
-
<A, E, R, EB extends E>(self: Effect.Effect<A, E, R>, refinement: Refinement<E, EB>): Effect.Effect<void, Exclude<E, EB>, R>;
|
|
19
|
-
<A, E, R>(self: Effect.Effect<A, E, R>, predicate: Predicate<E>): Effect.Effect<void, E, R>;
|
|
44
|
+
<E, EB extends E>(refinement: Predicate.Refinement<NoInfer<E>, EB>): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<void, Exclude<E, EB>, R>;
|
|
45
|
+
<E>(predicate: Predicate.Predicate<NoInfer<E>>): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<void, E, R>;
|
|
46
|
+
<A, E, R, EB extends E>(self: Effect.Effect<A, E, R>, refinement: Predicate.Refinement<E, EB>): Effect.Effect<void, Exclude<E, EB>, R>;
|
|
47
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, predicate: Predicate.Predicate<E>): Effect.Effect<void, E, R>;
|
|
20
48
|
};
|
|
21
|
-
export declare const eventListener: <TEvent = unknown>(target: Stream.EventListener<TEvent>, type: string, handler: (event: TEvent) => Effect.Effect<void
|
|
49
|
+
export declare const eventListener: <TEvent = unknown>(target: Stream.EventListener<TEvent>, type: string, handler: (event: TEvent) => Effect.Effect<void>, options?: {
|
|
22
50
|
once?: boolean;
|
|
23
51
|
}) => Effect.Effect<void, never, Scope.Scope>;
|
|
24
|
-
export declare const spanEvent: (message: any, attributes?: Record<string, any>) => Effect.Effect<void, never, never>;
|
|
25
52
|
export declare const logWarnIfTakesLongerThan: ({ label, duration }: {
|
|
26
53
|
label: string;
|
|
27
|
-
duration: Duration.
|
|
54
|
+
duration: Duration.Input;
|
|
28
55
|
}) => <R, E, A>(eff: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
29
56
|
export declare const logDuration: (label: string) => <R, E, A>(eff: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
30
57
|
export declare const tapSync: <A>(tapFn: (a: A) => unknown) => <R, E>(eff: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
31
58
|
export declare const debugLogEnv: (msg?: string) => Effect.Effect<Context.Context<never>>;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
59
|
+
/**
|
|
60
|
+
* Enforces a time limit on an effect, triggering a defect on timeout.
|
|
61
|
+
*
|
|
62
|
+
* @remarks
|
|
63
|
+
*
|
|
64
|
+
* This function allows you to enforce a time limit on the execution of an
|
|
65
|
+
* effect. If the effect does not complete within the given duration, it dies
|
|
66
|
+
* with a {@link Cause.TimeoutError} as an unchecked defect. Unlike
|
|
67
|
+
* {@link Effect.timeout}, which adds `TimeoutError` to the error channel,
|
|
68
|
+
* this function keeps the error channel unchanged by treating the timeout as
|
|
69
|
+
* a defect.
|
|
70
|
+
*
|
|
71
|
+
* The returned effect will either:
|
|
72
|
+
* - Succeed with the original effect's result if it completes within the
|
|
73
|
+
* specified duration.
|
|
74
|
+
* - Die with a {@link Cause.TimeoutError} defect if the time limit is exceeded.
|
|
75
|
+
*
|
|
76
|
+
* @see {@link timeoutOrDieMessage} for a version with a custom message.
|
|
77
|
+
* @see {@link Effect.timeout} for a version that raises a `TimeoutError` as a typed error.
|
|
78
|
+
* @see {@link Effect.timeoutOrElse} for a version with a custom timeout branch.
|
|
79
|
+
*/
|
|
80
|
+
export declare const timeoutOrDie: (duration: Duration.Input) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
81
|
+
/**
|
|
82
|
+
* Enforces a time limit on an effect, triggering a defect with a custom
|
|
83
|
+
* message on timeout.
|
|
84
|
+
*
|
|
85
|
+
* @remarks
|
|
86
|
+
*
|
|
87
|
+
* This function behaves like {@link timeoutOrDie}, but allows you to provide
|
|
88
|
+
* a custom message for the {@link Cause.TimeoutError} defect. This is useful
|
|
89
|
+
* for adding context about which operation timed out, making it easier to
|
|
90
|
+
* diagnose issues in logs or error reports.
|
|
91
|
+
*
|
|
92
|
+
* The returned effect will either:
|
|
93
|
+
* - Succeed with the original effect's result if it completes within the
|
|
94
|
+
* specified duration.
|
|
95
|
+
* - Die with a {@link Cause.TimeoutError} defect containing the provided
|
|
96
|
+
* message if the time limit is exceeded.
|
|
97
|
+
*
|
|
98
|
+
* @see {@link timeoutOrDie} for a version without a custom message.
|
|
99
|
+
* @see {@link Effect.timeout} for a version that raises a `TimeoutError` as a typed error.
|
|
100
|
+
* @see {@link Effect.timeoutOrElse} for a version with a custom timeout branch.
|
|
101
|
+
*/
|
|
102
|
+
export declare const timeoutOrDieMessage: (duration: Duration.Input, message: string) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
40
103
|
export declare const toForkedDeferred: <R, E, A>(eff: Effect.Effect<A, E, R>) => Effect.Effect<Deferred.Deferred<A, E>, never, R | Scope.Scope>;
|
|
41
104
|
export declare const withPerformanceMeasure: (meaureLabel: string) => <R, E, A>(eff: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
105
|
+
declare global {
|
|
106
|
+
/** Debug helper: returns the current Effect span trace */
|
|
107
|
+
var getSpanTrace: () => string;
|
|
108
|
+
/** Debug helper: logs the current Effect span trace */
|
|
109
|
+
var logSpanTrace: () => void;
|
|
110
|
+
}
|
|
42
111
|
//# sourceMappingURL=Effect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Effect.d.ts","sourceRoot":"","sources":["../../src/effect/Effect.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,OAAO,EACZ,QAAQ,EACR,QAAQ,EACR,MAAM,
|
|
1
|
+
{"version":3,"file":"Effect.d.ts","sourceRoot":"","sources":["../../src/effect/Effect.ts"],"names":[],"mappings":"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"}
|
package/dist/effect/Effect.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import * as OtelTracer from '@effect/opentelemetry/
|
|
2
|
-
import { Cause, Deferred, Duration, Effect,
|
|
3
|
-
import {
|
|
4
|
-
import { dual } from 'effect/Function';
|
|
5
|
-
import { isPromise } from "../mod.js";
|
|
6
|
-
import { UnknownError } from "./Error.js";
|
|
1
|
+
import * as OtelTracer from '@effect/opentelemetry/OtelTracer';
|
|
2
|
+
import { Cause, Console, Deferred, Duration, Effect, Function, Fiber, pipe, Predicate, Scope, } from 'effect';
|
|
3
|
+
import { isDevEnv, objectToString } from "../misc.js";
|
|
7
4
|
export * from 'effect/Effect';
|
|
5
|
+
export { spanEvent } from "./spanEvent.js";
|
|
8
6
|
// export const log = <A>(message: A, ...rest: any[]): Effect.Effect<void> =>
|
|
9
7
|
// Effect.sync(() => {
|
|
10
8
|
// console.log(message, ...rest)
|
|
@@ -17,58 +15,102 @@ export * from 'effect/Effect';
|
|
|
17
15
|
// Effect.sync(() => {
|
|
18
16
|
// console.error(message, ...rest)
|
|
19
17
|
// })
|
|
20
|
-
/** Same as `Effect.scopeWith` but with a
|
|
18
|
+
/** Same as `Effect.scopeWith` but with a closeable `Scope`. */
|
|
21
19
|
export const scopeWithCloseable = (fn) => Effect.gen(function* () {
|
|
22
|
-
// const parentScope = yield* Scope.Scope
|
|
23
|
-
// const scope = yield* Scope.fork(parentScope, ExecutionStrategy.sequential)
|
|
24
20
|
const scope = yield* Scope.make();
|
|
25
21
|
yield* Effect.addFinalizer((exit) => Scope.close(scope, exit));
|
|
26
|
-
return yield* fn(scope).pipe(Scope.
|
|
22
|
+
return yield* fn(scope).pipe(Scope.provide(scope));
|
|
27
23
|
});
|
|
28
|
-
export
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
export function trySyncOrPromiseOrEffect(operation) {
|
|
25
|
+
return Effect.try({
|
|
26
|
+
try: () => {
|
|
27
|
+
const result = operation();
|
|
28
|
+
if (Effect.isEffect(result) === true) {
|
|
29
|
+
// @effect-diagnostics-next-line anyUnknownInErrorContext:off -- dynamic implementation boundary; the public overload preserves exact Effect error and requirement channels
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
if (Predicate.isPromiseLike(result) === true) {
|
|
33
|
+
return Effect.tryPromise(() => result);
|
|
34
|
+
}
|
|
35
|
+
return Effect.succeed(result);
|
|
36
|
+
},
|
|
37
|
+
catch: (cause) => new Cause.UnknownError(cause),
|
|
38
|
+
}).pipe(Effect.flatten);
|
|
39
|
+
}
|
|
33
40
|
export const acquireReleaseLog = (label) => Effect.acquireRelease(Effect.log(`${label} acquire`), (_, ex) => Effect.log(`${label} release`, ex));
|
|
34
41
|
export const addFinalizerLog = (...msgs) => Effect.addFinalizer((exit) => Effect.log(...msgs, exit._tag === 'Success' ? 'with success' : `with failure: ${Cause.pretty(exit.cause)}`));
|
|
35
42
|
export const logBefore = (...msgs) => (eff) => Effect.andThen(Effect.log(...msgs), eff);
|
|
36
43
|
/** Logs both on errors and defects */
|
|
37
|
-
export const tapCauseLogPretty = (eff) => Effect.
|
|
38
|
-
if (Cause.
|
|
39
|
-
// console.log('interrupted', Cause.pretty(err), err)
|
|
44
|
+
export const tapCauseLogPretty = (eff) => Effect.tapCause(eff, (cause) => Effect.gen(function* () {
|
|
45
|
+
if (Cause.hasInterruptsOnly(cause) === true)
|
|
40
46
|
return;
|
|
41
|
-
|
|
42
|
-
const span = yield* OtelTracer.currentOtelSpan.pipe(Effect.catchTag('NoSuchElementException', (_) => Effect.succeed(undefined)));
|
|
47
|
+
const span = yield* OtelTracer.currentOtelSpan.pipe(Effect.catchTag('NoSuchElementError', (_) => Effect.void));
|
|
43
48
|
const firstErrLine = cause.toString().split('\n')[0];
|
|
44
49
|
yield* Effect.logError(firstErrLine, cause).pipe((_) => span === undefined
|
|
45
50
|
? _
|
|
46
51
|
: Effect.annotateLogs({ spanId: span.spanContext().spanId, traceId: span.spanContext().traceId })(_));
|
|
47
52
|
}));
|
|
48
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Creates a defect, pausing at a breakpoint in development.
|
|
55
|
+
*
|
|
56
|
+
* @param msg - The error message to include in the defect.
|
|
57
|
+
* @param args - Arbitrary arguments available for inspection during debugging.
|
|
58
|
+
*
|
|
59
|
+
* @see {@link shouldNeverHappen} for the non-Effect equivalent that throws synchronously.
|
|
60
|
+
* @see {@link orDieDebugger}
|
|
61
|
+
*/
|
|
62
|
+
export const dieDebugger = (msg, ...args) => Effect.suspend(() => {
|
|
63
|
+
if (isDevEnv() === true) {
|
|
64
|
+
// oxlint-disable-next-line eslint(no-debugger) -- intentional breakpoint during development
|
|
65
|
+
debugger;
|
|
66
|
+
void args; // Keeps the variable in scope so it's inspectable when the debugger pauses
|
|
67
|
+
}
|
|
68
|
+
return Effect.die(new Error(msg));
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Converts a failure into a defect, pausing at a breakpoint in development.
|
|
72
|
+
*
|
|
73
|
+
* @param self - The effect on which to apply the operation.
|
|
74
|
+
*
|
|
75
|
+
* @see {@link Effect.orDie}
|
|
76
|
+
* @see {@link dieDebugger}
|
|
77
|
+
*/
|
|
78
|
+
export const orDieDebugger = (self) => Effect.matchEffect(self, {
|
|
79
|
+
onFailure: (error) =>
|
|
80
|
+
// Keep the debugger hook so that `debugger` runs only when the wrapped effect actually fails, not while building the wrapper.
|
|
81
|
+
Effect.suspend(() => {
|
|
82
|
+
if (isDevEnv() === true) {
|
|
83
|
+
// oxlint-disable-next-line eslint(no-debugger) -- intentional breakpoint for impossible states during development
|
|
84
|
+
debugger;
|
|
85
|
+
}
|
|
86
|
+
return Effect.die(error);
|
|
87
|
+
}),
|
|
88
|
+
onSuccess: Effect.succeed,
|
|
89
|
+
});
|
|
90
|
+
export const ignoreIf = Function.dual(2, (self, predicate) => self.pipe(Effect.catchIf(predicate, () => Effect.void)));
|
|
49
91
|
export const eventListener = (target, type, handler, options) => Effect.gen(function* () {
|
|
50
|
-
const
|
|
51
|
-
const handlerFn = (event) => handler(event).pipe(Effect.
|
|
92
|
+
const services = yield* Effect.context();
|
|
93
|
+
const handlerFn = (event) => handler(event).pipe(Effect.runForkWith(services));
|
|
52
94
|
target.addEventListener(type, handlerFn, { once: options?.once ?? false });
|
|
53
95
|
yield* Effect.addFinalizer(() => Effect.sync(() => target.removeEventListener(type, handlerFn)));
|
|
54
96
|
});
|
|
55
|
-
export const spanEvent = (message, attributes) => Effect.locallyWith(Effect.log(message).pipe(Effect.annotateLogs(attributes ?? {})), FiberRef.currentLoggers, () => HashSet.make(Logger.tracerLogger));
|
|
56
97
|
export const logWarnIfTakesLongerThan = ({ label, duration }) => (eff) => Effect.gen(function* () {
|
|
57
|
-
const
|
|
98
|
+
const services = yield* Effect.context();
|
|
58
99
|
let tookLongerThanTimer = false;
|
|
59
100
|
const timeoutFiber = Effect.sleep(duration).pipe(Effect.tap(() => {
|
|
60
101
|
tookLongerThanTimer = true;
|
|
61
102
|
// TODO include span info
|
|
62
|
-
return Effect.logWarning(`${label}: Took longer than ${duration}ms`);
|
|
63
|
-
}), Effect.
|
|
103
|
+
return Effect.logWarning(`${label}: Took longer than ${objectToString(duration)}ms`);
|
|
104
|
+
}), Effect.runForkWith(services));
|
|
64
105
|
const start = Date.now();
|
|
65
106
|
const res = yield* eff.pipe(Effect.exit, Effect.onInterrupt(Effect.fn(function* () {
|
|
66
107
|
const end = Date.now();
|
|
67
108
|
yield* Fiber.interrupt(timeoutFiber);
|
|
68
|
-
if (tookLongerThanTimer) {
|
|
109
|
+
if (tookLongerThanTimer === true) {
|
|
69
110
|
yield* Effect.logWarning(`${label}: Interrupted after ${end - start}ms`);
|
|
70
111
|
}
|
|
71
112
|
})));
|
|
113
|
+
// eslint-disable-next-line overeng/explicit-boolean-compare -- mutated in forked fiber; TS can't see the mutation
|
|
72
114
|
if (tookLongerThanTimer) {
|
|
73
115
|
const end = Date.now();
|
|
74
116
|
yield* Effect.logWarning(`${label}: Actual duration: ${end - start}ms`);
|
|
@@ -80,28 +122,76 @@ export const logDuration = (label) => (eff) => Effect.gen(function* () {
|
|
|
80
122
|
const start = Date.now();
|
|
81
123
|
const res = yield* eff;
|
|
82
124
|
const end = Date.now();
|
|
83
|
-
yield* Effect.log(`${label}: ${Duration.format(end - start)}`);
|
|
125
|
+
yield* Effect.log(`${label}: ${Duration.format(Duration.millis(end - start))}`);
|
|
84
126
|
return res;
|
|
85
127
|
});
|
|
86
128
|
export const tapSync = (tapFn) => (eff) => Effect.tap(eff, (a) => Effect.sync(() => tapFn(a)));
|
|
87
|
-
export const debugLogEnv = (msg) => pipe(Effect.context(), Effect.tap((env) => log(msg ?? 'debugLogEnv', env)));
|
|
88
|
-
|
|
89
|
-
|
|
129
|
+
export const debugLogEnv = (msg) => pipe(Effect.context(), Effect.tap((env) => Console.log(msg ?? 'debugLogEnv', env)));
|
|
130
|
+
/**
|
|
131
|
+
* Enforces a time limit on an effect, triggering a defect on timeout.
|
|
132
|
+
*
|
|
133
|
+
* @remarks
|
|
134
|
+
*
|
|
135
|
+
* This function allows you to enforce a time limit on the execution of an
|
|
136
|
+
* effect. If the effect does not complete within the given duration, it dies
|
|
137
|
+
* with a {@link Cause.TimeoutError} as an unchecked defect. Unlike
|
|
138
|
+
* {@link Effect.timeout}, which adds `TimeoutError` to the error channel,
|
|
139
|
+
* this function keeps the error channel unchanged by treating the timeout as
|
|
140
|
+
* a defect.
|
|
141
|
+
*
|
|
142
|
+
* The returned effect will either:
|
|
143
|
+
* - Succeed with the original effect's result if it completes within the
|
|
144
|
+
* specified duration.
|
|
145
|
+
* - Die with a {@link Cause.TimeoutError} defect if the time limit is exceeded.
|
|
146
|
+
*
|
|
147
|
+
* @see {@link timeoutOrDieMessage} for a version with a custom message.
|
|
148
|
+
* @see {@link Effect.timeout} for a version that raises a `TimeoutError` as a typed error.
|
|
149
|
+
* @see {@link Effect.timeoutOrElse} for a version with a custom timeout branch.
|
|
150
|
+
*/
|
|
151
|
+
export const timeoutOrDie = (duration) => (self) => Effect.timeoutOrElse(self, {
|
|
152
|
+
duration,
|
|
153
|
+
orElse: () => Effect.die(new Cause.TimeoutError()),
|
|
154
|
+
});
|
|
155
|
+
/**
|
|
156
|
+
* Enforces a time limit on an effect, triggering a defect with a custom
|
|
157
|
+
* message on timeout.
|
|
158
|
+
*
|
|
159
|
+
* @remarks
|
|
160
|
+
*
|
|
161
|
+
* This function behaves like {@link timeoutOrDie}, but allows you to provide
|
|
162
|
+
* a custom message for the {@link Cause.TimeoutError} defect. This is useful
|
|
163
|
+
* for adding context about which operation timed out, making it easier to
|
|
164
|
+
* diagnose issues in logs or error reports.
|
|
165
|
+
*
|
|
166
|
+
* The returned effect will either:
|
|
167
|
+
* - Succeed with the original effect's result if it completes within the
|
|
168
|
+
* specified duration.
|
|
169
|
+
* - Die with a {@link Cause.TimeoutError} defect containing the provided
|
|
170
|
+
* message if the time limit is exceeded.
|
|
171
|
+
*
|
|
172
|
+
* @see {@link timeoutOrDie} for a version without a custom message.
|
|
173
|
+
* @see {@link Effect.timeout} for a version that raises a `TimeoutError` as a typed error.
|
|
174
|
+
* @see {@link Effect.timeoutOrElse} for a version with a custom timeout branch.
|
|
175
|
+
*/
|
|
176
|
+
export const timeoutOrDieMessage = (duration, message) => (self) => Effect.timeoutOrElse(self, {
|
|
177
|
+
duration,
|
|
178
|
+
orElse: () => Effect.die(new Cause.TimeoutError(message)),
|
|
179
|
+
});
|
|
90
180
|
export const toForkedDeferred = (eff) => pipe(Deferred.make(), Effect.tap((deferred) => pipe(Effect.exit(eff), Effect.flatMap((ex) => Deferred.done(deferred, ex)), tapCauseLogPretty, Effect.forkScoped)));
|
|
91
181
|
export const withPerformanceMeasure = (meaureLabel) => (eff) => Effect.acquireUseRelease(Effect.sync(() => globalThis.performance.mark(`${meaureLabel}:start`)), () => eff, () => Effect.sync(() => {
|
|
92
182
|
globalThis.performance.mark(`${meaureLabel}:end`);
|
|
93
183
|
globalThis.performance.measure(meaureLabel, `${meaureLabel}:start`, `${meaureLabel}:end`);
|
|
94
184
|
}));
|
|
95
185
|
const getSpanTrace = () => {
|
|
96
|
-
const
|
|
97
|
-
if (
|
|
186
|
+
const fiber = Fiber.getCurrent();
|
|
187
|
+
if (fiber === undefined || fiber.currentSpan === undefined) {
|
|
98
188
|
return 'No current fiber';
|
|
99
189
|
}
|
|
100
190
|
return '';
|
|
101
191
|
// const msg = Effect.runSync(
|
|
102
192
|
// Effect.fail({ message: '' }).pipe(
|
|
103
|
-
// Effect.withParentSpan(
|
|
104
|
-
// Effect.
|
|
193
|
+
// Effect.withParentSpan(fiber.currentSpan),
|
|
194
|
+
// Effect.catchCause((cause) => Effect.succeed(cause.toString())),
|
|
105
195
|
// ),
|
|
106
196
|
// )
|
|
107
197
|
// // remove the first line
|
|
@@ -112,8 +202,6 @@ const getSpanTrace = () => {
|
|
|
112
202
|
// .join('\n')
|
|
113
203
|
};
|
|
114
204
|
const logSpanTrace = () => console.log(getSpanTrace());
|
|
115
|
-
// @ts-expect-error TODO fix types
|
|
116
205
|
globalThis.getSpanTrace = getSpanTrace;
|
|
117
|
-
// @ts-expect-error TODO fix types
|
|
118
206
|
globalThis.logSpanTrace = logSpanTrace;
|
|
119
207
|
//# sourceMappingURL=Effect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Effect.js","sourceRoot":"","sources":["../../src/effect/Effect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,
|
|
1
|
+
{"version":3,"file":"Effect.js","sourceRoot":"","sources":["../../src/effect/Effect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Effect.test.d.ts","sourceRoot":"","sources":["../../src/effect/Effect.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { describe, expect, expectTypeOf, it } from '@effect/vitest';
|
|
2
|
+
import { Cause, Effect } from 'effect';
|
|
3
|
+
import { trySyncOrPromiseOrEffect } from "./Effect.js";
|
|
4
|
+
describe('trySyncOrPromiseOrEffect', () => {
|
|
5
|
+
it.effect('returns a plain value', () => Effect.gen(function* () {
|
|
6
|
+
const result = yield* trySyncOrPromiseOrEffect(() => 42);
|
|
7
|
+
expect(result).toBe(42);
|
|
8
|
+
}));
|
|
9
|
+
it.effect('evaluates the operation lazily for each execution', () => Effect.gen(function* () {
|
|
10
|
+
let executions = 0;
|
|
11
|
+
const effect = trySyncOrPromiseOrEffect(() => ++executions);
|
|
12
|
+
expect(executions).toBe(0);
|
|
13
|
+
expect(yield* effect).toBe(1);
|
|
14
|
+
expect(yield* effect).toBe(2);
|
|
15
|
+
}));
|
|
16
|
+
it.effect('maps a synchronous throw to an UnknownError', () => Effect.gen(function* () {
|
|
17
|
+
const thrown = new Error('thrown');
|
|
18
|
+
const failure = yield* trySyncOrPromiseOrEffect(() => {
|
|
19
|
+
throw thrown;
|
|
20
|
+
}).pipe(Effect.flip);
|
|
21
|
+
expect(failure).toBeInstanceOf(Cause.UnknownError);
|
|
22
|
+
if (failure instanceof Cause.UnknownError) {
|
|
23
|
+
expect(failure.cause).toBe(thrown);
|
|
24
|
+
}
|
|
25
|
+
}));
|
|
26
|
+
it.effect('awaits a resolving Promise', () => Effect.gen(function* () {
|
|
27
|
+
const result = yield* trySyncOrPromiseOrEffect(() => Promise.resolve('resolved'));
|
|
28
|
+
expect(result).toBe('resolved');
|
|
29
|
+
}));
|
|
30
|
+
it.effect('maps a rejected Promise to an UnknownError', () => Effect.gen(function* () {
|
|
31
|
+
const rejected = new Error('rejected');
|
|
32
|
+
const failure = yield* trySyncOrPromiseOrEffect(() => Promise.reject(rejected)).pipe(Effect.flip);
|
|
33
|
+
expect(failure).toBeInstanceOf(Cause.UnknownError);
|
|
34
|
+
if (failure instanceof Cause.UnknownError) {
|
|
35
|
+
expect(failure.cause).toBe(rejected);
|
|
36
|
+
}
|
|
37
|
+
}));
|
|
38
|
+
it.effect('maps a throwing Promise-like then getter to an UnknownError', () => Effect.gen(function* () {
|
|
39
|
+
const thrown = new Error('throwing then getter');
|
|
40
|
+
const thenable = {
|
|
41
|
+
// oxlint-disable-next-line eslint-plugin-unicorn(no-thenable) -- intentionally exercises Promise-like classification
|
|
42
|
+
get then() {
|
|
43
|
+
throw thrown;
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
const failure = yield* trySyncOrPromiseOrEffect(() => thenable).pipe(Effect.flip);
|
|
47
|
+
expect(failure).toBeInstanceOf(Cause.UnknownError);
|
|
48
|
+
if (failure instanceof Cause.UnknownError) {
|
|
49
|
+
expect(failure.cause).toBe(thrown);
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
it.effect('executes and returns the value of a returned Effect', () => Effect.gen(function* () {
|
|
53
|
+
const result = yield* trySyncOrPromiseOrEffect(() => Effect.succeed('effect-value'));
|
|
54
|
+
expect(result).toBe('effect-value');
|
|
55
|
+
}));
|
|
56
|
+
it.effect('preserves a returned Effect failure', () => Effect.gen(function* () {
|
|
57
|
+
const expected = { _tag: 'ExpectedError' };
|
|
58
|
+
const failure = yield* trySyncOrPromiseOrEffect(() => Effect.fail(expected)).pipe(Effect.flip);
|
|
59
|
+
expect(failure).toBe(expected);
|
|
60
|
+
}));
|
|
61
|
+
it('preserves returned Effect success, error, and requirements types', () => {
|
|
62
|
+
const normalized = trySyncOrPromiseOrEffect(() => contextualEffect);
|
|
63
|
+
expectTypeOf(normalized).toEqualTypeOf();
|
|
64
|
+
});
|
|
65
|
+
it('returns an Effect when the operation only throws', () => {
|
|
66
|
+
const normalized = trySyncOrPromiseOrEffect(() => {
|
|
67
|
+
throw new Error('thrown');
|
|
68
|
+
});
|
|
69
|
+
expectTypeOf(normalized).toEqualTypeOf();
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=Effect.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Effect.test.js","sourceRoot":"","sources":["../../src/effect/Effect.test.ts"],"names":[],"mappings":"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"}
|
package/dist/effect/Error.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
|
-
declare const UnknownError_base: Schema.
|
|
3
|
-
readonly
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
payload: Schema.optional<typeof Schema.Any>;
|
|
7
|
-
}>;
|
|
2
|
+
declare const UnknownError_base: Schema.Class<UnknownError, Schema.TaggedStruct<"UnknownError", {
|
|
3
|
+
readonly cause: Schema.Any;
|
|
4
|
+
readonly payload: Schema.optional<Schema.Any>;
|
|
5
|
+
}>, import("effect/Cause").YieldableError>;
|
|
8
6
|
export declare class UnknownError extends UnknownError_base {
|
|
9
7
|
}
|
|
10
8
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../src/effect/Error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA
|
|
1
|
+
{"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../src/effect/Error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;;;;;AAE/B,qBAAa,YAAa,SAAQ,iBAGhC;CAAG"}
|
package/dist/effect/Error.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
|
-
export class UnknownError extends Schema.TaggedError()('UnknownError', {
|
|
2
|
+
export class UnknownError extends Schema.TaggedError('~@livestore/utils/UnknownError')('UnknownError', {
|
|
3
3
|
cause: Schema.Any,
|
|
4
4
|
payload: Schema.optional(Schema.Any),
|
|
5
5
|
}) {
|
package/dist/effect/Error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.js","sourceRoot":"","sources":["../../src/effect/Error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"Error.js","sourceRoot":"","sources":["../../src/effect/Error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,CAAe,gCAAgC,CAAC,CAAC,cAAc,EAAE;IACnH,KAAK,EAAE,MAAM,CAAC,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;CACrC,CAAC;CAAG"}
|
package/dist/effect/Logger.d.ts
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
import { Logger } from 'effect';
|
|
2
1
|
export * from 'effect/Logger';
|
|
3
|
-
export declare const prettyWithThread: (threadName: string, options?: {
|
|
4
|
-
mode?: "tty" | "browser";
|
|
5
|
-
}) => import("effect/Layer").Layer<never, never, never>;
|
|
6
|
-
export declare const consoleLogger: (threadName: string) => Logger.Logger<unknown, void>;
|
|
7
|
-
export declare const consoleWithThread: (threadName: string) => import("effect/Layer").Layer<never, never, never>;
|
|
8
2
|
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/effect/Logger.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/effect/Logger.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
package/dist/effect/Logger.js
CHANGED
|
@@ -1,34 +1,2 @@
|
|
|
1
|
-
import { Cause, HashMap, Logger, LogLevel } from 'effect';
|
|
2
1
|
export * from 'effect/Logger';
|
|
3
|
-
const defaultDateFormat = (date) => `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date
|
|
4
|
-
.getSeconds()
|
|
5
|
-
.toString()
|
|
6
|
-
.padStart(2, '0')}.${date.getMilliseconds().toString().padStart(3, '0')}`;
|
|
7
|
-
export const prettyWithThread = (threadName, options = {}) => Logger.replace(Logger.defaultLogger, Logger.prettyLogger({
|
|
8
|
-
formatDate: (date) => `${defaultDateFormat(date)} ${threadName}`,
|
|
9
|
-
mode: options.mode,
|
|
10
|
-
}));
|
|
11
|
-
export const consoleLogger = (threadName) => Logger.make(({ message, annotations, date, logLevel, cause }) => {
|
|
12
|
-
const isCloudflareWorker = typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers';
|
|
13
|
-
const consoleFn = logLevel === LogLevel.Debug
|
|
14
|
-
? // Cloudflare Workers doesn't support console.debug 🤷
|
|
15
|
-
isCloudflareWorker
|
|
16
|
-
? console.log
|
|
17
|
-
: console.debug
|
|
18
|
-
: logLevel === LogLevel.Info
|
|
19
|
-
? console.info
|
|
20
|
-
: logLevel === LogLevel.Warning
|
|
21
|
-
? console.warn
|
|
22
|
-
: console.error;
|
|
23
|
-
const annotationsObj = Object.fromEntries(HashMap.entries(annotations));
|
|
24
|
-
const messages = Array.isArray(message) ? message : [message];
|
|
25
|
-
if (Cause.isEmpty(cause) === false) {
|
|
26
|
-
messages.push(Cause.pretty(cause, { renderErrorCause: true }));
|
|
27
|
-
}
|
|
28
|
-
if (Object.keys(annotationsObj).length > 0) {
|
|
29
|
-
messages.push(annotationsObj);
|
|
30
|
-
}
|
|
31
|
-
consoleFn(`[${defaultDateFormat(date)} ${threadName}]`, ...messages);
|
|
32
|
-
});
|
|
33
|
-
export const consoleWithThread = (threadName) => Logger.replace(Logger.defaultLogger, consoleLogger(threadName));
|
|
34
2
|
//# sourceMappingURL=Logger.js.map
|