@effect/platform-node-shared 0.2.5 → 0.3.1
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.
- package/dist/cjs/NodeSocket.js +13 -5
- package/dist/cjs/NodeSocket.js.map +1 -1
- package/dist/cjs/internal/runtime.js +3 -2
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/dts/NodeSocket.d.ts +1 -1
- package/dist/dts/NodeSocket.d.ts.map +1 -1
- package/dist/esm/NodeSocket.js +13 -5
- package/dist/esm/NodeSocket.js.map +1 -1
- package/dist/esm/internal/runtime.js +3 -2
- package/dist/esm/internal/runtime.js.map +1 -1
- package/package.json +3 -3
- package/src/NodeSocket.ts +27 -9
- package/src/internal/runtime.ts +12 -9
package/dist/cjs/NodeSocket.js
CHANGED
|
@@ -59,7 +59,7 @@ const makeNet = options => fromNetSocket(Effect.acquireRelease(Effect.async(resu
|
|
|
59
59
|
resume(Effect.succeed(conn));
|
|
60
60
|
});
|
|
61
61
|
conn.on("error", error => {
|
|
62
|
-
resume(Effect.fail(new Socket.
|
|
62
|
+
resume(Effect.fail(new Socket.SocketGenericError({
|
|
63
63
|
reason: "Open",
|
|
64
64
|
error
|
|
65
65
|
})));
|
|
@@ -85,11 +85,13 @@ const fromNetSocket = open => Effect.gen(function* (_) {
|
|
|
85
85
|
const fiberSet = yield* _(FiberSet.make());
|
|
86
86
|
const run = yield* _(FiberSet.runtime(fiberSet)(), Effect.provideService(NetSocket, conn));
|
|
87
87
|
const writeFiber = yield* _(Queue.take(sendQueue), Effect.tap(chunk => Effect.async(resume => {
|
|
88
|
-
if (chunk
|
|
88
|
+
if (Socket.isCloseEvent(chunk)) {
|
|
89
|
+
conn.destroy(chunk.code > 1000 ? new Error(`closed with code ${chunk.code}`) : undefined);
|
|
90
|
+
} else if (chunk === EOF) {
|
|
89
91
|
conn.end(() => resume(Effect.unit));
|
|
90
92
|
} else {
|
|
91
93
|
conn.write(chunk, error => {
|
|
92
|
-
resume(error ? Effect.fail(new Socket.
|
|
94
|
+
resume(error ? Effect.fail(new Socket.SocketGenericError({
|
|
93
95
|
reason: "Write",
|
|
94
96
|
error
|
|
95
97
|
})) : Effect.unit);
|
|
@@ -104,17 +106,23 @@ const fromNetSocket = open => Effect.gen(function* (_) {
|
|
|
104
106
|
resume(Effect.unit);
|
|
105
107
|
});
|
|
106
108
|
conn.on("error", error => {
|
|
107
|
-
resume(Effect.fail(new Socket.
|
|
109
|
+
resume(Effect.fail(new Socket.SocketGenericError({
|
|
108
110
|
reason: "Read",
|
|
109
111
|
error
|
|
110
112
|
})));
|
|
111
113
|
});
|
|
114
|
+
conn.on("close", hadError => {
|
|
115
|
+
resume(Effect.fail(new Socket.SocketCloseError({
|
|
116
|
+
reason: "Close",
|
|
117
|
+
code: hadError ? 1006 : 1000
|
|
118
|
+
})));
|
|
119
|
+
});
|
|
112
120
|
}), Effect.raceFirst(Fiber.join(writeFiber)), Effect.raceFirst(FiberSet.join(fiberSet)));
|
|
113
121
|
}).pipe(Effect.scoped);
|
|
114
122
|
const write = chunk => Queue.offer(sendQueue, chunk);
|
|
115
123
|
const writer = Effect.acquireRelease(Effect.succeed(write), () => Queue.offer(sendQueue, EOF));
|
|
116
124
|
return Socket.Socket.of({
|
|
117
|
-
[Socket.
|
|
125
|
+
[Socket.TypeId]: Socket.TypeId,
|
|
118
126
|
run,
|
|
119
127
|
writer
|
|
120
128
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeSocket.js","names":["Socket","_interopRequireWildcard","require","Channel","Context","Effect","Fiber","FiberSet","Layer","Queue","Net","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","NetSocket","exports","GenericTag","EOF","Symbol","for","makeNet","options","fromNetSocket","acquireRelease","async","resume","conn","createConnection","on","removeAllListeners","succeed","error","fail","
|
|
1
|
+
{"version":3,"file":"NodeSocket.js","names":["Socket","_interopRequireWildcard","require","Channel","Context","Effect","Fiber","FiberSet","Layer","Queue","Net","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","NetSocket","exports","GenericTag","EOF","Symbol","for","makeNet","options","fromNetSocket","acquireRelease","async","resume","conn","createConnection","on","removeAllListeners","succeed","error","fail","SocketGenericError","reason","sync","destroy","closed","destroySoon","open","gen","_","sendQueue","unbounded","run","handler","fiberSet","make","runtime","provideService","writeFiber","take","tap","chunk","isCloseEvent","code","Error","undefined","end","unit","write","forever","fork","hadError","SocketCloseError","raceFirst","join","pipe","scoped","offer","writer","of","TypeId","makeNetChannel","unwrapScoped","map","toChannelWith","layerNet"],"sources":["../../src/NodeSocket.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -33,9 +33,10 @@ function _interopRequireWildcard(e, r) {
|
|
|
33
33
|
return n.default = e, t && t.set(e, n), n;
|
|
34
34
|
}
|
|
35
35
|
/** @internal */
|
|
36
|
-
const runMain = (effect,
|
|
36
|
+
const runMain = (effect, options) => {
|
|
37
|
+
const teardown = options?.teardown ?? _Runtime.defaultTeardown;
|
|
37
38
|
const keepAlive = setInterval(() => {}, 2 ** 31 - 1);
|
|
38
|
-
const fiber = Effect.runFork(Effect.tapErrorCause(effect, cause => {
|
|
39
|
+
const fiber = Effect.runFork(options?.disableErrorReporting === true ? effect : Effect.tapErrorCause(effect, cause => {
|
|
39
40
|
if (Cause.isInterruptedOnly(cause)) {
|
|
40
41
|
return Effect.unit;
|
|
41
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","names":["_Runtime","require","Cause","_interopRequireWildcard","Effect","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","runMain","effect","teardown","defaultTeardown","keepAlive","setInterval","fiber","runFork","tapErrorCause","cause","isInterruptedOnly","unit","logError","addObserver","exit","clearInterval","code","process","onSigint","removeListener","unsafeInterruptAsFork","id","once","exports"],"sources":["../../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,QAAA,gBAAAC,OAAA;AACA,IAAAC,KAAA,gBAAAC,uBAAA,eAAAF,OAAA;AACA,IAAAG,MAAA,gBAAAD,uBAAA,eAAAF,OAAA;AAAuC,SAAAI,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA;IAAA,IAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AAEvC;AACO,MAAMY,OAAO,GAAYA,CAC9BC,
|
|
1
|
+
{"version":3,"file":"runtime.js","names":["_Runtime","require","Cause","_interopRequireWildcard","Effect","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","runMain","effect","options","teardown","defaultTeardown","keepAlive","setInterval","fiber","runFork","disableErrorReporting","tapErrorCause","cause","isInterruptedOnly","unit","logError","addObserver","exit","clearInterval","code","process","onSigint","removeListener","unsafeInterruptAsFork","id","once","exports"],"sources":["../../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/dist/dts/NodeSocket.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ export declare const fromNetSocket: (open: Effect.Effect<Net.Socket, Socket.Sock
|
|
|
36
36
|
* @since 1.0.0
|
|
37
37
|
* @category constructors
|
|
38
38
|
*/
|
|
39
|
-
export declare const makeNetChannel: <IE = never>(options: Net.NetConnectOpts) => Channel.Channel<Chunk.Chunk<Uint8Array>, Chunk.Chunk<Uint8Array>, Socket.SocketError | IE, IE, void, unknown, never>;
|
|
39
|
+
export declare const makeNetChannel: <IE = never>(options: Net.NetConnectOpts) => Channel.Channel<Chunk.Chunk<Uint8Array>, Chunk.Chunk<Uint8Array | Socket.CloseEvent>, Socket.SocketError | IE, IE, void, unknown, never>;
|
|
40
40
|
/**
|
|
41
41
|
* @since 1.0.0
|
|
42
42
|
* @category layers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeSocket.d.ts","sourceRoot":"","sources":["../../src/NodeSocket.ts"],"names":[],"mappings":";AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,EAAE,OAAO,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAExD,CAAA;
|
|
1
|
+
{"version":3,"file":"NodeSocket.d.ts","sourceRoot":"","sources":["../../src/NodeSocket.ts"],"names":[],"mappings":";AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,EAAE,OAAO,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAExD,CAAA;AAGD;;;GAGG;AACH,eAAO,MAAM,OAAO,YACT,IAAI,cAAc,KAC1B,aAAa,CAAC,aAAa,EAAE,OAAO,WAAW,EAAE,WAAW,CAwB5D,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,SAClB,aAAa,CAAC,UAAU,EAAE,OAAO,WAAW,EAAE,WAAW,CAAC,KAC/D,aAAa,CAAC,aAAa,CAoE1B,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,cAAc,wBAChB,IAAI,cAAc,6IAW1B,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,QAAQ,YAAa,IAAI,cAAc,KAAG,WAAW,CAAC,aAAa,EAAE,OAAO,WAAW,CAIjG,CAAA"}
|
package/dist/esm/NodeSocket.js
CHANGED
|
@@ -27,7 +27,7 @@ export const makeNet = options => fromNetSocket(Effect.acquireRelease(Effect.asy
|
|
|
27
27
|
resume(Effect.succeed(conn));
|
|
28
28
|
});
|
|
29
29
|
conn.on("error", error => {
|
|
30
|
-
resume(Effect.fail(new Socket.
|
|
30
|
+
resume(Effect.fail(new Socket.SocketGenericError({
|
|
31
31
|
reason: "Open",
|
|
32
32
|
error
|
|
33
33
|
})));
|
|
@@ -52,11 +52,13 @@ export const fromNetSocket = open => Effect.gen(function* (_) {
|
|
|
52
52
|
const fiberSet = yield* _(FiberSet.make());
|
|
53
53
|
const run = yield* _(FiberSet.runtime(fiberSet)(), Effect.provideService(NetSocket, conn));
|
|
54
54
|
const writeFiber = yield* _(Queue.take(sendQueue), Effect.tap(chunk => Effect.async(resume => {
|
|
55
|
-
if (chunk
|
|
55
|
+
if (Socket.isCloseEvent(chunk)) {
|
|
56
|
+
conn.destroy(chunk.code > 1000 ? new Error(`closed with code ${chunk.code}`) : undefined);
|
|
57
|
+
} else if (chunk === EOF) {
|
|
56
58
|
conn.end(() => resume(Effect.unit));
|
|
57
59
|
} else {
|
|
58
60
|
conn.write(chunk, error => {
|
|
59
|
-
resume(error ? Effect.fail(new Socket.
|
|
61
|
+
resume(error ? Effect.fail(new Socket.SocketGenericError({
|
|
60
62
|
reason: "Write",
|
|
61
63
|
error
|
|
62
64
|
})) : Effect.unit);
|
|
@@ -71,17 +73,23 @@ export const fromNetSocket = open => Effect.gen(function* (_) {
|
|
|
71
73
|
resume(Effect.unit);
|
|
72
74
|
});
|
|
73
75
|
conn.on("error", error => {
|
|
74
|
-
resume(Effect.fail(new Socket.
|
|
76
|
+
resume(Effect.fail(new Socket.SocketGenericError({
|
|
75
77
|
reason: "Read",
|
|
76
78
|
error
|
|
77
79
|
})));
|
|
78
80
|
});
|
|
81
|
+
conn.on("close", hadError => {
|
|
82
|
+
resume(Effect.fail(new Socket.SocketCloseError({
|
|
83
|
+
reason: "Close",
|
|
84
|
+
code: hadError ? 1006 : 1000
|
|
85
|
+
})));
|
|
86
|
+
});
|
|
79
87
|
}), Effect.raceFirst(Fiber.join(writeFiber)), Effect.raceFirst(FiberSet.join(fiberSet)));
|
|
80
88
|
}).pipe(Effect.scoped);
|
|
81
89
|
const write = chunk => Queue.offer(sendQueue, chunk);
|
|
82
90
|
const writer = Effect.acquireRelease(Effect.succeed(write), () => Queue.offer(sendQueue, EOF));
|
|
83
91
|
return Socket.Socket.of({
|
|
84
|
-
[Socket.
|
|
92
|
+
[Socket.TypeId]: Socket.TypeId,
|
|
85
93
|
run,
|
|
86
94
|
writer
|
|
87
95
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeSocket.js","names":["Socket","Channel","Context","Effect","Fiber","FiberSet","Layer","Queue","Net","NetSocket","GenericTag","EOF","Symbol","for","makeNet","options","fromNetSocket","acquireRelease","async","resume","conn","createConnection","on","removeAllListeners","succeed","error","fail","
|
|
1
|
+
{"version":3,"file":"NodeSocket.js","names":["Socket","Channel","Context","Effect","Fiber","FiberSet","Layer","Queue","Net","NetSocket","GenericTag","EOF","Symbol","for","makeNet","options","fromNetSocket","acquireRelease","async","resume","conn","createConnection","on","removeAllListeners","succeed","error","fail","SocketGenericError","reason","sync","destroy","closed","destroySoon","open","gen","_","sendQueue","unbounded","run","handler","fiberSet","make","runtime","provideService","writeFiber","take","tap","chunk","isCloseEvent","code","Error","undefined","end","unit","write","forever","fork","hadError","SocketCloseError","raceFirst","join","pipe","scoped","offer","writer","of","TypeId","makeNetChannel","unwrapScoped","map","toChannelWith","layerNet"],"sources":["../../src/NodeSocket.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,MAAM,MAAM,yBAAyB;AACjD,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AAEzC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,OAAO,KAAKC,GAAG,MAAM,UAAU;AAU/B;;;;AAIA,OAAO,MAAMC,SAAS,gBAAuCP,OAAO,CAACQ,UAAU,CAC7E,4CAA4C,CAC7C;AACD,MAAMC,GAAG,gBAAGC,MAAM,CAACC,GAAG,CAAC,sCAAsC,CAAC;AAE9D;;;;AAIA,OAAO,MAAMC,OAAO,GAClBC,OAA2B,IAE3BC,aAAa,CACXb,MAAM,CAACc,cAAc,CACnBd,MAAM,CAACe,KAAK,CAAyCC,MAAM,IAAI;EAC7D,MAAMC,IAAI,GAAGZ,GAAG,CAACa,gBAAgB,CAACN,OAAO,CAAC;EAC1CK,IAAI,CAACE,EAAE,CAAC,SAAS,EAAE,MAAK;IACtBF,IAAI,CAACG,kBAAkB,EAAE;IACzBJ,MAAM,CAAChB,MAAM,CAACqB,OAAO,CAACJ,IAAI,CAAC,CAAC;EAC9B,CAAC,CAAC;EACFA,IAAI,CAACE,EAAE,CAAC,OAAO,EAAGG,KAAK,IAAI;IACzBN,MAAM,CAAChB,MAAM,CAACuB,IAAI,CAAC,IAAI1B,MAAM,CAAC2B,kBAAkB,CAAC;MAAEC,MAAM,EAAE,MAAM;MAAEH;IAAK,CAAE,CAAC,CAAC,CAAC;EAC/E,CAAC,CAAC;EACF,OAAOtB,MAAM,CAAC0B,IAAI,CAAC,MAAK;IACtBT,IAAI,CAACU,OAAO,EAAE;EAChB,CAAC,CAAC;AACJ,CAAC,CAAC,EACDV,IAAI,IACHjB,MAAM,CAAC0B,IAAI,CAAC,MAAK;EACf,IAAIT,IAAI,CAACW,MAAM,KAAK,KAAK,EAAE;IACzBX,IAAI,CAACY,WAAW,EAAE;EACpB;EACAZ,IAAI,CAACG,kBAAkB,EAAE;AAC3B,CAAC,CAAC,CACL,CACF;AAEH;;;;AAIA,OAAO,MAAMP,aAAa,GACxBiB,IAAgE,IAEhE9B,MAAM,CAAC+B,GAAG,CAAC,WAAUC,CAAC;EACpB,MAAMC,SAAS,GAAG,OAAOD,CAAC,CAAC5B,KAAK,CAAC8B,SAAS,EAA+C,CAAC;EAE1F,MAAMC,GAAG,GAAaC,OAAkD,IACtEpC,MAAM,CAAC+B,GAAG,CAAC,WAAUC,CAAC;IACpB,MAAMf,IAAI,GAAG,OAAOe,CAAC,CAACF,IAAI,CAAC;IAC3B,MAAMO,QAAQ,GAAG,OAAOL,CAAC,CAAC9B,QAAQ,CAACoC,IAAI,EAA+B,CAAC;IACvE,MAAMH,GAAG,GAAG,OAAOH,CAAC,CAClB9B,QAAQ,CAACqC,OAAO,CAACF,QAAQ,CAAC,EAAK,EAC/BrC,MAAM,CAACwC,cAAc,CAAClC,SAAS,EAAEW,IAAI,CAAC,CACvC;IACD,MAAMwB,UAAU,GAAG,OAAOT,CAAC,CACzB5B,KAAK,CAACsC,IAAI,CAACT,SAAS,CAAC,EACrBjC,MAAM,CAAC2C,GAAG,CAAEC,KAAK,IACf5C,MAAM,CAACe,KAAK,CAAmCC,MAAM,IAAI;MACvD,IAAInB,MAAM,CAACgD,YAAY,CAACD,KAAK,CAAC,EAAE;QAC9B3B,IAAI,CAACU,OAAO,CAACiB,KAAK,CAACE,IAAI,GAAG,IAAI,GAAG,IAAIC,KAAK,CAAC,oBAAoBH,KAAK,CAACE,IAAI,EAAE,CAAC,GAAGE,SAAS,CAAC;MAC3F,CAAC,MAAM,IAAIJ,KAAK,KAAKpC,GAAG,EAAE;QACxBS,IAAI,CAACgC,GAAG,CAAC,MAAMjC,MAAM,CAAChB,MAAM,CAACkD,IAAI,CAAC,CAAC;MACrC,CAAC,MAAM;QACLjC,IAAI,CAACkC,KAAK,CAACP,KAAK,EAAGtB,KAAK,IAAI;UAC1BN,MAAM,CAACM,KAAK,GAAGtB,MAAM,CAACuB,IAAI,CAAC,IAAI1B,MAAM,CAAC2B,kBAAkB,CAAC;YAAEC,MAAM,EAAE,OAAO;YAAEH;UAAK,CAAE,CAAC,CAAC,GAAGtB,MAAM,CAACkD,IAAI,CAAC;QACtG,CAAC,CAAC;MACJ;IACF,CAAC,CAAC,CACH,EACDlD,MAAM,CAACoD,OAAO,EACdpD,MAAM,CAACqD,IAAI,CACZ;IACDpC,IAAI,CAACE,EAAE,CAAC,MAAM,EAAGyB,KAAK,IAAI;MACxBT,GAAG,CAACC,OAAO,CAACQ,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,OAAOZ,CAAC,CACNhC,MAAM,CAACe,KAAK,CAAmCC,MAAM,IAAI;MACvDC,IAAI,CAACE,EAAE,CAAC,KAAK,EAAE,MAAK;QAClBH,MAAM,CAAChB,MAAM,CAACkD,IAAI,CAAC;MACrB,CAAC,CAAC;MACFjC,IAAI,CAACE,EAAE,CAAC,OAAO,EAAGG,KAAK,IAAI;QACzBN,MAAM,CAAChB,MAAM,CAACuB,IAAI,CAAC,IAAI1B,MAAM,CAAC2B,kBAAkB,CAAC;UAAEC,MAAM,EAAE,MAAM;UAAEH;QAAK,CAAE,CAAC,CAAC,CAAC;MAC/E,CAAC,CAAC;MACFL,IAAI,CAACE,EAAE,CAAC,OAAO,EAAGmC,QAAQ,IAAI;QAC5BtC,MAAM,CACJhB,MAAM,CAACuB,IAAI,CACT,IAAI1B,MAAM,CAAC0D,gBAAgB,CAAC;UAC1B9B,MAAM,EAAE,OAAO;UACfqB,IAAI,EAAEQ,QAAQ,GAAG,IAAI,GAAG;SACzB,CAAC,CACH,CACF;MACH,CAAC,CAAC;IACJ,CAAC,CAAC,EACFtD,MAAM,CAACwD,SAAS,CAACvD,KAAK,CAACwD,IAAI,CAAChB,UAAU,CAAC,CAAC,EACxCzC,MAAM,CAACwD,SAAS,CAACtD,QAAQ,CAACuD,IAAI,CAACpB,QAAQ,CAAC,CAAC,CAC1C;EACH,CAAC,CAAC,CAACqB,IAAI,CAAC1D,MAAM,CAAC2D,MAAM,CAAC;EAExB,MAAMR,KAAK,GAAIP,KAAqC,IAAKxC,KAAK,CAACwD,KAAK,CAAC3B,SAAS,EAAEW,KAAK,CAAC;EACtF,MAAMiB,MAAM,GAAG7D,MAAM,CAACc,cAAc,CAClCd,MAAM,CAACqB,OAAO,CAAC8B,KAAK,CAAC,EACrB,MAAM/C,KAAK,CAACwD,KAAK,CAAC3B,SAAS,EAAEzB,GAAG,CAAC,CAClC;EAED,OAAOX,MAAM,CAACA,MAAM,CAACiE,EAAE,CAAC;IACtB,CAACjE,MAAM,CAACkE,MAAM,GAAGlE,MAAM,CAACkE,MAAM;IAC9B5B,GAAG;IACH0B;GACD,CAAC;AACJ,CAAC,CAAC;AAEJ;;;;AAIA,OAAO,MAAMG,cAAc,GACzBpD,OAA2B,IAS3Bd,OAAO,CAACmE,YAAY,CAClBjE,MAAM,CAACkE,GAAG,CAACvD,OAAO,CAACC,OAAO,CAAC,EAAEf,MAAM,CAACsE,aAAa,EAAM,CAAC,CACzD;AAEH;;;;AAIA,OAAO,MAAMC,QAAQ,GAAIxD,OAA2B,IAClDT,KAAK,CAACwD,MAAM,CACV9D,MAAM,CAACA,MAAM,EACbc,OAAO,CAACC,OAAO,CAAC,CACjB"}
|
|
@@ -2,9 +2,10 @@ import { defaultTeardown } from "@effect/platform/Runtime";
|
|
|
2
2
|
import * as Cause from "effect/Cause";
|
|
3
3
|
import * as Effect from "effect/Effect";
|
|
4
4
|
/** @internal */
|
|
5
|
-
export const runMain = (effect,
|
|
5
|
+
export const runMain = (effect, options) => {
|
|
6
|
+
const teardown = options?.teardown ?? defaultTeardown;
|
|
6
7
|
const keepAlive = setInterval(() => {}, 2 ** 31 - 1);
|
|
7
|
-
const fiber = Effect.runFork(Effect.tapErrorCause(effect, cause => {
|
|
8
|
+
const fiber = Effect.runFork(options?.disableErrorReporting === true ? effect : Effect.tapErrorCause(effect, cause => {
|
|
8
9
|
if (Cause.isInterruptedOnly(cause)) {
|
|
9
10
|
return Effect.unit;
|
|
10
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","names":["defaultTeardown","Cause","Effect","runMain","effect","teardown","keepAlive","setInterval","fiber","runFork","tapErrorCause","cause","isInterruptedOnly","unit","logError","addObserver","exit","clearInterval","code","process","onSigint","removeListener","unsafeInterruptAsFork","id","once"],"sources":["../../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAe,QAAsB,0BAA0B;AACxE,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC;AACA,OAAO,MAAMC,OAAO,GAAYA,CAC9BC,
|
|
1
|
+
{"version":3,"file":"runtime.js","names":["defaultTeardown","Cause","Effect","runMain","effect","options","teardown","keepAlive","setInterval","fiber","runFork","disableErrorReporting","tapErrorCause","cause","isInterruptedOnly","unit","logError","addObserver","exit","clearInterval","code","process","onSigint","removeListener","unsafeInterruptAsFork","id","once"],"sources":["../../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAe,QAAsB,0BAA0B;AACxE,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC;AACA,OAAO,MAAMC,OAAO,GAAYA,CAC9BC,MAAM,EACNC,OAAO,KACL;EACF,MAAMC,QAAQ,GAAGD,OAAO,EAAEC,QAAQ,IAAIN,eAAe;EACrD,MAAMO,SAAS,GAAGC,WAAW,CAAC,MAAK,CAAE,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EAEpD,MAAMC,KAAK,GAAGP,MAAM,CAACQ,OAAO,CAC1BL,OAAO,EAAEM,qBAAqB,KAAK,IAAI,GACrCP,MAAM,GACNF,MAAM,CAACU,aAAa,CAACR,MAAM,EAAGS,KAAK,IAAI;IACrC,IAAIZ,KAAK,CAACa,iBAAiB,CAACD,KAAK,CAAC,EAAE;MAClC,OAAOX,MAAM,CAACa,IAAI;IACpB;IACA,OAAOb,MAAM,CAACc,QAAQ,CAACH,KAAK,CAAC;EAC/B,CAAC,CAAC,CACL;EAEDJ,KAAK,CAACQ,WAAW,CAAEC,IAAI,IAAI;IACzBC,aAAa,CAACZ,SAAS,CAAC;IACxBD,QAAQ,CAACY,IAAI,EAAGE,IAAI,IAAI;MACtBC,OAAO,CAACH,IAAI,CAACE,IAAI,CAAC;IACpB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,SAASE,QAAQA,CAAA;IACfD,OAAO,CAACE,cAAc,CAAC,QAAQ,EAAED,QAAQ,CAAC;IAC1CD,OAAO,CAACE,cAAc,CAAC,SAAS,EAAED,QAAQ,CAAC;IAC3Cb,KAAK,CAACe,qBAAqB,CAACf,KAAK,CAACgB,EAAE,EAAE,CAAC;EACzC;EAEAJ,OAAO,CAACK,IAAI,CAAC,QAAQ,EAAEJ,QAAQ,CAAC;EAChCD,OAAO,CAACK,IAAI,CAAC,SAAS,EAAEJ,QAAQ,CAAC;AACnC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform-node-shared",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"multipasta": "^0.1.21"
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
|
-
"@effect/platform": "^0.
|
|
17
|
-
"effect": "^2.4.
|
|
16
|
+
"@effect/platform": "^0.48.1",
|
|
17
|
+
"effect": "^2.4.5"
|
|
18
18
|
},
|
|
19
19
|
"exports": {
|
|
20
20
|
"./package.json": "./package.json",
|
package/src/NodeSocket.ts
CHANGED
|
@@ -28,7 +28,6 @@ export interface NetSocket {
|
|
|
28
28
|
export const NetSocket: Context.Tag<NetSocket, Net.Socket> = Context.GenericTag(
|
|
29
29
|
"@effect/platform-node/NodeSocket/NetSocket"
|
|
30
30
|
)
|
|
31
|
-
|
|
32
31
|
const EOF = Symbol.for("@effect/experimental/Socket/Node/EOF")
|
|
33
32
|
|
|
34
33
|
/**
|
|
@@ -47,7 +46,7 @@ export const makeNet = (
|
|
|
47
46
|
resume(Effect.succeed(conn))
|
|
48
47
|
})
|
|
49
48
|
conn.on("error", (error) => {
|
|
50
|
-
resume(Effect.fail(new Socket.
|
|
49
|
+
resume(Effect.fail(new Socket.SocketGenericError({ reason: "Open", error })))
|
|
51
50
|
})
|
|
52
51
|
return Effect.sync(() => {
|
|
53
52
|
conn.destroy()
|
|
@@ -71,7 +70,7 @@ export const fromNetSocket = (
|
|
|
71
70
|
open: Effect.Effect<Net.Socket, Socket.SocketError, Scope.Scope>
|
|
72
71
|
): Effect.Effect<Socket.Socket> =>
|
|
73
72
|
Effect.gen(function*(_) {
|
|
74
|
-
const sendQueue = yield* _(Queue.unbounded<Uint8Array | typeof EOF>())
|
|
73
|
+
const sendQueue = yield* _(Queue.unbounded<Uint8Array | Socket.CloseEvent | typeof EOF>())
|
|
75
74
|
|
|
76
75
|
const run = <R, E, _>(handler: (_: Uint8Array) => Effect.Effect<_, E, R>) =>
|
|
77
76
|
Effect.gen(function*(_) {
|
|
@@ -85,11 +84,13 @@ export const fromNetSocket = (
|
|
|
85
84
|
Queue.take(sendQueue),
|
|
86
85
|
Effect.tap((chunk) =>
|
|
87
86
|
Effect.async<void, Socket.SocketError, never>((resume) => {
|
|
88
|
-
if (chunk
|
|
87
|
+
if (Socket.isCloseEvent(chunk)) {
|
|
88
|
+
conn.destroy(chunk.code > 1000 ? new Error(`closed with code ${chunk.code}`) : undefined)
|
|
89
|
+
} else if (chunk === EOF) {
|
|
89
90
|
conn.end(() => resume(Effect.unit))
|
|
90
91
|
} else {
|
|
91
92
|
conn.write(chunk, (error) => {
|
|
92
|
-
resume(error ? Effect.fail(new Socket.
|
|
93
|
+
resume(error ? Effect.fail(new Socket.SocketGenericError({ reason: "Write", error })) : Effect.unit)
|
|
93
94
|
})
|
|
94
95
|
}
|
|
95
96
|
})
|
|
@@ -106,7 +107,17 @@ export const fromNetSocket = (
|
|
|
106
107
|
resume(Effect.unit)
|
|
107
108
|
})
|
|
108
109
|
conn.on("error", (error) => {
|
|
109
|
-
resume(Effect.fail(new Socket.
|
|
110
|
+
resume(Effect.fail(new Socket.SocketGenericError({ reason: "Read", error })))
|
|
111
|
+
})
|
|
112
|
+
conn.on("close", (hadError) => {
|
|
113
|
+
resume(
|
|
114
|
+
Effect.fail(
|
|
115
|
+
new Socket.SocketCloseError({
|
|
116
|
+
reason: "Close",
|
|
117
|
+
code: hadError ? 1006 : 1000
|
|
118
|
+
})
|
|
119
|
+
)
|
|
120
|
+
)
|
|
110
121
|
})
|
|
111
122
|
}),
|
|
112
123
|
Effect.raceFirst(Fiber.join(writeFiber)),
|
|
@@ -114,14 +125,14 @@ export const fromNetSocket = (
|
|
|
114
125
|
)
|
|
115
126
|
}).pipe(Effect.scoped)
|
|
116
127
|
|
|
117
|
-
const write = (chunk: Uint8Array) => Queue.offer(sendQueue, chunk)
|
|
128
|
+
const write = (chunk: Uint8Array | Socket.CloseEvent) => Queue.offer(sendQueue, chunk)
|
|
118
129
|
const writer = Effect.acquireRelease(
|
|
119
130
|
Effect.succeed(write),
|
|
120
131
|
() => Queue.offer(sendQueue, EOF)
|
|
121
132
|
)
|
|
122
133
|
|
|
123
134
|
return Socket.Socket.of({
|
|
124
|
-
[Socket.
|
|
135
|
+
[Socket.TypeId]: Socket.TypeId,
|
|
125
136
|
run,
|
|
126
137
|
writer
|
|
127
138
|
})
|
|
@@ -133,7 +144,14 @@ export const fromNetSocket = (
|
|
|
133
144
|
*/
|
|
134
145
|
export const makeNetChannel = <IE = never>(
|
|
135
146
|
options: Net.NetConnectOpts
|
|
136
|
-
): Channel.Channel<
|
|
147
|
+
): Channel.Channel<
|
|
148
|
+
Chunk.Chunk<Uint8Array>,
|
|
149
|
+
Chunk.Chunk<Uint8Array | Socket.CloseEvent>,
|
|
150
|
+
Socket.SocketError | IE,
|
|
151
|
+
IE,
|
|
152
|
+
void,
|
|
153
|
+
unknown
|
|
154
|
+
> =>
|
|
137
155
|
Channel.unwrapScoped(
|
|
138
156
|
Effect.map(makeNet(options), Socket.toChannelWith<IE>())
|
|
139
157
|
)
|
package/src/internal/runtime.ts
CHANGED
|
@@ -3,19 +3,22 @@ import * as Cause from "effect/Cause"
|
|
|
3
3
|
import * as Effect from "effect/Effect"
|
|
4
4
|
|
|
5
5
|
/** @internal */
|
|
6
|
-
export const runMain: RunMain =
|
|
7
|
-
effect
|
|
8
|
-
|
|
6
|
+
export const runMain: RunMain = (
|
|
7
|
+
effect,
|
|
8
|
+
options
|
|
9
9
|
) => {
|
|
10
|
+
const teardown = options?.teardown ?? defaultTeardown
|
|
10
11
|
const keepAlive = setInterval(() => {}, 2 ** 31 - 1)
|
|
11
12
|
|
|
12
13
|
const fiber = Effect.runFork(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
options?.disableErrorReporting === true ?
|
|
15
|
+
effect :
|
|
16
|
+
Effect.tapErrorCause(effect, (cause) => {
|
|
17
|
+
if (Cause.isInterruptedOnly(cause)) {
|
|
18
|
+
return Effect.unit
|
|
19
|
+
}
|
|
20
|
+
return Effect.logError(cause)
|
|
21
|
+
})
|
|
19
22
|
)
|
|
20
23
|
|
|
21
24
|
fiber.addObserver((exit) => {
|