UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

53 lines (51 loc) • 2.05 kB
let node_fs = require("node:fs"); let node_path = require("node:path"); let yaml = require("yaml"); //#region src/workspace-catalog.ts const WORKSPACE_YAML = "pnpm-workspace.yaml"; function catalogFromPackageJson(pkgJson) { const catalog = pkgJson.workspaces?.catalog; return catalog && typeof catalog === "object" ? { ...catalog } : {}; } function readWorkspaceCatalog(root) { const yamlPath = (0, node_path.join)(root, WORKSPACE_YAML); if ((0, node_fs.existsSync)(yamlPath)) { const catalog = (0, yaml.parse)((0, node_fs.readFileSync)(yamlPath, "utf8"))?.catalog; return catalog && typeof catalog === "object" ? { ...catalog } : {}; } const pkgPath = (0, node_path.join)(root, "package.json"); if ((0, node_fs.existsSync)(pkgPath)) try { return catalogFromPackageJson(JSON.parse((0, node_fs.readFileSync)(pkgPath, "utf8"))); } catch { return {}; } return {}; } function writeWorkspaceCatalog(root, catalog) { const yamlPath = (0, node_path.join)(root, WORKSPACE_YAML); const pkgPath = (0, node_path.join)(root, "package.json"); const usesYaml = (0, node_fs.existsSync)(yamlPath); const sorted = Object.fromEntries(Object.entries(catalog).sort(([a], [b]) => a.localeCompare(b))); if (usesYaml) { const parsed = (0, yaml.parse)((0, node_fs.readFileSync)(yamlPath, "utf8")); const doc = parsed && typeof parsed === "object" ? parsed : {}; doc.catalog = sorted; const body = (0, yaml.stringify)(doc, { lineWidth: 0 }).trimEnd(); (0, node_fs.writeFileSync)(yamlPath, `${body}\n`); return; } let pkg = {}; if ((0, node_fs.existsSync)(pkgPath)) try { pkg = JSON.parse((0, node_fs.readFileSync)(pkgPath, "utf8")); } catch { pkg = {}; } if (!pkg.workspaces) pkg.workspaces = {}; pkg.workspaces.catalog = sorted; (0, node_fs.writeFileSync)(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`); } //#endregion exports.catalogFromPackageJson = catalogFromPackageJson; exports.readWorkspaceCatalog = readWorkspaceCatalog; exports.writeWorkspaceCatalog = writeWorkspaceCatalog; //# sourceMappingURL=workspace-catalog.cjs.map