Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
1.7 kB · 64 lines
TypeScript
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465import { randomUUID, type UUID } from 'crypto'import { validateUuid } from './uuid.js'
export type ParsedSessionUrl = { sessionId: UUID ingressUrl: string | null isUrl: boolean jsonlFile: string | null isJsonlFile: boolean}
/** * Parses a session resume identifier which can be either: * - A URL containing session ID (e.g., https://api.example.com/v1/session_ingress/session/550e8400-e29b-41d4-a716-446655440000) * - A plain session ID (UUID) * * @param resumeIdentifier - The URL or session ID to parse * @returns Parsed session information or null if invalid */export function parseSessionIdentifier( resumeIdentifier: string,): ParsedSessionUrl | null { // Check for JSONL file path before URL parsing, since Windows absolute // paths (e.g., C:\path\file.jsonl) are parsed as valid URLs with C: as protocol if (resumeIdentifier.toLowerCase().endsWith('.jsonl')) { return { sessionId: randomUUID() as UUID, ingressUrl: null, isUrl: false, jsonlFile: resumeIdentifier, isJsonlFile: true, } }
// Check if it's a plain UUID if (validateUuid(resumeIdentifier)) { return { sessionId: resumeIdentifier as UUID, ingressUrl: null, isUrl: false, jsonlFile: null, isJsonlFile: false, } }
// Check if it's a URL try { const url = new URL(resumeIdentifier)
// Use the entire URL as the ingress URL // Always generate a random session ID return { sessionId: randomUUID() as UUID, ingressUrl: url.href, isUrl: true, jsonlFile: null, isJsonlFile: false, } } catch { // Not a valid URL }
return null}