@ecomplus/search-engine
Version:
JS lib to handle products search with E-Com Plus stores
5,006 lines • 151 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("lodash.merge"), require("@ecomplus/utils"), require("lodash.clonedeep"), require("@ecomplus/client"));
else if(typeof define === 'function' && define.amd)
define(["lodash.merge", "@ecomplus/utils", "lodash.clonedeep", "@ecomplus/client"], factory);
else if(typeof exports === 'object')
exports["EcomSearch"] = factory(require("lodash.merge"), require("@ecomplus/utils"), require("lodash.clonedeep"), require("@ecomplus/client"));
else
root["EcomSearch"] = factory(root["lodash.merge"], root["@ecomplus/utils"], root["lodash.clonedeep"], root["@ecomplus/client"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE__14__, __WEBPACK_EXTERNAL_MODULE__32__, __WEBPACK_EXTERNAL_MODULE__33__, __WEBPACK_EXTERNAL_MODULE__85__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 113);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
module.exports = function (exec) {
try {
return !!exec();
} catch (error) {
return true;
}
};
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2);
var shared = __webpack_require__(37);
var has = __webpack_require__(4);
var uid = __webpack_require__(38);
var NATIVE_SYMBOL = __webpack_require__(42);
var USE_SYMBOL_AS_UID = __webpack_require__(64);
var WellKnownSymbolsStore = shared('wks');
var Symbol = global.Symbol;
var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
module.exports = function (name) {
if (!has(WellKnownSymbolsStore, name)) {
if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];
else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
} return WellKnownSymbolsStore[name];
};
/***/ }),
/* 2 */
/***/ (function(module, exports) {
var check = function (it) {
return it && it.Math == Math && it;
};
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
module.exports =
// eslint-disable-next-line no-undef
check(typeof globalThis == 'object' && globalThis) ||
check(typeof window == 'object' && window) ||
check(typeof self == 'object' && self) ||
check(typeof global == 'object' && global) ||
// eslint-disable-next-line no-new-func
Function('return this')();
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2);
var getOwnPropertyDescriptor = __webpack_require__(34).f;
var createNonEnumerableProperty = __webpack_require__(6);
var redefine = __webpack_require__(17);
var setGlobal = __webpack_require__(36);
var copyConstructorProperties = __webpack_require__(59);
var isForced = __webpack_require__(88);
/*
options.target - name of the target object
options.global - target is the global object
options.stat - export as static methods of target
options.proto - export as prototype methods of target
options.real - real prototype method for the `pure` version
options.forced - export even if the native feature is available
options.bind - bind methods to the target, required for the `pure` version
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
options.unsafe - use the simple assignment of property instead of delete + defineProperty
options.sham - add a flag to not completely full polyfills
options.enumerable - export as enumerable property
options.noTargetGet - prevent calling a getter on target
*/
module.exports = function (options, source) {
var TARGET = options.target;
var GLOBAL = options.global;
var STATIC = options.stat;
var FORCED, target, key, targetProperty, sourceProperty, descriptor;
if (GLOBAL) {
target = global;
} else if (STATIC) {
target = global[TARGET] || setGlobal(TARGET, {});
} else {
target = (global[TARGET] || {}).prototype;
}
if (target) for (key in source) {
sourceProperty = source[key];
if (options.noTargetGet) {
descriptor = getOwnPropertyDescriptor(target, key);
targetProperty = descriptor && descriptor.value;
} else targetProperty = target[key];
FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
// contained in target
if (!FORCED && targetProperty !== undefined) {
if (typeof sourceProperty === typeof targetProperty) continue;
copyConstructorProperties(sourceProperty, targetProperty);
}
// add a flag to not completely full polyfills
if (options.sham || (targetProperty && targetProperty.sham)) {
createNonEnumerableProperty(sourceProperty, 'sham', true);
}
// extend global
redefine(target, key, sourceProperty, options);
}
};
/***/ }),
/* 4 */
/***/ (function(module, exports) {
var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
return hasOwnProperty.call(it, key);
};
/***/ }),
/* 5 */
/***/ (function(module, exports) {
module.exports = function (it) {
return typeof it === 'object' ? it !== null : typeof it === 'function';
};
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(9);
var definePropertyModule = __webpack_require__(7);
var createPropertyDescriptor = __webpack_require__(15);
module.exports = DESCRIPTORS ? function (object, key, value) {
return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(9);
var IE8_DOM_DEFINE = __webpack_require__(55);
var anObject = __webpack_require__(8);
var toPrimitive = __webpack_require__(22);
var nativeDefineProperty = Object.defineProperty;
// `Object.defineProperty` method
// https://tc39.github.io/ecma262/#sec-object.defineproperty
exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if (IE8_DOM_DEFINE) try {
return nativeDefineProperty(O, P, Attributes);
} catch (error) { /* empty */ }
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(5);
module.exports = function (it) {
if (!isObject(it)) {
throw TypeError(String(it) + ' is not an object');
} return it;
};
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(0);
// Thank's IE8 for his funny defineProperty
module.exports = !fails(function () {
return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
});
/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {
// toObject with fallback for non-array-like ES3 strings
var IndexedObject = __webpack_require__(35);
var requireObjectCoercible = __webpack_require__(21);
module.exports = function (it) {
return IndexedObject(requireObjectCoercible(it));
};
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
var requireObjectCoercible = __webpack_require__(21);
// `ToObject` abstract operation
// https://tc39.github.io/ecma262/#sec-toobject
module.exports = function (argument) {
return Object(requireObjectCoercible(argument));
};
/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(9);
var fails = __webpack_require__(0);
var has = __webpack_require__(4);
var defineProperty = Object.defineProperty;
var cache = {};
var thrower = function (it) { throw it; };
module.exports = function (METHOD_NAME, options) {
if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];
if (!options) options = {};
var method = [][METHOD_NAME];
var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;
var argument0 = has(options, 0) ? options[0] : thrower;
var argument1 = has(options, 1) ? options[1] : undefined;
return cache[METHOD_NAME] = !!method && !fails(function () {
if (ACCESSORS && !DESCRIPTORS) return true;
var O = { length: -1 };
if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });
else O[1] = 1;
method.call(O, argument0, argument1);
});
};
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(28);
var min = Math.min;
// `ToLength` abstract operation
// https://tc39.github.io/ecma262/#sec-tolength
module.exports = function (argument) {
return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
};
/***/ }),
/* 14 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE__14__;
/***/ }),
/* 15 */
/***/ (function(module, exports) {
module.exports = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
/***/ }),
/* 16 */
/***/ (function(module, exports) {
var toString = {}.toString;
module.exports = function (it) {
return toString.call(it).slice(8, -1);
};
/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2);
var createNonEnumerableProperty = __webpack_require__(6);
var has = __webpack_require__(4);
var setGlobal = __webpack_require__(36);
var inspectSource = __webpack_require__(57);
var InternalStateModule = __webpack_require__(23);
var getInternalState = InternalStateModule.get;
var enforceInternalState = InternalStateModule.enforce;
var TEMPLATE = String(String).split('String');
(module.exports = function (O, key, value, options) {
var unsafe = options ? !!options.unsafe : false;
var simple = options ? !!options.enumerable : false;
var noTargetGet = options ? !!options.noTargetGet : false;
if (typeof value == 'function') {
if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);
enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
}
if (O === global) {
if (simple) O[key] = value;
else setGlobal(key, value);
return;
} else if (!unsafe) {
delete O[key];
} else if (!noTargetGet && O[key]) {
simple = true;
}
if (simple) O[key] = value;
else createNonEnumerableProperty(O, key, value);
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, 'toString', function toString() {
return typeof this == 'function' && getInternalState(this).source || inspectSource(this);
});
/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {
var bind = __webpack_require__(100);
var IndexedObject = __webpack_require__(35);
var toObject = __webpack_require__(11);
var toLength = __webpack_require__(13);
var arraySpeciesCreate = __webpack_require__(47);
var push = [].push;
// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation
var createMethod = function (TYPE) {
var IS_MAP = TYPE == 1;
var IS_FILTER = TYPE == 2;
var IS_SOME = TYPE == 3;
var IS_EVERY = TYPE == 4;
var IS_FIND_INDEX = TYPE == 6;
var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
return function ($this, callbackfn, that, specificCreate) {
var O = toObject($this);
var self = IndexedObject(O);
var boundFunction = bind(callbackfn, that, 3);
var length = toLength(self.length);
var index = 0;
var create = specificCreate || arraySpeciesCreate;
var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
var value, result;
for (;length > index; index++) if (NO_HOLES || index in self) {
value = self[index];
result = boundFunction(value, index, O);
if (TYPE) {
if (IS_MAP) target[index] = result; // map
else if (result) switch (TYPE) {
case 3: return true; // some
case 5: return value; // find
case 6: return index; // findIndex
case 2: push.call(target, value); // filter
} else if (IS_EVERY) return false; // every
}
}
return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
};
};
module.exports = {
// `Array.prototype.forEach` method
// https://tc39.github.io/ecma262/#sec-array.prototype.foreach
forEach: createMethod(0),
// `Array.prototype.map` method
// https://tc39.github.io/ecma262/#sec-array.prototype.map
map: createMethod(1),
// `Array.prototype.filter` method
// https://tc39.github.io/ecma262/#sec-array.prototype.filter
filter: createMethod(2),
// `Array.prototype.some` method
// https://tc39.github.io/ecma262/#sec-array.prototype.some
some: createMethod(3),
// `Array.prototype.every` method
// https://tc39.github.io/ecma262/#sec-array.prototype.every
every: createMethod(4),
// `Array.prototype.find` method
// https://tc39.github.io/ecma262/#sec-array.prototype.find
find: createMethod(5),
// `Array.prototype.findIndex` method
// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
findIndex: createMethod(6)
};
/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(0);
var wellKnownSymbol = __webpack_require__(1);
var V8_VERSION = __webpack_require__(80);
var SPECIES = wellKnownSymbol('species');
module.exports = function (METHOD_NAME) {
// We can't use this feature detection in V8 since it causes
// deoptimization and serious performance degradation
// https://github.com/zloirock/core-js/issues/677
return V8_VERSION >= 51 || !fails(function () {
var array = [];
var constructor = array.constructor = {};
constructor[SPECIES] = function () {
return { foo: 1 };
};
return array[METHOD_NAME](Boolean).foo !== 1;
});
};
/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var toAbsoluteIndex = __webpack_require__(40);
var toInteger = __webpack_require__(28);
var toLength = __webpack_require__(13);
var toObject = __webpack_require__(11);
var arraySpeciesCreate = __webpack_require__(47);
var createProperty = __webpack_require__(52);
var arrayMethodHasSpeciesSupport = __webpack_require__(19);
var arrayMethodUsesToLength = __webpack_require__(12);
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');
var USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });
var max = Math.max;
var min = Math.min;
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';
// `Array.prototype.splice` method
// https://tc39.github.io/ecma262/#sec-array.prototype.splice
// with adding support of @@species
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
splice: function splice(start, deleteCount /* , ...items */) {
var O = toObject(this);
var len = toLength(O.length);
var actualStart = toAbsoluteIndex(start, len);
var argumentsLength = arguments.length;
var insertCount, actualDeleteCount, A, k, from, to;
if (argumentsLength === 0) {
insertCount = actualDeleteCount = 0;
} else if (argumentsLength === 1) {
insertCount = 0;
actualDeleteCount = len - actualStart;
} else {
insertCount = argumentsLength - 2;
actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);
}
if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {
throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);
}
A = arraySpeciesCreate(O, actualDeleteCount);
for (k = 0; k < actualDeleteCount; k++) {
from = actualStart + k;
if (from in O) createProperty(A, k, O[from]);
}
A.length = actualDeleteCount;
if (insertCount < actualDeleteCount) {
for (k = actualStart; k < len - actualDeleteCount; k++) {
from = k + actualDeleteCount;
to = k + insertCount;
if (from in O) O[to] = O[from];
else delete O[to];
}
for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];
} else if (insertCount > actualDeleteCount) {
for (k = len - actualDeleteCount; k > actualStart; k--) {
from = k + actualDeleteCount - 1;
to = k + insertCount - 1;
if (from in O) O[to] = O[from];
else delete O[to];
}
}
for (k = 0; k < insertCount; k++) {
O[k + actualStart] = arguments[k + 2];
}
O.length = len - actualDeleteCount + insertCount;
return A;
}
});
/***/ }),
/* 21 */
/***/ (function(module, exports) {
// `RequireObjectCoercible` abstract operation
// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
module.exports = function (it) {
if (it == undefined) throw TypeError("Can't call method on " + it);
return it;
};
/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(5);
// `ToPrimitive` abstract operation
// https://tc39.github.io/ecma262/#sec-toprimitive
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (input, PREFERRED_STRING) {
if (!isObject(input)) return input;
var fn, val;
if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
throw TypeError("Can't convert object to primitive value");
};
/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {
var NATIVE_WEAK_MAP = __webpack_require__(86);
var global = __webpack_require__(2);
var isObject = __webpack_require__(5);
var createNonEnumerableProperty = __webpack_require__(6);
var objectHas = __webpack_require__(4);
var sharedKey = __webpack_require__(24);
var hiddenKeys = __webpack_require__(26);
var WeakMap = global.WeakMap;
var set, get, has;
var enforce = function (it) {
return has(it) ? get(it) : set(it, {});
};
var getterFor = function (TYPE) {
return function (it) {
var state;
if (!isObject(it) || (state = get(it)).type !== TYPE) {
throw TypeError('Incompatible receiver, ' + TYPE + ' required');
} return state;
};
};
if (NATIVE_WEAK_MAP) {
var store = new WeakMap();
var wmget = store.get;
var wmhas = store.has;
var wmset = store.set;
set = function (it, metadata) {
wmset.call(store, it, metadata);
return metadata;
};
get = function (it) {
return wmget.call(store, it) || {};
};
has = function (it) {
return wmhas.call(store, it);
};
} else {
var STATE = sharedKey('state');
hiddenKeys[STATE] = true;
set = function (it, metadata) {
createNonEnumerableProperty(it, STATE, metadata);
return metadata;
};
get = function (it) {
return objectHas(it, STATE) ? it[STATE] : {};
};
has = function (it) {
return objectHas(it, STATE);
};
}
module.exports = {
set: set,
get: get,
has: has,
enforce: enforce,
getterFor: getterFor
};
/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {
var shared = __webpack_require__(37);
var uid = __webpack_require__(38);
var keys = shared('keys');
module.exports = function (key) {
return keys[key] || (keys[key] = uid(key));
};
/***/ }),
/* 25 */
/***/ (function(module, exports) {
module.exports = false;
/***/ }),
/* 26 */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {
var path = __webpack_require__(60);
var global = __webpack_require__(2);
var aFunction = function (variable) {
return typeof variable == 'function' ? variable : undefined;
};
module.exports = function (namespace, method) {
return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
: path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
};
/***/ }),
/* 28 */
/***/ (function(module, exports) {
var ceil = Math.ceil;
var floor = Math.floor;
// `ToInteger` abstract operation
// https://tc39.github.io/ecma262/#sec-tointeger
module.exports = function (argument) {
return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
};
/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var regexpFlags = __webpack_require__(89);
var stickyHelpers = __webpack_require__(90);
var nativeExec = RegExp.prototype.exec;
// This always refers to the native implementation, because the
// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
// which loads this file before patching the method.
var nativeReplace = String.prototype.replace;
var patchedExec = nativeExec;
var UPDATES_LAST_INDEX_WRONG = (function () {
var re1 = /a/;
var re2 = /b*/g;
nativeExec.call(re1, 'a');
nativeExec.call(re2, 'a');
return re1.lastIndex !== 0 || re2.lastIndex !== 0;
})();
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;
// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;
if (PATCH) {
patchedExec = function exec(str) {
var re = this;
var lastIndex, reCopy, match, i;
var sticky = UNSUPPORTED_Y && re.sticky;
var flags = regexpFlags.call(re);
var source = re.source;
var charsAdded = 0;
var strCopy = str;
if (sticky) {
flags = flags.replace('y', '');
if (flags.indexOf('g') === -1) {
flags += 'g';
}
strCopy = String(str).slice(re.lastIndex);
// Support anchored sticky behavior.
if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) {
source = '(?: ' + source + ')';
strCopy = ' ' + strCopy;
charsAdded++;
}
// ^(? + rx + ) is needed, in combination with some str slicing, to
// simulate the 'y' flag.
reCopy = new RegExp('^(?:' + source + ')', flags);
}
if (NPCG_INCLUDED) {
reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
}
if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
match = nativeExec.call(sticky ? reCopy : re, strCopy);
if (sticky) {
if (match) {
match.input = match.input.slice(charsAdded);
match[0] = match[0].slice(charsAdded);
match.index = re.lastIndex;
re.lastIndex += match[0].length;
} else re.lastIndex = 0;
} else if (UPDATES_LAST_INDEX_WRONG && match) {
re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
}
if (NPCG_INCLUDED && match && match.length > 1) {
// Fix browsers whose `exec` methods don't consistently return `undefined`
// for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
nativeReplace.call(match[0], reCopy, function () {
for (i = 1; i < arguments.length - 2; i++) {
if (arguments[i] === undefined) match[i] = undefined;
}
});
}
return match;
};
}
module.exports = patchedExec;
/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__(16);
// `IsArray` abstract operation
// https://tc39.github.io/ecma262/#sec-isarray
module.exports = Array.isArray || function isArray(arg) {
return classof(arg) == 'Array';
};
/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fails = __webpack_require__(0);
module.exports = function (METHOD_NAME, argument) {
var method = [][METHOD_NAME];
return !!method && fails(function () {
// eslint-disable-next-line no-useless-call,no-throw-literal
method.call(null, argument || function () { throw 1; }, 1);
});
};
/***/ }),
/* 32 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE__32__;
/***/ }),
/* 33 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE__33__;
/***/ }),
/* 34 */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(9);
var propertyIsEnumerableModule = __webpack_require__(54);
var createPropertyDescriptor = __webpack_require__(15);
var toIndexedObject = __webpack_require__(10);
var toPrimitive = __webpack_require__(22);
var has = __webpack_require__(4);
var IE8_DOM_DEFINE = __webpack_require__(55);
var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// `Object.getOwnPropertyDescriptor` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
O = toIndexedObject(O);
P = toPrimitive(P, true);
if (IE8_DOM_DEFINE) try {
return nativeGetOwnPropertyDescriptor(O, P);
} catch (error) { /* empty */ }
if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
};
/***/ }),
/* 35 */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(0);
var classof = __webpack_require__(16);
var split = ''.split;
// fallback for non-array-like ES3 and non-enumerable old V8 strings
module.exports = fails(function () {
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
// eslint-disable-next-line no-prototype-builtins
return !Object('z').propertyIsEnumerable(0);
}) ? function (it) {
return classof(it) == 'String' ? split.call(it, '') : Object(it);
} : Object;
/***/ }),
/* 36 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2);
var createNonEnumerableProperty = __webpack_require__(6);
module.exports = function (key, value) {
try {
createNonEnumerableProperty(global, key, value);
} catch (error) {
global[key] = value;
} return value;
};
/***/ }),
/* 37 */
/***/ (function(module, exports, __webpack_require__) {
var IS_PURE = __webpack_require__(25);
var store = __webpack_require__(58);
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: '3.6.4',
mode: IS_PURE ? 'pure' : 'global',
copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});
/***/ }),
/* 38 */
/***/ (function(module, exports) {
var id = 0;
var postfix = Math.random();
module.exports = function (key) {
return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
};
/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {
var internalObjectKeys = __webpack_require__(61);
var enumBugKeys = __webpack_require__(41);
var hiddenKeys = enumBugKeys.concat('length', 'prototype');
// `Object.getOwnPropertyNames` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
return internalObjectKeys(O, hiddenKeys);
};
/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(28);
var max = Math.max;
var min = Math.min;
// Helper for a popular repeating case of the spec:
// Let integer be ? ToInteger(index).
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
module.exports = function (index, length) {
var integer = toInteger(index);
return integer < 0 ? max(integer + length, 0) : min(integer, length);
};
/***/ }),
/* 41 */
/***/ (function(module, exports) {
// IE8- don't enum bug keys
module.exports = [
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf'
];
/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(0);
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
// Chrome 38 Symbol has incorrect toString conversion
// eslint-disable-next-line no-undef
return !String(Symbol());
});
/***/ }),
/* 43 */
/***/ (function(module, exports) {
module.exports = function (it) {
if (typeof it != 'function') {
throw TypeError(String(it) + ' is not a function');
} return it;
};
/***/ }),
/* 44 */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(8);
var defineProperties = __webpack_require__(97);
var enumBugKeys = __webpack_require__(41);
var hiddenKeys = __webpack_require__(26);
var html = __webpack_require__(98);
var documentCreateElement = __webpack_require__(56);
var sharedKey = __webpack_require__(24);
var GT = '>';
var LT = '<';
var PROTOTYPE = 'prototype';
var SCRIPT = 'script';
var IE_PROTO = sharedKey('IE_PROTO');
var EmptyConstructor = function () { /* empty */ };
var scriptTag = function (content) {
return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
};
// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
var NullProtoObjectViaActiveX = function (activeXDocument) {
activeXDocument.write(scriptTag(''));
activeXDocument.close();
var temp = activeXDocument.parentWindow.Object;
activeXDocument = null; // avoid memory leak
return temp;
};
// Create object with fake `null` prototype: use iframe Object with cleared prototype
var NullProtoObjectViaIFrame = function () {
// Thrash, waste and sodomy: IE GC bug
var iframe = documentCreateElement('iframe');
var JS = 'java' + SCRIPT + ':';
var iframeDocument;
iframe.style.display = 'none';
html.appendChild(iframe);
// https://github.com/zloirock/core-js/issues/475
iframe.src = String(JS);
iframeDocument = iframe.contentWindow.document;
iframeDocument.open();
iframeDocument.write(scriptTag('document.F=Object'));
iframeDocument.close();
return iframeDocument.F;
};
// Check for document.domain and active x support
// No need to use active x approach when document.domain is not set
// see https://github.com/es-shims/es5-shim/issues/150
// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
// avoid IE GC bug
var activeXDocument;
var NullProtoObject = function () {
try {
/* global ActiveXObject */
activeXDocument = document.domain && new ActiveXObject('htmlfile');
} catch (error) { /* ignore */ }
NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();
var length = enumBugKeys.length;
while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
return NullProtoObject();
};
hiddenKeys[IE_PROTO] = true;
// `Object.create` method
// https://tc39.github.io/ecma262/#sec-object.create
module.exports = Object.create || function create(O, Properties) {
var result;
if (O !== null) {
EmptyConstructor[PROTOTYPE] = anObject(O);
result = new EmptyConstructor();
EmptyConstructor[PROTOTYPE] = null;
// add "__proto__" for Object.getPrototypeOf polyfill
result[IE_PROTO] = O;
} else result = NullProtoObject();
return Properties === undefined ? result : defineProperties(result, Properties);
};
/***/ }),
/* 45 */
/***/ (function(module, exports, __webpack_require__) {
var internalObjectKeys = __webpack_require__(61);
var enumBugKeys = __webpack_require__(41);
// `Object.keys` method
// https://tc39.github.io/ecma262/#sec-object.keys
module.exports = Object.keys || function keys(O) {
return internalObjectKeys(O, enumBugKeys);
};
/***/ }),
/* 46 */
/***/ (function(module, exports, __webpack_require__) {
var defineProperty = __webpack_require__(7).f;
var has = __webpack_require__(4);
var wellKnownSymbol = __webpack_require__(1);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
module.exports = function (it, TAG, STATIC) {
if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });
}
};
/***/ }),
/* 47 */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(5);
var isArray = __webpack_require__(30);
var wellKnownSymbol = __webpack_require__(1);
var SPECIES = wellKnownSymbol('species');
// `ArraySpeciesCreate` abstract operation
// https://tc39.github.io/ecma262/#sec-arrayspeciescreate
module.exports = function (originalArray, length) {
var C;
if (isArray(originalArray)) {
C = originalArray.constructor;
// cross-realm fallback
if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
else if (isObject(C)) {
C = C[SPECIES];
if (C === null) C = undefined;
}
} return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
};
/***/ }),
/* 48 */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(1);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var test = {};
test[TO_STRING_TAG] = 'z';
module.exports = String(test) === '[object z]';
/***/ }),
/* 49 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var toIndexedObject = __webpack_require__(10);
var addToUnscopables = __webpack_require__(72);
var Iterators = __webpack_require__(50);
var InternalStateModule = __webpack_require__(23);
var defineIterator = __webpack_require__(73);
var ARRAY_ITERATOR = 'Array Iterator';
var setInternalState = InternalStateModule.set;
var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
// `Array.prototype.entries` method
// https://tc39.github.io/ecma262/#sec-array.prototype.entries
// `Array.prototype.keys` method
// https://tc39.github.io/ecma262/#sec-array.prototype.keys
// `Array.prototype.values` method
// https://tc39.github.io/ecma262/#sec-array.prototype.values
// `Array.prototype[@@iterator]` method
// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator
// `CreateArrayIterator` internal method
// https://tc39.github.io/ecma262/#sec-createarrayiterator
module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
setInternalState(this, {
type: ARRAY_ITERATOR,
target: toIndexedObject(iterated), // target
index: 0, // next index
kind: kind // kind
});
// `%ArrayIteratorPrototype%.next` method
// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next
}, function () {
var state = getInternalState(this);
var target = state.target;
var kind = state.kind;
var index = state.index++;
if (!target || index >= target.length) {
state.target = undefined;
return { value: undefined, done: true };
}
if (kind == 'keys') return { value: index, done: false };
if (kind == 'values') return { value: target[index], done: false };
return { value: [index, target[index]], done: false };
}, 'values');
// argumentsList[@@iterator] is %ArrayProto_values%
// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject
// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject
Iterators.Arguments = Iterators.Array;
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');
/***/ }),
/* 50 */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/* 51 */
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(3);
var toObject = __webpack_require__(11);
var nativeKeys = __webpack_require__(45);
var fails = __webpack_require__(0);
var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });
// `Object.keys` method
// https://tc39.github.io/ecma262/#sec-object.keys
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
keys: function keys(it) {
return nativeKeys(toObject(it));
}
});
/***/ }),
/* 52 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var toPrimitive = __webpack_require__(22);
var definePropertyModule = __webpack_require__(7);
var createPropertyDescriptor = __webpack_require__(15);
module.exports = function (object, key, value) {
var propertyKey = toPrimitive(key);
if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
else object[propertyKey] = value;
};
/***/ }),
/* 53 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var exec = __webpack_require__(29);
$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
exec: exec
});
/***/ }),
/* 54 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// Nashorn ~ JDK8 bug
var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
// `Object.prototype.propertyIsEnumerable` method implementation
// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
var descriptor = getOwnPropertyDescriptor(this, V);
return !!descriptor && descriptor.enumerable;
} : nativePropertyIsEnumerable;
/***/ }),
/* 55 */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(9);
var fails = __webpack_require__(0);
var createElement = __webpack_require__(56);
// Thank's IE8 for his funny defineProperty
module.exports = !DESCRIPTORS && !fails(function () {
return Object.defineProperty(createElement('div'), 'a', {
get: function () { return 7; }
}).a != 7;
});
/***/ }),
/* 56 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2);
var isObject = __webpack_require__(5);
var document = global.document;
// typeof document.createElement is 'object' in old IE
var EXISTS = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
return EXISTS ? document.createElement(it) : {};
};
/***/ }),
/* 57 */
/***/ (function(module, exports, __webpack_require__) {
var store = __webpack_require__(58);
var functionToString = Function.toString;
// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper
if (typeof store.inspectSource != 'function') {
store.inspectSource = function (it) {
return functionToString.call(it);
};
}
module.exports = store.inspectSource;
/***/ }),
/* 58 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2);
var setGlobal = __webpack_require__(36);
var SHARED = '__core-js_shared__';
var store = global[SHARED] || setGlobal(SHARED, {});
module.exports = store;
/***/ }),
/* 59 */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(4);
var ownKeys = __webpack_require__(87);
var getOwnPropertyDescriptorModule = __webpack_require__(34);
var definePropertyModule = __webpack_require__(7);
module.exports = function (target, source) {
var keys = ownKeys(source);
var defineProperty = definePropertyModule.f;
var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
}
};
/***/ }),
/* 60 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2);
module.exports = global;
/***/ }),
/* 61 */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(4);
var toIndexedObject = __webpack_require__(10);
var indexOf = __webpack_require__(62).indexOf;
var hiddenKeys = __webpack_require__(26);
module.exports = function (object, names) {
var O = toIndexedObject(object);
var i = 0;
var result = [];
var key;
for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
// Don't enum bug & hidden keys
while (names.length > i) if (has(O, key = names[i++])) {
~indexOf(result, key) || result.push(key);
}
return result;
};
/***/ }),
/* 62 */
/***/ (function(module, exports, __webpack_require__) {
var toIndexedObject = __webpack_require__(10);
var toLength = __webpack_require__(13);
var toAbsoluteIndex = __webpack_require__(40);
// `Array.prototype.{ indexOf, includes }` methods implementation
var createMethod = function (IS_INCLUDES) {
return function ($this, el, fromIndex) {
var O = toIndexedObject($this);
var length = toLength(O.length);
var index = toAbsoluteIndex(fromIndex, length);
var value;
// Array#includes uses SameValueZero equality algorithm
// eslint-disable-next-line no-self-compare
if (IS_INCLUDES && el != el) while (length > index) {
value = O[index++];
// eslint-disable-next-line no-self-compare
if (value != value) return true;
// Array#indexOf ignores holes, Array#includes - not
} else for (;length > index; index++) {
if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
} return !IS_INCLUDES && -1;
};
};
module.exports = {
// `Array.prototype.includes` method
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
includes: createMethod(true),
// `Array.prototype.indexOf` method
// https://tc39.github.io/ecma262/#sec-array.prototype.indexof
indexOf: createMethod(false)
};
/***/ }),
/* 63 */
/***/ (function(module, exports) {
exports.f = Object.getOwnPropertySymbols;
/***/ }),
/* 64 */
/***/ (function(module, exports, __webpack_require__) {
var NATIVE_SYMBOL = __webpack_require__(42);
module.exports = NATIVE_SYMBOL
// eslint-disable-next-line no-undef
&& !Symbol.sham
// eslint-disable-next-line no-undef
&& typeof Symbol.iterator == 'symbol';
/***/ }),
/* 65 */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(28);
var requireObjectCoercible = __webpack_require__(21);
// `String.prototype.{ codePointAt, at }` methods implementation
var createMethod = function (CONVERT_TO_STRING) {
return function ($this, pos) {
var S = String(requireObjectCoercible($this));
var position = toInteger(pos);
var size = S.length;
var first, second;
if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
first = S.charCodeAt(position);
return first < 0xD800 || first > 0xDBFF || position + 1 === size
|| (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
? CONVERT_TO_STRING ? S.charAt(position) : first
: CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
};
};
module.exports = {
// `String.prototype.codePointAt` method
// https://tc39.github.io/ecma262/#sec-string.prototype.codepointat
codeAt: createMethod(false),
// `String.prototype.at` method
// https://github.com/mathiasbynens/String.prototype.at
charAt: createMethod(true)
};
/***/ }),
/* 66 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var global = __webpack_require__(2);
var getBuiltIn = __webpack_require__(27);
var IS_PURE = __webpack_require__(25);
var DESCRIPTORS = __webpack_require__(9);
var NATIVE_SYMBOL = __webpack_require__(42);
var USE_SYMBOL_AS_UID = __webpack_require__(64);
var fails = __webpack_require__(0);
var has = __webpack_require__(4);
var isArray = __webpack_require__(30);
var isObject = __webpack_require__(5);
var anObject = __webpack_require__(8);
var toObject = __webpack_require__(11);
var toIndexedObject = __webpack_require__(10);
var toPrimitive = __webpack_require__(22);
var createPropertyDescriptor = __webpack_require__(15);
var nativeObjectCreate = __webpack_require__(44);
var objectKeys = __webpack_require__(45);
var getOwnPropertyNamesModule = __webpack_require__(39);
var getOwnPropertyNamesExternal = __webpack_require__(99);
var getOwnPropertySymbolsModule = __webpack_require__(63);
var getOwnPropertyDescriptorModule = __webpack_require__(34);
var definePropertyModule = __webpack_require__(7);
var propertyIsEnumerableModule = __webpack_require__(54);
var createNonEnumerableProperty = __webpack_require__(6);
var redefine = __webpack_require__(17);
var shared = __webpack_require__(37);
var sharedKey = __webpack_require__(24);
var hiddenKeys = __webpack_require__(26);
var uid = __webpack_require__(38);
var wellKnownSymbol = __webpack_require__(1);
var wrappedWellKnownSymbolModule = __webpack_require__(67);
var defineWellKnownSymbol = __webpack_require__(68);
var setToStringTag = __webpack_require__(46);
var InternalStateModule = __webpack_require__(23);
var $forEach = __webpack_require__(18).forEach;
var HIDDEN = sharedKey('hidden');
var SYMBOL = 'Symbol';
var PROTOTYPE = 'prototype';
var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
var setInternalState = InternalStateModule.set;
var getInternalState = InternalStateModule.getterFor(SYMBOL);
var ObjectPrototype = Object[PROTOTYPE];
var $Symbol = global.Symbol;
var $stringify = getBuiltIn('JSON', 'stringify');
var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
var nativeDefineProperty = definePropertyModule.f;
var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;
var nativePropertyIsEnumerable = propertyIsEnumerableModule.f;
var AllSymbols = shared('symbols');
var ObjectPrototypeSymbols = shared('op-symbols');
var StringToSymbolRegistry = shared('string-to-symbol-registry');
var SymbolToStringRegistry = shared('symbol-to-string-registry');
var WellKnownSymbolsStore = shared('wks');
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDescriptor = DESCRIPTORS && fails(function () {
return nativeObjectCreate(nativeDefineProperty({}, 'a', {
get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }
})).a != 7;
}) ? function (O, P, Attributes) {
var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);
if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];
nativeDefineProperty(O, P, Attributes);
if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {
nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);
}
} : nativeDefineProperty;
var wrap = function (tag, description) {
var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);
setInternalState(symbol, {
type: SYMBOL,
tag: tag,
description: description
});
if (!DESCRIPTORS) symbol.description = description;
return symbol;
};
var isSymbol = USE_SYMBOL_AS_UID ? function (it) {
return typeof it == 'symbol';
} : function (it) {
return Object(it) instanceof $Symbol;
};
var $defineProperty = function defineProperty(O, P, Attributes) {
if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);
anObject(O);
var key = toPrimitive(P, true);
anObject(Attributes);
if (has(AllSymbols, key)) {
if (!Attributes.enumerable) {
if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));
O[HIDDEN][key] = true;
} else {
if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });
} return setSymbolDescriptor(O, key, Attributes);
} return nativeDefineProperty(O, key, Attributes);
};
var $defineProperties = function defineProperties(O, Properties) {
anObject(O);
var properties = toIndexedObject(Properties);
var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));
$forEach(keys, function (key) {
if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);
});
return O;
};
var $create = function create(O, Properties) {
return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);
};
var $propertyIsEnumerable = function propertyIsEnumerable(V) {
var P = toPrimitive(V, true);
var enumerable = nativePropertyIsEnumerable.call(this, P);
if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;
return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
var it = toIndexedObject(O);
var key = toPrimitive(P, true);
if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;
var descriptor = nativeGetOwnPropertyDescriptor(it, key);
if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {
descriptor.enumerable = true;
}
return descriptor;
};
var $getOwnPropertyNames = function getOwnPropertyNames(O) {
var names = nativeGetOwnPropertyNames(toIndexedObject(O));
var result = [];
$forEach(names, function (key) {
if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);
});
return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;
var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));
var result = [];
$forEach(names, function (key) {
if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {
result.push(AllSymbols[key]);
}
});
return result;
};
// `Symbol` constructor
// https://tc39.github.io/ecma262/#sec-symbol-constructor
if (!NATIVE_SYMBOL) {
$Symbol = function Symbol() {
if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');
var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);
var tag = uid(description);
var setter = function (value) {
if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);
if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));
};
if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
return wrap(tag, description);
};
redefine($Symbol[PROTOTYPE], 'toString', function toString() {
return getInternalState(this).tag;
});
redefine($Symbol, 'withoutSetter', function (description) {
return wrap(uid(description), description);
});
propertyIsEnumerableModule.f = $propertyIsEnumerable;
definePropertyModule.f = $defineProperty;
getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;
getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;
wrappedWellKnownSymbolModule.f = function (name) {
return wrap(wellKnownSymbol(name), name);
};
if (DESCRIPTORS) {
// https://github.com/tc39/proposal-Symbol-description
nativeDefineProperty($Symbol[PROTOTYPE], 'description', {
configurable: true,
get: function description() {
return getInternalState(this).description;
}
});
if (!IS_PURE) {
redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
}
}
}
$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {
Symbol: $Symbol
});
$forEach(objectKeys(WellKnownSymbolsStore), function (name) {
defineWellKnownSymbol(name);
});
$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
// `Symbol.for` method
// https://tc39.github.io/ecma262/#sec-symbol.for
'for': function (key) {
var string = String(key);
if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
var symbol = $Symbol(string);
StringToSymbolRegistry[string] = symbol;
SymbolToStringRegistry[symbol] = string;
return symbol;
},
// `Symbol.keyFor` method
// https://tc39.github.io/ecma262/#sec-symbol.keyfor
keyFor: function keyFor(sym) {
if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');
if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
},
useSetter: function () { USE_SETTER = true; },
useSimple: function () { USE_SETTER = false; }
});
$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {
// `Object.create` method
// https://tc39.github.io/ecma262/#sec-object.create
create: $create,
// `Object.defineProperty` method
// https://tc39.github.io/ecma262/#sec-object.defineproperty
defineProperty: $defineProperty,
// `Object.defineProperties` method
// https://tc39.github.io/ecma262/#sec-object.defineproperties
defineProperties: $defineProperties,
// `Object.getOwnPropertyDescriptor` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors
getOwnPropertyDescriptor: $getOwnPropertyDescriptor
});
$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {
// `Object.getOwnPropertyNames` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
getOwnPropertyNames: $getOwnPropertyNames,
// `Object.getOwnPropertySymbols` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols
getOwnPropertySymbols: $getOwnPropertySymbols
});
// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {
getOwnPropertySymbols: function getOwnPropertySymbols(it) {
return getOwnPropertySymbolsModule.f(toObject(it));
}
});
// `JSON.stringify` method behavior with symbols
// https://tc39.github.io/ecma262/#sec-json.stringify
if ($stringify) {
var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {
var symbol = $Symbol();
// MS Edge converts symbol values to JSON as {}
return $stringify([symbol]) != '[null]'
// WebKit converts symbol values to JSON as null
|| $stringify({ a: symbol }) != '{}'
// V8 throws on boxed symbols
|| $stringify(Object(symbol)) != '{}';
});
$({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {
// eslint-disable-next-line no-unused-vars
stringify: function stringify(it, replacer, space) {
var args = [it];
var index = 1;
var $replacer;
while (arguments.length > index) args.push(arguments[index++]);
$replacer = replacer;
if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
if (!isArray(replacer)) replacer = function (key, value) {
if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
if (!isSymbol(value)) return value;
};
args[1] = replacer;
return $stringify.apply(null, args);
}
});
}
// `Symbol.prototype[@@toPrimitive]` method
// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive
if (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {
createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
}
// `Symbol.prototype[@@toStringTag]` property
// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag
setToStringTag($Symbol, SYMBOL);
hiddenKeys[HIDDEN] = true;
/***/ }),
/* 67 */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(1);
exports.f = wellKnownSymbol;
/***/ }),
/* 68 */
/***/ (function(module, exports, __webpack_require__) {
var path = __webpack_require__(60);
var has = __webpack_require__(4);
var wrappedWellKnownSymbolModule = __webpack_require__(67);
var defineProperty = __webpack_require__(7).f;
module.exports = function (NAME) {
var Symbol = path.Symbol || (path.Symbol = {});
if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {
value: wrappedWellKnownSymbolModule.f(NAME)
});
};
/***/ }),
/* 69 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
// `Symbol.prototype.description` getter
// https://tc39.github.io/ecma262/#sec-symbol.prototype.description
var $ = __webpack_require__(3);
var DESCRIPTORS = __webpack_require__(9);
var global = __webpack_require__(2);
var has = __webpack_require__(4);
var isObject = __webpack_require__(5);
var defineProperty = __webpack_require__(7).f;
var copyConstructorProperties = __webpack_require__(59);
var NativeSymbol = global.Symbol;
if (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||
// Safari 12 bug
NativeSymbol().description !== undefined
)) {
var EmptyStringDescriptionStore = {};
// wrap Symbol constructor for correct work with undefined description
var SymbolWrapper = function Symbol() {
var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);
var result = this instanceof SymbolWrapper
? new NativeSymbol(description)
// in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'
: description === undefined ? NativeSymbol() : NativeSymbol(description);
if (description === '') EmptyStringDescriptionStore[result] = true;
return result;
};
copyConstructorProperties(SymbolWrapper, NativeSymbol);
var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;
symbolPrototype.constructor = SymbolWrapper;
var symbolToString = symbolPrototype.toString;
var native = String(NativeSymbol('test')) == 'Symbol(test)';
var regexp = /^Symbol\((.*)\)[^)]+$/;
defineProperty(symbolPrototype, 'description', {
configurable: true,
get: function description() {
var symbol = isObject(this) ? this.valueOf() : this;
var string = symbolToString.call(symbol);
if (has(EmptyStringDescriptionStore, symbol)) return '';
var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');
return desc === '' ? undefined : desc;
}
});
$({ global: true, forced: true }, {
Symbol: SymbolWrapper
});
}
/***/ }),
/* 70 */
/***/ (function(module, exports, __webpack_require__) {
var TO_STRING_TAG_SUPPORT = __webpack_require__(48);
var redefine = __webpack_require__(17);
var toString = __webpack_require__(101);
// `Object.prototype.toString` method
// https://tc39.github.io/ecma262/#sec-object.prototype.tostring
if (!TO_STRING_TAG_SUPPORT) {
redefine(Object.prototype, 'toString', toString, { unsafe: true });
}
/***/ }),
/* 71 */
/***/ (function(module, exports, __webpack_require__) {
var defineWellKnownSymbol = __webpack_require__(68);
// `Symbol.iterator` well-known symbol
// https://tc39.github.io/ecma262/#sec-symbol.iterator
defineWellKnownSymbol('iterator');
/***/ }),
/* 72 */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(1);
var create = __webpack_require__(44);
var definePropertyModule = __webpack_require__(7);
var UNSCOPABLES = wellKnownSymbol('unscopables');
var ArrayPrototype = Array.prototype;
// Array.prototype[@@unscopables]
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
if (ArrayPrototype[UNSCOPABLES] == undefined) {
definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {
configurable: true,
value: create(null)
});
}
// add a key to Array.prototype[@@unscopables]
module.exports = function (key) {
ArrayPrototype[UNSCOPABLES][key] = true;
};
/***/ }),
/* 73 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var createIteratorConstructor = __webpack_require__(103);
var getPrototypeOf = __webpack_require__(75);
var setPrototypeOf = __webpack_require__(105);
var setToStringTag = __webpack_require__(46);
var createNonEnumerableProperty = __webpack_require__(6);
var redefine = __webpack_require__(17);
var wellKnownSymbol = __webpack_require__(1);
var IS_PURE = __webpack_require__(25);
var Iterators = __webpack_require__(50);
var IteratorsCore = __webpack_require__(74);
var IteratorPrototype = IteratorsCore.IteratorPrototype;
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
var ITERATOR = wellKnownSymbol('iterator');
var KEYS = 'keys';
var VALUES = 'values';
var ENTRIES = 'entries';
var returnThis = function () { return this; };
module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
createIteratorConstructor(IteratorConstructor, NAME, next);
var getIterationMethod = function (KIND) {
if (KIND === DEFAULT && defaultIterator) return defaultIterator;
if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
switch (KIND) {
case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
} return function () { return new IteratorConstructor(this); };
};
var TO_STRING_TAG = NAME + ' Iterator';
var INCORRECT_VALUES_NAME = false;
var IterablePrototype = Iterable.prototype;
var nativeIterator = IterablePrototype[ITERATOR]
|| IterablePrototype['@@iterator']
|| DEFAULT && IterablePrototype[DEFAULT];
var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
var CurrentIteratorPrototype, methods, KEY;
// fix native
if (anyNativeIterator) {
CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
if (setPrototypeOf) {
setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
} else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {
createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);
}
}
// Set @@toStringTag to native iterators
setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
}
}
// fix Array#{values, @@iterator}.name in V8 / FF
if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
INCORRECT_VALUES_NAME = true;
defaultIterator = function values() { return nativeIterator.call(this); };
}
// define iterator
if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);
}
Iterators[NAME] = defaultIterator;
// export additional methods
if (DEFAULT) {
methods = {
values: getIterationMethod(VALUES),
keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
entries: getIterationMethod(ENTRIES)
};
if (FORCED) for (KEY in methods) {
if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
redefine(IterablePrototype, KEY, methods[KEY]);
}
} else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
}
return methods;
};
/***/ }),
/* 74 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var getPrototypeOf = __webpack_require__(75);
var createNonEnumerableProperty = __webpack_require__(6);
var has = __webpack_require__(4);
var wellKnownSymbol = __webpack_require__(1);
var IS_PURE = __webpack_require__(25);
var ITERATOR = wellKnownSymbol('iterator');
var BUGGY_SAFARI_ITERATORS = false;
var returnThis = function () { return this; };
// `%IteratorPrototype%` object
// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
if ([].keys) {
arrayIterator = [].keys();
// Safari 8 has buggy iterators w/o `next`
if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
else {
PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
}
}
if (IteratorPrototype == undefined) IteratorPrototype = {};
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {
createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);
}
module.exports = {
IteratorPrototype: IteratorPrototype,
BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
};
/***/ }),
/* 75 */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(4);
var toObject = __webpack_require__(11);
var sharedKey = __webpack_require__(24);
var CORRECT_PROTOTYPE_GETTER = __webpack_require__(104);
var IE_PROTO = sharedKey('IE_PROTO');
var ObjectPrototype = Object.prototype;
// `Object.getPrototypeOf` method
// https://tc39.github.io/ecma262/#sec-object.getprototypeof
module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
O = toObject(O);
if (has(O, IE_PROTO)) return O[IE_PROTO];
if (typeof O.constructor == 'function' && O instanceof O.constructor) {
return O.constructor.prototype;
} return O instanceof Object ? ObjectPrototype : null;
};
/***/ }),
/* 76 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var charAt = __webpack_require__(65).charAt;
var InternalStateModule = __webpack_require__(23);
var defineIterator = __webpack_require__(73);
var STRING_ITERATOR = 'String Iterator';
var setInternalState = InternalStateModule.set;
var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
// `String.prototype[@@iterator]` method
// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator
defineIterator(String, 'String', function (iterated) {
setInternalState(this, {
type: STRING_ITERATOR,
string: String(iterated),
index: 0
});
// `%StringIteratorPrototype%.next` method
// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next
}, function next() {
var state = getInternalState(this);
var string = state.string;
var index = state.index;
var point;
if (index >= string.length) return { value: undefined, done: true };
point = charAt(string, index);
state.index += point.length;
return { value: point, done: false };
});
/***/ }),
/* 77 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2);
var DOMIterables = __webpack_require__(78);
var ArrayIteratorMethods = __webpack_require__(49);
var createNonEnumerableProperty = __webpack_require__(6);
var wellKnownSymbol = __webpack_require__(1);
var ITERATOR = wellKnownSymbol('iterator');
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var ArrayValues = ArrayIteratorMethods.values;
for (var COLLECTION_NAME in DOMIterables) {
var Collection = global[COLLECTION_NAME];
var CollectionPrototype = Collection && Collection.prototype;
if (CollectionPrototype) {
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype[ITERATOR] !== ArrayValues) try {
createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);
} catch (error) {
CollectionPrototype[ITERATOR] = ArrayValues;
}
if (!CollectionPrototype[TO_STRING_TAG]) {
createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);
}
if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {
createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
} catch (error) {
CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
}
}
}
}
/***/ }),
/* 78 */
/***/ (function(module, exports) {
// iterable DOM collections
// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
module.exports = {
CSSRuleList: 0,
CSSStyleDeclaration: 0,
CSSValueList: 0,
ClientRectList: 0,
DOMRectList: 0,
DOMStringList: 0,
DOMTokenList: 1,
DataTransferItemList: 0,
FileList: 0,
HTMLAllCollection: 0,
HTMLCollection: 0,
HTMLFormElement: 0,
HTMLSelectElement: 0,
MediaList: 0,
MimeTypeArray: 0,
NamedNodeMap: 0,
NodeList: 1,
PaintRequestList: 0,
Plugin: 0,
PluginArray: 0,
SVGLengthList: 0,
SVGNumberList: 0,
SVGPathSegList: 0,
SVGPointList: 0,
SVGStringList: 0,
SVGTransformList: 0,
SourceBufferList: 0,
StyleSheetList: 0,
TextTrackCueList: 0,
TextTrackList: 0,
TouchList: 0
};
/***/ }),
/* 79 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var $filter = __webpack_require__(18).filter;
var arrayMethodHasSpeciesSupport = __webpack_require__(19);
var arrayMethodUsesToLength = __webpack_require__(12);
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');
// Edge 14- issue
var USES_TO_LENGTH = arrayMethodUsesToLength('filter');
// `Array.prototype.filter` method
// https://tc39.github.io/ecma262/#sec-array.prototype.filter
// with adding support of @@species
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
filter: function filter(callbackfn /* , thisArg */) {
return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/* 80 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2);
var userAgent = __webpack_require__(109);
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8;
var match, version;
if (v8) {
match = v8.split('.');
version = match[0] + match[1];
} else if (userAgent) {
match = userAgent.match(/Edge\/(\d+)/);
if (!match || match[1] >= 74) {
match = userAgent.match(/Chrome\/(\d+)/);
if (match) version = match[1];
}
}
module.exports = version && +version;
/***/ }),
/* 81 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var fails = __webpack_require__(0);
var isArray = __webpack_require__(30);
var isObject = __webpack_require__(5);
var toObject = __webpack_require__(11);
var toLength = __webpack_require__(13);
var createProperty = __webpack_require__(52);
var arraySpeciesCreate = __webpack_require__(47);
var arrayMethodHasSpeciesSupport = __webpack_require__(19);
var wellKnownSymbol = __webpack_require__(1);
var V8_VERSION = __webpack_require__(80);
var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';
// We can't use this feature detection in V8 since it causes
// deoptimization and serious performance degradation
// https://github.com/zloirock/core-js/issues/679
var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {
var array = [];
array[IS_CONCAT_SPREADABLE] = false;
return array.concat()[0] !== array;
});
var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');
var isConcatSpreadable = function (O) {
if (!isObject(O)) return false;
var spreadable = O[IS_CONCAT_SPREADABLE];
return spreadable !== undefined ? !!spreadable : isArray(O);
};
var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
// `Array.prototype.concat` method
// https://tc39.github.io/ecma262/#sec-array.prototype.concat
// with adding support of @@isConcatSpreadable and @@species
$({ target: 'Array', proto: true, forced: FORCED }, {
concat: function concat(arg) { // eslint-disable-line no-unused-vars
var O = toObject(this);
var A = arraySpeciesCreate(O, 0);
var n = 0;
var i, k, length, len, E;
for (i = -1, length = arguments.length; i < length; i++) {
E = i === -1 ? O : arguments[i];
if (isConcatSpreadable(E)) {
len = toLength(E.length);
if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);
} else {
if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
createProperty(A, n++, E);
}
}
A.length = n;
return A;
}
});
/***/ }),
/* 82 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var isObject = __webpack_require__(5);
var isArray = __webpack_require__(30);
var toAbsoluteIndex = __webpack_require__(40);
var toLength = __webpack_require__(13);
var toIndexedObject = __webpack_require__(10);
var createProperty = __webpack_require__(52);
var wellKnownSymbol = __webpack_require__(1);
var arrayMethodHasSpeciesSupport = __webpack_require__(19);
var arrayMethodUsesToLength = __webpack_require__(12);
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');
var USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });
var SPECIES = wellKnownSymbol('species');
var nativeSlice = [].slice;
var max = Math.max;
// `Array.prototype.slice` method
// https://tc39.github.io/ecma262/#sec-array.prototype.slice
// fallback for not array-like ES3 strings and DOM objects
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
slice: function slice(start, end) {
var O = toIndexedObject(this);
var length = toLength(O.length);
var k = toAbsoluteIndex(start, length);
var fin = toAbsoluteIndex(end === undefined ? length : end, length);
// inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
var Constructor, result, n;
if (isArray(O)) {
Constructor = O.constructor;
// cross-realm fallback
if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {
Constructor = undefined;
} else if (isObject(Constructor)) {
Constructor = Constructor[SPECIES];
if (Constructor === null) Constructor = undefined;
}
if (Constructor === Array || Constructor === undefined) {
return nativeSlice.call(O, k, fin);
}
}
result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));
for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
result.length = n;
return result;
}
});
/***/ }),
/* 83 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var aFunction = __webpack_require__(43);
var toObject = __webpack_require__(11);
var fails = __webpack_require__(0);
var arrayMethodIsStrict = __webpack_require__(31);
var test = [];
var nativeSort = test.sort;
// IE8-
var FAILS_ON_UNDEFINED = fails(function () {
test.sort(undefined);
});
// V8 bug
var FAILS_ON_NULL = fails(function () {
test.sort(null);
});
// Old WebKit
var STRICT_METHOD = arrayMethodIsStrict('sort');
var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;
// `Array.prototype.sort` method
// https://tc39.github.io/ecma262/#sec-array.prototype.sort
$({ target: 'Array', proto: true, forced: FORCED }, {
sort: function sort(comparefn) {
return comparefn === undefined
? nativeSort.call(toObject(this))
: nativeSort.call(toObject(this), aFunction(comparefn));
}
});
/***/ }),
/* 84 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var $find = __webpack_require__(18).find;
var addToUnscopables = __webpack_require__(72);
var arrayMethodUsesToLength = __webpack_require__(12);
var FIND = 'find';
var SKIPS_HOLES = true;
var USES_TO_LENGTH = arrayMethodUsesToLength(FIND);
// Shouldn't skip holes
if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
// `Array.prototype.find` method
// https://tc39.github.io/ecma262/#sec-array.prototype.find
$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {
find: function find(callbackfn /* , that = undefined */) {
return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
}
});
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables(FIND);
/***/ }),
/* 85 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE__85__;
/***/ }),
/* 86 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2);
var inspectSource = __webpack_require__(57);
var WeakMap = global.WeakMap;
module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));
/***/ }),
/* 87 */
/***/ (function(module, exports, __webpack_require__) {
var getBuiltIn = __webpack_require__(27);
var getOwnPropertyNamesModule = __webpack_require__(39);
var getOwnPropertySymbolsModule = __webpack_require__(63);
var anObject = __webpack_require__(8);
// all object keys, includes non-enumerable and symbols
module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
var keys = getOwnPropertyNamesModule.f(anObject(it));
var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
};
/***/ }),
/* 88 */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(0);
var replacement = /#|\.prototype\./;
var isForced = function (feature, detection) {
var value = data[normalize(feature)];
return value == POLYFILL ? true
: value == NATIVE ? false
: typeof detection == 'function' ? fails(detection)
: !!detection;
};
var normalize = isForced.normalize = function (string) {
return String(string).replace(replacement, '.').toLowerCase();
};
var data = isForced.data = {};
var NATIVE = isForced.NATIVE = 'N';
var POLYFILL = isForced.POLYFILL = 'P';
module.exports = isForced;
/***/ }),
/* 89 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var anObject = __webpack_require__(8);
// `RegExp.prototype.flags` getter implementation
// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags
module.exports = function () {
var that = anObject(this);
var result = '';
if (that.global) result += 'g';
if (that.ignoreCase) result += 'i';
if (that.multiline) result += 'm';
if (that.dotAll) result += 's';
if (that.unicode) result += 'u';
if (that.sticky) result += 'y';
return result;
};
/***/ }),
/* 90 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fails = __webpack_require__(0);
// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,
// so we use an intermediate function.
function RE(s, f) {
return RegExp(s, f);
}
exports.UNSUPPORTED_Y = fails(function () {
// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
var re = RE('a', 'y');
re.lastIndex = 2;
return re.exec('abcd') != null;
});
exports.BROKEN_CARET = fails(function () {
// https://bugzilla.mozilla.org/show_bug.cgi?id=773687
var re = RE('^r', 'gy');
re.lastIndex = 2;
return re.exec('str') != null;
});
/***/ }),
/* 91 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fixRegExpWellKnownSymbolLogic = __webpack_require__(92);
var isRegExp = __webpack_require__(93);
var anObject = __webpack_require__(8);
var requireObjectCoercible = __webpack_require__(21);
var speciesConstructor = __webpack_require__(94);
var advanceStringIndex = __webpack_require__(95);
var toLength = __webpack_require__(13);
var callRegExpExec = __webpack_require__(96);
var regexpExec = __webpack_require__(29);
var fails = __webpack_require__(0);
var arrayPush = [].push;
var min = Math.min;
var MAX_UINT32 = 0xFFFFFFFF;
// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });
// @@split logic
fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {
var internalSplit;
if (
'abbc'.split(/(b)*/)[1] == 'c' ||
'test'.split(/(?:)/, -1).length != 4 ||
'ab'.split(/(?:ab)*/).length != 2 ||
'.'.split(/(.?)(.?)/).length != 4 ||
'.'.split(/()()/).length > 1 ||
''.split(/.?/).length
) {
// based on es5-shim implementation, need to rework it
internalSplit = function (separator, limit) {
var string = String(requireObjectCoercible(this));
var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
if (lim === 0) return [];
if (separator === undefined) return [string];
// If `separator` is not a regex, use native split
if (!isRegExp(separator)) {
return nativeSplit.call(string, separator, lim);
}
var output = [];
var flags = (separator.ignoreCase ? 'i' : '') +
(separator.multiline ? 'm' : '') +
(separator.unicode ? 'u' : '') +
(separator.sticky ? 'y' : '');
var lastLastIndex = 0;
// Make `global` and avoid `lastIndex` issues by working with a copy
var separatorCopy = new RegExp(separator.source, flags + 'g');
var match, lastIndex, lastLength;
while (match = regexpExec.call(separatorCopy, string)) {
lastIndex = separatorCopy.lastIndex;
if (lastIndex > lastLastIndex) {
output.push(string.slice(lastLastIndex, match.index));
if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));
lastLength = match[0].length;
lastLastIndex = lastIndex;
if (output.length >= lim) break;
}
if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop
}
if (lastLastIndex === string.length) {
if (lastLength || !separatorCopy.test('')) output.push('');
} else output.push(string.slice(lastLastIndex));
return output.length > lim ? output.slice(0, lim) : output;
};
// Chakra, V8
} else if ('0'.split(undefined, 0).length) {
internalSplit = function (separator, limit) {
return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);
};
} else internalSplit = nativeSplit;
return [
// `String.prototype.split` method
// https://tc39.github.io/ecma262/#sec-string.prototype.split
function split(separator, limit) {
var O = requireObjectCoercible(this);
var splitter = separator == undefined ? undefined : separator[SPLIT];
return splitter !== undefined
? splitter.call(separator, O, limit)
: internalSplit.call(String(O), separator, limit);
},
// `RegExp.prototype[@@split]` method
// https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
//
// NOTE: This cannot be properly polyfilled in engines that don't support
// the 'y' flag.
function (regexp, limit) {
var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);
if (res.done) return res.value;
var rx = anObject(regexp);
var S = String(this);
var C = speciesConstructor(rx, RegExp);
var unicodeMatching = rx.unicode;
var flags = (rx.ignoreCase ? 'i' : '') +
(rx.multiline ? 'm' : '') +
(rx.unicode ? 'u' : '') +
(SUPPORTS_Y ? 'y' : 'g');
// ^(? + rx + ) is needed, in combination with some S slicing, to
// simulate the 'y' flag.
var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
if (lim === 0) return [];
if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
var p = 0;
var q = 0;
var A = [];
while (q < S.length) {
splitter.lastIndex = SUPPORTS_Y ? q : 0;
var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
var e;
if (
z === null ||
(e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
) {
q = advanceStringIndex(S, q, unicodeMatching);
} else {
A.push(S.slice(p, q));
if (A.length === lim) return A;
for (var i = 1; i <= z.length - 1; i++) {
A.push(z[i]);
if (A.length === lim) return A;
}
q = p = e;
}
}
A.push(S.slice(p));
return A;
}
];
}, !SUPPORTS_Y);
/***/ }),
/* 92 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
// TODO: Remove from `core-js@4` since it's moved to entry points
__webpack_require__(53);
var redefine = __webpack_require__(17);
var fails = __webpack_require__(0);
var wellKnownSymbol = __webpack_require__(1);
var regexpExec = __webpack_require__(29);
var createNonEnumerableProperty = __webpack_require__(6);
var SPECIES = wellKnownSymbol('species');
var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
// #replace needs built-in support for named groups.
// #match works fine because it just return the exec results, even if it has
// a "grops" property.
var re = /./;
re.exec = function () {
var result = [];
result.groups = { a: '7' };
return result;
};
return ''.replace(re, '$<a>') !== '7';
});
// IE <= 11 replaces $0 with the whole match, as if it was $&
// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
var REPLACE_KEEPS_$0 = (function () {
return 'a'.replace(/./, '$0') === '$0';
})();
var REPLACE = wellKnownSymbol('replace');
// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
if (/./[REPLACE]) {
return /./[REPLACE]('a', '$0') === '';
}
return false;
})();
// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
// Weex JS has frozen built-in prototypes, so use try / catch wrapper
var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
var re = /(?:)/;
var originalExec = re.exec;
re.exec = function () { return originalExec.apply(this, arguments); };
var result = 'ab'.split(re);
return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
});
module.exports = function (KEY, length, exec, sham) {
var SYMBOL = wellKnownSymbol(KEY);
var DELEGATES_TO_SYMBOL = !fails(function () {
// String methods call symbol-named RegEp methods
var O = {};
O[SYMBOL] = function () { return 7; };
return ''[KEY](O) != 7;
});
var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
// Symbol-named RegExp methods call .exec
var execCalled = false;
var re = /a/;
if (KEY === 'split') {
// We can't use real regex here since it causes deoptimization
// and serious performance degradation in V8
// https://github.com/zloirock/core-js/issues/306
re = {};
// RegExp[@@split] doesn't call the regex's exec method, but first creates
// a new one. We need to return the patched regex when creating the new one.
re.constructor = {};
re.constructor[SPECIES] = function () { return re; };
re.flags = '';
re[SYMBOL] = /./[SYMBOL];
}
re.exec = function () { execCalled = true; return null; };
re[SYMBOL]('');
return !execCalled;
});
if (
!DELEGATES_TO_SYMBOL ||
!DELEGATES_TO_EXEC ||
(KEY === 'replace' && !(
REPLACE_SUPPORTS_NAMED_GROUPS &&
REPLACE_KEEPS_$0 &&
!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
)) ||
(KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
) {
var nativeRegExpMethod = /./[SYMBOL];
var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
if (regexp.exec === regexpExec) {
if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
// The native String method already delegates to @@method (this
// polyfilled function), leasing to infinite recursion.
// We avoid it by directly calling the native @@method method.
return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
}
return { done: true, value: nativeMethod.call(str, regexp, arg2) };
}
return { done: false };
}, {
REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,
REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
});
var stringMethod = methods[0];
var regexMethod = methods[1];
redefine(String.prototype, KEY, stringMethod);
redefine(RegExp.prototype, SYMBOL, length == 2
// 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
// 21.2.5.11 RegExp.prototype[@@split](string, limit)
? function (string, arg) { return regexMethod.call(string, this, arg); }
// 21.2.5.6 RegExp.prototype[@@match](string)
// 21.2.5.9 RegExp.prototype[@@search](string)
: function (string) { return regexMethod.call(string, this); }
);
}
if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);
};
/***/ }),
/* 93 */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(5);
var classof = __webpack_require__(16);
var wellKnownSymbol = __webpack_require__(1);
var MATCH = wellKnownSymbol('match');
// `IsRegExp` abstract operation
// https://tc39.github.io/ecma262/#sec-isregexp
module.exports = function (it) {
var isRegExp;
return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');
};
/***/ }),
/* 94 */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(8);
var aFunction = __webpack_require__(43);
var wellKnownSymbol = __webpack_require__(1);
var SPECIES = wellKnownSymbol('species');
// `SpeciesConstructor` abstract operation
// https://tc39.github.io/ecma262/#sec-speciesconstructor
module.exports = function (O, defaultConstructor) {
var C = anObject(O).constructor;
var S;
return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);
};
/***/ }),
/* 95 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var charAt = __webpack_require__(65).charAt;
// `AdvanceStringIndex` abstract operation
// https://tc39.github.io/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
return index + (unicode ? charAt(S, index).length : 1);
};
/***/ }),
/* 96 */
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__(16);
var regexpExec = __webpack_require__(29);
// `RegExpExec` abstract operation
// https://tc39.github.io/ecma262/#sec-regexpexec
module.exports = function (R, S) {
var exec = R.exec;
if (typeof exec === 'function') {
var result = exec.call(R, S);
if (typeof result !== 'object') {
throw TypeError('RegExp exec method returned something other than an Object or null');
}
return result;
}
if (classof(R) !== 'RegExp') {
throw TypeError('RegExp#exec called on incompatible receiver');
}
return regexpExec.call(R, S);
};
/***/ }),
/* 97 */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(9);
var definePropertyModule = __webpack_require__(7);
var anObject = __webpack_require__(8);
var objectKeys = __webpack_require__(45);
// `Object.defineProperties` method
// https://tc39.github.io/ecma262/#sec-object.defineproperties
module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
anObject(O);
var keys = objectKeys(Properties);
var length = keys.length;
var index = 0;
var key;
while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
return O;
};
/***/ }),
/* 98 */
/***/ (function(module, exports, __webpack_require__) {
var getBuiltIn = __webpack_require__(27);
module.exports = getBuiltIn('document', 'documentElement');
/***/ }),
/* 99 */
/***/ (function(module, exports, __webpack_require__) {
var toIndexedObject = __webpack_require__(10);
var nativeGetOwnPropertyNames = __webpack_require__(39).f;
var toString = {}.toString;
var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
? Object.getOwnPropertyNames(window) : [];
var getWindowNames = function (it) {
try {
return nativeGetOwnPropertyNames(it);
} catch (error) {
return windowNames.slice();
}
};
// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
module.exports.f = function getOwnPropertyNames(it) {
return windowNames && toString.call(it) == '[object Window]'
? getWindowNames(it)
: nativeGetOwnPropertyNames(toIndexedObject(it));
};
/***/ }),
/* 100 */
/***/ (function(module, exports, __webpack_require__) {
var aFunction = __webpack_require__(43);
// optional / simple context binding
module.exports = function (fn, that, length) {
aFunction(fn);
if (that === undefined) return fn;
switch (length) {
case 0: return function () {
return fn.call(that);
};
case 1: return function (a) {
return fn.call(that, a);
};
case 2: return function (a, b) {
return fn.call(that, a, b);
};
case 3: return function (a, b, c) {
return fn.call(that, a, b, c);
};
}
return function (/* ...args */) {
return fn.apply(that, arguments);
};
};
/***/ }),
/* 101 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var TO_STRING_TAG_SUPPORT = __webpack_require__(48);
var classof = __webpack_require__(102);
// `Object.prototype.toString` method implementation
// https://tc39.github.io/ecma262/#sec-object.prototype.tostring
module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {
return '[object ' + classof(this) + ']';
};
/***/ }),
/* 102 */
/***/ (function(module, exports, __webpack_require__) {
var TO_STRING_TAG_SUPPORT = __webpack_require__(48);
var classofRaw = __webpack_require__(16);
var wellKnownSymbol = __webpack_require__(1);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
// ES3 wrong here
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
try {
return it[key];
} catch (error) { /* empty */ }
};
// getting tag from ES6+ `Object.prototype.toString`
module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
var O, tag, result;
return it === undefined ? 'Undefined' : it === null ? 'Null'
// @@toStringTag case
: typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag
// builtinTag case
: CORRECT_ARGUMENTS ? classofRaw(O)
// ES3 arguments fallback
: (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
};
/***/ }),
/* 103 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var IteratorPrototype = __webpack_require__(74).IteratorPrototype;
var create = __webpack_require__(44);
var createPropertyDescriptor = __webpack_require__(15);
var setToStringTag = __webpack_require__(46);
var Iterators = __webpack_require__(50);
var returnThis = function () { return this; };
module.exports = function (IteratorConstructor, NAME, next) {
var TO_STRING_TAG = NAME + ' Iterator';
IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
Iterators[TO_STRING_TAG] = returnThis;
return IteratorConstructor;
};
/***/ }),
/* 104 */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(0);
module.exports = !fails(function () {
function F() { /* empty */ }
F.prototype.constructor = null;
return Object.getPrototypeOf(new F()) !== F.prototype;
});
/***/ }),
/* 105 */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(8);
var aPossiblePrototype = __webpack_require__(106);
// `Object.setPrototypeOf` method
// https://tc39.github.io/ecma262/#sec-object.setprototypeof
// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
var CORRECT_SETTER = false;
var test = {};
var setter;
try {
setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
setter.call(test, []);
CORRECT_SETTER = test instanceof Array;
} catch (error) { /* empty */ }
return function setPrototypeOf(O, proto) {
anObject(O);
aPossiblePrototype(proto);
if (CORRECT_SETTER) setter.call(O, proto);
else O.__proto__ = proto;
return O;
};
}() : undefined);
/***/ }),
/* 106 */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(5);
module.exports = function (it) {
if (!isObject(it) && it !== null) {
throw TypeError("Can't set " + String(it) + ' as a prototype');
} return it;
};
/***/ }),
/* 107 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2);
var DOMIterables = __webpack_require__(78);
var forEach = __webpack_require__(108);
var createNonEnumerableProperty = __webpack_require__(6);
for (var COLLECTION_NAME in DOMIterables) {
var Collection = global[COLLECTION_NAME];
var CollectionPrototype = Collection && Collection.prototype;
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {
createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);
} catch (error) {
CollectionPrototype.forEach = forEach;
}
}
/***/ }),
/* 108 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $forEach = __webpack_require__(18).forEach;
var arrayMethodIsStrict = __webpack_require__(31);
var arrayMethodUsesToLength = __webpack_require__(12);
var STRICT_METHOD = arrayMethodIsStrict('forEach');
var USES_TO_LENGTH = arrayMethodUsesToLength('forEach');
// `Array.prototype.forEach` method implementation
// https://tc39.github.io/ecma262/#sec-array.prototype.foreach
module.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {
return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
} : [].forEach;
/***/ }),
/* 109 */
/***/ (function(module, exports, __webpack_require__) {
var getBuiltIn = __webpack_require__(27);
module.exports = getBuiltIn('navigator', 'userAgent') || '';
/***/ }),
/* 110 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var IndexedObject = __webpack_require__(35);
var toIndexedObject = __webpack_require__(10);
var arrayMethodIsStrict = __webpack_require__(31);
var nativeJoin = [].join;
var ES3_STRINGS = IndexedObject != Object;
var STRICT_METHOD = arrayMethodIsStrict('join', ',');
// `Array.prototype.join` method
// https://tc39.github.io/ecma262/#sec-array.prototype.join
$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {
join: function join(separator) {
return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);
}
});
/***/ }),
/* 111 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var $indexOf = __webpack_require__(62).indexOf;
var arrayMethodIsStrict = __webpack_require__(31);
var arrayMethodUsesToLength = __webpack_require__(12);
var nativeIndexOf = [].indexOf;
var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;
var STRICT_METHOD = arrayMethodIsStrict('indexOf');
var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
// `Array.prototype.indexOf` method
// https://tc39.github.io/ecma262/#sec-array.prototype.indexof
$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {
indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
return NEGATIVE_ZERO
// convert -0 to +0
? nativeIndexOf.apply(this, arguments) || 0
: $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/* 112 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(3);
var $map = __webpack_require__(18).map;
var arrayMethodHasSpeciesSupport = __webpack_require__(19);
var arrayMethodUsesToLength = __webpack_require__(12);
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');
// FF49- issue
var USES_TO_LENGTH = arrayMethodUsesToLength('map');
// `Array.prototype.map` method
// https://tc39.github.io/ecma262/#sec-array.prototype.map
// with adding support of @@species
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
map: function map(callbackfn /* , thisArg */) {
return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/* 113 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, "EcomSearch", function() { return /* reexport */ src_constructor; });
__webpack_require__.d(__webpack_exports__, "dslMiddlewares", function() { return /* reexport */ dsl_middlewares; });
__webpack_require__.d(__webpack_exports__, "addGlobalFilter", function() { return /* reexport */ add_global_filter; });
__webpack_require__.d(__webpack_exports__, "setSalesChannel", function() { return /* reexport */ set_sales_channel; });
__webpack_require__.d(__webpack_exports__, "setWarehouse", function() { return /* reexport */ set_warehouse; });
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js
var es_regexp_exec = __webpack_require__(53);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.split.js
var es_string_split = __webpack_require__(91);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.symbol.js
var es_symbol = __webpack_require__(66);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.symbol.description.js
var es_symbol_description = __webpack_require__(69);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js
var es_object_to_string = __webpack_require__(70);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.symbol.iterator.js
var es_symbol_iterator = __webpack_require__(71);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js
var es_array_iterator = __webpack_require__(49);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.iterator.js
var es_string_iterator = __webpack_require__(76);
// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js
var web_dom_collections_iterator = __webpack_require__(77);
// EXTERNAL MODULE: external "@ecomplus/utils"
var utils_ = __webpack_require__(32);
// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js
var web_dom_collections_for_each = __webpack_require__(107);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.filter.js
var es_array_filter = __webpack_require__(79);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.keys.js
var es_object_keys = __webpack_require__(51);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.concat.js
var es_array_concat = __webpack_require__(81);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.join.js
var es_array_join = __webpack_require__(110);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.index-of.js
var es_array_index_of = __webpack_require__(111);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.splice.js
var es_array_splice = __webpack_require__(20);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.slice.js
var es_array_slice = __webpack_require__(82);
// EXTERNAL MODULE: external "@ecomplus/client"
var client_ = __webpack_require__(85);
// EXTERNAL MODULE: external "lodash.clonedeep"
var external_lodash_clonedeep_ = __webpack_require__(33);
// CONCATENATED MODULE: ./src/lib/dsl-middlewares.js
var middlewares = [];
/* harmony default export */ var dsl_middlewares = (middlewares);
// CONCATENATED MODULE: ./src/methods/fetch.js
/* harmony default export */ var fetch = (function (self, isSimpleSearch, axiosConfig) {
// mount axios req options for complex or simpĺe search
var storeId = self.storeId;
var reqOptions = {
url: '/items.json',
storeId: storeId,
axiosConfig: axiosConfig
}; // prepare search DSL
var dsl = external_lodash_clonedeep_(self.dsl);
dsl_middlewares.forEach(function (fn) {
if (typeof fn === 'function') {
var _dsl = fn(dsl);
if (_dsl) {
dsl = _dsl;
}
}
});
if (isSimpleSearch === true) {
// https://www.elastic.co/guide/en/elasticsearch/reference/6.3/search-uri-request.html
var _dsl2 = dsl,
query = _dsl2.query;
reqOptions.url += '?q=';
if (query && query.bool && Array.isArray(query.bool.filter)) {
// parse query filters to string
var queryString = '';
query.bool.filter.forEach(function (_ref, i) {
var term = _ref.term,
terms = _ref.terms;
if (i > 0) {
queryString += ' AND ';
}
var condition = term || terms;
if (condition) {
var field = Object.keys(condition)[0];
var value = condition[field];
queryString += "".concat(field, ":").concat(Array.isArray(value) ? "(\"".concat(value.join('" "'), "\")") : value);
}
});
reqOptions.url += encodeURIComponent(queryString);
} // handle pagination
;
['from', 'size'].forEach(function (field) {
if (dsl[field]) {
reqOptions.url += "&".concat(field, "=").concat(dsl[field]);
}
});
} else {
reqOptions.method = 'post';
reqOptions.data = dsl;
if (isSimpleSearch && !axiosConfig) {
// fallback for old reference with `fetch(axiosConfig)`
reqOptions.axiosConfig = isSimpleSearch;
}
} // request Search API and return promise
return Object(client_["search"])(reqOptions).then(function (_ref2) {
var data = _ref2.data;
// save last result on instance
self.result = data;
var dsl = self.dsl,
history = self.history,
localStorage = self.localStorage,
storageKey = self.storageKey;
if (data.hits.total && dsl && dsl.suggest) {
var text = dsl.suggest.text;
if (text) {
// add search term to history
var index = history.indexOf(text);
if (index > -1) {
// prevent duplicated term
history.splice(index, 1);
}
history.unshift(text);
if (localStorage && storageKey) {
localStorage.setItem(storageKey, history.slice(0, 20).join('||'));
}
}
} // resolving with response data
return data;
});
});
/**
* @typedef {object} result
* @property {object} hits - Elasticsearch hits object
* @property {number} hits.total - Total number of products found
* @property {array<object>} hits.hits - List of resultant items
* @property {object} aggregations - Elasticsearch aggregations results
* @property {object} suggest - Search term suggestions object
* @property {number} took - Request time in milliseconds
*/
/**
* @method
* @name EcomSearch#fetch
* @description Send POST request to
* [E-Com Plus Search API]{@link https://developers.e-com.plus/docs/api/#/search/items/items}
* and returns promise resolved with search result.
*
* @param {boolean} [isSimpleSearch=false] - Handle simple (and faster) search without sort and aggregations
* @param {object} [axiosConfig] - Additional
* [axios config]{@link https://github.com/axios/axios#request-config} object
*
* @returns {Promise<result|error>}
*
* @example
// Run search request
search.fetch()
.then(result => {
console.log(result.took)
console.log(`${result.hits.total} items found:`)
console.log(result.hits.hits)
})
.catch(error => {
console.error(error)
if (error.response) {
console.log(error.response)
}
})
*/
// CONCATENATED MODULE: ./src/lib/dsl.js
/* harmony default export */ var lib_dsl = ({
query: {
bool: {
// condition: only visible products
filter: [{
term: {
visible: true
}
}]
}
},
sort: [// available && quantity >= min_quantity
{
in_stock: {
order: 'desc'
}
}, {
ad_relevance: {
order: 'desc'
}
}, '_score'],
aggs: {
brands: {
terms: {
field: 'brands.name'
}
},
categories: {
terms: {
field: 'categories.name'
}
},
// ref.: https://github.com/elastic/elasticsearch/issues/5789
specs: {
nested: {
path: 'specs'
},
aggs: {
grid: {
terms: {
field: 'specs.grid',
size: 30
},
aggs: {
text: {
terms: {
field: 'specs.text'
}
}
}
}
}
},
// Metric Aggregations
min_price: {
min: {
field: 'price'
}
},
max_price: {
max: {
field: 'price'
}
},
avg_price: {
avg: {
field: 'price'
}
}
}
});
// CONCATENATED MODULE: ./src/methods/reset.js
/* harmony default export */ var methods_reset = (function (self) {
// reset Query DSL
self.dsl = external_lodash_clonedeep_(lib_dsl); // unset result
self.result = undefined; // reset default page limit and sort by views
return self.setPageSize().setSortOrder();
});
/**
* @method
* @name EcomSearch#reset
* @description Reset default
* [Query DSL]{@link https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html}
* for [Search API]{@link https://developers.e-com.plus/docs/api/#/search/items/items}
* request body and unset instance result.
*
* @returns {self}
*
* @example
// Reset instance `dsl` and `result`
search.reset()
*/
// EXTERNAL MODULE: external "lodash.merge"
var external_lodash_merge_ = __webpack_require__(14);
// CONCATENATED MODULE: ./src/methods/set-search-term.js
/* harmony default export */ var set_search_term = (function (self, term) {
// match name and/or keyword with term
// https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html
self.mergeFilter({
multi_match: {
query: term,
fields: ['name', 'keywords']
}
}, 'must');
external_lodash_merge_(self.dsl, {
// handle terms suggestion
// 'did you mean?'
// https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html
suggest: {
text: term,
words: {
term: {
field: 'name'
}
}
}
});
return self;
});
/**
* @method
* @name EcomSearch#setSearchTerm
* @description Defines term to match with product name
* and/or keywords on next search request.
*
* @param {string} term - Term to be searched
* @returns {self}
*
* @example
// Set new search term
search.setSearchTerm('smartphone')
* @example
// Set new term and run search request
search.setSearchTerm('notebook').fetch()
*/
// CONCATENATED MODULE: ./src/methods/set-page-number.js
/* harmony default export */ var set_page_number = (function (self) {
var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
self.dsl.from = self.dsl.size * (page - 1);
return self;
});
/**
* @method
* @name EcomSearch#setPageNumber
* @description Defines next page number for
* search request (paginate results) starting from 1.
*
* @param {number} [page=1] - Integer page number
* @returns {self}
*
* @example
// Configure to get second page of results and run search request
search.setPageNumber(2).fetch()
* @example
// Set back to page number 1
// It's the default preseted page number
search.setPageNumber()
*/
// CONCATENATED MODULE: ./src/methods/set-page-size.js
/* harmony default export */ var set_page_size = (function (self) {
var limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 24;
self.dsl.size = limit;
return self;
});
/**
* @method
* @name EcomSearch#setPageSize
* @description Defines maximum number of result items for next search request.
*
* @param {number} [limit=24] - Integer max result size
* @returns {self}
*
* @example
// Set page size 20 and run search request
search.setPageSize(20).fetch()
* @example
// Set to 24 the maxium results for next search
// It's the default preseted page size
search.setPageSize()
*/
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.sort.js
var es_array_sort = __webpack_require__(83);
// CONCATENATED MODULE: ./src/methods/set-sort-order.js
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/* harmony default export */ var set_sort_order = (function (self, enumOrder) {
// get default sort array
var sort = lib_dsl.sort.slice();
var timestamp; // defines most common sorting options
switch (enumOrder) {
case 'sales':
// sort by sales after relevance
sort.splice(2, 0, {
sales: {
order: 'desc'
}
});
break;
case 'news':
// sort by hex ID after relevance replacing score sort
sort[sort.length - 1] = {
_id: {
order: 'desc'
}
};
break;
case 'lowest_price':
case 'highest_price':
// sort by price after stock and before relevance
sort.splice(1, 0, {
price: {
order: enumOrder === 'lowest_price' ? 'asc' : 'desc'
}
});
break;
case 'offers':
// sort by percentage offer price
timestamp = Date.now();
sort.splice(1, 0, {
_script: {
type: 'number',
script: {
lang: 'painless',
source: "doc['price'].value > 0 && doc['base_price'].value > 0" + " && (doc['price_effective_date.start'].empty || " + "doc['price_effective_date.start'].date.millis <= ".concat(timestamp, "L)") + " && (doc['price_effective_date.end'].empty || " + "doc['price_effective_date.end'].date.millis >= ".concat(timestamp, "L)") + " ? doc['base_price'].value / doc['price'].value : 0"
},
order: 'desc'
}
});
break;
case 'views':
case '':
case undefined:
case null:
// default sort by views after preseted sorting options
sort.push({
views: {
order: 'desc'
}
});
break;
default:
// alphabetical order by 'slug', 'sku' or any
sort.splice(1, 0, _defineProperty({}, enumOrder, {
order: 'asc'
}));
} // set instance query sort
self.dsl.sort = sort;
return self;
});
/**
* @method
* @name EcomSearch#setSortOrder
* @description Defines most common sorting options and set
* on instance query for next search request.
*
* @param {('sales'|'news'|'lowest_price'|'highest_price'|'offers'|'slug'|'sku'|'views')} [enumOrder='views'] -
* Sort option enum or valid asc sortable item field
* @returns {self}
*
* @example
// Set sort by top selling products and run search request
search.setSortOrder('sales').fetch()
* @example
// Sort next search result starting by most popular products
// It's the default preseted sort order (views)
search.setSortOrder()
*/
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.find.js
var es_array_find = __webpack_require__(84);
// CONCATENATED MODULE: ./src/methods/merge-filter.js
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function merge_filter_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var getNestedRule = function getNestedRule(filter, occur) {
// treat nested query object
// look './set-specs.js' as example
var query = filter && filter.nested && filter.nested.query;
if (query && query.bool && Array.isArray(query.bool[occur])) {
return query.bool[occur].find(function (rule) {
return rule.term;
});
}
return undefined;
};
/* harmony default export */ var merge_filter = (function (self, filter) {
var occur = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'filter';
var type = Object.keys(filter)[0]; // merge general filter to current Query DSL
// ensure query.bool.filter is array
external_lodash_merge_(self.dsl, {
query: {
bool: merge_filter_defineProperty({}, occur, [])
}
});
var filters = self.dsl.query.bool[occur]; // check if new filter object should be added or replace other
var rule;
switch (type) {
case 'terms':
case 'term':
case 'multi_match':
case 'range':
if (_typeof(filter[type]) === 'object' && filter[type] !== null) {
var field = Object.keys(filter[type])[0];
for (var i = 0; i < filters.length; i++) {
// check if is the same field
var _rule = filters[i][Object.keys(filters[i])[0]];
if (_typeof(_rule) === 'object' && _rule !== null && Object.keys(_rule)[0] === field) {
// replace filter object
filters[i] = filter;
return self;
}
}
}
break;
case 'nested':
rule = getNestedRule(filter, occur);
if (rule) {
// check field and key value for nested object filter
var _field = Object.keys(rule.term)[0];
var key = rule.term[_field]; // run root filters list first
for (var _i = 0; _i < filters.length; _i++) {
var _rule2 = getNestedRule(filters[_i], occur); // check field and key value
if (_rule2 && _rule2.term[_field] === key) {
// replace filter object
filters[_i] = filter;
return self;
}
}
}
} // add new filter object to current list
filters.push(filter);
return self;
});
/**
* @method
* @name EcomSearch#mergeFilter
* @description Add/update a filter object on current
* Query DSL filters list for next search request.
*
* @param {object} filter - A valid object for Query DSL
* [filter context]{@link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html}
* @param {string} [occur='filter'] - Occurrence type for
* [boolean query]{@link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html}
* @returns {self}
*
* @example
// Add custom filter by product quantity
search.mergeFilter({
term: {
quantity: 0
}
})
* @example
// Set filter by SKUs and run search request
const filter = { terms: { sku: ['nb-apl-1203', 'hd-csr-303'] } }
search.mergeFilter(filter).fetch()
*/
// CONCATENATED MODULE: ./src/methods/remove-filter.js
/* harmony default export */ var remove_filter = (function (self, field) {
var occur = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'filter';
// remove filter for current product field
var filters = self.dsl.query && self.dsl.query.bool && self.dsl.query.bool[occur];
if (Array.isArray(filters)) {
for (var i = 0; i < filters.length; i++) {
var filter = filters[i];
if (filter.nested && filter.nested.path === field || filter[Object.keys(filter)[0]][field]) {
// remove filters array element
filters.splice(i, 1);
break;
}
}
}
return self;
});
/**
* @method
* @name EcomSearch#removeFilter
* @description Remove a filter object on current
* Query DSL filters list for next search request.
*
* @param {string} field - A valid
* [item field]{@link https://developers.e-com.plus/docs/api/#/search/items/items}
* with dot notation for nested properties
* @param {string} [occur='filter'] - Occurrence type for
* [boolean query]{@link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html}
* @returns {self}
*
* @example
// Remove filter by brand IDs and all specification filters
search.removeFilter('brands._id').removeFilter('specs')
* @example
// Remove filter by category names and run seach request
search.removeFilter('categories.name').fetch()
*/
// CONCATENATED MODULE: ./src/methods/set-spec.js
/* harmony default export */ var set_spec = (function (self, gridId, textOptions) {
// nested ELS object
// http://nocf-www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-nested-query.html
if (Array.isArray(textOptions)) {
// add/update filter
return self.mergeFilter({
nested: {
path: 'specs',
query: {
bool: {
filter: [{
term: {
'specs.grid': gridId
}
}, {
terms: {
'specs.text': textOptions
}
}]
}
}
}
});
}
if (textOptions === null) {
// remove filter for current grid
var filters = self.dsl.query && self.dsl.query.bool && self.dsl.query.bool.filter;
if (Array.isArray(filters)) {
for (var i = 0; i < filters.length; i++) {
if (filters[i] && filters[i].nested) {
var _filters$i$nested = filters[i].nested,
path = _filters$i$nested.path,
query = _filters$i$nested.query;
if (path === 'specs' && query && query.bool) {
// search from grid ID on nested filters
var rules = query.bool.filter;
if (Array.isArray(rules) && rules.find(function (_ref) {
var term = _ref.term;
return term && term['specs.grid'] === gridId;
})) {
// grid ID found
// remove filters array element
filters.splice(i, 1);
return self;
}
}
}
}
}
}
return self;
});
/**
* @method
* @name EcomSearch#setSpec
* @description Add, update or remove search filter
* by product specification based on grid ID and list of text options to match.
*
* @param {string} gridId - Grid ID such as 'size'
* @param {array|null} textOptions - List of chosen options such as `['M', 'G']`
* or null to clear current grid filter
* @returns {self}
*
* @example
// Set filter by size specification and run search request
search.setSpec('size', ['M', 'G']).fetch()
// Update size options and search again
search.setSpec('size', ['P', 'M', 'G']).fetch()
* @example
// Remove filter by size for next search
search.setSpec('size', null)
*/
// CONCATENATED MODULE: ./src/lib/common-filter.js
/* harmony default export */ var common_filter = (function (self, field, prop, value, occur) {
// abstraction to set or remove filter by field IDs/names
var newProp = field !== null ? "".concat(field, ".").concat(prop) : prop;
if (Array.isArray(value)) {
// setup new filter object
var filter = {
terms: {}
};
filter.terms[newProp] = value; // remove concurrent filter and merge the new
var concurrentProp;
if (field !== null) {
concurrentProp = "".concat(field, ".").concat(prop === '_id' ? 'name' : '_id');
} else {
// product SKUs or IDs
concurrentProp = prop === '_id' ? 'sku' : '_id';
}
return self.removeFilter(concurrentProp, occur).mergeFilter(filter, occur);
} else if (value === null) {
// just remove respective filter
return self.removeFilter(newProp, occur);
}
return self;
});
// CONCATENATED MODULE: ./src/methods/set-category-names.js
// handle filter by category names
/* harmony default export */ var set_category_names = (function (self, categoryNames) {
return common_filter(self, 'categories', 'name', categoryNames, 'must');
});
/**
* @method
* @name EcomSearch#setCategoryNames
* @description Defines list of category names to match on next search request,
* filtering product results by category.
*
* @param {array<string>|null} categoryNames - List of category names
* @returns {self}
*
* @example
// Set filter by categories and run search request
search.setCategoryNames([ 'Headset', 'Monitores Gamer' ]).fetch()
* @example
// Remove filter by category names
search.setCategoryNames(null)
*/
// CONCATENATED MODULE: ./src/methods/set-category-ids.js
// handle filter by category IDs
/* harmony default export */ var set_category_ids = (function (self, categoryIds) {
return common_filter(self, 'categories', '_id', categoryIds, 'must');
});
/**
* @method
* @name EcomSearch#setCategoryIds
* @description Defines list of category IDs to match on next search request,
* filtering product results by category.
*
* @param {array<string>|null} categoryIds - List of category ObjectIDs (`_id`)
* @returns {self}
*
* @example
// Set filter by category IDs for next search
search.setCategoryIds([ '5c7009fdc626be23430d4f82', '5c700a53c626be23430d4f88' ])
* @example
// Remove filter by category IDs and run search request
search.setCategoryIds(null).fetch()
*/
// CONCATENATED MODULE: ./src/methods/set-brand-names.js
// handle filter by brand names
/* harmony default export */ var set_brand_names = (function (self, brandNames) {
return common_filter(self, 'brands', 'name', brandNames);
});
/**
* @method
* @name EcomSearch#setBrandNames
* @description Defines list of brand names to match on next search request,
* filtering product results by brand.
*
* @param {array<string>|null} brandNames - List of brand names
* @returns {self}
*
* @example
// Set filter by brands and run search request
search.setBrandNames([ 'Corsair', 'Apple' ]).fetch()
* @example
// Remove filter by brand names
search.setBrandNames(null)
*/
// CONCATENATED MODULE: ./src/methods/set-brand-ids.js
// handle filter by brand IDs
/* harmony default export */ var set_brand_ids = (function (self, brandIds) {
return common_filter(self, 'brands', '_id', brandIds);
});
/**
* @method
* @name EcomSearch#setBrandIds
* @description Defines list of brand IDs to match on next search request,
* filtering product results by brand.
*
* @param {array<string>|null} brandIds - List of brand ObjectIDs (`_id`)
* @returns {self}
*
* @example
// Set filter by brand ID and run search request
search.setBrandIds([ '5c703b35c626be23430d5030' ]).fetch()
* @example
// Remove filter by brand ID
search.setBrandIds(null)
*/
// CONCATENATED MODULE: ./src/methods/set-skus.js
// handle filter by product SKUs
/* harmony default export */ var set_skus = (function (self, skus) {
return common_filter(self, null, 'sku', skus);
});
/**
* @method
* @name EcomSearch#setSkus
* @description Defines list of product SKUs to match on next search request.
*
* @param {array<string>|null} skus - List of product SKUs
* @returns {self}
*
* @example
// Set filter by SKUs for next search
search.setSkus(['nb-apl-1203', 'hd-csr-303'])
* @example
// Remove filter by SKU and run search request
search.setSkus(null).fetch()
*/
// CONCATENATED MODULE: ./src/methods/set-product-ids.js
// handle filter by product IDs
/* harmony default export */ var set_product_ids = (function (self, productIds) {
return common_filter(self, null, '_id', productIds);
});
/**
* @method
* @name EcomSearch#setProductIds
* @description Defines list of product IDs to match on next search request.
*
* @param {array<string>|null} productIds - List of product ObjectIDs (`_id`)
* @returns {self}
*
* @example
// Set filter by ID and run search request
search.setProductIds([ '5c703c40c626be23430d5033' ]).fetch()
* @example
// Remove filter by product ID
search.setProductIds(null)
*/
// CONCATENATED MODULE: ./src/methods/set-price-range.js
/* harmony default export */ var set_price_range = (function (self, minPrice, maxPrice) {
// price ranges
var price = {};
if (typeof minPrice === 'number' && !isNaN(minPrice)) {
price.gte = minPrice;
}
if (typeof maxPrice === 'number' && !isNaN(maxPrice)) {
price.lte = maxPrice;
} // add/update filter
return self.mergeFilter({
range: {
price: price
}
});
});
/**
* @method
* @name EcomSearch#setPriceRange
* @description Defines range filter to match with product price
* for next search request.
*
* @param {number|null} minPrice - Minimun price value
* @param {number|null} maxPrice - Maximun price value
* @returns {self}
*
* @example
// Set filter by price range and run search request
search.setPriceRange(10, 22.5).fetch()
* @example
// Remove filter by product price for next search
search.setPriceRange(null, null)
*/
// CONCATENATED MODULE: ./src/methods/get-items.js
/* harmony default export */ var get_items = (function (self, result) {
// map list of item objets from search result
if (!result) {
result = self.result;
}
return Object(utils_["searchedItems"])(result);
});
/**
* @method
* @name EcomSearch#getItems
* @description List items from search result object.
*
* @param {result} [result=self.result] - Search result object
* @returns {array<object>}
*
* @example
// Run search request and list result items
await search.fetch()
search.getItems().forEach(item => {
console.log(item)
console.log(item.name)
})
* @example
// You can also pass search result object as param
search.fetch().then(result => search.getItems(result).forEach(({ sku }) => console.log(sku)))
*/
// CONCATENATED MODULE: ./src/methods/get-total-count.js
/* harmony default export */ var get_total_count = (function (self, result) {
// return total matched items
if (!result) {
result = self.result || {};
}
return result.hits ? result.hits.total : undefined;
});
/**
* @method
* @name EcomSearch#getTotalCount
* @description Get total number of products found from search result object.
*
* @param {result} [result=self.result] - Search result object
* @returns {number}
*
* @example
// Run search request and count total items matched
search.fetch().then(() => console.log(search.getTotalCount()))
* @example
// You can also pass search result object as param
try {
const result = await search.fetch()
if (search.getTotalCount(result) > 0) {
// Listing result items as logic example here
console.log(search.getItems(result))
}
} catch (error) {
console.error(error)
}
*/
// CONCATENATED MODULE: ./src/methods/get-term-suggestions.js
/* harmony default export */ var get_term_suggestions = (function (self, result) {
// get search term suggestions from result object
if (!result) {
result = self.result || {};
}
return result.suggest && result.suggest.words || [];
});
/**
* @typedef {object} suggest
* @property {string} text - The original keyword from search term
* @property {number} offset - Position where the keyword starts on search term
* @property {number} length - Original keyword length
* @property {array<suggestion>} options - Suggested options to replace original keyword
*/
/**
* @typedef {object} suggestion
* @property {string} text - The suggested keyword
* @property {number} score - Match score up to 1
* @property {number} freq - How many items match with the suggested keyword
*/
/**
* @method
* @name EcomSearch#getTermSuggestions
* @description Get list of keyword suggestions based on current
* search term from result object.
*
* @param {result} [result=self.result] - Search result object
* @returns {array<suggest>}
*
* @example
// Run search request with wrong term and get suggestions
search.setSearchTerm('smartprone applo').fetch()
.then(() => {
search.getTermSuggestions().forEach(({ text, options }) => {
const bestOption = options[0]
// Check match score to suggest term replace
if (bestOption.score >= 0.83) {
console.log(`should replace '${text}' by '${bestOption.text}' on search term`)
}
})
})
.catch(error => {
console.error(error)
if (error.response) {
console.log(error.response)
}
})
*/
// CONCATENATED MODULE: ./src/lib/common-aggregation.js
/* harmony default export */ var common_aggregation = (function (_ref, field) {
var aggregations = _ref.aggregations;
// abstraction to get buckets array from result aggregations
var buckets;
if (aggregations && aggregations[field]) {
buckets = aggregations[field].buckets;
}
return Array.isArray(buckets) && buckets || [];
});
// CONCATENATED MODULE: ./src/methods/get-brands.js
// get brand options from aggregations result
/* harmony default export */ var get_brands = (function (self, result) {
return common_aggregation(result || self.result || {}, 'brands');
});
/**
* @typedef {object} aggregation
* @property {string} key - Brand/category/option name
* @property {number} doc_count - How many items match with the respective key
*/
/**
* @method
* @name EcomSearch#getBrands
* @description List brand options matched from search result object.
*
* @param {result} [result=self.result] - Search result object
* @returns {array<aggregation>}
*
* @example
// Run search request and list brand aggregations
await search.fetch()
search.getBrands().forEach(aggBrand => {
console.log(`we have ${aggBrand.doc_count} items with brand ${aggBrand.key}`)
})
*/
// CONCATENATED MODULE: ./src/methods/get-categories.js
// get category options from aggregations result
/* harmony default export */ var get_categories = (function (self, result) {
return common_aggregation(result || self.result || {}, 'categories');
});
/**
* @method
* @name EcomSearch#getCategories
* @description List category options matched from search result object.
*
* @param {result} [result=self.result] - Search result object
* @returns {array<aggregation>}
*
* @example
// Run search request and list category aggregations
await search.fetch()
search.getCategories().forEach(aggCategory => {
console.log(`we have ${aggCategory.doc_count} items with category ${aggCategory.key}`)
})
*/
// CONCATENATED MODULE: ./src/methods/get-price-range.js
/* harmony default export */ var get_price_range = (function (self, result) {
// get price aggregations from result object
if (!result) {
result = self.result || {};
}
var _result = result,
aggregations = _result.aggregations;
return aggregations ? {
min: aggregations.min_price && aggregations.min_price.value || 0,
avg: aggregations.avg_price && aggregations.avg_price.value || 0,
max: aggregations.max_price && aggregations.max_price.value || 0
} : {
min: 0,
avg: 0,
max: 0
};
});
/**
* @method
* @name EcomSearch#getPriceRange
* @description Get minimum, maximum and average item prices
* from search result object.
*
* @param {result} [result=self.result] - Search result object
* @returns {prices}
*
* @example
// Run search request and get resultant price range
search.fetch().then(() => {
const { min, avg, max } = search.getPriceRange()
console.log(`prices => min: ${min}; max: ${max}; avg: ${avg}`)
})
*/
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js
var es_array_map = __webpack_require__(112);
// CONCATENATED MODULE: ./src/methods/get-specs.js
/* harmony default export */ var get_specs = (function (self, result) {
// get specs nested aggregations from result object
if (!result) {
result = self.result || {};
}
if (result.aggregations) {
var specs = result.aggregations.specs;
if (specs && specs.grid && Array.isArray(specs.grid.buckets)) {
// map nested buckets
return specs.grid.buckets.map(function (bucket) {
return {
key: bucket.key,
doc_count: bucket.doc_count,
options: bucket.text && bucket.text.buckets || []
};
});
}
}
return [];
});
/**
* @typedef {object} spec
* @property {string} key - Specification grid ID
* @property {number} doc_count - How many items has the respective grid
* @property {array<aggregation>} options - List of matched grid options
*/
/**
* @method
* @name EcomSearch#getSpecs
* @description List specification grids and options
* matched from search result object.
*
* @param {result} [result=self.result] - Search result object
* @returns {array<spec>}
*
* @example
// Run search request and list spec options
await search.fetch()
search.getSpecs().forEach(aggSpec => {
console.log(`${aggSpec.doc_count} items with grid ${aggSpec.key} and the following options:`)
aggSpec.options.forEach(aggOption => {
console.log(`${aggOption.key} (${aggOption.doc_count})`)
})
})
*/
// CONCATENATED MODULE: ./src/constructor.js
function constructor_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { constructor_typeof = function _typeof(obj) { return typeof obj; }; } else { constructor_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return constructor_typeof(obj); }
/**
* JS lib to handle products search with E-Com Plus stores.
* {@link https://github.com/ecomclub/search-engine GitHub}
*
* @module @ecomplus/search-engine
* @author E-Com Club <ti@e-com.club>
* @return {@link EcomSearch}
* @see EcomSearch
*
* @example
* // ES import default
* import EcomSearch from '@ecomplus/search-engine'
*
* @example
* // With CommonJS
* const EcomSearch = require('@ecomplus/search-engine')
*
* @example
* <!-- Global `EcomSearch` from CDN on browser -->
* <script src="https://cdn.jsdelivr.net/npm/@ecomplus/search-engine/dist/ecom-search.var.min.js"></script>
*
* @example
* <!-- Bundle from CDN with `ecomUtils`, `ecomClient`, `_.cloneDeep` and `_.merge` -->
* <script src="https://cdn.jsdelivr.net/npm/@ecomplus/search-engine/dist/ecom-search.bundle.min.js"></script>
*/
var _key = 'ecomSeachHistory';
var _storage = (typeof window === "undefined" ? "undefined" : constructor_typeof(window)) === 'object' && window.localStorage;
/* harmony default export */ var src_constructor = (function (storeId) {
var storageKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _key;
var localStorage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _storage;
var self = this;
/**
* Respective Store ID number.
* @name EcomSearch#storeId
* @type {number}
*/
this.storeId = storeId || utils_["$ecomConfig"].get('store_id');
/**
* Item key to handle persistent [search history]{@link EcomSearch#history} data
* with [localStorage]{@link EcomSearch#localStorage}.
* @name EcomSearch#storageKey
* @type {string|null}
*/
this.storageKey = storageKey;
/**
* [Storage interface]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage}.
* @name EcomSearch#localStorage
* @type {object}
*/
this.localStorage = localStorage;
/**
* Search terms history.
* @name EcomSearch#history
* @type {array<string>}
*/
this.history = [];
/**
* Current
* [Query DSL]{@link https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html}
* for [Search API]{@link https://developers.e-com.plus/docs/api/#/search/items/items}
* request body.
* <br>
* You can edit this object to manually set Query DSL properties,
* or you can use instance methods listed below.
* @name EcomSearch#dsl
* @type {object}
*/
this.dsl = {};
/**
* Last search result object obtained with the
* [fetch method]{@link EcomSearch#fetch}.
* @name EcomSearch#result
* @type {result|undefined}
*/
this.result = undefined; // instance methods
this.fetch = function (isSimpleSearch, axiosConfig) {
return fetch(self, isSimpleSearch, axiosConfig);
};
this.reset = function () {
return methods_reset(self);
};
this.setSearchTerm = function (term) {
return set_search_term(self, term);
};
this.setPageNumber = function (page) {
return set_page_number(self, page);
};
this.setPageSize = function (limit) {
return set_page_size(self, limit);
};
this.setSortOrder = function (enumOrder) {
return set_sort_order(self, enumOrder);
};
this.mergeFilter = function (filter, occur) {
return merge_filter(self, filter, occur);
};
this.removeFilter = function (field, occur) {
return remove_filter(self, field, occur);
};
this.setSpec = function (gridId, textOptions) {
return set_spec(self, gridId, textOptions);
};
this.setCategoryNames = function (categoryNames) {
return set_category_names(self, categoryNames);
};
this.setCategoryIds = function (categoryIds) {
return set_category_ids(self, categoryIds);
};
this.setBrandNames = function (brandNames) {
return set_brand_names(self, brandNames);
};
this.setBrandIds = function (brandIds) {
return set_brand_ids(self, brandIds);
};
this.setSkus = function (skus) {
return set_skus(self, skus);
};
this.setProductIds = function (productIds) {
return set_product_ids(self, productIds);
};
this.setPriceRange = function (minPrice, maxPrice) {
return set_price_range(self, minPrice, maxPrice);
};
this.getItems = function (result) {
return get_items(self, result);
};
this.getTotalCount = function (result) {
return get_total_count(self, result);
};
this.getTermSuggestions = function (result) {
return get_term_suggestions(self, result);
};
this.getBrands = function (result) {
return get_brands(self, result);
};
this.getCategories = function (result) {
return get_categories(self, result);
};
this.getPriceRange = function (result) {
return get_price_range(self, result);
};
this.getSpecs = function (result) {
return get_specs(self, result);
}; // preset query object
methods_reset(self);
if (localStorage && storageKey) {
// try to preset search history from storage
var history = localStorage.getItem(storageKey);
if (typeof history === 'string') {
self.history = history.split('||');
}
}
});
/**
* Construct a new search engine instance object.
* @class EcomSearch
* @param {number} [storeId=$ecomConfig.get('store_id')] - Preset Store ID number
* @param {string|null} [storageKey='ecomSeachHistory'] - Item key to persist search history data
* @param {object} [localStorage=window.localStorage] -
* [Local Storage interface]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage}
*
* @example
const search = new EcomSearch()
*
* @example
// Defining Store ID other than the configured on `$ecomConfig`
const storeId = 2000
const search = new EcomSearch(storeId)
*/
// CONCATENATED MODULE: ./src/modifiers/add-global-filter.js
function add_global_filter_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var add_global_filter_addGlobalFilter = function addGlobalFilter(field, value) {
dsl_middlewares.push(function (dsl) {
external_lodash_merge_(dsl, {
query: {
bool: {
filter: [{
term: add_global_filter_defineProperty({}, field, value)
}]
}
}
});
});
};
/**
* @method
* @name addGlobalFilter
* @description Add custom fetch DSL middleware with simple term filter for all instances.
* @param {string} field - Item field to filter with dot notation
* @param {string|number|boolean} value - Searched field value
*
* @example
* import { addGlobalFilter } from '@ecomplus/search-engine'
* addGlobalFilter('channel_id', 123)
*/
/* harmony default export */ var add_global_filter = (add_global_filter_addGlobalFilter);
// CONCATENATED MODULE: ./src/modifiers/set-sales-channel.js
/* harmony default export */ var set_sales_channel = (function (channelId) {
return add_global_filter('channel_id', channelId);
});
/**
* @method
* @name setSalesChannel
* @description Set channel ID for searches in all instances.
* @param {number} channelId - Sales channel ID
*
* @example
* import { setSalesChannel } from '@ecomplus/search-engine'
* setSalesChannel(123)
*/
// CONCATENATED MODULE: ./src/modifiers/set-warehouse.js
/* harmony default export */ var set_warehouse = (function (warehouseCode) {
dsl_middlewares.push(function (dsl) {
if (!dsl.sort) {
dsl.sort = [];
}
dsl.sort.splice(1, 0, {
'warehouses.in_stock': {
order: 'desc',
nested: {
path: 'warehouses',
filter: {
term: {
'warehouses.code': warehouseCode
}
}
}
}
});
});
});
/**
* @method
* @name setWarehouse
* @description Set warehouse (multi CD) code for searches in all instances.
* @param {string} warehouseCode - Warehouse code
*
* @example
* import { setWarehouse } from '@ecomplus/search-engine'
* setWarehouse('MG')
*/
// CONCATENATED MODULE: ./src/index.js
/*!
* @ecomplus/search-engine
* (c) E-Com Club <ti@e-com.club>
* Released under the MIT License.
*/
src_constructor.dslMiddlewares = dsl_middlewares;
src_constructor.addGlobalFilter = add_global_filter;
src_constructor.setSalesChannel = set_sales_channel;
src_constructor.setWarehouse = set_warehouse;
/* harmony default export */ var src = __webpack_exports__["default"] = (src_constructor);
/***/ })
/******/ ])["default"];
});
//# sourceMappingURL=ecom-search.node.js.map