(value: unknown)
| 114 | } |
| 115 | |
| 116 | function extractLanguage(value: unknown): Language | null { |
| 117 | if (!value) return null; |
| 118 | if (Array.isArray(value)) { |
| 119 | for (const item of value) { |
| 120 | const language = extractLanguage(item); |
| 121 | if (language) return language; |
| 122 | } |
| 123 | return null; |
| 124 | } |
| 125 | if (typeof value !== "object") return null; |
| 126 | |
| 127 | const record = value as Record<string, unknown>; |
| 128 | const language = record.language; |
| 129 | if (language && typeof language === "object" && "parser" in language) { |
| 130 | return language as Language; |
| 131 | } |
| 132 | return "parser" in record ? (value as Language) : null; |
| 133 | } |
| 134 | |
| 135 | function startPluginLanguageLoad(mode: Mode): Promise<Language | null> | null { |
| 136 | const cached = pluginHoverLanguageLoads.get(mode); |
no outgoing calls
no test coverage detected