{"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"}