mirror of
https://github.com/aljazceru/opencode.git
synced 2026-01-07 01:44:56 +01:00
sync
This commit is contained in:
23
js/src/id/id.ts
Normal file
23
js/src/id/id.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { ulid } from "ulid";
|
||||
import { z } from "zod";
|
||||
|
||||
export namespace Identifier {
|
||||
const prefixes = {
|
||||
session: "ses",
|
||||
} 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]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user