CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-core-js-compat

Contains data about the necessity of core-js modules and API for getting a list of required core-js modules by browserslist query

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

entry-points.mddocs/

Entry Points

Maps core-js entry points to their required modules, enabling targeted polyfill loading based on usage patterns.

Capabilities

Entry Point Mapping

Complete mapping of core-js entry points to their constituent modules.

/**
 * Maps core-js entry points to required modules
 * Each entry point corresponds to a core-js import path
 */
const entries: {
  [entry_point: string]: readonly ModuleName[]
};

Usage Examples:

const { entries } = require('core-js-compat');

// Get modules for specific entry point
const actualModules = entries['core-js/actual'];
console.log(actualModules.slice(0, 5));
// ['es.symbol', 'es.symbol.description', 'es.symbol.async-iterator', ...]

// Find entry points containing specific module
function findEntryPoints(moduleName) {
  return Object.keys(entries).filter(entry => 
    entries[entry].includes(moduleName)
  );
}

console.log(findEntryPoints('es.array.at'));
// ['core-js/actual', 'core-js/stable', 'core-js/es', ...]

Common Entry Points

Core Entry Points:

// All stable and proposed features
const actual = entries['core-js/actual'];
console.log(`${actual.length} modules in core-js/actual`);

// Only stable features
const stable = entries['core-js/stable'];  
console.log(`${stable.length} modules in core-js/stable`);

// All ES standard features
const es = entries['core-js/es'];
console.log(`${es.length} modules in core-js/es`);

// Proposed features only
const proposals = entries['core-js/proposals'];
console.log(`${proposals.length} modules in core-js/proposals`);

Feature-Specific Entry Points:

// Array methods
const arrayMethods = entries['core-js/actual/array'];
console.log(arrayMethods);
// ['es.array.at', 'es.array.concat', 'es.array.find', ...]

// Object methods  
const objectMethods = entries['core-js/actual/object'];
console.log(objectMethods);
// ['es.object.assign', 'es.object.create', 'es.object.keys', ...]

// Promise features
const promiseFeatures = entries['core-js/actual/promise'];
console.log(promiseFeatures);
// ['es.promise', 'es.promise.all-settled', 'es.promise.any', ...]

Environment-Specific Entry Points:

// Web platform features
const webFeatures = entries['core-js/web'];
console.log(webFeatures);
// ['web.atob', 'web.btoa', 'web.dom-exception.constructor', ...]

// Stage 4 proposals (becoming standard)
const stage4 = entries['core-js/stage/4'];
console.log(stage4);

// Stage 3 proposals  
const stage3 = entries['core-js/stage/3'];
console.log(stage3);

Entry Point Analysis

Understanding Entry Point Structure:

const { entries } = require('core-js-compat');

// Analyze entry point hierarchy
function analyzeEntryPoints() {
  const analysis = {
    total: Object.keys(entries).length,
    byPath: {},
    byModuleCount: {}
  };
  
  Object.entries(entries).forEach(([path, modules]) => {
    // Group by path prefix
    const prefix = path.split('/')[1] || 'root';
    if (!analysis.byPath[prefix]) analysis.byPath[prefix] = 0;
    analysis.byPath[prefix]++;
    
    // Group by module count
    const count = modules.length;
    const range = count < 10 ? 'small' : count < 50 ? 'medium' : 'large';
    if (!analysis.byModuleCount[range]) analysis.byModuleCount[range] = 0;
    analysis.byModuleCount[range]++;
  });
  
  return analysis;
}

console.log(analyzeEntryPoints());
// { total: 156, byPath: { actual: 45, stable: 42, ... }, ... }

Finding Minimal Entry Points:

// Find smallest entry point containing required modules
function findMinimalEntryPoint(requiredModules) {
  let best = null;
  let minSize = Infinity;
  
  Object.entries(entries).forEach(([entry, modules]) => {
    const hasAll = requiredModules.every(mod => modules.includes(mod));
    if (hasAll && modules.length < minSize) {
      best = entry;
      minSize = modules.length;
    }
  });
  
  return best;
}

// Example usage
const needed = ['es.array.at', 'es.object.has-own'];
const minimal = findMinimalEntryPoint(needed);
console.log(`Best entry point: ${minimal}`);

Entry Point Categories

By Stability Level:

// Categorize entry points by stability
function categorizeByStability() {
  const categories = {
    stable: [],      // Standardized features
    stage4: [],      // Stage 4 proposals (becoming standard)
    stage3: [],      // Stage 3 proposals
    stage2: [],      // Stage 2 proposals  
    stage1: [],      // Stage 1 proposals
    experimental: [] // Earlier stage or experimental
  };
  
  Object.keys(entries).forEach(entry => {
    if (entry.includes('/stable')) categories.stable.push(entry);
    else if (entry.includes('/stage/4')) categories.stage4.push(entry);
    else if (entry.includes('/stage/3')) categories.stage3.push(entry);
    else if (entry.includes('/stage/2')) categories.stage2.push(entry);
    else if (entry.includes('/stage/1')) categories.stage1.push(entry);
    else if (entry.includes('proposals')) categories.experimental.push(entry);
  });
  
  return categories;
}

By Feature Area:

// Group entry points by feature area
function groupByFeature() {
  const features = {};
  
  Object.keys(entries).forEach(entry => {
    const parts = entry.split('/');
    if (parts.length >= 3) {
      const feature = parts[2]; // e.g., 'array', 'object', 'promise'
      if (!features[feature]) features[feature] = [];
      features[feature].push(entry);
    }
  });
  
  return features;
}

console.log(Object.keys(groupByFeature()));
// ['array', 'object', 'promise', 'string', 'symbol', ...]

Usage Patterns

Targeted Polyfilling:

const { entries, compat } = require('core-js-compat');

// Get required modules for specific entry point
function getRequiredFromEntry(entryPoint, targets) {
  const entryModules = entries[entryPoint];
  if (!entryModules) return null;
  
  const result = compat({
    targets,
    modules: entryModules
  });
  
  return result;
}

// Example: Only load array polyfills needed for IE 11
const arrayPolyfills = getRequiredFromEntry('core-js/es/array', { ie: '11' });
console.log(arrayPolyfills.list);

Bundle Optimization:

// Find best entry points for bundle size optimization
function optimizeBundle(requiredModules, targets) {
  // Find all entry points that cover required modules
  const candidates = Object.entries(entries).filter(([entry, modules]) =>
    requiredModules.every(req => modules.includes(req))
  );
  
  // Analyze each candidate
  const analysis = candidates.map(([entry, modules]) => {
    const result = compat({
      targets,
      modules: modules
    });
    
    return {
      entry,
      totalModules: modules.length,
      requiredModules: result.list.length,
      efficiency: result.list.length / modules.length
    };
  });
  
  // Sort by efficiency (most required modules per total module)
  return analysis.sort((a, b) => b.efficiency - a.efficiency);
}

Development vs Production Entry Points:

// Different strategies for different environments
const strategies = {
  development: {
    // Use comprehensive entry points for better debugging
    entryPoint: 'core-js/actual',
    rationale: 'Include all features for development convenience'
  },
  
  production: {
    // Use targeted entry points for smaller bundles
    analyze: (targets) => {
      const result = compat({ targets });
      return {
        entryPoint: findMinimalEntryPoint(result.list),
        savings: `Reduced from ${entries['core-js/actual'].length} to ${result.list.length} modules`
      };
    }
  }
};

docs

compatibility-analysis.md

compatibility-data.md

entry-points.md

index.md

version-utilities.md

tile.json