UNPKG

wikibase-edit

Version:

Edit Wikibase from NodeJS

76 lines 2.59 kB
const stringNumberPattern = /^(-|\+)?\d+(\.\d+)?$/; const signedStringNumberPattern = /^(-|\+)\d+(\.\d+)?$/; export function stringifyQuery(query) { // @ts-expect-error return new URLSearchParams(query).toString(); } export function isNonEmptyString(str) { return typeof str === 'string' && str.length > 0; } export function buildUrl(base, query) { return `${base}?${stringifyQuery(query)}`; } // helpers to simplify polymorphisms export function forceArray(obj) { if (obj == null) return []; if (!(obj instanceof Array)) return [obj]; return obj; } export const isString = (str) => typeof str === 'string'; export const isNumber = (num) => typeof num === 'number'; export function isStringNumber(str) { return stringNumberPattern.test(str); } export function isSignedStringNumber(str) { return typeof str === 'string' && signedStringNumberPattern.test(str); } export const isArray = (array) => array instanceof Array; export function isPlainObject(obj) { if (obj instanceof Array) return false; if (obj === null) return false; return typeof obj === 'object'; } export function isntEmpty(value) { return value != null; } export function mapValues(obj, fn) { function aggregator(index, key) { index[key] = fn(key, obj[key]); return index; } return Object.keys(obj).reduce(aggregator, {}); } export const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms)); // Work around the TS2345 error when using Array include method // https://stackoverflow.com/questions/55906553/typescript-unexpected-error-when-using-includes-with-a-typed-array/70532727#70532727 // Implementation inspired by https://8hob.io/posts/elegant-safe-solution-for-typing-array-includes/#elegant-and-safe-solution export function arrayIncludes(array, value) { const arrayT = array; return arrayT.includes(value); } // Same as `arrayIncludes` but for sets export function setHas(set, value) { const setT = set; return setT.has(value); } export function objectEntries(obj) { return Object.entries(obj); } export function objectFromEntries(entries) { return Object.fromEntries(entries); } export function objectValues(obj) { return Object.values(obj); } // Source: https://www.totaltypescript.com/tips/create-your-own-objectkeys-function-using-generics-and-the-keyof-operator export function objectKeys(obj) { return Object.keys(obj); } export function hasTruthy(params, attribute) { return attribute in params && params[attribute]; } //# sourceMappingURL=utils.js.map