| 339 | const hasBash = Effect.sync(() => Bun.which("bash") !== null) |
| 340 | |
| 341 | const deferredAsPromise = <A>(deferred: Deferred.Deferred<A>): PromiseLike<A> => ({ |
| 342 | then: (onfulfilled, onrejected) => { |
| 343 | Effect.runFork( |
| 344 | Deferred.await(deferred).pipe( |
| 345 | Effect.match({ |
| 346 | onFailure: (error) => { |
| 347 | onrejected?.(error) |
| 348 | }, |
| 349 | onSuccess: (value) => { |
| 350 | onfulfilled?.(value) |
| 351 | }, |
| 352 | }), |
| 353 | ), |
| 354 | ) |
| 355 | return deferredAsPromise(deferred) as PromiseLike<never> |
| 356 | }, |
| 357 | }) |
| 358 | |
| 359 | function defer<T>() { |
| 360 | let resolve!: (value: T | PromiseLike<T>) => void |