@effect/platform-node 0.31.7 → 0.31.8
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/NodeContext.js +2 -1
- package/dist/cjs/NodeContext.js.map +1 -1
- package/dist/cjs/internal/terminal.js +14 -9
- package/dist/cjs/internal/terminal.js.map +1 -1
- package/dist/dts/NodeContext.d.ts +2 -1
- package/dist/dts/NodeContext.d.ts.map +1 -1
- package/dist/esm/NodeContext.js +2 -1
- package/dist/esm/NodeContext.js.map +1 -1
- package/dist/esm/internal/terminal.js +14 -9
- package/dist/esm/internal/terminal.js.map +1 -1
- package/package.json +1 -1
- package/src/NodeContext.ts +3 -0
- package/src/internal/terminal.ts +27 -19
package/dist/cjs/NodeContext.js
CHANGED
|
@@ -9,6 +9,7 @@ var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/L
|
|
|
9
9
|
var CommandExecutor = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./CommandExecutor.js"));
|
|
10
10
|
var FileSystem = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./FileSystem.js"));
|
|
11
11
|
var Path = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Path.js"));
|
|
12
|
+
var Terminal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Terminal.js"));
|
|
12
13
|
var Worker = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Worker.js"));
|
|
13
14
|
function _getRequireWildcardCache(e) {
|
|
14
15
|
if ("function" != typeof WeakMap) return null;
|
|
@@ -43,5 +44,5 @@ function _interopRequireWildcard(e, r) {
|
|
|
43
44
|
* @since 1.0.0
|
|
44
45
|
* @category layer
|
|
45
46
|
*/
|
|
46
|
-
const layer = exports.layer = /*#__PURE__*/(0, _Function.pipe)(FileSystem.layer, /*#__PURE__*/Layer.merge(Path.layer), /*#__PURE__*/Layer.merge( /*#__PURE__*/Layer.provideMerge(FileSystem.layer, CommandExecutor.layer)), /*#__PURE__*/Layer.merge(Worker.layerManager));
|
|
47
|
+
const layer = exports.layer = /*#__PURE__*/(0, _Function.pipe)(FileSystem.layer, /*#__PURE__*/Layer.merge(Path.layer), /*#__PURE__*/Layer.merge( /*#__PURE__*/Layer.provideMerge(FileSystem.layer, CommandExecutor.layer)), /*#__PURE__*/Layer.merge(Terminal.layer), /*#__PURE__*/Layer.merge(Worker.layerManager));
|
|
47
48
|
//# sourceMappingURL=NodeContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeContext.js","names":["_Function","require","Layer","_interopRequireWildcard","CommandExecutor","FileSystem","Path","Worker","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","layer","exports","pipe","merge","provideMerge","layerManager"],"sources":["../../src/NodeContext.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,SAAA,gBAAAC,OAAA;AACA,IAAAC,KAAA,gBAAAC,uBAAA,eAAAF,OAAA;AACA,IAAAG,eAAA,gBAAAD,uBAAA,eAAAF,OAAA;AACA,IAAAI,UAAA,gBAAAF,uBAAA,eAAAF,OAAA;AACA,IAAAK,IAAA,gBAAAH,uBAAA,eAAAF,OAAA;AACA,IAAAM,
|
|
1
|
+
{"version":3,"file":"NodeContext.js","names":["_Function","require","Layer","_interopRequireWildcard","CommandExecutor","FileSystem","Path","Terminal","Worker","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","layer","exports","pipe","merge","provideMerge","layerManager"],"sources":["../../src/NodeContext.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,SAAA,gBAAAC,OAAA;AACA,IAAAC,KAAA,gBAAAC,uBAAA,eAAAF,OAAA;AACA,IAAAG,eAAA,gBAAAD,uBAAA,eAAAF,OAAA;AACA,IAAAI,UAAA,gBAAAF,uBAAA,eAAAF,OAAA;AACA,IAAAK,IAAA,gBAAAH,uBAAA,eAAAF,OAAA;AACA,IAAAM,QAAA,gBAAAJ,uBAAA,eAAAF,OAAA;AACA,IAAAO,MAAA,gBAAAL,uBAAA,eAAAF,OAAA;AAAqC,SAAAQ,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,SAAAP,wBAAAO,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;AATrC;;;;AAsBA;;;;AAIO,MAAMY,KAAK,GAAAC,OAAA,CAAAD,KAAA,gBAA2C,IAAA9B,SAAA,CAAAgC,IAAI,EAC/D3B,UAAU,CAACyB,KAAK,eAChB5B,KAAK,CAAC+B,KAAK,CAAC3B,IAAI,CAACwB,KAAK,CAAC,eACvB5B,KAAK,CAAC+B,KAAK,eAAC/B,KAAK,CAACgC,YAAY,CAAC7B,UAAU,CAACyB,KAAK,EAAE1B,eAAe,CAAC0B,KAAK,CAAC,CAAC,eACxE5B,KAAK,CAAC+B,KAAK,CAAC1B,QAAQ,CAACuB,KAAK,CAAC,eAC3B5B,KAAK,CAAC+B,KAAK,CAACzB,MAAM,CAAC2B,YAAY,CAAC,CACjC"}
|
|
@@ -40,8 +40,9 @@ const defaultShouldQuit = input => input.key.ctrl && (input.key.name === "c" ||
|
|
|
40
40
|
const make = (shouldQuit = defaultShouldQuit) => Effect.gen(function* (_) {
|
|
41
41
|
const input = yield* _(Effect.sync(() => globalThis.process.stdin));
|
|
42
42
|
const output = yield* _(Effect.sync(() => globalThis.process.stdout));
|
|
43
|
-
//
|
|
44
|
-
|
|
43
|
+
// Acquire a `readline` interface and use it to force `stdin` to emit
|
|
44
|
+
// keypress events
|
|
45
|
+
const acquireReadlineInterface = Effect.sync(() => {
|
|
45
46
|
const rl = readline.createInterface({
|
|
46
47
|
input,
|
|
47
48
|
escapeCodeTimeout: 50
|
|
@@ -51,13 +52,9 @@ const make = (shouldQuit = defaultShouldQuit) => Effect.gen(function* (_) {
|
|
|
51
52
|
input.setRawMode(true);
|
|
52
53
|
}
|
|
53
54
|
return rl;
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
rl.close();
|
|
59
|
-
})));
|
|
60
|
-
const readInput = Effect.async(resume => {
|
|
55
|
+
});
|
|
56
|
+
// Handle the `"keypress"` event emitted by `stdin` forced by `readline`
|
|
57
|
+
const handleKeypressEvent = Effect.async(resume => {
|
|
61
58
|
const handleKeypress = (input, key) => {
|
|
62
59
|
const userInput = {
|
|
63
60
|
input: Option.fromNullable(input),
|
|
@@ -79,6 +76,14 @@ const make = (shouldQuit = defaultShouldQuit) => Effect.gen(function* (_) {
|
|
|
79
76
|
input.removeListener("keypress", handleKeypress);
|
|
80
77
|
});
|
|
81
78
|
});
|
|
79
|
+
// Close the `readline` interface
|
|
80
|
+
const releaseReadlineInterface = rl => Effect.sync(() => {
|
|
81
|
+
if (input.isTTY) {
|
|
82
|
+
input.setRawMode(false);
|
|
83
|
+
}
|
|
84
|
+
rl.close();
|
|
85
|
+
});
|
|
86
|
+
const readInput = Effect.acquireUseRelease(acquireReadlineInterface, () => handleKeypressEvent, releaseReadlineInterface);
|
|
82
87
|
const display = prompt => Effect.uninterruptible(Effect.async(resume => {
|
|
83
88
|
output.write(prompt, err => {
|
|
84
89
|
if (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","names":["Error","_interopRequireWildcard","require","Terminal","Effect","Layer","Option","readline","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","defaultShouldQuit","input","key","ctrl","name","make","shouldQuit","gen","_","sync","globalThis","process","stdin","output","stdout","
|
|
1
|
+
{"version":3,"file":"terminal.js","names":["Error","_interopRequireWildcard","require","Terminal","Effect","Layer","Option","readline","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","defaultShouldQuit","input","key","ctrl","name","make","shouldQuit","gen","_","sync","globalThis","process","stdin","output","stdout","acquireReadlineInterface","rl","createInterface","escapeCodeTimeout","emitKeypressEvents","isTTY","setRawMode","handleKeypressEvent","async","resume","handleKeypress","userInput","fromNullable","meta","shift","fail","QuitException","succeed","once","removeListener","releaseReadlineInterface","close","readInput","acquireUseRelease","display","prompt","uninterruptible","write","err","BadArgument","module","method","message","String","unit","of","columns","exports","layer","scoped"],"sources":["../../../src/internal/terminal.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -2,12 +2,13 @@ import * as Layer from "effect/Layer";
|
|
|
2
2
|
import * as CommandExecutor from "./CommandExecutor.js";
|
|
3
3
|
import * as FileSystem from "./FileSystem.js";
|
|
4
4
|
import * as Path from "./Path.js";
|
|
5
|
+
import * as Terminal from "./Terminal.js";
|
|
5
6
|
import * as Worker from "./Worker.js";
|
|
6
7
|
/**
|
|
7
8
|
* @since 1.0.0
|
|
8
9
|
* @category models
|
|
9
10
|
*/
|
|
10
|
-
export type NodeContext = CommandExecutor.CommandExecutor | FileSystem.FileSystem | Path.Path | Worker.WorkerManager;
|
|
11
|
+
export type NodeContext = CommandExecutor.CommandExecutor | FileSystem.FileSystem | Path.Path | Terminal.Terminal | Worker.WorkerManager;
|
|
11
12
|
/**
|
|
12
13
|
* @since 1.0.0
|
|
13
14
|
* @category layer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeContext.d.ts","sourceRoot":"","sources":["../../src/NodeContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,eAAe,CAAC,eAAe,GAC/B,UAAU,CAAC,UAAU,GACrB,IAAI,CAAC,IAAI,GACT,MAAM,CAAC,aAAa,CAAA;AAExB;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"NodeContext.d.ts","sourceRoot":"","sources":["../../src/NodeContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,eAAe,CAAC,eAAe,GAC/B,UAAU,CAAC,UAAU,GACrB,IAAI,CAAC,IAAI,GACT,QAAQ,CAAC,QAAQ,GACjB,MAAM,CAAC,aAAa,CAAA;AAExB;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAMxD,CAAA"}
|
package/dist/esm/NodeContext.js
CHANGED
|
@@ -6,10 +6,11 @@ import * as Layer from "effect/Layer";
|
|
|
6
6
|
import * as CommandExecutor from "./CommandExecutor.js";
|
|
7
7
|
import * as FileSystem from "./FileSystem.js";
|
|
8
8
|
import * as Path from "./Path.js";
|
|
9
|
+
import * as Terminal from "./Terminal.js";
|
|
9
10
|
import * as Worker from "./Worker.js";
|
|
10
11
|
/**
|
|
11
12
|
* @since 1.0.0
|
|
12
13
|
* @category layer
|
|
13
14
|
*/
|
|
14
|
-
export const layer = /*#__PURE__*/pipe(FileSystem.layer, /*#__PURE__*/Layer.merge(Path.layer), /*#__PURE__*/Layer.merge( /*#__PURE__*/Layer.provideMerge(FileSystem.layer, CommandExecutor.layer)), /*#__PURE__*/Layer.merge(Worker.layerManager));
|
|
15
|
+
export const layer = /*#__PURE__*/pipe(FileSystem.layer, /*#__PURE__*/Layer.merge(Path.layer), /*#__PURE__*/Layer.merge( /*#__PURE__*/Layer.provideMerge(FileSystem.layer, CommandExecutor.layer)), /*#__PURE__*/Layer.merge(Terminal.layer), /*#__PURE__*/Layer.merge(Worker.layerManager));
|
|
15
16
|
//# sourceMappingURL=NodeContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeContext.js","names":["pipe","Layer","CommandExecutor","FileSystem","Path","Worker","layer","merge","provideMerge","layerManager"],"sources":["../../src/NodeContext.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,SAASA,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AACvD,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAC7C,OAAO,KAAKC,IAAI,MAAM,WAAW;AACjC,OAAO,KAAKC,MAAM,MAAM,aAAa;
|
|
1
|
+
{"version":3,"file":"NodeContext.js","names":["pipe","Layer","CommandExecutor","FileSystem","Path","Terminal","Worker","layer","merge","provideMerge","layerManager"],"sources":["../../src/NodeContext.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,SAASA,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AACvD,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAC7C,OAAO,KAAKC,IAAI,MAAM,WAAW;AACjC,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,OAAO,KAAKC,MAAM,MAAM,aAAa;AAarC;;;;AAIA,OAAO,MAAMC,KAAK,gBAA2CP,IAAI,CAC/DG,UAAU,CAACI,KAAK,eAChBN,KAAK,CAACO,KAAK,CAACJ,IAAI,CAACG,KAAK,CAAC,eACvBN,KAAK,CAACO,KAAK,eAACP,KAAK,CAACQ,YAAY,CAACN,UAAU,CAACI,KAAK,EAAEL,eAAe,CAACK,KAAK,CAAC,CAAC,eACxEN,KAAK,CAACO,KAAK,CAACH,QAAQ,CAACE,KAAK,CAAC,eAC3BN,KAAK,CAACO,KAAK,CAACF,MAAM,CAACI,YAAY,CAAC,CACjC"}
|
|
@@ -9,8 +9,9 @@ const defaultShouldQuit = input => input.key.ctrl && (input.key.name === "c" ||
|
|
|
9
9
|
export const make = (shouldQuit = defaultShouldQuit) => Effect.gen(function* (_) {
|
|
10
10
|
const input = yield* _(Effect.sync(() => globalThis.process.stdin));
|
|
11
11
|
const output = yield* _(Effect.sync(() => globalThis.process.stdout));
|
|
12
|
-
//
|
|
13
|
-
|
|
12
|
+
// Acquire a `readline` interface and use it to force `stdin` to emit
|
|
13
|
+
// keypress events
|
|
14
|
+
const acquireReadlineInterface = Effect.sync(() => {
|
|
14
15
|
const rl = readline.createInterface({
|
|
15
16
|
input,
|
|
16
17
|
escapeCodeTimeout: 50
|
|
@@ -20,13 +21,9 @@ export const make = (shouldQuit = defaultShouldQuit) => Effect.gen(function* (_)
|
|
|
20
21
|
input.setRawMode(true);
|
|
21
22
|
}
|
|
22
23
|
return rl;
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
rl.close();
|
|
28
|
-
})));
|
|
29
|
-
const readInput = Effect.async(resume => {
|
|
24
|
+
});
|
|
25
|
+
// Handle the `"keypress"` event emitted by `stdin` forced by `readline`
|
|
26
|
+
const handleKeypressEvent = Effect.async(resume => {
|
|
30
27
|
const handleKeypress = (input, key) => {
|
|
31
28
|
const userInput = {
|
|
32
29
|
input: Option.fromNullable(input),
|
|
@@ -48,6 +45,14 @@ export const make = (shouldQuit = defaultShouldQuit) => Effect.gen(function* (_)
|
|
|
48
45
|
input.removeListener("keypress", handleKeypress);
|
|
49
46
|
});
|
|
50
47
|
});
|
|
48
|
+
// Close the `readline` interface
|
|
49
|
+
const releaseReadlineInterface = rl => Effect.sync(() => {
|
|
50
|
+
if (input.isTTY) {
|
|
51
|
+
input.setRawMode(false);
|
|
52
|
+
}
|
|
53
|
+
rl.close();
|
|
54
|
+
});
|
|
55
|
+
const readInput = Effect.acquireUseRelease(acquireReadlineInterface, () => handleKeypressEvent, releaseReadlineInterface);
|
|
51
56
|
const display = prompt => Effect.uninterruptible(Effect.async(resume => {
|
|
52
57
|
output.write(prompt, err => {
|
|
53
58
|
if (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","names":["Error","Terminal","Effect","Layer","Option","readline","defaultShouldQuit","input","key","ctrl","name","make","shouldQuit","gen","_","sync","globalThis","process","stdin","output","stdout","
|
|
1
|
+
{"version":3,"file":"terminal.js","names":["Error","Terminal","Effect","Layer","Option","readline","defaultShouldQuit","input","key","ctrl","name","make","shouldQuit","gen","_","sync","globalThis","process","stdin","output","stdout","acquireReadlineInterface","rl","createInterface","escapeCodeTimeout","emitKeypressEvents","isTTY","setRawMode","handleKeypressEvent","async","resume","handleKeypress","userInput","fromNullable","meta","shift","fail","QuitException","succeed","once","removeListener","releaseReadlineInterface","close","readInput","acquireUseRelease","display","prompt","uninterruptible","write","err","BadArgument","module","method","message","String","unit","of","columns","layer","scoped"],"sources":["../../../src/internal/terminal.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/package.json
CHANGED
package/src/NodeContext.ts
CHANGED
|
@@ -6,6 +6,7 @@ import * as Layer from "effect/Layer"
|
|
|
6
6
|
import * as CommandExecutor from "./CommandExecutor.js"
|
|
7
7
|
import * as FileSystem from "./FileSystem.js"
|
|
8
8
|
import * as Path from "./Path.js"
|
|
9
|
+
import * as Terminal from "./Terminal.js"
|
|
9
10
|
import * as Worker from "./Worker.js"
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -16,6 +17,7 @@ export type NodeContext =
|
|
|
16
17
|
| CommandExecutor.CommandExecutor
|
|
17
18
|
| FileSystem.FileSystem
|
|
18
19
|
| Path.Path
|
|
20
|
+
| Terminal.Terminal
|
|
19
21
|
| Worker.WorkerManager
|
|
20
22
|
|
|
21
23
|
/**
|
|
@@ -26,5 +28,6 @@ export const layer: Layer.Layer<never, never, NodeContext> = pipe(
|
|
|
26
28
|
FileSystem.layer,
|
|
27
29
|
Layer.merge(Path.layer),
|
|
28
30
|
Layer.merge(Layer.provideMerge(FileSystem.layer, CommandExecutor.layer)),
|
|
31
|
+
Layer.merge(Terminal.layer),
|
|
29
32
|
Layer.merge(Worker.layerManager)
|
|
30
33
|
)
|
package/src/internal/terminal.ts
CHANGED
|
@@ -16,26 +16,19 @@ export const make = (
|
|
|
16
16
|
const input = yield* _(Effect.sync(() => globalThis.process.stdin))
|
|
17
17
|
const output = yield* _(Effect.sync(() => globalThis.process.stdout))
|
|
18
18
|
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
(rl) =>
|
|
30
|
-
Effect.sync(() => {
|
|
31
|
-
if (input.isTTY) {
|
|
32
|
-
input.setRawMode(false)
|
|
33
|
-
}
|
|
34
|
-
rl.close()
|
|
35
|
-
})
|
|
36
|
-
))
|
|
19
|
+
// Acquire a `readline` interface and use it to force `stdin` to emit
|
|
20
|
+
// keypress events
|
|
21
|
+
const acquireReadlineInterface = Effect.sync(() => {
|
|
22
|
+
const rl = readline.createInterface({ input, escapeCodeTimeout: 50 })
|
|
23
|
+
readline.emitKeypressEvents(input, rl)
|
|
24
|
+
if (input.isTTY) {
|
|
25
|
+
input.setRawMode(true)
|
|
26
|
+
}
|
|
27
|
+
return rl
|
|
28
|
+
})
|
|
37
29
|
|
|
38
|
-
|
|
30
|
+
// Handle the `"keypress"` event emitted by `stdin` forced by `readline`
|
|
31
|
+
const handleKeypressEvent = Effect.async<never, Terminal.QuitException, Terminal.UserInput>((resume) => {
|
|
39
32
|
const handleKeypress = (input: string | undefined, key: readline.Key) => {
|
|
40
33
|
const userInput: Terminal.UserInput = {
|
|
41
34
|
input: Option.fromNullable(input),
|
|
@@ -58,6 +51,21 @@ export const make = (
|
|
|
58
51
|
})
|
|
59
52
|
})
|
|
60
53
|
|
|
54
|
+
// Close the `readline` interface
|
|
55
|
+
const releaseReadlineInterface = (rl: readline.Interface) =>
|
|
56
|
+
Effect.sync(() => {
|
|
57
|
+
if (input.isTTY) {
|
|
58
|
+
input.setRawMode(false)
|
|
59
|
+
}
|
|
60
|
+
rl.close()
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
const readInput = Effect.acquireUseRelease(
|
|
64
|
+
acquireReadlineInterface,
|
|
65
|
+
() => handleKeypressEvent,
|
|
66
|
+
releaseReadlineInterface
|
|
67
|
+
)
|
|
68
|
+
|
|
61
69
|
const display = (prompt: string): Effect.Effect<never, Error.PlatformError, void> =>
|
|
62
70
|
Effect.uninterruptible(
|
|
63
71
|
Effect.async((resume) => {
|