magicbell
Version:
MagicBell API wrapper
62 lines • 1.83 kB
JavaScript
export const hasOwn = (obj, prop) => obj && Object.prototype.hasOwnProperty.call(obj, prop);
export function isString(value) {
return typeof value === 'string';
}
export function isBoolean(value) {
return typeof value === 'boolean';
}
export function isArray(value) {
return Array.isArray(value);
}
export function isStringArray(value) {
return Array.isArray(value) && value.every((x) => typeof x === 'string');
}
export function isNumber(value) {
return typeof value === 'number';
}
export function isObject(value) {
return value && typeof value === 'object';
}
export function compact(obj, dropEmptyString = false) {
if (typeof obj !== 'object') {
throw new Error('Argument must be an object');
}
const result = {};
for (const key of Object.keys(obj)) {
if (obj[key] == null)
continue;
if (dropEmptyString && obj[key] === '')
continue;
result[key] = obj[key];
}
return result;
}
export async function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
export function joinAnd(...parts) {
if (parts.length <= 2)
return parts.join(' and ');
const last = parts.slice(-1)[0];
const others = parts.slice(0, -1);
return [others.join(', '), last].join(', and ');
}
export function joinOr(...parts) {
if (parts.length <= 2)
return parts.join(' or ');
const last = parts.slice(-1)[0];
const others = parts.slice(0, -1);
return [others.join(', '), last].join(', or ');
}
export function joinUrlSegments(...segments) {
return ['/', ...segments].join('/').replace(/\/+/g, '/').replace(/\/$/, '');
}
export function tryParse(obj) {
try {
return JSON.parse(String(obj));
}
catch {
return obj;
}
}
//# sourceMappingURL=utils.js.map