opencode/packages/schema/src/session-id.ts

15 lines
473 B
TypeScript

import { Schema } from "effect"
import { descending } from "./identifier"
import { statics } from "./schema"
export const SessionID = Schema.String.check(Schema.isStartsWith("ses")).pipe(
Schema.brand("SessionID"),
statics((schema) => {
const create = () => schema.make("ses_" + descending())
return {
create,
descending: (id?: string) => (id === undefined ? create() : schema.make(id)),
}
}),
)
export type SessionID = typeof SessionID.Type