@naturalcycles/nodejs-lib 12.56.0 → 12.59.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/dist/index.d.ts +19 -18
- package/dist/index.js +19 -92
- package/dist/log/log.util.d.ts +4 -0
- package/dist/log/log.util.js +11 -0
- package/dist/stream/ndjson/ndjsonMap.d.ts +2 -2
- package/dist/stream/ndjson/ndjsonMap.js +4 -3
- package/dist/stream/ndjson/ndjsonStreamForEach.d.ts +2 -2
- package/dist/stream/pipeline/pipeline.d.ts +25 -3
- package/dist/stream/pipeline/pipeline.js +76 -9
- package/dist/stream/readable/readableCreate.d.ts +8 -0
- package/dist/stream/readable/readableCreate.js +9 -1
- package/dist/stream/readable/readableForEach.d.ts +2 -2
- package/dist/stream/readable/readableFromArray.d.ts +2 -2
- package/dist/stream/readable/readableFromArray.js +17 -13
- package/dist/stream/readable/readableMap.d.ts +2 -2
- package/dist/stream/readable/readableMap.js +22 -17
- package/dist/stream/stream.util.d.ts +4 -0
- package/dist/stream/stream.util.js +24 -0
- package/dist/stream/transform/transformLimit.d.ts +36 -1
- package/dist/stream/transform/transformLimit.js +33 -15
- package/dist/stream/transform/transformLogProgress.d.ts +2 -1
- package/dist/stream/transform/transformLogProgress.js +4 -4
- package/dist/stream/transform/transformMap.d.ts +2 -6
- package/dist/stream/transform/transformMap.js +51 -53
- package/dist/stream/transform/transformMapSimple.d.ts +2 -1
- package/dist/stream/transform/transformMapSimple.js +2 -2
- package/dist/stream/transform/transformMapSync.d.ts +2 -1
- package/dist/stream/transform/transformMapSync.js +3 -3
- package/dist/stream/transform/transformTap.d.ts +5 -2
- package/dist/stream/transform/transformTap.js +2 -1
- package/dist/stream/transform/worker/workerClassProxy.js +1 -0
- package/dist/stream/writable/writableFork.d.ts +2 -0
- package/dist/stream/writable/writableFork.js +2 -0
- package/dist/stream/writable/writableLimit.d.ts +9 -0
- package/dist/stream/writable/writableLimit.js +29 -0
- package/dist/stream/writable/writableVoid.d.ts +8 -1
- package/dist/stream/writable/writableVoid.js +5 -1
- package/package.json +1 -1
- package/src/index.ts +17 -156
- package/src/log/log.util.ts +9 -0
- package/src/stream/ndjson/ndjsonMap.ts +7 -5
- package/src/stream/ndjson/ndjsonStreamForEach.ts +2 -2
- package/src/stream/pipeline/pipeline.ts +102 -9
- package/src/stream/readable/readableCreate.ts +9 -1
- package/src/stream/readable/readableForEach.ts +2 -2
- package/src/stream/readable/readableFromArray.ts +18 -21
- package/src/stream/readable/readableMap.ts +24 -21
- package/src/stream/stream.util.ts +29 -0
- package/src/stream/transform/transformLimit.ts +71 -19
- package/src/stream/transform/transformLogProgress.ts +7 -4
- package/src/stream/transform/transformMap.ts +74 -82
- package/src/stream/transform/transformMapSimple.ts +5 -3
- package/src/stream/transform/transformMapSync.ts +6 -3
- package/src/stream/transform/transformTap.ts +8 -3
- package/src/stream/transform/worker/workerClassProxy.js +1 -0
- package/src/stream/writable/writableFork.ts +2 -0
- package/src/stream/writable/writableLimit.ts +28 -0
- package/src/stream/writable/writableVoid.ts +13 -1
- package/dist/stream/transform/legacy/transformMap.d.ts +0 -17
- package/dist/stream/transform/legacy/transformMap.js +0 -94
- package/src/stream/transform/legacy/transformMap.ts +0 -133
package/dist/index.d.ts
CHANGED
|
@@ -4,14 +4,15 @@ import type { AfterResponseHook, BeforeErrorHook, BeforeRequestHook, Got } from
|
|
|
4
4
|
import { AnySchema, ValidationErrorItem } from 'joi';
|
|
5
5
|
import { _chunkBuffer } from './buffer/buffer.util';
|
|
6
6
|
import { tableDiff, TableDiffOptions } from './diff/tableDiff';
|
|
7
|
-
|
|
7
|
+
export * from './got/getGot';
|
|
8
8
|
import { GetGotOptions } from './got/got.model';
|
|
9
|
-
|
|
9
|
+
export * from './infra/process.util';
|
|
10
10
|
import { Debug, IDebug, IDebugger } from './log/debug';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
export * from './security/hash.util';
|
|
12
|
+
export * from './security/id.util';
|
|
13
|
+
export * from './security/secret.util';
|
|
14
14
|
import { hasColors } from './colors/colors';
|
|
15
|
+
export * from './log/log.util';
|
|
15
16
|
import { slackDefaultMessagePrefixHook, SlackService } from './slack/slack.service';
|
|
16
17
|
import { SlackApiBody, SlackMessage, SlackMessagePrefixHook, SlackMessageProps, SlackServiceCfg } from './slack/slack.service.model';
|
|
17
18
|
import { NDJsonStats } from './stream/ndjson/ndjson.model';
|
|
@@ -24,7 +25,7 @@ import { pipelineToNDJsonFile, PipelineToNDJsonFileOptions } from './stream/ndjs
|
|
|
24
25
|
import { streamToNDJsonFile } from './stream/ndjson/streamToNDJsonFile';
|
|
25
26
|
import { bufferReviver, transformJsonParse, TransformJsonParseOptions } from './stream/ndjson/transformJsonParse';
|
|
26
27
|
import { transformToNDJson, TransformToNDJsonOptions } from './stream/ndjson/transformToNDJson';
|
|
27
|
-
|
|
28
|
+
export * from './stream/pipeline/pipeline';
|
|
28
29
|
import { readableCreate, readableFrom } from './stream/readable/readableCreate';
|
|
29
30
|
import { readableForEach, readableForEachSync } from './stream/readable/readableForEach';
|
|
30
31
|
import { readableFromArray } from './stream/readable/readableFromArray';
|
|
@@ -32,10 +33,10 @@ import { readableMap } from './stream/readable/readableMap';
|
|
|
32
33
|
import { readableMapToArray } from './stream/readable/readableMapToArray';
|
|
33
34
|
import { readableToArray } from './stream/readable/readableToArray';
|
|
34
35
|
import { ReadableTyped, TransformOptions, TransformTyped, WritableTyped } from './stream/stream.model';
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
export * from './stream/transform/transformBuffer';
|
|
37
|
+
export * from './stream/transform/transformFilter';
|
|
38
|
+
export * from './stream/transform/transformLimit';
|
|
39
|
+
export * from './stream/transform/transformLogProgress';
|
|
39
40
|
import { transformMap, TransformMapOptions } from './stream/transform/transformMap';
|
|
40
41
|
import { transformMapSimple } from './stream/transform/transformMapSimple';
|
|
41
42
|
import { transformNoOp } from './stream/transform/transformNoOp';
|
|
@@ -48,23 +49,23 @@ import { BaseWorkerClass, WorkerClassInterface } from './stream/transform/worker
|
|
|
48
49
|
import { transformMultiThreaded, TransformMultiThreadedOptions } from './stream/transform/worker/transformMultiThreaded';
|
|
49
50
|
import { WorkerInput, WorkerOutput } from './stream/transform/worker/transformMultiThreaded.model';
|
|
50
51
|
export * from './stream/writable/writableForEach';
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
export * from './stream/writable/writableFork';
|
|
53
|
+
export * from './stream/writable/writablePushToArray';
|
|
54
|
+
export * from './stream/writable/writableVoid';
|
|
54
55
|
import { inspectAny, InspectAnyOptions, inspectAnyStringifyFn } from './string/inspectAny';
|
|
55
|
-
|
|
56
|
+
export * from './util/env.util';
|
|
56
57
|
import { LRUMemoCache } from './util/lruMemoCache';
|
|
57
|
-
|
|
58
|
+
export * from './util/zip.util';
|
|
58
59
|
import { readAjvSchemas, readJsonSchemas } from './validation/ajv/ajv.util';
|
|
59
60
|
import { AjvSchema, AjvSchemaCfg, AjvValidationOptions } from './validation/ajv/ajvSchema';
|
|
60
61
|
import { AjvValidationError, AjvValidationErrorData } from './validation/ajv/ajvValidationError';
|
|
61
62
|
import { getAjv } from './validation/ajv/getAjv';
|
|
62
63
|
import { ExtendedJoi, Joi } from './validation/joi/joi.extensions';
|
|
63
64
|
import { AnySchemaTyped, ArraySchemaTyped, BooleanSchemaTyped, NumberSchemaTyped, ObjectSchemaTyped, SchemaTyped, StringSchemaTyped } from './validation/joi/joi.model';
|
|
64
|
-
|
|
65
|
+
export * from './validation/joi/joi.shared.schemas';
|
|
65
66
|
import { JoiValidationError, JoiValidationErrorData } from './validation/joi/joi.validation.error';
|
|
66
67
|
import { convert, getValidationResult, isValid, JoiValidationResult, undefinedIfInvalid, validate } from './validation/joi/joi.validation.util';
|
|
67
68
|
import { sanitizeHTML, SanitizeHTMLOptions } from './validation/sanitize.util';
|
|
68
69
|
import { runScript, RunScriptOptions } from './script';
|
|
69
|
-
export type { RunScriptOptions, JoiValidationErrorData, JoiValidationResult, ValidationErrorItem, ExtendedJoi, SchemaTyped, AnySchema, AnySchemaTyped, ArraySchemaTyped, BooleanSchemaTyped, NumberSchemaTyped, ObjectSchemaTyped, StringSchemaTyped, IDebug, IDebugger, SlackServiceCfg, SlackMessage, SlackMessageProps, SlackApiBody, SlackMessagePrefixHook, ReadableTyped, WritableTyped, TransformTyped, PipelineFromNDJsonFileOptions, PipelineToNDJsonFileOptions, TransformJsonParseOptions, TransformToNDJsonOptions, TransformMapOptions, TransformMapSyncOptions, NDJSONStreamForEachOptions, TransformOptions,
|
|
70
|
-
export { JoiValidationError, validate, getValidationResult, isValid, undefinedIfInvalid, convert, Joi,
|
|
70
|
+
export type { RunScriptOptions, JoiValidationErrorData, JoiValidationResult, ValidationErrorItem, ExtendedJoi, SchemaTyped, AnySchema, AnySchemaTyped, ArraySchemaTyped, BooleanSchemaTyped, NumberSchemaTyped, ObjectSchemaTyped, StringSchemaTyped, IDebug, IDebugger, SlackServiceCfg, SlackMessage, SlackMessageProps, SlackApiBody, SlackMessagePrefixHook, ReadableTyped, WritableTyped, TransformTyped, PipelineFromNDJsonFileOptions, PipelineToNDJsonFileOptions, TransformJsonParseOptions, TransformToNDJsonOptions, TransformMapOptions, TransformMapSyncOptions, NDJSONStreamForEachOptions, TransformOptions, TransformMultiThreadedOptions, WorkerClassInterface, WorkerInput, WorkerOutput, TableDiffOptions, InspectAnyOptions, Got, GetGotOptions, AfterResponseHook, BeforeErrorHook, BeforeRequestHook, AjvValidationOptions, AjvSchemaCfg, AjvValidationErrorData, SanitizeHTMLOptions, };
|
|
71
|
+
export { JoiValidationError, validate, getValidationResult, isValid, undefinedIfInvalid, convert, Joi, LRUMemoCache, Debug, SlackService, slackDefaultMessagePrefixHook, readableCreate, readableFrom, readableFromArray, readableToArray, readableForEach, readableForEachSync, readableMap, readableMapToArray, ndjsonMap, ndJsonFileRead, ndJsonFileWrite, ndjsonStreamForEach, pipelineFromNDJsonFile, pipelineToNDJsonFile, NDJsonStats, streamToNDJsonFile, transformJsonParse, bufferReviver, transformToNDJson, transformMap, transformMapSync, transformMapSimple, transformNoOp, transformSplit, transformToString, transformToArray, transformTap, transformMultiThreaded, BaseWorkerClass, tableDiff, inspectAny, inspectAnyStringifyFn, HTTPError, TimeoutError, _chunkBuffer, Ajv, getAjv, AjvSchema, AjvValidationError, readJsonSchemas, readAjvSchemas, hasColors, sanitizeHTML, runScript, };
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.runScript = exports.sanitizeHTML = exports.hasColors = exports.readAjvSchemas = exports.readJsonSchemas = exports.AjvValidationError = exports.AjvSchema = exports.getAjv = exports.Ajv = exports._chunkBuffer = exports.TimeoutError = exports.HTTPError = exports.getGot = exports.inspectAnyStringifyFn = exports.inspectAny = exports.tableDiff = exports.BaseWorkerClass = exports.transformMultiThreaded = exports.writableFork = exports.writableVoid = exports.transformLimit = exports.transformLogProgress = exports.transformTap = exports.transformToArray = exports.transformToString = exports.transformSplit = exports.writablePushToArray = exports.transformNoOp = void 0;
|
|
3
|
+
exports.AjvValidationError = exports.AjvSchema = exports.getAjv = exports.Ajv = exports._chunkBuffer = exports.TimeoutError = exports.HTTPError = exports.inspectAnyStringifyFn = exports.inspectAny = exports.tableDiff = exports.BaseWorkerClass = exports.transformMultiThreaded = exports.transformTap = exports.transformToArray = exports.transformToString = exports.transformSplit = exports.transformNoOp = exports.transformMapSimple = exports.transformMapSync = exports.transformMap = exports.transformToNDJson = exports.bufferReviver = exports.transformJsonParse = exports.streamToNDJsonFile = exports.NDJsonStats = exports.pipelineToNDJsonFile = exports.pipelineFromNDJsonFile = exports.ndjsonStreamForEach = exports.ndJsonFileWrite = exports.ndJsonFileRead = exports.ndjsonMap = exports.readableMapToArray = exports.readableMap = exports.readableForEachSync = exports.readableForEach = exports.readableToArray = exports.readableFromArray = exports.readableFrom = exports.readableCreate = exports.slackDefaultMessagePrefixHook = exports.SlackService = exports.Debug = exports.LRUMemoCache = exports.Joi = exports.convert = exports.undefinedIfInvalid = exports.isValid = exports.getValidationResult = exports.validate = exports.JoiValidationError = void 0;
|
|
4
|
+
exports.runScript = exports.sanitizeHTML = exports.hasColors = exports.readAjvSchemas = exports.readJsonSchemas = void 0;
|
|
6
5
|
const tslib_1 = require("tslib");
|
|
7
6
|
const ajv_1 = require("ajv");
|
|
8
7
|
exports.Ajv = ajv_1.default;
|
|
@@ -13,43 +12,16 @@ const buffer_util_1 = require("./buffer/buffer.util");
|
|
|
13
12
|
Object.defineProperty(exports, "_chunkBuffer", { enumerable: true, get: function () { return buffer_util_1._chunkBuffer; } });
|
|
14
13
|
const tableDiff_1 = require("./diff/tableDiff");
|
|
15
14
|
Object.defineProperty(exports, "tableDiff", { enumerable: true, get: function () { return tableDiff_1.tableDiff; } });
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const process_util_1 = require("./infra/process.util");
|
|
19
|
-
Object.defineProperty(exports, "memoryUsage", { enumerable: true, get: function () { return process_util_1.memoryUsage; } });
|
|
20
|
-
Object.defineProperty(exports, "memoryUsageFull", { enumerable: true, get: function () { return process_util_1.memoryUsageFull; } });
|
|
21
|
-
Object.defineProperty(exports, "processSharedUtil", { enumerable: true, get: function () { return process_util_1.processSharedUtil; } });
|
|
15
|
+
(0, tslib_1.__exportStar)(require("./got/getGot"), exports);
|
|
16
|
+
(0, tslib_1.__exportStar)(require("./infra/process.util"), exports);
|
|
22
17
|
const debug_1 = require("./log/debug");
|
|
23
18
|
Object.defineProperty(exports, "Debug", { enumerable: true, get: function () { return debug_1.Debug; } });
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
Object.defineProperty(exports, "bufferToBase64", { enumerable: true, get: function () { return hash_util_1.bufferToBase64; } });
|
|
28
|
-
Object.defineProperty(exports, "hash", { enumerable: true, get: function () { return hash_util_1.hash; } });
|
|
29
|
-
Object.defineProperty(exports, "md5", { enumerable: true, get: function () { return hash_util_1.md5; } });
|
|
30
|
-
Object.defineProperty(exports, "hashAsBuffer", { enumerable: true, get: function () { return hash_util_1.hashAsBuffer; } });
|
|
31
|
-
Object.defineProperty(exports, "md5AsBuffer", { enumerable: true, get: function () { return hash_util_1.md5AsBuffer; } });
|
|
32
|
-
Object.defineProperty(exports, "stringToBase64", { enumerable: true, get: function () { return hash_util_1.stringToBase64; } });
|
|
33
|
-
const id_util_1 = require("./security/id.util");
|
|
34
|
-
Object.defineProperty(exports, "ALPHABET_ALPHANUMERIC", { enumerable: true, get: function () { return id_util_1.ALPHABET_ALPHANUMERIC; } });
|
|
35
|
-
Object.defineProperty(exports, "ALPHABET_ALPHANUMERIC_LOWERCASE", { enumerable: true, get: function () { return id_util_1.ALPHABET_ALPHANUMERIC_LOWERCASE; } });
|
|
36
|
-
Object.defineProperty(exports, "ALPHABET_ALPHANUMERIC_UPPERCASE", { enumerable: true, get: function () { return id_util_1.ALPHABET_ALPHANUMERIC_UPPERCASE; } });
|
|
37
|
-
Object.defineProperty(exports, "ALPHABET_LOWERCASE", { enumerable: true, get: function () { return id_util_1.ALPHABET_LOWERCASE; } });
|
|
38
|
-
Object.defineProperty(exports, "ALPHABET_NUMBER", { enumerable: true, get: function () { return id_util_1.ALPHABET_NUMBER; } });
|
|
39
|
-
Object.defineProperty(exports, "ALPHABET_UPPERCASE", { enumerable: true, get: function () { return id_util_1.ALPHABET_UPPERCASE; } });
|
|
40
|
-
Object.defineProperty(exports, "stringId", { enumerable: true, get: function () { return id_util_1.stringId; } });
|
|
41
|
-
Object.defineProperty(exports, "stringIdAsync", { enumerable: true, get: function () { return id_util_1.stringIdAsync; } });
|
|
42
|
-
Object.defineProperty(exports, "stringIdUnsafe", { enumerable: true, get: function () { return id_util_1.stringIdUnsafe; } });
|
|
43
|
-
const secret_util_1 = require("./security/secret.util");
|
|
44
|
-
Object.defineProperty(exports, "getSecretMap", { enumerable: true, get: function () { return secret_util_1.getSecretMap; } });
|
|
45
|
-
Object.defineProperty(exports, "loadSecretsFromEnv", { enumerable: true, get: function () { return secret_util_1.loadSecretsFromEnv; } });
|
|
46
|
-
Object.defineProperty(exports, "loadSecretsFromJsonFile", { enumerable: true, get: function () { return secret_util_1.loadSecretsFromJsonFile; } });
|
|
47
|
-
Object.defineProperty(exports, "removeSecretsFromEnv", { enumerable: true, get: function () { return secret_util_1.removeSecretsFromEnv; } });
|
|
48
|
-
Object.defineProperty(exports, "secret", { enumerable: true, get: function () { return secret_util_1.secret; } });
|
|
49
|
-
Object.defineProperty(exports, "secretOptional", { enumerable: true, get: function () { return secret_util_1.secretOptional; } });
|
|
50
|
-
Object.defineProperty(exports, "setSecretMap", { enumerable: true, get: function () { return secret_util_1.setSecretMap; } });
|
|
19
|
+
(0, tslib_1.__exportStar)(require("./security/hash.util"), exports);
|
|
20
|
+
(0, tslib_1.__exportStar)(require("./security/id.util"), exports);
|
|
21
|
+
(0, tslib_1.__exportStar)(require("./security/secret.util"), exports);
|
|
51
22
|
const colors_1 = require("./colors/colors");
|
|
52
23
|
Object.defineProperty(exports, "hasColors", { enumerable: true, get: function () { return colors_1.hasColors; } });
|
|
24
|
+
(0, tslib_1.__exportStar)(require("./log/log.util"), exports);
|
|
53
25
|
const slack_service_1 = require("./slack/slack.service");
|
|
54
26
|
Object.defineProperty(exports, "slackDefaultMessagePrefixHook", { enumerable: true, get: function () { return slack_service_1.slackDefaultMessagePrefixHook; } });
|
|
55
27
|
Object.defineProperty(exports, "SlackService", { enumerable: true, get: function () { return slack_service_1.SlackService; } });
|
|
@@ -74,8 +46,7 @@ Object.defineProperty(exports, "bufferReviver", { enumerable: true, get: functio
|
|
|
74
46
|
Object.defineProperty(exports, "transformJsonParse", { enumerable: true, get: function () { return transformJsonParse_1.transformJsonParse; } });
|
|
75
47
|
const transformToNDJson_1 = require("./stream/ndjson/transformToNDJson");
|
|
76
48
|
Object.defineProperty(exports, "transformToNDJson", { enumerable: true, get: function () { return transformToNDJson_1.transformToNDJson; } });
|
|
77
|
-
|
|
78
|
-
Object.defineProperty(exports, "_pipeline", { enumerable: true, get: function () { return pipeline_1._pipeline; } });
|
|
49
|
+
(0, tslib_1.__exportStar)(require("./stream/pipeline/pipeline"), exports);
|
|
79
50
|
const readableCreate_1 = require("./stream/readable/readableCreate");
|
|
80
51
|
Object.defineProperty(exports, "readableCreate", { enumerable: true, get: function () { return readableCreate_1.readableCreate; } });
|
|
81
52
|
Object.defineProperty(exports, "readableFrom", { enumerable: true, get: function () { return readableCreate_1.readableFrom; } });
|
|
@@ -90,15 +61,10 @@ const readableMapToArray_1 = require("./stream/readable/readableMapToArray");
|
|
|
90
61
|
Object.defineProperty(exports, "readableMapToArray", { enumerable: true, get: function () { return readableMapToArray_1.readableMapToArray; } });
|
|
91
62
|
const readableToArray_1 = require("./stream/readable/readableToArray");
|
|
92
63
|
Object.defineProperty(exports, "readableToArray", { enumerable: true, get: function () { return readableToArray_1.readableToArray; } });
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
Object.defineProperty(exports, "transformFilterSync", { enumerable: true, get: function () { return transformFilter_1.transformFilterSync; } });
|
|
98
|
-
const transformLimit_1 = require("./stream/transform/transformLimit");
|
|
99
|
-
Object.defineProperty(exports, "transformLimit", { enumerable: true, get: function () { return transformLimit_1.transformLimit; } });
|
|
100
|
-
const transformLogProgress_1 = require("./stream/transform/transformLogProgress");
|
|
101
|
-
Object.defineProperty(exports, "transformLogProgress", { enumerable: true, get: function () { return transformLogProgress_1.transformLogProgress; } });
|
|
64
|
+
(0, tslib_1.__exportStar)(require("./stream/transform/transformBuffer"), exports);
|
|
65
|
+
(0, tslib_1.__exportStar)(require("./stream/transform/transformFilter"), exports);
|
|
66
|
+
(0, tslib_1.__exportStar)(require("./stream/transform/transformLimit"), exports);
|
|
67
|
+
(0, tslib_1.__exportStar)(require("./stream/transform/transformLogProgress"), exports);
|
|
102
68
|
const transformMap_1 = require("./stream/transform/transformMap");
|
|
103
69
|
Object.defineProperty(exports, "transformMap", { enumerable: true, get: function () { return transformMap_1.transformMap; } });
|
|
104
70
|
const transformMapSimple_1 = require("./stream/transform/transformMapSimple");
|
|
@@ -120,29 +86,16 @@ Object.defineProperty(exports, "BaseWorkerClass", { enumerable: true, get: funct
|
|
|
120
86
|
const transformMultiThreaded_1 = require("./stream/transform/worker/transformMultiThreaded");
|
|
121
87
|
Object.defineProperty(exports, "transformMultiThreaded", { enumerable: true, get: function () { return transformMultiThreaded_1.transformMultiThreaded; } });
|
|
122
88
|
(0, tslib_1.__exportStar)(require("./stream/writable/writableForEach"), exports);
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
Object.defineProperty(exports, "writablePushToArray", { enumerable: true, get: function () { return writablePushToArray_1.writablePushToArray; } });
|
|
127
|
-
const writableVoid_1 = require("./stream/writable/writableVoid");
|
|
128
|
-
Object.defineProperty(exports, "writableVoid", { enumerable: true, get: function () { return writableVoid_1.writableVoid; } });
|
|
89
|
+
(0, tslib_1.__exportStar)(require("./stream/writable/writableFork"), exports);
|
|
90
|
+
(0, tslib_1.__exportStar)(require("./stream/writable/writablePushToArray"), exports);
|
|
91
|
+
(0, tslib_1.__exportStar)(require("./stream/writable/writableVoid"), exports);
|
|
129
92
|
const inspectAny_1 = require("./string/inspectAny");
|
|
130
93
|
Object.defineProperty(exports, "inspectAny", { enumerable: true, get: function () { return inspectAny_1.inspectAny; } });
|
|
131
94
|
Object.defineProperty(exports, "inspectAnyStringifyFn", { enumerable: true, get: function () { return inspectAny_1.inspectAnyStringifyFn; } });
|
|
132
|
-
|
|
133
|
-
Object.defineProperty(exports, "requireEnvKeys", { enumerable: true, get: function () { return env_util_1.requireEnvKeys; } });
|
|
134
|
-
Object.defineProperty(exports, "requireFileToExist", { enumerable: true, get: function () { return env_util_1.requireFileToExist; } });
|
|
95
|
+
(0, tslib_1.__exportStar)(require("./util/env.util"), exports);
|
|
135
96
|
const lruMemoCache_1 = require("./util/lruMemoCache");
|
|
136
97
|
Object.defineProperty(exports, "LRUMemoCache", { enumerable: true, get: function () { return lruMemoCache_1.LRUMemoCache; } });
|
|
137
|
-
|
|
138
|
-
Object.defineProperty(exports, "gunzipBuffer", { enumerable: true, get: function () { return zip_util_1.gunzipBuffer; } });
|
|
139
|
-
Object.defineProperty(exports, "gunzipToString", { enumerable: true, get: function () { return zip_util_1.gunzipToString; } });
|
|
140
|
-
Object.defineProperty(exports, "gzipBuffer", { enumerable: true, get: function () { return zip_util_1.gzipBuffer; } });
|
|
141
|
-
Object.defineProperty(exports, "gzipString", { enumerable: true, get: function () { return zip_util_1.gzipString; } });
|
|
142
|
-
Object.defineProperty(exports, "unzipBuffer", { enumerable: true, get: function () { return zip_util_1.unzipBuffer; } });
|
|
143
|
-
Object.defineProperty(exports, "unzipToString", { enumerable: true, get: function () { return zip_util_1.unzipToString; } });
|
|
144
|
-
Object.defineProperty(exports, "zipBuffer", { enumerable: true, get: function () { return zip_util_1.zipBuffer; } });
|
|
145
|
-
Object.defineProperty(exports, "zipString", { enumerable: true, get: function () { return zip_util_1.zipString; } });
|
|
98
|
+
(0, tslib_1.__exportStar)(require("./util/zip.util"), exports);
|
|
146
99
|
const ajv_util_1 = require("./validation/ajv/ajv.util");
|
|
147
100
|
Object.defineProperty(exports, "readAjvSchemas", { enumerable: true, get: function () { return ajv_util_1.readAjvSchemas; } });
|
|
148
101
|
Object.defineProperty(exports, "readJsonSchemas", { enumerable: true, get: function () { return ajv_util_1.readJsonSchemas; } });
|
|
@@ -154,33 +107,7 @@ const getAjv_1 = require("./validation/ajv/getAjv");
|
|
|
154
107
|
Object.defineProperty(exports, "getAjv", { enumerable: true, get: function () { return getAjv_1.getAjv; } });
|
|
155
108
|
const joi_extensions_1 = require("./validation/joi/joi.extensions");
|
|
156
109
|
Object.defineProperty(exports, "Joi", { enumerable: true, get: function () { return joi_extensions_1.Joi; } });
|
|
157
|
-
|
|
158
|
-
Object.defineProperty(exports, "anyObjectSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.anyObjectSchema; } });
|
|
159
|
-
Object.defineProperty(exports, "anySchema", { enumerable: true, get: function () { return joi_shared_schemas_1.anySchema; } });
|
|
160
|
-
Object.defineProperty(exports, "arraySchema", { enumerable: true, get: function () { return joi_shared_schemas_1.arraySchema; } });
|
|
161
|
-
Object.defineProperty(exports, "oneOfSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.oneOfSchema; } });
|
|
162
|
-
Object.defineProperty(exports, "binarySchema", { enumerable: true, get: function () { return joi_shared_schemas_1.binarySchema; } });
|
|
163
|
-
Object.defineProperty(exports, "booleanDefaultToFalseSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.booleanDefaultToFalseSchema; } });
|
|
164
|
-
Object.defineProperty(exports, "booleanSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.booleanSchema; } });
|
|
165
|
-
Object.defineProperty(exports, "dateStringSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.dateStringSchema; } });
|
|
166
|
-
Object.defineProperty(exports, "emailSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.emailSchema; } });
|
|
167
|
-
Object.defineProperty(exports, "baseDBEntitySchema", { enumerable: true, get: function () { return joi_shared_schemas_1.baseDBEntitySchema; } });
|
|
168
|
-
Object.defineProperty(exports, "savedDBEntitySchema", { enumerable: true, get: function () { return joi_shared_schemas_1.savedDBEntitySchema; } });
|
|
169
|
-
Object.defineProperty(exports, "idSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.idSchema; } });
|
|
170
|
-
Object.defineProperty(exports, "integerSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.integerSchema; } });
|
|
171
|
-
Object.defineProperty(exports, "ipAddressSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.ipAddressSchema; } });
|
|
172
|
-
Object.defineProperty(exports, "numberSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.numberSchema; } });
|
|
173
|
-
Object.defineProperty(exports, "objectSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.objectSchema; } });
|
|
174
|
-
Object.defineProperty(exports, "percentageSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.percentageSchema; } });
|
|
175
|
-
Object.defineProperty(exports, "semVerSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.semVerSchema; } });
|
|
176
|
-
Object.defineProperty(exports, "SEM_VER_PATTERN", { enumerable: true, get: function () { return joi_shared_schemas_1.SEM_VER_PATTERN; } });
|
|
177
|
-
Object.defineProperty(exports, "slugSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.slugSchema; } });
|
|
178
|
-
Object.defineProperty(exports, "stringSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.stringSchema; } });
|
|
179
|
-
Object.defineProperty(exports, "unixTimestampSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.unixTimestampSchema; } });
|
|
180
|
-
Object.defineProperty(exports, "urlSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.urlSchema; } });
|
|
181
|
-
Object.defineProperty(exports, "userAgentSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.userAgentSchema; } });
|
|
182
|
-
Object.defineProperty(exports, "utcOffsetSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.utcOffsetSchema; } });
|
|
183
|
-
Object.defineProperty(exports, "verSchema", { enumerable: true, get: function () { return joi_shared_schemas_1.verSchema; } });
|
|
110
|
+
(0, tslib_1.__exportStar)(require("./validation/joi/joi.shared.schemas"), exports);
|
|
184
111
|
const joi_validation_error_1 = require("./validation/joi/joi.validation.error");
|
|
185
112
|
Object.defineProperty(exports, "JoiValidationError", { enumerable: true, get: function () { return joi_validation_error_1.JoiValidationError; } });
|
|
186
113
|
const joi_validation_util_1 = require("./validation/joi/joi.validation.util");
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stdoutLogger = void 0;
|
|
4
|
+
const js_lib_1 = require("@naturalcycles/js-lib");
|
|
5
|
+
const index_1 = require("../index");
|
|
6
|
+
/**
|
|
7
|
+
* CommonLogger that logs to process.stdout directly (bypassing console.log).
|
|
8
|
+
*/
|
|
9
|
+
exports.stdoutLogger = (0, js_lib_1.commonLoggerCreate)((_level, args) => {
|
|
10
|
+
process.stdout.write(args.map(a => (0, index_1.inspectAny)(a)).join(' ') + '\n');
|
|
11
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbortableAsyncMapper } from '@naturalcycles/js-lib';
|
|
2
2
|
import { TransformMapOptions, TransformLogProgressOptions } from '../..';
|
|
3
3
|
export interface NDJSONMapOptions<IN = any, OUT = IN> extends TransformMapOptions<IN, OUT>, TransformLogProgressOptions<IN> {
|
|
4
4
|
inputFilePath: string;
|
|
@@ -20,4 +20,4 @@ export interface NDJSONMapOptions<IN = any, OUT = IN> extends TransformMapOption
|
|
|
20
20
|
* Unzips input file automatically, if it ends with `.gz`.
|
|
21
21
|
* Zips output file automatically, if it ends with `.gz`.
|
|
22
22
|
*/
|
|
23
|
-
export declare function ndjsonMap<IN = any, OUT = any>(mapper:
|
|
23
|
+
export declare function ndjsonMap<IN = any, OUT = any>(mapper: AbortableAsyncMapper<IN, OUT>, opt: NDJSONMapOptions<IN, OUT>): Promise<void>;
|
|
@@ -18,19 +18,20 @@ async function ndjsonMap(mapper, opt) {
|
|
|
18
18
|
});
|
|
19
19
|
const transformUnzip = inputFilePath.endsWith('.gz') ? [(0, zlib_1.createUnzip)()] : [];
|
|
20
20
|
const transformZip = outputFilePath.endsWith('.gz') ? [(0, zlib_1.createGzip)()] : [];
|
|
21
|
+
const readable = (0, fs_1.createReadStream)(inputFilePath);
|
|
21
22
|
await (0, __1._pipeline)([
|
|
22
|
-
|
|
23
|
+
readable,
|
|
23
24
|
...transformUnzip,
|
|
24
25
|
(0, __1.transformSplit)(),
|
|
25
26
|
(0, __1.transformJsonParse)(),
|
|
26
|
-
(0, __1.transformLimit)(limitInput),
|
|
27
|
+
(0, __1.transformLimit)({ limit: limitInput, sourceReadable: readable }),
|
|
27
28
|
(0, __1.transformLogProgress)({ metric: 'read', ...opt }),
|
|
28
29
|
(0, __1.transformMap)(mapper, {
|
|
29
30
|
flattenArrayOutput: true,
|
|
30
31
|
errorMode: js_lib_1.ErrorMode.SUPPRESS,
|
|
31
32
|
...opt,
|
|
32
33
|
}),
|
|
33
|
-
(0, __1.transformLimit)(limitOutput),
|
|
34
|
+
(0, __1.transformLimit)({ limit: limitOutput, sourceReadable: readable }),
|
|
34
35
|
(0, __1.transformLogProgress)({ metric: 'saved', logEvery: logEveryOutput }),
|
|
35
36
|
(0, __1.transformToNDJson)(),
|
|
36
37
|
...transformZip,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbortableAsyncMapper } from '@naturalcycles/js-lib';
|
|
2
2
|
import { TransformLogProgressOptions, TransformMapOptions } from '../..';
|
|
3
3
|
export interface NDJSONStreamForEachOptions<IN = any> extends TransformMapOptions<IN, void>, TransformLogProgressOptions<IN> {
|
|
4
4
|
inputFilePath: string;
|
|
@@ -6,4 +6,4 @@ export interface NDJSONStreamForEachOptions<IN = any> extends TransformMapOption
|
|
|
6
6
|
/**
|
|
7
7
|
* Convenience function to `forEach` through an ndjson file.
|
|
8
8
|
*/
|
|
9
|
-
export declare function ndjsonStreamForEach<T>(mapper:
|
|
9
|
+
export declare function ndjsonStreamForEach<T>(mapper: AbortableAsyncMapper<T, void>, opt: NDJSONStreamForEachOptions<T>): Promise<void>;
|
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import {
|
|
2
|
+
import { Readable, Transform } from 'stream';
|
|
3
|
+
import { DeferredPromise } from '@naturalcycles/js-lib';
|
|
4
|
+
declare type AnyStream = NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream;
|
|
5
|
+
export interface PipelineOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Set to true to allow ERR_STREAM_PREMATURE_CLOSE.
|
|
8
|
+
* Required to support graceful close when using transformLimit
|
|
9
|
+
*/
|
|
10
|
+
allowClose?: boolean;
|
|
11
|
+
}
|
|
3
12
|
/**
|
|
4
|
-
* Promisified stream.pipeline
|
|
13
|
+
* Promisified `stream.pipeline`.
|
|
14
|
+
*
|
|
15
|
+
* Supports opt.allowClose, which allows transformLimit to work (to actually stop source Readable)
|
|
16
|
+
* without throwing an error (ERR_STREAM_PREMATURE_CLOSE).
|
|
5
17
|
*/
|
|
6
|
-
export declare
|
|
18
|
+
export declare function _pipeline(streams: AnyStream[], opt?: PipelineOptions): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Convenience function to make _pipeline collect all items at the end of the stream (should be Transform, not Writeable!)
|
|
21
|
+
* and return.
|
|
22
|
+
*/
|
|
23
|
+
export declare function _pipelineToArray<T>(streams: AnyStream[], opt?: PipelineOptions): Promise<T[]>;
|
|
24
|
+
export declare class AbortableTransform extends Transform {
|
|
25
|
+
sourceReadable?: Readable;
|
|
26
|
+
streamDone?: DeferredPromise;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -1,15 +1,82 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports._pipeline = void 0;
|
|
3
|
+
exports.AbortableTransform = exports._pipelineToArray = exports._pipeline = void 0;
|
|
4
4
|
const stream_1 = require("stream");
|
|
5
|
-
const
|
|
5
|
+
const js_lib_1 = require("@naturalcycles/js-lib");
|
|
6
|
+
const index_1 = require("../../index");
|
|
6
7
|
/**
|
|
7
|
-
* Promisified stream.pipeline
|
|
8
|
+
* Promisified `stream.pipeline`.
|
|
9
|
+
*
|
|
10
|
+
* Supports opt.allowClose, which allows transformLimit to work (to actually stop source Readable)
|
|
11
|
+
* without throwing an error (ERR_STREAM_PREMATURE_CLOSE).
|
|
8
12
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
async function _pipeline(streams, opt = {}) {
|
|
14
|
+
const first = streams[0];
|
|
15
|
+
const rest = streams.slice(1);
|
|
16
|
+
if (opt.allowClose) {
|
|
17
|
+
// Do the magic of making the pipeline "abortable"
|
|
18
|
+
//
|
|
19
|
+
// How does it work:
|
|
20
|
+
// It finds `sourceReadable` (basically, it's just first item in the passed array of streams)
|
|
21
|
+
// Finds last "writable" (last item), patches the `_final` method of it to detect when the whole pipeline is "done",
|
|
22
|
+
// sets the `streamDone` DeferredPromise that resolves when the pipeline is done.
|
|
23
|
+
// Scans through all passed items, finds those that are capable of "closing" the stream
|
|
24
|
+
// (currently its `transformLimit` or `transformMap`)
|
|
25
|
+
// Patches them by attaching `sourceReadable` and `streamDone`.
|
|
26
|
+
// These items (transformLimit and transformMap), when they need to "close the stream" - call `pipelineClose`.
|
|
27
|
+
// `pipelineClose` is the result of 2 sleepless nights of googling and experimentation:)
|
|
28
|
+
// It does:
|
|
29
|
+
// 1. Stops the "downstream" by doing `this.push(null)`.
|
|
30
|
+
// 2. Pauses the `sourceReadable` by calling sourceReadable.unpipe()
|
|
31
|
+
// 3. Waits for `streamDone` to ensure that downstream chunks are fully processed (e.g written to disk).
|
|
32
|
+
// 4. Calls `sourceReadable.destroy()`, which emits ERR_STREAM_PREMATURE_CLOSE
|
|
33
|
+
// 5. _pipeline (this function) catches that specific error and suppresses it (because it's expected and
|
|
34
|
+
// inevitable in this flow). Know a better way to close the stream? Tell me!
|
|
35
|
+
const streamDone = (0, js_lib_1.pDefer)();
|
|
36
|
+
const sourceReadable = first;
|
|
37
|
+
const last = (0, js_lib_1._last)(streams);
|
|
38
|
+
const lastFinal = last._final?.bind(last) || ((cb) => cb());
|
|
39
|
+
last._final = cb => {
|
|
40
|
+
lastFinal(() => {
|
|
41
|
+
cb();
|
|
42
|
+
streamDone.resolve();
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
rest.forEach(s => {
|
|
46
|
+
// console.log(s)
|
|
47
|
+
if (s instanceof AbortableTransform || s.constructor.name === 'DestroyableTransform') {
|
|
48
|
+
// console.log(`found ${s.constructor.name}, setting props`)
|
|
49
|
+
;
|
|
50
|
+
s.sourceReadable = sourceReadable;
|
|
51
|
+
s.streamDone = streamDone;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
(0, stream_1.pipeline)(first, ...rest, (err) => {
|
|
57
|
+
if (err) {
|
|
58
|
+
if (opt.allowClose && err?.code === 'ERR_STREAM_PREMATURE_CLOSE') {
|
|
59
|
+
console.log('_pipeline closed (as expected)');
|
|
60
|
+
return resolve();
|
|
61
|
+
}
|
|
62
|
+
// console.log(`_pipeline error`, err)
|
|
63
|
+
return reject(err);
|
|
64
|
+
}
|
|
65
|
+
resolve();
|
|
66
|
+
});
|
|
67
|
+
});
|
|
15
68
|
}
|
|
69
|
+
exports._pipeline = _pipeline;
|
|
70
|
+
/**
|
|
71
|
+
* Convenience function to make _pipeline collect all items at the end of the stream (should be Transform, not Writeable!)
|
|
72
|
+
* and return.
|
|
73
|
+
*/
|
|
74
|
+
async function _pipelineToArray(streams, opt = {}) {
|
|
75
|
+
const a = [];
|
|
76
|
+
await _pipeline([...streams, (0, index_1.writablePushToArray)(a)], opt);
|
|
77
|
+
return a;
|
|
78
|
+
}
|
|
79
|
+
exports._pipelineToArray = _pipelineToArray;
|
|
80
|
+
class AbortableTransform extends stream_1.Transform {
|
|
81
|
+
}
|
|
82
|
+
exports.AbortableTransform = AbortableTransform;
|
|
@@ -6,6 +6,14 @@ import { ReadableTyped } from '../stream.model';
|
|
|
6
6
|
* Push `null` to it to complete (similar to RxJS `.complete()`).
|
|
7
7
|
*
|
|
8
8
|
* Difference from Readable.from() is that this readable is not "finished" yet and allows pushing more to it.
|
|
9
|
+
*
|
|
10
|
+
* Caution!
|
|
11
|
+
* The implementation of this Readable is not fully compliant,
|
|
12
|
+
* e.g the read() method doesn't return anything, so, it will hand the Node process (or cause it to process.exit(0))
|
|
13
|
+
* if read() will be called AFTER everything was pushed and Readable is closed (by pushing `null`).
|
|
14
|
+
* Beware of it when e.g doing unit testing! Jest prefers to hang (not exit-0).
|
|
15
|
+
*
|
|
16
|
+
* @deprecated because of the caution above
|
|
9
17
|
*/
|
|
10
18
|
export declare function readableCreate<T>(items?: Iterable<T>, opt?: ReadableOptions): ReadableTyped<T>;
|
|
11
19
|
/**
|
|
@@ -7,12 +7,20 @@ const stream_1 = require("stream");
|
|
|
7
7
|
* Push `null` to it to complete (similar to RxJS `.complete()`).
|
|
8
8
|
*
|
|
9
9
|
* Difference from Readable.from() is that this readable is not "finished" yet and allows pushing more to it.
|
|
10
|
+
*
|
|
11
|
+
* Caution!
|
|
12
|
+
* The implementation of this Readable is not fully compliant,
|
|
13
|
+
* e.g the read() method doesn't return anything, so, it will hand the Node process (or cause it to process.exit(0))
|
|
14
|
+
* if read() will be called AFTER everything was pushed and Readable is closed (by pushing `null`).
|
|
15
|
+
* Beware of it when e.g doing unit testing! Jest prefers to hang (not exit-0).
|
|
16
|
+
*
|
|
17
|
+
* @deprecated because of the caution above
|
|
10
18
|
*/
|
|
11
19
|
function readableCreate(items = [], opt) {
|
|
12
20
|
const readable = new stream_1.Readable({
|
|
13
21
|
objectMode: true,
|
|
14
22
|
...opt,
|
|
15
|
-
read() { },
|
|
23
|
+
read() { }, // Caution, if this is called and Readable has not finished yet (null wasn't pushed) - it'll hang the process!
|
|
16
24
|
});
|
|
17
25
|
for (const item of items) {
|
|
18
26
|
readable.push(item);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Mapper, AbortableAsyncMapper } from '@naturalcycles/js-lib';
|
|
2
2
|
import { ReadableTyped } from '../../index';
|
|
3
3
|
import { TransformMapOptions } from '../transform/transformMap';
|
|
4
4
|
/**
|
|
@@ -7,7 +7,7 @@ import { TransformMapOptions } from '../transform/transformMap';
|
|
|
7
7
|
*
|
|
8
8
|
* @experimental
|
|
9
9
|
*/
|
|
10
|
-
export declare function readableForEach<T>(readable: ReadableTyped<T>, mapper:
|
|
10
|
+
export declare function readableForEach<T>(readable: ReadableTyped<T>, mapper: AbortableAsyncMapper<T, void>, opt?: TransformMapOptions<T, void>): Promise<void>;
|
|
11
11
|
/**
|
|
12
12
|
* Convenience function to do `.forEach` over a Readable.
|
|
13
13
|
* Typed! (unlike default Readable).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { ReadableOptions } from 'stream';
|
|
3
|
-
import {
|
|
3
|
+
import { AbortableAsyncMapper } from '@naturalcycles/js-lib';
|
|
4
4
|
import { ReadableTyped } from '../stream.model';
|
|
5
5
|
/**
|
|
6
6
|
* Create Readable from Array.
|
|
@@ -8,4 +8,4 @@ import { ReadableTyped } from '../stream.model';
|
|
|
8
8
|
*
|
|
9
9
|
* For simple cases use Readable.from(...) (Node.js 12+)
|
|
10
10
|
*/
|
|
11
|
-
export declare function readableFromArray<IN, OUT>(items: IN[], mapper?:
|
|
11
|
+
export declare function readableFromArray<IN, OUT>(items: IN[], mapper?: AbortableAsyncMapper<IN, OUT>, opt?: ReadableOptions): ReadableTyped<OUT>;
|
|
@@ -10,21 +10,25 @@ const js_lib_1 = require("@naturalcycles/js-lib");
|
|
|
10
10
|
* For simple cases use Readable.from(...) (Node.js 12+)
|
|
11
11
|
*/
|
|
12
12
|
function readableFromArray(items, mapper = js_lib_1._passthroughMapper, opt) {
|
|
13
|
-
|
|
13
|
+
let i = -1;
|
|
14
|
+
return new stream_1.Readable({
|
|
14
15
|
objectMode: true,
|
|
15
16
|
...opt,
|
|
16
|
-
read() {
|
|
17
|
+
async read() {
|
|
18
|
+
i++;
|
|
19
|
+
if (i < items.length) {
|
|
20
|
+
try {
|
|
21
|
+
this.push(await mapper(items[i], i));
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
console.error(err);
|
|
25
|
+
this.destroy(err);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this.push(null); // end
|
|
30
|
+
}
|
|
31
|
+
},
|
|
17
32
|
});
|
|
18
|
-
void (0, js_lib_1.pMap)(items, async (item, index) => {
|
|
19
|
-
readable.push(await mapper(item, index));
|
|
20
|
-
}, { concurrency: 1 })
|
|
21
|
-
.then(() => {
|
|
22
|
-
readable.push(null); // done
|
|
23
|
-
})
|
|
24
|
-
.catch(err => {
|
|
25
|
-
console.error(err);
|
|
26
|
-
readable.push(err);
|
|
27
|
-
});
|
|
28
|
-
return readable;
|
|
29
33
|
}
|
|
30
34
|
exports.readableFromArray = readableFromArray;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbortableAsyncMapper } from '@naturalcycles/js-lib';
|
|
2
2
|
import { ReadableTyped } from '../stream.model';
|
|
3
|
-
export declare function readableMap<IN, OUT>(readable: ReadableTyped<IN>, mapper:
|
|
3
|
+
export declare function readableMap<IN, OUT>(readable: ReadableTyped<IN>, mapper: AbortableAsyncMapper<IN, OUT>): ReadableTyped<OUT>;
|