UNPKG

@grouparoo/core

Version:
101 lines (100 loc) 3.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.APIData = void 0; var APIData; (function (APIData) { function ensureArray(param, api) { return ensureObjectOrArray(param, api); } APIData.ensureArray = ensureArray; function ensureObject(param, api) { return ensureObjectOrArray(param, api); } APIData.ensureObject = ensureObject; function ensureObjectOrArray(param, api, recursing = false) { if (!param) { return null; } else if (Array.isArray(param)) { try { return param.map((row) => ensureObjectOrArray(row, api, true)); } catch (error) { throw new Error(`${param} cannot be converted to JSON object (${error})`); } } else if (typeof param === "string") { try { return JSON.parse(param); } catch (error) { if (recursing) { return param; } else { throw new Error(`${param} cannot be converted to JSON object (${error})`); } } } else { return param; } } function ensureString(param) { return String(param); } APIData.ensureString = ensureString; function ensureBoolean(param) { if (param === true || param === false) return param; if (param === 1 || param === "1" || param === "true") return true; if (param === 0 || param === "0" || param === "false") return false; throw new Error(`${param} cannot be converted to a boolean`); } APIData.ensureBoolean = ensureBoolean; function ensureNumber(param) { if (typeof param === "number") return param; try { const parsed = parseFloat(param); if (isNaN(parsed)) throw new Error("NaN"); return parsed; } catch (error) { throw new Error(`${param} cannot be converted to number (${error})`); } } APIData.ensureNumber = ensureNumber; function ensureDate(param) { if (param instanceof Date) return param; if (typeof param === "string" || typeof param === "number") { const asNumber = Number(param); if (!isNaN(asNumber)) param = asNumber; const date = new Date(param); if (!isNaN(date.getTime())) return date; } throw new Error(`${param} cannot be converted to a date`); } APIData.ensureDate = ensureDate; function formatDate(date) { if (!date || date === "") return null; else if (date instanceof Date) return date.getTime(); else if (typeof date === "string") { const asNumber = Number(date); if (!isNaN(asNumber)) return asNumber; return new Date(date).getTime(); } else throw new Error(`${date} is not a date`); } APIData.formatDate = formatDate; })(APIData = exports.APIData || (exports.APIData = {}));