UNPKG

everything-dev

Version:

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

1 lines • 2.15 kB
{"version":3,"file":"progress.cjs","names":["EventEmitter","Effect","Clock","effect","Exit"],"sources":["../src/progress.ts"],"sourcesContent":["import { EventEmitter } from \"node:events\";\nimport { Clock, Effect, Exit } from \"effect\";\nimport type { PhaseTiming } from \"./contract\";\n\nexport type ProgressEvent = {\n phase: string;\n status: \"running\" | \"done\" | \"error\";\n durationMs?: number;\n};\n\nexport const pluginEvents = new EventEmitter();\n\nexport const emitProgress = (event: ProgressEvent) =>\n Effect.sync(() => {\n pluginEvents.emit(\"progress\", event);\n });\n\nexport const timedPhase = Effect.fn(\"timedPhase\")(function* <A, E, R>(\n timings: PhaseTiming[],\n name: string,\n effect: Effect.Effect<A, E, R>,\n) {\n yield* emitProgress({ phase: name, status: \"running\" });\n const startedAt = yield* Clock.currentTimeMillis;\n const exit = yield* Effect.exit(effect);\n const durationMs = (yield* Clock.currentTimeMillis) - startedAt;\n if (Exit.isSuccess(exit)) {\n timings.push({ name, durationMs });\n yield* emitProgress({ phase: name, status: \"done\", durationMs });\n return exit.value;\n }\n yield* emitProgress({ phase: name, status: \"error\", durationMs });\n return yield* Effect.failCause(exit.cause);\n});\n\nexport function timePhase<T>(\n timings: PhaseTiming[],\n name: string,\n fn: () => Promise<T>,\n): Promise<T> {\n return Effect.runPromise(timedPhase(timings, name, Effect.promise(fn)));\n}\n"],"mappings":";;;;AAUA,MAAa,eAAe,IAAIA,yBAAa;AAE7C,MAAa,gBAAgB,UAC3BC,cAAO,WAAW;CAChB,aAAa,KAAK,YAAY,KAAK;AACrC,CAAC;AAEH,MAAa,aAAaA,cAAO,GAAG,YAAY,CAAC,CAAC,WAChD,SACA,MACA,UACA;CACA,OAAO,aAAa;EAAE,OAAO;EAAM,QAAQ;CAAU,CAAC;CACtD,MAAM,YAAY,OAAOC,aAAM;CAC/B,MAAM,OAAO,OAAOD,cAAO,KAAKE,QAAM;CACtC,MAAM,cAAc,OAAOD,aAAM,qBAAqB;CACtD,IAAIE,YAAK,UAAU,IAAI,GAAG;EACxB,QAAQ,KAAK;GAAE;GAAM;EAAW,CAAC;EACjC,OAAO,aAAa;GAAE,OAAO;GAAM,QAAQ;GAAQ;EAAW,CAAC;EAC/D,OAAO,KAAK;CACd;CACA,OAAO,aAAa;EAAE,OAAO;EAAM,QAAQ;EAAS;CAAW,CAAC;CAChE,OAAO,OAAOH,cAAO,UAAU,KAAK,KAAK;AAC3C,CAAC;AAED,SAAgB,UACd,SACA,MACA,IACY;CACZ,OAAOA,cAAO,WAAW,WAAW,SAAS,MAAMA,cAAO,QAAQ,EAAE,CAAC,CAAC;AACxE"}