@grouparoo/core
Version:
The Grouparoo Core
101 lines (100 loc) • 3.27 kB
JavaScript
;
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 = {}));