mangayomi-mirror/lib/eval/interface.dart
NBA2K1 8b1f7fc581 Add service disposal and lifecycle cleanup
This commit improves memory management, reduces redundant interpreter
instantiation, and standardizes service usage patterns.

- Add `dispose()` to `ExtensionService` interface and implement it across
  Dart, JS, LNReader, and Mihon services.
- Replace repeated interpreter creation in `DartExtensionService` with a
  persistent `_interpreter` instance initialized once in the constructor.
- Add disposal logic for JS DOM selector and Cheerio instances to prevent
  memory leaks.
- Introduce `withExtensionService()` helper to ensure services are always
  disposed after use.
- Update call sites across the codebase to use `withExtensionService()`
  or manual try/finally disposal.
- Improve isolate service message handling by extracting `responsePort`
  earlier.
- Ensure safer defaults (e.g., returning empty lists, const lists) when
  service calls fail.
2026-01-13 01:11:19 +01:00

41 lines
967 B
Dart

import 'package:mangayomi/models/page.dart';
import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/models/video.dart';
import 'model/filter.dart';
import 'model/m_manga.dart';
import 'model/m_pages.dart';
import 'model/source_preference.dart';
abstract interface class ExtensionService {
late Source source;
ExtensionService(this.source);
String get sourceBaseUrl;
bool get supportsLatest;
void dispose();
Map<String, String> getHeaders();
Future<MPages> getPopular(int page);
Future<MPages> getLatestUpdates(int page);
Future<MPages> search(String query, int page, List<dynamic> filters);
Future<MManga> getDetail(String url);
Future<List<PageUrl>> getPageList(String url);
Future<List<Video>> getVideoList(String url);
Future<String> getHtmlContent(String name, String url);
Future<String> cleanHtmlContent(String html);
FilterList getFilterList();
List<SourcePreference> getSourcePreferences();
}