effect 4.0.0-beta.52 → 4.0.0-beta.54

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 (60) hide show
  1. package/dist/Effect.d.ts +2 -1
  2. package/dist/Effect.d.ts.map +1 -1
  3. package/dist/Effect.js.map +1 -1
  4. package/dist/Effectable.d.ts +29 -0
  5. package/dist/Effectable.d.ts.map +1 -0
  6. package/dist/Effectable.js +31 -0
  7. package/dist/Effectable.js.map +1 -0
  8. package/dist/Schema.js +1 -1
  9. package/dist/Schema.js.map +1 -1
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/internal/effect.js +1 -1
  15. package/dist/internal/effect.js.map +1 -1
  16. package/dist/testing/TestClock.js +1 -1
  17. package/dist/testing/TestClock.js.map +1 -1
  18. package/dist/unstable/cluster/ClusterWorkflowEngine.js +1 -1
  19. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  20. package/dist/unstable/http/HttpIncomingMessage.d.ts.map +1 -1
  21. package/dist/unstable/http/HttpIncomingMessage.js +4 -8
  22. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  23. package/dist/unstable/reactivity/AtomHttpApi.d.ts +7 -4
  24. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  25. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  26. package/dist/unstable/socket/Socket.d.ts +19 -0
  27. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  28. package/dist/unstable/socket/Socket.js +15 -10
  29. package/dist/unstable/socket/Socket.js.map +1 -1
  30. package/dist/unstable/sql/Statement.d.ts +1 -3
  31. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  32. package/dist/unstable/sql/Statement.js +12 -11
  33. package/dist/unstable/sql/Statement.js.map +1 -1
  34. package/dist/unstable/workflow/Activity.d.ts +1 -1
  35. package/dist/unstable/workflow/Activity.d.ts.map +1 -1
  36. package/dist/unstable/workflow/Activity.js +8 -7
  37. package/dist/unstable/workflow/Activity.js.map +1 -1
  38. package/dist/unstable/workflow/DurableDeferred.d.ts +1 -4
  39. package/dist/unstable/workflow/DurableDeferred.d.ts.map +1 -1
  40. package/dist/unstable/workflow/DurableDeferred.js +21 -3
  41. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  42. package/dist/unstable/workflow/Workflow.d.ts +0 -3
  43. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  44. package/dist/unstable/workflow/Workflow.js +12 -8
  45. package/dist/unstable/workflow/Workflow.js.map +1 -1
  46. package/package.json +1 -1
  47. package/src/Effect.ts +4 -1
  48. package/src/Effectable.ts +47 -0
  49. package/src/Schema.ts +1 -1
  50. package/src/index.ts +5 -0
  51. package/src/internal/effect.ts +1 -1
  52. package/src/testing/TestClock.ts +1 -1
  53. package/src/unstable/cluster/ClusterWorkflowEngine.ts +1 -1
  54. package/src/unstable/http/HttpIncomingMessage.ts +4 -4
  55. package/src/unstable/reactivity/AtomHttpApi.ts +14 -4
  56. package/src/unstable/socket/Socket.ts +63 -26
  57. package/src/unstable/sql/Statement.ts +19 -23
  58. package/src/unstable/workflow/Activity.ts +9 -9
  59. package/src/unstable/workflow/DurableDeferred.ts +23 -5
  60. package/src/unstable/workflow/Workflow.ts +14 -10
@@ -1,12 +1,14 @@
1
1
  /**
2
2
  * @since 4.0.0
3
3
  */
4
+ import * as Arr from "../../Array.js";
4
5
  import * as Cause from "../../Cause.js";
5
6
  import * as Context from "../../Context.js";
6
7
  import * as Data from "../../Data.js";
7
8
  import * as Effect from "../../Effect.js";
8
9
  import * as Exit from "../../Exit.js";
9
10
  import * as Fiber from "../../Fiber.js";
11
+ import * as Filter from "../../Filter.js";
10
12
  import { constFalse, constTrue, dual, identity } from "../../Function.js";
11
13
  import * as Layer from "../../Layer.js";
12
14
  import * as Option from "../../Option.js";
@@ -197,11 +199,16 @@ export const intoResult = effect => Effect.contextWith(context => {
197
199
  onSuccess: value => Effect.succeed(new Complete({
198
200
  exit: Exit.succeed(value)
199
201
  })),
200
- onFailure: cause => instance.suspended ? Effect.succeed(new Suspended({
201
- cause: instance.cause
202
- })) : !instance.interrupted && Cause.hasInterruptsOnly(cause) || !captureDefects && Cause.hasDies(cause) ? Effect.failCause(cause) : Effect.succeed(new Complete({
203
- exit: Exit.failCause(cause)
204
- }))
202
+ onFailure: cause => {
203
+ const [reasons, interrupts] = Arr.partition(cause.reasons, Filter.fromPredicate(Cause.isInterruptReason));
204
+ const hasInterruptsOnly = interrupts.length === cause.reasons.length;
205
+ const filtered = reasons.length === 0 ? cause : Cause.fromReasons(reasons);
206
+ return instance.suspended && hasInterruptsOnly ? Effect.succeed(new Suspended({
207
+ cause: instance.cause
208
+ })) : !instance.interrupted && hasInterruptsOnly || !captureDefects && Cause.hasDies(cause) ? Effect.failCause(filtered) : Effect.succeed(new Complete({
209
+ exit: Exit.failCause(filtered)
210
+ }));
211
+ }
205
212
  }), eff => Effect.onExitPrimitive(eff, exit => {
206
213
  if (Exit.isFailure(exit)) {
207
214
  return Scope.close(instance.scope, exit);
@@ -218,9 +225,6 @@ export const intoResult = effect => Effect.contextWith(context => {
218
225
  export const wrapActivityResult = (effect, isSuspend) => Effect.contextWith(context => {
219
226
  const instance = Context.get(context, InstanceTag);
220
227
  const state = instance.activityState;
221
- if (instance.suspended) {
222
- return waitForZero(instance).pipe(Effect.andThen(suspend(instance)));
223
- }
224
228
  if (state.count === 0) state.latch.closeUnsafe();
225
229
  state.count++;
226
230
  return Effect.onExit(effect, exit => {
@@ -1 +1 @@
1
- {"version":3,"file":"Workflow.js","names":["Cause","Context","Data","Effect","Exit","Fiber","constFalse","constTrue","dual","identity","Layer","Option","Predicate","Schema","Issue","Parser","Tranformation","Scope","makeHashDigest","TypeId","EngineTag","Service","InstanceTag","make","options","makeExecutionId","payload","name","idempotencyKey","self","payloadSchema","isSchema","Struct","successSchema","success","Void","errorSchema","error","Never","annotations","empty","annotate","tag","value","add","annotateMerge","context","merge","execute","fnUntraced","fields","opts","engine","executionId","annotateCurrentSpan","discard","suspendedRetrySchedule","withSpan","captureStackTrace","poll","effect","attributes","interrupt","resume","toLayer","effectDiscard","gen","register","flatMap","orDie","makeEffect","withCompensation","ResultTypeId","isResult","u","hasProperty","Complete","TaggedClass","schema","declareConstructor","Defect","exit","input","ast","_tag","fail","InvalidType","some","mapBothEager","decodeEffect","onSuccess","onFailure","issue","Composite","Pointer","expected","toCodecJson","link","transform","decode","encoded","encode","result","Suspended","Class","cause","optional","Result","Union","AnyOrVoid","Any","ResultEncoded","toEncoded","intoResult","contextWith","instance","get","captureDefects","workflow","CaptureDefects","suspendOnFailure","SuspendOnFailure","pipe","forkChild","startImmediately","fiber","onInterrupt","join","interruptible","catchCause","suspended","hasInterruptsOnly","die","squash","scoped","matchCauseEffect","succeed","interrupted","hasDies","failCause","eff","onExitPrimitive","isFailure","close","scope","void","uninterruptible","wrapActivityResult","isSuspend","state","activityState","waitForZero","andThen","suspend","count","latch","closeUnsafe","onExit","isSuspended","isSuccess","combine","open","await","yieldNow","map","asEffect","provideScope","provide","addFinalizer","f","services","addFinalizerExit","provideContext","compensation","uninterruptibleMask","restore","tap","callback","getCurrent","interruptUnsafe","id","Reference","defaultValue"],"sources":["../../../src/unstable/workflow/Workflow.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Workflow.js","names":["Arr","Cause","Context","Data","Effect","Exit","Fiber","Filter","constFalse","constTrue","dual","identity","Layer","Option","Predicate","Schema","Issue","Parser","Tranformation","Scope","makeHashDigest","TypeId","EngineTag","Service","InstanceTag","make","options","makeExecutionId","payload","name","idempotencyKey","self","payloadSchema","isSchema","Struct","successSchema","success","Void","errorSchema","error","Never","annotations","empty","annotate","tag","value","add","annotateMerge","context","merge","execute","fnUntraced","fields","opts","engine","executionId","annotateCurrentSpan","discard","suspendedRetrySchedule","withSpan","captureStackTrace","poll","effect","attributes","interrupt","resume","toLayer","effectDiscard","gen","register","flatMap","orDie","makeEffect","withCompensation","ResultTypeId","isResult","u","hasProperty","Complete","TaggedClass","schema","declareConstructor","Defect","exit","input","ast","_tag","fail","InvalidType","some","mapBothEager","decodeEffect","onSuccess","onFailure","issue","Composite","Pointer","expected","toCodecJson","link","transform","decode","encoded","encode","result","Suspended","Class","cause","optional","Result","Union","AnyOrVoid","Any","ResultEncoded","toEncoded","intoResult","contextWith","instance","get","captureDefects","workflow","CaptureDefects","suspendOnFailure","SuspendOnFailure","pipe","forkChild","startImmediately","fiber","onInterrupt","join","interruptible","catchCause","suspended","hasInterruptsOnly","die","squash","scoped","matchCauseEffect","succeed","reasons","interrupts","partition","fromPredicate","isInterruptReason","length","filtered","fromReasons","interrupted","hasDies","failCause","eff","onExitPrimitive","isFailure","close","scope","void","uninterruptible","wrapActivityResult","isSuspend","state","activityState","count","latch","closeUnsafe","onExit","isSuspended","isSuccess","combine","open","waitForZero","await","yieldNow","map","asEffect","provideScope","provide","addFinalizer","f","services","addFinalizerExit","provideContext","compensation","uninterruptibleMask","restore","tap","suspend","callback","getCurrent","interruptUnsafe","id","Reference","defaultValue"],"sources":["../../../src/unstable/workflow/Workflow.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "effect",
3
3
  "type": "module",
4
- "version": "4.0.0-beta.52",
4
+ "version": "4.0.0-beta.54",
5
5
  "license": "MIT",
6
6
  "description": "The missing standard library for TypeScript, for writing production-grade software.",
7
7
  "homepage": "https://effect.website",
package/src/Effect.ts CHANGED
@@ -79,6 +79,7 @@ import type { Fiber } from "./Fiber.ts"
79
79
  import type * as Filter from "./Filter.ts"
80
80
  import { constant, dual, type LazyArg } from "./Function.ts"
81
81
  import type { TypeLambda } from "./HKT.ts"
82
+ import type { Inspectable } from "./Inspectable.ts"
82
83
  import * as core from "./internal/core.ts"
83
84
  import * as internal from "./internal/effect.ts"
84
85
  import * as internalExecutionPlan from "./internal/executionPlan.ts"
@@ -169,7 +170,9 @@ const TypeId = core.EffectTypeId
169
170
  * @since 2.0.0
170
171
  * @category Models
171
172
  */
172
- export interface Effect<out A, out E = never, out R = never> extends Pipeable, Yieldable<Effect<A, E, R>, A, E, R> {
173
+ export interface Effect<out A, out E = never, out R = never>
174
+ extends Pipeable, Inspectable, Yieldable<Effect<A, E, R>, A, E, R>
175
+ {
173
176
  readonly [TypeId]: Variance<A, E, R>
174
177
  [Unify.typeSymbol]?: unknown
175
178
  [Unify.unifySymbol]?: EffectUnify<this>
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import type * as Effect from "./Effect.ts"
5
+ import type * as Fiber from "./Fiber.ts"
6
+ import { evaluate, makePrimitiveProto } from "./internal/core.ts"
7
+
8
+ /**
9
+ * Create a low-level `Effect` prototype.
10
+ *
11
+ * When the effect is evaluated, it will call `evaluate` with the current fiber.
12
+ *
13
+ * @since 4.0.0
14
+ * @category Prototypes
15
+ */
16
+ export const Prototype = <A extends Effect.Effect<any, any, any>>(options: {
17
+ readonly label: string
18
+ readonly evaluate: (
19
+ this: A,
20
+ fiber: Fiber.Fiber<any, any>
21
+ ) => Effect.Effect<Effect.Success<A>, Effect.Error<A>, Effect.Services<A>>
22
+ }): Effect.Effect<Effect.Success<A>, Effect.Error<A>, Effect.Services<A>> =>
23
+ makePrimitiveProto({
24
+ op: options.label,
25
+ [evaluate]: options.evaluate
26
+ }) as any
27
+
28
+ const Base: new<A, E, R>() => Effect.Effect<A, E, R> = (() => {
29
+ const Base = function() {}
30
+ Base.prototype = Prototype({
31
+ label: "Effectable",
32
+ evaluate(_) {
33
+ return this.asEffect()
34
+ }
35
+ })
36
+ return Base as any
37
+ })()
38
+
39
+ /**
40
+ * An abstract class that can be extended to create an `Effect`.
41
+ *
42
+ * @since 4.0.0
43
+ * @category Constructors
44
+ */
45
+ export abstract class Class<A, E = never, R = never> extends Base<A, E, R> {
46
+ abstract override asEffect(): Effect.Effect<A, E, R>
47
+ }
package/src/Schema.ts CHANGED
@@ -1994,7 +1994,7 @@ export interface TemplateLiteralParser<Parts extends TemplateLiteral.Parts> exte
1994
1994
  export function TemplateLiteralParser<const Parts extends TemplateLiteral.Parts>(
1995
1995
  parts: Parts
1996
1996
  ): TemplateLiteralParser<Parts> {
1997
- return make(templateLiteralFromParts(parts).asTemplateLiteralParser(), { parts: [...parts] })
1997
+ return make(templateLiteralFromParts(parts).asTemplateLiteralParser(), { parts })
1998
1998
  }
1999
1999
 
2000
2000
  /**
package/src/index.ts CHANGED
@@ -1000,6 +1000,11 @@ export * as Duration from "./Duration.ts"
1000
1000
  */
1001
1001
  export * as Effect from "./Effect.ts"
1002
1002
 
1003
+ /**
1004
+ * @since 4.0.0
1005
+ */
1006
+ export * as Effectable from "./Effectable.ts"
1007
+
1003
1008
  /**
1004
1009
  * Encoding & decoding for Base64 (RFC4648), Base64Url, and Hex.
1005
1010
  *
@@ -5307,7 +5307,7 @@ class Latch implements _Latch.Latch {
5307
5307
  this.isOpen = true
5308
5308
  return this.scheduleUnsafe(fiber)
5309
5309
  })
5310
- release = withFiber<boolean>((fiber) => this.open ? succeedFalse : this.scheduleUnsafe(fiber))
5310
+ release = withFiber<boolean>((fiber) => this.isOpen ? succeedFalse : this.scheduleUnsafe(fiber))
5311
5311
  openUnsafe() {
5312
5312
  if (this.isOpen) return false
5313
5313
  this.isOpen = true
@@ -235,7 +235,7 @@ export const make = Effect.fnUntraced(function*(
235
235
  }
236
236
 
237
237
  function currentTimeNanosUnsafe(): bigint {
238
- return BigInt(currentTimestamp * 1000000)
238
+ return BigInt(Math.floor(currentTimestamp * 1000000))
239
239
  }
240
240
 
241
241
  const currentTimeMillis = Effect.sync(currentTimeMillisUnsafe)
@@ -472,7 +472,7 @@ export const make = Effect.gen(function*() {
472
472
  activities.set(activityId, { activity, context: services })
473
473
  const latch = activityLatches.get(activityId)
474
474
  if (latch) {
475
- yield* latch.release
475
+ yield* latch.open
476
476
  activityLatches.delete(activityId)
477
477
  }
478
478
  }
@@ -46,10 +46,11 @@ export interface HttpIncomingMessage<E = unknown> extends Inspectable.Inspectabl
46
46
  * @category schema
47
47
  */
48
48
  export const schemaBodyJson = <S extends Schema.Top>(schema: S, options?: ParseOptions | undefined) => {
49
- const decode = Schema.decodeEffect(Schema.toCodecJson(schema).annotate({ options }))
49
+ const decode = Schema.decodeEffect(Schema.toCodecJson(schema))
50
50
  return <E>(
51
51
  self: HttpIncomingMessage<E>
52
- ): Effect.Effect<S["Type"], E | Schema.SchemaError, S["DecodingServices"]> => Effect.flatMap(self.json, decode)
52
+ ): Effect.Effect<S["Type"], E | Schema.SchemaError, S["DecodingServices"]> =>
53
+ Effect.flatMap(self.json, (u) => decode(u, options))
53
54
  }
54
55
 
55
56
  /**
@@ -67,11 +68,10 @@ export const schemaBodyUrlParams = <
67
68
  ) => {
68
69
  const decode = UrlParams.schemaRecord.pipe(
69
70
  Schema.decodeTo(schema),
70
- Schema.annotate({ options }),
71
71
  Schema.decodeEffect
72
72
  )
73
73
  return <E>(self: HttpIncomingMessage<E>): Effect.Effect<A, E | Schema.SchemaError, RD> =>
74
- Effect.flatMap(self.urlParamsBody, decode)
74
+ Effect.flatMap(self.urlParamsBody, (u) => decode(u, options))
75
75
  }
76
76
 
77
77
  /**
@@ -16,6 +16,7 @@ import type * as HttpApi from "../httpapi/HttpApi.ts"
16
16
  import * as HttpApiClient from "../httpapi/HttpApiClient.ts"
17
17
  import * as HttpApiEndpoint from "../httpapi/HttpApiEndpoint.ts"
18
18
  import type * as HttpApiGroup from "../httpapi/HttpApiGroup.ts"
19
+ import type * as HttpApiMiddleware from "../httpapi/HttpApiMiddleware.ts"
19
20
  import * as AsyncResult from "./AsyncResult.ts"
20
21
  import * as Atom from "./Atom.ts"
21
22
  import * as Reactivity from "./Reactivity.ts"
@@ -57,7 +58,7 @@ export interface AtomHttpApiClient<Self, Id extends string, Groups extends HttpA
57
58
  infer _Headers,
58
59
  infer _Success,
59
60
  infer _Error,
60
- infer _R,
61
+ infer _Middleware,
61
62
  infer _RE
62
63
  >
63
64
  ] ? Atom.AtomResultFn<
@@ -67,7 +68,7 @@ export interface AtomHttpApiClient<Self, Id extends string, Groups extends HttpA
67
68
  }
68
69
  >,
69
70
  ResponseByMode<_Success["Type"], ResponseMode>,
70
- _Error["Type"]
71
+ ErrorByMode<_Error, _Middleware, ResponseMode>
71
72
  >
72
73
  : never
73
74
 
@@ -119,13 +120,13 @@ export interface AtomHttpApiClient<Self, Id extends string, Groups extends HttpA
119
120
  infer _Headers,
120
121
  infer _Success,
121
122
  infer _Error,
122
- infer _R,
123
+ infer _Middleware,
123
124
  infer _RE
124
125
  >
125
126
  ] ? Atom.Atom<
126
127
  AsyncResult.AsyncResult<
127
128
  ResponseByMode<_Success["Type"], ResponseMode>,
128
- _Error["Type"]
129
+ ErrorByMode<_Error, _Middleware, ResponseMode>
129
130
  >
130
131
  >
131
132
  : never
@@ -316,3 +317,12 @@ type ResponseByMode<Success, ResponseMode extends HttpApiEndpoint.ClientResponse
316
317
  ["decoded-and-response"] ? [Success, HttpClientResponse]
317
318
  : [ResponseMode] extends ["response-only"] ? HttpClientResponse
318
319
  : Success
320
+
321
+ type ErrorByMode<
322
+ Error extends Schema.Top,
323
+ Middleware,
324
+ ResponseMode extends HttpApiEndpoint.ClientResponseMode
325
+ > =
326
+ | HttpApiMiddleware.Error<Middleware>
327
+ | HttpApiMiddleware.ClientError<Middleware>
328
+ | ([ResponseMode] extends ["response-only"] ? never : Error["Type"])
@@ -50,6 +50,12 @@ export interface Socket {
50
50
  readonly onOpen?: Effect.Effect<void> | undefined
51
51
  }
52
52
  ) => Effect.Effect<void, SocketError | E, R>
53
+ readonly runString: <_, E = never, R = never>(
54
+ handler: (_: string) => Effect.Effect<_, E, R> | void,
55
+ options?: {
56
+ readonly onOpen?: Effect.Effect<void> | undefined
57
+ }
58
+ ) => Effect.Effect<void, SocketError | E, R>
53
59
  readonly runRaw: <_, E = never, R = never>(
54
60
  handler: (_: string | Uint8Array) => Effect.Effect<_, E, R> | void,
55
61
  options?: {
@@ -63,6 +69,61 @@ export interface Socket {
63
69
  >
64
70
  }
65
71
 
72
+ /**
73
+ * @since 4.0.0
74
+ * @category Constructors
75
+ */
76
+ export const make = (options: {
77
+ readonly runRaw: <_, E, R>(
78
+ handler: (_: string | Uint8Array) => Effect.Effect<_, E, R> | void,
79
+ options?: {
80
+ readonly onOpen?: Effect.Effect<void> | undefined
81
+ }
82
+ ) => Effect.Effect<void, SocketError | E, R>
83
+ readonly run?: <_, E, R>(
84
+ handler: (_: Uint8Array) => Effect.Effect<_, E, R> | void,
85
+ options?: {
86
+ readonly onOpen?: Effect.Effect<void> | undefined
87
+ }
88
+ ) => Effect.Effect<void, SocketError | E, R>
89
+ readonly runString?: <_, E, R>(
90
+ handler: (_: string) => Effect.Effect<_, E, R> | void,
91
+ options?: {
92
+ readonly onOpen?: Effect.Effect<void> | undefined
93
+ }
94
+ ) => Effect.Effect<void, SocketError | E, R>
95
+ readonly writer: Effect.Effect<
96
+ (chunk: Uint8Array | string | CloseEvent) => Effect.Effect<void, SocketError>,
97
+ never,
98
+ Scope.Scope
99
+ >
100
+ }): Socket =>
101
+ Socket.of({
102
+ [TypeId]: TypeId,
103
+ runRaw: options.runRaw,
104
+ run: options.run ?? ((handler, opts) =>
105
+ options.runRaw((data) =>
106
+ typeof data === "string"
107
+ ? handler(encoder.encode(data))
108
+ : data instanceof Uint8Array
109
+ ? handler(data)
110
+ : handler(new Uint8Array(data)), opts)),
111
+ runString: options.runString ??
112
+ (options.run ?
113
+ (handler, opts) => options.run!((data) => handler(decoder.decode(data)), opts) :
114
+ (handler, opts) =>
115
+ options.runRaw((data) =>
116
+ typeof data === "string"
117
+ ? handler(data)
118
+ : data instanceof Uint8Array
119
+ ? handler(decoder.decode(data))
120
+ : handler(decoder.decode(new Uint8Array(data))), opts)),
121
+ writer: options.writer
122
+ })
123
+
124
+ const encoder = new TextEncoder()
125
+ const decoder = new TextDecoder()
126
+
66
127
  const CloseEventTypeId = "~effect/socket/Socket/CloseEvent"
67
128
 
68
129
  /**
@@ -563,17 +624,6 @@ export const fromWebSocket = <RO>(
563
624
  }))
564
625
  )
565
626
 
566
- const encoder = new TextEncoder()
567
- const run = <_, E, R>(handler: (_: Uint8Array) => Effect.Effect<_, E, R> | void, opts?: {
568
- readonly onOpen?: Effect.Effect<void> | undefined
569
- }) =>
570
- runRaw((data) =>
571
- typeof data === "string"
572
- ? handler(encoder.encode(data))
573
- : data instanceof Uint8Array
574
- ? handler(data)
575
- : handler(new Uint8Array(data)), opts)
576
-
577
627
  const write = (chunk: Uint8Array | string | CloseEvent) =>
578
628
  latch.whenOpen(Effect.sync(() => {
579
629
  const ws = currentWS!
@@ -585,9 +635,7 @@ export const fromWebSocket = <RO>(
585
635
  }))
586
636
  const writer = Effect.succeed(write)
587
637
 
588
- return Effect.succeed(Socket.of({
589
- [TypeId]: TypeId,
590
- run,
638
+ return Effect.succeed(make({
591
639
  runRaw,
592
640
  writer
593
641
  }))
@@ -711,15 +759,6 @@ export const fromTransformStream = <R>(acquire: Effect.Effect<InputTransformStre
711
759
  }))
712
760
  )
713
761
 
714
- const encoder = new TextEncoder()
715
- const run = <_, E, R>(handler: (_: Uint8Array) => Effect.Effect<_, E, R> | void, opts?: {
716
- readonly onOpen?: Effect.Effect<void> | undefined
717
- }) =>
718
- runRaw((data) =>
719
- typeof data === "string"
720
- ? handler(encoder.encode(data))
721
- : handler(data), opts)
722
-
723
762
  const writers = new WeakMap<InputTransformStream, WritableStreamDefaultWriter<Uint8Array>>()
724
763
  const getWriter = (stream: InputTransformStream) => {
725
764
  let writer = writers.get(stream)
@@ -751,9 +790,7 @@ export const fromTransformStream = <R>(acquire: Effect.Effect<InputTransformStre
751
790
  })
752
791
  )
753
792
 
754
- return Effect.succeed(Socket.of({
755
- [TypeId]: TypeId,
756
- run,
793
+ return Effect.succeed(make({
757
794
  runRaw,
758
795
  writer
759
796
  }))
@@ -4,12 +4,10 @@
4
4
  import { Clock } from "../../Clock.ts"
5
5
  import * as Context from "../../Context.ts"
6
6
  import * as Effect from "../../Effect.ts"
7
+ import * as Effectable from "../../Effectable.ts"
7
8
  import type * as Fiber from "../../Fiber.ts"
8
9
  import { constUndefined } from "../../Function.ts"
9
- import type { Inspectable } from "../../Inspectable.ts"
10
- import * as core from "../../internal/core.ts"
11
10
  import * as internalEffect from "../../internal/effect.ts"
12
- import type { Pipeable } from "../../Pipeable.ts"
13
11
  import { hasProperty } from "../../Predicate.ts"
14
12
  import { TracerTimingEnabled } from "../../References.ts"
15
13
  import * as Stream from "../../Stream.ts"
@@ -49,7 +47,7 @@ export type Dialect = "sqlite" | "pg" | "mysql" | "mssql" | "clickhouse"
49
47
  * @category model
50
48
  * @since 4.0.0
51
49
  */
52
- export interface Statement<A> extends Fragment, Effect.Effect<ReadonlyArray<A>, SqlError>, Pipeable, Inspectable {
50
+ export interface Statement<A> extends Fragment, Effect.Effect<ReadonlyArray<A>, SqlError> {
53
51
  readonly raw: Effect.Effect<unknown, SqlError>
54
52
  readonly withoutTransform: Effect.Effect<ReadonlyArray<A>, SqlError>
55
53
  readonly stream: Stream.Stream<A, SqlError>
@@ -1128,8 +1126,23 @@ const StatementProto: Omit<
1128
1126
  StatementImpl<any>,
1129
1127
  "segments" | "acquirer" | "compiler" | "spanAttributes" | "transformRows"
1130
1128
  > = {
1131
- ...core.EffectProto,
1132
- [core.identifier as any]: "Statement",
1129
+ ...Effectable.Prototype<StatementImpl<any>>({
1130
+ label: "Statement",
1131
+ evaluate(fiber) {
1132
+ const span = internalEffect.makeSpanUnsafe(fiber, "sql.execute", { kind: "client" })
1133
+ const clock = fiber.getRef(Clock)
1134
+ const timingEnabled = fiber.getRef(TracerTimingEnabled)
1135
+ return Effect.onExit(
1136
+ this.withConnectionSpan(
1137
+ "execute",
1138
+ (connection, sql, params) => connection.execute(sql, params, this.transformRows),
1139
+ false,
1140
+ span
1141
+ ),
1142
+ (exit) => internalEffect.endSpan(span, exit, clock, timingEnabled)
1143
+ )
1144
+ }
1145
+ }),
1133
1146
  [FragmentTypeId]: FragmentTypeId,
1134
1147
  withConnection<XA, E>(
1135
1148
  this: StatementImpl<any>,
@@ -1229,23 +1242,6 @@ const StatementProto: Omit<
1229
1242
  ) {
1230
1243
  return this.compiler.compile(this, withoutTransform ?? false)
1231
1244
  },
1232
- [core.evaluate as any](
1233
- this: StatementImpl<any>,
1234
- fiber: Fiber.Fiber<any, any>
1235
- ): Effect.Effect<ReadonlyArray<any>, SqlError> {
1236
- const span = internalEffect.makeSpanUnsafe(fiber, "sql.execute", { kind: "client" })
1237
- const clock = fiber.getRef(Clock)
1238
- const timingEnabled = fiber.getRef(TracerTimingEnabled)
1239
- return Effect.onExit(
1240
- this.withConnectionSpan(
1241
- "execute",
1242
- (connection, sql, params) => connection.execute(sql, params, this.transformRows),
1243
- false,
1244
- span
1245
- ),
1246
- (exit) => internalEffect.endSpan(span, exit, clock, timingEnabled)
1247
- )
1248
- },
1249
1245
  toJSON(this: StatementImpl<any>) {
1250
1246
  const [sql, params] = this.compile()
1251
1247
  return {
@@ -5,8 +5,8 @@ import type { NonEmptyReadonlyArray } from "../../Array.ts"
5
5
  import * as Cause from "../../Cause.ts"
6
6
  import * as Context from "../../Context.ts"
7
7
  import * as Effect from "../../Effect.ts"
8
+ import * as Effectable from "../../Effectable.ts"
8
9
  import { dual } from "../../Function.ts"
9
- import { PipeInspectableProto, YieldableProto } from "../../internal/core.ts"
10
10
  import * as Schedule from "../../Schedule.ts"
11
11
  import * as Schema from "../../Schema.ts"
12
12
  import type { Scope } from "../../Scope.ts"
@@ -27,8 +27,7 @@ export interface Activity<
27
27
  Error extends Schema.Top = Schema.Never,
28
28
  R = never
29
29
  > extends
30
- Effect.Yieldable<
31
- Activity<Success, Error, R>,
30
+ Effect.Effect<
32
31
  Success["Type"],
33
32
  Error["Type"],
34
33
  Success["DecodingServices"] | Error["DecodingServices"] | R | WorkflowEngine | WorkflowInstance
@@ -123,8 +122,12 @@ export const make = <
123
122
  options.interruptRetryPolicy
124
123
  )(options.execute)
125
124
  const self: Activity<Success, Error, Exclude<R, WorkflowInstance | WorkflowEngine>> = {
126
- ...PipeInspectableProto,
127
- ...YieldableProto,
125
+ ...Effectable.Prototype<Activity<Success, Error, R>>({
126
+ label: "Activity",
127
+ evaluate(_) {
128
+ return execute
129
+ }
130
+ }),
128
131
  [TypeId]: TypeId,
129
132
  name: options.name,
130
133
  successSchema,
@@ -147,10 +150,7 @@ export const make = <
147
150
  executeEncoded: Effect.matchEffect(executeWithoutInterrupt, {
148
151
  onFailure: (error) => Effect.flatMap(Effect.orDie(Schema.encodeEffect(errorSchemaJson)(error)), Effect.fail),
149
152
  onSuccess: (value) => Effect.orDie(Schema.encodeEffect(successSchemaJson)(value))
150
- }),
151
- asEffect() {
152
- return execute
153
- }
153
+ })
154
154
  } as any
155
155
  execute = makeExecute(self)
156
156
  return self
@@ -1,13 +1,15 @@
1
1
  /**
2
2
  * @since 4.0.0
3
3
  */
4
+ import * as Arr from "../../Array.ts"
4
5
  import type { NonEmptyReadonlyArray } from "../../Array.ts"
5
6
  import type * as Brand from "../../Brand.ts"
6
- import type * as Cause from "../../Cause.ts"
7
+ import * as Cause from "../../Cause.ts"
7
8
  import * as Context from "../../Context.ts"
8
9
  import * as Effect from "../../Effect.ts"
9
10
  import * as Encoding from "../../Encoding.ts"
10
11
  import * as Exit from "../../Exit.ts"
12
+ import * as Filter from "../../Filter.ts"
11
13
  import { dual } from "../../Function.ts"
12
14
  import * as Option from "../../Option.ts"
13
15
  import * as Schema from "../../Schema.ts"
@@ -193,11 +195,24 @@ export const into: {
193
195
  Effect.contextWith(
194
196
  (context: Context.Context<WorkflowEngine | WorkflowInstance>) => {
195
197
  const engine = Context.get(context, EngineTag)
196
- const instance = Context.get(context, InstanceTag)
198
+ const parentInstance = Context.get(context, InstanceTag)
199
+ const instance = { ...parentInstance }
197
200
  return Effect.onExit(
198
- effect,
201
+ Effect.provideService(effect, InstanceTag, instance),
199
202
  Effect.fnUntraced(function*(exit) {
200
- if (instance.suspended) return
203
+ if (Exit.isFailure(exit)) {
204
+ const [reasons, interrupts] = Arr.partition(
205
+ exit.cause.reasons,
206
+ Filter.fromPredicate(Cause.isInterruptReason)
207
+ )
208
+ const hasInterruptsOnly = interrupts.length === exit.cause.reasons.length
209
+ if (hasInterruptsOnly && instance.suspended) {
210
+ parentInstance.suspended = true
211
+ return
212
+ } else if (interrupts.length > 0) {
213
+ exit = Exit.failCause(Cause.fromReasons(reasons))
214
+ }
215
+ }
201
216
  yield* engine.deferredDone(self, {
202
217
  workflowName: instance.workflow.name,
203
218
  executionId: instance.executionId,
@@ -244,7 +259,10 @@ export const raceAll = <
244
259
  if (Option.isSome(exit)) {
245
260
  return yield* Effect.flatten(exit.value) as Effect.Effect<any, any, any>
246
261
  }
247
- return yield* into(Effect.raceAll(options.effects), deferred)
262
+ return yield* into(
263
+ Effect.raceAll(options.effects),
264
+ deferred
265
+ )
248
266
  })
249
267
  }
250
268