UNPKG

json-processing

Version:

JSON Processing Tool

31 lines (30 loc) 1.1 kB
'use strict'; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const yajson_stream_1 = __importDefault(require("yajson-stream")); const bluebird_1 = require("bluebird"); const lodash_1 = require("lodash"); exports.default = (stream, path, onNode) => new bluebird_1.Promise((resolve, reject) => { const s = stream.pipe(yajson_stream_1.default(path)). on('data', (data) => { try { populatePathMetadata(data.value, data.path); onNode(data.value); } catch (e) { s.destroy(); reject(e); } }). on('error', (err) => reject(err)). on('end', () => resolve()); }); function populatePathMetadata(node, path) { if (lodash_1.isObject(node) || lodash_1.isArray(node)) Object.defineProperties(node, { __path: { value: path, writable: true }, __key: { value: path[path.length - 1], writable: true } }); }