@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,397 lines (1,327 loc) • 134 kB
JavaScript
/*! https://github.com/nevware21/ts-utils v0.14.0 */
/*
* Copyright (c) NevWare21 Solutions LLC and contributors. All rights reserved.
* Licensed under the MIT license.
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.nevware21 = global.nevware21 || {}, global.nevware21["ts-utils"] = {})));
})(this, (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() {