@livestore/utils 0.4.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 (265) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/Deferred.d.ts.map +1 -1
  3. package/dist/NoopTracer.d.ts +7 -8
  4. package/dist/NoopTracer.d.ts.map +1 -1
  5. package/dist/NoopTracer.js +3 -18
  6. package/dist/NoopTracer.js.map +1 -1
  7. package/dist/NoopTracer.test.d.ts +2 -0
  8. package/dist/NoopTracer.test.d.ts.map +1 -0
  9. package/dist/NoopTracer.test.js +29 -0
  10. package/dist/NoopTracer.test.js.map +1 -0
  11. package/dist/base64.d.ts.map +1 -1
  12. package/dist/binary.d.ts.map +1 -1
  13. package/dist/browser/Opfs/Opfs.d.ts +179 -29
  14. package/dist/browser/Opfs/Opfs.d.ts.map +1 -1
  15. package/dist/browser/Opfs/Opfs.js +134 -309
  16. package/dist/browser/Opfs/Opfs.js.map +1 -1
  17. package/dist/browser/Opfs/debug-utils.d.ts.map +1 -1
  18. package/dist/browser/Opfs/debug-utils.js +6 -5
  19. package/dist/browser/Opfs/debug-utils.js.map +1 -1
  20. package/dist/browser/Opfs/mod.js +3 -3
  21. package/dist/browser/Opfs/utils.d.ts +8 -8
  22. package/dist/browser/Opfs/utils.d.ts.map +1 -1
  23. package/dist/browser/Opfs/utils.js +35 -26
  24. package/dist/browser/Opfs/utils.js.map +1 -1
  25. package/dist/browser/QuotaExceededError.d.ts +10 -9
  26. package/dist/browser/QuotaExceededError.d.ts.map +1 -1
  27. package/dist/browser/WebChannelBrowser.d.ts.map +1 -1
  28. package/dist/browser/WebChannelBrowser.js +25 -14
  29. package/dist/browser/WebChannelBrowser.js.map +1 -1
  30. package/dist/browser/WebError.d.ts +55 -87
  31. package/dist/browser/WebError.d.ts.map +1 -1
  32. package/dist/browser/WebError.js +92 -85
  33. package/dist/browser/WebError.js.map +1 -1
  34. package/dist/browser/WebError.test.js +7 -7
  35. package/dist/browser/WebError.test.js.map +1 -1
  36. package/dist/browser/WebLock.d.ts +1 -1
  37. package/dist/browser/WebLock.d.ts.map +1 -1
  38. package/dist/browser/WebLock.js +13 -13
  39. package/dist/browser/WebLock.js.map +1 -1
  40. package/dist/browser/mod.js +6 -6
  41. package/dist/cuid/cuid.browser.d.ts.map +1 -1
  42. package/dist/cuid/cuid.node.d.ts.map +1 -1
  43. package/dist/effect/Debug.d.ts +4 -7
  44. package/dist/effect/Debug.d.ts.map +1 -1
  45. package/dist/effect/Debug.js +34 -40
  46. package/dist/effect/Debug.js.map +1 -1
  47. package/dist/effect/Effect.d.ts +31 -22
  48. package/dist/effect/Effect.d.ts.map +1 -1
  49. package/dist/effect/Effect.js +54 -50
  50. package/dist/effect/Effect.js.map +1 -1
  51. package/dist/effect/Effect.test.d.ts +2 -0
  52. package/dist/effect/Effect.test.d.ts.map +1 -0
  53. package/dist/effect/Effect.test.js +72 -0
  54. package/dist/effect/Effect.test.js.map +1 -0
  55. package/dist/effect/Error.d.ts +4 -6
  56. package/dist/effect/Error.d.ts.map +1 -1
  57. package/dist/effect/Logger.d.ts +0 -6
  58. package/dist/effect/Logger.d.ts.map +1 -1
  59. package/dist/effect/Logger.js +0 -32
  60. package/dist/effect/Logger.js.map +1 -1
  61. package/dist/effect/OtelTracer.d.ts +1 -1
  62. package/dist/effect/OtelTracer.d.ts.map +1 -1
  63. package/dist/effect/OtelTracer.js +2 -3
  64. package/dist/effect/OtelTracer.js.map +1 -1
  65. package/dist/effect/RpcClient.d.ts +9 -9
  66. package/dist/effect/RpcClient.d.ts.map +1 -1
  67. package/dist/effect/RpcClient.js +113 -84
  68. package/dist/effect/RpcClient.js.map +1 -1
  69. package/dist/effect/Schedule.d.ts +1 -1
  70. package/dist/effect/Schedule.d.ts.map +1 -1
  71. package/dist/effect/Schedule.js +2 -2
  72. package/dist/effect/Schedule.js.map +1 -1
  73. package/dist/effect/Schema/debug-diff.d.ts +1 -1
  74. package/dist/effect/Schema/debug-diff.d.ts.map +1 -1
  75. package/dist/effect/Schema/debug-diff.js +5 -7
  76. package/dist/effect/Schema/debug-diff.js.map +1 -1
  77. package/dist/effect/Schema/debug-diff.test.js +8 -5
  78. package/dist/effect/Schema/debug-diff.test.js.map +1 -1
  79. package/dist/effect/Schema/index.d.ts +28 -20
  80. package/dist/effect/Schema/index.d.ts.map +1 -1
  81. package/dist/effect/Schema/index.js +56 -29
  82. package/dist/effect/Schema/index.js.map +1 -1
  83. package/dist/effect/Stream.d.ts +13 -5
  84. package/dist/effect/Stream.d.ts.map +1 -1
  85. package/dist/effect/Stream.js +19 -12
  86. package/dist/effect/Stream.js.map +1 -1
  87. package/dist/effect/Stream.test.js +10 -10
  88. package/dist/effect/Stream.test.js.map +1 -1
  89. package/dist/effect/Subscribable.d.ts +9 -3
  90. package/dist/effect/Subscribable.d.ts.map +1 -1
  91. package/dist/effect/Subscribable.js +20 -35
  92. package/dist/effect/Subscribable.js.map +1 -1
  93. package/dist/effect/SubscriptionRef.d.ts +5 -6
  94. package/dist/effect/SubscriptionRef.d.ts.map +1 -1
  95. package/dist/effect/SubscriptionRef.js +2 -3
  96. package/dist/effect/SubscriptionRef.js.map +1 -1
  97. package/dist/effect/TaskTracing.d.ts +1 -1
  98. package/dist/effect/TaskTracing.d.ts.map +1 -1
  99. package/dist/effect/TaskTracing.js +12 -16
  100. package/dist/effect/TaskTracing.js.map +1 -1
  101. package/dist/effect/WebChannel/WebChannel.d.ts +7 -7
  102. package/dist/effect/WebChannel/WebChannel.d.ts.map +1 -1
  103. package/dist/effect/WebChannel/WebChannel.js +69 -48
  104. package/dist/effect/WebChannel/WebChannel.js.map +1 -1
  105. package/dist/effect/WebChannel/WebChannel.test.js +16 -16
  106. package/dist/effect/WebChannel/WebChannel.test.js.map +1 -1
  107. package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts.map +1 -1
  108. package/dist/effect/WebChannel/broadcastChannelWithAck.js +18 -11
  109. package/dist/effect/WebChannel/broadcastChannelWithAck.js.map +1 -1
  110. package/dist/effect/WebChannel/common.d.ts +16 -17
  111. package/dist/effect/WebChannel/common.d.ts.map +1 -1
  112. package/dist/effect/WebChannel/common.js +6 -6
  113. package/dist/effect/WebChannel/common.js.map +1 -1
  114. package/dist/effect/WebChannel/mod.js +3 -3
  115. package/dist/effect/WebSocket.d.ts +4 -6
  116. package/dist/effect/WebSocket.d.ts.map +1 -1
  117. package/dist/effect/WebSocket.js +4 -4
  118. package/dist/effect/WebSocket.js.map +1 -1
  119. package/dist/effect/WebSocket.test.js +3 -3
  120. package/dist/effect/WebSocket.test.js.map +1 -1
  121. package/dist/effect/mod.browser-build.test.d.ts +2 -0
  122. package/dist/effect/mod.browser-build.test.d.ts.map +1 -0
  123. package/dist/effect/mod.browser-build.test.js +18 -0
  124. package/dist/effect/mod.browser-build.test.js.map +1 -0
  125. package/dist/effect/mod.d.ts +13 -15
  126. package/dist/effect/mod.d.ts.map +1 -1
  127. package/dist/effect/mod.js +28 -33
  128. package/dist/effect/mod.js.map +1 -1
  129. package/dist/effect/spanEvent.d.ts.map +1 -1
  130. package/dist/effect/spanEvent.js +2 -2
  131. package/dist/effect/spanEvent.js.map +1 -1
  132. package/dist/effect/spanEvent.test.js +11 -14
  133. package/dist/effect/spanEvent.test.js.map +1 -1
  134. package/dist/env.d.ts.map +1 -1
  135. package/dist/env.js +1 -1
  136. package/dist/env.js.map +1 -1
  137. package/dist/fast-deep-equal.d.ts.map +1 -1
  138. package/dist/fast-deep-equal.js +1 -2
  139. package/dist/fast-deep-equal.js.map +1 -1
  140. package/dist/misc.d.ts.map +1 -1
  141. package/dist/misc.js +3 -3
  142. package/dist/misc.js.map +1 -1
  143. package/dist/mod.d.ts +1 -36
  144. package/dist/mod.d.ts.map +1 -1
  145. package/dist/mod.js +19 -27
  146. package/dist/mod.js.map +1 -1
  147. package/dist/node/mod.d.ts +11 -36
  148. package/dist/node/mod.d.ts.map +1 -1
  149. package/dist/node/mod.js +17 -42
  150. package/dist/node/mod.js.map +1 -1
  151. package/dist/object/index.d.ts +0 -9
  152. package/dist/object/index.d.ts.map +1 -1
  153. package/dist/object/index.js +1 -10
  154. package/dist/object/index.js.map +1 -1
  155. package/dist/object/stringify-object.d.ts.map +1 -1
  156. package/dist/object/stringify-object.test.js +1 -1
  157. package/dist/promise.d.ts.map +1 -1
  158. package/dist/qr.d.ts.map +1 -1
  159. package/dist/set.d.ts.map +1 -1
  160. package/dist/string.d.ts +0 -2
  161. package/dist/string.d.ts.map +1 -1
  162. package/dist/string.js +0 -2
  163. package/dist/string.js.map +1 -1
  164. package/package.json +38 -56
  165. package/src/NoopTracer.test.ts +36 -0
  166. package/src/NoopTracer.ts +18 -41
  167. package/src/browser/Opfs/Opfs.ts +304 -277
  168. package/src/browser/Opfs/debug-utils.ts +7 -6
  169. package/src/browser/Opfs/utils.ts +36 -26
  170. package/src/browser/QuotaExceededError.ts +13 -10
  171. package/src/browser/WebChannelBrowser.ts +25 -11
  172. package/src/browser/WebError.test.ts +6 -6
  173. package/src/browser/WebError.ts +107 -133
  174. package/src/browser/WebLock.ts +13 -14
  175. package/src/effect/Debug.ts +69 -78
  176. package/src/effect/Effect.test.ts +117 -0
  177. package/src/effect/Effect.ts +86 -73
  178. package/src/effect/Logger.ts +0 -48
  179. package/src/effect/OtelTracer.ts +2 -3
  180. package/src/effect/RpcClient.ts +126 -93
  181. package/src/effect/Schedule.ts +4 -5
  182. package/src/effect/Schema/debug-diff.test.ts +6 -6
  183. package/src/effect/Schema/debug-diff.ts +6 -8
  184. package/src/effect/Schema/index.ts +122 -61
  185. package/src/effect/Stream.test.ts +9 -9
  186. package/src/effect/Stream.ts +23 -16
  187. package/src/effect/Subscribable.ts +31 -42
  188. package/src/effect/SubscriptionRef.ts +8 -12
  189. package/src/effect/TaskTracing.ts +13 -16
  190. package/src/effect/WebChannel/WebChannel.test.ts +23 -23
  191. package/src/effect/WebChannel/WebChannel.ts +87 -56
  192. package/src/effect/WebChannel/broadcastChannelWithAck.ts +21 -11
  193. package/src/effect/WebChannel/common.ts +14 -15
  194. package/src/effect/WebSocket.test.ts +2 -2
  195. package/src/effect/WebSocket.ts +9 -6
  196. package/src/effect/mod.browser-build.test.ts +19 -0
  197. package/src/effect/mod.ts +37 -69
  198. package/src/effect/spanEvent.test.ts +10 -13
  199. package/src/effect/spanEvent.ts +5 -3
  200. package/src/fast-deep-equal.ts +4 -5
  201. package/src/misc.ts +3 -3
  202. package/src/mod.ts +5 -41
  203. package/src/node/mod.ts +20 -46
  204. package/src/object/index.ts +0 -24
  205. package/src/string.ts +0 -3
  206. package/dist/effect/BucketQueue.d.ts +0 -20
  207. package/dist/effect/BucketQueue.d.ts.map +0 -1
  208. package/dist/effect/BucketQueue.js +0 -34
  209. package/dist/effect/BucketQueue.js.map +0 -1
  210. package/dist/effect/Scheduler.d.ts +0 -4
  211. package/dist/effect/Scheduler.d.ts.map +0 -1
  212. package/dist/effect/Scheduler.js +0 -9
  213. package/dist/effect/Scheduler.js.map +0 -1
  214. package/dist/effect/ServiceContext.d.ts +0 -37
  215. package/dist/effect/ServiceContext.d.ts.map +0 -1
  216. package/dist/effect/ServiceContext.js +0 -55
  217. package/dist/effect/ServiceContext.js.map +0 -1
  218. package/dist/guards.d.ts +0 -20
  219. package/dist/guards.d.ts.map +0 -1
  220. package/dist/guards.js +0 -20
  221. package/dist/guards.js.map +0 -1
  222. package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts +0 -4
  223. package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts.map +0 -1
  224. package/dist/node/ChildProcessRunner/ChildProcessRunner.js +0 -128
  225. package/dist/node/ChildProcessRunner/ChildProcessRunner.js.map +0 -1
  226. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts +0 -10
  227. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts.map +0 -1
  228. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js +0 -217
  229. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js.map +0 -1
  230. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts +0 -84
  231. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts.map +0 -1
  232. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js +0 -68
  233. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js.map +0 -1
  234. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts +0 -2
  235. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts.map +0 -1
  236. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js +0 -52
  237. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js.map +0 -1
  238. package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts +0 -23
  239. package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts.map +0 -1
  240. package/dist/node/ChildProcessRunner/ChildProcessWorker.js +0 -138
  241. package/dist/node/ChildProcessRunner/ChildProcessWorker.js.map +0 -1
  242. package/dist/object/omit.d.ts +0 -3
  243. package/dist/object/omit.d.ts.map +0 -1
  244. package/dist/object/omit.js +0 -14
  245. package/dist/object/omit.js.map +0 -1
  246. package/dist/object/pick.d.ts +0 -14
  247. package/dist/object/pick.d.ts.map +0 -1
  248. package/dist/object/pick.js +0 -17
  249. package/dist/object/pick.js.map +0 -1
  250. package/dist/time.d.ts +0 -12
  251. package/dist/time.d.ts.map +0 -1
  252. package/dist/time.js +0 -22
  253. package/dist/time.js.map +0 -1
  254. package/src/effect/BucketQueue.ts +0 -49
  255. package/src/effect/Scheduler.ts +0 -13
  256. package/src/effect/ServiceContext.ts +0 -108
  257. package/src/guards.ts +0 -23
  258. package/src/node/ChildProcessRunner/ChildProcessRunner.ts +0 -148
  259. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.ts +0 -311
  260. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/schema.ts +0 -78
  261. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.ts +0 -65
  262. package/src/node/ChildProcessRunner/ChildProcessWorker.ts +0 -169
  263. package/src/object/omit.ts +0 -17
  264. package/src/object/pick.ts +0 -27
  265. package/src/time.ts +0 -25
package/package.json CHANGED
@@ -1,22 +1,23 @@
1
1
  {
2
- "name": "@livestore/utils",
3
- "version": "0.4.0",
4
- "license": "Apache-2.0",
5
- "repository": {
6
- "type": "git",
7
- "url": "git+https://github.com/livestorejs/livestore.git"
2
+ "$genie": {
3
+ "source": "package.json.genie.ts",
4
+ "warning": "DO NOT EDIT - changes will be overwritten",
5
+ "workspaceClosureDirs": [
6
+ "packages/@livestore/utils"
7
+ ]
8
8
  },
9
- "files": [
10
- "dist",
11
- "package.json",
12
- "src"
13
- ],
9
+ "name": "@livestore/utils",
10
+ "version": "0.5.0-dev.1",
14
11
  "type": "module",
15
12
  "sideEffects": [
16
13
  "./src/global.ts",
17
14
  "./dist/global.js"
18
15
  ],
19
- "react-native": "./dist/index.js",
16
+ "license": "Apache-2.0",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/livestorejs/livestore.git"
20
+ },
20
21
  "exports": {
21
22
  ".": {
22
23
  "types": "./dist/mod.d.ts",
@@ -53,33 +54,25 @@
53
54
  "default": "./dist/bun/mod.js"
54
55
  }
55
56
  },
56
- "publishConfig": {
57
- "access": "public"
58
- },
57
+ "files": [
58
+ "dist",
59
+ "package.json",
60
+ "src"
61
+ ],
59
62
  "dependencies": {
60
- "@effect/platform-node": "0.106.0",
63
+ "@effect/platform-node": "4.0.3",
61
64
  "@standard-schema/spec": "1.1.0",
62
65
  "nanoid": "5.0.9",
63
66
  "pretty-bytes": "7.0.1",
64
67
  "qrcode-generator": "2.0.4"
65
68
  },
66
69
  "devDependencies": {
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",
70
+ "@effect/opentelemetry": "4.0.3",
71
+ "@effect/platform-browser": "4.0.3",
72
+ "@effect/platform-bun": "4.0.3",
73
+ "@effect/platform-node": "4.0.3",
74
+ "@effect/platform-node-shared": "4.0.3",
75
+ "@effect/vitest": "4.0.3",
83
76
  "@opentelemetry/api": "1.9.0",
84
77
  "@opentelemetry/resources": "2.2.0",
85
78
  "@standard-schema/spec": "1.1.0",
@@ -87,38 +80,27 @@
87
80
  "@types/jsdom": "21.1.7",
88
81
  "@types/node": "25.3.3",
89
82
  "@types/web": "0.0.264",
90
- "effect": "3.21.2",
83
+ "effect": "4.0.3",
84
+ "esbuild": "0.28.0",
91
85
  "jsdom": "26.1.0",
92
- "vitest": "3.2.4"
86
+ "vitest": "4.1.9"
93
87
  },
94
88
  "peerDependencies": {
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",
89
+ "@effect/opentelemetry": "^4.0.3",
90
+ "@effect/platform-browser": "^4.0.3",
91
+ "@effect/platform-bun": "^4.0.3",
92
+ "@effect/platform-node": "^4.0.3",
93
+ "@effect/platform-node-shared": "^4.0.3",
94
+ "@effect/vitest": "^4.0.3",
110
95
  "@opentelemetry/api": "^1.9.0",
111
96
  "@opentelemetry/resources": "^2.2.0",
112
97
  "@standard-schema/spec": "^1.1.0",
113
- "effect": "^3.21.2"
98
+ "effect": "^4.0.3"
114
99
  },
115
- "$genie": {
116
- "source": "package.json.genie.ts",
117
- "warning": "DO NOT EDIT - changes will be overwritten",
118
- "workspaceClosureDirs": [
119
- "packages/@livestore/utils"
120
- ]
100
+ "publishConfig": {
101
+ "access": "public"
121
102
  },
103
+ "react-native": "./dist/index.js",
122
104
  "scripts": {
123
105
  "test": "vitest"
124
106
  }
@@ -0,0 +1,36 @@
1
+ import { INVALID_SPAN_CONTEXT, isSpanContextValid, ROOT_CONTEXT } from '@opentelemetry/api'
2
+ import { Effect, FileSystem, type Layer } from 'effect'
3
+ import { describe, expect, it } from 'vitest'
4
+
5
+ import { NodeFileSystemWithWatch, NodeRecursiveWatchLayer } from '@livestore/utils/node'
6
+
7
+ import { makeNoopSpan, makeNoopTracer } from './NoopTracer.ts'
8
+
9
+ describe('NoopTracer', () => {
10
+ it('returns the canonical invalid OpenTelemetry span context', () => {
11
+ const spanContext = makeNoopSpan().spanContext()
12
+
13
+ expect(spanContext).toBe(INVALID_SPAN_CONTEXT)
14
+ expect(isSpanContextValid(spanContext)).toBe(false)
15
+ })
16
+
17
+ it('runs active-span callbacks for every tracer overload', () => {
18
+ const tracer = makeNoopTracer()
19
+ expect(tracer.startActiveSpan('two arguments', () => 'two')).toBe('two')
20
+ expect(tracer.startActiveSpan('three arguments', {}, () => 'three')).toBe('three')
21
+ expect(tracer.startActiveSpan('four arguments', {}, ROOT_CONTEXT, () => 'four')).toBe('four')
22
+ })
23
+ })
24
+
25
+ describe('@livestore/utils/node recursive watch compatibility', () => {
26
+ it('keeps the public layers type-compatible and runnable', async () => {
27
+ const watchLayer: Layer.Layer<FileSystem.WatchBackend> = NodeRecursiveWatchLayer
28
+ const fileSystemLayer: Layer.Layer<FileSystem.FileSystem> = NodeFileSystemWithWatch
29
+
30
+ const watchBackend = await Effect.runPromise(FileSystem.WatchBackend.pipe(Effect.provide(watchLayer)))
31
+ const fileSystem = await Effect.runPromise(FileSystem.FileSystem.pipe(Effect.provide(fileSystemLayer)))
32
+
33
+ expect(typeof watchBackend.register).toBe('function')
34
+ expect(typeof fileSystem.watch).toBe('function')
35
+ })
36
+ })
package/src/NoopTracer.ts CHANGED
@@ -1,14 +1,7 @@
1
- /** biome-ignore-all lint/complexity/noArguments: using arguments is fine here */
2
-
3
- import type * as otel from '@opentelemetry/api'
4
-
5
- import { cuid } from '@livestore/utils/cuid'
1
+ import { INVALID_SPAN_CONTEXT, type Context, type Span, type SpanOptions, type Tracer } from '@opentelemetry/api'
6
2
 
7
3
  export const makeNoopSpan = () => {
8
- const performanceStartTime = performance.now()
9
-
10
4
  const spanImpl = {
11
- _performanceStartTime: performanceStartTime,
12
5
  setAttribute: () => null,
13
6
  setAttributes: () => null,
14
7
  addEvent: () => null,
@@ -16,54 +9,38 @@ export const makeNoopSpan = () => {
16
9
  setStatus: () => null,
17
10
  updateName: () => null,
18
11
  recordException: () => null,
19
- end: () => {
20
- const endTime = performance.now()
21
- const duration = endTime - performanceStartTime
22
- const durationSecs = duration / 1000
23
- const durationRestNs = (duration % 1000) * 1_000_000
24
- spanImpl._duration = [durationSecs, durationRestNs] as [number, number]
25
- },
26
- spanContext: () => {
27
- return {
28
- traceId: `livestore-noop-trace-id${cuid()}`,
29
- spanId: `livestore-noop-span-id${cuid()}`,
30
- }
31
- },
32
- _duration: [0, 0] as [number, number],
12
+ end: () => null,
13
+ spanContext: () => INVALID_SPAN_CONTEXT,
33
14
  }
34
15
 
35
16
  // 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
17
+ return spanImpl as unknown as Span
37
18
  }
38
19
 
39
20
  export const makeNoopTracer = () => {
40
21
  // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- noop otel.Tracer implementation; only implements the subset needed by LiveStore
41
- return new NoopTracer() as unknown as otel.Tracer
22
+ return new NoopTracer() as unknown as Tracer
42
23
  }
43
24
 
44
25
  export class NoopTracer {
45
26
  startSpan = () => makeNoopSpan()
46
27
 
47
- startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(name: string, fn: F): ReturnType<F>
48
- startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(
49
- name: string,
50
- opts: otel.SpanOptions,
51
- fn: F,
52
- ): ReturnType<F>
53
- 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>>(
54
31
  name: string,
55
- opts: otel.SpanOptions,
56
- ctx: otel.Context,
32
+ opts: SpanOptions,
33
+ ctx: Context,
57
34
  fn: F,
58
35
  ): ReturnType<F>
59
- startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(
36
+ startActiveSpan<F extends (span: Span) => ReturnType<F>>(
60
37
  _name: string,
61
- arg2?: F | otel.SpanOptions,
62
- arg3?: F | otel.Context,
38
+ arg2?: F | SpanOptions,
39
+ arg3?: F | Context,
63
40
  arg4?: F,
64
41
  ): ReturnType<F> | undefined {
65
- let _opts: otel.SpanOptions | undefined
66
- let _ctx: otel.Context | undefined
42
+ let _opts: SpanOptions | undefined
43
+ let _ctx: Context | undefined
67
44
  let fn: F
68
45
 
69
46
  if (arguments.length < 2) {
@@ -73,14 +50,14 @@ export class NoopTracer {
73
50
  fn = arg2 as F
74
51
  } else if (arguments.length === 3) {
75
52
  // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 3 args, arg2 is SpanOptions
76
- _opts = arg2 as otel.SpanOptions | undefined
53
+ _opts = arg2 as SpanOptions | undefined
77
54
  // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 3 args, arg3 is the callback
78
55
  fn = arg3 as F
79
56
  } else {
80
57
  // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 4 args, arg2 is SpanOptions
81
- _opts = arg2 as otel.SpanOptions | undefined
58
+ _opts = arg2 as SpanOptions | undefined
82
59
  // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 4 args, arg3 is Context
83
- _ctx = arg3 as otel.Context | undefined
60
+ _ctx = arg3 as Context | undefined
84
61
  // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- arguments-based overload dispatch: with 4 args, arg4 is the callback
85
62
  fn = arg4 as F
86
63
  }