@effect/platform 0.94.3 → 0.94.4

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.
@@ -22,37 +22,45 @@ exports.isServerError = isServerError;
22
22
  const clientAbortFiberId = exports.clientAbortFiberId = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect/platform/HttpServerError/clientAbortFiberId", () => FiberId.runtime(-499, 0));
23
23
  /** @internal */
24
24
  const causeResponse = cause => {
25
- const [effect, stripped] = Cause.reduce(cause, [Effect.succeed(internalServerError), Cause.empty], (acc, cause) => {
26
- const withoutInterrupt = Cause.isInterruptType(acc[1]) ? Cause.empty : acc[1];
27
- switch (cause._tag) {
25
+ let effect = Effect.succeed(internalServerError);
26
+ let stripped = Cause.empty;
27
+ let isClientInterrupt = false;
28
+ let hasResponse = false;
29
+ Cause.reduce(cause, void 0, (_, current) => {
30
+ const withoutInterrupt = Cause.isInterruptType(stripped) ? Cause.empty : stripped;
31
+ switch (current._tag) {
28
32
  case "Fail":
29
33
  {
30
- return Option.some([Respondable.toResponseOrElse(cause.error, internalServerError), combineCauses(withoutInterrupt, cause)]);
34
+ effect = Respondable.toResponseOrElse(current.error, internalServerError);
35
+ stripped = combineCauses(withoutInterrupt, current);
36
+ break;
31
37
  }
32
38
  case "Die":
33
39
  {
34
- const isResponse = internalServerResponse.isServerResponse(cause.defect);
35
- return Option.some([Respondable.toResponseOrElseDefect(cause.defect, internalServerError), isResponse ? withoutInterrupt : combineCauses(withoutInterrupt, cause)]);
40
+ const isResponse = internalServerResponse.isServerResponse(current.defect);
41
+ effect = Respondable.toResponseOrElseDefect(current.defect, internalServerError);
42
+ stripped = isResponse ? withoutInterrupt : combineCauses(withoutInterrupt, current);
43
+ hasResponse = hasResponse || isResponse;
44
+ break;
36
45
  }
37
46
  case "Interrupt":
38
47
  {
39
- if (acc[1]._tag !== "Empty") {
40
- return Option.none();
48
+ isClientInterrupt = isClientInterrupt || current.fiberId === clientAbortFiberId;
49
+ if (Cause.isEmptyType(stripped) && !hasResponse) {
50
+ stripped = current;
41
51
  }
42
- const response = cause.fiberId === clientAbortFiberId ? clientAbortError : serverAbortError;
43
- return Option.some([Effect.succeed(response), cause]);
44
- }
45
- default:
46
- {
47
- return Option.none();
52
+ break;
48
53
  }
49
54
  }
55
+ return Option.none();
50
56
  });
51
- return Effect.map(effect, response => {
52
- if (Cause.isEmptyType(stripped)) {
57
+ const responseEffect = !hasResponse && Cause.isInterruptType(stripped) ? Effect.succeed(isClientInterrupt ? clientAbortError : serverAbortError) : effect;
58
+ const strippedCause = !hasResponse && Cause.isInterruptType(stripped) && isClientInterrupt ? Cause.interrupt(clientAbortFiberId) : stripped;
59
+ return Effect.map(responseEffect, response => {
60
+ if (Cause.isEmptyType(strippedCause)) {
53
61
  return [response, Cause.empty];
54
62
  }
55
- return [response, Cause.sequential(stripped, Cause.die(response))];
63
+ return [response, Cause.sequential(strippedCause, Cause.die(response))];
56
64
  });
57
65
  };
58
66
  exports.causeResponse = causeResponse;
@@ -1 +1 @@
1
- {"version":3,"file":"httpServerError.js","names":["Cause","_interopRequireWildcard","require","Effect","FiberId","_GlobalValue","Option","Predicate","Respondable","internalServerResponse","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TypeId","exports","Symbol","for","isServerError","u","hasProperty","clientAbortFiberId","globalValue","runtime","causeResponse","cause","effect","stripped","reduce","succeed","internalServerError","empty","acc","withoutInterrupt","isInterruptType","_tag","some","toResponseOrElse","error","combineCauses","isResponse","isServerResponse","defect","toResponseOrElseDefect","none","response","fiberId","clientAbortError","serverAbortError","map","isEmptyType","sequential","die","left","right","causeResponseStripped","stripSomeDefects","status","exitResponse","exit","value"],"sources":["../../../src/internal/httpServerError.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"httpServerError.js","names":["Cause","_interopRequireWildcard","require","Effect","FiberId","_GlobalValue","Option","Predicate","Respondable","internalServerResponse","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TypeId","exports","Symbol","for","isServerError","u","hasProperty","clientAbortFiberId","globalValue","runtime","causeResponse","cause","effect","succeed","internalServerError","stripped","empty","isClientInterrupt","hasResponse","reduce","_","current","withoutInterrupt","isInterruptType","_tag","toResponseOrElse","error","combineCauses","isResponse","isServerResponse","defect","toResponseOrElseDefect","fiberId","isEmptyType","none","responseEffect","clientAbortError","serverAbortError","strippedCause","interrupt","map","response","sequential","die","left","right","causeResponseStripped","stripSomeDefects","some","status","exitResponse","exit","value"],"sources":["../../../src/internal/httpServerError.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -14,37 +14,45 @@ export const isServerError = u => Predicate.hasProperty(u, TypeId);
14
14
  export const clientAbortFiberId = /*#__PURE__*/globalValue("@effect/platform/HttpServerError/clientAbortFiberId", () => FiberId.runtime(-499, 0));
15
15
  /** @internal */
16
16
  export const causeResponse = cause => {
17
- const [effect, stripped] = Cause.reduce(cause, [Effect.succeed(internalServerError), Cause.empty], (acc, cause) => {
18
- const withoutInterrupt = Cause.isInterruptType(acc[1]) ? Cause.empty : acc[1];
19
- switch (cause._tag) {
17
+ let effect = Effect.succeed(internalServerError);
18
+ let stripped = Cause.empty;
19
+ let isClientInterrupt = false;
20
+ let hasResponse = false;
21
+ Cause.reduce(cause, void 0, (_, current) => {
22
+ const withoutInterrupt = Cause.isInterruptType(stripped) ? Cause.empty : stripped;
23
+ switch (current._tag) {
20
24
  case "Fail":
21
25
  {
22
- return Option.some([Respondable.toResponseOrElse(cause.error, internalServerError), combineCauses(withoutInterrupt, cause)]);
26
+ effect = Respondable.toResponseOrElse(current.error, internalServerError);
27
+ stripped = combineCauses(withoutInterrupt, current);
28
+ break;
23
29
  }
24
30
  case "Die":
25
31
  {
26
- const isResponse = internalServerResponse.isServerResponse(cause.defect);
27
- return Option.some([Respondable.toResponseOrElseDefect(cause.defect, internalServerError), isResponse ? withoutInterrupt : combineCauses(withoutInterrupt, cause)]);
32
+ const isResponse = internalServerResponse.isServerResponse(current.defect);
33
+ effect = Respondable.toResponseOrElseDefect(current.defect, internalServerError);
34
+ stripped = isResponse ? withoutInterrupt : combineCauses(withoutInterrupt, current);
35
+ hasResponse = hasResponse || isResponse;
36
+ break;
28
37
  }
29
38
  case "Interrupt":
30
39
  {
31
- if (acc[1]._tag !== "Empty") {
32
- return Option.none();
40
+ isClientInterrupt = isClientInterrupt || current.fiberId === clientAbortFiberId;
41
+ if (Cause.isEmptyType(stripped) && !hasResponse) {
42
+ stripped = current;
33
43
  }
34
- const response = cause.fiberId === clientAbortFiberId ? clientAbortError : serverAbortError;
35
- return Option.some([Effect.succeed(response), cause]);
36
- }
37
- default:
38
- {
39
- return Option.none();
44
+ break;
40
45
  }
41
46
  }
47
+ return Option.none();
42
48
  });
43
- return Effect.map(effect, response => {
44
- if (Cause.isEmptyType(stripped)) {
49
+ const responseEffect = !hasResponse && Cause.isInterruptType(stripped) ? Effect.succeed(isClientInterrupt ? clientAbortError : serverAbortError) : effect;
50
+ const strippedCause = !hasResponse && Cause.isInterruptType(stripped) && isClientInterrupt ? Cause.interrupt(clientAbortFiberId) : stripped;
51
+ return Effect.map(responseEffect, response => {
52
+ if (Cause.isEmptyType(strippedCause)) {
45
53
  return [response, Cause.empty];
46
54
  }
47
- return [response, Cause.sequential(stripped, Cause.die(response))];
55
+ return [response, Cause.sequential(strippedCause, Cause.die(response))];
48
56
  });
49
57
  };
50
58
  const combineCauses = (left, right) => {
@@ -1 +1 @@
1
- {"version":3,"file":"httpServerError.js","names":["Cause","Effect","FiberId","globalValue","Option","Predicate","Respondable","internalServerResponse","TypeId","Symbol","for","isServerError","u","hasProperty","clientAbortFiberId","runtime","causeResponse","cause","effect","stripped","reduce","succeed","internalServerError","empty","acc","withoutInterrupt","isInterruptType","_tag","some","toResponseOrElse","error","combineCauses","isResponse","isServerResponse","defect","toResponseOrElseDefect","none","response","fiberId","clientAbortError","serverAbortError","map","isEmptyType","sequential","die","left","right","causeResponseStripped","stripSomeDefects","status","exitResponse","exit","value"],"sources":["../../../src/internal/httpServerError.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"httpServerError.js","names":["Cause","Effect","FiberId","globalValue","Option","Predicate","Respondable","internalServerResponse","TypeId","Symbol","for","isServerError","u","hasProperty","clientAbortFiberId","runtime","causeResponse","cause","effect","succeed","internalServerError","stripped","empty","isClientInterrupt","hasResponse","reduce","_","current","withoutInterrupt","isInterruptType","_tag","toResponseOrElse","error","combineCauses","isResponse","isServerResponse","defect","toResponseOrElseDefect","fiberId","isEmptyType","none","responseEffect","clientAbortError","serverAbortError","strippedCause","interrupt","map","response","sequential","die","left","right","causeResponseStripped","stripSomeDefects","some","status","exitResponse","exit","value"],"sources":["../../../src/internal/httpServerError.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform",
3
- "version": "0.94.3",
3
+ "version": "0.94.4",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -28,47 +28,49 @@ export const clientAbortFiberId = globalValue(
28
28
  export const causeResponse = <E>(
29
29
  cause: Cause.Cause<E>
30
30
  ): Effect.Effect<readonly [HttpServerResponse, Cause.Cause<E>]> => {
31
- const [effect, stripped] = Cause.reduce(
32
- cause,
33
- [Effect.succeed(internalServerError), Cause.empty as Cause.Cause<E>] as const,
34
- (acc, cause) => {
35
- const withoutInterrupt = Cause.isInterruptType(acc[1]) ? Cause.empty : acc[1]
36
- switch (cause._tag) {
37
- case "Fail": {
38
- return Option.some(
39
- [
40
- Respondable.toResponseOrElse(cause.error, internalServerError),
41
- combineCauses(withoutInterrupt, cause)
42
- ] as const
43
- )
44
- }
45
- case "Die": {
46
- const isResponse = internalServerResponse.isServerResponse(cause.defect)
47
- return Option.some(
48
- [
49
- Respondable.toResponseOrElseDefect(cause.defect, internalServerError),
50
- isResponse ? withoutInterrupt : combineCauses(withoutInterrupt, cause)
51
- ] as const
52
- )
53
- }
54
- case "Interrupt": {
55
- if (acc[1]._tag !== "Empty") {
56
- return Option.none()
57
- }
58
- const response = cause.fiberId === clientAbortFiberId ? clientAbortError : serverAbortError
59
- return Option.some([Effect.succeed(response), cause] as const)
60
- }
61
- default: {
62
- return Option.none()
31
+ let effect: Effect.Effect<HttpServerResponse> = Effect.succeed(internalServerError)
32
+ let stripped: Cause.Cause<E> = Cause.empty as Cause.Cause<E>
33
+ let isClientInterrupt = false
34
+ let hasResponse = false
35
+
36
+ Cause.reduce(cause, void 0 as void, (_, current) => {
37
+ const withoutInterrupt = Cause.isInterruptType(stripped) ? Cause.empty : stripped
38
+ switch (current._tag) {
39
+ case "Fail": {
40
+ effect = Respondable.toResponseOrElse(current.error, internalServerError)
41
+ stripped = combineCauses(withoutInterrupt, current)
42
+ break
43
+ }
44
+ case "Die": {
45
+ const isResponse = internalServerResponse.isServerResponse(current.defect)
46
+ effect = Respondable.toResponseOrElseDefect(current.defect, internalServerError)
47
+ stripped = isResponse ? withoutInterrupt : combineCauses(withoutInterrupt, current)
48
+ hasResponse = hasResponse || isResponse
49
+ break
50
+ }
51
+ case "Interrupt": {
52
+ isClientInterrupt = isClientInterrupt || current.fiberId === clientAbortFiberId
53
+ if (Cause.isEmptyType(stripped) && !hasResponse) {
54
+ stripped = current
63
55
  }
56
+ break
64
57
  }
65
58
  }
66
- )
67
- return Effect.map(effect, (response) => {
68
- if (Cause.isEmptyType(stripped)) {
59
+ return Option.none()
60
+ })
61
+
62
+ const responseEffect = !hasResponse && Cause.isInterruptType(stripped)
63
+ ? Effect.succeed(isClientInterrupt ? clientAbortError : serverAbortError)
64
+ : effect
65
+ const strippedCause: Cause.Cause<E> = !hasResponse && Cause.isInterruptType(stripped) && isClientInterrupt
66
+ ? Cause.interrupt(clientAbortFiberId) as Cause.Cause<E>
67
+ : stripped
68
+
69
+ return Effect.map(responseEffect, (response) => {
70
+ if (Cause.isEmptyType(strippedCause)) {
69
71
  return [response, Cause.empty] as const
70
72
  }
71
- return [response, Cause.sequential(stripped, Cause.die(response))] as const
73
+ return [response, Cause.sequential(strippedCause, Cause.die(response))] as const
72
74
  })
73
75
  }
74
76