@jsonlines/core
Version:
parse and stringify jsonlines files through streams
72 lines (63 loc) • 2.55 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
require('core-js/modules/es.array.iterator');
require('core-js/modules/es.promise');
require('./_chunks/line-sep-69d200dd.js');
require('stream');
var duplexBase = require('./_chunks/duplex-base-8f9de019.js');
var readlineStream = require('./readline-stream.js');
require('core-js/modules/es.symbol.description');
var nullValue = require('./null-value.js');
function _interopNamespace(e) {
if (e && e.__esModule) { return e; } else {
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () {
return e[k];
}
});
}
});
}
n['default'] = e;
return Object.freeze(n);
}
}
function wrapParseFunc(parse) {
return line => Promise.resolve(parse(line)).then(s => {
if (s === null) return nullValue.nullValue;else return s;
});
}
class JsonLinesParseStream extends duplexBase.AsyncDuplexBase {
constructor(options) {
var _options$lineSep, _options$parse;
const gzip = options === null || options === void 0 ? void 0 : options.gzip;
const readline = new readlineStream.ReadLineStream({
encoding: options === null || options === void 0 ? void 0 : options.encoding,
lineSep: (_options$lineSep = options === null || options === void 0 ? void 0 : options.lineSep) !== null && _options$lineSep !== void 0 ? _options$lineSep : "lf",
parse: wrapParseFunc((_options$parse = options === null || options === void 0 ? void 0 : options.parse) !== null && _options$parse !== void 0 ? _options$parse : JSON.parse)
});
super({
writable: gzip ? () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('zlib')); }).then(zlib => {
const gunzip = zlib.createGunzip(gzip === true ? undefined : gzip);
gunzip.pipe(readline);
return gunzip;
}) : readline,
readable: readline
}, {
readableObjectMode: true,
writableObjectMode: false
});
}
}
function parse(...args) {
return new JsonLinesParseStream(...args);
}
exports.JsonLinesParseStream = JsonLinesParseStream;
exports.parse = parse;
//# sourceMappingURL=parse.js.map