spotube/lib/models/metadata/plugin.dart
2025-06-13 17:00:59 +06:00

29 lines
773 B
Dart

part of 'metadata.dart';
enum PluginType { metadata }
enum PluginApis { webview, localstorage, timezone }
enum PluginAbilities { authentication }
@freezed
class PluginConfiguration with _$PluginConfiguration {
const PluginConfiguration._();
factory PluginConfiguration({
required PluginType type,
required String name,
required String description,
required String version,
required String author,
required String entryPoint,
@Default([]) List<PluginApis> apis,
@Default([]) List<PluginAbilities> abilities,
}) = _PluginConfiguration;
factory PluginConfiguration.fromJson(Map<String, dynamic> json) =>
_$PluginConfigurationFromJson(json);
String get slug => name.toLowerCase().replaceAll(RegExp(r'[^a-z0-9]+'), '-');
}