everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
93 lines (91 loc) • 5.35 kB
JavaScript
import { createPlugin, z } from "./sdk.mjs";
import { bosContract } from "./contract.mjs";
import { ResolutionSessionService, openResolution } from "./services/resolution/session.mjs";
import { DatabaseBindings, makeDatabaseBindings } from "./db/bindings.mjs";
import { DrizzleKit, makeDrizzleKitLive } from "./db/drizzle-kit.mjs";
import { cliDeployTrainRender } from "./cli/render/deploy-train.mjs";
import { cliWorkspaceBuildRender } from "./cli/render/workspace-build.mjs";
import { ProjectEnv, ProjectEnvLive } from "./env/project-env.mjs";
import { BuildTrainService, WorkspaceBuildRenderService } from "./services/workspace/build-train.mjs";
import { registerBuild } from "./handlers/build.mjs";
import { registerConfig, resolveRemoteConfigChain } from "./handlers/config.mjs";
import { DbOpsService } from "./services/db/ops.mjs";
import { registerDb } from "./handlers/db.mjs";
import { PlatformManifestService } from "./services/platform/manifest.mjs";
import { SiteClient } from "./services/auth/site-client.mjs";
import { DeviceLoginService } from "./services/auth/device-login.mjs";
import { SignerService } from "./services/auth/signer.mjs";
import { BundleStorage, RegistryStore } from "./services/deploy/deps.mjs";
import { DeployTrainRenderService } from "./services/deploy/render.mjs";
import { DeployTrainService } from "./services/deploy/train.mjs";
import { registerDeploy } from "./handlers/deploy.mjs";
import { pluginEvents } from "./services/dev/progress.mjs";
import { DevFlowService } from "./services/dev/flow.mjs";
import { registerDev } from "./handlers/dev.mjs";
import { registerImport } from "./handlers/import.mjs";
import { InitFlowService } from "./services/scaffold/init-flow.mjs";
import { registerInit } from "./handlers/init.mjs";
import { SessionStore } from "./services/auth/session-store.mjs";
import { registerKeys } from "./handlers/keys.mjs";
import { OpsService } from "./services/ops.mjs";
import { registerOps } from "./handlers/ops.mjs";
import { PluginAdminService } from "./services/plugins-admin.mjs";
import { registerPlugins } from "./handlers/plugins.mjs";
import { ProcessesService } from "./services/processes/service.mjs";
import { registerProcesses } from "./handlers/processes.mjs";
import { registerSecrets } from "./handlers/secrets.mjs";
import { registerSmoke } from "./handlers/smoke.mjs";
import { registerUpgrade } from "./handlers/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
const buildRenderLayer = Layer.succeed(WorkspaceBuildRenderService, WorkspaceBuildRenderService.of(cliWorkspaceBuildRender));
const deployRenderLayer = Layer.succeed(DeployTrainRenderService, DeployTrainRenderService.of(cliDeployTrainRender));
const buildTrainLayer = BuildTrainService.Live.pipe(Layer.provide(buildRenderLayer));
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)
})));
const dbBindingsLayer = Layer.succeed(DatabaseBindings, Context.get(services, DatabaseBindings));
const drizzleKitLayer = Layer.succeed(DrizzleKit, Context.get(services, DrizzleKit));
const deployTrainLayer = DeployTrainService.Live.pipe(Layer.provide(Layer.mergeAll(BundleStorage.Live, RegistryStore.Live, SignerService.Live, buildTrainLayer)));
return Layer.mergeAll(Layer.succeed(ResolutionSessionService, session), dbBindingsLayer, drizzleKitLayer, ProcessesService.Live, SiteClient.Live, SessionStore.Live, DeviceLoginService.Live.pipe(Layer.provide(SiteClient.Live)), buildRenderLayer, buildTrainLayer, deployTrainLayer, deployRenderLayer, OpsService.Live, DbOpsService.Live.pipe(Layer.provide(Layer.mergeAll(dbBindingsLayer, drizzleKitLayer))), PluginAdminService.Live.pipe(Layer.provide(deployTrainLayer)), DevFlowService.Live, InitFlowService.Live, PlatformManifestService.Live);
}),
createRouter: (builder) => ({
...registerConfig(builder),
...registerPlugins(builder),
...registerDev(builder),
...registerBuild(builder),
...registerDeploy(builder),
...registerSmoke(builder),
...registerKeys(builder),
...registerSecrets(builder),
...registerProcesses(builder),
...registerInit(builder),
...registerImport(builder),
...registerUpgrade(builder),
...registerDb(builder),
...registerOps(builder)
})
});
//#endregion
export { plugin_default as default, pluginEvents, resolveRemoteConfigChain };
//# sourceMappingURL=plugin.mjs.map