or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

compatibility-checking.mddebug-display.mdindex.mdtarget-resolution.md
tile.json

index.mddocs/

@babel/helper-compilation-targets

@babel/helper-compilation-targets provides essential helper functions for determining and managing Babel compilation targets. It integrates with browserslist to parse target configurations, provides utilities for working with semantic versions and browser compatibility data, implements caching for performance optimization, and offers debugging capabilities.

Package Information

  • Package Name: @babel/helper-compilation-targets
  • Package Type: npm
  • Language: JavaScript
  • Installation: npm install @babel/helper-compilation-targets

Core Imports

import getTargets, { 
  prettifyTargets, 
  getInclusionReasons, 
  filterItems, 
  isRequired,
  targetsSupported,
  isBrowsersQueryValid,
  TargetNames,
  unreleasedLabels,
  type Target,
  type Targets,
  type InputTargets,
  type GetTargetsOption
} from "@babel/helper-compilation-targets";

For CommonJS:

const getTargets = require("@babel/helper-compilation-targets").default;
const { 
  prettifyTargets, 
  getInclusionReasons, 
  filterItems, 
  isRequired,
  targetsSupported,
  isBrowsersQueryValid,
  TargetNames,
  unreleasedLabels
} = require("@babel/helper-compilation-targets");

Basic Usage

import getTargets from "@babel/helper-compilation-targets";

// Basic target resolution
const targets = getTargets({
  browsers: ["chrome >= 60", "firefox >= 55"],
  node: "14"
});
// Result: { chrome: "60.0.0", firefox: "55.0.0", node: "14.0.0" }

// Use browserslist query
const browserTargets = getTargets({
  browsers: "defaults"
});

// Check for ES modules support
const esmTargets = getTargets({
  browsers: "defaults",
  esmodules: true
});

Architecture

The package is structured around several key components:

  • Target Resolution: Core getTargets function that normalizes various input formats into consistent target objects
  • Browser Integration: Deep integration with browserslist for parsing browser compatibility queries
  • Compatibility Engine: Logic for determining which features are required for specific target environments
  • Caching Layer: LRU cache for optimizing repeated target resolution operations
  • Debug Tools: Utilities for understanding why certain transforms or polyfills are applied
  • Validation: Input validation for browser queries and target configurations

Core Types

type Target = 
  | "node" | "deno" | "chrome" | "opera" | "edge" | "firefox" 
  | "safari" | "ie" | "ios" | "android" | "electron" | "samsung" | "rhino" | "opera_mobile";

interface Targets {
  [target in Target]?: string;
}

interface InputTargets extends Targets {
  browsers?: string | ReadonlyArray<string>;
  esmodules?: boolean | "intersect";
}

interface GetTargetsOption {
  configPath?: string;
  configFile?: string;
  browserslistEnv?: string;
  ignoreBrowserslistConfig?: boolean;
  onBrowserslistConfigFound?: (configFile: string) => void;
}

Capabilities

Target Resolution

Core functionality for resolving and normalizing compilation targets from various input formats including browserslist queries, individual environment versions, and ES modules support.

function getTargets(inputTargets?: InputTargets, options?: GetTargetsOption): Targets;

Target Resolution

Compatibility Checking

Functions for determining which features, plugins, or transforms are required based on target browser support and compatibility data.

function filterItems(
  list: { [feature: string]: Targets },
  includes: Set<string>,
  excludes: Set<string>,
  targets: Targets,
  defaultIncludes: Array<string> | null,
  defaultExcludes?: Array<string> | null,
  pluginSyntaxMap?: Map<string, string | null>
): Set<string>;

function isRequired(
  name: string,
  targets: Targets,
  options?: {
    compatData?: { [feature: string]: Targets };
    includes?: Set<string>;
    excludes?: Set<string>;
  }
): boolean;

Compatibility Checking

Debug and Display

Utilities for formatting targets for display and debugging why certain features are included or excluded for specific compilation targets.

function prettifyTargets(targets: Targets): Targets;
function getInclusionReasons(
  item: string,
  targetVersions: Targets,
  list: { [key: string]: Targets }
): Partial<Record<Target, string>>;

Debug and Display

Constants and Utilities

Exported constants and utility functions for validation and target name management.

const TargetNames: {
  readonly node: "node";
  readonly deno: "deno";
  readonly chrome: "chrome";
  readonly opera: "opera";
  readonly edge: "edge";
  readonly firefox: "firefox";
  readonly safari: "safari";
  readonly ie: "ie";
  readonly ios: "ios";
  readonly android: "android";
  readonly electron: "electron";
  readonly samsung: "samsung";
  readonly rhino: "rhino";
  readonly opera_mobile: "opera_mobile";
};

const unreleasedLabels: {
  readonly safari: "tp";
};

function isBrowsersQueryValid(browsers: unknown): boolean;