UNPKG

everything-dev

Version:

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

67 lines (65 loc) • 2.77 kB
import { createPlugin, z } from "./sdk.mjs"; import { bosContract } from "./contract.mjs"; import { openResolution } from "./resolution/session.mjs"; import { DatabaseBindings, makeDatabaseBindings } from "./db/bindings.mjs"; import { DrizzleKit, makeDrizzleKitLive } from "./db/drizzle-kit.mjs"; import { BosDepsTag } from "./commands/shared.mjs"; import { registerBuild } from "./commands/build.mjs"; import { registerConfig, resolveRemoteConfigChain } from "./commands/config.mjs"; import { registerDb } from "./commands/db.mjs"; import { registerDeploy } from "./commands/deploy.mjs"; import { ProjectEnv, ProjectEnvLive } from "./env/project-env.mjs"; import { pluginEvents } from "./progress.mjs"; import { registerDev } from "./commands/dev.mjs"; import { registerInit } from "./commands/init.mjs"; import { registerKeys } from "./commands/keys.mjs"; import { registerOps } from "./commands/ops.mjs"; import { registerPlugins } from "./commands/plugins.mjs"; import { registerUpgrade } from "./commands/upgrade.mjs"; import { Context, Effect, Layer } from "effect"; import { buildScoped, buildScopedContext } from "every-plugin"; import process from "node:process"; import * as p from "@clack/prompts"; //#region src/plugin.ts var plugin_default = createPlugin({ variables: z.object({ configPath: z.string().optional(), configDir: z.string().optional() }), secrets: z.object({}), contract: bosContract, initialize: (config, _plugins) => Effect.gen(function* () { const session = yield* Effect.promise(() => openResolution({ path: config.variables.configPath })); const projectEnv = yield* buildScoped(ProjectEnv, ProjectEnvLive); const effectContext = yield* Effect.context(); const configDir = config.variables.configDir ?? session?.root ?? process.cwd(); const services = yield* buildScopedContext(Layer.mergeAll(makeDatabaseBindings({ projectDir: configDir, loadRuntimeConfig: async () => await session?.buildRuntime() ?? null, loadEnv: () => Effect.runPromiseWith(effectContext)(projectEnv.load(configDir)) }), makeDrizzleKitLive({ projectDir: configDir, onLog: (message) => p.log.info(message) }))); return Layer.succeed(BosDepsTag, { session, databaseBindings: Context.get(services, DatabaseBindings), drizzleKit: Context.get(services, DrizzleKit) }); }), createRouter: (builder) => ({ ...registerConfig(builder), ...registerPlugins(builder), ...registerDev(builder), ...registerBuild(builder), ...registerDeploy(builder), ...registerKeys(builder), ...registerInit(builder), ...registerUpgrade(builder), ...registerDb(builder), ...registerOps(builder) }) }); //#endregion export { plugin_default as default, pluginEvents, resolveRemoteConfigChain }; //# sourceMappingURL=plugin.mjs.map