{"id":13432756,"url":"https://github.com/zloirock/core-js","last_synced_at":"2026-04-01T23:58:12.791Z","repository":{"id":9568906,"uuid":"11481338","full_name":"zloirock/core-js","owner":"zloirock","description":"Standard Library","archived":false,"fork":false,"pushed_at":"2025-05-05T05:27:12.000Z","size":66801,"stargazers_count":24972,"open_issues_count":46,"forks_count":1671,"subscribers_count":256,"default_branch":"master","last_synced_at":"2025-05-05T09:44:35.464Z","etag":null,"topics":["ecmascript-proposals","es2015","es2019","es6","es7","esnext","javascript","js","polyfill","ponyfill","promise","proposal","proposals","shim","symbol","weakmap"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zloirock.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"open_collective":"core-js","patreon":"zloirock","custom":"https://boosty.to/zloirock"}},"created_at":"2013-07-17T16:32:27.000Z","updated_at":"2025-05-05T05:27:17.000Z","dependencies_parsed_at":"2025-03-30T14:21:46.930Z","dependency_job_id":"ad102454-47cb-4fef-a0fb-bdc8b2e97c54","html_url":"https://github.com/zloirock/core-js","commit_stats":{"total_commits":6133,"total_committers":137,"mean_commits":44.76642335766423,"dds":"0.046143812163704556","last_synced_commit":"259cf3f75c2a62c4ccca2c08102986e6ac641ffd"},"previous_names":[],"tags_count":273,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zloirock%2Fcore-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zloirock%2Fcore-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zloirock%2Fcore-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zloirock%2Fcore-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zloirock","download_url":"https://codeload.github.com/zloirock/core-js/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252486813,"owners_count":21755832,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ecmascript-proposals","es2015","es2019","es6","es7","esnext","javascript","js","polyfill","ponyfill","promise","proposal","proposals","shim","symbol","weakmap"],"created_at":"2024-07-31T02:01:16.190Z","updated_at":"2026-04-01T23:58:12.776Z","avatar_url":"https://github.com/zloirock.png","language":"JavaScript","funding_links":["https://opencollective.com/core-js","https://patreon.com/zloirock","https://boosty.to/zloirock"],"categories":["JavaScript","Plugins","Uncategorized","Main","JavaScript框架","\u003e 10k ★","Polyfills","Инструменты разработчика","front-end-development"],"sub_categories":["Polyfills","Uncategorized","其他_文本生成、文本对话","Brunch Plugins"],"readme":"![logo](https://user-images.githubusercontent.com/2213682/146607186-8e13ddef-26a4-4ebf-befd-5aac9d77c090.png)\n\n\u003cdiv align=\"center\"\u003e\n\n[![fundraising](https://opencollective.com/core-js/all/badge.svg?label=fundraising)](https://opencollective.com/core-js) [![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/zloirock/core-js/blob/master/CONTRIBUTING.md) [![version](https://img.shields.io/npm/v/core-js.svg)](https://www.npmjs.com/package/core-js) [![core-js downloads](https://img.shields.io/npm/dm/core-js.svg?label=npm%20i%20core-js)](https://npm-stat.com/charts.html?package=core-js\u0026package=core-js-pure\u0026package=core-js-compat\u0026from=2014-11-18) [![core-js-pure downloads](https://img.shields.io/npm/dm/core-js-pure.svg?label=npm%20i%20core-js-pure)](https://npm-stat.com/charts.html?package=core-js\u0026package=core-js-pure\u0026package=core-js-compat\u0026from=2014-11-18)\n\n\u003c/div\u003e\n\n**Welcome to our new website, [core-js.io](https://core-js.io), where our documentation is moving!**\n---\n\n**I highly recommend reading this: [So, what's next?](https://core-js.io/blog/2023-02-14-so-whats-next)**\n---\n\n\u003e Modular standard library for JavaScript. Includes polyfills for [ECMAScript up to 2025](#ecmascript): [promises](#ecmascript-promise), [symbols](#ecmascript-symbol), [collections](#ecmascript-collections), iterators, [typed arrays](#ecmascript-typed-arrays), many other features, [ECMAScript proposals](#ecmascript-proposals), [some cross-platform WHATWG / W3C features and proposals](#web-standards) like [`URL`](#url-and-urlsearchparams). You can load only required features or use it without global namespace pollution.\n\n## [core-js@3, babel and a look into the future](https://core-js.io/blog/2019-03-19-core-js-3-babel-and-a-look-into-the-future)\n\n## Raising funds\n\n`core-js` isn't backed by a company, so the future of this project depends on you. Become a sponsor or a backer if you are interested in `core-js`: [**Open Collective**](https://opencollective.com/core-js), [**Patreon**](https://patreon.com/zloirock), [**Boosty**](https://boosty.to/zloirock), **Bitcoin ( bc1qlea7544qtsmj2rayg0lthvza9fau63ux0fstcz )**, [**Alipay**](https://user-images.githubusercontent.com/2213682/219464783-c17ad329-17ce-4795-82a7-f609493345ed.png).\n\n---\n\n\u003ca href=\"https://opencollective.com/core-js/sponsor/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/0/avatar.svg\"\u003e\u003c/a\u003e\u003ca href=\"https://opencollective.com/core-js/sponsor/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/1/avatar.svg\"\u003e\u003c/a\u003e\u003ca href=\"https://opencollective.com/core-js/sponsor/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/2/avatar.svg\"\u003e\u003c/a\u003e\u003ca href=\"https://opencollective.com/core-js/sponsor/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/3/avatar.svg\"\u003e\u003c/a\u003e\u003ca href=\"https://opencollective.com/core-js/sponsor/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/4/avatar.svg\"\u003e\u003c/a\u003e\u003ca href=\"https://opencollective.com/core-js/sponsor/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/5/avatar.svg\"\u003e\u003c/a\u003e\u003ca href=\"https://opencollective.com/core-js/sponsor/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/6/avatar.svg\"\u003e\u003c/a\u003e\u003ca href=\"https://opencollective.com/core-js/sponsor/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/7/avatar.svg\"\u003e\u003c/a\u003e\u003ca href=\"https://opencollective.com/core-js/sponsor/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/8/avatar.svg\"\u003e\u003c/a\u003e\u003ca href=\"https://opencollective.com/core-js/sponsor/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/9/avatar.svg\"\u003e\u003c/a\u003e\u003ca href=\"https://opencollective.com/core-js/sponsor/10/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/10/avatar.svg\"\u003e\u003c/a\u003e\u003ca href=\"https://opencollective.com/core-js/sponsor/11/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/sponsor/11/avatar.svg\"\u003e\u003c/a\u003e\n\n---\n\n\u003ca href=\"https://opencollective.com/core-js#backers\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/core-js/backers.svg?width=890\"\u003e\u003c/a\u003e\n\n---\n\n[*Example of usage*](https://tinyurl.com/28zqjbun):\n```js\nimport 'core-js/actual';\n\nPromise.try(() =\u003e 42).then(it =\u003e console.log(it)); // =\u003e 42\n\nArray.from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // =\u003e [1, 2, 3, 4, 5]\n\n[1, 2].flatMap(it =\u003e [it, it]); // =\u003e [1, 1, 2, 2]\n\nIterator.concat([1, 2], function * (i) { while (true) yield i++; }(3))\n  .drop(1).take(5)\n  .filter(it =\u003e it % 2)\n  .map(it =\u003e it ** 2)\n  .toArray(); // =\u003e [9, 25]\n\nstructuredClone(new Set([1, 2, 3])); // =\u003e new Set([1, 2, 3])\n```\n\n*You can load only required features*:\n```js\nimport 'core-js/actual/promise';\nimport 'core-js/actual/set';\nimport 'core-js/actual/iterator';\nimport 'core-js/actual/array/from';\nimport 'core-js/actual/array/flat-map';\nimport 'core-js/actual/structured-clone';\n\nPromise.try(() =\u003e 42).then(it =\u003e console.log(it)); // =\u003e 42\n\nArray.from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // =\u003e [1, 2, 3, 4, 5]\n\n[1, 2].flatMap(it =\u003e [it, it]); // =\u003e [1, 1, 2, 2]\n\nIterator.concat([1, 2], function * (i) { while (true) yield i++; }(3))\n  .drop(1).take(5)\n  .filter(it =\u003e it % 2)\n  .map(it =\u003e it ** 2)\n  .toArray(); // =\u003e [9, 25]\n\nstructuredClone(new Set([1, 2, 3])); // =\u003e new Set([1, 2, 3])\n```\n\n*Or use it without global namespace pollution*:\n```js\nimport Promise from 'core-js-pure/actual/promise';\nimport Set from 'core-js-pure/actual/set';\nimport Iterator from 'core-js-pure/actual/iterator';\nimport from from 'core-js-pure/actual/array/from';\nimport flatMap from 'core-js-pure/actual/array/flat-map';\nimport structuredClone from 'core-js-pure/actual/structured-clone';\n\nPromise.try(() =\u003e 42).then(it =\u003e console.log(it)); // =\u003e 42\n\nfrom(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // =\u003e [1, 2, 3, 4, 5]\n\nflatMap([1, 2], it =\u003e [it, it]); // =\u003e [1, 1, 2, 2]\n\nIterator.concat([1, 2], function * (i) { while (true) yield i++; }(3))\n  .drop(1).take(5)\n  .filter(it =\u003e it % 2)\n  .map(it =\u003e it ** 2)\n  .toArray(); // =\u003e [9, 25]\n\nstructuredClone(new Set([1, 2, 3])); // =\u003e new Set([1, 2, 3])\n```\n\n### Index\n- [Usage](#usage)\n  - [Installation](#installation)\n  - [`postinstall` message](#postinstall-message)\n  - [CommonJS API](#commonjs-api)\n  - [Babel](#babel)\n    - [`@babel/polyfill`](#babelpolyfill)\n    - [`@babel/preset-env`](#babelpreset-env)\n    - [`@babel/runtime`](#babelruntime)\n  - [swc](#swc)\n  - [Configurable level of aggressiveness](#configurable-level-of-aggressiveness)\n  - [Custom build](#custom-build)\n- [Supported engines and compatibility data](#supported-engines-and-compatibility-data)\n- [Features](#features)\n  - [ECMAScript](#ecmascript)\n    - [ECMAScript: Object](#ecmascript-object)\n    - [ECMAScript: Function](#ecmascript-function)\n    - [ECMAScript: Error](#ecmascript-error)\n    - [ECMAScript: Array](#ecmascript-array)\n    - [ECMAScript: Iterator](#ecmascript-iterator)\n    - [ECMAScript: String and RegExp](#ecmascript-string-and-regexp)\n    - [ECMAScript: Number](#ecmascript-number)\n    - [ECMAScript: Math](#ecmascript-math)\n    - [ECMAScript: Date](#ecmascript-date)\n    - [ECMAScript: Promise](#ecmascript-promise)\n    - [ECMAScript: Symbol](#ecmascript-symbol)\n    - [ECMAScript: Collections](#ecmascript-collections)\n    - [ECMAScript: Explicit Resource Management](#ecmascript-explicit-resource-management)\n    - [ECMAScript: Typed Arrays](#ecmascript-typed-arrays)\n    - [ECMAScript: Reflect](#ecmascript-reflect)\n    - [ECMAScript: JSON](#ecmascript-json)\n    - [ECMAScript: globalThis](#ecmascript-globalthis)\n  - [ECMAScript proposals](#ecmascript-proposals)\n    - [Finished proposals](#finished-proposals)\n      - [`globalThis`](#globalthis)\n      - [Relative indexing method](#relative-indexing-method)\n      - [`Array.prototype.includes`](#arrayprototypeincludes)\n      - [`Array.prototype.flat` / `Array.prototype.flatMap`](#arrayprototypeflat--arrayprototypeflatmap)\n      - [`Array` find from last](#array-find-from-last)\n      - [Change `Array` by copy](#change-array-by-copy)\n      - [`Array` grouping](#array-grouping)\n      - [`Array.fromAsync`](#arrayfromasync)\n      - [`ArrayBuffer.prototype.transfer` and friends](#arraybufferprototypetransfer-and-friends)\n      - [`Uint8Array` to / from base64 and hex](#uint8array-to--from-base64-and-hex)\n      - [`Error.isError`](#erroriserror)\n      - [Explicit Resource Management](#explicit-resource-management)\n      - [`Float16` methods](#float16-methods)\n      - [`Iterator` helpers](#iterator-helpers)\n      - [`Iterator` sequencing](#iterator-sequencing)\n      - [`Object.values` / `Object.entries`](#objectvalues--objectentries)\n      - [`Object.fromEntries`](#objectfromentries)\n      - [`Object.getOwnPropertyDescriptors`](#objectgetownpropertydescriptors)\n      - [Accessible `Object.prototype.hasOwnProperty`](#accessible-objectprototypehasownproperty)\n      - [`String` padding](#string-padding)\n      - [`String.prototype.matchAll`](#stringmatchall)\n      - [`String.prototype.replaceAll`](#stringreplaceall)\n      - [`String.prototype.trimStart` / `String.prototype.trimEnd`](#stringprototypetrimstart-stringprototypetrimend)\n      - [`RegExp` `s` (`dotAll`) flag](#regexp-s-dotall-flag)\n      - [`RegExp` named capture groups](#regexp-named-capture-groups)\n      - [`RegExp` escaping](#regexp-escaping)\n      - [`Promise.allSettled`](#promiseallsettled)\n      - [`Promise.any`](#promiseany)\n      - [`Promise.prototype.finally`](#promiseprototypefinally)\n      - [`Promise.try`](#promisetry)\n      - [`Promise.withResolvers`](#promisewithresolvers)\n      - [`Symbol.asyncIterator` for asynchronous iteration](#symbolasynciterator-for-asynchronous-iteration)\n      - [`Symbol.prototype.description`](#symbolprototypedescription)\n      - [`JSON.parse` source text access](#jsonparse-source-text-access)\n      - [Well-formed `JSON.stringify`](#well-formed-jsonstringify)\n      - [Well-formed unicode strings](#well-formed-unicode-strings)\n      - [New `Set` methods](#new-set-methods)\n      - [`Map` upsert](#map-upsert)\n      - [`Math.sumPrecise`](#mathsumprecise)\n    - [Stage 3 proposals](#stage-3-proposals)\n      - [Joint iteration](#joint-iteration)\n      - [`Symbol.metadata` for decorators metadata proposal](#symbolmetadata-for-decorators-metadata-proposal)\n    - [Stage 2.7 proposals](#stage-27-proposals)\n      - [`Iterator` chunking](#iterator-chunking)\n    - [Stage 2 proposals](#stage-2-proposals)\n      - [`AsyncIterator` helpers](#asynciterator-helpers)\n      - [`Iterator.range`](#iteratorrange)\n      - [`Array.isTemplateObject`](#arrayistemplateobject)\n      - [`Number.prototype.clamp`](#numberprototypeclamp)\n      - [`String.dedent`](#stringdedent)\n      - [`Symbol` predicates](#symbol-predicates)\n      - [`Symbol.customMatcher` for extractors](#symbolcustommatcher-for-extractors)\n    - [Stage 1 proposals](#stage-1-proposals)\n      - [`Observable`](#observable)\n      - [New collections methods](#new-collections-methods)\n      - [`.of` and `.from` methods on collection constructors](#of-and-from-methods-on-collection-constructors)\n      - [`compositeKey` and `compositeSymbol`](#compositekey-and-compositesymbol)\n      - [`Array` filtering](#array-filtering)\n      - [`Array` deduplication](#array-deduplication)\n      - [`DataView` get / set `Uint8Clamped` methods](#dataview-get-set-iint8clamped-methods)\n      - [`Number.fromString`](#numberfromstring)\n      - [`String.cooked`](#stringcooked)\n      - [`String.prototype.codePoints`](#stringprototypecodepoints)\n      - [`Symbol.customMatcher` for pattern matching](#symbolcustommatcher-for-pattern-matching)\n    - [Stage 0 proposals](#stage-0-proposals)\n      - [`Function.prototype.demethodize`](#functionprototypedemethodize)\n      - [`Function.{ isCallable, isConstructor }`](#function-iscallable-isconstructor-)\n    - [Pre-stage 0 proposals](#pre-stage-0-proposals)\n      - [`Reflect` metadata](#reflect-metadata)\n  - [Web standards](#web-standards)\n    - [`self`](#self)\n    - [`structuredClone`](#structuredclone)\n    - [Base64 utility methods](#base64-utility-methods)\n    - [`setTimeout` and `setInterval`](#settimeout-and-setinterval)\n    - [`setImmediate`](#setimmediate)\n    - [`queueMicrotask`](#queuemicrotask)\n    - [`URL` and `URLSearchParams`](#url-and-urlsearchparams)\n    - [`DOMException`](#domexception)\n    - [iterable DOM collections](#iterable-dom-collections)\n  - [Iteration helpers](#iteration-helpers)\n- [Missing polyfills](#missing-polyfills)\n- [Contributing](./CONTRIBUTING.md)\n- [Security policy](https://github.com/zloirock/core-js/blob/master/SECURITY.md)\n- [Changelog](./CHANGELOG.md)\n\n## Usage[⬆](#index)\n### Installation:[⬆](#index)\n```sh\n// global version\nnpm install --save core-js@3.49.0\n// version without global namespace pollution\nnpm install --save core-js-pure@3.49.0\n// bundled global version\nnpm install --save core-js-bundle@3.49.0\n```\n\n### `postinstall` message[⬆](#index)\nThe `core-js` project needs your help, so the package shows a message about it after installation. If it causes problems for you, you can disable it:\n```sh\nADBLOCK=true npm install\n// or\nDISABLE_OPENCOLLECTIVE=true npm install\n// or\nnpm install --loglevel silent\n```\n\n### CommonJS API[⬆](#index)\nYou can import only-required-for-you polyfills, like in the examples at the top of `README.md`. Available CommonJS entry points for all polyfilled methods / constructors and namespaces. Just some examples:\n\n```ts\n// polyfill all `core-js` features, including early-stage proposals:\nimport \"core-js\";\n// or:\nimport \"core-js/full\";\n// polyfill all actual features - stable ES, web standards and stage 3 ES proposals:\nimport \"core-js/actual\";\n// polyfill only stable features - ES and web standards:\nimport \"core-js/stable\";\n// polyfill only stable ES features:\nimport \"core-js/es\";\n\n// if you want to polyfill `Set`:\n// all `Set`-related features, with early-stage ES proposals:\nimport \"core-js/full/set\";\n// stable required for `Set` ES features, features from web standards and stage 3 ES proposals:\nimport \"core-js/actual/set\";\n// stable required for `Set` ES features and features from web standards\n// (DOM collections iterator in this case):\nimport \"core-js/stable/set\";\n// only stable ES features required for `Set`:\nimport \"core-js/es/set\";\n// the same without global namespace pollution:\nimport Set from \"core-js-pure/full/set\";\nimport Set from \"core-js-pure/actual/set\";\nimport Set from \"core-js-pure/stable/set\";\nimport Set from \"core-js-pure/es/set\";\n\n// if you want to polyfill just the required methods:\nimport \"core-js/full/set/intersection\";\nimport \"core-js/actual/array/find-last\";\nimport \"core-js/stable/queue-microtask\";\nimport \"core-js/es/array/from\";\n\n// polyfill iterator helpers proposal:\nimport \"core-js/proposals/iterator-helpers\";\n// polyfill all stage 2+ proposals:\nimport \"core-js/stage/2\";\n```\n\n\u003e [!TIP]\n\u003e The usage of the `/actual/` namespace is recommended since it includes all actual JavaScript features and does not include unstable early-stage proposals that are available mainly for experiments.\n\n\u003e [!WARNING]\n\u003e - The `modules` path is an internal API, does not inject all required dependencies and can be changed in minor or patch releases. Use it only for a custom build and/or if you know what are you doing.\n\u003e - If you use `core-js` with the extension of native objects, recommended to load all `core-js` modules at the top of the entry point of your application, otherwise, you can have conflicts.\n\u003e   - For example, Google Maps use their own `Symbol.iterator`, conflicting with `Array.from`, `URLSearchParams` and / or something else from `core-js`, see [related issues](https://github.com/zloirock/core-js/search?q=Google+Maps\u0026type=Issues).\n\u003e   - Such conflicts are also resolvable by discovering and manually adding each conflicting entry from `core-js`.\n\u003e - `core-js` is extremely modular and uses a lot of very tiny modules, because of that for usage in browsers bundle up `core-js` instead of a usage loader for each file, otherwise, you will have hundreds of requests.\n\n#### CommonJS and prototype methods without global namespace pollution[⬆](#index)\nIn the `pure` version, we can't pollute prototypes of native constructors. Because of that, prototype methods transformed into static methods like in examples above. But with transpilers, we can use one more trick - [bind operator and virtual methods](https://github.com/tc39/proposal-bind-operator). Special for that, available `/virtual/` entry points. Example:\n```ts\nimport fill from 'core-js-pure/actual/array/virtual/fill';\nimport findIndex from 'core-js-pure/actual/array/virtual/find-index';\n\nArray(10)::fill(0).map((a, b) =\u003e b * b)::findIndex(it =\u003e it \u0026\u0026 !(it % 8)); // =\u003e 4\n```\n\n\u003e [!WARNING]\n\u003e The bind operator is an early-stage ECMAScript proposal and usage of this syntax can be dangerous.\n\n### Babel[⬆](#index)\n\n`core-js` is integrated with `babel` and is the base for polyfilling-related `babel` features:\n\n#### `@babel/polyfill`[⬆](#index)\n\n[`@babel/polyfill`](https://babeljs.io/docs/usage/polyfill) [**IS** just the import of stable `core-js` features and `regenerator-runtime`](https://github.com/babel/babel/blob/c8bb4500326700e7dc68ce8c4b90b6482c48d82f/packages/babel-polyfill/src/index.js) for generators and async functions, so loading `@babel/polyfill` means loading the global version of `core-js` without ES proposals.\n\nNow it's deprecated in favor of separate inclusion of required parts of `core-js` and `regenerator-runtime` and, for backward compatibility, `@babel/polyfill` is still based on `core-js@2`.\n\nAs a full equal of `@babel/polyfill`, you can use the following:\n```js\nimport 'core-js/stable';\nimport 'regenerator-runtime/runtime';\n```\n\n#### `@babel/preset-env`[⬆](#index)\n\n[`@babel/preset-env`](https://github.com/babel/babel/tree/master/packages/babel-preset-env) has `useBuiltIns` option, which optimizes the use of the global version of `core-js`. With `useBuiltIns` option, you should also set `corejs` option to the used version of `core-js`, like `corejs: '3.49'`.\n\n\u003e [!IMPORTANT]\n\u003e It is recommended to specify the used minor `core-js` version, like `corejs: '3.49'`, instead of `corejs: 3`, since with `corejs: 3` will not be injected modules which were added in minor `core-js` releases.\n\n---\n\n- `useBuiltIns: 'entry'` replaces imports of `core-js` to import only required for a target environment modules. So, for example,\n```js\nimport 'core-js/stable';\n```\nwith `chrome 71` target will be replaced just to:\n```js\nimport 'core-js/modules/es.array.unscopables.flat';\nimport 'core-js/modules/es.array.unscopables.flat-map';\nimport 'core-js/modules/es.object.from-entries';\nimport 'core-js/modules/web.immediate';\n```\nIt works for all entry points of global version of `core-js` and their combinations, for example for\n```js\nimport 'core-js/es';\nimport 'core-js/proposals/set-methods';\nimport 'core-js/full/set/map';\n```\nwith `chrome 71` target you will have as the result:\n```js\nimport 'core-js/modules/es.array.unscopables.flat';\nimport 'core-js/modules/es.array.unscopables.flat-map';\nimport 'core-js/modules/es.object.from-entries';\nimport 'core-js/modules/esnext.set.difference';\nimport 'core-js/modules/esnext.set.intersection';\nimport 'core-js/modules/esnext.set.is-disjoint-from';\nimport 'core-js/modules/esnext.set.is-subset-of';\nimport 'core-js/modules/esnext.set.is-superset-of';\nimport 'core-js/modules/esnext.set.map';\nimport 'core-js/modules/esnext.set.symmetric-difference';\nimport 'core-js/modules/esnext.set.union';\n```\n\n- `useBuiltIns: 'usage'` adds to the top of each file import of polyfills for features used in this file and not supported by target environments, so for:\n```js\n// first file:\nlet set = new Set([1, 2, 3]);\n```\n```js\n// second file:\nlet array = Array.of(1, 2, 3);\n```\nif the target contains an old environment like `IE 11` we will have something like:\n```js\n// first file:\nimport 'core-js/modules/es.array.iterator';\nimport 'core-js/modules/es.object.to-string';\nimport 'core-js/modules/es.set';\n\nvar set = new Set([1, 2, 3]);\n```\n```js\n// second file:\nimport 'core-js/modules/es.array.of';\n\nvar array = Array.of(1, 2, 3);\n```\n\nBy default, `@babel/preset-env` with `useBuiltIns: 'usage'` option only polyfills stable features, but you can enable polyfilling of proposals by the `proposals` option, as `corejs: { version: '3.49', proposals: true }`.\n\n\u003e [!IMPORTANT]\n\u003e In the case of `useBuiltIns: 'usage'`, you should not add `core-js` imports by yourself, they will be added automatically.\n\n#### `@babel/runtime`[⬆](#index)\n\n[`@babel/runtime`](https://babeljs.io/docs/plugins/transform-runtime/) with `corejs: 3` option simplifies work with the `core-js-pure`. It automatically replaces the usage of modern features from the JS standard library to imports from the version of `core-js` without global namespace pollution, so instead of:\n```js\nimport from from 'core-js-pure/stable/array/from';\nimport flat from 'core-js-pure/stable/array/flat';\nimport Set from 'core-js-pure/stable/set';\nimport Promise from 'core-js-pure/stable/promise';\n\nfrom(new Set([1, 2, 3, 2, 1]));\nflat([1, [2, 3], [4, [5]]], 2);\nPromise.resolve(32).then(x =\u003e console.log(x));\n```\nyou can write just:\n```js\nArray.from(new Set([1, 2, 3, 2, 1]));\n[1, [2, 3], [4, [5]]].flat(2);\nPromise.resolve(32).then(x =\u003e console.log(x));\n```\n\nBy default, `@babel/runtime` only polyfills stable features, but like in `@babel/preset-env`, you can enable polyfilling of proposals by `proposals` option, as `corejs: { version: 3, proposals: true }`.\n\n\u003e [!WARNING]\n\u003e If you use `@babel/preset-env` and `@babel/runtime` together, use `corejs` option only in one place since it's duplicate functionality and will cause conflicts.\n\n### swc[⬆](#index)\n\nFast JavaScript transpiler `swc` [contains integration with `core-js`](https://swc.rs/docs/configuration/supported-browsers), that optimizes work with the global version of `core-js`. [Like `@babel/preset-env`](#babelpreset-env), it has 2 modes: `usage` and `entry`, but `usage` mode still works not so well as in `babel`. Example of configuration in `.swcrc`:\n```json\n{\n  \"env\": {\n    \"targets\": \"\u003e 0.25%, not dead\",\n    \"mode\": \"entry\",\n    \"coreJs\": \"3.49\"\n  }\n}\n```\n\n### Configurable level of aggressiveness[⬆](#index)\n\nBy default, `core-js` sets polyfills only when they are required. That means that `core-js` checks if a feature is available and works correctly or not and if it has no problems, `core-js` uses native implementation.\n\nBut sometimes `core-js` feature detection could be too strict for your case. For example, `Promise` constructor requires the support of unhandled rejection tracking and `@@species`.\n\nSometimes we could have an inverse problem - a knowingly broken environment with problems not covered by `core-js` feature detection.\n\nFor those cases, we could redefine this behavior for certain polyfills:\n\n```js\nconst configurator = require('core-js/configurator');\n\nconfigurator({\n  useNative: ['Promise'],                                 // polyfills will be used only if natives are completely unavailable\n  usePolyfill: ['Array.from', 'String.prototype.padEnd'], // polyfills will be used anyway\n  useFeatureDetection: ['Map', 'Set'],                    // default behavior\n});\n\nrequire('core-js/actual');\n```\n\nIt does not work with some features. Also, if you change the default behavior, even `core-js` internals may not work correctly.\n\n### Custom build[⬆](#index)\n\nFor some cases could be useful to exclude some `core-js` features or generate a polyfill for target engines. You could use [`core-js-builder`](/packages/core-js-builder) package for that.\n\n## Supported engines and compatibility data[⬆](#index)\n\n`core-js` tries to support all possible JS engines and environments with ES3 support. Some features have a higher lower bar - for example, *some* accessors can properly work only from ES5, promises require a way to set a microtask or a task, etc.\n\nHowever, I have no possibility to test `core-js` absolutely everywhere - for example, testing in IE7- and some other ancient was stopped. The list of definitely supported engines you can see in the compatibility table by the link below. [Write](https://github.com/zloirock/core-js/issues) if you have issues or questions with the support of any engine.\n\n`core-js` project provides (as [`core-js-compat`](/packages/core-js-compat) package) all required data about the necessity of `core-js` modules, entry points, and tools for work with it - it's useful for integration with tools like `babel` or `swc`. If you wanna help, you could take a look at the related section of [`CONTRIBUTING.md`](/CONTRIBUTING.md#how-to-update-core-js-compat-data). The visualization of compatibility data and the browser tests runner is available [here](http://zloirock.github.io/core-js/master/compat/), the example:\n\n![compat-table](https://user-images.githubusercontent.com/2213682/217452234-ccdcfc5a-c7d3-40d1-ab3f-86902315b8c3.png)\n\n## Features:[⬆](#index)\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)\n```\n\n### ECMAScript[⬆](#index)\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)/es\n```\n#### ECMAScript: Object[⬆](#index)\nModules [`es.object.assign`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.assign.js), [`es.object.create`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.create.js), [`es.object.define-getter`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.define-getter.js), [`es.object.define-property`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.define-property.js), [`es.object.define-properties`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.define-properties.js), [`es.object.define-setter`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.define-setter.js), [`es.object.entries`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.entries.js), [`es.object.freeze`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.freeze.js), [`es.object.from-entries`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.from-entries.js), [`es.object.get-own-property-descriptor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.get-own-property-descriptor.js), [`es.object.get-own-property-descriptors`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.get-own-property-descriptors.js), [`es.object.get-own-property-names`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.get-own-property-names.js), [`es.object.get-prototype-of`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.get-prototype-of.js), [`es.object.group-by`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.group-by.js), [`es.object.has-own`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.has-own.js), [`es.object.is`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.is.js), [`es.object.is-extensible`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.is-extensible.js), [`es.object.is-frozen`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.is-frozen.js), [`es.object.is-sealed`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.is-sealed.js), [`es.object.keys`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.keys.js), [`es.object.lookup-setter`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.lookup-setter.js), [`es.object.lookup-getter`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.lookup-getter.js), [`es.object.prevent-extensions`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.prevent-extensions.js), [`es.object.proto`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.proto.js), [`es.object.to-string`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.to-string.js), [`es.object.seal`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.seal.js), [`es.object.set-prototype-of`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.set-prototype-of.js), [`es.object.values`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.object.values.js).\n\n```ts\nclass Object {\n  toString(): string; // ES2015+ fix: @@toStringTag support\n  __defineGetter__(property: PropertyKey, getter: Function): void;\n  __defineSetter__(property: PropertyKey, setter: Function): void;\n  __lookupGetter__(property: PropertyKey): Function | void;\n  __lookupSetter__(property: PropertyKey): Function | void;\n  __proto__: Object | null; // required a way setting of prototype - will not in IE10-, it's for modern engines like Deno\n  static assign(target: Object, ...sources: Array\u003cObject\u003e): Object;\n  static create(prototype: Object | null, properties?: { [property: PropertyKey]: PropertyDescriptor }): Object;\n  static defineProperties(object: Object, properties: { [property: PropertyKey]: PropertyDescriptor })): Object;\n  static defineProperty(object: Object, property: PropertyKey, attributes: PropertyDescriptor): Object;\n  static entries(object: Object): Array\u003c[string, mixed]\u003e;\n  static freeze(object: any): any;\n  static fromEntries(iterable: Iterable\u003c[key, value]\u003e): Object;\n  static getOwnPropertyDescriptor(object: any, property: PropertyKey): PropertyDescriptor | void;\n  static getOwnPropertyDescriptors(object: any): { [property: PropertyKey]: PropertyDescriptor };\n  static getOwnPropertyNames(object: any): Array\u003cstring\u003e;\n  static getPrototypeOf(object: any): Object | null;\n  static groupBy(items: Iterable, callbackfn: (value: any, index: number) =\u003e key): { [key]: Array\u003cmixed\u003e };\n  static hasOwn(object: object, key: PropertyKey): boolean;\n  static is(value1: any, value2: any): boolean;\n  static isExtensible(object: any): boolean;\n  static isFrozen(object: any): boolean;\n  static isSealed(object: any): boolean;\n  static keys(object: any): Array\u003cstring\u003e;\n  static preventExtensions(object: any): any;\n  static seal(object: any): any;\n  static setPrototypeOf(target: any, prototype: Object | null): any; // required __proto__ - IE11+\n  static values(object: any): Array\u003cmixed\u003e;\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)/es|stable|actual|full/object\ncore-js(-pure)/es|stable|actual|full/object/assign\ncore-js(-pure)/es|stable|actual|full/object/is\ncore-js(-pure)/es|stable|actual|full/object/set-prototype-of\ncore-js(-pure)/es|stable|actual|full/object/get-prototype-of\ncore-js(-pure)/es|stable|actual|full/object/create\ncore-js(-pure)/es|stable|actual|full/object/define-property\ncore-js(-pure)/es|stable|actual|full/object/define-properties\ncore-js(-pure)/es|stable|actual|full/object/get-own-property-descriptor\ncore-js(-pure)/es|stable|actual|full/object/get-own-property-descriptors\ncore-js(-pure)/es|stable|actual|full/object/group-by\ncore-js(-pure)/es|stable|actual|full/object/has-own\ncore-js(-pure)/es|stable|actual|full/object/keys\ncore-js(-pure)/es|stable|actual|full/object/values\ncore-js(-pure)/es|stable|actual|full/object/entries\ncore-js(-pure)/es|stable|actual|full/object/get-own-property-names\ncore-js(-pure)/es|stable|actual|full/object/freeze\ncore-js(-pure)/es|stable|actual|full/object/from-entries\ncore-js(-pure)/es|stable|actual|full/object/seal\ncore-js(-pure)/es|stable|actual|full/object/prevent-extensions\ncore-js/es|stable|actual|full/object/proto\ncore-js(-pure)/es|stable|actual|full/object/is-frozen\ncore-js(-pure)/es|stable|actual|full/object/is-sealed\ncore-js(-pure)/es|stable|actual|full/object/is-extensible\ncore-js/es|stable|actual|full/object/to-string\ncore-js(-pure)/es|stable|actual|full/object/define-getter\ncore-js(-pure)/es|stable|actual|full/object/define-setter\ncore-js(-pure)/es|stable|actual|full/object/lookup-getter\ncore-js(-pure)/es|stable|actual|full/object/lookup-setter\n```\n*Examples*:\n```js\nlet foo = { q: 1, w: 2 };\nlet bar = { e: 3, r: 4 };\nlet baz = { t: 5, y: 6 };\nObject.assign(foo, bar, baz); // =\u003e foo = { q: 1, w: 2, e: 3, r: 4, t: 5, y: 6 }\n\nObject.is(NaN, NaN); // =\u003e true\nObject.is(0, -0);    // =\u003e false\nObject.is(42, 42);   // =\u003e true\nObject.is(42, '42'); // =\u003e false\n\nfunction Parent() { /* empty */ }\nfunction Child() { /* empty */ }\nObject.setPrototypeOf(Child.prototype, Parent.prototype);\nnew Child() instanceof Child;  // =\u003e true\nnew Child() instanceof Parent; // =\u003e true\n\n({\n  [Symbol.toStringTag]: 'Foo',\n}).toString(); // =\u003e '[object Foo]'\n\nObject.keys('qwe'); // =\u003e ['0', '1', '2']\nObject.getPrototypeOf('qwe') === String.prototype; // =\u003e true\n\nObject.values({ a: 1, b: 2, c: 3 });  // =\u003e [1, 2, 3]\nObject.entries({ a: 1, b: 2, c: 3 }); // =\u003e [['a', 1], ['b', 2], ['c', 3]]\n\nfor (let [key, value] of Object.entries({ a: 1, b: 2, c: 3 })) {\n  console.log(key);   // =\u003e 'a', 'b', 'c'\n  console.log(value); // =\u003e 1, 2, 3\n}\n\n// Shallow object cloning with prototype and descriptors:\nlet copy = Object.create(Object.getPrototypeOf(object), Object.getOwnPropertyDescriptors(object));\n// Mixin:\nObject.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n\nconst map = new Map([['a', 1], ['b', 2]]);\nObject.fromEntries(map); // =\u003e { a: 1, b: 2 }\n\nclass Unit {\n  constructor(id) {\n    this.id = id;\n  }\n  toString() {\n    return `unit${ this.id }`;\n  }\n}\n\nconst units = new Set([new Unit(101), new Unit(102)]);\n\nObject.fromEntries(units.entries()); // =\u003e { unit101: Unit { id: 101 }, unit102: Unit { id: 102 } }\n\nObject.hasOwn({ foo: 42 }, 'foo'); // =\u003e true\nObject.hasOwn({ foo: 42 }, 'bar'); // =\u003e false\nObject.hasOwn({}, 'toString');     // =\u003e false\n\nObject.groupBy([1, 2, 3, 4, 5], it =\u003e it % 2); // =\u003e { 1: [1, 3, 5], 0: [2, 4] }\n```\n\n#### ECMAScript: Function[⬆](#index)\nModules [`es.function.name`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.function.name.js), [`es.function.has-instance`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.function.has-instance.js). Just ES5: [`es.function.bind`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.function.bind.js).\n```ts\nclass Function {\n  name: string;\n  bind(thisArg: any, ...args: Array\u003cmixed\u003e): Function;\n  @@hasInstance(value: any): boolean;\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js/es|stable|actual|full/function\ncore-js/es|stable|actual|full/function/name\ncore-js/es|stable|actual|full/function/has-instance\ncore-js(-pure)/es|stable|actual|full/function/bind\ncore-js(-pure)/es|stable|actual|full/function/virtual/bind\n```\n[*Example*](https://tinyurl.com/22na9nbm):\n```js\n(function foo() { /* empty */ }).name; // =\u003e 'foo'\n\nconsole.log.bind(console, 42)(43); // =\u003e 42 43\n```\n\n#### ECMAScript: Error[⬆](#index)\nModules [`es.aggregate-error`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.aggregate-error.js), [`es.aggregate-error.cause`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.aggregate-error.cause.js), [`es.error.cause`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.error.cause.js), [`es.error.is-error`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.error.is-error.js), [`es.suppressed-error.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.suppressed-error.constructor.js), [`es.error.to-string`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.error.to-string.js).\n```ts\nclass Error {\n  static isError(value: any): boolean;\n  constructor(message: string, { cause: any }): %Error%;\n  toString(): string; // different fixes\n}\n\nclass [\n  EvalError,\n  RangeError,\n  ReferenceError,\n  SyntaxError,\n  TypeError,\n  URIError,\n  WebAssembly.CompileError,\n  WebAssembly.LinkError,\n  WebAssembly.RuntimeError,\n] extends Error {\n  constructor(message: string, { cause: any }): %Error%;\n}\n\nclass AggregateError extends Error {\n  constructor(errors: Iterable, message?: string, { cause: any }?): AggregateError;\n  errors: Array\u003cany\u003e;\n  message: string;\n  cause: any;\n}\n\nclass SuppressedError extends Error {\n  constructor(error: any, suppressed: any, message?: string): SuppressedError;\n  error: any;\n  suppressed: any;\n  message: string;\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js/es|stable|actual|full/error\ncore-js/es|stable|actual|full/error/constructor\ncore-js(-pure)/es|stable|actual|full/error/is-error\ncore-js/es|stable|actual|full/error/to-string\ncore-js(-pure)/es|stable|actual|full/aggregate-error\ncore-js(-pure)/es|stable|actual|full/suppressed-error\n```\n[*Example*](https://is.gd/1SufcH):\n```js\nconst error1 = new TypeError('Error 1');\nconst error2 = new TypeError('Error 2');\nconst aggregate = new AggregateError([error1, error2], 'Collected errors');\naggregate.errors[0] === error1; // =\u003e true\naggregate.errors[1] === error2; // =\u003e true\n\nconst cause = new TypeError('Something wrong');\nconst error = new TypeError('Here explained what`s wrong', { cause });\nerror.cause === cause; // =\u003e true\n\nError.prototype.toString.call({ message: 1, name: 2 }) === '2: 1'; // =\u003e true\n```\n\n[*Example*](https://tinyurl.com/23nauwoz):\n```js\nError.isError(new Error('error')); // =\u003e true\nError.isError(new TypeError('error')); // =\u003e true\nError.isError(new DOMException('error')); // =\u003e true\n\nError.isError(null); // =\u003e false\nError.isError({}); // =\u003e false\nError.isError(Object.create(Error.prototype)); // =\u003e false\n```\n\n\u003e [!WARNING]\n\u003e We have no bulletproof way to polyfill this `Error.isError` / check if the object is an error, so it's an enough naive implementation.\n\n#### ECMAScript: Array[⬆](#index)\nModules [`es.array.from`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.from.js), [`es.array.from-async`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.from-async.js), [`es.array.is-array`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.is-array.js), [`es.array.of`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.of.js), [`es.array.copy-within`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.copy-within.js), [`es.array.fill`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.fill.js), [`es.array.find`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.find.js), [`es.array.find-index`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.find-index.js), [`es.array.find-last`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.find-last.js), [`es.array.find-last-index`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.find-last-index.js), [`es.array.iterator`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.iterator.js), [`es.array.includes`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.includes.js), [`es.array.push`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.push.js), [`es.array.slice`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.slice.js), [`es.array.join`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.join.js), [`es.array.unshift`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.unshift.js), [`es.array.index-of`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.index-of.js), [`es.array.last-index-of`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.last-index-of.js), [`es.array.every`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.every.js), [`es.array.some`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.some.js), [`es.array.for-each`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.for-each.js), [`es.array.map`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.map.js), [`es.array.filter`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.filter.js), [`es.array.reduce`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.reduce.js), [`es.array.reduce-right`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.reduce-right.js), [`es.array.reverse`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.reverse.js), [`es.array.sort`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.sort.js), [`es.array.flat`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.flat.js), [`es.array.flat-map`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.flat-map.js), [`es.array.unscopables.flat`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.unscopables.flat.js), [`es.array.unscopables.flat-map`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.unscopables.flat-map.js), [`es.array.at`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.at.js), [`es.array.to-reversed`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.to-reversed.js), [`es.array.to-sorted`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.to-sorted.js), [`es.array.to-spliced`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.to-spliced.js), [`es.array.with`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.array.with.js).\n```ts\nclass Array {\n  at(index: int): any;\n  concat(...args: Array\u003cmixed\u003e): Array\u003cmixed\u003e; // with adding support of @@isConcatSpreadable and @@species\n  copyWithin(target: number, start: number, end?: number): this;\n  entries(): Iterator\u003c[index, value]\u003e;\n  every(callbackfn: (value: any, index: number, target: any) =\u003e boolean, thisArg?: any): boolean;\n  fill(value: any, start?: number, end?: number): this;\n  filter(callbackfn: (value: any, index: number, target: any) =\u003e boolean, thisArg?: any): Array\u003cmixed\u003e; // with adding support of @@species\n  find(callbackfn: (value: any, index: number, target: any) =\u003e boolean), thisArg?: any): any;\n  findIndex(callbackfn: (value: any, index: number, target: any) =\u003e boolean, thisArg?: any): uint;\n  findLast(callbackfn: (value: any, index: number, target: any) =\u003e boolean, thisArg?: any): any;\n  findLastIndex(callbackfn: (value: any, index: number, target: any) =\u003e boolean, thisArg?: any): uint;\n  flat(depthArg?: number = 1): Array\u003cmixed\u003e;\n  flatMap(mapFn: (value: any, index: number, target: any) =\u003e any, thisArg: any): Array\u003cmixed\u003e;\n  forEach(callbackfn: (value: any, index: number, target: any) =\u003e void, thisArg?: any): void;\n  includes(searchElement: any, from?: number): boolean;\n  indexOf(searchElement: any, from?: number): number;\n  join(separator: string = ','): string;\n  keys(): Iterator\u003cindex\u003e;\n  lastIndexOf(searchElement: any, from?: number): number;\n  map(mapFn: (value: any, index: number, target: any) =\u003e any, thisArg?: any): Array\u003cmixed\u003e; // with adding support of @@species\n  push(...args: Array\u003cmixed\u003e): uint;\n  reduce(callbackfn: (memo: any, value: any, index: number, target: any) =\u003e any, initialValue?: any): any;\n  reduceRight(callbackfn: (memo: any, value: any, index: number, target: any) =\u003e any, initialValue?: any): any;\n  reverse(): this; // Safari 12.0 bug fix\n  slice(start?: number, end?: number): Array\u003cmixed\u003e; // with adding support of @@species\n  splice(start?: number, deleteCount?: number, ...items: Array\u003cmixed\u003e): Array\u003cmixed\u003e; // with adding support of @@species\n  some(callbackfn: (value: any, index: number, target: any) =\u003e boolean, thisArg?: any): boolean;\n  sort(comparefn?: (a: any, b: any) =\u003e number): this; // with modern behavior like stable sort\n  toReversed(): Array\u003cmixed\u003e;\n  toSpliced(start?: number, deleteCount?: number, ...items: Array\u003cmixed\u003e): Array\u003cmixed\u003e;\n  toSorted(comparefn?: (a: any, b: any) =\u003e number): Array\u003cmixed\u003e;\n  unshift(...args: Array\u003cmixed\u003e): uint;\n  values(): Iterator\u003cvalue\u003e;\n  with(index: includes, value: any): Array\u003cmixed\u003e;\n  @@iterator(): Iterator\u003cvalue\u003e;\n  @@unscopables: { [newMethodNames: string]: true };\n  static from(items: Iterable | ArrayLike, mapFn?: (value: any, index: number) =\u003e any, thisArg?: any): Array\u003cmixed\u003e;\n  static fromAsync(asyncItems: AsyncIterable | Iterable | ArrayLike, mapfn?: (value: any, index: number) =\u003e any, thisArg?: any): Array;\n  static isArray(value: any): boolean;\n  static of(...args: Array\u003cmixed\u003e): Array\u003cmixed\u003e;\n}\n\nclass Arguments {\n  @@iterator(): Iterator\u003cvalue\u003e; // available only in core-js methods\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)/es|stable|actual|full/array\ncore-js(-pure)/es|stable|actual|full/array/from\ncore-js(-pure)/es|stable|actual|full/array/from-async\ncore-js(-pure)/es|stable|actual|full/array/of\ncore-js(-pure)/es|stable|actual|full/array/is-array\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/at\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/concat\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/copy-within\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/entries\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/every\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/fill\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/filter\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/find\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/find-index\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/find-last\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/find-last-index\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/flat\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/flat-map\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/for-each\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/includes\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/index-of\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/iterator\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/join\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/keys\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/last-index-of\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/map\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/push\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/reduce\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/reduce-right\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/reverse\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/slice\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/some\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/sort\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/splice\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/to-reversed\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/to-sorted\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/to-spliced\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/unshift\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/values\ncore-js(-pure)/es|stable|actual|full/array(/virtual)/with\n```\n[*Examples*](https://tinyurl.com/2oaa8x2x):\n```js\nArray.from(new Set([1, 2, 3, 2, 1]));        // =\u003e [1, 2, 3]\nArray.from({ 0: 1, 1: 2, 2: 3, length: 3 }); // =\u003e [1, 2, 3]\nArray.from('123', Number);                   // =\u003e [1, 2, 3]\nArray.from('123', it =\u003e it ** 2);            // =\u003e [1, 4, 9]\n\nArray.of(1);       // =\u003e [1]\nArray.of(1, 2, 3); // =\u003e [1, 2, 3]\n\nlet array = ['a', 'b', 'c'];\n\nfor (let value of array) console.log(value);          // =\u003e 'a', 'b', 'c'\nfor (let value of array.values()) console.log(value); // =\u003e 'a', 'b', 'c'\nfor (let key of array.keys()) console.log(key);       // =\u003e 0, 1, 2\nfor (let [key, value] of array.entries()) {\n  console.log(key);                                   // =\u003e 0, 1, 2\n  console.log(value);                                 // =\u003e 'a', 'b', 'c'\n}\n\nfunction isOdd(value) {\n  return value % 2;\n}\n[4, 8, 15, 16, 23, 42].find(isOdd);      // =\u003e 15\n[4, 8, 15, 16, 23, 42].findIndex(isOdd); // =\u003e 2\n[1, 2, 3, 4].findLast(isOdd);            // =\u003e 3\n[1, 2, 3, 4].findLastIndex(isOdd);       // =\u003e 2\n\nArray(5).fill(42); // =\u003e [42, 42, 42, 42, 42]\n\n[1, 2, 3, 4, 5].copyWithin(0, 3); // =\u003e [4, 5, 3, 4, 5]\n\n[1, 2, 3].includes(2);        // =\u003e true\n[1, 2, 3].includes(4);        // =\u003e false\n[1, 2, 3].includes(2, 2);     // =\u003e false\n\n[NaN].indexOf(NaN);           // =\u003e -1\n[NaN].includes(NaN);          // =\u003e true\nArray(1).indexOf(undefined);  // =\u003e -1\nArray(1).includes(undefined); // =\u003e true\n\n[1, [2, 3], [4, 5]].flat();    // =\u003e [1, 2, 3, 4, 5]\n[1, [2, [3, [4]]], 5].flat();  // =\u003e [1, 2, [3, [4]], 5]\n[1, [2, [3, [4]]], 5].flat(3); // =\u003e [1, 2, 3, 4, 5]\n\n[{ a: 1, b: 2 }, { a: 3, b: 4 }, { a: 5, b: 6 }].flatMap(it =\u003e [it.a, it.b]); // =\u003e [1, 2, 3, 4, 5, 6]\n\n[1, 2, 3].at(1);  // =\u003e 2\n[1, 2, 3].at(-1); // =\u003e 3\n\nconst sequence = [1, 2, 3];\nsequence.toReversed(); // =\u003e [3, 2, 1]\nsequence; // =\u003e [1, 2, 3]\n\nconst initialArray = [1, 2, 3, 4];\ninitialArray.toSpliced(1, 2, 5, 6, 7); // =\u003e [1, 5, 6, 7, 4]\ninitialArray; // =\u003e [1, 2, 3, 4]\n\nconst outOfOrder = [3, 1, 2];\noutOfOrder.toSorted(); // =\u003e [1, 2, 3]\noutOfOrder; // =\u003e [3, 1, 2]\n\nconst correctionNeeded = [1, 1, 3];\ncorrectionNeeded.with(1, 2); // =\u003e [1, 2, 3]\ncorrectionNeeded; // =\u003e [1, 1, 3]\n```\n\n[*`Array.fromAsync` example*](https://tinyurl.com/2bt9bhwn):\n```js\nawait Array.fromAsync((async function * () { yield * [1, 2, 3]; })(), i =\u003e i ** 2); // =\u003e [1, 4, 9]\n```\n\n#### ECMAScript: Iterator[⬆](#index)\nModules [`es.iterator.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.constructor.js), [`es.iterator.concat`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.concat.js), [`es.iterator.dispose`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.dispose.js), [`es.iterator.drop`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.drop.js), [`es.iterator.every`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.every.js), [`es.iterator.filter`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.filter.js), [`es.iterator.find`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.find.js), [`es.iterator.flat-map`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.flat-map.js), [`es.iterator.for-each`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.for-each.js), [`es.iterator.from`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.from.js), [`es.iterator.map`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.map.js), [`es.iterator.reduce`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.reduce.js), [`es.iterator.some`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.some.js), [`es.iterator.take`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.take.js), [`es.iterator.to-array`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.iterator.to-array.js)\n```ts\nclass Iterator {\n  static concat(...items: Array\u003cIterableObject\u003e): Iterator\u003cany\u003e;\n  static from(iterable: Iterable\u003cany\u003e | Iterator\u003cany\u003e): Iterator\u003cany\u003e;\n  drop(limit: uint): Iterator\u003cany\u003e;\n  every(callbackfn: (value: any, counter: uint) =\u003e boolean): boolean;\n  filter(callbackfn: (value: any, counter: uint) =\u003e boolean): Iterator\u003cany\u003e;\n  find(callbackfn: (value: any, counter: uint) =\u003e boolean)): any;\n  flatMap(callbackfn: (value: any, counter: uint) =\u003e Iterable\u003cany\u003e | Iterator\u003cany\u003e): Iterator\u003cany\u003e;\n  forEach(callbackfn: (value: any, counter: uint) =\u003e void): void;\n  map(callbackfn: (value: any, counter: uint) =\u003e any): Iterator\u003cany\u003e;\n  reduce(callbackfn: (memo: any, value: any, counter: uint) =\u003e any, initialValue: any): any;\n  some(callbackfn: (value: any, counter: uint) =\u003e boolean): boolean;\n  take(limit: uint): Iterator\u003cany\u003e;\n  toArray(): Array\u003cany\u003e;\n  @@dispose(): undefined;\n  @@toStringTag: 'Iterator'\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)/es|stable|actual|full/iterator\ncore-js(-pure)/es|stable|actual|full/iterator/concat\ncore-js(-pure)/es|stable|actual|full/iterator/dispose\ncore-js(-pure)/es|stable|actual|full/iterator/drop\ncore-js(-pure)/es|stable|actual|full/iterator/every\ncore-js(-pure)/es|stable|actual|full/iterator/filter\ncore-js(-pure)/es|stable|actual|full/iterator/find\ncore-js(-pure)/es|stable|actual|full/iterator/flat-map\ncore-js(-pure)/es|stable|actual|full/iterator/for-each\ncore-js(-pure)/es|stable|actual|full/iterator/from\ncore-js(-pure)/es|stable|actual|full/iterator/map\ncore-js(-pure)/es|stable|actual|full/iterator/reduce\ncore-js(-pure)/es|stable|actual|full/iterator/some\ncore-js(-pure)/es|stable|actual|full/iterator/take\ncore-js(-pure)/es|stable|actual|full/iterator/to-array\n```\n[Examples](https://tinyurl.com/24af2z7v):\n```js\n[1, 2, 3, 4, 5, 6, 7].values()\n  .drop(1)\n  .take(5)\n  .filter(it =\u003e it % 2)\n  .map(it =\u003e it ** 2)\n  .toArray(); // =\u003e [9, 25]\n\nIterator.from({\n  next: () =\u003e ({ done: Math.random() \u003e 0.9, value: Math.random() * 10 | 0 }),\n}).toArray(); // =\u003e [7, 6, 3, 0, 2, 8]\n\nIterator.concat([0, 1].values(), [2, 3], function * () {\n  yield 4;\n  yield 5;\n}()).toArray(); // =\u003e [0, 1, 2, 3, 4, 5]\n```\n\n\u003e [!WARNING]\n\u003e - For preventing prototype pollution, in the `pure` version, new `%IteratorPrototype%` methods are not added to the real `%IteratorPrototype%`, they are available only on wrappers - instead of `[].values().map(fn)` use `Iterator.from([]).map(fn)`.\n\n#### ECMAScript: String and RegExp[⬆](#index)\nThe main part of `String` features: modules [`es.string.from-code-point`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.from-code-point.js), [`es.string.raw`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.raw.js), [`es.string.iterator`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.iterator.js), [`es.string.split`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.split.js), [`es.string.code-point-at`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.code-point-at.js), [`es.string.ends-with`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.ends-with.js), [`es.string.includes`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.includes.js), [`es.string.repeat`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.repeat.js), [`es.string.pad-start`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.pad-start.js), [`es.string.pad-end`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.pad-end.js), [`es.string.starts-with`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.starts-with.js), [`es.string.trim`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.trim.js), [`es.string.trim-start`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.trim-start.js), [`es.string.trim-end`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.trim-end.js), [`es.string.match-all`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.match-all.js), [`es.string.replace-all`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.replace-all.js), [`es.string.at-alternative`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.at-alternative.js), [`es.string.is-well-formed`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.is-well-formed.js), [`es.string.to-well-formed`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.to-well-formed.js).\n\nAdding support of well-known [symbols](#ecmascript-symbol) `@@match`, `@@replace`, `@@search` and `@@split` and direct `.exec` calls to related `String` methods, modules [`es.string.match`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.match.js), [`es.string.replace`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.replace.js), [`es.string.search`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.search.js) and [`es.string.split`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.split.js).\n\nAnnex B methods. Modules [`es.string.anchor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.anchor.js), [`es.string.big`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.big.js), [`es.string.blink`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.blink.js), [`es.string.bold`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.bold.js), [`es.string.fixed`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.fixed.js), [`es.string.fontcolor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.fontcolor.js), [`es.string.fontsize`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.fontsize.js), [`es.string.italics`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.italics.js), [`es.string.link`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.link.js), [`es.string.small`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.small.js), [`es.string.strike`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.strike.js), [`es.string.sub`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.sub.js), [`es.string.sup`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.sup.js), [`es.string.substr`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.substr.js), [`es.escape`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.escape.js) and [`es.unescape`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.unescape.js).\n\n`RegExp` features: modules [`es.regexp.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.constructor.js), [`es.regexp.escape`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.escape.js), [`es.regexp.dot-all`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.dot-all.js), [`es.regexp.flags`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.flags.js), [`es.regexp.sticky`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.sticky.js) and [`es.regexp.test`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.test.js).\n```ts\nclass String {\n  static fromCodePoint(...codePoints: Array\u003cnumber\u003e): string;\n  static raw({ raw: Array\u003cstring\u003e }, ...substitutions: Array\u003cstring\u003e): string;\n  at(index: int): string;\n  includes(searchString: string, position?: number): boolean;\n  startsWith(searchString: string, position?: number): boolean;\n  endsWith(searchString: string, position?: number): boolean;\n  repeat(count: number): string;\n  padStart(length: number, fillStr?: string = ' '): string;\n  padEnd(length: number, fillStr?: string = ' '): string;\n  codePointAt(pos: number): number | void;\n  match(template: any): any; // ES2015+ fix for support @@match\n  matchAll(regexp: RegExp): Iterator;\n  replace(template: any, replacer: any): any; // ES2015+ fix for support @@replace\n  replaceAll(searchValue: string | RegExp, replaceString: string | (searchValue, index, this) =\u003e string): string;\n  search(template: any): any; // ES2015+ fix for support @@search\n  split(template: any, limit?: int): Array\u003cstring\u003e;; // ES2015+ fix for support @@split, some fixes for old engines\n  trim(): string;\n  trimLeft(): string;\n  trimRight(): string;\n  trimStart(): string;\n  trimEnd(): string;\n  isWellFormed(): boolean;\n  toWellFormed(): string;\n  anchor(name: string): string;\n  big(): string;\n  blink(): string;\n  bold(): string;\n  fixed(): string;\n  fontcolor(color: string): string;\n  fontsize(size: any): string;\n  italics(): string;\n  link(url: string): string;\n  small(): string;\n  strike(): string;\n  sub(): string;\n  substr(start: int, length?: int): string;\n  sup(): string;\n  @@iterator(): Iterator\u003ccharacters\u003e;\n}\n\nclass RegExp {\n  // support of sticky (`y`) flag, dotAll (`s`) flag, named capture groups, can alter flags\n  constructor(pattern: RegExp | string, flags?: string): RegExp;\n  static escape(value: string): string\n  exec(): Array\u003cstring | undefined\u003e | null; // IE8 fixes\n  test(string: string): boolean; // delegation to `.exec`\n  toString(): string; // ES2015+ fix - generic\n  @@match(string: string): Array | null;\n  @@matchAll(string: string): Iterator;\n  @@replace(string: string, replaceValue: Function | string): string;\n  @@search(string: string): number;\n  @@split(string: string, limit: number): Array\u003cstring\u003e;\n  readonly attribute dotAll: boolean; // IE9+\n  readonly attribute flags: string;   // IE9+\n  readonly attribute sticky: boolean; // IE9+\n}\n\nfunction escape(string: string): string;\nfunction unescape(string: string): string;\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)/es|stable|actual|full/string\ncore-js(-pure)/es|stable|actual|full/string/from-code-point\ncore-js(-pure)/es|stable|actual|full/string/raw\ncore-js/es|stable|actual|full/string/match\ncore-js/es|stable|actual|full/string/replace\ncore-js/es|stable|actual|full/string/search\ncore-js/es|stable|actual|full/string/split\ncore-js(-pure)/es|stable|actual/string(/virtual)/at\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/code-point-at\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/ends-with\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/includes\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/starts-with\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/match-all\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/pad-start\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/pad-end\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/repeat\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/replace-all\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/trim\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/trim-start\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/trim-end\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/trim-left\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/trim-right\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/is-well-formed\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/to-well-formed\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/anchor\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/big\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/blink\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/bold\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/fixed\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/fontcolor\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/fontsize\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/italics\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/link\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/small\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/strike\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/sub\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/substr\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/sup\ncore-js(-pure)/es|stable|actual|full/string(/virtual)/iterator\ncore-js/es|stable|actual|full/regexp\ncore-js/es|stable|actual|full/regexp/constructor\ncore-js(-pure)/es|stable|actual|full/regexp/escape\ncore-js/es|stable|actual|full/regexp/dot-all\ncore-js(-pure)/es|stable|actual|full/regexp/flags\ncore-js/es|stable|actual|full/regexp/sticky\ncore-js/es|stable|actual|full/regexp/test\ncore-js/es|stable|actual|full/regexp/to-string\ncore-js/es|stable|actual|full/escape\ncore-js/es|stable|actual|full/unescape\n```\n[*Examples*](https://tinyurl.com/22uafm3p):\n```js\nfor (let value of 'a𠮷b') {\n  console.log(value); // =\u003e 'a', '𠮷', 'b'\n}\n\n'foobarbaz'.includes('bar');      // =\u003e true\n'foobarbaz'.includes('bar', 4);   // =\u003e false\n'foobarbaz'.startsWith('foo');    // =\u003e true\n'foobarbaz'.startsWith('bar', 3); // =\u003e true\n'foobarbaz'.endsWith('baz');      // =\u003e true\n'foobarbaz'.endsWith('bar', 6);   // =\u003e true\n\n'string'.repeat(3); // =\u003e 'stringstringstring'\n\n'hello'.padStart(10);         // =\u003e '     hello'\n'hello'.padStart(10, '1234'); // =\u003e '12341hello'\n'hello'.padEnd(10);           // =\u003e 'hello     '\n'hello'.padEnd(10, '1234');   // =\u003e 'hello12341'\n\n'𠮷'.codePointAt(0); // =\u003e 134071\nString.fromCodePoint(97, 134071, 98); // =\u003e 'a𠮷b'\n\nlet name = 'Bob';\nString.raw`Hi\\n${ name }!`;           // =\u003e 'Hi\\\\nBob!' (ES2015 template string syntax)\nString.raw({ raw: 'test' }, 0, 1, 2); // =\u003e 't0e1s2t'\n\n'foo'.bold();                      // =\u003e '\u003cb\u003efoo\u003c/b\u003e'\n'bar'.anchor('a\"b');               // =\u003e '\u003ca name=\"a\u0026quot;b\"\u003ebar\u003c/a\u003e'\n'baz'.link('https://example.com'); // =\u003e '\u003ca href=\"https://example.com\"\u003ebaz\u003c/a\u003e'\n\nRegExp('.', 's').test('\\n'); // =\u003e true\nRegExp('.', 's').dotAll;     // =\u003e true\n\nRegExp('foo:(?\u003cfoo\u003e\\\\w+),bar:(?\u003cbar\u003e\\\\w+)').exec('foo:abc,bar:def').groups; // =\u003e { foo: 'abc', bar: 'def' }\n\n'foo:abc,bar:def'.replace(RegExp('foo:(?\u003cfoo\u003e\\\\w+),bar:(?\u003cbar\u003e\\\\w+)'), '$\u003cbar\u003e,$\u003cfoo\u003e'); // =\u003e 'def,abc'\n\n// eslint-disable-next-line regexp/no-useless-flag -- example\nRegExp(/./g, 'm'); // =\u003e /./m\n\n/foo/.flags;   // =\u003e ''\n/foo/gi.flags; // =\u003e 'gi'\n\nRegExp('foo', 'y').sticky; // =\u003e true\n\nconst text = 'First line\\nSecond line';\nconst regex = RegExp('(?\u003cindex\u003e\\\\S+) line\\\\n?', 'y');\n\nregex.exec(text).groups.index; // =\u003e 'First'\nregex.exec(text).groups.index; // =\u003e 'Second'\nregex.exec(text);    // =\u003e null\n\n'foo'.match({ [Symbol.match]: () =\u003e 1 });     // =\u003e 1\n'foo'.replace({ [Symbol.replace]: () =\u003e 2 }); // =\u003e 2\n'foo'.search({ [Symbol.search]: () =\u003e 3 });   // =\u003e 3\n'foo'.split({ [Symbol.split]: () =\u003e 4 });     // =\u003e 4\n\nRegExp.prototype.toString.call({ source: 'foo', flags: 'bar' }); // =\u003e '/foo/bar'\n\n'   hello   '.trimLeft();  // =\u003e 'hello   '\n'   hello   '.trimRight(); // =\u003e '   hello'\n'   hello   '.trimStart(); // =\u003e 'hello   '\n'   hello   '.trimEnd();   // =\u003e '   hello'\n\nfor (let { groups: { number, letter } } of '1111a2b3cccc'.matchAll(RegExp('(?\u003cnumber\u003e\\\\d)(?\u003cletter\u003e\\\\D)', 'g'))) {\n  console.log(number, letter); // =\u003e 1 a, 2 b, 3 c\n}\n\n'Test abc test test abc test.'.replaceAll('abc', 'foo'); // -\u003e 'Test foo test test foo test.'\n\n'abc'.at(1);  // =\u003e 'b'\n'abc'.at(-1); // =\u003e 'c'\n\n'a💩b'.isWellFormed();      // =\u003e true\n'a\\uD83Db'.isWellFormed();  // =\u003e false\n\n'a💩b'.toWellFormed();      // =\u003e 'a💩b'\n'a\\uD83Db'.toWellFormed();  // =\u003e 'a�b'\n```\n\n[*Example*](https://tinyurl.com/ykac4qgy):\n```js\nconsole.log(RegExp.escape('10$')); // =\u003e '\\\\x310\\\\$'\nconsole.log(RegExp.escape('abcdefg_123456')); // =\u003e '\\\\x61bcdefg_123456'\nconsole.log(RegExp.escape('Привет')); // =\u003e 'Привет'\nconsole.log(RegExp.escape('(){}[]|,.?*+-^$=\u003c\u003e\\\\/#\u0026!%:;@~\\'\"`'));\n// =\u003e '\\\\(\\\\)\\\\{\\\\}\\\\[\\\\]\\\\|\\\\x2c\\\\.\\\\?\\\\*\\\\+\\\\x2d\\\\^\\\\$\\\\x3d\\\\x3c\\\\x3e\\\\\\\\\\\\/\\\\x23\\\\x26\\\\x21\\\\x25\\\\x3a\\\\x3b\\\\x40\\\\x7e\\\\x27\\\\x22\\\\x60'\nconsole.log(RegExp.escape('\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF'));\n// =\u003e '\\\\\\t\\\\\\n\\\\\\v\\\\\\f\\\\\\r\\\\x20\\\\xa0\\\\u1680\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\u2028\\\\u2029\\\\ufeff'\nconsole.log(RegExp.escape('💩')); // =\u003e '💩'\nconsole.log(RegExp.escape('\\uD83D')); // =\u003e '\\\\ud83d'\n```\n\n#### ECMAScript: Number[⬆](#index)\nModule [`es.number.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.constructor.js). `Number` constructor support binary and octal literals, [*example*](https://tinyurl.com/2659klkj):\n```js\nNumber('0b1010101'); // =\u003e 85\nNumber('0o7654321'); // =\u003e 2054353\n```\nModules [`es.number.epsilon`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.epsilon.js), [`es.number.is-finite`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.is-finite.js), [`es.number.is-integer`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.is-integer.js), [`es.number.is-nan`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.is-nan.js), [`es.number.is-safe-integer`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.is-safe-integer.js), [`es.number.max-safe-integer`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.max-safe-integer.js), [`es.number.min-safe-integer`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.min-safe-integer.js), [`es.number.parse-float`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.parse-float.js), [`es.number.parse-int`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.parse-int.js), [`es.number.to-exponential`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.to-exponential.js), [`es.number.to-fixed`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.to-fixed.js), [`es.number.to-precision`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.to-precision.js), [`es.parse-int`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.parse-int.js), [`es.parse-float`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.parse-float.js).\n```ts\nclass Number {\n  constructor(value: any): number;\n  toExponential(digits: number): string;\n  toFixed(digits: number): string;\n  toPrecision(precision: number): string;\n  static isFinite(number: any): boolean;\n  static isNaN(number: any): boolean;\n  static isInteger(number: any): boolean;\n  static isSafeInteger(number: any): boolean;\n  static parseFloat(string: string): number;\n  static parseInt(string: string, radix?: number = 10): number;\n  static EPSILON: number;\n  static MAX_SAFE_INTEGER: number;\n  static MIN_SAFE_INTEGER: number;\n}\n\nfunction parseFloat(string: string): number;\nfunction parseInt(string: string, radix?: number = 10): number;\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)/es|stable|actual|full/number\ncore-js(-pure)/es|stable|actual|full/number/constructor\ncore-js(-pure)/es|stable|actual|full/number/is-finite\ncore-js(-pure)/es|stable|actual|full/number/is-nan\ncore-js(-pure)/es|stable|actual|full/number/is-integer\ncore-js(-pure)/es|stable|actual|full/number/is-safe-integer\ncore-js(-pure)/es|stable|actual|full/number/parse-float\ncore-js(-pure)/es|stable|actual|full/number/parse-int\ncore-js(-pure)/es|stable|actual|full/number/epsilon\ncore-js(-pure)/es|stable|actual|full/number/max-safe-integer\ncore-js(-pure)/es|stable|actual|full/number/min-safe-integer\ncore-js(-pure)/es|stable|actual|full/number(/virtual)/to-exponential\ncore-js(-pure)/es|stable|actual|full/number(/virtual)/to-fixed\ncore-js(-pure)/es|stable|actual|full/number(/virtual)/to-precision\ncore-js(-pure)/es|stable|actual|full/parse-float\ncore-js(-pure)/es|stable|actual|full/parse-int\n```\n#### ECMAScript: Math[⬆](#index)\nModules [`es.math.acosh`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.acosh.js), [`es.math.asinh`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.asinh.js), [`es.math.atanh`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.atanh.js), [`es.math.cbrt`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.cbrt.js), [`es.math.clz32`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.clz32.js), [`es.math.cosh`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.cosh.js), [`es.math.expm1`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.expm1.js), [`es.math.fround`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.fround.js), [`es.math.f16round`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.f16round.js), [`es.math.hypot`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.hypot.js), [`es.math.imul`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.imul.js), [`es.math.log10`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.log10.js), [`es.math.log1p`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.log1p.js), [`es.math.log2`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.log2.js), [`es.math.sign`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.sign.js), [`es.math.sinh`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.sinh.js), [`esnext.math.sum-precise`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.math.sum-precise.js), [`es.math.tanh`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.tanh.js), [`es.math.trunc`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.trunc.js).\n```ts\nnamespace Math {\n  acosh(number: number): number;\n  asinh(number: number): number;\n  atanh(number: number): number;\n  cbrt(number: number): number;\n  clz32(number: number): number;\n  cosh(number: number): number;\n  expm1(number: number): number;\n  fround(number: number): number;\n  f16round(number: any): number;\n  hypot(...args: Array\u003cnumber\u003e): number;\n  imul(number1: number, number2: number): number;\n  log1p(number: number): number;\n  log10(number: number): number;\n  log2(number: number): number;\n  sign(number: number): 1 | -1 | 0 | -0 | NaN;\n  sinh(number: number): number;\n  sumPrecise(items: Iterable\u003cnumber\u003e): Number;\n  tanh(number: number): number;\n  trunc(number: number): number;\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)/es|stable|actual|full/math\ncore-js(-pure)/es|stable|actual|full/math/acosh\ncore-js(-pure)/es|stable|actual|full/math/asinh\ncore-js(-pure)/es|stable|actual|full/math/atanh\ncore-js(-pure)/es|stable|actual|full/math/cbrt\ncore-js(-pure)/es|stable|actual|full/math/clz32\ncore-js(-pure)/es|stable|actual|full/math/cosh\ncore-js(-pure)/es|stable|actual|full/math/expm1\ncore-js(-pure)/es|stable|actual|full/math/fround\ncore-js(-pure)/es|stable|actual|full/math/f16round\ncore-js(-pure)/es|stable|actual|full/math/hypot\ncore-js(-pure)/es|stable|actual|full/math/imul\ncore-js(-pure)/es|stable|actual|full/math/log1p\ncore-js(-pure)/es|stable|actual|full/math/log10\ncore-js(-pure)/es|stable|actual|full/math/log2\ncore-js(-pure)/es|stable|actual|full/math/sign\ncore-js(-pure)/es|stable|actual|full/math/sinh\ncore-js(-pure)/es|stable|actual|full/math/sum-precise\ncore-js(-pure)/es|stable|actual|full/math/tanh\ncore-js(-pure)/es|stable|actual|full/math/trunc\n```\n[*Examples*](https://tinyurl.com/2bd3nako):\n```js\n1e20 + 0.1 + -1e20; // =\u003e 0\nMath.sumPrecise([1e20, 0.1, -1e20]); // =\u003e 0.1\n```\n\n#### ECMAScript: Date[⬆](#index)\nModules [`es.date.to-string`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.date.to-string.js), ES5 features with fixes: [`es.date.now`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.date.now.js), [`es.date.to-iso-string`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.date.to-iso-string.js), [`es.date.to-json`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.date.to-json.js) and [`es.date.to-primitive`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.date.to-primitive.js).\n\nAnnex B methods. Modules [`es.date.get-year`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.date.get-year.js), [`es.date.set-year`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.date.set-year.js) and [`es.date.to-gmt-string`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.date.to-gmt-string.js).\n```ts\nclass Date {\n  getYear(): int;\n  setYear(year: int): number;\n  toGMTString(): string;\n  toISOString(): string;\n  toJSON(): string;\n  toString(): string;\n  @@toPrimitive(hint: 'default' | 'number' | 'string'): string | number;\n  static now(): number;\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js/es|stable|actual|full/date\ncore-js/es|stable|actual|full/date/to-string\ncore-js(-pure)/es|stable|actual|full/date/now\ncore-js(-pure)/es|stable|actual|full/date/get-year\ncore-js(-pure)/es|stable|actual|full/date/set-year\ncore-js(-pure)/es|stable|actual|full/date/to-gmt-string\ncore-js(-pure)/es|stable|actual|full/date/to-iso-string\ncore-js(-pure)/es|stable|actual|full/date/to-json\ncore-js(-pure)/es|stable|actual|full/date/to-primitive\n```\n[*Example*](https://tinyurl.com/2cngq74c):\n```js\nnew Date(NaN).toString(); // =\u003e 'Invalid Date'\n```\n\n#### ECMAScript: Promise[⬆](#index)\nModules [`es.promise`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.promise.js), [`es.promise.all-settled`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.promise.all-settled.js), [`es.promise.any`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.promise.any.js), [`es.promise.finally`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.promise.finally.js), [`es.promise.try`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.promise.try.js) and [`es.promise.with-resolvers`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.promise.with-resolvers.js).\n```ts\nclass Promise {\n  constructor(executor: (resolve: Function, reject: Function) =\u003e void): Promise;\n  then(onFulfilled: Function, onRejected: Function): Promise;\n  catch(onRejected: Function): Promise;\n  finally(onFinally: Function): Promise;\n  static all(iterable: Iterable): Promise;\n  static allSettled(iterable: Iterable): Promise;\n  static any(promises: Iterable): Promise;\n  static race(iterable: Iterable): Promise;\n  static reject(r: any): Promise;\n  static resolve(x: any): Promise;\n  static try(callbackfn: Function, ...args?: Array\u003cmixed\u003e): Promise;\n  static withResolvers(): { promise: Promise, resolve: function, reject: function };\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)/es|stable|actual|full/promise\ncore-js(-pure)/es|stable|actual|full/promise/all-settled\ncore-js(-pure)/es|stable|actual|full/promise/any\ncore-js(-pure)/es|stable|actual|full/promise/finally\ncore-js(-pure)/es|stable|actual|full/promise/try\ncore-js(-pure)/es|stable|actual|full/promise/with-resolvers\n```\nBasic [*example*](https://tinyurl.com/23bhbhbu):\n```js\n/* eslint-disable promise/prefer-await-to-callbacks -- example */\nfunction sleepRandom(time) {\n  return new Promise((resolve, reject) =\u003e {\n    setTimeout(resolve, time * 1e3, 0 | Math.random() * 1e3);\n  });\n}\n\nconsole.log('Run');                    // =\u003e Run\nsleepRandom(5).then(result =\u003e {\n  console.log(result);                 // =\u003e 869, after 5 sec.\n  return sleepRandom(10);\n}).then(result =\u003e {\n  console.log(result);                 // =\u003e 202, after 10 sec.\n}).then(() =\u003e {\n  console.log('immediately after');    // =\u003e immediately after\n  throw new Error('Irror!');\n}).then(() =\u003e {\n  console.log('will not be displayed');\n}).catch(error =\u003e console.log(error)); // =\u003e =\u003e Error: Irror!\n```\n`Promise.resolve` and `Promise.reject` [*example*](https://tinyurl.com/28nq4agd):\n```js\n/* eslint-disable promise/prefer-await-to-callbacks -- example */\nPromise.resolve(42).then(x =\u003e console.log(x));         // =\u003e 42\nPromise.reject(42).catch(error =\u003e console.log(error)); // =\u003e 42\n\nPromise.resolve($.getJSON('/data.json')); // =\u003e ES promise\n```\n`Promise#finally` [*example*](https://tinyurl.com/2ywzmz72):\n```js\nPromise.resolve(42).finally(() =\u003e console.log('You will see it anyway'));\n\nPromise.reject(42).finally(() =\u003e console.log('You will see it anyway'));\n```\n`Promise.all` [*example*](https://tinyurl.com/23nc596a):\n```js\nPromise.all([\n  'foo',\n  sleepRandom(5),\n  sleepRandom(15),\n  sleepRandom(10),            // after 15 sec:\n]).then(x =\u003e console.log(x)); // =\u003e ['foo', 956, 85, 382]\n```\n`Promise.race` [*example*](https://tinyurl.com/2degj8ux):\n```js\n/* eslint-disable promise/prefer-await-to-callbacks -- example */\nfunction timeLimit(promise, time) {\n  return Promise.race([promise, new Promise((resolve, reject) =\u003e {\n    setTimeout(reject, time * 1e3, new Error(`Await \u003e ${ time } sec`));\n  })]);\n}\n\ntimeLimit(sleepRandom(5), 10).then(x =\u003e console.log(x));           // =\u003e 853, after 5 sec.\ntimeLimit(sleepRandom(15), 10).catch(error =\u003e console.log(error)); // Error: Await \u003e 10 sec\n```\n`Promise.allSettled` [*example*](https://tinyurl.com/2akj7c2u):\n```js\nPromise.allSettled([\n  Promise.resolve(1),\n  Promise.reject(2),\n  Promise.resolve(3),\n]).then(console.log); // =\u003e [{ value: 1, status: 'fulfilled' }, { reason: 2, status: 'rejected' }, { value: 3, status: 'fulfilled' }]\n```\n`Promise.any` [*example*](https://tinyurl.com/23u59v6g):\n```js\nPromise.any([\n  Promise.resolve(1),\n  Promise.reject(2),\n  Promise.resolve(3),\n]).then(console.log); // =\u003e 1\n\nPromise.any([\n  Promise.reject(1),\n  Promise.reject(2),\n  Promise.reject(3),\n]).catch(({ errors }) =\u003e console.log(errors)); // =\u003e [1, 2, 3]\n```\n`Promise.try` [*examples*](https://tinyurl.com/2p48ojau):\n```js\n/* eslint-disable promise/prefer-await-to-callbacks -- example */\nPromise.try(() =\u003e 42).then(it =\u003e console.log(`Promise, resolved as ${ it }`));\n\nPromise.try(() =\u003e { throw new Error('42'); }).catch(error =\u003e console.log(`Promise, rejected as ${ error }`));\n\nPromise.try(async () =\u003e 42).then(it =\u003e console.log(`Promise, resolved as ${ it }`));\n\nPromise.try(async () =\u003e { throw new Error('42'); }).catch(error =\u003e console.log(`Promise, rejected as ${ error }`));\n\nPromise.try(it =\u003e it, 42).then(it =\u003e console.log(`Promise, resolved as ${ it }`));\n```\n`Promise.withResolvers` [*examples*](https://tinyurl.com/2gx4t3xu):\n```js\nconst d = Promise.withResolvers();\nd.resolve(42);\nd.promise.then(console.log); // =\u003e 42\n```\n[Example](https://tinyurl.com/bde6am73) with async functions:\n```js\nlet delay = time =\u003e new Promise(resolve =\u003e setTimeout(resolve, time));\n\nasync function sleepRandom(time) {\n  await delay(time * 1e3);\n  return 0 | Math.random() * 1e3;\n}\n\nasync function sleepError(time, msg) {\n  await delay(time * 1e3);\n  throw new Error(msg);\n}\n\n(async () =\u003e {\n  try {\n    console.log('Run');                // =\u003e Run\n    console.log(await sleepRandom(5)); // =\u003e 936, after 5 sec.\n    let [a, b, c] = await Promise.all([\n      sleepRandom(5),\n      sleepRandom(15),\n      sleepRandom(10),\n    ]);\n    console.log(a, b, c);              // =\u003e 210 445 71, after 15 sec.\n    await sleepError(5, 'Error!');\n    console.log('Will not be displayed');\n  } catch (error) {\n    console.log(error);                // =\u003e Error: 'Error!', after 5 sec.\n  }\n})();\n```\n\n##### Unhandled rejection tracking[⬆](#index)\n\nIn Node.js, like in native implementation, available events [`unhandledRejection`](https://nodejs.org/api/process.html#process_event_unhandledrejection) and [`rejectionHandled`](https://nodejs.org/api/process.html#process_event_rejectionhandled):\n```js\nprocess.on('unhandledRejection', (reason, promise) =\u003e console.log('unhandled', reason, promise));\nprocess.on('rejectionHandled', promise =\u003e console.log('handled', promise));\n\nlet promise = Promise.reject(42);\n// unhandled 42 [object Promise]\n\n// eslint-disable-next-line promise/prefer-await-to-then -- example\nsetTimeout(() =\u003e promise.catch(() =\u003e { /* empty */ }), 1e3);\n// handled [object Promise]\n```\nIn a browser on rejection, by default, you will see notify in the console, or you can add a custom handler and a handler on handling unhandled, [*example*](https://tinyurl.com/5n6nj2e8):\n```js\nglobalThis.addEventListener('unhandledrejection', e =\u003e console.log('unhandled', e.reason, e.promise));\nglobalThis.addEventListener('rejectionhandled', e =\u003e console.log('handled', e.reason, e.promise));\n// or\nglobalThis.onunhandledrejection = e =\u003e console.log('unhandled', e.reason, e.promise);\nglobalThis.onrejectionhandled = e =\u003e console.log('handled', e.reason, e.promise);\n\nlet promise = Promise.reject(42);\n// =\u003e unhandled 42 [object Promise]\n\n// eslint-disable-next-line promise/prefer-await-to-then -- example\nsetTimeout(() =\u003e promise.catch(() =\u003e { /* empty */ }), 1e3);\n// =\u003e handled 42 [object Promise]\n```\n\n#### ECMAScript: Symbol[⬆](#index)\nModules [`es.symbol`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.js), [`es.symbol.async-dispose`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.async-dispose.js), [`es.symbol.async-iterator`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.async-iterator.js), [`es.symbol.description`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.description.js), [`es.symbol.dispose`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.dispose.js), [`es.symbol.has-instance`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.has-instance.js), [`es.symbol.is-concat-spreadable`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.is-concat-spreadable.js), [`es.symbol.iterator`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.iterator.js), [`es.symbol.match`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.match.js), [`es.symbol.replace`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.replace.js), [`es.symbol.search`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.search.js), [`es.symbol.species`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.species.js), [`es.symbol.split`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.split.js), [`es.symbol.to-primitive`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.to-primitive.js), [`es.symbol.to-string-tag`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.to-string-tag.js), [`es.symbol.unscopables`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.symbol.unscopables.js), [`es.math.to-string-tag`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.math.to-string-tag.js).\n```ts\nclass Symbol {\n  constructor(description?): symbol;\n  readonly attribute description: string | void;\n  static asyncDispose: @@asyncDispose;\n  static asyncIterator: @@asyncIterator;\n  static dispose: @@dispose;\n  static hasInstance: @@hasInstance;\n  static isConcatSpreadable: @@isConcatSpreadable;\n  static iterator: @@iterator;\n  static match: @@match;\n  static replace: @@replace;\n  static search: @@search;\n  static species: @@species;\n  static split: @@split;\n  static toPrimitive: @@toPrimitive;\n  static toStringTag: @@toStringTag;\n  static unscopables: @@unscopables;\n  static for(key: string): symbol;\n  static keyFor(sym: symbol): string;\n  static useSimple(): void;\n  static useSetter(): void;\n}\n\nclass Object {\n  static getOwnPropertySymbols(object: any): Array\u003csymbol\u003e;\n}\n```\nAlso wrapped some methods for correct work with `Symbol` polyfill.\n```ts\nclass Object {\n  static create(prototype: Object | null, properties?: { [property: PropertyKey]: PropertyDescriptor }): Object;\n  static defineProperties(object: Object, properties: { [property: PropertyKey]: PropertyDescriptor })): Object;\n  static defineProperty(object: Object, property: PropertyKey, attributes: PropertyDescriptor): Object;\n  static getOwnPropertyDescriptor(object: any, property: PropertyKey): PropertyDescriptor | void;\n  static getOwnPropertyNames(object: any): Array\u003cstring\u003e;\n  propertyIsEnumerable(key: PropertyKey): boolean;\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)/es|stable|actual|full/symbol\ncore-js(-pure)/es|stable|actual|full/symbol/async-dispose\ncore-js(-pure)/es|stable|actual|full/symbol/async-iterator\ncore-js/es|stable|actual|full/symbol/description\ncore-js(-pure)/es|stable|actual|full/symbol/dispose\ncore-js(-pure)/es|stable|actual|full/symbol/has-instance\ncore-js(-pure)/es|stable|actual|full/symbol/is-concat-spreadable\ncore-js(-pure)/es|stable|actual|full/symbol/iterator\ncore-js(-pure)/es|stable|actual|full/symbol/match\ncore-js(-pure)/es|stable|actual|full/symbol/replace\ncore-js(-pure)/es|stable|actual|full/symbol/search\ncore-js(-pure)/es|stable|actual|full/symbol/species\ncore-js(-pure)/es|stable|actual|full/symbol/split\ncore-js(-pure)/es|stable|actual|full/symbol/to-primitive\ncore-js(-pure)/es|stable|actual|full/symbol/to-string-tag\ncore-js(-pure)/es|stable|actual|full/symbol/unscopables\ncore-js(-pure)/es|stable|actual|full/symbol/for\ncore-js(-pure)/es|stable|actual|full/symbol/key-for\ncore-js(-pure)/es|stable|actual|full/object/get-own-property-symbols\ncore-js(-pure)/es|stable|actual|full/math/to-string-tag\n```\n[*Basic example*](https://tinyurl.com/2b2zfvrs):\n```js\nlet Person = (() =\u003e {\n  let NAME = Symbol('name');\n  return class {\n    constructor(name) {\n      this[NAME] = name;\n    }\n    getName() {\n      return this[NAME];\n    }\n  };\n})();\n\nlet person = new Person('Vasya');\nconsole.log(person.getName());            // =\u003e 'Vasya'\nconsole.log(person.name);                 // =\u003e undefined\nconsole.log(person[Symbol('name')]);      // =\u003e undefined, symbols are uniq\nfor (let key in person) console.log(key); // =\u003e nothing, symbols are not enumerable\n```\n`Symbol.for` \u0026 `Symbol.keyFor` [*example*](https://tinyurl.com/29u2q3jb):\n```js\nlet symbol = Symbol.for('key');\nsymbol === Symbol.for('key'); // true\nSymbol.keyFor(symbol);        // 'key'\n```\n[*Example*](https://tinyurl.com/2297e9bg) with methods for getting own object keys:\n```js\nlet object = { a: 1 };\nObject.defineProperty(object, 'b', { value: 2 });\nobject[Symbol('c')] = 3;\nObject.keys(object);                  // =\u003e ['a']\nObject.getOwnPropertyNames(object);   // =\u003e ['a', 'b']\nObject.getOwnPropertySymbols(object); // =\u003e [Symbol(c)]\nReflect.ownKeys(object);              // =\u003e ['a', 'b', Symbol(c)]\n```\n\n[*Symbol#description getter*](https://tinyurl.com/25s4664f):\n```js\nSymbol('foo').description; // =\u003e 'foo'\n// eslint-disable-next-line symbol-description -- example\nSymbol().description;      // =\u003e undefined\n```\n##### Caveats when using `Symbol` polyfill:[⬆](#index)\n\n- We can't add a new primitive type, `Symbol` returns an object.\n- `Symbol.for` and `Symbol.keyFor` can't be polyfilled cross-realm.\n- By default, to hide the keys, `Symbol` polyfill defines a setter in `Object.prototype`. For this reason, an uncontrolled creation of symbols can cause a memory leak and the `in` operator is not working correctly with `Symbol` polyfill: `Symbol() in {} // =\u003e true`.\n\nYou can disable defining setters in `Object.prototype`. [Example](https://tinyurl.com/2blse6aa):\n```js\nSymbol.useSimple();\nlet object1 = { [Symbol('symbol1')]: true };\nfor (let key in object1) console.log(key); // =\u003e 'Symbol(symbol1)_t.qamkg9f3q', w/o native Symbol\n\nSymbol.useSetter();\nlet object2 = { [Symbol('symbol2')]: true };\nfor (let key in object2) console.log(key); // nothing\n```\n- Currently, `core-js` does not add 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- Some problems are possible with environment exotic objects (for example, IE `localStorage`).\n\n#### ECMAScript: Collections[⬆](#index)\n`core-js` uses native collections in most cases, just fixes methods / constructor, if it's required, and in the old environment uses fast polyfill (O(1) lookup).\n#### Map[⬆](#index)\nModules [`es.map`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.map.js), [`es.map.group-by`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.map.group-by.js), [`es.map.get-or-insert`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.map.get-or-insert.js) and [`es.map.get-or-insert-computed`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.map.get-or-insert-computed.js).\n```ts\nclass Map {\n  constructor(iterable?: Iterable\u003c[key, value]\u003e): Map;\n  clear(): void;\n  delete(key: any): boolean;\n  forEach(callbackfn: (value: any, key: any, target: any) =\u003e void, thisArg: any): void;\n  get(key: any): any;\n  getOrInsert(key: any, value: any): any;\n  getOrInsertComputed(key: any, (key: any) =\u003e value: any): any;\n  has(key: any): boolean;\n  set(key: any, val: any): this;\n  values(): Iterator\u003cvalue\u003e;\n  keys(): Iterator\u003ckey\u003e;\n  entries(): Iterator\u003c[key, value]\u003e;\n  @@iterator(): Iterator\u003c[key, value]\u003e;\n  readonly attribute size: number;\n  static groupBy(items: Iterable, callbackfn: (value: any, index: number) =\u003e key): Map\u003ckey, Array\u003cmixed\u003e\u003e;\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)/es|stable|actual|full/map\ncore-js(-pure)/es|stable|actual|full/map/group-by\ncore-js(-pure)/es|stable|actual|full/map/get-or-insert\ncore-js(-pure)/es|stable|actual|full/map/get-or-insert-computed\n```\n[*Examples*](https://tinyurl.com/298ekxmq):\n```js\nlet array = [1];\n\nlet map = new Map([['a', 1], [42, 2]]);\nmap.set(array, 3).set(true, 4);\n\nconsole.log(map.size);        // =\u003e 4\nconsole.log(map.has(array));  // =\u003e true\nconsole.log(map.has([1]));    // =\u003e false\nconsole.log(map.get(array));  // =\u003e 3\nmap.forEach((val, key) =\u003e {\n  console.log(val);           // =\u003e 1, 2, 3, 4\n  console.log(key);           // =\u003e 'a', 42, [1], true\n});\nmap.delete(array);\nconsole.log(map.size);        // =\u003e 3\nconsole.log(map.get(array));  // =\u003e undefined\nconsole.log(Array.from(map)); // =\u003e [['a', 1], [42, 2], [true, 4]]\n\nmap = new Map([['a', 1], ['b', 2], ['c', 3]]);\n\nfor (let [key, value] of map) {\n  console.log(key);                                 // =\u003e 'a', 'b', 'c'\n  console.log(value);                               // =\u003e 1, 2, 3\n}\nfor (let value of map.values()) console.log(value); // =\u003e 1, 2, 3\nfor (let key of map.keys()) console.log(key);       // =\u003e 'a', 'b', 'c'\nfor (let [key, value] of map.entries()) {\n  console.log(key);                                 // =\u003e 'a', 'b', 'c'\n  console.log(value);                               // =\u003e 1, 2, 3\n}\n\nmap = Map.groupBy([1, 2, 3, 4, 5], it =\u003e it % 2);\nmap.get(1); // =\u003e [1, 3, 5]\nmap.get(0); // =\u003e [2, 4]\n\nmap = new Map([['a', 1]]);\n\nmap.getOrInsert('a', 2); // =\u003e 1\n\nmap.getOrInsert('b', 3); // =\u003e 3\n\nmap.getOrInsertComputed('a', key =\u003e key); // =\u003e 1\n\nmap.getOrInsertComputed('c', key =\u003e key); // =\u003e 'c'\n\nconsole.log(map); // =\u003e Map { 'a': 1, 'b': 3, 'c': 'c' }\n```\n\n#### Set[⬆](#index)\nModules [`es.set`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.set.js), [`es.set.difference.v2`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.set.difference.v2.js), [`es.set.intersection.v2`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.set.intersection.v2.js), [`es.set.is-disjoint-from.v2`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.set.is-disjoint-from.v2.js), [`es.set.is-subset-of.v2`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.set.is-subset-of.v2.js), [`es.set.is-superset-of.v2`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.set.is-superset-of.v2.js), [`es.set.symmetric-difference.v2`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.set.symmetric-difference.v2.js), [`es.set.union.v2`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.set.union.v2.js)\n```ts\nclass Set {\n  constructor(iterable?: Iterable\u003cvalue\u003e): Set;\n  add(key: any): this;\n  clear(): void;\n  delete(key: any): boolean;\n  forEach((value: any, key: any, target: any) =\u003e void, thisArg: any): void;\n  has(key: any): boolean;\n  values(): Iterator\u003cvalue\u003e;\n  keys(): Iterator\u003cvalue\u003e;\n  entries(): Iterator\u003c[value, value]\u003e;\n  difference(other: SetLike\u003cmixed\u003e): Set;\n  intersection(other: SetLike\u003cmixed\u003e): Set;\n  isDisjointFrom(other: SetLike\u003cmixed\u003e): boolean;\n  isSubsetOf(other: SetLike\u003cmixed\u003e): boolean;\n  isSupersetOf(other: SetLike\u003cmixed\u003e): boolean;\n  symmetricDifference(other: SetLike\u003cmixed\u003e): Set;\n  union(other: SetLike\u003cmixed\u003e): Set;\n  @@iterator(): Iterator\u003cvalue\u003e;\n  readonly attribute size: number;\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)/es|stable|actual|full/set\ncore-js(-pure)/es|stable|actual|full/set/difference\ncore-js(-pure)/es|stable|actual|full/set/intersection\ncore-js(-pure)/es|stable|actual|full/set/is-disjoint-from\ncore-js(-pure)/es|stable|actual|full/set/is-subset-of\ncore-js(-pure)/es|stable|actual|full/set/is-superset-of\ncore-js(-pure)/es|stable|actual|full/set/symmetric-difference\ncore-js(-pure)/es|stable|actual|full/set/union\n```\n[*Examples*](https://tinyurl.com/2dy5t9ey):\n```js\nlet set = new Set(['a', 'b', 'a', 'c']);\nset.add('d').add('b').add('e');\nconsole.log(set.size);        // =\u003e 5\nconsole.log(set.has('b'));    // =\u003e true\nset.forEach(it =\u003e {\n  console.log(it);            // =\u003e 'a', 'b', 'c', 'd', 'e'\n});\nset.delete('b');\nconsole.log(set.size);        // =\u003e 4\nconsole.log(set.has('b'));    // =\u003e false\nconsole.log(Array.from(set)); // =\u003e ['a', 'c', 'd', 'e']\n\nset = new Set([1, 2, 3, 2, 1]);\n\nfor (let value of set) console.log(value);          // =\u003e 1, 2, 3\nfor (let value of set.values()) console.log(value); // =\u003e 1, 2, 3\nfor (let key of set.keys()) console.log(key);       // =\u003e 1, 2, 3\nfor (let [key, value] of set.entries()) {\n  console.log(key);                                 // =\u003e 1, 2, 3\n  console.log(value);                               // =\u003e 1, 2, 3\n}\n\nnew Set([1, 2, 3]).union(new Set([3, 4, 5]));               // =\u003e Set {1, 2, 3, 4, 5}\nnew Set([1, 2, 3]).intersection(new Set([3, 4, 5]));        // =\u003e Set {3}\nnew Set([1, 2, 3]).difference(new Set([3, 4, 5]));          // =\u003e Set {1, 2}\nnew Set([1, 2, 3]).symmetricDiffere","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzloirock%2Fcore-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzloirock%2Fcore-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzloirock%2Fcore-js/lists"}