effect 3.13.11 → 3.14.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 (176) hide show
  1. package/LayerMap/package.json +6 -0
  2. package/dist/cjs/Array.js +29 -2
  3. package/dist/cjs/Array.js.map +1 -1
  4. package/dist/cjs/DateTime.js +16 -1
  5. package/dist/cjs/DateTime.js.map +1 -1
  6. package/dist/cjs/Effect.js +45 -3
  7. package/dist/cjs/Effect.js.map +1 -1
  8. package/dist/cjs/Either.js +35 -1
  9. package/dist/cjs/Either.js.map +1 -1
  10. package/dist/cjs/FiberSet.js +14 -2
  11. package/dist/cjs/FiberSet.js.map +1 -1
  12. package/dist/cjs/HashMap.js +11 -1
  13. package/dist/cjs/HashMap.js.map +1 -1
  14. package/dist/cjs/JSONSchema.js +6 -1
  15. package/dist/cjs/JSONSchema.js.map +1 -1
  16. package/dist/cjs/Layer.js +6 -1
  17. package/dist/cjs/Layer.js.map +1 -1
  18. package/dist/cjs/LayerMap.js +183 -0
  19. package/dist/cjs/LayerMap.js.map +1 -0
  20. package/dist/cjs/MutableHashMap.js +36 -4
  21. package/dist/cjs/MutableHashMap.js.map +1 -1
  22. package/dist/cjs/MutableRef.js.map +1 -1
  23. package/dist/cjs/Runtime.js.map +1 -1
  24. package/dist/cjs/Schema.js +2 -2
  25. package/dist/cjs/Schema.js.map +1 -1
  26. package/dist/cjs/SchemaAST.js +37 -33
  27. package/dist/cjs/SchemaAST.js.map +1 -1
  28. package/dist/cjs/TestClock.js +3 -2
  29. package/dist/cjs/TestClock.js.map +1 -1
  30. package/dist/cjs/Tracer.js.map +1 -1
  31. package/dist/cjs/index.js +4 -2
  32. package/dist/cjs/index.js.map +1 -1
  33. package/dist/cjs/internal/channel/channelExecutor.js +6 -1
  34. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  35. package/dist/cjs/internal/core-effect.js +13 -2
  36. package/dist/cjs/internal/core-effect.js.map +1 -1
  37. package/dist/cjs/internal/core.js +2 -1
  38. package/dist/cjs/internal/core.js.map +1 -1
  39. package/dist/cjs/internal/dateTime.js +3 -1
  40. package/dist/cjs/internal/dateTime.js.map +1 -1
  41. package/dist/cjs/internal/effect/circular.js +5 -0
  42. package/dist/cjs/internal/effect/circular.js.map +1 -1
  43. package/dist/cjs/internal/hashMap.js +3 -1
  44. package/dist/cjs/internal/hashMap.js.map +1 -1
  45. package/dist/cjs/internal/layer.js +7 -3
  46. package/dist/cjs/internal/layer.js.map +1 -1
  47. package/dist/cjs/internal/rcMap.js +11 -1
  48. package/dist/cjs/internal/rcMap.js.map +1 -1
  49. package/dist/cjs/internal/runtime.js +21 -21
  50. package/dist/cjs/internal/runtime.js.map +1 -1
  51. package/dist/cjs/internal/schema/errors.js +1 -4
  52. package/dist/cjs/internal/schema/errors.js.map +1 -1
  53. package/dist/cjs/internal/tracer.js +6 -2
  54. package/dist/cjs/internal/tracer.js.map +1 -1
  55. package/dist/cjs/internal/version.js +1 -1
  56. package/dist/cjs/internal/version.js.map +1 -1
  57. package/dist/dts/Array.d.ts +58 -0
  58. package/dist/dts/Array.d.ts.map +1 -1
  59. package/dist/dts/Data.d.ts +4 -4
  60. package/dist/dts/Data.d.ts.map +1 -1
  61. package/dist/dts/DateTime.d.ts +15 -0
  62. package/dist/dts/DateTime.d.ts.map +1 -1
  63. package/dist/dts/Effect.d.ts +66 -0
  64. package/dist/dts/Effect.d.ts.map +1 -1
  65. package/dist/dts/Either.d.ts +30 -0
  66. package/dist/dts/Either.d.ts.map +1 -1
  67. package/dist/dts/FiberSet.d.ts.map +1 -1
  68. package/dist/dts/HashMap.d.ts +31 -0
  69. package/dist/dts/HashMap.d.ts.map +1 -1
  70. package/dist/dts/Layer.d.ts +12 -0
  71. package/dist/dts/Layer.d.ts.map +1 -1
  72. package/dist/dts/LayerMap.d.ts +242 -0
  73. package/dist/dts/LayerMap.d.ts.map +1 -0
  74. package/dist/dts/MutableHashMap.d.ts +22 -0
  75. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  76. package/dist/dts/MutableRef.d.ts +1 -0
  77. package/dist/dts/MutableRef.d.ts.map +1 -1
  78. package/dist/dts/Runtime.d.ts +144 -10
  79. package/dist/dts/Runtime.d.ts.map +1 -1
  80. package/dist/dts/SchemaAST.d.ts +1 -1
  81. package/dist/dts/SchemaAST.d.ts.map +1 -1
  82. package/dist/dts/TestClock.d.ts +3 -2
  83. package/dist/dts/TestClock.d.ts.map +1 -1
  84. package/dist/dts/Tracer.d.ts +1 -0
  85. package/dist/dts/Tracer.d.ts.map +1 -1
  86. package/dist/dts/index.d.ts +4 -0
  87. package/dist/dts/index.d.ts.map +1 -1
  88. package/dist/dts/internal/channel/channelExecutor.d.ts.map +1 -1
  89. package/dist/dts/internal/core-effect.d.ts.map +1 -1
  90. package/dist/dts/internal/layer.d.ts.map +1 -1
  91. package/dist/esm/Array.js +28 -1
  92. package/dist/esm/Array.js.map +1 -1
  93. package/dist/esm/DateTime.js +15 -0
  94. package/dist/esm/DateTime.js.map +1 -1
  95. package/dist/esm/Effect.js +42 -0
  96. package/dist/esm/Effect.js.map +1 -1
  97. package/dist/esm/Either.js +33 -0
  98. package/dist/esm/Either.js.map +1 -1
  99. package/dist/esm/FiberSet.js +13 -1
  100. package/dist/esm/FiberSet.js.map +1 -1
  101. package/dist/esm/HashMap.js +10 -0
  102. package/dist/esm/HashMap.js.map +1 -1
  103. package/dist/esm/JSONSchema.js +6 -1
  104. package/dist/esm/JSONSchema.js.map +1 -1
  105. package/dist/esm/Layer.js +5 -0
  106. package/dist/esm/Layer.js.map +1 -1
  107. package/dist/esm/LayerMap.js +172 -0
  108. package/dist/esm/LayerMap.js.map +1 -0
  109. package/dist/esm/MutableHashMap.js +33 -3
  110. package/dist/esm/MutableHashMap.js.map +1 -1
  111. package/dist/esm/MutableRef.js.map +1 -1
  112. package/dist/esm/Runtime.js.map +1 -1
  113. package/dist/esm/Schema.js +2 -2
  114. package/dist/esm/Schema.js.map +1 -1
  115. package/dist/esm/SchemaAST.js +31 -27
  116. package/dist/esm/SchemaAST.js.map +1 -1
  117. package/dist/esm/TestClock.js +3 -2
  118. package/dist/esm/TestClock.js.map +1 -1
  119. package/dist/esm/Tracer.js.map +1 -1
  120. package/dist/esm/index.js +4 -0
  121. package/dist/esm/index.js.map +1 -1
  122. package/dist/esm/internal/channel/channelExecutor.js +6 -1
  123. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  124. package/dist/esm/internal/core-effect.js +10 -0
  125. package/dist/esm/internal/core-effect.js.map +1 -1
  126. package/dist/esm/internal/core.js +2 -1
  127. package/dist/esm/internal/core.js.map +1 -1
  128. package/dist/esm/internal/dateTime.js +2 -0
  129. package/dist/esm/internal/dateTime.js.map +1 -1
  130. package/dist/esm/internal/effect/circular.js +5 -0
  131. package/dist/esm/internal/effect/circular.js.map +1 -1
  132. package/dist/esm/internal/hashMap.js +2 -0
  133. package/dist/esm/internal/hashMap.js.map +1 -1
  134. package/dist/esm/internal/layer.js +6 -2
  135. package/dist/esm/internal/layer.js.map +1 -1
  136. package/dist/esm/internal/rcMap.js +11 -1
  137. package/dist/esm/internal/rcMap.js.map +1 -1
  138. package/dist/esm/internal/runtime.js +21 -15
  139. package/dist/esm/internal/runtime.js.map +1 -1
  140. package/dist/esm/internal/schema/errors.js +0 -2
  141. package/dist/esm/internal/schema/errors.js.map +1 -1
  142. package/dist/esm/internal/tracer.js +6 -2
  143. package/dist/esm/internal/tracer.js.map +1 -1
  144. package/dist/esm/internal/version.js +1 -1
  145. package/dist/esm/internal/version.js.map +1 -1
  146. package/package.json +9 -1
  147. package/src/Array.ts +69 -1
  148. package/src/Data.ts +4 -4
  149. package/src/DateTime.ts +16 -0
  150. package/src/Effect.ts +143 -0
  151. package/src/Either.ts +36 -0
  152. package/src/FiberSet.ts +14 -1
  153. package/src/HashMap.ts +32 -0
  154. package/src/JSONSchema.ts +6 -2
  155. package/src/Layer.ts +14 -0
  156. package/src/LayerMap.ts +396 -0
  157. package/src/MutableHashMap.ts +45 -3
  158. package/src/MutableRef.ts +0 -2
  159. package/src/Runtime.ts +158 -20
  160. package/src/Schema.ts +2 -2
  161. package/src/SchemaAST.ts +45 -30
  162. package/src/TestClock.ts +10 -3
  163. package/src/Tracer.ts +1 -0
  164. package/src/index.ts +5 -0
  165. package/src/internal/channel/channelExecutor.ts +11 -4
  166. package/src/internal/core-effect.ts +15 -0
  167. package/src/internal/core.ts +2 -1
  168. package/src/internal/dateTime.ts +3 -0
  169. package/src/internal/effect/circular.ts +5 -0
  170. package/src/internal/hashMap.ts +9 -0
  171. package/src/internal/layer.ts +14 -2
  172. package/src/internal/rcMap.ts +13 -3
  173. package/src/internal/runtime.ts +104 -38
  174. package/src/internal/schema/errors.ts +0 -6
  175. package/src/internal/tracer.ts +8 -1
  176. package/src/internal/version.ts +1 -1
@@ -26,9 +26,33 @@ import * as OpCodes from "./opCodes/effect.js"
26
26
  import * as runtimeFlags from "./runtimeFlags.js"
27
27
  import * as supervisor_ from "./supervisor.js"
28
28
 
29
+ const makeDual = <Args extends Array<any>, Return>(
30
+ f: (runtime: Runtime.Runtime<never>, effect: Effect.Effect<any, any>, ...args: Args) => Return
31
+ ): {
32
+ <R>(runtime: Runtime.Runtime<R>): <A, E>(effect: Effect.Effect<A, E, R>, ...args: Args) => Return
33
+ <R, A, E>(runtime: Runtime.Runtime<R>, effect: Effect.Effect<A, E, R>, ...args: Args): Return
34
+ } =>
35
+ function(this: any) {
36
+ if (arguments.length === 1) {
37
+ const runtime = arguments[0]
38
+ return (effect: any, ...args: Args) => f(runtime, effect, ...args)
39
+ }
40
+ return f.apply(this, arguments as any)
41
+ } as any
42
+
29
43
  /** @internal */
30
- export const unsafeFork = <R>(runtime: Runtime.Runtime<R>) =>
31
- <A, E>(
44
+ export const unsafeFork: {
45
+ <R>(runtime: Runtime.Runtime<R>): <A, E>(
46
+ effect: Effect.Effect<A, E, R>,
47
+ options?: Runtime.RunForkOptions | undefined
48
+ ) => Fiber.RuntimeFiber<A, E>
49
+ <R, A, E>(
50
+ runtime: Runtime.Runtime<R>,
51
+ effect: Effect.Effect<A, E, R>,
52
+ options?: Runtime.RunForkOptions | undefined
53
+ ): Fiber.RuntimeFiber<A, E>
54
+ } = makeDual(<R, A, E>(
55
+ runtime: Runtime.Runtime<R>,
32
56
  self: Effect.Effect<A, E, R>,
33
57
  options?: Runtime.RunForkOptions
34
58
  ): Fiber.RuntimeFiber<A, E> => {
@@ -93,15 +117,25 @@ export const unsafeFork = <R>(runtime: Runtime.Runtime<R>) =>
93
117
  }
94
118
 
95
119
  return fiberRuntime
96
- }
120
+ })
97
121
 
98
122
  /** @internal */
99
- export const unsafeRunCallback = <R>(runtime: Runtime.Runtime<R>) =>
100
- <A, E>(
101
- effect: Effect.Effect<A, E, R>,
102
- options: Runtime.RunCallbackOptions<A, E> = {}
103
- ): (fiberId?: FiberId.FiberId, options?: Runtime.RunCallbackOptions<A, E> | undefined) => void => {
104
- const fiberRuntime = unsafeFork(runtime)(effect, options)
123
+ export const unsafeRunCallback: {
124
+ <R>(runtime: Runtime.Runtime<R>): <A, E>(
125
+ effect: Effect.Effect<A, E, R>,
126
+ options?: Runtime.RunCallbackOptions<A, E> | undefined
127
+ ) => (fiberId?: FiberId.FiberId, options?: Runtime.RunCallbackOptions<A, E> | undefined) => void
128
+ <R, A, E>(
129
+ runtime: Runtime.Runtime<R>,
130
+ effect: Effect.Effect<A, E, R>,
131
+ options?: Runtime.RunCallbackOptions<A, E> | undefined
132
+ ): (fiberId?: FiberId.FiberId, options?: Runtime.RunCallbackOptions<A, E> | undefined) => void
133
+ } = makeDual((
134
+ runtime,
135
+ effect,
136
+ options: Runtime.RunCallbackOptions<any, any> = {}
137
+ ): (fiberId?: FiberId.FiberId, options?: Runtime.RunCallbackOptions<any, any> | undefined) => void => {
138
+ const fiberRuntime = unsafeFork(runtime, effect, options)
105
139
 
106
140
  if (options.onExit) {
107
141
  fiberRuntime.addObserver((exit) => {
@@ -119,17 +153,19 @@ export const unsafeRunCallback = <R>(runtime: Runtime.Runtime<R>) =>
119
153
  : undefined
120
154
  }
121
155
  )
122
- }
156
+ })
123
157
 
124
158
  /** @internal */
125
- export const unsafeRunSync = <R>(runtime: Runtime.Runtime<R>) => <A, E>(effect: Effect.Effect<A, E, R>): A => {
159
+ export const unsafeRunSync: {
160
+ <A, E, R>(runtime: Runtime.Runtime<R>, effect: Effect.Effect<A, E, R>): A
161
+ <R>(runtime: Runtime.Runtime<R>): <A, E>(effect: Effect.Effect<A, E, R>) => A
162
+ } = makeDual((runtime, effect) => {
126
163
  const result = unsafeRunSyncExit(runtime)(effect)
127
164
  if (result._tag === "Failure") {
128
165
  throw fiberFailure(result.effect_instruction_i0)
129
- } else {
130
- return result.effect_instruction_i0
131
166
  }
132
- }
167
+ return result.effect_instruction_i0
168
+ })
133
169
 
134
170
  class AsyncFiberExceptionImpl<A, E = never> extends Error implements Runtime.AsyncFiberException<A, E> {
135
171
  readonly _tag = "AsyncFiberException"
@@ -229,31 +265,47 @@ const fastPath = <A, E, R>(effect: Effect.Effect<A, E, R>): Exit.Exit<A, E> | un
229
265
  }
230
266
 
231
267
  /** @internal */
232
- export const unsafeRunSyncExit =
233
- <R>(runtime: Runtime.Runtime<R>) => <A, E>(effect: Effect.Effect<A, E, R>): Exit.Exit<A, E> => {
234
- const op = fastPath(effect)
235
- if (op) {
236
- return op
237
- }
238
- const scheduler = new scheduler_.SyncScheduler()
239
- const fiberRuntime = unsafeFork(runtime)(effect, { scheduler })
240
- scheduler.flush()
241
- const result = fiberRuntime.unsafePoll()
242
- if (result) {
243
- return result
244
- }
245
- return core.exitDie(core.capture(asyncFiberException(fiberRuntime), core.currentSpanFromFiber(fiberRuntime)))
268
+ export const unsafeRunSyncExit: {
269
+ <A, E, R>(runtime: Runtime.Runtime<R>, effect: Effect.Effect<A, E, R>): Exit.Exit<A, E>
270
+ <R>(runtime: Runtime.Runtime<R>): <A, E>(effect: Effect.Effect<A, E, R>) => Exit.Exit<A, E>
271
+ } = makeDual((runtime, effect) => {
272
+ const op = fastPath(effect)
273
+ if (op) {
274
+ return op
246
275
  }
276
+ const scheduler = new scheduler_.SyncScheduler()
277
+ const fiberRuntime = unsafeFork(runtime)(effect, { scheduler })
278
+ scheduler.flush()
279
+ const result = fiberRuntime.unsafePoll()
280
+ if (result) {
281
+ return result
282
+ }
283
+ return core.exitDie(core.capture(asyncFiberException(fiberRuntime), core.currentSpanFromFiber(fiberRuntime)))
284
+ })
247
285
 
248
286
  /** @internal */
249
- export const unsafeRunPromise = <R>(runtime: Runtime.Runtime<R>) =>
250
- <A, E>(
251
- effect: Effect.Effect<A, E, R>,
287
+ export const unsafeRunPromise: {
288
+ <R>(runtime: Runtime.Runtime<R>): <A, E>(
289
+ effect: Effect.Effect<A, E, R>,
290
+ options?: {
291
+ readonly signal?: AbortSignal | undefined
292
+ } | undefined
293
+ ) => Promise<A>
294
+ <R, A, E>(
295
+ runtime: Runtime.Runtime<R>,
296
+ effect: Effect.Effect<A, E, R>,
297
+ options?: {
298
+ readonly signal?: AbortSignal | undefined
299
+ } | undefined
300
+ ): Promise<A>
301
+ } = makeDual((
302
+ runtime,
303
+ effect,
252
304
  options?: {
253
305
  readonly signal?: AbortSignal | undefined
254
306
  } | undefined
255
- ): Promise<A> =>
256
- unsafeRunPromiseExit(runtime)(effect, options).then((result) => {
307
+ ) =>
308
+ unsafeRunPromiseExit(runtime, effect, options).then((result) => {
257
309
  switch (result._tag) {
258
310
  case OpCodes.OP_SUCCESS: {
259
311
  return result.effect_instruction_i0
@@ -263,16 +315,29 @@ export const unsafeRunPromise = <R>(runtime: Runtime.Runtime<R>) =>
263
315
  }
264
316
  }
265
317
  })
318
+ )
266
319
 
267
320
  /** @internal */
268
- export const unsafeRunPromiseExit = <R>(runtime: Runtime.Runtime<R>) =>
269
- <A, E>(
270
- effect: Effect.Effect<A, E, R>,
321
+ export const unsafeRunPromiseExit: {
322
+ <R>(
323
+ runtime: Runtime.Runtime<R>
324
+ ): <A, E>(
325
+ effect: Effect.Effect<A, E, R>,
326
+ options?: { readonly signal?: AbortSignal | undefined } | undefined
327
+ ) => Promise<Exit.Exit<A, E>>
328
+ <R, A, E>(
329
+ runtime: Runtime.Runtime<R>,
330
+ effect: Effect.Effect<A, E, R>,
331
+ options?: { readonly signal?: AbortSignal | undefined } | undefined
332
+ ): Promise<Exit.Exit<A, E>>
333
+ } = makeDual((
334
+ runtime,
335
+ effect,
271
336
  options?: {
272
337
  readonly signal?: AbortSignal | undefined
273
338
  } | undefined
274
- ): Promise<Exit.Exit<A, E>> =>
275
- new Promise((resolve) => {
339
+ ) =>
340
+ new Promise<Exit.Exit<any, any>>((resolve) => {
276
341
  const op = fastPath(effect)
277
342
  if (op) {
278
343
  resolve(op)
@@ -291,6 +356,7 @@ export const unsafeRunPromiseExit = <R>(runtime: Runtime.Runtime<R>) =>
291
356
  }
292
357
  }
293
358
  })
359
+ )
294
360
 
295
361
  /** @internal */
296
362
  export class RuntimeImpl<in R> implements Runtime.Runtime<R> {
@@ -95,12 +95,6 @@ export const getJSONSchemaMissingIdentifierAnnotationErrorMessage = (
95
95
  ast
96
96
  )
97
97
 
98
- /** @internal */
99
- export const getJSONSchemaUnsupportedParameterErrorMessage = (
100
- path: ReadonlyArray<PropertyKey>,
101
- parameter: AST.AST
102
- ): string => getErrorMessage("Unsupported index signature parameter", undefined, path, parameter)
103
-
104
98
  /** @internal */
105
99
  export const getJSONSchemaUnsupportedPostRestElementsErrorMessage = (path: ReadonlyArray<PropertyKey>): string =>
106
100
  getErrorMessage(
@@ -44,12 +44,13 @@ export class NativeSpan implements Tracer.Span {
44
44
  status: Tracer.SpanStatus
45
45
  attributes: Map<string, unknown>
46
46
  events: Array<[name: string, startTime: bigint, attributes: Record<string, unknown>]> = []
47
+ links: Array<Tracer.SpanLink>
47
48
 
48
49
  constructor(
49
50
  readonly name: string,
50
51
  readonly parent: Option.Option<Tracer.AnySpan>,
51
52
  readonly context: Context.Context<never>,
52
- readonly links: ReadonlyArray<Tracer.SpanLink>,
53
+ links: Iterable<Tracer.SpanLink>,
53
54
  readonly startTime: bigint,
54
55
  readonly kind: Tracer.SpanKind
55
56
  ) {
@@ -60,6 +61,7 @@ export class NativeSpan implements Tracer.Span {
60
61
  this.attributes = new Map()
61
62
  this.traceId = parent._tag === "Some" ? parent.value.traceId : randomHexString(32)
62
63
  this.spanId = randomHexString(16)
64
+ this.links = Array.from(links)
63
65
  }
64
66
 
65
67
  end(endTime: bigint, exit: Exit.Exit<unknown, unknown>): void {
@@ -78,6 +80,11 @@ export class NativeSpan implements Tracer.Span {
78
80
  event(name: string, startTime: bigint, attributes?: Record<string, unknown>): void {
79
81
  this.events.push([name, startTime, attributes ?? {}])
80
82
  }
83
+
84
+ addLinks(links: ReadonlyArray<Tracer.SpanLink>): void {
85
+ // eslint-disable-next-line no-restricted-syntax
86
+ this.links.push(...links)
87
+ }
81
88
  }
82
89
 
83
90
  /** @internal */
@@ -1,4 +1,4 @@
1
- let moduleVersion = "3.13.11"
1
+ let moduleVersion = "3.14.0"
2
2
 
3
3
  export const getCurrentVersion = () => moduleVersion
4
4