@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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
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(
|
|
35
|
-
|
|
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
|
-
|
|
40
|
-
|
|
48
|
+
isClientInterrupt = isClientInterrupt || current.fiberId === clientAbortFiberId;
|
|
49
|
+
if (Cause.isEmptyType(stripped) && !hasResponse) {
|
|
50
|
+
stripped = current;
|
|
41
51
|
}
|
|
42
|
-
|
|
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
|
-
|
|
52
|
-
|
|
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(
|
|
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","
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
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(
|
|
27
|
-
|
|
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
|
-
|
|
32
|
-
|
|
40
|
+
isClientInterrupt = isClientInterrupt || current.fiberId === clientAbortFiberId;
|
|
41
|
+
if (Cause.isEmptyType(stripped) && !hasResponse) {
|
|
42
|
+
stripped = current;
|
|
33
43
|
}
|
|
34
|
-
|
|
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
|
-
|
|
44
|
-
|
|
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(
|
|
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","
|
|
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
|
@@ -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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
68
|
-
|
|
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(
|
|
73
|
+
return [response, Cause.sequential(strippedCause, Cause.die(response))] as const
|
|
72
74
|
})
|
|
73
75
|
}
|
|
74
76
|
|