core-utils
    Preparing search index...

    Module @clipboard-health/contract-core - v1.5.21

    @clipboard-health/contract-core

    Shared Zod schemas for Clipboard's contracts.

    npm install @clipboard-health/contract-core
    
    import {
    apiErrors,
    booleanString,
    nonEmptyString,
    optionalEnumWithFallback,
    requiredEnumWithFallback,
    uuid,
    } from "@clipboard-health/contract-core";
    import { type z, type ZodError } from "zod";

    function logError(error: unknown) {
    console.error((error as ZodError).issues[0]!.message);
    }

    apiErrors.parse({
    errors: [
    {
    code: "NotFound",
    detail: "Resource 'b146a790-9ed1-499f-966d-6c4905dc667f' not found",
    id: "6191a8a0-96ff-4d4b-8e0f-746a5ab215f9",
    status: "404",
    title: "Not Found",
    },
    ],
    });

    booleanString.parse("true");

    try {
    booleanString.parse("invalid");
    } catch (error) {
    logError(error);
    // => Invalid enum value. Expected 'true' | 'false', received 'invalid'
    }

    nonEmptyString.parse("hello");
    try {
    nonEmptyString.parse("");
    } catch (error) {
    logError(error);
    // => String must contain at least 1 character(s)
    }

    // UUID validation examples
    uuid.parse("b8d617bb-edef-4262-a6e3-6cc807fa1b26");
    try {
    uuid.parse("invalid");
    } catch (error) {
    logError(error);
    // => Invalid UUID format
    }

    // Enum with fallback examples
    /* -- required -- */
    const requiredStatusEnumSchema = requiredEnumWithFallback(
    ["unspecified", "pending", "completed", "failed"],
    "unspecified",
    );
    // type RequiredStatusEnum = "unspecified" | "pending" | "completed" | "failed"
    type RequiredStatusEnum = z.infer<typeof requiredStatusEnumSchema>;

    const completedStatus: RequiredStatusEnum = requiredStatusEnumSchema.parse("completed");
    // => "completed"
    console.log(completedStatus);

    const additionalStatus = requiredStatusEnumSchema.parse("additional");
    // => "unspecified"
    console.log(additionalStatus);

    try {
    // eslint-disable-next-line unicorn/no-useless-undefined
    requiredStatusEnumSchema.parse(undefined);
    } catch (error) {
    logError(error);
    // => Validation error
    }

    /* -- optional -- */
    const optionalStatusEnumSchema = optionalEnumWithFallback(
    ["unspecified", "pending", "completed", "failed"],
    "unspecified",
    );
    // type OptionalStatusEnum = "unspecified" | "pending" | "completed" | "failed" | undefined
    type OptionalStatusEnum = z.infer<typeof optionalStatusEnumSchema>;

    const failedStatus: OptionalStatusEnum = optionalStatusEnumSchema.parse("failed");
    // => "failed"
    console.log(failedStatus);

    const extraStatus = optionalStatusEnumSchema.parse("extra");
    // => "unspecified"
    console.log(extraStatus);

    // eslint-disable-next-line unicorn/no-useless-undefined
    const undefinedStatus = optionalStatusEnumSchema.parse(undefined);
    // => undefined
    console.log(undefinedStatus);

    See package.json scripts for a list of commands.

    Type Aliases

    ApiError
    BooleanString

    Variables

    apiError
    apiErrors
    booleanString
    currencyCode
    money
    nonEmptyString
    objectId
    uuid

    Functions

    enumWithFallback
    optionalEnumWithFallback
    requiredEnumWithFallback
    toBoolean