Ctrl K
ComunidadGuías…

src/application/idempotency-key.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { Effect, Schema } from "effect";

import { InvalidIdempotencyKey } from "../core/errors.js";

const idempotencyKeySchema = Schema.String.check(
  Schema.isLengthBetween(16, 200),
);
const decodeIdempotencyKey = Schema.decodeUnknownEffect(idempotencyKeySchema);

/** Parse a protocol idempotency key into the supported application value. */
export function parseIdempotencyKey(
  candidate: string,
): Effect.Effect<string, InvalidIdempotencyKey> {
  return decodeIdempotencyKey(candidate).pipe(
    Effect.mapError(() =>
      new InvalidIdempotencyKey({
        message: "Idempotency keys must contain between 16 and 200 characters.",
      })
    ),
  );
}