core-js-compat provides compatibility data and utilities for determining which core-js polyfills are needed for specific browser targets. It offers an API that accepts browserslist queries or target environment objects and returns lists of required core-js modules along with detailed compatibility information.
npm install core-js-compatconst compat = require('core-js-compat');Individual components can also be imported:
const compat = require('core-js-compat/compat');
const data = require('core-js-compat/data');
const entries = require('core-js-compat/entries');
const modules = require('core-js-compat/modules');
const getModulesListForTargetVersion = require('core-js-compat/get-modules-list-for-target-version');const compat = require('core-js-compat');
const result = compat({
targets: '> 1%', // browserslist query
modules: [ // optional filter
'core-js/actual',
'esnext.array.unique-by',
/^web\./
],
exclude: ['web.atob'], // optional exclusions
version: '3.45', // core-js version
inverse: false // show required modules
});
console.log(result.list); // ['es.array.at', 'es.object.has-own', ...]
console.log(result.targets); // { 'es.array.at': { ios: '14.5-14.8' }, ... }core-js-compat is built around several key components:
compat function that processes targets and returns required modulesCore compatibility analysis functionality that determines which core-js modules are needed for specified browser targets. Supports complex filtering, exclusion patterns, and inverse analysis.
function compat(options?: CompatOptions): CompatOutput;
interface CompatOptions {
modules?: Modules;
exclude?: Modules;
targets?: Targets | BrowserslistQuery;
version?: string;
inverse?: boolean;
filter?: Modules; // deprecated
}
interface CompatOutput {
list: ModuleName[];
targets: {
[module: ModuleName]: {
[target in Target]?: TargetVersion
}
};
}Complete compatibility data for all core-js modules across different browsers and JavaScript engines. Contains minimum version requirements for each module.
const data: CompatData;
interface CompatData {
[module: ModuleName]: {
[target in Target]?: TargetVersion
};
}Maps core-js entry points to their required modules, enabling targeted polyfill loading based on usage patterns.
const entries: {
[entry_point: string]: readonly ModuleName[]
};Utilities for working with specific core-js versions and determining module availability across versions.
function getModulesListForTargetVersion(version: TargetVersion): readonly ModuleName[];
const modules: readonly ModuleName[];type ModuleName = string;
type Target =
| 'android' | 'bun' | 'chrome' | 'chrome-android' | 'deno' | 'edge'
| 'electron' | 'firefox' | 'firefox-android' | 'hermes' | 'ie' | 'ios'
| 'node' | 'opera' | 'opera-android' | 'phantom' | 'quest' | 'react-native'
| 'rhino' | 'safari' | 'samsung' | 'oculus' | 'react' | 'opera_mobile';
type TargetVersion = string;
type Modules = string | RegExp | readonly (string | RegExp)[];
type BrowserslistQuery = string | ReadonlyArray<string>;
type Environments = {
[target in Target]?: string | number;
};
type Targets = Environments & {
browsers?: Environments | BrowserslistQuery;
esmodules?: boolean | 'intersect';
};