UNPKG

@storm-stack/core

Version:

A build toolkit and runtime used by Storm Software in TypeScript applications

133 lines (128 loc) 4.12 kB
'use strict'; var chunkSQHGN4CZ_cjs = require('./chunk-SQHGN4CZ.cjs'); var chunk3ONWID2V_cjs = require('./chunk-3ONWID2V.cjs'); var helperPluginUtils = require('@babel/helper-plugin-utils'); var t = require('@babel/types'); function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n.default = e; return Object.freeze(n); } var t__namespace = /*#__PURE__*/_interopNamespace(t); function resolveModulePath(nodePath, state) { if (!t__namespace.isStringLiteral(nodePath.node)) { return; } const sourcePath = nodePath.node.value; const resolvedPath = state.context?.vfs.resolvePath(sourcePath); if (resolvedPath) { nodePath.replaceWith(t__namespace.stringLiteral( // Remove the file extension if it exists resolvedPath.replace(/\.(?:ts|mts|cts)x?$/, "") )); } } chunk3ONWID2V_cjs.__name(resolveModulePath, "resolveModulePath"); var TRANSFORM_FUNCTIONS = [ "require", "require.resolve", "System.import", // Jest methods "jest.genMockFromModule", "jest.mock", "jest.unmock", "jest.doMock", // eslint-disable-next-line @cspell/spellchecker "jest.dontMock", "jest.setMock", "jest.requireActual", "jest.requireMock", // Older Jest methods "require.requireActual", "require.requireMock" ]; function matchesPattern(state, calleePath, pattern) { const { node } = calleePath; if (t__namespace.isMemberExpression(node)) { return calleePath.matchesPattern(pattern); } if (!t__namespace.isIdentifier(node) || pattern.includes(".")) { return false; } const name = pattern.split(".")[0]; return node.name === name; } chunk3ONWID2V_cjs.__name(matchesPattern, "matchesPattern"); var importVisitors = { CallExpression: /* @__PURE__ */ chunk3ONWID2V_cjs.__name((nodePath, state) => { if (state.moduleResolverVisited.has(nodePath)) { return; } const calleePath = nodePath.get("callee"); if (TRANSFORM_FUNCTIONS.some((pattern) => matchesPattern(state, calleePath, pattern)) || chunkSQHGN4CZ_cjs.isImportCall(nodePath)) { state.moduleResolverVisited.add(nodePath); resolveModulePath(nodePath.get("arguments.0"), state); } }, "CallExpression"), // eslint-disable-next-line ts/naming-convention "ImportDeclaration|ExportDeclaration|ExportAllDeclaration": /* @__PURE__ */ chunk3ONWID2V_cjs.__name((nodePath, state) => { if (state.moduleResolverVisited.has(nodePath)) { return; } state.moduleResolverVisited.add(nodePath); resolveModulePath(nodePath.get("source"), state); }, "ImportDeclaration|ExportDeclaration|ExportAllDeclaration") }; function ModuleResolverPlugin(context) { return helperPluginUtils.declare(/* @__PURE__ */ chunk3ONWID2V_cjs.__name(function builder(api) { let moduleResolverVisited = /* @__PURE__ */ new Set(); return { name: "storm-stack:module-resolver", manipulateOptions(opts) { opts.filename ??= "unknown"; }, pre() { moduleResolverVisited = /* @__PURE__ */ new Set(); }, visitor: { Program: { enter(programPath, state) { programPath.traverse(importVisitors, { ...state, context, moduleResolverVisited, api }); }, exit(programPath, state) { programPath.traverse(importVisitors, { ...state, context, moduleResolverVisited, api }); } } }, post() { moduleResolverVisited.clear(); } }; }, "builder")); } chunk3ONWID2V_cjs.__name(ModuleResolverPlugin, "ModuleResolverPlugin"); exports.ModuleResolverPlugin = ModuleResolverPlugin; //# sourceMappingURL=chunk-ZC2JNV4B.cjs.map //# sourceMappingURL=chunk-ZC2JNV4B.cjs.map