@livestore/utils 0.5.0-dev.0 → 0.5.0-dev.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/dist/.tsbuildinfo +1 -1
- package/dist/Deferred.d.ts.map +1 -1
- package/dist/NoopTracer.d.ts.map +1 -1
- package/dist/NoopTracer.test.js +13 -1
- package/dist/NoopTracer.test.js.map +1 -1
- package/dist/base64.d.ts.map +1 -1
- package/dist/binary.d.ts.map +1 -1
- package/dist/browser/Opfs/Opfs.js +5 -5
- package/dist/browser/Opfs/Opfs.js.map +1 -1
- package/dist/browser/Opfs/debug-utils.d.ts.map +1 -1
- package/dist/browser/Opfs/debug-utils.js +2 -2
- package/dist/browser/Opfs/mod.js +3 -3
- package/dist/browser/Opfs/utils.d.ts +6 -6
- package/dist/browser/Opfs/utils.js +1 -1
- package/dist/browser/WebChannelBrowser.d.ts.map +1 -1
- package/dist/browser/WebChannelBrowser.js +4 -4
- package/dist/browser/WebError.d.ts +2 -2
- package/dist/browser/WebError.d.ts.map +1 -1
- package/dist/browser/WebError.js +1 -1
- package/dist/browser/WebError.js.map +1 -1
- package/dist/browser/WebError.test.js +1 -1
- package/dist/browser/WebLock.d.ts +1 -1
- package/dist/browser/WebLock.d.ts.map +1 -1
- package/dist/browser/mod.js +6 -6
- package/dist/cuid/cuid.browser.d.ts.map +1 -1
- package/dist/cuid/cuid.node.d.ts.map +1 -1
- package/dist/effect/Debug.d.ts.map +1 -1
- package/dist/effect/Debug.js +2 -4
- package/dist/effect/Debug.js.map +1 -1
- package/dist/effect/Effect.d.ts.map +1 -1
- package/dist/effect/Effect.js +5 -5
- package/dist/effect/Effect.js.map +1 -1
- package/dist/effect/Effect.test.js +2 -2
- package/dist/effect/Effect.test.js.map +1 -1
- package/dist/effect/OtelTracer.d.ts.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 +65 -56
- package/dist/effect/RpcClient.js.map +1 -1
- package/dist/effect/Schema/debug-diff.d.ts.map +1 -1
- package/dist/effect/Schema/debug-diff.test.js +1 -1
- package/dist/effect/Schema/index.d.ts.map +1 -1
- package/dist/effect/Schema/index.js +4 -4
- package/dist/effect/Schema/index.js.map +1 -1
- package/dist/effect/Stream.d.ts.map +1 -1
- package/dist/effect/Stream.js.map +1 -1
- package/dist/effect/Stream.test.js +1 -1
- package/dist/effect/Subscribable.d.ts.map +1 -1
- package/dist/effect/SubscriptionRef.d.ts.map +1 -1
- package/dist/effect/TaskTracing.d.ts.map +1 -1
- package/dist/effect/WebChannel/WebChannel.d.ts.map +1 -1
- package/dist/effect/WebChannel/WebChannel.js +6 -6
- package/dist/effect/WebChannel/WebChannel.js.map +1 -1
- package/dist/effect/WebChannel/WebChannel.test.js +1 -1
- package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts.map +1 -1
- package/dist/effect/WebChannel/broadcastChannelWithAck.js +3 -3
- package/dist/effect/WebChannel/broadcastChannelWithAck.js.map +1 -1
- package/dist/effect/WebChannel/common.d.ts.map +1 -1
- package/dist/effect/WebChannel/mod.js +3 -3
- package/dist/effect/WebSocket.d.ts +1 -1
- package/dist/effect/WebSocket.d.ts.map +1 -1
- package/dist/effect/WebSocket.js +1 -1
- 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.js.map +1 -1
- package/dist/effect/mod.d.ts +11 -11
- package/dist/effect/mod.d.ts.map +1 -1
- package/dist/effect/mod.js +26 -26
- package/dist/effect/mod.js.map +1 -1
- package/dist/effect/spanEvent.d.ts.map +1 -1
- package/dist/effect/spanEvent.test.js +1 -1
- 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.map +1 -1
- package/dist/misc.d.ts.map +1 -1
- package/dist/misc.js +1 -1
- package/dist/misc.js.map +1 -1
- package/dist/mod.d.ts +1 -1
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +19 -19
- package/dist/mod.js.map +1 -1
- package/dist/node/mod.d.ts +9 -40
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +9 -41
- package/dist/node/mod.js.map +1 -1
- package/dist/object/index.js +1 -1
- package/dist/object/stringify-object.d.ts.map +1 -1
- package/dist/object/stringify-object.test.js +1 -1
- package/dist/promise.d.ts.map +1 -1
- package/dist/qr.d.ts.map +1 -1
- package/dist/set.d.ts.map +1 -1
- package/dist/string.d.ts.map +1 -1
- package/package.json +36 -36
- package/src/NoopTracer.test.ts +16 -0
- package/src/browser/Opfs/Opfs.ts +4 -4
- package/src/effect/Debug.ts +6 -22
- package/src/effect/Effect.test.ts +1 -1
- package/src/effect/Effect.ts +3 -3
- package/src/effect/RpcClient.ts +77 -63
- package/src/effect/Schema/index.ts +2 -2
- package/src/effect/WebChannel/WebChannel.ts +1 -2
- package/src/effect/WebSocket.test.ts +1 -1
- package/src/effect/WebSocket.ts +1 -1
- package/src/effect/mod.ts +12 -10
- package/src/fast-deep-equal.ts +4 -4
- package/src/misc.ts +1 -1
- package/src/mod.ts +5 -5
- package/src/node/mod.ts +8 -40
package/src/effect/mod.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import '../global.ts'
|
|
2
2
|
|
|
3
|
-
export { Otlp } from 'effect/
|
|
4
|
-
export {
|
|
3
|
+
export { Otlp } from 'effect/observability'
|
|
4
|
+
export { Base64Url, SchemaBinary } from 'effect/encoding'
|
|
5
5
|
export {
|
|
6
6
|
FetchHttpClient,
|
|
7
7
|
Headers,
|
|
@@ -16,12 +16,12 @@ export {
|
|
|
16
16
|
HttpServerRequest,
|
|
17
17
|
HttpServerResponse,
|
|
18
18
|
UrlParams,
|
|
19
|
-
} from 'effect/
|
|
20
|
-
export { HttpApi, HttpApiClient, HttpApiEndpoint, HttpApiGroup } from 'effect/
|
|
21
|
-
export { KeyValueStore } from 'effect/
|
|
22
|
-
export { ChildProcess, ChildProcessSpawner } from 'effect/
|
|
23
|
-
export { Socket } from 'effect/
|
|
24
|
-
export { Transferable, Worker, WorkerError, WorkerRunner } from 'effect/
|
|
19
|
+
} from 'effect/http'
|
|
20
|
+
export { HttpApi, HttpApiClient, HttpApiEndpoint, HttpApiGroup } from 'effect/http-api'
|
|
21
|
+
export { KeyValueStore } from 'effect/persistence'
|
|
22
|
+
export { ChildProcess, ChildProcessSpawner } from 'effect/process'
|
|
23
|
+
export { Socket } from 'effect/socket'
|
|
24
|
+
export { Transferable, Worker, WorkerError, WorkerRunner } from 'effect/workers'
|
|
25
25
|
export {
|
|
26
26
|
Rpc,
|
|
27
27
|
RpcClientError,
|
|
@@ -33,7 +33,7 @@ export {
|
|
|
33
33
|
RpcServer,
|
|
34
34
|
RpcTest,
|
|
35
35
|
RpcWorker,
|
|
36
|
-
} from 'effect/
|
|
36
|
+
} from 'effect/rpc'
|
|
37
37
|
export * as StandardSchema from '@standard-schema/spec'
|
|
38
38
|
export {
|
|
39
39
|
Array as ReadonlyArray,
|
|
@@ -42,6 +42,7 @@ export {
|
|
|
42
42
|
Cause,
|
|
43
43
|
Channel,
|
|
44
44
|
Chunk,
|
|
45
|
+
Clock,
|
|
45
46
|
Config,
|
|
46
47
|
ConfigProvider,
|
|
47
48
|
Console,
|
|
@@ -83,6 +84,7 @@ export {
|
|
|
83
84
|
PubSub,
|
|
84
85
|
pipe,
|
|
85
86
|
Queue,
|
|
87
|
+
Random,
|
|
86
88
|
RcMap,
|
|
87
89
|
RcRef,
|
|
88
90
|
Record as ReadonlyRecord,
|
|
@@ -110,7 +112,7 @@ export {
|
|
|
110
112
|
TxRef,
|
|
111
113
|
Types,
|
|
112
114
|
} from 'effect'
|
|
113
|
-
export * as
|
|
115
|
+
export * as Arbitrary from 'effect/Arbitrary'
|
|
114
116
|
export * as TestClock from 'effect/testing/TestClock'
|
|
115
117
|
export * as TestConsole from 'effect/testing/TestConsole'
|
|
116
118
|
export * as Debug from './Debug.ts'
|
package/src/fast-deep-equal.ts
CHANGED
|
@@ -14,7 +14,7 @@ export const deepEqual = <T>(a: T, b: T): boolean => {
|
|
|
14
14
|
length = a.length
|
|
15
15
|
// @ts-expect-error ...
|
|
16
16
|
if (length !== b.length) return false
|
|
17
|
-
for (i = length; i-- !== 0;
|
|
17
|
+
for (i = length; i-- !== 0;)
|
|
18
18
|
// @ts-expect-error ...
|
|
19
19
|
if (deepEqual(a[i], b[i]) === false) return false
|
|
20
20
|
return true
|
|
@@ -38,7 +38,7 @@ export const deepEqual = <T>(a: T, b: T): boolean => {
|
|
|
38
38
|
length = a.length
|
|
39
39
|
// @ts-expect-error ...
|
|
40
40
|
if (length !== b.length) return false
|
|
41
|
-
for (i = length; i-- !== 0;
|
|
41
|
+
for (i = length; i-- !== 0;)
|
|
42
42
|
// @ts-expect-error ...
|
|
43
43
|
if (a[i] !== b[i]) return false
|
|
44
44
|
return true
|
|
@@ -53,9 +53,9 @@ export const deepEqual = <T>(a: T, b: T): boolean => {
|
|
|
53
53
|
length = keys.length
|
|
54
54
|
if (length !== Object.keys(b).length) return false
|
|
55
55
|
|
|
56
|
-
for (i = length; i-- !== 0;
|
|
56
|
+
for (i = length; i-- !== 0;) if (Object.hasOwn(b, keys[i]) === false) return false
|
|
57
57
|
|
|
58
|
-
for (i = length; i-- !== 0;
|
|
58
|
+
for (i = length; i-- !== 0;) {
|
|
59
59
|
const key = keys[i]
|
|
60
60
|
|
|
61
61
|
// @ts-expect-error ...
|
package/src/misc.ts
CHANGED
|
@@ -57,7 +57,7 @@ export const envTruish = (env: string | undefined) =>
|
|
|
57
57
|
export const shouldNeverHappen = (msg?: string, ...args: ReadonlyArray<unknown>): never => {
|
|
58
58
|
console.error(msg, ...args)
|
|
59
59
|
if (isDevEnv() === true) {
|
|
60
|
-
// oxlint-disable-next-line
|
|
60
|
+
// oxlint-disable-next-line no-debugger -- intentional breakpoint during development
|
|
61
61
|
debugger
|
|
62
62
|
}
|
|
63
63
|
|
package/src/mod.ts
CHANGED
|
@@ -92,7 +92,7 @@ export const debugCatch = <T>(try_: () => T): T => {
|
|
|
92
92
|
try {
|
|
93
93
|
return try_()
|
|
94
94
|
} catch (e: any) {
|
|
95
|
-
// oxlint-disable-next-line
|
|
95
|
+
// oxlint-disable-next-line no-debugger -- intentional breakpoint for debugging exceptions
|
|
96
96
|
debugger
|
|
97
97
|
throw e
|
|
98
98
|
}
|
|
@@ -144,7 +144,7 @@ export const capitalizeFirstLetter = (str: string): string => str.charAt(0).toUp
|
|
|
144
144
|
*/
|
|
145
145
|
|
|
146
146
|
export const casesHandled = (unexpectedCase: never): never => {
|
|
147
|
-
// oxlint-disable-next-line
|
|
147
|
+
// oxlint-disable-next-line no-debugger -- intentional breakpoint for unhandled cases
|
|
148
148
|
debugger
|
|
149
149
|
throw new Error(`A case was not handled for value: ${truncate(objectToString(unexpectedCase), 1000)}`)
|
|
150
150
|
}
|
|
@@ -159,7 +159,7 @@ export const casesHandled = (unexpectedCase: never): never => {
|
|
|
159
159
|
*/
|
|
160
160
|
export const assertNever = (failIfFalse: boolean, msg?: string): void => {
|
|
161
161
|
if (failIfFalse === false) {
|
|
162
|
-
// oxlint-disable-next-line
|
|
162
|
+
// oxlint-disable-next-line no-debugger -- intentional breakpoint for impossible states
|
|
163
163
|
debugger
|
|
164
164
|
throw new Error(`This should never happen: ${msg}`)
|
|
165
165
|
}
|
|
@@ -174,7 +174,7 @@ export const assertNever = (failIfFalse: boolean, msg?: string): void => {
|
|
|
174
174
|
* ```
|
|
175
175
|
*/
|
|
176
176
|
export const debuggerPipe = <T>(val: T): T => {
|
|
177
|
-
// oxlint-disable-next-line
|
|
177
|
+
// oxlint-disable-next-line no-debugger -- intentional: this function's purpose is to trigger debugger
|
|
178
178
|
debugger
|
|
179
179
|
return val
|
|
180
180
|
}
|
|
@@ -201,7 +201,7 @@ const truncate = (str: string, length: number): string => {
|
|
|
201
201
|
* ```
|
|
202
202
|
*/
|
|
203
203
|
export const notYetImplemented = (msg?: string): never => {
|
|
204
|
-
// oxlint-disable-next-line
|
|
204
|
+
// oxlint-disable-next-line no-debugger -- intentional breakpoint for unimplemented code paths
|
|
205
205
|
debugger
|
|
206
206
|
throw new Error(`Not yet implemented: ${msg}`)
|
|
207
207
|
}
|
package/src/node/mod.ts
CHANGED
|
@@ -6,8 +6,8 @@ import { Effect, FileSystem, Layer, Option } from 'effect'
|
|
|
6
6
|
import { OtelTracer, Tracer, UnknownError } from '../effect/mod.ts'
|
|
7
7
|
import { makeNoopTracer } from '../NoopTracer.ts'
|
|
8
8
|
|
|
9
|
-
export * as Cli from 'effect/
|
|
10
|
-
export * as SocketServer from 'effect/
|
|
9
|
+
export * as Cli from 'effect/cli'
|
|
10
|
+
export * as SocketServer from 'effect/socket/SocketServer'
|
|
11
11
|
export * as PlatformNode from '@effect/platform-node'
|
|
12
12
|
|
|
13
13
|
// Enable debug logging for OpenTelemetry
|
|
@@ -48,35 +48,12 @@ export const OtelLiveDummy: Layer.Layer<OtelTracer.OtelTracer> = Layer.suspend((
|
|
|
48
48
|
return TracingLive
|
|
49
49
|
})
|
|
50
50
|
|
|
51
|
+
export { NodeFileSystem }
|
|
52
|
+
|
|
51
53
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* NodeFileSystem layer now performs recursive watching through Node's native
|
|
56
|
-
* `fs.watch(path, { recursive: true })` fallback. This layer deliberately
|
|
57
|
-
* registers no custom backend so existing `NodeRecursiveWatchLayer` consumers
|
|
58
|
-
* continue to compile while the v4 NodeFileSystem implementation handles watch
|
|
59
|
-
* events.
|
|
60
|
-
*
|
|
61
|
-
* This layer alone does NOT provide FileSystem - it only provides the watch backend.
|
|
62
|
-
*
|
|
63
|
-
* IMPORTANT: Layer ordering matters! When composing with NodeFileSystem.layer, use
|
|
64
|
-
* `NodeFileSystemWithWatch` instead, or ensure WatchBackend is available when FileSystem
|
|
65
|
-
* is constructed by using `Layer.provideMerge`:
|
|
66
|
-
*
|
|
67
|
-
* ```ts
|
|
68
|
-
* // ✅ CORRECT: Use the pre-composed layer
|
|
69
|
-
* Effect.provide(NodeFileSystemWithWatch)
|
|
70
|
-
*
|
|
71
|
-
* // ✅ CORRECT: Manual composition with Layer.provideMerge
|
|
72
|
-
* const layer = PlatformNode.NodeFileSystem.layer.pipe(Layer.provideMerge(NodeRecursiveWatchLayer))
|
|
73
|
-
* Effect.provide(layer)
|
|
74
|
-
*
|
|
75
|
-
* // ❌ WRONG: Chained Effect.provide - WatchBackend won't be used!
|
|
76
|
-
* Effect.provide(NodeRecursiveWatchLayer).pipe(Effect.provide(PlatformNode.NodeFileSystem.layer))
|
|
77
|
-
* ```
|
|
78
|
-
*
|
|
79
|
-
* @see https://github.com/Effect-TS/effect/issues/5913
|
|
54
|
+
* Effect 4 uses Node's native recursive watcher when no custom watch backend
|
|
55
|
+
* registers for the requested path. Keep the public Effect 3 compatibility
|
|
56
|
+
* layer while deliberately deferring to that native implementation.
|
|
80
57
|
*/
|
|
81
58
|
export const NodeRecursiveWatchLayer: Layer.Layer<FileSystem.WatchBackend> = Layer.succeed(
|
|
82
59
|
FileSystem.WatchBackend,
|
|
@@ -85,14 +62,5 @@ export const NodeRecursiveWatchLayer: Layer.Layer<FileSystem.WatchBackend> = Lay
|
|
|
85
62
|
}),
|
|
86
63
|
)
|
|
87
64
|
|
|
88
|
-
/**
|
|
89
|
-
* Pre-composed layer providing FileSystem with recursive file watching.
|
|
90
|
-
* This is the recommended way to get a FileSystem that supports recursive watching.
|
|
91
|
-
*
|
|
92
|
-
* Use this layer when you need to watch files recursively (e.g., watching nested directories).
|
|
93
|
-
* Effect v4's NodeFileSystem uses Node.js's native recursive `fs.watch` support
|
|
94
|
-
* instead of the removed ParcelWatcher backend from Effect v3.
|
|
95
|
-
*/
|
|
96
|
-
export { NodeFileSystem } from '@effect/platform-node'
|
|
97
|
-
|
|
65
|
+
/** FileSystem layer retaining the public recursive-watch composition API. */
|
|
98
66
|
export const NodeFileSystemWithWatch = NodeFileSystem.layer.pipe(Layer.provideMerge(NodeRecursiveWatchLayer))
|