effex-monorepo
    Preparing search index...

    Variable Mutation

    Mutation: {
        flatMap: {
            <O, I2, O2, E2>(
                f: (o: O) => Mutation<I2, O2, E2>,
            ): <I, E>(self: Mutation<I, O, E>) => Mutation<I, O2, E2 | E>;
            <I, O, E, I2, O2, E2>(
                self: Mutation<I, O, E>,
                f: (o: O) => Mutation<I2, O2, E2>,
            ): Mutation<I, O2, E | E2>;
        };
        isMutation: (
            value: unknown,
        ) => value is Mutation<unknown, unknown, unknown>;
        make: <I, O, E = never, R = never>(
            execute: (input: I) => Effect<O, E, R>,
        ) => Effect<Mutation<I, O, E>, never, Scope | R>;
        map: {
            <O, O2>(
                f: (o: O) => O2,
            ): <I, E>(self: Mutation<I, O, E>) => Mutation<I, O2, E>;
            <I, O, E, O2>(
                self: Mutation<I, O, E>,
                f: (o: O) => O2,
            ): Mutation<I, O2, E>;
        };
        MutationTypeId: symbol;
        promise: <I, O>(
            execute: (input: I) => Promise<O>,
        ) => Effect<Mutation<I, O, never>, never, Scope>;
        tryPromise: <I, O, E>(
            execute: (input: I) => Promise<O>,
            onError: (error: unknown) => E,
        ) => Effect<Mutation<I, O, E>, never, Scope>;
    }

    Mutation namespace.

    Type Declaration

    • flatMap: {
          <O, I2, O2, E2>(
              f: (o: O) => Mutation<I2, O2, E2>,
          ): <I, E>(self: Mutation<I, O, E>) => Mutation<I, O2, E2 | E>;
          <I, O, E, I2, O2, E2>(
              self: Mutation<I, O, E>,
              f: (o: O) => Mutation<I2, O2, E2>,
          ): Mutation<I, O2, E | E2>;
      }

      Chain mutations together, running the second after the first succeeds.

      Function that takes the first result and returns a new Mutation

      const createUser = yield* Mutation.make(createUserApi)
      const createAndVerify = createUser.pipe(
      Mutation.flatMap(user => verifyEmailMutation)
      )
    • isMutation: (value: unknown) => value is Mutation<unknown, unknown, unknown>

      Check if a value is a Mutation.

    • make: <I, O, E = never, R = never>(
          execute: (input: I) => Effect<O, E, R>,
      ) => Effect<Mutation<I, O, E>, never, Scope | R>

      Create a Mutation from an Effect-returning execute function.

      const createUser = yield* Mutation.make((userData: CreateUserInput) =>
      Effect.gen(function* () {
      const response = yield* api.createUser(userData)
      return response.user
      })
      )

      const user = yield* createUser.run({ name: "Alice" })
    • map: {
          <O, O2>(
              f: (o: O) => O2,
          ): <I, E>(self: Mutation<I, O, E>) => Mutation<I, O2, E>;
          <I, O, E, O2>(self: Mutation<I, O, E>, f: (o: O) => O2): Mutation<I, O2, E>;
      }

      Map the successful data of a Mutation.

      Function to transform the data

      const createUser = yield* Mutation.make(createUserApi)
      const createUserName = createUser.pipe(Mutation.map(user => user.name))
    • MutationTypeId: symbol
    • promise: <I, O>(
          execute: (input: I) => Promise<O>,
      ) => Effect<Mutation<I, O, never>, never, Scope>

      Create a Mutation from a Promise-returning function.

      const createUser = yield* Mutation.promise((userData: CreateUserInput) =>
      fetch('/api/users', {
      method: 'POST',
      body: JSON.stringify(userData)
      }).then(r => r.json())
      )
    • tryPromise: <I, O, E>(
          execute: (input: I) => Promise<O>,
          onError: (error: unknown) => E,
      ) => Effect<Mutation<I, O, E>, never, Scope>

      Create a Mutation from a Promise-returning function with error handling.

      const createUser = yield* Mutation.tryPromise(
      (userData: CreateUserInput) =>
      fetch('/api/users', {
      method: 'POST',
      body: JSON.stringify(userData)
      }).then(r => r.json()),
      (error) => new ApiError(error)
      )