Download packages/core/src/id/id.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 1.39 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/core/src/id/id.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/core/src/id/id.ts
-
curl -L -o id.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/core/src/id/id.ts
1.39 kB
| import { create as createIdentifier } from "@opencode-ai/schema/identifier" | |
| const prefixes = { | |
| job: "job", | |
| event: "evt", | |
| session: "ses", | |
| message: "msg", | |
| permission: "per", | |
| question: "que", | |
| part: "prt", | |
| pty: "pty", | |
| tool: "tool", | |
| workspace: "wrk", | |
| } as const | |
| export function ascending(prefix: keyof typeof prefixes, given?: string) { | |
| return generateID(prefix, "ascending", given) | |
| } | |
| export function descending(prefix: keyof typeof prefixes, given?: string) { | |
| return generateID(prefix, "descending", given) | |
| } | |
| function generateID(prefix: keyof typeof prefixes, direction: "descending" | "ascending", given?: string): string { | |
| if (!given) { | |
| return create(prefixes[prefix], direction) | |
| } | |
| if (!given.startsWith(prefixes[prefix])) { | |
| throw new Error(`ID ${given} does not start with ${prefixes[prefix]}`) | |
| } | |
| return given | |
| } | |
| export function create(prefix: string, direction: "descending" | "ascending", timestamp?: number): string { | |
| return prefix + "_" + createIdentifier(direction === "descending", timestamp) | |
| } | |
| /** Extract timestamp from an ascending ID. Does not work with descending IDs. */ | |
| export function timestamp(id: string): number { | |
| const prefix = id.split("_")[0] | |
| const hex = id.slice(prefix.length + 1, prefix.length + 13) | |
| const encoded = BigInt("0x" + hex) | |
| return Number(encoded / BigInt(0x1000)) | |
| } | |
| export * as Identifier from "./id" | |