@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.
@@ -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,MAAA,gBAAAJ,uBAAA,eAAAF,OAAA;AAAqC,SAAAO,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,SAAAN,wBAAAM,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;AARrC;;;;AAoBA;;;;AAIO,MAAMY,KAAK,GAAAC,OAAA,CAAAD,KAAA,gBAA2C,IAAA7B,SAAA,CAAA+B,IAAI,EAC/D1B,UAAU,CAACwB,KAAK,eAChB3B,KAAK,CAAC8B,KAAK,CAAC1B,IAAI,CAACuB,KAAK,CAAC,eACvB3B,KAAK,CAAC8B,KAAK,eAAC9B,KAAK,CAAC+B,YAAY,CAAC5B,UAAU,CAACwB,KAAK,EAAEzB,eAAe,CAACyB,KAAK,CAAC,CAAC,eACxE3B,KAAK,CAAC8B,KAAK,CAACzB,MAAM,CAAC2B,YAAY,CAAC,CACjC"}
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
- // Create a readline interface and force it to emit keypress events
44
- yield* _(Effect.acquireRelease(Effect.sync(() => {
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
- }), rl => Effect.sync(() => {
55
- if (input.isTTY) {
56
- input.setRawMode(false);
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","acquireRelease","rl","createInterface","escapeCodeTimeout","emitKeypressEvents","isTTY","setRawMode","close","readInput","async","resume","handleKeypress","userInput","fromNullable","meta","shift","fail","QuitException","succeed","once","removeListener","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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"}
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,CAKxD,CAAA"}
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"}
@@ -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;AAYrC;;;;AAIA,OAAO,MAAMC,KAAK,gBAA2CN,IAAI,CAC/DG,UAAU,CAACG,KAAK,eAChBL,KAAK,CAACM,KAAK,CAACH,IAAI,CAACE,KAAK,CAAC,eACvBL,KAAK,CAACM,KAAK,eAACN,KAAK,CAACO,YAAY,CAACL,UAAU,CAACG,KAAK,EAAEJ,eAAe,CAACI,KAAK,CAAC,CAAC,eACxEL,KAAK,CAACM,KAAK,CAACF,MAAM,CAACI,YAAY,CAAC,CACjC"}
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
- // Create a readline interface and force it to emit keypress events
13
- yield* _(Effect.acquireRelease(Effect.sync(() => {
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
- }), rl => Effect.sync(() => {
24
- if (input.isTTY) {
25
- input.setRawMode(false);
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","acquireRelease","rl","createInterface","escapeCodeTimeout","emitKeypressEvents","isTTY","setRawMode","close","readInput","async","resume","handleKeypress","userInput","fromNullable","meta","shift","fail","QuitException","succeed","once","removeListener","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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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform-node",
3
- "version": "0.31.7",
3
+ "version": "0.31.8",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -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
  )
@@ -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
- // Create a readline interface and force it to emit keypress events
20
- yield* _(Effect.acquireRelease(
21
- 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
- }),
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
- const readInput = Effect.async<never, Terminal.QuitException, Terminal.UserInput>((resume) => {
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) => {