@effect/platform-node 0.0.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 (83) hide show
  1. package/Console.d.ts +15 -0
  2. package/Console.d.ts.map +1 -0
  3. package/Console.js +19 -0
  4. package/Console.js.map +1 -0
  5. package/Effectify.d.ts +19 -0
  6. package/Effectify.d.ts.map +1 -0
  7. package/Effectify.js +13 -0
  8. package/Effectify.js.map +1 -0
  9. package/Error.d.ts +30 -0
  10. package/Error.d.ts.map +1 -0
  11. package/Error.js +25 -0
  12. package/Error.js.map +1 -0
  13. package/FileSystem.d.ts +68 -0
  14. package/FileSystem.d.ts.map +1 -0
  15. package/FileSystem.js +33 -0
  16. package/FileSystem.js.map +1 -0
  17. package/LICENSE +21 -0
  18. package/Runtime.d.ts +24 -0
  19. package/Runtime.d.ts.map +1 -0
  20. package/Runtime.js +27 -0
  21. package/Runtime.js.map +1 -0
  22. package/Sink.d.ts +22 -0
  23. package/Sink.d.ts.map +1 -0
  24. package/Sink.js +20 -0
  25. package/Sink.js.map +1 -0
  26. package/Stream.d.ts +22 -0
  27. package/Stream.d.ts.map +1 -0
  28. package/Stream.js +16 -0
  29. package/Stream.js.map +1 -0
  30. package/internal/fileSystem.d.ts +2 -0
  31. package/internal/fileSystem.d.ts.map +1 -0
  32. package/internal/fileSystem.js +322 -0
  33. package/internal/fileSystem.js.map +1 -0
  34. package/internal/runtime.d.ts +2 -0
  35. package/internal/runtime.d.ts.map +1 -0
  36. package/internal/runtime.js +35 -0
  37. package/internal/runtime.js.map +1 -0
  38. package/internal/sink.d.ts +2 -0
  39. package/internal/sink.d.ts.map +1 -0
  40. package/internal/sink.js +40 -0
  41. package/internal/sink.js.map +1 -0
  42. package/internal/stream.d.ts +2 -0
  43. package/internal/stream.d.ts.map +1 -0
  44. package/internal/stream.js +38 -0
  45. package/internal/stream.js.map +1 -0
  46. package/mjs/Console.mjs +15 -0
  47. package/mjs/Console.mjs.map +1 -0
  48. package/mjs/Effectify.mjs +10 -0
  49. package/mjs/Effectify.mjs.map +1 -0
  50. package/mjs/Error.mjs +20 -0
  51. package/mjs/Error.mjs.map +1 -0
  52. package/mjs/FileSystem.mjs +21 -0
  53. package/mjs/FileSystem.mjs.map +1 -0
  54. package/mjs/Runtime.mjs +16 -0
  55. package/mjs/Runtime.mjs.map +1 -0
  56. package/mjs/Sink.mjs +10 -0
  57. package/mjs/Sink.mjs.map +1 -0
  58. package/mjs/Stream.mjs +7 -0
  59. package/mjs/Stream.mjs.map +1 -0
  60. package/mjs/internal/fileSystem.mjs +313 -0
  61. package/mjs/internal/fileSystem.mjs.map +1 -0
  62. package/mjs/internal/runtime.mjs +26 -0
  63. package/mjs/internal/runtime.mjs.map +1 -0
  64. package/mjs/internal/sink.mjs +31 -0
  65. package/mjs/internal/sink.mjs.map +1 -0
  66. package/mjs/internal/stream.mjs +29 -0
  67. package/mjs/internal/stream.mjs.map +1 -0
  68. package/package.json +31 -0
  69. package/src/Console.ts +16 -0
  70. package/src/Effectify.ts +22 -0
  71. package/src/Error.ts +31 -0
  72. package/src/FileSystem.ts +74 -0
  73. package/src/Runtime.ts +32 -0
  74. package/src/Sink.ts +27 -0
  75. package/src/Stream.ts +27 -0
  76. package/src/internal/fileSystem.ts +527 -0
  77. package/src/internal/runtime.ts +39 -0
  78. package/src/internal/sink.ts +62 -0
  79. package/src/internal/stream.ts +57 -0
  80. package/tsconfig.build.json +11 -0
  81. package/tsconfig.examples.json +12 -0
  82. package/tsconfig.json +11 -0
  83. package/tsconfig.test.json +17 -0
package/mjs/Sink.mjs ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as internal from "@effect/platform-node/internal/sink";
5
+ /**
6
+ * @category constructor
7
+ * @since 1.0.0
8
+ */
9
+ export const fromWritable = internal.fromWritable;
10
+ //# sourceMappingURL=Sink.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sink.mjs","names":["internal","fromWritable"],"sources":["../src/Sink.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAKA,OAAO,KAAKA,QAAQ,MAAM,qCAAqC;AAa/D;;;;AAIA,OAAO,MAAMC,YAAY,GAIaD,QAAQ,CAACC,YAAY"}
package/mjs/Stream.mjs ADDED
@@ -0,0 +1,7 @@
1
+ import * as internal from "@effect/platform-node/internal/stream";
2
+ /**
3
+ * @category constructor
4
+ * @since 1.0.0
5
+ */
6
+ export const fromReadable = internal.fromReadable;
7
+ //# sourceMappingURL=Stream.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stream.mjs","names":["internal","fromReadable"],"sources":["../src/Stream.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,QAAQ,MAAM,uCAAuC;AAcjE;;;;AAIA,OAAO,MAAMC,YAAY,GAIED,QAAQ,CAACC,YAAY"}
@@ -0,0 +1,313 @@
1
+ import * as Option from "@effect/data/Option";
2
+ import * as Effect from "@effect/io/Effect";
3
+ import * as Layer from "@effect/io/Layer";
4
+ import { effectify } from "@effect/platform/Effectify";
5
+ import * as Error from "@effect/platform/Error";
6
+ import * as FileSystem from "@effect/platform/FileSystem";
7
+ import * as File from "@effect/platform/FileSystem/File";
8
+ import * as Crypto from "node:crypto";
9
+ import * as NFS from "node:fs";
10
+ import * as OS from "node:os";
11
+ import * as Path from "node:path";
12
+ // == errors
13
+ const handleErrnoException = method => (err, [path]) => {
14
+ let reason = "Unknown";
15
+ switch (err.code) {
16
+ case "ENOENT":
17
+ reason = "NotFound";
18
+ break;
19
+ case "EACCES":
20
+ reason = "PermissionDenied";
21
+ break;
22
+ case "EEXIST":
23
+ reason = "AlreadyExists";
24
+ break;
25
+ case "EISDIR":
26
+ reason = "BadResource";
27
+ break;
28
+ case "ENOTDIR":
29
+ reason = "BadResource";
30
+ break;
31
+ case "EBUSY":
32
+ reason = "Busy";
33
+ break;
34
+ case "ELOOP":
35
+ reason = "BadResource";
36
+ break;
37
+ }
38
+ return Error.SystemError({
39
+ reason,
40
+ module: "FileSystem",
41
+ method,
42
+ pathOrDescriptor: path.toString(),
43
+ syscall: err.syscall,
44
+ message: err.message
45
+ });
46
+ };
47
+ const handleBadArgument = method => err => Error.BadArgument({
48
+ module: "FileSystem",
49
+ method,
50
+ message: err.message ?? String(err)
51
+ });
52
+ // == access
53
+ const access = /*#__PURE__*/(() => {
54
+ const nodeAccess = /*#__PURE__*/effectify(NFS.access, /*#__PURE__*/handleErrnoException("access"), /*#__PURE__*/handleBadArgument("access"));
55
+ return (path, options) => {
56
+ let mode = NFS.constants.F_OK;
57
+ if (options?.readable) {
58
+ mode |= NFS.constants.R_OK;
59
+ }
60
+ if (options?.writable) {
61
+ mode |= NFS.constants.W_OK;
62
+ }
63
+ return nodeAccess(path, mode);
64
+ };
65
+ })();
66
+ // == copyFile
67
+ const copyFile = /*#__PURE__*/(() => {
68
+ const nodeCopyFile = /*#__PURE__*/effectify(NFS.copyFile, /*#__PURE__*/handleErrnoException("copyFile"), /*#__PURE__*/handleBadArgument("copyFile"));
69
+ return (fromPath, toPath) => nodeCopyFile(fromPath, toPath);
70
+ })();
71
+ // == chmod
72
+ const chmod = /*#__PURE__*/(() => {
73
+ const nodeChmod = /*#__PURE__*/effectify(NFS.chmod, /*#__PURE__*/handleErrnoException("chmod"), /*#__PURE__*/handleBadArgument("chmod"));
74
+ return (path, mode) => nodeChmod(path, mode);
75
+ })();
76
+ // == chown
77
+ const chown = /*#__PURE__*/(() => {
78
+ const nodeChown = /*#__PURE__*/effectify(NFS.chown, /*#__PURE__*/handleErrnoException("chown"), /*#__PURE__*/handleBadArgument("chown"));
79
+ return (path, uid, gid) => nodeChown(path, uid, gid);
80
+ })();
81
+ // == link
82
+ const link = /*#__PURE__*/(() => {
83
+ const nodeLink = /*#__PURE__*/effectify(NFS.link, /*#__PURE__*/handleErrnoException("link"), /*#__PURE__*/handleBadArgument("link"));
84
+ return (existingPath, newPath) => nodeLink(existingPath, newPath);
85
+ })();
86
+ // == makeDirectory
87
+ const makeDirectory = /*#__PURE__*/(() => {
88
+ const nodeMkdir = /*#__PURE__*/effectify(NFS.mkdir, /*#__PURE__*/handleErrnoException("makeDirectory"), /*#__PURE__*/handleBadArgument("makeDirectory"));
89
+ return (path, options) => nodeMkdir(path, {
90
+ recursive: options?.recursive ?? false,
91
+ mode: options?.mode
92
+ });
93
+ })();
94
+ // == makeTempDirectory
95
+ const makeTempDirectoryFactory = method => {
96
+ const nodeMkdtemp = effectify(NFS.mkdtemp, handleErrnoException(method), handleBadArgument(method));
97
+ return options => Effect.suspend(() => {
98
+ const prefix = options?.prefix ?? "";
99
+ const directory = typeof options?.directory === "string" ? Path.join(options.directory, ".") : OS.tmpdir();
100
+ return nodeMkdtemp(prefix ? Path.join(directory, prefix) : directory);
101
+ });
102
+ };
103
+ const makeTempDirectory = /*#__PURE__*/makeTempDirectoryFactory("makeTempDirectory");
104
+ // == remove
105
+ const removeFactory = method => {
106
+ const nodeRm = effectify(NFS.rm, handleErrnoException(method), handleBadArgument(method));
107
+ return (path, options) => nodeRm(path, {
108
+ recursive: options?.recursive ?? false
109
+ });
110
+ };
111
+ const remove = /*#__PURE__*/removeFactory("remove");
112
+ // == makeTempDirectoryScoped
113
+ const makeTempDirectoryScoped = /*#__PURE__*/(() => {
114
+ const makeDirectory = /*#__PURE__*/makeTempDirectoryFactory("makeTempDirectoryScoped");
115
+ const removeDirectory = /*#__PURE__*/removeFactory("makeTempDirectoryScoped");
116
+ return options => Effect.acquireRelease(makeDirectory(options), directory => Effect.orDie(removeDirectory(directory, {
117
+ recursive: true
118
+ })));
119
+ })();
120
+ // == makeTempFile
121
+ const makeTempFile = /*#__PURE__*/(() => {
122
+ const makeDirectory = /*#__PURE__*/makeTempDirectoryFactory("makeTempFile");
123
+ const randomHexString = bytes => Effect.sync(() => Crypto.randomBytes(bytes).toString("hex"));
124
+ return options => Effect.flatMap(path => open(path, {
125
+ flag: "w+"
126
+ }))(Effect.map(([directory, random]) => Path.join(directory, random))(Effect.zip(makeDirectory(options), randomHexString(6))));
127
+ })();
128
+ // == open
129
+ const open = /*#__PURE__*/(() => {
130
+ const nodeOpen = /*#__PURE__*/effectify(NFS.open, /*#__PURE__*/handleErrnoException("open"), /*#__PURE__*/handleBadArgument("open"));
131
+ const nodeClose = /*#__PURE__*/effectify(NFS.close, /*#__PURE__*/handleErrnoException("open"), /*#__PURE__*/handleBadArgument("open"));
132
+ return (path, options) => Effect.map(fd => makeFile(File.Descriptor(fd)))(Effect.acquireRelease(nodeOpen(path, options?.flag ?? "r", options?.mode), fd => Effect.orDie(nodeClose(fd))));
133
+ })();
134
+ const makeFile = /*#__PURE__*/(() => {
135
+ var _a;
136
+ const nodeReadFactory = method => effectify(NFS.read, handleErrnoException(method), handleBadArgument(method));
137
+ const nodeRead = /*#__PURE__*/nodeReadFactory("read");
138
+ const nodeReadAlloc = /*#__PURE__*/nodeReadFactory("readAlloc");
139
+ const nodeStat = /*#__PURE__*/effectify(NFS.fstat, /*#__PURE__*/handleErrnoException("stat"), /*#__PURE__*/handleBadArgument("stat"));
140
+ const nodeTruncate = /*#__PURE__*/effectify(NFS.ftruncate, /*#__PURE__*/handleErrnoException("truncate"), /*#__PURE__*/handleBadArgument("truncate"));
141
+ const nodeWriteFactory = method => effectify(NFS.write, handleErrnoException(method), handleBadArgument(method));
142
+ const nodeWrite = /*#__PURE__*/nodeWriteFactory("write");
143
+ const nodeWriteAll = /*#__PURE__*/nodeWriteFactory("writeAll");
144
+ class FileImpl {
145
+ constructor(fd) {
146
+ this.fd = fd;
147
+ this[_a] = File.FileTypeId;
148
+ }
149
+ get stat() {
150
+ return Effect.map(nodeStat(this.fd), makeFileInfo);
151
+ }
152
+ read(buffer, options) {
153
+ return Effect.map(nodeRead(this.fd, {
154
+ buffer,
155
+ length: options?.length ? Number(options.length) : undefined,
156
+ offset: options?.offset ? Number(options.offset) : undefined
157
+ }), FileSystem.Size);
158
+ }
159
+ readAlloc(size, options) {
160
+ return Effect.flatMap(Effect.sync(() => Buffer.allocUnsafeSlow(Number(size))), buffer => Effect.map(nodeReadAlloc(this.fd, {
161
+ buffer,
162
+ length: options?.length ? Number(options.length) : undefined,
163
+ offset: options?.offset ? Number(options.offset) : undefined
164
+ }), bytesRead => {
165
+ if (bytesRead === 0) {
166
+ return Option.none();
167
+ }
168
+ if (bytesRead === Number(size)) {
169
+ return Option.some(buffer);
170
+ }
171
+ const dst = Buffer.allocUnsafeSlow(bytesRead);
172
+ buffer.copy(dst, 0, 0, bytesRead);
173
+ return Option.some(dst);
174
+ }));
175
+ }
176
+ truncate(length) {
177
+ return nodeTruncate(this.fd, Number(length));
178
+ }
179
+ write(buffer) {
180
+ return Effect.map(nodeWrite(this.fd, buffer), FileSystem.Size);
181
+ }
182
+ writeAll(buffer) {
183
+ return Effect.flatMap(nodeWriteAll(this.fd, buffer), bytesWritten => {
184
+ if (bytesWritten === buffer.length) {
185
+ return Effect.unit();
186
+ }
187
+ return this.writeAll(buffer.subarray(bytesWritten));
188
+ });
189
+ }
190
+ }
191
+ _a = File.FileTypeId;
192
+ return fd => new FileImpl(fd);
193
+ })();
194
+ // == readDirectory
195
+ const readDirectory = /*#__PURE__*/(() => {
196
+ const nodeReadDirectory = /*#__PURE__*/effectify(NFS.readdir, /*#__PURE__*/handleErrnoException("readDirectory"), /*#__PURE__*/handleBadArgument("readDirectory"));
197
+ return (path, options) => nodeReadDirectory(path, options);
198
+ })();
199
+ // == readFile
200
+ const readFile = path => Effect.asyncInterrupt(resume => {
201
+ const controller = new AbortController();
202
+ try {
203
+ NFS.readFile(path, {
204
+ signal: controller.signal
205
+ }, (err, data) => {
206
+ if (err) {
207
+ resume(Effect.fail(handleErrnoException("readFile")(err, [path])));
208
+ } else {
209
+ resume(Effect.succeed(data));
210
+ }
211
+ });
212
+ } catch (err) {
213
+ resume(Effect.fail(handleBadArgument("readFile")(err)));
214
+ }
215
+ return Effect.sync(() => controller.abort());
216
+ });
217
+ // == readLink
218
+ const readLink = /*#__PURE__*/(() => {
219
+ const nodeReadLink = /*#__PURE__*/effectify(NFS.readlink, /*#__PURE__*/handleErrnoException("readLink"), /*#__PURE__*/handleBadArgument("readLink"));
220
+ return path => nodeReadLink(path);
221
+ })();
222
+ // == realPath
223
+ const realPath = /*#__PURE__*/(() => {
224
+ const nodeRealPath = /*#__PURE__*/effectify(NFS.realpath, /*#__PURE__*/handleErrnoException("realPath"), /*#__PURE__*/handleBadArgument("realPath"));
225
+ return path => nodeRealPath(path);
226
+ })();
227
+ // == rename
228
+ const rename = /*#__PURE__*/(() => {
229
+ const nodeRename = /*#__PURE__*/effectify(NFS.rename, /*#__PURE__*/handleErrnoException("rename"), /*#__PURE__*/handleBadArgument("rename"));
230
+ return (oldPath, newPath) => nodeRename(oldPath, newPath);
231
+ })();
232
+ // == stat
233
+ const makeFileInfo = stat => ({
234
+ type: stat.isFile() ? "File" : stat.isDirectory() ? "Directory" : stat.isSymbolicLink() ? "SymbolicLink" : stat.isBlockDevice() ? "BlockDevice" : stat.isCharacterDevice() ? "CharacterDevice" : stat.isFIFO() ? "FIFO" : stat.isSocket() ? "Socket" : "Unknown",
235
+ mtime: Option.fromNullable(stat.mtime),
236
+ atime: Option.fromNullable(stat.atime),
237
+ birthtime: Option.fromNullable(stat.birthtime),
238
+ dev: stat.dev,
239
+ rdev: Option.fromNullable(stat.rdev),
240
+ ino: Option.fromNullable(stat.ino),
241
+ mode: stat.mode,
242
+ nlink: Option.fromNullable(stat.nlink),
243
+ uid: Option.fromNullable(stat.uid),
244
+ gid: Option.fromNullable(stat.gid),
245
+ size: FileSystem.Size(stat.size),
246
+ blksize: Option.fromNullable(FileSystem.Size(stat.blksize)),
247
+ blocks: Option.fromNullable(stat.blocks)
248
+ });
249
+ const stat = /*#__PURE__*/(() => {
250
+ const nodeStat = /*#__PURE__*/effectify(NFS.stat, /*#__PURE__*/handleErrnoException("stat"), /*#__PURE__*/handleBadArgument("stat"));
251
+ return path => Effect.map(nodeStat(path), makeFileInfo);
252
+ })();
253
+ // == symlink
254
+ const symlink = /*#__PURE__*/(() => {
255
+ const nodeSymlink = /*#__PURE__*/effectify(NFS.symlink, /*#__PURE__*/handleErrnoException("symlink"), /*#__PURE__*/handleBadArgument("symlink"));
256
+ return (target, path) => nodeSymlink(target, path);
257
+ })();
258
+ // == truncate
259
+ const truncate = /*#__PURE__*/(() => {
260
+ const nodeTruncate = /*#__PURE__*/effectify(NFS.truncate, /*#__PURE__*/handleErrnoException("truncate"), /*#__PURE__*/handleBadArgument("truncate"));
261
+ return (path, length) => nodeTruncate(path, Number(length));
262
+ })();
263
+ // == utime
264
+ const utime = /*#__PURE__*/(() => {
265
+ const nodeUtime = /*#__PURE__*/effectify(NFS.utimes, /*#__PURE__*/handleErrnoException("utime"), /*#__PURE__*/handleBadArgument("utime"));
266
+ return (path, atime, mtime) => nodeUtime(path, atime, mtime);
267
+ })();
268
+ // == writeFile
269
+ const writeFile = (path, data, options) => Effect.asyncInterrupt(resume => {
270
+ const controller = new AbortController();
271
+ try {
272
+ NFS.writeFile(path, data, {
273
+ signal: controller.signal,
274
+ flag: options?.flag,
275
+ mode: options?.mode
276
+ }, err => {
277
+ if (err) {
278
+ resume(Effect.fail(handleErrnoException("writeFile")(err, [path])));
279
+ } else {
280
+ resume(Effect.unit());
281
+ }
282
+ });
283
+ } catch (err) {
284
+ resume(Effect.fail(handleBadArgument("writeFile")(err)));
285
+ }
286
+ return Effect.sync(() => controller.abort());
287
+ });
288
+ const fileSystemImpl = /*#__PURE__*/FileSystem.make({
289
+ access,
290
+ copyFile,
291
+ chmod,
292
+ chown,
293
+ link,
294
+ makeDirectory,
295
+ makeTempDirectory,
296
+ makeTempDirectoryScoped,
297
+ makeTempFile,
298
+ open,
299
+ readDirectory,
300
+ readFile,
301
+ readLink,
302
+ realPath,
303
+ remove,
304
+ rename,
305
+ stat,
306
+ symlink,
307
+ truncate,
308
+ utime,
309
+ writeFile
310
+ });
311
+ /** @internal */
312
+ export const layer = /*#__PURE__*/Layer.succeed(FileSystem.FileSystem, fileSystemImpl);
313
+ //# sourceMappingURL=fileSystem.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileSystem.mjs","names":["Option","Effect","Layer","effectify","Error","FileSystem","File","Crypto","NFS","OS","Path","handleErrnoException","method","err","path","reason","code","SystemError","module","pathOrDescriptor","toString","syscall","message","handleBadArgument","BadArgument","String","access","nodeAccess","options","mode","constants","F_OK","readable","R_OK","writable","W_OK","copyFile","nodeCopyFile","fromPath","toPath","chmod","nodeChmod","chown","nodeChown","uid","gid","link","nodeLink","existingPath","newPath","makeDirectory","nodeMkdir","mkdir","recursive","makeTempDirectoryFactory","nodeMkdtemp","mkdtemp","suspend","prefix","directory","join","tmpdir","makeTempDirectory","removeFactory","nodeRm","rm","remove","makeTempDirectoryScoped","removeDirectory","acquireRelease","orDie","makeTempFile","randomHexString","bytes","sync","randomBytes","flatMap","open","flag","map","random","zip","nodeOpen","nodeClose","close","fd","makeFile","Descriptor","nodeReadFactory","read","nodeRead","nodeReadAlloc","nodeStat","fstat","nodeTruncate","ftruncate","nodeWriteFactory","write","nodeWrite","nodeWriteAll","FileImpl","constructor","_a","FileTypeId","stat","makeFileInfo","buffer","length","Number","undefined","offset","Size","readAlloc","size","Buffer","allocUnsafeSlow","bytesRead","none","some","dst","copy","truncate","writeAll","bytesWritten","unit","subarray","readDirectory","nodeReadDirectory","readdir","readFile","asyncInterrupt","resume","controller","AbortController","signal","data","fail","succeed","abort","readLink","nodeReadLink","readlink","realPath","nodeRealPath","realpath","rename","nodeRename","oldPath","type","isFile","isDirectory","isSymbolicLink","isBlockDevice","isCharacterDevice","isFIFO","isSocket","mtime","fromNullable","atime","birthtime","dev","rdev","ino","nlink","blksize","blocks","symlink","nodeSymlink","target","utime","nodeUtime","utimes","writeFile","fileSystemImpl","make","layer"],"sources":["../../src/internal/fileSystem.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import * as Effect from "@effect/io/Effect";
2
+ import * as Fiber from "@effect/io/Fiber";
3
+ import { defaultTeardown } from "@effect/platform/Runtime";
4
+ /** @internal */
5
+ export const runMain = (effect, teardown = defaultTeardown) => {
6
+ const fiber = Effect.runFork(effect);
7
+ fiber.unsafeAddObserver(exit => teardown(exit, code => {
8
+ Effect.runCallback(interruptAll(fiber.id()), () => {
9
+ process.exit(code);
10
+ });
11
+ }));
12
+ function onSigint() {
13
+ process.removeListener("SIGINT", onSigint);
14
+ process.removeListener("SIGTERM", onSigint);
15
+ Effect.runFork(fiber.interruptAsFork(fiber.id()));
16
+ }
17
+ process.once("SIGINT", onSigint);
18
+ process.once("SIGTERM", onSigint);
19
+ };
20
+ const interruptAll = id => Effect.flatMap(Fiber.roots(), roots => {
21
+ if (roots.length === 0) {
22
+ return Effect.unit();
23
+ }
24
+ return Fiber.interruptAllAs(roots, id);
25
+ });
26
+ //# sourceMappingURL=runtime.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.mjs","names":["Effect","Fiber","defaultTeardown","runMain","effect","teardown","fiber","runFork","unsafeAddObserver","exit","code","runCallback","interruptAll","id","process","onSigint","removeListener","interruptAsFork","once","flatMap","roots","length","unit","interruptAllAs"],"sources":["../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,mBAAmB;AAC3C,OAAO,KAAKC,KAAK,MAAM,kBAAkB;AAEzC,SAASC,eAAe,QAAsB,0BAA0B;AAExE;AACA,OAAO,MAAMC,OAAO,GAAYA,CAC9BC,MAAkC,EAClCC,QAAQ,GAAGH,eAAe,KACxB;EACF,MAAMI,KAAK,GAAGN,MAAM,CAACO,OAAO,CAACH,MAAM,CAAC;EAEpCE,KAAK,CAACE,iBAAiB,CAAEC,IAAI,IAC3BJ,QAAQ,CAACI,IAAI,EAAGC,IAAI,IAAI;IACtBV,MAAM,CAACW,WAAW,CAACC,YAAY,CAACN,KAAK,CAACO,EAAE,EAAE,CAAC,EAAE,MAAK;MAChDC,OAAO,CAACL,IAAI,CAACC,IAAI,CAAC;IACpB,CAAC,CAAC;EACJ,CAAC,CAAC,CACH;EAED,SAASK,QAAQA,CAAA;IACfD,OAAO,CAACE,cAAc,CAAC,QAAQ,EAAED,QAAQ,CAAC;IAC1CD,OAAO,CAACE,cAAc,CAAC,SAAS,EAAED,QAAQ,CAAC;IAE3Cf,MAAM,CAACO,OAAO,CAACD,KAAK,CAACW,eAAe,CAACX,KAAK,CAACO,EAAE,EAAE,CAAC,CAAC;EACnD;EAEAC,OAAO,CAACI,IAAI,CAAC,QAAQ,EAAEH,QAAQ,CAAC;EAChCD,OAAO,CAACI,IAAI,CAAC,SAAS,EAAEH,QAAQ,CAAC;AACnC,CAAC;AAED,MAAMH,YAAY,GAAIC,EAAmB,IACvCb,MAAM,CAACmB,OAAO,CAAClB,KAAK,CAACmB,KAAK,EAAE,EAAGA,KAAK,IAAI;EACtC,IAAIA,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;IACtB,OAAOrB,MAAM,CAACsB,IAAI,EAAE;;EAGtB,OAAOrB,KAAK,CAACsB,cAAc,CAACH,KAAK,EAAEP,EAAE,CAAC;AACxC,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import * as Effect from "@effect/io/Effect";
2
+ import * as Sink from "@effect/stream/Sink";
3
+ /** @internal */
4
+ export const fromWritable = (evaluate, onError, {
5
+ encoding,
6
+ endOnClose = true
7
+ } = {}) => endOnClose ? makeSinkWithRelease(evaluate, onError, encoding) : makeSink(evaluate, onError, encoding);
8
+ const makeSink = (stream, onError, encoding) => Sink.unwrap(Effect.map(stream => Sink.forEach(write(stream, onError, encoding)))(Effect.sync(stream)));
9
+ const makeSinkWithRelease = (stream, onError, encoding) => Sink.unwrapScoped(Effect.map(stream => Sink.forEach(write(stream, onError, encoding)))(Effect.acquireRelease(Effect.sync(stream), endWritable)));
10
+ const endWritable = stream => Effect.async(resume => {
11
+ if (stream.closed) {
12
+ resume(Effect.unit());
13
+ return;
14
+ }
15
+ stream.end(() => resume(Effect.unit()));
16
+ });
17
+ const write = (stream, onError, encoding) => _ => Effect.async(resume => {
18
+ const cb = err => {
19
+ if (err) {
20
+ resume(Effect.fail(onError(err)));
21
+ } else {
22
+ resume(Effect.unit());
23
+ }
24
+ };
25
+ if (encoding) {
26
+ stream.write(_, encoding, cb);
27
+ } else {
28
+ stream.write(_, cb);
29
+ }
30
+ });
31
+ //# sourceMappingURL=sink.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sink.mjs","names":["Effect","Sink","fromWritable","evaluate","onError","encoding","endOnClose","makeSinkWithRelease","makeSink","stream","unwrap","map","forEach","write","sync","unwrapScoped","acquireRelease","endWritable","async","resume","closed","unit","end","_","cb","err","fail"],"sources":["../../src/internal/sink.ts"],"sourcesContent":[null],"mappings":"AAEA,OAAO,KAAKA,MAAM,MAAM,mBAAmB;AAE3C,OAAO,KAAKC,IAAI,MAAM,qBAAqB;AAG3C;AACA,OAAO,MAAMC,YAAY,GAAGA,CAC1BC,QAA2B,EAC3BC,OAA8B,EAC9B;EAAEC,QAAQ;EAAEC,UAAU,GAAG;AAAI,IAA0B,EAAE,KAEzDA,UAAU,GACRC,mBAAmB,CAAOJ,QAAQ,EAAEC,OAAO,EAAEC,QAAQ,CAAC,GACtDG,QAAQ,CAAOL,QAAQ,EAAEC,OAAO,EAAEC,QAAQ,CAAC;AAE/C,MAAMG,QAAQ,GAAGA,CAAOC,MAAyB,EAAEL,OAA8B,EAAEC,QAAyB,KAIxGJ,IAAI,CAACS,MAAM,CADXV,MAAM,CAACW,GAAG,CAAEF,MAAM,IAAKR,IAAI,CAACW,OAAO,CAACC,KAAK,CAAOJ,MAAM,EAAEL,OAAO,EAAEC,QAAQ,CAAC,CAAC,CAAC,CAD5EL,MAAM,CAACc,IAAI,CAACL,MAAM,CAAC,EAGpB;AAEH,MAAMF,mBAAmB,GAAGA,CAC1BE,MAAyB,EACzBL,OAA8B,EAC9BC,QAAyB,KAKvBJ,IAAI,CAACc,YAAY,CADjBf,MAAM,CAACW,GAAG,CAAEF,MAAM,IAAKR,IAAI,CAACW,OAAO,CAACC,KAAK,CAAOJ,MAAM,EAAEL,OAAO,EAAEC,QAAQ,CAAC,CAAC,CAAC,CAD5EL,MAAM,CAACgB,cAAc,CAAChB,MAAM,CAACc,IAAI,CAACL,MAAM,CAAC,EAAEQ,WAAW,CAAC,EAGxD;AAEH,MAAMA,WAAW,GAAIR,MAAgB,IACnCT,MAAM,CAACkB,KAAK,CAAsBC,MAAM,IAAI;EAC1C,IAAIV,MAAM,CAACW,MAAM,EAAE;IACjBD,MAAM,CAACnB,MAAM,CAACqB,IAAI,EAAE,CAAC;IACrB;;EAGFZ,MAAM,CAACa,GAAG,CAAC,MAAMH,MAAM,CAACnB,MAAM,CAACqB,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC,CAAC;AAEJ,MAAMR,KAAK,GAAGA,CAAOJ,MAAgB,EAAEL,OAA8B,EAAEC,QAAyB,KAC7FkB,CAAI,IACHvB,MAAM,CAACkB,KAAK,CAAkBC,MAAM,IAAI;EACtC,MAAMK,EAAE,GAAIC,GAAkB,IAAI;IAChC,IAAIA,GAAG,EAAE;MACPN,MAAM,CAACnB,MAAM,CAAC0B,IAAI,CAACtB,OAAO,CAACqB,GAAG,CAAC,CAAC,CAAC;KAClC,MAAM;MACLN,MAAM,CAACnB,MAAM,CAACqB,IAAI,EAAE,CAAC;;EAEzB,CAAC;EAED,IAAIhB,QAAQ,EAAE;IACZI,MAAM,CAACI,KAAK,CAACU,CAAC,EAAElB,QAAQ,EAAEmB,EAAE,CAAC;GAC9B,MAAM;IACLf,MAAM,CAACI,KAAK,CAACU,CAAC,EAAEC,EAAE,CAAC;;AAEvB,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import * as Option from "@effect/data/Option";
2
+ import * as Effect from "@effect/io/Effect";
3
+ import { Size } from "@effect/platform/FileSystem";
4
+ import * as Stream from "@effect/stream/Stream";
5
+ const DEFAULT_CHUNK_SIZE = /*#__PURE__*/Size(64 * 1024);
6
+ /** @internal */
7
+ export const fromReadable = (evaluate, onError, {
8
+ chunkSize = DEFAULT_CHUNK_SIZE
9
+ } = {}) => Stream.flatMap(_ => Stream.repeatEffectOption(readChunk(_, chunkSize)))(Stream.unwrapScoped(Effect.map(stream => Stream.async(emit => {
10
+ stream.once("error", err => {
11
+ emit.fail(onError(err));
12
+ });
13
+ stream.once("end", () => {
14
+ emit.end();
15
+ });
16
+ stream.on("readable", () => {
17
+ emit.single(stream);
18
+ });
19
+ if (stream.readable) {
20
+ emit.single(stream);
21
+ }
22
+ }, 0))(Effect.acquireRelease(Effect.sync(evaluate), stream => Effect.sync(() => {
23
+ stream.removeAllListeners();
24
+ if (!stream.closed) {
25
+ stream.destroy();
26
+ }
27
+ })))));
28
+ const readChunk = (stream, size) => Effect.flatMap(a => a ? Effect.succeed(a) : Effect.fail(Option.none()))(Effect.sync(() => stream.read(Number(size))));
29
+ //# sourceMappingURL=stream.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.mjs","names":["Option","Effect","Size","Stream","DEFAULT_CHUNK_SIZE","fromReadable","evaluate","onError","chunkSize","flatMap","_","repeatEffectOption","readChunk","unwrapScoped","map","stream","async","emit","once","err","fail","end","on","single","readable","acquireRelease","sync","removeAllListeners","closed","destroy","size","a","succeed","none","read","Number"],"sources":["../../src/internal/stream.ts"],"sourcesContent":[null],"mappings":"AAEA,OAAO,KAAKA,MAAM,MAAM,qBAAqB;AAC7C,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAE3C,SAASC,IAAI,QAAQ,6BAA6B;AAClD,OAAO,KAAKC,MAAM,MAAM,uBAAuB;AAG/C,MAAMC,kBAAkB,gBAAGF,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AAE1C;AACA,OAAO,MAAMG,YAAY,GAAGA,CAC1BC,QAA2B,EAC3BC,OAA8B,EAC9B;EAAEC,SAAS,GAAGJ;AAAkB,IAA0B,EAAE,KA+B1DD,MAAM,CAACM,OAAO,CAAEC,CAAC,IAAKP,MAAM,CAACQ,kBAAkB,CAACC,SAAS,CAAIF,CAAC,EAAEF,SAAS,CAAC,CAAC,CAAC,CAD5EL,MAAM,CAACU,YAAY,CAnBnBZ,MAAM,CAACa,GAAG,CAAEC,MAAM,IAChBZ,MAAM,CAACa,KAAK,CAAsBC,IAAI,IAAI;EACxCF,MAAM,CAACG,IAAI,CAAC,OAAO,EAAGC,GAAG,IAAI;IAC3BF,IAAI,CAACG,IAAI,CAACb,OAAO,CAACY,GAAG,CAAC,CAAC;EACzB,CAAC,CAAC;EAEFJ,MAAM,CAACG,IAAI,CAAC,KAAK,EAAE,MAAK;IACtBD,IAAI,CAACI,GAAG,EAAE;EACZ,CAAC,CAAC;EAEFN,MAAM,CAACO,EAAE,CAAC,UAAU,EAAE,MAAK;IACzBL,IAAI,CAACM,MAAM,CAACR,MAAM,CAAC;EACrB,CAAC,CAAC;EAEF,IAAIA,MAAM,CAACS,QAAQ,EAAE;IACnBP,IAAI,CAACM,MAAM,CAACR,MAAM,CAAC;;AAEvB,CAAC,EAAE,CAAC,CAAC,CACN,CA1BDd,MAAM,CAACwB,cAAc,CAACxB,MAAM,CAACyB,IAAI,CAACpB,QAAQ,CAAC,EAAGS,MAAM,IAClDd,MAAM,CAACyB,IAAI,CAAC,MAAK;EACfX,MAAM,CAACY,kBAAkB,EAAE;EAE3B,IAAI,CAACZ,MAAM,CAACa,MAAM,EAAE;IAClBb,MAAM,CAACc,OAAO,EAAE;;AAEpB,CAAC,CAAC,CAAC,GAsBN;AAEH,MAAMjB,SAAS,GAAGA,CAChBG,MAAgB,EAChBe,IAAU,KAIR7B,MAAM,CAACQ,OAAO,CAAEsB,CAAC,IAAMA,CAAC,GAAG9B,MAAM,CAAC+B,OAAO,CAACD,CAAC,CAAC,GAAG9B,MAAM,CAACmB,IAAI,CAACpB,MAAM,CAACiC,IAAI,EAAE,CAAE,CAAC,CAD3EhC,MAAM,CAACyB,IAAI,CAAC,MAAMX,MAAM,CAACmB,IAAI,CAACC,MAAM,CAACL,IAAI,CAAC,CAAa,CAAC,CAEzD"}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@effect/platform-node",
3
+ "version": "0.0.0",
4
+ "license": "MIT",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/effect-ts/platform.git"
8
+ },
9
+ "dependencies": {
10
+ "@effect/data": "^0.12.5",
11
+ "@effect/io": "^0.26.0",
12
+ "@effect/stream": "^0.22.0",
13
+ "@effect/platform": "^0.0.0"
14
+ },
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "sideEffects": [],
19
+ "exports": {
20
+ "./*": {
21
+ "import": {
22
+ "types": "./*.d.ts",
23
+ "default": "./mjs/*.mjs"
24
+ },
25
+ "require": {
26
+ "types": "./*.d.ts",
27
+ "default": "./*.js"
28
+ }
29
+ }
30
+ }
31
+ }
package/src/Console.ts ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+
5
+ export {
6
+ /**
7
+ * @since 1.0.0
8
+ * @category tag
9
+ */
10
+ Console,
11
+ /**
12
+ * @since 1.0.0
13
+ * @category layer
14
+ */
15
+ layer
16
+ } from "@effect/platform/Console"
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+
5
+ export type {
6
+ /**
7
+ * @since 1.0.0
8
+ */
9
+ Effectify,
10
+ /**
11
+ * @since 1.0.0
12
+ */
13
+ EffectifyError
14
+ } from "@effect/platform/Effectify"
15
+
16
+ export {
17
+ /**
18
+ * @since 1.0.0
19
+ * @category constructor
20
+ */
21
+ effectify
22
+ } from "@effect/platform/Effectify"
package/src/Error.ts ADDED
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+
5
+ export {
6
+ /**
7
+ * @since 1.0.0
8
+ * @category error
9
+ */
10
+ BadArgument,
11
+ /**
12
+ * @since 1.0.0
13
+ * @category error
14
+ */
15
+ PlatformError,
16
+ /**
17
+ * @since 1.0.0
18
+ * @category type id
19
+ */
20
+ PlatformErrorTypeId,
21
+ /**
22
+ * @since 1.0.0
23
+ * @category error
24
+ */
25
+ SystemError,
26
+ /**
27
+ * @since 1.0.0
28
+ * @category model
29
+ */
30
+ SystemErrorReason
31
+ } from "@effect/platform/Error"
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+
5
+ import type { Layer } from "@effect/io/Layer"
6
+ import * as internal from "@effect/platform-node/internal/fileSystem"
7
+ import type { FileSystem } from "@effect/platform/FileSystem"
8
+
9
+ export type {
10
+ /**
11
+ * @since 1.0.0
12
+ * @category model
13
+ */
14
+ MakeDirectoryOptions,
15
+ /**
16
+ * @since 1.0.0
17
+ * @category model
18
+ */
19
+ MakeTempDirectoryOptions,
20
+ /**
21
+ * @since 1.0.0
22
+ * @category model
23
+ */
24
+ MakeTempFileOptions,
25
+ /**
26
+ * @since 1.0.0
27
+ * @category model
28
+ */
29
+ OpenFileOptions,
30
+ /**
31
+ * @since 1.0.0
32
+ * @category model
33
+ */
34
+ ReadDirectoryOptions,
35
+ /**
36
+ * @since 1.0.0
37
+ * @category model
38
+ */
39
+ RemoveOptions,
40
+ /**
41
+ * @since 1.0.0
42
+ * @category model
43
+ */
44
+ SinkOptions,
45
+ /**
46
+ * @since 1.0.0
47
+ * @category model
48
+ */
49
+ StreamOptions,
50
+ /**
51
+ * @since 1.0.0
52
+ * @category model
53
+ */
54
+ WriteFileOptions
55
+ } from "@effect/platform/FileSystem"
56
+
57
+ export {
58
+ /**
59
+ * @since 1.0.0
60
+ * @category tag
61
+ */
62
+ FileSystem,
63
+ /**
64
+ * @since 1.0.0
65
+ * @category constructor
66
+ */
67
+ Size
68
+ } from "@effect/platform/FileSystem"
69
+
70
+ /**
71
+ * @since 1.0.0
72
+ * @category layer
73
+ */
74
+ export const layer: Layer<never, never, FileSystem> = internal.layer