{
  "_args": [
    [
      "core-js@https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz",
      "/Users/nw/flint/packages/flint"
    ]
  ],
  "_from": "core-js@>=1.0.0 <2.0.0",
  "_id": "core-js@1.2.6",
  "_inCache": true,
  "_location": "/core-js",
  "_phantomChildren": {},
  "_requested": {
    "name": "core-js",
    "raw": "core-js@https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz",
    "rawSpec": "https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz",
    "scope": null,
    "spec": "https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz",
    "type": "remote"
  },
  "_requiredBy": [
    "/babel-runtime"
  ],
  "_resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz",
  "_shasum": "e2351f6cae764f8c34e5d839acb6a60cef8b4a45",
  "_shrinkwrap": null,
  "_spec": "core-js@https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz",
  "_where": "/Users/nw/flint/packages/flint",
  "bugs": {
    "url": "https://github.com/zloirock/core-js/issues"
  },
  "dependencies": {},
  "description": "Standard library",
  "devDependencies": {
    "LiveScript": "1.3.x",
    "eslint": "1.9.x",
    "grunt": "0.4.x",
    "grunt-cli": "0.1.x",
    "grunt-contrib-clean": "0.6.x",
    "grunt-contrib-copy": "0.8.x",
    "grunt-contrib-uglify": "0.10.x",
    "grunt-contrib-watch": "0.6.x",
    "grunt-karma": "0.12.x",
    "grunt-livescript": "0.5.x",
    "karma": "0.13.x",
    "karma-chrome-launcher": "0.2.x",
    "karma-firefox-launcher": "0.1.x",
    "karma-ie-launcher": "0.2.x",
    "karma-phantomjs-launcher": "0.2.x",
    "karma-qunit": "0.1.x",
    "promises-aplus-tests": "2.1.x",
    "webpack": "1.12.x"
  },
  "homepage": "https://github.com/zloirock/core-js#readme",
  "keywords": [
    "Array generics",
    "Dict",
    "ECMAScript 5",
    "ECMAScript 6",
    "ECMAScript 7",
    "ES5",
    "ES6",
    "ES7",
    "Harmony",
    "Map",
    "Promise",
    "Set",
    "Strawman",
    "Symbol",
    "WeakMap",
    "WeakSet",
    "partial application",
    "setImmediate"
  ],
  "license": "MIT",
  "main": "index.js",
  "name": "core-js",
  "optionalDependencies": {},
  "readme": "# core-js\n\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/zloirock/core-js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![version](https://img.shields.io/npm/v/core-js.svg)](https://www.npmjs.com/package/core-js) [![npm downloads](https://img.shields.io/npm/dm/core-js.svg)](http://npm-stat.com/charts.html?package=core-js&author=&from=2014-11-18&to=2114-11-18) [![Build Status](https://travis-ci.org/zloirock/core-js.png)](https://travis-ci.org/zloirock/core-js) [![devDependency Status](https://david-dm.org/zloirock/core-js/dev-status.svg)](https://david-dm.org/zloirock/core-js#info=devDependencies)\n\nModular compact standard library for JavaScript. Includes polyfills for [ECMAScript 5](#ecmascript-5), [ECMAScript 6](#ecmascript-6): [symbols](#ecmascript-6-symbol), [collections](#ecmascript-6-collections), [iterators](#ecmascript-6-iterators), [promises](#ecmascript-6-promise), [ECMAScript 7 proposals](#ecmascript-7); [setImmediate](#setimmediate), [array generics](#mozilla-javascript-array-generics). Some additional features such as [dictionaries](#dict) or [extended partial application](#partial-application). You can require only standardized features polyfills, use features without global namespace pollution or create a custom build.\n\n[Example](http://goo.gl/mfHYm2):\n```javascript\nArray.from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3]\n'*'.repeat(10);                       // => '**********'\nPromise.resolve(32).then(log);        // => 32\nsetImmediate(log, 42);                // => 42\n```\n\n[Without global namespace pollution](http://goo.gl/WBhs43):\n```javascript\nvar core = require('core-js/library'); // With a modular system, otherwise use global `core`\ncore.Array.from(new core.Set([1, 2, 3, 2, 1])); // => [1, 2, 3]\ncore.String.repeat('*', 10);                    // => '**********'\ncore.Promise.resolve(32).then(core.log);        // => 32\ncore.setImmediate(core.log, 42);                // => 42\n```\n\n- [Usage](#usage)\n  - [Basic](#basic)\n  - [CommonJS](#commonjs)\n  - [Custom build](#custom-build)\n- [Features](#features)\n  - [ECMAScript 5](#ecmascript-5)\n  - [ECMAScript 6](#ecmascript-6)\n    - [ECMAScript 6: Object](#ecmascript-6-object)\n    - [ECMAScript 6: Function](#ecmascript-6-function)\n    - [ECMAScript 6: Array](#ecmascript-6-array)\n    - [ECMAScript 6: String](#ecmascript-6-string)\n    - [ECMAScript 6: RegExp](#ecmascript-6-regexp)\n    - [ECMAScript 6: Number](#ecmascript-6-number)\n    - [ECMAScript 6: Math](#ecmascript-6-math)\n    - [ECMAScript 6: Symbol](#ecmascript-6-symbol)\n    - [ECMAScript 6: Collections](#ecmascript-6-collections)\n    - [ECMAScript 6: Iterators](#ecmascript-6-iterators)\n    - [ECMAScript 6: Promise](#ecmascript-6-promise)\n    - [ECMAScript 6: Reflect](#ecmascript-6-reflect)\n  - [ECMAScript 7](#ecmascript-7)\n  - [Mozilla JavaScript: Array generics](#mozilla-javascript-array-generics)\n  - [Web standards](#web-standards)\n    - [setTimeout / setInterval](#settimeout--setinterval)\n    - [setImmediate](#setimmediate)\n  - [Non-standard](#non-standard)\n    - [Object](#object)\n    - [Dict](#dict)\n    - [Partial application](#partial-application)\n    - [Number Iterator](#number-iterator)\n    - [Escaping HTML](#escaping-html)\n    - [delay](#delay)\n    - [console](#console)\n- [Missing polyfills](#missing-polyfills)\n- [Changelog](./CHANGELOG.md)\n\n## Usage\n### Basic\n```\nnpm i core-js\nbower install core.js\n```\n\n```javascript\n// Default\nrequire('core-js');\n// Without global namespace pollution\nvar core = require('core-js/library');\n// Shim only\nrequire('core-js/shim');\n```\nIf you need complete build for browser, use builds from `core-js/client` path:  [default](https://raw.githack.com/zloirock/core-js/master/client/core.min.js), [without global namespace pollution](https://raw.githack.com/zloirock/core-js/master/client/library.min.js), [shim only](https://raw.githack.com/zloirock/core-js/master/client/shim.min.js).\n\nWarning: if you uses `core-js` with the extension of native objects, require all needed `core-js` modules at the beginning of entry point of your application, otherwise maybe conflicts.\n\n### CommonJS\nYou can require only needed modules.\n\n```js\nrequire('core-js/es5'); // if you need support IE8-\nrequire('core-js/fn/set');\nrequire('core-js/fn/array/from');\nrequire('core-js/fn/array/find-index');\nArray.from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3]\n[1, 2, NaN, 3, 4].findIndex(isNaN);   // => 2\n\n// or, w/o global namespace pollution:\n\nvar core      = require('core-js/library/es5'); // if you need support IE8-\nvar Set       = require('core-js/library/fn/set');\nvar from      = require('core-js/library/fn/array/from');\nvar findIndex = require('core-js/library/fn/array/find-index');\nfrom(new Set([1, 2, 3, 2, 1]));      // => [1, 2, 3]\nfindIndex([1, 2, NaN, 3, 4], isNaN); // => 2\n```\nAvailable entry points for methods / constructors, as above examples, excluding features from [`es5`](#ecmascript-5) module (this module requires completely in ES3 environment before all other modules).\n\nAvailable namespaces: for example, `core-js/es6/array` (`core-js/library/es6/array`) contains all [ES6 `Array` features](#ecmascript-6-array), `core-js/es6` (`core-js/library/es6`) contains all ES6 features.\n\n### Custom build\n```\nnpm i core-js && cd node_modules/core-js && npm i\nnpm run grunt build:core.dict,es6 -- --blacklist=es6.promise,es6.math --library=on --path=custom uglify\n```\nWhere `core.dict` and `es6` are modules (namespaces) names, which will be added to the build, `es6.promise` and `es6.math` are modules (namespaces) names, which will be excluded from the build, `--library=on` is flag for build without global namespace pollution and `custom` is target file name.\n\nAvailable namespaces: for example, `es6.array` contains [ES6 `Array` features](#ecmascript-6-array), `es6` contains all modules whose names start with `es6`.\n\nAvailable custom build from js code (required `webpack`):\n```js\nrequire('core-js/build')({\n  modules: ['es6', 'core.dict'], // modules / namespaces\n  blacklist: ['es6.reflect'],    // blacklist of modules / namespaces\n  library: false,                // flag for build without global namespace pollution\n}, function(err, code){          // callback\n  // ...\n});\n```\n## Features:\n### ECMAScript 5\nModule [`es5`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es5.js), nothing new - without examples.\n```javascript\nObject\n  .create(proto | null, descriptors?) -> object\n  .getPrototypeOf(object) -> proto | null\n  .defineProperty(target, key, desc) -> target, cap for ie8-\n  .defineProperties(target, descriptors) -> target, cap for ie8-\n  .getOwnPropertyDescriptor(object, key) -> desc\n  .getOwnPropertyNames(object) -> array\n  .keys(object) -> array\nArray\n  .isArray(var) -> bool\n  #slice(start?, end?) -> array, fix for ie7-\n  #join(string = ',') -> string, fix for ie7-\n  #indexOf(var, from?) -> int\n  #lastIndexOf(var, from?) -> int\n  #every(fn(val, index, @), that) -> bool\n  #some(fn(val, index, @), that) -> bool\n  #forEach(fn(val, index, @), that) -> void\n  #map(fn(val, index, @), that) -> array\n  #filter(fn(val, index, @), that) -> array\n  #reduce(fn(memo, val, index, @), memo?) -> var\n  #reduceRight(fn(memo, val, index, @), memo?) -> var\nFunction\n  #bind(object, ...args) -> boundFn(...args)\nDate\n  .now() -> int\n  #toISOString() -> string\n```\nSome features moved to [another modules / namespaces](#ecmascript-6), but available as part of `es5` namespace too:\n```js\nObject\n  .seal(object) -> object, cap for ie8-\n  .freeze(object) -> object, cap for ie8-\n  .preventExtensions(object) -> object, cap for ie8-\n  .isSealed(object) -> bool, cap for ie8-\n  .isFrozen(object) -> bool, cap for ie8-\n  .isExtensible(object) -> bool, cap for ie8-\nString\n  #trim() -> str\n```\n\n### ECMAScript 6\n#### ECMAScript 6: Object\nModules [`es6.object.assign`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.assign.js), [`es6.object.is`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.is.js), [`es6.object.set-prototype-of`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.set-prototype-of.js) and [`es6.object.to-string`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.to-string.js).\n```javascript\nObject\n  .assign(target, ...src) -> target\n  .is(a, b) -> bool\n  .setPrototypeOf(target, proto | null) -> target (required __proto__ - IE11+)\n  #toString() -> string, ES6 fix: @@toStringTag support\n```\n[Example](http://goo.gl/VzmY3j):\n```javascript\nvar foo = {q: 1, w: 2}\n  , bar = {e: 3, r: 4}\n  , baz = {t: 5, y: 6};\nObject.assign(foo, bar, baz); // => foo = {q: 1, w: 2, e: 3, r: 4, t: 5, y: 6}\n\nObject.is(NaN, NaN); // => true\nObject.is(0, -0);    // => false\nObject.is(42, 42);   // => true\nObject.is(42, '42'); // => false\n\nfunction Parent(){}\nfunction Child(){}\nObject.setPrototypeOf(Child.prototype, Parent.prototype);\nnew Child instanceof Child;  // => true\nnew Child instanceof Parent; // => true\n\nvar O = {};\nO[Symbol.toStringTag] = 'Foo';\n'' + O; // => '[object Foo]'\n```\nIn ES6 most `Object` static methods should work with primitives. Modules [`es6.object.freeze`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.freeze.js), [`es6.object.seal`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.seal.js), [`es6.object.prevent-extensions`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.prevent-extensions.js), [`es6.object.is-frozen`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.is-frozen.js), [`es6.object.is-sealed`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.is-sealed.js), [`es6.object.is-extensible`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.is-extensible.js), [`es6.object.get-own-property-descriptor`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.get-own-property-descriptor.js), [`es6.object.get-prototype-of`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.get-prototype-of.js), [`es6.object.keys`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.keys.js), [`es6.object.get-own-property-names`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.object.get-own-property-names.js).\n```javascript\nObject\n  .freeze(var) -> var\n  .seal(var) -> var\n  .preventExtensions(var) -> var\n  .isFrozen(var) -> bool\n  .isSealed(var) -> bool\n  .isExtensible(var) -> bool\n  .getOwnPropertyDescriptor(var, key) -> desc | undefined\n  .getPrototypeOf(var) -> object | null\n  .keys(var) -> array\n  .getOwnPropertyNames(var) -> array\n```\n[Example](http://goo.gl/35lPSi):\n```javascript\nObject.keys('qwe'); // => ['0', '1', '2']\nObject.getPrototypeOf('qwe') === String.prototype; // => true\n```\n#### ECMAScript 6: Function\nModules [`es6.function.name`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.function.name.js) and [`es6.function.has-instance`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.function.has-instance.js).\n```javascript\nFunction\n  #name -> string (IE9+)\n  #@@hasInstance(var) -> bool\n```\n[Example](http://goo.gl/zqu3Wp):\n```javascript\n(function foo(){}).name // => 'foo'\n```\n#### ECMAScript 6: Array\nModules [`es6.array.from`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.array.from.js), [`es6.array.of`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.array.of.js), [`es6.array.copy-within`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.array.copy-within.js), [`es6.array.fill`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.array.fill.js), [`es6.array.find`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.array.find.js) and [`es6.array.find-index`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.array.find-index.js).\n```javascript\nArray\n  .from(iterable | array-like, mapFn(val, index)?, that) -> array\n  .of(...args) -> array\n  #copyWithin(target = 0, start = 0, end = @length) -> @\n  #fill(val, start = 0, end = @length) -> @\n  #find(fn(val, index, @), that) -> val\n  #findIndex(fn(val, index, @), that) -> index\n  #@@unscopables -> object (cap)\n```\n[Example](http://goo.gl/nxmJTe):\n```javascript\nArray.from(new Set([1, 2, 3, 2, 1]));      // => [1, 2, 3]\nArray.from({0: 1, 1: 2, 2: 3, length: 3}); // => [1, 2, 3]\nArray.from('123', Number);                 // => [1, 2, 3]\nArray.from('123', function(it){\n  return it * it;\n});                                        // => [1, 4, 9]\n\nArray.of(1);       // => [1]\nArray.of(1, 2, 3); // => [1, 2, 3]\n\nfunction isOdd(val){\n  return val % 2;\n}\n[4, 8, 15, 16, 23, 42].find(isOdd);      // => 15\n[4, 8, 15, 16, 23, 42].findIndex(isOdd); // => 2\n[4, 8, 15, 16, 23, 42].find(isNaN);      // => undefined\n[4, 8, 15, 16, 23, 42].findIndex(isNaN); // => -1\n\nArray(5).fill(42); // => [42, 42, 42, 42, 42]\n\n[1, 2, 3, 4, 5].copyWithin(0, 3); // => [4, 5, 3, 4, 5]\n```\n#### ECMAScript 6: String\nModules [`es6.string.from-code-point`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.string.from-code-point.js), [`es6.string.raw`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.string.raw.js), [`es6.string.code-point-at`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.string.code-point-at.js), [`es6.string.ends-with`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.string.ends-with.js), [`es6.string.includes`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.string.includes.js), [`es6.string.repeat`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.string.repeat.js), [`es6.string.starts-with`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.string.starts-with.js) and [`es6.string.trim`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.string.trim.js).\n```javascript\nString\n  .fromCodePoint(...codePoints) -> str\n  .raw({raw}, ...substitutions) -> str\n  #includes(str, from?) -> bool\n  #startsWith(str, from?) -> bool\n  #endsWith(str, from?) -> bool\n  #repeat(num) -> str\n  #codePointAt(pos) -> uint\n  #trim() -> str, ES6 fix\n```\n[Examples](http://goo.gl/RMyFBo):\n```javascript\n'foobarbaz'.includes('bar');      // => true\n'foobarbaz'.includes('bar', 4);   // => false\n'foobarbaz'.startsWith('foo');    // => true\n'foobarbaz'.startsWith('bar', 3); // => true\n'foobarbaz'.endsWith('baz');      // => true\n'foobarbaz'.endsWith('bar', 6);   // => true\n\n'string'.repeat(3); // => 'stringstringstring'\n\n'𠮷'.codePointAt(0); // => 134071\nString.fromCodePoint(97, 134071, 98); // => 'a𠮷b'\n\nvar name = 'Bob';\nString.raw`Hi\\n${name}!`;           // => 'Hi\\\\nBob!' (ES6 template string syntax)\nString.raw({raw: 'test'}, 0, 1, 2); // => 't0e1s2t'\n```\n#### ECMAScript 6: RegExp\nModules [`es6.regexp.constructor`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.regexp.constructor.js) and [`es6.regexp.flags`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.regexp.flags.js).\n\nSupport well-known [symbols](#ecmascript-6-symbol) `@@match`, `@@replace`, `@@search` and `@@split`, modules [`es6.regexp.match`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.regexp.match.js), [`es6.regexp.replace`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.regexp.replace.js), [`es6.regexp.search`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.regexp.search.js) and [`es6.regexp.split`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.regexp.split.js).\n```\nString\n  #match(tpl) -> var, ES6 fix for support @@match\n  #replace(tpl, replacer) -> var, ES6 fix for support @@replace\n  #search(tpl) -> var, ES6 fix for support @@search\n  #split(tpl, limit) -> var, ES6 fix for support @@split\n[new] RegExp(pattern, flags?) -> regexp, ES6 fix: can alter flags (IE9+)\n  #flags -> str (IE9+)\n  #@@match(str) -> array | null\n  #@@replace(str, replacer) -> string\n  #@@search(str) -> index\n  #@@split(str, limit) -> array\n```\n[Examples](http://goo.gl/vLV603):\n```javascript\nRegExp(/./g, 'm'); // => /./m\n\n/foo/.flags;    // => ''\n/foo/gim.flags; // => 'gim'\n\n'foo'.match({[Symbol.match]: _ => 1});     // => 1\n'foo'.replace({[Symbol.replace]: _ => 2}); // => 2\n'foo'.search({[Symbol.search]: _ => 3});   // => 3\n'foo'.split({[Symbol.split]: _ => 4});     // => 4\n```\n#### ECMAScript 6: Number\nModule [`es6.number.constructor`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.number.constructor.js). `Number` constructor support binary and octal literals, [example](http://goo.gl/jRd6b3):\n```javascript\nNumber('0b1010101'); // => 85\nNumber('0o7654321'); // => 2054353\n```\n`Number`: modules [`es6.number.epsilon`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.number.epsilon.js), [`es6.number.is-finite`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.number.is-finite.js), [`es6.number.is-integer`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.number.is-integer.js), [`es6.number.is-nan`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.number.is-nan.js), [`es6.number.is-safe-integer`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.number.is-safe-integer.js), [`es6.number.max-safe-integer`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.number.max-safe-integer.js), [`es6.number.min-safe-integer`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.number.min-safe-integer.js), [`es6.number.parse-float`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.number.parse-float.js), [`es6.number.parse-int`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.number.parse-int.js).\n```javascript\n[new] Number(var) -> number | number object\n  .EPSILON -> num\n  .isFinite(num) -> bool\n  .isInteger(num) -> bool\n  .isNaN(num) -> bool\n  .isSafeInteger(num) -> bool\n  .MAX_SAFE_INTEGER -> int\n  .MIN_SAFE_INTEGER -> int\n  .parseFloat(str) -> num\n  .parseInt(str) -> int\n```\n#### ECMAScript 6: Math\n`Math`: modules [`es6.math.acosh`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.acosh.js), [`es6.math.asinh`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.asinh.js), [`es6.math.atanh`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.atanh.js), [`es6.math.cbrt`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.cbrt.js), [`es6.math.clz32`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.clz32.js), [`es6.math.cosh`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.cosh.js), [`es6.math.expm1`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.expm1.js), [`es6.math.fround`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.fround.js), [`es6.math.hypot`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.hypot.js), [`es6.math.imul`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.imul.js), [`es6.math.log10`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.log10.js), [`es6.math.log1p`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.log1p.js), [`es6.math.log2`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.log2.js), [`es6.math.sign`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.sign.js), [`es6.math.sinh`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.sinh.js), [`es6.math.tanh`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.tanh.js), [`es6.math.trunc`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.math.trunc.js).\n```javascript\nMath\n  .acosh(num) -> num\n  .asinh(num) -> num\n  .atanh(num) -> num\n  .cbrt(num) -> num\n  .clz32(num) -> uint\n  .cosh(num) -> num\n  .expm1(num) -> num\n  .fround(num) -> num\n  .hypot(...args) -> num\n  .imul(num, num) -> int\n  .log1p(num) -> num\n  .log10(num) -> num\n  .log2(num) -> num\n  .sign(num) -> 1 | -1 | 0 | -0 | NaN\n  .sinh(num) -> num\n  .tanh(num) -> num\n  .trunc(num) -> num\n```\n\n#### ECMAScript 6: Symbol\nModule [`es6.symbol`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.symbol.js).\n```javascript\nSymbol(description?) -> symbol\n  .hasInstance -> @@hasInstance\n  .isConcatSpreadable -> @@isConcatSpreadable\n  .iterator -> @@iterator\n  .match -> @@match\n  .replace -> @@replace\n  .search -> @@search\n  .species -> @@species\n  .split -> @@split\n  .toPrimitive -> @@toPrimitive\n  .toStringTag -> @@toStringTag\n  .unscopables -> @@unscopables\n  .for(key) -> symbol\n  .keyFor(symbol) -> key\n  .useSimple() -> void\n  .useSetter() -> void\nObject\n  .getOwnPropertySymbols(object) -> array\n```\nAlso wrapped some methods for correct work with `Symbol` polyfill.\n```js\nObject\n  .create(proto | null, descriptors?) -> object\n  .defineProperty(target, key, desc) -> target\n  .defineProperties(target, descriptors) -> target\n  .getOwnPropertyDescriptor(var, key) -> desc | undefined\n  .getOwnPropertyNames(var) -> array\n  #propertyIsEnumerable(key) -> bool\nJSON\n  .stringify(target, replacer?, space?) -> string | undefined\n```\n[Basic example](http://goo.gl/BbvWFc):\n```javascript\nvar Person = (function(){\n  var NAME = Symbol('name');\n  function Person(name){\n    this[NAME] = name;\n  }\n  Person.prototype.getName = function(){\n    return this[NAME];\n  };\n  return Person;\n})();\n\nvar person = new Person('Vasya');\nlog(person.getName());          // => 'Vasya'\nlog(person['name']);            // => undefined\nlog(person[Symbol('name')]);    // => undefined, symbols are uniq\nfor(var key in person)log(key); // => only 'getName', symbols are not enumerable\n```\n`Symbol.for` & `Symbol.keyFor` [example](http://goo.gl/0pdJjX):\n```javascript\nvar symbol = Symbol.for('key');\nsymbol === Symbol.for('key'); // true\nSymbol.keyFor(symbol);        // 'key'\n```\n[Example](http://goo.gl/mKVOQJ) with methods for getting own object keys:\n```javascript\nvar O = {a: 1};\nObject.defineProperty(O, 'b', {value: 2});\nO[Symbol('c')] = 3;\nObject.keys(O);                  // => ['a']\nObject.getOwnPropertyNames(O);   // => ['a', 'b']\nObject.getOwnPropertySymbols(O); // => [Symbol(c)]\nReflect.ownKeys(O);              // => ['a', 'b', Symbol(c)]\n```\n#### Caveats when using `Symbol` polyfill:\n\n* We can't add new primitive type, `Symbol` returns object.\n* `Symbol.for` and `Symbol.keyFor` can't be shimmed cross-realm.\n* By default, to hide the keys, `Symbol` polyfill defines setter in `Object.prototype`. For this reason, uncontrolled creation of symbols can cause memory leak and the `in` operator is not working correctly with `Symbol` polyfill: `Symbol() in {} // => true`.\n\nYou can disable defining setters in `Object.prototype`. [Example](http://goo.gl/N5UD7J):\n```javascript\nSymbol.useSimple();\nvar s1 = Symbol('s1')\n  , o1 = {};\no1[s1] = true;\nfor(var key in o1)log(key); // => 'Symbol(s1)_t.qamkg9f3q', w/o native Symbol\n\nSymbol.useSetter();\nvar s2 = Symbol('s2')\n  , o2 = {};\no2[s2] = true;\nfor(var key in o2)log(key); // nothing\n```\n* Currently, `core-js` not adds setters to `Object.prototype` for well-known symbols for correct work something like `Symbol.iterator in foo`. It can cause problems with their enumerability.\n\n#### ECMAScript 6: Collections\n`core-js` uses native collections in most case, just fixes methods / constructor, if it's required, and in old environment uses fast polyfill (O(1) lookup).\n#### Map\nModule [`es6.map`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.map.js). About iterators from this module [here](#ecmascript-6-iterators).\n```javascript\nnew Map(iterable (entries) ?) -> map\n  #clear() -> void\n  #delete(key) -> bool\n  #forEach(fn(val, key, @), that) -> void\n  #get(key) -> val\n  #has(key) -> bool\n  #set(key, val) -> @\n  #size -> uint\n```\n[Example](http://goo.gl/RDbROF):\n```javascript\nvar a = [1];\n\nvar map = new Map([['a', 1], [42, 2]]);\nmap.set(a, 3).set(true, 4);\n\nlog(map.size);        // => 4\nlog(map.has(a));      // => true\nlog(map.has([1]));    // => false\nlog(map.get(a));      // => 3\nmap.forEach(function(val, key){\n  log(val);           // => 1, 2, 3, 4\n  log(key);           // => 'a', 42, [1], true\n});\nmap.delete(a);\nlog(map.size);        // => 3\nlog(map.get(a));      // => undefined\nlog(Array.from(map)); // => [['a', 1], [42, 2], [true, 4]]\n```\n#### Set\nModule [`es6.set`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.set.js). About iterators from this module [here](#ecmascript-6-iterators).\n```javascript\nnew Set(iterable?) -> set\n  #add(key) -> @\n  #clear() -> void\n  #delete(key) -> bool\n  #forEach(fn(el, el, @), that) -> void\n  #has(key) -> bool\n  #size -> uint\n```\n[Example](http://goo.gl/7XYya3):\n```javascript\nvar set = new Set(['a', 'b', 'a', 'c']);\nset.add('d').add('b').add('e');\nlog(set.size);        // => 5\nlog(set.has('b'));    // => true\nset.forEach(function(it){\n  log(it);            // => 'a', 'b', 'c', 'd', 'e'\n});\nset.delete('b');\nlog(set.size);        // => 4\nlog(set.has('b'));    // => false\nlog(Array.from(set)); // => ['a', 'c', 'd', 'e']\n```\n#### WeakMap\nModule [`es6.weak-map`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.weak-map.js).\n```javascript\nnew WeakMap(iterable (entries) ?) -> weakmap\n  #delete(key) -> bool\n  #get(key) -> val\n  #has(key) -> bool\n  #set(key, val) -> @\n```\n[Example](http://goo.gl/SILXyw):\n```javascript\nvar a = [1]\n  , b = [2]\n  , c = [3];\n\nvar wmap = new WeakMap([[a, 1], [b, 2]]);\nwmap.set(c, 3).set(b, 4);\nlog(wmap.has(a));   // => true\nlog(wmap.has([1])); // => false\nlog(wmap.get(a));   // => 1\nwmap.delete(a);\nlog(wmap.get(a));   // => undefined\n\n// Private properties store:\nvar Person = (function(){\n  var names = new WeakMap;\n  function Person(name){\n    names.set(this, name);\n  }\n  Person.prototype.getName = function(){\n    return names.get(this);\n  };\n  return Person;\n})();\n\nvar person = new Person('Vasya');\nlog(person.getName());          // => 'Vasya'\nfor(var key in person)log(key); // => only 'getName'\n```\n#### WeakSet\nModule [`es6.weak-set`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.weak-set.js).\n```javascript\nnew WeakSet(iterable?) -> weakset\n  #add(key) -> @\n  #delete(key) -> bool\n  #has(key) -> bool\n```\n[Example](http://goo.gl/TdFbEx):\n```javascript\nvar a = [1]\n  , b = [2]\n  , c = [3];\n\nvar wset = new WeakSet([a, b, a]);\nwset.add(c).add(b).add(c);\nlog(wset.has(b));   // => true\nlog(wset.has([2])); // => false\nwset.delete(b);\nlog(wset.has(b));   // => false\n```\n#### Caveats when using collections polyfill:\n\n* Frozen objects as collection keys are supported, but not recomended - it's slow (O(n) instead of O(1)) and, for weak-collections, leak.\n* Weak-collections polyfill stores values as hidden properties of keys. It works correct and not leak in most cases. However, it is desirable to store a collection longer than its keys.\n\n#### ECMAScript 6: Iterators\nModules [`es6.string.iterator`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.string.iterator.js) and [`es6.array.iterator`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.array.iterator.js):\n```javascript\nString\n  #@@iterator() -> iterator\nArray\n  #values() -> iterator\n  #keys() -> iterator\n  #entries() -> iterator (entries)\n  #@@iterator() -> iterator\nArguments\n  #@@iterator() -> iterator (available only in core-js methods)\n```\nModules [`es6.map`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.map.js) and [`es6.set`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.set.js):\n```javascript\nMap\n  #values() -> iterator\n  #keys() -> iterator\n  #entries() -> iterator (entries)\n  #@@iterator() -> iterator (entries)\nSet\n  #values() -> iterator\n  #keys() -> iterator\n  #entries() -> iterator (entries)\n  #@@iterator() -> iterator\n```\nModule [`web.dom.iterable`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/web.dom.iterable.js):\n```javascript\nNodeList\n  #@@iterator() -> iterator\n```\n[Example](http://goo.gl/nzHVQF):\n```javascript\nvar string = 'a𠮷b';\n\nfor(var val of string)log(val);         // => 'a', '𠮷', 'b'\n\nvar array = ['a', 'b', 'c'];\n\nfor(var val of array)log(val);          // => 'a', 'b', 'c'\nfor(var val of array.values())log(val); // => 'a', 'b', 'c'\nfor(var key of array.keys())log(key);   // => 0, 1, 2\nfor(var [key, val] of array.entries()){\n  log(key);                             // => 0, 1, 2\n  log(val);                             // => 'a', 'b', 'c'\n}\n\nvar map = new Map([['a', 1], ['b', 2], ['c', 3]]);\n\nfor(var [key, val] of map){\n  log(key);                             // => 'a', 'b', 'c'\n  log(val);                             // => 1, 2, 3\n}\nfor(var val of map.values())log(val);   // => 1, 2, 3\nfor(var key of map.keys())log(key);     // => 'a', 'b', 'c'\nfor(var [key, val] of map.entries()){\n  log(key);                             // => 'a', 'b', 'c'\n  log(val);                             // => 1, 2, 3\n}\n\nvar set = new Set([1, 2, 3, 2, 1]);\n\nfor(var val of set)log(val);            // => 1, 2, 3\nfor(var val of set.values())log(val);   // => 1, 2, 3\nfor(var key of set.keys())log(key);     // => 1, 2, 3\nfor(var [key, val] of set.entries()){\n  log(key);                             // => 1, 2, 3\n  log(val);                             // => 1, 2, 3\n}\n\nfor(var x of document.querySelectorAll('*')){\n  log(x.id);\n}\n```\nModules [`core.is-iterable`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.is-iterable.js), [`core.get-iterator`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.get-iterator.js), [`core.get-iterator-method`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.get-iterator-method.js) - helpers for check iterable / get iterator in `library` version or, for example, for `arguments` object:\n```javascript\ncore\n  .isIterable(var) -> bool\n  .getIterator(iterable) -> iterator\n  .getIteratorMethod(var) -> function | undefined\n```\n[Example](http://goo.gl/SXsM6D):\n```js\nvar list = (function(){\n  return arguments;\n})(1, 2, 3);\n\nlog(core.isIterable(list)); // true;\n\nvar iter = core.getIterator(list);\nlog(iter.next().value); // 1\nlog(iter.next().value); // 2\nlog(iter.next().value); // 3\nlog(iter.next().value); // undefined\n\ncore.getIterator({});   // TypeError: [object Object] is not iterable!\n\nvar iterFn = core.getIteratorMethod(list);\nlog(typeof iterFn);     // 'function'\nvar iter = iterFn.call(list);\nlog(iter.next().value); // 1\nlog(iter.next().value); // 2\nlog(iter.next().value); // 3\nlog(iter.next().value); // undefined\n\nlog(core.getIteratorMethod({})); // undefined\n```\n#### ECMAScript 6: Promise\nModule [`es6.promise`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.promise.js).\n```javascript\nnew Promise(executor(resolve(var), reject(var))) -> promise\n  #then(resolved(var), rejected(var)) -> promise\n  #catch(rejected(var)) -> promise\n  .resolve(var || promise) -> promise\n  .reject(var) -> promise\n  .all(iterable) -> promise\n  .race(iterable) -> promise\n```\nBasic [example](http://goo.gl/vGrtUC):\n```javascript\nfunction sleepRandom(time){\n  return new Promise(function(resolve, reject){\n    setTimeout(resolve, time * 1e3, 0 | Math.random() * 1e3);\n  });\n}\n\nlog('Run');                    // => Run\nsleepRandom(5).then(function(result){\n  log(result);                 // => 869, after 5 sec.\n  return sleepRandom(10);\n}).then(function(result){\n  log(result);                 // => 202, after 10 sec.\n}).then(function(){\n  log('immediately after');    // => immediately after\n  throw Error('Irror!');\n}).then(function(){\n  log('will not be displayed');\n}).catch(log);                 // => => Error: Irror!\n```\n`Promise.resolve` and `Promise.reject` [example](http://goo.gl/vr8TN3):\n```javascript\nPromise.resolve(42).then(log); // => 42\nPromise.reject(42).catch(log); // => 42\n\nPromise.resolve($.getJSON('/data.json')); // => ES6 promise\n```\n`Promise.all` [example](http://goo.gl/RdoDBZ):\n```javascript\nPromise.all([\n  'foo',\n  sleepRandom(5),\n  sleepRandom(15),\n  sleepRandom(10)  // after 15 sec:\n]).then(log);      // => ['foo', 956, 85, 382]\n```\n`Promise.race` [example](http://goo.gl/L8ovkJ):\n```javascript\nfunction timeLimit(promise, time){\n  return Promise.race([promise, new Promise(function(resolve, reject){\n    setTimeout(reject, time * 1e3, Error('Await > ' + time + ' sec'));\n  })]);\n}\n\ntimeLimit(sleepRandom(5), 10).then(log);   // => 853, after 5 sec.\ntimeLimit(sleepRandom(15), 10).catch(log); // Error: Await > 10 sec\n```\nECMAScript 7 [async functions](https://tc39.github.io/ecmascript-asyncawait) [example](http://goo.gl/wnQS4j):\n```javascript\nvar delay = time => new Promise(resolve => setTimeout(resolve, time))\n\nasync function sleepRandom(time){\n  await delay(time * 1e3);\n  return 0 | Math.random() * 1e3;\n};\nasync function sleepError(time, msg){\n  await delay(time * 1e3);\n  throw Error(msg);\n};\n\n(async () => {\n  try {\n    log('Run');                // => Run\n    log(await sleepRandom(5)); // => 936, after 5 sec.\n    var [a, b, c] = await Promise.all([\n      sleepRandom(5),\n      sleepRandom(15),\n      sleepRandom(10)\n    ]);\n    log(a, b, c);              // => 210 445 71, after 15 sec.\n    await sleepError(5, 'Irror!');\n    log('Will not be displayed');\n  } catch(e){\n    log(e);                    // => Error: 'Irror!', after 5 sec.\n  }\n})();\n```\n\n##### Unhandled rejection tracking\n\n`core-js` `Promise` supports (but not adds to native implementations) unhandled rejection tracking.\n\n[Node.js](https://gist.github.com/benjamingr/0237932cee84712951a2):\n```js\nprocess.on('unhandledRejection', (reason, promise) => console.log(reason, promise));\nPromise.reject(42);\n// 42 [object Promise]\n\n```\nIn a browser, by default, you will see notify in the console, or you can add a custom handler, [example](http://goo.gl/izTr2I):\n```js\nwindow.onunhandledrejection = e => log(e.reason, e.promise);\nPromise.reject(42);\n// 42 [object Promise]\n```\n**Warning**: The problem here - we can't add it to native `Promise` implementations, but by idea `core-js` should use enough correct native implementation if it's available. Currently, most native implementations are buggy and `core-js` uses polyfill, but the situation will be changed. If someone wanna use this hook everywhere - he should delete `window.Promise` before inclusion `core-js`.\n\n\n#### ECMAScript 6: Reflect\nModules [`es6.reflect.apply`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.apply.js), [`es6.reflect.construct`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.construct.js), [`es6.reflect.define-property`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.define-property.js), [`es6.reflect.delete-property`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.delete-property.js), [`es6.reflect.enumerate`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.enumerate.js), [`es6.reflect.get`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.get.js), [`es6.reflect.get-own-property-descriptor`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.get-own-property-descriptor.js), [`es6.reflect.get-prototype-of`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.get-prototype-of.js), [`es6.reflect.has`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.has.js), [`es6.reflect.is-extensible`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.is-extensible.js), [`es6.reflect.own-keys`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.own-keys.js), [`es6.reflect.prevent-extensions`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.prevent-extensions.js), [`es6.reflect.set`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.set.js), [`es6.reflect.set-prototype-of`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es6.reflect.set-prototype-of.js).\n```javascript\nReflect\n  .apply(target, thisArgument, argumentsList) -> var\n  .construct(target, argumentsList, newTarget?) -> object\n  .defineProperty(target, propertyKey, attributes) -> bool\n  .deleteProperty(target, propertyKey) -> bool\n  .enumerate(target) -> iterator\n  .get(target, propertyKey, receiver?) -> var\n  .getOwnPropertyDescriptor(target, propertyKey) -> desc\n  .getPrototypeOf(target) -> object | null\n  .has(target, propertyKey) -> bool\n  .isExtensible(target) -> bool\n  .ownKeys(target) -> array\n  .preventExtensions(target) -> bool\n  .set(target, propertyKey, V, receiver?) -> bool\n  .setPrototypeOf(target, proto) -> bool (required __proto__ - IE11+)\n```\n[Example](http://goo.gl/gVT0cH):\n```javascript\nvar O = {a: 1};\nObject.defineProperty(O, 'b', {value: 2});\nO[Symbol('c')] = 3;\nReflect.ownKeys(O); // => ['a', 'b', Symbol(c)]\n\nfunction C(a, b){\n  this.c = a + b;\n}\n\nvar instance = Reflect.construct(C, [20, 22]);\ninstance.c; // => 42\n```\n### ECMAScript 7\n* `Array#includes` [proposal](https://github.com/domenic/Array.prototype.includes) - module [`es7.array.includes`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.array.includes.js)\n* `String#at` [proposal](https://github.com/mathiasbynens/String.prototype.at) - module [`es7.string.at`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.string.at.js)\n* `String#padLeft`, `String#padRight` [proposal](https://github.com/ljharb/proposal-string-pad-left-right) - modules [`es7.string.pad-left`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.string.pad-left.js), [`es7.string.pad-right`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.string.pad-right.js)\n* `String#trimLeft`, `String#trimRight` [proposal](https://github.com/sebmarkbage/ecmascript-string-left-right-trim) - modules [`es7.string.trim-left`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.string.trim-right.js), [`es7.string.trim-right`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.string.trim-right.js)\n* `Object.values`, `Object.entries` [proposal](https://github.com/ljharb/proposal-object-values-entries) - modules [`es7.object.values`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.object.values.js), [`es7.object.entries`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.object.entries.js)\n* `Object.getOwnPropertyDescriptors` [proposal](https://gist.github.com/WebReflection/9353781) - module [`es7.object.get-own-property-descriptors`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.object.get-own-property-descriptors.js)\n* `RegExp.escape` [proposal](https://github.com/benjamingr/RexExp.escape) - module [`es7.regexp.escape`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.regexp.escape.js)\n* `Map#toJSON`, `Set#toJSON` [proposal](https://github.com/DavidBruant/Map-Set.prototype.toJSON) - modules [`es7.map.to-json`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.map.to-json.js), [`es7.set.to-json`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/es7.set.to-json.js)\n\n```javascript\nArray\n  #includes(var, from?) -> bool\nString\n  #at(index) -> string\n  #padLeft(length, fillStr = ' ') -> string\n  #padRight(length, fillStr = ' ') -> string\n  #trimLeft() -> string\n  #trimRight() -> string\nObject\n  .values(object) -> array\n  .entries(object) -> array\n  .getOwnPropertyDescriptors(object) -> object\nRegExp\n  .escape(str) -> str\nMap\n  #toJSON() -> array\nSet\n  #toJSON() -> array\n```\n[Examples](http://goo.gl/aUZQRH):\n```javascript\n[1, 2, 3].includes(2);        // => true\n[1, 2, 3].includes(4);        // => false\n[1, 2, 3].includes(2, 2);     // => false\n\n[NaN].indexOf(NaN);           // => -1\n[NaN].includes(NaN);          // => true\nArray(1).indexOf(undefined);  // => -1\nArray(1).includes(undefined); // => true\n\n'a𠮷b'.at(1);        // => '𠮷'\n'a𠮷b'.at(1).length; // => 2\n\n'hello'.padLeft(10);          // => '     hello'\n'hello'.padLeft(10, '1234');  // => '41234hello'\n'hello'.padRight(10);         // => 'hello     '\n'hello'.padRight(10, '1234'); // => 'hello12341'\n\n'   hello   '.trimLeft();  // => 'hello   '\n'   hello   '.trimRight(); // => '   hello'\n\nObject.values({a: 1, b: 2, c: 3});  // => [1, 2, 3]\nObject.entries({a: 1, b: 2, c: 3}); // => [['a', 1], ['b', 2], ['c', 3]]\n\n// Shallow object cloning with prototype and descriptors:\nvar copy = Object.create(Object.getPrototypeOf(O), Object.getOwnPropertyDescriptors(O));\n// Mixin:\nObject.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n\nRegExp.escape('Hello, []{}()*+?.\\\\^$|!'); // => 'Hello, \\[\\]\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|!'\n\nJSON.stringify(new Map([['a', 'b'], ['c', 'd']])); // => '[[\"a\",\"b\"],[\"c\",\"d\"]]'\nJSON.stringify(new Set([1, 2, 3, 2, 1]));          // => '[1,2,3]'\n```\n### Mozilla JavaScript: Array generics\nModule [`js.array.statics`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/js.array.statics.js).\n```javascript\nArray\n  .{...ArrayPrototype methods}\n```\n\n```javascript\nArray.slice(arguments, 1);\n\nArray.join('abcdef', '+'); // => 'a+b+c+d+e+f'\n\nvar form = document.getElementsByClassName('form__input');\nArray.reduce(form, function(memo, it){\n  memo[it.name] = it.value;\n  return memo;\n}, {}); // => {name: 'Vasya', age: '42', sex: 'yes, please'}\n```\n### Web standards\n#### setTimeout / setInterval\nModule [`web.timers`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/web.timers.js). Additional arguments fix for IE9-.\n```javascript\nsetTimeout(fn(...args), time, ...args) -> id\nsetInterval(fn(...args), time, ...args) -> id\n```\n```javascript\n// Before:\nsetTimeout(log.bind(null, 42), 1000);\n// After:\nsetTimeout(log, 1000, 42);\n```\n#### setImmediate\nModule [`web.immediate`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/web.immediate.js). [`setImmediate` proposal](https://developer.mozilla.org/en-US/docs/Web/API/Window.setImmediate) polyfill.\n```javascript\nsetImmediate(fn(...args), ...args) -> id\nclearImmediate(id) -> void\n```\n[Example](http://goo.gl/6nXGrx):\n```javascript\nsetImmediate(function(arg1, arg2){\n  log(arg1, arg2); // => Message will be displayed with minimum delay\n}, 'Message will be displayed', 'with minimum delay');\n\nclearImmediate(setImmediate(function(){\n  log('Message will not be displayed');\n}));\n```\n### Non-standard\n#### Object\nModules [`core.object.is-object`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.object.is-object.js), [`core.object.classof`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.object.classof.js), [`core.object.define`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.object.define.js), [`core.object.make`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.object.make.js).\n```javascript\nObject\n  .isObject(var) -> bool\n  .classof(var) -> string \n  .define(target, mixin) -> target\n  .make(proto | null, mixin?) -> object\n```\nObject classify [examples](http://goo.gl/YZQmGo):\n```javascript\nObject.isObject({});    // => true\nObject.isObject(isNaN); // => true\nObject.isObject(null);  // => false\n\nvar classof = Object.classof;\n\nclassof(null);                 // => 'Null'\nclassof(undefined);            // => 'Undefined'\nclassof(1);                    // => 'Number'\nclassof(true);                 // => 'Boolean'\nclassof('string');             // => 'String'\nclassof(Symbol());             // => 'Symbol'\n\nclassof(new Number(1));        // => 'Number'\nclassof(new Boolean(true));    // => 'Boolean'\nclassof(new String('string')); // => 'String'\n\nvar fn   = function(){}\n  , list = (function(){return arguments})(1, 2, 3);\n\nclassof({});                   // => 'Object'\nclassof(fn);                   // => 'Function'\nclassof([]);                   // => 'Array'\nclassof(list);                 // => 'Arguments'\nclassof(/./);                  // => 'RegExp'\nclassof(new TypeError);        // => 'Error'\n\nclassof(new Set);              // => 'Set'\nclassof(new Map);              // => 'Map'\nclassof(new WeakSet);          // => 'WeakSet'\nclassof(new WeakMap);          // => 'WeakMap'\nclassof(new Promise(fn));      // => 'Promise'\n\nclassof([].values());          // => 'Array Iterator'\nclassof(new Set().values());   // => 'Set Iterator'\nclassof(new Map().values());   // => 'Map Iterator'\n\nclassof(Math);                 // => 'Math'\nclassof(JSON);                 // => 'JSON'\n\nfunction Example(){}\nExample.prototype[Symbol.toStringTag] = 'Example';\n\nclassof(new Example);          // => 'Example'\n```\n`Object.define` and `Object.make` [examples](http://goo.gl/rtpD5Z):\n```javascript\n// Before:\nObject.defineProperty(target, 'c', {\n  enumerable: true,\n  configurable: true,\n  get: function(){\n    return this.a + this.b;\n  }\n});\n\n// After:\nObject.define(target, {\n  get c(){\n    return this.a + this.b;\n  }\n});\n\n// Shallow object cloning with prototype and descriptors:\nvar copy = Object.make(Object.getPrototypeOf(src), src);\n\n// Simple inheritance:\nfunction Vector2D(x, y){\n  this.x = x;\n  this.y = y;\n}\nObject.define(Vector2D.prototype, {\n  get xy(){\n    return Math.hypot(this.x, this.y);\n  }\n});\nfunction Vector3D(x, y, z){\n  Vector2D.apply(this, arguments);\n  this.z = z;\n}\nVector3D.prototype = Object.make(Vector2D.prototype, {\n  constructor: Vector3D,\n  get xyz(){\n    return Math.hypot(this.x, this.y, this.z);\n  }\n});\n\nvar vector = new Vector3D(9, 12, 20);\nlog(vector.xy);  // => 15\nlog(vector.xyz); // => 25\nvector.y++;\nlog(vector.xy);  // => 15.811388300841896\nlog(vector.xyz); // => 25.495097567963924\n```\n#### Dict\nModule [`core.dict`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.dict.js). Based on [TC39 discuss](https://github.com/rwaldron/tc39-notes/blob/master/es6/2012-11/nov-29.md#collection-apis-review) / [strawman](http://wiki.ecmascript.org/doku.php?id=harmony:modules_standard#dictionaries).\n```javascript\n[new] Dict(iterable (entries) | object ?) -> dict\n  .isDict(var) -> bool\n  .values(object) -> iterator\n  .keys(object) -> iterator\n  .entries(object) -> iterator (entries)\n  .has(object, key) -> bool\n  .get(object, key) -> val\n  .set(object, key, value) -> object\n  .forEach(object, fn(val, key, @), that) -> void\n  .map(object, fn(val, key, @), that) -> new @\n  .mapPairs(object, fn(val, key, @), that) -> new @\n  .filter(object, fn(val, key, @), that) -> new @\n  .some(object, fn(val, key, @), that) -> bool\n  .every(object, fn(val, key, @), that) -> bool\n  .find(object, fn(val, key, @), that) -> val\n  .findKey(object, fn(val, key, @), that) -> key\n  .keyOf(object, var) -> key\n  .includes(object, var) -> bool\n  .reduce(object, fn(memo, val, key, @), memo?) -> var\n```\n`Dict` create object without prototype from iterable or simple object. [Example](http://goo.gl/pnp8Vr):\n```javascript\nvar map = new Map([['a', 1], ['b', 2], ['c', 3]]);\n\nDict();                    // => {__proto__: null}\nDict({a: 1, b: 2, c: 3});  // => {__proto__: null, a: 1, b: 2, c: 3}\nDict(map);                 // => {__proto__: null, a: 1, b: 2, c: 3}\nDict([1, 2, 3].entries()); // => {__proto__: null, 0: 1, 1: 2, 2: 3}\n\nvar dict = Dict({a: 42});\ndict instanceof Object;   // => false\ndict.a;                   // => 42\ndict.toString;            // => undefined\n'a' in dict;              // => true\n'hasOwnProperty' in dict; // => false\n\nDict.isDict({});     // => false\nDict.isDict(Dict()); // => true\n```\n`Dict.keys`, `Dict.values` and `Dict.entries` returns iterators for objects, [examples](http://goo.gl/xAvECH):\n```javascript\nvar dict = {a: 1, b: 2, c: 3};\n\nfor(var key of Dict.keys(dict))log(key); // => 'a', 'b', 'c'\n\nfor(var val of Dict.values(dict))log(val); // => 1, 2, 3\n\nfor(var [key, val] of Dict.entries(dict)){\n  log(key); // => 'a', 'b', 'c'\n  log(val); // => 1, 2, 3\n}\n\nnew Map(Dict.entries(dict)); // => Map {a: 1, b: 2, c: 3}\n```\nBasic dict operations for objects with prototype [example](http://goo.gl/B28UnG):\n```js\n'q' in {q: 1};            // => true\n'toString' in {};         // => true\n\nDict.has({q: 1}, 'q');    // => true\nDict.has({}, 'toString'); // => false\n\n({q: 1})['q'];            // => 1\n({}).toString;            // => function toString(){ [native code] }\n\nDict.get({q: 1}, 'q');    // => 1\nDict.get({}, 'toString'); // => undefined\n\nvar O = {};\nO['q'] = 1;\nO['q'];         // => 1\nO['__proto__'] = {w: 2};\nO['__proto__']; // => {w: 2}\nO['w'];         // => 2\n\nvar O = {};\nDict.set(O, 'q', 1);\nO['q'];         // => 1\nDict.set(O, '__proto__', {w: 2});\nO['__proto__']; // => {w: 2}\nO['w'];         // => undefined\n```\nOther methods of `Dict` module are static equialents of `Array.prototype` methods for dictionaries, [examples](http://goo.gl/xFi1RH):\n```javascript\nvar dict = {a: 1, b: 2, c: 3};\n\nDict.forEach(dict, console.log, console);\n// => 1, 'a', {a: 1, b: 2, c: 3}\n// => 2, 'b', {a: 1, b: 2, c: 3}\n// => 3, 'c', {a: 1, b: 2, c: 3}\n\nDict.map(dict, function(it){\n  return it * it;\n}); // => {a: 1, b: 4, c: 9}\n\nDict.mapPairs(dict, function(val, key){\n  if(key != 'b')return [key + key, val * val];\n}); // => {aa: 1, cc: 9}\n\nDict.filter(dict, function(it){\n  return it % 2;\n}); // => {a: 1, c: 3}\n\nDict.some(dict, function(it){\n  return it === 2;\n}); // => true\n\nDict.every(dict, function(it){\n  return it === 2;\n}); // => false\n\nDict.find(dict, function(it){\n  return it > 2;\n}); // => 3\nDict.find(dict, function(it){\n  return it > 4;\n}); // => undefined\n\nDict.findKey(dict, function(it){\n  return it > 2;\n}); // => 'c'\nDict.findKey(dict, function(it){\n  return it > 4;\n}); // => undefined\n\nDict.keyOf(dict, 2);    // => 'b'\nDict.keyOf(dict, 4);    // => undefined\n\nDict.includes(dict, 2); // => true\nDict.includes(dict, 4); // => false\n\nDict.reduce(dict, function(memo, it){\n  return memo + it;\n});     // => 6\nDict.reduce(dict, function(memo, it){\n  return memo + it;\n}, ''); // => '123'\n```\n#### Partial application\nModule [`core.function.part`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.function.part.js).\n```javascript\nFunction\n  #part(...args | _) -> fn(...args)\n```\n`Function#part` partial apply function without `this` binding. Uses global variable `_` (`core._` for builds without global namespace pollution) as placeholder and not conflict with `Underscore` / `LoDash`. [Examples](http://goo.gl/p9ZJ8K):\n```javascript\nvar fn1 = log.part(1, 2);\nfn1(3, 4);    // => 1, 2, 3, 4\n\nvar fn2 = log.part(_, 2, _, 4);\nfn2(1, 3);    // => 1, 2, 3, 4\n\nvar fn3 = log.part(1, _, _, 4);\nfn3(2, 3);    // => 1, 2, 3, 4\n\nfn2(1, 3, 5); // => 1, 2, 3, 4, 5\nfn2(1);       // => 1, 2, undefined, 4\n```\n#### Number Iterator\nModules [`core.number.iterator`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.number.iterator.js).\n```javascript\nNumber\n  #@@iterator() -> iterator\n```\n[Examples](http://goo.gl/o45pCN):\n```javascript\nfor(var i of 3)log(i); // => 0, 1, 2\n\n[...10]; // => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n\nArray.from(10, Math.random); // => [0.9817775336559862, 0.02720663254149258, ...]\n\nArray.from(10, function(it){\n  return this + it * it;\n}, .42); // => [0.42, 1.42, 4.42, 9.42, 16.42, 25.42, 36.42, 49.42, 64.42, 81.42]\n```\n#### Escaping HTML\nModules [`core.string.escape-html`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.string.escape-html.js) and [`core.string.unescape-html`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.string.unescape-html.js).\n```javascript\nString\n  #escapeHTML() -> str\n  #unescapeHTML() -> str\n```\n[Examples](http://goo.gl/6bOvsQ):\n```javascript\n'<script>doSomething();</script>'.escapeHTML(); // => '&lt;script&gt;doSomething();&lt;/script&gt;'\n'&lt;script&gt;doSomething();&lt;/script&gt;'.unescapeHTML(); // => '<script>doSomething();</script>'\n```\n#### delay\nModule [`core.delay`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.delay.js). [Promise](#ecmascript-6-promise)-returning delay function, [esdiscuss](https://esdiscuss.org/topic/promise-returning-delay-function). [Example](http://goo.gl/lbucba):\n```javascript\ndelay(1e3).then(() => log('after 1 sec'));\n\n(async () => {\n  await delay(3e3);\n  log('after 3 sec');\n  \n  while(await delay(3e3))log('each 3 sec');\n})();\n```\n#### Console\nModule [`core.log`](https://github.com/zloirock/core-js/blob/v1.2.6/modules/core.log.js). Console cap for old browsers and some additional functionality. In IE, Node.js / IO.js and Firebug `console` methods not require call from `console` object, but in Chromium and V8 this throws error. For some reason, we can't replace `console` methods by their bound versions. Add `log` object with bound console methods. Some more sugar: `log` is shortcut for `log.log`, we can disable output.\n```javascript\nlog ==== log.log\n  .{...console API}\n  .enable() -> void\n  .disable() -> void\n```\n```javascript\n// Before:\nif(window.console && console.warn)console.warn(42);\n// After:\nlog.warn(42);\n\n// Before:\nsetTimeout(console.warn.bind(console, 42), 1000);\n[1, 2, 3].forEach(console.warn, console);\n// After:\nsetTimeout(log.warn, 1000, 42);\n[1, 2, 3].forEach(log.warn);\n\n// log is shortcut for log.log\nsetImmediate(log, 42); // => 42\n\nlog.disable();\nlog.warn('Console is disabled, you will not see this message.');\nlog.enable();\nlog.warn('Console is enabled again.');\n```\n\n## Missing polyfills\n- ES5 `JSON` is missing now only in IE7- and never it will be added to `core-js`, if you need it in these old browsers available many implementations, for example, [json3](https://github.com/bestiejs/json3).\n- ES6 Typed Arrays can be polyfilled without serious problems, but it will be slow - getter / setter for each element and they are missing completely only in IE9-. You can use [this polyfill](https://github.com/inexorabletash/polyfill/blob/master/typedarray.js). *Possible*, it will be added to `core-js` in the future, completely or only missing methods of existing arrays. \n- ES6 `String#normalize` is not very usefull feature, but this polyfill will be very large. If you need it, you can use [unorm](https://github.com/walling/unorm/).\n- ES6 `Proxy` can't be polyfilled, but for Node.js / Chromium with additional flags you can try [harmony-reflect](https://github.com/tvcutsem/harmony-reflect) for adapt old style `Proxy` API to final ES6 version.\n- ES6 logic for `@@isConcatSpreadable` and `@@species` (in most places) can be polyfilled without problems, but it will cause serious slowdown in popular cases in some engines. It will be polyfilled when it will be implemented in modern engines.\n- ES7 `Object.observe` can be polyfilled with many limitations, but it will be very slow - dirty checking on each tick. In nearest future it will not be added to `core-js` - it will cause serious slowdown in applications which uses `Object.observe` and fallback if it's missing. *Possible* it will be added as optional feature then most actual browsers will have this feature. Now you can use [this polyfill](https://github.com/MaxArt2501/object-observe).\n- ES7 `SIMD`. `core-js` doesn't adds polyfill of this feature because of large size and some other reasons. You can use [this polyfill](https://github.com/tc39/ecmascript_simd/blob/master/src/ecmascript_simd.js).\n- `window.fetch` is not crossplatform feature, in some environments it make no sense. For this reason I don't think it should be in `core-js`. Looking at the large number of requests it *maybe*  added in the future. Now you can use, for example, [this polyfill](https://github.com/github/fetch).",
  "readmeFilename": "README.md",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/zloirock/core-js.git"
  },
  "scripts": {
    "grunt": "grunt",
    "lint": "eslint es5 es6 es7 js web core fn modules",
    "promises-tests": "promises-aplus-tests tests/promises-aplus/adapter",
    "test": "npm run lint && npm run grunt livescript client karma:continuous library karma:continuous-library && npm run promises-tests && lsc tests/commonjs"
  },
  "version": "1.2.6"
}
