@livestore/utils 0.0.55-dev.2 → 0.0.55

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 (81) hide show
  1. package/dist/.tsbuildinfo.json +1 -1
  2. package/dist/effect/Effect.d.ts +2 -0
  3. package/dist/effect/Effect.d.ts.map +1 -1
  4. package/dist/effect/Effect.js +2 -0
  5. package/dist/effect/Effect.js.map +1 -1
  6. package/dist/effect/SubscriptionRef.d.ts +2 -2
  7. package/dist/effect/SubscriptionRef.d.ts.map +1 -1
  8. package/dist/effect/SubscriptionRef.js +2 -3
  9. package/dist/effect/SubscriptionRef.js.map +1 -1
  10. package/dist/effect/index.d.ts +2 -6
  11. package/dist/effect/index.d.ts.map +1 -1
  12. package/dist/effect/index.js +2 -8
  13. package/dist/effect/index.js.map +1 -1
  14. package/dist/misc.d.ts +1 -0
  15. package/dist/misc.d.ts.map +1 -1
  16. package/dist/misc.js +10 -0
  17. package/dist/misc.js.map +1 -1
  18. package/package.json +13 -13
  19. package/src/effect/Effect.ts +8 -0
  20. package/src/effect/SubscriptionRef.ts +3 -11
  21. package/src/effect/index.ts +2 -8
  22. package/src/misc.ts +13 -0
  23. package/dist/effect/Browser.d.ts +0 -18
  24. package/dist/effect/Browser.d.ts.map +0 -1
  25. package/dist/effect/Browser.js +0 -22
  26. package/dist/effect/Browser.js.map +0 -1
  27. package/dist/effect/browser-worker-tmp/BrowserWorker.d.ts +0 -21
  28. package/dist/effect/browser-worker-tmp/BrowserWorker.d.ts.map +0 -1
  29. package/dist/effect/browser-worker-tmp/BrowserWorker.js +0 -17
  30. package/dist/effect/browser-worker-tmp/BrowserWorker.js.map +0 -1
  31. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.d.ts +0 -12
  32. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.d.ts.map +0 -1
  33. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.js +0 -8
  34. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.js.map +0 -1
  35. package/dist/effect/browser-worker-tmp/internal/worker.d.ts +0 -9
  36. package/dist/effect/browser-worker-tmp/internal/worker.d.ts.map +0 -1
  37. package/dist/effect/browser-worker-tmp/internal/worker.js +0 -56
  38. package/dist/effect/browser-worker-tmp/internal/worker.js.map +0 -1
  39. package/dist/effect/browser-worker-tmp/internal/workerRunner.d.ts +0 -5
  40. package/dist/effect/browser-worker-tmp/internal/workerRunner.d.ts.map +0 -1
  41. package/dist/effect/browser-worker-tmp/internal/workerRunner.js +0 -100
  42. package/dist/effect/browser-worker-tmp/internal/workerRunner.js.map +0 -1
  43. package/dist/effect/browser-worker-tmp/port-platform-runner.d.ts +0 -5
  44. package/dist/effect/browser-worker-tmp/port-platform-runner.d.ts.map +0 -1
  45. package/dist/effect/browser-worker-tmp/port-platform-runner.js +0 -54
  46. package/dist/effect/browser-worker-tmp/port-platform-runner.js.map +0 -1
  47. package/dist/effect/worker-tmp/Worker.d.ts +0 -290
  48. package/dist/effect/worker-tmp/Worker.d.ts.map +0 -1
  49. package/dist/effect/worker-tmp/Worker.js +0 -62
  50. package/dist/effect/worker-tmp/Worker.js.map +0 -1
  51. package/dist/effect/worker-tmp/WorkerError.d.ts +0 -63
  52. package/dist/effect/worker-tmp/WorkerError.d.ts.map +0 -1
  53. package/dist/effect/worker-tmp/WorkerError.js +0 -52
  54. package/dist/effect/worker-tmp/WorkerError.js.map +0 -1
  55. package/dist/effect/worker-tmp/WorkerRunner.d.ts +0 -119
  56. package/dist/effect/worker-tmp/WorkerRunner.d.ts.map +0 -1
  57. package/dist/effect/worker-tmp/WorkerRunner.js +0 -32
  58. package/dist/effect/worker-tmp/WorkerRunner.js.map +0 -1
  59. package/dist/effect/worker-tmp/internal/worker.d.ts +0 -36
  60. package/dist/effect/worker-tmp/internal/worker.d.ts.map +0 -1
  61. package/dist/effect/worker-tmp/internal/worker.js +0 -244
  62. package/dist/effect/worker-tmp/internal/worker.js.map +0 -1
  63. package/dist/effect/worker-tmp/internal/workerError.d.ts +0 -4
  64. package/dist/effect/worker-tmp/internal/workerError.d.ts.map +0 -1
  65. package/dist/effect/worker-tmp/internal/workerError.js +0 -3
  66. package/dist/effect/worker-tmp/internal/workerError.js.map +0 -1
  67. package/dist/effect/worker-tmp/internal/workerRunner.d.ts +0 -21
  68. package/dist/effect/worker-tmp/internal/workerRunner.d.ts.map +0 -1
  69. package/dist/effect/worker-tmp/internal/workerRunner.js +0 -137
  70. package/dist/effect/worker-tmp/internal/workerRunner.js.map +0 -1
  71. package/src/effect/browser-worker-tmp/BrowserWorker.ts +0 -26
  72. package/src/effect/browser-worker-tmp/BrowserWorkerRunner.ts +0 -14
  73. package/src/effect/browser-worker-tmp/internal/worker.ts +0 -71
  74. package/src/effect/browser-worker-tmp/internal/workerRunner.ts +0 -119
  75. package/src/effect/browser-worker-tmp/port-platform-runner.ts +0 -74
  76. package/src/effect/worker-tmp/Worker.ts +0 -374
  77. package/src/effect/worker-tmp/WorkerError.ts +0 -79
  78. package/src/effect/worker-tmp/WorkerRunner.ts +0 -181
  79. package/src/effect/worker-tmp/internal/worker.ts +0 -417
  80. package/src/effect/worker-tmp/internal/workerError.ts +0 -6
  81. package/src/effect/worker-tmp/internal/workerRunner.ts +0 -237
@@ -1,374 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import type * as ParseResult from '@effect/schema/ParseResult'
5
- import type * as Schema from '@effect/schema/Schema'
6
- import type * as Serializable from '@effect/schema/Serializable'
7
- import type * as Context from 'effect/Context'
8
- import type * as Duration from 'effect/Duration'
9
- import type * as Effect from 'effect/Effect'
10
- import type * as Fiber from 'effect/Fiber'
11
- import type { LazyArg } from 'effect/Function'
12
- import type * as Layer from 'effect/Layer'
13
- import type * as Option from 'effect/Option'
14
- import type * as Pool from 'effect/Pool'
15
- import type * as Queue from 'effect/Queue'
16
- import type * as Scope from 'effect/Scope'
17
- import type * as Stream from 'effect/Stream'
18
- import type * as Tracer from 'effect/Tracer'
19
-
20
- import * as internal from './internal/worker.js'
21
- import type { WorkerError, WorkerErrorFrom } from './WorkerError.js'
22
-
23
- /**
24
- * @since 1.0.0
25
- * @category models
26
- */
27
- export interface BackingWorker<I, O> {
28
- readonly fiber: Fiber.Fiber<never, WorkerError>
29
- readonly send: (message: I, transfers?: ReadonlyArray<unknown>) => Effect.Effect<void, WorkerError>
30
- readonly queue: Queue.Dequeue<BackingWorker.Message<O>>
31
- }
32
-
33
- /**
34
- * @since 1.0.0
35
- * @category models
36
- */
37
- export declare namespace BackingWorker {
38
- /**
39
- * @since 1.0.0
40
- * @category models
41
- */
42
- export type Message<O> = readonly [ready: 0] | readonly [data: 1, O]
43
- }
44
-
45
- /**
46
- * @since 1.0.0
47
- * @category type ids
48
- */
49
- export const PlatformWorkerTypeId: unique symbol = internal.PlatformWorkerTypeId
50
-
51
- /**
52
- * @since 1.0.0
53
- * @category type ids
54
- */
55
- export type PlatformWorkerTypeId = typeof PlatformWorkerTypeId
56
-
57
- /**
58
- * @since 1.0.0
59
- * @category models
60
- */
61
- export interface PlatformWorker {
62
- readonly [PlatformWorkerTypeId]: PlatformWorkerTypeId
63
- readonly spawn: <I, O>(worker: unknown) => Effect.Effect<BackingWorker<I, O>, WorkerError, Scope.Scope>
64
- }
65
-
66
- /**
67
- * @since 1.0.0
68
- * @category tags
69
- */
70
- export const PlatformWorker: Context.Tag<PlatformWorker, PlatformWorker> = internal.PlatformWorker
71
-
72
- /**
73
- * @since 1.0.0
74
- * @category models
75
- */
76
- export interface Worker<I, O, E = never> {
77
- readonly id: number
78
- readonly execute: (message: I) => Stream.Stream<O, E | WorkerError>
79
- readonly executeEffect: (message: I) => Effect.Effect<O, E | WorkerError>
80
- }
81
-
82
- /**
83
- * @since 1.0.0
84
- * @category models
85
- */
86
- export interface Spawner {
87
- readonly _: unique symbol
88
- }
89
-
90
- /**
91
- * @since 1.0.0
92
- * @category models
93
- */
94
- export interface SpawnerFn<W = unknown> {
95
- (id: number): W
96
- }
97
-
98
- /**
99
- * @since 1.0.0
100
- * @category models
101
- */
102
- export declare namespace Worker {
103
- /**
104
- * @since 1.0.0
105
- * @category models
106
- */
107
- export interface Options<I> {
108
- readonly encode?: ((message: I) => Effect.Effect<unknown, WorkerError>) | undefined
109
- readonly transfers?: ((message: I) => ReadonlyArray<unknown>) | undefined
110
- readonly queue?: WorkerQueue<I> | undefined
111
- readonly initialMessage?: LazyArg<I> | undefined
112
- }
113
-
114
- /**
115
- * @since 1.0.0
116
- * @category models
117
- */
118
- export type Request<I = unknown> =
119
- | readonly [id: number, data: 0, I, trace: Span | undefined]
120
- | readonly [id: number, interrupt: 1]
121
-
122
- /**
123
- * @since 1.0.0
124
- * @category models
125
- */
126
- export type Span = readonly [traceId: string, spanId: string, sampled: boolean]
127
-
128
- /**
129
- * @since 1.0.0
130
- * @category models
131
- */
132
- export type Response<E, O = unknown> =
133
- | readonly [id: number, data: 0, ReadonlyArray<O>]
134
- | readonly [id: number, end: 1]
135
- | readonly [id: number, end: 1, ReadonlyArray<O>]
136
- | readonly [id: number, error: 2, E]
137
- | readonly [id: number, defect: 3, Schema.CauseEncoded<WorkerErrorFrom, unknown>]
138
- }
139
-
140
- /**
141
- * @since 1.0.0
142
- * @category models
143
- */
144
- export interface WorkerPool<I, O, E = never> {
145
- readonly backing: Pool.Pool<Worker<I, O, E>, WorkerError>
146
- readonly broadcast: (message: I) => Effect.Effect<void, E | WorkerError>
147
- readonly execute: (message: I) => Stream.Stream<O, E | WorkerError>
148
- readonly executeEffect: (message: I) => Effect.Effect<O, E | WorkerError>
149
- }
150
-
151
- /**
152
- * @since 1.0.0
153
- * @category models
154
- */
155
- export declare namespace WorkerPool {
156
- /**
157
- * @since 1.0.0
158
- * @category models
159
- */
160
- export type Options<I> = Worker.Options<I> &
161
- (
162
- | {
163
- readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<void, WorkerError>
164
- readonly size: number
165
- readonly concurrency?: number | undefined
166
- readonly targetUtilization?: number | undefined
167
- }
168
- | {
169
- readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<void, WorkerError>
170
- readonly minSize: number
171
- readonly maxSize: number
172
- readonly concurrency?: number | undefined
173
- readonly targetUtilization?: number | undefined
174
- readonly timeToLive: Duration.DurationInput
175
- }
176
- )
177
- }
178
-
179
- /**
180
- * @category models
181
- * @since 1.0.0
182
- */
183
- export interface WorkerQueue<I> {
184
- readonly offer: (id: number, item: I, span: Option.Option<Tracer.Span>) => Effect.Effect<void>
185
- readonly take: Effect.Effect<readonly [id: number, item: I, span: Option.Option<Tracer.Span>]>
186
- readonly shutdown: Effect.Effect<void>
187
- }
188
-
189
- /**
190
- * @since 1.0.0
191
- * @category type ids
192
- */
193
- export const WorkerManagerTypeId: unique symbol = internal.WorkerManagerTypeId
194
-
195
- /**
196
- * @since 1.0.0
197
- * @category type ids
198
- */
199
- export type WorkerManagerTypeId = typeof WorkerManagerTypeId
200
-
201
- /**
202
- * @since 1.0.0
203
- * @category models
204
- */
205
- export interface WorkerManager {
206
- readonly [WorkerManagerTypeId]: WorkerManagerTypeId
207
- readonly spawn: <I, O, E>(
208
- options: Worker.Options<I>,
209
- ) => Effect.Effect<Worker<I, O, E>, WorkerError, Scope.Scope | Spawner>
210
- }
211
-
212
- /**
213
- * @since 1.0.0
214
- * @category tags
215
- */
216
- export const WorkerManager: Context.Tag<WorkerManager, WorkerManager> = internal.WorkerManager
217
-
218
- /**
219
- * @since 1.0.0
220
- * @category constructors
221
- */
222
- export const makeManager: Effect.Effect<WorkerManager, never, PlatformWorker> = internal.makeManager
223
-
224
- /**
225
- * @since 1.0.0
226
- * @category layers
227
- */
228
- export const layerManager: Layer.Layer<WorkerManager, never, PlatformWorker> = internal.layerManager
229
-
230
- /**
231
- * @since 1.0.0
232
- * @category constructors
233
- */
234
- export const makePool: <I, O, E>(
235
- options: WorkerPool.Options<I>,
236
- ) => Effect.Effect<WorkerPool<I, O, E>, WorkerError, WorkerManager | Spawner | Scope.Scope> = internal.makePool
237
-
238
- /**
239
- * @since 1.0.0
240
- * @category constructors
241
- */
242
- export const makePoolLayer: <Tag, I, O, E>(
243
- tag: Context.Tag<Tag, WorkerPool<I, O, E>>,
244
- options: WorkerPool.Options<I>,
245
- ) => Layer.Layer<Tag, WorkerError, WorkerManager | Spawner> = internal.makePoolLayer
246
-
247
- /**
248
- * @since 1.0.0
249
- * @category models
250
- */
251
- export interface SerializedWorker<I extends Schema.TaggedRequest.All> {
252
- readonly id: number
253
- readonly execute: <Req extends I>(
254
- message: Req,
255
- ) => Req extends Serializable.WithResult<infer A, infer _I, infer E, infer _EI, infer R>
256
- ? Stream.Stream<A, E | WorkerError | ParseResult.ParseError, R>
257
- : never
258
- readonly executeEffect: <Req extends I>(
259
- message: Req,
260
- ) => Req extends Serializable.WithResult<infer A, infer _I, infer E, infer _EI, infer R>
261
- ? Effect.Effect<A, E | WorkerError | ParseResult.ParseError, R>
262
- : never
263
- }
264
-
265
- /**
266
- * @since 1.0.0
267
- * @category models
268
- */
269
- export declare namespace SerializedWorker {
270
- /**
271
- * @since 1.0.0
272
- * @category models
273
- */
274
- export type Options<I> =
275
- Extract<I, { readonly _tag: 'InitialMessage' }> extends never
276
- ? BaseOptions<I> & {
277
- readonly initialMessage?: LazyArg<I>
278
- }
279
- : BaseOptions<I> & {
280
- readonly initialMessage: LazyArg<Extract<I, { readonly _tag: 'InitialMessage' }>>
281
- }
282
-
283
- /**
284
- * @since 1.0.0
285
- * @category models
286
- */
287
- export interface BaseOptions<I> {
288
- readonly queue?: WorkerQueue<I> | undefined
289
- }
290
- }
291
-
292
- /**
293
- * @since 1.0.0
294
- * @category models
295
- */
296
- export interface SerializedWorkerPool<I extends Schema.TaggedRequest.All> {
297
- readonly backing: Pool.Pool<SerializedWorker<I>, WorkerError>
298
- readonly broadcast: <Req extends I>(
299
- message: Req,
300
- ) => Req extends Serializable.WithResult<infer _A, infer _I, infer E, infer _EI, infer R>
301
- ? Effect.Effect<void, E | WorkerError | ParseResult.ParseError, R>
302
- : never
303
- readonly execute: <Req extends I>(
304
- message: Req,
305
- ) => Req extends Serializable.WithResult<infer A, infer _I, infer E, infer _EI, infer R>
306
- ? Stream.Stream<A, E | WorkerError | ParseResult.ParseError, R>
307
- : never
308
- readonly executeEffect: <Req extends I>(
309
- message: Req,
310
- ) => Req extends Serializable.WithResult<infer A, infer _I, infer E, infer _EI, infer R>
311
- ? Effect.Effect<A, E | WorkerError | ParseResult.ParseError, R>
312
- : never
313
- }
314
-
315
- /**
316
- * @since 1.0.0
317
- * @category models
318
- */
319
- export declare namespace SerializedWorkerPool {
320
- /**
321
- * @since 1.0.0
322
- * @category models
323
- */
324
- export type Options<I> = SerializedWorker.Options<I> &
325
- (
326
- | {
327
- readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<void, WorkerError>
328
- readonly size: number
329
- readonly concurrency?: number | undefined
330
- readonly targetUtilization?: number | undefined
331
- }
332
- | {
333
- readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<void, WorkerError>
334
- readonly minSize: number
335
- readonly maxSize: number
336
- readonly concurrency?: number | undefined
337
- readonly targetUtilization?: number | undefined
338
- readonly timeToLive: Duration.DurationInput
339
- }
340
- )
341
- }
342
-
343
- /**
344
- * @since 1.0.0
345
- * @category constructors
346
- */
347
- export const makeSerialized: <I extends Schema.TaggedRequest.All>(
348
- options: SerializedWorker.Options<I>,
349
- ) => Effect.Effect<SerializedWorker<I>, WorkerError, WorkerManager | Spawner | Scope.Scope> = internal.makeSerialized
350
-
351
- /**
352
- * @since 1.0.0
353
- * @category constructors
354
- */
355
- export const makePoolSerialized: <I extends Schema.TaggedRequest.All>(
356
- options: SerializedWorkerPool.Options<I>,
357
- ) => Effect.Effect<SerializedWorkerPool<I>, WorkerError, WorkerManager | Spawner | Scope.Scope> =
358
- internal.makePoolSerialized
359
-
360
- /**
361
- * @since 1.0.0
362
- * @category layers
363
- */
364
- export const makePoolSerializedLayer: <Tag, I extends Schema.TaggedRequest.All>(
365
- tag: Context.Tag<Tag, SerializedWorkerPool<I>>,
366
- options: SerializedWorkerPool.Options<I>,
367
- ) => Layer.Layer<Tag, WorkerError, WorkerManager | Spawner> = internal.makePoolSerializedLayer
368
-
369
- /**
370
- * @since 1.0.0
371
- * @category layers
372
- */
373
- export const layerSpawner: <W = unknown>(spawner: SpawnerFn<W>) => Layer.Layer<Spawner, never, never> =
374
- internal.layerSpawner
@@ -1,79 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Schema from '@effect/schema/Schema'
5
- import type * as Cause from 'effect/Cause'
6
- import * as Inspectable from 'effect/Inspectable'
7
- import * as Predicate from 'effect/Predicate'
8
-
9
- import * as internal from './internal/workerError.js'
10
-
11
- /**
12
- * @since 1.0.0
13
- * @category type ids
14
- */
15
- export const WorkerErrorTypeId: unique symbol = internal.WorkerErrorTypeId
16
-
17
- /**
18
- * @since 1.0.0
19
- * @category type ids
20
- */
21
- export type WorkerErrorTypeId = typeof WorkerErrorTypeId
22
-
23
- /**
24
- * @since 1.0.0
25
- * @category predicates
26
- */
27
- export const isWorkerError = (u: unknown): u is WorkerError => Predicate.hasProperty(u, WorkerErrorTypeId)
28
-
29
- /**
30
- * @since 1.0.0
31
- * @category errors
32
- */
33
- export class WorkerError extends Schema.TaggedError<WorkerError>()('WorkerError', {
34
- reason: Schema.Literal('spawn', 'decode', 'send', 'unknown', 'encode'),
35
- error: Schema.Defect,
36
- }) {
37
- /**
38
- * @since 1.0.0
39
- */
40
- readonly [WorkerErrorTypeId]: WorkerErrorTypeId = WorkerErrorTypeId
41
-
42
- /**
43
- * @since 1.0.0
44
- */
45
- static readonly Cause: Schema.Schema<Cause.Cause<WorkerError>, Schema.CauseEncoded<WorkerErrorFrom, unknown>> =
46
- Schema.Cause({ error: this, defect: Schema.Defect })
47
-
48
- /**
49
- * @since 1.0.0
50
- */
51
- static readonly encodeCause: (a: Cause.Cause<WorkerError>) => Schema.CauseEncoded<WorkerErrorFrom, unknown> =
52
- Schema.encodeSync(this.Cause)
53
-
54
- /**
55
- * @since 1.0.0
56
- */
57
- static readonly decodeCause: (u: Schema.CauseEncoded<WorkerErrorFrom, Schema.Defect>) => Cause.Cause<WorkerError> =
58
- Schema.decodeSync(this.Cause)
59
-
60
- /**
61
- * @since 1.0.0
62
- */
63
- get message() {
64
- const message = Predicate.hasProperty(this.error, 'message')
65
- ? this.error.message
66
- : Inspectable.toStringUnknown(this.error, undefined)
67
- return `${this.reason}: ${message}`
68
- }
69
- }
70
-
71
- /**
72
- * @since 1.0.0
73
- * @category errors
74
- */
75
- export interface WorkerErrorFrom {
76
- readonly _tag: 'WorkerError'
77
- readonly reason: 'spawn' | 'decode' | 'send' | 'unknown' | 'encode'
78
- readonly error: unknown
79
- }
@@ -1,181 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import type * as Schema from '@effect/schema/Schema'
5
- import type * as Serializable from '@effect/schema/Serializable'
6
- import type * as Context from 'effect/Context'
7
- import type * as Effect from 'effect/Effect'
8
- import type * as Layer from 'effect/Layer'
9
- import type * as Queue from 'effect/Queue'
10
- import type * as Scope from 'effect/Scope'
11
- import type * as Stream from 'effect/Stream'
12
-
13
- import * as internal from './internal/workerRunner.js'
14
- import type { WorkerError } from './WorkerError.js'
15
-
16
- /**
17
- * @since 1.0.0
18
- * @category models
19
- */
20
- export interface BackingRunner<I, O> {
21
- readonly queue: Queue.Dequeue<readonly [portId: number, message: I]>
22
- readonly send: (portId: number, message: O, transfers?: ReadonlyArray<unknown>) => Effect.Effect<void>
23
- }
24
-
25
- /**
26
- * @since 1.0.0
27
- * @category models
28
- */
29
- export declare namespace BackingRunner {
30
- /**
31
- * @since 1.0.0
32
- * @category models
33
- */
34
- export type Message<I> = readonly [request: 0, I] | readonly [close: 1]
35
- }
36
-
37
- /**
38
- * @since 1.0.0
39
- * @category type ids
40
- */
41
- export const PlatformRunnerTypeId: unique symbol = internal.PlatformRunnerTypeId
42
-
43
- /**
44
- * @since 1.0.0
45
- * @category type ids
46
- */
47
- export type PlatformRunnerTypeId = typeof PlatformRunnerTypeId
48
-
49
- /**
50
- * @since 1.0.0
51
- * @category models
52
- */
53
- export interface PlatformRunner {
54
- readonly [PlatformRunnerTypeId]: PlatformRunnerTypeId
55
- readonly start: <I, O>(shutdown: Effect.Effect<void>) => Effect.Effect<BackingRunner<I, O>, WorkerError, Scope.Scope>
56
- }
57
-
58
- /**
59
- * @since 1.0.0
60
- * @category tags
61
- */
62
- export const PlatformRunner: Context.Tag<PlatformRunner, PlatformRunner> = internal.PlatformRunner
63
-
64
- /**
65
- * @since 1.0.0
66
- * @category models
67
- */
68
- export declare namespace Runner {
69
- /**
70
- * @since 1.0.0
71
- * @category models
72
- */
73
- export interface Options<I, O, E> {
74
- readonly decode?: (message: unknown) => Effect.Effect<I, WorkerError>
75
- readonly encodeOutput?: (request: I, message: O) => Effect.Effect<unknown, WorkerError>
76
- readonly encodeError?: (request: I, error: E) => Effect.Effect<unknown, WorkerError>
77
- readonly transfers?: (message: O | E) => ReadonlyArray<unknown>
78
- }
79
- }
80
-
81
- /**
82
- * @since 1.0.0
83
- * @category constructors
84
- */
85
- export const make: <I, E, R, O>(
86
- process: (request: I) => Stream.Stream<O, E, R> | Effect.Effect<O, E, R>,
87
- options?: Runner.Options<I, O, E> | undefined,
88
- ) => Effect.Effect<void, WorkerError, Scope.Scope | R | PlatformRunner> = internal.make
89
-
90
- /**
91
- * @since 1.0.0
92
- * @category layers
93
- */
94
- export const layer: <I, E, R, O>(
95
- process: (request: I) => Stream.Stream<O, E, R> | Effect.Effect<O, E, R>,
96
- options?: Runner.Options<I, O, E> | undefined,
97
- ) => Layer.Layer<never, WorkerError, R | PlatformRunner> = internal.layer
98
-
99
- /**
100
- * @since 1.0.0
101
- * @category models
102
- */
103
- export declare namespace SerializedRunner {
104
- /**
105
- * @since 1.0.0
106
- */
107
- export type Handlers<A extends Schema.TaggedRequest.All> = {
108
- readonly [K in A['_tag']]: Extract<A, { readonly _tag: K }> extends Serializable.SerializableWithResult<
109
- infer S,
110
- infer _SI,
111
- infer _SR,
112
- infer A,
113
- infer _AI,
114
- infer E,
115
- infer _EI,
116
- infer _RR
117
- >
118
- ? (
119
- _: S,
120
- ) => Stream.Stream<A, E, any> | Effect.Effect<A, E, any> | Layer.Layer<any, E, any> | Layer.Layer<never, E, any>
121
- : never
122
- }
123
-
124
- /**
125
- * @since 1.0.0
126
- */
127
- export type HandlersContext<Handlers extends Record<string, (...args: ReadonlyArray<any>) => any>> =
128
- | Exclude<
129
- {
130
- [K in keyof Handlers]: ReturnType<Handlers[K]> extends Stream.Stream<infer _A, infer _E, infer R> ? R : never
131
- }[keyof Handlers],
132
- InitialContext<Handlers>
133
- >
134
- | InitialEnv<Handlers>
135
-
136
- /**
137
- * @since 1.0.0
138
- */
139
- type InitialContext<Handlers extends Record<string, (...args: ReadonlyArray<any>) => any>> =
140
- Handlers['InitialMessage'] extends (...args: ReadonlyArray<any>) => Layer.Layer<infer A, infer _E, infer _R>
141
- ? A
142
- : never
143
-
144
- /**
145
- * @since 1.0.0
146
- */
147
- type InitialEnv<Handlers extends Record<string, (...args: ReadonlyArray<any>) => any>> =
148
- Handlers['InitialMessage'] extends (...args: ReadonlyArray<any>) => Layer.Layer<infer _A, infer _E, infer R>
149
- ? R
150
- : never
151
- }
152
-
153
- /**
154
- * @since 1.0.0
155
- * @category constructors
156
- */
157
- export const makeSerialized: <
158
- R,
159
- I,
160
- A extends Schema.TaggedRequest.All,
161
- const Handlers extends SerializedRunner.Handlers<A>,
162
- >(
163
- schema: Schema.Schema<A, I, R>,
164
- handlers: Handlers,
165
- ) => Effect.Effect<void, WorkerError, PlatformRunner | Scope.Scope | R | SerializedRunner.HandlersContext<Handlers>> =
166
- internal.makeSerialized
167
-
168
- /**
169
- * @since 1.0.0
170
- * @category layers
171
- */
172
- export const layerSerialized: <
173
- R,
174
- I,
175
- A extends Schema.TaggedRequest.All,
176
- const Handlers extends SerializedRunner.Handlers<A>,
177
- >(
178
- schema: Schema.Schema<A, I, R>,
179
- handlers: Handlers,
180
- ) => Layer.Layer<never, WorkerError, PlatformRunner | R | SerializedRunner.HandlersContext<Handlers>> =
181
- internal.layerSerialized