UNPKG

aki-plugin-manager

Version:

Lightweight at-runtime plugin manager and loader

32 lines (31 loc) 1.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.list = void 0; const fs_1 = require("fs"); const path_1 = require("path"); const _getVersion = (packageFile) => { const { version } = JSON.parse(fs_1.readFileSync(packageFile, 'utf-8')); return version; }; const list = (baseDir) => { if (!fs_1.existsSync(baseDir)) return []; const packageDirs = fs_1.readdirSync(baseDir).filter((name) => fs_1.statSync(path_1.join(baseDir, name)).isDirectory()); const packages = []; packageDirs.forEach((packageDir) => { if (!packageDir.startsWith('@')) { const packageFile = path_1.join(baseDir, packageDir, 'package.json'); packages.push([packageDir, _getVersion(packageFile)]); return; } const subDirs = fs_1.readdirSync(path_1.join(baseDir, packageDir)); subDirs.forEach((subDir) => { if (fs_1.statSync(path_1.join(baseDir, packageDir, subDir)).isDirectory()) { const packageFile = path_1.join(baseDir, packageDir, subDir, 'package.json'); packages.push([`${packageDir}/${subDir}`, _getVersion(packageFile)]); } }); }); return packages; }; exports.list = list;