Socket
Socket
Sign inDemoInstall

core-js-compat

Package Overview
Dependencies
2
Maintainers
1
Versions
140
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

core-js-compat


Version published
Maintainers
1
Created

Package description

What is core-js-compat?

The core-js-compat package provides compatibility data for core-js, which is a modular standard library for JavaScript, including polyfills for ECMAScript up to the latest standards. It is useful for developers who need to know which features are available in core-js for a specific version of a browser or Node.js.

What are core-js-compat's main functionalities?

Compatibility Data Retrieval

Retrieve a list of features supported by core-js for a specific environment, such as Chrome 70.

const { list } = require('core-js-compat')({ targets: 'chrome 70' });

Custom Build Generation

Generate a list of core-js modules required to support a specific target, such as Internet Explorer 11, with a specific version of core-js.

const { getModulesListForTargetVersion } = require('core-js-compat');
const modulesList = getModulesListForTargetVersion({ targets: { ie: 11 }, version: '3.6' });

Other packages similar to core-js-compat

Changelog

Source

3.22.8 - 2022.06.02

  • Fixed possible multiple call of ToBigInt / ToNumber conversion of the argument passed to %TypedArray%.prototype.fill in V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18
  • Fixed some cases of DeletePropertyOrThrow in IE9-
  • Fixed the kind of error (TypeError instead of Error) on incorrect exec result in RegExp.prototype.test polyfill
  • Fixed dependencies of { actual, full, features }/typed-array/at entries
  • Added Electron 20.0 compat data mapping
  • Added iOS Safari 15.5 compat data mapping
  • Refactoring

Readme

Source

logo

core-js-compat package contains data about the necessity of core-js modules and API for getting a list of required core-js modules by browserslist query.

import compat from 'core-js-compat';

const {
  list,                         // array of required modules
  targets,                      // object with targets for each module
} = compat({
  targets: '> 1%',              // browserslist query or object of minimum environment versions to support, see below
  modules: [                    // optional list / filter of modules - regex, sting or an array of them:
    'core-js/actual',           // - an entry point
    'esnext.array.unique-by',   // - a module name (or just a start of a module name)
    /^web\./,                   // - regex that a module name must satisfy
  ],
  exclude: [                    // optional list / filter of modules to exclude, the signature is similar to `modules` option
    'web.atob',
  ],
  version: '3.22',              // used `core-js` version, by default - the latest
});

console.log(targets);
/* =>
{
  'es.error.cause': { ios: '14.5-14.8', samsung: '16.0' },
  'es.aggregate-error.cause': { ios: '14.5-14.8', samsung: '16.0' },
  'es.array.at': { ios: '14.5-14.8' },
  'es.object.has-own': { ios: '14.5-14.8', samsung: '16.0' },
  'es.string.at-alternative': { ios: '14.5-14.8' },
  'es.typed-array.at': { ios: '14.5-14.8' },
  'es.typed-array.set': { samsung: '16.0' },
  'esnext.array.find-last': { firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.array.find-last-index': { firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.array.group-by': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.array.group-by-to-map': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.array.to-reversed': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.array.to-sorted': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.array.to-spliced': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.array.unique-by': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.array.with': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.typed-array.find-last': { firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.typed-array.find-last-index': { firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.typed-array.to-reversed': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.typed-array.to-sorted': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.typed-array.to-spliced': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'esnext.typed-array.with': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'web.dom-exception.stack': { chrome: '98', edge: '99', ios: '14.5-14.8', samsung: '16.0' },
  'web.immediate': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
  'web.structured-clone': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' }
}
*/

targets option

targets could be a browserslist query or a targets object that specifies minimum environment versions to support:

// browserslist query:
'defaults, not IE 11, maintained node versions'
// object:
{
  android: '4.0',      // Android WebView version
  chrome: '38',        // Chrome version
  deno: '1.12',        // Deno version
  edge: '13',          // Edge version
  electron: '5.0',     // Electron framework version
  firefox: '15',       // Firefox version
  ie: '8',             // Internet Explorer version
  ios: '13.0',         // iOS Safari version
  node: 'current',     // NodeJS version, you could use 'current' for set it to currently used
  opera: '12',         // Opera version
  opera_mobile: '7',   // Opera Mobile version
  phantom: '1.9',      // PhantomJS headless browser version
  rhino: '1.7.13',     // Rhino engine version
  safari: '14.0',      // Safari version
  samsung: '14.0',     // Samsung Internet version
  esmodules: true,     // That option set target to minimum supporting ES Modules versions of all browsers
  browsers: '> 0.25%', // Browserslist query or object with target browsers
}

Additional API:

// equals of of the method from the example above
require('core-js-compat/compat')({ targets, modules, version }); // => { list: Array<ModuleName>, targets: { [ModuleName]: { [EngineName]: EngineVersion } } }
// or
require('core-js-compat').compat({ targets, modules, version }); // => { list: Array<ModuleName>, targets: { [ModuleName]: { [EngineName]: EngineVersion } } }

// full compat data:
require('core-js-compat/data'); // => { [ModuleName]: { [EngineName]: EngineVersion } }
// or
require('core-js-compat').data; // => { [ModuleName]: { [EngineName]: EngineVersion } }

// map of modules by `core-js` entry points:
require('core-js-compat/entries'); // => { [EntryPoint]: Array<ModuleName> }
// or
require('core-js-compat').entries; // => { [EntryPoint]: Array<ModuleName> }

// full list of modules:
require('core-js-compat/modules'); // => Array<ModuleName>
// or
require('core-js-compat').modules; // => Array<ModuleName>

// the subset of modules which available in the passed `core-js` version:
require('core-js-compat/get-modules-list-for-target-version')('3.22'); // => Array<ModuleName>
// or
require('core-js-compat').getModulesListForTargetVersion('3.22'); // => Array<ModuleName>

If you want to add new / update data about modules required for target engines, follow this instruction.

FAQs

Last updated on 01 Jun 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc