lupdo
Version:
Database Abstraction Layer for Node js
66 lines (65 loc) • 1.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.paramsToString = void 0;
const base_typed_binding_1 = require("../bindings/base-typed-binding");
class JsonDate extends Date {
toJSON(key) {
return { type: 'Date', data: super.toJSON(key) };
}
}
class JsonBigInt {
constructor(bigint) {
this.bigint = bigint;
}
toJSON() {
return { type: 'BigInt', data: this.bigint.toString() };
}
}
const toJsonable = (value) => {
if (value instanceof base_typed_binding_1.default) {
return toJsonable(value.value);
}
if (value instanceof Date) {
return new JsonDate(value.toString());
}
if (typeof value === 'bigint') {
return new JsonBigInt(value);
}
return value;
};
function paramsToString(params, space) {
let parsed = null;
if (Array.isArray(params)) {
parsed = [];
for (const param of params) {
if (Array.isArray(param)) {
const values = [];
for (const value of param) {
values.push(toJsonable(value));
}
parsed.push(values);
}
else {
parsed.push(toJsonable(param));
}
}
}
else {
parsed = {};
for (const key in params) {
const param = params[key];
if (Array.isArray(param)) {
const values = [];
for (const value of param) {
values.push(toJsonable(value));
}
parsed[key] = values;
}
else {
parsed[key] = toJsonable(param);
}
}
}
return JSON.stringify(parsed, null, space);
}
exports.paramsToString = paramsToString;