- // ==UserScript==
- // @name bgm-wiki-rev-diff
- // @name:zh bangumi 显示 条目 wiki 版本差异
- // @name:zh-CN bangumi 显示 条目 wiki 版本差异
- // @description 显示条目信息版本差异, 可以在 https://github.com/trim21/bgm-tv-userscripts/tree/master/scripts/wiki-rev-diff#readme 查看效果图
- // @description:zh-CN 显示条目信息版本差异, 可以在 https://github.com/trim21/bgm-tv-userscripts/tree/master/scripts/wiki-rev-diff#readme 查看效果图
- // @namespace https://trim21.me/
- // @version 0.2.28
- // @source https://github.com/trim21/bgm-tv-userscripts
- // @supportURL https://github.com/trim21/bgm-tv-userscripts/issues
- // @license MIT
- // @match https://bgm.tv/subject/*/edit*
- // @match https://bangumi.tv/subject/*/edit*
- // @match https://chii.in/subject/*/edit*
- // @require https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js
- // @require https://cdn.jsdelivr.net/npm/diff2html@3.4.51/bundles/js/diff2html.min.js
- // @require https://cdn.jsdelivr.net/npm/diff@7.0.0/dist/diff.min.js
- // @require https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js
- // @resource diff2html https://cdn.jsdelivr.net/npm/diff2html@3.4.51/bundles/css/diff2html.min.css
- // @grant GM.getResourceUrl
- // @grant GM.registerMenuCommand
- // @grant GM.setValue
- // @grant GM.getValue
- // @run-at document-end
- // @author Trim21 <i@trim21.me>
- // ==/UserScript==
-
- /******/ (() => { // webpackBootstrap
- /******/ "use strict";
-
- ;// external "$"
- const external_$_namespaceObject = $;
- ;// ./node_modules/lodash-es/_listCacheClear.js
- /**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
- function listCacheClear() {
- this.__data__ = [];
- this.size = 0;
- }
-
- /* harmony default export */ const _listCacheClear = (listCacheClear);
-
- ;// ./node_modules/lodash-es/eq.js
- /**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
- function eq(value, other) {
- return value === other || (value !== value && other !== other);
- }
-
- /* harmony default export */ const lodash_es_eq = (eq);
-
- ;// ./node_modules/lodash-es/_assocIndexOf.js
-
-
- /**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function assocIndexOf(array, key) {
- var length = array.length;
- while (length--) {
- if (lodash_es_eq(array[length][0], key)) {
- return length;
- }
- }
- return -1;
- }
-
- /* harmony default export */ const _assocIndexOf = (assocIndexOf);
-
- ;// ./node_modules/lodash-es/_listCacheDelete.js
-
-
- /** Used for built-in method references. */
- var arrayProto = Array.prototype;
-
- /** Built-in value references. */
- var splice = arrayProto.splice;
-
- /**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function listCacheDelete(key) {
- var data = this.__data__,
- index = _assocIndexOf(data, key);
-
- if (index < 0) {
- return false;
- }
- var lastIndex = data.length - 1;
- if (index == lastIndex) {
- data.pop();
- } else {
- splice.call(data, index, 1);
- }
- --this.size;
- return true;
- }
-
- /* harmony default export */ const _listCacheDelete = (listCacheDelete);
-
- ;// ./node_modules/lodash-es/_listCacheGet.js
-
-
- /**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function listCacheGet(key) {
- var data = this.__data__,
- index = _assocIndexOf(data, key);
-
- return index < 0 ? undefined : data[index][1];
- }
-
- /* harmony default export */ const _listCacheGet = (listCacheGet);
-
- ;// ./node_modules/lodash-es/_listCacheHas.js
-
-
- /**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function listCacheHas(key) {
- return _assocIndexOf(this.__data__, key) > -1;
- }
-
- /* harmony default export */ const _listCacheHas = (listCacheHas);
-
- ;// ./node_modules/lodash-es/_listCacheSet.js
-
-
- /**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
- function listCacheSet(key, value) {
- var data = this.__data__,
- index = _assocIndexOf(data, key);
-
- if (index < 0) {
- ++this.size;
- data.push([key, value]);
- } else {
- data[index][1] = value;
- }
- return this;
- }
-
- /* harmony default export */ const _listCacheSet = (listCacheSet);
-
- ;// ./node_modules/lodash-es/_ListCache.js
-
-
-
-
-
-
- /**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function ListCache(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
- }
-
- // Add methods to `ListCache`.
- ListCache.prototype.clear = _listCacheClear;
- ListCache.prototype['delete'] = _listCacheDelete;
- ListCache.prototype.get = _listCacheGet;
- ListCache.prototype.has = _listCacheHas;
- ListCache.prototype.set = _listCacheSet;
-
- /* harmony default export */ const _ListCache = (ListCache);
-
- ;// ./node_modules/lodash-es/_stackClear.js
-
-
- /**
- * Removes all key-value entries from the stack.
- *
- * @private
- * @name clear
- * @memberOf Stack
- */
- function stackClear() {
- this.__data__ = new _ListCache;
- this.size = 0;
- }
-
- /* harmony default export */ const _stackClear = (stackClear);
-
- ;// ./node_modules/lodash-es/_stackDelete.js
- /**
- * Removes `key` and its value from the stack.
- *
- * @private
- * @name delete
- * @memberOf Stack
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function stackDelete(key) {
- var data = this.__data__,
- result = data['delete'](key);
-
- this.size = data.size;
- return result;
- }
-
- /* harmony default export */ const _stackDelete = (stackDelete);
-
- ;// ./node_modules/lodash-es/_stackGet.js
- /**
- * Gets the stack value for `key`.
- *
- * @private
- * @name get
- * @memberOf Stack
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function stackGet(key) {
- return this.__data__.get(key);
- }
-
- /* harmony default export */ const _stackGet = (stackGet);
-
- ;// ./node_modules/lodash-es/_stackHas.js
- /**
- * Checks if a stack value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Stack
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function stackHas(key) {
- return this.__data__.has(key);
- }
-
- /* harmony default export */ const _stackHas = (stackHas);
-
- ;// ./node_modules/lodash-es/_freeGlobal.js
- /** Detect free variable `global` from Node.js. */
- var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
- /* harmony default export */ const _freeGlobal = (freeGlobal);
-
- ;// ./node_modules/lodash-es/_root.js
-
-
- /** Detect free variable `self`. */
- var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
- /** Used as a reference to the global object. */
- var root = _freeGlobal || freeSelf || Function('return this')();
-
- /* harmony default export */ const _root = (root);
-
- ;// ./node_modules/lodash-es/_Symbol.js
-
-
- /** Built-in value references. */
- var _Symbol_Symbol = _root.Symbol;
-
- /* harmony default export */ const _Symbol = (_Symbol_Symbol);
-
- ;// ./node_modules/lodash-es/_getRawTag.js
-
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var _getRawTag_hasOwnProperty = objectProto.hasOwnProperty;
-
- /**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
- var nativeObjectToString = objectProto.toString;
-
- /** Built-in value references. */
- var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
-
- /**
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the raw `toStringTag`.
- */
- function getRawTag(value) {
- var isOwn = _getRawTag_hasOwnProperty.call(value, symToStringTag),
- tag = value[symToStringTag];
-
- try {
- value[symToStringTag] = undefined;
- var unmasked = true;
- } catch (e) {}
-
- var result = nativeObjectToString.call(value);
- if (unmasked) {
- if (isOwn) {
- value[symToStringTag] = tag;
- } else {
- delete value[symToStringTag];
- }
- }
- return result;
- }
-
- /* harmony default export */ const _getRawTag = (getRawTag);
-
- ;// ./node_modules/lodash-es/_objectToString.js
- /** Used for built-in method references. */
- var _objectToString_objectProto = Object.prototype;
-
- /**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
- var _objectToString_nativeObjectToString = _objectToString_objectProto.toString;
-
- /**
- * Converts `value` to a string using `Object.prototype.toString`.
- *
- * @private
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- */
- function objectToString(value) {
- return _objectToString_nativeObjectToString.call(value);
- }
-
- /* harmony default export */ const _objectToString = (objectToString);
-
- ;// ./node_modules/lodash-es/_baseGetTag.js
-
-
-
-
- /** `Object#toString` result references. */
- var nullTag = '[object Null]',
- undefinedTag = '[object Undefined]';
-
- /** Built-in value references. */
- var _baseGetTag_symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
-
- /**
- * The base implementation of `getTag` without fallbacks for buggy environments.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
- function baseGetTag(value) {
- if (value == null) {
- return value === undefined ? undefinedTag : nullTag;
- }
- return (_baseGetTag_symToStringTag && _baseGetTag_symToStringTag in Object(value))
- ? _getRawTag(value)
- : _objectToString(value);
- }
-
- /* harmony default export */ const _baseGetTag = (baseGetTag);
-
- ;// ./node_modules/lodash-es/isObject.js
- /**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
- function isObject(value) {
- var type = typeof value;
- return value != null && (type == 'object' || type == 'function');
- }
-
- /* harmony default export */ const lodash_es_isObject = (isObject);
-
- ;// ./node_modules/lodash-es/isFunction.js
-
-
-
- /** `Object#toString` result references. */
- var asyncTag = '[object AsyncFunction]',
- funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]',
- proxyTag = '[object Proxy]';
-
- /**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
- function isFunction(value) {
- if (!lodash_es_isObject(value)) {
- return false;
- }
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 9 which returns 'object' for typed arrays and other constructors.
- var tag = _baseGetTag(value);
- return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
- }
-
- /* harmony default export */ const lodash_es_isFunction = (isFunction);
-
- ;// ./node_modules/lodash-es/_coreJsData.js
-
-
- /** Used to detect overreaching core-js shims. */
- var coreJsData = _root['__core-js_shared__'];
-
- /* harmony default export */ const _coreJsData = (coreJsData);
-
- ;// ./node_modules/lodash-es/_isMasked.js
-
-
- /** Used to detect methods masquerading as native. */
- var maskSrcKey = (function() {
- var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');
- return uid ? ('Symbol(src)_1.' + uid) : '';
- }());
-
- /**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
- function isMasked(func) {
- return !!maskSrcKey && (maskSrcKey in func);
- }
-
- /* harmony default export */ const _isMasked = (isMasked);
-
- ;// ./node_modules/lodash-es/_toSource.js
- /** Used for built-in method references. */
- var funcProto = Function.prototype;
-
- /** Used to resolve the decompiled source of functions. */
- var funcToString = funcProto.toString;
-
- /**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to convert.
- * @returns {string} Returns the source code.
- */
- function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
- }
-
- /* harmony default export */ const _toSource = (toSource);
-
- ;// ./node_modules/lodash-es/_baseIsNative.js
-
-
-
-
-
- /**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
- var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
- /** Used to detect host constructors (Safari). */
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
- /** Used for built-in method references. */
- var _baseIsNative_funcProto = Function.prototype,
- _baseIsNative_objectProto = Object.prototype;
-
- /** Used to resolve the decompiled source of functions. */
- var _baseIsNative_funcToString = _baseIsNative_funcProto.toString;
-
- /** Used to check objects for own properties. */
- var _baseIsNative_hasOwnProperty = _baseIsNative_objectProto.hasOwnProperty;
-
- /** Used to detect if a method is native. */
- var reIsNative = RegExp('^' +
- _baseIsNative_funcToString.call(_baseIsNative_hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
- );
-
- /**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */
- function baseIsNative(value) {
- if (!lodash_es_isObject(value) || _isMasked(value)) {
- return false;
- }
- var pattern = lodash_es_isFunction(value) ? reIsNative : reIsHostCtor;
- return pattern.test(_toSource(value));
- }
-
- /* harmony default export */ const _baseIsNative = (baseIsNative);
-
- ;// ./node_modules/lodash-es/_getValue.js
- /**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
- function getValue(object, key) {
- return object == null ? undefined : object[key];
- }
-
- /* harmony default export */ const _getValue = (getValue);
-
- ;// ./node_modules/lodash-es/_getNative.js
-
-
-
- /**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
- function getNative(object, key) {
- var value = _getValue(object, key);
- return _baseIsNative(value) ? value : undefined;
- }
-
- /* harmony default export */ const _getNative = (getNative);
-
- ;// ./node_modules/lodash-es/_Map.js
-
-
-
- /* Built-in method references that are verified to be native. */
- var Map = _getNative(_root, 'Map');
-
- /* harmony default export */ const _Map = (Map);
-
- ;// ./node_modules/lodash-es/_nativeCreate.js
-
-
- /* Built-in method references that are verified to be native. */
- var nativeCreate = _getNative(Object, 'create');
-
- /* harmony default export */ const _nativeCreate = (nativeCreate);
-
- ;// ./node_modules/lodash-es/_hashClear.js
-
-
- /**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
- function hashClear() {
- this.__data__ = _nativeCreate ? _nativeCreate(null) : {};
- this.size = 0;
- }
-
- /* harmony default export */ const _hashClear = (hashClear);
-
- ;// ./node_modules/lodash-es/_hashDelete.js
- /**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function hashDelete(key) {
- var result = this.has(key) && delete this.__data__[key];
- this.size -= result ? 1 : 0;
- return result;
- }
-
- /* harmony default export */ const _hashDelete = (hashDelete);
-
- ;// ./node_modules/lodash-es/_hashGet.js
-
-
- /** Used to stand-in for `undefined` hash values. */
- var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
- /** Used for built-in method references. */
- var _hashGet_objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var _hashGet_hasOwnProperty = _hashGet_objectProto.hasOwnProperty;
-
- /**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function hashGet(key) {
- var data = this.__data__;
- if (_nativeCreate) {
- var result = data[key];
- return result === HASH_UNDEFINED ? undefined : result;
- }
- return _hashGet_hasOwnProperty.call(data, key) ? data[key] : undefined;
- }
-
- /* harmony default export */ const _hashGet = (hashGet);
-
- ;// ./node_modules/lodash-es/_hashHas.js
-
-
- /** Used for built-in method references. */
- var _hashHas_objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var _hashHas_hasOwnProperty = _hashHas_objectProto.hasOwnProperty;
-
- /**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function hashHas(key) {
- var data = this.__data__;
- return _nativeCreate ? (data[key] !== undefined) : _hashHas_hasOwnProperty.call(data, key);
- }
-
- /* harmony default export */ const _hashHas = (hashHas);
-
- ;// ./node_modules/lodash-es/_hashSet.js
-
-
- /** Used to stand-in for `undefined` hash values. */
- var _hashSet_HASH_UNDEFINED = '__lodash_hash_undefined__';
-
- /**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
- function hashSet(key, value) {
- var data = this.__data__;
- this.size += this.has(key) ? 0 : 1;
- data[key] = (_nativeCreate && value === undefined) ? _hashSet_HASH_UNDEFINED : value;
- return this;
- }
-
- /* harmony default export */ const _hashSet = (hashSet);
-
- ;// ./node_modules/lodash-es/_Hash.js
-
-
-
-
-
-
- /**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function Hash(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
- }
-
- // Add methods to `Hash`.
- Hash.prototype.clear = _hashClear;
- Hash.prototype['delete'] = _hashDelete;
- Hash.prototype.get = _hashGet;
- Hash.prototype.has = _hashHas;
- Hash.prototype.set = _hashSet;
-
- /* harmony default export */ const _Hash = (Hash);
-
- ;// ./node_modules/lodash-es/_mapCacheClear.js
-
-
-
-
- /**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
- function mapCacheClear() {
- this.size = 0;
- this.__data__ = {
- 'hash': new _Hash,
- 'map': new (_Map || _ListCache),
- 'string': new _Hash
- };
- }
-
- /* harmony default export */ const _mapCacheClear = (mapCacheClear);
-
- ;// ./node_modules/lodash-es/_isKeyable.js
- /**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
- function isKeyable(value) {
- var type = typeof value;
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
- ? (value !== '__proto__')
- : (value === null);
- }
-
- /* harmony default export */ const _isKeyable = (isKeyable);
-
- ;// ./node_modules/lodash-es/_getMapData.js
-
-
- /**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
- function getMapData(map, key) {
- var data = map.__data__;
- return _isKeyable(key)
- ? data[typeof key == 'string' ? 'string' : 'hash']
- : data.map;
- }
-
- /* harmony default export */ const _getMapData = (getMapData);
-
- ;// ./node_modules/lodash-es/_mapCacheDelete.js
-
-
- /**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function mapCacheDelete(key) {
- var result = _getMapData(this, key)['delete'](key);
- this.size -= result ? 1 : 0;
- return result;
- }
-
- /* harmony default export */ const _mapCacheDelete = (mapCacheDelete);
-
- ;// ./node_modules/lodash-es/_mapCacheGet.js
-
-
- /**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function mapCacheGet(key) {
- return _getMapData(this, key).get(key);
- }
-
- /* harmony default export */ const _mapCacheGet = (mapCacheGet);
-
- ;// ./node_modules/lodash-es/_mapCacheHas.js
-
-
- /**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function mapCacheHas(key) {
- return _getMapData(this, key).has(key);
- }
-
- /* harmony default export */ const _mapCacheHas = (mapCacheHas);
-
- ;// ./node_modules/lodash-es/_mapCacheSet.js
-
-
- /**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
- function mapCacheSet(key, value) {
- var data = _getMapData(this, key),
- size = data.size;
-
- data.set(key, value);
- this.size += data.size == size ? 0 : 1;
- return this;
- }
-
- /* harmony default export */ const _mapCacheSet = (mapCacheSet);
-
- ;// ./node_modules/lodash-es/_MapCache.js
-
-
-
-
-
-
- /**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function MapCache(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
- }
-
- // Add methods to `MapCache`.
- MapCache.prototype.clear = _mapCacheClear;
- MapCache.prototype['delete'] = _mapCacheDelete;
- MapCache.prototype.get = _mapCacheGet;
- MapCache.prototype.has = _mapCacheHas;
- MapCache.prototype.set = _mapCacheSet;
-
- /* harmony default export */ const _MapCache = (MapCache);
-
- ;// ./node_modules/lodash-es/_stackSet.js
-
-
-
-
- /** Used as the size to enable large array optimizations. */
- var LARGE_ARRAY_SIZE = 200;
-
- /**
- * Sets the stack `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Stack
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the stack cache instance.
- */
- function stackSet(key, value) {
- var data = this.__data__;
- if (data instanceof _ListCache) {
- var pairs = data.__data__;
- if (!_Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
- pairs.push([key, value]);
- this.size = ++data.size;
- return this;
- }
- data = this.__data__ = new _MapCache(pairs);
- }
- data.set(key, value);
- this.size = data.size;
- return this;
- }
-
- /* harmony default export */ const _stackSet = (stackSet);
-
- ;// ./node_modules/lodash-es/_Stack.js
-
-
-
-
-
-
-
- /**
- * Creates a stack cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function Stack(entries) {
- var data = this.__data__ = new _ListCache(entries);
- this.size = data.size;
- }
-
- // Add methods to `Stack`.
- Stack.prototype.clear = _stackClear;
- Stack.prototype['delete'] = _stackDelete;
- Stack.prototype.get = _stackGet;
- Stack.prototype.has = _stackHas;
- Stack.prototype.set = _stackSet;
-
- /* harmony default export */ const _Stack = (Stack);
-
- ;// ./node_modules/lodash-es/_setCacheAdd.js
- /** Used to stand-in for `undefined` hash values. */
- var _setCacheAdd_HASH_UNDEFINED = '__lodash_hash_undefined__';
-
- /**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
- function setCacheAdd(value) {
- this.__data__.set(value, _setCacheAdd_HASH_UNDEFINED);
- return this;
- }
-
- /* harmony default export */ const _setCacheAdd = (setCacheAdd);
-
- ;// ./node_modules/lodash-es/_setCacheHas.js
- /**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */
- function setCacheHas(value) {
- return this.__data__.has(value);
- }
-
- /* harmony default export */ const _setCacheHas = (setCacheHas);
-
- ;// ./node_modules/lodash-es/_SetCache.js
-
-
-
-
- /**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
- function SetCache(values) {
- var index = -1,
- length = values == null ? 0 : values.length;
-
- this.__data__ = new _MapCache;
- while (++index < length) {
- this.add(values[index]);
- }
- }
-
- // Add methods to `SetCache`.
- SetCache.prototype.add = SetCache.prototype.push = _setCacheAdd;
- SetCache.prototype.has = _setCacheHas;
-
- /* harmony default export */ const _SetCache = (SetCache);
-
- ;// ./node_modules/lodash-es/_arraySome.js
- /**
- * A specialized version of `_.some` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- */
- function arraySome(array, predicate) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- if (predicate(array[index], index, array)) {
- return true;
- }
- }
- return false;
- }
-
- /* harmony default export */ const _arraySome = (arraySome);
-
- ;// ./node_modules/lodash-es/_cacheHas.js
- /**
- * Checks if a `cache` value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function cacheHas(cache, key) {
- return cache.has(key);
- }
-
- /* harmony default export */ const _cacheHas = (cacheHas);
-
- ;// ./node_modules/lodash-es/_equalArrays.js
-
-
-
-
- /** Used to compose bitmasks for value comparisons. */
- var COMPARE_PARTIAL_FLAG = 1,
- COMPARE_UNORDERED_FLAG = 2;
-
- /**
- * A specialized version of `baseIsEqualDeep` for arrays with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Array} array The array to compare.
- * @param {Array} other The other array to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `array` and `other` objects.
- * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
- */
- function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
- arrLength = array.length,
- othLength = other.length;
-
- if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
- return false;
- }
- // Check that cyclic values are equal.
- var arrStacked = stack.get(array);
- var othStacked = stack.get(other);
- if (arrStacked && othStacked) {
- return arrStacked == other && othStacked == array;
- }
- var index = -1,
- result = true,
- seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new _SetCache : undefined;
-
- stack.set(array, other);
- stack.set(other, array);
-
- // Ignore non-index properties.
- while (++index < arrLength) {
- var arrValue = array[index],
- othValue = other[index];
-
- if (customizer) {
- var compared = isPartial
- ? customizer(othValue, arrValue, index, other, array, stack)
- : customizer(arrValue, othValue, index, array, other, stack);
- }
- if (compared !== undefined) {
- if (compared) {
- continue;
- }
- result = false;
- break;
- }
- // Recursively compare arrays (susceptible to call stack limits).
- if (seen) {
- if (!_arraySome(other, function(othValue, othIndex) {
- if (!_cacheHas(seen, othIndex) &&
- (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
- return seen.push(othIndex);
- }
- })) {
- result = false;
- break;
- }
- } else if (!(
- arrValue === othValue ||
- equalFunc(arrValue, othValue, bitmask, customizer, stack)
- )) {
- result = false;
- break;
- }
- }
- stack['delete'](array);
- stack['delete'](other);
- return result;
- }
-
- /* harmony default export */ const _equalArrays = (equalArrays);
-
- ;// ./node_modules/lodash-es/_Uint8Array.js
-
-
- /** Built-in value references. */
- var Uint8Array = _root.Uint8Array;
-
- /* harmony default export */ const _Uint8Array = (Uint8Array);
-
- ;// ./node_modules/lodash-es/_mapToArray.js
- /**
- * Converts `map` to its key-value pairs.
- *
- * @private
- * @param {Object} map The map to convert.
- * @returns {Array} Returns the key-value pairs.
- */
- function mapToArray(map) {
- var index = -1,
- result = Array(map.size);
-
- map.forEach(function(value, key) {
- result[++index] = [key, value];
- });
- return result;
- }
-
- /* harmony default export */ const _mapToArray = (mapToArray);
-
- ;// ./node_modules/lodash-es/_setToArray.js
- /**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */
- function setToArray(set) {
- var index = -1,
- result = Array(set.size);
-
- set.forEach(function(value) {
- result[++index] = value;
- });
- return result;
- }
-
- /* harmony default export */ const _setToArray = (setToArray);
-
- ;// ./node_modules/lodash-es/_equalByTag.js
-
-
-
-
-
-
-
- /** Used to compose bitmasks for value comparisons. */
- var _equalByTag_COMPARE_PARTIAL_FLAG = 1,
- _equalByTag_COMPARE_UNORDERED_FLAG = 2;
-
- /** `Object#toString` result references. */
- var boolTag = '[object Boolean]',
- dateTag = '[object Date]',
- errorTag = '[object Error]',
- mapTag = '[object Map]',
- numberTag = '[object Number]',
- regexpTag = '[object RegExp]',
- setTag = '[object Set]',
- stringTag = '[object String]',
- symbolTag = '[object Symbol]';
-
- var arrayBufferTag = '[object ArrayBuffer]',
- dataViewTag = '[object DataView]';
-
- /** Used to convert symbols to primitives and strings. */
- var symbolProto = _Symbol ? _Symbol.prototype : undefined,
- symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
-
- /**
- * A specialized version of `baseIsEqualDeep` for comparing objects of
- * the same `toStringTag`.
- *
- * **Note:** This function only supports comparing values with tags of
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {string} tag The `toStringTag` of the objects to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
- switch (tag) {
- case dataViewTag:
- if ((object.byteLength != other.byteLength) ||
- (object.byteOffset != other.byteOffset)) {
- return false;
- }
- object = object.buffer;
- other = other.buffer;
-
- case arrayBufferTag:
- if ((object.byteLength != other.byteLength) ||
- !equalFunc(new _Uint8Array(object), new _Uint8Array(other))) {
- return false;
- }
- return true;
-
- case boolTag:
- case dateTag:
- case numberTag:
- // Coerce booleans to `1` or `0` and dates to milliseconds.
- // Invalid dates are coerced to `NaN`.
- return lodash_es_eq(+object, +other);
-
- case errorTag:
- return object.name == other.name && object.message == other.message;
-
- case regexpTag:
- case stringTag:
- // Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
- // for more details.
- return object == (other + '');
-
- case mapTag:
- var convert = _mapToArray;
-
- case setTag:
- var isPartial = bitmask & _equalByTag_COMPARE_PARTIAL_FLAG;
- convert || (convert = _setToArray);
-
- if (object.size != other.size && !isPartial) {
- return false;
- }
- // Assume cyclic values are equal.
- var stacked = stack.get(object);
- if (stacked) {
- return stacked == other;
- }
- bitmask |= _equalByTag_COMPARE_UNORDERED_FLAG;
-
- // Recursively compare objects (susceptible to call stack limits).
- stack.set(object, other);
- var result = _equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
- stack['delete'](object);
- return result;
-
- case symbolTag:
- if (symbolValueOf) {
- return symbolValueOf.call(object) == symbolValueOf.call(other);
- }
- }
- return false;
- }
-
- /* harmony default export */ const _equalByTag = (equalByTag);
-
- ;// ./node_modules/lodash-es/_arrayPush.js
- /**
- * Appends the elements of `values` to `array`.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to append.
- * @returns {Array} Returns `array`.
- */
- function arrayPush(array, values) {
- var index = -1,
- length = values.length,
- offset = array.length;
-
- while (++index < length) {
- array[offset + index] = values[index];
- }
- return array;
- }
-
- /* harmony default export */ const _arrayPush = (arrayPush);
-
- ;// ./node_modules/lodash-es/isArray.js
- /**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
- var isArray = Array.isArray;
-
- /* harmony default export */ const lodash_es_isArray = (isArray);
-
- ;// ./node_modules/lodash-es/_baseGetAllKeys.js
-
-
-
- /**
- * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
- * `keysFunc` and `symbolsFunc` to get the enumerable property names and
- * symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @param {Function} symbolsFunc The function to get the symbols of `object`.
- * @returns {Array} Returns the array of property names and symbols.
- */
- function baseGetAllKeys(object, keysFunc, symbolsFunc) {
- var result = keysFunc(object);
- return lodash_es_isArray(object) ? result : _arrayPush(result, symbolsFunc(object));
- }
-
- /* harmony default export */ const _baseGetAllKeys = (baseGetAllKeys);
-
- ;// ./node_modules/lodash-es/_arrayFilter.js
- /**
- * A specialized version of `_.filter` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- */
- function arrayFilter(array, predicate) {
- var index = -1,
- length = array == null ? 0 : array.length,
- resIndex = 0,
- result = [];
-
- while (++index < length) {
- var value = array[index];
- if (predicate(value, index, array)) {
- result[resIndex++] = value;
- }
- }
- return result;
- }
-
- /* harmony default export */ const _arrayFilter = (arrayFilter);
-
- ;// ./node_modules/lodash-es/stubArray.js
- /**
- * This method returns a new empty array.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {Array} Returns the new empty array.
- * @example
- *
- * var arrays = _.times(2, _.stubArray);
- *
- * console.log(arrays);
- * // => [[], []]
- *
- * console.log(arrays[0] === arrays[1]);
- * // => false
- */
- function stubArray() {
- return [];
- }
-
- /* harmony default export */ const lodash_es_stubArray = (stubArray);
-
- ;// ./node_modules/lodash-es/_getSymbols.js
-
-
-
- /** Used for built-in method references. */
- var _getSymbols_objectProto = Object.prototype;
-
- /** Built-in value references. */
- var propertyIsEnumerable = _getSymbols_objectProto.propertyIsEnumerable;
-
- /* Built-in method references for those with the same name as other `lodash` methods. */
- var nativeGetSymbols = Object.getOwnPropertySymbols;
-
- /**
- * Creates an array of the own enumerable symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */
- var getSymbols = !nativeGetSymbols ? lodash_es_stubArray : function(object) {
- if (object == null) {
- return [];
- }
- object = Object(object);
- return _arrayFilter(nativeGetSymbols(object), function(symbol) {
- return propertyIsEnumerable.call(object, symbol);
- });
- };
-
- /* harmony default export */ const _getSymbols = (getSymbols);
-
- ;// ./node_modules/lodash-es/_baseTimes.js
- /**
- * The base implementation of `_.times` without support for iteratee shorthands
- * or max array length checks.
- *
- * @private
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- */
- function baseTimes(n, iteratee) {
- var index = -1,
- result = Array(n);
-
- while (++index < n) {
- result[index] = iteratee(index);
- }
- return result;
- }
-
- /* harmony default export */ const _baseTimes = (baseTimes);
-
- ;// ./node_modules/lodash-es/isObjectLike.js
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- function isObjectLike(value) {
- return value != null && typeof value == 'object';
- }
-
- /* harmony default export */ const lodash_es_isObjectLike = (isObjectLike);
-
- ;// ./node_modules/lodash-es/_baseIsArguments.js
-
-
-
- /** `Object#toString` result references. */
- var argsTag = '[object Arguments]';
-
- /**
- * The base implementation of `_.isArguments`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- */
- function baseIsArguments(value) {
- return lodash_es_isObjectLike(value) && _baseGetTag(value) == argsTag;
- }
-
- /* harmony default export */ const _baseIsArguments = (baseIsArguments);
-
- ;// ./node_modules/lodash-es/isArguments.js
-
-
-
- /** Used for built-in method references. */
- var isArguments_objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var isArguments_hasOwnProperty = isArguments_objectProto.hasOwnProperty;
-
- /** Built-in value references. */
- var isArguments_propertyIsEnumerable = isArguments_objectProto.propertyIsEnumerable;
-
- /**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- * else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
- var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {
- return lodash_es_isObjectLike(value) && isArguments_hasOwnProperty.call(value, 'callee') &&
- !isArguments_propertyIsEnumerable.call(value, 'callee');
- };
-
- /* harmony default export */ const lodash_es_isArguments = (isArguments);
-
- ;// ./node_modules/lodash-es/stubFalse.js
- /**
- * This method returns `false`.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {boolean} Returns `false`.
- * @example
- *
- * _.times(2, _.stubFalse);
- * // => [false, false]
- */
- function stubFalse() {
- return false;
- }
-
- /* harmony default export */ const lodash_es_stubFalse = (stubFalse);
-
- ;// ./node_modules/lodash-es/isBuffer.js
-
-
-
- /** Detect free variable `exports`. */
- var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
- /** Detect free variable `module`. */
- var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
- /** Detect the popular CommonJS extension `module.exports`. */
- var moduleExports = freeModule && freeModule.exports === freeExports;
-
- /** Built-in value references. */
- var Buffer = moduleExports ? _root.Buffer : undefined;
-
- /* Built-in method references for those with the same name as other `lodash` methods. */
- var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
-
- /**
- * Checks if `value` is a buffer.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
- * @example
- *
- * _.isBuffer(new Buffer(2));
- * // => true
- *
- * _.isBuffer(new Uint8Array(2));
- * // => false
- */
- var isBuffer = nativeIsBuffer || lodash_es_stubFalse;
-
- /* harmony default export */ const lodash_es_isBuffer = (isBuffer);
-
- ;// ./node_modules/lodash-es/_isIndex.js
- /** Used as references for various `Number` constants. */
- var MAX_SAFE_INTEGER = 9007199254740991;
-
- /** Used to detect unsigned integer values. */
- var reIsUint = /^(?:0|[1-9]\d*)$/;
-
- /**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
- function isIndex(value, length) {
- var type = typeof value;
- length = length == null ? MAX_SAFE_INTEGER : length;
-
- return !!length &&
- (type == 'number' ||
- (type != 'symbol' && reIsUint.test(value))) &&
- (value > -1 && value % 1 == 0 && value < length);
- }
-
- /* harmony default export */ const _isIndex = (isIndex);
-
- ;// ./node_modules/lodash-es/isLength.js
- /** Used as references for various `Number` constants. */
- var isLength_MAX_SAFE_INTEGER = 9007199254740991;
-
- /**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
- function isLength(value) {
- return typeof value == 'number' &&
- value > -1 && value % 1 == 0 && value <= isLength_MAX_SAFE_INTEGER;
- }
-
- /* harmony default export */ const lodash_es_isLength = (isLength);
-
- ;// ./node_modules/lodash-es/_baseIsTypedArray.js
-
-
-
-
- /** `Object#toString` result references. */
- var _baseIsTypedArray_argsTag = '[object Arguments]',
- arrayTag = '[object Array]',
- _baseIsTypedArray_boolTag = '[object Boolean]',
- _baseIsTypedArray_dateTag = '[object Date]',
- _baseIsTypedArray_errorTag = '[object Error]',
- _baseIsTypedArray_funcTag = '[object Function]',
- _baseIsTypedArray_mapTag = '[object Map]',
- _baseIsTypedArray_numberTag = '[object Number]',
- objectTag = '[object Object]',
- _baseIsTypedArray_regexpTag = '[object RegExp]',
- _baseIsTypedArray_setTag = '[object Set]',
- _baseIsTypedArray_stringTag = '[object String]',
- weakMapTag = '[object WeakMap]';
-
- var _baseIsTypedArray_arrayBufferTag = '[object ArrayBuffer]',
- _baseIsTypedArray_dataViewTag = '[object DataView]',
- float32Tag = '[object Float32Array]',
- float64Tag = '[object Float64Array]',
- int8Tag = '[object Int8Array]',
- int16Tag = '[object Int16Array]',
- int32Tag = '[object Int32Array]',
- uint8Tag = '[object Uint8Array]',
- uint8ClampedTag = '[object Uint8ClampedArray]',
- uint16Tag = '[object Uint16Array]',
- uint32Tag = '[object Uint32Array]';
-
- /** Used to identify `toStringTag` values of typed arrays. */
- var typedArrayTags = {};
- typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
- typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
- typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
- typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
- typedArrayTags[uint32Tag] = true;
- typedArrayTags[_baseIsTypedArray_argsTag] = typedArrayTags[arrayTag] =
- typedArrayTags[_baseIsTypedArray_arrayBufferTag] = typedArrayTags[_baseIsTypedArray_boolTag] =
- typedArrayTags[_baseIsTypedArray_dataViewTag] = typedArrayTags[_baseIsTypedArray_dateTag] =
- typedArrayTags[_baseIsTypedArray_errorTag] = typedArrayTags[_baseIsTypedArray_funcTag] =
- typedArrayTags[_baseIsTypedArray_mapTag] = typedArrayTags[_baseIsTypedArray_numberTag] =
- typedArrayTags[objectTag] = typedArrayTags[_baseIsTypedArray_regexpTag] =
- typedArrayTags[_baseIsTypedArray_setTag] = typedArrayTags[_baseIsTypedArray_stringTag] =
- typedArrayTags[weakMapTag] = false;
-
- /**
- * The base implementation of `_.isTypedArray` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- */
- function baseIsTypedArray(value) {
- return lodash_es_isObjectLike(value) &&
- lodash_es_isLength(value.length) && !!typedArrayTags[_baseGetTag(value)];
- }
-
- /* harmony default export */ const _baseIsTypedArray = (baseIsTypedArray);
-
- ;// ./node_modules/lodash-es/_baseUnary.js
- /**
- * The base implementation of `_.unary` without support for storing metadata.
- *
- * @private
- * @param {Function} func The function to cap arguments for.
- * @returns {Function} Returns the new capped function.
- */
- function baseUnary(func) {
- return function(value) {
- return func(value);
- };
- }
-
- /* harmony default export */ const _baseUnary = (baseUnary);
-
- ;// ./node_modules/lodash-es/_nodeUtil.js
-
-
- /** Detect free variable `exports`. */
- var _nodeUtil_freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
- /** Detect free variable `module`. */
- var _nodeUtil_freeModule = _nodeUtil_freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
- /** Detect the popular CommonJS extension `module.exports`. */
- var _nodeUtil_moduleExports = _nodeUtil_freeModule && _nodeUtil_freeModule.exports === _nodeUtil_freeExports;
-
- /** Detect free variable `process` from Node.js. */
- var freeProcess = _nodeUtil_moduleExports && _freeGlobal.process;
-
- /** Used to access faster Node.js helpers. */
- var nodeUtil = (function() {
- try {
- // Use `util.types` for Node.js 10+.
- var types = _nodeUtil_freeModule && _nodeUtil_freeModule.require && _nodeUtil_freeModule.require('util').types;
-
- if (types) {
- return types;
- }
-
- // Legacy `process.binding('util')` for Node.js < 10.
- return freeProcess && freeProcess.binding && freeProcess.binding('util');
- } catch (e) {}
- }());
-
- /* harmony default export */ const _nodeUtil = (nodeUtil);
-
- ;// ./node_modules/lodash-es/isTypedArray.js
-
-
-
-
- /* Node.js helper references. */
- var nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;
-
- /**
- * Checks if `value` is classified as a typed array.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- * @example
- *
- * _.isTypedArray(new Uint8Array);
- * // => true
- *
- * _.isTypedArray([]);
- * // => false
- */
- var isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;
-
- /* harmony default export */ const lodash_es_isTypedArray = (isTypedArray);
-
- ;// ./node_modules/lodash-es/_arrayLikeKeys.js
-
-
-
-
-
-
-
- /** Used for built-in method references. */
- var _arrayLikeKeys_objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var _arrayLikeKeys_hasOwnProperty = _arrayLikeKeys_objectProto.hasOwnProperty;
-
- /**
- * Creates an array of the enumerable property names of the array-like `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @param {boolean} inherited Specify returning inherited property names.
- * @returns {Array} Returns the array of property names.
- */
- function arrayLikeKeys(value, inherited) {
- var isArr = lodash_es_isArray(value),
- isArg = !isArr && lodash_es_isArguments(value),
- isBuff = !isArr && !isArg && lodash_es_isBuffer(value),
- isType = !isArr && !isArg && !isBuff && lodash_es_isTypedArray(value),
- skipIndexes = isArr || isArg || isBuff || isType,
- result = skipIndexes ? _baseTimes(value.length, String) : [],
- length = result.length;
-
- for (var key in value) {
- if ((inherited || _arrayLikeKeys_hasOwnProperty.call(value, key)) &&
- !(skipIndexes && (
- // Safari 9 has enumerable `arguments.length` in strict mode.
- key == 'length' ||
- // Node.js 0.10 has enumerable non-index properties on buffers.
- (isBuff && (key == 'offset' || key == 'parent')) ||
- // PhantomJS 2 has enumerable non-index properties on typed arrays.
- (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
- // Skip index properties.
- _isIndex(key, length)
- ))) {
- result.push(key);
- }
- }
- return result;
- }
-
- /* harmony default export */ const _arrayLikeKeys = (arrayLikeKeys);
-
- ;// ./node_modules/lodash-es/_isPrototype.js
- /** Used for built-in method references. */
- var _isPrototype_objectProto = Object.prototype;
-
- /**
- * Checks if `value` is likely a prototype object.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
- */
- function isPrototype(value) {
- var Ctor = value && value.constructor,
- proto = (typeof Ctor == 'function' && Ctor.prototype) || _isPrototype_objectProto;
-
- return value === proto;
- }
-
- /* harmony default export */ const _isPrototype = (isPrototype);
-
- ;// ./node_modules/lodash-es/_overArg.js
- /**
- * Creates a unary function that invokes `func` with its argument transformed.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
- */
- function overArg(func, transform) {
- return function(arg) {
- return func(transform(arg));
- };
- }
-
- /* harmony default export */ const _overArg = (overArg);
-
- ;// ./node_modules/lodash-es/_nativeKeys.js
-
-
- /* Built-in method references for those with the same name as other `lodash` methods. */
- var nativeKeys = _overArg(Object.keys, Object);
-
- /* harmony default export */ const _nativeKeys = (nativeKeys);
-
- ;// ./node_modules/lodash-es/_baseKeys.js
-
-
-
- /** Used for built-in method references. */
- var _baseKeys_objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var _baseKeys_hasOwnProperty = _baseKeys_objectProto.hasOwnProperty;
-
- /**
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
- function baseKeys(object) {
- if (!_isPrototype(object)) {
- return _nativeKeys(object);
- }
- var result = [];
- for (var key in Object(object)) {
- if (_baseKeys_hasOwnProperty.call(object, key) && key != 'constructor') {
- result.push(key);
- }
- }
- return result;
- }
-
- /* harmony default export */ const _baseKeys = (baseKeys);
-
- ;// ./node_modules/lodash-es/isArrayLike.js
-
-
-
- /**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */
- function isArrayLike(value) {
- return value != null && lodash_es_isLength(value.length) && !lodash_es_isFunction(value);
- }
-
- /* harmony default export */ const lodash_es_isArrayLike = (isArrayLike);
-
- ;// ./node_modules/lodash-es/keys.js
-
-
-
-
- /**
- * Creates an array of the own enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * for more details.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keys(new Foo);
- * // => ['a', 'b'] (iteration order is not guaranteed)
- *
- * _.keys('hi');
- * // => ['0', '1']
- */
- function keys(object) {
- return lodash_es_isArrayLike(object) ? _arrayLikeKeys(object) : _baseKeys(object);
- }
-
- /* harmony default export */ const lodash_es_keys = (keys);
-
- ;// ./node_modules/lodash-es/_getAllKeys.js
-
-
-
-
- /**
- * Creates an array of own enumerable property names and symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
- */
- function getAllKeys(object) {
- return _baseGetAllKeys(object, lodash_es_keys, _getSymbols);
- }
-
- /* harmony default export */ const _getAllKeys = (getAllKeys);
-
- ;// ./node_modules/lodash-es/_equalObjects.js
-
-
- /** Used to compose bitmasks for value comparisons. */
- var _equalObjects_COMPARE_PARTIAL_FLAG = 1;
-
- /** Used for built-in method references. */
- var _equalObjects_objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var _equalObjects_hasOwnProperty = _equalObjects_objectProto.hasOwnProperty;
-
- /**
- * A specialized version of `baseIsEqualDeep` for objects with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & _equalObjects_COMPARE_PARTIAL_FLAG,
- objProps = _getAllKeys(object),
- objLength = objProps.length,
- othProps = _getAllKeys(other),
- othLength = othProps.length;
-
- if (objLength != othLength && !isPartial) {
- return false;
- }
- var index = objLength;
- while (index--) {
- var key = objProps[index];
- if (!(isPartial ? key in other : _equalObjects_hasOwnProperty.call(other, key))) {
- return false;
- }
- }
- // Check that cyclic values are equal.
- var objStacked = stack.get(object);
- var othStacked = stack.get(other);
- if (objStacked && othStacked) {
- return objStacked == other && othStacked == object;
- }
- var result = true;
- stack.set(object, other);
- stack.set(other, object);
-
- var skipCtor = isPartial;
- while (++index < objLength) {
- key = objProps[index];
- var objValue = object[key],
- othValue = other[key];
-
- if (customizer) {
- var compared = isPartial
- ? customizer(othValue, objValue, key, other, object, stack)
- : customizer(objValue, othValue, key, object, other, stack);
- }
- // Recursively compare objects (susceptible to call stack limits).
- if (!(compared === undefined
- ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
- : compared
- )) {
- result = false;
- break;
- }
- skipCtor || (skipCtor = key == 'constructor');
- }
- if (result && !skipCtor) {
- var objCtor = object.constructor,
- othCtor = other.constructor;
-
- // Non `Object` object instances with different constructors are not equal.
- if (objCtor != othCtor &&
- ('constructor' in object && 'constructor' in other) &&
- !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
- typeof othCtor == 'function' && othCtor instanceof othCtor)) {
- result = false;
- }
- }
- stack['delete'](object);
- stack['delete'](other);
- return result;
- }
-
- /* harmony default export */ const _equalObjects = (equalObjects);
-
- ;// ./node_modules/lodash-es/_DataView.js
-
-
-
- /* Built-in method references that are verified to be native. */
- var DataView = _getNative(_root, 'DataView');
-
- /* harmony default export */ const _DataView = (DataView);
-
- ;// ./node_modules/lodash-es/_Promise.js
-
-
-
- /* Built-in method references that are verified to be native. */
- var _Promise_Promise = _getNative(_root, 'Promise');
-
- /* harmony default export */ const _Promise = (_Promise_Promise);
-
- ;// ./node_modules/lodash-es/_Set.js
-
-
-
- /* Built-in method references that are verified to be native. */
- var Set = _getNative(_root, 'Set');
-
- /* harmony default export */ const _Set = (Set);
-
- ;// ./node_modules/lodash-es/_WeakMap.js
-
-
-
- /* Built-in method references that are verified to be native. */
- var WeakMap = _getNative(_root, 'WeakMap');
-
- /* harmony default export */ const _WeakMap = (WeakMap);
-
- ;// ./node_modules/lodash-es/_getTag.js
-
-
-
-
-
-
-
-
- /** `Object#toString` result references. */
- var _getTag_mapTag = '[object Map]',
- _getTag_objectTag = '[object Object]',
- promiseTag = '[object Promise]',
- _getTag_setTag = '[object Set]',
- _getTag_weakMapTag = '[object WeakMap]';
-
- var _getTag_dataViewTag = '[object DataView]';
-
- /** Used to detect maps, sets, and weakmaps. */
- var dataViewCtorString = _toSource(_DataView),
- mapCtorString = _toSource(_Map),
- promiseCtorString = _toSource(_Promise),
- setCtorString = _toSource(_Set),
- weakMapCtorString = _toSource(_WeakMap);
-
- /**
- * Gets the `toStringTag` of `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
- var getTag = _baseGetTag;
-
- // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
- if ((_DataView && getTag(new _DataView(new ArrayBuffer(1))) != _getTag_dataViewTag) ||
- (_Map && getTag(new _Map) != _getTag_mapTag) ||
- (_Promise && getTag(_Promise.resolve()) != promiseTag) ||
- (_Set && getTag(new _Set) != _getTag_setTag) ||
- (_WeakMap && getTag(new _WeakMap) != _getTag_weakMapTag)) {
- getTag = function(value) {
- var result = _baseGetTag(value),
- Ctor = result == _getTag_objectTag ? value.constructor : undefined,
- ctorString = Ctor ? _toSource(Ctor) : '';
-
- if (ctorString) {
- switch (ctorString) {
- case dataViewCtorString: return _getTag_dataViewTag;
- case mapCtorString: return _getTag_mapTag;
- case promiseCtorString: return promiseTag;
- case setCtorString: return _getTag_setTag;
- case weakMapCtorString: return _getTag_weakMapTag;
- }
- }
- return result;
- };
- }
-
- /* harmony default export */ const _getTag = (getTag);
-
- ;// ./node_modules/lodash-es/_baseIsEqualDeep.js
-
-
-
-
-
-
-
-
-
- /** Used to compose bitmasks for value comparisons. */
- var _baseIsEqualDeep_COMPARE_PARTIAL_FLAG = 1;
-
- /** `Object#toString` result references. */
- var _baseIsEqualDeep_argsTag = '[object Arguments]',
- _baseIsEqualDeep_arrayTag = '[object Array]',
- _baseIsEqualDeep_objectTag = '[object Object]';
-
- /** Used for built-in method references. */
- var _baseIsEqualDeep_objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var _baseIsEqualDeep_hasOwnProperty = _baseIsEqualDeep_objectProto.hasOwnProperty;
-
- /**
- * A specialized version of `baseIsEqual` for arrays and objects which performs
- * deep comparisons and tracks traversed objects enabling objects with circular
- * references to be compared.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} [stack] Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
- var objIsArr = lodash_es_isArray(object),
- othIsArr = lodash_es_isArray(other),
- objTag = objIsArr ? _baseIsEqualDeep_arrayTag : _getTag(object),
- othTag = othIsArr ? _baseIsEqualDeep_arrayTag : _getTag(other);
-
- objTag = objTag == _baseIsEqualDeep_argsTag ? _baseIsEqualDeep_objectTag : objTag;
- othTag = othTag == _baseIsEqualDeep_argsTag ? _baseIsEqualDeep_objectTag : othTag;
-
- var objIsObj = objTag == _baseIsEqualDeep_objectTag,
- othIsObj = othTag == _baseIsEqualDeep_objectTag,
- isSameTag = objTag == othTag;
-
- if (isSameTag && lodash_es_isBuffer(object)) {
- if (!lodash_es_isBuffer(other)) {
- return false;
- }
- objIsArr = true;
- objIsObj = false;
- }
- if (isSameTag && !objIsObj) {
- stack || (stack = new _Stack);
- return (objIsArr || lodash_es_isTypedArray(object))
- ? _equalArrays(object, other, bitmask, customizer, equalFunc, stack)
- : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
- }
- if (!(bitmask & _baseIsEqualDeep_COMPARE_PARTIAL_FLAG)) {
- var objIsWrapped = objIsObj && _baseIsEqualDeep_hasOwnProperty.call(object, '__wrapped__'),
- othIsWrapped = othIsObj && _baseIsEqualDeep_hasOwnProperty.call(other, '__wrapped__');
-
- if (objIsWrapped || othIsWrapped) {
- var objUnwrapped = objIsWrapped ? object.value() : object,
- othUnwrapped = othIsWrapped ? other.value() : other;
-
- stack || (stack = new _Stack);
- return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
- }
- }
- if (!isSameTag) {
- return false;
- }
- stack || (stack = new _Stack);
- return _equalObjects(object, other, bitmask, customizer, equalFunc, stack);
- }
-
- /* harmony default export */ const _baseIsEqualDeep = (baseIsEqualDeep);
-
- ;// ./node_modules/lodash-es/_baseIsEqual.js
-
-
-
- /**
- * The base implementation of `_.isEqual` which supports partial comparisons
- * and tracks traversed objects.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @param {boolean} bitmask The bitmask flags.
- * 1 - Unordered comparison
- * 2 - Partial comparison
- * @param {Function} [customizer] The function to customize comparisons.
- * @param {Object} [stack] Tracks traversed `value` and `other` objects.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- */
- function baseIsEqual(value, other, bitmask, customizer, stack) {
- if (value === other) {
- return true;
- }
- if (value == null || other == null || (!lodash_es_isObjectLike(value) && !lodash_es_isObjectLike(other))) {
- return value !== value && other !== other;
- }
- return _baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
- }
-
- /* harmony default export */ const _baseIsEqual = (baseIsEqual);
-
- ;// ./node_modules/lodash-es/_baseIsMatch.js
-
-
-
- /** Used to compose bitmasks for value comparisons. */
- var _baseIsMatch_COMPARE_PARTIAL_FLAG = 1,
- _baseIsMatch_COMPARE_UNORDERED_FLAG = 2;
-
- /**
- * The base implementation of `_.isMatch` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @param {Array} matchData The property names, values, and compare flags to match.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
- */
- function baseIsMatch(object, source, matchData, customizer) {
- var index = matchData.length,
- length = index,
- noCustomizer = !customizer;
-
- if (object == null) {
- return !length;
- }
- object = Object(object);
- while (index--) {
- var data = matchData[index];
- if ((noCustomizer && data[2])
- ? data[1] !== object[data[0]]
- : !(data[0] in object)
- ) {
- return false;
- }
- }
- while (++index < length) {
- data = matchData[index];
- var key = data[0],
- objValue = object[key],
- srcValue = data[1];
-
- if (noCustomizer && data[2]) {
- if (objValue === undefined && !(key in object)) {
- return false;
- }
- } else {
- var stack = new _Stack;
- if (customizer) {
- var result = customizer(objValue, srcValue, key, object, source, stack);
- }
- if (!(result === undefined
- ? _baseIsEqual(srcValue, objValue, _baseIsMatch_COMPARE_PARTIAL_FLAG | _baseIsMatch_COMPARE_UNORDERED_FLAG, customizer, stack)
- : result
- )) {
- return false;
- }
- }
- }
- return true;
- }
-
- /* harmony default export */ const _baseIsMatch = (baseIsMatch);
-
- ;// ./node_modules/lodash-es/_isStrictComparable.js
-
-
- /**
- * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` if suitable for strict
- * equality comparisons, else `false`.
- */
- function isStrictComparable(value) {
- return value === value && !lodash_es_isObject(value);
- }
-
- /* harmony default export */ const _isStrictComparable = (isStrictComparable);
-
- ;// ./node_modules/lodash-es/_getMatchData.js
-
-
-
- /**
- * Gets the property names, values, and compare flags of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the match data of `object`.
- */
- function getMatchData(object) {
- var result = lodash_es_keys(object),
- length = result.length;
-
- while (length--) {
- var key = result[length],
- value = object[key];
-
- result[length] = [key, value, _isStrictComparable(value)];
- }
- return result;
- }
-
- /* harmony default export */ const _getMatchData = (getMatchData);
-
- ;// ./node_modules/lodash-es/_matchesStrictComparable.js
- /**
- * A specialized version of `matchesProperty` for source values suitable
- * for strict equality comparisons, i.e. `===`.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- */
- function matchesStrictComparable(key, srcValue) {
- return function(object) {
- if (object == null) {
- return false;
- }
- return object[key] === srcValue &&
- (srcValue !== undefined || (key in Object(object)));
- };
- }
-
- /* harmony default export */ const _matchesStrictComparable = (matchesStrictComparable);
-
- ;// ./node_modules/lodash-es/_baseMatches.js
-
-
-
-
- /**
- * The base implementation of `_.matches` which doesn't clone `source`.
- *
- * @private
- * @param {Object} source The object of property values to match.
- * @returns {Function} Returns the new spec function.
- */
- function baseMatches(source) {
- var matchData = _getMatchData(source);
- if (matchData.length == 1 && matchData[0][2]) {
- return _matchesStrictComparable(matchData[0][0], matchData[0][1]);
- }
- return function(object) {
- return object === source || _baseIsMatch(object, source, matchData);
- };
- }
-
- /* harmony default export */ const _baseMatches = (baseMatches);
-
- ;// ./node_modules/lodash-es/isSymbol.js
-
-
-
- /** `Object#toString` result references. */
- var isSymbol_symbolTag = '[object Symbol]';
-
- /**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
- function isSymbol(value) {
- return typeof value == 'symbol' ||
- (lodash_es_isObjectLike(value) && _baseGetTag(value) == isSymbol_symbolTag);
- }
-
- /* harmony default export */ const lodash_es_isSymbol = (isSymbol);
-
- ;// ./node_modules/lodash-es/_isKey.js
-
-
-
- /** Used to match property names within property paths. */
- var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
- reIsPlainProp = /^\w*$/;
-
- /**
- * Checks if `value` is a property name and not a property path.
- *
- * @private
- * @param {*} value The value to check.
- * @param {Object} [object] The object to query keys on.
- * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
- */
- function isKey(value, object) {
- if (lodash_es_isArray(value)) {
- return false;
- }
- var type = typeof value;
- if (type == 'number' || type == 'symbol' || type == 'boolean' ||
- value == null || lodash_es_isSymbol(value)) {
- return true;
- }
- return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
- (object != null && value in Object(object));
- }
-
- /* harmony default export */ const _isKey = (isKey);
-
- ;// ./node_modules/lodash-es/memoize.js
-
-
- /** Error message constants. */
- var FUNC_ERROR_TEXT = 'Expected a function';
-
- /**
- * Creates a function that memoizes the result of `func`. If `resolver` is
- * provided, it determines the cache key for storing the result based on the
- * arguments provided to the memoized function. By default, the first argument
- * provided to the memoized function is used as the map cache key. The `func`
- * is invoked with the `this` binding of the memoized function.
- *
- * **Note:** The cache is exposed as the `cache` property on the memoized
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
- * constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
- * method interface of `clear`, `delete`, `get`, `has`, and `set`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to have its output memoized.
- * @param {Function} [resolver] The function to resolve the cache key.
- * @returns {Function} Returns the new memoized function.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- * var other = { 'c': 3, 'd': 4 };
- *
- * var values = _.memoize(_.values);
- * values(object);
- * // => [1, 2]
- *
- * values(other);
- * // => [3, 4]
- *
- * object.a = 2;
- * values(object);
- * // => [1, 2]
- *
- * // Modify the result cache.
- * values.cache.set(object, ['a', 'b']);
- * values(object);
- * // => ['a', 'b']
- *
- * // Replace `_.memoize.Cache`.
- * _.memoize.Cache = WeakMap;
- */
- function memoize(func, resolver) {
- if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- var memoized = function() {
- var args = arguments,
- key = resolver ? resolver.apply(this, args) : args[0],
- cache = memoized.cache;
-
- if (cache.has(key)) {
- return cache.get(key);
- }
- var result = func.apply(this, args);
- memoized.cache = cache.set(key, result) || cache;
- return result;
- };
- memoized.cache = new (memoize.Cache || _MapCache);
- return memoized;
- }
-
- // Expose `MapCache`.
- memoize.Cache = _MapCache;
-
- /* harmony default export */ const lodash_es_memoize = (memoize);
-
- ;// ./node_modules/lodash-es/_memoizeCapped.js
-
-
- /** Used as the maximum memoize cache size. */
- var MAX_MEMOIZE_SIZE = 500;
-
- /**
- * A specialized version of `_.memoize` which clears the memoized function's
- * cache when it exceeds `MAX_MEMOIZE_SIZE`.
- *
- * @private
- * @param {Function} func The function to have its output memoized.
- * @returns {Function} Returns the new memoized function.
- */
- function memoizeCapped(func) {
- var result = lodash_es_memoize(func, function(key) {
- if (cache.size === MAX_MEMOIZE_SIZE) {
- cache.clear();
- }
- return key;
- });
-
- var cache = result.cache;
- return result;
- }
-
- /* harmony default export */ const _memoizeCapped = (memoizeCapped);
-
- ;// ./node_modules/lodash-es/_stringToPath.js
-
-
- /** Used to match property names within property paths. */
- var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
-
- /** Used to match backslashes in property paths. */
- var reEscapeChar = /\\(\\)?/g;
-
- /**
- * Converts `string` to a property path array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the property path array.
- */
- var stringToPath = _memoizeCapped(function(string) {
- var result = [];
- if (string.charCodeAt(0) === 46 /* . */) {
- result.push('');
- }
- string.replace(rePropName, function(match, number, quote, subString) {
- result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
- });
- return result;
- });
-
- /* harmony default export */ const _stringToPath = (stringToPath);
-
- ;// ./node_modules/lodash-es/_arrayMap.js
- /**
- * A specialized version of `_.map` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
- function arrayMap(array, iteratee) {
- var index = -1,
- length = array == null ? 0 : array.length,
- result = Array(length);
-
- while (++index < length) {
- result[index] = iteratee(array[index], index, array);
- }
- return result;
- }
-
- /* harmony default export */ const _arrayMap = (arrayMap);
-
- ;// ./node_modules/lodash-es/_baseToString.js
-
-
-
-
-
- /** Used as references for various `Number` constants. */
- var INFINITY = 1 / 0;
-
- /** Used to convert symbols to primitives and strings. */
- var _baseToString_symbolProto = _Symbol ? _Symbol.prototype : undefined,
- symbolToString = _baseToString_symbolProto ? _baseToString_symbolProto.toString : undefined;
-
- /**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
- function baseToString(value) {
- // Exit early for strings to avoid a performance hit in some environments.
- if (typeof value == 'string') {
- return value;
- }
- if (lodash_es_isArray(value)) {
- // Recursively convert values (susceptible to call stack limits).
- return _arrayMap(value, baseToString) + '';
- }
- if (lodash_es_isSymbol(value)) {
- return symbolToString ? symbolToString.call(value) : '';
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
- }
-
- /* harmony default export */ const _baseToString = (baseToString);
-
- ;// ./node_modules/lodash-es/toString.js
-
-
- /**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */
- function toString_toString(value) {
- return value == null ? '' : _baseToString(value);
- }
-
- /* harmony default export */ const lodash_es_toString = (toString_toString);
-
- ;// ./node_modules/lodash-es/_castPath.js
-
-
-
-
-
- /**
- * Casts `value` to a path array if it's not one.
- *
- * @private
- * @param {*} value The value to inspect.
- * @param {Object} [object] The object to query keys on.
- * @returns {Array} Returns the cast property path array.
- */
- function castPath(value, object) {
- if (lodash_es_isArray(value)) {
- return value;
- }
- return _isKey(value, object) ? [value] : _stringToPath(lodash_es_toString(value));
- }
-
- /* harmony default export */ const _castPath = (castPath);
-
- ;// ./node_modules/lodash-es/_toKey.js
-
-
- /** Used as references for various `Number` constants. */
- var _toKey_INFINITY = 1 / 0;
-
- /**
- * Converts `value` to a string key if it's not a string or symbol.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {string|symbol} Returns the key.
- */
- function toKey(value) {
- if (typeof value == 'string' || lodash_es_isSymbol(value)) {
- return value;
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -_toKey_INFINITY) ? '-0' : result;
- }
-
- /* harmony default export */ const _toKey = (toKey);
-
- ;// ./node_modules/lodash-es/_baseGet.js
-
-
-
- /**
- * The base implementation of `_.get` without support for default values.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @returns {*} Returns the resolved value.
- */
- function baseGet(object, path) {
- path = _castPath(path, object);
-
- var index = 0,
- length = path.length;
-
- while (object != null && index < length) {
- object = object[_toKey(path[index++])];
- }
- return (index && index == length) ? object : undefined;
- }
-
- /* harmony default export */ const _baseGet = (baseGet);
-
- ;// ./node_modules/lodash-es/get.js
-
-
- /**
- * Gets the value at `path` of `object`. If the resolved value is
- * `undefined`, the `defaultValue` is returned in its place.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.get(object, 'a[0].b.c');
- * // => 3
- *
- * _.get(object, ['a', '0', 'b', 'c']);
- * // => 3
- *
- * _.get(object, 'a.b.c', 'default');
- * // => 'default'
- */
- function get(object, path, defaultValue) {
- var result = object == null ? undefined : _baseGet(object, path);
- return result === undefined ? defaultValue : result;
- }
-
- /* harmony default export */ const lodash_es_get = (get);
-
- ;// ./node_modules/lodash-es/_baseHasIn.js
- /**
- * The base implementation of `_.hasIn` without support for deep paths.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {Array|string} key The key to check.
- * @returns {boolean} Returns `true` if `key` exists, else `false`.
- */
- function baseHasIn(object, key) {
- return object != null && key in Object(object);
- }
-
- /* harmony default export */ const _baseHasIn = (baseHasIn);
-
- ;// ./node_modules/lodash-es/_hasPath.js
-
-
-
-
-
-
-
- /**
- * Checks if `path` exists on `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @param {Function} hasFunc The function to check properties.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- */
- function hasPath(object, path, hasFunc) {
- path = _castPath(path, object);
-
- var index = -1,
- length = path.length,
- result = false;
-
- while (++index < length) {
- var key = _toKey(path[index]);
- if (!(result = object != null && hasFunc(object, key))) {
- break;
- }
- object = object[key];
- }
- if (result || ++index != length) {
- return result;
- }
- length = object == null ? 0 : object.length;
- return !!length && lodash_es_isLength(length) && _isIndex(key, length) &&
- (lodash_es_isArray(object) || lodash_es_isArguments(object));
- }
-
- /* harmony default export */ const _hasPath = (hasPath);
-
- ;// ./node_modules/lodash-es/hasIn.js
-
-
-
- /**
- * Checks if `path` is a direct or inherited property of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- * @example
- *
- * var object = _.create({ 'a': _.create({ 'b': 2 }) });
- *
- * _.hasIn(object, 'a');
- * // => true
- *
- * _.hasIn(object, 'a.b');
- * // => true
- *
- * _.hasIn(object, ['a', 'b']);
- * // => true
- *
- * _.hasIn(object, 'b');
- * // => false
- */
- function hasIn(object, path) {
- return object != null && _hasPath(object, path, _baseHasIn);
- }
-
- /* harmony default export */ const lodash_es_hasIn = (hasIn);
-
- ;// ./node_modules/lodash-es/_baseMatchesProperty.js
-
-
-
-
-
-
-
-
- /** Used to compose bitmasks for value comparisons. */
- var _baseMatchesProperty_COMPARE_PARTIAL_FLAG = 1,
- _baseMatchesProperty_COMPARE_UNORDERED_FLAG = 2;
-
- /**
- * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
- *
- * @private
- * @param {string} path The path of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- */
- function baseMatchesProperty(path, srcValue) {
- if (_isKey(path) && _isStrictComparable(srcValue)) {
- return _matchesStrictComparable(_toKey(path), srcValue);
- }
- return function(object) {
- var objValue = lodash_es_get(object, path);
- return (objValue === undefined && objValue === srcValue)
- ? lodash_es_hasIn(object, path)
- : _baseIsEqual(srcValue, objValue, _baseMatchesProperty_COMPARE_PARTIAL_FLAG | _baseMatchesProperty_COMPARE_UNORDERED_FLAG);
- };
- }
-
- /* harmony default export */ const _baseMatchesProperty = (baseMatchesProperty);
-
- ;// ./node_modules/lodash-es/identity.js
- /**
- * This method returns the first argument it receives.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {*} value Any value.
- * @returns {*} Returns `value`.
- * @example
- *
- * var object = { 'a': 1 };
- *
- * console.log(_.identity(object) === object);
- * // => true
- */
- function identity(value) {
- return value;
- }
-
- /* harmony default export */ const lodash_es_identity = (identity);
-
- ;// ./node_modules/lodash-es/_baseProperty.js
- /**
- * The base implementation of `_.property` without support for deep paths.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
- function baseProperty(key) {
- return function(object) {
- return object == null ? undefined : object[key];
- };
- }
-
- /* harmony default export */ const _baseProperty = (baseProperty);
-
- ;// ./node_modules/lodash-es/_basePropertyDeep.js
-
-
- /**
- * A specialized version of `baseProperty` which supports deep paths.
- *
- * @private
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
- function basePropertyDeep(path) {
- return function(object) {
- return _baseGet(object, path);
- };
- }
-
- /* harmony default export */ const _basePropertyDeep = (basePropertyDeep);
-
- ;// ./node_modules/lodash-es/property.js
-
-
-
-
-
- /**
- * Creates a function that returns the value at `path` of a given object.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Util
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
- * @example
- *
- * var objects = [
- * { 'a': { 'b': 2 } },
- * { 'a': { 'b': 1 } }
- * ];
- *
- * _.map(objects, _.property('a.b'));
- * // => [2, 1]
- *
- * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
- * // => [1, 2]
- */
- function property(path) {
- return _isKey(path) ? _baseProperty(_toKey(path)) : _basePropertyDeep(path);
- }
-
- /* harmony default export */ const lodash_es_property = (property);
-
- ;// ./node_modules/lodash-es/_baseIteratee.js
-
-
-
-
-
-
- /**
- * The base implementation of `_.iteratee`.
- *
- * @private
- * @param {*} [value=_.identity] The value to convert to an iteratee.
- * @returns {Function} Returns the iteratee.
- */
- function baseIteratee(value) {
- // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
- // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
- if (typeof value == 'function') {
- return value;
- }
- if (value == null) {
- return lodash_es_identity;
- }
- if (typeof value == 'object') {
- return lodash_es_isArray(value)
- ? _baseMatchesProperty(value[0], value[1])
- : _baseMatches(value);
- }
- return lodash_es_property(value);
- }
-
- /* harmony default export */ const _baseIteratee = (baseIteratee);
-
- ;// ./node_modules/lodash-es/_createFind.js
-
-
-
-
- /**
- * Creates a `_.find` or `_.findLast` function.
- *
- * @private
- * @param {Function} findIndexFunc The function to find the collection index.
- * @returns {Function} Returns the new find function.
- */
- function createFind(findIndexFunc) {
- return function(collection, predicate, fromIndex) {
- var iterable = Object(collection);
- if (!lodash_es_isArrayLike(collection)) {
- var iteratee = _baseIteratee(predicate, 3);
- collection = lodash_es_keys(collection);
- predicate = function(key) { return iteratee(iterable[key], key, iterable); };
- }
- var index = findIndexFunc(collection, predicate, fromIndex);
- return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
- };
- }
-
- /* harmony default export */ const _createFind = (createFind);
-
- ;// ./node_modules/lodash-es/_baseFindIndex.js
- /**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function baseFindIndex(array, predicate, fromIndex, fromRight) {
- var length = array.length,
- index = fromIndex + (fromRight ? 1 : -1);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (predicate(array[index], index, array)) {
- return index;
- }
- }
- return -1;
- }
-
- /* harmony default export */ const _baseFindIndex = (baseFindIndex);
-
- ;// ./node_modules/lodash-es/_trimmedEndIndex.js
- /** Used to match a single whitespace character. */
- var reWhitespace = /\s/;
-
- /**
- * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
- * character of `string`.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {number} Returns the index of the last non-whitespace character.
- */
- function trimmedEndIndex(string) {
- var index = string.length;
-
- while (index-- && reWhitespace.test(string.charAt(index))) {}
- return index;
- }
-
- /* harmony default export */ const _trimmedEndIndex = (trimmedEndIndex);
-
- ;// ./node_modules/lodash-es/_baseTrim.js
-
-
- /** Used to match leading whitespace. */
- var reTrimStart = /^\s+/;
-
- /**
- * The base implementation of `_.trim`.
- *
- * @private
- * @param {string} string The string to trim.
- * @returns {string} Returns the trimmed string.
- */
- function baseTrim(string) {
- return string
- ? string.slice(0, _trimmedEndIndex(string) + 1).replace(reTrimStart, '')
- : string;
- }
-
- /* harmony default export */ const _baseTrim = (baseTrim);
-
- ;// ./node_modules/lodash-es/toNumber.js
-
-
-
-
- /** Used as references for various `Number` constants. */
- var NAN = 0 / 0;
-
- /** Used to detect bad signed hexadecimal string values. */
- var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
-
- /** Used to detect binary string values. */
- var reIsBinary = /^0b[01]+$/i;
-
- /** Used to detect octal string values. */
- var reIsOctal = /^0o[0-7]+$/i;
-
- /** Built-in method references without a dependency on `root`. */
- var freeParseInt = parseInt;
-
- /**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
- function toNumber(value) {
- if (typeof value == 'number') {
- return value;
- }
- if (lodash_es_isSymbol(value)) {
- return NAN;
- }
- if (lodash_es_isObject(value)) {
- var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
- value = lodash_es_isObject(other) ? (other + '') : other;
- }
- if (typeof value != 'string') {
- return value === 0 ? value : +value;
- }
- value = _baseTrim(value);
- var isBinary = reIsBinary.test(value);
- return (isBinary || reIsOctal.test(value))
- ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
- : (reIsBadHex.test(value) ? NAN : +value);
- }
-
- /* harmony default export */ const lodash_es_toNumber = (toNumber);
-
- ;// ./node_modules/lodash-es/toFinite.js
-
-
- /** Used as references for various `Number` constants. */
- var toFinite_INFINITY = 1 / 0,
- MAX_INTEGER = 1.7976931348623157e+308;
-
- /**
- * Converts `value` to a finite number.
- *
- * @static
- * @memberOf _
- * @since 4.12.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted number.
- * @example
- *
- * _.toFinite(3.2);
- * // => 3.2
- *
- * _.toFinite(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toFinite(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toFinite('3.2');
- * // => 3.2
- */
- function toFinite(value) {
- if (!value) {
- return value === 0 ? value : 0;
- }
- value = lodash_es_toNumber(value);
- if (value === toFinite_INFINITY || value === -toFinite_INFINITY) {
- var sign = (value < 0 ? -1 : 1);
- return sign * MAX_INTEGER;
- }
- return value === value ? value : 0;
- }
-
- /* harmony default export */ const lodash_es_toFinite = (toFinite);
-
- ;// ./node_modules/lodash-es/toInteger.js
-
-
- /**
- * Converts `value` to an integer.
- *
- * **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toInteger(3.2);
- * // => 3
- *
- * _.toInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toInteger(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toInteger('3.2');
- * // => 3
- */
- function toInteger(value) {
- var result = lodash_es_toFinite(value),
- remainder = result % 1;
-
- return result === result ? (remainder ? result - remainder : result) : 0;
- }
-
- /* harmony default export */ const lodash_es_toInteger = (toInteger);
-
- ;// ./node_modules/lodash-es/findIndex.js
-
-
-
-
- /* Built-in method references for those with the same name as other `lodash` methods. */
- var nativeMax = Math.max;
-
- /**
- * This method is like `_.find` except that it returns the index of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': false },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.findIndex(users, function(o) { return o.user == 'barney'; });
- * // => 0
- *
- * // The `_.matches` iteratee shorthand.
- * _.findIndex(users, { 'user': 'fred', 'active': false });
- * // => 1
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findIndex(users, ['active', false]);
- * // => 0
- *
- * // The `_.property` iteratee shorthand.
- * _.findIndex(users, 'active');
- * // => 2
- */
- function findIndex(array, predicate, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return -1;
- }
- var index = fromIndex == null ? 0 : lodash_es_toInteger(fromIndex);
- if (index < 0) {
- index = nativeMax(length + index, 0);
- }
- return _baseFindIndex(array, _baseIteratee(predicate, 3), index);
- }
-
- /* harmony default export */ const lodash_es_findIndex = (findIndex);
-
- ;// ./node_modules/lodash-es/find.js
-
-
-
- /**
- * Iterates over elements of `collection`, returning the first element
- * `predicate` returns truthy for. The predicate is invoked with three
- * arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': true },
- * { 'user': 'fred', 'age': 40, 'active': false },
- * { 'user': 'pebbles', 'age': 1, 'active': true }
- * ];
- *
- * _.find(users, function(o) { return o.age < 40; });
- * // => object for 'barney'
- *
- * // The `_.matches` iteratee shorthand.
- * _.find(users, { 'age': 1, 'active': true });
- * // => object for 'pebbles'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.find(users, ['active', false]);
- * // => object for 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.find(users, 'active');
- * // => object for 'barney'
- */
- var find = _createFind(lodash_es_findIndex);
-
- /* harmony default export */ const lodash_es_find = (find);
-
- ;// ./scripts/wiki-rev-diff/src/parser.ts
-
- function parseRevDetails(html) {
- const jq = external_$_namespaceObject(html);
- const rawInfo = jq.find('#subject_infobox').val()?.toString() ?? '';
- const title = jq.find('input[name="subject_title"]').val()?.toString() ?? '';
- const description = jq.find('textarea#subject_summary').val()?.toString() ?? '';
- const metaTags = jq.find('input#tags').val()?.toString() ?? '';
- return {
- title,
- rawInfo,
- description,
- metaTags
- };
- }
- function parseRevEl(el) {
- const date = el.find('a:not(.compare-previous-trim21-cn)').first().html();
- const revEL = el.find('a.l:contains("恢复")');
- const revCommentEl = el.find('span.comment');
- let comment = '';
- if (revCommentEl.length > 0) {
- comment = revCommentEl.html();
- comment = comment.substring(1, comment.length - 1);
- }
- const revHref = revEL.attr('href');
- if (!revHref) {
- // this is a merge commit, can't know what's really info
- return undefined;
- }
- const revID = revHref.split('/').pop();
- if (!revID) {
- throw new Error(`can't parse rev id from ${revHref}`);
- }
- return {
- id: revID,
- comment,
- date,
- url: revHref
- };
- }
- function getRevs() {
- const revs = [];
- external_$_namespaceObject('#pagehistory li').each(function () {
- const rev = parseRevEl(external_$_namespaceObject(this));
- if (rev != null) {
- revs.push(rev);
- }
- });
- return revs;
- }
- function getRevInfo(revID) {
- for (const rev of getRevs()) {
- if (rev.id === revID) {
- return rev;
- }
- }
- }
- ;// external "Diff2Html"
- const external_Diff2Html_namespaceObject = Diff2Html;
- ;// ./scripts/wiki-rev-diff/src/config.ts
- const configKey = 'view-mode';
- ;// external "Diff"
- const external_Diff_namespaceObject = Diff;
- ;// ./scripts/wiki-rev-diff/src/differ.ts
-
- const pattern = /(?![\t\r\n])(\p{Cf}|\p{Cc}|\p{Co})/gu;
- function escapeInvisible(s) {
- return s.replaceAll(pattern, function (match) {
- const u = match.codePointAt(0);
- if (u === undefined) {
- return '';
- }
- return '\\u' + u.toString(16).toLowerCase();
- });
- }
- function diff(revOld, revNew, style) {
- const options = {
- context: 100
- };
- if (style === 'line-by-line') {
- options.context = 4;
- }
- return [oneLineDiff('标题', revOld.details.title, revNew.details.title, revOld.rev.date, revNew.rev.date, options), oneLineDiff('标签', revOld.details.metaTags, revNew.details.metaTags, revOld.rev.date, revNew.rev.date, options), infoDiff(revOld, revNew, options), descriptionDiff(revOld, revNew, options)].join('\n');
- }
- function oneLineDiff(name, s1, s2, oldDate, newDate, options) {
- if (s1 === s2) {
- return '';
- }
- return external_Diff_namespaceObject.createPatch(name, escapeInvisible(s1), escapeInvisible(s2), oldDate, newDate, options);
- }
- function infoDiff(rev1, rev2, options) {
- if (rev1.details.rawInfo === rev2.details.rawInfo) {
- return '';
- }
- return external_Diff_namespaceObject.createPatch('相关信息', escapeInvisible(rev1.details.rawInfo), escapeInvisible(rev2.details.rawInfo), rev1.rev.date, rev2.rev.date, options);
- }
- function descriptionDiff(rev1, rev2, options) {
- if (rev1.details.description === rev2.details.description) {
- return '';
- }
- return external_Diff_namespaceObject.createPatch('简介', escapeInvisible(rev1.details.description), escapeInvisible(rev2.details.description), rev1.rev.date, rev2.rev.date, options);
- }
- ;// ./scripts/wiki-rev-diff/src/utils.ts
- function getCookie(name) {
- const value = '; ' + document.cookie;
- const parts = value.split('; ' + name + '=');
- if (parts.length === 2) return parts.pop()?.split(';').shift();
- return undefined;
- }
- ;// ./scripts/wiki-rev-diff/src/ui.ts
-
-
-
-
-
- async function render(revOld, revNew) {
- let outputFormat = await GM.getValue(configKey);
- if (!outputFormat) {
- outputFormat = 'line-by-line';
- }
- const colorScheme = getCookie('chii_theme');
- const patch = diff(revOld, revNew, outputFormat);
- const html = external_Diff2Html_namespaceObject.html(patch, {
- outputFormat,
- colorScheme,
- drawFileList: false
- });
- const elID = `show-diff-view-${outputFormat}`;
- show('');
- if (patch.trim()) {
- external_$_namespaceObject(`#${elID}`).html(html);
- } else {
- external_$_namespaceObject(`#${elID}`).html('<h1>选中的版本之间没有修改</h1>');
- }
- document.getElementById(elID)?.scrollIntoView({
- behavior: 'smooth'
- });
- }
- function show(html) {
- external_$_namespaceObject('#show-diff-info').html(html);
- }
- function clear() {
- external_$_namespaceObject('#show-diff-view-line-by-line').html('');
- external_$_namespaceObject('#show-diff-view-side-by-side').html('');
- show('');
- }
- ;// ./scripts/wiki-rev-diff/src/model.ts
- class Commit {
- constructor(rev, detail) {
- this.rev = rev;
- this.details = detail;
- }
- }
- ;// ./scripts/wiki-rev-diff/src/compare.ts
-
-
-
- function compare(revID1, revID2) {
- clear();
- show('<h2>loading versions...</h2>');
- const rev1 = getRevInfo(revID1);
- const rev2 = getRevInfo(revID2);
- if (rev1 == null) {
- throw new Error(`error finding ${revID1}`);
- }
- const ps = [fetchRev(rev1), fetchRev(rev2)];
- Promise.all(ps).then(async values => {
- await render(values[1], values[0]);
- }).catch(e => {
- console.error(e);
- show('<div style="color: red">获取历史修改失败,请刷新页面后重试</div>');
- });
- }
- const _cache = {};
- async function fetchRev(rev) {
- if (rev == null) {
- return new Commit({
- id: '0',
- comment: '',
- date: '',
- url: ''
- }, {
- title: '',
- rawInfo: '',
- description: '',
- metaTags: ''
- });
- }
- if (!_cache[rev.id]) {
- const res = await fetch(rev.url);
- _cache[rev.id] = new Commit(rev, parseRevDetails(await res.text()));
- }
- return _cache[rev.id];
- }
- ;// ./scripts/wiki-rev-diff/src/index.ts
-
-
-
-
-
- async function main() {
- console.log('start bgm-wiki-rev-diff UserScript');
- await initUI();
- }
- const style = `
- <style>
- #show-diff-view-side-by-side {
- margin:0 auto;
- max-width: 100em;
- }
-
- .show-version-diff .d2h-code-line, .show-version-diff .d2h-code-side-line {
- width: calc(100% - 8em);
- padding-right: 0;
- }
-
- .show-version-diff .d2h-code-line-ctn {
- width: calc(100% - 8em);
- }
-
- #columnInSubjectA .rev-trim21-cn {
- margin: 0 0.2em;
- }
-
- ul#pagehistory > li > * {
- vertical-align: middle;
- }
- </style>
- `;
- async function initUI() {
- GM.registerMenuCommand('切换diff视图', function () {
- void (async () => {
- let outputFormat = await GM.getValue(configKey);
- if (!outputFormat || outputFormat === 'side-by-side') {
- outputFormat = 'line-by-line';
- } else {
- outputFormat = 'side-by-side';
- }
- await GM.setValue(configKey, outputFormat);
- })();
- });
- external_$_namespaceObject('#headerSubject').after('<div id="show-diff-view-side-by-side" class="show-version-diff"></div>');
- external_$_namespaceObject('#columnInSubjectA > hr.board').after(style + '<div id="show-diff-view-line-by-line" class="show-version-diff"></div>');
- external_$_namespaceObject('#columnInSubjectA .subtitle').after('<div id="show-diff-info"></div>');
- const diff2htmlStyle = await GM.getResourceUrl('diff2html');
- external_$_namespaceObject('head').append(style).append(`<link rel='stylesheet' type='text/css' href='${diff2htmlStyle}' />`);
- const s = external_$_namespaceObject('#pagehistory li');
- const revs = Array.from(s).map(function (e) {
- return parseRevEl(external_$_namespaceObject(e))?.id;
- });
- s.each(function (index) {
- const el = external_$_namespaceObject(this);
- const id = revs[index];
- if (!id) {
- el.prepend('<span style="padding-right: 1.4em"> 无法参与比较 </span>');
- return;
- }
- el.prepend(`<input type='radio' class='rev-trim21-cn' name='rev-right' label='select to compare' value='${id}'>`);
- el.prepend(`<input type='radio' class='rev-trim21-cn' name='rev-left' label='select to compare' value='${id}'>`);
- const previous = lodash_es_find(revs, Boolean, index + 1) ?? '';
- el.prepend(`(<a href='#' data-rev='${id}' data-previous='${previous}' class='l compare-previous-trim21-cn'>显示修改</a>) `);
- });
- const typeRevert = {
- 'rev-left': 'rev-right',
- 'rev-right': 'rev-left'
- };
- external_$_namespaceObject('input[type="radio"]').on('change', function (e) {
- const name = e.target.getAttribute('name');
- if (!name) {
- return;
- }
- const selectName = typeRevert[name];
- const rev = e.target.getAttribute('value');
- if (rev) {
- external_$_namespaceObject(`input[name="${selectName}"][value="${rev}"]`).css('visibility', 'hidden');
- external_$_namespaceObject(`input[name="${selectName}"][value!="${rev}"]`).css('visibility', 'visible');
- }
- });
- external_$_namespaceObject('.compare-previous-trim21-cn').on('click', function () {
- const el = external_$_namespaceObject(this);
- const left = String(el.data('rev'));
- const right = String(el.data('previous'));
- compare(left, right);
- external_$_namespaceObject(`input[name="rev-left"][value="${left}"]`).prop('checked', true);
- external_$_namespaceObject(`input[name="rev-left"][value!="${left}"]`).prop('checked', null);
- external_$_namespaceObject(`input[name="rev-right"][value="${left}"]`).css('visibility', 'hidden');
- external_$_namespaceObject(`input[name="rev-right"][value!="${left}"]`).css('visibility', 'visible');
- external_$_namespaceObject('input[name="rev-left"]').css('visibility', 'visible');
- external_$_namespaceObject('input[name="rev-right"]').prop('checked', null);
- if (right) {
- external_$_namespaceObject(`input[name="rev-right"][value="${right}"]`).prop('checked', true);
- external_$_namespaceObject(`input[name="rev-left"][value="${right}"]`).css('visibility', 'hidden');
- }
- });
- external_$_namespaceObject('#columnInSubjectA span.text').append('<a href="#" id="compare-trim21-cn" class="l"> > 比较选中的版本</a>');
- external_$_namespaceObject('#compare-trim21-cn').on('click', function () {
- const selectedRevs = getSelectedVersion();
- compare(selectedRevs[0], selectedRevs[1]);
- });
- }
- function getSelectedVersion() {
- const selectedVersion = [];
- const selectedRev = external_$_namespaceObject('.rev-trim21-cn:checked');
- if (selectedRev.length < 2) {
- window.alert('请选中两个版本进行比较');
- throw new Error();
- }
- selectedRev.each(function () {
- const val = external_$_namespaceObject(this).val();
- selectedVersion.push(val);
- });
- selectedVersion.sort((a, b) => parseInt(b) - parseInt(a));
- return selectedVersion;
- }
- main().catch(console.error);
- /******/ })()
- ;