UNPKG

nested_json_to_csv

Version:
110 lines (109 loc) 6.17 kB
"use strict"; var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _JsonParserService_instances, _JsonParserService_data, _JsonParserService_parserOptions, _JsonParserService_fromJsonToMap, _JsonParserService_makeBody, _JsonParserService_getAllData, _JsonParserService_getData; Object.defineProperty(exports, "__esModule", { value: true }); exports.JsonParserService = void 0; const types_1 = require("util/types"); const Csv_1 = require("../../models/Csv"); class JsonParserService { constructor(data, parserOptions) { _JsonParserService_instances.add(this); _JsonParserService_data.set(this, void 0); _JsonParserService_parserOptions.set(this, void 0); __classPrivateFieldSet(this, _JsonParserService_parserOptions, parserOptions !== null && parserOptions !== void 0 ? parserOptions : { single: false, hasId: false }, "f"); if (__classPrivateFieldGet(this, _JsonParserService_parserOptions, "f").single && __classPrivateFieldGet(this, _JsonParserService_parserOptions, "f").hasId) { throw new Error("Can't have the options single as true and hasId as true please go and check the documentation at https://www.npmjs.com/package/nested_json_to_csv"); } if (data instanceof Map) __classPrivateFieldSet(this, _JsonParserService_data, data, "f"); else __classPrivateFieldSet(this, _JsonParserService_data, __classPrivateFieldGet(this, _JsonParserService_instances, "m", _JsonParserService_fromJsonToMap).call(this, data), "f"); } parse(headers) { const csv = new Csv_1.Csv(headers); const body = __classPrivateFieldGet(this, _JsonParserService_instances, "m", _JsonParserService_makeBody).call(this, csv.getHeaders()); if (headers[0] != "id" && __classPrivateFieldGet(this, _JsonParserService_parserOptions, "f").hasId) { const newHeaders = csv.getHeaders(); newHeaders.unshift("id"); csv.setHeaders(newHeaders); } csv.setbody(body); return csv; } get() { return __classPrivateFieldGet(this, _JsonParserService_data, "f"); } } exports.JsonParserService = JsonParserService; _JsonParserService_data = new WeakMap(), _JsonParserService_parserOptions = new WeakMap(), _JsonParserService_instances = new WeakSet(), _JsonParserService_fromJsonToMap = function _JsonParserService_fromJsonToMap(json) { let mp = new Map(); for (const key in json) { if (json[key].constructor == {}.constructor) { const newMp = __classPrivateFieldGet(this, _JsonParserService_instances, "m", _JsonParserService_fromJsonToMap).call(this, json[key]); mp.set(key, newMp); } else { mp.set(key, json[key]); } } return mp; }, _JsonParserService_makeBody = function _JsonParserService_makeBody(headers) { let body = ""; if (__classPrivateFieldGet(this, _JsonParserService_parserOptions, "f").single) body = __classPrivateFieldGet(this, _JsonParserService_instances, "m", _JsonParserService_getAllData).call(this, headers, __classPrivateFieldGet(this, _JsonParserService_data, "f")); else { __classPrivateFieldGet(this, _JsonParserService_data, "f").forEach((value, key) => { if (__classPrivateFieldGet(this, _JsonParserService_parserOptions, "f").hasId) { body = body.concat(key, ","); } body = body.concat(__classPrivateFieldGet(this, _JsonParserService_instances, "m", _JsonParserService_getAllData).call(this, headers, value), "\n"); }); } return body; }, _JsonParserService_getAllData = function _JsonParserService_getAllData(headers, data) { let body = ""; headers.forEach((path, index) => { body = body.concat(__classPrivateFieldGet(this, _JsonParserService_instances, "m", _JsonParserService_getData).call(this, path, data), ","); }); return body; }, _JsonParserService_getData = function _JsonParserService_getData(path, data) { if (path.includes(".")) { const key = path.substring(0, path.indexOf(".")); path = path.substring(path.indexOf(".") + 1); let newData; if (data.has(key)) newData = data.get(key); else newData = new Map(); return __classPrivateFieldGet(this, _JsonParserService_instances, "m", _JsonParserService_getData).call(this, path, newData); } if (!data.has(path)) { if (__classPrivateFieldGet(this, _JsonParserService_parserOptions, "f").setDefaultValues) { return ""; } console.error(path, data); throw Error("Key was not found in your JSON"); } const value = data.get(path); if (value == undefined || typeof value == "object") { throw Error("There is an error in your headers they are not accurate"); } if ((0, types_1.isNumberObject)(value) || (0, types_1.isBooleanObject)(value)) { return value + ","; } if ((0, types_1.isStringObject)(value)) { const newValue = value.replace(",", "."); return newValue; } return value; };