nested_json_to_csv
Version:
110 lines (109 loc) • 6.17 kB
JavaScript
"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;
};