UNPKG

everything-dev

Version:

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

45 lines (43 loc) • 1.22 kB
let effect = require("effect"); let node_events = require("node:events"); //#region src/progress.ts const pluginEvents = new node_events.EventEmitter(); const emitProgress = (event) => effect.Effect.sync(() => { pluginEvents.emit("progress", event); }); const timedPhase = effect.Effect.fn("timedPhase")(function* (timings, name, effect$1) { yield* emitProgress({ phase: name, status: "running" }); const startedAt = yield* effect.Clock.currentTimeMillis; const exit = yield* effect.Effect.exit(effect$1); const durationMs = (yield* effect.Clock.currentTimeMillis) - startedAt; if (effect.Exit.isSuccess(exit)) { timings.push({ name, durationMs }); yield* emitProgress({ phase: name, status: "done", durationMs }); return exit.value; } yield* emitProgress({ phase: name, status: "error", durationMs }); return yield* effect.Effect.failCause(exit.cause); }); function timePhase(timings, name, fn) { return effect.Effect.runPromise(timedPhase(timings, name, effect.Effect.promise(fn))); } //#endregion exports.emitProgress = emitProgress; exports.pluginEvents = pluginEvents; exports.timePhase = timePhase; exports.timedPhase = timedPhase; //# sourceMappingURL=progress.cjs.map