@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.
Files changed (111) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/Deferred.d.ts.map +1 -1
  3. package/dist/NoopTracer.d.ts.map +1 -1
  4. package/dist/NoopTracer.test.js +13 -1
  5. package/dist/NoopTracer.test.js.map +1 -1
  6. package/dist/base64.d.ts.map +1 -1
  7. package/dist/binary.d.ts.map +1 -1
  8. package/dist/browser/Opfs/Opfs.js +5 -5
  9. package/dist/browser/Opfs/Opfs.js.map +1 -1
  10. package/dist/browser/Opfs/debug-utils.d.ts.map +1 -1
  11. package/dist/browser/Opfs/debug-utils.js +2 -2
  12. package/dist/browser/Opfs/mod.js +3 -3
  13. package/dist/browser/Opfs/utils.d.ts +6 -6
  14. package/dist/browser/Opfs/utils.js +1 -1
  15. package/dist/browser/WebChannelBrowser.d.ts.map +1 -1
  16. package/dist/browser/WebChannelBrowser.js +4 -4
  17. package/dist/browser/WebError.d.ts +2 -2
  18. package/dist/browser/WebError.d.ts.map +1 -1
  19. package/dist/browser/WebError.js +1 -1
  20. package/dist/browser/WebError.js.map +1 -1
  21. package/dist/browser/WebError.test.js +1 -1
  22. package/dist/browser/WebLock.d.ts +1 -1
  23. package/dist/browser/WebLock.d.ts.map +1 -1
  24. package/dist/browser/mod.js +6 -6
  25. package/dist/cuid/cuid.browser.d.ts.map +1 -1
  26. package/dist/cuid/cuid.node.d.ts.map +1 -1
  27. package/dist/effect/Debug.d.ts.map +1 -1
  28. package/dist/effect/Debug.js +2 -4
  29. package/dist/effect/Debug.js.map +1 -1
  30. package/dist/effect/Effect.d.ts.map +1 -1
  31. package/dist/effect/Effect.js +5 -5
  32. package/dist/effect/Effect.js.map +1 -1
  33. package/dist/effect/Effect.test.js +2 -2
  34. package/dist/effect/Effect.test.js.map +1 -1
  35. package/dist/effect/OtelTracer.d.ts.map +1 -1
  36. package/dist/effect/RpcClient.d.ts +7 -7
  37. package/dist/effect/RpcClient.d.ts.map +1 -1
  38. package/dist/effect/RpcClient.js +65 -56
  39. package/dist/effect/RpcClient.js.map +1 -1
  40. package/dist/effect/Schema/debug-diff.d.ts.map +1 -1
  41. package/dist/effect/Schema/debug-diff.test.js +1 -1
  42. package/dist/effect/Schema/index.d.ts.map +1 -1
  43. package/dist/effect/Schema/index.js +4 -4
  44. package/dist/effect/Schema/index.js.map +1 -1
  45. package/dist/effect/Stream.d.ts.map +1 -1
  46. package/dist/effect/Stream.js.map +1 -1
  47. package/dist/effect/Stream.test.js +1 -1
  48. package/dist/effect/Subscribable.d.ts.map +1 -1
  49. package/dist/effect/SubscriptionRef.d.ts.map +1 -1
  50. package/dist/effect/TaskTracing.d.ts.map +1 -1
  51. package/dist/effect/WebChannel/WebChannel.d.ts.map +1 -1
  52. package/dist/effect/WebChannel/WebChannel.js +6 -6
  53. package/dist/effect/WebChannel/WebChannel.js.map +1 -1
  54. package/dist/effect/WebChannel/WebChannel.test.js +1 -1
  55. package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts.map +1 -1
  56. package/dist/effect/WebChannel/broadcastChannelWithAck.js +3 -3
  57. package/dist/effect/WebChannel/broadcastChannelWithAck.js.map +1 -1
  58. package/dist/effect/WebChannel/common.d.ts.map +1 -1
  59. package/dist/effect/WebChannel/mod.js +3 -3
  60. package/dist/effect/WebSocket.d.ts +1 -1
  61. package/dist/effect/WebSocket.d.ts.map +1 -1
  62. package/dist/effect/WebSocket.js +1 -1
  63. package/dist/effect/WebSocket.js.map +1 -1
  64. package/dist/effect/WebSocket.test.js +2 -2
  65. package/dist/effect/WebSocket.test.js.map +1 -1
  66. package/dist/effect/mod.browser-build.test.js.map +1 -1
  67. package/dist/effect/mod.d.ts +11 -11
  68. package/dist/effect/mod.d.ts.map +1 -1
  69. package/dist/effect/mod.js +26 -26
  70. package/dist/effect/mod.js.map +1 -1
  71. package/dist/effect/spanEvent.d.ts.map +1 -1
  72. package/dist/effect/spanEvent.test.js +1 -1
  73. package/dist/env.d.ts.map +1 -1
  74. package/dist/env.js +1 -1
  75. package/dist/env.js.map +1 -1
  76. package/dist/fast-deep-equal.d.ts.map +1 -1
  77. package/dist/fast-deep-equal.js.map +1 -1
  78. package/dist/misc.d.ts.map +1 -1
  79. package/dist/misc.js +1 -1
  80. package/dist/misc.js.map +1 -1
  81. package/dist/mod.d.ts +1 -1
  82. package/dist/mod.d.ts.map +1 -1
  83. package/dist/mod.js +19 -19
  84. package/dist/mod.js.map +1 -1
  85. package/dist/node/mod.d.ts +9 -40
  86. package/dist/node/mod.d.ts.map +1 -1
  87. package/dist/node/mod.js +9 -41
  88. package/dist/node/mod.js.map +1 -1
  89. package/dist/object/index.js +1 -1
  90. package/dist/object/stringify-object.d.ts.map +1 -1
  91. package/dist/object/stringify-object.test.js +1 -1
  92. package/dist/promise.d.ts.map +1 -1
  93. package/dist/qr.d.ts.map +1 -1
  94. package/dist/set.d.ts.map +1 -1
  95. package/dist/string.d.ts.map +1 -1
  96. package/package.json +36 -36
  97. package/src/NoopTracer.test.ts +16 -0
  98. package/src/browser/Opfs/Opfs.ts +4 -4
  99. package/src/effect/Debug.ts +6 -22
  100. package/src/effect/Effect.test.ts +1 -1
  101. package/src/effect/Effect.ts +3 -3
  102. package/src/effect/RpcClient.ts +77 -63
  103. package/src/effect/Schema/index.ts +2 -2
  104. package/src/effect/WebChannel/WebChannel.ts +1 -2
  105. package/src/effect/WebSocket.test.ts +1 -1
  106. package/src/effect/WebSocket.ts +1 -1
  107. package/src/effect/mod.ts +12 -10
  108. package/src/fast-deep-equal.ts +4 -4
  109. package/src/misc.ts +1 -1
  110. package/src/mod.ts +5 -5
  111. 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/unstable/observability'
4
- export { Msgpack } from 'effect/unstable/encoding'
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/unstable/http'
20
- export { HttpApi, HttpApiClient, HttpApiEndpoint, HttpApiGroup } from 'effect/unstable/httpapi'
21
- export { KeyValueStore } from 'effect/unstable/persistence'
22
- export { ChildProcess, ChildProcessSpawner } from 'effect/unstable/process'
23
- export { Socket } from 'effect/unstable/socket'
24
- export { Transferable, Worker, WorkerError, WorkerRunner } from 'effect/unstable/workers'
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/unstable/rpc'
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 FastCheck from 'effect/testing/FastCheck'
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'
@@ -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; ) if (Object.hasOwn(b, keys[i]) === false) return false
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 eslint(no-debugger) -- intentional breakpoint during development
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 eslint(no-debugger) -- intentional breakpoint for debugging exceptions
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 eslint(no-debugger) -- intentional breakpoint for unhandled cases
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 eslint(no-debugger) -- intentional breakpoint for impossible states
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 eslint(no-debugger) -- intentional: this function's purpose is to trigger debugger
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 eslint(no-debugger) -- intentional breakpoint for unimplemented code paths
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/unstable/cli'
10
- export * as SocketServer from 'effect/unstable/socket/SocketServer'
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
- * Compatibility layer for the old Effect v3 @parcel/watcher backend.
53
- *
54
- * Effect v4 removed `@effect/platform-node/NodeFileSystem/ParcelWatcher`; its
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))