UNPKG

everything-dev

Version:

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

61 lines (59 loc) • 2.62 kB
const require_fs = require('./fs.cjs'); const require_obsolete_files = require('./obsolete-files.cjs'); let effect = require("effect"); //#region src/services/scaffold/upgrade-audit/manifest.ts const readConfigKeys = (projectDir) => effect.Effect.gen(function* () { if (!(yield* require_fs.fileExists(projectDir, "bos.config.json"))) return []; const parsed = JSON.parse(yield* require_fs.readText(projectDir, "bos.config.json")); return Object.keys(parsed); }); const existingOf = (projectDir, paths) => effect.Effect.gen(function* () { const existing = []; for (const path of paths) if (yield* require_fs.fileExists(projectDir, path)) existing.push(path); return existing; }); const localPluginName = (entry) => { return (typeof entry.development === "string" ? entry.development : "").match(/^local:plugins\/([^/]+)$/)?.[1] ?? null; }; const pluginInventory = (projectDir) => effect.Effect.gen(function* () { if (!(yield* require_fs.fileExists(projectDir, "bos.config.json"))) return []; const config = JSON.parse(yield* require_fs.readText(projectDir, "bos.config.json")); const inventories = []; for (const [key, entry] of Object.entries(config.plugins ?? {})) { const name = localPluginName(entry) ?? key; inventories.push({ name, hasBackend: yield* require_fs.fileExists(projectDir, `plugins/${name}/src/index.ts`), hasWeb: yield* require_fs.fileExists(projectDir, `plugins/${name}/web`), extendsParent: typeof entry.extends === "string", variables: entry.variables ? Object.keys(entry.variables) : [], secrets: Array.isArray(entry.secrets) ? entry.secrets.map(String) : [] }); } return inventories; }); const buildManifest = (projectDir, tier, blockerCount, warnCount, importRewrites, configKeys, routerSeam) => effect.Effect.gen(function* () { const deleteFiles = yield* existingOf(projectDir, require_obsolete_files.OBSOLETE_FILES); const plugins = yield* pluginInventory(projectDir); const schemaFile = yield* require_fs.fileExists(projectDir, "api/src/db/schema.ts"); const migrationFiles = yield* require_fs.listFiles(projectDir, "api/src/db/migrations/**/*"); return { tier, blockerCount, warnCount, deleteFiles, importRewrites: importRewrites.filter((rewrite) => rewrite.files.length > 0), configKeys, routerSeam, authoredConfigTarget: "bos.app.ts", plugins, db: { schemaFile: schemaFile ? "api/src/db/schema.ts" : null, migrationsDir: migrationFiles.length > 0 ? "api/src/db/migrations" : null } }; }); //#endregion exports.buildManifest = buildManifest; exports.readConfigKeys = readConfigKeys; //# sourceMappingURL=manifest.cjs.map