| 1234567891011121314151617181920212223242526 |
- import { ulid } from "ulid"
- import { z } from "zod"
- export namespace Identifier {
- const prefixes = {
- account: "acc",
- billing: "bil",
- key: "key",
- payment: "pay",
- usage: "usg",
- user: "usr",
- workspace: "wrk",
- } as const
- export function create(prefix: keyof typeof prefixes, given?: string): string {
- if (given) {
- if (given.startsWith(prefixes[prefix])) return given
- throw new Error(`ID ${given} does not start with ${prefixes[prefix]}`)
- }
- return [prefixes[prefix], ulid()].join("_")
- }
- export function schema(prefix: keyof typeof prefixes) {
- return z.string().startsWith(prefixes[prefix])
- }
- }
|