@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.
- package/Console.d.ts +15 -0
- package/Console.d.ts.map +1 -0
- package/Console.js +19 -0
- package/Console.js.map +1 -0
- package/Effectify.d.ts +19 -0
- package/Effectify.d.ts.map +1 -0
- package/Effectify.js +13 -0
- package/Effectify.js.map +1 -0
- package/Error.d.ts +30 -0
- package/Error.d.ts.map +1 -0
- package/Error.js +25 -0
- package/Error.js.map +1 -0
- package/FileSystem.d.ts +68 -0
- package/FileSystem.d.ts.map +1 -0
- package/FileSystem.js +33 -0
- package/FileSystem.js.map +1 -0
- package/LICENSE +21 -0
- package/Runtime.d.ts +24 -0
- package/Runtime.d.ts.map +1 -0
- package/Runtime.js +27 -0
- package/Runtime.js.map +1 -0
- package/Sink.d.ts +22 -0
- package/Sink.d.ts.map +1 -0
- package/Sink.js +20 -0
- package/Sink.js.map +1 -0
- package/Stream.d.ts +22 -0
- package/Stream.d.ts.map +1 -0
- package/Stream.js +16 -0
- package/Stream.js.map +1 -0
- package/internal/fileSystem.d.ts +2 -0
- package/internal/fileSystem.d.ts.map +1 -0
- package/internal/fileSystem.js +322 -0
- package/internal/fileSystem.js.map +1 -0
- package/internal/runtime.d.ts +2 -0
- package/internal/runtime.d.ts.map +1 -0
- package/internal/runtime.js +35 -0
- package/internal/runtime.js.map +1 -0
- package/internal/sink.d.ts +2 -0
- package/internal/sink.d.ts.map +1 -0
- package/internal/sink.js +40 -0
- package/internal/sink.js.map +1 -0
- package/internal/stream.d.ts +2 -0
- package/internal/stream.d.ts.map +1 -0
- package/internal/stream.js +38 -0
- package/internal/stream.js.map +1 -0
- package/mjs/Console.mjs +15 -0
- package/mjs/Console.mjs.map +1 -0
- package/mjs/Effectify.mjs +10 -0
- package/mjs/Effectify.mjs.map +1 -0
- package/mjs/Error.mjs +20 -0
- package/mjs/Error.mjs.map +1 -0
- package/mjs/FileSystem.mjs +21 -0
- package/mjs/FileSystem.mjs.map +1 -0
- package/mjs/Runtime.mjs +16 -0
- package/mjs/Runtime.mjs.map +1 -0
- package/mjs/Sink.mjs +10 -0
- package/mjs/Sink.mjs.map +1 -0
- package/mjs/Stream.mjs +7 -0
- package/mjs/Stream.mjs.map +1 -0
- package/mjs/internal/fileSystem.mjs +313 -0
- package/mjs/internal/fileSystem.mjs.map +1 -0
- package/mjs/internal/runtime.mjs +26 -0
- package/mjs/internal/runtime.mjs.map +1 -0
- package/mjs/internal/sink.mjs +31 -0
- package/mjs/internal/sink.mjs.map +1 -0
- package/mjs/internal/stream.mjs +29 -0
- package/mjs/internal/stream.mjs.map +1 -0
- package/package.json +31 -0
- package/src/Console.ts +16 -0
- package/src/Effectify.ts +22 -0
- package/src/Error.ts +31 -0
- package/src/FileSystem.ts +74 -0
- package/src/Runtime.ts +32 -0
- package/src/Sink.ts +27 -0
- package/src/Stream.ts +27 -0
- package/src/internal/fileSystem.ts +527 -0
- package/src/internal/runtime.ts +39 -0
- package/src/internal/sink.ts +62 -0
- package/src/internal/stream.ts +57 -0
- package/tsconfig.build.json +11 -0
- package/tsconfig.examples.json +12 -0
- package/tsconfig.json +11 -0
- package/tsconfig.test.json +17 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { LazyArg } from "@effect/data/Function"
|
|
2
|
+
import { pipe } from "@effect/data/Function"
|
|
3
|
+
import * as Option from "@effect/data/Option"
|
|
4
|
+
import * as Effect from "@effect/io/Effect"
|
|
5
|
+
import type { FromReadableOptions } from "@effect/platform-node/Stream"
|
|
6
|
+
import { Size } from "@effect/platform/FileSystem"
|
|
7
|
+
import * as Stream from "@effect/stream/Stream"
|
|
8
|
+
import type { Readable } from "node:stream"
|
|
9
|
+
|
|
10
|
+
const DEFAULT_CHUNK_SIZE = Size(64 * 1024)
|
|
11
|
+
|
|
12
|
+
/** @internal */
|
|
13
|
+
export const fromReadable = <E, A>(
|
|
14
|
+
evaluate: LazyArg<Readable>,
|
|
15
|
+
onError: (error: unknown) => E,
|
|
16
|
+
{ chunkSize = DEFAULT_CHUNK_SIZE }: FromReadableOptions = {}
|
|
17
|
+
): Stream.Stream<never, E, A> =>
|
|
18
|
+
pipe(
|
|
19
|
+
Effect.acquireRelease(Effect.sync(evaluate), (stream) =>
|
|
20
|
+
Effect.sync(() => {
|
|
21
|
+
stream.removeAllListeners()
|
|
22
|
+
|
|
23
|
+
if (!stream.closed) {
|
|
24
|
+
stream.destroy()
|
|
25
|
+
}
|
|
26
|
+
})),
|
|
27
|
+
Effect.map((stream) =>
|
|
28
|
+
Stream.async<never, E, Readable>((emit) => {
|
|
29
|
+
stream.once("error", (err) => {
|
|
30
|
+
emit.fail(onError(err))
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
stream.once("end", () => {
|
|
34
|
+
emit.end()
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
stream.on("readable", () => {
|
|
38
|
+
emit.single(stream)
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
if (stream.readable) {
|
|
42
|
+
emit.single(stream)
|
|
43
|
+
}
|
|
44
|
+
}, 0)
|
|
45
|
+
),
|
|
46
|
+
Stream.unwrapScoped,
|
|
47
|
+
Stream.flatMap((_) => Stream.repeatEffectOption(readChunk<A>(_, chunkSize)))
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
const readChunk = <A>(
|
|
51
|
+
stream: Readable,
|
|
52
|
+
size: Size
|
|
53
|
+
): Effect.Effect<never, Option.Option<never>, A> =>
|
|
54
|
+
pipe(
|
|
55
|
+
Effect.sync(() => stream.read(Number(size)) as A | null),
|
|
56
|
+
Effect.flatMap((a) => (a ? Effect.succeed(a) : Effect.fail(Option.none())))
|
|
57
|
+
)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.base.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"outDir": "build/esm",
|
|
5
|
+
"declarationDir": "build/dts",
|
|
6
|
+
"tsBuildInfoFile": "build/tsbuildinfo/esm.tsbuildinfo",
|
|
7
|
+
"rootDir": "src"
|
|
8
|
+
},
|
|
9
|
+
"include": ["src/**/*.ts"],
|
|
10
|
+
"references": [{ "path": "../platform"}]
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.base.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"tsBuildInfoFile": "build/tsbuildinfo/examples.tsbuildinfo",
|
|
5
|
+
"rootDir": "examples",
|
|
6
|
+
"module": "CommonJS",
|
|
7
|
+
"outDir": "build/examples"
|
|
8
|
+
},
|
|
9
|
+
"include": ["examples/**/*.ts"],
|
|
10
|
+
"references": [{ "path": "./tsconfig.build.json" },
|
|
11
|
+
]
|
|
12
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.base.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"tsBuildInfoFile": "build/tsbuildinfo/tsconfig.tsbuildinfo"
|
|
5
|
+
},
|
|
6
|
+
"references": [
|
|
7
|
+
{ "path": "./tsconfig.build.json" },
|
|
8
|
+
{ "path": "./tsconfig.test.json" },
|
|
9
|
+
{ "path": "./tsconfig.examples.json" }
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.base.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"outDir": "build/test",
|
|
5
|
+
"declarationDir": "build/test-dts",
|
|
6
|
+
"tsBuildInfoFile": "build/tsbuildinfo/test.tsbuildinfo",
|
|
7
|
+
"rootDir": "test",
|
|
8
|
+
"noEmit": true,
|
|
9
|
+
"types": ["vitest/globals"]
|
|
10
|
+
},
|
|
11
|
+
"include": ["test/**/*.ts"],
|
|
12
|
+
"references": [
|
|
13
|
+
{
|
|
14
|
+
"path": "./tsconfig.build.json"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|