(check: (event: WatcherEvent) => boolean, trigger: () => Effect.Effect<void, E>)
| 106 | } |
| 107 | |
| 108 | function eventuallyUpdate<E>(check: (event: WatcherEvent) => boolean, trigger: () => Effect.Effect<void, E>) { |
| 109 | return Effect.gen(function* () { |
| 110 | while (true) { |
| 111 | const result = yield* maybeNextUpdate(check, trigger(), "250 millis") |
| 112 | if (Option.isSome(result)) return result.value |
| 113 | } |
| 114 | }).pipe( |
| 115 | Effect.timeoutOrElse({ |
| 116 | duration: "5 seconds", |
| 117 | orElse: () => Effect.fail(new Error("timed out waiting for file watcher readiness")), |
| 118 | }), |
| 119 | ) |
| 120 | } |
| 121 | |
| 122 | function noUpdate<E>(check: (event: WatcherEvent) => boolean, trigger: Effect.Effect<void, E>, timeout = 500) { |
| 123 | return Effect.acquireUseRelease( |
no test coverage detected