Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
2.8 kB · 94 lines
TypeScript
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495/** * Shared Intl object instances with lazy initialization. * * Intl constructors are expensive (~0.05-0.1ms each), so we cache instances * for reuse across the codebase instead of creating new ones each time. * Lazy initialization ensures we only pay the cost when actually needed. */
// Segmenters for Unicode text processing (lazily initialized)let graphemeSegmenter: Intl.Segmenter | null = nulllet wordSegmenter: Intl.Segmenter | null = null
export function getGraphemeSegmenter(): Intl.Segmenter { if (!graphemeSegmenter) { graphemeSegmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme', }) } return graphemeSegmenter}
/** * Extract the first grapheme cluster from a string. * Returns '' for empty strings. */export function firstGrapheme(text: string): string { if (!text) return '' const segments = getGraphemeSegmenter().segment(text) const first = segments[Symbol.iterator]().next().value return first?.segment ?? ''}
/** * Extract the last grapheme cluster from a string. * Returns '' for empty strings. */export function lastGrapheme(text: string): string { if (!text) return '' let last = '' for (const { segment } of getGraphemeSegmenter().segment(text)) { last = segment } return last}
export function getWordSegmenter(): Intl.Segmenter { if (!wordSegmenter) { wordSegmenter = new Intl.Segmenter(undefined, { granularity: 'word' }) } return wordSegmenter}
// RelativeTimeFormat cache (keyed by style:numeric)const rtfCache = new Map<string, Intl.RelativeTimeFormat>()
export function getRelativeTimeFormat( style: 'long' | 'short' | 'narrow', numeric: 'always' | 'auto',): Intl.RelativeTimeFormat { const key = `${style}:${numeric}` let rtf = rtfCache.get(key) if (!rtf) { rtf = new Intl.RelativeTimeFormat('en', { style, numeric }) rtfCache.set(key, rtf) } return rtf}
// Timezone is constant for the process lifetimelet cachedTimeZone: string | null = null
export function getTimeZone(): string { if (!cachedTimeZone) { cachedTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone } return cachedTimeZone}
// System locale language subtag (e.g. 'en', 'ja') is constant for the process// lifetime. null = not yet computed; undefined = computed but unavailable (so// a stripped-ICU environment fails once instead of retrying on every call).let cachedSystemLocaleLanguage: string | undefined | null = null
export function getSystemLocaleLanguage(): string | undefined { if (cachedSystemLocaleLanguage === null) { try { const locale = Intl.DateTimeFormat().resolvedOptions().locale cachedSystemLocaleLanguage = new Intl.Locale(locale).language } catch { cachedSystemLocaleLanguage = undefined } } return cachedSystemLocaleLanguage}