import { Schema } from "effect" import { ascending } from "./identifier.js" import { statics } from "./schema.js" export const WorkspaceID = Schema.String.check(Schema.isStartsWith("wrk")).pipe( Schema.brand("Workspace.ID"), statics((schema) => { const create = () => schema.make("wrk_" + ascending()) return { ascending: (id?: string) => { if (!id) return create() if (!id.startsWith("wrk")) throw new Error(`ID ${id} does not start with wrk`) return schema.make(id) }, create, } }), ) export type WorkspaceID = typeof WorkspaceID.Type