npmScriptsGenerator top-level property

FigGenerator npmScriptsGenerator
final

Implementation

final FigGenerator npmScriptsGenerator = FigGenerator(
  cache: FigCache(strategy: 'stale-while-revalidate', cacheByDirectory: true),
  script: [
    'bash',
    '-c',
    "until [[ -f package.json ]] || [[ \$PWD = '/' ]]; do cd ..; done; cat package.json",
  ],
  postProcess: (String out, [List<String>? tokens]) {
    if (out.trim().isEmpty) return <FigSuggestion>[];
    try {
      final packageContent = jsonDecode(out) as Map<String, dynamic>;
      final scripts = packageContent['scripts'] as Map<String, dynamic>?;
      final figCompletions =
          packageContent['fig'] as Map<String, dynamic>? ?? {};
      if (scripts != null) {
        final npmClient =
            tokens != null && tokens.isNotEmpty ? tokens.first : null;
        final icon = npmClient == 'yarn'
            ? 'fig://icon?type=yarn'
            : 'fig://icon?type=npm';
        return scripts.entries.map((e) {
          final customScripts = figCompletions[e.key] as Map<String, dynamic>?;
          return FigSuggestion(
            name: e.key,
            icon: icon,
            description: customScripts?['description']?.toString() ??
                e.value?.toString(),
            priority: 51,
            insertValue: customScripts?['insertValue']?.toString(),
            replaceValue: customScripts?['replaceValue']?.toString(),
            displayName: customScripts?['displayName']?.toString(),
          );
        }).toList();
      }
    } catch (_) {}
    return <FigSuggestion>[];
  },
);