everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
1 lines • 5.04 kB
Source Map (JSON)
{"version":3,"file":"manifest.cjs","names":["Effect","fileExists","readText","OBSOLETE_FILES","listFiles"],"sources":["../../../../src/services/scaffold/upgrade-audit/manifest.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport type { ImportRewrite, Manifest, PluginInventory, RouterSeam } from \"./domain\";\nimport { fileExists, listFiles, readText } from \"./fs\";\nimport { OBSOLETE_FILES } from \"./obsolete-files\";\n\nexport const readConfigKeys = (projectDir: string): Effect.Effect<string[], Error> =>\n Effect.gen(function* () {\n const exists = yield* fileExists(projectDir, \"bos.config.json\");\n if (!exists) return [];\n const parsed = JSON.parse(yield* readText(projectDir, \"bos.config.json\")) as object;\n return Object.keys(parsed);\n });\n\nconst existingOf = (projectDir: string, paths: readonly string[]) =>\n Effect.gen(function* () {\n const existing: string[] = [];\n for (const path of paths) {\n if (yield* fileExists(projectDir, path)) existing.push(path);\n }\n return existing;\n });\n\ninterface RootPluginEntry {\n readonly development?: unknown;\n readonly extends?: unknown;\n readonly variables?: Record<string, unknown>;\n readonly secrets?: unknown;\n}\n\nconst localPluginName = (entry: RootPluginEntry): string | null => {\n const development = typeof entry.development === \"string\" ? entry.development : \"\";\n const match = development.match(/^local:plugins\\/([^/]+)$/);\n return match?.[1] ?? null;\n};\n\nconst pluginInventory = (projectDir: string): Effect.Effect<PluginInventory[], Error> =>\n Effect.gen(function* () {\n const exists = yield* fileExists(projectDir, \"bos.config.json\");\n if (!exists) return [];\n const config = JSON.parse(yield* readText(projectDir, \"bos.config.json\")) as {\n plugins?: Record<string, RootPluginEntry>;\n };\n\n const inventories: PluginInventory[] = [];\n for (const [key, entry] of Object.entries(config.plugins ?? {})) {\n const name = localPluginName(entry) ?? key;\n inventories.push({\n name,\n hasBackend: yield* fileExists(projectDir, `plugins/${name}/src/index.ts`),\n hasWeb: yield* fileExists(projectDir, `plugins/${name}/web`),\n extendsParent: typeof entry.extends === \"string\",\n variables: entry.variables ? Object.keys(entry.variables) : [],\n secrets: Array.isArray(entry.secrets) ? entry.secrets.map(String) : [],\n });\n }\n return inventories;\n });\n\nexport const buildManifest = (\n projectDir: string,\n tier: \"A\" | \"B\",\n blockerCount: number,\n warnCount: number,\n importRewrites: readonly ImportRewrite[],\n configKeys: readonly string[],\n routerSeam: RouterSeam,\n): Effect.Effect<Manifest, Error> =>\n Effect.gen(function* () {\n const deleteFiles = yield* existingOf(projectDir, OBSOLETE_FILES);\n const plugins = yield* pluginInventory(projectDir);\n const schemaFile = yield* fileExists(projectDir, \"api/src/db/schema.ts\");\n const migrationFiles = yield* listFiles(projectDir, \"api/src/db/migrations/**/*\");\n return {\n tier,\n blockerCount,\n warnCount,\n deleteFiles,\n importRewrites: importRewrites.filter((rewrite) => rewrite.files.length > 0),\n configKeys,\n routerSeam,\n authoredConfigTarget: \"bos.app.ts\",\n plugins,\n db: {\n schemaFile: schemaFile ? \"api/src/db/schema.ts\" : null,\n migrationsDir: migrationFiles.length > 0 ? \"api/src/db/migrations\" : null,\n },\n } satisfies Manifest;\n });\n"],"mappings":";;;;;AAKA,MAAa,kBAAkB,eAC7BA,cAAO,IAAI,aAAa;CAEtB,IAAI,EAAC,OADiBC,sBAAW,YAAY,iBAAiB,IACjD,OAAO,CAAC;CACrB,MAAM,SAAS,KAAK,MAAM,OAAOC,oBAAS,YAAY,iBAAiB,CAAC;CACxE,OAAO,OAAO,KAAK,MAAM;AAC3B,CAAC;AAEH,MAAM,cAAc,YAAoB,UACtCF,cAAO,IAAI,aAAa;CACtB,MAAM,WAAqB,CAAC;CAC5B,KAAK,MAAM,QAAQ,OACjB,IAAI,OAAOC,sBAAW,YAAY,IAAI,GAAG,SAAS,KAAK,IAAI;CAE7D,OAAO;AACT,CAAC;AASH,MAAM,mBAAmB,UAA0C;CAGjE,QAFoB,OAAO,MAAM,gBAAgB,WAAW,MAAM,cAAc,GACvD,CAAC,MAAM,0BACrB,CAAC,GAAG,MAAM;AACvB;AAEA,MAAM,mBAAmB,eACvBD,cAAO,IAAI,aAAa;CAEtB,IAAI,EAAC,OADiBC,sBAAW,YAAY,iBAAiB,IACjD,OAAO,CAAC;CACrB,MAAM,SAAS,KAAK,MAAM,OAAOC,oBAAS,YAAY,iBAAiB,CAAC;CAIxE,MAAM,cAAiC,CAAC;CACxC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,WAAW,CAAC,CAAC,GAAG;EAC/D,MAAM,OAAO,gBAAgB,KAAK,KAAK;EACvC,YAAY,KAAK;GACf;GACA,YAAY,OAAOD,sBAAW,YAAY,WAAW,KAAK,cAAc;GACxE,QAAQ,OAAOA,sBAAW,YAAY,WAAW,KAAK,KAAK;GAC3D,eAAe,OAAO,MAAM,YAAY;GACxC,WAAW,MAAM,YAAY,OAAO,KAAK,MAAM,SAAS,IAAI,CAAC;GAC7D,SAAS,MAAM,QAAQ,MAAM,OAAO,IAAI,MAAM,QAAQ,IAAI,MAAM,IAAI,CAAC;EACvE,CAAC;CACH;CACA,OAAO;AACT,CAAC;AAEH,MAAa,iBACX,YACA,MACA,cACA,WACA,gBACA,YACA,eAEAD,cAAO,IAAI,aAAa;CACtB,MAAM,cAAc,OAAO,WAAW,YAAYG,qCAAc;CAChE,MAAM,UAAU,OAAO,gBAAgB,UAAU;CACjD,MAAM,aAAa,OAAOF,sBAAW,YAAY,sBAAsB;CACvE,MAAM,iBAAiB,OAAOG,qBAAU,YAAY,4BAA4B;CAChF,OAAO;EACL;EACA;EACA;EACA;EACA,gBAAgB,eAAe,QAAQ,YAAY,QAAQ,MAAM,SAAS,CAAC;EAC3E;EACA;EACA,sBAAsB;EACtB;EACA,IAAI;GACF,YAAY,aAAa,yBAAyB;GAClD,eAAe,eAAe,SAAS,IAAI,0BAA0B;EACvE;CACF;AACF,CAAC"}