47 lines · 1.5 KB · TypeScript
RawDownload
import type { ProviderInstanceId } from "@t3tools/contracts"; const MODEL_KEY_PREFIX = "model:";const LEGACY_SECTION_KEY_PREFIX = "legacy-models:"; export function modelPickerModelKey(instanceId: ProviderInstanceId, slug: string): string {  return `${MODEL_KEY_PREFIX}${instanceId.length}:${instanceId}${slug}`;} export function parseModelPickerModelKey(  key: string,): { instanceId: ProviderInstanceId; slug: string } | null {  if (!key.startsWith(MODEL_KEY_PREFIX)) {    return null;  }  const encoded = key.slice(MODEL_KEY_PREFIX.length);  const separatorIndex = encoded.indexOf(":");  if (separatorIndex === -1) {    return null;  }   const instanceIdLengthText = encoded.slice(0, separatorIndex);  if (!/^\d+$/.test(instanceIdLengthText)) {    return null;  }   const instanceIdLength = Number(instanceIdLengthText);  const value = encoded.slice(separatorIndex + 1);  if (!Number.isSafeInteger(instanceIdLength) || instanceIdLength > value.length) {    return null;  }   return {    instanceId: value.slice(0, instanceIdLength) as ProviderInstanceId,    slug: value.slice(instanceIdLength),  };} export function modelPickerLegacySectionKey(instanceId: ProviderInstanceId): string {  return `${LEGACY_SECTION_KEY_PREFIX}${instanceId}`;} export function parseModelPickerLegacySectionKey(key: string): ProviderInstanceId | null {  return key.startsWith(LEGACY_SECTION_KEY_PREFIX)    ? (key.slice(LEGACY_SECTION_KEY_PREFIX.length) as ProviderInstanceId)    : null;}