@effect/platform-node-shared 0.0.0-snapshot-c0ae728e57df2c572ea803e1bb7121088cd67b49
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/Http/Etag/package.json +6 -0
- package/Http/Multipart/package.json +6 -0
- package/LICENSE +21 -0
- package/NodeCommandExecutor/package.json +6 -0
- package/NodeFileSystem/package.json +6 -0
- package/NodeKeyValueStore/package.json +6 -0
- package/NodePath/package.json +6 -0
- package/NodeRuntime/package.json +6 -0
- package/NodeSink/package.json +6 -0
- package/NodeStream/package.json +6 -0
- package/NodeTerminal/package.json +6 -0
- package/README.md +64 -0
- package/dist/cjs/Http/Etag.js +43 -0
- package/dist/cjs/Http/Etag.js.map +1 -0
- package/dist/cjs/Http/Multipart.js +48 -0
- package/dist/cjs/Http/Multipart.js.map +1 -0
- package/dist/cjs/NodeCommandExecutor.js +38 -0
- package/dist/cjs/NodeCommandExecutor.js.map +1 -0
- package/dist/cjs/NodeFileSystem.js +42 -0
- package/dist/cjs/NodeFileSystem.js.map +1 -0
- package/dist/cjs/NodeKeyValueStore.js +42 -0
- package/dist/cjs/NodeKeyValueStore.js.map +1 -0
- package/dist/cjs/NodePath.js +52 -0
- package/dist/cjs/NodePath.js.map +1 -0
- package/dist/cjs/NodeRuntime.js +38 -0
- package/dist/cjs/NodeRuntime.js.map +1 -0
- package/dist/cjs/NodeSink.js +43 -0
- package/dist/cjs/NodeSink.js.map +1 -0
- package/dist/cjs/NodeStream.js +68 -0
- package/dist/cjs/NodeStream.js.map +1 -0
- package/dist/cjs/NodeTerminal.js +43 -0
- package/dist/cjs/NodeTerminal.js.map +1 -0
- package/dist/cjs/internal/commandExecutor.js +151 -0
- package/dist/cjs/internal/commandExecutor.js.map +1 -0
- package/dist/cjs/internal/error.js +44 -0
- package/dist/cjs/internal/error.js.map +1 -0
- package/dist/cjs/internal/fileSystem.js +370 -0
- package/dist/cjs/internal/fileSystem.js.map +1 -0
- package/dist/cjs/internal/http/etag.js +74 -0
- package/dist/cjs/internal/http/etag.js.map +1 -0
- package/dist/cjs/internal/http/multipart.js +119 -0
- package/dist/cjs/internal/http/multipart.js.map +1 -0
- package/dist/cjs/internal/path.js +72 -0
- package/dist/cjs/internal/path.js.map +1 -0
- package/dist/cjs/internal/runtime.js +59 -0
- package/dist/cjs/internal/runtime.js.map +1 -0
- package/dist/cjs/internal/sink.js +52 -0
- package/dist/cjs/internal/sink.js.map +1 -0
- package/dist/cjs/internal/stream.js +208 -0
- package/dist/cjs/internal/stream.js.map +1 -0
- package/dist/cjs/internal/terminal.js +121 -0
- package/dist/cjs/internal/terminal.js.map +1 -0
- package/dist/dts/Http/Etag.d.ts +16 -0
- package/dist/dts/Http/Etag.d.ts.map +1 -0
- package/dist/dts/Http/Multipart.d.ts +29 -0
- package/dist/dts/Http/Multipart.d.ts.map +1 -0
- package/dist/dts/NodeCommandExecutor.d.ts +12 -0
- package/dist/dts/NodeCommandExecutor.d.ts.map +1 -0
- package/dist/dts/NodeFileSystem.d.ts +11 -0
- package/dist/dts/NodeFileSystem.d.ts.map +1 -0
- package/dist/dts/NodeKeyValueStore.d.ts +12 -0
- package/dist/dts/NodeKeyValueStore.d.ts.map +1 -0
- package/dist/dts/NodePath.d.ts +21 -0
- package/dist/dts/NodePath.d.ts.map +1 -0
- package/dist/dts/NodeRuntime.d.ts +10 -0
- package/dist/dts/NodeRuntime.d.ts.map +1 -0
- package/dist/dts/NodeSink.d.ts +22 -0
- package/dist/dts/NodeSink.d.ts.map +1 -0
- package/dist/dts/NodeStream.d.ts +79 -0
- package/dist/dts/NodeStream.d.ts.map +1 -0
- package/dist/dts/NodeTerminal.d.ts +18 -0
- package/dist/dts/NodeTerminal.d.ts.map +1 -0
- package/dist/dts/internal/commandExecutor.d.ts +2 -0
- package/dist/dts/internal/commandExecutor.d.ts.map +1 -0
- package/dist/dts/internal/error.d.ts +2 -0
- package/dist/dts/internal/error.d.ts.map +1 -0
- package/dist/dts/internal/fileSystem.d.ts +2 -0
- package/dist/dts/internal/fileSystem.d.ts.map +1 -0
- package/dist/dts/internal/http/etag.d.ts +2 -0
- package/dist/dts/internal/http/etag.d.ts.map +1 -0
- package/dist/dts/internal/http/multipart.d.ts +2 -0
- package/dist/dts/internal/http/multipart.d.ts.map +1 -0
- package/dist/dts/internal/path.d.ts +2 -0
- package/dist/dts/internal/path.d.ts.map +1 -0
- package/dist/dts/internal/runtime.d.ts +2 -0
- package/dist/dts/internal/runtime.d.ts.map +1 -0
- package/dist/dts/internal/sink.d.ts +2 -0
- package/dist/dts/internal/sink.d.ts.map +1 -0
- package/dist/dts/internal/stream.d.ts +2 -0
- package/dist/dts/internal/stream.d.ts.map +1 -0
- package/dist/dts/internal/terminal.d.ts +2 -0
- package/dist/dts/internal/terminal.d.ts.map +1 -0
- package/dist/esm/Http/Etag.js +12 -0
- package/dist/esm/Http/Etag.js.map +1 -0
- package/dist/esm/Http/Multipart.js +17 -0
- package/dist/esm/Http/Multipart.js.map +1 -0
- package/dist/esm/NodeCommandExecutor.js +7 -0
- package/dist/esm/NodeCommandExecutor.js.map +1 -0
- package/dist/esm/NodeFileSystem.js +10 -0
- package/dist/esm/NodeFileSystem.js.map +1 -0
- package/dist/esm/NodeKeyValueStore.js +10 -0
- package/dist/esm/NodeKeyValueStore.js.map +1 -0
- package/dist/esm/NodePath.js +20 -0
- package/dist/esm/NodePath.js.map +1 -0
- package/dist/esm/NodeRuntime.js +7 -0
- package/dist/esm/NodeRuntime.js.map +1 -0
- package/dist/esm/NodeSink.js +12 -0
- package/dist/esm/NodeSink.js.map +1 -0
- package/dist/esm/NodeStream.js +37 -0
- package/dist/esm/NodeStream.js.map +1 -0
- package/dist/esm/NodeTerminal.js +12 -0
- package/dist/esm/NodeTerminal.js.map +1 -0
- package/dist/esm/internal/commandExecutor.js +120 -0
- package/dist/esm/internal/commandExecutor.js.map +1 -0
- package/dist/esm/internal/error.js +37 -0
- package/dist/esm/internal/error.js.map +1 -0
- package/dist/esm/internal/fileSystem.js +339 -0
- package/dist/esm/internal/fileSystem.js.map +1 -0
- package/dist/esm/internal/http/etag.js +43 -0
- package/dist/esm/internal/http/etag.js.map +1 -0
- package/dist/esm/internal/http/multipart.js +85 -0
- package/dist/esm/internal/http/multipart.js.map +1 -0
- package/dist/esm/internal/path.js +41 -0
- package/dist/esm/internal/path.js.map +1 -0
- package/dist/esm/internal/runtime.js +27 -0
- package/dist/esm/internal/runtime.js.map +1 -0
- package/dist/esm/internal/sink.js +19 -0
- package/dist/esm/internal/sink.js.map +1 -0
- package/dist/esm/internal/stream.js +170 -0
- package/dist/esm/internal/stream.js.map +1 -0
- package/dist/esm/internal/terminal.js +89 -0
- package/dist/esm/internal/terminal.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +105 -0
- package/src/Http/Etag.ts +18 -0
- package/src/Http/Multipart.ts +40 -0
- package/src/NodeCommandExecutor.ts +13 -0
- package/src/NodeFileSystem.ts +13 -0
- package/src/NodeKeyValueStore.ts +20 -0
- package/src/NodePath.ts +25 -0
- package/src/NodeRuntime.ts +11 -0
- package/src/NodeSink.ts +30 -0
- package/src/NodeStream.ts +109 -0
- package/src/NodeTerminal.ts +20 -0
- package/src/internal/commandExecutor.ts +203 -0
- package/src/internal/error.ts +51 -0
- package/src/internal/fileSystem.ts +575 -0
- package/src/internal/http/etag.ts +44 -0
- package/src/internal/http/multipart.ts +107 -0
- package/src/internal/path.ts +58 -0
- package/src/internal/runtime.ts +36 -0
- package/src/internal/sink.ts +57 -0
- package/src/internal/stream.ts +325 -0
- package/src/internal/terminal.ts +123 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { effectify } from "@effect/platform/Effectify";
|
|
2
|
+
import * as Error from "@effect/platform/Error";
|
|
3
|
+
import * as FileSystem from "@effect/platform/FileSystem";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import { pipe } from "effect/Function";
|
|
6
|
+
import * as Layer from "effect/Layer";
|
|
7
|
+
import * as Option from "effect/Option";
|
|
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
|
+
import { handleErrnoException } from "./error.js";
|
|
13
|
+
const handleBadArgument = method => err => Error.BadArgument({
|
|
14
|
+
module: "FileSystem",
|
|
15
|
+
method,
|
|
16
|
+
message: err.message ?? String(err)
|
|
17
|
+
});
|
|
18
|
+
// == access
|
|
19
|
+
const access = /*#__PURE__*/(() => {
|
|
20
|
+
const nodeAccess = /*#__PURE__*/effectify(NFS.access, /*#__PURE__*/handleErrnoException("FileSystem", "access"), /*#__PURE__*/handleBadArgument("access"));
|
|
21
|
+
return (path, options) => {
|
|
22
|
+
let mode = NFS.constants.F_OK;
|
|
23
|
+
if (options?.readable) {
|
|
24
|
+
mode |= NFS.constants.R_OK;
|
|
25
|
+
}
|
|
26
|
+
if (options?.writable) {
|
|
27
|
+
mode |= NFS.constants.W_OK;
|
|
28
|
+
}
|
|
29
|
+
return nodeAccess(path, mode);
|
|
30
|
+
};
|
|
31
|
+
})();
|
|
32
|
+
// == copy
|
|
33
|
+
const copy = /*#__PURE__*/(() => {
|
|
34
|
+
const nodeCp = /*#__PURE__*/effectify(NFS.cp, /*#__PURE__*/handleErrnoException("FileSystem", "copy"), /*#__PURE__*/handleBadArgument("copy"));
|
|
35
|
+
return (fromPath, toPath, options) => nodeCp(fromPath, toPath, {
|
|
36
|
+
force: options?.overwrite ?? false,
|
|
37
|
+
preserveTimestamps: options?.preserveTimestamps ?? false,
|
|
38
|
+
recursive: true
|
|
39
|
+
});
|
|
40
|
+
})();
|
|
41
|
+
// == copyFile
|
|
42
|
+
const copyFile = /*#__PURE__*/(() => {
|
|
43
|
+
const nodeCopyFile = /*#__PURE__*/effectify(NFS.copyFile, /*#__PURE__*/handleErrnoException("FileSystem", "copyFile"), /*#__PURE__*/handleBadArgument("copyFile"));
|
|
44
|
+
return (fromPath, toPath) => nodeCopyFile(fromPath, toPath);
|
|
45
|
+
})();
|
|
46
|
+
// == chmod
|
|
47
|
+
const chmod = /*#__PURE__*/(() => {
|
|
48
|
+
const nodeChmod = /*#__PURE__*/effectify(NFS.chmod, /*#__PURE__*/handleErrnoException("FileSystem", "chmod"), /*#__PURE__*/handleBadArgument("chmod"));
|
|
49
|
+
return (path, mode) => nodeChmod(path, mode);
|
|
50
|
+
})();
|
|
51
|
+
// == chown
|
|
52
|
+
const chown = /*#__PURE__*/(() => {
|
|
53
|
+
const nodeChown = /*#__PURE__*/effectify(NFS.chown, /*#__PURE__*/handleErrnoException("FileSystem", "chown"), /*#__PURE__*/handleBadArgument("chown"));
|
|
54
|
+
return (path, uid, gid) => nodeChown(path, uid, gid);
|
|
55
|
+
})();
|
|
56
|
+
// == link
|
|
57
|
+
const link = /*#__PURE__*/(() => {
|
|
58
|
+
const nodeLink = /*#__PURE__*/effectify(NFS.link, /*#__PURE__*/handleErrnoException("FileSystem", "link"), /*#__PURE__*/handleBadArgument("link"));
|
|
59
|
+
return (existingPath, newPath) => nodeLink(existingPath, newPath);
|
|
60
|
+
})();
|
|
61
|
+
// == makeDirectory
|
|
62
|
+
const makeDirectory = /*#__PURE__*/(() => {
|
|
63
|
+
const nodeMkdir = /*#__PURE__*/effectify(NFS.mkdir, /*#__PURE__*/handleErrnoException("FileSystem", "makeDirectory"), /*#__PURE__*/handleBadArgument("makeDirectory"));
|
|
64
|
+
return (path, options) => nodeMkdir(path, {
|
|
65
|
+
recursive: options?.recursive ?? false,
|
|
66
|
+
mode: options?.mode
|
|
67
|
+
});
|
|
68
|
+
})();
|
|
69
|
+
// == makeTempDirectory
|
|
70
|
+
const makeTempDirectoryFactory = method => {
|
|
71
|
+
const nodeMkdtemp = effectify(NFS.mkdtemp, handleErrnoException("FileSystem", method), handleBadArgument(method));
|
|
72
|
+
return options => Effect.suspend(() => {
|
|
73
|
+
const prefix = options?.prefix ?? "";
|
|
74
|
+
const directory = typeof options?.directory === "string" ? Path.join(options.directory, ".") : OS.tmpdir();
|
|
75
|
+
return nodeMkdtemp(prefix ? Path.join(directory, prefix) : directory + "/");
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
const makeTempDirectory = /*#__PURE__*/makeTempDirectoryFactory("makeTempDirectory");
|
|
79
|
+
// == remove
|
|
80
|
+
const removeFactory = method => {
|
|
81
|
+
const nodeRm = effectify(NFS.rm, handleErrnoException("FileSystem", method), handleBadArgument(method));
|
|
82
|
+
return (path, options) => nodeRm(path, {
|
|
83
|
+
recursive: options?.recursive ?? false
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
const remove = /*#__PURE__*/removeFactory("remove");
|
|
87
|
+
// == makeTempDirectoryScoped
|
|
88
|
+
const makeTempDirectoryScoped = /*#__PURE__*/(() => {
|
|
89
|
+
const makeDirectory = /*#__PURE__*/makeTempDirectoryFactory("makeTempDirectoryScoped");
|
|
90
|
+
const removeDirectory = /*#__PURE__*/removeFactory("makeTempDirectoryScoped");
|
|
91
|
+
return options => Effect.acquireRelease(makeDirectory(options), directory => Effect.orDie(removeDirectory(directory, {
|
|
92
|
+
recursive: true
|
|
93
|
+
})));
|
|
94
|
+
})();
|
|
95
|
+
// == open
|
|
96
|
+
const openFactory = method => {
|
|
97
|
+
const nodeOpen = effectify(NFS.open, handleErrnoException("FileSystem", method), handleBadArgument(method));
|
|
98
|
+
const nodeClose = effectify(NFS.close, handleErrnoException("FileSystem", method), handleBadArgument(method));
|
|
99
|
+
return (path, options) => pipe(Effect.acquireRelease(nodeOpen(path, options?.flag ?? "r", options?.mode), fd => Effect.orDie(nodeClose(fd))), Effect.map(fd => makeFile(FileSystem.FileDescriptor(fd), options?.flag?.startsWith("a") ?? false)));
|
|
100
|
+
};
|
|
101
|
+
const open = /*#__PURE__*/openFactory("open");
|
|
102
|
+
const makeFile = /*#__PURE__*/(() => {
|
|
103
|
+
const nodeReadFactory = method => effectify(NFS.read, handleErrnoException("FileSystem", method), handleBadArgument(method));
|
|
104
|
+
const nodeRead = /*#__PURE__*/nodeReadFactory("read");
|
|
105
|
+
const nodeReadAlloc = /*#__PURE__*/nodeReadFactory("readAlloc");
|
|
106
|
+
const nodeStat = /*#__PURE__*/effectify(NFS.fstat, /*#__PURE__*/handleErrnoException("FileSystem", "stat"), /*#__PURE__*/handleBadArgument("stat"));
|
|
107
|
+
const nodeTruncate = /*#__PURE__*/effectify(NFS.ftruncate, /*#__PURE__*/handleErrnoException("FileSystem", "truncate"), /*#__PURE__*/handleBadArgument("truncate"));
|
|
108
|
+
const nodeWriteFactory = method => effectify(NFS.write, handleErrnoException("FileSystem", method), handleBadArgument(method));
|
|
109
|
+
const nodeWrite = /*#__PURE__*/nodeWriteFactory("write");
|
|
110
|
+
const nodeWriteAll = /*#__PURE__*/nodeWriteFactory("writeAll");
|
|
111
|
+
class FileImpl {
|
|
112
|
+
fd;
|
|
113
|
+
append;
|
|
114
|
+
[FileSystem.FileTypeId];
|
|
115
|
+
semaphore = Effect.unsafeMakeSemaphore(1);
|
|
116
|
+
position = 0n;
|
|
117
|
+
constructor(fd, append) {
|
|
118
|
+
this.fd = fd;
|
|
119
|
+
this.append = append;
|
|
120
|
+
this[FileSystem.FileTypeId] = FileSystem.FileTypeId;
|
|
121
|
+
}
|
|
122
|
+
get stat() {
|
|
123
|
+
return Effect.map(nodeStat(this.fd), makeFileInfo);
|
|
124
|
+
}
|
|
125
|
+
seek(offset, from) {
|
|
126
|
+
const offsetSize = FileSystem.Size(offset);
|
|
127
|
+
return this.semaphore.withPermits(1)(Effect.sync(() => {
|
|
128
|
+
if (from === "start") {
|
|
129
|
+
this.position = offsetSize;
|
|
130
|
+
} else if (from === "current") {
|
|
131
|
+
this.position = this.position + offsetSize;
|
|
132
|
+
}
|
|
133
|
+
return this.position;
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
read(buffer) {
|
|
137
|
+
return this.semaphore.withPermits(1)(Effect.map(Effect.suspend(() => nodeRead(this.fd, {
|
|
138
|
+
buffer,
|
|
139
|
+
position: this.position
|
|
140
|
+
})), bytesRead => {
|
|
141
|
+
const sizeRead = FileSystem.Size(bytesRead);
|
|
142
|
+
this.position = this.position + sizeRead;
|
|
143
|
+
return sizeRead;
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
readAlloc(size) {
|
|
147
|
+
const sizeNumber = Number(size);
|
|
148
|
+
return this.semaphore.withPermits(1)(Effect.flatMap(Effect.sync(() => Buffer.allocUnsafeSlow(sizeNumber)), buffer => Effect.map(nodeReadAlloc(this.fd, {
|
|
149
|
+
buffer,
|
|
150
|
+
position: this.position
|
|
151
|
+
}), bytesRead => {
|
|
152
|
+
if (bytesRead === 0) {
|
|
153
|
+
return Option.none();
|
|
154
|
+
}
|
|
155
|
+
this.position = this.position + BigInt(bytesRead);
|
|
156
|
+
if (bytesRead === sizeNumber) {
|
|
157
|
+
return Option.some(buffer);
|
|
158
|
+
}
|
|
159
|
+
const dst = Buffer.allocUnsafeSlow(bytesRead);
|
|
160
|
+
buffer.copy(dst, 0, 0, bytesRead);
|
|
161
|
+
return Option.some(dst);
|
|
162
|
+
})));
|
|
163
|
+
}
|
|
164
|
+
truncate(length) {
|
|
165
|
+
return this.semaphore.withPermits(1)(Effect.map(nodeTruncate(this.fd, length ? Number(length) : undefined), () => {
|
|
166
|
+
if (!this.append) {
|
|
167
|
+
const len = BigInt(length ?? 0);
|
|
168
|
+
if (this.position > len) {
|
|
169
|
+
this.position = len;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}));
|
|
173
|
+
}
|
|
174
|
+
write(buffer) {
|
|
175
|
+
return this.semaphore.withPermits(1)(Effect.map(Effect.suspend(() => nodeWrite(this.fd, buffer, undefined, undefined, this.append ? undefined : Number(this.position))), bytesWritten => {
|
|
176
|
+
const sizeWritten = FileSystem.Size(bytesWritten);
|
|
177
|
+
if (!this.append) {
|
|
178
|
+
this.position = this.position + sizeWritten;
|
|
179
|
+
}
|
|
180
|
+
return sizeWritten;
|
|
181
|
+
}));
|
|
182
|
+
}
|
|
183
|
+
writeAllChunk(buffer) {
|
|
184
|
+
return Effect.flatMap(Effect.suspend(() => nodeWriteAll(this.fd, buffer, undefined, undefined, this.append ? undefined : Number(this.position))), bytesWritten => {
|
|
185
|
+
if (bytesWritten === 0) {
|
|
186
|
+
return Effect.fail(Error.SystemError({
|
|
187
|
+
module: "FileSystem",
|
|
188
|
+
method: "writeAll",
|
|
189
|
+
reason: "WriteZero",
|
|
190
|
+
pathOrDescriptor: this.fd,
|
|
191
|
+
message: "write returned 0 bytes written"
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
if (!this.append) {
|
|
195
|
+
this.position = this.position + BigInt(bytesWritten);
|
|
196
|
+
}
|
|
197
|
+
return bytesWritten < buffer.length ? this.writeAllChunk(buffer.subarray(bytesWritten)) : Effect.unit;
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
writeAll(buffer) {
|
|
201
|
+
return this.semaphore.withPermits(1)(this.writeAllChunk(buffer));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return (fd, append) => new FileImpl(fd, append);
|
|
205
|
+
})();
|
|
206
|
+
// == makeTempFile
|
|
207
|
+
const makeTempFileFactory = method => {
|
|
208
|
+
const makeDirectory = makeTempDirectoryFactory(method);
|
|
209
|
+
const open = openFactory(method);
|
|
210
|
+
const randomHexString = bytes => Effect.sync(() => Crypto.randomBytes(bytes).toString("hex"));
|
|
211
|
+
return options => pipe(Effect.zip(makeDirectory(options), randomHexString(6)), Effect.map(([directory, random]) => Path.join(directory, random)), Effect.tap(path => Effect.scoped(open(path, {
|
|
212
|
+
flag: "w+"
|
|
213
|
+
}))));
|
|
214
|
+
};
|
|
215
|
+
const makeTempFile = /*#__PURE__*/makeTempFileFactory("makeTempFile");
|
|
216
|
+
// == makeTempFileScoped
|
|
217
|
+
const makeTempFileScoped = /*#__PURE__*/(() => {
|
|
218
|
+
const makeFile = /*#__PURE__*/makeTempFileFactory("makeTempFileScoped");
|
|
219
|
+
const removeFile = /*#__PURE__*/removeFactory("makeTempFileScoped");
|
|
220
|
+
return options => Effect.acquireRelease(makeFile(options), file => Effect.orDie(removeFile(file)));
|
|
221
|
+
})();
|
|
222
|
+
// == readDirectory
|
|
223
|
+
const readDirectory = /*#__PURE__*/(() => {
|
|
224
|
+
const nodeReadDirectory = /*#__PURE__*/effectify(NFS.readdir, /*#__PURE__*/handleErrnoException("FileSystem", "readDirectory"), /*#__PURE__*/handleBadArgument("readDirectory"));
|
|
225
|
+
return (path, options) => nodeReadDirectory(path, options);
|
|
226
|
+
})();
|
|
227
|
+
// == readFile
|
|
228
|
+
const readFile = path => Effect.async((resume, signal) => {
|
|
229
|
+
try {
|
|
230
|
+
NFS.readFile(path, {
|
|
231
|
+
signal
|
|
232
|
+
}, (err, data) => {
|
|
233
|
+
if (err) {
|
|
234
|
+
resume(Effect.fail(handleErrnoException("FileSystem", "readFile")(err, [path])));
|
|
235
|
+
} else {
|
|
236
|
+
resume(Effect.succeed(data));
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
} catch (err) {
|
|
240
|
+
resume(Effect.fail(handleBadArgument("readFile")(err)));
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
// == readLink
|
|
244
|
+
const readLink = /*#__PURE__*/(() => {
|
|
245
|
+
const nodeReadLink = /*#__PURE__*/effectify(NFS.readlink, /*#__PURE__*/handleErrnoException("FileSystem", "readLink"), /*#__PURE__*/handleBadArgument("readLink"));
|
|
246
|
+
return path => nodeReadLink(path);
|
|
247
|
+
})();
|
|
248
|
+
// == realPath
|
|
249
|
+
const realPath = /*#__PURE__*/(() => {
|
|
250
|
+
const nodeRealPath = /*#__PURE__*/effectify(NFS.realpath, /*#__PURE__*/handleErrnoException("FileSystem", "realPath"), /*#__PURE__*/handleBadArgument("realPath"));
|
|
251
|
+
return path => nodeRealPath(path);
|
|
252
|
+
})();
|
|
253
|
+
// == rename
|
|
254
|
+
const rename = /*#__PURE__*/(() => {
|
|
255
|
+
const nodeRename = /*#__PURE__*/effectify(NFS.rename, /*#__PURE__*/handleErrnoException("FileSystem", "rename"), /*#__PURE__*/handleBadArgument("rename"));
|
|
256
|
+
return (oldPath, newPath) => nodeRename(oldPath, newPath);
|
|
257
|
+
})();
|
|
258
|
+
// == stat
|
|
259
|
+
const makeFileInfo = stat => ({
|
|
260
|
+
type: stat.isFile() ? "File" : stat.isDirectory() ? "Directory" : stat.isSymbolicLink() ? "SymbolicLink" : stat.isBlockDevice() ? "BlockDevice" : stat.isCharacterDevice() ? "CharacterDevice" : stat.isFIFO() ? "FIFO" : stat.isSocket() ? "Socket" : "Unknown",
|
|
261
|
+
mtime: Option.fromNullable(stat.mtime),
|
|
262
|
+
atime: Option.fromNullable(stat.atime),
|
|
263
|
+
birthtime: Option.fromNullable(stat.birthtime),
|
|
264
|
+
dev: stat.dev,
|
|
265
|
+
rdev: Option.fromNullable(stat.rdev),
|
|
266
|
+
ino: Option.fromNullable(stat.ino),
|
|
267
|
+
mode: stat.mode,
|
|
268
|
+
nlink: Option.fromNullable(stat.nlink),
|
|
269
|
+
uid: Option.fromNullable(stat.uid),
|
|
270
|
+
gid: Option.fromNullable(stat.gid),
|
|
271
|
+
size: FileSystem.Size(stat.size),
|
|
272
|
+
blksize: Option.fromNullable(FileSystem.Size(stat.blksize)),
|
|
273
|
+
blocks: Option.fromNullable(stat.blocks)
|
|
274
|
+
});
|
|
275
|
+
const stat = /*#__PURE__*/(() => {
|
|
276
|
+
const nodeStat = /*#__PURE__*/effectify(NFS.stat, /*#__PURE__*/handleErrnoException("FileSystem", "stat"), /*#__PURE__*/handleBadArgument("stat"));
|
|
277
|
+
return path => Effect.map(nodeStat(path), makeFileInfo);
|
|
278
|
+
})();
|
|
279
|
+
// == symlink
|
|
280
|
+
const symlink = /*#__PURE__*/(() => {
|
|
281
|
+
const nodeSymlink = /*#__PURE__*/effectify(NFS.symlink, /*#__PURE__*/handleErrnoException("FileSystem", "symlink"), /*#__PURE__*/handleBadArgument("symlink"));
|
|
282
|
+
return (target, path) => nodeSymlink(target, path);
|
|
283
|
+
})();
|
|
284
|
+
// == truncate
|
|
285
|
+
const truncate = /*#__PURE__*/(() => {
|
|
286
|
+
const nodeTruncate = /*#__PURE__*/effectify(NFS.truncate, /*#__PURE__*/handleErrnoException("FileSystem", "truncate"), /*#__PURE__*/handleBadArgument("truncate"));
|
|
287
|
+
return (path, length) => nodeTruncate(path, length !== undefined ? Number(length) : undefined);
|
|
288
|
+
})();
|
|
289
|
+
// == utimes
|
|
290
|
+
const utimes = /*#__PURE__*/(() => {
|
|
291
|
+
const nodeUtimes = /*#__PURE__*/effectify(NFS.utimes, /*#__PURE__*/handleErrnoException("FileSystem", "utime"), /*#__PURE__*/handleBadArgument("utime"));
|
|
292
|
+
return (path, atime, mtime) => nodeUtimes(path, atime, mtime);
|
|
293
|
+
})();
|
|
294
|
+
// == writeFile
|
|
295
|
+
const writeFile = (path, data, options) => Effect.async((resume, signal) => {
|
|
296
|
+
try {
|
|
297
|
+
NFS.writeFile(path, data, {
|
|
298
|
+
signal,
|
|
299
|
+
flag: options?.flag,
|
|
300
|
+
mode: options?.mode
|
|
301
|
+
}, err => {
|
|
302
|
+
if (err) {
|
|
303
|
+
resume(Effect.fail(handleErrnoException("FileSystem", "writeFile")(err, [path])));
|
|
304
|
+
} else {
|
|
305
|
+
resume(Effect.unit);
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
} catch (err) {
|
|
309
|
+
resume(Effect.fail(handleBadArgument("writeFile")(err)));
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
const fileSystemImpl = /*#__PURE__*/FileSystem.make({
|
|
313
|
+
access,
|
|
314
|
+
chmod,
|
|
315
|
+
chown,
|
|
316
|
+
copy,
|
|
317
|
+
copyFile,
|
|
318
|
+
link,
|
|
319
|
+
makeDirectory,
|
|
320
|
+
makeTempDirectory,
|
|
321
|
+
makeTempDirectoryScoped,
|
|
322
|
+
makeTempFile,
|
|
323
|
+
makeTempFileScoped,
|
|
324
|
+
open,
|
|
325
|
+
readDirectory,
|
|
326
|
+
readFile,
|
|
327
|
+
readLink,
|
|
328
|
+
realPath,
|
|
329
|
+
remove,
|
|
330
|
+
rename,
|
|
331
|
+
stat,
|
|
332
|
+
symlink,
|
|
333
|
+
truncate,
|
|
334
|
+
utimes,
|
|
335
|
+
writeFile
|
|
336
|
+
});
|
|
337
|
+
/** @internal */
|
|
338
|
+
export const layer = /*#__PURE__*/Layer.succeed(FileSystem.FileSystem, fileSystemImpl);
|
|
339
|
+
//# sourceMappingURL=fileSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileSystem.js","names":["effectify","Error","FileSystem","Effect","pipe","Layer","Option","Crypto","NFS","OS","Path","handleErrnoException","handleBadArgument","method","err","BadArgument","module","message","String","access","nodeAccess","path","options","mode","constants","F_OK","readable","R_OK","writable","W_OK","copy","nodeCp","cp","fromPath","toPath","force","overwrite","preserveTimestamps","recursive","copyFile","nodeCopyFile","chmod","nodeChmod","chown","nodeChown","uid","gid","link","nodeLink","existingPath","newPath","makeDirectory","nodeMkdir","mkdir","makeTempDirectoryFactory","nodeMkdtemp","mkdtemp","suspend","prefix","directory","join","tmpdir","makeTempDirectory","removeFactory","nodeRm","rm","remove","makeTempDirectoryScoped","removeDirectory","acquireRelease","orDie","openFactory","nodeOpen","open","nodeClose","close","flag","fd","map","makeFile","FileDescriptor","startsWith","nodeReadFactory","read","nodeRead","nodeReadAlloc","nodeStat","fstat","nodeTruncate","ftruncate","nodeWriteFactory","write","nodeWrite","nodeWriteAll","FileImpl","append","FileTypeId","semaphore","unsafeMakeSemaphore","position","constructor","stat","makeFileInfo","seek","offset","from","offsetSize","Size","withPermits","sync","buffer","bytesRead","sizeRead","readAlloc","size","sizeNumber","Number","flatMap","Buffer","allocUnsafeSlow","none","BigInt","some","dst","truncate","length","undefined","len","bytesWritten","sizeWritten","writeAllChunk","fail","SystemError","reason","pathOrDescriptor","subarray","unit","writeAll","makeTempFileFactory","randomHexString","bytes","randomBytes","toString","zip","random","tap","scoped","makeTempFile","makeTempFileScoped","removeFile","file","readDirectory","nodeReadDirectory","readdir","readFile","async","resume","signal","data","succeed","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","utimes","nodeUtimes","writeFile","fileSystemImpl","make","layer"],"sources":["../../../src/internal/fileSystem.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as Etag from "@effect/platform/Http/Etag";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
const fromFileInfo = info => {
|
|
5
|
+
const mtime = info.mtime._tag === "Some" ? info.mtime.value.getTime().toString(16) : "0";
|
|
6
|
+
return `${info.size.toString(16)}-${mtime}`;
|
|
7
|
+
};
|
|
8
|
+
const fromFileWeb = file => {
|
|
9
|
+
return `${file.size.toString(16)}-${file.lastModified.toString(16)}`;
|
|
10
|
+
};
|
|
11
|
+
/** @internal */
|
|
12
|
+
export const layer = /*#__PURE__*/Layer.succeed(Etag.Generator, /*#__PURE__*/Etag.Generator.of({
|
|
13
|
+
[Etag.GeneratorTypeId]: Etag.GeneratorTypeId,
|
|
14
|
+
fromFileInfo(info) {
|
|
15
|
+
return Effect.sync(() => ({
|
|
16
|
+
_tag: "Strong",
|
|
17
|
+
value: fromFileInfo(info)
|
|
18
|
+
}));
|
|
19
|
+
},
|
|
20
|
+
fromFileWeb(file) {
|
|
21
|
+
return Effect.sync(() => ({
|
|
22
|
+
_tag: "Strong",
|
|
23
|
+
value: fromFileWeb(file)
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
}));
|
|
27
|
+
/** @internal */
|
|
28
|
+
export const layerWeak = /*#__PURE__*/Layer.succeed(Etag.Generator, /*#__PURE__*/Etag.Generator.of({
|
|
29
|
+
[Etag.GeneratorTypeId]: Etag.GeneratorTypeId,
|
|
30
|
+
fromFileInfo(info) {
|
|
31
|
+
return Effect.sync(() => ({
|
|
32
|
+
_tag: "Weak",
|
|
33
|
+
value: fromFileInfo(info)
|
|
34
|
+
}));
|
|
35
|
+
},
|
|
36
|
+
fromFileWeb(file) {
|
|
37
|
+
return Effect.sync(() => ({
|
|
38
|
+
_tag: "Weak",
|
|
39
|
+
value: fromFileWeb(file)
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
//# sourceMappingURL=etag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"etag.js","names":["Etag","Effect","Layer","fromFileInfo","info","mtime","_tag","value","getTime","toString","size","fromFileWeb","file","lastModified","layer","succeed","Generator","of","GeneratorTypeId","sync","layerWeak"],"sources":["../../../../src/internal/http/etag.ts"],"sourcesContent":[null],"mappings":"AAEA,OAAO,KAAKA,IAAI,MAAM,4BAA4B;AAClD,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,MAAMC,YAAY,GAAIC,IAA0B,IAAI;EAClD,MAAMC,KAAK,GAAGD,IAAI,CAACC,KAAK,CAACC,IAAI,KAAK,MAAM,GACpCF,IAAI,CAACC,KAAK,CAACE,KAAK,CAACC,OAAO,EAAE,CAACC,QAAQ,CAAC,EAAE,CAAC,GACvC,GAAG;EACP,OAAO,GAAGL,IAAI,CAACM,IAAI,CAACD,QAAQ,CAAC,EAAE,CAAC,IAAIJ,KAAK,EAAE;AAC7C,CAAC;AAED,MAAMM,WAAW,GAAIC,IAAwB,IAAI;EAC/C,OAAO,GAAGA,IAAI,CAACF,IAAI,CAACD,QAAQ,CAAC,EAAE,CAAC,IAAIG,IAAI,CAACC,YAAY,CAACJ,QAAQ,CAAC,EAAE,CAAC,EAAE;AACtE,CAAC;AAED;AACA,OAAO,MAAMK,KAAK,gBAAGZ,KAAK,CAACa,OAAO,CAChCf,IAAI,CAACgB,SAAS,eACdhB,IAAI,CAACgB,SAAS,CAACC,EAAE,CAAC;EAChB,CAACjB,IAAI,CAACkB,eAAe,GAAGlB,IAAI,CAACkB,eAAe;EAC5Cf,YAAYA,CAACC,IAAI;IACf,OAAOH,MAAM,CAACkB,IAAI,CAAC,OAAO;MAAEb,IAAI,EAAE,QAAQ;MAAEC,KAAK,EAAEJ,YAAY,CAACC,IAAI;IAAC,CAAE,CAAC,CAAC;EAC3E,CAAC;EACDO,WAAWA,CAACC,IAAI;IACd,OAAOX,MAAM,CAACkB,IAAI,CAAC,OAAO;MAAEb,IAAI,EAAE,QAAQ;MAAEC,KAAK,EAAEI,WAAW,CAACC,IAAI;IAAC,CAAE,CAAC,CAAC;EAC1E;CACD,CAAC,CACH;AAED;AACA,OAAO,MAAMQ,SAAS,gBAAGlB,KAAK,CAACa,OAAO,CACpCf,IAAI,CAACgB,SAAS,eACdhB,IAAI,CAACgB,SAAS,CAACC,EAAE,CAAC;EAChB,CAACjB,IAAI,CAACkB,eAAe,GAAGlB,IAAI,CAACkB,eAAe;EAC5Cf,YAAYA,CAACC,IAAI;IACf,OAAOH,MAAM,CAACkB,IAAI,CAAC,OAAO;MAAEb,IAAI,EAAE,MAAM;MAAEC,KAAK,EAAEJ,YAAY,CAACC,IAAI;IAAC,CAAE,CAAC,CAAC;EACzE,CAAC;EACDO,WAAWA,CAACC,IAAI;IACd,OAAOX,MAAM,CAACkB,IAAI,CAAC,OAAO;MAAEb,IAAI,EAAE,MAAM;MAAEC,KAAK,EAAEI,WAAW,CAACC,IAAI;IAAC,CAAE,CAAC,CAAC;EACxE;CACD,CAAC,CACH"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as Multipart from "@effect/platform/Http/Multipart";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import { pipe } from "effect/Function";
|
|
4
|
+
import * as Stream from "effect/Stream";
|
|
5
|
+
import { decodeField } from "multipasta";
|
|
6
|
+
import * as MP from "multipasta/node";
|
|
7
|
+
import * as NFS from "node:fs";
|
|
8
|
+
import * as NodeStreamP from "node:stream/promises";
|
|
9
|
+
import * as NodeStream from "../stream.js";
|
|
10
|
+
/** @internal */
|
|
11
|
+
export const stream = (source, headers) => pipe(Multipart.makeConfig(headers), Effect.map(config => NodeStream.fromReadable(() => {
|
|
12
|
+
const parser = MP.make(config);
|
|
13
|
+
source.pipe(parser);
|
|
14
|
+
return parser;
|
|
15
|
+
}, error => convertError(error))), Stream.unwrap, Stream.map(convertPart));
|
|
16
|
+
/** @internal */
|
|
17
|
+
export const persisted = (source, headers) => Multipart.toPersisted(stream(source, headers), (path, file) => Effect.tryPromise({
|
|
18
|
+
try: signal => NodeStreamP.pipeline(file.file, NFS.createWriteStream(path), {
|
|
19
|
+
signal
|
|
20
|
+
}),
|
|
21
|
+
catch: error => Multipart.MultipartError("InternalError", error)
|
|
22
|
+
}));
|
|
23
|
+
const convertPart = part => part._tag === "Field" ? new FieldImpl(part.info, part.value) : new FileImpl(part);
|
|
24
|
+
class FieldImpl {
|
|
25
|
+
[Multipart.TypeId];
|
|
26
|
+
_tag = "Field";
|
|
27
|
+
key;
|
|
28
|
+
contentType;
|
|
29
|
+
value;
|
|
30
|
+
constructor(info, value) {
|
|
31
|
+
this[Multipart.TypeId] = Multipart.TypeId;
|
|
32
|
+
this.key = info.name;
|
|
33
|
+
this.contentType = info.contentType;
|
|
34
|
+
this.value = decodeField(info, value);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
class FileImpl {
|
|
38
|
+
file;
|
|
39
|
+
_tag = "File";
|
|
40
|
+
[Multipart.TypeId];
|
|
41
|
+
key;
|
|
42
|
+
name;
|
|
43
|
+
contentType;
|
|
44
|
+
content;
|
|
45
|
+
constructor(file) {
|
|
46
|
+
this.file = file;
|
|
47
|
+
this[Multipart.TypeId] = Multipart.TypeId;
|
|
48
|
+
this.key = file.info.name;
|
|
49
|
+
this.name = file.filename ?? file.info.name;
|
|
50
|
+
this.contentType = file.info.contentType;
|
|
51
|
+
this.content = NodeStream.fromReadable(() => file, error => Multipart.MultipartError("InternalError", error));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** @internal */
|
|
55
|
+
export const fileToReadable = file => file.file;
|
|
56
|
+
function convertError(error) {
|
|
57
|
+
switch (error._tag) {
|
|
58
|
+
case "ReachedLimit":
|
|
59
|
+
{
|
|
60
|
+
switch (error.limit) {
|
|
61
|
+
case "MaxParts":
|
|
62
|
+
{
|
|
63
|
+
return Multipart.MultipartError("TooManyParts", error);
|
|
64
|
+
}
|
|
65
|
+
case "MaxFieldSize":
|
|
66
|
+
{
|
|
67
|
+
return Multipart.MultipartError("FieldTooLarge", error);
|
|
68
|
+
}
|
|
69
|
+
case "MaxPartSize":
|
|
70
|
+
{
|
|
71
|
+
return Multipart.MultipartError("FileTooLarge", error);
|
|
72
|
+
}
|
|
73
|
+
case "MaxTotalSize":
|
|
74
|
+
{
|
|
75
|
+
return Multipart.MultipartError("BodyTooLarge", error);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
default:
|
|
80
|
+
{
|
|
81
|
+
return Multipart.MultipartError("Parse", error);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=multipart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multipart.js","names":["Multipart","Effect","pipe","Stream","decodeField","MP","NFS","NodeStreamP","NodeStream","stream","source","headers","makeConfig","map","config","fromReadable","parser","make","error","convertError","unwrap","convertPart","persisted","toPersisted","path","file","tryPromise","try","signal","pipeline","createWriteStream","catch","MultipartError","part","_tag","FieldImpl","info","value","FileImpl","TypeId","key","contentType","constructor","name","content","filename","fileToReadable","limit"],"sources":["../../../../src/internal/http/multipart.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,SAAS,MAAM,iCAAiC;AAC5D,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,SAASC,WAAW,QAAQ,YAAY;AACxC,OAAO,KAAKC,EAAE,MAAM,iBAAiB;AACrC,OAAO,KAAKC,GAAG,MAAM,SAAS;AAG9B,OAAO,KAAKC,WAAW,MAAM,sBAAsB;AACnD,OAAO,KAAKC,UAAU,MAAM,cAAc;AAE1C;AACA,OAAO,MAAMC,MAAM,GAAGA,CACpBC,MAAgB,EAChBC,OAA4B,KAE5BT,IAAI,CACFF,SAAS,CAACY,UAAU,CAACD,OAAc,CAAC,EACpCV,MAAM,CAACY,GAAG,CACPC,MAAM,IACLN,UAAU,CAACO,YAAY,CAAoC,MAAK;EAC9D,MAAMC,MAAM,GAAGX,EAAE,CAACY,IAAI,CAACH,MAAM,CAAC;EAC9BJ,MAAM,CAACR,IAAI,CAACc,MAAM,CAAC;EACnB,OAAOA,MAAM;AACf,CAAC,EAAGE,KAAK,IAAKC,YAAY,CAACD,KAAY,CAAC,CAAC,CAC5C,EACDf,MAAM,CAACiB,MAAM,EACbjB,MAAM,CAACU,GAAG,CAACQ,WAAW,CAAC,CACxB;AAEH;AACA,OAAO,MAAMC,SAAS,GAAGA,CACvBZ,MAAgB,EAChBC,OAA4B,KAE5BX,SAAS,CAACuB,WAAW,CAACd,MAAM,CAACC,MAAM,EAAEC,OAAO,CAAC,EAAE,CAACa,IAAI,EAAEC,IAAI,KACxDxB,MAAM,CAACyB,UAAU,CAAC;EAChBC,GAAG,EAAGC,MAAM,IAAKrB,WAAW,CAACsB,QAAQ,CAAEJ,IAAiB,CAACA,IAAI,EAAEnB,GAAG,CAACwB,iBAAiB,CAACN,IAAI,CAAC,EAAE;IAAEI;EAAM,CAAE,CAAC;EACvGG,KAAK,EAAGb,KAAK,IAAKlB,SAAS,CAACgC,cAAc,CAAC,eAAe,EAAEd,KAAK;CAClE,CAAC,CAAC;AAEP,MAAMG,WAAW,GAAIY,IAAa,IAChCA,IAAI,CAACC,IAAI,KAAK,OAAO,GAAG,IAAIC,SAAS,CAACF,IAAI,CAACG,IAAI,EAAEH,IAAI,CAACI,KAAK,CAAC,GAAG,IAAIC,QAAQ,CAACL,IAAI,CAAC;AAEnF,MAAME,SAAS;EACJ,CAACnC,SAAS,CAACuC,MAAM;EACjBL,IAAI,GAAG,OAAO;EACdM,GAAG;EACHC,WAAW;EACXJ,KAAK;EAEdK,YACEN,IAAc,EACdC,KAAiB;IAEjB,IAAI,CAACrC,SAAS,CAACuC,MAAM,CAAC,GAAGvC,SAAS,CAACuC,MAAM;IACzC,IAAI,CAACC,GAAG,GAAGJ,IAAI,CAACO,IAAI;IACpB,IAAI,CAACF,WAAW,GAAGL,IAAI,CAACK,WAAW;IACnC,IAAI,CAACJ,KAAK,GAAGjC,WAAW,CAACgC,IAAI,EAAEC,KAAK,CAAC;EACvC;;AAGF,MAAMC,QAAQ;EAQSb,IAAA;EAPZS,IAAI,GAAG,MAAM;EACb,CAAClC,SAAS,CAACuC,MAAM;EACjBC,GAAG;EACHG,IAAI;EACJF,WAAW;EACXG,OAAO;EAEhBF,YAAqBjB,IAAmB;IAAnB,KAAAA,IAAI,GAAJA,IAAI;IACvB,IAAI,CAACzB,SAAS,CAACuC,MAAM,CAAC,GAAGvC,SAAS,CAACuC,MAAM;IACzC,IAAI,CAACC,GAAG,GAAGf,IAAI,CAACW,IAAI,CAACO,IAAI;IACzB,IAAI,CAACA,IAAI,GAAGlB,IAAI,CAACoB,QAAQ,IAAIpB,IAAI,CAACW,IAAI,CAACO,IAAI;IAC3C,IAAI,CAACF,WAAW,GAAGhB,IAAI,CAACW,IAAI,CAACK,WAAW;IACxC,IAAI,CAACG,OAAO,GAAGpC,UAAU,CAACO,YAAY,CAAC,MAAMU,IAAI,EAAGP,KAAK,IAAKlB,SAAS,CAACgC,cAAc,CAAC,eAAe,EAAEd,KAAK,CAAC,CAAC;EACjH;;AAGF;AACA,OAAO,MAAM4B,cAAc,GAAIrB,IAAoB,IAAgBA,IAAiB,CAACA,IAAI;AAEzF,SAASN,YAAYA,CAACD,KAAqB;EACzC,QAAQA,KAAK,CAACgB,IAAI;IAChB,KAAK,cAAc;MAAE;QACnB,QAAQhB,KAAK,CAAC6B,KAAK;UACjB,KAAK,UAAU;YAAE;cACf,OAAO/C,SAAS,CAACgC,cAAc,CAAC,cAAc,EAAEd,KAAK,CAAC;YACxD;UACA,KAAK,cAAc;YAAE;cACnB,OAAOlB,SAAS,CAACgC,cAAc,CAAC,eAAe,EAAEd,KAAK,CAAC;YACzD;UACA,KAAK,aAAa;YAAE;cAClB,OAAOlB,SAAS,CAACgC,cAAc,CAAC,cAAc,EAAEd,KAAK,CAAC;YACxD;UACA,KAAK,cAAc;YAAE;cACnB,OAAOlB,SAAS,CAACgC,cAAc,CAAC,cAAc,EAAEd,KAAK,CAAC;YACxD;QACF;MACF;IACA;MAAS;QACP,OAAOlB,SAAS,CAACgC,cAAc,CAAC,OAAO,EAAEd,KAAK,CAAC;MACjD;EACF;AACF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { BadArgument } from "@effect/platform/Error";
|
|
2
|
+
import { Path } from "@effect/platform/Path";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
5
|
+
import * as NodePath from "node:path";
|
|
6
|
+
import * as NodeUrl from "node:url";
|
|
7
|
+
const fromFileUrl = url => Effect.try({
|
|
8
|
+
try: () => NodeUrl.fileURLToPath(url),
|
|
9
|
+
catch: error => BadArgument({
|
|
10
|
+
module: "Path",
|
|
11
|
+
method: "fromFileUrl",
|
|
12
|
+
message: `${error}`
|
|
13
|
+
})
|
|
14
|
+
});
|
|
15
|
+
const toFileUrl = path => Effect.try({
|
|
16
|
+
try: () => NodeUrl.pathToFileURL(path),
|
|
17
|
+
catch: error => BadArgument({
|
|
18
|
+
module: "Path",
|
|
19
|
+
method: "toFileUrl",
|
|
20
|
+
message: `${error}`
|
|
21
|
+
})
|
|
22
|
+
});
|
|
23
|
+
/** @internal */
|
|
24
|
+
export const layerPosix = /*#__PURE__*/Layer.succeed(Path, /*#__PURE__*/Path.of({
|
|
25
|
+
...NodePath.posix,
|
|
26
|
+
fromFileUrl,
|
|
27
|
+
toFileUrl
|
|
28
|
+
}));
|
|
29
|
+
/** @internal */
|
|
30
|
+
export const layerWin32 = /*#__PURE__*/Layer.succeed(Path, /*#__PURE__*/Path.of({
|
|
31
|
+
...NodePath.win32,
|
|
32
|
+
fromFileUrl,
|
|
33
|
+
toFileUrl
|
|
34
|
+
}));
|
|
35
|
+
/** @internal */
|
|
36
|
+
export const layer = /*#__PURE__*/Layer.succeed(Path, /*#__PURE__*/Path.of({
|
|
37
|
+
...NodePath,
|
|
38
|
+
fromFileUrl,
|
|
39
|
+
toFileUrl
|
|
40
|
+
}));
|
|
41
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","names":["BadArgument","Path","Effect","Layer","NodePath","NodeUrl","fromFileUrl","url","try","fileURLToPath","catch","error","module","method","message","toFileUrl","path","pathToFileURL","layerPosix","succeed","of","posix","layerWin32","win32","layer"],"sources":["../../../src/internal/path.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAW,QAAQ,wBAAwB;AACpD,SAASC,IAAI,QAAQ,uBAAuB;AAC5C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,WAAW;AACrC,OAAO,KAAKC,OAAO,MAAM,UAAU;AAEnC,MAAMC,WAAW,GAAIC,GAAQ,IAC3BL,MAAM,CAACM,GAAG,CAAC;EACTA,GAAG,EAAEA,CAAA,KAAMH,OAAO,CAACI,aAAa,CAACF,GAAG,CAAC;EACrCG,KAAK,EAAGC,KAAK,IACXX,WAAW,CAAC;IACVY,MAAM,EAAE,MAAM;IACdC,MAAM,EAAE,aAAa;IACrBC,OAAO,EAAE,GAAGH,KAAK;GAClB;CACJ,CAAC;AAEJ,MAAMI,SAAS,GAAIC,IAAY,IAC7Bd,MAAM,CAACM,GAAG,CAAC;EACTA,GAAG,EAAEA,CAAA,KAAMH,OAAO,CAACY,aAAa,CAACD,IAAI,CAAC;EACtCN,KAAK,EAAGC,KAAK,IACXX,WAAW,CAAC;IACVY,MAAM,EAAE,MAAM;IACdC,MAAM,EAAE,WAAW;IACnBC,OAAO,EAAE,GAAGH,KAAK;GAClB;CACJ,CAAC;AAEJ;AACA,OAAO,MAAMO,UAAU,gBAAGf,KAAK,CAACgB,OAAO,CACrClB,IAAI,eACJA,IAAI,CAACmB,EAAE,CAAC;EACN,GAAGhB,QAAQ,CAACiB,KAAK;EACjBf,WAAW;EACXS;CACD,CAAC,CACH;AAED;AACA,OAAO,MAAMO,UAAU,gBAAGnB,KAAK,CAACgB,OAAO,CACrClB,IAAI,eACJA,IAAI,CAACmB,EAAE,CAAC;EACN,GAAGhB,QAAQ,CAACmB,KAAK;EACjBjB,WAAW;EACXS;CACD,CAAC,CACH;AAED;AACA,OAAO,MAAMS,KAAK,gBAAGrB,KAAK,CAACgB,OAAO,CAChClB,IAAI,eACJA,IAAI,CAACmB,EAAE,CAAC;EACN,GAAGhB,QAAQ;EACXE,WAAW;EACXS;CACD,CAAC,CACH"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { defaultTeardown } from "@effect/platform/Runtime";
|
|
2
|
+
import * as Cause from "effect/Cause";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
/** @internal */
|
|
5
|
+
export const runMain = (effect, teardown = defaultTeardown) => {
|
|
6
|
+
const keepAlive = setInterval(() => {}, 2 ** 31 - 1);
|
|
7
|
+
const fiber = Effect.runFork(Effect.tapErrorCause(effect, cause => {
|
|
8
|
+
if (Cause.isInterruptedOnly(cause)) {
|
|
9
|
+
return Effect.unit;
|
|
10
|
+
}
|
|
11
|
+
return Effect.logError(cause);
|
|
12
|
+
}));
|
|
13
|
+
fiber.addObserver(exit => {
|
|
14
|
+
clearInterval(keepAlive);
|
|
15
|
+
teardown(exit, code => {
|
|
16
|
+
process.exit(code);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
function onSigint() {
|
|
20
|
+
process.removeListener("SIGINT", onSigint);
|
|
21
|
+
process.removeListener("SIGTERM", onSigint);
|
|
22
|
+
fiber.unsafeInterruptAsFork(fiber.id());
|
|
23
|
+
}
|
|
24
|
+
process.once("SIGINT", onSigint);
|
|
25
|
+
process.once("SIGTERM", onSigint);
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","names":["defaultTeardown","Cause","Effect","runMain","effect","teardown","keepAlive","setInterval","fiber","runFork","tapErrorCause","cause","isInterruptedOnly","unit","logError","addObserver","exit","clearInterval","code","process","onSigint","removeListener","unsafeInterruptAsFork","id","once"],"sources":["../../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAe,QAAsB,0BAA0B;AACxE,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC;AACA,OAAO,MAAMC,OAAO,GAAYA,CAC9BC,MAA2B,EAC3BC,QAAQ,GAAGL,eAAe,KACxB;EACF,MAAMM,SAAS,GAAGC,WAAW,CAAC,MAAK,CAAE,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EAEpD,MAAMC,KAAK,GAAGN,MAAM,CAACO,OAAO,CAC1BP,MAAM,CAACQ,aAAa,CAACN,MAAM,EAAGO,KAAK,IAAI;IACrC,IAAIV,KAAK,CAACW,iBAAiB,CAACD,KAAK,CAAC,EAAE;MAClC,OAAOT,MAAM,CAACW,IAAI;IACpB;IACA,OAAOX,MAAM,CAACY,QAAQ,CAACH,KAAK,CAAC;EAC/B,CAAC,CAAC,CACH;EAEDH,KAAK,CAACO,WAAW,CAAEC,IAAI,IAAI;IACzBC,aAAa,CAACX,SAAS,CAAC;IACxBD,QAAQ,CAACW,IAAI,EAAGE,IAAI,IAAI;MACtBC,OAAO,CAACH,IAAI,CAACE,IAAI,CAAC;IACpB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,SAASE,QAAQA,CAAA;IACfD,OAAO,CAACE,cAAc,CAAC,QAAQ,EAAED,QAAQ,CAAC;IAC1CD,OAAO,CAACE,cAAc,CAAC,SAAS,EAAED,QAAQ,CAAC;IAC3CZ,KAAK,CAACc,qBAAqB,CAACd,KAAK,CAACe,EAAE,EAAE,CAAC;EACzC;EAEAJ,OAAO,CAACK,IAAI,CAAC,QAAQ,EAAEJ,QAAQ,CAAC;EAChCD,OAAO,CAACK,IAAI,CAAC,SAAS,EAAEJ,QAAQ,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as Channel from "effect/Channel";
|
|
2
|
+
import * as Deferred from "effect/Deferred";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Sink from "effect/Sink";
|
|
5
|
+
import { writeInput } from "./stream.js";
|
|
6
|
+
/** @internal */
|
|
7
|
+
export const fromWritable = (evaluate, onError, options) => Sink.fromChannel(fromWritableChannel(evaluate, onError, options));
|
|
8
|
+
/** @internal */
|
|
9
|
+
export const fromWritableChannel = (writable, onError, options) => Channel.flatMap(Effect.zip(Effect.sync(() => writable()), Deferred.make()), ([writable, deferred]) => Channel.embedInput(writableOutput(writable, deferred, onError), writeInput(writable, cause => Deferred.failCause(deferred, cause), options, Deferred.complete(deferred, Effect.unit))));
|
|
10
|
+
const writableOutput = (writable, deferred, onError) => Effect.suspend(() => {
|
|
11
|
+
function handleError(err) {
|
|
12
|
+
Deferred.unsafeDone(deferred, Effect.fail(onError(err)));
|
|
13
|
+
}
|
|
14
|
+
writable.on("error", handleError);
|
|
15
|
+
return Effect.ensuring(Deferred.await(deferred), Effect.sync(() => {
|
|
16
|
+
writable.removeListener("error", handleError);
|
|
17
|
+
}));
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=sink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sink.js","names":["Channel","Deferred","Effect","Sink","writeInput","fromWritable","evaluate","onError","options","fromChannel","fromWritableChannel","writable","flatMap","zip","sync","make","deferred","embedInput","writableOutput","cause","failCause","complete","unit","suspend","handleError","err","unsafeDone","fail","on","ensuring","await","removeListener"],"sources":["../../../src/internal/sink.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AAEzC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,IAAI,MAAM,aAAa;AAGnC,SAASC,UAAU,QAAQ,aAAa;AAExC;AACA,OAAO,MAAMC,YAAY,GAAGA,CAC1BC,QAAmD,EACnDC,OAA8B,EAC9BC,OAA6B,KACWL,IAAI,CAACM,WAAW,CAACC,mBAAmB,CAACJ,QAAQ,EAAEC,OAAO,EAAEC,OAAO,CAAC,CAAC;AAE3G;AACA,OAAO,MAAME,mBAAmB,GAAGA,CACjCC,QAAmD,EACnDJ,OAA+B,EAC/BC,OAA6B,KAE7BR,OAAO,CAACY,OAAO,CACbV,MAAM,CAACW,GAAG,CACRX,MAAM,CAACY,IAAI,CAAC,MAAMH,QAAQ,EAAE,CAAC,EAC7BV,QAAQ,CAACc,IAAI,EAAiB,CAC/B,EACD,CAAC,CAACJ,QAAQ,EAAEK,QAAQ,CAAC,KACnBhB,OAAO,CAACiB,UAAU,CAChBC,cAAc,CAACP,QAAQ,EAAEK,QAAQ,EAAET,OAAO,CAAC,EAC3CH,UAAU,CACRO,QAAQ,EACPQ,KAAK,IAAKlB,QAAQ,CAACmB,SAAS,CAACJ,QAAQ,EAAEG,KAAK,CAAC,EAC9CX,OAAO,EACPP,QAAQ,CAACoB,QAAQ,CAACL,QAAQ,EAAEd,MAAM,CAACoB,IAAI,CAAC,CACzC,CACF,CACJ;AAEH,MAAMJ,cAAc,GAAGA,CACrBP,QAA0C,EAC1CK,QAAyC,EACzCT,OAA8B,KAE9BL,MAAM,CAACqB,OAAO,CAAC,MAAK;EAClB,SAASC,WAAWA,CAACC,GAAY;IAC/BxB,QAAQ,CAACyB,UAAU,CAACV,QAAQ,EAAEd,MAAM,CAACyB,IAAI,CAACpB,OAAO,CAACkB,GAAG,CAAC,CAAC,CAAC;EAC1D;EACAd,QAAQ,CAACiB,EAAE,CAAC,OAAO,EAAEJ,WAAW,CAAC;EACjC,OAAOtB,MAAM,CAAC2B,QAAQ,CACpB5B,QAAQ,CAAC6B,KAAK,CAACd,QAAQ,CAAC,EACxBd,MAAM,CAACY,IAAI,CAAC,MAAK;IACfH,QAAQ,CAACoB,cAAc,CAAC,OAAO,EAAEP,WAAW,CAAC;EAC/C,CAAC,CAAC,CACH;AACH,CAAC,CAAC"}
|