@storm-stack/core
Version:
A build toolkit and runtime used by Storm Software in TypeScript applications
117 lines (115 loc) • 4.4 kB
JavaScript
import { __name } from './chunk-43IZMM3W.js';
import { tsconfigPathsToRegExp, match } from 'bundle-require';
var NON_NODE_MODULE_REGEX = /^[A-Z]:[/\\]|^\.{0,2}\/|^\.{1,2}$/;
var resolverPlugin = /* @__PURE__ */ __name((context, options = {}) => {
return {
name: "storm-stack:resolver",
setup(build) {
const skipNodeModulesBundle = options.skipNodeModulesBundle ?? context.options.skipNodeModulesBundle;
const external = options.external ?? context.options.external ?? [];
const noExternal = options.noExternal ?? context.options.noExternal ?? [];
if (skipNodeModulesBundle) {
const resolvePatterns = tsconfigPathsToRegExp(context.tsconfig.options.paths ?? []);
build.onResolve({
filter: /.*/
}, (args) => {
if (args.path) {
if (context.vfs.isVirtualFile(args.path, {
paths: [
args.resolveDir
]
}) || args.importer && context.vfs.isVirtualFile(args.importer)) {
const resolvedPath = context.vfs.resolvePath(args.path, {
paths: [
args.resolveDir
]
});
if (resolvedPath) {
return {
path: resolvedPath,
external: context.options.projectType !== "application"
};
}
}
if (context.vfs.isTsconfigPath(args.path)) {
const tsconfigPath = context.vfs.resolveTsconfigPath(args.path);
const tsconfigPathPackage = context.vfs.resolveTsconfigPathPackage(args.path);
if (tsconfigPath && tsconfigPathPackage) {
return {
path: tsconfigPath,
external: !noExternal.includes(tsconfigPathPackage) && (external.includes(tsconfigPathPackage) || context.options.projectType !== "application")
};
}
}
if (match(args.path, resolvePatterns) || match(args.path, noExternal) || args.path.startsWith("internal:") || args.path.startsWith("virtual:")) {
return;
}
if (match(args.path, external) || args.path.startsWith("node:")) {
return {
external: true
};
}
if (!NON_NODE_MODULE_REGEX.test(args.path)) {
return {
path: args.path,
external: true
};
}
}
return;
});
} else {
build.onResolve({
filter: /.*/
}, (args) => {
if (args.path) {
if (context.vfs.isVirtualFile(args.path, {
paths: [
args.resolveDir
]
}) || args.importer && context.vfs.isVirtualFile(args.importer)) {
const resolvedPath = context.vfs.resolvePath(args.path, {
paths: [
args.resolveDir
]
});
if (resolvedPath) {
return {
path: resolvedPath,
external: context.options.projectType !== "application"
};
}
}
if (context.vfs.isTsconfigPath(args.path)) {
const tsconfigPath = context.vfs.resolveTsconfigPath(args.path);
const tsconfigPathPackage = context.vfs.resolveTsconfigPathPackage(args.path);
if (tsconfigPath && tsconfigPathPackage) {
return {
path: tsconfigPath,
external: !noExternal.includes(tsconfigPathPackage) && (external.includes(tsconfigPathPackage) || context.options.projectType !== "application")
};
}
}
if (match(args.path, noExternal) || context.vfs.isRuntimeFile(args.path, {
paths: [
args.resolveDir,
args.importer
]
})) {
return;
}
if (match(args.path, external) || args.path.startsWith("node:")) {
return {
external: true
};
}
}
return;
});
}
}
};
}, "resolverPlugin");
export { resolverPlugin };
//# sourceMappingURL=chunk-NCYETMXO.js.map
//# sourceMappingURL=chunk-NCYETMXO.js.map