UNPKG

@storm-software/build-tools

Version:

A comprehensive set of tools for building and managing projects within a Storm workspace. Includes builders such as rollup, rolldown, tsup, and unbuild, along with various utilities.

96 lines (93 loc) 2.56 kB
import { writeDebug } from "./chunk-R2HS3O2S.mjs"; // src/plugins/ts-resolve.ts import fs from "node:fs"; import { builtinModules } from "node:module"; import path from "node:path"; import _resolve from "resolve"; var resolveModule = (id, opts) => new Promise((resolve, reject) => { _resolve(id, opts, (err, res) => { if (err?.code === "MODULE_NOT_FOUND") { return resolve(null); } if (err) { return reject(err); } resolve(res || null); }); }); var tsResolvePlugin = ({ resolveOnly, ignore } = {}) => { const resolveExtensions = [".d.ts", ".ts"]; return { name: `storm:ts-resolve`, async resolveId(source, importer) { writeDebug(`ts-resolve - resolveId source: ${source}`); writeDebug(`ts-resolve - resolveId importer: ${importer}`); if (!importer) { return null; } if (/\0/.test(source)) { return null; } if (builtinModules.includes(source)) { return false; } if (ignore && ignore(source, importer)) { writeDebug(`ts-resolve - ignored ${source}`); return null; } if (resolveOnly) { const shouldResolve = resolveOnly.some((v) => { if (typeof v === "string") return v === source; return v.test(source); }); if (!shouldResolve) { writeDebug(`ts-resolve - skipped by matching resolveOnly ${source}`); return null; } } if (path.isAbsolute(source)) { writeDebug(`ts-resolve - skipped absolute path: ${source}`); return null; } const basedir = importer ? await fs.promises.realpath(path.dirname(importer)) : process.cwd(); if (source[0] === ".") { return resolveModule(source, { basedir, extensions: resolveExtensions }); } let id = null; if (!importer) { id = await resolveModule(`./${source}`, { basedir, extensions: resolveExtensions }); } if (!id) { id = await resolveModule(source, { basedir, extensions: resolveExtensions, packageFilter(pkg) { pkg.main = pkg.types || pkg.typings; return pkg; }, paths: ["node_modules", "node_modules/@types"] }); } if (id) { writeDebug(`ts-resolve - resolved ${source} to ${id}`); return id; } writeDebug(`ts-resolve - mark ${source} as external`); return false; } }; }; export { tsResolvePlugin };