UNPKG

solid-register

Version:

integrated package to run solid browser code in node

62 lines (61 loc) 2.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.init = exports.solidAliasing = exports.filenameAliasing = void 0; const read_config_1 = require("./read-config"); const path_1 = require("path"); const s = path_1.sep === "/" ? path_1.sep : `${path_1.sep}${path_1.sep}`; const solidConditionAliases = { server: { [`solid-js${s}dist${s}(solid|dev)`]: `solid-js${s}dist${s}server`, [`solid-js${s}web${s}dist${s}(web|dev)`]: `solid-js${s}web${s}dist${s}server`, [`solid-js${s}store${s}dist${s}(store|dev)`]: `solid-js${s}store${s}dist${s}server`, }, dev: { [`solid-js${s}dist${s}(server|solid)`]: `solid-js${s}dist${s}dev`, [`solid-js${s}web${s}dist${s}(server|web)`]: `solid-js${s}web${s}dist${s}dev`, [`solid-js${s}store${s}dist${s}(server|store)`]: `solid-js${s}store${s}dist${s}dev`, }, browser: { [`solid-js${s}dist${s}(server|dev)`]: `solid-js${s}dist${s}solid`, [`solid-js${s}web${s}dist${s}(server|dev)`]: `solid-js${s}web${s}dist${s}web`, [`solid-js${s}store${s}dist${s}(server|dev)`]: `solid-js${s}store${s}dist${s}store`, }, }; const createFilenameAliasing = (aliases) => { const regexes = Object.keys(aliases).reduce((regexes, match) => { regexes[match] = new RegExp(match); return regexes; }, {}); return (filename) => Object.entries(aliases).reduce((name, [match, replace]) => !name && regexes[match].test(filename) ? filename.replace(regexes[match], replace) : name, "") || filename; }; const aliases = read_config_1.config.aliases?.filenames || {}; const solidAliases = (!read_config_1.usesConditions && solidConditionAliases[read_config_1.config.aliases?.solid ?? "dev"]) || {}; exports.filenameAliasing = createFilenameAliasing(aliases); exports.solidAliasing = solidAliases ? createFilenameAliasing(solidAliases) : (filename) => filename; const extensions = read_config_1.config.aliases?.extensions || [".js", ".jsx", ".ts", ".tsx"]; const init = () => { if (!Object.keys(aliases).length) { return; } const Module = (module.constructor.length > 1 && module.constructor) || require("module"); const originalResolver = Module._resolveFilename.bind(Module); Module._resolveFilename = (filename, parentModule, isMain, options) => { if (extensions.some((extension) => parentModule.id.endsWith(extension))) { let alias = (0, exports.filenameAliasing)(filename); if (alias !== filename) { if (alias.startsWith(path_1.sep) && !alias.startsWith(read_config_1.projectPath)) { alias = (0, path_1.join)(read_config_1.projectPath, alias); } return originalResolver(alias, parentModule, isMain, options); } } return originalResolver(filename, parentModule, isMain, options); }; }; exports.init = init;