everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
1 lines • 5.74 kB
Source Map (JSON)
{"version":3,"file":"config.cjs","names":["ResolutionSessionService","Effect","readAuthoredConfigInput","process","localConfigEntryPath","join","fetchBosConfigFromFastKv","readLocalAuthoredConfigInput","readFileSync","loadAppDescriptorConfig","applyRegistrySections","saveBosConfig","walkExtendsChain","resolveConfigComposableEntries","BosConfigSchema"],"sources":["../../src/handlers/config.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport process from \"node:process\";\nimport { Effect } from \"effect\";\nimport {\n loadAppDescriptorConfig,\n localConfigEntryPath,\n readAuthoredConfigInput,\n readLocalAuthoredConfigInput,\n resolveConfigComposableEntries,\n} from \"../config\";\nimport type { BosConfigResult } from \"../contract\";\nimport { fetchBosConfigFromFastKv } from \"../services/registry/fastkv\";\nimport { applyRegistrySections } from \"../services/registry/use\";\nimport { ResolutionSessionService, walkExtendsChain } from \"../services/resolution/session\";\nimport type { BosConfig, BosConfigInput } from \"../types\";\nimport { BosConfigSchema } from \"../types\";\nimport { saveBosConfig } from \"../utils/save-config\";\nimport type { BosBuilder } from \"./shared\";\n\nexport function registerConfig(builder: BosBuilder) {\n return {\n config: builder.config.effect(function* (_opts, input) {\n const session = yield* ResolutionSessionService;\n if (input.full) {\n return buildConfigResult(session?.config ?? null, true);\n }\n\n const localConfig = yield* Effect.promise(() => readAuthoredConfigInput(session?.root));\n return buildConfigResult(localConfig, false);\n }),\n\n registryUse: builder.registryUse.effect(function* (_opts, input) {\n const session = yield* ResolutionSessionService;\n const root = session?.root ?? process.cwd();\n const configPath = localConfigEntryPath(root) ?? join(root, \"bos.config.json\");\n const normalizedFrom = input.from.startsWith(\"bos://\") ? input.from : `bos://${input.from}`;\n\n return yield* Effect.tryPromise({\n try: async () => {\n const remote = await fetchBosConfigFromFastKv<Record<string, unknown>>(normalizedFrom);\n const localRaw = await readLocalAuthoredConfigInput(root);\n const local = (localRaw ??\n (configPath.endsWith(\".json\")\n ? (JSON.parse(readFileSync(configPath, \"utf-8\")) as Record<string, unknown>)\n : ((await loadAppDescriptorConfig(configPath)) as unknown as Record<\n string,\n unknown\n >))) as Record<string, unknown>;\n const { config: merged, applied } = applyRegistrySections(\n local as never,\n remote as never,\n input.sections,\n );\n\n if (input.dryRun) {\n return {\n status: \"dry-run\" as const,\n from: normalizedFrom,\n applied,\n configPath,\n };\n }\n\n await saveBosConfig(root, merged);\n\n return {\n status: \"updated\" as const,\n from: normalizedFrom,\n applied,\n configPath,\n };\n },\n catch: (error) => ({\n status: \"error\" as const,\n from: normalizedFrom,\n applied: [],\n error: error instanceof Error ? error.message : String(error),\n }),\n });\n }),\n };\n}\n\nfunction buildConfigResult(\n bosConfig: BosConfigInput | BosConfig | null,\n full = false,\n): BosConfigResult {\n const packages =\n bosConfig?.app && typeof bosConfig.app === \"object\" ? Object.keys(bosConfig.app) : [];\n const remotes = packages.filter((name) => name !== \"host\");\n\n return {\n config: bosConfig ?? null,\n packages,\n remotes,\n full,\n };\n}\n\nexport async function resolveRemoteConfigChain(\n accountId: string,\n gatewayId: string,\n registry?: string,\n): Promise<BosConfig> {\n const { config: merged } = await walkExtendsChain(`bos://${accountId}/${gatewayId}`, {\n env: \"production\",\n registry,\n visit: async () => {},\n });\n\n return resolveConfigComposableEntries(BosConfigSchema.parse(merged), process.cwd(), \"production\");\n}\n"],"mappings":";;;;;;;;;;;;;;AAoBA,SAAgB,eAAe,SAAqB;CAClD,OAAO;EACL,QAAQ,QAAQ,OAAO,OAAO,WAAW,OAAO,OAAO;GACrD,MAAM,UAAU,OAAOA;GACvB,IAAI,MAAM,MACR,OAAO,kBAAkB,SAAS,UAAU,MAAM,IAAI;GAIxD,OAAO,kBAAkB,OADEC,cAAO,cAAcC,qCAAwB,SAAS,IAAI,CAAC,GAChD,KAAK;EAC7C,CAAC;EAED,aAAa,QAAQ,YAAY,OAAO,WAAW,OAAO,OAAO;GAE/D,MAAM,QAAO,OADUF,6DACH,EAAE,QAAQG,qBAAQ,IAAI;GAC1C,MAAM,aAAaC,kCAAqB,IAAI,SAAKC,gBAAK,MAAM,iBAAiB;GAC7E,MAAM,iBAAiB,MAAM,KAAK,WAAW,QAAQ,IAAI,MAAM,OAAO,SAAS,MAAM;GAErF,OAAO,OAAOJ,cAAO,WAAW;IAC9B,KAAK,YAAY;KACf,MAAM,SAAS,MAAMK,0DAAkD,cAAc;KAErF,MAAM,QAAS,MADQC,0CAA6B,IAAI,MAErD,WAAW,SAAS,OAAO,IACvB,KAAK,UAAMC,sBAAa,YAAY,OAAO,CAAC,IAC3C,MAAMC,qCAAwB,UAAU;KAIhD,MAAM,EAAE,QAAQ,QAAQ,YAAYC,kCAClC,OACA,QACA,MAAM,QACR;KAEA,IAAI,MAAM,QACR,OAAO;MACL,QAAQ;MACR,MAAM;MACN;MACA;KACF;KAGF,MAAMC,kCAAc,MAAM,MAAM;KAEhC,OAAO;MACL,QAAQ;MACR,MAAM;MACN;MACA;KACF;IACF;IACA,QAAQ,WAAW;KACjB,QAAQ;KACR,MAAM;KACN,SAAS,CAAC;KACV,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;IAC9D;GACF,CAAC;EACH,CAAC;CACH;AACF;AAEA,SAAS,kBACP,WACA,OAAO,OACU;CACjB,MAAM,WACJ,WAAW,OAAO,OAAO,UAAU,QAAQ,WAAW,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC;CACtF,MAAM,UAAU,SAAS,QAAQ,SAAS,SAAS,MAAM;CAEzD,OAAO;EACL,QAAQ,aAAa;EACrB;EACA;EACA;CACF;AACF;AAEA,eAAsB,yBACpB,WACA,WACA,UACoB;CACpB,MAAM,EAAE,QAAQ,WAAW,MAAMC,qDAAiB,SAAS,UAAU,GAAG,aAAa;EACnF,KAAK;EACL;EACA,OAAO,YAAY,CAAC;CACtB,CAAC;CAED,OAAOC,4CAA+BC,8BAAgB,MAAM,MAAM,GAAGX,qBAAQ,IAAI,GAAG,YAAY;AAClG"}