UNPKG

@carlosv2/glue

Version:

Dependency injection library that stays out of the way

116 lines (115 loc) 3.64 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.library = void 0; exports.isNull = isNull; exports.isSymbol = isSymbol; exports.isString = isString; exports.isNumber = isNumber; exports.isObject = isObject; exports.isBoolean = isBoolean; exports.isUndefined = isUndefined; exports.isFunction = isFunction; exports.isArray = isArray; exports.isDictionary = isDictionary; exports.zip = zip; exports.zipObject = zipObject; exports.unzip = unzip; exports.has = has; exports.gibberish = gibberish; exports.uniq = uniq; exports.isFirstChar = isFirstChar; exports.getCallerFile = getCallerFile; exports.resolvePromises = resolvePromises; exports.library = '@carlosv2/glue'; function isNull(value) { return value === null; } function isSymbol(value) { return typeof value === 'symbol'; } function isString(value) { return typeof value === 'string'; } function isNumber(value) { return typeof value === 'number'; } function isObject(value) { return !isNull(value) && typeof value === 'object'; } function isBoolean(value) { return typeof value === 'boolean'; } function isUndefined(value) { return typeof value === 'undefined'; } function isFunction(value) { return typeof value === 'function'; } function isArray(value) { return Array.isArray(value); } function isDictionary(value) { return isObject(value) && value.constructor.name === 'Object'; } function zip([ts, ys]) { const length = Math.min(ts.length, ys.length); const result = []; for (let i = 0; i < length; i++) { result.push([ts[i], ys[i]]); } return result; } function zipObject(keys, values) { return Object.fromEntries(zip([keys, values])); } function unzip(data) { const ts = []; const ys = []; data.forEach(([t, y]) => { ts.push(t); ys.push(y); }); return [ts, ys]; } function has(key, obj) { return key in obj; } function gibberish(length) { const generate = () => Math.random().toString(36).substring(2); let result = ''; while (result.length < length) result += generate(); return result.substring(0, length); } function uniq(items) { return Array.from(new Set(items)); } function isFirstChar(value, char) { return (value.length > 1 && value.charAt(0) === char && value.charAt(1) !== char); } function getCallerFile() { const oldPrepareStackTrace = Error.prepareStackTrace; Error.prepareStackTrace = (_, stack) => stack; const stack = new Error().stack; Error.prepareStackTrace = oldPrepareStackTrace; if (stack !== null && typeof stack === 'object') { return stack[3] ? stack[3].getFileName() : undefined; } return undefined; } function resolvePromises(obj) { return __awaiter(this, void 0, void 0, function* () { const [keys, promises] = unzip(Object.entries(obj)); const values = yield Promise.all(promises); return zipObject(keys, values); }); }