zoukankan      html  css  js  c++  java
  • 手动编译ts的经过

    动机

    以前写ts或者es6,都是用在脚手架搭建的项目中,比如vue和react,当时当我识图写一个ts的demo的,我还要创建一个完整的vue或者react项目?明显不合适,那就要研究一下如何手动搭建一套编译调试环境

    源代码
    src/index.ts

    /*因为编译后的代码包含es6新增api,比如下边的includes,有浏览器可能不支持,故而需要引入垫片
    这里可以选择core-js,也可以ts-polyfill,目的都是一样的*/
    import 'core-js'; 
    
    //具体目标
    class Utils {
        protected cname:string = 'Utils';
        public test(): void{
            [1,2,3].includes(2)
        }          
    }
    (window as any).subject = new Utils(); //方便页面使用

    方案1:tsc编译+手动做垫片+webpack处理模块

    使用tsc编译
    tsconfig.json配置如下

    {
      "compilerOptions": {
        "target": "es5", /* 编译的目标是什么版本的 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
        "module": "commonjs",/* 编译后模块化类型 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
        "lib": [ //编译过程中需要引入的库文件的列表。
          "es5",
          "es2016.array.include",
          "dom" //因为ts内用到了window
        ], 
        "strict": true,
        "esModuleInterop": true
      }
    }

    运行tsc命令后,编译后的代码src/index.js

    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    // import 'core-js';
    require("ts-polyfill/lib/es2016-array-include");
    //具体目标
    var Utils = /** @class */ (function () {
        function Utils() {
            this.cname = 'Utils';
        }
        Utils.prototype.test = function () {
            [1, 2, 3].includes(2);
        };
        return Utils;
    }());
    window.subject = new Utils(); //方便页面使用
    View Code

    可以从代码中看到,tsc只是将ts代码编译js代码。有两个问题仍然需要我们处理,
    他不管浏览器对编译后的js代码的兼容如何,所以我们需要手动做垫片,所以我们在入口文件src/index.ts处已经引入了coreJs做了垫片
    然后他不处理模块化代码部分,比如import,export。目前node直接使用没问题,但是如果放在浏览器,2019年年底浏览器均不支持,所以需要webpack进行模块化处理

    我们将项目中安装webpack,并添加配置文件
    npm install --save-dev webpack webpack-cli

    const path = require('path');
    
    module.exports = {
      mode: 'development',
      entry: './src/index.js',
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'main.js'
      }
    };

    然后通过webpack命令webpack --mode development --progress来打包处理模块化,编译成功后的代码会很长,这里就不直接展开了。

    /******/ (function(modules) { // webpackBootstrap
    /******/     // The module cache
    /******/     var installedModules = {};
    /******/
    /******/     // The require function
    /******/     function __webpack_require__(moduleId) {
    /******/
    /******/         // Check if module is in cache
    /******/         if(installedModules[moduleId]) {
    /******/             return installedModules[moduleId].exports;
    /******/         }
    /******/         // Create a new module (and put it into the cache)
    /******/         var module = installedModules[moduleId] = {
    /******/             i: moduleId,
    /******/             l: false,
    /******/             exports: {}
    /******/         };
    /******/
    /******/         // Execute the module function
    /******/         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
    /******/
    /******/         // Flag the module as loaded
    /******/         module.l = true;
    /******/
    /******/         // Return the exports of the module
    /******/         return module.exports;
    /******/     }
    /******/
    /******/
    /******/     // expose the modules object (__webpack_modules__)
    /******/     __webpack_require__.m = modules;
    /******/
    /******/     // expose the module cache
    /******/     __webpack_require__.c = installedModules;
    /******/
    /******/     // define getter function for harmony exports
    /******/     __webpack_require__.d = function(exports, name, getter) {
    /******/         if(!__webpack_require__.o(exports, name)) {
    /******/             Object.defineProperty(exports, name, { enumerable: true, get: getter });
    /******/         }
    /******/     };
    /******/
    /******/     // define __esModule on exports
    /******/     __webpack_require__.r = function(exports) {
    /******/         if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
    /******/             Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
    /******/         }
    /******/         Object.defineProperty(exports, '__esModule', { value: true });
    /******/     };
    /******/
    /******/     // create a fake namespace object
    /******/     // mode & 1: value is a module id, require it
    /******/     // mode & 2: merge all properties of value into the ns
    /******/     // mode & 4: return value when already ns object
    /******/     // mode & 8|1: behave like require
    /******/     __webpack_require__.t = function(value, mode) {
    /******/         if(mode & 1) value = __webpack_require__(value);
    /******/         if(mode & 8) return value;
    /******/         if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
    /******/         var ns = Object.create(null);
    /******/         __webpack_require__.r(ns);
    /******/         Object.defineProperty(ns, 'default', { enumerable: true, value: value });
    /******/         if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
    /******/         return ns;
    /******/     };
    /******/
    /******/     // getDefaultExport function for compatibility with non-harmony modules
    /******/     __webpack_require__.n = function(module) {
    /******/         var getter = module && module.__esModule ?
    /******/             function getDefault() { return module['default']; } :
    /******/             function getModuleExports() { return module; };
    /******/         __webpack_require__.d(getter, 'a', getter);
    /******/         return getter;
    /******/     };
    /******/
    /******/     // Object.prototype.hasOwnProperty.call
    /******/     __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
    /******/
    /******/     // __webpack_public_path__
    /******/     __webpack_require__.p = "";
    /******/
    /******/
    /******/     // Load entry module and return exports
    /******/     return __webpack_require__(__webpack_require__.s = "./src/index.js");
    /******/ })
    /************************************************************************/
    /******/ ({
    
    /***/ "./node_modules/core-js/es/array/includes.js":
    /*!***************************************************!*
      !*** ./node_modules/core-js/es/array/includes.js ***!
      ***************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("__webpack_require__(/*! ../../modules/es.array.includes */ "./node_modules/core-js/modules/es.array.includes.js");
    var entryUnbind = __webpack_require__(/*! ../../internals/entry-unbind */ "./node_modules/core-js/internals/entry-unbind.js");
    
    module.exports = entryUnbind('Array', 'includes');
    
    
    //# sourceURL=webpack:///./node_modules/core-js/es/array/includes.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/es/typed-array/includes.js":
    /*!*********************************************************!*
      !*** ./node_modules/core-js/es/typed-array/includes.js ***!
      *********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("__webpack_require__(/*! ../../modules/es.typed-array.includes */ "./node_modules/core-js/modules/es.typed-array.includes.js");
    
    
    //# sourceURL=webpack:///./node_modules/core-js/es/typed-array/includes.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/a-function.js":
    /*!******************************************************!*
      !*** ./node_modules/core-js/internals/a-function.js ***!
      ******************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = function (it) {
      if (typeof it != 'function') {
        throw TypeError(String(it) + ' is not a function');
      } return it;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/a-function.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/a-possible-prototype.js":
    /*!****************************************************************!*
      !*** ./node_modules/core-js/internals/a-possible-prototype.js ***!
      ****************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
    
    module.exports = function (it) {
      if (!isObject(it) && it !== null) {
        throw TypeError("Can't set " + String(it) + ' as a prototype');
      } return it;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/a-possible-prototype.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/add-to-unscopables.js":
    /*!**************************************************************!*
      !*** ./node_modules/core-js/internals/add-to-unscopables.js ***!
      **************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
    var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js");
    var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
    
    var UNSCOPABLES = wellKnownSymbol('unscopables');
    var ArrayPrototype = Array.prototype;
    
    // Array.prototype[@@unscopables]
    // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
    if (ArrayPrototype[UNSCOPABLES] == undefined) {
      createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, create(null));
    }
    
    // add a key to Array.prototype[@@unscopables]
    module.exports = function (key) {
      ArrayPrototype[UNSCOPABLES][key] = true;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/add-to-unscopables.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/an-object.js":
    /*!*****************************************************!*
      !*** ./node_modules/core-js/internals/an-object.js ***!
      *****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
    
    module.exports = function (it) {
      if (!isObject(it)) {
        throw TypeError(String(it) + ' is not an object');
      } return it;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/an-object.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/array-buffer-view-core.js":
    /*!******************************************************************!*
      !*** ./node_modules/core-js/internals/array-buffer-view-core.js ***!
      ******************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    eval("
    var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
    var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
    var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
    var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");
    var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
    var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js");
    var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f;
    var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js");
    var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js");
    var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
    var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
    
    var DataView = global.DataView;
    var DataViewPrototype = DataView && DataView.prototype;
    var Int8Array = global.Int8Array;
    var Int8ArrayPrototype = Int8Array && Int8Array.prototype;
    var Uint8ClampedArray = global.Uint8ClampedArray;
    var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;
    var TypedArray = Int8Array && getPrototypeOf(Int8Array);
    var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);
    var ObjectPrototype = Object.prototype;
    var isPrototypeOf = ObjectPrototype.isPrototypeOf;
    
    var TO_STRING_TAG = wellKnownSymbol('toStringTag');
    var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');
    var NATIVE_ARRAY_BUFFER = !!(global.ArrayBuffer && DataView);
    // Fixing native typed arrays in Opera Presto crashes the browser, see #595
    var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';
    var TYPED_ARRAY_TAG_REQIRED = false;
    var NAME;
    
    var TypedArrayConstructorsList = {
      Int8Array: 1,
      Uint8Array: 1,
      Uint8ClampedArray: 1,
      Int16Array: 2,
      Uint16Array: 2,
      Int32Array: 4,
      Uint32Array: 4,
      Float32Array: 4,
      Float64Array: 8
    };
    
    var isView = function isView(it) {
      var klass = classof(it);
      return klass === 'DataView' || has(TypedArrayConstructorsList, klass);
    };
    
    var isTypedArray = function (it) {
      return isObject(it) && has(TypedArrayConstructorsList, classof(it));
    };
    
    var aTypedArray = function (it) {
      if (isTypedArray(it)) return it;
      throw TypeError('Target is not a typed array');
    };
    
    var aTypedArrayConstructor = function (C) {
      if (setPrototypeOf) {
        if (isPrototypeOf.call(TypedArray, C)) return C;
      } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {
        var TypedArrayConstructor = global[ARRAY];
        if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {
          return C;
        }
      } throw TypeError('Target is not a typed array constructor');
    };
    
    var exportProto = function (KEY, property, forced) {
      if (!DESCRIPTORS) return;
      if (forced) for (var ARRAY in TypedArrayConstructorsList) {
        var TypedArrayConstructor = global[ARRAY];
        if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {
          delete TypedArrayConstructor.prototype[KEY];
        }
      }
      if (!TypedArrayPrototype[KEY] || forced) {
        redefine(TypedArrayPrototype, KEY, forced ? property
          : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);
      }
    };
    
    var exportStatic = function (KEY, property, forced) {
      var ARRAY, TypedArrayConstructor;
      if (!DESCRIPTORS) return;
      if (setPrototypeOf) {
        if (forced) for (ARRAY in TypedArrayConstructorsList) {
          TypedArrayConstructor = global[ARRAY];
          if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {
            delete TypedArrayConstructor[KEY];
          }
        }
        if (!TypedArray[KEY] || forced) {
          // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable
          try {
            return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);
          } catch (error) { /* empty */ }
        } else return;
      }
      for (ARRAY in TypedArrayConstructorsList) {
        TypedArrayConstructor = global[ARRAY];
        if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
          redefine(TypedArrayConstructor, KEY, property);
        }
      }
    };
    
    for (NAME in TypedArrayConstructorsList) {
      if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;
    }
    
    // WebKit bug - typed arrays constructors prototype is Object.prototype
    if (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {
      // eslint-disable-next-line no-shadow
      TypedArray = function TypedArray() {
        throw TypeError('Incorrect invocation');
      };
      if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {
        if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);
      }
    }
    
    if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {
      TypedArrayPrototype = TypedArray.prototype;
      if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {
        if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);
      }
    }
    
    // WebKit bug - one more object in Uint8ClampedArray prototype chain
    if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {
      setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);
    }
    
    if (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {
      TYPED_ARRAY_TAG_REQIRED = true;
      defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {
        return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;
      } });
      for (NAME in TypedArrayConstructorsList) if (global[NAME]) {
        createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);
      }
    }
    
    // WebKit bug - the same parent prototype for typed arrays and data view
    if (NATIVE_ARRAY_BUFFER && setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {
      setPrototypeOf(DataViewPrototype, ObjectPrototype);
    }
    
    module.exports = {
      NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER,
      NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,
      TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,
      aTypedArray: aTypedArray,
      aTypedArrayConstructor: aTypedArrayConstructor,
      exportProto: exportProto,
      exportStatic: exportStatic,
      isView: isView,
      isTypedArray: isTypedArray,
      TypedArray: TypedArray,
      TypedArrayPrototype: TypedArrayPrototype
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/array-buffer-view-core.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/array-includes.js":
    /*!**********************************************************!*
      !*** ./node_modules/core-js/internals/array-includes.js ***!
      **********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
    var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
    var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");
    
    // `Array.prototype.{ indexOf, includes }` methods implementation
    var createMethod = function (IS_INCLUDES) {
      return function ($this, el, fromIndex) {
        var O = toIndexedObject($this);
        var length = toLength(O.length);
        var index = toAbsoluteIndex(fromIndex, length);
        var value;
        // Array#includes uses SameValueZero equality algorithm
        // eslint-disable-next-line no-self-compare
        if (IS_INCLUDES && el != el) while (length > index) {
          value = O[index++];
          // eslint-disable-next-line no-self-compare
          if (value != value) return true;
        // Array#indexOf ignores holes, Array#includes - not
        } else for (;length > index; index++) {
          if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
        } return !IS_INCLUDES && -1;
      };
    };
    
    module.exports = {
      // `Array.prototype.includes` method
      // https://tc39.github.io/ecma262/#sec-array.prototype.includes
      includes: createMethod(true),
      // `Array.prototype.indexOf` method
      // https://tc39.github.io/ecma262/#sec-array.prototype.indexof
      indexOf: createMethod(false)
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/array-includes.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/bind-context.js":
    /*!********************************************************!*
      !*** ./node_modules/core-js/internals/bind-context.js ***!
      ********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js");
    
    // optional / simple context binding
    module.exports = function (fn, that, length) {
      aFunction(fn);
      if (that === undefined) return fn;
      switch (length) {
        case 0: return function () {
          return fn.call(that);
        };
        case 1: return function (a) {
          return fn.call(that, a);
        };
        case 2: return function (a, b) {
          return fn.call(that, a, b);
        };
        case 3: return function (a, b, c) {
          return fn.call(that, a, b, c);
        };
      }
      return function (/* ...args */) {
        return fn.apply(that, arguments);
      };
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/bind-context.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/classof-raw.js":
    /*!*******************************************************!*
      !*** ./node_modules/core-js/internals/classof-raw.js ***!
      *******************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("var toString = {}.toString;
    
    module.exports = function (it) {
      return toString.call(it).slice(8, -1);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/classof-raw.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/classof.js":
    /*!***************************************************!*
      !*** ./node_modules/core-js/internals/classof.js ***!
      ***************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
    var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
    
    var TO_STRING_TAG = wellKnownSymbol('toStringTag');
    // ES3 wrong here
    var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
    
    // fallback for IE11 Script Access Denied error
    var tryGet = function (it, key) {
      try {
        return it[key];
      } catch (error) { /* empty */ }
    };
    
    // getting tag from ES6+ `Object.prototype.toString`
    module.exports = function (it) {
      var O, tag, result;
      return it === undefined ? 'Undefined' : it === null ? 'Null'
        // @@toStringTag case
        : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag
        // builtinTag case
        : CORRECT_ARGUMENTS ? classofRaw(O)
        // ES3 arguments fallback
        : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/classof.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/copy-constructor-properties.js":
    /*!***********************************************************************!*
      !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!
      ***********************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
    var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js");
    var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js");
    var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
    
    module.exports = function (target, source) {
      var keys = ownKeys(source);
      var defineProperty = definePropertyModule.f;
      var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
      for (var i = 0; i < keys.length; i++) {
        var key = keys[i];
        if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
      }
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/copy-constructor-properties.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/correct-prototype-getter.js":
    /*!********************************************************************!*
      !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!
      ********************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
    
    module.exports = !fails(function () {
      function F() { /* empty */ }
      F.prototype.constructor = null;
      return Object.getPrototypeOf(new F()) !== F.prototype;
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/correct-prototype-getter.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/create-non-enumerable-property.js":
    /*!**************************************************************************!*
      !*** ./node_modules/core-js/internals/create-non-enumerable-property.js ***!
      **************************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
    var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
    var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
    
    module.exports = DESCRIPTORS ? function (object, key, value) {
      return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
    } : function (object, key, value) {
      object[key] = value;
      return object;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/create-property-descriptor.js":
    /*!**********************************************************************!*
      !*** ./node_modules/core-js/internals/create-property-descriptor.js ***!
      **********************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = function (bitmap, value) {
      return {
        enumerable: !(bitmap & 1),
        configurable: !(bitmap & 2),
        writable: !(bitmap & 4),
        value: value
      };
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/create-property-descriptor.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/descriptors.js":
    /*!*******************************************************!*
      !*** ./node_modules/core-js/internals/descriptors.js ***!
      *******************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
    
    // Thank's IE8 for his funny defineProperty
    module.exports = !fails(function () {
      return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/descriptors.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/document-create-element.js":
    /*!*******************************************************************!*
      !*** ./node_modules/core-js/internals/document-create-element.js ***!
      *******************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
    
    var document = global.document;
    // typeof document.createElement is 'object' in old IE
    var EXISTS = isObject(document) && isObject(document.createElement);
    
    module.exports = function (it) {
      return EXISTS ? document.createElement(it) : {};
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/document-create-element.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/entry-unbind.js":
    /*!********************************************************!*
      !*** ./node_modules/core-js/internals/entry-unbind.js ***!
      ********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    var bind = __webpack_require__(/*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js");
    
    var call = Function.call;
    
    module.exports = function (CONSTRUCTOR, METHOD, length) {
      return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/entry-unbind.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/enum-bug-keys.js":
    /*!*********************************************************!*
      !*** ./node_modules/core-js/internals/enum-bug-keys.js ***!
      *********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("// IE8- don't enum bug keys
    module.exports = [
      'constructor',
      'hasOwnProperty',
      'isPrototypeOf',
      'propertyIsEnumerable',
      'toLocaleString',
      'toString',
      'valueOf'
    ];
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/enum-bug-keys.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/export.js":
    /*!**************************************************!*
      !*** ./node_modules/core-js/internals/export.js ***!
      **************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f;
    var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
    var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js");
    var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
    var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js");
    var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js");
    
    /*
      options.target      - name of the target object
      options.global      - target is the global object
      options.stat        - export as static methods of target
      options.proto       - export as prototype methods of target
      options.real        - real prototype method for the `pure` version
      options.forced      - export even if the native feature is available
      options.bind        - bind methods to the target, required for the `pure` version
      options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
      options.unsafe      - use the simple assignment of property instead of delete + defineProperty
      options.sham        - add a flag to not completely full polyfills
      options.enumerable  - export as enumerable property
      options.noTargetGet - prevent calling a getter on target
    */
    module.exports = function (options, source) {
      var TARGET = options.target;
      var GLOBAL = options.global;
      var STATIC = options.stat;
      var FORCED, target, key, targetProperty, sourceProperty, descriptor;
      if (GLOBAL) {
        target = global;
      } else if (STATIC) {
        target = global[TARGET] || setGlobal(TARGET, {});
      } else {
        target = (global[TARGET] || {}).prototype;
      }
      if (target) for (key in source) {
        sourceProperty = source[key];
        if (options.noTargetGet) {
          descriptor = getOwnPropertyDescriptor(target, key);
          targetProperty = descriptor && descriptor.value;
        } else targetProperty = target[key];
        FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
        // contained in target
        if (!FORCED && targetProperty !== undefined) {
          if (typeof sourceProperty === typeof targetProperty) continue;
          copyConstructorProperties(sourceProperty, targetProperty);
        }
        // add a flag to not completely full polyfills
        if (options.sham || (targetProperty && targetProperty.sham)) {
          createNonEnumerableProperty(sourceProperty, 'sham', true);
        }
        // extend global
        redefine(target, key, sourceProperty, options);
      }
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/export.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/fails.js":
    /*!*************************************************!*
      !*** ./node_modules/core-js/internals/fails.js ***!
      *************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = function (exec) {
      try {
        return !!exec();
      } catch (error) {
        return true;
      }
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/fails.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/function-to-string.js":
    /*!**************************************************************!*
      !*** ./node_modules/core-js/internals/function-to-string.js ***!
      **************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
    
    module.exports = shared('native-function-to-string', Function.toString);
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/function-to-string.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/get-built-in.js":
    /*!********************************************************!*
      !*** ./node_modules/core-js/internals/get-built-in.js ***!
      ********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var path = __webpack_require__(/*! ../internals/path */ "./node_modules/core-js/internals/path.js");
    var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    
    var aFunction = function (variable) {
      return typeof variable == 'function' ? variable : undefined;
    };
    
    module.exports = function (namespace, method) {
      return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
        : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/get-built-in.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/global.js":
    /*!**************************************************!*
      !*** ./node_modules/core-js/internals/global.js ***!
      **************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {
      return it && it.Math == Math && it;
    };
    
    // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
    module.exports =
      // eslint-disable-next-line no-undef
      check(typeof globalThis == 'object' && globalThis) ||
      check(typeof window == 'object' && window) ||
      check(typeof self == 'object' && self) ||
      check(typeof global == 'object' && global) ||
      // eslint-disable-next-line no-new-func
      Function('return this')();
    
    /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/global.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/has.js":
    /*!***********************************************!*
      !*** ./node_modules/core-js/internals/has.js ***!
      ***********************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("var hasOwnProperty = {}.hasOwnProperty;
    
    module.exports = function (it, key) {
      return hasOwnProperty.call(it, key);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/has.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/hidden-keys.js":
    /*!*******************************************************!*
      !*** ./node_modules/core-js/internals/hidden-keys.js ***!
      *******************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = {};
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/hidden-keys.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/html.js":
    /*!************************************************!*
      !*** ./node_modules/core-js/internals/html.js ***!
      ************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
    
    module.exports = getBuiltIn('document', 'documentElement');
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/html.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/ie8-dom-define.js":
    /*!**********************************************************!*
      !*** ./node_modules/core-js/internals/ie8-dom-define.js ***!
      **********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
    var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
    var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
    
    // Thank's IE8 for his funny defineProperty
    module.exports = !DESCRIPTORS && !fails(function () {
      return Object.defineProperty(createElement('div'), 'a', {
        get: function () { return 7; }
      }).a != 7;
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/ie8-dom-define.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/indexed-object.js":
    /*!**********************************************************!*
      !*** ./node_modules/core-js/internals/indexed-object.js ***!
      **********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
    var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
    
    var split = ''.split;
    
    // fallback for non-array-like ES3 and non-enumerable old V8 strings
    module.exports = fails(function () {
      // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
      // eslint-disable-next-line no-prototype-builtins
      return !Object('z').propertyIsEnumerable(0);
    }) ? function (it) {
      return classof(it) == 'String' ? split.call(it, '') : Object(it);
    } : Object;
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/indexed-object.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/internal-state.js":
    /*!**********************************************************!*
      !*** ./node_modules/core-js/internals/internal-state.js ***!
      **********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js");
    var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
    var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
    var objectHas = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
    var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
    var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
    
    var WeakMap = global.WeakMap;
    var set, get, has;
    
    var enforce = function (it) {
      return has(it) ? get(it) : set(it, {});
    };
    
    var getterFor = function (TYPE) {
      return function (it) {
        var state;
        if (!isObject(it) || (state = get(it)).type !== TYPE) {
          throw TypeError('Incompatible receiver, ' + TYPE + ' required');
        } return state;
      };
    };
    
    if (NATIVE_WEAK_MAP) {
      var store = new WeakMap();
      var wmget = store.get;
      var wmhas = store.has;
      var wmset = store.set;
      set = function (it, metadata) {
        wmset.call(store, it, metadata);
        return metadata;
      };
      get = function (it) {
        return wmget.call(store, it) || {};
      };
      has = function (it) {
        return wmhas.call(store, it);
      };
    } else {
      var STATE = sharedKey('state');
      hiddenKeys[STATE] = true;
      set = function (it, metadata) {
        createNonEnumerableProperty(it, STATE, metadata);
        return metadata;
      };
      get = function (it) {
        return objectHas(it, STATE) ? it[STATE] : {};
      };
      has = function (it) {
        return objectHas(it, STATE);
      };
    }
    
    module.exports = {
      set: set,
      get: get,
      has: has,
      enforce: enforce,
      getterFor: getterFor
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/internal-state.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/is-forced.js":
    /*!*****************************************************!*
      !*** ./node_modules/core-js/internals/is-forced.js ***!
      *****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
    
    var replacement = /#|\.prototype\./;
    
    var isForced = function (feature, detection) {
      var value = data[normalize(feature)];
      return value == POLYFILL ? true
        : value == NATIVE ? false
        : typeof detection == 'function' ? fails(detection)
        : !!detection;
    };
    
    var normalize = isForced.normalize = function (string) {
      return String(string).replace(replacement, '.').toLowerCase();
    };
    
    var data = isForced.data = {};
    var NATIVE = isForced.NATIVE = 'N';
    var POLYFILL = isForced.POLYFILL = 'P';
    
    module.exports = isForced;
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/is-forced.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/is-object.js":
    /*!*****************************************************!*
      !*** ./node_modules/core-js/internals/is-object.js ***!
      *****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = function (it) {
      return typeof it === 'object' ? it !== null : typeof it === 'function';
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/is-object.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/is-pure.js":
    /*!***************************************************!*
      !*** ./node_modules/core-js/internals/is-pure.js ***!
      ***************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = false;
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/is-pure.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/native-symbol.js":
    /*!*********************************************************!*
      !*** ./node_modules/core-js/internals/native-symbol.js ***!
      *********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
    
    module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
      // Chrome 38 Symbol has incorrect toString conversion
      // eslint-disable-next-line no-undef
      return !String(Symbol());
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/native-symbol.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/native-weak-map.js":
    /*!***********************************************************!*
      !*** ./node_modules/core-js/internals/native-weak-map.js ***!
      ***********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js");
    
    var WeakMap = global.WeakMap;
    
    module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/native-weak-map.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-create.js":
    /*!*********************************************************!*
      !*** ./node_modules/core-js/internals/object-create.js ***!
      *********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
    var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js");
    var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
    var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
    var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js");
    var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
    var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
    var IE_PROTO = sharedKey('IE_PROTO');
    
    var PROTOTYPE = 'prototype';
    var Empty = function () { /* empty */ };
    
    // Create object with fake `null` prototype: use iframe Object with cleared prototype
    var createDict = function () {
      // Thrash, waste and sodomy: IE GC bug
      var iframe = documentCreateElement('iframe');
      var length = enumBugKeys.length;
      var lt = '<';
      var script = 'script';
      var gt = '>';
      var js = 'java' + script + ':';
      var iframeDocument;
      iframe.style.display = 'none';
      html.appendChild(iframe);
      iframe.src = String(js);
      iframeDocument = iframe.contentWindow.document;
      iframeDocument.open();
      iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);
      iframeDocument.close();
      createDict = iframeDocument.F;
      while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];
      return createDict();
    };
    
    // `Object.create` method
    // https://tc39.github.io/ecma262/#sec-object.create
    module.exports = Object.create || function create(O, Properties) {
      var result;
      if (O !== null) {
        Empty[PROTOTYPE] = anObject(O);
        result = new Empty();
        Empty[PROTOTYPE] = null;
        // add "__proto__" for Object.getPrototypeOf polyfill
        result[IE_PROTO] = O;
      } else result = createDict();
      return Properties === undefined ? result : defineProperties(result, Properties);
    };
    
    hiddenKeys[IE_PROTO] = true;
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-create.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-define-properties.js":
    /*!********************************************************************!*
      !*** ./node_modules/core-js/internals/object-define-properties.js ***!
      ********************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
    var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
    var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
    var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js");
    
    // `Object.defineProperties` method
    // https://tc39.github.io/ecma262/#sec-object.defineproperties
    module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
      anObject(O);
      var keys = objectKeys(Properties);
      var length = keys.length;
      var index = 0;
      var key;
      while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
      return O;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-define-properties.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-define-property.js":
    /*!******************************************************************!*
      !*** ./node_modules/core-js/internals/object-define-property.js ***!
      ******************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
    var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
    var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
    var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
    
    var nativeDefineProperty = Object.defineProperty;
    
    // `Object.defineProperty` method
    // https://tc39.github.io/ecma262/#sec-object.defineproperty
    exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
      anObject(O);
      P = toPrimitive(P, true);
      anObject(Attributes);
      if (IE8_DOM_DEFINE) try {
        return nativeDefineProperty(O, P, Attributes);
      } catch (error) { /* empty */ }
      if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
      if ('value' in Attributes) O[P] = Attributes.value;
      return O;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-define-property.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js":
    /*!******************************************************************************!*
      !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!
      ******************************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
    var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js");
    var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
    var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
    var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
    var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
    var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
    
    var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    
    // `Object.getOwnPropertyDescriptor` method
    // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
    exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
      O = toIndexedObject(O);
      P = toPrimitive(P, true);
      if (IE8_DOM_DEFINE) try {
        return nativeGetOwnPropertyDescriptor(O, P);
      } catch (error) { /* empty */ }
      if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-get-own-property-names.js":
    /*!*************************************************************************!*
      !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!
      *************************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
    var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
    
    var hiddenKeys = enumBugKeys.concat('length', 'prototype');
    
    // `Object.getOwnPropertyNames` method
    // https://tc39.github.io/ecma262/#sec-object.getownpropertynames
    exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
      return internalObjectKeys(O, hiddenKeys);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-get-own-property-names.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js":
    /*!***************************************************************************!*
      !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!
      ***************************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("exports.f = Object.getOwnPropertySymbols;
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-get-prototype-of.js":
    /*!*******************************************************************!*
      !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***!
      *******************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
    var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
    var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
    var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js");
    
    var IE_PROTO = sharedKey('IE_PROTO');
    var ObjectPrototype = Object.prototype;
    
    // `Object.getPrototypeOf` method
    // https://tc39.github.io/ecma262/#sec-object.getprototypeof
    module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
      O = toObject(O);
      if (has(O, IE_PROTO)) return O[IE_PROTO];
      if (typeof O.constructor == 'function' && O instanceof O.constructor) {
        return O.constructor.prototype;
      } return O instanceof Object ? ObjectPrototype : null;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-get-prototype-of.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-keys-internal.js":
    /*!****************************************************************!*
      !*** ./node_modules/core-js/internals/object-keys-internal.js ***!
      ****************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
    var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
    var indexOf = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf;
    var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
    
    module.exports = function (object, names) {
      var O = toIndexedObject(object);
      var i = 0;
      var result = [];
      var key;
      for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
      // Don't enum bug & hidden keys
      while (names.length > i) if (has(O, key = names[i++])) {
        ~indexOf(result, key) || result.push(key);
      }
      return result;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-keys-internal.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-keys.js":
    /*!*******************************************************!*
      !*** ./node_modules/core-js/internals/object-keys.js ***!
      *******************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
    var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
    
    // `Object.keys` method
    // https://tc39.github.io/ecma262/#sec-object.keys
    module.exports = Object.keys || function keys(O) {
      return internalObjectKeys(O, enumBugKeys);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-keys.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-property-is-enumerable.js":
    /*!*************************************************************************!*
      !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!
      *************************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    eval("
    var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    
    // Nashorn ~ JDK8 bug
    var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
    
    // `Object.prototype.propertyIsEnumerable` method implementation
    // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
    exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
      var descriptor = getOwnPropertyDescriptor(this, V);
      return !!descriptor && descriptor.enumerable;
    } : nativePropertyIsEnumerable;
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-set-prototype-of.js":
    /*!*******************************************************************!*
      !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***!
      *******************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
    var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "./node_modules/core-js/internals/a-possible-prototype.js");
    
    // `Object.setPrototypeOf` method
    // https://tc39.github.io/ecma262/#sec-object.setprototypeof
    // Works with __proto__ only. Old v8 can't work with null proto objects.
    /* eslint-disable no-proto */
    module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
      var CORRECT_SETTER = false;
      var test = {};
      var setter;
      try {
        setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
        setter.call(test, []);
        CORRECT_SETTER = test instanceof Array;
      } catch (error) { /* empty */ }
      return function setPrototypeOf(O, proto) {
        anObject(O);
        aPossiblePrototype(proto);
        if (CORRECT_SETTER) setter.call(O, proto);
        else O.__proto__ = proto;
        return O;
      };
    }() : undefined);
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-set-prototype-of.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/own-keys.js":
    /*!****************************************************!*
      !*** ./node_modules/core-js/internals/own-keys.js ***!
      ****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
    var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js");
    var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js");
    var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
    
    // all object keys, includes non-enumerable and symbols
    module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
      var keys = getOwnPropertyNamesModule.f(anObject(it));
      var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
      return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/own-keys.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/path.js":
    /*!************************************************!*
      !*** ./node_modules/core-js/internals/path.js ***!
      ************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("module.exports = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/path.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/redefine.js":
    /*!****************************************************!*
      !*** ./node_modules/core-js/internals/redefine.js ***!
      ****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
    var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
    var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
    var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
    var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js");
    var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");
    
    var getInternalState = InternalStateModule.get;
    var enforceInternalState = InternalStateModule.enforce;
    var TEMPLATE = String(nativeFunctionToString).split('toString');
    
    shared('inspectSource', function (it) {
      return nativeFunctionToString.call(it);
    });
    
    (module.exports = function (O, key, value, options) {
      var unsafe = options ? !!options.unsafe : false;
      var simple = options ? !!options.enumerable : false;
      var noTargetGet = options ? !!options.noTargetGet : false;
      if (typeof value == 'function') {
        if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);
        enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
      }
      if (O === global) {
        if (simple) O[key] = value;
        else setGlobal(key, value);
        return;
      } else if (!unsafe) {
        delete O[key];
      } else if (!noTargetGet && O[key]) {
        simple = true;
      }
      if (simple) O[key] = value;
      else createNonEnumerableProperty(O, key, value);
    // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
    })(Function.prototype, 'toString', function toString() {
      return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/redefine.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/require-object-coercible.js":
    /*!********************************************************************!*
      !*** ./node_modules/core-js/internals/require-object-coercible.js ***!
      ********************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("// `RequireObjectCoercible` abstract operation
    // https://tc39.github.io/ecma262/#sec-requireobjectcoercible
    module.exports = function (it) {
      if (it == undefined) throw TypeError("Can't call method on " + it);
      return it;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/require-object-coercible.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/set-global.js":
    /*!******************************************************!*
      !*** ./node_modules/core-js/internals/set-global.js ***!
      ******************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
    
    module.exports = function (key, value) {
      try {
        createNonEnumerableProperty(global, key, value);
      } catch (error) {
        global[key] = value;
      } return value;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/set-global.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/shared-key.js":
    /*!******************************************************!*
      !*** ./node_modules/core-js/internals/shared-key.js ***!
      ******************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
    var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
    
    var keys = shared('keys');
    
    module.exports = function (key) {
      return keys[key] || (keys[key] = uid(key));
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/shared-key.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/shared-store.js":
    /*!********************************************************!*
      !*** ./node_modules/core-js/internals/shared-store.js ***!
      ********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
    
    var SHARED = '__core-js_shared__';
    var store = global[SHARED] || setGlobal(SHARED, {});
    
    module.exports = store;
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/shared-store.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/shared.js":
    /*!**************************************************!*
      !*** ./node_modules/core-js/internals/shared.js ***!
      **************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
    var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js");
    
    (module.exports = function (key, value) {
      return store[key] || (store[key] = value !== undefined ? value : {});
    })('versions', []).push({
      version: '3.3.5',
      mode: IS_PURE ? 'pure' : 'global',
      copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/shared.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/to-absolute-index.js":
    /*!*************************************************************!*
      !*** ./node_modules/core-js/internals/to-absolute-index.js ***!
      *************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
    
    var max = Math.max;
    var min = Math.min;
    
    // Helper for a popular repeating case of the spec:
    // Let integer be ? ToInteger(index).
    // If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).
    module.exports = function (index, length) {
      var integer = toInteger(index);
      return integer < 0 ? max(integer + length, 0) : min(integer, length);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/to-absolute-index.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/to-indexed-object.js":
    /*!*************************************************************!*
      !*** ./node_modules/core-js/internals/to-indexed-object.js ***!
      *************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("// toObject with fallback for non-array-like ES3 strings
    var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js");
    var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
    
    module.exports = function (it) {
      return IndexedObject(requireObjectCoercible(it));
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/to-indexed-object.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/to-integer.js":
    /*!******************************************************!*
      !*** ./node_modules/core-js/internals/to-integer.js ***!
      ******************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("var ceil = Math.ceil;
    var floor = Math.floor;
    
    // `ToInteger` abstract operation
    // https://tc39.github.io/ecma262/#sec-tointeger
    module.exports = function (argument) {
      return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/to-integer.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/to-length.js":
    /*!*****************************************************!*
      !*** ./node_modules/core-js/internals/to-length.js ***!
      *****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
    
    var min = Math.min;
    
    // `ToLength` abstract operation
    // https://tc39.github.io/ecma262/#sec-tolength
    module.exports = function (argument) {
      return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/to-length.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/to-object.js":
    /*!*****************************************************!*
      !*** ./node_modules/core-js/internals/to-object.js ***!
      *****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
    
    // `ToObject` abstract operation
    // https://tc39.github.io/ecma262/#sec-toobject
    module.exports = function (argument) {
      return Object(requireObjectCoercible(argument));
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/to-object.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/to-primitive.js":
    /*!********************************************************!*
      !*** ./node_modules/core-js/internals/to-primitive.js ***!
      ********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
    
    // `ToPrimitive` abstract operation
    // https://tc39.github.io/ecma262/#sec-toprimitive
    // instead of the ES6 spec version, we didn't implement @@toPrimitive case
    // and the second argument - flag - preferred type is a string
    module.exports = function (input, PREFERRED_STRING) {
      if (!isObject(input)) return input;
      var fn, val;
      if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
      if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
      if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
      throw TypeError("Can't convert object to primitive value");
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/to-primitive.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/uid.js":
    /*!***********************************************!*
      !*** ./node_modules/core-js/internals/uid.js ***!
      ***********************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("var id = 0;
    var postfix = Math.random();
    
    module.exports = function (key) {
      return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/uid.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/well-known-symbol.js":
    /*!*************************************************************!*
      !*** ./node_modules/core-js/internals/well-known-symbol.js ***!
      *************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
    var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
    var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js");
    
    var Symbol = global.Symbol;
    var store = shared('wks');
    
    module.exports = function (name) {
      return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]
        || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/well-known-symbol.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/es.array.includes.js":
    /*!***********************************************************!*
      !*** ./node_modules/core-js/modules/es.array.includes.js ***!
      ***********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    eval("
    var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
    var $includes = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").includes;
    var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js");
    
    // `Array.prototype.includes` method
    // https://tc39.github.io/ecma262/#sec-array.prototype.includes
    $({ target: 'Array', proto: true }, {
      includes: function includes(el /* , fromIndex = 0 */) {
        return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
      }
    });
    
    // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
    addToUnscopables('includes');
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/es.array.includes.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/es.typed-array.includes.js":
    /*!*****************************************************************!*
      !*** ./node_modules/core-js/modules/es.typed-array.includes.js ***!
      *****************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    eval("
    var ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");
    var $includes = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").includes;
    
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    
    // `%TypedArray%.prototype.includes` method
    // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes
    ArrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) {
      return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.includes.js?");
    
    /***/ }),
    
    /***/ "./node_modules/ts-polyfill/lib/es2016-array-include.js":
    /*!**************************************************************!*
      !*** ./node_modules/ts-polyfill/lib/es2016-array-include.js ***!
      **************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    eval("
    Object.defineProperty(exports, "__esModule", { value: true });
    __webpack_require__(/*! core-js/es/array/includes */ "./node_modules/core-js/es/array/includes.js");
    __webpack_require__(/*! core-js/es/typed-array/includes */ "./node_modules/core-js/es/typed-array/includes.js");
    
    
    //# sourceURL=webpack:///./node_modules/ts-polyfill/lib/es2016-array-include.js?");
    
    /***/ }),
    
    /***/ "./node_modules/webpack/buildin/global.js":
    /*!***********************************!*
      !*** (webpack)/buildin/global.js ***!
      ***********************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("var g;
    
    // This works in non-strict mode
    g = (function() {
    	return this;
    })();
    
    try {
    	// This works if eval is allowed (see CSP)
    	g = g || new Function("return this")();
    } catch (e) {
    	// This works if the window reference is available
    	if (typeof window === "object") g = window;
    }
    
    // g can still be undefined, but nothing to do about it...
    // We return undefined, instead of nothing here, so it's
    // easier to handle this case. if(!global) { ...}
    
    module.exports = g;
    
    
    //# sourceURL=webpack:///(webpack)/buildin/global.js?");
    
    /***/ }),
    
    /***/ "./src/index.js":
    /*!**********************!*
      !*** ./src/index.js ***!
      **********************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    eval("
    Object.defineProperty(exports, "__esModule", { value: true });
    // import 'core-js';
    __webpack_require__(/*! ts-polyfill/lib/es2016-array-include */ "./node_modules/ts-polyfill/lib/es2016-array-include.js");
    //具体目标
    var Utils = /** @class */ (function () {
        function Utils() {
            this.cname = 'Utils';
        }
        Utils.prototype.test = function () {
            [1, 2, 3].includes(2);
        };
        return Utils;
    }());
    window.subject = new Utils(); //方便页面使用
    
    
    //# sourceURL=webpack:///./src/index.js?");
    
    /***/ })
    
    /******/ });
    View Code

    将编译后的文件直接通过script的方式引入页面,就可以使用了

    <body>
        <script src="./dist/main.js"></script>
    </body>

    缺点:垫片要手动处理,不智能。用到了两个工具

    方案二:ts编译+babel接手垫片+webpack模块化

    我们源代码需要改动一下,删除头部引入coreJs,我们不需要手动做垫片

    //具体目标
    class Utils {
        protected cname:string = 'Utils';
        public test(): void{
            [1,2,3].includes(2)
        }          
    }
    (window as any).subject = new Utils(); //方便页面使用

    仍旧是ts编译,可以看到编译后src/index.js的代码,明显也少了引入垫片corejs这行代码

    "use strict";
    //具体目标
    var Utils = /** @class */ (function () {
        function Utils() {
            this.cname = 'Utils';
        }
        Utils.prototype.test = function () {
            [1, 2, 3].includes(2);
        };
        return Utils;
    }());
    window.subject = new Utils(); //方便页面使用

    安装babel,让babel处理垫片。创建babel配置文件babel.config.js
    装babel的时候让我惊讶的是,不用安装@babel/polyfill也能(babel)编译和(webpack)模块打包成功,分析了下原因:
    1、编译阶段是不需要垫片的,因为此时编译后的文件只是多出来了垫片的引用,是否找得到编译器它不考虑
    2、垫片的使用时发生在用webpack打包阶段,因为他要处理垫片生成的import,import的内容就是垫片库@babel/polyfill里的文件,如果你没有安装此包webpack处理的时候找不到会报错
    3、至于我为啥后边webpack成功了,是因为我刚才误多装了core-js包,而这个包恰恰就是我需要的垫片包,
        因为我的babel是7.4以上,@babel/polyfill已经被废弃了被分解成了core-js、regenerator-runtime两个包,刚好歪打正着。所以我们可以提前安装上这两个包,不然webpack打包阶段会报错

    const presets = [
        [
          "@babel/env",
          {
            useBuiltIns: "usage" //自动按需引入对应的垫片
          },
        ],
      ];
    module.exports = { presets };

    执行babel打包命令npx babel src/index.js --out-dir src,打包后的src/index.js有看到babel已经帮我们处理好了垫片环境

    "use strict"; //具体目标
    
    require("core-js/modules/es7.array.includes");
    
    require("core-js/modules/es6.string.includes");
    
    var Utils =
    /** @class */
    function () {
      function Utils() {
        this.cname = 'Utils';
      }
    
      Utils.prototype.test = function () {
        [1, 2, 3].includes(2);
      };
    
      return Utils;
    }();
    
    window.subject = new Utils(); //方便页面使用


    然后我们再用webpack处理模块化webpack --mode development --progress。然后他妈的就报错了

    ERROR in ./src/index.js
    Module not found: Error: Can't resolve 'core-js/modules/es6.string.includes' in '/Users/dsh/Documents/demo/tsceg/src'
    @ ./src/index.js 5:0-46

    ERROR in ./src/index.js
    Module not found: Error: Can't resolve 'core-js/modules/es7.array.includes' in '/Users/dsh/Documents/demo/tsceg/src'
    @ ./src/index.js 3:0-45

    我仔细的瞅了瞅node-module下边的core-js包,发现包里的moduels下就没有es6.string.includes和es7.array.includes这两个文件。我跑到github下找到这货的项目,看了看v3确实没有,但是v2还有,那看来就是第一种方案的时候,手动装垫片的时候,coreJs的版本默认给我装到v3。简言之,版本装错了,重新改成v2后就好了,一下是打包后的文件,就不展开了

    /******/ (function(modules) { // webpackBootstrap
    /******/     // The module cache
    /******/     var installedModules = {};
    /******/
    /******/     // The require function
    /******/     function __webpack_require__(moduleId) {
    /******/
    /******/         // Check if module is in cache
    /******/         if(installedModules[moduleId]) {
    /******/             return installedModules[moduleId].exports;
    /******/         }
    /******/         // Create a new module (and put it into the cache)
    /******/         var module = installedModules[moduleId] = {
    /******/             i: moduleId,
    /******/             l: false,
    /******/             exports: {}
    /******/         };
    /******/
    /******/         // Execute the module function
    /******/         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
    /******/
    /******/         // Flag the module as loaded
    /******/         module.l = true;
    /******/
    /******/         // Return the exports of the module
    /******/         return module.exports;
    /******/     }
    /******/
    /******/
    /******/     // expose the modules object (__webpack_modules__)
    /******/     __webpack_require__.m = modules;
    /******/
    /******/     // expose the module cache
    /******/     __webpack_require__.c = installedModules;
    /******/
    /******/     // define getter function for harmony exports
    /******/     __webpack_require__.d = function(exports, name, getter) {
    /******/         if(!__webpack_require__.o(exports, name)) {
    /******/             Object.defineProperty(exports, name, { enumerable: true, get: getter });
    /******/         }
    /******/     };
    /******/
    /******/     // define __esModule on exports
    /******/     __webpack_require__.r = function(exports) {
    /******/         if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
    /******/             Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
    /******/         }
    /******/         Object.defineProperty(exports, '__esModule', { value: true });
    /******/     };
    /******/
    /******/     // create a fake namespace object
    /******/     // mode & 1: value is a module id, require it
    /******/     // mode & 2: merge all properties of value into the ns
    /******/     // mode & 4: return value when already ns object
    /******/     // mode & 8|1: behave like require
    /******/     __webpack_require__.t = function(value, mode) {
    /******/         if(mode & 1) value = __webpack_require__(value);
    /******/         if(mode & 8) return value;
    /******/         if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
    /******/         var ns = Object.create(null);
    /******/         __webpack_require__.r(ns);
    /******/         Object.defineProperty(ns, 'default', { enumerable: true, value: value });
    /******/         if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
    /******/         return ns;
    /******/     };
    /******/
    /******/     // getDefaultExport function for compatibility with non-harmony modules
    /******/     __webpack_require__.n = function(module) {
    /******/         var getter = module && module.__esModule ?
    /******/             function getDefault() { return module['default']; } :
    /******/             function getModuleExports() { return module; };
    /******/         __webpack_require__.d(getter, 'a', getter);
    /******/         return getter;
    /******/     };
    /******/
    /******/     // Object.prototype.hasOwnProperty.call
    /******/     __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
    /******/
    /******/     // __webpack_public_path__
    /******/     __webpack_require__.p = "";
    /******/
    /******/
    /******/     // Load entry module and return exports
    /******/     return __webpack_require__(__webpack_require__.s = "./src/index.js");
    /******/ })
    /************************************************************************/
    /******/ ({
    
    /***/ "./node_modules/core-js/modules/_a-function.js":
    /*!*****************************************************!*
      !*** ./node_modules/core-js/modules/_a-function.js ***!
      *****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = function (it) {
      if (typeof it != 'function') throw TypeError(it + ' is not a function!');
      return it;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_a-function.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_add-to-unscopables.js":
    /*!*************************************************************!*
      !*** ./node_modules/core-js/modules/_add-to-unscopables.js ***!
      *************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("// 22.1.3.31 Array.prototype[@@unscopables]
    var UNSCOPABLES = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('unscopables');
    var ArrayProto = Array.prototype;
    if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js")(ArrayProto, UNSCOPABLES, {});
    module.exports = function (key) {
      ArrayProto[UNSCOPABLES][key] = true;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_add-to-unscopables.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_an-object.js":
    /*!****************************************************!*
      !*** ./node_modules/core-js/modules/_an-object.js ***!
      ****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
    module.exports = function (it) {
      if (!isObject(it)) throw TypeError(it + ' is not an object!');
      return it;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_an-object.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_array-includes.js":
    /*!*********************************************************!*
      !*** ./node_modules/core-js/modules/_array-includes.js ***!
      *********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("// false -> Array#indexOf
    // true  -> Array#includes
    var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
    var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
    var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
    module.exports = function (IS_INCLUDES) {
      return function ($this, el, fromIndex) {
        var O = toIObject($this);
        var length = toLength(O.length);
        var index = toAbsoluteIndex(fromIndex, length);
        var value;
        // Array#includes uses SameValueZero equality algorithm
        // eslint-disable-next-line no-self-compare
        if (IS_INCLUDES && el != el) while (length > index) {
          value = O[index++];
          // eslint-disable-next-line no-self-compare
          if (value != value) return true;
        // Array#indexOf ignores holes, Array#includes - not
        } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
          if (O[index] === el) return IS_INCLUDES || index || 0;
        } return !IS_INCLUDES && -1;
      };
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_array-includes.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_cof.js":
    /*!**********************************************!*
      !*** ./node_modules/core-js/modules/_cof.js ***!
      **********************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("var toString = {}.toString;
    
    module.exports = function (it) {
      return toString.call(it).slice(8, -1);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_cof.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_core.js":
    /*!***********************************************!*
      !*** ./node_modules/core-js/modules/_core.js ***!
      ***********************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("var core = module.exports = { version: '2.6.10' };
    if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_core.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_ctx.js":
    /*!**********************************************!*
      !*** ./node_modules/core-js/modules/_ctx.js ***!
      **********************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("// optional / simple context binding
    var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
    module.exports = function (fn, that, length) {
      aFunction(fn);
      if (that === undefined) return fn;
      switch (length) {
        case 1: return function (a) {
          return fn.call(that, a);
        };
        case 2: return function (a, b) {
          return fn.call(that, a, b);
        };
        case 3: return function (a, b, c) {
          return fn.call(that, a, b, c);
        };
      }
      return function (/* ...args */) {
        return fn.apply(that, arguments);
      };
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_ctx.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_defined.js":
    /*!**************************************************!*
      !*** ./node_modules/core-js/modules/_defined.js ***!
      **************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("// 7.2.1 RequireObjectCoercible(argument)
    module.exports = function (it) {
      if (it == undefined) throw TypeError("Can't call method on  " + it);
      return it;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_defined.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_descriptors.js":
    /*!******************************************************!*
      !*** ./node_modules/core-js/modules/_descriptors.js ***!
      ******************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("// Thank's IE8 for his funny defineProperty
    module.exports = !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
      return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_descriptors.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_dom-create.js":
    /*!*****************************************************!*
      !*** ./node_modules/core-js/modules/_dom-create.js ***!
      *****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
    var document = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").document;
    // typeof document.createElement is 'object' in old IE
    var is = isObject(document) && isObject(document.createElement);
    module.exports = function (it) {
      return is ? document.createElement(it) : {};
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_dom-create.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_export.js":
    /*!*************************************************!*
      !*** ./node_modules/core-js/modules/_export.js ***!
      *************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
    var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
    var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
    var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
    var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
    var PROTOTYPE = 'prototype';
    
    var $export = function (type, name, source) {
      var IS_FORCED = type & $export.F;
      var IS_GLOBAL = type & $export.G;
      var IS_STATIC = type & $export.S;
      var IS_PROTO = type & $export.P;
      var IS_BIND = type & $export.B;
      var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
      var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
      var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
      var key, own, out, exp;
      if (IS_GLOBAL) source = name;
      for (key in source) {
        // contains in native
        own = !IS_FORCED && target && target[key] !== undefined;
        // export native or passed
        out = (own ? target : source)[key];
        // bind timers to global for call from export context
        exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
        // extend global
        if (target) redefine(target, key, out, type & $export.U);
        // export
        if (exports[key] != out) hide(exports, key, exp);
        if (IS_PROTO && expProto[key] != out) expProto[key] = out;
      }
    };
    global.core = core;
    // type bitmap
    $export.F = 1;   // forced
    $export.G = 2;   // global
    $export.S = 4;   // static
    $export.P = 8;   // proto
    $export.B = 16;  // bind
    $export.W = 32;  // wrap
    $export.U = 64;  // safe
    $export.R = 128; // real proto method for `library`
    module.exports = $export;
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_export.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_fails-is-regexp.js":
    /*!**********************************************************!*
      !*** ./node_modules/core-js/modules/_fails-is-regexp.js ***!
      **********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var MATCH = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('match');
    module.exports = function (KEY) {
      var re = /./;
      try {
        '/./'[KEY](re);
      } catch (e) {
        try {
          re[MATCH] = false;
          return !'/./'[KEY](re);
        } catch (f) { /* empty */ }
      } return true;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_fails-is-regexp.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_fails.js":
    /*!************************************************!*
      !*** ./node_modules/core-js/modules/_fails.js ***!
      ************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = function (exec) {
      try {
        return !!exec();
      } catch (e) {
        return true;
      }
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_fails.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_function-to-string.js":
    /*!*************************************************************!*
      !*** ./node_modules/core-js/modules/_function-to-string.js ***!
      *************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("module.exports = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js")('native-function-to-string', Function.toString);
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_function-to-string.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_global.js":
    /*!*************************************************!*
      !*** ./node_modules/core-js/modules/_global.js ***!
      *************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
    var global = module.exports = typeof window != 'undefined' && window.Math == Math
      ? window : typeof self != 'undefined' && self.Math == Math ? self
      // eslint-disable-next-line no-new-func
      : Function('return this')();
    if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_global.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_has.js":
    /*!**********************************************!*
      !*** ./node_modules/core-js/modules/_has.js ***!
      **********************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("var hasOwnProperty = {}.hasOwnProperty;
    module.exports = function (it, key) {
      return hasOwnProperty.call(it, key);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_has.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_hide.js":
    /*!***********************************************!*
      !*** ./node_modules/core-js/modules/_hide.js ***!
      ***********************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
    var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
    module.exports = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? function (object, key, value) {
      return dP.f(object, key, createDesc(1, value));
    } : function (object, key, value) {
      object[key] = value;
      return object;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_hide.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_ie8-dom-define.js":
    /*!*********************************************************!*
      !*** ./node_modules/core-js/modules/_ie8-dom-define.js ***!
      *********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("module.exports = !__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
      return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "./node_modules/core-js/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_ie8-dom-define.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_iobject.js":
    /*!**************************************************!*
      !*** ./node_modules/core-js/modules/_iobject.js ***!
      **************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings
    var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
    // eslint-disable-next-line no-prototype-builtins
    module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
      return cof(it) == 'String' ? it.split('') : Object(it);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_iobject.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_is-object.js":
    /*!****************************************************!*
      !*** ./node_modules/core-js/modules/_is-object.js ***!
      ****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = function (it) {
      return typeof it === 'object' ? it !== null : typeof it === 'function';
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_is-object.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_is-regexp.js":
    /*!****************************************************!*
      !*** ./node_modules/core-js/modules/_is-regexp.js ***!
      ****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("// 7.2.8 IsRegExp(argument)
    var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
    var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
    var MATCH = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('match');
    module.exports = function (it) {
      var isRegExp;
      return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_is-regexp.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_library.js":
    /*!**************************************************!*
      !*** ./node_modules/core-js/modules/_library.js ***!
      **************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = false;
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_library.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_object-dp.js":
    /*!****************************************************!*
      !*** ./node_modules/core-js/modules/_object-dp.js ***!
      ****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
    var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "./node_modules/core-js/modules/_ie8-dom-define.js");
    var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
    var dP = Object.defineProperty;
    
    exports.f = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
      anObject(O);
      P = toPrimitive(P, true);
      anObject(Attributes);
      if (IE8_DOM_DEFINE) try {
        return dP(O, P, Attributes);
      } catch (e) { /* empty */ }
      if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
      if ('value' in Attributes) O[P] = Attributes.value;
      return O;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_object-dp.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_property-desc.js":
    /*!********************************************************!*
      !*** ./node_modules/core-js/modules/_property-desc.js ***!
      ********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = function (bitmap, value) {
      return {
        enumerable: !(bitmap & 1),
        configurable: !(bitmap & 2),
        writable: !(bitmap & 4),
        value: value
      };
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_property-desc.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_redefine.js":
    /*!***************************************************!*
      !*** ./node_modules/core-js/modules/_redefine.js ***!
      ***************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
    var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
    var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
    var SRC = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js")('src');
    var $toString = __webpack_require__(/*! ./_function-to-string */ "./node_modules/core-js/modules/_function-to-string.js");
    var TO_STRING = 'toString';
    var TPL = ('' + $toString).split(TO_STRING);
    
    __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js").inspectSource = function (it) {
      return $toString.call(it);
    };
    
    (module.exports = function (O, key, val, safe) {
      var isFunction = typeof val == 'function';
      if (isFunction) has(val, 'name') || hide(val, 'name', key);
      if (O[key] === val) return;
      if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
      if (O === global) {
        O[key] = val;
      } else if (!safe) {
        delete O[key];
        hide(O, key, val);
      } else if (O[key]) {
        O[key] = val;
      } else {
        hide(O, key, val);
      }
    // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
    })(Function.prototype, TO_STRING, function toString() {
      return typeof this == 'function' && this[SRC] || $toString.call(this);
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_redefine.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_shared.js":
    /*!*************************************************!*
      !*** ./node_modules/core-js/modules/_shared.js ***!
      *************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
    var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
    var SHARED = '__core-js_shared__';
    var store = global[SHARED] || (global[SHARED] = {});
    
    (module.exports = function (key, value) {
      return store[key] || (store[key] = value !== undefined ? value : {});
    })('versions', []).push({
      version: core.version,
      mode: __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js") ? 'pure' : 'global',
      copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_shared.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_string-context.js":
    /*!*********************************************************!*
      !*** ./node_modules/core-js/modules/_string-context.js ***!
      *********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("// helper for String#{startsWith, endsWith, includes}
    var isRegExp = __webpack_require__(/*! ./_is-regexp */ "./node_modules/core-js/modules/_is-regexp.js");
    var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
    
    module.exports = function (that, searchString, NAME) {
      if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
      return String(defined(that));
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_string-context.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_to-absolute-index.js":
    /*!************************************************************!*
      !*** ./node_modules/core-js/modules/_to-absolute-index.js ***!
      ************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
    var max = Math.max;
    var min = Math.min;
    module.exports = function (index, length) {
      index = toInteger(index);
      return index < 0 ? max(index + length, 0) : min(index, length);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_to-absolute-index.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_to-integer.js":
    /*!*****************************************************!*
      !*** ./node_modules/core-js/modules/_to-integer.js ***!
      *****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("// 7.1.4 ToInteger
    var ceil = Math.ceil;
    var floor = Math.floor;
    module.exports = function (it) {
      return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_to-integer.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_to-iobject.js":
    /*!*****************************************************!*
      !*** ./node_modules/core-js/modules/_to-iobject.js ***!
      *****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("// to indexed object, toObject with fallback for non-array-like ES3 strings
    var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
    var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
    module.exports = function (it) {
      return IObject(defined(it));
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_to-iobject.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_to-length.js":
    /*!****************************************************!*
      !*** ./node_modules/core-js/modules/_to-length.js ***!
      ****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("// 7.1.15 ToLength
    var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
    var min = Math.min;
    module.exports = function (it) {
      return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_to-length.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_to-primitive.js":
    /*!*******************************************************!*
      !*** ./node_modules/core-js/modules/_to-primitive.js ***!
      *******************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("// 7.1.1 ToPrimitive(input [, PreferredType])
    var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
    // instead of the ES6 spec version, we didn't implement @@toPrimitive case
    // and the second argument - flag - preferred type is a string
    module.exports = function (it, S) {
      if (!isObject(it)) return it;
      var fn, val;
      if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
      if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
      if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
      throw TypeError("Can't convert object to primitive value");
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_to-primitive.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_uid.js":
    /*!**********************************************!*
      !*** ./node_modules/core-js/modules/_uid.js ***!
      **********************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("var id = 0;
    var px = Math.random();
    module.exports = function (key) {
      return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_uid.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/_wks.js":
    /*!**********************************************!*
      !*** ./node_modules/core-js/modules/_wks.js ***!
      **********************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var store = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js")('wks');
    var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
    var Symbol = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").Symbol;
    var USE_SYMBOL = typeof Symbol == 'function';
    
    var $exports = module.exports = function (name) {
      return store[name] || (store[name] =
        USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
    };
    
    $exports.store = store;
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/_wks.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/es6.string.includes.js":
    /*!*************************************************************!*
      !*** ./node_modules/core-js/modules/es6.string.includes.js ***!
      *************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    eval("// 21.1.3.7 String.prototype.includes(searchString, position = 0)
    
    var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
    var context = __webpack_require__(/*! ./_string-context */ "./node_modules/core-js/modules/_string-context.js");
    var INCLUDES = 'includes';
    
    $export($export.P + $export.F * __webpack_require__(/*! ./_fails-is-regexp */ "./node_modules/core-js/modules/_fails-is-regexp.js")(INCLUDES), 'String', {
      includes: function includes(searchString /* , position = 0 */) {
        return !!~context(this, searchString, INCLUDES)
          .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
      }
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/es6.string.includes.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/es7.array.includes.js":
    /*!************************************************************!*
      !*** ./node_modules/core-js/modules/es7.array.includes.js ***!
      ************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    eval("
    // https://github.com/tc39/Array.prototype.includes
    var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
    var $includes = __webpack_require__(/*! ./_array-includes */ "./node_modules/core-js/modules/_array-includes.js")(true);
    
    $export($export.P, 'Array', {
      includes: function includes(el /* , fromIndex = 0 */) {
        return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
      }
    });
    
    __webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")('includes');
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/es7.array.includes.js?");
    
    /***/ }),
    
    /***/ "./src/index.js":
    /*!**********************!*
      !*** ./src/index.js ***!
      **********************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    "use strict";
    eval(" //具体目标
    
    __webpack_require__(/*! core-js/modules/es7.array.includes */ "./node_modules/core-js/modules/es7.array.includes.js");
    
    __webpack_require__(/*! core-js/modules/es6.string.includes */ "./node_modules/core-js/modules/es6.string.includes.js");
    
    var Utils =
    /** @class */
    function () {
      function Utils() {
        this.cname = 'Utils';
      }
    
      Utils.prototype.test = function () {
        [1, 2, 3].includes(2);
      };
    
      return Utils;
    }();
    
    window.subject = new Utils(); //方便页面使用
    
    //# sourceURL=webpack:///./src/index.js?");
    
    /***/ })
    
    /******/ });
    View Code

     缺点:虽然编译成了老版本的js和做了垫片,但是却多用了一个工具babel,现在是一工3个工具


    方案三:只用webpack(ts-loader + babel-loader)

    webpack的优秀之处在于,他能以loader和plugin的方式将其他工具整个到自身内。那么我们分别用ts-loader和babel-loader来仅用webpack去处理ts。避免了使用过多的工具的问题。
    新建一个项目,
    初始化node配置文件自动生成packge.json。
    安装webpack,并新增配置文件。
    新增入口文件src/index.ts
    测试页面引入编译后的dist/main.js文件,别的内容没有
    目录解构如下:


    1、安装ts-loader,主要分4部分
    npm install ts-loader typescript --save-dev
    安装ts-loader
    安装typescript
    新增tsconfig.json,配置文件内容如上(当然也可以像下边babel配置文件的方式一样,只是懒得重复演示)
    配置webpack对ts的loader规则,具体文件下边一起放出

    2、安装babel-loader
    其实这个时候,执行webpack就可以将ts编译为js了,但是为了兼容老的浏览器,我们要用babel来做垫片
    安装babel核心库和babel-loader以及babel欲设
    npm install -D babel-loader @babel/core @babel/preset-env

    另外就是垫片包了,babel7.4以上,@babel/polylill已经被启用了,代替他的是core-js、regenerator-runtime这两个包,记得安装
    npm install -D core-js regenerator-runtime

    然后把babel的配置转移到webpack的配置文件里就行,无需额外的配置文件

    const path = require('path');
    
    module.exports = {
      mode: 'development',
      entry: ['./src/index.ts'],
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'main.js'
      },
      module: {
        rules: [
          { test: /.ts$/,use: [
            {
              loader: 'babel-loader',
              options: {
                    presets: [
                        [
                            '@babel/preset-env',
                            {
                            "useBuiltIns": "usage",
                            "corejs": 3,
                            "targets": {"browsers":["> 1%"]},
                            }
                        ]
                    ],
                    // 我是真搞不懂这厮,编译现在不用它也不会报错,同学们视情况而定吧,报错用
                    // 我认为可能是ts-loader已经给处理了类的实例属性,所以交付给babel-loader的时候,就不会有解析不过的问题了
                    // plugins:[
                    //     ["@babel/plugin-proposal-class-properties", { "loose": true }]
                    // ]  
                }
            },
            {loader: 'ts-loader'}
        ]}
        ]
      }
    };

    这里有详细的关于匹配多个loader的用法

    3、然后直接用webpack进行编译就行了
    npx webpack --config webpack.config.js

    优点在于一口气配置完后,只需要一个命令行就编译打包完。

    对了提一下配置,如果用了ts-loader和babel-loader,
    在tsconfig的配置中,尽量不要处理模块化,编译的语法也不要设置成比较低的es版本。因为后续babel会做。这是哪个老外告诉我的

     esnext是指es最新的标准,ts是es基础上加了类型,target esnext基本就等于是ts只做类型检查,然后去掉类型标注得到es代码




    缺点:虽然只用了一个工具,但是却用了两个loader,ts-loader和babel-loader,需要两个工具的安装 引入和配置

    方案四:只用webpack(里边只用babel-loader)
    现在新版的babel可以直接处理ts文件了,那么相应的的babel-loader也能处理。所以我们都可以省去一步,或者省掉一个loader,只用增加配置babel-loader就搞定
    要想让babel-loader支持ts解析,那么需要安装一个插件@babel/preset-typescript,然后在修改配置文件webpack.config.js如下

    const path = require('path');
    
    module.exports = {
      mode: 'development',
      entry: ['./src/index.ts'],
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'main.js'
      },
      module: {
        rules: [
          { test: /.js$|.ts$/, loader: "babel-loader",exclude: /node_modules/,
            options: {
              presets: [
                [
                  '@babel/preset-env',
                  {
                    "useBuiltIns": "usage",
                    "corejs": 3,
                    "targets": {"browsers":["> 1%"]},
                  }
                ],
                ["@babel/preset-typescript"]
              ],
              plugins:[
                ["@babel/plugin-proposal-class-properties", { "loose": true }]
              ]
            }
          }
        ]
      }
    };

    因为我的代码里,有类实例属性定义,目前es6还不支持在类里定义属性,只能定义方法(妈的,刚才试了下,chrome78居然支持了),但估计支持没几年吧
    而且@babel/preset-typescript也尚未支持对此的处理(如果用了ts-loader的话,它就给处理了,所以这也是方案三 为啥没装这个插件也可以编译的原因了)
    所以编译的时候需要安装一个额外的插件去处理此类语法,@babel/plugin-proposal-class-properties,并加入到如上的配置文件的plugins里。
    我好奇,如果是js我定义了类的实例属性,会不会也需要这个插件,果然需要。
    所以这个就是用来专门处理js或ts等类的实例属性编译机制的,所以单独拉出来做了个插件。
    如果在preset-env和preset-typescript集合里内置了这个插件就好了,我觉得很常用啊,不然还得自己单独去加到plugins里



    完事之后在webpack编译。就大工告成啦

    /******/ (function(modules) { // webpackBootstrap
    /******/     // The module cache
    /******/     var installedModules = {};
    /******/
    /******/     // The require function
    /******/     function __webpack_require__(moduleId) {
    /******/
    /******/         // Check if module is in cache
    /******/         if(installedModules[moduleId]) {
    /******/             return installedModules[moduleId].exports;
    /******/         }
    /******/         // Create a new module (and put it into the cache)
    /******/         var module = installedModules[moduleId] = {
    /******/             i: moduleId,
    /******/             l: false,
    /******/             exports: {}
    /******/         };
    /******/
    /******/         // Execute the module function
    /******/         modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
    /******/
    /******/         // Flag the module as loaded
    /******/         module.l = true;
    /******/
    /******/         // Return the exports of the module
    /******/         return module.exports;
    /******/     }
    /******/
    /******/
    /******/     // expose the modules object (__webpack_modules__)
    /******/     __webpack_require__.m = modules;
    /******/
    /******/     // expose the module cache
    /******/     __webpack_require__.c = installedModules;
    /******/
    /******/     // define getter function for harmony exports
    /******/     __webpack_require__.d = function(exports, name, getter) {
    /******/         if(!__webpack_require__.o(exports, name)) {
    /******/             Object.defineProperty(exports, name, { enumerable: true, get: getter });
    /******/         }
    /******/     };
    /******/
    /******/     // define __esModule on exports
    /******/     __webpack_require__.r = function(exports) {
    /******/         if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
    /******/             Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
    /******/         }
    /******/         Object.defineProperty(exports, '__esModule', { value: true });
    /******/     };
    /******/
    /******/     // create a fake namespace object
    /******/     // mode & 1: value is a module id, require it
    /******/     // mode & 2: merge all properties of value into the ns
    /******/     // mode & 4: return value when already ns object
    /******/     // mode & 8|1: behave like require
    /******/     __webpack_require__.t = function(value, mode) {
    /******/         if(mode & 1) value = __webpack_require__(value);
    /******/         if(mode & 8) return value;
    /******/         if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
    /******/         var ns = Object.create(null);
    /******/         __webpack_require__.r(ns);
    /******/         Object.defineProperty(ns, 'default', { enumerable: true, value: value });
    /******/         if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
    /******/         return ns;
    /******/     };
    /******/
    /******/     // getDefaultExport function for compatibility with non-harmony modules
    /******/     __webpack_require__.n = function(module) {
    /******/         var getter = module && module.__esModule ?
    /******/             function getDefault() { return module['default']; } :
    /******/             function getModuleExports() { return module; };
    /******/         __webpack_require__.d(getter, 'a', getter);
    /******/         return getter;
    /******/     };
    /******/
    /******/     // Object.prototype.hasOwnProperty.call
    /******/     __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
    /******/
    /******/     // __webpack_public_path__
    /******/     __webpack_require__.p = "";
    /******/
    /******/
    /******/     // Load entry module and return exports
    /******/     return __webpack_require__(__webpack_require__.s = 0);
    /******/ })
    /************************************************************************/
    /******/ ({
    
    /***/ "./node_modules/core-js/internals/an-object.js":
    /*!*****************************************************!*
      !*** ./node_modules/core-js/internals/an-object.js ***!
      *****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
    
    module.exports = function (it) {
      if (!isObject(it)) {
        throw TypeError(String(it) + ' is not an object');
      } return it;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/an-object.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/descriptors.js":
    /*!*******************************************************!*
      !*** ./node_modules/core-js/internals/descriptors.js ***!
      *******************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
    
    // Thank's IE8 for his funny defineProperty
    module.exports = !fails(function () {
      return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/descriptors.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/document-create-element.js":
    /*!*******************************************************************!*
      !*** ./node_modules/core-js/internals/document-create-element.js ***!
      *******************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
    var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
    
    var document = global.document;
    // typeof document.createElement is 'object' in old IE
    var EXISTS = isObject(document) && isObject(document.createElement);
    
    module.exports = function (it) {
      return EXISTS ? document.createElement(it) : {};
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/document-create-element.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/fails.js":
    /*!*************************************************!*
      !*** ./node_modules/core-js/internals/fails.js ***!
      *************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = function (exec) {
      try {
        return !!exec();
      } catch (error) {
        return true;
      }
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/fails.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/global.js":
    /*!**************************************************!*
      !*** ./node_modules/core-js/internals/global.js ***!
      **************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {
      return it && it.Math == Math && it;
    };
    
    // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
    module.exports =
      // eslint-disable-next-line no-undef
      check(typeof globalThis == 'object' && globalThis) ||
      check(typeof window == 'object' && window) ||
      check(typeof self == 'object' && self) ||
      check(typeof global == 'object' && global) ||
      // eslint-disable-next-line no-new-func
      Function('return this')();
    
    /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/global.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/ie8-dom-define.js":
    /*!**********************************************************!*
      !*** ./node_modules/core-js/internals/ie8-dom-define.js ***!
      **********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
    var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
    var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
    
    // Thank's IE8 for his funny defineProperty
    module.exports = !DESCRIPTORS && !fails(function () {
      return Object.defineProperty(createElement('div'), 'a', {
        get: function () { return 7; }
      }).a != 7;
    });
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/ie8-dom-define.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/is-object.js":
    /*!*****************************************************!*
      !*** ./node_modules/core-js/internals/is-object.js ***!
      *****************************************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("module.exports = function (it) {
      return typeof it === 'object' ? it !== null : typeof it === 'function';
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/is-object.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/object-define-property.js":
    /*!******************************************************************!*
      !*** ./node_modules/core-js/internals/object-define-property.js ***!
      ******************************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
    var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
    var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
    var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
    
    var nativeDefineProperty = Object.defineProperty;
    
    // `Object.defineProperty` method
    // https://tc39.github.io/ecma262/#sec-object.defineproperty
    exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
      anObject(O);
      P = toPrimitive(P, true);
      anObject(Attributes);
      if (IE8_DOM_DEFINE) try {
        return nativeDefineProperty(O, P, Attributes);
      } catch (error) { /* empty */ }
      if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
      if ('value' in Attributes) O[P] = Attributes.value;
      return O;
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/object-define-property.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/internals/to-primitive.js":
    /*!********************************************************!*
      !*** ./node_modules/core-js/internals/to-primitive.js ***!
      ********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
    
    // `ToPrimitive` abstract operation
    // https://tc39.github.io/ecma262/#sec-toprimitive
    // instead of the ES6 spec version, we didn't implement @@toPrimitive case
    // and the second argument - flag - preferred type is a string
    module.exports = function (input, PREFERRED_STRING) {
      if (!isObject(input)) return input;
      var fn, val;
      if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
      if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
      if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
      throw TypeError("Can't convert object to primitive value");
    };
    
    
    //# sourceURL=webpack:///./node_modules/core-js/internals/to-primitive.js?");
    
    /***/ }),
    
    /***/ "./node_modules/core-js/modules/es.function.name.js":
    /*!**********************************************************!*
      !*** ./node_modules/core-js/modules/es.function.name.js ***!
      **********************************************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
    var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f;
    
    var FunctionPrototype = Function.prototype;
    var FunctionPrototypeToString = FunctionPrototype.toString;
    var nameRE = /^\s*function ([^ (]*)/;
    var NAME = 'name';
    
    // Function instances `.name` property
    // https://tc39.github.io/ecma262/#sec-function-instances-name
    if (DESCRIPTORS && !(NAME in FunctionPrototype)) {
      defineProperty(FunctionPrototype, NAME, {
        configurable: true,
        get: function () {
          try {
            return FunctionPrototypeToString.call(this).match(nameRE)[1];
          } catch (error) {
            return '';
          }
        }
      });
    }
    
    
    //# sourceURL=webpack:///./node_modules/core-js/modules/es.function.name.js?");
    
    /***/ }),
    
    /***/ "./node_modules/webpack/buildin/global.js":
    /*!***********************************!*
      !*** (webpack)/buildin/global.js ***!
      ***********************************/
    /*! no static exports found */
    /***/ (function(module, exports) {
    
    eval("var g;
    
    // This works in non-strict mode
    g = (function() {
    	return this;
    })();
    
    try {
    	// This works if eval is allowed (see CSP)
    	g = g || new Function("return this")();
    } catch (e) {
    	// This works if the window reference is available
    	if (typeof window === "object") g = window;
    }
    
    // g can still be undefined, but nothing to do about it...
    // We return undefined, instead of nothing here, so it's
    // easier to handle this case. if(!global) { ...}
    
    module.exports = g;
    
    
    //# sourceURL=webpack:///(webpack)/buildin/global.js?");
    
    /***/ }),
    
    /***/ "./src/index.js":
    /*!**********************!*
      !*** ./src/index.js ***!
      **********************/
    /*! no exports provided */
    /***/ (function(module, __webpack_exports__, __webpack_require__) {
    
    "use strict";
    eval("__webpack_require__.r(__webpack_exports__);
    /* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name */ "./node_modules/core-js/modules/es.function.name.js");
    /* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__);
    
    
    function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
    
    function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
    
    function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
    
    var A =
    /*#__PURE__*/
    function () {
      function A() {
        _classCallCheck(this, A);
      }
    
      _createClass(A, null, [{
        key: "getName",
        value: function getName() {}
      }]);
    
      return A;
    }();
    
    A.name = 123;
    
    //# sourceURL=webpack:///./src/index.js?");
    
    /***/ }),
    
    /***/ 0:
    /*!****************************!*
      !*** multi ./src/index.js ***!
      ****************************/
    /*! no static exports found */
    /***/ (function(module, exports, __webpack_require__) {
    
    eval("module.exports = __webpack_require__(/*! ./src/index.js */"./src/index.js");
    
    
    //# sourceURL=webpack:///multi_./src/index.js?");
    
    /***/ })
    
    /******/ });
    View Code

    这是我的所有包,仅供参考

    {
      "name": "wpeg",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "@babel/core": "^7.6.4",
        "@babel/plugin-proposal-class-properties": "^7.5.5",
        "@babel/preset-env": "^7.6.3",
        "@babel/preset-typescript": "^7.6.0",
        "babel-loader": "^8.0.6",
        "core-js": "^3.3.5",
        "regenerator-runtime": "^0.13.3",
        "webpack": "^4.41.2",
        "webpack-cli": "^3.3.9"
      },
      "dependencies": {}
    }

    通过配置文件分析可知,webpack已经不需要ts-loader了,而作为ts-loader的依赖包typescript也自然不需要了,作为ts的配置文件tsconfig.json也可以删除了。这样就省去了大量的ts第三方包和配置

    缺点:需要较高版本的babel,但是这个问题会随着时间迎刃而解

    babelCli直接编译ts
    刚才有提到,babel7可以直接处理ts了,下边就讲一下单独使用babel工具的话,使用步骤?
    新建一个空项目,创建src/index.ts后,除了安装如上必须的babel工具之外,还要做如下处理
    a:首先要安装一个预设:npm install @babel/preset-typescript -D
    b:如果你的类里边就像我的代码一样有类的实例属性,那么还要安装一个支持该特性的插件:
      npm install @babel/plugin-proposal-class-properties -D
    c:然后创建babel的配置文件babel.config.js

    View Code

    然后运行npx babel src/index.ts --out-dir dist即可

    所以最后的结论就是,用一个工具webpack,加一个处理器babel-loader就完全可以搞定ts啦

  • 相关阅读:
    Javascript中怎么定义类(私有成员、静态成员)?
    Web前端国内的叫法与行业归类吗
    CSS hack,CSS简写,CSS定义应注意的几个问题
    7个在IE和Firefox中不同的JavaScript语法
    IE和Firefox中的事件
    IE8的css hack /9
    CSS hack
    运行,复制,保存,runCode,copyCode,saveCode,运行代码框
    自由使用层的叠加
    WordPress自定义URL的Rewrite规则
  • 原文地址:https://www.cnblogs.com/dshvv/p/11758520.html
Copyright © 2011-2022 走看看