npmScriptsGenerator top-level property
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>[];
},
);