@livestore/utils 0.4.0 → 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 (247) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/NoopTracer.d.ts +7 -8
  3. package/dist/NoopTracer.d.ts.map +1 -1
  4. package/dist/NoopTracer.js +3 -18
  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/browser/Opfs/Opfs.d.ts +179 -29
  11. package/dist/browser/Opfs/Opfs.d.ts.map +1 -1
  12. package/dist/browser/Opfs/Opfs.js +132 -307
  13. package/dist/browser/Opfs/Opfs.js.map +1 -1
  14. package/dist/browser/Opfs/debug-utils.d.ts.map +1 -1
  15. package/dist/browser/Opfs/debug-utils.js +5 -4
  16. package/dist/browser/Opfs/debug-utils.js.map +1 -1
  17. package/dist/browser/Opfs/utils.d.ts +8 -8
  18. package/dist/browser/Opfs/utils.d.ts.map +1 -1
  19. package/dist/browser/Opfs/utils.js +35 -26
  20. package/dist/browser/Opfs/utils.js.map +1 -1
  21. package/dist/browser/QuotaExceededError.d.ts +10 -9
  22. package/dist/browser/QuotaExceededError.d.ts.map +1 -1
  23. package/dist/browser/WebChannelBrowser.d.ts.map +1 -1
  24. package/dist/browser/WebChannelBrowser.js +21 -10
  25. package/dist/browser/WebChannelBrowser.js.map +1 -1
  26. package/dist/browser/WebError.d.ts +54 -86
  27. package/dist/browser/WebError.d.ts.map +1 -1
  28. package/dist/browser/WebError.js +91 -84
  29. package/dist/browser/WebError.js.map +1 -1
  30. package/dist/browser/WebError.test.js +6 -6
  31. package/dist/browser/WebError.test.js.map +1 -1
  32. package/dist/browser/WebLock.d.ts.map +1 -1
  33. package/dist/browser/WebLock.js +13 -13
  34. package/dist/browser/WebLock.js.map +1 -1
  35. package/dist/effect/Debug.d.ts +4 -7
  36. package/dist/effect/Debug.d.ts.map +1 -1
  37. package/dist/effect/Debug.js +32 -36
  38. package/dist/effect/Debug.js.map +1 -1
  39. package/dist/effect/Effect.d.ts +31 -22
  40. package/dist/effect/Effect.d.ts.map +1 -1
  41. package/dist/effect/Effect.js +51 -47
  42. package/dist/effect/Effect.js.map +1 -1
  43. package/dist/effect/Effect.test.d.ts +2 -0
  44. package/dist/effect/Effect.test.d.ts.map +1 -0
  45. package/dist/effect/Effect.test.js +72 -0
  46. package/dist/effect/Effect.test.js.map +1 -0
  47. package/dist/effect/Error.d.ts +4 -6
  48. package/dist/effect/Error.d.ts.map +1 -1
  49. package/dist/effect/Logger.d.ts +0 -6
  50. package/dist/effect/Logger.d.ts.map +1 -1
  51. package/dist/effect/Logger.js +0 -32
  52. package/dist/effect/Logger.js.map +1 -1
  53. package/dist/effect/OtelTracer.d.ts +1 -1
  54. package/dist/effect/OtelTracer.d.ts.map +1 -1
  55. package/dist/effect/OtelTracer.js +2 -3
  56. package/dist/effect/OtelTracer.js.map +1 -1
  57. package/dist/effect/RpcClient.d.ts +7 -7
  58. package/dist/effect/RpcClient.d.ts.map +1 -1
  59. package/dist/effect/RpcClient.js +72 -52
  60. package/dist/effect/RpcClient.js.map +1 -1
  61. package/dist/effect/Schedule.d.ts +1 -1
  62. package/dist/effect/Schedule.d.ts.map +1 -1
  63. package/dist/effect/Schedule.js +2 -2
  64. package/dist/effect/Schedule.js.map +1 -1
  65. package/dist/effect/Schema/debug-diff.d.ts +1 -1
  66. package/dist/effect/Schema/debug-diff.d.ts.map +1 -1
  67. package/dist/effect/Schema/debug-diff.js +5 -7
  68. package/dist/effect/Schema/debug-diff.js.map +1 -1
  69. package/dist/effect/Schema/debug-diff.test.js +7 -4
  70. package/dist/effect/Schema/debug-diff.test.js.map +1 -1
  71. package/dist/effect/Schema/index.d.ts +28 -20
  72. package/dist/effect/Schema/index.d.ts.map +1 -1
  73. package/dist/effect/Schema/index.js +55 -28
  74. package/dist/effect/Schema/index.js.map +1 -1
  75. package/dist/effect/Stream.d.ts +13 -5
  76. package/dist/effect/Stream.d.ts.map +1 -1
  77. package/dist/effect/Stream.js +19 -12
  78. package/dist/effect/Stream.js.map +1 -1
  79. package/dist/effect/Stream.test.js +9 -9
  80. package/dist/effect/Stream.test.js.map +1 -1
  81. package/dist/effect/Subscribable.d.ts +9 -3
  82. package/dist/effect/Subscribable.d.ts.map +1 -1
  83. package/dist/effect/Subscribable.js +20 -35
  84. package/dist/effect/Subscribable.js.map +1 -1
  85. package/dist/effect/SubscriptionRef.d.ts +5 -6
  86. package/dist/effect/SubscriptionRef.d.ts.map +1 -1
  87. package/dist/effect/SubscriptionRef.js +2 -3
  88. package/dist/effect/SubscriptionRef.js.map +1 -1
  89. package/dist/effect/TaskTracing.d.ts +1 -1
  90. package/dist/effect/TaskTracing.d.ts.map +1 -1
  91. package/dist/effect/TaskTracing.js +12 -16
  92. package/dist/effect/TaskTracing.js.map +1 -1
  93. package/dist/effect/WebChannel/WebChannel.d.ts +7 -7
  94. package/dist/effect/WebChannel/WebChannel.d.ts.map +1 -1
  95. package/dist/effect/WebChannel/WebChannel.js +64 -43
  96. package/dist/effect/WebChannel/WebChannel.js.map +1 -1
  97. package/dist/effect/WebChannel/WebChannel.test.js +15 -15
  98. package/dist/effect/WebChannel/WebChannel.test.js.map +1 -1
  99. package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts.map +1 -1
  100. package/dist/effect/WebChannel/broadcastChannelWithAck.js +16 -9
  101. package/dist/effect/WebChannel/broadcastChannelWithAck.js.map +1 -1
  102. package/dist/effect/WebChannel/common.d.ts +16 -17
  103. package/dist/effect/WebChannel/common.d.ts.map +1 -1
  104. package/dist/effect/WebChannel/common.js +6 -6
  105. package/dist/effect/WebChannel/common.js.map +1 -1
  106. package/dist/effect/WebSocket.d.ts +4 -6
  107. package/dist/effect/WebSocket.d.ts.map +1 -1
  108. package/dist/effect/WebSocket.js +4 -4
  109. package/dist/effect/WebSocket.js.map +1 -1
  110. package/dist/effect/WebSocket.test.js +2 -2
  111. package/dist/effect/WebSocket.test.js.map +1 -1
  112. package/dist/effect/mod.browser-build.test.d.ts +2 -0
  113. package/dist/effect/mod.browser-build.test.d.ts.map +1 -0
  114. package/dist/effect/mod.browser-build.test.js +18 -0
  115. package/dist/effect/mod.browser-build.test.js.map +1 -0
  116. package/dist/effect/mod.d.ts +13 -15
  117. package/dist/effect/mod.d.ts.map +1 -1
  118. package/dist/effect/mod.js +13 -18
  119. package/dist/effect/mod.js.map +1 -1
  120. package/dist/effect/spanEvent.d.ts.map +1 -1
  121. package/dist/effect/spanEvent.js +2 -2
  122. package/dist/effect/spanEvent.js.map +1 -1
  123. package/dist/effect/spanEvent.test.js +10 -13
  124. package/dist/effect/spanEvent.test.js.map +1 -1
  125. package/dist/fast-deep-equal.d.ts.map +1 -1
  126. package/dist/fast-deep-equal.js +1 -2
  127. package/dist/fast-deep-equal.js.map +1 -1
  128. package/dist/misc.js +2 -2
  129. package/dist/misc.js.map +1 -1
  130. package/dist/mod.d.ts +0 -35
  131. package/dist/mod.d.ts.map +1 -1
  132. package/dist/mod.js +0 -8
  133. package/dist/mod.js.map +1 -1
  134. package/dist/node/mod.d.ts +17 -11
  135. package/dist/node/mod.d.ts.map +1 -1
  136. package/dist/node/mod.js +23 -16
  137. package/dist/node/mod.js.map +1 -1
  138. package/dist/object/index.d.ts +0 -9
  139. package/dist/object/index.d.ts.map +1 -1
  140. package/dist/object/index.js +0 -9
  141. package/dist/object/index.js.map +1 -1
  142. package/dist/string.d.ts +0 -2
  143. package/dist/string.d.ts.map +1 -1
  144. package/dist/string.js +0 -2
  145. package/dist/string.js.map +1 -1
  146. package/package.json +18 -36
  147. package/src/NoopTracer.test.ts +20 -0
  148. package/src/NoopTracer.ts +18 -41
  149. package/src/browser/Opfs/Opfs.ts +304 -277
  150. package/src/browser/Opfs/debug-utils.ts +7 -6
  151. package/src/browser/Opfs/utils.ts +36 -26
  152. package/src/browser/QuotaExceededError.ts +13 -10
  153. package/src/browser/WebChannelBrowser.ts +25 -11
  154. package/src/browser/WebError.test.ts +6 -6
  155. package/src/browser/WebError.ts +107 -133
  156. package/src/browser/WebLock.ts +13 -14
  157. package/src/effect/Debug.ts +66 -59
  158. package/src/effect/Effect.test.ts +117 -0
  159. package/src/effect/Effect.ts +84 -71
  160. package/src/effect/Logger.ts +0 -48
  161. package/src/effect/OtelTracer.ts +2 -3
  162. package/src/effect/RpcClient.ts +80 -61
  163. package/src/effect/Schedule.ts +4 -5
  164. package/src/effect/Schema/debug-diff.test.ts +6 -6
  165. package/src/effect/Schema/debug-diff.ts +6 -8
  166. package/src/effect/Schema/index.ts +122 -61
  167. package/src/effect/Stream.test.ts +9 -9
  168. package/src/effect/Stream.ts +23 -16
  169. package/src/effect/Subscribable.ts +31 -42
  170. package/src/effect/SubscriptionRef.ts +8 -12
  171. package/src/effect/TaskTracing.ts +13 -16
  172. package/src/effect/WebChannel/WebChannel.test.ts +23 -23
  173. package/src/effect/WebChannel/WebChannel.ts +87 -55
  174. package/src/effect/WebChannel/broadcastChannelWithAck.ts +21 -11
  175. package/src/effect/WebChannel/common.ts +14 -15
  176. package/src/effect/WebSocket.test.ts +2 -2
  177. package/src/effect/WebSocket.ts +9 -6
  178. package/src/effect/mod.browser-build.test.ts +19 -0
  179. package/src/effect/mod.ts +35 -69
  180. package/src/effect/spanEvent.test.ts +10 -13
  181. package/src/effect/spanEvent.ts +5 -3
  182. package/src/fast-deep-equal.ts +1 -2
  183. package/src/misc.ts +2 -2
  184. package/src/mod.ts +0 -36
  185. package/src/node/mod.ts +26 -20
  186. package/src/object/index.ts +0 -24
  187. package/src/string.ts +0 -3
  188. package/dist/effect/BucketQueue.d.ts +0 -20
  189. package/dist/effect/BucketQueue.d.ts.map +0 -1
  190. package/dist/effect/BucketQueue.js +0 -34
  191. package/dist/effect/BucketQueue.js.map +0 -1
  192. package/dist/effect/Scheduler.d.ts +0 -4
  193. package/dist/effect/Scheduler.d.ts.map +0 -1
  194. package/dist/effect/Scheduler.js +0 -9
  195. package/dist/effect/Scheduler.js.map +0 -1
  196. package/dist/effect/ServiceContext.d.ts +0 -37
  197. package/dist/effect/ServiceContext.d.ts.map +0 -1
  198. package/dist/effect/ServiceContext.js +0 -55
  199. package/dist/effect/ServiceContext.js.map +0 -1
  200. package/dist/guards.d.ts +0 -20
  201. package/dist/guards.d.ts.map +0 -1
  202. package/dist/guards.js +0 -20
  203. package/dist/guards.js.map +0 -1
  204. package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts +0 -4
  205. package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts.map +0 -1
  206. package/dist/node/ChildProcessRunner/ChildProcessRunner.js +0 -128
  207. package/dist/node/ChildProcessRunner/ChildProcessRunner.js.map +0 -1
  208. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts +0 -10
  209. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts.map +0 -1
  210. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js +0 -217
  211. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js.map +0 -1
  212. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts +0 -84
  213. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts.map +0 -1
  214. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js +0 -68
  215. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js.map +0 -1
  216. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts +0 -2
  217. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts.map +0 -1
  218. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js +0 -52
  219. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js.map +0 -1
  220. package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts +0 -23
  221. package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts.map +0 -1
  222. package/dist/node/ChildProcessRunner/ChildProcessWorker.js +0 -138
  223. package/dist/node/ChildProcessRunner/ChildProcessWorker.js.map +0 -1
  224. package/dist/object/omit.d.ts +0 -3
  225. package/dist/object/omit.d.ts.map +0 -1
  226. package/dist/object/omit.js +0 -14
  227. package/dist/object/omit.js.map +0 -1
  228. package/dist/object/pick.d.ts +0 -14
  229. package/dist/object/pick.d.ts.map +0 -1
  230. package/dist/object/pick.js +0 -17
  231. package/dist/object/pick.js.map +0 -1
  232. package/dist/time.d.ts +0 -12
  233. package/dist/time.d.ts.map +0 -1
  234. package/dist/time.js +0 -22
  235. package/dist/time.js.map +0 -1
  236. package/src/effect/BucketQueue.ts +0 -49
  237. package/src/effect/Scheduler.ts +0 -13
  238. package/src/effect/ServiceContext.ts +0 -108
  239. package/src/guards.ts +0 -23
  240. package/src/node/ChildProcessRunner/ChildProcessRunner.ts +0 -148
  241. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.ts +0 -311
  242. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/schema.ts +0 -78
  243. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.ts +0 -65
  244. package/src/node/ChildProcessRunner/ChildProcessWorker.ts +0 -169
  245. package/src/object/omit.ts +0 -17
  246. package/src/object/pick.ts +0 -27
  247. package/src/time.ts +0 -25
@@ -1,29 +1,33 @@
1
- export * from '@effect/rpc/RpcClient';
2
- import { Socket } from '@effect/platform';
3
- import { RpcClient, RpcClientError, RpcSerialization } from '@effect/rpc';
4
- import { Protocol } from '@effect/rpc/RpcClient';
5
- import { constPing } from '@effect/rpc/RpcMessage';
6
- import { Cause, Deferred, Effect, Layer, Option, Schedule } from 'effect';
7
- import { constVoid, identity } from 'effect/Function';
1
+ export * from 'effect/unstable/rpc/RpcClient';
2
+ import { Cause, Deferred, Effect, Function, Latch, Layer, References, Result, Schedule } from 'effect';
3
+ import { RpcClient, RpcClientError, RpcSerialization } from 'effect/unstable/rpc';
4
+ import { Protocol } from 'effect/unstable/rpc/RpcClient';
5
+ import { constPing } from 'effect/unstable/rpc/RpcMessage';
6
+ import { Socket } from 'effect/unstable/socket';
8
7
  import * as SubscriptionRef from "./SubscriptionRef.js";
9
8
  // This is based on `makeProtocolSocket` / `layerProtocolSocket` from `@effect/rpc` in order to:
10
9
  // - Add a `isConnected` subscription ref to track the connection state
11
10
  // - Add a ping schedule to the socket
12
11
  // - Add a retry schedule to the socket
13
- export const layerProtocolSocketWithIsConnected = (options) => Layer.scoped(Protocol, makeProtocolSocketWithIsConnected(options));
14
- export const makeProtocolSocketWithIsConnected = (options) => Protocol.make(Effect.fnUntraced(function* (writeResponse) {
12
+ export const layerProtocolSocketWithIsConnected = (options) => Layer.effect(Protocol, makeProtocolSocketWithIsConnected(options));
13
+ export const makeProtocolSocketWithIsConnected = (options) => Protocol.make(Effect.fnUntraced(function* (writeResponse, clientIds) {
15
14
  const socket = yield* Socket.Socket;
16
15
  const serialization = yield* RpcSerialization.RpcSerialization;
16
+ const requestClientMap = new Map();
17
17
  const write = yield* socket.writer;
18
- const parser = serialization.unsafeMake();
18
+ let parser = serialization.makeUnsafe();
19
19
  const pinger = yield* makePinger(write(parser.encode(constPing)), options?.pingSchedule);
20
+ let currentError;
21
+ const markConnected = SubscriptionRef.set(options.isConnected, true);
22
+ const broadcast = (response) => Effect.forEach(clientIds, (clientId) => writeResponse(clientId, response));
20
23
  yield* Effect.suspend(() => {
21
24
  // We rely on the heartbeat watchdog while streaming arbitrarily long payloads.
22
25
  // Reset the timer as soon as _any_ frame arrives so that large batches which
23
26
  // don't contain explicit `Pong` messages don't trigger the open-timeout defect.
24
27
  // (The actual pong handler still calls `onPong()` to resolve manual pings.)
25
28
  // CHANGED: don't reset parser on every message
26
- // parser = serialization.unsafeMake()
29
+ // parser = serialization.makeUnsafe()
30
+ currentError = undefined;
27
31
  pinger.reset();
28
32
  return socket
29
33
  .runRaw((message) => {
@@ -41,66 +45,82 @@ export const makeProtocolSocketWithIsConnected = (options) => Protocol.make(Effe
41
45
  pinger.reset();
42
46
  if (response._tag === 'Pong') {
43
47
  pinger.onPong();
48
+ return markConnected;
44
49
  }
45
- return writeResponse(response).pipe(
46
- // CHANGED: set isConnected to true on pong
47
- Effect.tap(Effect.fn(function* () {
48
- if (options?.isConnected !== undefined) {
49
- yield* SubscriptionRef.set(options.isConnected, true);
50
+ if ('requestId' in response) {
51
+ const clientId = requestClientMap.get(response.requestId);
52
+ if (clientId !== undefined) {
53
+ if (response._tag === 'Exit') {
54
+ requestClientMap.delete(response.requestId);
55
+ }
56
+ return markConnected.pipe(Effect.andThen(writeResponse(clientId, response)));
50
57
  }
51
- })));
58
+ }
59
+ return markConnected.pipe(Effect.andThen(broadcast(response)));
52
60
  },
53
- step: constVoid,
61
+ step: Function.constVoid,
54
62
  });
55
63
  }
56
64
  catch (defect) {
57
- return writeResponse({
65
+ return broadcast({
58
66
  _tag: 'ClientProtocolError',
59
67
  error: new RpcClientError.RpcClientError({
60
- reason: 'Protocol',
61
- message: 'Error decoding message',
62
- cause: Cause.fail(defect),
68
+ reason: new RpcClientError.RpcClientDefect({
69
+ message: 'Error decoding message',
70
+ cause: defect,
71
+ }),
63
72
  }),
64
73
  });
65
74
  }
66
75
  })
67
- .pipe(Effect.raceFirst(Effect.zipRight(pinger.timeout, Effect.fail(new Socket.SocketGenericError({
68
- reason: 'OpenTimeout',
69
- cause: new Error('ping timeout'),
76
+ .pipe(Effect.raceFirst(Effect.flatMap(pinger.timeout, () => Effect.fail(new Socket.SocketError({
77
+ reason: new Socket.SocketOpenError({
78
+ kind: 'Timeout',
79
+ cause: new Error('ping timeout'),
80
+ }),
70
81
  })))));
71
- }).pipe(Effect.zipRight(Effect.fail(new Socket.SocketCloseError({
72
- reason: 'Close',
73
- code: 1000,
74
- closeReason: 'Closing connection',
75
- }))), Effect.tapErrorCause(Effect.fn(function* (cause) {
82
+ }).pipe(Effect.flatMap(() => Effect.fail(new Socket.SocketError({
83
+ reason: new Socket.SocketCloseError({
84
+ code: 1000,
85
+ closeReason: 'Closing connection',
86
+ }),
87
+ }))), Effect.tapCause(Effect.fn(function* (cause) {
76
88
  // CHANGED: set isConnected to false on error
77
- if (options?.isConnected !== undefined) {
78
- yield* SubscriptionRef.set(options.isConnected, false);
79
- }
80
- const error = Cause.failureOption(cause);
89
+ yield* SubscriptionRef.set(options.isConnected, false);
90
+ const error = Cause.findError(cause);
81
91
  if (options?.retryTransientErrors !== undefined &&
82
- Option.isSome(error) === true &&
83
- (error.value.reason === 'Open' || error.value.reason === 'OpenTimeout')) {
92
+ Result.isSuccess(error) === true &&
93
+ error.success.reason._tag === 'SocketOpenError') {
84
94
  return;
85
95
  }
86
96
  // yield* Effect.logError('Error in socket', cause)
87
- return yield* writeResponse({
97
+ currentError = new RpcClientError.RpcClientError({
98
+ reason: Result.isSuccess(error) === true
99
+ ? error.success.reason
100
+ : new RpcClientError.RpcClientDefect({
101
+ message: 'Unknown socket error',
102
+ cause: Cause.squash(cause),
103
+ }),
104
+ });
105
+ return yield* broadcast({
88
106
  _tag: 'ClientProtocolError',
89
- error: new RpcClientError.RpcClientError({
90
- reason: 'Protocol',
91
- message: 'Error in socket',
92
- cause: Cause.squash(cause),
93
- }),
107
+ error: currentError,
94
108
  });
95
109
  })),
96
110
  // CHANGED: make configurable via schedule
97
- options?.retryTransientErrors !== undefined ? Effect.retry(options.retryTransientErrors) : identity, Effect.annotateLogs({
111
+ options?.retryTransientErrors !== undefined ? Effect.retry(options.retryTransientErrors) : Function.identity, Effect.annotateLogs({
98
112
  module: 'RpcClient',
99
113
  method: 'makeProtocolSocket',
100
114
  }), Effect.interruptible, Effect.ignore, // Errors are already handled
101
- Effect.provide(Layer.setUnhandledErrorLogLevel(Option.none())), Effect.forkScoped);
115
+ Effect.provideService(References.UnhandledLogLevel, undefined), Effect.forkScoped);
102
116
  return {
103
- send: (request) => {
117
+ send: (clientId, request) => {
118
+ if (currentError !== undefined) {
119
+ return Effect.fail(currentError);
120
+ }
121
+ if (request._tag === 'Request') {
122
+ requestClientMap.set(request.id, clientId);
123
+ }
104
124
  const encoded = parser.encode(request);
105
125
  if (encoded === undefined)
106
126
  return Effect.void;
@@ -112,28 +132,28 @@ export const makeProtocolSocketWithIsConnected = (options) => Protocol.make(Effe
112
132
  };
113
133
  }));
114
134
  export const SocketPinger = Effect.map(RpcClient.Protocol, (protocol) => protocol.pinger);
115
- const makePinger = Effect.fnUntraced(function* (writePing, pingSchedule = Schedule.spaced(10000).pipe(Schedule.addDelay(() => 5000))) {
135
+ const makePinger = Effect.fnUntraced(function* (writePing, pingSchedule = Schedule.spaced(10000).pipe(Schedule.addDelay(() => Effect.succeed(5000)))) {
116
136
  // CHANGED: add manual ping deferreds
117
137
  const manualPingDeferreds = new Set();
118
138
  let recievedPong = true;
119
- const latch = Effect.unsafeMakeLatch();
139
+ const latch = Latch.makeUnsafe();
120
140
  const reset = () => {
121
141
  recievedPong = true;
122
- latch.unsafeClose();
142
+ latch.closeUnsafe();
123
143
  };
124
144
  const onPong = () => {
125
145
  recievedPong = true;
126
146
  // CHANGED: mark all manual ping deferreds as done
127
147
  for (const deferred of manualPingDeferreds) {
128
- Deferred.unsafeDone(deferred, Effect.void);
148
+ Deferred.doneUnsafe(deferred, Effect.void);
129
149
  }
130
150
  };
131
151
  yield* Effect.suspend(() => {
132
152
  // Starting new ping
133
153
  if (recievedPong === false)
134
- return latch.open;
154
+ return Effect.asVoid(latch.open);
135
155
  recievedPong = false;
136
- return writePing;
156
+ return Effect.asVoid(writePing);
137
157
  }).pipe(
138
158
  // CHANGED: make configurable via schedule
139
159
  Effect.schedule(pingSchedule), Effect.ignore, Effect.forever, Effect.interruptible, Effect.forkScoped);
@@ -141,7 +161,7 @@ const makePinger = Effect.fnUntraced(function* (writePing, pingSchedule = Schedu
141
161
  const ping = Effect.gen(function* () {
142
162
  const deferred = yield* Deferred.make();
143
163
  manualPingDeferreds.add(deferred);
144
- yield* deferred;
164
+ yield* Deferred.await(deferred);
145
165
  manualPingDeferreds.delete(deferred);
146
166
  });
147
167
  return { timeout: latch.await, reset, onPong, ping };
@@ -1 +1 @@
1
- {"version":3,"file":"RpcClient.js","sourceRoot":"","sources":["../../src/effect/RpcClient.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,SAAS,EAA0B,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAc,MAAM,QAAQ,CAAA;AACrF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD,gGAAgG;AAChG,uEAAuE;AACvE,sCAAsC;AACtC,uCAAuC;AAEvC,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,OAKlD,EAAmF,EAAE,CACpF,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,OAAO,CAAC,CAAC,CAAA;AAEpE,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,OAOjD,EAA2G,EAAE,CAC5G,QAAQ,CAAC,IAAI,CACX,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,aAAa;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;IACnC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,CAAA;IAE9D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;IAClC,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,EAAE,CAAA;IAEzC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;IAEzF,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;QACzB,+EAA+E;QAC/E,6EAA6E;QAC7E,gFAAgF;QAChF,4EAA4E;QAC5E,+CAA+C;QAC/C,sCAAsC;QACtC,MAAM,CAAC,KAAK,EAAE,CAAA;QACd,OAAO,MAAM;aACV,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAA6B,CAAA;gBACpE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAM;gBAClC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACT,OAAO,MAAM,CAAC,SAAS,CAAC;oBACtB,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM;oBACjC,IAAI,EAAE,GAAG,EAAE;wBACT,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,CAAE,CAAA;wBAChC,2DAA2D;wBAC3D,oEAAoE;wBACpE,MAAM,CAAC,KAAK,EAAE,CAAA;wBACd,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC7B,MAAM,CAAC,MAAM,EAAE,CAAA;wBACjB,CAAC;wBACD,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI;wBACjC,2CAA2C;wBAC3C,MAAM,CAAC,GAAG,CACR,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;4BACjB,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;gCACvC,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;4BACvD,CAAC;wBACH,CAAC,CAAC,CACH,CACF,CAAA;oBACH,CAAC;oBACD,IAAI,EAAE,SAAS;iBAChB,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,OAAO,aAAa,CAAC;oBACnB,IAAI,EAAE,qBAAqB;oBAC3B,KAAK,EAAE,IAAI,cAAc,CAAC,cAAc,CAAC;wBACvC,MAAM,EAAE,UAAU;wBAClB,OAAO,EAAE,wBAAwB;wBACjC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;qBAC1B,CAAC;iBACH,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC;aACD,IAAI,CACH,MAAM,CAAC,SAAS,CACd,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,CACT,IAAI,MAAM,CAAC,kBAAkB,CAAC;YAC5B,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,IAAI,KAAK,CAAC,cAAc,CAAC;SACjC,CAAC,CACH,CACF,CACF,CACF,CAAA;IACL,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,IAAI,CACT,IAAI,MAAM,CAAC,gBAAgB,CAAC;QAC1B,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,oBAAoB;KAClC,CAAC,CACH,CACF,EACD,MAAM,CAAC,aAAa,CAClB,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK;QACxB,6CAA6C;QAC7C,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;YACvC,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QACxD,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACxC,IACE,OAAO,EAAE,oBAAoB,KAAK,SAAS;YAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;YAC7B,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,aAAa,CAAC,EACvE,CAAC;YACD,OAAM;QACR,CAAC;QACD,mDAAmD;QACnD,OAAO,KAAK,CAAC,CAAC,aAAa,CAAC;YAC1B,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,IAAI,cAAc,CAAC,cAAc,CAAC;gBACvC,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,iBAAiB;gBAC1B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;aAC3B,CAAC;SACH,CAAC,CAAA;IACJ,CAAC,CAAC,CACH;IACD,0CAA0C;IAC1C,OAAO,EAAE,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,QAAQ,EACnG,MAAM,CAAC,YAAY,CAAC;QAClB,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,oBAAoB;KAC7B,CAAC,EACF,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,MAAM,EAAE,6BAA6B;IAC5C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAC9D,MAAM,CAAC,UAAU,CAClB,CAAA;IAED,OAAO;QACL,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;YAChB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACtC,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC,IAAI,CAAA;YAE7C,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;QACrC,CAAC;QACD,WAAW,EAAE,IAAI;QACjB,qBAAqB,EAAE,KAAK;QAC5B,MAAM;KACP,CAAA;AACH,CAAC,CAAC,CACH,CAAA;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAE,QAAgB,CAAC,MAAsB,CAAC,CAAA;AAIlH,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC5C,SAAiC,EACjC,eAA2C,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAErG,qCAAqC;IACrC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA2B,CAAA;IAE9D,IAAI,YAAY,GAAG,IAAI,CAAA;IACvB,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,EAAE,CAAA;IACtC,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,YAAY,GAAG,IAAI,CAAA;QACnB,KAAK,CAAC,WAAW,EAAE,CAAA;IACrB,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,YAAY,GAAG,IAAI,CAAA;QACnB,kDAAkD;QAClD,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;YAC3C,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC,CAAA;IACD,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;QACzB,oBAAoB;QACpB,IAAI,YAAY,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC,IAAI,CAAA;QAC7C,YAAY,GAAG,KAAK,CAAA;QACpB,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,CAAC,IAAI;IACL,0CAA0C;IAC1C,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC7B,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,UAAU,CAClB,CAAA;IAED,2BAA2B;IAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAQ,CAAA;QAC7C,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjC,KAAK,CAAC,CAAC,QAAQ,CAAA;QACf,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAW,CAAA;AAC/D,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"RpcClient.js","sourceRoot":"","sources":["../../src/effect/RpcClient.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { Duration, Schedule } from 'effect';
2
2
  export * from 'effect/Schedule';
3
- export declare const exponentialBackoff10Sec: Schedule.Schedule<Duration.DurationInput>;
3
+ export declare const exponentialBackoff10Sec: Schedule.Schedule<Duration.Duration, unknown, never, never>;
4
4
  //# sourceMappingURL=Schedule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Schedule.d.ts","sourceRoot":"","sources":["../../src/effect/Schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAQ,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjD,cAAc,iBAAiB,CAAA;AAE/B,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAK7E,CAAA"}
1
+ {"version":3,"file":"Schedule.d.ts","sourceRoot":"","sources":["../../src/effect/Schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEzD,cAAc,iBAAiB,CAAA;AAE/B,eAAO,MAAM,uBAAuB,6DAInC,CAAA"}
@@ -1,5 +1,5 @@
1
- import { Duration, pipe, Schedule } from 'effect';
1
+ import { Duration, Effect, pipe, Schedule } from 'effect';
2
2
  export * from 'effect/Schedule';
3
3
  export const exponentialBackoff10Sec = pipe(Schedule.exponential(Duration.millis(10), 4), // 10ms, 40ms, 160ms, 640ms, 2560ms, ...
4
- Schedule.andThenEither(Schedule.spaced(Duration.seconds(1))), Schedule.compose(Schedule.elapsed), Schedule.whileOutput(Duration.lessThanOrEqualTo(Duration.seconds(10))));
4
+ Schedule.modifyDelay(({ duration }) => Effect.succeed(Duration.min(duration, Duration.seconds(1)))), Schedule.upTo({ duration: Duration.seconds(10) }));
5
5
  //# sourceMappingURL=Schedule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Schedule.js","sourceRoot":"","sources":["../../src/effect/Schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjD,cAAc,iBAAiB,CAAA;AAE/B,MAAM,CAAC,MAAM,uBAAuB,GAA8C,IAAI,CACpF,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,wCAAwC;AACtF,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5D,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAClC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CACvE,CAAA"}
1
+ {"version":3,"file":"Schedule.js","sourceRoot":"","sources":["../../src/effect/Schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEzD,cAAc,iBAAiB,CAAA;AAE/B,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CACzC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,wCAAwC;AACtF,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACnG,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAClD,CAAA"}
@@ -8,5 +8,5 @@ export type DiffItem = {
8
8
  /**
9
9
  * Diffs two values for a given schema and traverses downwards and returns a list of differences.
10
10
  */
11
- export declare const debugDiff: <A, I, R>(base: Schema.Schema<A, I, R>) => (a: A, b: A) => DiffItem[];
11
+ export declare const debugDiff: <A, I, R>(base: Schema.Top) => (a: A, b: A) => DiffItem[];
12
12
  //# sourceMappingURL=debug-diff.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug-diff.d.ts","sourceRoot":"","sources":["../../../src/effect/Schema/debug-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAE1C,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,GAAG,CAAA;IACN,CAAC,EAAE,GAAG,CAAA;IACN,GAAG,EAAE,SAAS,CAAC,GAAG,CAAA;CACnB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,GACnB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MACrC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAG,QAAQ,EAIrB,CAAA"}
1
+ {"version":3,"file":"debug-diff.d.ts","sourceRoot":"","sources":["../../../src/effect/Schema/debug-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAE1C,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,GAAG,CAAA;IACN,CAAC,EAAE,GAAG,CAAA;IACN,GAAG,EAAE,SAAS,CAAC,GAAG,CAAA;CACnB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,GACnB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,MAAM,CAAC,GAAG,MACzB,GAAG,CAAC,EAAE,GAAG,CAAC,KAAG,QAAQ,EAIrB,CAAA"}
@@ -8,7 +8,7 @@ export const debugDiff = (base) => (a, b) => {
8
8
  return bag;
9
9
  };
10
10
  const debugDiffImpl = (ast, a, b, path, bag) => {
11
- const eq = Schema.equivalence({ ast });
11
+ const eq = Schema.toEquivalence({ ast });
12
12
  if (eq(a, b) === false) {
13
13
  // bag.push({ path, a, b, ast })
14
14
  if (SchemaAST.isUnion(ast) === true) {
@@ -26,9 +26,8 @@ const debugDiffImpl = (ast, a, b, path, bag) => {
26
26
  }
27
27
  }
28
28
  }
29
- else if (SchemaAST.isTypeLiteral(ast) === true) {
30
- const props = SchemaAST.getPropertySignatures(ast);
31
- for (const prop of props) {
29
+ else if (SchemaAST.isObjects(ast) === true) {
30
+ for (const prop of ast.propertySignatures) {
32
31
  debugDiffImpl(prop.type, a[prop.name], b[prop.name], `${path}.${prop.name.toString()}`, bag);
33
32
  }
34
33
  }
@@ -41,10 +40,9 @@ const debugDiffImpl = (ast, a, b, path, bag) => {
41
40
  const isTaggedUnion = (ast) => {
42
41
  if (SchemaAST.isUnion(ast) === true) {
43
42
  return ast.types.every((type) => {
44
- if (SchemaAST.isTypeLiteral(type) === false)
43
+ if (SchemaAST.isObjects(type) === false)
45
44
  return false;
46
- const props = SchemaAST.getPropertySignatures(type);
47
- return props.some((prop) => prop.name.toString() === '_tag');
45
+ return type.propertySignatures.some((prop) => prop.name.toString() === '_tag');
48
46
  });
49
47
  }
50
48
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"debug-diff.js","sourceRoot":"","sources":["../../../src/effect/Schema/debug-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAS1C;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GACpB,CAAU,IAA4B,EAAE,EAAE,CAC1C,CAAC,CAAI,EAAE,CAAI,EAAc,EAAE;IACzB,MAAM,GAAG,GAAG,EAAgB,CAAA;IAC5B,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IACtC,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAEH,MAAM,aAAa,GAAG,CAAC,GAAkB,EAAE,CAAM,EAAE,CAAM,EAAE,IAAY,EAAE,GAAe,EAAE,EAAE;IAC1F,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAS,CAAC,CAAA;IAC7C,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACvB,gCAAgC;QAEhC,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YACpC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;gBAC7B,OAAM;YACR,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBAC7B,IAAI,CAAC;wBACH,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;wBACpC,OAAM;oBACR,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,SAAS,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA;YAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;YAC9F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW;YACX,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,GAAkB,EAAW,EAAE;IACpD,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAA;YACzD,MAAM,KAAK,GAAG,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;YACnD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
1
+ {"version":3,"file":"debug-diff.js","sourceRoot":"","sources":["../../../src/effect/Schema/debug-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAS1C;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GACpB,CAAU,IAAgB,EAAE,EAAE,CAC9B,CAAC,CAAI,EAAE,CAAI,EAAc,EAAE;IACzB,MAAM,GAAG,GAAG,EAAgB,CAAA;IAC5B,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IACtC,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAEH,MAAM,aAAa,GAAG,CAAC,GAAkB,EAAE,CAAM,EAAE,CAAM,EAAE,IAAY,EAAE,GAAe,EAAE,EAAE;IAC1F,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,EAAS,CAAC,CAAA;IAC/C,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACvB,gCAAgC;QAEhC,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YACpC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;gBAC7B,OAAM;YACR,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBAC7B,IAAI,CAAC;wBACH,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;wBACpC,OAAM;oBACR,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;gBAC1C,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;YAC9F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW;YACX,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,GAAkB,EAAW,EAAE;IACpD,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAA;YACrD,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,CAAA;QAChF,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
@@ -5,7 +5,7 @@ describe('debug-diff', () => {
5
5
  test('simple object', () => {
6
6
  const schema = Schema.Struct({
7
7
  a: Schema.String,
8
- b: Schema.Number,
8
+ b: Schema.Finite,
9
9
  });
10
10
  const a = { a: 'hello', b: 1 };
11
11
  const b = { a: 'world', b: 2 };
@@ -29,7 +29,7 @@ describe('debug-diff', () => {
29
29
  const schema = Schema.Struct({
30
30
  a: Schema.String,
31
31
  b: Schema.Struct({
32
- c: Schema.Number,
32
+ c: Schema.Finite,
33
33
  }),
34
34
  });
35
35
  const a = { a: 'hello', b: { c: 1 } };
@@ -51,7 +51,7 @@ describe('debug-diff', () => {
51
51
  `);
52
52
  });
53
53
  test('union', () => {
54
- const schema = Schema.Union(Schema.String, Schema.Number);
54
+ const schema = Schema.Union([Schema.String, Schema.Finite]);
55
55
  const a = 'hello';
56
56
  const b = 1;
57
57
  const diff = debugDiff(schema)(a, b);
@@ -66,7 +66,10 @@ describe('debug-diff', () => {
66
66
  `);
67
67
  });
68
68
  test('tagged union', () => {
69
- const schema = Schema.Union(Schema.TaggedStruct('a', { a: Schema.String }), Schema.TaggedStruct('b', { b: Schema.Number }));
69
+ const schema = Schema.Union([
70
+ Schema.TaggedStruct('a', { a: Schema.String }),
71
+ Schema.TaggedStruct('b', { b: Schema.Finite }),
72
+ ]);
70
73
  const a = { _tag: 'a', a: 'hello' };
71
74
  const b = { _tag: 'b', b: 1 };
72
75
  const diff = debugDiff(schema)(a, b);
@@ -1 +1 @@
1
- {"version":3,"file":"debug-diff.test.js","sourceRoot":"","sources":["../../../src/effect/Schema/debug-diff.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAG/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE;QACzB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,CAAC,EAAE,MAAM,CAAC,MAAM;YAChB,CAAC,EAAE,MAAM,CAAC,MAAM;SACjB,CAAC,CAAA;QAEF,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;QAC9B,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;QAE9B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;KAa3C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,CAAC,EAAE,MAAM,CAAC,MAAM;YAChB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;gBACf,CAAC,EAAE,MAAM,CAAC,MAAM;aACjB,CAAC;SACH,CAAC,CAAA;QACF,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAA;QACrC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAA;QACrC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;KAa3C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QACzD,MAAM,CAAC,GAAG,OAAO,CAAA;QACjB,MAAM,CAAC,GAAG,CAAC,CAAA;QACX,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;KAQ3C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CACzB,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAC9C,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAC/C,CAAA;QACD,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAW,CAAA;QAC5C,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAW,CAAA;QACtC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;KAc3C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,OAAO,GAAG,CAAC,SAAqB,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"debug-diff.test.js","sourceRoot":"","sources":["../../../src/effect/Schema/debug-diff.test.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,31 @@
1
- import { Effect, Schema } from 'effect';
2
- import type { ParseError } from 'effect/ParseResult';
3
- import type { ParseOptions } from 'effect/SchemaAST';
4
- import * as SchemaAST from 'effect/SchemaAST';
1
+ import { Effect, Schema, SchemaAST } from 'effect';
5
2
  export * from 'effect/Schema';
6
3
  export * from './debug-diff.ts';
7
- export declare const hash: (schema: Schema.Schema<any>) => number;
8
- export declare const getResolvedPropertySignatures: (schema: Schema.Schema.AnyNoContext) => ReadonlyArray<SchemaAST.PropertySignature>;
9
- /** Objects that can be transferred between contexts (workers, etc.) */
10
- type TransferableObject = ArrayBuffer | MessagePort;
11
- export declare const encodeWithTransferables: <A, I, R>(schema: Schema.Schema<A, I, R>, options?: ParseOptions) => (a: A, overrideOptions?: ParseOptions) => Effect.Effect<[I, TransferableObject[]], ParseError, R>;
12
- export declare const decodeSyncDebug: <A, I>(schema: Schema.Schema<A, I>, options?: SchemaAST.ParseOptions) => (i: I, overrideOptions?: SchemaAST.ParseOptions) => A;
13
- export declare const encodeSyncDebug: <A, I>(schema: Schema.Schema<A, I>, options?: SchemaAST.ParseOptions) => (a: A, overrideOptions?: SchemaAST.ParseOptions) => I;
14
- export declare const swap: <A, I, R>(schema: Schema.Schema<A, I, R>) => Schema.Schema<I, A, R>;
15
- export declare const Base64FromUint8Array: Schema.Schema<string, Uint8Array>;
16
- export interface JsonArray extends ReadonlyArray<JsonValue> {
17
- }
18
- export interface JsonObject {
19
- [key: string]: JsonValue;
20
- }
21
- export type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
22
- export declare const JsonValue: Schema.Schema<JsonValue>;
4
+ type PluckSchema<Fields extends Schema.Struct.Fields, K extends keyof Fields> = Schema.Codec<Fields[K]['Type'], Schema.Struct<Pick<Fields, K>>['Encoded'], Schema.Struct<Pick<Fields, K>>['DecodingServices'], Schema.Struct<Pick<Fields, K>>['EncodingServices']>;
5
+ export declare const pluck: <const K extends PropertyKey>(key: K) => <Fields extends { readonly [P in K]: Schema.Top; }>(schema: Schema.Struct<Fields>) => PluckSchema<Fields, K & keyof Fields>;
6
+ /**
7
+ * Like {@link fromJsonString}, but the ENCODED form is an *indented* JSON string
8
+ * (default 2-space) instead of compact for committed/human-read JSON files
9
+ * (package.json, release plans, CI previews) that must stay diff-friendly while
10
+ * still round-tripping through the schema.
11
+ *
12
+ * Use a concrete schema for known shapes (adds validation) or `Schema.Unknown`
13
+ * for open-ended ones (the indented analogue of `fromJsonString(Schema.Unknown)`).
14
+ *
15
+ * TODO collapse into `fromJsonString(schema, { space })` now that Effect 4 accepts a
16
+ * `space` option; kept separate here to keep the Effect upgrade free of release-tooling changes.
17
+ */
18
+ export declare const jsonStringIndented: <S extends Schema.Top>(schema: S, space?: number | string) => Schema.decodeTo<S, Schema.String, never, never>;
19
+ export declare const head: <S extends Schema.Top>(array: Schema.$Array<S>) => Schema.decodeTo<Schema.Option<Schema.toType<S>>, Schema.$Array<S>>;
20
+ type HeadOrElse<S extends Schema.Top> = Schema.decodeTo<Schema.toType<S>, Schema.$Array<S>>;
21
+ export declare const headOrElse: {
22
+ <S extends Schema.Top>(array: Schema.$Array<S>, orElse?: () => S['Type']): HeadOrElse<S>;
23
+ (): <S extends Schema.Top>(array: Schema.$Array<S>) => HeadOrElse<S>;
24
+ <S extends Schema.Top>(orElse: () => S['Type']): (array: Schema.$Array<S>) => HeadOrElse<S>;
25
+ };
26
+ export declare const hash: (schema: Schema.Top) => number;
27
+ export declare const getResolvedPropertySignatures: (schema: Schema.Top) => ReadonlyArray<SchemaAST.PropertySignature>;
28
+ export declare const encodeWithTransferables: <A, I>(schema: Schema.Codec<A, I>, options?: SchemaAST.ParseOptions) => (a: A, overrideOptions?: SchemaAST.ParseOptions) => Effect.Effect<readonly [I, Transferable[]], Schema.SchemaError, never>;
29
+ export declare const decodeSyncDebug: <A, I>(schema: Schema.Codec<A, I>, options?: SchemaAST.ParseOptions) => (i: I, overrideOptions?: SchemaAST.ParseOptions) => A;
30
+ export declare const encodeSyncDebug: <A, I>(schema: Schema.Codec<A, I>, options?: SchemaAST.ParseOptions) => (a: A, overrideOptions?: SchemaAST.ParseOptions) => I;
23
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/effect/Schema/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAqB,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAI7C,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAK/B,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAS9C,CAAA;AAUD,eAAO,MAAM,6BAA6B,GACxC,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,KACjC,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAG3C,CAAA;AAED,uEAAuE;AACvE,KAAK,kBAAkB,GAAG,WAAW,GAAG,WAAW,CAAA;AAEnD,eAAO,MAAM,uBAAuB,GACjC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,YAAY,MAC/D,GAAG,CAAC,EAAE,kBAAkB,YAAY,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAS1F,CAAA;AAEN,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE,SAAS,CAAC,YAAY,KAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,SAAS,CAAC,YAAY,KAAK,CAOxD,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE,SAAS,CAAC,YAAY,KAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,SAAS,CAAC,YAAY,KAAK,CAOxD,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAIhF,CAAA;AAEJ,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAqC,CAAA;AAExG,MAAM,WAAW,SAAU,SAAQ,aAAa,CAAC,SAAS,CAAC;CAAG;AAC9D,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CACzB;AACD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,CAAA;AAEjF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAOL,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/effect/Schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAKN,MAAM,EACN,SAAS,EAKV,MAAM,QAAQ,CAAA;AAKf,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAE/B,KAAK,WAAW,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,CAC1F,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EACjB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CACnD,CAAA;AAED,eAAO,MAAM,KAAK,GACf,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,CAAC,MACnC,MAAM,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,GAAE,EAC/C,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAC5B,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,MAAM,CAStC,CAAA;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,QAAO,MAAM,GAAG,MAAU,oDAM3F,CAAA;AAEH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,CAAC,GAAG,EACvC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KACtB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAYjE,CAAA;AAEH,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAE3F,eAAO,MAAM,UAAU,EAAE;IACvB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IACxF,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAA;IACpE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAA;CAsB5F,CAAA;AAKD,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,CAAC,GAAG,WAStC,CAAA;AAED,eAAO,MAAM,6BAA6B,GAAI,QAAQ,MAAM,CAAC,GAAG,KAAG,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAG3G,CAAA;AAED,eAAO,MAAM,uBAAuB,GACjC,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,SAAS,CAAC,YAAY,MAClE,GAAG,CAAC,EAAE,kBAAkB,SAAS,CAAC,YAAY,2EAS3C,CAAA;AAEN,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE,SAAS,CAAC,YAAY,KAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,SAAS,CAAC,YAAY,KAAK,CAOxD,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE,SAAS,CAAC,YAAY,KAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,SAAS,CAAC,YAAY,KAAK,CAOxD,CAAA"}
@@ -1,9 +1,48 @@
1
- import { Transferable } from '@effect/platform';
2
- import { Effect, Hash, ParseResult, Schema } from 'effect';
3
- import * as SchemaAST from 'effect/SchemaAST';
4
- import { shouldNeverHappen } from "../../mod.js";
1
+ import { Array, Effect, Function, Hash, Option, Result, Schema, SchemaAST, SchemaGetter, SchemaIssue, SchemaTransformation, Struct, } from 'effect';
2
+ import { Transferable } from 'effect/unstable/workers';
3
+ import { shouldNeverHappen } from "../../misc.js";
5
4
  export * from 'effect/Schema';
6
5
  export * from "./debug-diff.js";
6
+ export const pluck = (key) => (schema) => {
7
+ const field = schema.fields[key];
8
+ return schema.mapFields(Struct.pick([key])).pipe(Schema.decodeTo(Schema.toType(field), {
9
+ decode: SchemaGetter.transform((whole) => whole[key]),
10
+ encode: SchemaGetter.transform((value) => ({ [key]: value })),
11
+ }));
12
+ };
13
+ /**
14
+ * Like {@link fromJsonString}, but the ENCODED form is an *indented* JSON string
15
+ * (default 2-space) instead of compact — for committed/human-read JSON files
16
+ * (package.json, release plans, CI previews) that must stay diff-friendly while
17
+ * still round-tripping through the schema.
18
+ *
19
+ * Use a concrete schema for known shapes (adds validation) or `Schema.Unknown`
20
+ * for open-ended ones (the indented analogue of `fromJsonString(Schema.Unknown)`).
21
+ *
22
+ * TODO collapse into `fromJsonString(schema, { space })` now that Effect 4 accepts a
23
+ * `space` option; kept separate here to keep the Effect upgrade free of release-tooling changes.
24
+ */
25
+ export const jsonStringIndented = (schema, space = 2) => schema.pipe(Schema.encodeTo(Schema.String, {
26
+ decode: SchemaGetter.parseJson(),
27
+ encode: SchemaGetter.stringifyJson({ space }),
28
+ }));
29
+ export const head = (array) => array.pipe(Schema.decodeTo(Schema.Option(Schema.toType(array.value)), SchemaTransformation.transform({
30
+ decode: Array.head,
31
+ encode: Option.match({
32
+ onNone: () => [],
33
+ onSome: Array.of,
34
+ }),
35
+ })));
36
+ export const headOrElse = Function.dual((args) => Schema.isSchema(args[0]), (array, orElse) => array.pipe(Schema.decodeTo(Schema.toType(array.value), SchemaTransformation.transformOrFail({
37
+ decode: (array) => Array.isReadonlyArrayNonEmpty(array) === true
38
+ ? Effect.succeed(Array.headNonEmpty(array))
39
+ : orElse === undefined
40
+ ? Effect.fail(new SchemaIssue.InvalidValue({
41
+ message: 'Unable to retrieve the first element of an empty array',
42
+ }))
43
+ : Effect.succeed(orElse()),
44
+ encode: (value) => Effect.succeed(Array.of(value)),
45
+ }))));
7
46
  // NOTE this is a temporary workaround until Effect schema has a better way to hash schemas
8
47
  // https://github.com/Effect-TS/effect/issues/2719
9
48
  // TODO remove this once the issue is resolved
@@ -16,43 +55,31 @@ export const hash = (schema) => {
16
55
  return Hash.hash(schema.ast.toString());
17
56
  }
18
57
  };
19
- const resolveStructAst = (ast) => {
20
- if (SchemaAST.isTransformation(ast) === true) {
21
- return resolveStructAst(ast.from);
22
- }
23
- return ast;
24
- };
25
58
  export const getResolvedPropertySignatures = (schema) => {
26
- const resolvedAst = resolveStructAst(schema.ast);
27
- return SchemaAST.getPropertySignatures(resolvedAst);
59
+ const resolvedAst = SchemaAST.toType(schema.ast);
60
+ return SchemaAST.isObjects(resolvedAst) === true ? resolvedAst.propertySignatures : [];
28
61
  };
29
62
  export const encodeWithTransferables = (schema, options) => (a, overrideOptions) => Effect.gen(function* () {
30
63
  const collector = yield* Transferable.makeCollector;
31
- const encoded = yield* Schema.encode(schema, options)(a, overrideOptions).pipe(Effect.provideService(Transferable.Collector, collector));
32
- return [encoded, collector.unsafeRead()];
64
+ const encoded = yield* Schema.encodeEffect(schema, options)(a, overrideOptions).pipe(Effect.provideService(Transferable.Collector, collector));
65
+ return [encoded, collector.readUnsafe()];
33
66
  });
34
67
  export const decodeSyncDebug = (schema, options) => (input, overrideOptions) => {
35
- const res = Schema.decodeEither(schema, options)(input, overrideOptions);
36
- if (res._tag === 'Left') {
37
- return shouldNeverHappen(`decodeSyncDebug failed:`, res.left);
68
+ const res = Schema.decodeResult(schema, options)(input, overrideOptions);
69
+ if (Result.isFailure(res) === true) {
70
+ return shouldNeverHappen(`decodeSyncDebug failed:`, res.failure);
38
71
  }
39
72
  else {
40
- return res.right;
73
+ return res.success;
41
74
  }
42
75
  };
43
76
  export const encodeSyncDebug = (schema, options) => (input, overrideOptions) => {
44
- const res = Schema.encodeEither(schema, options)(input, overrideOptions);
45
- if (res._tag === 'Left') {
46
- return shouldNeverHappen(`encodeSyncDebug failed:`, res.left);
77
+ const res = Schema.encodeResult(schema, options)(input, overrideOptions);
78
+ if (Result.isFailure(res) === true) {
79
+ return shouldNeverHappen(`encodeSyncDebug failed:`, res.failure);
47
80
  }
48
81
  else {
49
- return res.right;
82
+ return res.success;
50
83
  }
51
84
  };
52
- export const swap = (schema) => Schema.transformOrFail(Schema.typeSchema(schema), Schema.encodedSchema(schema), {
53
- decode: ParseResult.encode(schema),
54
- encode: ParseResult.decode(schema),
55
- });
56
- export const Base64FromUint8Array = swap(Schema.Uint8ArrayFromBase64);
57
- export const JsonValue = Schema.Union(Schema.String, Schema.Number, Schema.Boolean, Schema.Null, Schema.Array(Schema.suspend(() => JsonValue)), Schema.Record({ key: Schema.String, value: Schema.suspend(() => JsonValue) })).annotations({ identifier: 'JsonValue' });
58
85
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/effect/Schema/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/effect/Schema/index.ts"],"names":[],"mappings":"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"}