packageList top-level property

FigGenerator packageList
final

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>[];
    }
  },
);