@jsonlines/core
Advanced tools
Comparing version
@@ -0,1 +1,8 @@ | ||
## [1.0.2](https://github.com/EqualMa/jsonlines/compare/v1.0.1...v1.0.2) (2020-08-15) | ||
### Bug Fixes | ||
* stringify gzip error ([89c872e](https://github.com/EqualMa/jsonlines/commit/89c872ee66e174064e11e1e31fe8b62a8db86290)) | ||
## [1.0.1](https://github.com/EqualMa/jsonlines/compare/v1.0.0...v1.0.1) (2020-08-15) | ||
@@ -2,0 +9,0 @@ |
@@ -51,4 +51,4 @@ import 'core-js/modules/es.array.iterator'; | ||
}, { | ||
readableObjectMode: true, | ||
writableObjectMode: false | ||
readableObjectMode: false, | ||
writableObjectMode: true | ||
}); | ||
@@ -55,0 +55,0 @@ } |
{ | ||
"name": "@jsonlines/core", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "parse and stringify jsonlines files through streams", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
40
parse.js
@@ -5,30 +5,32 @@ 'use strict'; | ||
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 = {}; | ||
var n = Object.create(null); | ||
if (e) { | ||
Object.keys(e).forEach(function (k) { | ||
var d = Object.getOwnPropertyDescriptor(e, k); | ||
Object.defineProperty(n, k, d.get ? d : { | ||
enumerable: true, | ||
get: function () { | ||
return e[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 n; | ||
return Object.freeze(n); | ||
} | ||
} | ||
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 wrapParseFunc(parse) { | ||
@@ -51,3 +53,3 @@ return line => Promise.resolve(parse(line)).then(s => { | ||
super({ | ||
writable: gzip ? () => Promise.resolve().then(function () { return _interopNamespace(require('zlib')); }).then(zlib => { | ||
writable: gzip ? () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('zlib')); }).then(zlib => { | ||
const gunzip = zlib.createGunzip(gzip === true ? undefined : gzip); | ||
@@ -54,0 +56,0 @@ gunzip.pipe(readline); |
@@ -5,26 +5,28 @@ 'use strict'; | ||
require('core-js/modules/es.array.iterator'); | ||
require('core-js/modules/es.promise'); | ||
var lineSep = require('./_chunks/line-sep-69d200dd.js'); | ||
var stream = require('stream'); | ||
function _interopNamespace(e) { | ||
if (e && e.__esModule) { return e; } else { | ||
var n = {}; | ||
var n = Object.create(null); | ||
if (e) { | ||
Object.keys(e).forEach(function (k) { | ||
var d = Object.getOwnPropertyDescriptor(e, k); | ||
Object.defineProperty(n, k, d.get ? d : { | ||
enumerable: true, | ||
get: function () { | ||
return e[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 n; | ||
return Object.freeze(n); | ||
} | ||
} | ||
require('core-js/modules/es.array.iterator'); | ||
require('core-js/modules/es.promise'); | ||
var lineSep = require('./_chunks/line-sep-69d200dd.js'); | ||
var stream = require('stream'); | ||
var _unfinishedBuf = new WeakMap(); | ||
@@ -129,3 +131,3 @@ | ||
StringDecoder | ||
} = await Promise.resolve().then(function () { return _interopNamespace(require('string_decoder')); }); | ||
} = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('string_decoder')); }); | ||
@@ -132,0 +134,0 @@ lineSep._classPrivateFieldSet(this, _decoder, new StringDecoder(lineSep._classPrivateFieldGet(this, _encoding))); |
116
README.md
@@ -16,2 +16,97 @@ # jsonlines | ||
## Features Guide | ||
<details> | ||
<summary> | ||
Easy to use. parse stream and stringify stream are standard node duplex streams | ||
</summary> | ||
stringify | ||
```js | ||
require("stream") | ||
.Readable.from([{ v: 1 }, { v: 2 }]) | ||
.pipe(require("@jsonlines/core").stringify()) | ||
.pipe(require("fs").createWriteStream("mydata.jsonl")); | ||
``` | ||
parse | ||
```js | ||
require("fs") | ||
.createReadStream("mydata.jsonl") | ||
.pipe(require("@jsonlines/core").parse()) | ||
.on("data", (data) => { | ||
console.log("parsed data: ", data); | ||
}); | ||
``` | ||
</details> | ||
<details> | ||
<summary> | ||
Custom stringify / parse functions. Async function or function that returns a Promise is also supported. | ||
</summary> | ||
```js | ||
require("stream") | ||
.Readable.from([{ v: 1 }, { v: 2 }]) | ||
.pipe( | ||
require("@jsonlines/core").stringify({ | ||
stringify: myCustomStringifyFunction, | ||
}), | ||
) | ||
.pipe(require("fs").createWriteStream("mydata.jsonl")); | ||
``` | ||
```js | ||
require("fs") | ||
.createReadStream("mydata.jsonl") | ||
.pipe( | ||
require("@jsonlines/core").parse({ | ||
parse: myCustomParseFunction, | ||
}), | ||
) | ||
.on("data", (data) => { | ||
console.log("receive data: ", data); | ||
}); | ||
``` | ||
</details> | ||
<details> | ||
<summary> | ||
Gzip / Gunzip | ||
</summary> | ||
stringify to a `.jsonl.gz` | ||
```js | ||
require("stream") | ||
.Readable.from([{ v: 1 }, { v: 2 }]) | ||
.pipe( | ||
require("@jsonlines/core").stringify({ | ||
gzip: true, | ||
}), | ||
) | ||
.pipe(require("fs").createWriteStream("mydata.jsonl.gz")); | ||
``` | ||
parse from a `.jsonl.gz` | ||
```js | ||
require("fs") | ||
.createReadStream("mydata.jsonl.gz") | ||
.pipe( | ||
require("@jsonlines/core").parse({ | ||
gzip: true, | ||
}), | ||
) | ||
.on("data", (data) => { | ||
console.log("receive data: ", data); | ||
}); | ||
``` | ||
</details> | ||
## Usage | ||
@@ -142,4 +237,3 @@ | ||
(async () => { | ||
const source = require("stream").Readable.from(`{"v":"object1"} | ||
const source = require("stream").Readable.from(`{"v":"object1"} | ||
{"name":"Lady Gaga","records":["Chromatica"]} | ||
@@ -157,14 +251,14 @@ [1,2,3,4] | ||
// create a parse stream, which is a duplex stream | ||
const parseStream = parse(); | ||
// create a parse stream, which is a duplex stream | ||
const parseStream = parse(); | ||
source.pipe(parseStream); | ||
source.pipe(parseStream); | ||
for await (const value of parseStream) { | ||
if (value === require("@jsonlines/core/null-value").nullValue) | ||
console.log(`--- The following value is nullValue ---`); | ||
// you can also consume it with for await ... of | ||
parseStream.on("data", (value) => { | ||
if (value === require("@jsonlines/core/null-value").nullValue) | ||
console.log(`--- The following value is nullValue ---`); | ||
console.log(value); | ||
} | ||
})(); | ||
console.log(value); | ||
}); | ||
``` | ||
@@ -171,0 +265,0 @@ |
@@ -5,27 +5,29 @@ 'use strict'; | ||
require('core-js/modules/es.array.iterator'); | ||
require('core-js/modules/es.promise'); | ||
var lineSep = require('./_chunks/line-sep-69d200dd.js'); | ||
var stream = require('stream'); | ||
var duplexBase = require('./_chunks/duplex-base-8f9de019.js'); | ||
function _interopNamespace(e) { | ||
if (e && e.__esModule) { return e; } else { | ||
var n = {}; | ||
var n = Object.create(null); | ||
if (e) { | ||
Object.keys(e).forEach(function (k) { | ||
var d = Object.getOwnPropertyDescriptor(e, k); | ||
Object.defineProperty(n, k, d.get ? d : { | ||
enumerable: true, | ||
get: function () { | ||
return e[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 n; | ||
return Object.freeze(n); | ||
} | ||
} | ||
require('core-js/modules/es.array.iterator'); | ||
require('core-js/modules/es.promise'); | ||
var lineSep = require('./_chunks/line-sep-69d200dd.js'); | ||
var stream = require('stream'); | ||
var duplexBase = require('./_chunks/duplex-base-8f9de019.js'); | ||
var _stringify = new WeakMap(); | ||
@@ -68,3 +70,3 @@ | ||
super({ | ||
readable: gzip ? () => Promise.resolve().then(function () { return _interopNamespace(require('zlib')); }).then(zlib => { | ||
readable: gzip ? () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('zlib')); }).then(zlib => { | ||
const gzipStream = zlib.createGzip(gzip === true ? undefined : gzip); | ||
@@ -76,4 +78,4 @@ stringifyStream.pipe(gzipStream); | ||
}, { | ||
readableObjectMode: true, | ||
writableObjectMode: false | ||
readableObjectMode: false, | ||
writableObjectMode: true | ||
}); | ||
@@ -80,0 +82,0 @@ } |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
106372
2.2%1038
0.58%337
38.68%