@effect/platform-node 0.1.0 → 0.1.1
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/Stream.d.ts +3 -2
- package/Stream.d.ts.map +1 -1
- package/Stream.js.map +1 -1
- package/internal/stream.js +2 -4
- package/internal/stream.js.map +1 -1
- package/mjs/Stream.mjs.map +1 -1
- package/mjs/internal/stream.mjs +2 -4
- package/mjs/internal/stream.mjs.map +1 -1
- package/package.json +1 -1
- package/src/Stream.ts +3 -2
- package/src/internal/stream.ts +5 -7
package/Stream.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* @since 1.0.0
|
|
4
4
|
*/
|
|
5
5
|
import type { LazyArg } from "@effect/data/Function";
|
|
6
|
+
import type { Option } from "@effect/data/Option";
|
|
6
7
|
import type { Size } from "@effect/platform/FileSystem";
|
|
7
8
|
import type { Stream } from "@effect/stream/Stream";
|
|
8
9
|
import type { Readable } from "stream";
|
|
@@ -11,8 +12,8 @@ import type { Readable } from "stream";
|
|
|
11
12
|
* @since 1.0.0
|
|
12
13
|
*/
|
|
13
14
|
export interface FromReadableOptions {
|
|
14
|
-
/** Defaults to
|
|
15
|
-
readonly chunkSize?: Size
|
|
15
|
+
/** Defaults to None, which lets Node.js decide the chunk size */
|
|
16
|
+
readonly chunkSize?: Option<Size>;
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* @category constructor
|
package/Stream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["./src/Stream.ts"],"names":[],"mappings":";AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["./src/Stream.ts"],"names":[],"mappings":";AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEtC;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;CAClC;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,EAC9B,OAAO,CAAC,EAAE,mBAAmB,KAC1B,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAyB,CAAA"}
|
package/Stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stream.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","fromReadable","exports"],"sources":["./src/Stream.ts"],"sourcesContent":[null],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"Stream.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","fromReadable","exports"],"sources":["./src/Stream.ts"],"sourcesContent":[null],"mappings":";;;;;;AAKA,IAAAA,QAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAiE,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAH,wBAAAO,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAcjE;;;;AAIO,MAAMW,YAAY,GAIEzB,QAAQ,CAACyB,YAAY;AAAAC,OAAA,CAAAD,YAAA,GAAAA,YAAA"}
|
package/internal/stream.js
CHANGED
|
@@ -6,14 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.fromReadable = void 0;
|
|
7
7
|
var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Option"));
|
|
8
8
|
var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Effect"));
|
|
9
|
-
var _FileSystem = /*#__PURE__*/require("@effect/platform/FileSystem");
|
|
10
9
|
var Stream = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stream/Stream"));
|
|
11
10
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
11
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
-
const DEFAULT_CHUNK_SIZE = /*#__PURE__*/(0, _FileSystem.Size)(64 * 1024);
|
|
14
12
|
/** @internal */
|
|
15
13
|
const fromReadable = (evaluate, onError, {
|
|
16
|
-
chunkSize =
|
|
14
|
+
chunkSize = Option.none()
|
|
17
15
|
} = {}) => Stream.flatMap(_ => Stream.repeatEffectOption(readChunk(_, chunkSize)))(Stream.unwrapScoped(Effect.map(stream => Stream.async(emit => {
|
|
18
16
|
stream.once("error", err => {
|
|
19
17
|
emit.fail(onError(err));
|
|
@@ -34,5 +32,5 @@ const fromReadable = (evaluate, onError, {
|
|
|
34
32
|
}
|
|
35
33
|
})))));
|
|
36
34
|
exports.fromReadable = fromReadable;
|
|
37
|
-
const readChunk = (stream, size) => Effect.flatMap(
|
|
35
|
+
const readChunk = (stream, size) => Effect.flatMap(_ => _ ? Effect.succeed(_) : Effect.fail(Option.none()))(Effect.sync(() => size._tag === "Some" ? stream.read(Number(size)) : stream.read()));
|
|
38
36
|
//# sourceMappingURL=stream.js.map
|
package/internal/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","names":["Option","_interopRequireWildcard","require","Effect","
|
|
1
|
+
{"version":3,"file":"stream.js","names":["Option","_interopRequireWildcard","require","Effect","Stream","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","fromReadable","evaluate","onError","chunkSize","none","flatMap","_","repeatEffectOption","readChunk","unwrapScoped","map","stream","async","emit","once","err","fail","end","on","single","readable","acquireRelease","sync","removeAllListeners","closed","destroy","exports","size","succeed","_tag","read","Number"],"sources":["../src/internal/stream.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/mjs/Stream.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stream.mjs","names":["internal","fromReadable"],"sources":["../src/Stream.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"file":"Stream.mjs","names":["internal","fromReadable"],"sources":["../src/Stream.ts"],"sourcesContent":[null],"mappings":"AAKA,OAAO,KAAKA,QAAQ,MAAM,uCAAuC;AAcjE;;;;AAIA,OAAO,MAAMC,YAAY,GAIED,QAAQ,CAACC,YAAY"}
|
package/mjs/internal/stream.mjs
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import * as Option from "@effect/data/Option";
|
|
2
2
|
import * as Effect from "@effect/io/Effect";
|
|
3
|
-
import { Size } from "@effect/platform/FileSystem";
|
|
4
3
|
import * as Stream from "@effect/stream/Stream";
|
|
5
|
-
const DEFAULT_CHUNK_SIZE = /*#__PURE__*/Size(64 * 1024);
|
|
6
4
|
/** @internal */
|
|
7
5
|
export const fromReadable = (evaluate, onError, {
|
|
8
|
-
chunkSize =
|
|
6
|
+
chunkSize = Option.none()
|
|
9
7
|
} = {}) => Stream.flatMap(_ => Stream.repeatEffectOption(readChunk(_, chunkSize)))(Stream.unwrapScoped(Effect.map(stream => Stream.async(emit => {
|
|
10
8
|
stream.once("error", err => {
|
|
11
9
|
emit.fail(onError(err));
|
|
@@ -25,5 +23,5 @@ export const fromReadable = (evaluate, onError, {
|
|
|
25
23
|
stream.destroy();
|
|
26
24
|
}
|
|
27
25
|
})))));
|
|
28
|
-
const readChunk = (stream, size) => Effect.flatMap(
|
|
26
|
+
const readChunk = (stream, size) => Effect.flatMap(_ => _ ? Effect.succeed(_) : Effect.fail(Option.none()))(Effect.sync(() => size._tag === "Some" ? stream.read(Number(size)) : stream.read()));
|
|
29
27
|
//# sourceMappingURL=stream.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.mjs","names":["Option","Effect","
|
|
1
|
+
{"version":3,"file":"stream.mjs","names":["Option","Effect","Stream","fromReadable","evaluate","onError","chunkSize","none","flatMap","_","repeatEffectOption","readChunk","unwrapScoped","map","stream","async","emit","once","err","fail","end","on","single","readable","acquireRelease","sync","removeAllListeners","closed","destroy","size","succeed","_tag","read","Number"],"sources":["../../src/internal/stream.ts"],"sourcesContent":[null],"mappings":"AAEA,OAAO,KAAKA,MAAM,MAAM,qBAAqB;AAC7C,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAG3C,OAAO,KAAKC,MAAM,MAAM,uBAAuB;AAG/C;AACA,OAAO,MAAMC,YAAY,GAAGA,CAC1BC,QAA2B,EAC3BC,OAA8B,EAC9B;EAAEC,SAAS,GAAGN,MAAM,CAACO,IAAI;AAAE,IAA0B,EAAE,KA+BrDL,MAAM,CAACM,OAAO,CAAEC,CAAC,IAAKP,MAAM,CAACQ,kBAAkB,CAACC,SAAS,CAAIF,CAAC,EAAEH,SAAS,CAAC,CAAC,CAAC,CAD5EJ,MAAM,CAACU,YAAY,CAnBnBX,MAAM,CAACY,GAAG,CAAEC,MAAM,IAChBZ,MAAM,CAACa,KAAK,CAAsBC,IAAI,IAAI;EACxCF,MAAM,CAACG,IAAI,CAAC,OAAO,EAAGC,GAAG,IAAI;IAC3BF,IAAI,CAACG,IAAI,CAACd,OAAO,CAACa,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,CA1BDb,MAAM,CAACuB,cAAc,CAACvB,MAAM,CAACwB,IAAI,CAACrB,QAAQ,CAAC,EAAGU,MAAM,IAClDb,MAAM,CAACwB,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,IAAyB,KAIvB5B,MAAM,CAACO,OAAO,CAAEC,CAAC,IAAMA,CAAC,GAAGR,MAAM,CAAC6B,OAAO,CAACrB,CAAC,CAAC,GAAGR,MAAM,CAACkB,IAAI,CAACnB,MAAM,CAACO,IAAI,EAAE,CAAE,CAAC,CAD3EN,MAAM,CAACwB,IAAI,CAAC,MAAOI,IAAI,CAACE,IAAI,KAAK,MAAM,GAAGjB,MAAM,CAACkB,IAAI,CAACC,MAAM,CAACJ,IAAI,CAAC,CAAC,GAAGf,MAAM,CAACkB,IAAI,EAAe,CAAC,CAElG"}
|
package/package.json
CHANGED
package/src/Stream.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
import type { LazyArg } from "@effect/data/Function"
|
|
5
|
+
import type { Option } from "@effect/data/Option"
|
|
5
6
|
import * as internal from "@effect/platform-node/internal/stream"
|
|
6
7
|
import type { Size } from "@effect/platform/FileSystem"
|
|
7
8
|
import type { Stream } from "@effect/stream/Stream"
|
|
@@ -12,8 +13,8 @@ import type { Readable } from "stream"
|
|
|
12
13
|
* @since 1.0.0
|
|
13
14
|
*/
|
|
14
15
|
export interface FromReadableOptions {
|
|
15
|
-
/** Defaults to
|
|
16
|
-
readonly chunkSize?: Size
|
|
16
|
+
/** Defaults to None, which lets Node.js decide the chunk size */
|
|
17
|
+
readonly chunkSize?: Option<Size>
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
/**
|
package/src/internal/stream.ts
CHANGED
|
@@ -3,17 +3,15 @@ import { pipe } from "@effect/data/Function"
|
|
|
3
3
|
import * as Option from "@effect/data/Option"
|
|
4
4
|
import * as Effect from "@effect/io/Effect"
|
|
5
5
|
import type { FromReadableOptions } from "@effect/platform-node/Stream"
|
|
6
|
-
import { Size } from "@effect/platform/FileSystem"
|
|
6
|
+
import type { Size } from "@effect/platform/FileSystem"
|
|
7
7
|
import * as Stream from "@effect/stream/Stream"
|
|
8
8
|
import type { Readable } from "node:stream"
|
|
9
9
|
|
|
10
|
-
const DEFAULT_CHUNK_SIZE = Size(64 * 1024)
|
|
11
|
-
|
|
12
10
|
/** @internal */
|
|
13
11
|
export const fromReadable = <E, A>(
|
|
14
12
|
evaluate: LazyArg<Readable>,
|
|
15
13
|
onError: (error: unknown) => E,
|
|
16
|
-
{ chunkSize =
|
|
14
|
+
{ chunkSize = Option.none() }: FromReadableOptions = {}
|
|
17
15
|
): Stream.Stream<never, E, A> =>
|
|
18
16
|
pipe(
|
|
19
17
|
Effect.acquireRelease(Effect.sync(evaluate), (stream) =>
|
|
@@ -49,9 +47,9 @@ export const fromReadable = <E, A>(
|
|
|
49
47
|
|
|
50
48
|
const readChunk = <A>(
|
|
51
49
|
stream: Readable,
|
|
52
|
-
size: Size
|
|
50
|
+
size: Option.Option<Size>
|
|
53
51
|
): Effect.Effect<never, Option.Option<never>, A> =>
|
|
54
52
|
pipe(
|
|
55
|
-
Effect.sync(() => stream.read(Number(size)) as A | null),
|
|
56
|
-
Effect.flatMap((
|
|
53
|
+
Effect.sync(() => (size._tag === "Some" ? stream.read(Number(size)) : stream.read()) as A | null),
|
|
54
|
+
Effect.flatMap((_) => (_ ? Effect.succeed(_) : Effect.fail(Option.none())))
|
|
57
55
|
)
|