UNPKG

everything-dev

Version:

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

1 lines • 5.63 kB
{"version":3,"file":"config.cjs","names":["Context","BosDepsTag","readAuthoredConfigInput","process","localConfigEntryPath","join","fetchBosConfigFromFastKv","readLocalAuthoredConfigInput","readFileSync","loadAppDescriptorConfig","applyRegistrySections","saveBosConfig","walkExtendsChain","resolveConfigComposableEntries","BosConfigSchema"],"sources":["../../src/commands/config.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport process from \"node:process\";\nimport { Context } from \"effect\";\nimport {\n loadAppDescriptorConfig,\n localConfigEntryPath,\n readAuthoredConfigInput,\n readLocalAuthoredConfigInput,\n resolveConfigComposableEntries,\n} from \"../config\";\nimport type { BosConfigResult } from \"../contract\";\nimport { fetchBosConfigFromFastKv } from \"../fastkv\";\nimport { applyRegistrySections } from \"../registry-use\";\nimport { walkExtendsChain } from \"../resolution/session\";\nimport type { BosConfig, BosConfigInput } from \"../types\";\nimport { BosConfigSchema } from \"../types\";\nimport { saveBosConfig } from \"../utils/save-config\";\nimport { type BosBuilder, BosDepsTag } from \"./shared\";\n\nexport function registerConfig(builder: BosBuilder) {\n return {\n config: builder.config.handler(async ({ input, context }) => {\n const deps = Context.get(context[\"effect/context\"], BosDepsTag);\n if (input.full) {\n return buildConfigResult(deps.session?.config ?? null, true);\n }\n\n const localConfig = await readAuthoredConfigInput(deps.session?.root);\n return buildConfigResult(localConfig, false);\n }),\n\n registryUse: builder.registryUse.handler(async ({ input, context }) => {\n const deps = Context.get(context[\"effect/context\"], BosDepsTag);\n const root = deps.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 try {\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 } catch (error) {\n return {\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,QAAQ,OAAO,EAAE,OAAO,cAAc;GAC3D,MAAM,OAAOA,eAAQ,IAAI,QAAQ,mBAAmBC,yBAAU;GAC9D,IAAI,MAAM,MACR,OAAO,kBAAkB,KAAK,SAAS,UAAU,MAAM,IAAI;GAI7D,OAAO,kBAAkB,MADCC,uCAAwB,KAAK,SAAS,IAAI,GAC9B,KAAK;EAC7C,CAAC;EAED,aAAa,QAAQ,YAAY,QAAQ,OAAO,EAAE,OAAO,cAAc;GAErE,MAAM,OADOF,eAAQ,IAAI,QAAQ,mBAAmBC,yBACpC,CAAC,CAAC,SAAS,QAAQE,qBAAQ,IAAI;GAC/C,MAAM,aAAaC,oCAAqB,IAAI,SAAKC,gBAAK,MAAM,iBAAiB;GAC7E,MAAM,iBAAiB,MAAM,KAAK,WAAW,QAAQ,IAAI,MAAM,OAAO,SAAS,MAAM;GAErF,IAAI;IACF,MAAM,SAAS,MAAMC,wCAAkD,cAAc;IAErF,MAAM,QAAS,MADQC,4CAA6B,IAAI,MAErD,WAAW,SAAS,OAAO,IACvB,KAAK,UAAMC,sBAAa,YAAY,OAAO,CAAC,IAC3C,MAAMC,uCAAwB,UAAU;IAIhD,MAAM,EAAE,QAAQ,QAAQ,YAAYC,2CAClC,OACA,QACA,MAAM,QACR;IAEA,IAAI,MAAM,QACR,OAAO;KACL,QAAQ;KACR,MAAM;KACN;KACA;IACF;IAGF,MAAMC,kCAAc,MAAM,MAAM;IAEhC,OAAO;KACL,QAAQ;KACR,MAAM;KACN;KACA;IACF;GACF,SAAS,OAAO;IACd,OAAO;KACL,QAAQ;KACR,MAAM;KACN,SAAS,CAAC;KACV,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;IAC9D;GACF;EACF,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,4CAAiB,SAAS,UAAU,GAAG,aAAa;EACnF,KAAK;EACL;EACA,OAAO,YAAY,CAAC;CACtB,CAAC;CAED,OAAOC,8CAA+BC,8BAAgB,MAAM,MAAM,GAAGX,qBAAQ,IAAI,GAAG,YAAY;AAClG"}