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

version-utilities.mddocs/

Version Utilities

Utilities for working with specific core-js versions and determining module availability across versions.

Capabilities

Version-Specific Module Lists

Get the subset of modules available in a specific core-js version.

/**
 * Get modules available in specific core-js version
 * @param version - Core-js version string (must be 3.x)
 * @returns Array of module names available in that version
 * @throws RangeError for non-3.x versions
 */
function getModulesListForTargetVersion(version: TargetVersion): readonly ModuleName[];

Usage Examples:

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

// Get modules for specific version
const v3_30_modules = getModulesListForTargetVersion('3.30.0');
console.log(`${v3_30_modules.length} modules in core-js@3.30.0`);

// Compare versions
const v3_20_modules = getModulesListForTargetVersion('3.20.0');
const newIn3_30 = v3_30_modules.filter(mod => !v3_20_modules.includes(mod));
console.log(`${newIn3_30.length} new modules in 3.30.0:`, newIn3_30);

// Check if module exists in version
function hasModule(moduleName, version) {
  const modules = getModulesListForTargetVersion(version);
  return modules.includes(moduleName);
}

console.log(hasModule('es.array.at', '3.20.0')); // false
console.log(hasModule('es.array.at', '3.30.0')); // true

All Available Modules

Complete list of all core-js modules.

/**
 * Complete list of all core-js module names
 * Represents all modules available in the latest version
 */
const modules: readonly ModuleName[];

Usage Examples:

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

console.log(`Total modules: ${modules.length}`);

// Filter by category
const esModules = modules.filter(name => name.startsWith('es.'));
const esnextModules = modules.filter(name => name.startsWith('esnext.'));
const webModules = modules.filter(name => name.startsWith('web.'));

console.log(`ES modules: ${esModules.length}`);
console.log(`ESNext modules: ${esnextModules.length}`) ;
console.log(`Web modules: ${webModules.length}`);

// Search modules
function searchModules(pattern) {
  const regex = new RegExp(pattern, 'i');
  return modules.filter(name => regex.test(name));
}

console.log(searchModules('array')); 
// ['es.array.at', 'es.array.concat', 'esnext.array.group', ...]

Version Comparison and Analysis

Version Evolution Tracking:

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

// Track module additions across versions
function getVersionDiff(oldVersion, newVersion) {
  const oldModules = getModulesListForTargetVersion(oldVersion);
  const newModules = getModulesListForTargetVersion(newVersion);
  
  return {
    added: newModules.filter(mod => !oldModules.includes(mod)),
    removed: oldModules.filter(mod => !newModules.includes(mod)),
    oldCount: oldModules.length,
    newCount: newModules.length
  };
}

// Example usage
const diff = getVersionDiff('3.20.0', '3.30.0');
console.log(`Added: ${diff.added.length}, Removed: ${diff.removed.length}`);
console.log('New modules:', diff.added);

Version Compatibility Analysis:

// Find minimum version containing required modules
function findMinimumVersion(requiredModules, versions = ['3.20.0', '3.25.0', '3.30.0', '3.35.0', '3.40.0']) {
  for (const version of versions.sort()) {
    const versionModules = getModulesListForTargetVersion(version);
    const hasAll = requiredModules.every(mod => versionModules.includes(mod));
    if (hasAll) return version;
  }
  return null;
}

// Example usage
const required = ['es.array.at', 'es.object.has-own'];
const minVersion = findMinimumVersion(required);
console.log(`Minimum version: ${minVersion}`);

Version-Aware Compatibility Analysis

Combining Version and Target Analysis:

const compat = require('core-js-compat');

// Get compatibility for specific version and targets
function getVersionedCompatibility(version, targets, options = {}) {
  try {
    const result = compat({
      ...options,
      version,
      targets
    });
    
    const versionModules = compat.getModulesListForTargetVersion(version);
    const unavailable = result.list.filter(mod => !versionModules.includes(mod));
    
    return {
      ...result,
      version,
      versionModules: versionModules.length,
      unavailableModules: unavailable
    };
  } catch (error) {
    return { error: error.message };
  }
}

// Example usage
const analysis = getVersionedCompatibility('3.25.0', '> 1%');
if (analysis.unavailableModules?.length > 0) {
  console.log(`Warning: ${analysis.unavailableModules.length} required modules not available in v${analysis.version}`);
}

Historical Version Data

Version Release Information:

// Common core-js version milestones
const versionMilestones = {
  '3.0.0': 'Initial 3.x release',
  '3.6.0': 'Major feature additions',
  '3.15.0': 'Proposal standardizations',
  '3.20.0': 'New array methods',
  '3.25.0': 'Iterator helpers',
  '3.30.0': 'Temporal proposals',
  '3.35.0': 'Record & Tuple',
  '3.40.0': 'Decorators support',
  '3.45.0': 'Latest stable features'
};

// Analyze module growth over time
function analyzeVersionGrowth() {
  const versions = Object.keys(versionMilestones).sort();
  const growth = [];
  
  versions.forEach(version => {
    try {
      const modules = getModulesListForTargetVersion(version);
      growth.push({
        version,
        moduleCount: modules.length,
        description: versionMilestones[version]
      });
    } catch (error) {
      // Version not supported
    }
  });
  
  return growth;
}

Error Handling

Version Validation:

// Handle version errors gracefully
function safeGetModules(version) {
  try {
    return getModulesListForTargetVersion(version);
  } catch (error) {
    if (error instanceof RangeError) {
      console.error(`Unsupported version: ${version}. Only core-js@3.x is supported.`);
      return null;
    }
    throw error;
  }
}

// Examples of error conditions
console.log(safeGetModules('2.6.12')); // null - unsupported
console.log(safeGetModules('4.0.0'));  // null - unsupported  
console.log(safeGetModules('3.30.0')); // Array of modules - supported

Version-Based Bundle Optimization

Optimizing for Target Version:

// Optimize bundle for specific core-js version
function optimizeForVersion(targets, maxVersion) {
  const availableModules = getModulesListForTargetVersion(maxVersion);
  
  const result = compat({
    targets,
    modules: availableModules
  });
  
  return {
    ...result,
    optimization: {
      maxVersion,
      availableModules: availableModules.length,
      requiredModules: result.list.length,
      bundleEfficiency: (result.list.length / availableModules.length * 100).toFixed(1) + '%'
    }
  };
}

// Example usage
const optimized = optimizeForVersion('> 1%', '3.30.0');
console.log(optimized.optimization);
// { maxVersion: '3.30.0', availableModules: 340, requiredModules: 85, bundleEfficiency: '25.0%' }

Version Migration Planning:

// Plan migration between core-js versions
function planVersionMigration(currentVersion, targetVersion, targets) {
  const currentModules = getModulesListForTargetVersion(currentVersion);
  const targetModules = getModulesListForTargetVersion(targetVersion);
  
  const currentResult = compat({ version: currentVersion, targets });
  const targetResult = compat({ version: targetVersion, targets });
  
  return {
    migration: {
      from: currentVersion,
      to: targetVersion
    },
    changes: {
      newModules: targetModules.filter(mod => !currentModules.includes(mod)),
      removedModules: currentModules.filter(mod => !targetModules.includes(mod)),
      polyfillDiff: targetResult.list.length - currentResult.list.length
    },
    recommendation: targetResult.list.length < currentResult.list.length 
      ? 'Migration will reduce bundle size'
      : 'Migration will increase bundle size but add new features'
  };
}

docs

compatibility-analysis.md

compatibility-data.md

entry-points.md

index.md

version-utilities.md

tile.json