everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
75 lines (73 loc) • 3.45 kB
JavaScript
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
const require_config = require('../config.cjs');
const require_dev_log_pipeline = require('../dev-log-pipeline.cjs');
const require_resolution_session = require('../resolution/session.cjs');
const require_shared = require('./shared.cjs');
const require_dev_program = require('../dev-program.cjs');
let effect = require("effect");
let node_process = require("node:process");
node_process = require_runtime.__toESM(node_process, 1);
//#region src/commands/dev.ts
function registerDev(builder) {
return {
dev: builder.dev.handler(async ({ input, context }) => {
const deps = effect.Context.get(context["effect/context"], require_shared.BosDepsTag);
const devTimings = [];
const outcome = await effect.Effect.runPromise(require_dev_program.devBootstrap(deps, input, devTimings).pipe(effect.Effect.provideService(effect.References.MinimumLogLevel, require_dev_log_pipeline.toEffectLogLevel(require_dev_log_pipeline.resolveLogLevel(node_process.default.env, input.logLevel))), effect.Effect.provide(require_dev_program.bootstrapLayers), effect.Effect.catchTags({
DevConfigMissing: () => effect.Effect.succeed({ failed: require_config.MISSING_CONFIG_MESSAGE }),
DevProxyMissing: () => effect.Effect.succeed({ failed: "No valid proxy URL configured in the authored config" }),
DevPreflightFailed: (error) => effect.Effect.succeed({ failed: `Infra preflight failed: ${error.messages.join("; ")}` })
})));
if ("failed" in outcome) return {
status: "error",
description: outcome.failed,
processes: [],
timings: devTimings
};
return {
status: "started",
description: outcome.description,
processes: outcome.processes,
timings: devTimings,
session: outcome.session
};
}),
start: builder.start.handler(async ({ input, context }) => {
const baseDeps = effect.Context.get(context["effect/context"], require_shared.BosDepsTag);
let deps = baseDeps;
if (input.configPath) {
const override = await require_resolution_session.openResolution({ path: input.configPath });
if (!override) return {
status: "error",
url: "",
error: `No config found at ${input.configPath}`
};
deps = {
...baseDeps,
session: override
};
}
const outcome = await effect.Effect.runPromise(require_dev_program.startBootstrap(deps, input).pipe(effect.Effect.provide(require_dev_program.bootstrapLayers), effect.Effect.catchTags({
StartRemoteConfigMissing: (error) => effect.Effect.succeed({ failed: error.message }),
StartFetchFailed: (error) => effect.Effect.succeed({ failed: error.message }),
StartConfigMissing: () => effect.Effect.succeed({ failed: "No configuration found. Provide --account and --gateway flags, or create a local authored config (bos.app.ts or bos.config.json)." }),
InfraError: (error) => effect.Effect.succeed({ failed: `${error.phase}: ${error.message}` }),
DevStepError: (error) => effect.Effect.succeed({ failed: `${error.phase} failed: ${error.cause instanceof Error ? error.cause.message : String(error.cause)}` })
})));
if ("failed" in outcome) return {
status: "error",
url: "",
error: outcome.failed
};
return {
status: "running",
url: outcome.url,
session: outcome.session,
summary: outcome.summary
};
})
};
}
//#endregion
exports.registerDev = registerDev;
//# sourceMappingURL=dev.cjs.map