UNPKG

@jspm/generator

Version:

Package Import Map Generation Tool

129 lines (127 loc) 3.27 kB
import { SemverRange } from 'sver'; import { resolveLatestTarget as resolveLatestTargetJspm, pkgToUrl as pkgToUrlJspm } from './jspm.js'; export const nodeBuiltinSet = new Set([ '_http_agent', '_http_client', '_http_common', '_http_incoming', '_http_outgoing', '_http_server', '_stream_duplex', '_stream_passthrough', '_stream_readable', '_stream_transform', '_stream_wrap', '_stream_writable', '_tls_common', '_tls_wrap', 'assert', 'assert/strict', 'async_hooks', 'buffer', 'child_process', 'cluster', 'console', 'constants', 'crypto', 'dgram', 'diagnostics_channel', 'dns', 'dns/promises', 'domain', 'events', 'fs', 'fs/promises', 'http', 'http2', 'https', 'inspector', 'module', 'net', 'os', 'path', 'path/posix', 'path/win32', 'perf_hooks', 'process', 'punycode', 'querystring', 'readline', 'repl', 'stream', 'stream/promises', 'string_decoder', 'sys', 'timers', 'timers/promises', 'tls', 'trace_events', 'tty', 'url', 'util', 'util/types', 'v8', 'vm', 'wasi', 'worker_threads', 'zlib' ]); export function pkgToUrl(pkg, layer) { if (pkg.registry !== 'node') return pkgToUrlJspm(pkg, layer); return `node:${pkg.name}/`; } export function resolveBuiltin(specifier, env) { let builtin = specifier.startsWith('node:') ? specifier.slice(5) : nodeBuiltinSet.has(specifier) ? specifier : null; if (!builtin) return; // Deno supports all node builtins via bare "node:XXX" specifiers. As of // std@0.178.0, the standard library no longer ships node polyfills, so we // should always install builtins as base specifiers. This does mean that we // no longer support old versions of deno unless they use --compat. if (env.includes('deno') || env.includes('node')) { return `node:${builtin}`; } // Strip the subpath for subpathed builtins if (builtin.includes('/')) builtin = builtin.split('/')[0]; return { target: { pkgTarget: { registry: 'npm', name: '@jspm/core', ranges: [ new SemverRange('*') ], unstable: true }, installSubpath: `./nodelibs/${builtin}` }, alias: builtin }; } // Special "." export means a file package (not a folder package) export async function getPackageConfig() { return { exports: { '.': '.' } }; } export async function resolveLatestTarget(target, layer, parentUrl, resolver) { if (target.registry !== 'npm' || target.name !== '@jspm/core') return null; return resolveLatestTargetJspm.call(this, { registry: 'npm', name: '@jspm/core', range: new SemverRange('*'), unstable: true }, layer, parentUrl, resolver); } export function parseUrlPkg(url) { if (!url.startsWith('node:')) return; let name = url.slice(5); if (name.endsWith('/')) name = name.slice(0, -1); return { registry: 'node', name, version: '' }; } //# sourceMappingURL=node.js.map