@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.
Files changed (316) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/NoopTracer.d.ts +7 -8
  3. package/dist/NoopTracer.d.ts.map +1 -1
  4. package/dist/NoopTracer.js +13 -15
  5. package/dist/NoopTracer.js.map +1 -1
  6. package/dist/NoopTracer.test.d.ts +2 -0
  7. package/dist/NoopTracer.test.d.ts.map +1 -0
  8. package/dist/NoopTracer.test.js +17 -0
  9. package/dist/NoopTracer.test.js.map +1 -0
  10. package/dist/binary.js +1 -1
  11. package/dist/binary.js.map +1 -1
  12. package/dist/browser/Opfs/Opfs.d.ts +201 -0
  13. package/dist/browser/Opfs/Opfs.d.ts.map +1 -0
  14. package/dist/browser/Opfs/Opfs.js +170 -0
  15. package/dist/browser/Opfs/Opfs.js.map +1 -0
  16. package/dist/browser/Opfs/debug-utils.d.ts +20 -0
  17. package/dist/browser/Opfs/debug-utils.d.ts.map +1 -0
  18. package/dist/browser/Opfs/debug-utils.js +95 -0
  19. package/dist/browser/Opfs/debug-utils.js.map +1 -0
  20. package/dist/browser/Opfs/mod.d.ts +4 -0
  21. package/dist/browser/Opfs/mod.d.ts.map +1 -0
  22. package/dist/browser/Opfs/mod.js +4 -0
  23. package/dist/browser/Opfs/mod.js.map +1 -0
  24. package/dist/browser/Opfs/utils.d.ts +71 -0
  25. package/dist/browser/Opfs/utils.d.ts.map +1 -0
  26. package/dist/browser/Opfs/utils.js +227 -0
  27. package/dist/browser/Opfs/utils.js.map +1 -0
  28. package/dist/browser/QuotaExceededError.d.ts +60 -0
  29. package/dist/browser/QuotaExceededError.d.ts.map +1 -0
  30. package/dist/browser/QuotaExceededError.js +2 -0
  31. package/dist/browser/QuotaExceededError.js.map +1 -0
  32. package/dist/browser/WebChannelBrowser.d.ts +22 -0
  33. package/dist/browser/WebChannelBrowser.d.ts.map +1 -0
  34. package/dist/browser/WebChannelBrowser.js +87 -0
  35. package/dist/browser/WebChannelBrowser.js.map +1 -0
  36. package/dist/browser/WebError.d.ts +389 -0
  37. package/dist/browser/WebError.d.ts.map +1 -0
  38. package/dist/browser/WebError.js +423 -0
  39. package/dist/browser/WebError.js.map +1 -0
  40. package/dist/browser/WebError.test.d.ts +2 -0
  41. package/dist/browser/WebError.test.d.ts.map +1 -0
  42. package/dist/browser/WebError.test.js +46 -0
  43. package/dist/browser/WebError.test.js.map +1 -0
  44. package/dist/browser/WebLock.d.ts.map +1 -0
  45. package/dist/{effect → browser}/WebLock.js +21 -21
  46. package/dist/browser/WebLock.js.map +1 -0
  47. package/dist/{browser.d.ts → browser/detect.d.ts} +1 -1
  48. package/dist/browser/detect.d.ts.map +1 -0
  49. package/dist/{browser.js → browser/detect.js} +7 -7
  50. package/dist/browser/detect.js.map +1 -0
  51. package/dist/browser/mod.d.ts +8 -0
  52. package/dist/browser/mod.d.ts.map +1 -0
  53. package/dist/browser/mod.js +8 -0
  54. package/dist/browser/mod.js.map +1 -0
  55. package/dist/cuid/cuid.browser.js +1 -1
  56. package/dist/cuid/cuid.browser.js.map +1 -1
  57. package/dist/cuid/cuid.node.js +1 -1
  58. package/dist/cuid/cuid.node.js.map +1 -1
  59. package/dist/effect/Debug.d.ts +38 -0
  60. package/dist/effect/Debug.d.ts.map +1 -0
  61. package/dist/effect/Debug.js +350 -0
  62. package/dist/effect/Debug.js.map +1 -0
  63. package/dist/effect/Effect.d.ts +91 -22
  64. package/dist/effect/Effect.d.ts.map +1 -1
  65. package/dist/effect/Effect.js +126 -38
  66. package/dist/effect/Effect.js.map +1 -1
  67. package/dist/effect/Effect.test.d.ts +2 -0
  68. package/dist/effect/Effect.test.d.ts.map +1 -0
  69. package/dist/effect/Effect.test.js +72 -0
  70. package/dist/effect/Effect.test.js.map +1 -0
  71. package/dist/effect/Error.d.ts +4 -6
  72. package/dist/effect/Error.d.ts.map +1 -1
  73. package/dist/effect/Error.js +1 -1
  74. package/dist/effect/Error.js.map +1 -1
  75. package/dist/effect/Logger.d.ts +0 -6
  76. package/dist/effect/Logger.d.ts.map +1 -1
  77. package/dist/effect/Logger.js +0 -32
  78. package/dist/effect/Logger.js.map +1 -1
  79. package/dist/effect/OtelTracer.d.ts +1 -1
  80. package/dist/effect/OtelTracer.d.ts.map +1 -1
  81. package/dist/effect/OtelTracer.js +2 -3
  82. package/dist/effect/OtelTracer.js.map +1 -1
  83. package/dist/effect/RpcClient.d.ts +7 -7
  84. package/dist/effect/RpcClient.d.ts.map +1 -1
  85. package/dist/effect/RpcClient.js +74 -54
  86. package/dist/effect/RpcClient.js.map +1 -1
  87. package/dist/effect/Schedule.d.ts +1 -1
  88. package/dist/effect/Schedule.d.ts.map +1 -1
  89. package/dist/effect/Schedule.js +2 -2
  90. package/dist/effect/Schedule.js.map +1 -1
  91. package/dist/effect/Schema/debug-diff.d.ts +1 -1
  92. package/dist/effect/Schema/debug-diff.d.ts.map +1 -1
  93. package/dist/effect/Schema/debug-diff.js +9 -10
  94. package/dist/effect/Schema/debug-diff.js.map +1 -1
  95. package/dist/effect/Schema/debug-diff.test.js +7 -4
  96. package/dist/effect/Schema/debug-diff.test.js.map +1 -1
  97. package/dist/effect/Schema/index.d.ts +28 -18
  98. package/dist/effect/Schema/index.d.ts.map +1 -1
  99. package/dist/effect/Schema/index.js +55 -28
  100. package/dist/effect/Schema/index.js.map +1 -1
  101. package/dist/effect/Stream.d.ts +13 -5
  102. package/dist/effect/Stream.d.ts.map +1 -1
  103. package/dist/effect/Stream.js +19 -12
  104. package/dist/effect/Stream.js.map +1 -1
  105. package/dist/effect/Stream.test.js +12 -12
  106. package/dist/effect/Stream.test.js.map +1 -1
  107. package/dist/effect/Subscribable.d.ts +9 -3
  108. package/dist/effect/Subscribable.d.ts.map +1 -1
  109. package/dist/effect/Subscribable.js +20 -35
  110. package/dist/effect/Subscribable.js.map +1 -1
  111. package/dist/effect/SubscriptionRef.d.ts +5 -6
  112. package/dist/effect/SubscriptionRef.d.ts.map +1 -1
  113. package/dist/effect/SubscriptionRef.js +2 -3
  114. package/dist/effect/SubscriptionRef.js.map +1 -1
  115. package/dist/effect/TaskTracing.d.ts +1 -1
  116. package/dist/effect/TaskTracing.d.ts.map +1 -1
  117. package/dist/effect/TaskTracing.js +12 -16
  118. package/dist/effect/TaskTracing.js.map +1 -1
  119. package/dist/effect/WebChannel/WebChannel.d.ts +11 -30
  120. package/dist/effect/WebChannel/WebChannel.d.ts.map +1 -1
  121. package/dist/effect/WebChannel/WebChannel.js +70 -125
  122. package/dist/effect/WebChannel/WebChannel.js.map +1 -1
  123. package/dist/effect/WebChannel/WebChannel.test.js +16 -16
  124. package/dist/effect/WebChannel/WebChannel.test.js.map +1 -1
  125. package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts.map +1 -1
  126. package/dist/effect/WebChannel/broadcastChannelWithAck.js +20 -13
  127. package/dist/effect/WebChannel/broadcastChannelWithAck.js.map +1 -1
  128. package/dist/effect/WebChannel/common.d.ts +17 -18
  129. package/dist/effect/WebChannel/common.d.ts.map +1 -1
  130. package/dist/effect/WebChannel/common.js +7 -7
  131. package/dist/effect/WebChannel/common.js.map +1 -1
  132. package/dist/effect/WebSocket.d.ts +4 -6
  133. package/dist/effect/WebSocket.d.ts.map +1 -1
  134. package/dist/effect/WebSocket.js +17 -17
  135. package/dist/effect/WebSocket.js.map +1 -1
  136. package/dist/effect/WebSocket.test.js +2 -2
  137. package/dist/effect/WebSocket.test.js.map +1 -1
  138. package/dist/effect/mod.browser-build.test.d.ts +2 -0
  139. package/dist/effect/mod.browser-build.test.d.ts.map +1 -0
  140. package/dist/effect/mod.browser-build.test.js +18 -0
  141. package/dist/effect/mod.browser-build.test.js.map +1 -0
  142. package/dist/effect/mod.d.ts +30 -0
  143. package/dist/effect/mod.d.ts.map +1 -0
  144. package/dist/effect/mod.js +30 -0
  145. package/dist/effect/mod.js.map +1 -0
  146. package/dist/effect/spanEvent.d.ts +12 -0
  147. package/dist/effect/spanEvent.d.ts.map +1 -0
  148. package/dist/effect/spanEvent.js +12 -0
  149. package/dist/effect/spanEvent.js.map +1 -0
  150. package/dist/effect/spanEvent.test.d.ts +2 -0
  151. package/dist/effect/spanEvent.test.d.ts.map +1 -0
  152. package/dist/effect/spanEvent.test.js +79 -0
  153. package/dist/effect/spanEvent.test.js.map +1 -0
  154. package/dist/env.d.ts.map +1 -1
  155. package/dist/env.js +1 -1
  156. package/dist/env.js.map +1 -1
  157. package/dist/fast-deep-equal.d.ts.map +1 -1
  158. package/dist/fast-deep-equal.js +9 -10
  159. package/dist/fast-deep-equal.js.map +1 -1
  160. package/dist/global.d.ts +3 -0
  161. package/dist/global.d.ts.map +1 -1
  162. package/dist/global.js.map +1 -1
  163. package/dist/misc.d.ts +9 -1
  164. package/dist/misc.d.ts.map +1 -1
  165. package/dist/misc.js +12 -4
  166. package/dist/misc.js.map +1 -1
  167. package/dist/mod.d.ts +177 -20
  168. package/dist/mod.d.ts.map +1 -1
  169. package/dist/mod.js +159 -22
  170. package/dist/mod.js.map +1 -1
  171. package/dist/node/mod.d.ts +45 -6
  172. package/dist/node/mod.d.ts.map +1 -1
  173. package/dist/node/mod.js +51 -9
  174. package/dist/node/mod.js.map +1 -1
  175. package/dist/object/index.d.ts +0 -9
  176. package/dist/object/index.d.ts.map +1 -1
  177. package/dist/object/index.js +0 -9
  178. package/dist/object/index.js.map +1 -1
  179. package/dist/object/stringify-object.js +2 -2
  180. package/dist/object/stringify-object.js.map +1 -1
  181. package/dist/object/stringify-object.test.js.map +1 -1
  182. package/dist/qr.d.ts +38 -0
  183. package/dist/qr.d.ts.map +1 -0
  184. package/dist/qr.js +109 -0
  185. package/dist/qr.js.map +1 -0
  186. package/dist/set.js +1 -1
  187. package/dist/set.js.map +1 -1
  188. package/dist/string.d.ts +0 -2
  189. package/dist/string.d.ts.map +1 -1
  190. package/dist/string.js +0 -2
  191. package/dist/string.js.map +1 -1
  192. package/package.json +61 -55
  193. package/src/NoopTracer.test.ts +20 -0
  194. package/src/NoopTracer.ts +28 -37
  195. package/src/binary.ts +1 -1
  196. package/src/browser/Opfs/Opfs.ts +463 -0
  197. package/src/browser/Opfs/debug-utils.ts +154 -0
  198. package/src/browser/Opfs/mod.ts +3 -0
  199. package/src/browser/Opfs/utils.ts +297 -0
  200. package/src/browser/QuotaExceededError.ts +60 -0
  201. package/src/browser/WebChannelBrowser.ts +145 -0
  202. package/src/browser/WebError.test.ts +66 -0
  203. package/src/browser/WebError.ts +587 -0
  204. package/src/{effect → browser}/WebLock.ts +27 -28
  205. package/src/{browser.ts → browser/detect.ts} +6 -6
  206. package/src/browser/mod.ts +8 -0
  207. package/src/cuid/cuid.browser.ts +1 -1
  208. package/src/cuid/cuid.node.ts +1 -1
  209. package/src/effect/Debug.ts +477 -0
  210. package/src/effect/Effect.test.ts +117 -0
  211. package/src/effect/Effect.ts +174 -79
  212. package/src/effect/Error.ts +1 -1
  213. package/src/effect/Logger.ts +0 -48
  214. package/src/effect/OtelTracer.ts +2 -3
  215. package/src/effect/RpcClient.ts +85 -65
  216. package/src/effect/Schedule.ts +4 -5
  217. package/src/effect/Schema/debug-diff.test.ts +7 -7
  218. package/src/effect/Schema/debug-diff.ts +11 -12
  219. package/src/effect/Schema/index.ts +121 -57
  220. package/src/effect/Stream.test.ts +14 -13
  221. package/src/effect/Stream.ts +23 -16
  222. package/src/effect/Subscribable.ts +31 -42
  223. package/src/effect/SubscriptionRef.ts +9 -13
  224. package/src/effect/TaskTracing.ts +13 -16
  225. package/src/effect/WebChannel/WebChannel.test.ts +24 -24
  226. package/src/effect/WebChannel/WebChannel.ts +102 -192
  227. package/src/effect/WebChannel/broadcastChannelWithAck.ts +25 -15
  228. package/src/effect/WebChannel/common.ts +16 -17
  229. package/src/effect/WebSocket.test.ts +2 -2
  230. package/src/effect/WebSocket.ts +20 -16
  231. package/src/effect/mod.browser-build.test.ts +19 -0
  232. package/src/effect/{index.ts → mod.ts} +43 -69
  233. package/src/effect/spanEvent.test.ts +92 -0
  234. package/src/effect/spanEvent.ts +17 -0
  235. package/src/env.ts +2 -1
  236. package/src/fast-deep-equal.ts +9 -10
  237. package/src/global.ts +4 -2
  238. package/src/misc.ts +13 -5
  239. package/src/mod.ts +188 -32
  240. package/src/node/mod.ts +57 -12
  241. package/src/object/index.ts +0 -24
  242. package/src/object/stringify-object.test.ts +1 -0
  243. package/src/object/stringify-object.ts +2 -2
  244. package/src/qr.ts +125 -0
  245. package/src/set.ts +1 -1
  246. package/src/string.ts +0 -3
  247. package/dist/.tsbuildinfo.json +0 -1
  248. package/dist/browser.d.ts.map +0 -1
  249. package/dist/browser.js.map +0 -1
  250. package/dist/effect/BucketQueue.d.ts +0 -20
  251. package/dist/effect/BucketQueue.d.ts.map +0 -1
  252. package/dist/effect/BucketQueue.js +0 -34
  253. package/dist/effect/BucketQueue.js.map +0 -1
  254. package/dist/effect/Scheduler.d.ts +0 -4
  255. package/dist/effect/Scheduler.d.ts.map +0 -1
  256. package/dist/effect/Scheduler.js +0 -9
  257. package/dist/effect/Scheduler.js.map +0 -1
  258. package/dist/effect/ServiceContext.d.ts +0 -37
  259. package/dist/effect/ServiceContext.d.ts.map +0 -1
  260. package/dist/effect/ServiceContext.js +0 -55
  261. package/dist/effect/ServiceContext.js.map +0 -1
  262. package/dist/effect/WebLock.d.ts.map +0 -1
  263. package/dist/effect/WebLock.js.map +0 -1
  264. package/dist/effect/index.d.ts +0 -32
  265. package/dist/effect/index.d.ts.map +0 -1
  266. package/dist/effect/index.js +0 -35
  267. package/dist/effect/index.js.map +0 -1
  268. package/dist/guards.d.ts +0 -6
  269. package/dist/guards.d.ts.map +0 -1
  270. package/dist/guards.js +0 -6
  271. package/dist/guards.js.map +0 -1
  272. package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts +0 -4
  273. package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts.map +0 -1
  274. package/dist/node/ChildProcessRunner/ChildProcessRunner.js +0 -122
  275. package/dist/node/ChildProcessRunner/ChildProcessRunner.js.map +0 -1
  276. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts +0 -2
  277. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts.map +0 -1
  278. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js +0 -218
  279. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js.map +0 -1
  280. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts +0 -84
  281. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts.map +0 -1
  282. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js +0 -68
  283. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js.map +0 -1
  284. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts +0 -2
  285. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts.map +0 -1
  286. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js +0 -52
  287. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js.map +0 -1
  288. package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts +0 -23
  289. package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts.map +0 -1
  290. package/dist/node/ChildProcessRunner/ChildProcessWorker.js +0 -138
  291. package/dist/node/ChildProcessRunner/ChildProcessWorker.js.map +0 -1
  292. package/dist/object/omit.d.ts +0 -3
  293. package/dist/object/omit.d.ts.map +0 -1
  294. package/dist/object/omit.js +0 -14
  295. package/dist/object/omit.js.map +0 -1
  296. package/dist/object/pick.d.ts +0 -14
  297. package/dist/object/pick.d.ts.map +0 -1
  298. package/dist/object/pick.js +0 -17
  299. package/dist/object/pick.js.map +0 -1
  300. package/dist/time.d.ts +0 -12
  301. package/dist/time.d.ts.map +0 -1
  302. package/dist/time.js +0 -22
  303. package/dist/time.js.map +0 -1
  304. package/src/effect/BucketQueue.ts +0 -49
  305. package/src/effect/Scheduler.ts +0 -13
  306. package/src/effect/ServiceContext.ts +0 -108
  307. package/src/guards.ts +0 -8
  308. package/src/node/ChildProcessRunner/ChildProcessRunner.ts +0 -135
  309. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.ts +0 -302
  310. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/schema.ts +0 -78
  311. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.ts +0 -66
  312. package/src/node/ChildProcessRunner/ChildProcessWorker.ts +0 -168
  313. package/src/object/omit.ts +0 -17
  314. package/src/object/pick.ts +0 -27
  315. package/src/time.ts +0 -25
  316. /package/dist/{effect → browser}/WebLock.d.ts +0 -0
package/dist/qr.js ADDED
@@ -0,0 +1,109 @@
1
+ import qrcode from 'qrcode-generator';
2
+ export { default as QR } from 'qrcode-generator';
3
+ /**
4
+ * Print a QR code to the terminal using Unicode block characters.
5
+ *
6
+ * Notes
7
+ * - Uses `qrcode-generator` under the hood. `typeNumber` is set to `0` which means
8
+ * “auto-select the smallest QR version (1..40) that fits the data”. Larger versions
9
+ * create larger matrices (each version adds 4 modules per side). See the library:
10
+ * - Types (TypeNumber, ErrorCorrectionLevel):
11
+ * https://unpkg.com/qrcode-generator@2.0.4/dist/qrcode.d.ts
12
+ * - Repository / README:
13
+ * https://github.com/kazuhikoarase/qrcode-generator
14
+ * - Error correction level (ECL) controls how much damage/occlusion can be
15
+ * tolerated by adding redundancy. Higher ECL means bigger codes and lower
16
+ * payload capacity:
17
+ * - L ≈ 7% recovery (highest capacity, lowest redundancy)
18
+ * - M ≈ 15% recovery (balanced, common default)
19
+ * - Q ≈ 25% recovery (more robust in noisy/low-contrast prints)
20
+ * - H ≈ 30% recovery (most robust; largest symbols)
21
+ * Reference: https://www.qrcode.com/en/about/error_correction.html
22
+ * - `small` mode compresses two QR rows into one terminal row using the half-block
23
+ * character `▀` and optional ANSI colors (foreground=top, background=bottom).
24
+ * This roughly halves the height while keeping readability in modern terminals.
25
+ * - The QR “quiet zone” (margin) is important for scanners. If scanning is unreliable,
26
+ * consider increasing `margin` to 2–4.
27
+ */
28
+ export const printQrTerminal = (text, options) => {
29
+ const ec = options?.errorCorrectionLevel ?? 'M';
30
+ const margin = options?.margin ?? 2;
31
+ const invert = options?.invert ?? false;
32
+ // Auto-enable ANSI on TTY; avoid in browsers
33
+ const useAnsi = options?.useAnsi ?? (typeof process !== 'undefined' && !!process?.stdout?.isTTY);
34
+ // Create the QR code. `0` means: choose the smallest possible version automatically.
35
+ // Error correction level (L/M/Q/H) trades capacity for redundancy.
36
+ const qr = qrcode(0, ec);
37
+ qr.addData(text);
38
+ qr.make();
39
+ const size = qr.getModuleCount();
40
+ // Helper: read a module, applying margin and optional inversion.
41
+ // qrcode-generator’s `isDark` signature is (row, col) i.e. (y, x).
42
+ const isDarkAt = (x, y) => {
43
+ const row = y - margin;
44
+ const col = x - margin;
45
+ if (row < 0 || col < 0 || row >= size || col >= size)
46
+ return false;
47
+ const bit = qr.isDark(row, col);
48
+ return invert === true ? !bit : bit;
49
+ };
50
+ const lines = [];
51
+ // Compact rendering: combine two QR rows into one terminal row using half-blocks.
52
+ // With ANSI enabled: use `▀` and paint top as FG, bottom as BG (clear and crisp).
53
+ // Without ANSI: fall back to block chars (`█`, `▀`, `▄`, space). Note that the
54
+ // non-ANSI fallback cannot enforce a white background on dark themes, which may
55
+ // reduce scanner reliability—prefer ANSI when possible.
56
+ const width = size + 2 * margin;
57
+ const height = size + 2 * margin;
58
+ // ANSI helpers (only used when enabled)
59
+ // Use bright white for a strong “paper-like” background on dark terminals.
60
+ const RESET = '\x1b[0m';
61
+ const FG_BLACK = '\x1b[30m';
62
+ const FG_WHITE = '\x1b[97m';
63
+ const BG_BLACK = '\x1b[40m';
64
+ const BG_WHITE = '\x1b[107m';
65
+ for (let y = 0; y < height; y += 2) {
66
+ let row = '';
67
+ let currentStyle = '';
68
+ const setStyle = (style) => {
69
+ if (style !== currentStyle) {
70
+ if (currentStyle !== undefined)
71
+ row += RESET;
72
+ if (style !== undefined)
73
+ row += style;
74
+ currentStyle = style;
75
+ }
76
+ };
77
+ for (let x = 0; x < width; x++) {
78
+ const top = isDarkAt(x, y);
79
+ const bottom = isDarkAt(x, y + 1);
80
+ if (useAnsi === true) {
81
+ // Represent two stacked modules with a single `▀` character.
82
+ // Foreground corresponds to the top pixel; background to the bottom pixel.
83
+ // Always paint both halves to enforce a white quiet zone even on dark terminals.
84
+ const fg = top === true ? FG_BLACK : FG_WHITE;
85
+ const bg = bottom === true ? BG_BLACK : BG_WHITE;
86
+ setStyle(fg + bg);
87
+ row += '▀';
88
+ }
89
+ else {
90
+ // No ANSI: approximate using block characters.
91
+ let ch = ' ';
92
+ if (top === true && bottom === true)
93
+ ch = '█';
94
+ else if (top === true && bottom === false)
95
+ ch = '▀';
96
+ else if (top === false && bottom === true)
97
+ ch = '▄';
98
+ row += ch;
99
+ }
100
+ }
101
+ if (useAnsi === true) {
102
+ if (currentStyle !== undefined)
103
+ row += RESET;
104
+ }
105
+ lines.push(row);
106
+ }
107
+ console.log(lines.join('\n'));
108
+ };
109
+ //# sourceMappingURL=qr.js.map
package/dist/qr.js.map ADDED
@@ -0,0 +1 @@
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/string.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- export declare const lowercaseFirstChar: (str: string) => string;
2
- export declare const uppercaseFirstChar: (str: string) => string;
3
1
  /** Indents a string each line by `n` characters (default: spaces) */
4
2
  export declare const indent: (str: string, n: number, char?: string) => string;
5
3
  //# sourceMappingURL=string.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,WAA+C,CAAA;AAC7F,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,WAA+C,CAAA;AAE7F,qEAAqE;AACrE,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,EAAE,GAAG,MAAM,EAAE,aAAU,KAAG,MAI7C,CAAA"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,EAAE,GAAG,MAAM,EAAE,aAAU,KAAG,MAI7C,CAAA"}
package/dist/string.js CHANGED
@@ -1,5 +1,3 @@
1
- export const lowercaseFirstChar = (str) => str.charAt(0).toLowerCase() + str.slice(1);
2
- export const uppercaseFirstChar = (str) => str.charAt(0).toUpperCase() + str.slice(1);
3
1
  /** Indents a string each line by `n` characters (default: spaces) */
4
2
  export const indent = (str, n, char = ' ') => str
5
3
  .split('\n')
@@ -1 +1 @@
1
- {"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAE7F,qEAAqE;AACrE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,CAAS,EAAE,IAAI,GAAG,GAAG,EAAU,EAAE,CACnE,GAAG;KACA,KAAK,CAAC,IAAI,CAAC;KACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACpC,IAAI,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,CAAS,EAAE,IAAI,GAAG,GAAG,EAAU,EAAE,CACnE,GAAG;KACA,KAAK,CAAC,IAAI,CAAC;KACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACpC,IAAI,CAAC,IAAI,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,16 +1,31 @@
1
1
  {
2
2
  "name": "@livestore/utils",
3
- "version": "0.4.0-dev.9",
3
+ "version": "0.5.0-dev.0",
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",
12
23
  "default": "./dist/mod.js"
13
24
  },
25
+ "./browser": {
26
+ "types": "./dist/browser/mod.d.ts",
27
+ "default": "./dist/browser/mod.js"
28
+ },
14
29
  "./cuid": {
15
30
  "types": "./dist/cuid/cuid.node.d.ts",
16
31
  "browser": "./dist/cuid/cuid.browser.js",
@@ -22,8 +37,12 @@
22
37
  "default": "./dist/nanoid/index.js"
23
38
  },
24
39
  "./effect": {
25
- "types": "./dist/effect/index.d.ts",
26
- "default": "./dist/effect/index.js"
40
+ "types": "./dist/effect/mod.d.ts",
41
+ "default": "./dist/effect/mod.js"
42
+ },
43
+ "./effect/browser": {
44
+ "types": "./dist/browser/mod.d.ts",
45
+ "default": "./dist/browser/mod.js"
27
46
  },
28
47
  "./node": {
29
48
  "types": "./dist/node/mod.d.ts",
@@ -34,67 +53,54 @@
34
53
  "default": "./dist/bun/mod.js"
35
54
  }
36
55
  },
56
+ "publishConfig": {
57
+ "access": "public"
58
+ },
37
59
  "dependencies": {
38
- "@standard-schema/spec": "1.0.0",
39
- "nanoid": "5.1.5",
40
- "pretty-bytes": "7.0.1"
60
+ "@effect/platform-node": "4.0.0-rc.111",
61
+ "@standard-schema/spec": "1.1.0",
62
+ "nanoid": "5.0.9",
63
+ "pretty-bytes": "7.0.1",
64
+ "qrcode-generator": "2.0.4"
41
65
  },
42
66
  "devDependencies": {
43
- "@effect/ai": "^0.28.0",
44
- "@effect/cli": "^0.70.0",
45
- "@effect/cluster": "^0.49.0",
46
- "@effect/experimental": "^0.55.0",
47
- "@effect/opentelemetry": "0.57.0",
48
- "@effect/platform": "^0.91.1",
49
- "@effect/platform-browser": "^0.71.0",
50
- "@effect/platform-bun": "^0.80.0",
51
- "@effect/platform-node": "^0.97.0",
52
- "@effect/printer": "^0.45.0",
53
- "@effect/printer-ansi": "^0.45.0",
54
- "@effect/rpc": "^0.70.0",
55
- "@effect/sql": "^0.45.0",
56
- "@effect/typeclass": "^0.36.0",
57
- "@effect/vitest": "^0.25.1",
58
- "@effect/workflow": "^0.10.0",
67
+ "@effect/opentelemetry": "4.0.0-rc.111",
68
+ "@effect/platform-browser": "4.0.0-rc.111",
69
+ "@effect/platform-bun": "4.0.0-rc.111",
70
+ "@effect/platform-node": "4.0.0-rc.111",
71
+ "@effect/platform-node-shared": "4.0.0-rc.111",
72
+ "@effect/vitest": "4.0.0-rc.111",
59
73
  "@opentelemetry/api": "1.9.0",
60
- "@opentelemetry/resources": "^2.0.1",
61
- "@types/bun": "^1.2.21",
62
- "@types/jsdom": "^21.1.7",
63
- "@types/node": "24.5.2",
64
- "@types/web": "^0.0.264",
65
- "effect": "3.17.14",
66
- "jsdom": "^26.1.0",
67
- "vitest": "3.2.4"
74
+ "@opentelemetry/resources": "2.2.0",
75
+ "@standard-schema/spec": "1.1.0",
76
+ "@types/bun": "1.3.10",
77
+ "@types/jsdom": "21.1.7",
78
+ "@types/node": "25.3.3",
79
+ "@types/web": "0.0.264",
80
+ "effect": "4.0.0-rc.111",
81
+ "esbuild": "0.28.0",
82
+ "jsdom": "26.1.0",
83
+ "vitest": "4.1.9"
68
84
  },
69
- "files": [
70
- "package.json",
71
- "src",
72
- "dist"
73
- ],
74
- "license": "Apache-2.0",
75
85
  "peerDependencies": {
76
- "@effect/ai": "^0.28.0",
77
- "@effect/cli": "^0.70.0",
78
- "@effect/cluster": "^0.49.0",
79
- "@effect/experimental": "^0.55.0",
80
- "@effect/opentelemetry": "^0.57.0",
81
- "@effect/platform": "^0.91.1",
82
- "@effect/platform-browser": "^0.71.0",
83
- "@effect/platform-bun": "^0.80.0",
84
- "@effect/platform-node": "^0.97.0",
85
- "@effect/printer": "^0.45.0",
86
- "@effect/printer-ansi": "^0.45.0",
87
- "@effect/rpc": "^0.70.0",
88
- "@effect/sql": "^0.45.0",
89
- "@effect/typeclass": "^0.36.0",
86
+ "@effect/opentelemetry": "^4.0.0-rc.111",
87
+ "@effect/platform-browser": "^4.0.0-rc.111",
88
+ "@effect/platform-bun": "^4.0.0-rc.111",
89
+ "@effect/platform-node": "^4.0.0-rc.111",
90
+ "@effect/platform-node-shared": "^4.0.0-rc.111",
91
+ "@effect/vitest": "^4.0.0-rc.111",
90
92
  "@opentelemetry/api": "^1.9.0",
91
- "@opentelemetry/resources": "^2.0.1",
92
- "effect": "^3.17.14"
93
+ "@opentelemetry/resources": "^2.2.0",
94
+ "@standard-schema/spec": "^1.1.0",
95
+ "effect": "^4.0.0-rc.111"
93
96
  },
94
- "publishConfig": {
95
- "access": "public"
97
+ "$genie": {
98
+ "source": "package.json.genie.ts",
99
+ "warning": "DO NOT EDIT - changes will be overwritten",
100
+ "workspaceClosureDirs": [
101
+ "packages/@livestore/utils"
102
+ ]
96
103
  },
97
- "react-native": "./dist/index.js",
98
104
  "scripts": {
99
105
  "test": "vitest"
100
106
  }
@@ -0,0 +1,20 @@
1
+ import { INVALID_SPAN_CONTEXT, isSpanContextValid, ROOT_CONTEXT } from '@opentelemetry/api'
2
+ import { describe, expect, it } from 'vitest'
3
+
4
+ import { makeNoopSpan, makeNoopTracer } from './NoopTracer.ts'
5
+
6
+ describe('NoopTracer', () => {
7
+ it('returns the canonical invalid OpenTelemetry span context', () => {
8
+ const spanContext = makeNoopSpan().spanContext()
9
+
10
+ expect(spanContext).toBe(INVALID_SPAN_CONTEXT)
11
+ expect(isSpanContextValid(spanContext)).toBe(false)
12
+ })
13
+
14
+ it('runs active-span callbacks for every tracer overload', () => {
15
+ const tracer = makeNoopTracer()
16
+ expect(tracer.startActiveSpan('two arguments', () => 'two')).toBe('two')
17
+ expect(tracer.startActiveSpan('three arguments', {}, () => 'three')).toBe('three')
18
+ expect(tracer.startActiveSpan('four arguments', {}, ROOT_CONTEXT, () => 'four')).toBe('four')
19
+ })
20
+ })
package/src/NoopTracer.ts CHANGED
@@ -1,11 +1,7 @@
1
- /** biome-ignore-all lint/complexity/noArguments: using arguments is fine here */
2
- import type * as otel from '@opentelemetry/api'
1
+ import { INVALID_SPAN_CONTEXT, type Context, type Span, type SpanOptions, type Tracer } from '@opentelemetry/api'
3
2
 
4
3
  export const makeNoopSpan = () => {
5
- const performanceStartTime: DOMHighResTimeStamp = performance.now()
6
-
7
- const span = {
8
- _performanceStartTime: performanceStartTime,
4
+ const spanImpl = {
9
5
  setAttribute: () => null,
10
6
  setAttributes: () => null,
11
7
  addEvent: () => null,
@@ -13,61 +9,56 @@ export const makeNoopSpan = () => {
13
9
  setStatus: () => null,
14
10
  updateName: () => null,
15
11
  recordException: () => null,
16
- end: () => {
17
- const endTime: DOMHighResTimeStamp = performance.now()
18
- const duration = endTime - performanceStartTime
19
- const durationSecs = duration / 1000
20
- const durationRestNs = (duration % 1000) * 1_000_000
21
- ;(span as any)._duration = [durationSecs, durationRestNs]
22
- },
23
- spanContext: () => {
24
- return { traceId: 'livestore-noop-trace-id', spanId: 'livestore-noop-span-id' }
25
- },
26
- _duration: [0, 0],
27
- } as unknown as otel.Span
12
+ end: () => null,
13
+ spanContext: () => INVALID_SPAN_CONTEXT,
14
+ }
28
15
 
29
- return span
16
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- noop otel.Span implementation; only implements the subset needed by LiveStore
17
+ return spanImpl as unknown as Span
30
18
  }
31
19
 
32
20
  export const makeNoopTracer = () => {
33
- return new NoopTracer() as unknown as otel.Tracer
21
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- noop otel.Tracer implementation; only implements the subset needed by LiveStore
22
+ return new NoopTracer() as unknown as Tracer
34
23
  }
35
24
 
36
25
  export class NoopTracer {
37
26
  startSpan = () => makeNoopSpan()
38
27
 
39
- startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(name: string, fn: F): ReturnType<F>
40
- startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(
41
- name: string,
42
- opts: otel.SpanOptions,
43
- fn: F,
44
- ): ReturnType<F>
45
- startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(
28
+ startActiveSpan<F extends (span: Span) => ReturnType<F>>(name: string, fn: F): ReturnType<F>
29
+ startActiveSpan<F extends (span: Span) => ReturnType<F>>(name: string, opts: SpanOptions, fn: F): ReturnType<F>
30
+ startActiveSpan<F extends (span: Span) => ReturnType<F>>(
46
31
  name: string,
47
- opts: otel.SpanOptions,
48
- ctx: otel.Context,
32
+ opts: SpanOptions,
33
+ ctx: Context,
49
34
  fn: F,
50
35
  ): ReturnType<F>
51
- startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(
36
+ startActiveSpan<F extends (span: Span) => ReturnType<F>>(
52
37
  _name: string,
53
- arg2?: F | otel.SpanOptions,
54
- arg3?: F | otel.Context,
38
+ arg2?: F | SpanOptions,
39
+ arg3?: F | Context,
55
40
  arg4?: F,
56
41
  ): ReturnType<F> | undefined {
57
- let _opts: otel.SpanOptions | undefined
58
- let _ctx: otel.Context | undefined
42
+ let _opts: SpanOptions | undefined
43
+ let _ctx: Context | undefined
59
44
  let fn: F
60
45
 
61
46
  if (arguments.length < 2) {
62
47
  return
63
48
  } else if (arguments.length === 2) {
49
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 2 args, arg2 is the callback
64
50
  fn = arg2 as F
65
51
  } else if (arguments.length === 3) {
66
- _opts = arg2 as otel.SpanOptions | undefined
52
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 3 args, arg2 is SpanOptions
53
+ _opts = arg2 as SpanOptions | undefined
54
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 3 args, arg3 is the callback
67
55
  fn = arg3 as F
68
56
  } else {
69
- _opts = arg2 as otel.SpanOptions | undefined
70
- _ctx = arg3 as otel.Context | undefined
57
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 4 args, arg2 is SpanOptions
58
+ _opts = arg2 as SpanOptions | undefined
59
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 4 args, arg3 is Context
60
+ _ctx = arg3 as Context | undefined
61
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 4 args, arg4 is the callback
71
62
  fn = arg4 as F
72
63
  }
73
64
 
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