packageList top-level property
Elm 包列表生成器(增强版)
Implementation
final FigGenerator packageList = FigGenerator(
script: [
'curl',
'-sH',
'accept-encoding: gzip',
'--compressed',
'https://package.elm-lang.org/search.json',
],
cache: FigCache(
ttl: 1000 * 24 * 60 * 60 * 3, // 3 days
strategy: 'stale-while-revalidate',
),
scriptTimeout: 10000, // 10秒超时
postProcess: (String output, [List<String>? tokens]) {
// 检查空输出
if (output.trim().isEmpty) {
return <FigSuggestion>[];
}
try {
final dynamic parsed = json.decode(output);
// 验证数据结构
if (parsed is! List) {
print('Expected JSON array but got: ${parsed.runtimeType}');
return <FigSuggestion>[];
}
final List<dynamic> jsonData = parsed;
final suggestions = <FigSuggestion>[];
for (final item in jsonData) {
if (item is Map<String, dynamic>) {
final name = item['name']?.toString();
final summary = item['summary']?.toString();
if (name != null && name.isNotEmpty) {
suggestions.add(FigSuggestion(
name: name,
description: summary ?? '',
icon: '🌳',
priority: 50,
));
}
}
}
return suggestions;
} on FormatException catch (e) {
print('JSON parsing error: $e');
return <FigSuggestion>[];
} catch (e) {
print('Unexpected error: $e');
return <FigSuggestion>[];
}
},
);