@jspm/generator
Version:
Package Import Map Generation Tool
101 lines (100 loc) • 3.65 kB
TypeScript
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;