effex-monorepo
    Preparing search index...

    Variable AsyncReadable

    AsyncReadable: {
        AsyncReadableTypeId: symbol;
        fromReadable: {
            <A, B, E, R>(
                f: (a: A) => Effect<B, E, R>,
            ): (
                self: Readable.Readable<A>,
            ) => Effect<AsyncReadable<B, E>, never, Scope | R>;
            <A, B, E, R>(
                self: Readable.Readable<A>,
                f: (a: A) => Effect<B, E, R>,
            ): Effect<AsyncReadable<B, E>, never, Scope | R>;
        };
        isAsyncReadable: (
            value: unknown,
        ) => value is AsyncReadable<unknown, unknown>;
        make: <A, E = never, R = never>(
            fetch: () => Effect<A, E, R>,
        ) => Effect<AsyncReadable<A, E>, never, Scope | R>;
        map: {
            <A, B>(
                f: (a: A) => B,
            ): <E>(self: AsyncReadable<A, E>) => AsyncReadable<B, E>;
            <A, E, B>(self: AsyncReadable<A, E>, f: (a: A) => B): AsyncReadable<B, E>;
        };
        promise: <A>(
            fetch: () => Promise<A>,
        ) => Effect<AsyncReadable<A, never>, never, Scope>;
        tryPromise: <A, E>(
            fetch: () => Promise<A>,
            onError: (error: unknown) => E,
        ) => Effect<AsyncReadable<A, E>, never, Scope>;
    }

    AsyncReadable namespace.

    Type Declaration

    • AsyncReadableTypeId: symbol
    • fromReadable: {
          <A, B, E, R>(
              f: (a: A) => Effect<B, E, R>,
          ): (
              self: Readable.Readable<A>,
          ) => Effect<AsyncReadable<B, E>, never, Scope | R>;
          <A, B, E, R>(
              self: Readable.Readable<A>,
              f: (a: A) => Effect<B, E, R>,
          ): Effect<AsyncReadable<B, E>, never, Scope | R>;
      }

      Create an AsyncReadable that recomputes when a source Readable changes. Similar to a derived async value.

      Function that takes the current value and returns an Effect

      const userId = yield* Signal.make(1)
      const userData = yield* userId.pipe(
      AsyncReadable.fromReadable((id) =>
      Effect.gen(function* () {
      const response = yield* fetchUser(id)
      return response.data
      })
      )
      )
    • isAsyncReadable: (value: unknown) => value is AsyncReadable<unknown, unknown>

      Check if a value is an AsyncReadable.

    • make: <A, E = never, R = never>(
          fetch: () => Effect<A, E, R>,
      ) => Effect<AsyncReadable<A, E>, never, Scope | R>

      Create an AsyncReadable from an Effect-returning fetch function. Automatically fetches on creation.

      const userData = yield* AsyncReadable.make(() =>
      Effect.gen(function* () {
      const response = yield* fetchUser(userId)
      return response.data
      })
      )
    • map: {
          <A, B>(
              f: (a: A) => B,
          ): <E>(self: AsyncReadable<A, E>) => AsyncReadable<B, E>;
          <A, E, B>(self: AsyncReadable<A, E>, f: (a: A) => B): AsyncReadable<B, E>;
      }

      Map the successful value of an AsyncReadable.

      Function to transform the value

      const userData = yield* AsyncReadable.make(fetchUser)
      const userName = userData.pipe(AsyncReadable.map(user => user.name))
    • promise: <A>(fetch: () => Promise<A>) => Effect<AsyncReadable<A, never>, never, Scope>

      Create an AsyncReadable from a Promise-returning function.

      const userData = yield* AsyncReadable.promise(() =>
      fetch('/api/user').then(r => r.json())
      )
    • tryPromise: <A, E>(
          fetch: () => Promise<A>,
          onError: (error: unknown) => E,
      ) => Effect<AsyncReadable<A, E>, never, Scope>

      Create an AsyncReadable from a Promise-returning function with error handling.

      const userData = yield* AsyncReadable.tryPromise(
      () => fetch('/api/user').then(r => r.json()),
      (error) => new FetchError(error)
      )