effect 4.0.0-beta.105 → 4.0.0-beta.107

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 (181) hide show
  1. package/dist/Channel.d.ts +26 -0
  2. package/dist/Channel.d.ts.map +1 -1
  3. package/dist/Channel.js +47 -0
  4. package/dist/Channel.js.map +1 -1
  5. package/dist/Config.js +3 -3
  6. package/dist/Config.js.map +1 -1
  7. package/dist/ConfigProvider.d.ts +35 -3
  8. package/dist/ConfigProvider.d.ts.map +1 -1
  9. package/dist/ConfigProvider.js +41 -8
  10. package/dist/ConfigProvider.js.map +1 -1
  11. package/dist/Duration.d.ts.map +1 -1
  12. package/dist/Duration.js +13 -1
  13. package/dist/Duration.js.map +1 -1
  14. package/dist/Fiber.d.ts +1 -1
  15. package/dist/Fiber.d.ts.map +1 -1
  16. package/dist/Function.d.ts +26 -0
  17. package/dist/Function.d.ts.map +1 -1
  18. package/dist/Function.js +36 -0
  19. package/dist/Function.js.map +1 -1
  20. package/dist/JsonSchema.d.ts.map +1 -1
  21. package/dist/JsonSchema.js +34 -17
  22. package/dist/JsonSchema.js.map +1 -1
  23. package/dist/Schema.d.ts +32 -84
  24. package/dist/Schema.d.ts.map +1 -1
  25. package/dist/Schema.js +58 -54
  26. package/dist/Schema.js.map +1 -1
  27. package/dist/SchemaAST.d.ts +2 -17
  28. package/dist/SchemaAST.d.ts.map +1 -1
  29. package/dist/SchemaAST.js +39 -28
  30. package/dist/SchemaAST.js.map +1 -1
  31. package/dist/SchemaRepresentation.d.ts +44 -7
  32. package/dist/SchemaRepresentation.d.ts.map +1 -1
  33. package/dist/SchemaRepresentation.js +15 -4
  34. package/dist/SchemaRepresentation.js.map +1 -1
  35. package/dist/ScopedRef.d.ts.map +1 -1
  36. package/dist/ScopedRef.js +1 -1
  37. package/dist/ScopedRef.js.map +1 -1
  38. package/dist/Stream.d.ts +10 -0
  39. package/dist/Stream.d.ts.map +1 -1
  40. package/dist/Stream.js +12 -23
  41. package/dist/Stream.js.map +1 -1
  42. package/dist/TxQueue.js +1 -1
  43. package/dist/TxQueue.js.map +1 -1
  44. package/dist/internal/effect.js +2 -4
  45. package/dist/internal/effect.js.map +1 -1
  46. package/dist/internal/executionPlan.js +3 -2
  47. package/dist/internal/executionPlan.js.map +1 -1
  48. package/dist/internal/rcRef.js +18 -13
  49. package/dist/internal/rcRef.js.map +1 -1
  50. package/dist/internal/schema/fromJsonSchemaDocument.js +32 -16
  51. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  52. package/dist/internal/schema/toArbitrary.d.ts +1 -4
  53. package/dist/internal/schema/toArbitrary.d.ts.map +1 -1
  54. package/dist/internal/schema/toArbitrary.js +0 -74
  55. package/dist/internal/schema/toArbitrary.js.map +1 -1
  56. package/dist/internal/schema/toJsonSchemaDocument.js +18 -4
  57. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  58. package/dist/internal/schema/toRepresentation.js +45 -43
  59. package/dist/internal/schema/toRepresentation.js.map +1 -1
  60. package/dist/testing/TestSchema.js +2 -2
  61. package/dist/testing/TestSchema.js.map +1 -1
  62. package/dist/unstable/ai/McpSchema.d.ts +128 -128
  63. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  64. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  65. package/dist/unstable/ai/McpServer.js +23 -11
  66. package/dist/unstable/ai/McpServer.js.map +1 -1
  67. package/dist/unstable/ai/Prompt.d.ts +4 -3
  68. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  69. package/dist/unstable/ai/Prompt.js +38 -13
  70. package/dist/unstable/ai/Prompt.js.map +1 -1
  71. package/dist/unstable/cli/Argument.d.ts +6 -3
  72. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  73. package/dist/unstable/cli/Argument.js +2 -1
  74. package/dist/unstable/cli/Argument.js.map +1 -1
  75. package/dist/unstable/cli/CliError.d.ts +20 -1
  76. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  77. package/dist/unstable/cli/CliError.js +26 -2
  78. package/dist/unstable/cli/CliError.js.map +1 -1
  79. package/dist/unstable/cli/Command.d.ts +23 -0
  80. package/dist/unstable/cli/Command.d.ts.map +1 -1
  81. package/dist/unstable/cli/Command.js +23 -4
  82. package/dist/unstable/cli/Command.js.map +1 -1
  83. package/dist/unstable/cluster/Entity.d.ts +2 -2
  84. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  85. package/dist/unstable/cluster/Entity.js.map +1 -1
  86. package/dist/unstable/cluster/EntityProxy.d.ts +3 -3
  87. package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
  88. package/dist/unstable/cluster/EntityProxy.js +4 -3
  89. package/dist/unstable/cluster/EntityProxy.js.map +1 -1
  90. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  91. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  92. package/dist/unstable/cluster/Sharding.js +14 -5
  93. package/dist/unstable/cluster/Sharding.js.map +1 -1
  94. package/dist/unstable/eventlog/EventLogEncryption.d.ts +6 -5
  95. package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
  96. package/dist/unstable/eventlog/EventLogEncryption.js +14 -12
  97. package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
  98. package/dist/unstable/eventlog/EventLogMessage.d.ts +3 -3
  99. package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
  100. package/dist/unstable/eventlog/EventLogMessage.js +2 -3
  101. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
  102. package/dist/unstable/eventlog/EventLogRemote.js +4 -4
  103. package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
  104. package/dist/unstable/eventlog/EventLogServerEncrypted.js +3 -2
  105. package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -1
  106. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  107. package/dist/unstable/http/HttpServerRequest.js +7 -1
  108. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  109. package/dist/unstable/http/Multipart.d.ts +2 -0
  110. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  111. package/dist/unstable/http/Multipart.js +4 -12
  112. package/dist/unstable/http/Multipart.js.map +1 -1
  113. package/dist/unstable/http/MultipartParser/internal/headers.d.ts.map +1 -1
  114. package/dist/unstable/http/MultipartParser/internal/headers.js +16 -2
  115. package/dist/unstable/http/MultipartParser/internal/headers.js.map +1 -1
  116. package/dist/unstable/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  117. package/dist/unstable/http/MultipartParser/internal/multipart.js +23 -8
  118. package/dist/unstable/http/MultipartParser/internal/multipart.js.map +1 -1
  119. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  120. package/dist/unstable/httpapi/OpenApi.js +1 -1
  121. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  122. package/dist/unstable/process/ChildProcess.d.ts +8 -0
  123. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  124. package/dist/unstable/process/ChildProcess.js.map +1 -1
  125. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  126. package/dist/unstable/rpc/RpcClient.js +5 -0
  127. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  128. package/dist/unstable/sql/Migrator.d.ts +9 -1
  129. package/dist/unstable/sql/Migrator.d.ts.map +1 -1
  130. package/dist/unstable/sql/Migrator.js +15 -2
  131. package/dist/unstable/sql/Migrator.js.map +1 -1
  132. package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
  133. package/dist/unstable/sql/SqlResolver.js +20 -16
  134. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  135. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  136. package/dist/unstable/workers/Worker.js +11 -12
  137. package/dist/unstable/workers/Worker.js.map +1 -1
  138. package/package.json +1 -1
  139. package/src/Channel.ts +58 -0
  140. package/src/Config.ts +3 -3
  141. package/src/ConfigProvider.ts +43 -8
  142. package/src/Duration.ts +12 -1
  143. package/src/Fiber.ts +1 -1
  144. package/src/Function.ts +37 -0
  145. package/src/JsonSchema.ts +43 -42
  146. package/src/Schema.ts +68 -146
  147. package/src/SchemaAST.ts +50 -30
  148. package/src/SchemaRepresentation.ts +44 -7
  149. package/src/ScopedRef.ts +3 -1
  150. package/src/Stream.ts +12 -30
  151. package/src/TxQueue.ts +1 -1
  152. package/src/internal/effect.ts +3 -6
  153. package/src/internal/executionPlan.ts +3 -2
  154. package/src/internal/rcRef.ts +24 -16
  155. package/src/internal/schema/fromJsonSchemaDocument.ts +36 -18
  156. package/src/internal/schema/toArbitrary.ts +0 -72
  157. package/src/internal/schema/toJsonSchemaDocument.ts +24 -4
  158. package/src/internal/schema/toRepresentation.ts +66 -48
  159. package/src/testing/TestSchema.ts +2 -2
  160. package/src/unstable/ai/McpServer.ts +23 -11
  161. package/src/unstable/ai/Prompt.ts +37 -15
  162. package/src/unstable/cli/Argument.ts +6 -3
  163. package/src/unstable/cli/CliError.ts +28 -2
  164. package/src/unstable/cli/Command.ts +44 -4
  165. package/src/unstable/cluster/Entity.ts +7 -2
  166. package/src/unstable/cluster/EntityProxy.ts +12 -5
  167. package/src/unstable/cluster/Sharding.ts +29 -17
  168. package/src/unstable/eventlog/EventLogEncryption.ts +15 -16
  169. package/src/unstable/eventlog/EventLogMessage.ts +2 -3
  170. package/src/unstable/eventlog/EventLogRemote.ts +4 -4
  171. package/src/unstable/eventlog/EventLogServerEncrypted.ts +2 -2
  172. package/src/unstable/http/HttpServerRequest.ts +8 -3
  173. package/src/unstable/http/Multipart.ts +4 -13
  174. package/src/unstable/http/MultipartParser/internal/headers.ts +16 -387
  175. package/src/unstable/http/MultipartParser/internal/multipart.ts +25 -8
  176. package/src/unstable/httpapi/OpenApi.ts +4 -1
  177. package/src/unstable/process/ChildProcess.ts +8 -0
  178. package/src/unstable/rpc/RpcClient.ts +5 -0
  179. package/src/unstable/sql/Migrator.ts +22 -9
  180. package/src/unstable/sql/SqlResolver.ts +28 -20
  181. package/src/unstable/workers/Worker.ts +13 -14
@@ -134,7 +134,8 @@ export const ordered = <Req extends Schema.Constraint, Res extends Schema.Constr
134
134
  key: transactionKey,
135
135
  resolver: Effect.fnUntraced(function*(entries) {
136
136
  const [inputs, encodedEntries] = yield* partitionRequests(entries, options.Request)
137
- const results = yield* options.execute(inputs as any).pipe(
137
+ if (!Arr.isArrayNonEmpty(inputs)) return
138
+ const results = yield* options.execute(inputs).pipe(
138
139
  Effect.provideContext(entries[0].context)
139
140
  )
140
141
  if (results.length !== inputs.length) {
@@ -190,8 +191,9 @@ export const grouped = <Req extends Schema.Constraint, Res extends Schema.Constr
190
191
  key: transactionKey,
191
192
  resolver: Effect.fnUntraced(function*(entries) {
192
193
  const [inputs] = yield* partitionRequests(entries, options.Request)
194
+ if (!Arr.isArrayNonEmpty(inputs)) return
193
195
  const resultMap = MutableHashMap.empty<K, Arr.NonEmptyArray<Res["Type"]>>()
194
- const results = yield* options.execute(inputs as any).pipe(
196
+ const results = yield* options.execute(inputs).pipe(
195
197
  Effect.provideContext(entries[0].context)
196
198
  )
197
199
  const decodedResults = yield* decodeResults(results).pipe(
@@ -258,7 +260,8 @@ export const findById = <Id extends Schema.Constraint, Res extends Schema.Constr
258
260
  key: transactionKey,
259
261
  resolver: Effect.fnUntraced(function*(entries) {
260
262
  const [inputs, idMap] = yield* partitionRequestsById(entries, options.Id)
261
- const results = yield* options.execute(inputs as any).pipe(
263
+ if (!Arr.isArrayNonEmpty(inputs)) return
264
+ const results = yield* options.execute(inputs).pipe(
262
265
  Effect.provideContext(entries[0].context)
263
266
  )
264
267
  const decodedResults = yield* decodeResults(results).pipe(
@@ -311,7 +314,8 @@ const void_ = <Req extends Schema.Constraint, _, E, R>(
311
314
  key: transactionKey,
312
315
  resolver: Effect.fnUntraced(function*(entries) {
313
316
  const [inputs] = yield* partitionRequests(entries, options.Request)
314
- yield* options.execute(inputs as any).pipe(
317
+ if (!Arr.isArrayNonEmpty(inputs)) return
318
+ yield* options.execute(inputs).pipe(
315
319
  Effect.provideContext(entries[0].context)
316
320
  )
317
321
  for (let i = 0; i < entries.length; i++) {
@@ -366,35 +370,39 @@ const partitionRequestsById = function*<In, A, E, R, InE>(
366
370
  const len = requests.length
367
371
  const inputs = Arr.empty<InE>()
368
372
  const byIdMap = MutableHashMap.empty<In, Request.Entry<SqlRequest<In, A, E, R>>>()
369
- let entry!: Request.Entry<SqlRequest<In, A, E, R>>
370
- const encode = Schema.encodeEffect(schema)
371
- const handle = Effect.matchCauseEager({
372
- onFailure(cause: Cause.Cause<Schema.SchemaError>) {
373
- entry.completeUnsafe(Exit.failCause(cause))
374
- },
375
- onSuccess(value: InE) {
376
- inputs.push(value)
377
- }
378
- })
379
373
 
380
374
  for (let i = 0; i < len; i++) {
381
- entry = requests[i]
375
+ const entry = requests[i]
382
376
  const existing = MutableHashMap.get(byIdMap, entry.request.payload)
383
377
  if (Option.isSome(existing)) {
384
- const duplicate = entry
378
+ const previous = existing.value
385
379
  MutableHashMap.set(byIdMap, entry.request.payload, {
386
- ...existing.value,
380
+ ...previous,
387
381
  completeUnsafe(exit) {
388
- existing.value.completeUnsafe(exit)
389
- duplicate.completeUnsafe(exit)
382
+ previous.completeUnsafe(exit)
383
+ entry.completeUnsafe(exit)
390
384
  }
391
385
  })
392
386
  } else {
393
- yield (Effect.provideContext(handle(encode(entry.request.payload)), entry.context) as Effect.Effect<void>)
394
387
  MutableHashMap.set(byIdMap, entry.request.payload, entry)
395
388
  }
396
389
  }
397
390
 
391
+ const encode = Schema.encodeEffect(schema)
392
+ for (const [, entry] of byIdMap) {
393
+ yield* Effect.provideContext(
394
+ Effect.matchCauseEager(encode(entry.request.payload), {
395
+ onFailure(cause) {
396
+ entry.completeUnsafe(Exit.failCause(cause))
397
+ },
398
+ onSuccess(value) {
399
+ inputs.push(value)
400
+ }
401
+ }),
402
+ entry.context
403
+ )
404
+ }
405
+
398
406
  return [inputs, byIdMap] as const
399
407
  }
400
408
 
@@ -165,6 +165,17 @@ export const makePlatform = <W>() =>
165
165
  const spawn = (yield* Spawner) as SpawnerFn<W>
166
166
  let currentPort: P | undefined
167
167
  const buffer: Array<[unknown, ReadonlyArray<unknown> | undefined]> = []
168
+ const sendToPort = (port: P, message: unknown, transfers?: ReadonlyArray<unknown>) =>
169
+ Effect.try({
170
+ try: () => port.postMessage([0, message], transfers as any),
171
+ catch: (cause) =>
172
+ new WorkerError({
173
+ reason: new WorkerSendError({
174
+ message: "Failed to send message to worker",
175
+ cause
176
+ })
177
+ })
178
+ })
168
179
 
169
180
  const run = <A, E, R>(
170
181
  handler: (_: O) => Effect.Effect<A, E, R>,
@@ -209,7 +220,7 @@ export const makePlatform = <W>() =>
209
220
  currentPort = port
210
221
  if (buffer.length > 0) {
211
222
  for (const [message, transfers] of buffer) {
212
- port.postMessage([0, message], transfers as any)
223
+ yield* sendToPort(port, message, transfers)
213
224
  }
214
225
  buffer.length = 0
215
226
  }
@@ -224,19 +235,7 @@ export const makePlatform = <W>() =>
224
235
  buffer.push([message, transfers])
225
236
  return Effect.void
226
237
  }
227
- try {
228
- currentPort.postMessage([0, message], transfers as any)
229
- return Effect.void
230
- } catch (cause) {
231
- return Effect.fail(
232
- new WorkerError({
233
- reason: new WorkerSendError({
234
- message: "Failed to send message to worker",
235
- cause
236
- })
237
- })
238
- )
239
- }
238
+ return sendToPort(currentPort, message, transfers)
240
239
  })
241
240
 
242
241
  return { run, send }