Julius Marmingedelegate trimming to schemae5542b78 months agoHistory
42 lines · 1.9 KB · TypeScript
RawDownload
import { Schema } from "effect"; export const TrimmedString = Schema.Trim;export const TrimmedNonEmptyString = TrimmedString.check(Schema.isNonEmpty()); export const NonNegativeInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));export const PositiveInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)); export const IsoDateTime = Schema.String;export type IsoDateTime = typeof IsoDateTime.Type; /** * Construct a branded identifier. Enforces non-empty trimmed strings */const makeEntityId = <Brand extends string>(brand: Brand) =>  TrimmedNonEmptyString.pipe(Schema.brand(brand)); export const ThreadId = makeEntityId("ThreadId");export type ThreadId = typeof ThreadId.Type;export const ProjectId = makeEntityId("ProjectId");export type ProjectId = typeof ProjectId.Type;export const CommandId = makeEntityId("CommandId");export type CommandId = typeof CommandId.Type;export const EventId = makeEntityId("EventId");export type EventId = typeof EventId.Type;export const MessageId = makeEntityId("MessageId");export type MessageId = typeof MessageId.Type;export const TurnId = makeEntityId("TurnId");export type TurnId = typeof TurnId.Type; export const ProviderSessionId = makeEntityId("ProviderSessionId");export type ProviderSessionId = typeof ProviderSessionId.Type;export const ProviderThreadId = makeEntityId("ProviderThreadId");export type ProviderThreadId = typeof ProviderThreadId.Type;export const ProviderTurnId = makeEntityId("ProviderTurnId");export type ProviderTurnId = typeof ProviderTurnId.Type;export const ProviderItemId = makeEntityId("ProviderItemId");export type ProviderItemId = typeof ProviderItemId.Type;export const ApprovalRequestId = makeEntityId("ApprovalRequestId");export type ApprovalRequestId = typeof ApprovalRequestId.Type;export const CheckpointRef = makeEntityId("CheckpointRef");export type CheckpointRef = typeof CheckpointRef.Type;