UNPKG

@jspm/generator

Version:

Package Import Map Generation Tool

101 lines (100 loc) 3.65 kB
import { InstallTarget, PackageProvider } from "./installer.js"; import { Resolver } from "../trace/resolver.js"; import { Install } from "../generator.js"; /** * ExportsTarget defines specifier mappings for the public entry points of a * package, with support for conditionals. * see https://nodejs.org/dist/latest-v19.x/docs/api/packages.html#exports */ export type ExportsTarget = "." | `./${string}` | null | { [condition: string]: ExportsTarget; } | ExportsTarget[]; /** * ImportsTarget defines private specifier mappings that apply only to the * internal imports of a package, with support for conditionals. * see https://nodejs.org/dist/latest-v19.x/docs/api/packages.html#imports */ export type ImportsTarget = string | null | { [condition: string]: ExportsTarget; } | ExportsTarget[]; /** * PackageConfig is a parsed version of a package's package.json file. * see https://nodejs.org/dist/latest-v19.x/docs/api/packages.html */ export interface PackageConfig { registry?: string; name?: string; version?: string; main?: string; files?: string[]; module?: string; browser?: string | Record<string, string | false>; imports?: Record<string, ExportsTarget>; exports?: ExportsTarget | Record<string, ExportsTarget>; type?: string; dependencies?: Record<string, string>; peerDependencies?: Record<string, string>; optionalDependencies?: Record<string, string>; devDependencies?: Record<string, string>; } /** * ExactPackage pins down an exact version of a package on an external registry, * such as npm or deno. */ export interface ExactPackage { name: string; registry: string; version: string; } /** * ExactModule pins down an exact version of a module in a package that can be * served by a PackageProvider. */ export interface ExactModule { pkg: ExactPackage; subpath: `./${string}` | null; source: PackageProvider; } /** * PackageTarget pins down a particular version range of a package on an * external registry, such as npm or deno. */ export interface PackageTarget { registry: string; name: string; ranges: any[]; unstable: boolean; } /** * LatestPackageTarget pins down the latest version of a package on an external * registry, such as npm or deno. */ export interface LatestPackageTarget { registry: string; name: string; range: any; unstable: boolean; } export declare function parseUrlOrBuiltinTarget(resolver: Resolver, targetStr: string, parentUrl?: URL): Promise<Install | undefined>; export declare function isPackageTarget(targetStr: string): boolean; export declare function parseTarget(resolver: Resolver, targetStr: string, parentPkgUrl: URL, defaultRegistry: string): Promise<Install>; export declare function newPackageTarget(target: string, parentPkgUrl: URL, defaultRegistry: string, pkgName?: string): InstallTarget; export declare function pkgToStr(pkg: ExactPackage): string; /** * Throws unless the given specifier is a valid npm-style package specifier. * * @param {string} specifier Specifier to validate. */ export declare function validatePkgName(specifier: string): void; /** * Parses an npm-style module specifier, such as '@jspm/generator/index.js', * and splits it into the package name ('@jspm/generator') and module subpath * ('./index.js'). Returns undefined if the given specifier is invalid. * * @param {string} specifier Specifier to parse. * @returns {{ pkgName: string, subpath: '.' | `./${string}` } | undefined} */ export declare function parsePkg(specifier: string): { pkgName: string; subpath: "." | `./${string}`; } | undefined;