@effect/platform 0.0.0 → 0.2.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.
Files changed (76) hide show
  1. package/Command.d.ts +251 -0
  2. package/Command.d.ts.map +1 -0
  3. package/Command.js +164 -0
  4. package/Command.js.map +1 -0
  5. package/CommandExecutor.d.ts +140 -0
  6. package/CommandExecutor.d.ts.map +1 -0
  7. package/CommandExecutor.js +40 -0
  8. package/CommandExecutor.js.map +1 -0
  9. package/Console.d.ts +114 -12
  10. package/Console.d.ts.map +1 -1
  11. package/Console.js +109 -1
  12. package/Console.js.map +1 -1
  13. package/Error.d.ts +1 -1
  14. package/Error.d.ts.map +1 -1
  15. package/FileSystem.d.ts +246 -47
  16. package/FileSystem.d.ts.map +1 -1
  17. package/FileSystem.js +24 -1
  18. package/FileSystem.js.map +1 -1
  19. package/Path.d.ts +59 -0
  20. package/Path.d.ts.map +1 -0
  21. package/{FileSystem/File.js → Path.js} +14 -24
  22. package/Path.js.map +1 -0
  23. package/internal/command.d.ts +2 -0
  24. package/internal/command.d.ts.map +1 -0
  25. package/internal/command.js +184 -0
  26. package/internal/command.js.map +1 -0
  27. package/internal/commandExecutor.d.ts +2 -0
  28. package/internal/commandExecutor.d.ts.map +1 -0
  29. package/internal/commandExecutor.js +55 -0
  30. package/internal/commandExecutor.js.map +1 -0
  31. package/internal/console.js +63 -3
  32. package/internal/console.js.map +1 -1
  33. package/internal/fileSystem.js +3 -3
  34. package/internal/fileSystem.js.map +1 -1
  35. package/internal/path.d.ts +2 -0
  36. package/internal/path.d.ts.map +1 -0
  37. package/internal/path.js +97 -0
  38. package/internal/path.js.map +1 -0
  39. package/mjs/Command.mjs +139 -0
  40. package/mjs/Command.mjs.map +1 -0
  41. package/mjs/CommandExecutor.mjs +27 -0
  42. package/mjs/CommandExecutor.mjs.map +1 -0
  43. package/mjs/Console.mjs +90 -0
  44. package/mjs/Console.mjs.map +1 -1
  45. package/mjs/FileSystem.mjs +19 -0
  46. package/mjs/FileSystem.mjs.map +1 -1
  47. package/mjs/Path.mjs +20 -0
  48. package/mjs/Path.mjs.map +1 -0
  49. package/mjs/internal/command.mjs +159 -0
  50. package/mjs/internal/command.mjs.map +1 -0
  51. package/mjs/internal/commandExecutor.mjs +42 -0
  52. package/mjs/internal/commandExecutor.mjs.map +1 -0
  53. package/mjs/internal/console.mjs +44 -2
  54. package/mjs/internal/console.mjs.map +1 -1
  55. package/mjs/internal/fileSystem.mjs +3 -3
  56. package/mjs/internal/fileSystem.mjs.map +1 -1
  57. package/mjs/internal/path.mjs +87 -0
  58. package/mjs/internal/path.mjs.map +1 -0
  59. package/package.json +5 -4
  60. package/src/Command.ts +278 -0
  61. package/src/CommandExecutor.ts +191 -0
  62. package/src/Console.ts +132 -12
  63. package/src/Error.ts +1 -1
  64. package/src/FileSystem.ts +356 -119
  65. package/src/Path.ts +64 -0
  66. package/src/internal/command.ts +211 -0
  67. package/src/internal/commandExecutor.ts +69 -0
  68. package/src/internal/console.ts +92 -14
  69. package/src/internal/fileSystem.ts +4 -5
  70. package/src/internal/path.ts +101 -0
  71. package/FileSystem/File.d.ts +0 -91
  72. package/FileSystem/File.d.ts.map +0 -1
  73. package/FileSystem/File.js.map +0 -1
  74. package/mjs/FileSystem/File.mjs +0 -28
  75. package/mjs/FileSystem/File.mjs.map +0 -1
  76. package/src/FileSystem/File.ts +0 -125
@@ -0,0 +1,139 @@
1
+ import * as internal from "@effect/platform/internal/command";
2
+ /**
3
+ * @since 1.0.0
4
+ */
5
+ export const CommandTypeId = internal.CommandTypeId;
6
+ /**
7
+ * Returns `true` if the specified value is a `Command`, otherwise returns
8
+ * `false`.
9
+ *
10
+ * @since 1.0.0
11
+ * @category refinements
12
+ */
13
+ export const isCommand = internal.isCommand;
14
+ /**
15
+ * Specify the environment variables that will be used when running this command.
16
+ *
17
+ * @since 1.0.0
18
+ * @category combinators
19
+ */
20
+ export const env = internal.env;
21
+ /**
22
+ * Returns the exit code of the command after the process has completed
23
+ * execution.
24
+ *
25
+ * @since 1.0.0
26
+ * @category execution
27
+ */
28
+ export const exitCode = internal.exitCode;
29
+ /**
30
+ * Feed a string to standard input (default encoding of UTF-8).
31
+ *
32
+ * @since 1.0.0
33
+ * @category combinators
34
+ */
35
+ export const feed = internal.feed;
36
+ /**
37
+ * Flatten this command to a non-empty array of standard commands.
38
+ *
39
+ * * For a `StandardCommand`, this simply returns a `1` element array
40
+ * * For a `PipedCommand`, all commands in the pipe will be extracted out into
41
+ * a array from left to right
42
+ *
43
+ * @since 1.0.0
44
+ * @category combinators
45
+ */
46
+ export const flatten = internal.flatten;
47
+ /**
48
+ * Runs the command returning the output as an array of lines with the specified
49
+ * encoding.
50
+ *
51
+ * @since 1.0.0
52
+ * @category execution
53
+ */
54
+ export const lines = internal.lines;
55
+ /**
56
+ * Create a command with the specified process name and an optional list of
57
+ * arguments.
58
+ *
59
+ * @since 1.0.0
60
+ * @category constructors
61
+ */
62
+ export const make = internal.make;
63
+ /**
64
+ * Pipe one command to another command from left to right.
65
+ *
66
+ * Conceptually, the equivalent of piping one shell command to another:
67
+ *
68
+ * ```sh
69
+ * command1 | command2
70
+ * ```
71
+ *
72
+ * @since 1.0.0
73
+ * @category combinators
74
+ */
75
+ export const pipeTo = internal.pipeTo;
76
+ /**
77
+ * Start running the command and return a handle to the running process.
78
+ *
79
+ * @since 1.0.0
80
+ * @category execution
81
+ */
82
+ export const start = internal.start;
83
+ /**
84
+ * Start running the command and return the output as a `Stream`.
85
+ *
86
+ * @since 1.0.0
87
+ * @category execution
88
+ */
89
+ export const stream = internal.stream;
90
+ /**
91
+ * Runs the command returning the output as an stream of lines with the
92
+ * specified encoding.
93
+ *
94
+ * @since 1.0.0
95
+ * @category execution
96
+ */
97
+ export const streamLines = internal.streamLines;
98
+ /**
99
+ * Runs the command returning the entire output as a string with the
100
+ * specified encoding.
101
+ *
102
+ * If an encoding is not specified, the encoding will default to `utf-8`.
103
+ *
104
+ * @since 1.0.0
105
+ * @category execution
106
+ */
107
+ export const string = internal.string;
108
+ /**
109
+ * Specify the standard error stream for a command.
110
+ *
111
+ * @since 1.0.0
112
+ * @category combinators
113
+ */
114
+ export const stderr = internal.stderr;
115
+ /**
116
+ * Specify the standard input stream for a command.
117
+ *
118
+ * @since 1.0.0
119
+ * @category combinators
120
+ */
121
+ export const stdin = internal.stdin;
122
+ /**
123
+ * Specify the standard output stream for a command.
124
+ *
125
+ * @since 1.0.0
126
+ * @category combinators
127
+ */
128
+ export const stdout = internal.stdout;
129
+ /**
130
+ * Set the working directory that will be used when this command will be run.
131
+ *
132
+ * For piped commands, the working directory of each command will be set to the
133
+ * specified working directory.
134
+ *
135
+ * @since 1.0.0
136
+ * @category combinators
137
+ */
138
+ export const workingDirectory = internal.workingDirectory;
139
+ //# sourceMappingURL=Command.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Command.mjs","names":["internal","CommandTypeId","isCommand","env","exitCode","feed","flatten","lines","make","pipeTo","start","stream","streamLines","string","stderr","stdin","stdout","workingDirectory"],"sources":["../src/Command.ts"],"sourcesContent":[null],"mappings":"AASA,OAAO,KAAKA,QAAQ,MAAM,mCAAmC;AAI7D;;;AAGA,OAAO,MAAMC,aAAa,GAAkBD,QAAQ,CAACC,aAAa;AAuFlE;;;;;;;AAOA,OAAO,MAAMC,SAAS,GAAiCF,QAAQ,CAACE,SAAS;AAEzE;;;;;;AAMA,OAAO,MAAMC,GAAG,GAGZH,QAAQ,CAACG,GAAG;AAEhB;;;;;;;AAOA,OAAO,MAAMC,QAAQ,GAAwEJ,QAAQ,CAACI,QAAQ;AAE9G;;;;;;AAMA,OAAO,MAAMC,IAAI,GAGbL,QAAQ,CAACK,IAAI;AAEjB;;;;;;;;;;AAUA,OAAO,MAAMC,OAAO,GAA8DN,QAAQ,CAACM,OAAO;AAElG;;;;;;;AAOA,OAAO,MAAMC,KAAK,GAGmDP,QAAQ,CAACO,KAAK;AAEnF;;;;;;;AAOA,OAAO,MAAMC,IAAI,GAAyDR,QAAQ,CAACQ,IAAI;AAEvF;;;;;;;;;;;;AAYA,OAAO,MAAMC,MAAM,GAGfT,QAAQ,CAACS,MAAM;AAEnB;;;;;;AAMA,OAAO,MAAMC,KAAK,GAA0EV,QAAQ,CAACU,KAAK;AAE1G;;;;;;AAMA,OAAO,MAAMC,MAAM,GAA6EX,QAAQ,CAACW,MAAM;AAE/G;;;;;;;AAOA,OAAO,MAAMC,WAAW,GAAyEZ,QAAQ,CAACY,WAAW;AAErH;;;;;;;;;AASA,OAAO,MAAMC,MAAM,GAGfb,QAAQ,CAACa,MAAM;AAEnB;;;;;;AAMA,OAAO,MAAMC,MAAM,GAGfd,QAAQ,CAACc,MAAM;AAEnB;;;;;;AAMA,OAAO,MAAMC,KAAK,GAGdf,QAAQ,CAACe,KAAK;AAElB;;;;;;AAMA,OAAO,MAAMC,MAAM,GAGfhB,QAAQ,CAACgB,MAAM;AAEnB;;;;;;;;;AASA,OAAO,MAAMC,gBAAgB,GAGzBjB,QAAQ,CAACiB,gBAAgB"}
@@ -0,0 +1,27 @@
1
+ import * as internal from "@effect/platform/internal/commandExecutor";
2
+ /**
3
+ * @since 1.0.0
4
+ * @category tags
5
+ */
6
+ export const CommandExecutor = internal.CommandExecutor;
7
+ /**
8
+ * @since 1.0.0
9
+ * @category symbols
10
+ */
11
+ export const ProcessTypeId = internal.ProcessTypeId;
12
+ /**
13
+ * @since 1.0.0
14
+ * @category constructors
15
+ */
16
+ export const ExitCode = internal.ExitCode;
17
+ /**
18
+ * @since 1.0.0
19
+ * @category constructors
20
+ */
21
+ export const ProcessId = internal.ProcessId;
22
+ /**
23
+ * @since 1.0.0
24
+ * @category constructors
25
+ */
26
+ export const makeExecutor = internal.makeExecutor;
27
+ //# sourceMappingURL=CommandExecutor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandExecutor.mjs","names":["internal","CommandExecutor","ProcessTypeId","ExitCode","ProcessId","makeExecutor"],"sources":["../src/CommandExecutor.ts"],"sourcesContent":[null],"mappings":"AAQA,OAAO,KAAKA,QAAQ,MAAM,2CAA2C;AAyCrE;;;;AAIA,OAAO,MAAMC,eAAe,GAA0CD,QAAQ,CAACC,eAAe;AAE9F;;;;AAIA,OAAO,MAAMC,aAAa,GAAkBF,QAAQ,CAACE,aAAa;AAiHlE;;;;AAIA,OAAO,MAAMC,QAAQ,GAAsCH,QAAQ,CAACG,QAAQ;AAE5E;;;;AAIA,OAAO,MAAMC,SAAS,GAAwCJ,QAAQ,CAACI,SAAS;AAEhF;;;;AAIA,OAAO,MAAMC,YAAY,GAEFL,QAAQ,CAACK,YAAY"}
package/mjs/Console.mjs CHANGED
@@ -9,4 +9,94 @@ export const Console = internal.Console;
9
9
  * @category layer
10
10
  */
11
11
  export const layer = internal.layer;
12
+ /**
13
+ * @since 1.0.0
14
+ * @category accessor
15
+ */
16
+ export const assert = internal.assert;
17
+ /**
18
+ * @since 1.0.0
19
+ * @category accessor
20
+ */
21
+ export const clear = internal.clear;
22
+ /**
23
+ * @since 1.0.0
24
+ * @category accessor
25
+ */
26
+ export const count = internal.count;
27
+ /**
28
+ * @since 1.0.0
29
+ * @category accessor
30
+ */
31
+ export const countReset = internal.countReset;
32
+ /**
33
+ * @since 1.0.0
34
+ * @category accessor
35
+ */
36
+ export const debug = internal.debug;
37
+ /**
38
+ * @since 1.0.0
39
+ * @category accessor
40
+ */
41
+ export const dir = internal.dir;
42
+ /**
43
+ * @since 1.0.0
44
+ * @category accessor
45
+ */
46
+ export const dirxml = internal.dirxml;
47
+ /**
48
+ * @since 1.0.0
49
+ * @category accessor
50
+ */
51
+ export const error = internal.error;
52
+ /**
53
+ * @since 1.0.0
54
+ * @category accessor
55
+ */
56
+ export const group = internal.group;
57
+ /**
58
+ * @since 1.0.0
59
+ * @category accessor
60
+ */
61
+ export const info = internal.info;
62
+ /**
63
+ * @since 1.0.0
64
+ * @category accessor
65
+ */
66
+ export const log = internal.log;
67
+ /**
68
+ * @since 1.0.0
69
+ * @category accessor
70
+ */
71
+ export const table = internal.table;
72
+ /**
73
+ * @since 1.0.0
74
+ * @category accessor
75
+ */
76
+ export const time = internal.time;
77
+ /**
78
+ * @since 1.0.0
79
+ * @category accessor
80
+ */
81
+ export const timeLog = internal.timeLog;
82
+ /**
83
+ * @since 1.0.0
84
+ * @category accessor
85
+ */
86
+ export const trace = internal.trace;
87
+ /**
88
+ * @since 1.0.0
89
+ * @category accessor
90
+ */
91
+ export const warn = internal.warn;
92
+ /**
93
+ * @since 1.0.0
94
+ * @category accessor
95
+ */
96
+ export const withGroup = internal.withGroup;
97
+ /**
98
+ * @since 1.0.0
99
+ * @category accessor
100
+ */
101
+ export const withTime = internal.withTime;
12
102
  //# sourceMappingURL=Console.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Console.mjs","names":["internal","Console","layer"],"sources":["../src/Console.ts"],"sourcesContent":[null],"mappings":"AAMA,OAAO,KAAKA,QAAQ,MAAM,mCAAmC;AA4B7D;;;;AAIA,OAAO,MAAMC,OAAO,GAAkCD,QAAQ,CAACC,OAAO;AAEtE;;;;AAIA,OAAO,MAAMC,KAAK,GAAiCF,QAAQ,CAACE,KAAK"}
1
+ {"version":3,"file":"Console.mjs","names":["internal","Console","layer","assert","clear","count","countReset","debug","dir","dirxml","error","group","info","log","table","time","timeLog","trace","warn","withGroup","withTime"],"sources":["../src/Console.ts"],"sourcesContent":[null],"mappings":"AAOA,OAAO,KAAKA,QAAQ,MAAM,mCAAmC;AAiC7D;;;;AAIA,OAAO,MAAMC,OAAO,GAAkCD,QAAQ,CAACC,OAAO;AAEtE;;;;AAIA,OAAO,MAAMC,KAAK,GAAiCF,QAAQ,CAACE,KAAK;AAEjE;;;;AAIA,OAAO,MAAMC,MAAM,GAAsFH,QAAQ,CAACG,MAAM;AAExH;;;;AAIA,OAAO,MAAMC,KAAK,GAAuCJ,QAAQ,CAACI,KAAK;AAEvE;;;;AAIA,OAAO,MAAMC,KAAK,GAAqDL,QAAQ,CAACK,KAAK;AAErF;;;;AAIA,OAAO,MAAMC,UAAU,GAAqDN,QAAQ,CAACM,UAAU;AAE/F;;;;AAIA,OAAO,MAAMC,KAAK,GAAkEP,QAAQ,CAACO,KAAK;AAElG;;;;AAIA,OAAO,MAAMC,GAAG,GAAkER,QAAQ,CAACQ,GAAG;AAE9F;;;;AAIA,OAAO,MAAMC,MAAM,GAAkET,QAAQ,CAACS,MAAM;AAEpG;;;;AAIA,OAAO,MAAMC,KAAK,GAAkEV,QAAQ,CAACU,KAAK;AAElG;;;;AAIA,OAAO,MAAMC,KAAK,GAE0BX,QAAQ,CAACW,KAAK;AAE1D;;;;AAIA,OAAO,MAAMC,IAAI,GAAkEZ,QAAQ,CAACY,IAAI;AAEhG;;;;AAIA,OAAO,MAAMC,GAAG,GAAkEb,QAAQ,CAACa,GAAG;AAE9F;;;;AAIA,OAAO,MAAMC,KAAK,GAChBd,QAAQ,CAACc,KAAK;AAEhB;;;;AAIA,OAAO,MAAMC,IAAI,GAA6Df,QAAQ,CAACe,IAAI;AAE3F;;;;AAIA,OAAO,MAAMC,OAAO,GAAkFhB,QAAQ,CAACgB,OAAO;AAEtH;;;;AAIA,OAAO,MAAMC,KAAK,GAAkEjB,QAAQ,CAACiB,KAAK;AAElG;;;;AAIA,OAAO,MAAMC,IAAI,GAAkElB,QAAQ,CAACkB,IAAI;AAEhG;;;;AAIA,OAAO,MAAMC,SAAS,GAE+CnB,QAAQ,CAACmB,SAAS;AAEvF;;;;AAIA,OAAO,MAAMC,QAAQ,GACnBpB,QAAQ,CAACoB,QAAQ"}
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Brand from "@effect/data/Brand";
1
5
  import * as internal from "@effect/platform/internal/fileSystem";
2
6
  /**
3
7
  * @since 1.0.0
@@ -14,4 +18,19 @@ export const FileSystem = internal.tag;
14
18
  * @category constructor
15
19
  */
16
20
  export const make = internal.make;
21
+ /**
22
+ * @since 1.0.0
23
+ * @category type id
24
+ */
25
+ export const FileTypeId = /*#__PURE__*/Symbol.for("@effect/platform/FileSystem/File");
26
+ /**
27
+ * @since 1.0.0
28
+ * @category guard
29
+ */
30
+ export const isFile = u => typeof u === "object" && u !== null && FileTypeId in u;
31
+ /**
32
+ * @since 1.0.0
33
+ * @category constructor
34
+ */
35
+ export const FileDescriptor = /*#__PURE__*/Brand.nominal();
17
36
  //# sourceMappingURL=FileSystem.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileSystem.mjs","names":["internal","Size","FileSystem","tag","make"],"sources":["../src/FileSystem.ts"],"sourcesContent":[null],"mappings":"AASA,OAAO,KAAKA,QAAQ,MAAM,sCAAsC;AAYhE;;;;AAIA,OAAO,MAAMC,IAAI,GAAqCD,QAAQ,CAACC,IAAI;AAyMnE;;;;AAIA,OAAO,MAAMC,UAAU,GAAgCF,QAAQ,CAACG,GAAG;AAEnE;;;;AAIA,OAAO,MAAMC,IAAI,GAA8DJ,QAAQ,CAACI,IAAI"}
1
+ {"version":3,"file":"FileSystem.mjs","names":["Brand","internal","Size","FileSystem","tag","make","FileTypeId","Symbol","for","isFile","u","FileDescriptor","nominal"],"sources":["../src/FileSystem.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,KAAK,MAAM,oBAAoB;AAM3C,OAAO,KAAKC,QAAQ,MAAM,sCAAsC;AAmOhE;;;;AAIA,OAAO,MAAMC,IAAI,GAAqCD,QAAQ,CAACC,IAAI;AAmHnE;;;;AAIA,OAAO,MAAMC,UAAU,GAAgCF,QAAQ,CAACG,GAAG;AAEnE;;;;AAIA,OAAO,MAAMC,IAAI,GAA8DJ,QAAQ,CAACI,IAAI;AAE5F;;;;AAIA,OAAO,MAAMC,UAAU,gBAAkBC,MAAM,CAACC,GAAG,CACjD,kCAAkC,CACnC;AAQD;;;;AAIA,OAAO,MAAMC,MAAM,GAAIC,CAAU,IAAgB,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,IAAI,IAAIJ,UAAU,IAAII,CAAC;AA2EvG;;;;AAIA,OAAO,MAAMC,cAAc,gBAAGX,KAAK,CAACY,OAAO,EAAmB"}
package/mjs/Path.mjs ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as internal from "@effect/platform/internal/path";
5
+ /**
6
+ * @since 1.0.0
7
+ * @category tag
8
+ */
9
+ export const Path = internal.Path;
10
+ /**
11
+ * An implementation of the Path interface that can be used in all environments
12
+ * (including browsers).
13
+ *
14
+ * It uses the POSIX standard for paths.
15
+ *
16
+ * @since 1.0.0
17
+ * @category layer
18
+ */
19
+ export const layer = internal.layer;
20
+ //# sourceMappingURL=Path.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Path.mjs","names":["internal","Path","layer"],"sources":["../src/Path.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAQA,OAAO,KAAKA,QAAQ,MAAM,gCAAgC;AAwC1D;;;;AAIA,OAAO,MAAMC,IAAI,GAAoBD,QAAQ,CAACC,IAAI;AAElD;;;;;;;;;AASA,OAAO,MAAMC,KAAK,GAA8BF,QAAQ,CAACE,KAAK"}
@@ -0,0 +1,159 @@
1
+ import * as Chunk from "@effect/data/Chunk";
2
+ import { dual } from "@effect/data/Function";
3
+ import * as HashMap from "@effect/data/HashMap";
4
+ import * as Option from "@effect/data/Option";
5
+ import * as Effect from "@effect/io/Effect";
6
+ import * as commandExecutor from "@effect/platform/internal/commandExecutor";
7
+ import * as Stream from "@effect/stream/Stream";
8
+ /** @internal */
9
+ export const CommandTypeId = /*#__PURE__*/Symbol.for("@effect/platform/Command");
10
+ /** @internal */
11
+ export const isCommand = u => typeof u === "object" && u != null && CommandTypeId in u;
12
+ /** @internal */
13
+ export const env = /*#__PURE__*/dual(2, (self, environment) => {
14
+ switch (self._tag) {
15
+ case "StandardCommand":
16
+ {
17
+ return {
18
+ ...self,
19
+ env: HashMap.union(self.env, HashMap.fromIterable(Object.entries(environment)))
20
+ };
21
+ }
22
+ case "PipedCommand":
23
+ {
24
+ return pipeTo(env(self.left, environment), env(self.right, environment));
25
+ }
26
+ }
27
+ });
28
+ /** @internal */
29
+ export const exitCode = self => Effect.flatMap(commandExecutor.CommandExecutor, executor => executor.exitCode(self));
30
+ /** @internal */
31
+ export const feed = /*#__PURE__*/dual(2, (self, input) => stdin(self, Stream.fromChunk(Chunk.of(new TextEncoder().encode(input)))));
32
+ /** @internal */
33
+ export const flatten = self => Array.from(flattenLoop(self));
34
+ /** @internal */
35
+ const flattenLoop = self => {
36
+ switch (self._tag) {
37
+ case "StandardCommand":
38
+ {
39
+ return Chunk.of(self);
40
+ }
41
+ case "PipedCommand":
42
+ {
43
+ return Chunk.appendAll(flattenLoop(self.left), flattenLoop(self.right));
44
+ }
45
+ }
46
+ };
47
+ /** @internal */
48
+ export const lines = (command, encoding = "utf-8") => Effect.flatMap(commandExecutor.CommandExecutor, executor => executor.lines(command, encoding));
49
+ /** @internal */
50
+ export const make = (command, ...args) => ({
51
+ [CommandTypeId]: CommandTypeId,
52
+ _tag: "StandardCommand",
53
+ command,
54
+ args,
55
+ env: HashMap.empty(),
56
+ cwd: Option.none(),
57
+ // The initial process input here does not matter, we just want the child
58
+ // process to default to `"pipe"` for the stdin stream.
59
+ stdin: Option.some(Stream.empty),
60
+ stdout: "pipe",
61
+ stderr: "pipe",
62
+ gid: Option.none(),
63
+ uid: Option.none()
64
+ });
65
+ /** @internal */
66
+ export const pipeTo = /*#__PURE__*/dual(2, (self, into) => ({
67
+ [CommandTypeId]: CommandTypeId,
68
+ _tag: "PipedCommand",
69
+ left: self,
70
+ right: into
71
+ }));
72
+ /** @internal */
73
+ export const stderr = /*#__PURE__*/dual(2, (self, output) => {
74
+ switch (self._tag) {
75
+ case "StandardCommand":
76
+ {
77
+ return {
78
+ ...self,
79
+ stderr: output
80
+ };
81
+ }
82
+ // For piped commands it only makes sense to provide `stderr` for the
83
+ // right-most command as the rest will be piped in.
84
+ case "PipedCommand":
85
+ {
86
+ return {
87
+ ...self,
88
+ right: stderr(self.right, output)
89
+ };
90
+ }
91
+ }
92
+ });
93
+ /** @internal */
94
+ export const stdin = /*#__PURE__*/dual(2, (self, input) => {
95
+ switch (self._tag) {
96
+ case "StandardCommand":
97
+ {
98
+ return {
99
+ ...self,
100
+ stdin: Option.some(input)
101
+ };
102
+ }
103
+ // For piped commands it only makes sense to provide `stdin` for the
104
+ // left-most command as the rest will be piped in.
105
+ case "PipedCommand":
106
+ {
107
+ return {
108
+ ...self,
109
+ left: stdin(self.left, input)
110
+ };
111
+ }
112
+ }
113
+ });
114
+ /** @internal */
115
+ export const stdout = /*#__PURE__*/dual(2, (self, output) => {
116
+ switch (self._tag) {
117
+ case "StandardCommand":
118
+ {
119
+ return {
120
+ ...self,
121
+ stdout: output
122
+ };
123
+ }
124
+ // For piped commands it only makes sense to provide `stderr` for the
125
+ // right-most command as the rest will be piped in.
126
+ case "PipedCommand":
127
+ {
128
+ return {
129
+ ...self,
130
+ right: stdout(self.right, output)
131
+ };
132
+ }
133
+ }
134
+ });
135
+ /** @internal */
136
+ export const start = command => Effect.flatMap(commandExecutor.CommandExecutor, executor => executor.start(command));
137
+ /** @internal */
138
+ export const stream = command => Stream.flatMap(commandExecutor.CommandExecutor, process => process.stream(command));
139
+ /** @internal */
140
+ export const streamLines = command => Stream.flatMap(commandExecutor.CommandExecutor, process => process.streamLines(command));
141
+ /** @internal */
142
+ export const string = /*#__PURE__*/dual(args => isCommand(args[0]), (command, encoding) => Effect.flatMap(commandExecutor.CommandExecutor, executor => executor.string(command, encoding)));
143
+ /** @internal */
144
+ export const workingDirectory = /*#__PURE__*/dual(2, (self, cwd) => {
145
+ switch (self._tag) {
146
+ case "StandardCommand":
147
+ {
148
+ return {
149
+ ...self,
150
+ cwd: Option.some(cwd)
151
+ };
152
+ }
153
+ case "PipedCommand":
154
+ {
155
+ return pipeTo(workingDirectory(self.left, cwd), workingDirectory(self.right, cwd));
156
+ }
157
+ }
158
+ });
159
+ //# sourceMappingURL=command.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.mjs","names":["Chunk","dual","HashMap","Option","Effect","commandExecutor","Stream","CommandTypeId","Symbol","for","isCommand","u","env","self","environment","_tag","union","fromIterable","Object","entries","pipeTo","left","right","exitCode","flatMap","CommandExecutor","executor","feed","input","stdin","fromChunk","of","TextEncoder","encode","flatten","Array","from","flattenLoop","appendAll","lines","command","encoding","make","args","empty","cwd","none","some","stdout","stderr","gid","uid","into","output","start","stream","process","streamLines","string","workingDirectory"],"sources":["../../src/internal/command.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import * as Brand from "@effect/data/Brand";
2
+ import * as Chunk from "@effect/data/Chunk";
3
+ import { Tag } from "@effect/data/Context";
4
+ import * as Effect from "@effect/io/Effect";
5
+ import * as Sink from "@effect/stream/Sink";
6
+ import * as Stream from "@effect/stream/Stream";
7
+ /** @internal */
8
+ export const ProcessTypeId = /*#__PURE__*/Symbol.for("@effect/platform/Process");
9
+ /** @internal */
10
+ export const ExitCode = /*#__PURE__*/Brand.nominal();
11
+ /** @internal */
12
+ export const ProcessId = /*#__PURE__*/Brand.nominal();
13
+ /** @internal */
14
+ export const CommandExecutor = /*#__PURE__*/Tag();
15
+ /** @internal */
16
+ export const makeExecutor = start => {
17
+ const stream = command => Stream.flatMap(process => process.stdout)(Stream.fromEffect(start(command)));
18
+ const streamLines = (command, encoding) => {
19
+ const decoder = new TextDecoder(encoding);
20
+ return Stream.splitLines(Stream.mapChunks(stream(command), Chunk.map(bytes => decoder.decode(bytes))));
21
+ };
22
+ return {
23
+ start,
24
+ exitCode: command => Effect.flatMap(start(command), process => process.exitCode),
25
+ stream,
26
+ string: (command, encoding = "utf-8") => {
27
+ const decoder = new TextDecoder(encoding);
28
+ return Effect.map(bytes => decoder.decode(bytes))(Effect.flatMap(process => Stream.run(process.stdout, collectUint8Array))(start(command)));
29
+ },
30
+ lines: (command, encoding = "utf-8") => {
31
+ return Effect.map(Chunk.toReadonlyArray)(Stream.runCollect(streamLines(command, encoding)));
32
+ },
33
+ streamLines
34
+ };
35
+ };
36
+ const collectUint8Array = /*#__PURE__*/Sink.foldLeftChunks( /*#__PURE__*/new Uint8Array(), (bytes, chunk) => Chunk.reduce(chunk, bytes, (acc, curr) => {
37
+ const newArray = new Uint8Array(acc.length + curr.length);
38
+ newArray.set(acc);
39
+ newArray.set(curr, acc.length);
40
+ return newArray;
41
+ }));
42
+ //# sourceMappingURL=commandExecutor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandExecutor.mjs","names":["Brand","Chunk","Tag","Effect","Sink","Stream","ProcessTypeId","Symbol","for","ExitCode","nominal","ProcessId","CommandExecutor","makeExecutor","start","stream","command","flatMap","process","stdout","fromEffect","streamLines","encoding","decoder","TextDecoder","splitLines","mapChunks","map","bytes","decode","exitCode","string","run","collectUint8Array","lines","toReadonlyArray","runCollect","foldLeftChunks","Uint8Array","chunk","reduce","acc","curr","newArray","length","set"],"sources":["../../src/internal/commandExecutor.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,oBAAoB;AAC3C,OAAO,KAAKC,KAAK,MAAM,oBAAoB;AAC3C,SAASC,GAAG,QAAQ,sBAAsB;AAE1C,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAE3C,OAAO,KAAKC,IAAI,MAAM,qBAAqB;AAC3C,OAAO,KAAKC,MAAM,MAAM,uBAAuB;AAE/C;AACA,OAAO,MAAMC,aAAa,gBAAmCC,MAAM,CAACC,GAAG,CACrE,0BAA0B,CACO;AAEnC;AACA,OAAO,MAAMC,QAAQ,gBAAGT,KAAK,CAACU,OAAO,EAA6B;AAElE;AACA,OAAO,MAAMC,SAAS,gBAAGX,KAAK,CAACU,OAAO,EAA+B;AAErE;AACA,OAAO,MAAME,eAAe,gBAAGV,GAAG,EAAoC;AAEtE;AACA,OAAO,MAAMW,YAAY,GAAIC,KAAgD,IAAsC;EACjH,MAAMC,MAAM,GAAgDC,OAAO,IAG/DX,MAAM,CAACY,OAAO,CAAEC,OAAO,IAAKA,OAAO,CAACC,MAAM,CAAC,CAD3Cd,MAAM,CAACe,UAAU,CAACN,KAAK,CAACE,OAAO,CAAC,CAAC,CAElC;EACH,MAAMK,WAAW,GAAoDA,CAACL,OAAO,EAAEM,QAAQ,KAAI;IACzF,MAAMC,OAAO,GAAG,IAAIC,WAAW,CAACF,QAAQ,CAAC;IACzC,OAAOjB,MAAM,CAACoB,UAAU,CACtBpB,MAAM,CAACqB,SAAS,CAACX,MAAM,CAACC,OAAO,CAAC,EAAEf,KAAK,CAAC0B,GAAG,CAAEC,KAAK,IAAKL,OAAO,CAACM,MAAM,CAACD,KAAK,CAAC,CAAC,CAAC,CAC/E;EACH,CAAC;EACD,OAAO;IACLd,KAAK;IACLgB,QAAQ,EAAGd,OAAO,IAAKb,MAAM,CAACc,OAAO,CAACH,KAAK,CAACE,OAAO,CAAC,EAAGE,OAAO,IAAKA,OAAO,CAACY,QAAQ,CAAC;IACpFf,MAAM;IACNgB,MAAM,EAAEA,CAACf,OAAO,EAAEM,QAAQ,GAAG,OAAO,KAAI;MACtC,MAAMC,OAAO,GAAG,IAAIC,WAAW,CAACF,QAAQ,CAAC;MACzC,OAGEnB,MAAM,CAACwB,GAAG,CAAEC,KAAK,IAAKL,OAAO,CAACM,MAAM,CAACD,KAAK,CAAC,CAAC,CAD5CzB,MAAM,CAACc,OAAO,CAAEC,OAAO,IAAKb,MAAM,CAAC2B,GAAG,CAACd,OAAO,CAACC,MAAM,EAAEc,iBAAiB,CAAC,CAAC,CAD1EnB,KAAK,CAACE,OAAO,CAAC;IAIlB,CAAC;IACDkB,KAAK,EAAEA,CAAClB,OAAO,EAAEM,QAAQ,GAAG,OAAO,KAAI;MACrC,OAGEnB,MAAM,CAACwB,GAAG,CAAC1B,KAAK,CAACkC,eAAe,CAAC,CADjC9B,MAAM,CAAC+B,UAAU,CADjBf,WAAW,CAACL,OAAO,EAAEM,QAAQ,CAAC;IAIlC,CAAC;IACDD;GACD;AACH,CAAC;AAED,MAAMY,iBAAiB,gBAA2D7B,IAAI,CAACiC,cAAc,eACnG,IAAIC,UAAU,EAAE,EAChB,CAACV,KAAK,EAAEW,KAA8B,KACpCtC,KAAK,CAACuC,MAAM,CAACD,KAAK,EAAEX,KAAK,EAAE,CAACa,GAAG,EAAEC,IAAI,KAAI;EACvC,MAAMC,QAAQ,GAAG,IAAIL,UAAU,CAACG,GAAG,CAACG,MAAM,GAAGF,IAAI,CAACE,MAAM,CAAC;EACzDD,QAAQ,CAACE,GAAG,CAACJ,GAAG,CAAC;EACjBE,QAAQ,CAACE,GAAG,CAACH,IAAI,EAAED,GAAG,CAACG,MAAM,CAAC;EAC9B,OAAOD,QAAQ;AACjB,CAAC,CAAC,CACL"}
@@ -49,7 +49,7 @@ const consoleImpl = /*#__PURE__*/Console.of({
49
49
  });
50
50
  },
51
51
  group(options) {
52
- return self => Effect.acquireUseRelease(options?.collapsed ? Effect.sync(() => console.groupCollapsed(options?.label)) : Effect.sync(() => console.group(options?.label)), () => self, () => Effect.sync(() => console.groupEnd()));
52
+ return Effect.acquireRelease(options?.collapsed ? Effect.sync(() => console.groupCollapsed(options?.label)) : Effect.sync(() => console.group(options?.label)), () => Effect.sync(() => console.groupEnd()));
53
53
  },
54
54
  info(...args) {
55
55
  return Effect.sync(() => {
@@ -67,7 +67,7 @@ const consoleImpl = /*#__PURE__*/Console.of({
67
67
  });
68
68
  },
69
69
  time(label) {
70
- return self => Effect.acquireUseRelease(Effect.sync(() => console.time(label)), () => self, () => Effect.sync(() => console.timeEnd(label)));
70
+ return Effect.acquireRelease(Effect.sync(() => console.time(label)), () => Effect.sync(() => console.timeEnd(label)));
71
71
  },
72
72
  timeLog(label, ...args) {
73
73
  return Effect.sync(() => {
@@ -83,8 +83,50 @@ const consoleImpl = /*#__PURE__*/Console.of({
83
83
  return Effect.sync(() => {
84
84
  console.warn(...args);
85
85
  });
86
+ },
87
+ withGroup(options) {
88
+ return self => Effect.acquireUseRelease(options?.collapsed ? Effect.sync(() => console.groupCollapsed(options?.label)) : Effect.sync(() => console.group(options?.label)), () => self, () => Effect.sync(() => console.groupEnd()));
89
+ },
90
+ withTime(label) {
91
+ return self => Effect.acquireUseRelease(Effect.sync(() => console.time(label)), () => self, () => Effect.sync(() => console.timeEnd(label)));
86
92
  }
87
93
  });
88
94
  /** @internal */
89
95
  export const layer = /*#__PURE__*/Layer.succeed(Console, consoleImpl);
96
+ /** @internal */
97
+ export const assert = (condition, ...args) => Effect.flatMap(Console, _ => _.assert(condition, ...args));
98
+ /** @internal */
99
+ export const clear = () => Effect.flatMap(Console, _ => _.clear());
100
+ /** @internal */
101
+ export const count = label => Effect.flatMap(Console, _ => _.count(label));
102
+ /** @internal */
103
+ export const countReset = label => Effect.flatMap(Console, _ => _.countReset(label));
104
+ /** @internal */
105
+ export const debug = (...args) => Effect.flatMap(Console, _ => _.debug(...args));
106
+ /** @internal */
107
+ export const dir = (...args) => Effect.flatMap(Console, _ => _.dir(...args));
108
+ /** @internal */
109
+ export const dirxml = (...args) => Effect.flatMap(Console, _ => _.dirxml(...args));
110
+ /** @internal */
111
+ export const error = (...args) => Effect.flatMap(Console, _ => _.error(...args));
112
+ /** @internal */
113
+ export const group = options => Effect.flatMap(Console, _ => _.group(options));
114
+ /** @internal */
115
+ export const info = (...args) => Effect.flatMap(Console, _ => _.info(...args));
116
+ /** @internal */
117
+ export const log = (...args) => Effect.flatMap(Console, _ => _.log(...args));
118
+ /** @internal */
119
+ export const table = (tabularData, properties) => Effect.flatMap(Console, _ => _.table(tabularData, properties));
120
+ /** @internal */
121
+ export const time = label => Effect.flatMap(Console, _ => _.time(label));
122
+ /** @internal */
123
+ export const timeLog = (label, ...args) => Effect.flatMap(Console, _ => _.timeLog(label, ...args));
124
+ /** @internal */
125
+ export const trace = (...args) => Effect.flatMap(Console, _ => _.trace(...args));
126
+ /** @internal */
127
+ export const warn = (...args) => Effect.flatMap(Console, _ => _.warn(...args));
128
+ /** @internal */
129
+ export const withGroup = options => self => Effect.flatMap(Console, _ => _.withGroup(options)(self));
130
+ /** @internal */
131
+ export const withTime = label => self => Effect.flatMap(Console, _ => _.withTime(label)(self));
90
132
  //# sourceMappingURL=console.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"console.mjs","names":["Tag","Effect","Layer","Console","consoleImpl","of","assert","condition","args","sync","console","clear","count","label","countReset","debug","dir","dirxml","error","group","options","self","acquireUseRelease","collapsed","groupCollapsed","groupEnd","info","log","table","tabularData","properties","time","timeEnd","timeLog","trace","warn","layer","succeed"],"sources":["../../src/internal/console.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"console.mjs","names":["Tag","Effect","Layer","Console","consoleImpl","of","assert","condition","args","sync","console","clear","count","label","countReset","debug","dir","dirxml","error","group","options","acquireRelease","collapsed","groupCollapsed","groupEnd","info","log","table","tabularData","properties","time","timeEnd","timeLog","trace","warn","withGroup","self","acquireUseRelease","withTime","layer","succeed","flatMap","_"],"sources":["../../src/internal/console.ts"],"sourcesContent":[null],"mappings":"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"}