UNPKG

@strapi/strapi

Version:

An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MySQL, MariaDB, PostgreSQL, SQLite

52 lines (46 loc) 1.97 kB
'use strict'; var path = require('node:path'); var readPkgUp = require('read-pkg-up'); var resolveFrom = require('resolve-from'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var path__default = /*#__PURE__*/_interopDefault(path); var readPkgUp__default = /*#__PURE__*/_interopDefault(readPkgUp); var resolveFrom__default = /*#__PURE__*/_interopDefault(resolveFrom); const pkgDirCache = new Map(); /** * Package root of an installed package (cached), resolved from this process. */ const getPackageDir = (packageName)=>{ const cached = pkgDirCache.get(packageName); if (cached) { return cached; } const dir = path__default.default.dirname(require.resolve(`${packageName}/package.json`)); pkgDirCache.set(packageName, dir); return dir; }; /** * Resolve a module to its package root from a host package's dependency context. * Ensures pnpm's strict node_modules structure can resolve packages when bundling * plugin chunks, and lets callers pin a module to whichever package actually owns it * (e.g. CodeMirror from @strapi/design-system's closure). * * @internal */ const getModulePathFrom = (hostPackage, mod)=>{ const modulePath = resolveFrom__default.default(getPackageDir(hostPackage), mod); const pkg = readPkgUp__default.default.sync({ cwd: path__default.default.dirname(modulePath) }); return pkg ? path__default.default.dirname(pkg.path) : modulePath; }; /** * Resolve a module to its package root from @strapi/admin's closure. * * Admin Vite/webpack aliases must resolve from here so pnpm workspaces cannot pick up * a hoisted incompatible major from another package (e.g. @reduxjs/toolkit@2.x elsewhere * while admin pins 1.9.x). * * @internal */ const getModulePath = (mod)=>getModulePathFrom('@strapi/admin', mod); exports.getModulePath = getModulePath; exports.getModulePathFrom = getModulePathFrom; //# sourceMappingURL=resolve-module.js.map