@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 (90 loc) • 3.7 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
var _chunkKTEGKYAHjs = require('./chunk-KTEGKYAH.js');
// src/plugins/ts-resolve.ts
var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);
var _module = require('module');
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
var _resolve2 = require('resolve'); var _resolve3 = _interopRequireDefault(_resolve2);
var resolveModule = (id, opts) => new Promise((resolve, reject) => {
_resolve3.default.call(void 0, id, opts, (err, res) => {
if (_optionalChain([err, 'optionalAccess', _ => _.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) {
_chunkKTEGKYAHjs.writeDebug.call(void 0, `ts-resolve - resolveId source: ${source}`);
_chunkKTEGKYAHjs.writeDebug.call(void 0, `ts-resolve - resolveId importer: ${importer}`);
if (!importer) {
return null;
}
if (/\0/.test(source)) {
return null;
}
if (_module.builtinModules.includes(source)) {
return false;
}
if (ignore && ignore(source, importer)) {
_chunkKTEGKYAHjs.writeDebug.call(void 0, `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) {
_chunkKTEGKYAHjs.writeDebug.call(void 0, `ts-resolve - skipped by matching resolveOnly ${source}`);
return null;
}
}
if (_path2.default.isAbsolute(source)) {
_chunkKTEGKYAHjs.writeDebug.call(void 0, `ts-resolve - skipped absolute path: ${source}`);
return null;
}
const basedir = importer ? await _fs2.default.promises.realpath(_path2.default.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) {
_chunkKTEGKYAHjs.writeDebug.call(void 0, `ts-resolve - resolved ${source} to ${id}`);
return id;
}
_chunkKTEGKYAHjs.writeDebug.call(void 0, `ts-resolve - mark ${source} as external`);
return false;
}
};
};
exports.tsResolvePlugin = tsResolvePlugin;