MCPcopy Index your code
hub / github.com/ChatLab/ChatLab / parseFileInfo

Function parseFileInfo

packages/parser/src/index.ts:202–253  ·  view source on GitHub ↗
(
  filePath: string,
  onProgress?: (progress: ParseProgress) => void
)

Source from the content-addressed store, hash-verified

200 * 用于预览和合并工具
201 */
202export async function parseFileInfo(
203 filePath: string,
204 onProgress?: (progress: ParseProgress) => void
205): Promise<{
206 name: string
207 format: string
208 platform: string
209 messageCount: number
210 memberCount: number
211 fileSize: number
212}> {
213 const feature = sniffer.sniff(filePath)
214 if (!feature) {
215 throw new Error(`无法识别文件格式: ${filePath}`)
216 }
217
218 let name = '未知群聊'
219 let platform = feature.platform
220 let messageCount = 0
221 let memberCount = 0
222
223 for await (const event of parseFile({ filePath, onProgress })) {
224 switch (event.type) {
225 case 'meta':
226 name = event.data.name
227 platform = event.data.platform
228 break
229 case 'members':
230 memberCount += event.data.length
231 break
232 case 'messages':
233 messageCount += event.data.length
234 break
235 case 'progress':
236 onProgress?.(event.data)
237 break
238 case 'error':
239 throw event.data
240 }
241 }
242
243 const fileSize = fs.statSync(filePath).size
244
245 return {
246 name,
247 format: feature.name,
248 platform,
249 messageCount,
250 memberCount,
251 fileSize,
252 }
253}
254
255/**
256 * Scan a directory for a recognizable entry file (e.g. manifest.json for chunked formats).

Callers

nothing calls this directly

Calls 3

parseFileFunction · 0.85
sniffMethod · 0.80
onProgressFunction · 0.50

Tested by

no test coverage detected