UNPKG

lupdo

Version:

Database Abstraction Layer for Node js

66 lines (65 loc) 1.82 kB
"use strict"; 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;