UNPKG

1.45 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.pipelineFromNDJsonFile = void 0;
4const js_lib_1 = require("@naturalcycles/js-lib");
5const fs = require("fs-extra");
6const zlib_1 = require("zlib");
7const __1 = require("../..");
8const __2 = require("../..");
9const colors_1 = require("../../colors");
10const ndjson_model_1 = require("./ndjson.model");
11const transformJsonParse_1 = require("./transformJsonParse");
12/**
13 * Convenience pipeline that starts from reading NDJSON file.
14 */
15async function pipelineFromNDJsonFile(streams, opt) {
16 const { filePath, gzip, separator } = opt;
17 const started = Date.now();
18 let rows = 0;
19 const { size: sizeBytes } = fs.statSync(filePath);
20 console.log(`<< ${(0, colors_1.grey)(filePath)} ${(0, colors_1.dimWhite)((0, js_lib_1._hb)(sizeBytes))} started...`);
21 await (0, __1._pipeline)([
22 fs.createReadStream(filePath),
23 ...(gzip ? [(0, zlib_1.createUnzip)(opt.zlibOptions)] : []),
24 (0, __2.transformSplit)(separator),
25 (0, transformJsonParse_1.transformJsonParse)(opt),
26 (0, __1.transformTap)(() => rows++),
27 ...streams,
28 ]);
29 const stats = ndjson_model_1.NDJsonStats.create({
30 tookMillis: Date.now() - started,
31 rows,
32 sizeBytes,
33 });
34 console.log(`<< ${(0, colors_1.grey)(filePath)}\n` + stats.toPretty());
35 return stats;
36}
37exports.pipelineFromNDJsonFile = pipelineFromNDJsonFile;