UNPKG

@modern-js/utils

Version:

A Progressive React Framework for modern web development.

111 lines (110 loc) 4.85 kB
"use strict"; var __webpack_require__ = {}; (()=>{ __webpack_require__.n = (module)=>{ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module; __webpack_require__.d(getter, { a: getter }); return getter; }; })(); (()=>{ __webpack_require__.d = (exports1, definition)=>{ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, { enumerable: true, get: definition[key] }); }; })(); (()=>{ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop); })(); (()=>{ __webpack_require__.r = (exports1)=>{ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, { value: 'Module' }); Object.defineProperty(exports1, '__esModule', { value: true }); }; })(); var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__); __webpack_require__.d(__webpack_exports__, { findMonorepoRoot: ()=>findMonorepoRoot, getMonorepoPackages: ()=>getMonorepoPackages, isLerna: ()=>isLerna, isMonorepo: ()=>isMonorepo, isPnpmWorkspaces: ()=>isPnpmWorkspaces, isYarnWorkspaces: ()=>isYarnWorkspaces }); const external_fs_namespaceObject = require("fs"); var external_fs_default = /*#__PURE__*/ __webpack_require__.n(external_fs_namespaceObject); const external_path_namespaceObject = require("path"); var external_path_default = /*#__PURE__*/ __webpack_require__.n(external_path_namespaceObject); const external_compiled_js_namespaceObject = require("../compiled.js"); const PACKAGE_MAX_DEPTH = 5; const WORKSPACE_FILES = { YARN: 'package.json', PNPM: 'pnpm-workspace.yaml', LERNA: 'lerna.json' }; const isLerna = (root)=>external_fs_default().existsSync(external_path_default().join(root, WORKSPACE_FILES.LERNA)); const isYarnWorkspaces = (root)=>{ const pkg = external_path_default().join(root, WORKSPACE_FILES.YARN); if (!external_fs_default().existsSync(pkg)) return false; const json = JSON.parse(external_fs_default().readFileSync(pkg, 'utf8')); return Boolean(json.workspaces?.packages); }; const isPnpmWorkspaces = (root)=>external_fs_default().existsSync(external_path_default().join(root, WORKSPACE_FILES.PNPM)); const isMonorepo = (root)=>isLerna(root) || isYarnWorkspaces(root) || isPnpmWorkspaces(root); const findMonorepoRoot = (appDirectory, maxDepth = PACKAGE_MAX_DEPTH)=>{ let inMonorepo = false; let monorepoRoot = appDirectory; for(let depth = 0; depth < maxDepth; depth++){ if (isMonorepo(appDirectory)) { inMonorepo = true; break; } monorepoRoot = external_path_default().dirname(appDirectory); } return inMonorepo ? monorepoRoot : void 0; }; const getMonorepoPackages = (root)=>{ let packages = []; if (isYarnWorkspaces(root)) { const json = JSON.parse(external_fs_default().readFileSync(external_path_default().join(root, 'package.json'), 'utf8')); ({ packages } = json.workspaces); } else if (isLerna(root)) { const json = JSON.parse(external_fs_default().readFileSync(external_path_default().resolve(root, 'lerna.json'), 'utf8')); ({ packages } = json); } else ({ packages } = external_compiled_js_namespaceObject.yaml.load(external_fs_default().readFileSync(external_path_default().join(root, WORKSPACE_FILES.PNPM), 'utf8'))); if (packages) return packages.map((name)=>external_compiled_js_namespaceObject.glob.sync(external_path_default().join(root, `${name}/`), { ignore: [ '**/node_modules/**' ] })).reduce((acc, val)=>acc.concat(val), []).filter((filepath)=>external_fs_default().existsSync(external_path_default().resolve(filepath, 'package.json'))).map((filepath)=>({ path: filepath, name: JSON.parse(external_fs_default().readFileSync(external_path_default().resolve(filepath, 'package.json'), 'utf8')).name })); return []; }; exports.findMonorepoRoot = __webpack_exports__.findMonorepoRoot; exports.getMonorepoPackages = __webpack_exports__.getMonorepoPackages; exports.isLerna = __webpack_exports__.isLerna; exports.isMonorepo = __webpack_exports__.isMonorepo; exports.isPnpmWorkspaces = __webpack_exports__.isPnpmWorkspaces; exports.isYarnWorkspaces = __webpack_exports__.isYarnWorkspaces; for(var __rspack_i in __webpack_exports__)if (-1 === [ "findMonorepoRoot", "getMonorepoPackages", "isLerna", "isMonorepo", "isPnpmWorkspaces", "isYarnWorkspaces" ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i]; Object.defineProperty(exports, '__esModule', { value: true });