@livestore/utils 0.4.0-dev.21 → 0.4.0-dev.23

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 (179) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/NoopTracer.d.ts.map +1 -1
  3. package/dist/NoopTracer.js +15 -5
  4. package/dist/NoopTracer.js.map +1 -1
  5. package/dist/binary.js +1 -1
  6. package/dist/binary.js.map +1 -1
  7. package/dist/browser/Opfs/Opfs.d.ts +3 -3
  8. package/dist/browser/Opfs/Opfs.d.ts.map +1 -1
  9. package/dist/browser/Opfs/Opfs.js +1 -1
  10. package/dist/browser/Opfs/Opfs.js.map +1 -1
  11. package/dist/browser/Opfs/debug-utils.d.ts.map +1 -1
  12. package/dist/browser/Opfs/debug-utils.js +2 -2
  13. package/dist/browser/Opfs/debug-utils.js.map +1 -1
  14. package/dist/browser/Opfs/utils.d.ts.map +1 -1
  15. package/dist/browser/Opfs/utils.js +10 -10
  16. package/dist/browser/Opfs/utils.js.map +1 -1
  17. package/dist/browser/QuotaExceededError.d.ts.map +1 -1
  18. package/dist/browser/QuotaExceededError.js.map +1 -1
  19. package/dist/browser/WebChannelBrowser.d.ts +1 -1
  20. package/dist/browser/WebChannelBrowser.d.ts.map +1 -1
  21. package/dist/browser/WebError.d.ts +50 -54
  22. package/dist/browser/WebError.d.ts.map +1 -1
  23. package/dist/browser/WebError.js +25 -23
  24. package/dist/browser/WebError.js.map +1 -1
  25. package/dist/browser/WebLock.js +9 -9
  26. package/dist/browser/WebLock.js.map +1 -1
  27. package/dist/browser/detect.js +6 -6
  28. package/dist/browser/detect.js.map +1 -1
  29. package/dist/cuid/cuid.browser.js +1 -1
  30. package/dist/cuid/cuid.browser.js.map +1 -1
  31. package/dist/cuid/cuid.node.js +1 -1
  32. package/dist/cuid/cuid.node.js.map +1 -1
  33. package/dist/effect/BucketQueue.d.ts +1 -1
  34. package/dist/effect/BucketQueue.d.ts.map +1 -1
  35. package/dist/effect/BucketQueue.js.map +1 -1
  36. package/dist/effect/Debug.d.ts +7 -2
  37. package/dist/effect/Debug.d.ts.map +1 -1
  38. package/dist/effect/Debug.js +69 -61
  39. package/dist/effect/Debug.js.map +1 -1
  40. package/dist/effect/Effect.d.ts +72 -12
  41. package/dist/effect/Effect.d.ts.map +1 -1
  42. package/dist/effect/Effect.js +96 -12
  43. package/dist/effect/Effect.js.map +1 -1
  44. package/dist/effect/Error.js +1 -1
  45. package/dist/effect/Error.js.map +1 -1
  46. package/dist/effect/Logger.js +2 -2
  47. package/dist/effect/Logger.js.map +1 -1
  48. package/dist/effect/RpcClient.d.ts.map +1 -1
  49. package/dist/effect/RpcClient.js +4 -4
  50. package/dist/effect/RpcClient.js.map +1 -1
  51. package/dist/effect/Schema/debug-diff.js +5 -4
  52. package/dist/effect/Schema/debug-diff.js.map +1 -1
  53. package/dist/effect/Schema/index.d.ts +5 -3
  54. package/dist/effect/Schema/index.d.ts.map +1 -1
  55. package/dist/effect/Schema/index.js +1 -1
  56. package/dist/effect/Schema/index.js.map +1 -1
  57. package/dist/effect/ServiceContext.js +6 -6
  58. package/dist/effect/ServiceContext.js.map +1 -1
  59. package/dist/effect/Stream.test.js +3 -3
  60. package/dist/effect/Stream.test.js.map +1 -1
  61. package/dist/effect/SubscriptionRef.d.ts +4 -4
  62. package/dist/effect/SubscriptionRef.d.ts.map +1 -1
  63. package/dist/effect/WebChannel/WebChannel.d.ts +2 -2
  64. package/dist/effect/WebChannel/WebChannel.d.ts.map +1 -1
  65. package/dist/effect/WebChannel/WebChannel.js +4 -4
  66. package/dist/effect/WebChannel/WebChannel.js.map +1 -1
  67. package/dist/effect/WebChannel/broadcastChannelWithAck.js +4 -4
  68. package/dist/effect/WebChannel/broadcastChannelWithAck.js.map +1 -1
  69. package/dist/effect/WebChannel/common.d.ts +1 -1
  70. package/dist/effect/WebChannel/common.d.ts.map +1 -1
  71. package/dist/effect/WebChannel/common.js +2 -2
  72. package/dist/effect/WebChannel/common.js.map +1 -1
  73. package/dist/effect/WebSocket.js +3 -3
  74. package/dist/effect/WebSocket.js.map +1 -1
  75. package/dist/effect/mod.d.ts +1 -1
  76. package/dist/effect/mod.d.ts.map +1 -1
  77. package/dist/effect/mod.js +1 -1
  78. package/dist/effect/mod.js.map +1 -1
  79. package/dist/effect/spanEvent.d.ts +12 -0
  80. package/dist/effect/spanEvent.d.ts.map +1 -0
  81. package/dist/effect/spanEvent.js +12 -0
  82. package/dist/effect/spanEvent.js.map +1 -0
  83. package/dist/effect/spanEvent.test.d.ts +2 -0
  84. package/dist/effect/spanEvent.test.d.ts.map +1 -0
  85. package/dist/effect/spanEvent.test.js +82 -0
  86. package/dist/effect/spanEvent.test.js.map +1 -0
  87. package/dist/env.d.ts.map +1 -1
  88. package/dist/env.js +1 -1
  89. package/dist/env.js.map +1 -1
  90. package/dist/fast-deep-equal.js +9 -9
  91. package/dist/fast-deep-equal.js.map +1 -1
  92. package/dist/global.d.ts.map +1 -1
  93. package/dist/global.js.map +1 -1
  94. package/dist/misc.d.ts +9 -1
  95. package/dist/misc.d.ts.map +1 -1
  96. package/dist/misc.js +11 -3
  97. package/dist/misc.js.map +1 -1
  98. package/dist/mod.d.ts +1 -1
  99. package/dist/mod.d.ts.map +1 -1
  100. package/dist/mod.js +12 -12
  101. package/dist/mod.js.map +1 -1
  102. package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts.map +1 -1
  103. package/dist/node/ChildProcessRunner/ChildProcessRunner.js +15 -9
  104. package/dist/node/ChildProcessRunner/ChildProcessRunner.js.map +1 -1
  105. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts +8 -0
  106. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts.map +1 -1
  107. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js +10 -6
  108. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js.map +1 -1
  109. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js +2 -2
  110. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js.map +1 -1
  111. package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts.map +1 -1
  112. package/dist/node/ChildProcessRunner/ChildProcessWorker.js +4 -4
  113. package/dist/node/ChildProcessRunner/ChildProcessWorker.js.map +1 -1
  114. package/dist/node/mod.d.ts +31 -4
  115. package/dist/node/mod.d.ts.map +1 -1
  116. package/dist/node/mod.js +33 -6
  117. package/dist/node/mod.js.map +1 -1
  118. package/dist/object/index.d.ts.map +1 -1
  119. package/dist/object/index.js.map +1 -1
  120. package/dist/object/omit.js +1 -1
  121. package/dist/object/omit.js.map +1 -1
  122. package/dist/object/stringify-object.js +2 -2
  123. package/dist/object/stringify-object.js.map +1 -1
  124. package/dist/object/stringify-object.test.js.map +1 -1
  125. package/dist/qr.js +11 -11
  126. package/dist/qr.js.map +1 -1
  127. package/dist/set.js +1 -1
  128. package/dist/set.js.map +1 -1
  129. package/dist/time.js +1 -1
  130. package/dist/time.js.map +1 -1
  131. package/package.json +66 -52
  132. package/src/NoopTracer.ts +20 -9
  133. package/src/binary.ts +1 -1
  134. package/src/browser/Opfs/Opfs.ts +12 -4
  135. package/src/browser/Opfs/debug-utils.ts +8 -6
  136. package/src/browser/Opfs/utils.ts +11 -10
  137. package/src/browser/QuotaExceededError.ts +0 -2
  138. package/src/browser/WebChannelBrowser.ts +1 -1
  139. package/src/browser/WebError.ts +100 -86
  140. package/src/browser/WebLock.ts +15 -15
  141. package/src/browser/detect.ts +6 -6
  142. package/src/cuid/cuid.browser.ts +1 -1
  143. package/src/cuid/cuid.node.ts +1 -1
  144. package/src/effect/BucketQueue.ts +1 -1
  145. package/src/effect/Debug.ts +73 -55
  146. package/src/effect/Effect.ts +118 -36
  147. package/src/effect/Error.ts +1 -1
  148. package/src/effect/Logger.ts +2 -2
  149. package/src/effect/RpcClient.ts +7 -6
  150. package/src/effect/Schema/debug-diff.ts +6 -5
  151. package/src/effect/Schema/index.ts +9 -6
  152. package/src/effect/ServiceContext.ts +6 -6
  153. package/src/effect/Stream.test.ts +5 -4
  154. package/src/effect/SubscriptionRef.ts +5 -5
  155. package/src/effect/WebChannel/WebChannel.ts +6 -6
  156. package/src/effect/WebChannel/broadcastChannelWithAck.ts +4 -4
  157. package/src/effect/WebChannel/common.ts +4 -4
  158. package/src/effect/WebSocket.ts +3 -3
  159. package/src/effect/mod.ts +1 -0
  160. package/src/effect/spanEvent.test.ts +95 -0
  161. package/src/effect/spanEvent.ts +15 -0
  162. package/src/env.ts +2 -1
  163. package/src/fast-deep-equal.ts +9 -9
  164. package/src/global.ts +0 -2
  165. package/src/misc.ts +12 -4
  166. package/src/mod.ts +11 -11
  167. package/src/node/ChildProcessRunner/ChildProcessRunner.ts +23 -10
  168. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.ts +11 -7
  169. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.ts +10 -11
  170. package/src/node/ChildProcessRunner/ChildProcessWorker.ts +5 -4
  171. package/src/node/mod.ts +38 -6
  172. package/src/object/index.ts +1 -1
  173. package/src/object/omit.ts +1 -1
  174. package/src/object/stringify-object.test.ts +1 -0
  175. package/src/object/stringify-object.ts +2 -2
  176. package/src/qr.ts +11 -11
  177. package/src/set.ts +1 -1
  178. package/src/time.ts +1 -1
  179. package/dist/.tsbuildinfo.json +0 -1
@@ -11,7 +11,7 @@ const childProcesses = new Set();
11
11
  const forceCleanupChildren = (signal = 'SIGKILL') => {
12
12
  for (const child of childProcesses) {
13
13
  try {
14
- if (!child.killed) {
14
+ if (child.killed === false) {
15
15
  child.kill(signal);
16
16
  }
17
17
  }
@@ -24,7 +24,7 @@ const forceCleanupChildren = (signal = 'SIGKILL') => {
24
24
  // Install signal handlers once to clean up all child processes
25
25
  let signalHandlersInstalled = false;
26
26
  const installSignalHandlers = () => {
27
- if (signalHandlersInstalled)
27
+ if (signalHandlersInstalled === true)
28
28
  return;
29
29
  signalHandlersInstalled = true;
30
30
  // Use 'beforeExit' instead of signal handlers since tests may interfere with signals
@@ -75,13 +75,13 @@ const platformWorkerImpl = Worker.makePlatform()({
75
75
  }).pipe(Effect.timeout(3000), // Reduced timeout for faster cleanup
76
76
  Effect.interruptible, Effect.catchAllCause(() => Effect.sync(() => {
77
77
  // Enhanced cleanup with escalating signals
78
- if (!childProcess.killed) {
78
+ if (childProcess.killed === false) {
79
79
  try {
80
80
  // First try SIGTERM
81
81
  childProcess.kill('SIGTERM');
82
82
  // If still running after a short delay, use SIGKILL
83
83
  setTimeout(() => {
84
- if (!childProcess.killed) {
84
+ if (childProcess.killed === false) {
85
85
  childProcess.kill('SIGKILL');
86
86
  }
87
87
  }, 1000);
@@ -1 +1 @@
1
- {"version":3,"file":"ChildProcessWorker.js","sourceRoot":"","sources":["../../../src/node/ChildProcessRunner/ChildProcessWorker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChildProcessWorker.js","sourceRoot":"","sources":["../../../src/node/ChildProcessRunner/ChildProcessWorker.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,36 @@ export * as ChildProcessWorker from './ChildProcessRunner/ChildProcessWorker.ts'
8
8
  export declare const getFreePort: Effect.Effect<number, UnknownError>;
9
9
  export declare const OtelLiveDummy: Layer.Layer<OtelTracer.OtelTracer>;
10
10
  /**
11
- * Layer that enables recursive file watching by combining the Node filesystem implementation with
12
- * the Parcel-based watch backend. Mirrored from Effect’s platform-node Parcel watcher layer:
13
- * https://github.com/Effect-TS/effect/blob/main/packages/platform-node/src/NodeFileSystem/ParcelWatcher.ts
11
+ * Layer that provides WatchBackend for recursive file watching via @parcel/watcher.
12
+ * This layer alone does NOT provide FileSystem - it only provides the watch backend.
13
+ *
14
+ * IMPORTANT: Layer ordering matters! When composing with NodeFileSystem.layer, use
15
+ * `NodeFileSystemWithWatch` instead, or ensure WatchBackend is available when FileSystem
16
+ * is constructed by using `Layer.provideMerge`:
17
+ *
18
+ * ```ts
19
+ * // ✅ CORRECT: Use the pre-composed layer
20
+ * Effect.provide(NodeFileSystemWithWatch)
21
+ *
22
+ * // ✅ CORRECT: Manual composition with Layer.provideMerge
23
+ * const layer = PlatformNode.NodeFileSystem.layer.pipe(Layer.provideMerge(NodeRecursiveWatchLayer))
24
+ * Effect.provide(layer)
25
+ *
26
+ * // ❌ WRONG: Chained Effect.provide - WatchBackend won't be used!
27
+ * Effect.provide(NodeRecursiveWatchLayer).pipe(Effect.provide(PlatformNode.NodeFileSystem.layer))
28
+ * ```
29
+ *
30
+ * @see https://github.com/Effect-TS/effect/issues/5913
14
31
  */
15
- export declare const NodeRecursiveWatchLayer: Layer.Layer<import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/FileSystem").WatchBackend, never, never>;
32
+ export declare const NodeRecursiveWatchLayer: Layer.Layer<import("@effect/platform/FileSystem").WatchBackend, never, never>;
33
+ /**
34
+ * Pre-composed layer providing FileSystem with recursive file watching via @parcel/watcher.
35
+ * This is the recommended way to get a FileSystem that supports recursive watching.
36
+ *
37
+ * Use this layer when you need to watch files recursively (e.g., watching nested directories).
38
+ * Without recursive watching, Node.js's built-in fs.watch only detects changes in the
39
+ * immediate directory, not in subdirectories.
40
+ */
41
+ export { NodeFileSystem } from '@effect/platform-node';
42
+ export declare const NodeFileSystemWithWatch: Layer.Layer<import("@effect/platform/FileSystem").WatchBackend | import("@effect/platform/FileSystem").FileSystem, never, never>;
16
43
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAG3D,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAA;AAC7D,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AAErD,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAChF,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAOhF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAuB1D,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAQ3D,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,kIAAwE,CAAA"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAG3D,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAA;AAC7D,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AAErD,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAChF,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAOhF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAuB1D,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAQ3D,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,uBAAuB,+EAAqB,CAAA;AAEzD;;;;;;;GAOG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAItD,eAAO,MAAM,uBAAuB,kIAAoE,CAAA"}
package/dist/node/mod.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import * as http from 'node:http';
2
- import * as PlatformNode from '@effect/platform-node';
3
2
  import { layer as ParcelWatcherLayer } from '@effect/platform-node/NodeFileSystem/ParcelWatcher';
4
3
  import { Effect, Layer } from 'effect';
5
4
  import { OtelTracer, UnknownError } from "../effect/mod.js";
@@ -20,7 +19,7 @@ export const getFreePort = Effect.async((cb, signal) => {
20
19
  // Listen on port 0 to get an available port
21
20
  server.listen(0, () => {
22
21
  const address = server.address();
23
- if (address && typeof address === 'object') {
22
+ if (address !== null && typeof address === 'object') {
24
23
  const port = address.port;
25
24
  server.close(() => cb(Effect.succeed(port)));
26
25
  }
@@ -39,9 +38,37 @@ export const OtelLiveDummy = Layer.suspend(() => {
39
38
  return TracingLive;
40
39
  });
41
40
  /**
42
- * Layer that enables recursive file watching by combining the Node filesystem implementation with
43
- * the Parcel-based watch backend. Mirrored from Effect’s platform-node Parcel watcher layer:
44
- * https://github.com/Effect-TS/effect/blob/main/packages/platform-node/src/NodeFileSystem/ParcelWatcher.ts
41
+ * Layer that provides WatchBackend for recursive file watching via @parcel/watcher.
42
+ * This layer alone does NOT provide FileSystem - it only provides the watch backend.
43
+ *
44
+ * IMPORTANT: Layer ordering matters! When composing with NodeFileSystem.layer, use
45
+ * `NodeFileSystemWithWatch` instead, or ensure WatchBackend is available when FileSystem
46
+ * is constructed by using `Layer.provideMerge`:
47
+ *
48
+ * ```ts
49
+ * // ✅ CORRECT: Use the pre-composed layer
50
+ * Effect.provide(NodeFileSystemWithWatch)
51
+ *
52
+ * // ✅ CORRECT: Manual composition with Layer.provideMerge
53
+ * const layer = PlatformNode.NodeFileSystem.layer.pipe(Layer.provideMerge(NodeRecursiveWatchLayer))
54
+ * Effect.provide(layer)
55
+ *
56
+ * // ❌ WRONG: Chained Effect.provide - WatchBackend won't be used!
57
+ * Effect.provide(NodeRecursiveWatchLayer).pipe(Effect.provide(PlatformNode.NodeFileSystem.layer))
58
+ * ```
59
+ *
60
+ * @see https://github.com/Effect-TS/effect/issues/5913
45
61
  */
46
- export const NodeRecursiveWatchLayer = Layer.mergeAll(PlatformNode.NodeFileSystem.layer, ParcelWatcherLayer);
62
+ export const NodeRecursiveWatchLayer = ParcelWatcherLayer;
63
+ /**
64
+ * Pre-composed layer providing FileSystem with recursive file watching via @parcel/watcher.
65
+ * This is the recommended way to get a FileSystem that supports recursive watching.
66
+ *
67
+ * Use this layer when you need to watch files recursively (e.g., watching nested directories).
68
+ * Without recursive watching, Node.js's built-in fs.watch only detects changes in the
69
+ * immediate directory, not in subdirectories.
70
+ */
71
+ export { NodeFileSystem } from '@effect/platform-node';
72
+ import { NodeFileSystem } from '@effect/platform-node';
73
+ export const NodeFileSystemWithWatch = NodeFileSystem.layer.pipe(Layer.provideMerge(ParcelWatcherLayer));
47
74
  //# sourceMappingURL=mod.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,KAAK,IAAI,kBAAkB,EAAE,MAAM,oDAAoD,CAAA;AAChG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAA;AAC7D,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AAErD,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAChF,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAEhF,yCAAyC;AACzC,6EAA6E;AAE7E,6EAA6E;AAE7E,MAAM,CAAC,MAAM,WAAW,GAAwC,MAAM,CAAC,KAAK,CAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;IAChH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;IAElC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,4CAA4C;IAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;QAEhC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;YACzB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/F,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,wDAAwD;IACxD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACxG,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAuC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;IAClF,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAAA;IAE7E,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACvF,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CACnC,CAAA;IAED,OAAO,WAAW,CAAA;AACpB,CAAC,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAEA,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,uBAAuB,CAAA;AAErC,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE3F,eAAO,MAAM,eAAe,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EACrE,KAAK,IAAI,EACT,UAAU,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,KAAK,KAC7D,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,KAAK,GAG5B,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;AAEjE,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,KAAG,OAAO,CAAC,CAAC,CAAsC,CAAA;AAErH,eAAO,MAAM,mBAAmB,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,IAAI,KAAG,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,GAI9F,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAEA,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,uBAAuB,CAAA;AAErC,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE3F,eAAO,MAAM,eAAe,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EACrE,KAAK,IAAI,EACT,UAAU,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,KAAK,KAC7D,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,KAAK,GAG5B,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;AAEjE,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,KAAG,OAAO,CAAC,CAAC,CAAsC,CAAA;AAErH,eAAO,MAAM,mBAAmB,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,IAAI,KAAG,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,GAIrG,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,uBAAuB,CAAA;AAIrC,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,GAAS,EACT,QAA8D,EAChC,EAAE;IAChC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAiB,EAAE,GAAG,CAAC,CAAU,CAAC,CAAA;IAC/G,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAQ,CAAA;AACjD,CAAC,CAAA;AAID,MAAM,CAAC,MAAM,aAAa,GAAG,CAAgC,GAAM,EAAc,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAe,CAAA;AAErH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAmC,GAAS,EAA4B,EAAE,CAC3G,IAAI,CACF,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACvC,MAAM,CAAC,WAAW,CACZ,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,uBAAuB,CAAA;AAIrC,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,GAAS,EACT,QAA8D,EAChC,EAAE;IAChC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAiB,EAAE,GAAG,CAAC,CAAU,CAAC,CAAA;IAC/G,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAQ,CAAA;AACjD,CAAC,CAAA;AAID,MAAM,CAAC,MAAM,aAAa,GAAG,CAAgC,GAAM,EAAc,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAe,CAAA;AAErH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAmC,GAAS,EAA4B,EAAE,CAC3G,IAAI,CACF,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACvC,MAAM,CAAC,WAAW,CACnB,CAAA"}
@@ -5,7 +5,7 @@
5
5
  /** Returns a shallowly cloned object with the provided keys omitted */
6
6
  export const omit = (obj, keys) => {
7
7
  return Object.keys(obj).reduce((acc, key) => {
8
- if (!keys.includes(key)) {
8
+ if (keys.includes(key) === false) {
9
9
  acc[key] = obj[key];
10
10
  }
11
11
  return acc;
@@ -1 +1 @@
1
- {"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/object/omit.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,6DAA6D;AAC7D,wFAAwF;AACxF,8DAA8D;AAE9D,uEAAuE;AACvE,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,GAAQ,EACR,IAAY,EACK,EAAE;IACnB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAQ,EAAE,EAAE;QAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,GAAG,CAAC,GAAI,GAAW,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAS,CAAC,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/object/omit.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,6DAA6D;AAC7D,wFAAwF;AACxF,8DAA8D;AAE9D,uEAAuE;AACvE,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,GAAQ,EACR,IAAY,EACK,EAAE;IACnB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAQ,EAAE,EAAE;QAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YACjC,GAAG,CAAC,GAAG,CAAC,GAAI,GAAW,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAS,CAAC,CAAA;AACf,CAAC,CAAA"}
@@ -9,11 +9,11 @@ export const stringifyObject = (obj, prefix = '') => {
9
9
  const entries = [];
10
10
  for (const [key, value] of Object.entries(obj)) {
11
11
  const fullKey = prefix !== '' ? `${prefix}.${key}` : key;
12
- if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
12
+ if (typeof value === 'object' && value !== null && Array.isArray(value) === false) {
13
13
  // Recursively stringify nested objects with dot notation
14
14
  entries.push(stringifyObject(value, fullKey));
15
15
  }
16
- else if (Array.isArray(value)) {
16
+ else if (Array.isArray(value) === true) {
17
17
  // Arrays get converted to comma-separated values
18
18
  entries.push(`${fullKey}=${value.join(',')}`);
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stringify-object.js","sourceRoot":"","sources":["../../src/object/stringify-object.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE,EAAU,EAAE;IAClE,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QAExD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzE,yDAAyD;YACzD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;QAC/C,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,iDAAiD;YACjD,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC,CAAA"}
1
+ {"version":3,"file":"stringify-object.js","sourceRoot":"","sources":["../../src/object/stringify-object.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE,EAAU,EAAE;IAClE,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QAExD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;YAClF,yDAAyD;YACzD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;QAC/C,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACzC,iDAAiD;YACjD,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"stringify-object.test.js","sourceRoot":"","sources":["../../src/object/stringify-object.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAA;QACxC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAA;QACzC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;QACpC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;QAC3C,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAA;QACzC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,GAAG,GAAG;YACV,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACd,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aAC5B;YACD,IAAI,EAAE,MAAM;SACb,CAAA;QACD,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;IAC/F,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"stringify-object.test.js","sourceRoot":"","sources":["../../src/object/stringify-object.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAA;QACxC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAA;QACzC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;QACpC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;QAC3C,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAA;QACzC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,GAAG,GAAG;YACV,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACd,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aAC5B;YACD,IAAI,EAAE,MAAM;SACb,CAAA;QACD,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;IAC/F,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/dist/qr.js CHANGED
@@ -45,7 +45,7 @@ export const printQrTerminal = (text, options) => {
45
45
  if (row < 0 || col < 0 || row >= size || col >= size)
46
46
  return false;
47
47
  const bit = qr.isDark(row, col);
48
- return invert ? !bit : bit;
48
+ return invert === true ? !bit : bit;
49
49
  };
50
50
  const lines = [];
51
51
  // Compact rendering: combine two QR rows into one terminal row using half-blocks.
@@ -67,9 +67,9 @@ export const printQrTerminal = (text, options) => {
67
67
  let currentStyle = '';
68
68
  const setStyle = (style) => {
69
69
  if (style !== currentStyle) {
70
- if (currentStyle)
70
+ if (currentStyle !== undefined)
71
71
  row += RESET;
72
- if (style)
72
+ if (style !== undefined)
73
73
  row += style;
74
74
  currentStyle = style;
75
75
  }
@@ -77,29 +77,29 @@ export const printQrTerminal = (text, options) => {
77
77
  for (let x = 0; x < width; x++) {
78
78
  const top = isDarkAt(x, y);
79
79
  const bottom = isDarkAt(x, y + 1);
80
- if (useAnsi) {
80
+ if (useAnsi === true) {
81
81
  // Represent two stacked modules with a single `▀` character.
82
82
  // Foreground corresponds to the top pixel; background to the bottom pixel.
83
83
  // Always paint both halves to enforce a white quiet zone even on dark terminals.
84
- const fg = top ? FG_BLACK : FG_WHITE;
85
- const bg = bottom ? BG_BLACK : BG_WHITE;
84
+ const fg = top === true ? FG_BLACK : FG_WHITE;
85
+ const bg = bottom === true ? BG_BLACK : BG_WHITE;
86
86
  setStyle(fg + bg);
87
87
  row += '▀';
88
88
  }
89
89
  else {
90
90
  // No ANSI: approximate using block characters.
91
91
  let ch = ' ';
92
- if (top && bottom)
92
+ if (top === true && bottom === true)
93
93
  ch = '█';
94
- else if (top && !bottom)
94
+ else if (top === true && bottom === false)
95
95
  ch = '▀';
96
- else if (!top && bottom)
96
+ else if (top === false && bottom === true)
97
97
  ch = '▄';
98
98
  row += ch;
99
99
  }
100
100
  }
101
- if (useAnsi) {
102
- if (currentStyle)
101
+ if (useAnsi === true) {
102
+ if (currentStyle !== undefined)
103
103
  row += RESET;
104
104
  }
105
105
  lines.push(row);
package/dist/qr.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"qr.js","sourceRoot":"","sources":["../src/qr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qr.js","sourceRoot":"","sources":["../src/qr.ts"],"names":[],"mappings":"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"}
package/dist/set.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export const difference = (a, b) => {
2
2
  const diff = new Set();
3
3
  for (const item of a) {
4
- if (!b.has(item)) {
4
+ if (b.has(item) === false) {
5
5
  diff.add(item);
6
6
  }
7
7
  }
package/dist/set.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"set.js","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,CAAS,EAAE,CAAS,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAK,CAAA;IACzB,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,CAAS,EAAE,CAAS,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAK,CAAA;IACzB,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
package/dist/time.js CHANGED
@@ -14,7 +14,7 @@ export const msAsTimeString = (ms) => {
14
14
  const hours = Math.floor(minutes / 60);
15
15
  const remainingSeconds = (seconds % 60).toString().padStart(2, '0');
16
16
  const remainingMinutes = hours > 0 ? (minutes % 60).toString().padStart(2, '0') : minutes % 60;
17
- const timeString = [hours > 0 ? `${hours}:` : '', `${remainingMinutes}:`, `${remainingSeconds}`]
17
+ const timeString = [hours > 0 ? `${hours}:` : '', `${remainingMinutes}:`, remainingSeconds]
18
18
  .filter((val) => val !== '')
19
19
  .join('');
20
20
  return timeString;
package/dist/time.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;AAEnC,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,EAAE,EAAE,CAAC;IACL,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,EAAE,GAAG,IAAI;IACd,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACpB,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IACxB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAC9B,CAAA;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACtC,MAAM,gBAAgB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACnE,MAAM,gBAAgB,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAA;IAE9F,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,gBAAgB,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC;SAC7F,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;SAC3B,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;AAEnC,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,EAAE,EAAE,CAAC;IACL,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,EAAE,GAAG,IAAI;IACd,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACpB,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IACxB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAC9B,CAAA;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACtC,MAAM,gBAAgB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACnE,MAAM,gBAAgB,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAA;IAE9F,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,gBAAgB,GAAG,EAAE,gBAAgB,CAAC;SACxF,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;SAC3B,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,11 +1,22 @@
1
1
  {
2
2
  "name": "@livestore/utils",
3
- "version": "0.4.0-dev.21",
3
+ "version": "0.4.0-dev.23",
4
+ "license": "Apache-2.0",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/livestorejs/livestore.git"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "package.json",
12
+ "src"
13
+ ],
4
14
  "type": "module",
5
15
  "sideEffects": [
6
16
  "./src/global.ts",
7
17
  "./dist/global.js"
8
18
  ],
19
+ "react-native": "./dist/index.js",
9
20
  "exports": {
10
21
  ".": {
11
22
  "types": "./dist/mod.d.ts",
@@ -42,69 +53,72 @@
42
53
  "default": "./dist/bun/mod.js"
43
54
  }
44
55
  },
56
+ "publishConfig": {
57
+ "access": "public"
58
+ },
45
59
  "dependencies": {
46
- "@effect/platform-node": "0.98.4",
47
- "@standard-schema/spec": "1.0.0",
48
- "nanoid": "5.1.5",
60
+ "@effect/platform-node": "0.106.0",
61
+ "@standard-schema/spec": "1.1.0",
62
+ "nanoid": "5.0.9",
49
63
  "pretty-bytes": "7.0.1",
50
- "qrcode-generator": "2.0.4"
64
+ "qrcode-generator": "1.4.4"
51
65
  },
52
66
  "devDependencies": {
53
- "@effect/ai": "0.29.0",
54
- "@effect/cli": "0.71.0",
55
- "@effect/cluster": "0.50.6",
56
- "@effect/experimental": "0.56.0",
57
- "@effect/opentelemetry": "0.58.0",
58
- "@effect/platform": "0.92.1",
59
- "@effect/platform-browser": "0.72.0",
60
- "@effect/platform-bun": "0.81.1",
61
- "@effect/platform-node": "0.98.4",
62
- "@effect/printer": "0.46.0",
63
- "@effect/printer-ansi": "0.46.0",
64
- "@effect/rpc": "0.71.1",
65
- "@effect/sql": "0.46.0",
66
- "@effect/typeclass": "0.37.0",
67
- "@effect/vitest": "0.26.0",
68
- "@effect/workflow": "0.11.5",
67
+ "@effect/ai": "0.35.0",
68
+ "@effect/cli": "0.75.1",
69
+ "@effect/cluster": "0.58.2",
70
+ "@effect/experimental": "0.60.0",
71
+ "@effect/opentelemetry": "0.63.0",
72
+ "@effect/platform": "0.96.1",
73
+ "@effect/platform-browser": "0.76.0",
74
+ "@effect/platform-bun": "0.89.0",
75
+ "@effect/platform-node": "0.106.0",
76
+ "@effect/printer": "0.49.0",
77
+ "@effect/printer-ansi": "0.49.0",
78
+ "@effect/rpc": "0.75.1",
79
+ "@effect/sql": "0.51.1",
80
+ "@effect/typeclass": "0.40.0",
81
+ "@effect/vitest": "0.29.0",
82
+ "@effect/workflow": "0.18.0",
69
83
  "@opentelemetry/api": "1.9.0",
70
- "@opentelemetry/resources": "2.0.1",
71
- "@types/bun": "1.2.21",
72
- "@types/jsdom": "^21.1.7",
73
- "@types/node": "24.10.1",
84
+ "@opentelemetry/resources": "2.2.0",
85
+ "@standard-schema/spec": "1.1.0",
86
+ "@types/bun": "1.3.10",
87
+ "@types/jsdom": "21.1.7",
88
+ "@types/node": "25.3.3",
74
89
  "@types/web": "0.0.264",
75
- "effect": "3.19.9",
76
- "jsdom": "^26.1.0",
90
+ "effect": "3.21.2",
91
+ "jsdom": "26.1.0",
77
92
  "vitest": "3.2.4"
78
93
  },
79
- "files": [
80
- "package.json",
81
- "src",
82
- "dist"
83
- ],
84
- "license": "Apache-2.0",
85
94
  "peerDependencies": {
86
- "@effect/ai": "^0.29.0",
87
- "@effect/cli": "^0.71.0",
88
- "@effect/cluster": "^0.50.6",
89
- "@effect/experimental": "^0.56.0",
90
- "@effect/opentelemetry": "^0.58.0",
91
- "@effect/platform": "^0.92.1",
92
- "@effect/platform-browser": "^0.72.0",
93
- "@effect/platform-bun": "^0.81.1",
94
- "@effect/platform-node": "^0.98.4",
95
- "@effect/printer": "^0.46.0",
96
- "@effect/printer-ansi": "^0.46.0",
97
- "@effect/rpc": "^0.71.1",
98
- "@effect/sql": "^0.46.0",
99
- "@effect/typeclass": "^0.37.0",
95
+ "@effect/ai": "^0.35.0",
96
+ "@effect/cli": "^0.75.1",
97
+ "@effect/cluster": "^0.58.2",
98
+ "@effect/experimental": "^0.60.0",
99
+ "@effect/opentelemetry": "^0.63.0",
100
+ "@effect/platform": "^0.96.1",
101
+ "@effect/platform-browser": "^0.76.0",
102
+ "@effect/platform-bun": "^0.89.0",
103
+ "@effect/platform-node": "^0.106.0",
104
+ "@effect/printer": "^0.49.0",
105
+ "@effect/printer-ansi": "^0.49.0",
106
+ "@effect/rpc": "^0.75.1",
107
+ "@effect/sql": "^0.51.1",
108
+ "@effect/typeclass": "^0.40.0",
109
+ "@effect/vitest": "^0.29.0",
100
110
  "@opentelemetry/api": "^1.9.0",
101
- "@opentelemetry/resources": "^2.0.1",
102
- "effect": "^3.19.9"
111
+ "@opentelemetry/resources": "^2.2.0",
112
+ "@standard-schema/spec": "^1.1.0",
113
+ "effect": "^3.21.2"
103
114
  },
104
- "publishConfig": {
105
- "access": "public"
115
+ "$genie": {
116
+ "source": "package.json.genie.ts",
117
+ "warning": "DO NOT EDIT - changes will be overwritten",
118
+ "workspaceClosureDirs": [
119
+ "packages/@livestore/utils"
120
+ ]
106
121
  },
107
- "react-native": "./dist/index.js",
108
122
  "scripts": {
109
123
  "test": "vitest"
110
124
  }
package/src/NoopTracer.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  /** biome-ignore-all lint/complexity/noArguments: using arguments is fine here */
2
+
2
3
  import type * as otel from '@opentelemetry/api'
3
4
 
5
+ import { cuid } from '@livestore/utils/cuid'
6
+
4
7
  export const makeNoopSpan = () => {
5
- const performanceStartTime: DOMHighResTimeStamp = performance.now()
8
+ const performanceStartTime = performance.now()
6
9
 
7
- const span = {
10
+ const spanImpl = {
8
11
  _performanceStartTime: performanceStartTime,
9
12
  setAttribute: () => null,
10
13
  setAttributes: () => null,
@@ -14,25 +17,27 @@ export const makeNoopSpan = () => {
14
17
  updateName: () => null,
15
18
  recordException: () => null,
16
19
  end: () => {
17
- const endTime: DOMHighResTimeStamp = performance.now()
20
+ const endTime = performance.now()
18
21
  const duration = endTime - performanceStartTime
19
22
  const durationSecs = duration / 1000
20
23
  const durationRestNs = (duration % 1000) * 1_000_000
21
- ;(span as any)._duration = [durationSecs, durationRestNs]
24
+ spanImpl._duration = [durationSecs, durationRestNs] as [number, number]
22
25
  },
23
26
  spanContext: () => {
24
27
  return {
25
- traceId: `livestore-noop-trace-id${crypto.randomUUID()}`,
26
- spanId: `livestore-noop-span-id${crypto.randomUUID()}`,
28
+ traceId: `livestore-noop-trace-id${cuid()}`,
29
+ spanId: `livestore-noop-span-id${cuid()}`,
27
30
  }
28
31
  },
29
- _duration: [0, 0],
30
- } as unknown as otel.Span
32
+ _duration: [0, 0] as [number, number],
33
+ }
31
34
 
32
- return span
35
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- noop otel.Span implementation; only implements the subset needed by LiveStore
36
+ return spanImpl as unknown as otel.Span
33
37
  }
34
38
 
35
39
  export const makeNoopTracer = () => {
40
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- noop otel.Tracer implementation; only implements the subset needed by LiveStore
36
41
  return new NoopTracer() as unknown as otel.Tracer
37
42
  }
38
43
 
@@ -64,13 +69,19 @@ export class NoopTracer {
64
69
  if (arguments.length < 2) {
65
70
  return
66
71
  } else if (arguments.length === 2) {
72
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 2 args, arg2 is the callback
67
73
  fn = arg2 as F
68
74
  } else if (arguments.length === 3) {
75
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 3 args, arg2 is SpanOptions
69
76
  _opts = arg2 as otel.SpanOptions | undefined
77
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 3 args, arg3 is the callback
70
78
  fn = arg3 as F
71
79
  } else {
80
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 4 args, arg2 is SpanOptions
72
81
  _opts = arg2 as otel.SpanOptions | undefined
82
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 4 args, arg3 is Context
73
83
  _ctx = arg3 as otel.Context | undefined
84
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 4 args, arg4 is the callback
74
85
  fn = arg4 as F
75
86
  }
76
87
 
package/src/binary.ts CHANGED
@@ -35,7 +35,7 @@ export const isUint8ArrayBuffer = (array: Uint8Array): array is Uint8Array<Array
35
35
  * Safer alternative to type assertions.
36
36
  */
37
37
  export const toUint8ArrayBuffer = (array: Uint8Array): Uint8Array<ArrayBuffer> => {
38
- if (isUint8ArrayBuffer(array)) {
38
+ if (isUint8ArrayBuffer(array) === true) {
39
39
  return array
40
40
  }
41
41
  // Copy to ensure ArrayBuffer backing
@@ -1,6 +1,7 @@
1
1
  /// <reference lib="webworker" />
2
2
 
3
3
  import { Effect, Option, Schema, Stream } from 'effect'
4
+
4
5
  import * as WebError from '../WebError.ts'
5
6
 
6
7
  /**
@@ -102,9 +103,16 @@ export class Opfs extends Effect.Service<Opfs>()('@livestore/utils/Opfs', {
102
103
  *
103
104
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryHandle/values | MDN Reference}
104
105
  */
105
- const values = (directory: FileSystemDirectoryHandle) =>
106
- Stream.fromAsyncIterable(directory.values(), (u) =>
107
- WebError.parseWebError(u, [WebError.NotAllowedError, WebError.NotFoundError]),
106
+ const values = (
107
+ directory: FileSystemDirectoryHandle,
108
+ ): Stream.Stream<
109
+ FileSystemHandle,
110
+ WebError.NotAllowedError | WebError.NotFoundError | WebError.UnknownError,
111
+ never
112
+ > =>
113
+ Stream.fromAsyncIterable(
114
+ (directory as unknown as { values(): AsyncIterable<FileSystemHandle> }).values(),
115
+ (u) => WebError.parseWebError(u, [WebError.NotAllowedError, WebError.NotFoundError]),
108
116
  )
109
117
 
110
118
  /**
@@ -422,7 +430,7 @@ export const noopOpfs = new Opfs({
422
430
  /**
423
431
  * Error raised when OPFS operations fail.
424
432
  */
425
- export class OpfsError extends Schema.TaggedError<OpfsError>()('@livestore/utils/Opfs/Error', {
433
+ export class OpfsError extends Schema.TaggedError<OpfsError>('~@livestore/utils/OpfsError')('OpfsError', {
426
434
  message: Schema.String,
427
435
  cause: Schema.optional(Schema.Defect),
428
436
  }) {}