@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
@@ -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
+ }