UNPKG

@nevware21/ts-utils

Version:

Comprehensive TypeScript/JavaScript utility library with cross-environment support (Node.js, browser, web worker) providing helper functions, polyfills (ES5-ES2023), type checking utilities, and optimized implementations for better minification and code r

1,407 lines (1,337 loc) 134 kB
/*! https://github.com/nevware21/ts-utils v0.14.0 */ /* * Copyright (c) NevWare21 Solutions LLC and contributors. All rights reserved. * Licensed under the MIT license. */ this.nevware21 = this.nevware21 || {}; this.nevware21["ts-utils"] = (function (exports) { 'use strict'; /*#__NO_SIDE_EFFECTS__*/ function _pureAssign(func1, func2) { return func1 || func2; } /*#__NO_SIDE_EFFECTS__*/ function _pureRef(value, name) { return value !== null && value !== undefined ? value[name] : undefined; } var UNDEF_VALUE = undefined; var NULL_VALUE = null; var EMPTY = ""; var FUNCTION = "function"; var OBJECT = "object"; var PROTOTYPE = "prototype"; var __PROTO__ = "__proto__"; var UNDEFINED = "undefined"; var CONSTRUCTOR = "constructor"; var SYMBOL = "Symbol"; var LENGTH = "length"; var NAME = "name"; var CALL = "call"; var TO_STRING = "toString"; var GET_OWN_PROPERTY_DESCRIPTOR = "getOwnPropertyDescriptor"; var GET_OWN_PROPERTY_NAMES = "getOwnPropertyNames"; var GET_OWN_PROPERTY_SYMBOLS = "getOwnPropertySymbols"; var ObjClass = ( /*#__PURE__*/_pureAssign(Object)); var ObjProto = ( /*#__PURE__*/_pureRef(ObjClass, PROTOTYPE)); var StrCls = ( /*#__PURE__*/_pureAssign(String)); var StrProto = ( /*#__PURE__*/_pureRef(StrCls, PROTOTYPE)); var MathCls = ( /*#__PURE__*/_pureAssign(Math)); var ArrCls = ( /*#__PURE__*/_pureAssign(Array)); var ArrProto = ( /*#__PURE__*/_pureRef(ArrCls, PROTOTYPE)); var ArrSlice = ( /*#__PURE__*/_pureRef(ArrProto, "slice")); var NumberCls = ( /*#__PURE__*/_pureAssign(Number)); var NumberProto = ( /*#__PURE__*/_pureRef(NumberCls, PROTOTYPE)); var FuncCls = ( /*#__PURE__*/_pureAssign(Function)); var FuncProto = ( /*#__PURE__*/_pureRef(FuncCls, PROTOTYPE)); var DateCls = ( /*#__PURE__*/_pureAssign(Date)); var DateProto = ( /*#__PURE__*/_pureRef(DateCls, PROTOTYPE)); var RegExpCls = ( /*#__PURE__*/_pureAssign(RegExp)); var RegExpProto = ( /*#__PURE__*/_pureRef(RegExpCls, PROTOTYPE)); var BooleanCls = ( /*#__PURE__*/_pureAssign(Boolean)); var BooleanProto = ( /*#__PURE__*/_pureRef(BooleanCls, PROTOTYPE)); var ErrorCls = ( /*#__PURE__*/_pureAssign(Error)); var ErrorProto = ( /*#__PURE__*/_pureRef(ErrorCls, PROTOTYPE)); var POLYFILL_TAG = "_polyfill"; var POLYFILL_TYPE_NAME = "__nw21$polytype__"; function _isPolyfill(obj) { return !!(obj && obj[POLYFILL_TAG]); } function _isPolyfillType(obj, polyfillTypeName) { return !!(obj && obj[POLYFILL_TYPE_NAME] === polyfillTypeName); } function safe(func, argArray) { try { return { v: func.apply(this, argArray) }; } catch (e) { return { e: e }; } } /*#__NO_SIDE_EFFECTS__*/ function safeGet(cb, defValue, argArray) { var result = safe(cb, argArray); return result.e ? defValue : result.v; } var _primitiveTypes; /*#__NO_SIDE_EFFECTS__*/ function _createIs(theType) { return function (value) { return typeof value === theType; }; } /*#__NO_SIDE_EFFECTS__*/ function _createIsWithPoly(theType) { return function (value) { return typeof value === theType || _isPolyfillType(value, theType); }; } /*#__NO_SIDE_EFFECTS__*/ function _createObjIs(theName) { var theType = "[object " + theName + "]"; return function (value) { return !!(value && objToString(value) === theType); }; } /*#__NO_SIDE_EFFECTS__*/ function objToString(value) { return ObjProto[TO_STRING].call(value); } /*#__NO_SIDE_EFFECTS__*/ function isTypeof(value, theType) { return typeof value === theType; } /*#__NO_SIDE_EFFECTS__*/ function isUndefined(value) { return typeof value === UNDEFINED || value === UNDEFINED; } /*#__NO_SIDE_EFFECTS__*/ function isStrictUndefined(arg) { return arg === UNDEF_VALUE; } /*#__NO_SIDE_EFFECTS__*/ function isNullOrUndefined(value) { return value === NULL_VALUE || isUndefined(value); } /*#__NO_SIDE_EFFECTS__*/ function isStrictNullOrUndefined(value) { return value === NULL_VALUE || value === UNDEF_VALUE; } /*#__NO_SIDE_EFFECTS__*/ function isDefined(arg) { return !!arg || arg !== UNDEF_VALUE; } /*#__NO_SIDE_EFFECTS__*/ function isPrimitive(value) { return value === NULL_VALUE || isPrimitiveType(typeof value); } /*#__NO_SIDE_EFFECTS__*/ function isPrimitiveType(theType) { !_primitiveTypes && (_primitiveTypes = ["string", "number", "boolean", UNDEFINED, "symbol", "bigint"]); return !!(theType !== OBJECT && _primitiveTypes.indexOf(theType) !== -1); } var isString = ( /*#__PURE__*/_createIs("string")); var isFunction = ( /*#__PURE__*/_createIs(FUNCTION)); var isAsyncFunction = ( /*#__PURE__*/_createObjIs("AsyncFunction")); var isGenerator = ( /*#__PURE__*/_createObjIs("GeneratorFunction")); var isAsyncGenerator = ( /*#__PURE__*/_createObjIs("AsyncGeneratorFunction")); /*#__NO_SIDE_EFFECTS__*/ function isObject(value) { if (!value && isNullOrUndefined(value)) { return false; } return !!value && typeof value === OBJECT; } var isArray = ( /* #__PURE__*/_pureRef(ArrCls, "isArray")); /*#__NO_SIDE_EFFECTS__*/ function isArrayLike(arg) { return !isStrictNullOrUndefined(arg) && !isFunction(arg) && isNumber(arg[LENGTH]) && arg[LENGTH] >= 0; } var isDate = ( /*#__PURE__*/_createObjIs("Date")); var isNumber = ( /*#__PURE__*/_createIs("number")); var isBoolean = ( /*#__PURE__*/_createIs("boolean")); var isRegExp = ( /*#__PURE__*/_createObjIs("RegExp")); var isFile = ( /*#__PURE__*/_createObjIs("File")); var isFormData = ( /*#__PURE__*/_createObjIs("FormData")); var isBlob = ( /*#__PURE__*/_createObjIs("Blob")); var isArrayBuffer = ( /*#__PURE__*/_createObjIs("ArrayBuffer")); var isError = ( /*#__PURE__*/_createObjIs("Error")); /*#__NO_SIDE_EFFECTS__*/ function isPromiseLike(value) { return !!(value && value.then && isFunction(value.then)); } var isThenable = isPromiseLike; /*#__NO_SIDE_EFFECTS__*/ function isPromise(value) { return !!(value && value.then && value.catch && isFunction(value.then) && isFunction(value.catch)); } var isMap = ( /*#__PURE__*/_createObjIs("Map")); var isWeakMap = ( /*#__PURE__*/_createObjIs("WeakMap")); var isSet = ( /*#__PURE__*/_createObjIs("Set")); var isWeakSet = ( /*#__PURE__*/_createObjIs("WeakSet")); /*#__NO_SIDE_EFFECTS__*/ function isMapLike(value) { return !!(value && isFunction(value.get) && isFunction(value.set) && isFunction(value.has) && isFunction(value.delete) && isNumber(value.size)); } function isSetLike(value) { return !!(value && isFunction(value.add) && isFunction(value.has) && isFunction(value.delete) && isNumber(value.size)); } /*#__NO_SIDE_EFFECTS__*/ function isNotTruthy(value) { return !value || !isTruthy(value); } /*#__NO_SIDE_EFFECTS__*/ function isTruthy(value) { return !(!value || safeGet(function () { return !(value && (0 + value)); }, !value)); } var isBigInt = ( /*#__PURE__*/_createIsWithPoly("bigint")); function _returnNothing() { return; } function _returnEmptyArray() { return []; } function _returnFalse() { return false; } var asString = ( /*#__PURE__*/_pureAssign(StrCls)); var ERROR_TYPE = "[object Error]"; /*#__NO_SIDE_EFFECTS__*/ function dumpObj(object, format) { var propertyValueDump = EMPTY; var objType = ObjProto[TO_STRING][CALL](object); if (objType === ERROR_TYPE) { object = { stack: asString(object.stack), message: asString(object.message), name: asString(object.name) }; } try { propertyValueDump = JSON.stringify(object, NULL_VALUE, format ? ((typeof format === "number") ? format : 4) : UNDEF_VALUE); propertyValueDump = (propertyValueDump ? propertyValueDump.replace(/"(\w+)"\s*:\s{0,1}/g, "$1: ") : NULL_VALUE) || asString(object); } catch (e) { propertyValueDump = " - " + dumpObj(e, format); } return objType + ": " + propertyValueDump; } function throwError(message) { throw new Error(message); } function throwTypeError(message) { throw new TypeError(message); } function throwRangeError(message) { throw new RangeError(message); } function _throwIfNullOrUndefined(obj) { if (isStrictNullOrUndefined(obj)) { throwTypeError("Cannot convert undefined or null to object"); } } function _throwIfNotString(value) { if (!isString(value)) { throwTypeError("'" + dumpObj(value) + "' is not a string"); } } /*#__NO_SIDE_EFFECTS__*/ function objHasOwnProperty(obj, prop) { return !!obj && ObjProto.hasOwnProperty[CALL](obj, prop); } var _objGetOwnPropertyDescriptor$2 = ( /*#__PURE__*/_pureAssign(( /*#__PURE__*/_pureRef(ObjClass, GET_OWN_PROPERTY_DESCRIPTOR)), _returnNothing)); var objHasOwn = ( /*#__PURE__*/_pureAssign(( /*#__PURE__*/_pureRef(ObjClass, "hasOwn")), polyObjHasOwn)); /*#__NO_SIDE_EFFECTS__*/ function polyObjHasOwn(obj, prop) { _throwIfNullOrUndefined(obj); return objHasOwnProperty(obj, prop) || !!_objGetOwnPropertyDescriptor$2(obj, prop); } /*#__NO_SIDE_EFFECTS__*/ function isUnsafePropKey(key) { return key === __PROTO__ || key === CONSTRUCTOR || key === PROTOTYPE; } function objForEachKey(theObject, callbackfn, thisArg) { if (theObject && (isObject(theObject) || isFunction(theObject))) { for (var prop in theObject) { if (objHasOwn(theObject, prop)) { if (callbackfn[CALL](isStrictNullOrUndefined(thisArg) ? theObject : thisArg, prop, theObject[prop]) === -1) { break; } } } } } function objForEachKeySafe(theObject, callbackfn, thisArg) { objForEachKey(theObject, function (key, value) { if (!isUnsafePropKey(key)) { return callbackfn[CALL](isStrictNullOrUndefined(thisArg) ? theObject : thisArg, key, value); } }, thisArg); } function arrForEach(theArray, callbackfn, thisArg) { if (theArray) { var len = theArray[LENGTH] >>> 0; for (var idx = 0; idx < len; idx++) { if (idx in theArray) { if (callbackfn[CALL](isStrictNullOrUndefined(thisArg) ? theArray : thisArg, theArray[idx], idx, theArray) === -1) { break; } } } } } var _unwrapFunction = _unwrapFunctionWithPoly; /*#__NO_SIDE_EFFECTS__*/ function _unwrapFunctionWithPoly(funcName, clsProto, polyFunc) { var clsFn = clsProto ? clsProto[funcName] : NULL_VALUE; return function (thisArg) { var theFunc = (thisArg ? thisArg[funcName] : NULL_VALUE) || clsFn; if (theFunc || polyFunc) { var theArgs = arguments; return (theFunc || polyFunc).apply(thisArg, theFunc ? ArrSlice[CALL](theArgs, 1) : theArgs); } throwTypeError("\"" + asString(funcName) + "\" not defined for " + dumpObj(thisArg)); }; } /*#__NO_SIDE_EFFECTS__*/ function _unwrapFunctionNoInstWithPoly(funcName, clsProto, polyFunc) { var clsFn = clsProto ? clsProto[funcName] : NULL_VALUE; return function (thisArg) { var theFunc = clsFn; if (theFunc || polyFunc) { var theArgs = arguments; return (theFunc || polyFunc).apply(thisArg, theFunc ? ArrSlice[CALL](theArgs, 1) : theArgs); } throwTypeError("\"" + asString(funcName) + "\" not defined for " + dumpObj(thisArg)); }; } /*#__NO_SIDE_EFFECTS__*/ function _unwrapProp(propName) { return function (thisArg) { return thisArg[propName]; }; } function _objPropertyIsEnum(obj, propKey) { var desc; var fn = ObjClass.getOwnPropertyDescriptor; if (!isStrictNullOrUndefined(obj) && fn) { desc = safe(fn, [obj, propKey]).v || NULL_VALUE; } if (!desc && !isStrictNullOrUndefined(obj)) { desc = safe(function () { for (var key in obj) { if (key == propKey) { return { enumerable: objHasOwnProperty(obj, key) }; } } }).v; } return (desc && desc.enumerable) || false; } var objPropertyIsEnumerable = ( /*#__PURE__*/_unwrapFunctionWithPoly("propertyIsEnumerable", NULL_VALUE, _objPropertyIsEnum)); var _objPropertyIsEnumerable = ( /*#__PURE__*/_unwrapFunctionNoInstWithPoly("propertyIsEnumerable", ObjProto, _objPropertyIsEnum)); var _objGetOwnPropertyDescriptor$1 = ( /*#__PURE__*/_pureAssign(( /*#__PURE__*/_pureRef(ObjClass, GET_OWN_PROPERTY_DESCRIPTOR)), _returnNothing)); var _objGetOwnPropertySymbols = ( /*#__PURE__*/_pureAssign(( /*#__PURE__*/_pureRef(ObjClass, GET_OWN_PROPERTY_SYMBOLS)), _returnEmptyArray)); var propMap = { e: "enumerable", c: "configurable", v: "value", w: "writable", g: "get", s: "set" }; /*#__NO_SIDE_EFFECTS__*/ function _createProp(value) { var prop = {}; prop[propMap["c"]] = true; prop[propMap["e"]] = true; if (value.l) { prop.get = function () { return value.l.v; }; var desc = _objGetOwnPropertyDescriptor$1(value.l, "v"); if (desc && desc.set) { prop.set = function (newValue) { value.l.v = newValue; }; } } objForEachKey(value, function (key, value) { prop[propMap[key]] = isStrictUndefined(value) ? prop[propMap[key]] : value; }); return prop; } var objDefineProp = ( /*#__PURE__*/_pureRef(ObjClass, "defineProperty")); var objDefineProperties = ( /*#__PURE__*/_pureRef(ObjClass, "defineProperties")); function objDefineGet(target, key, value, configurable, enumerable) { var _a; return objDefineProp(target, key, _createProp((_a = { e: enumerable, c: configurable }, _a[isFunction(value) ? "g" : "v"] = value, _a))); } function objDefineAccessors(target, prop, getProp, setProp, configurable, enumerable) { var desc = { e: enumerable, c: configurable }; if (getProp) { desc.g = getProp; } if (setProp) { desc.s = setProp; } return objDefineProp(target, prop, _createProp(desc)); } function objDefine(target, key, propDesc) { return objDefineProp(target, key, _createProp(propDesc)); } function objDefineProps(target, propDescMap) { var props = {}; objForEachKey(propDescMap, function (key, value) { props[key] = _createProp(value); }); arrForEach(_objGetOwnPropertySymbols(propDescMap), function (sym) { if (_objPropertyIsEnumerable(propDescMap, sym)) { props[sym] = _createProp(propDescMap[sym]); } }); return objDefineProperties(target, props); } /*#__NO_SIDE_EFFECTS__*/ function _createKeyValueMap(values, keyType, valueType, completeFn, writable) { var theMap = {}; objForEachKey(values, function (key, value) { _assignMapValue(theMap, key, keyType ? value : key); _assignMapValue(theMap, value, valueType ? value : key); }); return completeFn ? completeFn(theMap) : theMap; } function _assignMapValue(theMap, key, value, writable) { objDefineProp(theMap, key, { value: value, enumerable: true, writable: false }); } function _objIterateEntries(obj, mapper) { var result = []; objForEachKey(obj, function (key, val) { result.push(mapper(key, val)); }); return result; } /*#__NO_SIDE_EFFECTS__*/ function polyObjKeys(obj) { _throwIfNullOrUndefined(obj); if (!isObject(obj)) { throwTypeError("non-object " + dumpObj(obj)); } return _objIterateEntries(obj, function (k, _) { return k; }); } /*#__NO_SIDE_EFFECTS__*/ function polyObjEntries(value) { return _objIterateEntries(value, function (k, v) { return [k, v]; }); } /*#__NO_SIDE_EFFECTS__*/ function polyObjValues(value) { return _objIterateEntries(value, function (_, v) { return v; }); } function polyObjIs(value1, value2) { if (value1 !== value1) { return value2 !== value2; } if (value1 === 0 && value2 === 0) { return 1 / value1 === 1 / value2; } return value1 === value2; } var objIsFrozen = ( /*#__PURE__*/_pureAssign(( /*#__PURE__*/_pureRef(ObjClass, "isFrozen")), _returnFalse)); var objIsSealed = ( /*#__PURE__*/_pureAssign(( /*#__PURE__*/_pureRef(ObjClass, "isSealed")), _returnFalse)); var _objFreeze = ( /*#__PURE__*/_pureRef(ObjClass, "freeze")); function _doNothing(value) { return value; } /*#__NO_SIDE_EFFECTS__*/ function _getProto(value) { _throwIfNullOrUndefined(value); return value[__PROTO__] || NULL_VALUE; } var objAssign = ( /*#__PURE__*/_pureRef(ObjClass, "assign")); var objKeys = ( /*#__PURE__*/_pureRef(ObjClass, "keys")); function _deepFreeze(val, visited) { if ((isArray(val) || isObject(val) || isFunction(val)) && !objIsFrozen(val)) { for (var lp = 0; lp < visited.length; lp++) { if (visited[lp] === val) { return val; } } visited.push(val); objForEachKey(val, function (_key, propValue) { _deepFreeze(propValue, visited); }); objFreeze(val); } return val; } function objDeepFreeze(value) { return _objFreeze ? _deepFreeze(value, []) : value; } var objFreeze = ( /*#__PURE__*/_pureAssign(_objFreeze, _doNothing)); var objSeal = ( /*#__PURE__*/_pureAssign(( /*#__PURE__*/_pureRef(ObjClass, "seal")), _doNothing)); var objGetPrototypeOf = ( /*#__PURE__*/_pureAssign(( /*#__PURE__*/_pureRef(ObjClass, "getPrototypeOf")), _getProto)); var objEntries = ( /*#__PURE__*/_pureAssign(( /*#__PURE__*/_pureRef(ObjClass, "entries")), polyObjEntries)); var objValues = ( /*#__PURE__*/_pureAssign(( /*#__PURE__*/_pureRef(ObjClass, "values")), polyObjValues)); var objIs = ( /*#__PURE__*/_pureAssign(( /*#__PURE__*/_pureRef(ObjClass, "is")), polyObjIs)); /*#__NO_SIDE_EFFECTS__*/ function createEnum(values) { return _createKeyValueMap(values, 1 , 0 , objFreeze); } /*#__NO_SIDE_EFFECTS__*/ function createEnumKeyMap(values) { return _createKeyValueMap(values, 0 , 0 , objFreeze); } /*#__NO_SIDE_EFFECTS__*/ function createEnumValueMap(values) { return _createKeyValueMap(values, 1 , 1 , objFreeze); } /*#__NO_SIDE_EFFECTS__*/ function createSimpleMap(values) { var mapClass = {}; objForEachKey(values, function (key, value) { _assignMapValue(mapClass, key, value[1]); _assignMapValue(mapClass, value[0], value[1]); }); return objFreeze(mapClass); } /*#__NO_SIDE_EFFECTS__*/ function createTypeMap(values) { return createSimpleMap(values); } var _wellKnownSymbolMap = ( /*#__PURE__*/createEnumKeyMap({ asyncIterator: 0 , hasInstance: 1 , isConcatSpreadable: 2 , iterator: 3 , match: 4 , matchAll: 5 , replace: 6 , search: 7 , species: 8 , split: 9 , toPrimitive: 10 , toStringTag: 11 , unscopables: 12 })); var GLOBAL_CONFIG_KEY = "__tsUtils$gblCfg"; var _globalCfg; /*#__NO_SIDE_EFFECTS__*/ function _getGlobalValue() { var result; if (typeof globalThis !== UNDEFINED) { result = globalThis; } if (!result && typeof self !== UNDEFINED) { result = self; } if (!result && typeof window !== UNDEFINED) { result = window; } if (!result && typeof global !== UNDEFINED) { result = global; } return result; } /*#__NO_SIDE_EFFECTS__*/ function _getGlobalConfig() { if (!_globalCfg) { var gbl = safe(_getGlobalValue).v || {}; _globalCfg = gbl[GLOBAL_CONFIG_KEY] = gbl[GLOBAL_CONFIG_KEY] || {}; } return _globalCfg; } var mathMin = ( /*#__PURE__*/_pureRef(MathCls, "min")); var mathMax = ( /*#__PURE__*/_pureRef(MathCls, "max")); var strSlice = ( /*#__PURE__*/_unwrapFunction("slice", StrProto)); var strSubstring = ( /*#__PURE__*/_unwrapFunction("substring", StrProto)); var strSubstr = ( /*#__PURE__*/_unwrapFunctionWithPoly("substr", StrProto, polyStrSubstr)); /*#__NO_SIDE_EFFECTS__*/ function polyStrSubstr(value, start, length) { _throwIfNullOrUndefined(value); if (length < 0) { return EMPTY; } start = start || 0; if (start < 0) { start = mathMax(start + value[LENGTH], 0); } if (isUndefined(length)) { return strSlice(value, start); } return strSlice(value, start, start + length); } /*#__NO_SIDE_EFFECTS__*/ function strLeft(value, count) { return strSubstring(value, 0, count); } /*#__NO_SIDE_EFFECTS__*/ function strRight(value, count) { return count <= 0 ? EMPTY : (value[LENGTH] > count ? strSlice(value, -count) : value); } function _tagAsPolyfill(target, polyfillTypeName) { if (target) { safe(function () { target[POLYFILL_TAG] = true; target[POLYFILL_TYPE_NAME] = polyfillTypeName; }); safe(objDefine, [target, POLYFILL_TAG, { v: true, w: false, e: false }]); safe(objDefine, [target, POLYFILL_TYPE_NAME, { v: polyfillTypeName, w: false, e: false }]); } return target; } var objCreate = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ObjClass, "create")), polyObjCreate)); /*#__NO_SIDE_EFFECTS__*/ function polyObjCreate(obj, properties) { var newObj = null; function tempFunc() { } if (!isStrictNullOrUndefined(obj)) { var type = typeof obj; if (type !== OBJECT && type !== FUNCTION) { throwTypeError("Prototype must be an Object or function: " + dumpObj(obj)); } tempFunc[PROTOTYPE] = obj; safe(function () { tempFunc[__PROTO__] = obj; }); newObj = new tempFunc(); } else { newObj = {}; } if (properties) { safe(objDefineProperties, [newObj, properties]); } return newObj; } /*#__NO_SIDE_EFFECTS__*/ function utcNow() { return (Date.now || polyUtcNow)(); } /*#__NO_SIDE_EFFECTS__*/ function polyUtcNow() { return new Date().getTime(); } function fnApply(fn, thisArg, argArray) { return fn.apply(thisArg, argArray); } function fnCall(fn, thisArg) { return fn.apply(thisArg, ArrSlice[CALL](arguments, 2)); } function fnBind(fn, thisArg) { return fn.bind.apply(fn, ArrSlice[CALL](arguments, 1)); } var _globalLazyTestHooks; function _initTestHooks() { _globalLazyTestHooks = _getGlobalConfig(); } /*#__NO_SIDE_EFFECTS__*/ function getLazy(cb, argArray) { var lazyValue = {}; !_globalLazyTestHooks && _initTestHooks(); lazyValue.b = _globalLazyTestHooks.lzy; objDefineProp(lazyValue, "v", { configurable: true, get: function () { var result = fnApply(cb, null, argArray); if (!_globalLazyTestHooks.lzy) { objDefineProp(lazyValue, "v", { value: result }); } lazyValue.b = _globalLazyTestHooks.lzy; return result; } }); return lazyValue; } function setBypassLazyCache(newValue) { !_globalLazyTestHooks && _initTestHooks(); _globalLazyTestHooks.lzy = newValue; } function getWritableLazy(cb, argArray) { var lazyValue = {}; !_globalLazyTestHooks && _initTestHooks(); lazyValue.b = _globalLazyTestHooks.lzy; var _setValue = function (newValue) { objDefineProp(lazyValue, "v", { value: newValue, writable: true }); if (lazyValue.b) { delete lazyValue.b; } }; objDefineProp(lazyValue, "v", { configurable: true, get: function () { var result = fnApply(cb, null, argArray); if (!_globalLazyTestHooks.lzy) { _setValue(result); } if (_globalLazyTestHooks.lzy && lazyValue.b !== _globalLazyTestHooks.lzy) { lazyValue.b = _globalLazyTestHooks.lzy; } return result; }, set: _setValue }); return lazyValue; } var mathRandom = ( /*#__PURE__*/_pureRef(MathCls, "random")); var _uniqueInstanceId = ( /*#__PURE__*/getLazy(function () { var value = (utcNow().toString(36).slice(2)); while (value.length < 16) { value += mathRandom().toString(36).slice(2); } value = value.substring(0, 16); return value; })); var UNIQUE_REGISTRY_ID = "_urid"; var POLY_SYM = "$nw21sym"; var _polySymbols; var _polyId = 0; /*#__NO_SIDE_EFFECTS__*/ function _globalSymbolRegistry() { if (!_polySymbols) { var gblCfg = _getGlobalConfig(); _polySymbols = gblCfg.gblSym = gblCfg.gblSym || { k: {}, s: {} }; } return _polySymbols; } var _wellKnownSymbolCache; /*#__NO_SIDE_EFFECTS__*/ function polyNewSymbol(description) { var uniqueId = "_" + _polyId++ + "_" + _uniqueInstanceId.v; var symString = SYMBOL + "(" + description + ")"; function _setProp(name, value) { objDefine(theSymbol, name, { v: value, e: false, w: false }); } var theSymbol = objCreate(null); _setProp("description", asString(description)); _setProp(TO_STRING, function () { return symString + POLY_SYM + uniqueId; }); _setProp("valueOf", function () { return theSymbol; }); _setProp("v", symString); _setProp("_uid", uniqueId); return _tagAsPolyfill(theSymbol, "symbol"); } /*#__NO_SIDE_EFFECTS__*/ function polySymbolFor(key) { var registry = _globalSymbolRegistry(); if (!objHasOwn(registry.k, key)) { var newSymbol_1 = polyNewSymbol(key); var regId_1 = objKeys(registry.s).length; newSymbol_1[UNIQUE_REGISTRY_ID] = function () { return regId_1 + "_" + newSymbol_1[TO_STRING](); }; registry.k[key] = newSymbol_1; registry.s[newSymbol_1[UNIQUE_REGISTRY_ID]()] = asString(key); } return registry.k[key]; } /*#__NO_SIDE_EFFECTS__*/ function polySymbolKeyFor(sym) { if (!sym || !sym[TO_STRING] || strSubstring(sym[TO_STRING](), 0, 6) != SYMBOL) { throwTypeError(sym + " is not a symbol"); } var regId = _isPolyfill(sym) && sym[UNIQUE_REGISTRY_ID] && sym[UNIQUE_REGISTRY_ID](); return regId ? _globalSymbolRegistry().s[regId] : undefined; } /*#__NO_SIDE_EFFECTS__*/ function polyGetKnownSymbol(name) { !_wellKnownSymbolCache && (_wellKnownSymbolCache = {}); var result; var knownName = _wellKnownSymbolMap[name]; if (knownName) { result = _wellKnownSymbolCache[knownName] = _wellKnownSymbolCache[knownName] || polyNewSymbol(SYMBOL + "." + knownName); } return result; } /*#__NO_SIDE_EFFECTS__*/ function createCachedValue(value) { return objDefineProp({ toJSON: function () { return value; } }, "v", { value: value }); } var createDeferredCachedValue = getDeferred; /*#__NO_SIDE_EFFECTS__*/ function getDeferred(cb, argArray) { var theValue = { toJSON: function () { return theValue.v; } }; return objDefineProp(theValue, "v", { get: function () { var result = fnApply(cb, null, argArray); cb = NULL_VALUE; objDefineProp(theValue, "v", { value: result }); return result; }, configurable: true }); } /*#__NO_SIDE_EFFECTS__*/ function getWritableDeferred(cb, argArray) { var theValue = { toJSON: function () { return theValue.v; } }; var _setValue = function (newValue) { objDefineProp(theValue, "v", { value: newValue, writable: true }); }; return objDefineProp(theValue, "v", { get: function () { var result = fnApply(cb, null, argArray); _setValue(result); cb = NULL_VALUE; return result; }, set: _setValue, configurable: true }); } var WINDOW = "window"; var _cachedGlobal; function _getGlobalInstFn(getFn, theArgs) { var cachedValue; return function () { !_globalLazyTestHooks && _initTestHooks(); if (!cachedValue || _globalLazyTestHooks.lzy) { cachedValue = createCachedValue(safe(getFn, theArgs).v); } return cachedValue.v; }; } /*#__NO_SIDE_EFFECTS__*/ function lazySafeGetInst(name) { return getLazy(function () { return safe((getInst), [name]).v || UNDEF_VALUE; }); } function getGlobal(useCached) { !_globalLazyTestHooks && _initTestHooks(); if (!_cachedGlobal || useCached === false || _globalLazyTestHooks.lzy) { _cachedGlobal = createCachedValue(safe(_getGlobalValue).v || NULL_VALUE); } return _cachedGlobal.v; } /*#__NO_SIDE_EFFECTS__*/ function getInst(name, useCached) { var gbl; if (!_cachedGlobal || useCached === false) { gbl = getGlobal(useCached); } else { gbl = _cachedGlobal.v; } if (gbl && gbl[name]) { return gbl[name]; } if (name === WINDOW) { try { return window; } catch (e) { } } return NULL_VALUE; } /*#__NO_SIDE_EFFECTS__*/ function hasDocument() { return !!( /*#__PURE__*/getDocument()); } var getDocument = ( /*#__PURE__*/_getGlobalInstFn(getInst, ["document"])); /*#__NO_SIDE_EFFECTS__*/ function hasWindow() { return !!( /*#__PURE__*/getWindow()); } var getWindow = ( /*#__PURE__*/_getGlobalInstFn(getInst, [WINDOW])); /*#__NO_SIDE_EFFECTS__*/ function hasNavigator() { return !!( /*#__PURE__*/getNavigator()); } var getNavigator = ( /*#__PURE__*/_getGlobalInstFn(getInst, ["navigator"])); /*#__NO_SIDE_EFFECTS__*/ function hasHistory() { return !!( /*#__PURE__*/getHistory()); } var getHistory = ( /*#__PURE__*/_getGlobalInstFn(getInst, ["history"])); var isNode = ( /*#__PURE__*/_getGlobalInstFn(function () { return !!( /*#__PURE__*/safe(function () { return (process && (process.versions || {}).node); }).v); })); var isWebWorker = ( /*#__PURE__*/_getGlobalInstFn(function () { return !!( /*#__PURE__*/safe(function () { return self && self instanceof WorkerGlobalScope; }).v); })); var _symbol; var _symbolFor; var _symbolKeyFor; /*#__NO_SIDE_EFFECTS__*/ function _initSymbol() { _symbol = ( /*#__PURE__*/createCachedValue(safe((getInst), [SYMBOL]).v)); return _symbol; } function _getSymbolKey(key) { var gblSym = ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol()); return (gblSym.v ? gblSym.v[key] : UNDEF_VALUE); } var isSymbol = ( /*#__PURE__*/_createIsWithPoly("symbol")); /*#__NO_SIDE_EFFECTS__*/ function hasSymbol() { return !!( /*#__PURE__*/getSymbol()); } /*#__NO_SIDE_EFFECTS__*/ function getSymbol() { !_globalLazyTestHooks && _initTestHooks(); return ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol()).v; } /*#__NO_SIDE_EFFECTS__*/ function getKnownSymbol(name, noPoly) { var knownName = _wellKnownSymbolMap[name]; !_globalLazyTestHooks && _initTestHooks(); var sym = ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol()); return sym.v ? sym.v[knownName || name] : (!noPoly ? polyGetKnownSymbol(name) : UNDEF_VALUE); } /*#__NO_SIDE_EFFECTS__*/ function newSymbol(description, noPoly) { !_globalLazyTestHooks && _initTestHooks(); var sym = ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol()); return sym.v ? sym.v(description) : (!noPoly ? polyNewSymbol(description) : NULL_VALUE); } /*#__NO_SIDE_EFFECTS__*/ function symbolFor(key) { !_globalLazyTestHooks && _initTestHooks(); _symbolFor = ((!_globalLazyTestHooks.lzy ? _symbolFor : 0) || ( /*#__PURE__*/createCachedValue(safe((_getSymbolKey), ["for"]).v))); return (_symbolFor.v || polySymbolFor)(key); } /*#__NO_SIDE_EFFECTS__*/ function symbolKeyFor(sym) { !_globalLazyTestHooks && _initTestHooks(); _symbolKeyFor = ((!_globalLazyTestHooks.lzy ? _symbolKeyFor : 0) || ( /*#__PURE__*/createCachedValue(safe((_getSymbolKey), ["keyFor"]).v))); return (_symbolKeyFor.v || polySymbolKeyFor)(sym); } /*#__NO_SIDE_EFFECTS__*/ function isIterator(value) { return !!value && isFunction(value.next); } /*#__NO_SIDE_EFFECTS__*/ function isIterable(value) { return !isStrictNullOrUndefined(value) && isFunction(value[getKnownSymbol(3 )]); } /*#__NO_SIDE_EFFECTS__*/ function isAsyncIterable(value) { return !isStrictNullOrUndefined(value) && isFunction(value[getKnownSymbol(0 )]); } var _iterSymbol$1; function iterForOf(iter, callbackfn, thisArg) { if (iter) { if (!isIterator(iter)) { !_iterSymbol$1 && (_iterSymbol$1 = createCachedValue(getKnownSymbol(3 ))); iter = iter[_iterSymbol$1.v] ? iter[_iterSymbol$1.v]() : NULL_VALUE; } if (isIterator(iter)) { var err = UNDEF_VALUE; var iterResult = UNDEF_VALUE; try { var count = 0; while (!(iterResult = iter.next()).done) { if (callbackfn[CALL](isStrictNullOrUndefined(thisArg) ? iter : thisArg, iterResult.value, count, iter) === -1) { break; } count++; } } catch (failed) { err = { e: failed }; if (iter.throw) { iterResult = NULL_VALUE; iter.throw(err); } } finally { try { if (iterResult && !iterResult.done) { iter.return && iter.return(iterResult); } } finally { if (err) { throw err.e; } } } } } } function arrAppend(target, elms) { if (!isUndefined(elms) && target) { if (isArray(elms)) { fnApply(target.push, target, elms); } else if (isIterator(elms) || isIterable(elms)) { iterForOf(elms, function (elm) { target.push(elm); }); } else { target.push(elms); } } return target; } var arrAt = /*#__PURE__*/ _unwrapFunctionWithPoly("at", ArrProto, polyArrAt); /*#__NO_SIDE_EFFECTS__*/ function polyArrAt(theArray, index) { var result; if (isArrayLike(theArray)) { var len = theArray.length; var idx = index; if (idx < 0) { idx = len + idx; } if (idx >= 0 && idx < len) { result = theArray[idx]; } } return result; } /*#__NO_SIDE_EFFECTS__*/ function arrChunk(theArray, size) { var result = []; if (isArrayLike(theArray) && size > 0) { var idx_1 = 0; var chunkIdx_1 = -1; arrForEach(theArray, function (item) { if (idx_1 % size === 0) { result.push([]); chunkIdx_1++; } result[chunkIdx_1].push(item); idx_1++; }); } return result; } /*#__NO_SIDE_EFFECTS__*/ function arrCompact(theArray) { var result = []; if (isArrayLike(theArray)) { arrForEach(theArray, function (item) { if (item) { result.push(item); } }); } return result; } var arrIndexOf = ( /*#__PURE__*/_unwrapFunction("indexOf", ArrProto)); var arrLastIndexOf = ( /*#__PURE__*/_unwrapFunction("lastIndexOf", ArrProto)); var arrMap = ( /*#__PURE__*/_unwrapFunction("map", ArrProto)); function arrSlice(theArray, start, end) { return ((theArray ? theArray["slice"] : NULL_VALUE) || ArrSlice).apply(theArray, ArrSlice[CALL](arguments, 1)); } /*#__NO_SIDE_EFFECTS__*/ function polyIsArray(value) { if (isNullOrUndefined(value)) { return false; } return objToString(value) === "[object Array]"; } /*#__NO_SIDE_EFFECTS__*/ function polyArrIncludes(theArray, searchElement, fromIndex) { return arrIndexOf(theArray, searchElement, fromIndex) !== -1; } function polyArrFind(theArray, callbackFn, thisArg) { var result; var idx = polyArrFindIndex(theArray, callbackFn, thisArg); return idx !== -1 ? theArray[idx] : result; } function polyArrFindIndex(theArray, callbackFn, thisArg) { var result = -1; arrForEach(theArray, function (value, index) { if (callbackFn[CALL](isStrictNullOrUndefined(thisArg) ? theArray : thisArg, value, index, theArray)) { result = index; return -1; } }); return result; } function polyArrFindLast(theArray, callbackFn, thisArg) { var result; var idx = polyArrFindLastIndex(theArray, callbackFn, thisArg); return idx !== -1 ? theArray[idx] : result; } function polyArrFindLastIndex(theArray, callbackFn, thisArg) { var result = -1; var len = theArray[LENGTH] >>> 0; for (var idx = len - 1; idx >= 0; idx--) { if (idx in theArray && callbackFn[CALL](isStrictNullOrUndefined(thisArg) ? theArray : thisArg, theArray[idx], idx, theArray)) { result = idx; break; } } return result; } function polyArrFrom(theValue, mapFn, thisArg) { if (isArray(theValue)) { var result_1 = arrSlice(theValue); return mapFn ? arrMap(result_1, mapFn, thisArg) : result_1; } var result = []; iterForOf(theValue, function (value, cnt) { return result.push(mapFn ? mapFn[CALL](thisArg, value, cnt) : value); }); return result; } var arrIncludes = ( /*#__PURE__*/_unwrapFunctionWithPoly("includes", ArrProto, polyArrIncludes)); var arrContains = arrIncludes; /*#__NO_SIDE_EFFECTS__*/ function arrDifference(theArray) { var excludeArrays = []; for (var _i = 1; _i < arguments.length; _i++) { excludeArrays[_i - 1] = arguments[_i]; } var result = []; if (isArrayLike(theArray)) { arrForEach(theArray, function (item) { var excluded = false; for (var lp = 0; lp < excludeArrays.length; lp++) { var exclValue = excludeArrays[lp]; if (isArrayLike(exclValue) && arrIncludes(exclValue, item)) { excluded = true; break; } } if (!excluded) { result.push(item); } }); } return result; } /*#__NO_SIDE_EFFECTS__*/ function arrDrop(theArray, count) { return arrSlice(theArray, mathMax(0, count)); } /*#__NO_SIDE_EFFECTS__*/ function arrDropWhile(theArray, callbackFn, thisArg) { var result; if (isArrayLike(theArray)) { arrForEach(theArray, function (item, index) { if (!fnCall(callbackFn, thisArg, item, index, theArray)) { result = arrSlice(theArray, index); return -1; } }); } return result || []; } var arrEvery = /*#__PURE__*/ _unwrapFunction("every", ArrProto); var arrFilter = /*#__PURE__*/ _unwrapFunction("filter", ArrProto); var getLength = ( /*#__PURE__*/_unwrapProp(LENGTH)); var arrFill = /*#__PURE__*/ _unwrapFunctionWithPoly("fill", ArrProto, polyArrFill); /*#__NO_SIDE_EFFECTS__*/ function polyArrFill(theArray, value, start, end) { if (isArrayLike(theArray)) { var len = getLength(theArray); var startIdx = start === UNDEF_VALUE ? 0 : start; var endIdx = end === UNDEF_VALUE ? len : end; if (startIdx < 0) { startIdx = mathMax(len + startIdx, 0); } else { startIdx = mathMin(startIdx, len); } if (endIdx < 0) { endIdx = mathMax(len + endIdx, 0); } else { endIdx = mathMin(endIdx, len); } for (var i = startIdx; i < endIdx; i++) { theArray[i] = value; } } return theArray; } var arrFind = /*#__PURE__*/ _unwrapFunctionWithPoly("find", ArrProto, polyArrFind); var arrFindIndex = /*#__PURE__*/ _unwrapFunctionWithPoly("findIndex", ArrProto, polyArrFindIndex); var arrFindLast = /*#__PURE__*/ _unwrapFunctionWithPoly("findLast", ArrProto, polyArrFindLast); var arrFindLastIndex = /*#__PURE__*/ _unwrapFunctionWithPoly("findLastIndex", ArrProto, polyArrFindLastIndex); var arrFlatMap = /*#__PURE__*/ _unwrapFunctionWithPoly("flatMap", ArrProto, polyArrFlatMap); /*#__NO_SIDE_EFFECTS__*/ function polyArrFlatMap(theArray, callbackFn, thisArg) { _throwIfNullOrUndefined(theArray); if (!isFunction(callbackFn)) { throwTypeError("callbackFn must be a function"); } var result = []; var callbackThis = arguments.length > 2 ? thisArg : undefined; arrForEach(theArray, function (theValue, index) { var value = fnCall(callbackFn, callbackThis, theValue, index, theArray); if (isArray(value)) { arrForEach(value, function (mappedValue) { result.push(mappedValue); }); } else { result.push(value); } }); return result; } function _addItems(result, arr, d) { var arrLen = arr.length; var arrIdx = 0; while (arrIdx < arrLen) { var item = arr[arrIdx]; if (d > 0 && isArray(item)) { _addItems(result, item, d - 1); } else { result.push(item); } arrIdx++; } } /*#__NO_SIDE_EFFECTS__*/ function arrFlatten(theArray, depth) { var result = []; if (isArrayLike(theArray)) { var d_1 = isUndefined(depth) ? 1 : depth; arrForEach(theArray, function (item) { if (d_1 > 0 && isArray(item)) { _addItems(result, item, d_1 - 1); } else { result.push(item); } }); } return result; } var arrFrom = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ArrCls, "from")), polyArrFrom)); /*#__NO_SIDE_EFFECTS__*/ function arrGroupBy(theArray, callbackFn, thisArg) { var result = {}; if (isArrayLike(theArray) && isFunction(callbackFn)) { arrForEach(theArray, function (item, idx) { var keyVal = callbackFn.call(thisArg, item, idx, theArray); var theKey = isSymbol(keyVal) ? keyVal : asString(keyVal); if (!objHasOwn(result, theKey)) { if (isUnsafePropKey(theKey)) { objDefine(result, theKey, { v: [] }); } else { result[theKey] = []; } } result[theKey].push(item); }); } return result; } function arrIntersection() { var result = []; var theArrays = arguments; if (theArrays.length > 0) { var firstArray = theArrays[0]; if (isArrayLike(firstArray)) { arrForEach(firstArray, function (item) { var inAll = true; arrForEach(theArrays, function (arr, index) { if (index > 0 && !arrIncludes(arr, item)) { inAll = false; return -1; } }); if (inAll && !arrIncludes(result, item)) { result.push(item); } }); } } return result; } var mathFloor = ( /*#__PURE__*/_pureRef(MathCls, "floor")); var mathCeil = ( /*#__PURE__*/_pureRef(MathCls, "ceil")); var mathTrunc = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(MathCls, "trunc")), polyMathTrunc)); /*#__NO_SIDE_EFFECTS__*/ function polyMathTrunc(value) { var theValue = +value; return (theValue > 0 ? mathFloor : mathCeil)(theValue); } /*#__NO_SIDE_EFFECTS__*/ function mathToInt(value, throwInfinity) { var result = +value; if (throwInfinity && (result === Infinity || result == Infinity)) { throwRangeError("invalid value [" + dumpObj(value) + "]"); } return result !== result || result === 0 ? 0 : mathTrunc(result); } /*#__NO_SIDE_EFFECTS__*/ function arrIndexKeys(value) { _throwIfNullOrUndefined(value); var keys = []; var len = mathToInt(getLength(value)); if (len > 0) { for (var lp = 0; lp < len; lp++) { if (objHasOwn(value, lp)) { keys.push(lp); } } } return keys; } /*#__NO_SIDE_EFFECTS__*/ function createIterable(ctx) { return makeIterable({}, ctx); } function makeIterable(target, ctx) { var itSymbol = getKnownSymbol(3 ); function _createIterator() { return createIterator(ctx); } target[itSymbol] = _createIterator; return target; } /*#__NO_SIDE_EFFECTS__*/ function createIterableIterator(ctx) { var iterator = createIterator(ctx); var itSymbol = getKnownSymbol(3 ); function _createIterator() { return iterator; } iterator[itSymbol] = _createIterator; return iterator; } /*#__NO_SIDE_EFFECTS__*/ function createIterator(ctx) { var isDone = false; function _value() { return ctx.v; } function _next() {