/core-js

Standard Library

Primary LanguageJavaScriptMIT LicenseMIT

logo

fundraising PRs welcome version core-js downloads core-js-pure downloads jsDelivr

I highly recommend reading this: So, what's next?

Modular standard library for JavaScript. Includes polyfills for ECMAScript up to 2023: promises, symbols, collections, iterators, typed arrays, many other features, ECMAScript proposals, some cross-platform WHATWG / W3C features and proposals like URL. You can load only required features or use it without global namespace pollution.

If you are looking for documentation for obsolete core-js@2, please, check this branch.

Raising funds

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:

  • Open Collective:

    Open-collective-buttom

  • Patreon

  • Boosty

  • Bitcoin: bc1qlea7544qtsmj2rayg0lthvza9fau63ux0fstcz

  • Alipay:

    Alipay-code

Sponsors

sponsor1 sponsor2 sponsor3 sponsor4 sponsor5 sponsor6 sponsor7 sponsor8 sponsor9 sponsor10 sponsor11 sponsor12

backers

Quick start

Example of usage:

import "core-js/actual";

Promise.resolve(42).then((it) => console.log(it)); // => 42

Array.from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // => [1, 2, 3, 4, 5]

[1, 2].flatMap((it) => [it, it]); // => [1, 1, 2, 2]

(function* (i) {
  while (true) yield i++;
})(1)
  .drop(1)
  .take(5)
  .filter((it) => it % 2)
  .map((it) => it ** 2)
  .toArray(); // => [9, 25]

structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])

You can load only required features:

import "core-js/actual/promise";
import "core-js/actual/set";
import "core-js/actual/iterator";
import "core-js/actual/array/from";
import "core-js/actual/array/flat-map";
import "core-js/actual/structured-clone";

Promise.resolve(42).then((it) => console.log(it)); // => 42

Array.from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // => [1, 2, 3, 4, 5]

[1, 2].flatMap((it) => [it, it]); // => [1, 1, 2, 2]

(function* (i) {
  while (true) yield i++;
})(1)
  .drop(1)
  .take(5)
  .filter((it) => it % 2)
  .map((it) => it ** 2)
  .toArray(); // => [9, 25]

structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])

Or use it without global namespace pollution:

import Promise from "core-js-pure/actual/promise";
import Set from "core-js-pure/actual/set";
import Iterator from "core-js-pure/actual/iterator";
import from from "core-js-pure/actual/array/from";
import flatMap from "core-js-pure/actual/array/flat-map";
import structuredClone from "core-js-pure/actual/structured-clone";

Promise.resolve(42).then((it) => console.log(it)); // => 42

from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // => [1, 2, 3, 4, 5]

flatMap([1, 2], (it) => [it, it]); // => [1, 1, 2, 2]

Iterator.from(
  (function* (i) {
    while (true) yield i++;
  })(1)
)
  .drop(1)
  .take(5)
  .filter((it) => it % 2)
  .map((it) => it ** 2)
  .toArray(); // => [9, 25]

structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])

Docs

Core-JS Document