"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveUtsModule = exports.resolveUtsModuleProxyFile = exports.resolveUtsAppModule = exports.resolveComponentsLibPath = exports.resolveVueI18nRuntime = exports.resolveBuiltIn = exports.getBuiltInPaths = exports.resolveMainPathOnce = exports.relativeFile = exports.requireResolve = void 0; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const debug_1 = __importDefault(require("debug")); const resolve_1 = __importDefault(require("resolve")); const uni_shared_1 = require("@dcloudio/uni-shared"); const utils_1 = require("./utils"); const env_1 = require("./hbx/env"); const constants_1 = require("./constants"); function requireResolve(filename, basedir) { return resolveWithSymlinks(filename, basedir); } exports.requireResolve = requireResolve; function resolveWithSymlinks(id, basedir) { return resolve_1.default.sync(id, { basedir, extensions: constants_1.extensions, // necessary to work with pnpm preserveSymlinks: true, }); } function relativeFile(from, to) { const relativePath = (0, utils_1.normalizePath)(path_1.default.relative(path_1.default.dirname(from), to)); return relativePath.startsWith('.') ? relativePath : './' + relativePath; } exports.relativeFile = relativeFile; exports.resolveMainPathOnce = (0, uni_shared_1.once)((inputDir) => { const mainTsPath = path_1.default.resolve(inputDir, 'main.ts'); if (fs_1.default.existsSync(mainTsPath)) { return (0, utils_1.normalizePath)(mainTsPath); } return (0, utils_1.normalizePath)(path_1.default.resolve(inputDir, 'main.js')); }); const ownerModules = ['@dcloudio/uni-app', '@dcloudio/vite-plugin-uni']; const paths = []; function resolveNodeModulePath(modulePath) { const nodeModulesPaths = []; const nodeModulesPath = path_1.default.join(modulePath, 'node_modules'); if (fs_1.default.existsSync(nodeModulesPath)) { nodeModulesPaths.push(nodeModulesPath); } const index = modulePath.lastIndexOf('node_modules'); if (index > -1) { nodeModulesPaths.push(path_1.default.join(modulePath.slice(0, index), 'node_modules')); } return nodeModulesPaths; } function initPaths() { const cliContext = process.env.UNI_CLI_CONTEXT; if (cliContext) { const pathSet = new Set(); pathSet.add(path_1.default.join(cliContext, 'node_modules')); if (!(0, env_1.isInHBuilderX)()) { ; [`@dcloudio/uni-` + process.env.UNI_PLATFORM, ...ownerModules].forEach((ownerModule) => { let pkgPath = ''; try { pkgPath = require.resolve(ownerModule + '/package.json', { paths: [cliContext], }); } catch (e) { } if (pkgPath) { resolveNodeModulePath(path_1.default.dirname(pkgPath)).forEach((nodeModulePath) => { pathSet.add(nodeModulePath); }); } }); } paths.push(...pathSet); (0, debug_1.default)('uni-paths')(paths); } } function getBuiltInPaths() { if (!paths.length) { initPaths(); } return paths; } exports.getBuiltInPaths = getBuiltInPaths; function resolveBuiltIn(path) { return require.resolve(path, { paths: getBuiltInPaths() }); } exports.resolveBuiltIn = resolveBuiltIn; function resolveVueI18nRuntime() { return path_1.default.resolve(__dirname, '../lib/vue-i18n/dist/vue-i18n.runtime.esm-bundler.js'); } exports.resolveVueI18nRuntime = resolveVueI18nRuntime; let componentsLibPath = ''; function resolveComponentsLibPath() { if (!componentsLibPath) { if ((0, env_1.isInHBuilderX)()) { componentsLibPath = path_1.default.join(resolveBuiltIn('@dcloudio/uni-components/package.json'), '../lib'); } else { componentsLibPath = path_1.default.join(resolveWithSymlinks('@dcloudio/uni-components/package.json', process.env.UNI_INPUT_DIR), '../lib'); } } return componentsLibPath; } exports.resolveComponentsLibPath = resolveComponentsLibPath; /** * 解析 app 平台的 uts 插件,任意平台(android|ios)存在即可 * @param id * @param importer * @returns */ function resolveUtsAppModule(id, importer) { id = path_1.default.resolve(importer, id); if (id.includes('utssdk') || id.includes('uni_modules')) { const parts = (0, utils_1.normalizePath)(id).split('/'); const parentDir = parts[parts.length - 2]; if (parentDir === 'uni_modules' || parentDir === 'utssdk') { if (fs_1.default.existsSync(path_1.default.resolve(id, 'index.uts'))) { return id; } const resolvePlatformDir = (p) => { return path_1.default.resolve(id, parentDir === 'uni_modules' ? 'utssdk' : '', p); }; const extname = ['.uts']; if (resolveUtsFile(resolvePlatformDir('app-android'), extname)) { return id; } if (resolveUtsFile(resolvePlatformDir('app-ios'), extname)) { return id; } } } } exports.resolveUtsAppModule = resolveUtsAppModule; function resolveUtsModuleProxyFile(id, importer) { const file = resolveUtsAppModule(id, importer); if (file) { return '\0' + file + '?uts-proxy'; } } exports.resolveUtsModuleProxyFile = resolveUtsModuleProxyFile; // 仅限 root/uni_modules/test-plugin | root/utssdk/test-plugin 格式 function resolveUtsModule(id, importer, platform) { if (process.env.UNI_PLATFORM === 'app') { return resolveUtsAppModule(id, importer); } id = path_1.default.resolve(importer, id); if (id.includes('utssdk') || id.includes('uni_modules')) { const parts = (0, utils_1.normalizePath)(id).split('/'); const parentDir = parts[parts.length - 2]; if (parentDir === 'uni_modules' || parentDir === 'utssdk') { const resolvePlatformDir = (p) => { return path_1.default.resolve(id, parentDir === 'uni_modules' ? 'utssdk' : '', p); }; let index = resolveUtsFile(resolvePlatformDir(platform)); if (index) { return index; } index = path_1.default.resolve(id, 'index.uts'); if (fs_1.default.existsSync(index)) { return index; } } } } exports.resolveUtsModule = resolveUtsModule; function resolveUtsFile(dir, extensions = ['.uts', '.ts', '.js']) { for (let i = 0; i < extensions.length; i++) { const indexFile = path_1.default.join(dir, 'index' + extensions[i]); if (fs_1.default.existsSync(indexFile)) { return indexFile; } } }