everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
67 lines (65 loc) • 2.77 kB
JavaScript
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