{"version":3,"file":"xspm.local.js","sources":["node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_to-object.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_core.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_is-object.js","node_modules/core-js/library/modules/_an-object.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_hide.js","node_modules/core-js/library/modules/_has.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_uid.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/core-js/library/modules/_object-gops.js","node_modules/core-js/library/modules/_object-pie.js","node_modules/core-js/library/modules/_object-assign.js","node_modules/core-js/library/modules/es6.object.assign.js","node_modules/@babel/runtime-corejs2/core-js/object/assign.js","node_modules/core-js/library/fn/object/assign.js","node_modules/@babel/runtime-corejs2/helpers/extends.js","node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js","node_modules/core-js/library/fn/object/define-property.js","node_modules/core-js/library/modules/es6.object.define-property.js","node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","node_modules/@babel/runtime-corejs2/helpers/createClass.js","node_modules/core-js/library/modules/_object-create.js","node_modules/core-js/library/modules/_invoke.js","node_modules/core-js/library/modules/_object-dps.js","node_modules/core-js/library/modules/_html.js","node_modules/core-js/library/modules/_bind.js","node_modules/core-js/library/modules/es6.reflect.construct.js","node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/core-js/library/modules/_string-at.js","node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js","node_modules/core-js/library/fn/reflect/construct.js","node_modules/core-js/library/modules/_redefine.js","node_modules/core-js/library/modules/_iterators.js","node_modules/core-js/library/modules/_wks.js","node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/core-js/library/modules/_iter-create.js","node_modules/core-js/library/modules/_object-gpo.js","node_modules/core-js/library/modules/_iter-define.js","node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/core-js/library/modules/_iter-step.js","node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/core-js/library/modules/_classof.js","node_modules/core-js/library/modules/_species-constructor.js","node_modules/core-js/library/modules/_task.js","node_modules/core-js/library/modules/_is-array-iter.js","node_modules/core-js/library/modules/core.get-iterator-method.js","node_modules/core-js/library/modules/_for-of.js","node_modules/core-js/library/modules/_iter-call.js","node_modules/core-js/library/modules/_microtask.js","node_modules/core-js/library/modules/_new-promise-capability.js","node_modules/core-js/library/modules/_promise-resolve.js","node_modules/core-js/library/modules/_perform.js","node_modules/core-js/library/modules/_user-agent.js","node_modules/core-js/library/modules/_set-species.js","node_modules/core-js/library/modules/_iter-detect.js","node_modules/core-js/library/modules/es6.promise.js","node_modules/core-js/library/modules/_an-instance.js","node_modules/core-js/library/modules/_redefine-all.js","node_modules/core-js/library/modules/_library.js","node_modules/core-js/library/modules/es7.promise.finally.js","node_modules/core-js/library/modules/es7.promise.try.js","node_modules/@babel/runtime-corejs2/core-js/promise.js","node_modules/core-js/library/fn/promise.js","node_modules/core-js/library/modules/_is-array.js","node_modules/core-js/library/modules/es6.array.is-array.js","node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","node_modules/core-js/library/fn/array/is-array.js","node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js","node_modules/@babel/runtime-corejs2/core-js/get-iterator.js","node_modules/core-js/library/modules/core.get-iterator.js","node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js","node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js","node_modules/core-js/library/modules/_set-proto.js","node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js","node_modules/core-js/library/fn/object/create.js","node_modules/core-js/library/modules/es6.object.create.js","node_modules/@babel/runtime-corejs2/core-js/object/create.js","node_modules/core-js/library/modules/_object-gopd.js","node_modules/core-js/library/modules/es6.object.set-prototype-of.js","node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js","node_modules/core-js/library/fn/object/set-prototype-of.js","node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js","node_modules/core-js/library/modules/_wks-define.js","node_modules/core-js/library/modules/es6.symbol.js","node_modules/@babel/runtime-corejs2/helpers/inherits.js","node_modules/core-js/library/modules/_wks-ext.js","node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js","node_modules/core-js/library/fn/symbol/iterator.js","node_modules/core-js/library/modules/_meta.js","node_modules/core-js/library/modules/_enum-keys.js","node_modules/core-js/library/modules/_object-gopn.js","node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/@babel/runtime-corejs2/core-js/symbol.js","node_modules/core-js/library/fn/symbol/index.js","node_modules/@babel/runtime-corejs2/helpers/typeof.js","node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js","node_modules/core-js/library/modules/es6.object.get-prototype-of.js","node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js","node_modules/core-js/library/fn/object/get-prototype-of.js","node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js","node_modules/core-js/library/fn/object/define-properties.js","node_modules/core-js/library/modules/es6.object.define-properties.js","node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js","node_modules/core-js/library/modules/_own-keys.js","node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js","node_modules/core-js/library/modules/_create-property.js","node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js","node_modules/core-js/library/fn/object/get-own-property-descriptors.js","node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","node_modules/core-js/library/fn/object/get-own-property-descriptor.js","node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js","node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js","node_modules/core-js/library/fn/object/get-own-property-symbols.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/@babel/runtime-corejs2/core-js/object/keys.js","node_modules/core-js/library/fn/object/keys.js","node_modules/@babel/runtime-corejs2/helpers/defineProperty.js","node_modules/reflect-metadata/Reflect.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/GlobalUtil.ts","src/com/didichuxing/tracker/h5/envconfig/AH5EnvConfigSync.ts","node_modules/core-js/library/fn/json/stringify.js","node_modules/@babel/runtime-corejs2/core-js/json/stringify.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/app/WKWebviewOmegaSDK.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/AppUtil.ts","src/com/didichuxing/tracker/h5/envconfig/AppH5EnvConfig.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/UUID.ts","src/com/didichuxing/tracker/h5/envconfig/NormalH5EnvConfig.ts","src/com/didichuxing/tracker/h5/envconfig/UniqueH5EnvConfig.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/ReportCallbackUtil.ts","node_modules/core-js/library/modules/es6.reflect.get.js","node_modules/core-js/library/fn/reflect/get.js","node_modules/@babel/runtime-corejs2/core-js/reflect/get.js","node_modules/@babel/runtime-corejs2/helpers/superPropBase.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/EventStatus.ts","node_modules/@babel/runtime-corejs2/helpers/get.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/AEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/SequencedEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/PluginUtils.ts","src/com/didichuxing/tracker/PluginSet.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/NonH5Plugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/FailedEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/TimeoutEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/reportor/AppEventReportor.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/events/OMGH5PageInitEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/BlockedEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/AReportingStrategyPlugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugins/AOMGH5PageInitPlugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugins/OMGAppH5PageInitPlugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/reportor/DataQueueSet.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/reportor/AH5EventReportor.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/EncodeHash.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/reportor/PostEventReportor.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugins/OMGH5PageInitPlugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/events/OMGH5LogEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugins/AOMGH5LogPlugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugins/OMGH5LogPlugin.ts","src/com/didichuxing/tracker/h5/H5Tracker.ts","src/com/didichuxing/tracker/h5/Xspm/type.ts","src/com/didichuxing/tracker/h5/Xspm/XSpmTracker.ts","src/com/didichuxing/tracker/h5/Xspm.ts","src/com/didichuxing/tracker/XspmCDN.js"],"sourcesContent":["module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","exports.f = {}.propertyIsEnumerable;\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","module.exports = require(\"core-js/library/fn/object/assign\");","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","var _Object$assign = require(\"../core-js/object/assign\");\n\nfunction _extends() {\n module.exports = _extends = _Object$assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","module.exports = require(\"core-js/library/fn/object/define-property\");","var _Object$defineProperty = require(\"../core-js/object/define-property\");\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","module.exports = require(\"core-js/library/fn/reflect/construct\");","require('../../modules/es6.reflect.construct');\nmodule.exports = require('../../modules/_core').Reflect.construct;\n","module.exports = require('./_hide');\n","module.exports = {};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","module.exports = true;\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","module.exports = require(\"core-js/library/fn/promise\");","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","module.exports = require(\"core-js/library/fn/array/is-array\");","require('../../modules/es6.array.is-array');\nmodule.exports = require('../../modules/_core').Array.isArray;\n","var _Array$isArray = require(\"../core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","module.exports = require(\"core-js/library/fn/get-iterator\");","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","var _getIterator = require(\"../core-js/get-iterator\");\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = _getIterator(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","module.exports = require(\"core-js/library/fn/object/create\");","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","module.exports = require(\"core-js/library/fn/object/set-prototype-of\");","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","var _Object$setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nfunction _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","var _Object$create = require(\"../core-js/object/create\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","exports.f = require('./_wks');\n","module.exports = require(\"core-js/library/fn/symbol/iterator\");","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","module.exports = require(\"core-js/library/fn/symbol\");","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","var _Symbol$iterator = require(\"../core-js/symbol/iterator\");\n\nvar _Symbol = require(\"../core-js/symbol\");\n\nfunction _typeof2(obj) { if (typeof _Symbol === \"function\" && typeof _Symbol$iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof _Symbol === \"function\" && _typeof2(_Symbol$iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","module.exports = require(\"core-js/library/fn/object/get-prototype-of\");","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","var _Object$getPrototypeOf = require(\"../core-js/object/get-prototype-of\");\n\nvar _Object$setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nfunction _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","require('../../modules/es6.object.define-properties');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperties(T, D) {\n return $Object.defineProperties(T, D);\n};\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","module.exports = require(\"core-js/library/fn/object/define-properties\");","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptors\");","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptor\");","module.exports = require(\"core-js/library/fn/object/get-own-property-symbols\");","require('../../modules/es6.symbol');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertySymbols;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","module.exports = require(\"core-js/library/fn/object/keys\");","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","var _Object$defineProperty = require(\"../core-js/object/define-property\");\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of GlobalUtil\n */\n\nexport default abstract class GlobalUtil {\n /**\n * 当前页面是否加载完成\n * @returns {boolean}\n */\n public static isLoaded(): boolean {\n if (window.performance && window.performance.timing) { // 现代浏览器\n return !!window.performance.timing.loadEventEnd;\n } else { // 老式浏览器\n return window.document.readyState === 'complete';\n }\n }\n\n /**\n * 是否空字符串\n * @param str{string}\n * @returns {boolean}\n */\n public static isEmptyString(str: string | undefined): boolean {\n if (!str) {\n return false;\n }\n let result = true;\n if (Object.prototype.toString.call(str) !== '[object String]') {\n result = false;\n }\n // \\s 小写的s是,匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \\f\\n\\r\\t\\v]。\n if (str.replace(/(^\\s*)|(\\s*$)/g, '').length === 0) {\n result = false;\n }\n return result;\n }\n\n /**\n * 设置OMG的日志\n * @param str\n */\n public static dispatchOmgLog(str: string): void {\n const mesageEvent: MessageEvent = document.createEvent('MessageEvent');\n mesageEvent.initMessageEvent('omglog', false, false, str, '', '', window);\n window.dispatchEvent(mesageEvent);\n }\n\n /**\n * 判断当前应用的 scheme 是否为桌面环境\n * @returns {boolean}\n */\n public static isDesktop(): boolean {\n return window.location && window.location.protocol === 'file:';\n }\n\n /**\n * 获取当前应使用的 protocol\n * @returns {string}\n */\n public static getProtocol(): string {\n // 20190618 lincal:应安全部要求,全面启用 https 协议\n return 'https://';\n // return GlobalUtil.isDesktop() ? 'https://' : '//';\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AH5EnvConfigSync\n */\n\nimport { IPlugin } from 'com/didichuxing/plugin/IPlugin';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport { IEnvConfigurationItemSync } from 'com/didichuxing/tracker/config/IEnvConfigurationItemSync';\nimport {\n IReportingStrategyPluginConstr\n} from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\n\nexport default abstract class AH5EnvConfigSync implements IEnvConfigurationItemSync {\n\n private pluginConstrs: IReportingStrategyPluginConstr[];\n\n private plugins: IPlugin[] | undefined;\n\n private tracker: ITracker;\n\n constructor(tracker: ITracker, pluginConstrs: IReportingStrategyPluginConstr[]) {\n this.pluginConstrs = pluginConstrs;\n this.tracker = tracker;\n }\n\n /**\n * @abstract\n * @param {ITrackerContext} context\n * @returns {boolean}\n */\n public abstract validate(context: ITrackerContext): boolean;\n\n /**\n * @abstract\n * @param {ITracker} tracker\n * @returns {Promise}\n */\n public abstract beforeDeliver(tracker: ITracker): Promise;\n\n /**\n * @override\n * @inheritDoc\n * @returns {IPlugin[]}\n */\n public getPlugins(): IPlugin[] {\n if (!this.plugins) {\n this.plugins = this.pluginConstrs.map((pluginConstr: IReportingStrategyPluginConstr): IPlugin => {\n return new pluginConstr(this.tracker);\n });\n }\n return this.plugins;\n }\n\n /**\n * 获取额外插件url。\n * @returns {string}\n */\n public getExtraPluginsUrl(): string {\n let host: string = '{{cdnHost}}';\n let cdnNamespace: string = '{{cdnNamespace}}';\n if (/global/.test((this.tracker.getContext() as ITrackerContext).uploadHost || '')) { // 国际化\n host = '{{cdnGlobalHost}}';\n cdnNamespace = 'tracker_global';\n }\n if (/omgup-ru\\.didiglobal\\.com/.test((this.tracker.getContext() as ITrackerContext).uploadHost || '')) { // 俄罗斯\n host = '{{cdnDeHost}}';\n cdnNamespace = 'tracker_de';\n }\n if (/omgup-de\\.didiglobal\\.com/.test((this.tracker.getContext() as ITrackerContext).uploadHost || '')) { // 欧洲\n host = '{{cdnDeHost}}';\n cdnNamespace = 'tracker_de';\n }\n if ((this.tracker.getContext() as ITrackerContext).uploadHost === 'omgup.1meal.net') { // rlab\n host = '{{cdnRlabHost}}';\n cdnNamespace = 'falcon_public/tracker';\n }\n\n const proto = GlobalUtil.getProtocol();\n return `${ proto }${ host }/static/${ cdnNamespace }/{{version}}/${ this.getExtraPluginsUrlName() }`;\n }\n\n /**\n * 额外插件url名称。\n * @returns {string}\n */\n protected getExtraPluginsUrlName(): string {\n return 'omega.default.extra.plugins.min.js';\n }\n}\n","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","module.exports = require(\"core-js/library/fn/json/stringify\");","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of WKWebviewOmegaSDK\n */\n\nimport { IPlanObject } from 'com/didichuxing/IPlanObject';\nimport { IOmegaSDK, IAppSdkInfo } from 'com/didichuxing/tracker/plugin/app/IOmegaSDK';\n\nexport default class WKWebviewOmegaSDK implements IOmegaSDK {\n\n /**\n * 往WKWebview派发信息。\n * @param {string} methodName\n * @param {string} params\n */\n private postMessage(methodName: string, params: string): void {\n (window as any).webkit.messageHandlers[methodName].postMessage(params);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} tel\n * @param {string} countryCallingCode\n */\n public setTelephone(tel: string, countryCallingCode?: string): void {\n this.postMessage('setTelephone', JSON.stringify({\n tel: tel\n }));\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} userId\n */\n public setUserId(userId: string): void {\n this.postMessage('setUserId', JSON.stringify({\n userId: userId\n }));\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {number} cityId\n */\n public setCityId(cityId: number): void {\n this.postMessage('setCityId', JSON.stringify({\n cityId: cityId\n }));\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} eventId\n * @param {string} eventLabel\n * @param {string} attrJson\n * @param {string} sysJson\n * @param {string} exJson\n */\n public trackEventEx(eventId: string, eventLabel: string, attrJson: string, sysJson: string, exJson: string): void {\n this.postMessage('trackEventEx', JSON.stringify({\n eventId: eventId,\n eventLabel: eventLabel,\n attrJson: attrJson,\n sysJson: sysJson,\n exJson: exJson\n }));\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getInfo(): string;\n public getInfo(cb: (info: IAppSdkInfo) => void): void;\n public getInfo(cb?: (info: IAppSdkInfo) => void): any {\n const callback = function(res: IAppSdkInfo) {\n window.postMessage((res as IPlanObject).info, location.href);\n };\n this.postMessage('getInfo', JSON.stringify({\n getInfo: callback.toString()\n }));\n const getInfoHandler = (evt: MessageEvent): void => {\n if (evt && evt.data && evt.data.oid) {\n window.removeEventListener('message', getInfoHandler);\n cb && cb(evt.data);\n }\n };\n window.addEventListener('message', getInfoHandler);\n return '';\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AppBuilder\n */\n\nimport { IBasicTrackerContext } from 'com/didichuxing/tracker/context/IBasicTrackerContext';\nimport { IOmegaSDK, IAppSdkInfo } from 'com/didichuxing/tracker/plugin/app/IOmegaSDK';\nimport WKWebviewOmegaSDK from 'com/didichuxing/tracker/plugin/app/WKWebviewOmegaSDK';\n\nexport default abstract class AppUtil {\n\n /**\n * 当前在安卓或iOS环境里\n * @returns {boolean}\n */\n public static inEnv(): boolean {\n return !!(window as any).OmegaSDK || AppUtil.inWKWebview();\n }\n\n /**\n * 当前在iOS的WKWebview环境中。\n * @returns {boolean}\n */\n public static inWKWebview(): boolean {\n return (window as any).webkit\n && (window as any).webkit.messageHandlers\n && (window as any).webkit.messageHandlers.getInfo;\n }\n\n /**\n * 获取APP桥接omega SDK对象。\n * @returns {IOmegaSDK}\n */\n public static getOmegaSDK(): IOmegaSDK | undefined {\n const omegaSDK: IOmegaSDK = (window as any).OmegaSDK;\n if (omegaSDK) {\n return omegaSDK;\n } else if ((window as any).webkit && (window as any).webkit.messageHandlers\n && (window as any).webkit.messageHandlers.getInfo) { // ios下采用WKWebview\n return new WKWebviewOmegaSDK();\n }\n return undefined;\n }\n\n /**\n * 获取App中的omega id\n * @param {IBasicTrackerContext} context\n * @returns {Promise}\n */\n public static fetchAppOmgId(context?: IBasicTrackerContext): Promise {\n return new Promise((resolve: (oid: string) => void): void => {\n const appOmegaSDK = AppUtil.getOmegaSDK();\n if (appOmegaSDK) {\n if (AppUtil.inWKWebview()) {\n appOmegaSDK.getInfo((info: IAppSdkInfo): void => {\n if (info && info.oid) {\n resolve(info.oid);\n }\n });\n } else {\n // resolve((JSON.parse(appOmegaSDK.getInfo()) as IAppSdkInfo).oid);\n // 加入异常拦截发现部分场景oid端内获取异常\n try {\n const str = appOmegaSDK.getInfo();\n if (str) {\n const info: IAppSdkInfo = JSON.parse(str);\n if (info && info.oid) {\n resolve(info.oid);\n }\n }\n } catch (error) {\n // console.error(error);\n }\n }\n }\n });\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AppH5EnvConfig\n */\n\nimport { IH5Context } from '../IH5Tracker';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport AH5EnvConfigSync from 'com/didichuxing/tracker/h5/envconfig/AH5EnvConfigSync';\nimport AppUtil from 'com/didichuxing/tracker/plugin/utils/AppUtil';\n/**\n * 端内H5环境配置\n *\n * @class\n * @implements {IEnvConfigurationItem}\n */\nexport default class AppH5EnvConfig extends AH5EnvConfigSync {\n\n private context: IH5Context | undefined;\n\n /**\n * window.OmegaSDK存在,则说明在端内。\n * @override\n * @inheritDoc\n * @param {IH5Context} context\n * @returns {boolean}\n */\n public validate(context: IH5Context): boolean {\n this.context = context;\n // 当禁止桥接的时候\n if (this.context.disableBridge === true) {\n // 仅同步oid\n if (AppUtil.inEnv()) {\n this.syncNativeOid();\n }\n return false;\n }\n return AppUtil.inEnv();\n }\n\n /**\n * 同步端上的oid\n */\n private syncNativeOid(resolve?: () => void) {\n const context = this.context;\n // 将context的标记在端内\n if (context) {\n context.isInNative = true;\n }\n AppUtil.fetchAppOmgId().then((oid: string): void => {\n Object.assign(context, {\n // 设置oid\n omgId: oid,\n nativeDone: true\n });\n resolve && resolve();\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITracker} tracker\n * @returns {Promise}\n */\n public beforeDeliver(tracker: ITracker): Promise {\n return new Promise((resolve: () => void): void => {\n if (this.context) {\n this.syncNativeOid(resolve);\n }\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n protected getExtraPluginsUrlName(): string {\n return 'omega.default.app.extra.plugins.min.js';\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of UUID\n */\n\nexport default abstract class UUID {\n\n /**\n *\n * @returns {string[]}\n */\n public static getByte2Hex(): string[] {\n const byteToHex: string[] = [];\n for (let i: number = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n }\n return byteToHex;\n }\n\n /**\n * bytes to uuid\n * @param {number[]} buf\n * @param {number} offset\n * @returns {string}\n */\n public static bytesToUuid(buf: number[], offset?: number): string {\n let i: number = offset || 0;\n const bth: string[] = UUID.getByte2Hex();\n // join used to fix memory issue caused by concatenation:\n // https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]]).join('');\n }\n\n /**\n * 生成伪UUID\n * @returns {string}\n */\n public static get v4(): string {\n const rnds: number[] = new Array(16);\n let r: number = 0;\n for (let i: number = 0; i < 16; ++i) {\n if ((i & 0x03) === 0) {\n r = Math.random() * 0x100000000;\n }\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n return UUID.bytesToUuid(rnds);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of NormalH5EnvConfig\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport AH5EnvConfigSync from 'com/didichuxing/tracker/h5/envconfig/AH5EnvConfigSync';\nimport UUID from 'com/didichuxing/tracker/plugin/utils/UUID';\nconst OMEGA_ID: string = '_OMGID';\n\n/**\n * H5 normal 容器。\n *\n * @class\n * @implements {IEnvConfigurationItem}\n */\nexport default class NormalH5EnvConfig extends AH5EnvConfigSync {\n\n private context: ITrackerContext | undefined;\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackerContext} context\n * @returns {boolean}\n */\n public validate(context: ITrackerContext): boolean {\n this.context = context;\n return true;\n }\n\n /**\n * 从cookie中读取omgid\n * @returns {string | undefined}\n */\n private getOmgIdFromCookie(): string | undefined {\n const items: string[] = document.cookie.split(';');\n for (let i: number = 0, j: number = items.length; i < j; ++i) {\n if (items[i].trim().indexOf(`${ OMEGA_ID }=`) === 0) {\n return items[i].split('=')[1].trim();\n }\n }\n return;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITracker} tracker\n * @returns {Promise}\n */\n public beforeDeliver(tracker: ITracker): Promise {\n if (this.context) {\n let omgId: string | undefined = this.context.omgId;\n if (!omgId) {\n // cookie和local中都进行取值\n omgId = this.getOmgIdFromCookie() || this.getOidFromLocal();\n }\n if (!omgId) {\n omgId = UUID.v4;\n // 存储进行区分\n if (this.context.useLocalOid) {\n this.saveOidToLocal(omgId);\n } else {\n this.saveOidToCookie(omgId);\n }\n }\n Object.assign(this.context, {\n omgId: omgId\n });\n }\n return Promise.resolve();\n }\n\n private getOidFromLocal(): string | undefined {\n const id = localStorage.getItem(OMEGA_ID);\n if (id) {\n return id;\n }\n return undefined;\n }\n private saveOidToLocal(oid: string) {\n localStorage.setItem(OMEGA_ID, oid);\n }\n private saveOidToCookie(omgId: string) {\n const expiredDate: Date = new Date();\n expiredDate.setFullYear(expiredDate.getFullYear() + 10);\n document.cookie = `${ OMEGA_ID }=${ omgId }; expires=${ expiredDate }; path=/`;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of UniqueH5EnvConfig\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport AH5EnvConfigSync from 'com/didichuxing/tracker/h5/envconfig/AH5EnvConfigSync';\nimport UUID from 'com/didichuxing/tracker/plugin/utils/UUID';\n\nconst OMEGA_ID: string = '_OMGID';\n\nexport default class UniqueH5EnvConfig extends AH5EnvConfigSync {\n\n private context: ITrackerContext | undefined;\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackerContext} context\n * @returns {boolean}\n */\n public validate(context: ITrackerContext): boolean {\n this.context = context;\n return !!context.unique;\n }\n\n /**\n * 从cookie中读取omgid\n * @returns {string | undefined}\n */\n private getOmgIdFromCookie(): string | undefined {\n const items: string[] = document.cookie.split(';');\n for (let i: number = 0, j: number = items.length; i < j; ++i) {\n if (items[i].trim().indexOf(`${ OMEGA_ID }=`) === 0) {\n return items[i].split('=')[1].trim();\n }\n }\n return;\n }\n\n // /**\n // * @override\n // * @inheritDoc\n // * @returns {Promise}\n // */\n // public beforeDeliver(tracker: ITracker): Promise {\n // return new Promise((resolve: () => void): void => {\n // if (this.context) {\n // let omgId: string | undefined = this.context.omgId || this.getOmgIdFromCookie();\n // if (omgId) {\n // Object.assign(this.context, {\n // omgId: omgId\n // });\n // resolve();\n // } else {\n // const setOpenIdHandler: (openid: string) => void = tracker.setOpenId;\n // tracker.setOpenId = (openid: string): void => {\n // setOpenIdHandler.call(tracker, openid);\n // if (openid) {\n // omgId = openid;\n // const expiredDate: Date = new Date();\n // expiredDate.setFullYear(expiredDate.getFullYear() + 10);\n // document.cookie = `${ OMEGA_ID }=${ omgId }; expires=${ expiredDate }; path=/`;\n // Object.assign(this.context, {\n // omgId: omgId\n // });\n // resolve();\n // }\n // };\n // }\n // }\n // });\n // }\n\n /**\n * @override\n * @inheritDoc\n * @returns {Promise}\n */\n public beforeDeliver(tracker: ITracker): Promise {\n if (this.context) {\n let omgId = this.context.omgId || this.getOmgIdFromCookie();\n if (!omgId) {\n omgId = UUID.v4;\n const expiredDate: Date = new Date();\n expiredDate.setFullYear(expiredDate.getFullYear() + 10);\n document.cookie = `${ OMEGA_ID }=${ omgId }; expires=${ expiredDate }; path=/`;\n }\n Object.assign(this.context, { omgId: omgId });\n }\n\n // promise 实例单独作为一个变量,是为了尽可能同步执行\n let thisResolve: any;\n const prom = new Promise(resolve => {\n thisResolve = resolve;\n });\n const setOpenIdHandler = tracker.setOpenId;\n tracker.setOpenId = (openid: string): void => {\n setOpenIdHandler.call(tracker, openid);\n if (openid) {\n thisResolve && thisResolve();\n }\n };\n\n return prom;\n }\n}\n","export interface IReportCallbackArg {\n\n /**\n * 上报事件的名单。\n * @readonly\n */\n readonly eventid: IReportableEventList | null;\n}\n\nexport interface IReportableEventList {\n\n /**\n * 上报事件id\n * 0为禁止上报,1为允许上报。\n * @readonly\n */\n readonly [eventid: string]: number;\n}\n\nexport default abstract class ReportCallbackUtil {\n\n /**\n * response回调方法挂载的对象名称。\n * @type {string}\n */\n public static readonly OMG_CALLBACK_OBJ_NAME: string = '__OMG_CBKS__';\n\n /**\n * omega事件黑名单列表对象名称。\n * @type {string}\n */\n public static readonly OMG_EVENT_BLACKLIST_NAME: string = '__OMG_EVENT_BLACKLIST__';\n\n public static reportCallbackName(rawSerialized: string): string {\n const cbObjName: string = ReportCallbackUtil.OMG_CALLBACK_OBJ_NAME;\n const cbkMethodName: string = `_cbk${ new Date().getTime() }`;\n rawSerialized = `${rawSerialized}&cbk=${ cbObjName }.${ cbkMethodName }`;\n const self = this;\n if ((window as any)[cbObjName]) {\n (window as any)[cbObjName][cbkMethodName] = function() {\n delete (window as any)[cbObjName][cbkMethodName];\n self.reportCallback.apply(self, arguments);\n };\n } else {\n (window as any)[cbObjName] = {\n [cbkMethodName]: function() {\n delete (window as any)[cbObjName][cbkMethodName];\n self.reportCallback.apply(self, arguments);\n }\n };\n }\n return rawSerialized;\n }\n /**\n * 上报后的回调。\n * @param {IReportCallbackArg} cbArg\n */\n public static reportCallback(cbArg?: IReportCallbackArg): void {\n const bn: string = ReportCallbackUtil.OMG_EVENT_BLACKLIST_NAME;\n if (cbArg && cbArg.eventid) {\n if (!(window as any)[bn]) {\n (window as any)[bn] = [];\n }\n for (const prop in cbArg.eventid) {\n if (cbArg.eventid[prop] === 0) { // event black list\n if (((window as any)[bn] as string[]).indexOf(prop) < 0) {\n // not existed\n ((window as any)[bn] as string[]).push(prop);\n }\n } else { // event need to be removed from black list\n const index: number = ((window as any)[bn] as string[]).indexOf(prop);\n if (index >= 0) { // existed\n ((window as any)[bn] as string[]).splice(index, 1);\n }\n }\n }\n }\n }\n}\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","require('../../modules/es6.reflect.get');\nmodule.exports = require('../../modules/_core').Reflect.get;\n","module.exports = require(\"core-js/library/fn/reflect/get\");","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The enum class of EventStatus\n */\n\nexport enum EventStatus {\n\n /**\n * 正常状态的事件。\n */\n NORMAL = 'normal',\n\n /**\n * 被阻止上报的事件\n * @type {string}\n */\n BLOCKED = 'blocked',\n\n /**\n * 上报失败的事件。\n * @type {string}\n */\n FAILED = 'failed',\n\n /**\n * 上报超时的事件。\n * @type {string}\n */\n TIMEOUT = 'timeout'\n}\n","var _Object$getOwnPropertyDescriptor = require(\"../core-js/object/get-own-property-descriptor\");\n\nvar _Reflect$get = require(\"../core-js/reflect/get\");\n\nvar getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && _Reflect$get) {\n module.exports = _get = _Reflect$get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n\n var desc = _Object$getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AEvent\n */\n\nimport { IPlanObject } from 'com/didichuxing/IPlanObject';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IContextContainer } from 'com/didichuxing/context/IContextContainer';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventData } from 'com/didichuxing/tracker/event/ITrackedEventData';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\n\nexport default abstract class AEvent implements ITrackedEvent, IContextContainer {\n\n /**\n * 事件生成的额外信息\n */\n private readonly info?: IAttrs;\n\n /**\n * 上报的上下文环境\n */\n private readonly context: IContext;\n\n /**\n * 事件的额外参数。\n */\n private readonly attrs: IAttrs;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n * @param {IAttrs} info\n */\n constructor(attrs: IAttrs, context: IContext, info?: IAttrs) {\n this.attrs = attrs;\n this.context = context;\n this.info = info;\n }\n\n /**\n * 获取版本号\n */\n private getVersion() {\n return {\n trackerVersion: this.getContext().version\n };\n }\n\n /**\n * @abstract\n * @returns {string}\n */\n public abstract getType(): string;\n\n /**\n * @override\n * @inheritDoc\n * @returns {ITrackedEventData}\n */\n public getData(): ITrackedEventData {\n const context: ITrackerContext = this.getContext() as ITrackerContext;\n let appKey = context.appKey || context.productName;\n let url: string = context.url || location.href;\n /**\n * 当配置appkey可修改的时候,将event生成的信息中的appkey进行填充\n */\n if ( context && context.modifyAppKey && this.info && this.info.appKey) {\n appKey = this.info.appKey;\n }\n /**\n * 当配置了url的解析则需要将url过滤\n * - noUrlParam 上报的时候不上报参数\n * - formatUrl 上报的时候进行url格式化\n */\n try {\n if (context && context.noUrlParam) {\n url = url.split('?')[0];\n } else if (context && context.formatUrl) {\n url = context.formatUrl(url);\n }\n } catch (error) {\n console.info('url解析异常', error);\n }\n return {\n eventId: this.getType(),\n timestamp: new Date().getTime(),\n viewportId: context.viewportId,\n appName: context.appName,\n appVersion: context.appVersion,\n omgId: context.omgId,\n url,\n userAgent: context.userAgent,\n osType: context.osType,\n osVersion: context.osVersion,\n appKey: appKey,\n userName: context.userName,\n userId: context.userId,\n // cityId: context.cityId,\n // telephone: context.telephone,\n // latitude: context.latitude,\n // longitude: context.longitude,\n bizId: context.bizId,\n locale: context.locale,\n countyId: context.countyId,\n countryCallingCode: context.countryCallingCode,\n utcOffset: context.utcOffset,\n attrs: this.getAttrs(),\n from: this.getFrom()\n };\n }\n\n /**\n * 将事件数据属性映射成上报的字段。\n * @returns {IObjectMap}\n */\n protected getDataKeyMap(): IObjectMap {\n return {\n eventId: 'e',\n timestamp: 'ts',\n viewportId: 'uwid',\n version: 'jv',\n appName: 'an',\n appVersion: 'av',\n omgId: 'oid',\n url: 'v',\n latitude: 'lat',\n longitude: 'lng',\n userAgent: 'ua',\n osType: 'ot',\n osVersion: 'ov',\n appKey: 'ak',\n userName: 'un',\n userId: 'uid',\n cityId: 'cityid',\n telephone: 'tel',\n bizId: 'bizId',\n locale: 'le',\n countyId: 'coi',\n countryCallingCode: 'dcc',\n utcOffset: 'uo',\n from: 'fr'\n };\n }\n\n /**\n * 将attrs属性映射成上报的字段。\n * @returns {IObjectMap}\n */\n protected getAttrsKeyMap(): IObjectMap {\n return {\n _label: 'l',\n trackerVersion: 'jv'\n };\n }\n\n /**\n * 把event data(去除attrs)序列化成json字符串。\n * @returns {string}\n */\n public serialize2JsonStrWithoutAttrs(): string {\n try {\n const eventData: ITrackedEventData = this.getData();\n const obj: IPlanObject = {};\n const dataKeyMap: IObjectMap = this.getDataKeyMap();\n for (const prop in eventData) {\n if (prop !== 'attrs' && !/Null|Undefined/.test(Object.prototype.toString.call(eventData[prop]))) {\n obj[dataKeyMap[prop] || prop] = eventData[prop];\n }\n }\n return JSON.stringify(obj);\n } catch (e) {\n GlobalUtil.dispatchOmgLog('serialize2JsonStrWithoutAttrs Error');\n return '';\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public serialize(): string {\n try {\n const eventData: ITrackedEventData = this.getData();\n // 先用Object内置类的keys方法获取要排序对象的属性名,再利用Array原型上的sort方法对获取的属性名进行排序,newkey是一个数组\n const newkeys = Object.keys(eventData).sort();\n const kvs: string[] = [];\n const dataKeyMap: IObjectMap = this.getDataKeyMap();\n // 要保证顺序 所以attrs也放进了循环\n newkeys.forEach((prop) => {\n if (prop !== 'attrs' && !/Null|Undefined/.test(Object.prototype.toString.call(eventData[prop]))) {\n kvs.push(`${ dataKeyMap[prop] || prop }=${ encodeURIComponent(eventData[prop]) }`);\n } else if (prop === 'attrs') {\n const attrsJsonStr: string = this.serializeAttrs2JsonStr(eventData.attrs || {});\n if (attrsJsonStr !== '{}') {\n kvs.push(`attrs=${ encodeURIComponent(attrsJsonStr) }`);\n }\n }\n });\n return kvs.join('&');\n } catch (e) {\n GlobalUtil.dispatchOmgLog('serialize Error');\n return '';\n }\n }\n\n /**\n * 格式化attrs\n * @param {IAttrs} attrs\n * @returns {string}\n */\n public serializeAttrs2JsonStr(attrs: IAttrs): string {\n try {\n const serializedAttrs: IPlanObject = {};\n const attrsKeyMap: IObjectMap = this.getAttrsKeyMap();\n for (const prop in attrs) {\n if (attrs.hasOwnProperty(prop)) {\n const key: string = attrsKeyMap[prop] || prop;\n if (/Object|Array/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = JSON.stringify(attrs[prop]);\n } else if (/String/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = attrs[prop];\n } else if (/Number/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = attrs[prop];\n } else if (/Boolean/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = attrs[prop] | 0;\n }\n }\n }\n return JSON.stringify(serializedAttrs);\n } catch (e) {\n GlobalUtil.dispatchOmgLog('serializeAttrs2JsonStr Error');\n return '';\n }\n\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n public getContext(): IContext {\n return this.context;\n }\n\n /**\n * 该事件的额外参数。\n * @returns {IAttrs}\n */\n protected getAttrs(): IAttrs {\n const thisAttrs: any = {};\n const context = this.getContext() as ITrackerContext;\n if (context.openId) {\n thisAttrs['_OMGPUID'] = context.openId;\n }\n\n return Object.assign(thisAttrs, context.attrs || {}, this.attrs, this.getVersion());\n }\n\n /**\n * 获取框架来源\n * 由业务方指定\n */\n protected getFrom(): string {\n const context: ITrackerContext = this.getContext() as ITrackerContext;\n if (GlobalUtil.isEmptyString(context.from)) {\n return `h5-${ context.from }`;\n } else {\n return 'h5';\n }\n }\n\n /**\n * 事件的状态。\n * {@link com/didichuxing/tracker/h5/plugins/events/EventStatus}\n * @returns {EventStatus}\n */\n public abstract get status(): EventStatus;\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of SequencedEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITrackedEventData } from 'com/didichuxing/tracker/event/ITrackedEventData';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default abstract class SequencedEvent extends AEvent {\n\n /**\n * Omega事件全局序列名称前缀。\n * @type {string}\n */\n public static readonly OMG_SEQUENCE_NAME_PREFIX: string = '__OMG_SEQUENCE_';\n\n /**\n * Omega事件全局序列名称后缀。\n * @type {string}\n */\n public static readonly OMG_SEQUENCE_NAME_SUFFIX: string = '__';\n\n /**\n * 事件的序列号。\n * 默认为-1,表示没有序列号。\n */\n private readonly sequence: number;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n * @param {IAttrs} info 事件生成的时候默认的一些属性信息\n */\n constructor(attrs: IAttrs, context: IContext, info?: IAttrs) {\n super(attrs, context, info);\n const prefix: string = SequencedEvent.OMG_SEQUENCE_NAME_PREFIX;\n const suffix: string = SequencedEvent.OMG_SEQUENCE_NAME_SUFFIX;\n if (!(window as any)[`${ prefix }${ (context as ITrackerContext).viewportId }${ suffix }`]) {\n (window as any)[`${ prefix }${ (context as ITrackerContext).viewportId }${ suffix }`] = 0;\n }\n this.sequence = (window as any)[`${ prefix }${ (context as ITrackerContext).viewportId }${ suffix }`]++;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {ITrackedEventData}\n */\n public getData(): ITrackedEventData {\n return {\n ...super.getData(),\n sequence: this.sequence\n };\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IObjectMap}\n */\n protected getDataKeyMap(): IObjectMap {\n return {\n ...super.getDataKeyMap(),\n sequence: 'seq'\n };\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.NORMAL;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of PluginUtils\n */\n\nexport default abstract class PluginUtils {\n\n /**\n * page init上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PAGE_INIT: string = 'OMGH5PageInit-reporting-strategy-plugin';\n\n /**\n * page init上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_OMGLOG: string = 'OMGH5Log-reporting-strategy-plugin';\n\n /**\n * page view上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PAGE_VIEW: string = 'OMGH5PageView-reporting-strategy-plugin';\n\n /**\n * page leave上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PAGE_LEAVE: string = 'OMGH5PageLeave-reporting-strategy-plugin';\n\n /**\n * received上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_RECEIVED: string = 'OMGH5Received-reporting-strategy-plugin';\n\n /**\n * click上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_CLICK: string = 'OMGH5Click-reporting-strategy-plugin';\n\n /**\n * js error上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_JS_ERROR: string = 'OMGH5JsError-reporting-strategy-plugin';\n\n /**\n * 用户自定义上报错误事件插件名\n * @type {string}\n */\n public static PLUGIN_NAME_ERROR: string = 'OMGH5Error-reporting-strategy-plugin';\n\n /**\n * 用户自定义埋点事件插件名\n * @type {string}\n */\n public static PLUGIN_NAME_CUSTOM: string = 'OMGH5Custom-reporting-strategy-plugin';\n\n /**\n * 性能上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PERFORMANCE: string = 'OMGH5Performance-reporting-strategy-plugin';\n\n /**\n * 安全上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_SAFETYPING: string = 'OMGH5SafeTyping-reporting-strategy-plugin';\n\n /**\n * page init event id\n * @type {string}\n */\n public static EVENT_ID_PAGE_INIT: string = 'OMGH5PageInit';\n /**\n * page init event id\n * @type {string}\n */\n public static EVENT_ID_OMG_LOG: string = 'OMGH5Log';\n\n /**\n * page view event id\n * @type {string}\n */\n public static EVENT_ID_PAGE_VIEW: string = 'OMGH5PageView';\n\n /**\n * page leave event id\n * @type {string}\n */\n public static EVENT_ID_PAGE_LEAVE: string = 'OMGH5PageLeave';\n\n /**\n * received event id\n * @type {string}\n */\n public static EVENT_ID_RECEIVED: string = 'OMGH5Received';\n\n /**\n * click event id\n * @type {string}\n */\n public static EVENT_ID_CLICK: string = 'OMGH5Click';\n\n /**\n * js error event id\n * @type {string}\n */\n public static EVENT_ID_JS_ERROR: string = 'OMGH5JsError';\n\n /**\n * 用户自定义上报错误事件id\n * @type {string}\n */\n public static EVENT_ID_ERROR: string = 'OMGH5Error';\n\n /**\n * 性能数据上报 事件id\n * @type {string}\n */\n public static EVENT_ID_PERFORMANCE: string = 'OMGH5Performance';\n /**\n * 安全专项上报 事件id\n * @type {string}\n */\n public static EVENT_ID_SAFETYPING: string = 'OMGSafeTyping';\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of PluginSet\n */\n\nimport { IPlugin } from 'com/didichuxing/plugin/IPlugin';\nimport { IPluginCollection } from 'com/didichuxing/plugin/IPluginCollection';\n\nexport default class PluginSet implements IPluginCollection {\n\n /**\n * The plugins set\n */\n private plugins: IPlugin[];\n\n /**\n * @constructor\n */\n constructor() {\n this.plugins = [];\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IPlugin} plugin\n * @returns {boolean}\n */\n public register(plugin: IPlugin): boolean {\n if (this.contains(plugin)) {\n return false;\n } else {\n plugin.install();\n this.plugins.push(plugin);\n return true;\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string | IPlugin} plugin\n * @returns {boolean}\n */\n public contains(plugin: string | IPlugin): boolean {\n if (typeof plugin === 'string') { // plugin name\n for (let i: number = 0, j: number = this.size(); i < j; ++i) {\n if (this.plugins[i].getName() === plugin) {\n return true;\n }\n }\n return false;\n } else { // plugin object\n for (let i: number = 0, j: number = this.size(); i < j; ++i) {\n if (this.plugins[i].getName() === plugin.getName()) {\n return true;\n }\n }\n return false;\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {number}\n */\n public size(): number {\n return this.plugins.length;\n }\n\n /**\n * 删除指定plugin对象。\n * @param {IPlugin} plugin\n * @returns {IPlugin | undefined}\n */\n private removePlugin(plugin: IPlugin): IPlugin | undefined {\n if (this.contains(plugin)) {\n this.plugins.splice(this.plugins.indexOf(plugin), 1);\n return plugin;\n }\n return;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string | IPlugin} plugin\n * @returns {IPlugin | null}\n */\n public unregister(plugin: string | IPlugin): IPlugin | null {\n if (this.contains(plugin)) { // contains\n if (typeof plugin === 'string') { // plugin name, delete plugin via plugin full name\n for (let i: number = 0, j: number = this.plugins.length; i < j; ++i) {\n const pluginItem: IPlugin = this.plugins[i];\n if (pluginItem.getName() === plugin) {\n return this.removePlugin(pluginItem) ? pluginItem : null;\n }\n }\n return null;\n } else if (this.removePlugin(plugin)) { // delete plugin object directly\n return plugin;\n }\n return null;\n }\n return null;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public unregisterAll(): void {\n while (this.plugins.length) {\n const plugin: IPlugin | undefined = this.plugins.pop();\n if (plugin) {\n plugin.uninstall();\n }\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IPlugin[]}\n */\n public toArray(): IPlugin[] {\n return this.plugins;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of NonH5Plugin\n */\n\nimport { IPlugin } from 'com/didichuxing/plugin/IPlugin';\nimport { IContext } from 'com/didichuxing/context/IContext';\n\nexport default class NonH5Plugin implements IPlugin {\n\n /**\n * test安装状态\n */\n private installed: boolean;\n\n /**\n * 上下文\n */\n private context: IContext;\n\n /**\n * @constructor\n */\n constructor(context: IContext) {\n this.installed = false;\n this.context = context;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getName(): string {\n return 'non-h5-plugin';\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n public getContext(): IContext {\n return this.context;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n this.installed = true;\n return this.installed;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public hasInstalled(): boolean {\n return this.installed;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n /* Nothing to execute */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n /* Nothing to exit */\n }\n\n /**\n * 插件卸载。\n * @returns {boolean}\n */\n public uninstall(): boolean {\n this.exit();\n this.installed = false;\n delete this.context;\n return true;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of FailedEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default class FailedEvent extends AEvent {\n\n /**\n * custom event id\n */\n private readonly eventId: string;\n\n /**\n * error event\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error}\n */\n private readonly error: Error;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n */\n constructor(error: Error, eventId: string, attrs: IAttrs, context: IContext) {\n super(attrs, context);\n this.error = error;\n this.eventId = eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return this.eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.FAILED;\n }\n\n /**\n * 获取出错信息事件。\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error}\n * @returns {ErrorEvent}\n */\n public getError(): Error {\n return this.error;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of TimeoutEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default class TimeoutEvent extends AEvent {\n\n /**\n * custom event id\n */\n private readonly eventId: string;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n */\n constructor(eventId: string, attrs: IAttrs, context: IContext) {\n super(attrs, context);\n this.eventId = eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return this.eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.TIMEOUT;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AppEventReportor\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport { IOmegaSDK } from 'com/didichuxing/tracker/plugin/app/IOmegaSDK';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventData } from 'com/didichuxing/tracker/event/ITrackedEventData';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\nimport FailedEvent from 'com/didichuxing/tracker/plugin/events/FailedEvent';\nimport TimeoutEvent from 'com/didichuxing/tracker/plugin/events/TimeoutEvent';\nimport AppUtil from 'com/didichuxing/tracker/plugin/utils/AppUtil';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\n\n/**\n * 上报超时默认时间,单位毫秒。\n * @type {number}\n */\nconst REPORT_TIMEOUT: number = 3000;\n\nexport default class AppEventReportor implements IEventReportor {\n\n private context: ITrackerContext;\n private event: ITrackedEvent;\n\n /**\n * @constructor\n * @param {ITrackerContext} context\n * @param {ITrackedEvent} event\n */\n constructor(context: ITrackerContext, event: ITrackedEvent) {\n this.context = context;\n this.event = event;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {Promise}\n */\n public reportEvent(): Promise {\n return new Promise((resolve: (evt: ITrackedEvent) => void,\n reject: (evt: ITrackedEvent) => void): void => {\n if (!GlobalUtil.isEmptyString(this.event.getData().appKey || '')) {\n GlobalUtil.dispatchOmgLog('[Omega]na appKey 参数 不可为空');\n throw new Error('[Omega]na appKey 参数 不可为空');\n reject(new FailedEvent(new Error('[Omega]na appKey 参数 不可为空'),\n this.event.getType(), this.event.getData().attrs || {}, this.context));\n }\n const omegaSDK = AppUtil.getOmegaSDK();\n if (omegaSDK) {\n const timeoutHandler: number = setTimeout((): void => {\n clearTimeout(timeoutHandler);\n reject(new TimeoutEvent(this.event.getType(), this.event.getData().attrs || {}, this.context));\n }, this.context.timeout || REPORT_TIMEOUT) as any;\n try {\n const eventData: ITrackedEventData = this.event.getData();\n if (eventData.userId && omegaSDK.setUserId) {\n omegaSDK.setUserId(eventData.userId);\n }\n if (eventData.telephone && omegaSDK.setTelephone) {\n omegaSDK.setTelephone(eventData.telephone);\n }\n if (eventData.cityId && omegaSDK.setCityId) {\n omegaSDK.setCityId(Number(eventData.cityId));\n }\n const attrs: IAttrs = eventData.attrs || {};\n omegaSDK.trackEventEx(eventData.eventId, attrs.label || '',\n (this.event as AEvent).serializeAttrs2JsonStr(attrs),\n (this.event as AEvent).serialize2JsonStrWithoutAttrs(), '{nt:1}');\n clearTimeout(timeoutHandler);\n resolve(this.event);\n } catch (error) {\n GlobalUtil.dispatchOmgLog('端上数据发送失败' + this.event.getType());\n clearTimeout(timeoutHandler);\n reject(new FailedEvent(error, this.event.getType(),\n this.event.getData().attrs || {}, this.context));\n }\n } else {\n GlobalUtil.dispatchOmgLog('na 未能找到omegaSDK');\n reject(new FailedEvent(new Error('[Omega]Cannot fetch the omegaSDK from the native omega sdk.'),\n this.event.getType(), this.event.getData().attrs || {}, this.context));\n }\n });\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5PageInitEvent\n */\n\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default class OMGH5PageInitEvent extends SequencedEvent {\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return PluginUtils.EVENT_ID_PAGE_INIT;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of BlockedEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default class BlockedEvent extends AEvent {\n\n /**\n * custom event id\n */\n private readonly eventId: string;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n */\n constructor(eventId: string, attrs: IAttrs, context: IContext) {\n super(attrs, context);\n this.eventId = eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n protected initSequence(): void {\n /* stop sequence */\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return this.eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.BLOCKED;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AReportingStrategyPlugin\n */\n\nimport { IReportingStrategyPlugin, ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IDeviceInfo } from 'com/didichuxing/tracker/context/IDeviceInfo';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport ReportCallbackUtil from 'com/didichuxing/tracker/plugin/utils/ReportCallbackUtil';\nimport BlockedEvent from 'com/didichuxing/tracker/plugin/events/BlockedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n// 上报通道国内域名集合\nconst UPLOAD_DOMAIN_LOCAL: string[] = [\n 'omgup.xiaojukeji.com',\n 'omgup1.xiaojukeji.com',\n 'omgup2.xiaojukeji.com'\n];\n\n// 上报通道国际域名集合\nconst UPLOAD_DOMAIN_GLOBAL: string[] = [\n 'omgup.didiglobal.com'\n];\n\n// 上报通道国际域名集合\nconst UPLOAD_DOMAIN_RU: string[] = [\n 'omgup-ru.didiglobal.com'\n];\n\nconst UA_BROWSER_REGEXPS: IUaRegExpNameItem[] = [{\n uaRegExps: [/(miniProgram)\\/([\\w\\.]+)/i], // WeChatMiniProgram,ios的ua中无miniProgram,但有MicroMessenger(表示是微信浏览器)\n name: 'WeChatMiniProgram'\n }, {\n uaRegExps: [/(micromessenger)\\/([\\w\\.]+)/i], // WeChat\n name: 'WeChat'\n}, {\n uaRegExps: [/(alipayclient)\\/([\\w\\.]+)/i], // Alipay\n name: 'Alipay'\n}, {\n uaRegExps: [/(QQ)\\/([\\d\\.]+)/i], // QQ, aka ShouQ\n name: 'QQ'\n},\n{\n uaRegExps: [/(didi\\.sdk)\\/([\\w\\.]+)/i], // didi.sdk\n name: 'didi.sdk'\n}, {\n name: 'dingding',\n uaRegExps: [/dingtalk/i] // ding ding talk\n}, {\n name: 'didi.passenger',\n uaRegExps: [/didi\\.passenger/i] // didi乘客端\n}, {\n name: 'didi.lite',\n uaRegExps: [/didi\\.lite/i] // uber客户端\n}, {\n name: 'zhuankuai.driver',\n uaRegExps: [\n /didigsui/i, // didi专快司机端安卓版本\n /ddudriver/i // didi专快司机端ios版本\n ] // didi专快司机端\n}, {\n name: 'zhuanche.assistant.driver',\n uaRegExps: [/zhuanche\\.cici/i] // 专车司机助手\n}, {\n name: 'didi.galaxy',\n uaRegExps: [/didi\\.galaxy/i] // 滴滴哈勃效率工具\n}, {\n name: 'daijia.driver',\n uaRegExps: [/daijia\\.driver/i] // 代驾司机端\n}, {\n name: 'didi.driver.tw',\n uaRegExps: [/didi\\.driver\\.tw/i] // didi司机端台湾\n}, {\n name: 'didi.driver.hk',\n uaRegExps: [/didi\\.driver\\.hk/i] // didi司机端台湾\n}, {\n name: 'didi.global',\n uaRegExps: [/global/i] // didi国际化端\n}, {\n name: 'didi.mini',\n uaRegExps: [/mini/i] // didi乘客端极简版\n}, {\n name: 'didies',\n uaRegExps: [/didies/i] // 企业版APP\n},\n{\n name: 'hm',\n uaRegExps: [/hm\\.passenger/i] // 街兔app\n}, {\n name: 'weibo',\n uaRegExps: [/weibo/i] // weibo\n}];\n\nconst UA_OS_REGEXPS: IUaRegExpNameItem[] = [{\n uaRegExps: [/(android)[\\/\\s-]?([\\w\\.]*)/i], // WeChat\n name: 'Android'\n}, {\n uaRegExps: [\n /cfnetwork\\/.+darwin/i,\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i\n ], // iOS\n name: 'iOS'\n}, {\n uaRegExps: [\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n /(macintosh|mac(?=_powerpc)\\s)/i\n ], // Mac OS\n name: 'Mac OS'\n}, {\n uaRegExps: [\n /microsoft\\s(windows)\\s(vista|xp)/i, // Windows (iTunes)\n /(windows)\\snt\\s6\\.2;\\s(arm)/i // Windows RT\n ], // Windows\n name: 'Windows'\n}];\n\nexport interface IUaRegExpNameItem {\n /**\n * 正则表达式\n */\n readonly uaRegExps: RegExp[];\n\n /**\n * 正则表达式所对应的名称\n */\n readonly name: string;\n}\n\nexport interface INameVersion {\n readonly name: string;\n readonly version: string;\n}\n\nexport default abstract class AReportingStrategyPlugin implements IReportingStrategyPlugin {\n\n /**\n * 安装状态\n */\n private installed: boolean;\n\n /**\n * 插件所在的宿主对象。\n */\n private tracker: ITracker;\n\n /**\n * BreadcrumbList 名称\n */\n public breadcrumbListName: string;\n\n /**\n * @constructor\n */\n constructor(tracker: ITracker) {\n this.installed = false;\n this.tracker = tracker;\n // @ts-ignore\n const AppKey: string | undefined = this.tracker.getContext().appKey || this.tracker.getContext().productName;\n this.breadcrumbListName = this.getBreadcrumbListName(AppKey || 'Other');\n Object.assign(tracker.getContext(), this.initialzedContext);\n }\n\n /**\n * 获取BREADCRUMBS列表名称\n * @param appKey\n */\n private getBreadcrumbListName(appKey: string): string {\n appKey = appKey.replace(/\\./g, '_');\n return `____OMG_BREADCRUMBS_${appKey}__`;\n }\n\n private sliceBreadcrumbList(): void {\n const breadcrumbListName = (window as any)[this.breadcrumbListName] || [];\n if (breadcrumbListName.length > 10) {\n (window as any)[this.breadcrumbListName].length = 10;\n }\n }\n\n /**\n * 根据正则匹配UA,获取相应数据。\n * @returns {INameVersion | undefined}\n */\n private getInfo(uaRegExpNameItems: IUaRegExpNameItem[]): INameVersion | undefined {\n const ua: string = navigator.userAgent;\n for (let i: number = 0, j: number = uaRegExpNameItems.length; i < j; ++i) {\n const item: IUaRegExpNameItem = uaRegExpNameItems[i];\n let name: string = item.name;\n const uaRegExps: RegExp[] = item.uaRegExps;\n for (let idx: number = 0, len: number = uaRegExps.length; idx < len; ++idx) {\n const regExpExecArray: RegExpExecArray | null = uaRegExps[idx].exec(ua);\n if (regExpExecArray && regExpExecArray.length) {\n let version: string = regExpExecArray[2];\n if (name === 'iOS') {\n version = regExpExecArray[1].replace(/_/g, '.');\n } else if (name === 'Mac OS') {\n version = version.replace(/_/g, '.');\n // @ts-ignore\n // tslint:disable-next-line:max-line-length\n } else if (name === 'WeChat' && window.wx && wx && wx.miniProgram && wx.miniProgram.getEnv && typeof wx.miniProgram.getEnv === 'function') {\n // ios的ua中无miniProgram,但有MicroMessenger(表示是微信浏览器)\n // @ts-ignore\n wx.miniProgram.getEnv((res: any) => {\n if (res.miniprogram) {\n name = 'WeChatMiniProgram';\n }\n });\n // @ts-ignore\n // tslint:disable-next-line:max-line-length\n } else if (name === 'Alipay' && window.my && my && my.getEnv && typeof my.getEnv === 'function') {\n // @ts-ignore\n my.getEnv((res: any) => {\n if (res.miniprogram) {\n name = 'AlipayMiniProgram';\n }\n });\n }\n return {\n name: name,\n version: version\n };\n }\n }\n }\n return undefined;\n }\n\n /**\n * 获取设备信息。\n * @returns {IDeviceInfo}\n */\n protected getDeviceInfo(): IDeviceInfo {\n let appName: string = 'Others';\n let appVersion: string | undefined;\n let osType: string = 'Others';\n let osVersion: string | undefined;\n const appInfo: INameVersion | undefined = this.getInfo(this.getBrowserRegExpsInUA());\n if (appInfo) {\n appName = appInfo.name;\n appVersion = appInfo.version;\n }\n const osInfo: INameVersion | undefined = this.getInfo(this.getOSRegExpsInUA());\n if (osInfo) {\n osType = osInfo.name;\n osVersion = osInfo.version;\n }\n const context: ITrackerContext = this.getContext() as ITrackerContext;\n return {\n appName: context.appName || appName,\n appVersion: context.appVersion || appVersion,\n osType: context.osType || osType,\n osVersion: context.osVersion || osVersion\n };\n }\n\n /**\n * 浏览器名称正则\n * @returns {IUaRegExpNameItem[]}\n */\n protected getBrowserRegExpsInUA(): IUaRegExpNameItem[] {\n return UA_BROWSER_REGEXPS;\n }\n\n /**\n * 操作系统名称正则\n * @returns {IUaRegExpNameItem[]}\n */\n protected getOSRegExpsInUA(): IUaRegExpNameItem[] {\n return UA_OS_REGEXPS;\n }\n\n /**\n * 获取上报通道域名\n * @returns {string}\n */\n protected getUploadHost(): string {\n let uploadHost: string = (this.getContext() as ITrackerContext).uploadHost || 'omgup.xiaojukeji.com';\n if (/xiaojukeji\\.com/.test(uploadHost)) { // 国内域名\n if (UPLOAD_DOMAIN_LOCAL.indexOf(uploadHost) > -1) {\n uploadHost = UPLOAD_DOMAIN_LOCAL[Math.floor(Math.random() * UPLOAD_DOMAIN_LOCAL.length)];\n }\n } else if (/omgup-ru\\.didiglobal.com\\.com/.test(uploadHost)) { // 俄罗斯域名\n if (UPLOAD_DOMAIN_RU.indexOf(uploadHost) > -1) {\n uploadHost = UPLOAD_DOMAIN_RU[Math.floor(Math.random() * UPLOAD_DOMAIN_RU.length)];\n }\n } else if (/didiglobal\\.com/.test(uploadHost)) { // 国际域名\n if (UPLOAD_DOMAIN_GLOBAL.indexOf(uploadHost) > -1) {\n uploadHost = UPLOAD_DOMAIN_GLOBAL[Math.floor(Math.random() * UPLOAD_DOMAIN_GLOBAL.length)];\n }\n }\n return uploadHost;\n }\n\n /**\n * 初始化设置上下文信息。\n * @returns {IContext}\n */\n protected get initialzedContext(): IContext {\n return {\n ...this.getDeviceInfo(),\n uploadHost: this.getUploadHost()\n } as ITrackerContext;\n }\n\n /**\n * @abstract\n * @returns {string}\n */\n public abstract getName(): string;\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n public getContext(): IContext {\n return this.tracker.getContext();\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {ITracker}\n */\n public getTracker(): ITracker {\n return this.tracker;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n this.installed = true;\n return this.installed;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public hasInstalled(): boolean {\n return this.installed;\n }\n\n /**\n * @abstract\n */\n public abstract execute(): void;\n\n /**\n * @abstract\n */\n public abstract exit(): void;\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public uninstall(): boolean {\n this.exit();\n this.installed = false;\n delete this.tracker;\n return true;\n }\n\n /**\n * 兼容callback\n * @param {ITrackedEventArgs} eventArgs\n * @param {ITrackedEvent} event\n * @returns {ITrackedEvent}\n */\n private compatibleCallback(eventArgs: ITrackedEventArgs, event: ITrackedEvent): ITrackedEvent {\n if (eventArgs.cb) {\n eventArgs.cb(event);\n }\n return event;\n }\n\n /**\n * 添加TrackerEvent至Breadcrumb\n * @param event\n */\n private addTrackerEventToBreadcrumb(event: ITrackedEvent) {\n if (event.getType() === PluginUtils.EVENT_ID_CLICK) {\n if ((window as any)[this.breadcrumbListName]) {\n (window as any)[this.breadcrumbListName].push(event.serialize());\n } else {\n (window as any)[this.breadcrumbListName] = [];\n (window as any)[this.breadcrumbListName].push(event.serialize());\n }\n if ((window as any)[this.breadcrumbListName].length > 10) {\n (window as any)[this.breadcrumbListName].length = 10;\n }\n }\n\n }\n\n /**\n * 获取事件上报器。\n * @returns {IEventReportor}\n */\n protected abstract getEventReportor(event: ITrackedEvent): IEventReportor;\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {Promise}\n */\n public report(eventArgs: ITrackedEventArgs): Promise {\n this.sliceBreadcrumbList();\n const eventBlacklist: string[] = (window as any)[ReportCallbackUtil.OMG_EVENT_BLACKLIST_NAME] || [];\n if (eventBlacklist.some((eventid: string): boolean => eventid === eventArgs.eventId)) { // 命中黑名单\n const event: ITrackedEvent = new BlockedEvent(eventArgs.eventId, eventArgs.attrs, this.getContext());\n return Promise\n .resolve(this.compatibleCallback(eventArgs, event))\n .then((finalEvent: ITrackedEvent): ITrackedEvent => {\n this.dispatchTrackerEventUnderWindow(finalEvent);\n return finalEvent;\n });\n } else {\n const trackedEvent: ITrackedEvent = this.generateEvent(eventArgs);\n this.dispatchTrackerEventUnderWindow(trackedEvent);\n this.addTrackerEventToBreadcrumb(trackedEvent);\n return this.getEventReportor(trackedEvent).reportEvent()\n .then(\n (event: ITrackedEvent): ITrackedEvent => this.compatibleCallback(eventArgs, event),\n (event: ITrackedEvent): ITrackedEvent => this.compatibleCallback(eventArgs, event)\n );\n }\n }\n\n /**\n * 给window派发tarcker event。\n * 派发给window的事件名为omegatrack\n * @param {ITrackedEvent} event\n */\n protected dispatchTrackerEventUnderWindow(event: ITrackedEvent): void {\n const mesageEvent: MessageEvent = document.createEvent('MessageEvent');\n mesageEvent.initMessageEvent('omegatrack', false, false, event, '', '', window);\n window.dispatchEvent(mesageEvent);\n }\n\n /**\n * 生成当前插件需要上报的事件对象。\n * @abstract\n * @returns {ITrackedEvent}\n */\n protected abstract generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent;\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AOMGH5PageInitPlugin\n */\n\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport OMGH5PageInitEvent from 'com/didichuxing/tracker/events/OMGH5PageInitEvent';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default abstract class AOMGH5PageInitPlugin extends AReportingStrategyPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n const context: any = this.getContext();\n // 加入配置不发送请求\n if (context && context.disabledInit) {\n return super.install();\n }\n const attrs = {\n trackerVersion: this.getContext().version\n };\n /**\n * - 加入XSpm的参数\n */\n try {\n if (context && context.getXspmAttrs) {\n const xspmAttrs = context.getXspmAttrs();\n Object.assign(attrs, xspmAttrs);\n }\n } catch (error) {\n console.info('合并xspm参数失败');\n }\n this.report({\n eventId: PluginUtils.EVENT_ID_PAGE_INIT,\n attrs\n });\n return super.install();\n }\n\n /**\n * @override\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_PAGE_INIT;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n /* Nothing to exit */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n /* Nothing to exit */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n return new OMGH5PageInitEvent(eventArgs.attrs, this.getContext());\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGAppH5PageInitPlugin\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport AppEventReportor from 'com/didichuxing/tracker/plugin/reportor/AppEventReportor';\nimport AOMGH5PageInitPlugin from 'com/didichuxing/tracker/plugins/AOMGH5PageInitPlugin';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGAppH5PageInitPlugin extends AOMGH5PageInitPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return new AppEventReportor(this.getContext() as ITrackerContext, event);\n }\n}\n","import { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class DataQueueSet {\n private static instance: DataQueueSet;\n private arr: ITrackedEvent[] = [];\n\n private constructor() {\n }\n\n public static getInstance(): DataQueueSet {\n if (!DataQueueSet.instance) {\n DataQueueSet.instance = new DataQueueSet();\n }\n return this.instance;\n }\n\n /**\n * 是否重复\n */\n private uniq(value: ITrackedEvent): boolean {\n let result = true;\n this.arr.forEach((item) => {\n if (value.getData().viewportId === item.getData().viewportId &&\n value.getData().sequence === item.getData().sequence) {\n result = false;\n }\n });\n return result;\n }\n\n /**\n * 添加\n */\n public add(value: ITrackedEvent): void {\n if (this.uniq(value)) {\n this.arr.push(value);\n }\n }\n\n /**\n * 是否为空\n */\n public empty(): boolean {\n return this.arr.length === 0;\n }\n\n /**\n * 删除所有\n */\n public removeAll(): void {\n this.arr = [];\n }\n\n /**\n * 返回数组\n */\n public getData(): ITrackedEvent[] {\n return this.arr;\n }\n\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AH5EventReportor\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\nimport DataQueueSet from 'com/didichuxing/tracker/plugin/reportor/DataQueueSet';\n\ninterface IUnreportedItem {\n\n /**\n * 未上报事件\n */\n event: ITrackedEvent;\n\n /**\n * 该事件上报成功后执行的方法。\n * @param {ITrackedEvent} evt\n */\n resolve(evt: ITrackedEvent): void;\n\n /**\n * 该事件上报失败后执行的方法。\n * @param {ITrackedEvent} evt\n */\n reject(evt: ITrackedEvent): void;\n}\n\nexport default abstract class AH5EventReportor implements IEventReportor {\n\n private context: ITrackerContext;\n private event: ITrackedEvent;\n\n /**\n * 待上报事件。\n * - 移除等待上报\n */\n private unreportedEvents: IUnreportedItem[];\n /**\n * 上报失败事件\n */\n protected readonly errorreportedEvents = DataQueueSet.getInstance();\n\n /**\n * @constructor\n * @param {ITrackerContext} context\n * @param {ITrackedEvent} event\n */\n constructor(context: ITrackerContext, event: ITrackedEvent) {\n this.event = event;\n this.context = context;\n this.unreportedEvents = [];\n this.reportEventsAfterLoad = this.reportEventsAfterLoad.bind(this);\n window.addEventListener('load', this.reportEventsAfterLoad);\n }\n\n /**\n * load之后,将未上报事件集中依次上报。\n */\n private reportEventsAfterLoad(): void {\n window.removeEventListener('load', this.reportEventsAfterLoad);\n while (this.unreportedEvents.length) {\n const unreportedItem: IUnreportedItem | undefined = this.unreportedEvents.shift();\n if (unreportedItem) {\n this.reportEventImmediately(unreportedItem.event).then(unreportedItem.resolve, unreportedItem.reject);\n }\n }\n }\n\n /**\n * 得到context信息\n * @returns {ITrackerContext}\n */\n protected getContext(): ITrackerContext {\n return this.context;\n }\n\n /**\n * 上报路径path\n * @returns {string}\n */\n protected get reportPath(): string {\n return '/api/web/stat';\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {Promise}\n */\n public reportEvent(): Promise {\n if (!GlobalUtil.isEmptyString(this.event.getData().appKey)) {\n GlobalUtil.dispatchOmgLog('[Omega] H5 appKey 参数 不可为空');\n throw new Error('[Omega] H5 appKey 参数 不可为空');\n return Promise.reject();\n }\n if (!this.errorreportedEvents.empty()) {\n this.errorreportedEvents.getData().forEach((value) => {\n this.reportEventImmediately(value);\n });\n }\n this.errorreportedEvents.removeAll();\n return this.reportEventImmediately(this.event);\n // 移除上报等待逻辑\n // if (GlobalUtil.isLoaded() || this.event.getType() === PluginUtils.EVENT_ID_PAGE_INIT ||\n // this.event.getType() === PluginUtils.EVENT_ID_OMG_LOG) {\n // // onload已经执行完或者当前事件为页面初始化事件\n // // 如果有上报错误的数据也去上报\n // if (!this.errorreportedEvents.empty()) {\n // this.errorreportedEvents.getData().forEach((value) => {\n // this.reportEventImmediately(value);\n // });\n // }\n // this.errorreportedEvents.removeAll();\n // return this.reportEventImmediately(this.event);\n // } else {\n // // load未完成,将事件聚集,等待集中上报。\n // return new Promise((resolve: (evt: ITrackedEvent) => void,\n // reject: (evt: ITrackedEvent) => void): void => {\n // this.unreportedEvents.push({\n // event: this.event,\n // resolve: resolve,\n // reject: reject\n // });\n // });\n // }\n }\n\n /**\n * 马上直接上报事件。\n * @param {ITrackedEvent} event\n * @returns {Promise}\n */\n protected abstract reportEventImmediately(event: ITrackedEvent): Promise;\n}\n","export default abstract class EncodeHash {\n /**\n * 对输入字符串进行Hash编码。\n * @param {string} str\n * @returns {number}\n */\n public static encodeHash(str: string): number {\n let hash: number = 1315423911;\n for (let i: number = 0, j: number = str.length; i < j; ++i) {\n hash ^= ((hash << 5) + str.charCodeAt(i) + (hash >> 2));\n }\n return hash & 0x7FFFFFFF;\n }\n\n /**\n * 输出增加tk的URL\n * @param str\n */\n public static encodeHashUrl(str: string): string {\n return `${ str }&tk=${ this.encodeHash(str) }`;\n }\n}\n","import AH5EventReportor from 'com/didichuxing/tracker/plugin/reportor/AH5EventReportor';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport FailedEvent from 'com/didichuxing/tracker/plugin/events/FailedEvent';\nimport TimeoutEvent from 'com/didichuxing/tracker/plugin/events/TimeoutEvent';\nimport ReportCallbackUtil from 'com/didichuxing/tracker/plugin/utils/ReportCallbackUtil';\nimport EncodeHash from 'com/didichuxing/tracker/plugin/utils/EncodeHash';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\n\n/**\n * 上报超时默认时间,单位毫秒。\n * @type {number}\n */\nconst REPORT_TIMEOUT: number = 1500;\n\nconst forbidReportEventListKey = '__OMG_FORBID_EVENTLIST__';\n\nexport default class PostEventReportor extends AH5EventReportor {\n\n /**\n * 标记\n * - 是否开始上报数据\n */\n private startForbidReport: boolean = false;\n\n /**\n * 将上报的数据存储到global中\n */\n private get forbidReportEventList(): ITrackedEvent[] {\n if (!(window as any)[forbidReportEventListKey]) {\n (window as any)[forbidReportEventListKey] = [];\n }\n return (window as any)[forbidReportEventListKey];\n }\n\n private addForbidEvent = (event: ITrackedEvent) => {\n if (this.forbidReportEventList.length > 50) {\n return;\n }\n this.forbidReportEventList.push(event);\n }\n /**\n * 修改禁止上报为开启上报\n */\n private onChangeForbidFalse = () => {\n // 若已经开始则return\n if (this.startForbidReport) {\n return;\n }\n this.startForbidReport = true;\n this.reportForBidEvent();\n }\n private reportForBidEvent = () => {\n const context = this.getContext();\n // 防止批量上报过程中禁止上报\n if (context.forbidReport) {\n return;\n }\n if (this.forbidReportEventList && this.forbidReportEventList.length) {\n const event = this.forbidReportEventList.pop();\n if (event) {\n // 防止一次请求过多一条条进行上报\n this.reportEventImmediately(event)\n .then(() => {\n this.reportForBidEvent();\n }).catch(() => {\n this.reportForBidEvent();\n });\n }\n }\n }\n /**\n * 根据当前的时间进行cityID的加密\n */\n private getOmgci(): string {\n if (this.getContext().cityId) {\n const cId = Number(this.getContext().cityId);\n /**\n * 确保当前值符合要求\n */\n if (!isNaN(cId)) {\n const len = String(cId).length;\n let ts = `${new Date().getTime()}`;\n ts = ts.slice(0, -(len + 1));\n ts = `${ts}${cId}${len}`;\n return ts;\n }\n }\n return '';\n }\n\n /**\n * @override\n * @param {ITrackedEvent} event\n * @returns {Promise}\n */\n protected reportEventImmediately(event: ITrackedEvent): Promise {\n const context = this.getContext();\n // 禁止上报则直接return\n if (context.forbidReport) {\n // 将上报标记设置为false\n this.startForbidReport = false;\n this.addForbidEvent(event);\n return Promise.resolve(event);\n } else {\n this.onChangeForbidFalse();\n }\n return new Promise((resolve: (evt: ITrackedEvent) => void,\n reject: (evt: ITrackedEvent) => void): void => {\n const URL = `${GlobalUtil.getProtocol()}${this.getContext().uploadHost}${this.reportPath}`;\n const xhr = new XMLHttpRequest();\n const eventData = event.getData();\n xhr.timeout = this.getContext().timeout || REPORT_TIMEOUT;\n xhr.ontimeout = () => {\n reject(new TimeoutEvent(event.getType(), eventData.attrs || {}, this.getContext()));\n };\n xhr.open('POST', URL + `?e=${event.getType()}`);\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');\n xhr.setRequestHeader('oid', eventData.omgId || '');\n xhr.setRequestHeader('seq', eventData.appKey || '');\n const cid = this.getOmgci();\n if (cid) {\n xhr.setRequestHeader('omgci', cid);\n }\n // 为请求设置为唯一值\n xhr.setRequestHeader(\n 'msgid',\n `${eventData.viewportId || ''}-${eventData.sequence || ''}-${eventData.timestamp || ''}`\n );\n xhr.send(EncodeHash.encodeHashUrl(event.serialize()));\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4 && xhr.status === 200) {\n try {\n const response = JSON.parse(xhr.responseText);\n if (response.state && response.state.code !== 200) {\n if (response.state.code === 500) {\n this.errorreportedEvents.add(event);\n }\n GlobalUtil.dispatchOmgLog(`POST 200 上报错误${event.getType()}_\n ${response.state.code || 0}_${response.state.msg || ''}`);\n }\n ReportCallbackUtil.reportCallback(response);\n resolve(event);\n } catch (error) {\n // 解析返回值失败但是不抛异常\n console.error(`上报成功后解析失败:${xhr.responseText}`);\n }\n }\n };\n xhr.onerror = () => {\n if (xhr.status === 500) {\n this.errorreportedEvents.add(event);\n } else {\n console.error('POST上报失败onerror' + xhr.status);\n }\n reject(new FailedEvent(new Error('POST Error'), event.getType(),\n eventData.attrs || {}, this.getContext()));\n };\n });\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5PageInitPlugin new\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport PostEventReportor from 'com/didichuxing/tracker/plugin/reportor/PostEventReportor';\nimport AOMGH5PageInitPlugin from 'com/didichuxing/tracker/plugins/AOMGH5PageInitPlugin';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGH5PageInitPlugin extends AOMGH5PageInitPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return new PostEventReportor(this.getContext() as ITrackerContext, event);\n }\n}\n","import SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default class OMGH5LogEvent extends SequencedEvent {\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return PluginUtils.EVENT_ID_OMG_LOG;\n }\n}\n","import { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport OMGH5LogEvent from 'com/didichuxing/tracker/events/OMGH5LogEvent';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default abstract class AOMGH5LogPlugin extends AReportingStrategyPlugin {\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n window.addEventListener('omglog', (e) => {\n this.reportLog(e);\n });\n return super.install();\n }\n\n /**\n * @override\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_OMGLOG;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n /* Nothing to execute */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n window.removeEventListener('omglog', this.reportLog);\n }\n\n /**\n * 发送log\n * @param e\n */\n public reportLog(e: any): void {\n this.report({\n eventId: PluginUtils.EVENT_ID_OMG_LOG,\n attrs: {\n trackerVersion: this.getContext().version,\n log: '[Omega]' + (e.data || '')\n }\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n return new OMGH5LogEvent(eventArgs.attrs, this.getContext());\n }\n}\n","import { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport PostEventReportor from 'com/didichuxing/tracker/plugin/reportor/PostEventReportor';\nimport AOMGH5LogPlugin from 'com/didichuxing/tracker/plugins/AOMGH5LogPlugin';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGH5LogPlugin extends AOMGH5LogPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return new PostEventReportor(this.getContext() as ITrackerContext, event);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of H5Tracker\n */\nimport 'reflect-metadata';\nimport {\n ITracker,\n TrackedSuccessfulCallback,\n GetOmgIdCallback,\n TrackedHandler\n} from 'com/didichuxing/tracker/ITracker';\nimport { IH5Context } from './IH5Tracker';\nimport { IPlanObject } from 'com/didichuxing/IPlanObject';\nimport {\n IReportingStrategyPlugin,\n IReportingStrategyPluginConstr,\n ITrackedEventArgs\n} from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport { IPlugin } from 'com/didichuxing/plugin/IPlugin';\nimport { IPluginCollection } from 'com/didichuxing/plugin/IPluginCollection';\nimport { ITrackerConfiguration } from 'com/didichuxing/tracker/config/ITrackerConfiguration';\nimport { IEnvConfigurationItem } from 'com/didichuxing/tracker/config/IEnvConfigurationItem';\nimport { IEnvConfigurationItemSync } from 'com/didichuxing/tracker/config/IEnvConfigurationItemSync';\nimport { IEnvConfigurationItemAsync } from 'com/didichuxing/tracker/config/IEnvConfigurationItemAsync';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventData } from 'com/didichuxing/tracker/event/ITrackedEventData';\nimport { IGeoLocation } from 'com/didichuxing/tracker/geography/IGeoLocation';\nimport { IAutoClickCover } from 'com/didichuxing/tracker/IAutoClickCover';\nimport { IClickFilter } from 'com/didichuxing/tracker/IClickFilter';\nimport AH5EnvConfigSync from 'com/didichuxing/tracker/h5/envconfig/AH5EnvConfigSync';\nimport AppH5EnvConfig from 'com/didichuxing/tracker/h5/envconfig/AppH5EnvConfig';\nimport NormalH5EnvConfig from 'com/didichuxing/tracker/h5/envconfig/NormalH5EnvConfig';\nimport UniqueH5EnvConfig from 'com/didichuxing/tracker/h5/envconfig/UniqueH5EnvConfig';\nimport ReportCallbackUtil from 'com/didichuxing/tracker/plugin/utils/ReportCallbackUtil';\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\nimport UUID from 'com/didichuxing/tracker/plugin/utils/UUID';\nimport PluginSet from 'com/didichuxing/tracker/PluginSet';\nimport NonH5Plugin from 'com/didichuxing/tracker/plugin/NonH5Plugin';\nimport OMGAppH5PageInitPlugin from 'com/didichuxing/tracker/plugins/OMGAppH5PageInitPlugin';\nimport OMGH5PageInitPlugin from 'com/didichuxing/tracker/plugins/OMGH5PageInitPlugin';\nimport OMGH5LogPlugin from 'com/didichuxing/tracker/plugins/OMGH5LogPlugin';\n\n/**\n * JS脚本加载超时时间,单位 1000 ms\n * config (约 7.4kb)\n * [0.1, 0.5, 0.8, 0.9, 0.95, 0.99, 0.999]\n * [0.0, 150.1, 422.1, 649.8, 916.8, 3519.4, 10834.7]\n *\n * plugin (约 20.4kb)\n * [0.1, 0.5, 0.8, 0.9, 0.95, 0.99, 0.999]\n * [0.0, 54.4, 226.3, 494.4, 878.9, 3935.1, 14520.9]\n * @type {number}\n */\nconst SCRIPT_LOAD_TIMEOUT: number = 1000;\nconst PROTO = GlobalUtil.getProtocol();\n\n/**\n * 默认的本地环境配置JS地址\n * @type {string}\n */\nconst DEFAULT_LOCAL_CONFIG_URL = PROTO + '{{cdnHost}}/static/{{cdnNamespace}}/{{version}}/omega.configs.min.js';\n\n/**\n * 默认的国际化环境配置JS地址\n * @type {string}\n */\nconst DEFAULT_GLOBAL_CONFIG_URL = PROTO + '{{cdnGlobalHost}}/static/tracker_global/{{version}}/omega.configs.min.js';\n/**\n * 欧洲环境配置地址\n */\nconst DEFAULT_DE_CONFIG_URL = PROTO + '{{cdnDeHost}}/static/tracker_de/{{version}}/omega.configs.min.js';\n/**\n * Rlab配置js地址\n */\nconst DEFAULT_RLAB_CONFIG_URL = PROTO +\n '{{cdnRlabHost}}/static/falcon_public/tracker/{{version}}/omega.configs.min.js'\n;\nconst OMG_VERSION: string = '{{version}}';\ntype ReportFucHandler = (eventArgs: ITrackedEventArgs) => Promise;\n\ntype MethodHandler = (...args: any[]) => any;\ntype ResolveHandler = MethodHandler;\ntype RejectHandler = (reason?: any) => void;\n\ninterface IMethodHolderItem {\n /**\n * @readonly\n * method handler\n */\n readonly method: MethodHandler;\n\n /**\n * @readonly\n * method 对应的参数。\n */\n readonly arguments: IArguments | any[];\n\n /**\n * @readonly\n * 异步回调方法。\n */\n readonly resolve?: ResolveHandler;\n\n /**\n * @readonly\n * 异步回调出错方法。\n */\n readonly reject?: RejectHandler;\n}\n\n/**\n * The MethodHold decorator\n * 针对返回void方法进行hold\n * @param {H5Tracker} target\n * @param {string} propertyName\n * @param {TypedPropertyDescriptor} descriptor\n */\nfunction MethodHold(target: H5Tracker, propertyName: string,\n descriptor: PropertyDescriptor): void {\n const method: MethodHandler = descriptor.value;\n descriptor.value = function(...args: any[]) {\n if ((this as H5Tracker).getPluginConllection().size() <= 2) { // 2为同步插件的数量 plugin 未加载,需要把方法都hold\n (this as H5Tracker).holdMethod(method, arguments);\n } else {\n method.apply(this, arguments as any);\n }\n };\n}\n\n/**\n * The async MethodHold decorator\n * 针对返回Promise方法进行hold\n * @param {H5Tracker} target\n * @param {string} propertyName\n * @param {PropertyDescriptor} descriptor\n */\nfunction MethodHoldAsync(target: H5Tracker, propertyName: string,\n descriptor: PropertyDescriptor): void {\n const method: MethodHandler = descriptor.value;\n descriptor.value = function(...args: any[]) {\n if ((this as H5Tracker).getPluginConllection().size() <= 2) { // 2为同步插件的数量 plugin 未加载,需要把方法都hold\n return new Promise(\n (resolve: (...args: any[]) => void, reject: (reason?: any) => void): void => {\n (this as H5Tracker).holdMethod(method, arguments, resolve, reject);\n }\n );\n } else {\n return method.apply(this, arguments as any);\n }\n };\n}\n\n/**\n * The tracker for h5\n * @class\n * @implements {ITracker}\n */\nexport default class H5Tracker implements ITracker {\n /**\n * Omega已经实例化过的对象APPKEY集合名称\n */\n public static readonly OMG_INSTANTIATION_NAME: string = '__OMG_INSTANTIATION__';\n\n /**\n * Omega版本号\n */\n public static readonly OMG_VERSION: string = OMG_VERSION;\n\n /**\n * Omega异步环境配置集合对象名称。\n * @type {string}\n */\n public static readonly OMG_ASYNC_CONFIGS_NAME: string = '__OMG_ASYNC_CONFIGS_{{TRACKER_VERSION}}__';\n\n /**\n * Omega异步插件类型集合对象名称。\n * @type {string}\n */\n public static readonly OMG_ASYNC_PLUGINS_CONSTRS_NAME: string = '__OMG_ASYNC_PLUGINS_CONSTRS_{{TRACKER_VERSION}}__';\n\n /**\n * Omega同步插件类型集合对象名称。\n * @type {string}\n */\n public static readonly OMG_PLUGINS_CONSTRS_NAME: string = '__OMG_PLUGINS_CONSTRS_{{TRACKER_VERSION}}__';\n /**\n * onload之前错误列表\n */\n public beforeErrorList: ErrorEvent[];\n\n /**\n * The tracker context.\n */\n private context: IH5Context;\n\n /**\n * The plugin collection.\n */\n private pluginCollection: IPluginCollection;\n\n /**\n * The method handler chain.\n */\n private methodHolderChain: IMethodHolderItem[];\n\n /**\n * The method handler chain.\n */\n private methodHolderChainIsDone: boolean = false;\n\n /**\n * 自动点击上报覆盖对象\n */\n private clickedCover: IAutoClickCover = { attr: 'auto-track-click' };\n /**\n * 自动点击上报覆盖对象是否遍历子节点\n */\n private clickedCoverIsChild: boolean | undefined;\n\n /**\n * 自动点击上报过滤对象\n */\n private clickedFilter: IClickFilter | undefined;\n\n /**\n * 额外环境配置文件地址。\n */\n private extraConfigsUrl: string;\n\n /**\n * 获取omgId的回调\n */\n private getOmgIdHandler: GetOmgIdCallback | undefined;\n /**\n * viewportId名称\n * 具体值每个SDK初始化时放在自己内部\n * 因为每个SDK的UUID不应该共享 所以不挂在全局\n */\n private OMG_UWID_NAME: string = '';\n /**\n * trackHandler向attrs里注入额外参数\n */\n private trackHandlers: any[] = [];\n\n /**\n * @constructor\n * @param {ITrackerConfiguration} config\n */\n constructor(config: ITrackerConfiguration = {}) {\n this.methodHolderChain = [];\n this.beforeErrorList = [];\n this.context = this.getDefaultContext();\n /**\n * 插件的地址\n */\n if (config.uploadHost === 'omgup.1meal.net') {\n // 国际化外卖的上报地址\n this.extraConfigsUrl = this.getRlabDefaultConfigUrl();\n } else if (/global/.test(config.uploadHost || '')) {\n // 俄罗斯环境\n if (/omgup-ru\\.didiglobal\\.com/.test(config.uploadHost || '')) {\n console.error('该机房已迁移为欧洲机房');\n this.extraConfigsUrl = this.getDeDefaultConfigUrl();\n } else if (/omgup-de\\.didiglobal\\.com/.test(config.uploadHost || '')) {\n // 欧洲法拉克福\n this.extraConfigsUrl = this.getDeDefaultConfigUrl();\n } else {\n // 默认美东\n this.extraConfigsUrl = this.getGlobalDefaultConfigUrl();\n }\n } else {\n // 国内\n this.extraConfigsUrl = this.getLocalDefaultConfigUrl();\n }\n this.pluginCollection = new PluginSet();\n this.pagehideHandler = this.pagehideHandler.bind(this);\n this.initAsyncPluginCollection = this.initAsyncPluginCollection.bind(this);\n this.initSyncPluginCollection = this.initSyncPluginCollection.bind(this);\n this.setBeforeError = this.setBeforeError.bind(this);\n this.setConfig(config);\n }\n\n /**\n * 获取默认配置\n * @returns {IH5Context}\n */\n protected getDefaultContext(): IH5Context {\n let viewportId: string = this.OMG_UWID_NAME || '';\n if (!viewportId) {\n viewportId = UUID.v4;\n this.OMG_UWID_NAME = viewportId;\n }\n return {\n viewportId: viewportId,\n version: OMG_VERSION,\n url: window.location.href,\n utcOffset: -new Date().getTimezoneOffset(),\n userAgent: window.navigator.userAgent,\n timeout: 4000,\n isFirstSw: true\n };\n\n }\n\n /**\n * hold method handler\n * @param {MethodHandler} method\n * @param {IArguments | any[]} args\n */\n public holdMethod(method: MethodHandler, args: IArguments | any[],\n resolve?: (...args: any[]) => void, reject?: (reason?: any) => void): void {\n this.methodHolderChain.push({\n method: method,\n arguments: args,\n resolve: resolve,\n reject: reject\n });\n }\n\n /**\n * pagehideHandler执行方法。\n */\n private pagehideHandler(): void {\n this.trackEvent(PluginUtils.EVENT_ID_PAGE_LEAVE);\n // 不进行销毁\n // setTimeout(() => {\n // this.destroy();\n // }, 0);\n }\n\n /**\n * @override {ITracker#init()}\n * @inheritDoc\n */\n public init(config?: ITrackerConfiguration): void {\n // 针对config中的cookie进行提前设置\n if (config && config.useLocalOid) {\n this.context.useLocalOid = true;\n }\n this.initSyncPluginCollection();\n window.addEventListener('error', this.setBeforeError);\n window.removeEventListener('load', this.setBeforeError);\n // 部分框架全局trycatch,通过console.error收集错误\n this.proxyConsoleError();\n /**\n * 如果参数中有直接加载插件\n */\n if (config && config.fastLoad) {\n this.initAsyncPluginCollection();\n } else if (GlobalUtil.isLoaded()) { // window loaded\n this.initAsyncPluginCollection();\n } else {\n window.addEventListener('load', this.initAsyncPluginCollection);\n }\n // 在内嵌页面中发现不能进行pagehide事件\n window.addEventListener('pagehide', this.pagehideHandler);\n }\n\n /**\n * 代理console.error\n */\n private proxyConsoleError() {\n const t = this;\n // 关闭的话不进行监听\n if (t.context.autoConsoleError === false) {\n return;\n }\n if (console && typeof console === 'object') {\n try {\n const fn = console.error;\n console.error = function() {\n try {\n const errEvent = arguments[0];\n if (errEvent && errEvent.message && errEvent.stack) {\n t.setBeforeError({\n type: 'error',\n error: errEvent,\n message: errEvent.message\n });\n }\n } catch (error) {\n console.info(`代理console.error失败,${error}`);\n }\n return fn.apply(this, arguments as any);\n };\n } catch (error) {\n console.info(`代理console.error失败,${error}`);\n }\n }\n }\n\n public setBeforeError(event: ErrorEvent | any): void {\n if (GlobalUtil.isLoaded()) {\n return;\n }\n if (event && event.type && event.type === 'error') {\n this.beforeErrorList.push(event);\n } else if (event && event.message && event.stack) {\n // 兼容console.error获取的错误信息\n this.beforeErrorList.push(event);\n }\n if (this.beforeErrorList.length > 15) {\n this.beforeErrorList.length = 10;\n }\n }\n\n /**\n * 本地默认配置url\n * @returns {string}\n */\n protected getLocalDefaultConfigUrl(): string {\n return DEFAULT_LOCAL_CONFIG_URL;\n }\n\n /**\n * 国际化默认配置url\n * @returns {string}\n */\n protected getGlobalDefaultConfigUrl(): string {\n return DEFAULT_GLOBAL_CONFIG_URL;\n }\n\n /**\n * 俄罗斯默认配置url\n * - 已经删除\n * @returns {string}\n */\n // protected getRussiaDefaultConfigUrl(): string {\n // return DEFAULT_RUSSIA_CONFIG_URL;\n // }\n\n /**\n * 欧洲法拉克福的默认配置url\n * @returns {string}\n */\n protected getDeDefaultConfigUrl(): string {\n return DEFAULT_DE_CONFIG_URL;\n }\n\n /**\n * 国际化外码的url\n */\n protected getRlabDefaultConfigUrl(): string {\n return DEFAULT_RLAB_CONFIG_URL;\n }\n\n /**\n * H5页面默认需要的插件。\n * | OMGH5CustomPlugin | OMGH5JsErrorPlugin | OMGH5ErrorPlugin)[]}\n * @returns {IReportingStrategyPluginConstr[]}\n */\n protected getH5DefaultPluginsConstrs(): IReportingStrategyPluginConstr[] {\n return [\n OMGH5PageInitPlugin,\n OMGH5LogPlugin\n ];\n }\n\n /**\n * App内嵌H5默认需要的插件\n * | OMGH5CustomPlugin | OMGH5JsErrorPlugin | OMGH5ErrorPlugin)[]}\n * @returns {IReportingStrategyPluginConstr[]}\n */\n protected getAppH5DefaultPluginsConstrs(): IReportingStrategyPluginConstr[] {\n return [\n OMGAppH5PageInitPlugin,\n OMGH5LogPlugin\n ];\n }\n\n /**\n * 载入javascript文件,并返回window[globalVarName]对象。\n * @param {string} url\n * @param {string} globalVarName\n * @returns {Promise}\n */\n protected loadScript(url: string, globalVarName: string, callback?: (val: T) => void): Promise {\n return new Promise((resolve, reject: () => void): void => {\n let value: T = (window as any)[globalVarName];\n if (value) { // 已经存在,则不去load。\n resolve(value);\n } else {\n let isTimeout = false;\n const timeoutHandler: number = setTimeout((): void => {\n clearTimeout(timeoutHandler);\n isTimeout = true;\n reject();\n }, SCRIPT_LOAD_TIMEOUT) as any;\n const scriptEle: HTMLScriptElement = document.createElement('script');\n document.documentElement.appendChild(scriptEle);\n scriptEle.onload = (event: Event): void => {\n clearTimeout(timeoutHandler);\n document.documentElement.removeChild(scriptEle);\n value = (window as any)[globalVarName];\n isTimeout ? callback && callback(value) : resolve(value);\n };\n scriptEle.onerror = (): void => {\n GlobalUtil.dispatchOmgLog('loadScript 失败' + url);\n clearTimeout(timeoutHandler);\n reject();\n };\n scriptEle.crossOrigin = 'anonymous';\n scriptEle.src = url;\n }\n });\n }\n\n /**\n * 获取默认配置项集合。\n * @returns {IEnvConfigurationItem[]}\n */\n protected getDefaultConfigs(): IEnvConfigurationItem[] {\n const h5DefaultPluginsConstrs: IReportingStrategyPluginConstr[] = this.getH5DefaultPluginsConstrs();\n const appH5DefaultPluginsConstrs: IReportingStrategyPluginConstr[] = this.getAppH5DefaultPluginsConstrs();\n return [\n new AppH5EnvConfig(this, appH5DefaultPluginsConstrs),\n new UniqueH5EnvConfig(this, h5DefaultPluginsConstrs),\n new NormalH5EnvConfig(this, h5DefaultPluginsConstrs)\n ];\n }\n\n /**\n * 通过url来加载plugin并实例化。\n * @param {string} pluginsUrl\n * @returns {Promise}\n */\n private loadPluginsByUrl(pluginsUrl: string): Promise {\n return new Promise((resolve: (plugins: IPlugin[]) => void): void => {\n this.loadScript(\n pluginsUrl,\n H5Tracker.OMG_ASYNC_PLUGINS_CONSTRS_NAME,\n /**\n * 即使 plugins 超时,依然补上执行逻辑 [2/2]\n */\n (pluginConstrs: IReportingStrategyPluginConstr[]) => {\n this.methodHolderChainIsDone = true;\n const plugins: IPlugin[] = (pluginConstrs || [])\n .map((PluginConstr: IReportingStrategyPluginConstr): IPlugin => {\n return new PluginConstr(this);\n });\n this.loadPluginsBefore(this.afterAsyncPluginsLoad.bind(this), plugins);\n }\n ).then((pluginConstrs: IReportingStrategyPluginConstr[] | undefined): void => {\n try {\n this.methodHolderChainIsDone = true;\n pluginConstrs = pluginConstrs || [];\n const plugins: IPlugin[] = pluginConstrs\n .map((PluginConstr: IReportingStrategyPluginConstr): IPlugin => {\n return new PluginConstr(this);\n });\n resolve(plugins);\n } catch (e) {\n console.error(e);\n GlobalUtil.dispatchOmgLog('通过url来加载plugin并实例化 失败' + pluginsUrl);\n resolve([new NonH5Plugin(this.getContext())]);\n }\n\n }, (): void => {\n resolve([new NonH5Plugin(this.getContext())]);\n });\n });\n }\n\n /**\n * 即使 plugins 超时,依然补上执行逻辑 [1/2]\n * @param callback\n * @param plugins\n */\n private loadPluginsBefore(callback: (extraPlugins: IPlugin[]) => void, plugins?: IPlugin[]) {\n const envConfig: IEnvConfigurationItem | undefined = (this.getContext() as IH5Context).envConfig;\n if (envConfig) { // 环境配置对象实例存在。\n // @ts-ignore\n if ((envConfig as IEnvConfigurationItemSync).getPlugins) {\n // 当前环境配置为IEnvConfigurationItemSync实例\n // @ts-ignore\n if ((envConfig as AH5EnvConfigSync).getExtraPluginsUrl) { // 为默认H5配置环境,加载额外的远程插件url\n const pluginsUrl: string = (envConfig as AH5EnvConfigSync).getExtraPluginsUrl();\n if (pluginsUrl) {\n plugins ?\n callback((envConfig as IEnvConfigurationItemSync).getPlugins().concat(plugins)) :\n this.loadPluginsByUrl(pluginsUrl).then((extraPlugins: IPlugin[]): void => {\n callback((envConfig as IEnvConfigurationItemSync).getPlugins().concat(extraPlugins));\n });\n } else {\n GlobalUtil.dispatchOmgLog('当前环境配置为IEnvConfigurationItemSync实例 pluginsUrl 不存在' + pluginsUrl);\n callback((envConfig as IEnvConfigurationItemSync).getPlugins());\n }\n } else {\n GlobalUtil.dispatchOmgLog('当前环境配置为IEnvConfigurationItemSync实例 getExtraPluginsUrl 不存在');\n callback((envConfig as IEnvConfigurationItemSync).getPlugins());\n }\n return;\n // @ts-ignore\n } else if ((envConfig as IEnvConfigurationItemAsync).getPluginsUrl) {\n // 当前环境配置为IEnvConfigurationItemASync实例\n const pluginsUrl: string = (envConfig as IEnvConfigurationItemAsync).getPluginsUrl();\n if (pluginsUrl) {\n plugins ? callback(plugins) : this.loadPluginsByUrl(pluginsUrl).then(callback);\n } else {\n GlobalUtil.dispatchOmgLog('当前环境配置为IEnvConfigurationItemASync实例 pluginsUrl 不存在' + pluginsUrl);\n }\n return;\n }\n }\n GlobalUtil.dispatchOmgLog('环境配置对象实例不存在 失败');\n callback([new NonH5Plugin(this.getContext())]);\n }\n\n /**\n * 加载插件实现库列表。\n * @returns {Promise}\n */\n private loadPlugins(): Promise {\n return new Promise((resolve: (plugins: IPlugin[]) => void): void => {\n this.loadPluginsBefore(resolve);\n });\n }\n\n /**\n * getCurrentEnvConfig: [1/2]\n * 获取当前环境配置信息。\n * @returns {Promise}\n */\n private getCurrentEnvConfig(): Promise {\n return new Promise((resolve) => {\n const defaultConfigs: IEnvConfigurationItem[] = this.getDefaultConfigs();\n this.loadScript(this.extraConfigsUrl, H5Tracker.OMG_ASYNC_CONFIGS_NAME,\n (configs: IEnvConfigurationItem[]) => {\n // 即使超时,依然补上执行逻辑\n this.afterAsyncConfigs1((configs || []).concat(defaultConfigs)); // 返回值暂无作用\n this.afterAsyncConfigs2();\n })\n .then((configs: IEnvConfigurationItem[] | undefined): void => {\n this.afterAsyncConfigs1((configs || []).concat(defaultConfigs));\n resolve();\n }, (): void => {\n this.afterAsyncConfigs1(defaultConfigs);\n resolve();\n });\n });\n }\n\n /**\n * getCurrentEnvConfig: [2/2]\n */\n private afterAsyncConfigs1(configs: IEnvConfigurationItem[]): void {\n for (let i: number = 0, j: number = configs.length; i < j; ++i) {\n const config: IEnvConfigurationItem = configs[i];\n try {\n if (config.validate(this.getContext() as IH5Context)) { // 验证成功,环境配置命中当前环境\n config.beforeDeliver(this).then((): void => { // 配置下发前执行。\n Object.assign(this.context, {\n envConfig: config\n });\n return;\n });\n break;\n }\n } catch (error) {\n GlobalUtil.dispatchOmgLog('获取当前环境配置信息 失败' + (error as ErrorEvent).message);\n console.error(error);\n }\n }\n }\n\n /**\n * 初始化同步插件\n */\n private initSyncPluginCollection(): void {\n const defaultConfigs: IEnvConfigurationItem[] = this.getDefaultConfigs();\n for (let i: number = 0, j: number = defaultConfigs.length; i < j; ++i) {\n const config: IEnvConfigurationItem = defaultConfigs[i];\n try {\n if (config.validate(this.getContext() as IH5Context)) { // 验证成功,环境配置命中当前环境\n config.beforeDeliver(this).then((): void => { // 配置下发前执行。\n Object.assign(this.context, {\n envConfig: config\n });\n const envConfig: IEnvConfigurationItem | undefined =\n (this.getContext() as IH5Context).envConfig;\n if ((envConfig as IEnvConfigurationItemSync) &&\n (envConfig as IEnvConfigurationItemSync).getPlugins) {\n const plugins = (envConfig as IEnvConfigurationItemSync).getPlugins() || [];\n plugins.forEach((plugin: IPlugin): void => {\n try {\n if (!this.pluginCollection.contains(plugin)) {\n this.pluginCollection.register(plugin);\n }\n } catch (e) {\n GlobalUtil.dispatchOmgLog('initSyncPluginCollection 注册插件 失败');\n console.error(e);\n }\n });\n }\n });\n }\n } catch (error) {\n GlobalUtil.dispatchOmgLog('获取当前环境配置信息 失败' + (error as ErrorEvent).message);\n console.error(error);\n }\n }\n\n }\n\n /**\n * initAsyncPluginCollection: [1/3]\n * 初始化插件库,先从远程获取环境配置信息,从对应的环境信息里再远程拉取插件库CDN。\n */\n\n protected initAsyncPluginCollection(): void {\n window.removeEventListener('load', this.initAsyncPluginCollection);\n this.getCurrentEnvConfig().then(this.afterAsyncConfigs2.bind(this));\n }\n\n /**\n * initAsyncPluginCollection: [2/3]\n */\n private afterAsyncConfigs2(): void {\n this.loadPlugins().then(this.afterAsyncPluginsLoad.bind(this));\n }\n\n /**\n * initAsyncPluginCollection: [3/3]\n * @param plugins\n */\n private afterAsyncPluginsLoad(plugins: IPlugin[]): void {\n if (!this.methodHolderChainIsDone) {\n return;\n }\n plugins.forEach((plugin: IPlugin): void => {\n try {\n if (!this.pluginCollection.contains(plugin)) {\n this.pluginCollection.register(plugin);\n }\n } catch (e) {\n GlobalUtil.dispatchOmgLog('initAsyncPluginCollection 注册插件 失败');\n console.error(e);\n }\n });\n\n const chain = this.methodHolderChain;\n\n chain.forEach((item: IMethodHolderItem): void => {\n const rtnValue: Promise | undefined = item.method.apply(this, item.arguments as any);\n if (rtnValue && rtnValue.then && item.resolve) { // 异步来做处理。\n rtnValue.then(item.resolve, item.reject);\n }\n });\n while (chain.length) {\n chain.pop();\n }\n if (this.getOmgIdHandler) {\n this.getOmgIdHandler(this.context.omgId || '');\n delete this.getOmgIdHandler;\n }\n }\n\n /**\n * @override\n * @inheritDoc\n */\n @MethodHold\n public execute(): void {\n this.getPluginConllection().toArray().forEach((plugin: IPlugin): void => {\n try {\n plugin.execute();\n } catch (e) {\n GlobalUtil.dispatchOmgLog('安装插件失败');\n console.error(e);\n }\n });\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public destroy(): void {\n // unregister all of plugins\n this.getPluginConllection().unregisterAll();\n\n // remove configs\n const configsName: string = H5Tracker.OMG_ASYNC_CONFIGS_NAME;\n const configs: IEnvConfigurationItem[] = (window as any)[configsName] || [];\n while (configs.length) {\n configs.pop();\n }\n (window as any)[configsName] = undefined;\n\n // remove constrs of plugins\n const pluginConstrsName: string = H5Tracker.OMG_ASYNC_PLUGINS_CONSTRS_NAME;\n const pluginsConstrs: IReportingStrategyPluginConstr[] = (window as any)[pluginConstrsName] || [];\n while (pluginsConstrs.length) {\n pluginsConstrs.pop();\n }\n (window as any)[pluginConstrsName] = undefined;\n\n // remove sequence under each viewport id.\n const prefix: string = SequencedEvent.OMG_SEQUENCE_NAME_PREFIX;\n const suffix: string = SequencedEvent.OMG_SEQUENCE_NAME_SUFFIX;\n (window as any)[`${ prefix }${ (this.getContext() as IH5Context).viewportId }${ suffix }`] = undefined;\n\n // remove event black list\n const bn: string = ReportCallbackUtil.OMG_EVENT_BLACKLIST_NAME;\n const eventBlacklist: string[] = (window as any)[bn] || [];\n while (eventBlacklist.length) {\n eventBlacklist.pop();\n }\n (window as any)[bn] = undefined;\n\n // remove all of response callbacks.\n (window as any)[ReportCallbackUtil.OMG_CALLBACK_OBJ_NAME] = undefined;\n\n // unbind 'pagehide' event listener\n window.removeEventListener('pagehide', this.pagehideHandler);\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n public getContext(): IH5Context {\n return this.context;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IPluginCollection}\n */\n public getPluginConllection(): IPluginCollection {\n return this.pluginCollection;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackerConfiguration} config\n */\n public setConfig(config: ITrackerConfiguration): void {\n if (config.hasOwnProperty('appKey')) {\n if (GlobalUtil.isEmptyString(config.appKey)) { // 设置app key\n if (!this.context.appKey) {\n this.init(config);\n }\n } else {\n GlobalUtil.dispatchOmgLog('setConfig appKey 参数 不可设置为空');\n console.error('[Omega]setConfig appKey 参数 不可设置为空');\n // @ts-ignore\n config.appKey = this.context.appKey;\n }\n }\n if (this.context.attrs && config.attrs) { // 当上下文中已经存在attrs时,又设置了全局attrs,则进行合并。\n // 现将 attrs 合并至 context.attrs\n Object.assign(this.context.attrs, config.attrs);\n // 再将 context.attrs 合并至 attrs,以防止 被覆盖\n Object.assign(config.attrs, this.context.attrs);\n }\n Object.assign(this.context, config);\n\n }\n\n /**\n * fix the track event args.\n * @param {string} eventId\n * @param {string | IAttrs | EventTarget | TrackedSuccessfulCallback} eventLabel\n * @param {IAttrs | EventTarget | TrackedSuccessfulCallback} attrs\n * @param {EventTarget | TrackedSuccessfulCallback} target\n * @param {TrackedSuccessfulCallback} cb\n * @returns {ITrackedEventArgs}\n */\n protected fixEventArgs(eventId: string, eventLabel?: string | IAttrs | EventTarget | TrackedSuccessfulCallback,\n attrs?: IAttrs | EventTarget | TrackedSuccessfulCallback,\n target?: EventTarget | TrackedSuccessfulCallback,\n cb?: TrackedSuccessfulCallback): ITrackedEventArgs {\n let newLabel: string = '';\n let newAttrs: IAttrs = {};\n let newCallback: TrackedSuccessfulCallback | undefined;\n for (let i: number = 1, j: number = arguments.length; i < j; ++i) { // 判断可选参数情况。\n const argValue: any = arguments[i];\n const argType: string = Object.prototype.toString.call(argValue);\n if (argType === '[object String]') { // event label\n newLabel = argValue;\n } else if (argType === '[object Object]') { // attrs\n newAttrs = argValue;\n } else if (argType === '[object Function]') { // callback\n newCallback = argValue;\n }\n }\n this.trackHandlers.length && this.mergeTrackHandler(eventId, newAttrs, target as EventTarget);\n return {\n eventId: eventId,\n attrs: {\n ...(newAttrs || {}),\n _label: `${ newLabel || '' }`\n },\n creatInfo: {\n appKey: this.context.appKey\n },\n cb: newCallback\n };\n }\n\n protected mergeTrackHandler(eventId: string, attrs: IAttrs, target: EventTarget) {\n this.trackHandlers.forEach((handler) => {\n const parsedAttr = handler.call(target, eventId, attrs, target);\n if (Object.prototype.toString.call(parsedAttr) === '[object Object]') {\n Object.assign(attrs, parsedAttr);\n }\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} eventId\n * @param {string} eventLabel\n * @param {IAttrs} attrs\n * @param {EventTarget} target\n * @param {TrackedSuccessfulCallback} cb\n * @returns {Promise}\n */\n public trackEvent(eventId: string,\n eventLabel?: string | IAttrs | EventTarget | TrackedSuccessfulCallback,\n attrs?: IAttrs | EventTarget | TrackedSuccessfulCallback,\n target?: EventTarget | TrackedSuccessfulCallback,\n cb?: TrackedSuccessfulCallback): Promise {\n // @ts-ignore\n if (eventLabel && eventLabel.err && Object.prototype.toString.call(eventLabel.err) === '[object Error]') {\n // @ts-ignore\n this.trackError(eventId, eventLabel.err!.code, eventLabel.err!.stack, { message: eventLabel.err.message });\n }\n const eventArgs = this.fixEventArgs(eventId, eventLabel, attrs, target, cb);\n return this.reportCustomEvent(eventArgs);\n }\n\n /**\n * 上报自定义事件\n */\n @MethodHoldAsync\n public reportCustomEvent(eventArgs: ITrackedEventArgs): Promise {\n return this.trackEventByPlugin(PluginUtils.PLUGIN_NAME_CUSTOM, eventArgs);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IAttrs} attrs\n * @returns {Promise}\n */\n @MethodHoldAsync\n public sendPageView(attrs?: IAttrs): Promise {\n this.setConfig({\n url: window.location.href\n });\n return this.trackEventByPlugin(\n PluginUtils.PLUGIN_NAME_PAGE_VIEW,\n this.fixEventArgs(PluginUtils.EVENT_ID_PAGE_VIEW, '', attrs, window)\n );\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} name\n * @param {string | number} code\n * @param {string} msg\n * @param {IAttrs} attrs\n * @returns {Promise}\n */\n @MethodHoldAsync\n public trackError(name: string, code: string | number, msg: string, attrs?: IAttrs): Promise {\n return this.trackEventByPlugin(\n PluginUtils.PLUGIN_NAME_ERROR,\n this.fixEventArgs(PluginUtils.EVENT_ID_ERROR, msg, {\n ...(attrs || {}),\n name: name,\n code: code\n })\n );\n }\n /**\n * 上报业务页面的完成时间\n * - 参数自定义\n */\n public trackPageCompleted(attrs?: IAttrs) {\n this.trackEvent('pub_page_completed_load_sw', attrs);\n }\n /**\n * 根据指定的plugin上报相应的数据。\n * 多个相同plugin会分别实例化执行。\n * @param {string} pluginName\n * @param {ITrackedEventArgs} eventArgs\n * @returns {Promise}\n */\n private trackEventByPlugin(pluginName: string, eventArgs: ITrackedEventArgs): Promise {\n const pluginReports: Array<[IPlugin, ReportFucHandler, ITrackedEventArgs]> = [];\n this.getPluginConllection().toArray().forEach((plugin: IPlugin): void => {\n if (plugin.getName() === pluginName) {\n pluginReports.push([\n plugin,\n (plugin as IReportingStrategyPlugin).report,\n eventArgs\n ]);\n }\n });\n return Promise.all(pluginReports.map>(\n (pluginReportItem: [IPlugin, ReportFucHandler, ITrackedEventArgs]): Promise => {\n return pluginReportItem[1].call(pluginReportItem[0], pluginReportItem[2]);\n }\n )).then((events: ITrackedEvent[]): ITrackedEvent => events[0]);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} userName\n */\n public setUserName(userName: string): void {\n this.setConfig({\n userName: userName\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} userId\n */\n public setUserId(userId: string): void {\n this.setConfig({\n userId: userId\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} tel\n * @param {string} countryCallingCode\n */\n public setTelephone(tel: string, countryCallingCode?: string): void {\n console.error('setTelephone API已移除');\n // if (countryCallingCode) {\n // this.setConfig({\n // telephone: tel,\n // countryCallingCode: countryCallingCode\n // });\n // } else {\n // this.setConfig({\n // telephone: tel\n // });\n // }\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} openid\n */\n public setOpenId(openid: string): void {\n if ((this.getContext() as IH5Context).unique) { // 只有unique为true时,才能够设置openid\n Object.assign(this.context, {\n openId: openid\n });\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {number} cityId\n */\n public setCityId(cityId: number): void {\n this.setConfig({ cityId: cityId });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {number} lng\n * @param {number} lat\n */\n public setLocation(lng: number, lat: number): void;\n\n /**\n * @override\n * @inheritDoc\n * @param {IGeoLocation} geoLocation\n */\n public setLocation(geoLocation: IGeoLocation): void;\n\n /**\n * override setLocation(lng: number, lat: number): void and\n * setLocation(geoLocation: IGeoLocation) :void\n * @param {number | IGeoLocation} arg1\n * @param {number} arg2\n */\n public setLocation(arg1: number | IGeoLocation, arg2?: number): void {\n console.error('setLocation API已删除');\n // if (typeof arg1 === 'number') { // the first arg is longitude\n // this.setConfig({\n // longitude: arg1,\n // latitude: arg2\n // });\n // } else { // the first arg is IGeoLocation\n // this.setConfig(arg1);\n // }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getOmgid(): string | undefined;\n\n /**\n * @override\n * @inheritDoc\n * @param {GetOmgIdCallback} cb\n */\n public getOmgid(cb: GetOmgIdCallback): void;\n\n /**\n * override methods getOmgid(): string and getOmgid(cb: GetOmgIdCallback): void\n * @param {GetOmgIdCallback} cb\n * @returns {void | string}\n */\n public getOmgid(cb?: GetOmgIdCallback): void | string | undefined {\n const omgId: string = (this.getContext() as IH5Context).omgId || '';\n if (cb) {\n if (omgId) {\n cb(omgId);\n } else {\n this.getOmgIdHandler = cb;\n }\n } else {\n return omgId;\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {GetOmgIdCallback} cb\n */\n public getClientId(cb: GetOmgIdCallback): void {\n this.getOmgid(cb);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IAutoClickCover} cover\n */\n public enableClickAutoTracker(cover: IAutoClickCover, ifChildNode?: boolean): void {\n this.clickedCover = cover;\n this.clickedCoverIsChild = ifChildNode || false;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IAutoClickCover} cover\n */\n public enableTouchAutoTracker(cover: IAutoClickCover, ifChildNode?: boolean): void {\n this.enableClickAutoTracker(cover, ifChildNode);\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IAutoClickCover}\n */\n public getClickedCover(): IAutoClickCover | undefined {\n return this.clickedCover;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public getClickedCoverChild(): boolean | undefined {\n return this.clickedCoverIsChild;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IClickFilter} filter\n */\n public enableClickFilterTracker(filter: IClickFilter): void {\n this.clickedFilter = filter;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IClickFilter} filter\n */\n public enableTouchFilterTracker(filter: IClickFilter): void {\n this.enableClickFilterTracker(filter);\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IClickFilter | undefined}\n */\n public getClickedFilter(): IClickFilter | undefined {\n return this.clickedFilter;\n }\n\n /*======================================== deprecated methods as below ========================================*/\n\n /**\n * @override\n * @inheritDoc\n */\n public disableAutoClick(): void {\n this.setConfig({\n autoClick: false\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public sid(): string {\n return (this.getContext() as IH5Context).viewportId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} appKey\n */\n public setProduct(appKey: string): void {\n this.setConfig({ appKey: appKey });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} channel\n */\n public setChannel(channel: string): void {\n this.setConfig({ attrs: { channel: channel } });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {boolean} mode\n */\n public enableDebugMode(mode: boolean): void {\n /* deprecated and blank method */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public trackPerformance(): void {\n /* deprecated and blank method */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} label\n * @param {number} time\n * @param {string} deprecatedVersion\n * @param {IAttrs} attrs\n * @param {number} sample\n * @returns {Promise}\n */\n public trackTiming(label: string, time: number, deprecatedVersion?: string,\n attrs?: IAttrs, sample?: number): Promise {\n /* deprecated and a simple implements */\n return this.trackEvent('OMGH5CustomTiming');\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} markLabel\n */\n public markTimePoint(markLabel: string): void { /* deprecated and blank method */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {(errorMessage: string, defaultAttrs: ITrackedEventData, attrs: IAttrs) => void} handler\n */\n public onJsError(handler: (errorMessage: string, defaultAttrs: ITrackedEventData, attrs: IAttrs) => void): void {\n /* deprecated and blank method */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string | number} state\n */\n public setState(state: string | number): void { /* deprecated and blank method */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {TrackedHandler} handler\n */\n public addTrackHandler(handler: TrackedHandler): () => void {\n /* deprecated and blank method */\n if (Object.prototype.toString.call(handler) !== '[object Function]') {\n return () => {\n //\n };\n }\n this.trackHandlers.push(handler);\n return () => {\n return this.trackHandlers.splice(this.trackHandlers.findIndex((item) => item === handler), 1);\n };\n }\n}\n","export interface IParamInfo {\n /** 参数的key */\n key: string;\n /** 是否必须若不存在不继续初始化 */\n isRequired: boolean;\n /** 默认值 */\n defaultVal?: string;\n}\n\n/**\n * 获取xpms信息列表\n * -wiki http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=633149060\n */\nexport const XspmParams: IParamInfo[] = [\n { key: 'xbiz', isRequired: false, defaultVal: '' },\n { key: 'prod_key', isRequired: false, defaultVal: '' },\n { key: 'xpsid', isRequired: false, defaultVal: '' },\n { key: 'dchn', isRequired: false, defaultVal: '' },\n { key: 'xoid', isRequired: false, defaultVal: '' },\n // { key: 'openid', isRequired: false, defaultVal: '' },\n // { key: 'unionid', isRequired: false, defaultVal: '' },\n { key: 'uid', isRequired: false, defaultVal: '' },\n { key: 'xenv', isRequired: false, defaultVal: '' },\n // { key: 'lat', isRequired: false, defaultVal: '' },\n // { key: 'lng', isRequired: false, defaultVal: '' },\n // { key: 'cityid', isRequired: false, defaultVal: '' },\n { key: 'xspm_from', isRequired: false, defaultVal: '' },\n { key: 'xpsid_from', isRequired: false, defaultVal: '' },\n { key: 'xpsid_root', isRequired: false, defaultVal: '' },\n { key: 'xpsid_share', isRequired: false, defaultVal: '' }\n];\n\n/**\n * xspm的信息\n */\nexport interface IXSpmInfo {\n a?: string;\n b?: string;\n c?: string;\n d?: string;\n}\n\n/**\n * 公共参数\n */\nexport interface ICommonAttr {\n [key: string]: any;\n}\n","import H5Tracker from '../H5Tracker';\nimport { ITrackerConfiguration } from 'com/didichuxing/tracker/config/ITrackerConfiguration';\nimport { XspmParams, IParamInfo, IXSpmInfo, ICommonAttr } from './type';\nimport AppUtil from 'com/didichuxing/tracker/plugin/utils/AppUtil';\n\nconst ckEvent = 'pub_xspm_resource_ck';\nconst scanEvent = 'pub_xspm_resource_sw';\n\nexport default class XSpmTracker extends H5Tracker {\n\n /**\n * 标识可以使用xspm的内容\n */\n public canUseXspm: boolean = true;\n\n /**\n * url的参数集合\n */\n private urlParams: { [key: string]: string } = {};\n\n /**\n * 页面的公共属性\n */\n private commonAttrs: ICommonAttr = {};\n\n /**\n * 位置信息\n */\n private xSpmInfo: IXSpmInfo = {};\n\n /**\n * @constructor\n * @param {ITrackerConfiguration} config\n */\n constructor(config: ITrackerConfiguration = {}) {\n super(config);\n /**\n * xspm的参数截取\n */\n this.getUrlParams();\n /**\n * 合并参数\n */\n this.addXspmAttr();\n }\n\n private getHashParam = (): string => {\n let hashParam: string = '';\n const hasUrl: string = location.href.split('#')[1] || '';\n if (hasUrl.indexOf('?') !== -1) {\n // 获取hash后的参数\n hashParam = `${hasUrl.split('?')[1]}&`;\n }\n return hashParam;\n }\n\n /**\n * 获取url的参数\n * @param name\n * @returns\n */\n private getUrlParams = (): any => {\n /**\n * 处理所有需要获取的参数\n */\n const paramMap: { [key: string]: IParamInfo } = {};\n // 将url的参数设置默认值\n XspmParams.forEach(d => {\n if (d.defaultVal !== undefined && !this.urlParams[d.key]) {\n this.urlParams[d.key] = d.defaultVal;\n }\n paramMap[d.key] = d;\n });\n let search: string = '';\n if (location.search) {\n search = location.search.split('?')[1] || '';\n }\n if (location.href.indexOf('#') !== -1) {\n search = this.getHashParam() + search;\n }\n const searchItems: string[] = search.replace(/^\\?/, '').split('&');\n for (let i: number = 0, j: number = searchItems.length; i < j; ++i) {\n const [key, val]: string[] = searchItems[i].split('=');\n if (paramMap[key]) {\n this.urlParams[key] = val;\n }\n }\n if (this.urlParams['prod_key']) {\n if (!this.xSpmInfo.a) {\n this.xSpmInfo.a = this.urlParams['prod_key'];\n }\n }\n if (this.urlParams.xoid) {\n const context = this.getContext();\n Object.assign(context, {\n omgId: this.urlParams.xoid\n });\n }\n }\n /**\n * mpx的page的属性\n */\n public setAttrs = (attrs: ICommonAttr, replace?: boolean) => {\n Object.assign(this.commonAttrs, attrs);\n if (replace) {\n this.commonAttrs = attrs;\n }\n }\n /**\n * 上报曝光事件\n */\n public sendXspmScan = (attrs: ICommonAttr = {}, xspm: IXSpmInfo = {}) => {\n this.xSpmInfo = Object.assign({\n a: this.xSpmInfo.a\n }, xspm);\n const xspmPath = this.formatSpmPath(this.xSpmInfo);\n const mergeAttrs = Object.assign({ xspm: xspmPath }, this.urlParams, this.xSpmInfo, this.commonAttrs, attrs);\n return this.trackEvent(scanEvent, mergeAttrs);\n }\n /**\n * 上报点击事件\n */\n public sendXspmClick = (attrs: ICommonAttr = {}, xspm: IXSpmInfo = {}) => {\n this.xSpmInfo = Object.assign({\n a: this.xSpmInfo.a\n }, xspm);\n const xspmPath = this.formatSpmPath(this.xSpmInfo);\n const mergeAttrs = Object.assign({ xspm: xspmPath }, this.urlParams, this.xSpmInfo, this.commonAttrs, attrs);\n return this.trackEvent(ckEvent, mergeAttrs);\n }\n /**\n * 获取spm信息\n */\n public getXSpmInfo = () => {\n return this.xSpmInfo;\n }\n /**\n * 同步获取当前oid\n * - 在native下会有概率获取的是web端的\n */\n public getXoid = () => {\n return this.getContext().omgId;\n }\n /**\n * 获取oid, 在native未同步完成oid的情况下会返回异步的promise\n */\n public getXoidAsync = (): string | Promise => {\n const context = this.getContext();\n if (context.isInNative) {\n if (context.nativeDone) {\n return context.omgId || '';\n }\n return new Promise((res) => {\n AppUtil.fetchAppOmgId().then((oid) => {\n res(oid);\n });\n // 1s加入兜底操作\n setTimeout(() => {\n res(context.omgId || '');\n }, 1000);\n });\n }\n return context.omgId || '';\n }\n public getAttrs = (eventId: string, attrs: any) => {\n return Object.assign({}, this.urlParams, this.commonAttrs, attrs);\n }\n private getXspmAttrs = () => {\n return Object.assign({}, this.urlParams, this.commonAttrs);\n }\n /**\n * 格式化spm信息\n * - 名称有问题暂\n */\n public formateSpmPath = (spmInfo: IXSpmInfo) => {\n console.warn('请使用formatSpmPath');\n return this.formatSpmPath(spmInfo);\n }\n /**\n * 格式化spm信息\n */\n public formatSpmPath = (spmInfo: IXSpmInfo) => {\n const realPathInfo: string[] = [\n spmInfo.a || 'none',\n spmInfo.b || 'none',\n spmInfo.c || 'none',\n spmInfo.d || 'none'\n ];\n return realPathInfo.join('.');\n }\n /**\n * @override\n * 丰富上报的埋点数据\n */\n public addXspmAttr() {\n this.addTrackHandler(this.getAttrs);\n // context加上获取xspm属性\n const context = this.getContext();\n Object.assign(context, {\n getXspmAttrs: this.getXspmAttrs\n });\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @since v2.0\n * @file The class of OmegaTracker\n */\n\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport { ITrackerConfiguration } from 'com/didichuxing/tracker/config/ITrackerConfiguration';\nimport H5Tracker from 'com/didichuxing/tracker/h5/Xspm/XSpmTracker';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\nexport default class OmegaTracker {\n\n /**\n * 生成tracker对象。\n * 兼容\n * @param {ITrackerConfiguration} config\n * @returns {ITracker}\n */\n public static getTracker(config: ITrackerConfiguration): ITracker {\n if (!(config && config.appKey && GlobalUtil.isEmptyString(config.appKey))\n && (config && config.productName && GlobalUtil.isEmptyString(config.productName))) {\n Object.assign(config, { appKey: config.productName });\n }\n if (config && config.appKey && GlobalUtil.isEmptyString(config.appKey)) {\n // 避免小数点造成多层对象访问\n const appKeyVar = config.appKey.replace(/\\./g, '_');\n const OMG_INSTANTIATION_NAME_VAR = `${H5Tracker.OMG_INSTANTIATION_NAME}_${appKeyVar}__`;\n\n if (!(window as any)[`${OMG_INSTANTIATION_NAME_VAR}`]) {\n // 如果当前没有这个对象 说明 这个APPKEY的SDK实例没有被初始化 ,可以直接初始化并且返回实例。\n const h5Tracker: ITracker = new H5Tracker(config);\n h5Tracker.execute();\n (window as any)[`${OMG_INSTANTIATION_NAME_VAR}`] = h5Tracker;\n h5Tracker.getTracker = this.getTracker;\n return h5Tracker;\n } else {\n if ((window as any)[`${OMG_INSTANTIATION_NAME_VAR}`].getContext().version\n === H5Tracker.OMG_VERSION) {\n // 版本相同直接返回之前的实例\n return (window as any)[`${OMG_INSTANTIATION_NAME_VAR}`];\n } else {\n // 版本不同做提示 并返回之前的实例\n console.warn('[Omega]相同appKey(' + config.appKey + ')实例化多个版本SDK,请检查!当前版本:' +\n (window as any)[`${OMG_INSTANTIATION_NAME_VAR}`].getContext().version +\n '新实例化版本:' + H5Tracker.OMG_VERSION);\n return (window as any)[`${OMG_INSTANTIATION_NAME_VAR}`];\n }\n }\n } else {\n throw new Error('[Omega]初始化必须带有appKey 参数');\n }\n\n }\n}\n","/**\n * 点击自动埋点\n */\n\nimport OmegaTracker from 'src/com/didichuxing/tracker/h5/Xspm';\n\n(function(global) {\n global.Omega = global.Omega || {};\n if (!global.Omega.trackEvent || typeof global.Omega.trackEvent !== 'function') { // 没有实例化前,Omega为配置。\n global.Omega = OmegaTracker.getTracker(global.Omega);\n }\n})(window);\n"],"names":["_fails","exec","e","_domCreate","it","is","document","createElement","_toPrimitive","S","isObject","fn","val","toString","call","valueOf","TypeError","$export","type","name","source","key","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","exports","core","expProto","PROTOTYPE","target","global","undefined","has","ctx","C","a","b","c","this","arguments","length","apply","Function","virtual","R","hide","_cof","slice","_toLength","min","toInteger","_sharedKey","shared","uid","_objectKeysInternal","object","names","O","toIObject","i","result","IE_PROTO","push","arrayIndexOf","_toObject","Object","defined","IS_INCLUDES","_global","commonjsHelpers.createCommonjsModule","module","window","Math","self","__g","_core","version","__e","_aFunction","_ctx","that","aFunction","_isObject","_anObject","_descriptors","require$$0","defineProperty","get","_ie8DomDefine","require$$1","require$$2","dP","_objectDp","f","Attributes","anObject","toPrimitive","IE8_DOM_DEFINE","value","_propertyDesc","bitmap","enumerable","configurable","writable","_hide","createDesc","hasOwnProperty","_has","_export","U","_iobject","propertyIsEnumerable","cof","split","_defined","_toIobject","IObject","ceil","floor","_toInteger","isNaN","max","_shared","SHARED","store","mode","copyright","id","px","random","_uid","concat","$this","el","fromIndex","toLength","index","_enumBugKeys","_objectKeys","keys","$keys","enumBugKeys","_objectGops","getOwnPropertySymbols","_objectPie","$assign","assign","_objectAssign","A","Symbol","K","forEach","k","join","T","toObject","aLen","getSymbols","gOPS","isEnum","pIE","getKeys","j","DESCRIPTORS","_extends_1","_extends","_Object$assign","prototype","classCallCheck","instance","Constructor","$Object","desc","_defineProperties","props","descriptor","_Object$defineProperty","Empty","_invoke","args","un","createClass","protoProps","staticProps","_objectDps","defineProperties","Properties","_html","documentElement","createDict","iframe","style","display","appendChild","src","iframeDocument","contentWindow","open","write","lt","close","_objectCreate","create","dPs","arraySlice","factories","_bind","bind","partArgs","bound","construct","len","n","invoke","rConstruct","Reflect","NEW_TARGET_BUG","fails","ARGS_BUG","Target","newTarget","$args","proto","TO_STRING","_redefine","_iterators","_wks","USE_SYMBOL","def","TAG","_setToStringTag","tag","stat","IteratorPrototype","ObjectProto","_objectGpo","getPrototypeOf","constructor","ITERATOR","BUGGY","VALUES","returnThis","_iterDefine","Base","NAME","next","DEFAULT","IS_SET","FORCED","getMethod","kind","setToStringTag","methods","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","Iterators","values","redefine","$at","pos","s","String","l","charCodeAt","charAt","_iterStep","iterated","_t","_i","done","point","TO_STRING_TAG","Array","_k","step","Arguments","DOMIterables","Collection","_classof","tryGet","ARG","callee","_speciesConstructor","D","SPECIES","run","queue","listener","event","data","defer","ArrayProto","core_getIteratorMethod","getIteratorMethod","classof","_forOf","BREAK","RETURN","iterable","iterator","iterFn","getIterFn","ret","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","ONREADYSTATECHANGE","_task","nextTick","now","port","channel","port2","port1","onmessage","postMessage","addEventListener","importScripts","cel","html","removeChild","setTimeout","set","clear","macrotask","Observer","MutationObserver","WebKitMutationObserver","Promise","isNode","PromiseCapability","resolve","reject","promise","$$resolve","$$reject","_promiseResolve","x","promiseCapability","newPromiseCapability","_newPromiseCapability","_perform","v","navigator","_userAgent","userAgent","SAFE_CLOSING","head","last","notify","toggle","node","task","microtask","flush","standalone","then","createTextNode","observe","characterData","parent","domain","exit","enter","empty","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","PROMISE","versions","v8","$Promise","newPromiseCapabilityModule","USE_NATIVE","FakePromise","PromiseRejectionEvent","indexOf","isThenable","isReject","chain","_n","_c","_v","ok","_s","reaction","exited","handler","fail","_h","emit","onrejectionhandled","reason","console","unhandled","isUnhandled","perform","onunhandledrejection","error","_a","$reject","_d","_w","$resolve","wrapper","KEY","executor","anInstance","forbiddenField","err","safe","require$$3","onFulfilled","onRejected","speciesConstructor","catch","require$$6","r","capability","promiseResolve","skipClosing","arr","iter","require$$7","all","remaining","forOf","$index","alreadyCalled","race","finally","onFinally","isFunction","try","callbackfn","_isArray","isArray","arg","arrayWithHoles","_Array$isArray","getIterator","iterableToArrayLimit","_arr","_e","_getIterator","nonIterableRest","check","slicedToArray","gOPD","getOwnPropertyDescriptor","_objectGopd","_setProto","setPrototypeOf","test","buggy","__proto__","_setPrototypeOf","o","p","_Object$setPrototypeOf","_wksDefine","$Symbol","wksExt","wrap","sym","AllSymbols","_create","$defineProperties","enumKeys","$defineProperty","$propertyIsEnumerable","E","OPSymbols","HIDDEN","$getOwnPropertyDescriptor","$getOwnPropertyNames","gOPN","META","$getOwnPropertySymbols","IS_OP","inherits","subClass","superClass","_Object$create","_wksExt","_meta","setMeta","setDesc","w","isExtensible","FREEZE","preventExtensions","meta","NEED","fastKey","getWeak","onFreeze","_enumKeys","symbols","hiddenKeys","_objectGopn","getOwnPropertyNames","windowNames","_objectGopnExt","$GOPD","$DP","gOPNExt","$JSON","JSON","_stringify","stringify","wks","TO_PRIMITIVE","SymbolRegistry","$GOPS","QObject","setter","findChild","setSymbolDesc","$fails","protoDesc","isSymbol","$set","es6Symbols","wellKnownSymbols","wksDefine","for","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","require$$4","symbol","_typeof_1","_typeof2","obj","_Symbol","_Symbol$iterator","_typeof","assertThisInitialized","ReferenceError","_objectSap","exp","possibleConstructorReturn","$getPrototypeOf","_getPrototypeOf","_Object$getPrototypeOf","_ownKeys","ownKeys","getOwnPropertyDescriptors","getDesc","hasOwn","toPrimitiveSymbol","iteratorSymbol","HashMap","functionPrototype","usePolyfill","_Map","_Set","Metadata","root","commonjsHelpers.commonjsGlobal","exporter","makeExporter","GetOrCreateMetadataMap","Create","targetMetadata","IsUndefined","metadataMap","OrdinaryHasOwnMetadata","MetadataKey","OrdinaryGetOwnMetadata","OrdinaryDefineOwnMetadata","MetadataValue","OrdinaryOwnMetadataKeys","method","GetMethod","IsCallable","IsObject","GetIterator","IteratorStep","nextValue","Type","IsNull","ToPrimitive","input","PreferredType","hint","exoticToPrim","OrdinaryToPrimitive","toString_1","toString_2","ToPropertyKey","argument","IsArray","IsConstructor","V","func","OrdinaryGetPrototypeOf","prototypeProto","MakeDictionary","__","previous","supportsSymbol","supportsCreate","supportsProto","downLevel","map","env","Map","cacheSentinel","arraySentinel","MapIterator","selector","_index","_keys","_values","_selector","throw","return","_cacheKey","_cacheIndex","_find","delete","size","getKey","getValue","getEntry","insert","_","CreateMapPolyfill","Set","_map","add","CreateSetPolyfill","WeakMap","UUID_SIZE","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","Uint8Array","FillRandomBytes","crypto","getRandomValues","msCrypto","GenRandomBytes","offset","byte","toLowerCase","CreateUUID","buffer","CreateWeakMapPolyfill","decorators","propertyKey","attributes","decorated","decorator","DecorateConstructor","DecorateProperty","metadataKey","metadataValue","IsPropertyKey","OrdinaryHasMetadata","OrdinaryGetMetadata","OrdinaryMetadataKeys","parentKeys","ownKeys_1","parentKeys_1","performance","timing","loadEventEnd","readyState","str","replace","mesageEvent","createEvent","initMessageEvent","dispatchEvent","location","protocol","tracker","pluginConstrs","plugins","pluginConstr","_this","host","cdnNamespace","getContext","uploadHost","GlobalUtil","getProtocol","getExtraPluginsUrlName","methodName","params","webkit","messageHandlers","tel","countryCallingCode","_JSON$stringify","userId","cityId","eventId","eventLabel","attrJson","sysJson","exJson","cb","getInfoHandler","evt","oid","removeEventListener","getInfo","res","info","href","OmegaSDK","AppUtil","inWKWebview","omegaSDK","WKWebviewOmegaSDK","context","appOmegaSDK","getOmegaSDK","parse","AH5EnvConfigSync","disableBridge","inEnv","syncNativeOid","isInNative","fetchAppOmgId","omgId","nativeDone","byteToHex","substr","buf","bth","UUID","getByte2Hex","rnds","bytesToUuid","OMEGA_ID","items","cookie","trim","getOmgIdFromCookie","getOidFromLocal","v4","useLocalOid","saveOidToLocal","saveOidToCookie","_Promise","localStorage","getItem","setItem","expiredDate","Date","setFullYear","getFullYear","unique","thisResolve","prom","setOpenIdHandler","setOpenId","openid","rawSerialized","cbObjName","ReportCallbackUtil","OMG_CALLBACK_OBJ_NAME","cbkMethodName","getTime","reportCallback","cbArg","bn","OMG_EVENT_BLACKLIST_NAME","eventid","prop","splice","receiver","EventStatus","superPropBase","property","_get","_Reflect$get","base","_Object$getOwnPropertyDescriptor","attrs","trackerVersion","appKey","productName","url","modifyAppKey","noUrlParam","formatUrl","getType","timestamp","viewportId","appName","appVersion","osType","osVersion","userName","bizId","locale","countyId","utcOffset","getAttrs","from","getFrom","latitude","longitude","telephone","_label","eventData","getData","dataKeyMap","getDataKeyMap","dispatchOmgLog","newkeys","_Object$keys","sort","kvs","attrsJsonStr","serializeAttrs2JsonStr","encodeURIComponent","serializedAttrs","attrsKeyMap","getAttrsKeyMap","thisAttrs","openId","getVersion","isEmptyString","AEvent","prefix","SequencedEvent","OMG_SEQUENCE_NAME_PREFIX","suffix","OMG_SEQUENCE_NAME_SUFFIX","sequence","NORMAL","PluginUtils","plugin","contains","install","getName","removePlugin","pluginItem","pop","uninstall","installed","FAILED","TIMEOUT","Error","timeoutHandler","clearTimeout","TimeoutEvent","timeout","setUserId","setTelephone","setCityId","Number","trackEventEx","label","serialize2JsonStrWithoutAttrs","FailedEvent","EVENT_ID_PAGE_INIT","BLOCKED","UPLOAD_DOMAIN_LOCAL","UPLOAD_DOMAIN_GLOBAL","UPLOAD_DOMAIN_RU","UA_BROWSER_REGEXPS","uaRegExps","UA_OS_REGEXPS","AppKey","breadcrumbListName","getBreadcrumbListName","initialzedContext","uaRegExpNameItems","ua","item","idx","regExpExecArray","wx","miniProgram","getEnv","miniprogram","my","appInfo","getBrowserRegExpsInUA","osInfo","getOSRegExpsInUA","getDeviceInfo","getUploadHost","eventArgs","EVENT_ID_CLICK","serialize","trackedEvent","sliceBreadcrumbList","some","BlockedEvent","compatibleCallback","finalEvent","dispatchTrackerEventUnderWindow","generateEvent","addTrackerEventToBreadcrumb","getEventReportor","reportEvent","AReportingStrategyPlugin","disabledInit","xspmAttrs","getXspmAttrs","report","PLUGIN_NAME_PAGE_INIT","OMGH5PageInitEvent","AOMGH5PageInitPlugin","AppEventReportor","uniq","DataQueueSet","getInstance","unreportedEvents","reportEventsAfterLoad","unreportedItem","shift","reportEventImmediately","errorreportedEvents","removeAll","hash","encodeHash","forbidReportEventListKey","AH5EventReportor","forbidReportEventList","startForbidReport","reportForBidEvent","forbidReport","ts","cId","addForbidEvent","onChangeForbidFalse","URL","_this2","reportPath","xhr","XMLHttpRequest","cid","ontimeout","setRequestHeader","getOmgci","send","EncodeHash","encodeHashUrl","onreadystatechange","status","response","responseText","state","code","msg","onerror","PostEventReportor","EVENT_ID_OMG_LOG","reportLog","PLUGIN_NAME_OMGLOG","log","OMGH5LogEvent","AOMGH5LogPlugin","PROTO","DEFAULT_LOCAL_CONFIG_URL","DEFAULT_GLOBAL_CONFIG_URL","DEFAULT_DE_CONFIG_URL","DEFAULT_RLAB_CONFIG_URL","propertyName","getPluginConllection","holdMethod","config","attr","methodHolderChain","beforeErrorList","getDefaultContext","extraConfigsUrl","getRlabDefaultConfigUrl","getDeDefaultConfigUrl","getGlobalDefaultConfigUrl","getLocalDefaultConfigUrl","pluginCollection","PluginSet","pagehideHandler","initAsyncPluginCollection","initSyncPluginCollection","setBeforeError","setConfig","OMG_UWID_NAME","getTimezoneOffset","isFirstSw","trackEvent","EVENT_ID_PAGE_LEAVE","proxyConsoleError","fastLoad","isLoaded","t","autoConsoleError","errEvent","message","stack","OMGH5PageInitPlugin","OMGH5LogPlugin","OMGAppH5PageInitPlugin","globalVarName","callback","isTimeout","scriptEle","onload","crossOrigin","h5DefaultPluginsConstrs","getH5DefaultPluginsConstrs","appH5DefaultPluginsConstrs","getAppH5DefaultPluginsConstrs","AppH5EnvConfig","UniqueH5EnvConfig","NormalH5EnvConfig","pluginsUrl","loadScript","H5Tracker","OMG_ASYNC_PLUGINS_CONSTRS_NAME","methodHolderChainIsDone","PluginConstr","loadPluginsBefore","afterAsyncPluginsLoad","NonH5Plugin","envConfig","getPlugins","getExtraPluginsUrl","loadPluginsByUrl","extraPlugins","getPluginsUrl","_this3","defaultConfigs","_this4","getDefaultConfigs","OMG_ASYNC_CONFIGS_NAME","configs","afterAsyncConfigs1","afterAsyncConfigs2","validate","_this5","beforeDeliver","_this6","register","getCurrentEnvConfig","loadPlugins","_this7","rtnValue","getOmgIdHandler","toArray","execute","unregisterAll","configsName","pluginConstrsName","pluginsConstrs","eventBlacklist","init","newCallback","newLabel","newAttrs","argValue","argType","trackHandlers","mergeTrackHandler","creatInfo","parsedAttr","trackError","fixEventArgs","reportCustomEvent","trackEventByPlugin","PLUGIN_NAME_CUSTOM","PLUGIN_NAME_PAGE_VIEW","EVENT_ID_PAGE_VIEW","PLUGIN_NAME_ERROR","EVENT_ID_ERROR","pluginName","pluginReports","pluginReportItem","events","arg1","arg2","getOmgid","cover","ifChildNode","clickedCover","clickedCoverIsChild","enableClickAutoTracker","filter","clickedFilter","enableClickFilterTracker","autoClick","time","deprecatedVersion","sample","markLabel","_this8","findIndex","XspmParams","MethodHoldAsync","isRequired","defaultVal","hashParam","hasUrl","paramMap","search","d","urlParams","searchItems","getHashParam","xSpmInfo","xoid","commonAttrs","xspmPath","formatSpmPath","mergeAttrs","xspm","spmInfo","warn","getUrlParams","addXspmAttr","addTrackHandler","OMG_INSTANTIATION_NAME_VAR","appKeyVar","OMG_INSTANTIATION_NAME","OMG_VERSION","h5Tracker","getTracker","Omega","OmegaTracker"],"mappings":"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"}