@effect/platform-node-shared 0.57.1 → 4.0.0-beta.0
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/README.md +3 -3
- package/dist/NodeChildProcessSpawner.d.ts +37 -0
- package/dist/NodeChildProcessSpawner.d.ts.map +1 -0
- package/dist/NodeChildProcessSpawner.js +567 -0
- package/dist/NodeChildProcessSpawner.js.map +1 -0
- package/dist/{dts/NodeClusterSocket.d.ts → NodeClusterSocket.d.ts} +4 -7
- package/dist/NodeClusterSocket.d.ts.map +1 -0
- package/dist/{esm/NodeClusterSocket.js → NodeClusterSocket.js} +9 -10
- package/dist/NodeClusterSocket.js.map +1 -0
- package/dist/NodeFileSystem.d.ts +8 -0
- package/dist/NodeFileSystem.d.ts.map +1 -0
- package/dist/{esm/internal/fileSystem.js → NodeFileSystem.js} +125 -96
- package/dist/NodeFileSystem.js.map +1 -0
- package/dist/NodePath.d.ts +18 -0
- package/dist/NodePath.d.ts.map +1 -0
- package/dist/NodePath.js +56 -0
- package/dist/NodePath.js.map +1 -0
- package/dist/NodeRuntime.d.ts +28 -0
- package/dist/NodeRuntime.d.ts.map +1 -0
- package/dist/{esm/internal/runtime.js → NodeRuntime.js} +8 -8
- package/dist/NodeRuntime.js.map +1 -0
- package/dist/NodeSink.d.ts +40 -0
- package/dist/NodeSink.d.ts.map +1 -0
- package/dist/NodeSink.js +50 -0
- package/dist/NodeSink.js.map +1 -0
- package/dist/{dts/NodeSocket.d.ts → NodeSocket.d.ts} +10 -10
- package/dist/NodeSocket.d.ts.map +1 -0
- package/dist/{esm/NodeSocket.js → NodeSocket.js} +51 -39
- package/dist/NodeSocket.js.map +1 -0
- package/dist/{dts/NodeSocketServer.d.ts → NodeSocketServer.d.ts} +8 -10
- package/dist/NodeSocketServer.d.ts.map +1 -0
- package/dist/NodeSocketServer.js +192 -0
- package/dist/NodeSocketServer.js.map +1 -0
- package/dist/NodeStdio.d.ts +11 -0
- package/dist/NodeStdio.d.ts.map +1 -0
- package/dist/NodeStdio.js +43 -0
- package/dist/NodeStdio.js.map +1 -0
- package/dist/NodeStream.d.ts +127 -0
- package/dist/NodeStream.d.ts.map +1 -0
- package/dist/NodeStream.js +249 -0
- package/dist/NodeStream.js.map +1 -0
- package/dist/NodeTerminal.d.ts +15 -0
- package/dist/NodeTerminal.d.ts.map +1 -0
- package/dist/{esm/internal/terminal.js → NodeTerminal.js} +28 -25
- package/dist/NodeTerminal.js.map +1 -0
- package/dist/internal/utils.d.ts +2 -0
- package/dist/internal/utils.d.ts.map +1 -0
- package/dist/{esm/internal/error.js → internal/utils.js} +4 -5
- package/dist/internal/utils.js.map +1 -0
- package/package.json +53 -124
- package/src/NodeChildProcessSpawner.ts +713 -0
- package/src/NodeClusterSocket.ts +12 -13
- package/src/NodeFileSystem.ts +632 -5
- package/src/NodePath.ts +48 -9
- package/src/NodeRuntime.ts +53 -4
- package/src/NodeSink.ts +65 -62
- package/src/NodeSocket.ts +65 -49
- package/src/NodeSocketServer.ts +108 -88
- package/src/NodeStdio.ts +49 -0
- package/src/NodeStream.ts +324 -83
- package/src/NodeTerminal.ts +100 -9
- package/src/internal/{error.ts → utils.ts} +6 -7
- package/NodeClusterSocket/package.json +0 -6
- package/NodeCommandExecutor/package.json +0 -6
- package/NodeFileSystem/ParcelWatcher/package.json +0 -6
- package/NodeFileSystem/package.json +0 -6
- package/NodeKeyValueStore/package.json +0 -6
- package/NodeMultipart/package.json +0 -6
- package/NodePath/package.json +0 -6
- package/NodeRuntime/package.json +0 -6
- package/NodeSink/package.json +0 -6
- package/NodeSocket/package.json +0 -6
- package/NodeSocketServer/package.json +0 -6
- package/NodeStream/package.json +0 -6
- package/NodeTerminal/package.json +0 -6
- package/dist/cjs/NodeClusterSocket.js +0 -50
- package/dist/cjs/NodeClusterSocket.js.map +0 -1
- package/dist/cjs/NodeCommandExecutor.js +0 -14
- package/dist/cjs/NodeCommandExecutor.js.map +0 -1
- package/dist/cjs/NodeFileSystem/ParcelWatcher.js +0 -20
- package/dist/cjs/NodeFileSystem/ParcelWatcher.js.map +0 -1
- package/dist/cjs/NodeFileSystem.js +0 -18
- package/dist/cjs/NodeFileSystem.js.map +0 -1
- package/dist/cjs/NodeKeyValueStore.js +0 -18
- package/dist/cjs/NodeKeyValueStore.js.map +0 -1
- package/dist/cjs/NodeMultipart.js +0 -24
- package/dist/cjs/NodeMultipart.js.map +0 -1
- package/dist/cjs/NodePath.js +0 -28
- package/dist/cjs/NodePath.js.map +0 -1
- package/dist/cjs/NodeRuntime.js +0 -14
- package/dist/cjs/NodeRuntime.js.map +0 -1
- package/dist/cjs/NodeSink.js +0 -50
- package/dist/cjs/NodeSink.js.map +0 -1
- package/dist/cjs/NodeSocket.js +0 -153
- package/dist/cjs/NodeSocket.js.map +0 -1
- package/dist/cjs/NodeSocketServer.js +0 -178
- package/dist/cjs/NodeSocketServer.js.map +0 -1
- package/dist/cjs/NodeStream.js +0 -76
- package/dist/cjs/NodeStream.js.map +0 -1
- package/dist/cjs/NodeTerminal.js +0 -19
- package/dist/cjs/NodeTerminal.js.map +0 -1
- package/dist/cjs/internal/commandExecutor.js +0 -153
- package/dist/cjs/internal/commandExecutor.js.map +0 -1
- package/dist/cjs/internal/error.js +0 -45
- package/dist/cjs/internal/error.js.map +0 -1
- package/dist/cjs/internal/fileSystem/parcelWatcher.js +0 -68
- package/dist/cjs/internal/fileSystem/parcelWatcher.js.map +0 -1
- package/dist/cjs/internal/fileSystem.js +0 -400
- package/dist/cjs/internal/fileSystem.js.map +0 -1
- package/dist/cjs/internal/multipart.js +0 -147
- package/dist/cjs/internal/multipart.js.map +0 -1
- package/dist/cjs/internal/path.js +0 -53
- package/dist/cjs/internal/path.js.map +0 -1
- package/dist/cjs/internal/runtime.js +0 -37
- package/dist/cjs/internal/runtime.js.map +0 -1
- package/dist/cjs/internal/sink.js +0 -28
- package/dist/cjs/internal/sink.js.map +0 -1
- package/dist/cjs/internal/stream.js +0 -233
- package/dist/cjs/internal/stream.js.map +0 -1
- package/dist/cjs/internal/terminal.js +0 -90
- package/dist/cjs/internal/terminal.js.map +0 -1
- package/dist/dts/NodeClusterSocket.d.ts.map +0 -1
- package/dist/dts/NodeCommandExecutor.d.ts +0 -12
- package/dist/dts/NodeCommandExecutor.d.ts.map +0 -1
- package/dist/dts/NodeFileSystem/ParcelWatcher.d.ts +0 -13
- package/dist/dts/NodeFileSystem/ParcelWatcher.d.ts.map +0 -1
- package/dist/dts/NodeFileSystem.d.ts +0 -11
- package/dist/dts/NodeFileSystem.d.ts.map +0 -1
- package/dist/dts/NodeKeyValueStore.d.ts +0 -12
- package/dist/dts/NodeKeyValueStore.d.ts.map +0 -1
- package/dist/dts/NodeMultipart.d.ts +0 -27
- package/dist/dts/NodeMultipart.d.ts.map +0 -1
- package/dist/dts/NodePath.d.ts +0 -21
- package/dist/dts/NodePath.d.ts.map +0 -1
- package/dist/dts/NodeRuntime.d.ts +0 -10
- package/dist/dts/NodeRuntime.d.ts.map +0 -1
- package/dist/dts/NodeSink.d.ts +0 -36
- package/dist/dts/NodeSink.d.ts.map +0 -1
- package/dist/dts/NodeSocket.d.ts.map +0 -1
- package/dist/dts/NodeSocketServer.d.ts.map +0 -1
- package/dist/dts/NodeStream.d.ts +0 -119
- package/dist/dts/NodeStream.d.ts.map +0 -1
- package/dist/dts/NodeTerminal.d.ts +0 -18
- package/dist/dts/NodeTerminal.d.ts.map +0 -1
- package/dist/dts/internal/commandExecutor.d.ts +0 -2
- package/dist/dts/internal/commandExecutor.d.ts.map +0 -1
- package/dist/dts/internal/error.d.ts +0 -2
- package/dist/dts/internal/error.d.ts.map +0 -1
- package/dist/dts/internal/fileSystem/parcelWatcher.d.ts +0 -4
- package/dist/dts/internal/fileSystem/parcelWatcher.d.ts.map +0 -1
- package/dist/dts/internal/fileSystem.d.ts +0 -2
- package/dist/dts/internal/fileSystem.d.ts.map +0 -1
- package/dist/dts/internal/multipart.d.ts +0 -2
- package/dist/dts/internal/multipart.d.ts.map +0 -1
- package/dist/dts/internal/path.d.ts +0 -2
- package/dist/dts/internal/path.d.ts.map +0 -1
- package/dist/dts/internal/runtime.d.ts +0 -2
- package/dist/dts/internal/runtime.d.ts.map +0 -1
- package/dist/dts/internal/sink.d.ts +0 -2
- package/dist/dts/internal/sink.d.ts.map +0 -1
- package/dist/dts/internal/stream.d.ts +0 -2
- package/dist/dts/internal/stream.d.ts.map +0 -1
- package/dist/dts/internal/terminal.d.ts +0 -2
- package/dist/dts/internal/terminal.d.ts.map +0 -1
- package/dist/esm/NodeClusterSocket.js.map +0 -1
- package/dist/esm/NodeCommandExecutor.js +0 -7
- package/dist/esm/NodeCommandExecutor.js.map +0 -1
- package/dist/esm/NodeFileSystem/ParcelWatcher.js +0 -12
- package/dist/esm/NodeFileSystem/ParcelWatcher.js.map +0 -1
- package/dist/esm/NodeFileSystem.js +0 -10
- package/dist/esm/NodeFileSystem.js.map +0 -1
- package/dist/esm/NodeKeyValueStore.js +0 -10
- package/dist/esm/NodeKeyValueStore.js.map +0 -1
- package/dist/esm/NodeMultipart.js +0 -17
- package/dist/esm/NodeMultipart.js.map +0 -1
- package/dist/esm/NodePath.js +0 -20
- package/dist/esm/NodePath.js.map +0 -1
- package/dist/esm/NodeRuntime.js +0 -7
- package/dist/esm/NodeRuntime.js.map +0 -1
- package/dist/esm/NodeSink.js +0 -43
- package/dist/esm/NodeSink.js.map +0 -1
- package/dist/esm/NodeSocket.js.map +0 -1
- package/dist/esm/NodeSocketServer.js +0 -167
- package/dist/esm/NodeSocketServer.js.map +0 -1
- package/dist/esm/NodeStream.js +0 -69
- package/dist/esm/NodeStream.js.map +0 -1
- package/dist/esm/NodeTerminal.js +0 -12
- package/dist/esm/NodeTerminal.js.map +0 -1
- package/dist/esm/internal/commandExecutor.js +0 -146
- package/dist/esm/internal/commandExecutor.js.map +0 -1
- package/dist/esm/internal/error.js.map +0 -1
- package/dist/esm/internal/fileSystem/parcelWatcher.js +0 -61
- package/dist/esm/internal/fileSystem/parcelWatcher.js.map +0 -1
- package/dist/esm/internal/fileSystem.js.map +0 -1
- package/dist/esm/internal/multipart.js +0 -137
- package/dist/esm/internal/multipart.js.map +0 -1
- package/dist/esm/internal/path.js +0 -46
- package/dist/esm/internal/path.js.map +0 -1
- package/dist/esm/internal/runtime.js.map +0 -1
- package/dist/esm/internal/sink.js +0 -19
- package/dist/esm/internal/sink.js.map +0 -1
- package/dist/esm/internal/stream.js +0 -217
- package/dist/esm/internal/stream.js.map +0 -1
- package/dist/esm/internal/terminal.js.map +0 -1
- package/dist/esm/package.json +0 -4
- package/src/NodeCommandExecutor.ts +0 -13
- package/src/NodeFileSystem/ParcelWatcher.ts +0 -15
- package/src/NodeKeyValueStore.ts +0 -20
- package/src/NodeMultipart.ts +0 -40
- package/src/internal/commandExecutor.ts +0 -251
- package/src/internal/fileSystem/parcelWatcher.ts +0 -64
- package/src/internal/fileSystem.ts +0 -648
- package/src/internal/multipart.ts +0 -141
- package/src/internal/path.ts +0 -63
- package/src/internal/runtime.ts +0 -34
- package/src/internal/sink.ts +0 -57
- package/src/internal/stream.ts +0 -375
- package/src/internal/terminal.ts +0 -104
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
5
|
+
import { systemError } from "effect/PlatformError";
|
|
6
|
+
import * as Stdio from "effect/Stdio";
|
|
7
|
+
import { fromWritable } from "./NodeSink.js";
|
|
8
|
+
import { fromReadable } from "./NodeStream.js";
|
|
9
|
+
/**
|
|
10
|
+
* @category Layers
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
*/
|
|
13
|
+
export const layer = /*#__PURE__*/Layer.succeed(Stdio.Stdio, /*#__PURE__*/Stdio.make({
|
|
14
|
+
stdout: /*#__PURE__*/fromWritable({
|
|
15
|
+
evaluate: () => process.stdout,
|
|
16
|
+
onError: cause => systemError({
|
|
17
|
+
module: "Stdio",
|
|
18
|
+
method: "stdout",
|
|
19
|
+
kind: "Unknown",
|
|
20
|
+
cause
|
|
21
|
+
})
|
|
22
|
+
}),
|
|
23
|
+
stderr: /*#__PURE__*/fromWritable({
|
|
24
|
+
evaluate: () => process.stderr,
|
|
25
|
+
onError: cause => systemError({
|
|
26
|
+
module: "Stdio",
|
|
27
|
+
method: "stderr",
|
|
28
|
+
kind: "Unknown",
|
|
29
|
+
cause
|
|
30
|
+
})
|
|
31
|
+
}),
|
|
32
|
+
stdin: /*#__PURE__*/fromReadable({
|
|
33
|
+
evaluate: () => process.stdin,
|
|
34
|
+
onError: cause => systemError({
|
|
35
|
+
module: "Stdio",
|
|
36
|
+
method: "stdin",
|
|
37
|
+
kind: "Unknown",
|
|
38
|
+
cause
|
|
39
|
+
}),
|
|
40
|
+
closeOnDone: false
|
|
41
|
+
})
|
|
42
|
+
}));
|
|
43
|
+
//# sourceMappingURL=NodeStdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeStdio.js","names":["Layer","systemError","Stdio","fromWritable","fromReadable","layer","succeed","make","stdout","evaluate","process","onError","cause","module","method","kind","stderr","stdin","closeOnDone"],"sources":["../src/NodeStdio.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,SAASC,WAAW,QAAQ,sBAAsB;AAClD,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,YAAY,QAAQ,eAAe;AAC5C,SAASC,YAAY,QAAQ,iBAAiB;AAE9C;;;;AAIA,OAAO,MAAMC,KAAK,gBAA6BL,KAAK,CAACM,OAAO,CAC1DJ,KAAK,CAACA,KAAK,eACXA,KAAK,CAACK,IAAI,CAAC;EACTC,MAAM,eAAEL,YAAY,CAAC;IACnBM,QAAQ,EAAEA,CAAA,KAAMC,OAAO,CAACF,MAAM;IAC9BG,OAAO,EAAGC,KAAK,IACbX,WAAW,CAAC;MACVY,MAAM,EAAE,OAAO;MACfC,MAAM,EAAE,QAAQ;MAChBC,IAAI,EAAE,SAAS;MACfH;KACD;GACJ,CAAC;EACFI,MAAM,eAAEb,YAAY,CAAC;IACnBM,QAAQ,EAAEA,CAAA,KAAMC,OAAO,CAACM,MAAM;IAC9BL,OAAO,EAAGC,KAAK,IACbX,WAAW,CAAC;MACVY,MAAM,EAAE,OAAO;MACfC,MAAM,EAAE,QAAQ;MAChBC,IAAI,EAAE,SAAS;MACfH;KACD;GACJ,CAAC;EACFK,KAAK,eAAEb,YAAY,CAAC;IAClBK,QAAQ,EAAEA,CAAA,KAAMC,OAAO,CAACO,KAAK;IAC7BN,OAAO,EAAGC,KAAK,IACbX,WAAW,CAAC;MACVY,MAAM,EAAE,OAAO;MACfC,MAAM,EAAE,OAAO;MACfC,IAAI,EAAE,SAAS;MACfH;KACD,CAAC;IACJM,WAAW,EAAE;GACd;CACF,CAAC,CACH","ignoreList":[]}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Arr from "effect/Array";
|
|
5
|
+
import * as Cause from "effect/Cause";
|
|
6
|
+
import * as Channel from "effect/Channel";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import type { SizeInput } from "effect/FileSystem";
|
|
9
|
+
import { type LazyArg } from "effect/Function";
|
|
10
|
+
import * as Stream from "effect/Stream";
|
|
11
|
+
import type { Duplex } from "node:stream";
|
|
12
|
+
import { Readable } from "node:stream";
|
|
13
|
+
/**
|
|
14
|
+
* @category constructors
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
export declare const fromReadable: <A = Uint8Array, E = Cause.UnknownError>(options: {
|
|
18
|
+
readonly evaluate: LazyArg<Readable | NodeJS.ReadableStream>;
|
|
19
|
+
readonly onError?: (error: unknown) => E;
|
|
20
|
+
readonly chunkSize?: number | undefined;
|
|
21
|
+
readonly bufferSize?: number | undefined;
|
|
22
|
+
readonly closeOnDone?: boolean | undefined;
|
|
23
|
+
}) => Stream.Stream<A, E>;
|
|
24
|
+
/**
|
|
25
|
+
* @category constructors
|
|
26
|
+
* @since 1.0.0
|
|
27
|
+
*/
|
|
28
|
+
export declare const fromReadableChannel: <A = Uint8Array, E = Cause.UnknownError>(options: {
|
|
29
|
+
readonly evaluate: LazyArg<Readable | NodeJS.ReadableStream>;
|
|
30
|
+
readonly onError?: (error: unknown) => E;
|
|
31
|
+
readonly chunkSize?: number | undefined;
|
|
32
|
+
readonly closeOnDone?: boolean | undefined;
|
|
33
|
+
}) => Channel.Channel<Arr.NonEmptyReadonlyArray<A>, E>;
|
|
34
|
+
/**
|
|
35
|
+
* @category constructors
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
*/
|
|
38
|
+
export declare const fromDuplex: <IE, I = Uint8Array, O = Uint8Array, E = Cause.UnknownError>(options: {
|
|
39
|
+
readonly evaluate: LazyArg<Duplex>;
|
|
40
|
+
readonly onError?: (error: unknown) => E;
|
|
41
|
+
readonly chunkSize?: number | undefined;
|
|
42
|
+
readonly bufferSize?: number | undefined;
|
|
43
|
+
readonly endOnDone?: boolean | undefined;
|
|
44
|
+
readonly encoding?: BufferEncoding | undefined;
|
|
45
|
+
}) => Channel.Channel<Arr.NonEmptyReadonlyArray<O>, IE | E, void, Arr.NonEmptyReadonlyArray<I>, IE>;
|
|
46
|
+
/**
|
|
47
|
+
* @category combinators
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
*/
|
|
50
|
+
export declare const pipeThroughDuplex: {
|
|
51
|
+
/**
|
|
52
|
+
* @category combinators
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
*/
|
|
55
|
+
<B = Uint8Array, E2 = Cause.UnknownError>(options: {
|
|
56
|
+
readonly evaluate: LazyArg<Duplex>;
|
|
57
|
+
readonly onError?: (error: unknown) => E2;
|
|
58
|
+
readonly chunkSize?: number | undefined;
|
|
59
|
+
readonly bufferSize?: number | undefined;
|
|
60
|
+
readonly endOnDone?: boolean | undefined;
|
|
61
|
+
readonly encoding?: BufferEncoding | undefined;
|
|
62
|
+
}): <R, E, A>(self: Stream.Stream<A, E, R>) => Stream.Stream<B, E2 | E, R>;
|
|
63
|
+
/**
|
|
64
|
+
* @category combinators
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
*/
|
|
67
|
+
<R, E, A, B = Uint8Array, E2 = Cause.UnknownError>(self: Stream.Stream<A, E, R>, options: {
|
|
68
|
+
readonly evaluate: LazyArg<Duplex>;
|
|
69
|
+
readonly onError?: (error: unknown) => E2;
|
|
70
|
+
readonly chunkSize?: number | undefined;
|
|
71
|
+
readonly bufferSize?: number | undefined;
|
|
72
|
+
readonly endOnDone?: boolean | undefined;
|
|
73
|
+
readonly encoding?: BufferEncoding | undefined;
|
|
74
|
+
}): Stream.Stream<B, E | E2, R>;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* @category combinators
|
|
78
|
+
* @since 1.0.0
|
|
79
|
+
*/
|
|
80
|
+
export declare const pipeThroughSimple: {
|
|
81
|
+
/**
|
|
82
|
+
* @category combinators
|
|
83
|
+
* @since 1.0.0
|
|
84
|
+
*/
|
|
85
|
+
(duplex: LazyArg<Duplex>): <R, E>(self: Stream.Stream<string | Uint8Array, E, R>) => Stream.Stream<Uint8Array, E | Cause.UnknownError, R>;
|
|
86
|
+
/**
|
|
87
|
+
* @category combinators
|
|
88
|
+
* @since 1.0.0
|
|
89
|
+
*/
|
|
90
|
+
<R, E>(self: Stream.Stream<string | Uint8Array, E, R>, duplex: LazyArg<Duplex>): Stream.Stream<Uint8Array, Cause.UnknownError | E, R>;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* @since 1.0.0
|
|
94
|
+
* @category conversions
|
|
95
|
+
*/
|
|
96
|
+
export declare const toReadable: <E, R>(stream: Stream.Stream<string | Uint8Array, E, R>) => Effect.Effect<Readable, never, R>;
|
|
97
|
+
/**
|
|
98
|
+
* @since 1.0.0
|
|
99
|
+
* @category conversions
|
|
100
|
+
*/
|
|
101
|
+
export declare const toReadableNever: <E>(stream: Stream.Stream<string | Uint8Array, E, never>) => Readable;
|
|
102
|
+
/**
|
|
103
|
+
* @since 1.0.0
|
|
104
|
+
* @category conversions
|
|
105
|
+
*/
|
|
106
|
+
export declare const toString: <E = Cause.UnknownError>(readable: LazyArg<Readable | NodeJS.ReadableStream>, options?: {
|
|
107
|
+
readonly onError?: (error: unknown) => E;
|
|
108
|
+
readonly encoding?: BufferEncoding | undefined;
|
|
109
|
+
readonly maxBytes?: SizeInput | undefined;
|
|
110
|
+
}) => Effect.Effect<string, E>;
|
|
111
|
+
/**
|
|
112
|
+
* @since 1.0.0
|
|
113
|
+
* @category conversions
|
|
114
|
+
*/
|
|
115
|
+
export declare const toArrayBuffer: <E = Cause.UnknownError>(readable: LazyArg<Readable | NodeJS.ReadableStream>, options?: {
|
|
116
|
+
readonly onError?: (error: unknown) => E;
|
|
117
|
+
readonly maxBytes?: SizeInput | undefined;
|
|
118
|
+
}) => Effect.Effect<ArrayBuffer, E>;
|
|
119
|
+
/**
|
|
120
|
+
* @since 1.0.0
|
|
121
|
+
* @category conversions
|
|
122
|
+
*/
|
|
123
|
+
export declare const toUint8Array: <E = Cause.UnknownError>(readable: LazyArg<Readable | NodeJS.ReadableStream>, options?: {
|
|
124
|
+
readonly onError?: (error: unknown) => E;
|
|
125
|
+
readonly maxBytes?: SizeInput | undefined;
|
|
126
|
+
}) => Effect.Effect<Uint8Array, E>;
|
|
127
|
+
//# sourceMappingURL=NodeStream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeStream.d.ts","sourceRoot":"","sources":["../src/NodeStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Arr from "effect/Array";
|
|
5
|
+
import * as Cause from "effect/Cause";
|
|
6
|
+
import * as Channel from "effect/Channel";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Exit from "effect/Exit";
|
|
9
|
+
import * as Fiber from "effect/Fiber";
|
|
10
|
+
import { dual } from "effect/Function";
|
|
11
|
+
import * as MutableRef from "effect/MutableRef";
|
|
12
|
+
import * as Pull from "effect/Pull";
|
|
13
|
+
import * as Scope from "effect/Scope";
|
|
14
|
+
import * as ServiceMap from "effect/ServiceMap";
|
|
15
|
+
import * as Stream from "effect/Stream";
|
|
16
|
+
import { Readable } from "node:stream";
|
|
17
|
+
import { pullIntoWritable } from "./NodeSink.js";
|
|
18
|
+
/**
|
|
19
|
+
* @category constructors
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
export const fromReadable = options => Stream.fromChannel(fromReadableChannel(options));
|
|
23
|
+
/**
|
|
24
|
+
* @category constructors
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export const fromReadableChannel = options => Channel.fromTransform((_, scope) => readableToPullUnsafe({
|
|
28
|
+
scope,
|
|
29
|
+
readable: options.evaluate(),
|
|
30
|
+
onError: options.onError ?? defaultOnError,
|
|
31
|
+
chunkSize: options.chunkSize,
|
|
32
|
+
closeOnDone: options.closeOnDone
|
|
33
|
+
}));
|
|
34
|
+
/**
|
|
35
|
+
* @category constructors
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
*/
|
|
38
|
+
export const fromDuplex = options => Channel.fromTransform((upstream, scope) => {
|
|
39
|
+
const duplex = options.evaluate();
|
|
40
|
+
const exit = MutableRef.make(undefined);
|
|
41
|
+
return pullIntoWritable({
|
|
42
|
+
pull: upstream,
|
|
43
|
+
writable: duplex,
|
|
44
|
+
onError: options.onError ?? defaultOnError,
|
|
45
|
+
endOnDone: options.endOnDone,
|
|
46
|
+
encoding: options.encoding
|
|
47
|
+
}).pipe(Effect.catchCause(cause => {
|
|
48
|
+
if (Pull.isDoneCause(cause)) return Effect.void;
|
|
49
|
+
exit.current = Exit.failCause(cause);
|
|
50
|
+
return Effect.void;
|
|
51
|
+
}), Effect.forkIn(scope), Effect.flatMap(() => readableToPullUnsafe({
|
|
52
|
+
scope,
|
|
53
|
+
exit,
|
|
54
|
+
readable: duplex,
|
|
55
|
+
onError: options.onError ?? defaultOnError,
|
|
56
|
+
chunkSize: options.chunkSize
|
|
57
|
+
})));
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* @category combinators
|
|
61
|
+
* @since 1.0.0
|
|
62
|
+
*/
|
|
63
|
+
export const pipeThroughDuplex = /*#__PURE__*/dual(2, (self, options) => Stream.pipeThroughChannelOrFail(self, fromDuplex(options)));
|
|
64
|
+
/**
|
|
65
|
+
* @category combinators
|
|
66
|
+
* @since 1.0.0
|
|
67
|
+
*/
|
|
68
|
+
export const pipeThroughSimple = /*#__PURE__*/dual(2, (self, duplex) => pipeThroughDuplex(self, {
|
|
69
|
+
evaluate: duplex
|
|
70
|
+
}));
|
|
71
|
+
/**
|
|
72
|
+
* @since 1.0.0
|
|
73
|
+
* @category conversions
|
|
74
|
+
*/
|
|
75
|
+
export const toReadable = stream => Effect.map(Effect.services(), context => new StreamAdapter(context, stream));
|
|
76
|
+
/**
|
|
77
|
+
* @since 1.0.0
|
|
78
|
+
* @category conversions
|
|
79
|
+
*/
|
|
80
|
+
export const toReadableNever = stream => new StreamAdapter(ServiceMap.empty(), stream);
|
|
81
|
+
/**
|
|
82
|
+
* @since 1.0.0
|
|
83
|
+
* @category conversions
|
|
84
|
+
*/
|
|
85
|
+
export const toString = (readable, options) => {
|
|
86
|
+
const maxBytesNumber = options?.maxBytes ? Number(options.maxBytes) : undefined;
|
|
87
|
+
const onError = options?.onError ?? defaultOnError;
|
|
88
|
+
const encoding = options?.encoding ?? "utf8";
|
|
89
|
+
return Effect.callback(resume => {
|
|
90
|
+
const stream = readable();
|
|
91
|
+
stream.setEncoding(encoding);
|
|
92
|
+
stream.once("error", err => {
|
|
93
|
+
if ("closed" in stream && !stream.closed) {
|
|
94
|
+
stream.destroy();
|
|
95
|
+
}
|
|
96
|
+
resume(Effect.fail(onError(err)));
|
|
97
|
+
});
|
|
98
|
+
stream.once("error", err => {
|
|
99
|
+
resume(Effect.fail(onError(err)));
|
|
100
|
+
});
|
|
101
|
+
let string = "";
|
|
102
|
+
let bytes = 0;
|
|
103
|
+
stream.once("end", () => {
|
|
104
|
+
resume(Effect.succeed(string));
|
|
105
|
+
});
|
|
106
|
+
stream.on("data", chunk => {
|
|
107
|
+
string += chunk;
|
|
108
|
+
bytes += Buffer.byteLength(chunk);
|
|
109
|
+
if (maxBytesNumber && bytes > maxBytesNumber) {
|
|
110
|
+
resume(Effect.fail(onError(new Error("maxBytes exceeded"))));
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
return Effect.sync(() => {
|
|
114
|
+
if ("closed" in stream && !stream.closed) {
|
|
115
|
+
stream.destroy();
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* @since 1.0.0
|
|
122
|
+
* @category conversions
|
|
123
|
+
*/
|
|
124
|
+
export const toArrayBuffer = (readable, options) => {
|
|
125
|
+
const maxBytesNumber = options?.maxBytes ? Number(options.maxBytes) : undefined;
|
|
126
|
+
const onError = options?.onError ?? defaultOnError;
|
|
127
|
+
return Effect.callback(resume => {
|
|
128
|
+
const stream = readable();
|
|
129
|
+
let buffer = Buffer.alloc(0);
|
|
130
|
+
let bytes = 0;
|
|
131
|
+
stream.once("error", err => {
|
|
132
|
+
if ("closed" in stream && !stream.closed) {
|
|
133
|
+
stream.destroy();
|
|
134
|
+
}
|
|
135
|
+
resume(Effect.fail(onError(err)));
|
|
136
|
+
});
|
|
137
|
+
stream.once("end", () => {
|
|
138
|
+
if (buffer.buffer.byteLength === buffer.byteLength) {
|
|
139
|
+
return resume(Effect.succeed(buffer.buffer));
|
|
140
|
+
}
|
|
141
|
+
resume(Effect.succeed(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)));
|
|
142
|
+
});
|
|
143
|
+
stream.on("data", chunk => {
|
|
144
|
+
buffer = Buffer.concat([buffer, chunk]);
|
|
145
|
+
bytes += chunk.length;
|
|
146
|
+
if (maxBytesNumber && bytes > maxBytesNumber) {
|
|
147
|
+
resume(Effect.fail(onError(new Error("maxBytes exceeded"))));
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
return Effect.sync(() => {
|
|
151
|
+
if ("closed" in stream && !stream.closed) {
|
|
152
|
+
stream.destroy();
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* @since 1.0.0
|
|
159
|
+
* @category conversions
|
|
160
|
+
*/
|
|
161
|
+
export const toUint8Array = (readable, options) => Effect.map(toArrayBuffer(readable, options), buffer => new Uint8Array(buffer));
|
|
162
|
+
// ----------------------------------------------------------------------------
|
|
163
|
+
// internal
|
|
164
|
+
// ----------------------------------------------------------------------------
|
|
165
|
+
const readableToPullUnsafe = options => {
|
|
166
|
+
const readable = options.readable;
|
|
167
|
+
const closeOnDone = options.closeOnDone ?? true;
|
|
168
|
+
const exit = options.exit ?? MutableRef.make(undefined);
|
|
169
|
+
const latch = Effect.makeLatchUnsafe(false);
|
|
170
|
+
function onReadable() {
|
|
171
|
+
latch.openUnsafe();
|
|
172
|
+
}
|
|
173
|
+
function onError(error) {
|
|
174
|
+
exit.current = Exit.fail(options.onError(error));
|
|
175
|
+
latch.openUnsafe();
|
|
176
|
+
}
|
|
177
|
+
function onEnd() {
|
|
178
|
+
exit.current = Exit.fail(Cause.Done());
|
|
179
|
+
latch.openUnsafe();
|
|
180
|
+
}
|
|
181
|
+
readable.on("readable", onReadable);
|
|
182
|
+
readable.once("error", onError);
|
|
183
|
+
readable.once("end", onEnd);
|
|
184
|
+
const pull = Effect.suspend(function loop() {
|
|
185
|
+
let item = options.readable.read(options.chunkSize);
|
|
186
|
+
if (item === null) {
|
|
187
|
+
if (exit.current) {
|
|
188
|
+
return exit.current;
|
|
189
|
+
}
|
|
190
|
+
latch.closeUnsafe();
|
|
191
|
+
return Effect.flatMap(latch.await, loop);
|
|
192
|
+
}
|
|
193
|
+
const chunk = Arr.of(item);
|
|
194
|
+
while (true) {
|
|
195
|
+
item = options.readable.read(options.chunkSize);
|
|
196
|
+
if (item === null) break;
|
|
197
|
+
chunk.push(item);
|
|
198
|
+
}
|
|
199
|
+
return Effect.succeed(chunk);
|
|
200
|
+
});
|
|
201
|
+
return Effect.as(Scope.addFinalizer(options.scope, Effect.sync(() => {
|
|
202
|
+
readable.off("readable", onReadable);
|
|
203
|
+
readable.off("error", onError);
|
|
204
|
+
readable.off("end", onEnd);
|
|
205
|
+
if (closeOnDone && "closed" in options.readable && !options.readable.closed) {
|
|
206
|
+
options.readable.destroy();
|
|
207
|
+
}
|
|
208
|
+
})), pull);
|
|
209
|
+
};
|
|
210
|
+
class StreamAdapter extends Readable {
|
|
211
|
+
readLatch;
|
|
212
|
+
fiber = undefined;
|
|
213
|
+
constructor(context, stream) {
|
|
214
|
+
super({});
|
|
215
|
+
this.readLatch = Effect.makeLatchUnsafe(false);
|
|
216
|
+
this.fiber = Stream.runForEachArray(stream, chunk => this.readLatch.whenOpen(Effect.sync(() => {
|
|
217
|
+
this.readLatch.closeUnsafe();
|
|
218
|
+
for (let i = 0; i < chunk.length; i++) {
|
|
219
|
+
const item = chunk[i];
|
|
220
|
+
if (typeof item === "string") {
|
|
221
|
+
this.push(item, "utf8");
|
|
222
|
+
} else {
|
|
223
|
+
this.push(item);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}))).pipe(this.readLatch.whenOpen, Effect.provideServices(context), Effect.runFork);
|
|
227
|
+
this.fiber.addObserver(exit => {
|
|
228
|
+
this.fiber = undefined;
|
|
229
|
+
if (Exit.isSuccess(exit)) {
|
|
230
|
+
this.push(null);
|
|
231
|
+
} else {
|
|
232
|
+
this.destroy(Cause.squash(exit.cause));
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
_read(_size) {
|
|
237
|
+
this.readLatch.openUnsafe();
|
|
238
|
+
}
|
|
239
|
+
_destroy(error, callback) {
|
|
240
|
+
if (!this.fiber) {
|
|
241
|
+
return callback(error);
|
|
242
|
+
}
|
|
243
|
+
Effect.runFork(Fiber.interrupt(this.fiber)).addObserver(exit => {
|
|
244
|
+
callback(exit._tag === "Failure" ? Cause.squash(exit.cause) : error);
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
const defaultOnError = error => new Cause.UnknownError(error);
|
|
249
|
+
//# sourceMappingURL=NodeStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeStream.js","names":["Arr","Cause","Channel","Effect","Exit","Fiber","dual","MutableRef","Pull","Scope","ServiceMap","Stream","Readable","pullIntoWritable","fromReadable","options","fromChannel","fromReadableChannel","fromTransform","_","scope","readableToPullUnsafe","readable","evaluate","onError","defaultOnError","chunkSize","closeOnDone","fromDuplex","upstream","duplex","exit","make","undefined","pull","writable","endOnDone","encoding","pipe","catchCause","cause","isDoneCause","void","current","failCause","forkIn","flatMap","pipeThroughDuplex","self","pipeThroughChannelOrFail","pipeThroughSimple","toReadable","stream","map","services","context","StreamAdapter","toReadableNever","empty","toString","maxBytesNumber","maxBytes","Number","callback","resume","setEncoding","once","err","closed","destroy","fail","string","bytes","succeed","on","chunk","Buffer","byteLength","Error","sync","toArrayBuffer","buffer","alloc","slice","byteOffset","concat","length","toUint8Array","Uint8Array","latch","makeLatchUnsafe","onReadable","openUnsafe","error","onEnd","Done","suspend","loop","item","read","closeUnsafe","await","of","push","as","addFinalizer","off","readLatch","fiber","constructor","runForEachArray","whenOpen","i","provideServices","runFork","addObserver","isSuccess","squash","_read","_size","_destroy","interrupt","_tag","UnknownError"],"sources":["../src/NodeStream.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
import type * as Scope from "effect/Scope";
|
|
4
|
+
import * as Terminal from "effect/Terminal";
|
|
5
|
+
/**
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
* @category constructors
|
|
8
|
+
*/
|
|
9
|
+
export declare const make: (shouldQuit?: (input: Terminal.UserInput) => boolean) => Effect.Effect<Terminal.Terminal, never, Scope.Scope>;
|
|
10
|
+
/**
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category layers
|
|
13
|
+
*/
|
|
14
|
+
export declare const layer: Layer.Layer<Terminal.Terminal>;
|
|
15
|
+
//# sourceMappingURL=NodeTerminal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeTerminal.d.ts","sourceRoot":"","sources":["../src/NodeTerminal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAKrC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAG3C;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,CACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,KAAK,OAAO,KAChD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAgFvD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAA4D,CAAA"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import * as Error from "@effect/platform/Error";
|
|
2
|
-
import * as Terminal from "@effect/platform/Terminal";
|
|
3
1
|
import * as Effect from "effect/Effect";
|
|
4
|
-
import * as Exit from "effect/Exit";
|
|
5
2
|
import * as Layer from "effect/Layer";
|
|
6
|
-
import
|
|
7
|
-
import * as
|
|
3
|
+
import { badArgument } from "effect/PlatformError";
|
|
4
|
+
import * as Predicate from "effect/Predicate";
|
|
5
|
+
import * as Queue from "effect/Queue";
|
|
8
6
|
import * as RcRef from "effect/RcRef";
|
|
7
|
+
import * as Terminal from "effect/Terminal";
|
|
9
8
|
import * as readline from "node:readline";
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
/**
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
* @category constructors
|
|
12
|
+
*/
|
|
12
13
|
export const make = /*#__PURE__*/Effect.fnUntraced(function* (shouldQuit = defaultShouldQuit) {
|
|
13
14
|
const stdin = process.stdin;
|
|
14
15
|
const stdout = process.stdout;
|
|
@@ -32,14 +33,12 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (shouldQuit = defau
|
|
|
32
33
|
}))
|
|
33
34
|
});
|
|
34
35
|
const columns = Effect.sync(() => stdout.columns ?? 0);
|
|
35
|
-
const rows = Effect.sync(() => stdout.rows ?? 0);
|
|
36
|
-
const isTTY = Effect.sync(() => Boolean(stdout.isTTY));
|
|
37
36
|
const readInput = Effect.gen(function* () {
|
|
38
37
|
yield* RcRef.get(rlRef);
|
|
39
|
-
const
|
|
38
|
+
const queue = yield* Queue.make();
|
|
40
39
|
const handleKeypress = (s, k) => {
|
|
41
40
|
const userInput = {
|
|
42
|
-
input:
|
|
41
|
+
input: s,
|
|
43
42
|
key: {
|
|
44
43
|
name: k.name ?? "",
|
|
45
44
|
ctrl: !!k.ctrl,
|
|
@@ -47,37 +46,41 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (shouldQuit = defau
|
|
|
47
46
|
shift: !!k.shift
|
|
48
47
|
}
|
|
49
48
|
};
|
|
50
|
-
|
|
49
|
+
Queue.offerUnsafe(queue, userInput);
|
|
51
50
|
if (shouldQuit(userInput)) {
|
|
52
|
-
|
|
51
|
+
Queue.endUnsafe(queue);
|
|
53
52
|
}
|
|
54
53
|
};
|
|
55
54
|
yield* Effect.addFinalizer(() => Effect.sync(() => stdin.off("keypress", handleKeypress)));
|
|
56
55
|
stdin.on("keypress", handleKeypress);
|
|
57
|
-
return
|
|
56
|
+
return queue;
|
|
58
57
|
});
|
|
59
|
-
const readLine = RcRef.get(rlRef)
|
|
58
|
+
const readLine = Effect.scoped(Effect.flatMap(RcRef.get(rlRef), readlineInterface => Effect.callback(resume => {
|
|
60
59
|
const onLine = line => resume(Effect.succeed(line));
|
|
61
60
|
readlineInterface.once("line", onLine);
|
|
62
61
|
return Effect.sync(() => readlineInterface.off("line", onLine));
|
|
63
|
-
}))
|
|
64
|
-
const display = prompt => Effect.uninterruptible(Effect.
|
|
65
|
-
stdout.write(prompt, err => err ? resume(Effect.
|
|
62
|
+
})));
|
|
63
|
+
const display = prompt => Effect.uninterruptible(Effect.callback(resume => {
|
|
64
|
+
stdout.write(prompt, err => Predicate.isNullish(err) ? resume(Effect.void) : resume(Effect.fail(badArgument({
|
|
66
65
|
module: "Terminal",
|
|
67
66
|
method: "display",
|
|
68
67
|
description: "Failed to write prompt to stdout",
|
|
69
68
|
cause: err
|
|
70
|
-
})))
|
|
69
|
+
}))));
|
|
71
70
|
}));
|
|
72
|
-
return Terminal.
|
|
71
|
+
return Terminal.make({
|
|
73
72
|
columns,
|
|
74
|
-
rows,
|
|
75
|
-
isTTY,
|
|
76
73
|
readInput,
|
|
77
74
|
readLine,
|
|
78
75
|
display
|
|
79
76
|
});
|
|
80
77
|
});
|
|
81
|
-
/**
|
|
82
|
-
|
|
83
|
-
|
|
78
|
+
/**
|
|
79
|
+
* @since 1.0.0
|
|
80
|
+
* @category layers
|
|
81
|
+
*/
|
|
82
|
+
export const layer = /*#__PURE__*/Layer.effect(Terminal.Terminal, /*#__PURE__*/make(defaultShouldQuit));
|
|
83
|
+
function defaultShouldQuit(input) {
|
|
84
|
+
return input.key.ctrl && (input.key.name === "c" || input.key.name === "d");
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=NodeTerminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeTerminal.js","names":["Effect","Layer","badArgument","Predicate","Queue","RcRef","Terminal","readline","make","fnUntraced","shouldQuit","defaultShouldQuit","stdin","process","stdout","rlRef","acquire","acquireRelease","sync","rl","createInterface","input","escapeCodeTimeout","emitKeypressEvents","isTTY","setRawMode","close","columns","readInput","gen","get","queue","handleKeypress","s","k","userInput","key","name","ctrl","meta","shift","offerUnsafe","endUnsafe","addFinalizer","off","on","readLine","scoped","flatMap","readlineInterface","callback","resume","onLine","line","succeed","once","display","prompt","uninterruptible","write","err","isNullish","void","fail","module","method","description","cause","layer","effect"],"sources":["../src/NodeTerminal.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/internal/utils.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as PlatformError from "effect/PlatformError";
|
|
2
2
|
/** @internal */
|
|
3
3
|
export const handleErrnoException = (module, method) => (err, [path]) => {
|
|
4
4
|
let reason = "Unknown";
|
|
@@ -25,14 +25,13 @@ export const handleErrnoException = (module, method) => (err, [path]) => {
|
|
|
25
25
|
reason = "BadResource";
|
|
26
26
|
break;
|
|
27
27
|
}
|
|
28
|
-
return
|
|
29
|
-
reason,
|
|
28
|
+
return PlatformError.systemError({
|
|
29
|
+
kind: reason,
|
|
30
30
|
module,
|
|
31
31
|
method,
|
|
32
32
|
pathOrDescriptor: path,
|
|
33
33
|
syscall: err.syscall,
|
|
34
|
-
description: err.message,
|
|
35
34
|
cause: err
|
|
36
35
|
});
|
|
37
36
|
};
|
|
38
|
-
//# sourceMappingURL=
|
|
37
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","names":["PlatformError","handleErrnoException","module","method","err","path","reason","code","systemError","kind","pathOrDescriptor","syscall","cause"],"sources":["../../src/internal/utils.ts"],"sourcesContent":[null],"mappings":"AACA,OAAO,KAAKA,aAAa,MAAM,sBAAsB;AAGrD;AACA,OAAO,MAAMC,oBAAoB,GAAGA,CAACC,MAA6B,EAAEC,MAAc,KAClF,CACEC,GAA0B,EAC1B,CAACC,IAAI,CAAiD,KACvB;EAC/B,IAAIC,MAAM,GAAoB,SAAS;EAEvC,QAAQF,GAAG,CAACG,IAAI;IACd,KAAK,QAAQ;MACXD,MAAM,GAAG,UAAU;MACnB;IAEF,KAAK,QAAQ;MACXA,MAAM,GAAG,kBAAkB;MAC3B;IAEF,KAAK,QAAQ;MACXA,MAAM,GAAG,eAAe;MACxB;IAEF,KAAK,QAAQ;MACXA,MAAM,GAAG,aAAa;MACtB;IAEF,KAAK,SAAS;MACZA,MAAM,GAAG,aAAa;MACtB;IAEF,KAAK,OAAO;MACVA,MAAM,GAAG,MAAM;MACf;IAEF,KAAK,OAAO;MACVA,MAAM,GAAG,aAAa;MACtB;EACJ;EAEA,OAAON,aAAa,CAACQ,WAAW,CAAC;IAC/BC,IAAI,EAAEH,MAAM;IACZJ,MAAM;IACNC,MAAM;IACNO,gBAAgB,EAAEL,IAAuB;IACzCM,OAAO,EAAEP,GAAG,CAACO,OAAO;IACpBC,KAAK,EAAER;GACR,CAAC;AACJ,CAAC","ignoreList":[]}
|