UNPKG

lupdo

Version:

Database Abstraction Layer for Node js

62 lines (61 loc) 1.66 kB
import BaseTypedBinding from '../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 BaseTypedBinding) { return toJsonable(value.value); } if (value instanceof Date) { return new JsonDate(value.toString()); } if (typeof value === 'bigint') { return new JsonBigInt(value); } return value; }; export 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); }