From c558c08376ccfd8fa3a84cb608a6410e99ff8198 Mon Sep 17 00:00:00 2001 From: Moustapha Kodjo Amadou <107993382+kodjodevf@users.noreply.github.com> Date: Fri, 9 May 2025 17:47:27 +0100 Subject: [PATCH] migrate to d4rt package --- lib/eval/dart/bridge/document.dart | 502 +--- lib/eval/dart/bridge/element.dart | 604 +---- lib/eval/dart/bridge/filter.dart | 1731 +++----------- lib/eval/dart/bridge/http.dart | 1043 ++------- lib/eval/dart/bridge/m_chapter.dart | 173 +- lib/eval/dart/bridge/m_manga.dart | 275 +-- lib/eval/dart/bridge/m_pages.dart | 122 +- lib/eval/dart/bridge/m_provider.dart | 2031 +++-------------- lib/eval/dart/bridge/m_source.dart | 239 +- lib/eval/dart/bridge/m_status.dart | 59 +- lib/eval/dart/bridge/m_track.dart | 103 +- lib/eval/dart/bridge/m_video.dart | 199 +- lib/eval/dart/bridge/registrer.dart | 32 + lib/eval/dart/bridge/source_preference.dart | 1112 ++------- lib/eval/dart/compiler/compiler.dart | 15 - lib/eval/dart/plugin.dart | 205 -- lib/eval/dart/runtime/runtime.dart | 10 - lib/eval/dart/service.dart | 665 +++++- lib/eval/model/m_bridge.dart | 120 +- lib/modules/manga/home/manga_home_screen.dart | 3 +- pubspec.lock | 48 +- pubspec.yaml | 2 +- 22 files changed, 1966 insertions(+), 7327 deletions(-) create mode 100644 lib/eval/dart/bridge/registrer.dart delete mode 100644 lib/eval/dart/compiler/compiler.dart delete mode 100644 lib/eval/dart/plugin.dart delete mode 100644 lib/eval/dart/runtime/runtime.dart diff --git a/lib/eval/dart/bridge/document.dart b/lib/eval/dart/bridge/document.dart index 8882eb89..5c10f945 100644 --- a/lib/eval/dart/bridge/document.dart +++ b/lib/eval/dart/bridge/document.dart @@ -1,470 +1,58 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; - -import 'package:dart_eval/stdlib/core.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:html/dom.dart'; -import 'package:mangayomi/eval/dart/bridge/element.dart'; import 'package:mangayomi/eval/model/document.dart'; -import 'package:mangayomi/eval/model/element.dart'; -class $MDocument implements MDocument, $Instance { - $MDocument.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MDocument'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), +class MDocumentBridge { + final documentBridgedClass = BridgedClassDefinition( + nativeType: MDocument, + name: 'MDocument', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'document', - BridgeTypeAnnotation($Element.$type, nullable: true), - false, - ), - ], - ), - ), + '': (visitor, positionalArgs, namedArgs) { + return MDocument(positionalArgs[0] as Document); + }, }, - fields: {'document': BridgeFieldDef(BridgeTypeAnnotation($Element.$type))}, getters: { - 'body': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($MElement.$type, nullable: true), - ), - ), - 'documentElement': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($MElement.$type, nullable: true), - ), - ), - 'head': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($MElement.$type, nullable: true), - ), - ), - 'parent': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($MElement.$type, nullable: true), - ), - ), - 'outerHtml': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'text': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'children': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [$MElement.$type]), - nullable: true, - ), - ), - ), + 'body': (visitor, target) => (target as MDocument).body, + 'documentElement': + (visitor, target) => (target as MDocument).documentElement, + 'head': (visitor, target) => (target as MDocument).head, + 'parent': (visitor, target) => (target as MDocument).parent, + 'outerHtml': (visitor, target) => (target as MDocument).outerHtml, + 'text': (visitor, target) => (target as MDocument).text, + 'children': (visitor, target) => (target as MDocument).children, }, methods: { - 'select': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [$MElement.$type]), - nullable: true, - ), - params: [ - BridgeParameter( - 'selector', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'selectFirst': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($MElement.$type, nullable: true), - params: [ - BridgeParameter( - 'selector', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'getElementsByClassName': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [$type]), - nullable: true, - ), - params: [ - BridgeParameter( - 'classNames', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'getElementsByTagName': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [$type]), - nullable: true, - ), - params: [ - BridgeParameter( - 'localNames', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'getElementById': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($MElement.$type, nullable: true), - params: [ - BridgeParameter( - 'id', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'xpath': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)]), - ), - params: [ - BridgeParameter( - 'xpath', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'xpathFirst': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - params: [ - BridgeParameter( - 'xpath', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'attr': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'attr', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - false, - ), - ], - ), - ), - 'hasAttr': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - params: [ - BridgeParameter( - 'attr', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), + 'select': + (visitor, target, positionalArgs, namedArgs) => + (target as MDocument).select(positionalArgs[0] as String), + 'selectFirst': + (visitor, target, positionalArgs, namedArgs) => + (target as MDocument).selectFirst(positionalArgs[0] as String), + 'getElementsByClassName': + (visitor, target, positionalArgs, namedArgs) => (target as MDocument) + .getElementsByClassName(positionalArgs[0] as String), + 'getElementsByTagName': + (visitor, target, positionalArgs, namedArgs) => (target as MDocument) + .getElementsByTagName(positionalArgs[0] as String), + 'getElementById': + (visitor, target, positionalArgs, namedArgs) => + (target as MDocument).getElementById(positionalArgs[0] as String), + 'attr': + (visitor, target, positionalArgs, namedArgs) => + (target as MDocument).attr(positionalArgs[0] as String), + 'hasAttr': + (visitor, target, positionalArgs, namedArgs) => + (target as MDocument).hasAttr(positionalArgs[0] as String), + 'xpath': + (visitor, target, positionalArgs, namedArgs) => + (target as MDocument).xpath(positionalArgs[0] as String), + 'xpathFirst': + (visitor, target, positionalArgs, namedArgs) => + (target as MDocument).xpathFirst(positionalArgs[0] as String), }, - wrap: true, ); - @override - get $reified => $value; - - @override - final MDocument $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'body': - final res = $value.body; - return res == null ? const $null() : $MElement.wrap(res); - case 'documentElement': - final res = $value.documentElement; - return res == null ? const $null() : $MElement.wrap(res); - case 'head': - final res = $value.head; - return res == null ? const $null() : $MElement.wrap(res); - case 'parent': - final res = $value.parent; - return res == null ? const $null() : $MElement.wrap(res); - case 'outerHtml': - final res = $value.outerHtml; - return res == null ? const $null() : $String(res); - case 'text': - final res = $value.text; - return res == null ? const $null() : $String(res); - case 'children': - final res = $value.children; - return res == null - ? const $null() - : $List.wrap(res.map((e) => $MElement.wrap(e)).toList()); - case 'select': - return __select; - case 'selectFirst': - return __selectFirst; - case 'getElementsByClassName': - return __getElementsByClassName; - case 'getElementsByTagName': - return __getElementsByTagName; - case 'getElementById': - return __getElementById; - case 'xpath': - return __xpath; - case 'xpathFirst': - return __xpathFirst; - case 'attr': - return __attr; - case 'hasAttr': - return __hasAttr; - default: - return _superclass.$getProperty(runtime, identifier); - } + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(documentBridgedClass); } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) {} - - static const $Function __select = $Function(_select); - static $Value? _select( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MDocument).select(args[0]?.$value); - return res == null - ? const $null() - : $List.wrap(res.map((e) => $MElement.wrap(e)).toList()); - } - - static const $Function __selectFirst = $Function(_selectFirst); - static $Value? _selectFirst( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MDocument).selectFirst(args[0]?.$value); - return res == null ? const $null() : $MElement.wrap(res); - } - - static $Value? $new( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - return $MDocument.wrap(MDocument(args[0]?.$value)); - } - - static const $Function __getElementsByClassName = $Function( - _getElementsByClassName, - ); - static $Value? _getElementsByClassName( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MDocument).getElementsByClassName( - args[0]?.$value, - ); - return res == null - ? const $null() - : $List.wrap(res.map((e) => $MElement.wrap(e)).toList()); - } - - static const $Function __getElementsByTagName = $Function( - _getElementsByTagName, - ); - static $Value? _getElementsByTagName( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MDocument).getElementsByTagName( - args[0]?.$value, - ); - return res == null - ? const $null() - : $List.wrap(res.map((e) => $MElement.wrap(e)).toList()); - } - - static const $Function __getElementById = $Function(_getElementById); - static $Value? _getElementById( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MDocument).getElementById(args[0]?.$value); - return res == null ? const $null() : $MElement.wrap(res); - } - - static const $Function __xpath = $Function(_xpath); - static $Value? _xpath( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MDocument).xpath(args[0]?.$value); - return $List.wrap(res.map((e) => $String(e)).toList()); - } - - static const $Function __xpathFirst = $Function(_xpathFirst); - static $Value? _xpathFirst( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MDocument).xpathFirst(args[0]?.$value); - return res == null ? const $null() : $String(res); - } - - static const $Function __attr = $Function(_attr); - static $Value? _attr( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MDocument).attr(args[0]?.$value ?? ""); - return res == null ? const $null() : $String(res); - } - - static const $Function __hasAttr = $Function(_hasAttr); - static $Value? _hasAttr( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MDocument).attr(args[0]?.$value ?? ""); - return res == null ? const $null() : $String(res); - } - - @override - List? select(String selector) => $value.select(selector); - - @override - MElement? selectFirst(String selector) => $value.selectFirst(selector); - - @override - List xpath(String xpath) => $value.xpath(xpath); - - @override - String? xpathFirst(String xpath) => $value.xpathFirst(xpath); - - @override - List? getElementsByClassName(String classNames) => - $value.getElementsByClassName(classNames); - - @override - List? getElementsByTagName(String localNames) => - $value.getElementsByTagName(localNames); - - @override - String? attr(String attr) => $value.attr(attr); - - @override - bool hasAttr(String attr) => $value.hasAttr(attr); - - @override - MElement? getElementById(String id) => $value.getElementById(id); - - @override - MElement? get body => $value.body; - - @override - List? get children => $value.children; - - @override - MElement? get documentElement => $value.documentElement; - - @override - MElement? get head => $value.head; - - @override - String? get outerHtml => $value.outerHtml; - - @override - MElement? get parent => $value.parent; - - @override - String? get text => $value.text; -} - -class $Document implements $Instance { - $Document.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'Document'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type, nullable: true)), - ), - }, - wrap: true, - ); - - @override - get $reified => $value; - - @override - final Document $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - return _superclass.$getProperty(runtime, identifier); - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) {} } diff --git a/lib/eval/dart/bridge/element.dart b/lib/eval/dart/bridge/element.dart index 09e42985..2c633b8e 100644 --- a/lib/eval/dart/bridge/element.dart +++ b/lib/eval/dart/bridge/element.dart @@ -1,564 +1,66 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:html/dom.dart'; import 'package:mangayomi/eval/model/element.dart'; -class $MElement implements MElement, $Instance { - $MElement.wrap(this.$value) : _superclass = $Object($value); - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MElement'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), +class MElementBridge { + final elementBridgedClass = BridgedClassDefinition( + nativeType: MElement, + name: 'MElement', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'element', - BridgeTypeAnnotation($Element.$type, nullable: true), - false, - ), - ], - ), - ), + '': (visitor, positionalArgs, namedArgs) { + return MElement(positionalArgs[0] as Element); + }, }, - fields: {'element': BridgeFieldDef(BridgeTypeAnnotation($Element.$type))}, getters: { - 'outerHtml': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'innerHtml': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'text': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'className': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'localName': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'namespaceUri': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'getSrc': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'getImg': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'getHref': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'getDataSrc': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'children': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [$type]), - nullable: true, - ), - ), - ), - 'parent': BridgeMethodDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type, nullable: true)), - ), - 'nextElementSibling': BridgeMethodDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type, nullable: true)), - ), - 'previousElementSibling': BridgeMethodDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type, nullable: true)), - ), + 'outerHtml': (visitor, target) => (target as MElement).outerHtml, + 'innerHtml': (visitor, target) => (target as MElement).innerHtml, + 'text': (visitor, target) => (target as MElement).text, + 'className': (visitor, target) => (target as MElement).className, + 'localName': (visitor, target) => (target as MElement).localName, + 'namespaceUri': (visitor, target) => (target as MElement).namespaceUri, + 'getSrc': (visitor, target) => (target as MElement).getSrc, + 'getImg': (visitor, target) => (target as MElement).getImg, + 'getHref': (visitor, target) => (target as MElement).getHref, + 'getDataSrc': (visitor, target) => (target as MElement).getDataSrc, + 'children': (visitor, target) => (target as MElement).children, + 'parent': (visitor, target) => (target as MElement).parent, + 'nextElementSibling': + (visitor, target) => (target as MElement).nextElementSibling, + 'previousElementSibling': + (visitor, target) => (target as MElement).previousElementSibling, }, methods: { - 'attr': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'attr', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - false, - ), - ], - ), - ), - 'text': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'select': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [$type]), - nullable: true, - ), - params: [ - BridgeParameter( - 'selector', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'selectFirst': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type, nullable: true), - params: [ - BridgeParameter( - 'selector', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'getElementsByClassName': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [$type]), - nullable: true, - ), - params: [ - BridgeParameter( - 'classNames', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'getElementsByTagName': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [$type]), - nullable: true, - ), - params: [ - BridgeParameter( - 'localNames', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'xpath': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)]), - nullable: true, - ), - params: [ - BridgeParameter( - 'xpath', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'xpathFirst': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - params: [ - BridgeParameter( - 'xpath', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'hasAttr': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - params: [ - BridgeParameter( - 'attr', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), + 'attr': + (visitor, target, positionalArgs, namedArgs) => + (target as MElement).attr(positionalArgs[0] as String), + 'text': + (visitor, target, positionalArgs, namedArgs) => + (target as MElement).text, + 'select': + (visitor, target, positionalArgs, namedArgs) => + (target as MElement).select(positionalArgs[0] as String), + 'selectFirst': + (visitor, target, positionalArgs, namedArgs) => + (target as MElement).selectFirst(positionalArgs[0] as String), + 'getElementsByClassName': + (visitor, target, positionalArgs, namedArgs) => (target as MElement) + .getElementsByClassName(positionalArgs[0] as String), + 'getElementsByTagName': + (visitor, target, positionalArgs, namedArgs) => (target as MElement) + .getElementsByTagName(positionalArgs[0] as String), + 'xpath': + (visitor, target, positionalArgs, namedArgs) => + (target as MElement).xpath(positionalArgs[0] as String), + 'xpathFirst': + (visitor, target, positionalArgs, namedArgs) => + (target as MElement).xpathFirst(positionalArgs[0] as String), + 'hasAttr': + (visitor, target, positionalArgs, namedArgs) => + (target as MElement).hasAttr(positionalArgs[0] as String), }, - wrap: true, ); - @override - get $reified => $value; - - @override - final MElement $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'outerHtml': - final res = $value.outerHtml; - return res == null ? const $null() : $String(res); - case 'innerHtml': - final res = $value.innerHtml; - return res == null ? const $null() : $String(res); - case 'text': - final res = $value.text; - return res == null - ? const $null() - : $String(res.trim().trimLeft().trimRight()); - case 'className': - final res = $value.className; - return res == null - ? const $null() - : $String(res.trim().trimLeft().trimRight()); - case 'localName': - final res = $value.localName; - return res == null - ? const $null() - : $String(res.trim().trimLeft().trimRight()); - case 'namespaceUri': - final res = $value.namespaceUri; - return res == null - ? const $null() - : $String(res.trim().trimLeft().trimRight()); - case 'getSrc': - final res = $value.getSrc; - return res == null - ? const $null() - : $String(res.trim().trimLeft().trimRight()); - case 'getImg': - final res = $value.getImg; - return res == null - ? const $null() - : $String(res.trim().trimLeft().trimRight()); - case 'getHref': - final res = $value.getHref; - return res == null - ? const $null() - : $String(res.trim().trimLeft().trimRight()); - case 'getDataSrc': - final res = $value.getDataSrc; - return res == null - ? const $null() - : $String(res.trim().trimLeft().trimRight()); - case 'parent': - final res = $value.parent; - return res == null ? const $null() : $MElement.wrap(res); - case 'nextElementSibling': - final res = $value.nextElementSibling; - return res == null ? const $null() : $MElement.wrap(res); - case 'previousElementSibling': - final res = $value.previousElementSibling; - return res == null ? const $null() : $MElement.wrap(res); - case 'attr': - return __attr; - case 'select': - return __select; - case 'selectFirst': - return __selectFirst; - case 'getElementsByClassName': - return __getElementsByClassName; - case 'getElementsByTagName': - return __getElementsByTagName; - case 'xpath': - return __xpath; - case 'xpathFirst': - return __xpathFirst; - case 'hasAttr': - return __hasAttr; - default: - return _superclass.$getProperty(runtime, identifier); - } + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(elementBridgedClass); } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) {} - - static $Value? $new( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - return $MElement.wrap(MElement(args[0]?.$value)); - } - - static const $Function __attr = $Function(_attr); - - static $Value? _attr( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MElement).attr(args[0]?.$value ?? ""); - return res == null ? const $null() : $String(res); - } - - static const $Function __select = $Function(_select); - - static $Value? _select( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MElement).select(args[0]?.$value); - return res == null - ? const $null() - : $List.wrap(res.map((e) => $MElement.wrap(e)).toList()); - } - - static const $Function __selectFirst = $Function(_selectFirst); - - static $Value? _selectFirst( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MElement).selectFirst(args[0]?.$value); - return res == null ? const $null() : $MElement.wrap(res); - } - - static const $Function __getElementsByClassName = $Function( - _getElementsByClassName, - ); - - static $Value? _getElementsByClassName( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MElement).getElementsByClassName( - args[0]?.$value, - ); - return res == null - ? const $null() - : $List.wrap(res.map((e) => $MElement.wrap(e)).toList()); - } - - static const $Function __getElementsByTagName = $Function( - _getElementsByTagName, - ); - - static $Value? _getElementsByTagName( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MElement).getElementsByTagName( - args[0]?.$value, - ); - return res == null - ? const $null() - : $List.wrap(res.map((e) => $MElement.wrap(e)).toList()); - } - - static const $Function __xpath = $Function(_xpath); - - static $Value? _xpath( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MElement).xpath(args[0]?.$value); - return res == null - ? const $null() - : $List.wrap(res.map((e) => $String(e)).toList()); - } - - static const $Function __xpathFirst = $Function(_xpathFirst); - - static $Value? _xpathFirst( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MElement).xpathFirst(args[0]?.$value); - return res == null ? const $null() : $String(res); - } - - static const $Function __hasAttr = $Function(_hasAttr); - - static $Value? _hasAttr( - final Runtime runtime, - final $Value? target, - final List<$Value?> args, - ) { - final res = (target!.$value as MElement).attr(args[0]?.$value ?? ""); - return res == null ? const $null() : $String(res); - } - - @override - List? xpath(String xpath) => $value.xpath(xpath); - - @override - String? xpathFirst(String xpath) => $value.xpathFirst(xpath); - - @override - String? attr(String attr) => $value.attr(attr); - - @override - List? select(String selector) => $value.select(selector); - - @override - MElement? selectFirst(String selector) => $value.selectFirst(selector); - - @override - List? get children => $value.children; - - @override - List? getElementsByClassName(String classNames) => - $value.getElementsByClassName(classNames); - - @override - List? getElementsByTagName(String localNames) => - $value.getElementsByTagName(localNames); - - @override - bool hasAttr(String attr) => $value.hasAttr(attr); - - @override - String? get className => $value.className; - - @override - String? get getDataSrc => $value.getDataSrc; - - @override - String? get getHref => $value.getHref; - - @override - String? get getImg => $value.getImg; - - @override - String? get getSrc => $value.getSrc; - - @override - String? get innerHtml => $value.innerHtml; - - @override - String? get localName => $value.localName; - - @override - String? get namespaceUri => $value.namespaceUri; - - @override - MElement? get nextElementSibling => $value.nextElementSibling; - - @override - String? get outerHtml => $value.outerHtml; - - @override - MElement? get parent => $value.parent; - - @override - MElement? get previousElementSibling => $value.previousElementSibling; - - @override - String? get text => $value.text; -} - -class $Element implements $Instance { - $Element.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'Element'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type, nullable: true)), - ), - }, - wrap: true, - ); - - @override - get $reified => $value; - - @override - final Element $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - return _superclass.$getProperty(runtime, identifier); - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) {} } diff --git a/lib/eval/dart/bridge/filter.dart b/lib/eval/dart/bridge/filter.dart index b7cbc5df..8122b28f 100644 --- a/lib/eval/dart/bridge/filter.dart +++ b/lib/eval/dart/bridge/filter.dart @@ -1,1388 +1,373 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/eval/model/filter.dart'; -class $FilterList implements FilterList, $Instance { - $FilterList.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'FilterList'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), +class FilterBridge { + final filterBridgedClass = BridgedClassDefinition( + nativeType: FilterList, + name: 'FilterList', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'filters', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.dynamic), - ]), - ), - false, - ), - ], - ), - ), + '': (visitor, positionalArgs, namedArgs) { + return FilterList(positionalArgs[0] as List); + }, }, - fields: { - 'filters': BridgeFieldDef( - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)]), - ), - ), + methods: { + 'filters': + (visitor, target, positionalArgs, namedArgs) => + (target as FilterList).filters, + }, + setters: { + 'filters': + (visitor, target, value) => + (target as FilterList).filters = value as List, + }, + ); + final selectFilterBridgedClass = BridgedClassDefinition( + nativeType: SelectFilter, + name: 'SelectFilter', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return SelectFilter( + positionalArgs.get(0), + positionalArgs.get(1)!, + positionalArgs.get(2)!, + positionalArgs.get(3)!, + positionalArgs.get(4), + ); + }, + }, + getters: { + 'type': (visitor, target) => (target as SelectFilter).type, + 'name': (visitor, target) => (target as SelectFilter).name, + 'state': (visitor, target) => (target as SelectFilter).state, + 'values': (visitor, target) => (target as SelectFilter).values, + 'typeName': (visitor, target) => (target as SelectFilter).typeName, + }, + setters: { + 'state': + (visitor, target, value) => + (target as SelectFilter).state = value as int, + 'values': + (visitor, target, value) => + (target as SelectFilter).values = value as List, + 'type': + (visitor, target, value) => + (target as SelectFilter).type = value as String, + 'name': + (visitor, target, value) => + (target as SelectFilter).name = value as String, + 'typeName': + (visitor, target, value) => + (target as SelectFilter).typeName = value as String?, + }, + ); + final selectFilterOptionBridgedClass = BridgedClassDefinition( + nativeType: SelectFilterOption, + name: 'SelectFilterOption', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return SelectFilterOption( + positionalArgs.get(0)!, + positionalArgs.get(1)!, + positionalArgs.get(2), + ); + }, + }, + getters: { + 'name': (visitor, target) => (target as SelectFilterOption).name, + 'value': (visitor, target) => (target as SelectFilterOption).value, + 'typeName': (visitor, target) => (target as SelectFilterOption).typeName, + }, + setters: { + 'name': + (visitor, target, value) => + (target as SelectFilterOption).name = value as String, + 'value': + (visitor, target, value) => + (target as SelectFilterOption).value = value as String, + 'typeName': + (visitor, target, value) => + (target as SelectFilterOption).typeName = value as String?, }, - wrap: true, ); - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $FilterList.wrap(args[0]!.$value); - } + final separatorFilterBridgedClass = BridgedClassDefinition( + nativeType: SeparatorFilter, + name: 'SeparatorFilter', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return SeparatorFilter( + null, + type: positionalArgs.get(0) ?? '', + ); + }, + }, + getters: { + 'type': (visitor, target) => (target as SeparatorFilter), + 'typeName': (visitor, target) => (target as SeparatorFilter).typeName, + }, + setters: { + 'type': + (visitor, target, value) => + (target as SeparatorFilter).type = value as String?, + 'typeName': + (visitor, target, value) => + (target as SeparatorFilter).typeName = value as String?, + }, + ); - @override - final FilterList $value; + final headerFilterBridgedClass = BridgedClassDefinition( + nativeType: HeaderFilter, + name: 'HeaderFilter', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return HeaderFilter( + positionalArgs.get(0)!, + null, + type: positionalArgs.get(1) ?? '', + ); + }, + }, + getters: { + 'type': (visitor, target) => (target as HeaderFilter).type, + 'name': (visitor, target) => (target as HeaderFilter).name, + 'typeName': (visitor, target) => (target as HeaderFilter).typeName, + }, + setters: { + 'type': + (visitor, target, value) => + (target as HeaderFilter).type = value as String?, + 'name': + (visitor, target, value) => + (target as HeaderFilter).name = value as String, + 'typeName': + (visitor, target, value) => + (target as HeaderFilter).typeName = value as String?, + }, + ); - @override - FilterList get $reified => $value; + final textFilterBridgedClass = BridgedClassDefinition( + nativeType: TextFilter, + name: 'TextFilter', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return TextFilter( + positionalArgs.get(0), + positionalArgs.get(1)!, + positionalArgs.get(2), + state: namedArgs.get('state') ?? '', + ); + }, + }, + getters: { + 'type': (visitor, target) => (target as TextFilter).type, + 'name': (visitor, target) => (target as TextFilter).name, + 'state': (visitor, target) => (target as TextFilter).state, + 'typeName': (visitor, target) => (target as TextFilter).typeName, + }, + setters: { + 'state': + (visitor, target, value) => + (target as TextFilter).state = value as String, + 'type': + (visitor, target, value) => + (target as TextFilter).type = value as String?, + 'name': + (visitor, target, value) => + (target as TextFilter).name = value as String, + 'typeName': + (visitor, target, value) => + (target as TextFilter).typeName = value as String?, + }, + ); - final $Instance _superclass; + final sortFilterBridgedClass = BridgedClassDefinition( + nativeType: SortFilter, + name: 'SortFilter', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return SortFilter( + positionalArgs.get(0), + positionalArgs.get(1)!, + positionalArgs.get(2)!, + positionalArgs.get(3)!, + positionalArgs.get(4), + ); + }, + }, + getters: { + 'type': (visitor, target) => (target as SortFilter).type, + 'name': (visitor, target) => (target as SortFilter).name, + 'state': (visitor, target) => (target as SortFilter).state, + 'typeName': (visitor, target) => (target as SortFilter).typeName, + 'values': (visitor, target) => (target as SortFilter).values, + }, + setters: { + 'type': + (visitor, target, value) => + (target as SortFilter).type = value as String?, + 'name': + (visitor, target, value) => + (target as SortFilter).name = value as String, + 'typeName': + (visitor, target, value) => + (target as SortFilter).typeName = value as String?, + 'values': + (visitor, target, value) => + (target as SortFilter).values = value as List, + }, + ); + final sortStateBridgedClass = BridgedClassDefinition( + nativeType: SortState, + name: 'SortState', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return SortState( + positionalArgs.get(0)!, + positionalArgs.get(1)!, + positionalArgs.get(2), + ); + }, + }, + getters: { + 'index': (visitor, target) => (target as SortState).index, + 'ascending': (visitor, target) => (target as SortState).ascending, + 'typeName': (visitor, target) => (target as SortState).typeName, + }, + setters: { + 'index': + (visitor, target, value) => + (target as SortState).index = value as int, + 'ascending': + (visitor, target, value) => + (target as SortState).ascending = value as bool, + 'typeName': + (visitor, target, value) => + (target as SortState).typeName = value as String?, + }, + ); - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'filters': - return $List.wrap($value.filters); + final triStateFilterBridgedClass = BridgedClassDefinition( + nativeType: TriStateFilter, + name: 'TriStateFilter', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return TriStateFilter( + positionalArgs.get(2), + positionalArgs.get(0)!, + positionalArgs.get(1)!, + positionalArgs.get(3), + state: positionalArgs.get(3) ?? 0, + ); + }, + }, + getters: { + 'type': (visitor, target) => (target as TriStateFilter).type, + 'name': (visitor, target) => (target as TriStateFilter).name, + 'state': (visitor, target) => (target as TriStateFilter).state, + 'typeName': (visitor, target) => (target as TriStateFilter).typeName, + 'value': (visitor, target) => (target as TriStateFilter).value, + }, + setters: { + 'state': + (visitor, target, value) => + (target as TriStateFilter).state = value as int, + 'type': + (visitor, target, value) => + (target as TriStateFilter).type = value as String?, + 'name': + (visitor, target, value) => + (target as TriStateFilter).name = value as String, + 'typeName': + (visitor, target, value) => + (target as TriStateFilter).typeName = value as String?, + }, + ); - default: - return _superclass.$getProperty(runtime, identifier); - } - } + final groupFilterBridgedClass = BridgedClassDefinition( + nativeType: GroupFilter, + name: 'GroupFilter', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return GroupFilter( + positionalArgs.get(0), + positionalArgs.get(1)!, + positionalArgs.get(2)!, + positionalArgs.get(3), + ); + }, + }, + getters: { + 'type': (visitor, target) => (target as GroupFilter).type, + 'name': (visitor, target) => (target as GroupFilter).name, + 'state': (visitor, target) => (target as GroupFilter).state, + 'typeName': (visitor, target) => (target as GroupFilter).typeName, + }, + setters: { + 'type': + (visitor, target, value) => + (target as GroupFilter).type = value as String?, + 'name': + (visitor, target, value) => + (target as GroupFilter).name = value as String, + 'typeName': + (visitor, target, value) => + (target as GroupFilter).typeName = value as String?, + 'state': + (visitor, target, value) => + (target as GroupFilter).state = value as List, + }, + ); - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'filters': - $value.filters = - (value.$reified as List) - .map((e) => e is $Value ? e.$reified : e) - .toList(); - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - List get filters => $value.filters; - - @override - set filters(List filters) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $SelectFilter implements SelectFilter, $Instance { - $SelectFilter.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'SelectFilter'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'type', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'name', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'state', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - BridgeParameter( - 'values', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.dynamic), - ]), - ), - false, - ), - ], - ), - ), - }, - fields: { - 'type': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'name': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'state': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - ), - 'values': BridgeFieldDef( - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)]), - ), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $SelectFilter.wrap( - SelectFilter( - args[0]!.$value, - args[1]!.$value, - args[2]!.$value, - (args[3]!.$value as List).map((e) { - if (e is $Value) { - final value = e.$reified; - if (value is Map) { - Map map = {}; - map = value.map((key, value) => MapEntry(key.toString(), value)); - if (map['type'] == 'SelectOption') { - final filter = map['filter'] as Map; - return SelectFilterOption.fromJson( - filter.map((key, value) => MapEntry(key.toString(), value)), - ); - } - } - return value; - } - return e; - }).toList(), - null, - ), - ); - } - - @override - final SelectFilter $value; - - @override - SelectFilter get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'name': - return $String($value.name); - case 'type': - return $String($value.type ?? ''); - case 'state': - return $int($value.state); - case 'values': - return $List.wrap($value.values); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'type': - $value.type = value.$reified; - case 'name': - $value.name = value.$reified; - case 'state': - $value.state = value.$reified; - case 'values': - $value.values = value.$reified; - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String? get type => $value.type ?? ''; - - @override - String get name => $value.name; - - @override - int get state => $value.state; - - @override - String? get typeName => $value.typeName; - - @override - set typeName(String? typeName) {} - - @override - List get values => $value.values; - - @override - set name(String name) {} - - @override - set type(String? type) {} - - @override - set state(int state) {} - - @override - set values(List values) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $SelectFilterOption implements SelectFilterOption, $Instance { - $SelectFilterOption.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'SelectFilterOption'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'name', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'value', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - }, - fields: { - 'name': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'value': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $SelectFilterOption.wrap( - SelectFilterOption(args[0]!.$value, args[1]!.$value, null), - ); - } - - @override - final SelectFilterOption $value; - - @override - SelectFilterOption get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'name': - return $String($value.name); - case 'value': - return $String($value.value); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'value': - $value.value = value.$reified; - case 'name': - $value.name = value.$reified; - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String get value => $value.value; - - @override - String get name => $value.name; - - @override - String? get typeName => $value.typeName; - - @override - set typeName(String? typeName) {} - - @override - set name(String name) {} - - @override - set value(String value) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $SeparatorFilter implements SeparatorFilter, $Instance { - $SeparatorFilter.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'SeparatorFilter'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'type', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - true, - ), - ], - ), - ), - }, - fields: { - 'type': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $SeparatorFilter.wrap( - SeparatorFilter(null, type: args[0]?.$value ?? ''), - ); - } - - @override - final SeparatorFilter $value; - - @override - SeparatorFilter get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'type': - return $String($value.type ?? ''); - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'type': - $value.type = value.$reified; - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String? get type => $value.type ?? ''; - - @override - String? get typeName => $value.typeName; - - @override - set typeName(String? typeName) {} - - @override - set type(String? type) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $HeaderFilter implements HeaderFilter, $Instance { - $HeaderFilter.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'HeaderFilter'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'name', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'type', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - true, - ), - ], - ), - ), - }, - fields: { - 'name': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'type': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $HeaderFilter.wrap( - HeaderFilter(args[0]!.$value, null, type: args[1]?.$value ?? ''), - ); - } - - @override - final HeaderFilter $value; - - @override - HeaderFilter get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'type': - return $String($value.type ?? ''); - case 'name': - return $String($value.name); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'name': - $value.name = value.$reified; - case 'type': - $value.type = value.$reified; - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String get name => $value.name; - - @override - set name(String name) {} - - @override - set type(String? type) {} - - @override - String? get type => $value.type ?? ''; - - @override - String? get typeName => $value.typeName; - - @override - set typeName(String? typeName) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $TextFilter implements TextFilter, $Instance { - $TextFilter.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'TextFilter'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'type', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'name', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - }, - fields: { - 'type': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'name': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $TextFilter.wrap(TextFilter(args[0]!.$value, args[1]!.$value, null)); - } - - @override - final TextFilter $value; - - @override - TextFilter get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'type': - return $String($value.type ?? ''); - case 'name': - return $String($value.name); - case 'state': - return $String($value.state); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'type': - $value.type = value.$reified; - case 'name': - $value.name = value.$reified; - case 'state': - $value.state = value.$reified; - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String? get type => $value.type ?? ''; - @override - String get name => $value.name; - - @override - String get state => $value.state; - - @override - String? get typeName => $value.typeName; - - @override - set typeName(String? typeName) {} - - @override - set type(String? type) {} - - @override - set name(String name) {} - - @override - set state(String state) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $SortFilter implements SortFilter, $Instance { - $SortFilter.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'SortFilter'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'type', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'name', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'state', - BridgeTypeAnnotation($SortState.$type), - false, - ), - BridgeParameter( - 'values', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.dynamic), - ]), - ), - false, - ), - ], - ), - ), - }, - fields: { - 'type': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'name': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'state': BridgeFieldDef(BridgeTypeAnnotation($SortState.$type)), - 'values': BridgeFieldDef( - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)]), - ), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $SortFilter.wrap( - SortFilter( - args[0]!.$value, - args[1]!.$value, - args[2]!.$value, - (args[3]!.$value as List) - .map( - (e) => - SelectFilterOption(e.$reified.name, e.$reified.value, null), - ) - .toList(), - null, - ), - ); - } - - @override - final SortFilter $value; - - @override - SortFilter get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'type': - return $String($value.type ?? ''); - case 'name': - return $String($value.name); - case 'state': - return $SortState.wrap($value.state); - case 'values': - return $List.wrap($value.values); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'type': - $value.type = value.$reified; - case 'name': - $value.name = value.$reified; - case 'state': - $value.state = value.$reified; - case 'values': - $value.values = value.$reified; - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String? get type => $value.type ?? ''; - - @override - String get name => $value.name; - - @override - SortState get state => $value.state; - - @override - List get values => $value.values; - - @override - String? get typeName => $value.typeName; - - @override - set typeName(String? typeName) {} - - @override - set type(String? type) {} - - @override - set name(String name) {} - - @override - set state(SortState state) {} - - @override - set values(List values) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $SortState implements SortState, $Instance { - $SortState.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'SortState'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'index', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - BridgeParameter( - 'ascending', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - false, - ), - ], - ), - ), - }, - fields: { - 'index': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - ), - 'ascending': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $SortState.wrap(SortState(args[0]!.$value, args[1]!.$value, null)); - } - - @override - final SortState $value; - - @override - SortState get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'index': - return $int($value.index); - case 'ascending': - return $bool($value.ascending); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'index': - $value.index = value.$reified; - case 'ascending': - $value.ascending = value.$reified; - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - int get index => $value.index; - - @override - bool get ascending => $value.ascending; - - @override - String? get typeName => $value.typeName; - - @override - set typeName(String? typeName) {} - - @override - set ascending(bool ascending) {} - - @override - set index(int index) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $TriStateFilter implements TriStateFilter, $Instance { - $TriStateFilter.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'TriStateFilter'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'name', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'value', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'type', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - true, - ), - ], - namedParams: [ - BridgeParameter( - 'state', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - true, - ), - ], - ), - ), - }, - fields: { - 'name': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'value': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'type': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'state': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $TriStateFilter.wrap( - TriStateFilter( - args[2]?.$value ?? '', - args[0]!.$value, - args[1]!.$value, - null, - state: args[3]?.$value ?? 0, - ), - ); - } - - @override - final TriStateFilter $value; - - @override - TriStateFilter get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'type': - return $String($value.type ?? ''); - case 'name': - return $String($value.name); - case 'state': - return $int($value.state); - case 'value': - return $String($value.value); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'type': - $value.type = value.$reified; - case 'name': - $value.name = value.$reified; - case 'state': - $value.state = value.$reified; - case 'value': - $value.value = value.$reified; - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String? get type => $value.type ?? ''; - - @override - String get name => $value.name; - - @override - set name(String name) {} - - @override - int get state => $value.state; - - @override - String get value => $value.value; - - @override - String? get typeName => $value.typeName; - - @override - set typeName(String? typeName) {} - - @override - set state(int state) {} - - @override - set type(String? type) {} - - @override - set value(String value) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $GroupFilter implements GroupFilter, $Instance { - $GroupFilter.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'GroupFilter'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'type', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'name', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'state', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.dynamic), - ]), - ), - false, - ), - ], - ), - ), - }, - fields: { - 'type': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'name': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'state': BridgeFieldDef( - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)]), - ), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $GroupFilter.wrap( - GroupFilter( - args[0]!.$value, - args[1]!.$value, - (args[2]!.$value as List).map((e) { - if (e is $Value) { - final value = e.$reified; - if (value is Map) { - Map map = {}; - map = value.map((key, value) => MapEntry(key.toString(), value)); - if (map['type'] == 'TriState') { - final filter = map['filter'] as Map; - return TriStateFilter.fromJson( - filter.map((key, value) => MapEntry(key.toString(), value)), - ); - } else if (map['type'] == 'CheckBox') { - final filter = map['filter'] as Map; - return CheckBoxFilter.fromJson( - filter.map((key, value) => MapEntry(key.toString(), value)), - ); - } - } - return value; - } - return e; - }).toList(), - null, - ), - ); - } - - @override - final GroupFilter $value; - - @override - GroupFilter get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'type': - return $String($value.type ?? ''); - case 'name': - return $String($value.name); - case 'state': - return $List.wrap($value.state.map((e) => e).toList()); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'type': - $value.type = value.$reified; - case 'name': - $value.name = value.$reified; - case 'state': - $value.state = value.$reified; - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String? get type => $value.type ?? ''; - - @override - String get name => $value.name; - - @override - List get state => $value.state; - - @override - String? get typeName => $value.typeName; - - @override - set typeName(String? typeName) {} - - @override - set type(String? type) {} - - @override - set name(String name) {} - - @override - set state(List state) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $CheckBoxFilter implements CheckBoxFilter, $Instance { - $CheckBoxFilter.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'CheckBoxFilter'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'name', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'value', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'type', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - true, - ), - ], - namedParams: [ - BridgeParameter( - 'state', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - true, - ), - ], - ), - ), - }, - fields: { - 'name': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'value': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'type': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'state': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $CheckBoxFilter.wrap( - CheckBoxFilter( - args[2]?.$value ?? '', - args[0]!.$value, - args[1]!.$value, - null, - state: args[3]?.$value ?? false, - ), - ); - } - - @override - final CheckBoxFilter $value; - - @override - CheckBoxFilter get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'type': - return $String($value.type ?? ''); - case 'name': - return $String($value.name); - case 'state': - return $bool($value.state); - case 'value': - return $String($value.value); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'type': - $value.type = value.$reified; - case 'name': - $value.name = value.$reified; - case 'state': - $value.state = value.$reified; - case 'value': - $value.value = value.$reified; - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String? get type => $value.type ?? ''; - - @override - String get name => $value.name; - - @override - set name(String name) {} - - @override - bool get state => $value.state; - - @override - String get value => $value.value; - - @override - String? get typeName => $value.typeName; - - @override - set typeName(String? typeName) {} - - @override - set type(String? type) {} - - @override - set state(bool state) {} - - @override - set value(String value) {} - - @override - Map toJson() { - throw UnimplementedError(); + final checkBoxFilterBridgedClass = BridgedClassDefinition( + nativeType: CheckBoxFilter, + name: 'CheckBoxFilter', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return CheckBoxFilter( + positionalArgs.get(2) ?? '', + positionalArgs.get(0)!, + positionalArgs.get(1)!, + null, + state: positionalArgs.get(3) ?? false, + ); + }, + }, + getters: { + 'type': (visitor, target) => (target as CheckBoxFilter).type, + 'name': (visitor, target) => (target as CheckBoxFilter).name, + 'state': (visitor, target) => (target as CheckBoxFilter).state, + 'typeName': (visitor, target) => (target as CheckBoxFilter).typeName, + 'value': (visitor, target) => (target as CheckBoxFilter).value, + }, + setters: { + 'state': + (visitor, target, value) => + (target as CheckBoxFilter).state = value as bool, + 'type': + (visitor, target, value) => + (target as CheckBoxFilter).type = value as String?, + 'name': + (visitor, target, value) => + (target as CheckBoxFilter).name = value as String, + 'typeName': + (visitor, target, value) => + (target as CheckBoxFilter).typeName = value as String?, + 'value': + (visitor, target, value) => + (target as CheckBoxFilter).value = value as String, + }, + ); + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(filterBridgedClass); + interpreter.registerBridgedClass(selectFilterBridgedClass); + interpreter.registerBridgedClass(selectFilterOptionBridgedClass); + interpreter.registerBridgedClass(separatorFilterBridgedClass); + interpreter.registerBridgedClass(headerFilterBridgedClass); + interpreter.registerBridgedClass(textFilterBridgedClass); + interpreter.registerBridgedClass(sortFilterBridgedClass); + interpreter.registerBridgedClass(sortStateBridgedClass); + interpreter.registerBridgedClass(triStateFilterBridgedClass); + interpreter.registerBridgedClass(groupFilterBridgedClass); + interpreter.registerBridgedClass(checkBoxFilterBridgedClass); } } diff --git a/lib/eval/dart/bridge/http.dart b/lib/eval/dart/bridge/http.dart index 4ee46e69..e9432a50 100644 --- a/lib/eval/dart/bridge/http.dart +++ b/lib/eval/dart/bridge/http.dart @@ -1,935 +1,174 @@ import 'dart:convert'; -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; -import 'package:flutter/foundation.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:http_interceptor/http_interceptor.dart'; -import 'package:mangayomi/eval/dart/bridge/m_source.dart'; -import 'package:mangayomi/eval/model/m_bridge.dart'; +import 'package:mangayomi/eval/model/m_source.dart'; import 'package:mangayomi/services/http/m_client.dart'; -/// dart_eval wrapper for [InterceptedClient] -class $Client implements $Instance { - $Client.wrap(this.$value); - - @override - final InterceptedClient $value; - - late final $Instance _superclass = $Object($value); - - /// Compile-time bridged type reference for [$InterceptedClient] - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'Client'), - ); - - /// Compile-time bridged class declaration for [$InterceptedClient] - static const $declaration = BridgeClassDef( - BridgeClassType($type), +class HttpBridge { + final clientBridgedClass = BridgedClassDefinition( + nativeType: InterceptedClient, + name: 'Client', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'source', - BridgeTypeAnnotation($MSource.$type), - true, - ), - BridgeParameter( - 'reqcopyWith', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - true, - ), - ], - namedParams: [], - ), - ), + '': (visitor, positionalArgs, namedArgs) { + return MClient.init( + source: + positionalArgs.isNotEmpty ? positionalArgs[0] as MSource : null, + reqcopyWith: + positionalArgs.length > 1 + ? (jsonDecode(positionalArgs[1] as String) as Map) + .cast() + : null, + ); + }, }, methods: { - 'get': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [$Response.$type]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), - false, - ), - ], - namedParams: [ - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - nullable: true, + 'get': + (visitor, target, positionalArgs, namedArgs) => + (target as Client).get( + positionalArgs[0] as Uri, + headers: namedArgs.get('headers')?.cast(), ), - true, - ), - ], - ), - ), - 'post': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [$Response.$type]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), - false, - ), - ], - namedParams: [ - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - nullable: true, + 'post': + (visitor, target, positionalArgs, namedArgs) => + (target as Client).post( + positionalArgs[0] as Uri, + headers: namedArgs.get('headers')?.cast(), + body: namedArgs.get('body'), + encoding: namedArgs.get('encoding'), ), - true, - ), - BridgeParameter( - 'body', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.object), - nullable: true, + 'put': + (visitor, target, positionalArgs, namedArgs) => + (target as Client).put( + positionalArgs[0] as Uri, + headers: namedArgs.get('headers')?.cast(), + body: namedArgs.get('body'), + encoding: namedArgs.get('encoding'), ), - true, - ), - BridgeParameter( - 'encoding', - BridgeTypeAnnotation( - BridgeTypeRef(ConvertTypes.encoding), - nullable: true, + 'delete': + (visitor, target, positionalArgs, namedArgs) => + (target as Client).delete( + positionalArgs[0] as Uri, + headers: namedArgs.get('headers')?.cast(), + body: namedArgs.get('body'), + encoding: namedArgs.get('encoding'), ), - true, - ), - ], - ), - ), - 'put': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [$Response.$type]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), - false, - ), - ], - namedParams: [ - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - nullable: true, + 'head': + (visitor, target, positionalArgs, namedArgs) => + (target as Client).head( + positionalArgs[0] as Uri, + headers: namedArgs.get('headers')?.cast(), ), - true, - ), - BridgeParameter( - 'body', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.object), - nullable: true, + 'patch': + (visitor, target, positionalArgs, namedArgs) => + (target as Client).patch( + positionalArgs[0] as Uri, + headers: namedArgs.get('headers')?.cast(), + body: namedArgs.get('body'), + encoding: namedArgs.get('encoding'), ), - true, - ), - BridgeParameter( - 'encoding', - BridgeTypeAnnotation( - BridgeTypeRef(ConvertTypes.encoding), - nullable: true, + 'read': + (visitor, target, positionalArgs, namedArgs) => + (target as Client).read( + positionalArgs[0] as Uri, + headers: namedArgs.get('headers')?.cast(), ), - true, - ), - ], - ), - ), - 'delete': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [$Response.$type]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), - false, - ), - ], - namedParams: [ - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - nullable: true, + 'readBytes': + (visitor, target, positionalArgs, namedArgs) => + (target as Client).readBytes( + positionalArgs[0] as Uri, + headers: namedArgs.get('headers')?.cast(), ), - true, - ), - BridgeParameter( - 'body', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.object), - nullable: true, - ), - true, - ), - BridgeParameter( - 'encoding', - BridgeTypeAnnotation( - BridgeTypeRef(ConvertTypes.encoding), - nullable: true, - ), - true, - ), - ], - ), - ), - 'patch': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [$Response.$type]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), - false, - ), - ], - namedParams: [ - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - nullable: true, - ), - true, - ), - BridgeParameter( - 'body', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.object), - nullable: true, - ), - true, - ), - BridgeParameter( - 'encoding', - BridgeTypeAnnotation( - BridgeTypeRef(ConvertTypes.encoding), - nullable: true, - ), - true, - ), - ], - ), - ), - 'read': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [BridgeTypeRef(CoreTypes.string)]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), - false, - ), - ], - namedParams: [ - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - nullable: true, - ), - true, - ), - ], - ), - ), - 'readBytes': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.int)]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), - false, - ), - ], - namedParams: [ - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - nullable: true, - ), - true, - ), - ], - ), - ), - 'send': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [BridgeTypeRef(CoreTypes.list)]), - ), - params: [ - BridgeParameter( - 'request', - BridgeTypeAnnotation($BaseRequest.$type), - false, - ), - ], - ), - ), - 'close': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.voidType)), - ), - ), + 'close': + (visitor, target, positionalArgs, namedArgs) => + (target as Client).close(), + 'send': + (visitor, target, positionalArgs, namedArgs) => + (target as Client).send(positionalArgs[0] as BaseRequest), }, - wrap: true, ); - - static $Client $new(Runtime runtime, $Value? target, List<$Value?> args) { - final reqcopyWith = - args[1]?.$value == null - ? null - : (jsonDecode(args[1]!.$value) as Map).map( - (key, value) => MapEntry(key.toString(), value), - ); - return $Client.wrap( - MClient.init(source: args[0]?.$value, reqcopyWith: reqcopyWith), - ); - } - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'get': - return __get; - case 'post': - return __post; - case 'put': - return __put; - case 'delete': - return __delete; - case 'patch': - return __patch; - case 'read': - return __read; - case 'readBytes': - return __readBytes; - case 'close': - return __close; - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - static const $Function __get = $Function(_get); - - static $Value? _get(Runtime runtime, $Value? target, List<$Value?> args) { - final url = args[0]!.$value as Uri; - final headers = _toMapString(args[1]?.$value); - - final request = (target!.$value as InterceptedClient).get( - url, - headers: headers, - ); - return $Future.wrap( - request.then((value) => $Response.wrap(value)).onErrorMessage(), - ); - } - - static const $Function __post = $Function(_post); - - static $Value? _post(Runtime runtime, $Value? target, List<$Value?> args) { - final url = args[0]!.$value as Uri; - final headers = _toMapString(args[1]?.$value); - final body = _toBodyObject(args[2]?.$value); - final encoding = args[3]?.$value as Encoding?; - - final request = (target!.$value as InterceptedClient).post( - url, - headers: headers, - body: body, - encoding: encoding, - ); - return $Future.wrap( - request.then((value) => $Response.wrap(value)).onErrorMessage(), - ); - } - - static const $Function __put = $Function(_put); - - static $Value? _put(Runtime runtime, $Value? target, List<$Value?> args) { - final url = args[0]!.$value as Uri; - final headers = _toMapString(args[1]?.$value); - final body = _toBodyObject(args[2]?.$value); - final encoding = args[3]?.$value as Encoding?; - - final request = (target!.$value as InterceptedClient).put( - url, - headers: headers, - body: body, - encoding: encoding, - ); - return $Future.wrap( - request.then((value) => $Response.wrap(value)).onErrorMessage(), - ); - } - - static const $Function __delete = $Function(_delete); - - static $Value? _delete(Runtime runtime, $Value? target, List<$Value?> args) { - final url = args[0]!.$value as Uri; - final headers = _toMapString(args[1]?.$value); - final body = _toBodyObject(args[2]?.$value); - final encoding = args[3]?.$value as Encoding?; - - final request = (target!.$value as InterceptedClient).delete( - url, - headers: headers, - body: body, - encoding: encoding, - ); - return $Future.wrap( - request.then((value) => $Response.wrap(value)).onErrorMessage(), - ); - } - - static const $Function __patch = $Function(_patch); - - static $Value? _patch(Runtime runtime, $Value? target, List<$Value?> args) { - final url = args[0]!.$value as Uri; - final headers = _toMapString(args[1]?.$value); - final body = _toBodyObject(args[2]?.$value); - final encoding = args[3]?.$value as Encoding?; - - final request = (target!.$value as InterceptedClient).patch( - url, - headers: headers, - body: body, - encoding: encoding, - ); - return $Future.wrap( - request.then((value) => $Response.wrap(value)).onErrorMessage(), - ); - } - - static const $Function __read = $Function(_read); - - static $Value? _read(Runtime runtime, $Value? target, List<$Value?> args) { - final url = args[0]!.$value as Uri; - final headers = _toMapString(args[1]?.$value); - - final request = (target!.$value as InterceptedClient).read( - url, - headers: headers, - ); - return $Future.wrap( - request.then((value) => $String(value)).onErrorMessage(), - ); - } - - static const $Function __readBytes = $Function(_readBytes); - - static $Value? _readBytes( - Runtime runtime, - $Value? target, - List<$Value?> args, - ) { - final url = args[0]!.$value as Uri; - final headers = (args[1]?.$value as Map<$Value, $Value>?)?.map( - (key, value) => - MapEntry((key.$reified).toString(), (value.$reified).toString()), - ); - - final request = (target!.$value as InterceptedClient).readBytes( - url, - headers: headers, - ); - return $Future.wrap( - request.then((value) => $List.wrap(value)).onErrorMessage(), - ); - } - - static const $Function __close = $Function(_close); - - static $Value? _close(Runtime runtime, $Value? target, List<$Value?> args) { - (target!.$value as InterceptedClient).close(); - return null; - } - - @override - get $reified => $value; - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) {} -} - -/// dart_eval wrapper for [ClientRequest] -class $BaseRequest implements $Instance { - $BaseRequest.wrap(this.$value) : _superclass = $Object($value); - - @override - final BaseRequest $value; - - /// Compile-time bridged type reference for [$BaseRequest] - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'BaseRequest'), - ); - - /// Compile-time bridged class declaration for [$BaseRequest] - static const $declaration = BridgeClassDef( - BridgeClassType($type, isAbstract: true), - constructors: {}, - getters: { - 'contentLength': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.int), - nullable: true, - ), - ), - ), - 'finalized': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - ), - 'followRedirects': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - ), - 'headers': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - ), - ), - ), - 'maxRedirects': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - ), - ), - 'method': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - ), - 'persistentConnection': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - ), - 'url': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), - ), - ), - }, - wrap: true, - ); - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'contentLength': - final res = $value.contentLength; - return res == null ? const $null() : $int(res); - case 'finalized': - return $bool($value.persistentConnection); - case 'followRedirects': - return $bool($value.persistentConnection); - case 'headers': - return $Map.wrap($value.headers); - case 'maxRedirects': - return $int($value.maxRedirects); - case 'method': - return $String($value.method); - case 'persistentConnection': - return $bool($value.persistentConnection); - case 'url': - return $Uri.wrap($value.url); - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - get $reified => $value; - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - _superclass.$setProperty(runtime, identifier, value); - } -} - -/// dart_eval wrapper for [Response] -class $Response implements $Instance { - $Response.wrap(this.$value) : _superclass = $Object($value); - - @override - final Response $value; - - /// Compile-time bridged type reference for [$Response] - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'Response'), - ); - - /// Compile-time bridged class declaration for [$Response] - static const $declaration = BridgeClassDef( - BridgeClassType($type), + final baseRequestBridgedClass = BridgedClassDefinition( + nativeType: BaseRequest, + name: 'BaseRequest', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type)), - ), + '': (visitor, positionalArgs, namedArgs) { + return BaseRequest; + }, }, getters: { - 'body': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - ), - 'bodyBytes': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.int)]), - ), - ), - ), - 'contentLength': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.int), - nullable: true, - ), - ), - ), - 'headers': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - ), - ), - ), - 'isRedirect': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - ), - 'persistentConnection': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - ), - 'reasonPhrase': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'statusCode': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - ), - ), - 'request': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($BaseRequest.$type, nullable: true), - ), - ), + 'contentLength': + (visitor, target) => (target as BaseRequest).contentLength, + 'headers': (visitor, target) => (target as BaseRequest).headers, + 'url': (visitor, target) => (target as BaseRequest).url, + 'persistentConnection': + (visitor, target) => (target as BaseRequest).persistentConnection, + 'method': (visitor, target) => (target as BaseRequest).method, + 'followRedirects': + (visitor, target) => (target as BaseRequest).followRedirects, + 'maxRedirects': (visitor, target) => (target as BaseRequest).maxRedirects, + 'finalized': (visitor, target) => (target as BaseRequest).finalized, }, - wrap: true, ); - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'body': - return $String($value.body); - case 'bodyBytes': - return $List.wrap(($value.bodyBytes).map((e) => $int(e)).toList()); - case 'contentLength': - final res = $value.contentLength; - return res == null ? const $null() : $int(res); - case 'headers': - return $Map.wrap($value.headers); - case 'isRedirect': - return $bool($value.isRedirect); - case 'persistentConnection': - return $bool($value.persistentConnection); - case 'reasonPhrase': - final res = $value.reasonPhrase; - return res == null ? const $null() : $String(res); - case 'statusCode': - return $int($value.statusCode); - case 'request': - final res = $value.request; - return res == null ? const $null() : $BaseRequest.wrap(res); - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - get $reified => $value; - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - _superclass.$setProperty(runtime, identifier, value); - } -} - -/// dart_eval wrapper for [StreamedResponse] -class $StreamedResponse implements $Instance { - $StreamedResponse.wrap(this.$value) : _superclass = $Object($value); - - @override - final StreamedResponse $value; - - /// Compile-time bridged type reference for [$StreamedResponse] - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'StreamedResponse'), - ); - - /// Compile-time bridged class declaration for [$StreamedResponse] - static const $declaration = BridgeClassDef( - BridgeClassType($type), + final responseBridgedClass = BridgedClassDefinition( + nativeType: Response, + name: 'Response', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type)), - ), + '': (visitor, positionalArgs, namedArgs) { + return Response; + }, }, getters: { - 'stream': BridgeMethodDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($ByteStream.$type)), - ), - 'contentLength': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.int), - nullable: true, - ), - ), - ), - 'headers': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - ), - ), - ), - 'isRedirect': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - ), - 'persistentConnection': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - ), - 'reasonPhrase': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'statusCode': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - ), - ), - 'request': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($BaseRequest.$type, nullable: true), - ), - ), + 'statusCode': (visitor, target) => (target as Response).statusCode, + 'body': (visitor, target) => (target as Response).body, + 'headers': (visitor, target) => (target as Response).headers, + 'isRedirect': (visitor, target) => (target as Response).isRedirect, + 'reasonPhrase': (visitor, target) => (target as Response).reasonPhrase, + 'contentLength': (visitor, target) => (target as Response).contentLength, + 'bodyBytes': (visitor, target) => (target as Response).bodyBytes, + 'persistentConnection': + (visitor, target) => (target as Response).persistentConnection, + 'request': (visitor, target) => (target as Response).request, }, - wrap: true, ); - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'stream': - return $ByteStream.wrap($value.stream); - case 'contentLength': - final res = $value.contentLength; - return res == null ? const $null() : $int(res); - case 'headers': - return $Map.wrap($value.headers); - case 'isRedirect': - return $bool($value.isRedirect); - case 'persistentConnection': - return $bool($value.persistentConnection); - case 'reasonPhrase': - final res = $value.reasonPhrase; - return res == null ? const $null() : $String(res); - case 'statusCode': - return $int($value.statusCode); - case 'request': - final res = $value.request; - return res == null ? const $null() : $BaseRequest.wrap(res); - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - get $reified => $value; - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - _superclass.$setProperty(runtime, identifier, value); - } -} - -/// dart_eval wrapper for [ByteStream] -class $ByteStream implements $Instance { - $ByteStream.wrap(this.$value) : _superclass = $Object($value); - - @override - final ByteStream $value; - - /// Compile-time bridged type reference for [$ByteStream] - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'ByteStream'), - ); - - /// Compile-time bridged class declaration for [$ByteStream] - static const $declaration = BridgeClassDef( - BridgeClassType($type), + final streamedResponseBridgedClass = BridgedClassDefinition( + nativeType: StreamedResponse, + name: 'StreamedResponse', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type)), - ), + '': (visitor, positionalArgs, namedArgs) { + return StreamedResponse; + }, + }, + getters: { + 'statusCode': + (visitor, target) => (target as StreamedResponse).statusCode, + 'headers': (visitor, target) => (target as StreamedResponse).headers, + 'isRedirect': + (visitor, target) => (target as StreamedResponse).isRedirect, + 'reasonPhrase': + (visitor, target) => (target as StreamedResponse).reasonPhrase, + 'stream': (visitor, target) => (target as StreamedResponse).stream, + 'contentLength': + (visitor, target) => (target as StreamedResponse).contentLength, + 'persistentConnection': + (visitor, target) => + (target as StreamedResponse).persistentConnection, + 'request': (visitor, target) => (target as StreamedResponse).request, + }, + ); + final byteStreamBridgedClass = BridgedClassDefinition( + nativeType: ByteStream, + name: 'ByteStream', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return ByteStream; + }, }, - getters: {}, - wrap: true, ); - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - get $reified => $value; - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - _superclass.$setProperty(runtime, identifier, value); - } -} - -Map? _toMapString(Map<$Value, $Value>? value) { - return value?.map( - (key, value) => - MapEntry((key.$reified).toString(), (value.$reified).toString()), - ); -} - -Object? _toBodyObject(Object? value) { - Object? body; - if (value is Map<$Value, $Value>) { - body = value.map( - (key, value) => - MapEntry((key.$reified).toString(), (value.$reified).toString()), - ); - } else if (value is List<$Value>) { - body = value.map((e) => e.$reified).toList(); - } else { - body = value; - } - return body; -} - -extension FutureResponseExtension on Future { - Future onErrorMessage() { - onError((error, stackTrace) { - if (kDebugMode) { - print("Http error: $error"); - } - botToast(error.toString()); - throw error.toString(); - }); - return this; + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(baseRequestBridgedClass); + interpreter.registerBridgedClass(clientBridgedClass); + interpreter.registerBridgedClass(responseBridgedClass); + interpreter.registerBridgedClass(streamedResponseBridgedClass); + interpreter.registerBridgedClass(byteStreamBridgedClass); } } diff --git a/lib/eval/dart/bridge/m_chapter.dart b/lib/eval/dart/bridge/m_chapter.dart index 11f38c79..22c26246 100644 --- a/lib/eval/dart/bridge/m_chapter.dart +++ b/lib/eval/dart/bridge/m_chapter.dart @@ -1,147 +1,42 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/eval/model/m_chapter.dart'; -class $MChapter implements MChapter, $Instance { - $MChapter.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MChapter'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), +class MChapterBridge { + final mChapterBridgedClass = BridgedClassDefinition( + nativeType: MChapter, + name: 'MChapter', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [], - namedParams: [ - BridgeParameter( - 'name', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'dateUpload', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'scanlator', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - true, - ), - ], - ), - ), + '': (visitor, positionalArgs, namedArgs) { + return MChapter( + name: namedArgs.get('name'), + url: namedArgs.get('url'), + dateUpload: namedArgs.get('dateUpload'), + scanlator: namedArgs.get('scanlator'), + ); + }, }, - // Specify class fields - fields: { - 'name': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'url': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'dateUpload': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'scanlator': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), + getters: { + 'name': (visitor, target) => (target as MChapter).name, + 'url': (visitor, target) => (target as MChapter).url, + 'dateUpload': (visitor, target) => (target as MChapter).dateUpload, + 'scanlator': (visitor, target) => (target as MChapter).scanlator, + }, + setters: { + 'name': + (visitor, target, value) => + (target as MChapter).name = value as String?, + 'url': + (visitor, target, value) => + (target as MChapter).url = value as String?, + 'dateUpload': + (visitor, target, value) => + (target as MChapter).dateUpload = value as String?, + 'scanlator': + (visitor, target, value) => + (target as MChapter).scanlator = value as String?, }, - wrap: true, ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $MChapter.wrap( - MChapter( - name: args[0]?.$reified, - url: args[1]?.$reified, - dateUpload: args[2]?.$reified, - scanlator: args[3]?.$reified, - ), - ); + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(mChapterBridgedClass); } - - @override - final MChapter $value; - - @override - MChapter get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'name': - return $String($value.name!); - case 'url': - return $String($value.url!); - case 'dateUpload': - return $String($value.dateUpload!); - case 'scanlator': - return $String($value.scanlator!); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'name': - $value.name = value.$reified; - case 'url': - $value.url = value.$reified; - case 'dateUpload': - $value.dateUpload = value.$reified; - case 'scanlator': - $value.scanlator = value.$reified; - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String? get name => $value.name; - - @override - String? get url => $value.url; - - @override - String? get dateUpload => $value.dateUpload; - - @override - String? get scanlator => $value.scanlator; - @override - set name(String? name) {} - - @override - set url(String? url) {} - @override - set dateUpload(String? dateUpload) {} - - @override - set scanlator(String? scanlator) {} - - @override - Map toJson() => { - 'name': name, - 'url': url, - 'dateUpload': dateUpload, - 'scanlator': scanlator, - }; } diff --git a/lib/eval/dart/bridge/m_manga.dart b/lib/eval/dart/bridge/m_manga.dart index c1c16028..62f53e7f 100644 --- a/lib/eval/dart/bridge/m_manga.dart +++ b/lib/eval/dart/bridge/m_manga.dart @@ -1,222 +1,67 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; -import 'package:mangayomi/eval/dart/bridge/m_chapter.dart'; -import 'package:mangayomi/eval/dart/bridge/m_status.dart'; -import 'package:mangayomi/eval/model/m_chapter.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/eval/model/m_manga.dart'; import 'package:mangayomi/models/manga.dart'; -import 'package:mangayomi/utils/extensions/string_extensions.dart'; -class $MManga implements MManga, $Instance { - $MManga.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MManga'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), +class MMangaBridge { + final mMangaBridgedClass = BridgedClassDefinition( + nativeType: MManga, + name: 'MManga', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type), params: []), - ), - }, - // Specify class fields - fields: { - 'author': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'artist': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'status': BridgeFieldDef(BridgeTypeAnnotation($MStatus.$type)), - 'genre': BridgeFieldDef( - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)]), - ), - ), - 'imageUrl': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'name': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'link': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'description': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'chapters': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.list, [$MChapter.$type])), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $MManga.wrap(MManga()); - } - - @override - final MManga $value; - - @override - MManga get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'author': - return $String($value.author!); - case 'artist': - return $String($value.artist!); - case 'status': - return $MStatus.wrap($value.status!); - case 'genre': - return $List.wrap($value.genre!); - case 'imageUrl': - return $String($value.imageUrl!); - - case 'name': - return $String($value.name!); - case 'link': - return $String($value.link!); - case 'description': - return $String($value.description!); - case 'chapters': - return $List.wrap( - $value.chapters!.map((e) => $MChapter.wrap(e)).toList(), + '': (visitor, positionalArgs, namedArgs) { + return MManga( + artist: namedArgs.get('artist'), + author: namedArgs.get('author'), + description: namedArgs.get('description'), + genre: namedArgs.get('genre')?.cast(), + status: namedArgs.get('status'), + imageUrl: namedArgs.get('imageUrl'), + link: namedArgs.get('link'), + chapters: namedArgs.get('chapters')?.cast(), + name: namedArgs.get('name'), ); - - default: - return _superclass.$getProperty(runtime, identifier); - } + }, + }, + getters: { + 'name': (visitor, target) => (target as MManga).name, + 'artist': (visitor, target) => (target as MManga).artist, + 'author': (visitor, target) => (target as MManga).author, + 'description': (visitor, target) => (target as MManga).description, + 'genre': (visitor, target) => (target as MManga).genre, + 'status': (visitor, target) => (target as MManga).status, + 'imageUrl': (visitor, target) => (target as MManga).imageUrl, + 'link': (visitor, target) => (target as MManga).link, + 'chapters': (visitor, target) => (target as MManga).chapters, + }, + setters: { + 'name': + (visitor, target, value) => + (target as MManga).name = value as String?, + 'artist': + (visitor, target, value) => + (target as MManga).artist = value as String?, + 'author': + (visitor, target, value) => + (target as MManga).author = value as String?, + 'description': + (visitor, target, value) => + (target as MManga).description = value as String?, + 'genre': + (visitor, target, value) => + (target as MManga).genre = (value as List?)?.cast(), + 'status': + (visitor, target, value) => + (target as MManga).status = value as Status?, + 'imageUrl': + (visitor, target, value) => + (target as MManga).imageUrl = value as String?, + 'link': + (visitor, target, value) => (target as MManga).link = value as String, + 'chapters': + (visitor, target, value) => + (target as MManga).chapters = (value as List?)?.cast(), + }, + ); + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(mMangaBridgedClass); } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'author': - $value.author = value.$reified; - case 'artist': - $value.artist = value.$reified; - case 'status': - $value.status = value.$reified; - case 'genre': - $value.genre = - (value.$reified as List).map((e) => e.toString()).toList(); - case 'imageUrl': - $value.imageUrl = value.$reified; - case 'name': - $value.name = value.$reified; - case 'link': - $value.link = value.$reified; - case 'description': - $value.description = value.$reified; - case 'chapters': - $value.chapters = - (value.$reified as List) - .map( - (e) => MChapter( - dateUpload: e.dateUpload, - url: e.url, - name: e.name, - scanlator: e.scanlator, - ), - ) - .toList(); - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String? get author => $value.author; - - @override - String? get artist => $value.artist; - - @override - String? get description => $value.description; - - @override - String? get imageUrl => $value.imageUrl; - - @override - String? get name => $value.name; - - @override - String? get link => $value.link; - - @override - Status? get status => $value.status; - - @override - List? get chapters => $value.chapters; - - @override - List? get genre => $value.genre; - - @override - set author(String? author) { - // implement author - } - - @override - set artist(String? artist) { - // implement artist - } - - @override - set description(String? description) { - // implement description - } - - @override - set imageUrl(String? imageUrl) { - // implement imageUrl - } - - @override - set link(String? link) { - // implement link - } - - @override - set name(String? name) { - // implement name - } - - @override - set genre(List? genre) { - // implement genre - } - - @override - set status(Status? status) { - // implement status - } - - @override - set chapters(List? chapters) {} - - @override - Map toJson() => { - 'name': name, - 'link': link, - 'imageUrl': imageUrl, - 'description': description, - 'author': author, - 'artist': artist, - 'status': status.toString().substringAfter("."), - 'genre': genre, - 'chapters': chapters?.map((e) => e.toJson()).toList(), - }; } diff --git a/lib/eval/dart/bridge/m_pages.dart b/lib/eval/dart/bridge/m_pages.dart index b2a26543..8c27a69e 100644 --- a/lib/eval/dart/bridge/m_pages.dart +++ b/lib/eval/dart/bridge/m_pages.dart @@ -1,107 +1,33 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; -import 'package:mangayomi/eval/dart/bridge/m_manga.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/eval/model/m_manga.dart'; import 'package:mangayomi/eval/model/m_pages.dart'; -class $MPages implements MPages, $Instance { - $MPages.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MPages'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), +class MPagesBridge { + final mPageBridgedClass = BridgedClassDefinition( + nativeType: MPages, + name: 'MPages', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [ - BridgeParameter( - 'list', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [$MManga.$type]), - ), - false, - ), - BridgeParameter( - 'hasNextPage', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.bool), - nullable: true, - ), - true, - ), - ], - ), - ), + '': (visitor, positionalArgs, namedArgs) { + return MPages( + list: (positionalArgs[0] as List).map((e) => e as MManga).toList(), + hasNextPage: positionalArgs[1] as bool, + ); + }, }, - fields: { - 'list': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.list, [$MManga.$type])), - ), - 'hasNextPage': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool), nullable: true), - ), + getters: { + 'list': (visitor, target) => (target as MPages).list, + 'hasNextPage': (visitor, target) => (target as MPages).hasNextPage, + }, + setters: { + 'list': + (visitor, target, value) => + (target as MPages).list = (value as List).cast(), + 'hasNextPage': + (visitor, target, value) => + (target as MPages).hasNextPage = value as bool, }, - wrap: true, ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - List<$Value> list = args[0]!.$value; - return $MPages.wrap( - MPages( - list: list.map((e) => e as MManga).toList(), - hasNextPage: args[1]?.$value ?? false, - ), - ); + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(mPageBridgedClass); } - - @override - final MPages $value; - - @override - MPages get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'list': - return $List.wrap($value.list); - case 'hasNextPage': - return $bool($value.hasNextPage); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - return _superclass.$setProperty(runtime, identifier, value); - } - - @override - List get list => $value.list; - - @override - bool get hasNextPage => $value.hasNextPage; - - @override - set hasNextPage(bool hasNextPage) {} - - @override - set list(List list) {} - - @override - Map toJson() => { - 'list': list.map((v) => v.toJson()).toList(), - 'hasNextPage': hasNextPage, - }; } diff --git a/lib/eval/dart/bridge/m_provider.dart b/lib/eval/dart/bridge/m_provider.dart index 0b6218ad..09f649df 100644 --- a/lib/eval/dart/bridge/m_provider.dart +++ b/lib/eval/dart/bridge/m_provider.dart @@ -1,1762 +1,347 @@ -import 'dart:convert'; -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:flutter_qjs/flutter_qjs.dart'; -import 'package:mangayomi/eval/dart/bridge/document.dart'; -import 'package:mangayomi/eval/dart/bridge/filter.dart'; -import 'package:mangayomi/eval/dart/bridge/m_manga.dart'; -import 'package:mangayomi/eval/dart/bridge/m_pages.dart'; -import 'package:mangayomi/eval/dart/bridge/m_status.dart'; -import 'package:mangayomi/eval/dart/bridge/m_track.dart'; -import 'package:mangayomi/eval/dart/bridge/m_video.dart'; import 'package:mangayomi/eval/model/filter.dart'; import 'package:mangayomi/eval/model/m_bridge.dart'; -import 'package:mangayomi/eval/model/m_manga.dart'; -import 'package:mangayomi/eval/model/m_pages.dart'; import 'package:mangayomi/eval/model/m_provider.dart'; -import 'package:mangayomi/eval/javascript/http.dart'; -import 'package:mangayomi/models/video.dart'; import 'package:mangayomi/modules/browse/extension/providers/extension_preferences_providers.dart'; import 'package:mangayomi/utils/extensions/string_extensions.dart'; -import 'package:mangayomi/utils/log/log.dart'; -class $MProvider extends MProvider with $Bridge { - static $MProvider $construct( - Runtime runtime, - $Value? target, - List<$Value?> args, - ) => $MProvider(); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MProvider'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type, isAbstract: true), +class MProviderBridged { + final mProviderBridged = BridgedClassDefinition( + nativeType: MProvider, + name: 'MProvider', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type)), - ), + '': (visitor, positionalArgs, namedArgs) { + return MProvider; + }, }, getters: { - 'supportsLatest': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - ), - 'baseUrl': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - ), - ), - 'headers': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - nullable: true, - ), - ), - ), + 'supportsLatest': + (visitor, target) => (target as MProvider).supportsLatest, + 'baseUrl': (visitor, target) => (target as MProvider).baseUrl, + 'headers': (visitor, target) => (target as MProvider).headers, }, methods: { - 'getLatestUpdates': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [$MPages.$type]), - ), - params: [ - BridgeParameter( - 'page', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - ], - ), - ), - 'getPopular': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [$MPages.$type]), - ), - params: [ - BridgeParameter( - 'page', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - ], - ), - ), - 'search': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [$MPages.$type]), - ), - params: [ - BridgeParameter( - 'query', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'page', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - ], - ), - ), - 'getDetail': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [$MManga.$type]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'getPageList': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'getVideoList': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'getHtmlContent': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [BridgeTypeRef(CoreTypes.string)]), - ), - params: [ - BridgeParameter( - 'name', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'cleanHtmlContent': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [BridgeTypeRef(CoreTypes.string)]), - ), - params: [ - BridgeParameter( - 'html', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'getFilterList': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)]), - ), - params: [], - ), - ), - 'getSourcePreferences': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)]), - ), - params: [], - ), - ), - 'getPreferenceValue': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.dynamic)), - params: [ - BridgeParameter( - 'sourceId', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - BridgeParameter( - 'key', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'getPrefStringValue': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'sourceId', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - BridgeParameter( - 'key', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'value', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'setPrefStringValue': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.voidType)), - params: [ - BridgeParameter( - 'sourceId', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - BridgeParameter( - 'key', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'value', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'cryptoHandler': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'text', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'iv', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'secretKeyString', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'encrypt', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - false, - ), - ], - ), - ), - 'encryptAESCryptoJS': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'plainText', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'passphrase', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'decryptAESCryptoJS': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'encrypted', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'passphrase', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'deobfuscateJsPassword': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'inputString', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'sibnetExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'prefix', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, + 'getLatestUpdates': + (visitor, target, positionalArgs, namedArgs) => + (target as MProvider).getLatestUpdates(positionalArgs[0] as int), + 'getPopular': + (visitor, target, positionalArgs, namedArgs) => + (target as MProvider).getPopular(positionalArgs[0] as int), + 'getVideoList': + (visitor, target, positionalArgs, namedArgs) => + (target as MProvider).getVideoList(positionalArgs[0] as String), + 'search': + (visitor, target, positionalArgs, namedArgs) => + (target as MProvider).search( + positionalArgs[0] as String, + positionalArgs[1] as int, + positionalArgs[2] as FilterList, ), - true, - ), - ], - ), - ), - 'myTvExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'okruExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'voeExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'quality', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, + 'getDetail': + (visitor, target, positionalArgs, namedArgs) => + (target as MProvider).getDetail(positionalArgs[0] as String), + 'getPageList': + (visitor, target, positionalArgs, namedArgs) => + (target as MProvider).getPageList(positionalArgs[0] as String), + 'cleanHtmlContent': + (visitor, target, positionalArgs, namedArgs) => (target as MProvider) + .cleanHtmlContent(positionalArgs[0] as String), + 'getHtmlContent': + (visitor, target, positionalArgs, namedArgs) => + (target as MProvider).getHtmlContent( + positionalArgs[0] as String, + positionalArgs[1] as String, ), - true, - ), - ], - ), - ), - 'vidBomExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'streamlareExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'prefix', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'suffix', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'sendVidExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - false, - ), - BridgeParameter( - 'prefix', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'yourUploadExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - false, - ), - BridgeParameter( - 'name', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - false, - ), - BridgeParameter( - 'prefix', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - false, - ), - ], - ), - ), - 'quarkVideosExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'cookie', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'ucVideosExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'cookie', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'quarkFilesExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - ]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.string), - ]), - ), - false, - ), - BridgeParameter( - 'cookie', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'ucFilesExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - ]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.string), - ]), - ), - false, - ), - BridgeParameter( - 'cookie', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'substringAfter': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'text', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'pattern', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'substringBefore': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'text', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'pattern', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'substringBeforeLast': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'text', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'pattern', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'substringAfterLast': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'text', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'pattern', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'toVideo': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.dynamic)), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'quality', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'originalUrl', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - true, - ), - BridgeParameter( - 'subtitles', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.dynamic), - ]), - nullable: true, - ), - true, - ), - BridgeParameter( - 'audios', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.dynamic), - ]), - nullable: true, - ), - true, - ), - ], - ), - ), - 'jsonPathToString': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'source', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'expression', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'join', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'getMapValue': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'source', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'attr', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - namedParams: [ - BridgeParameter( - 'encode', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.bool), - nullable: true, - ), - true, - ), - ], - ), - ), - 'jsonPathToList': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)]), - ), - params: [ - BridgeParameter( - 'source', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'expression', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'type', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - ], - ), - ), - 'parseStatus': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($MStatus.$type), - params: [ - BridgeParameter( - 'status', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'statusList', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.dynamic), - ]), - ), - false, - ), - ], - ), - ), - 'parseDates': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)]), - ), - params: [ - BridgeParameter( - 'value', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.dynamic), - ]), - ), - false, - ), - BridgeParameter( - 'dateFormat', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'dateFormatLocale', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'xpath': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)]), - ), - params: [ - BridgeParameter( - 'html', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'xpath', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'gogoCdnExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'doodExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'quality', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - true, - ), - ], - ), - ), - 'streamTapeExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'quality', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - true, - ), - ], - ), - ), - 'mp4UploadExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - false, - ), - BridgeParameter( - 'prefix', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'suffix', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'streamWishExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'prefix', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'filemoonExtractor': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [ - BridgeTypeRef(CoreTypes.list, [$MVideo.$type]), - ]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'prefix', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - false, - ), - BridgeParameter( - 'suffix', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.string), - nullable: true, - ), - false, - ), - ], - ), - ), - 'getHtmlViaWebview': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [BridgeTypeRef(CoreTypes.string)]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'rule', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'unpackJs': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'code', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'unpackJsAndCombine': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'code', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'evalJs': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [BridgeTypeRef(CoreTypes.string)]), - ), - params: [ - BridgeParameter( - 'code', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - 'regExp': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'expression', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'source', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'replace', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'type', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - BridgeParameter( - 'group', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - ], - ), - ), - 'sortMapList': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'list', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.dynamic), - ]), - ), - false, - ), - BridgeParameter( - 'value', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'type', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - ], - ), - ), - 'parseHtml': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($MDocument.$type), - params: [ - BridgeParameter( - 'html', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - namedParams: [], - ), - isStatic: true, - ), - 'getUrlWithoutDomain': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - namedParams: [], - ), - isStatic: true, - ), - 'print': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.voidType)), - params: [ - BridgeParameter( - 'object', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.dynamic)), - false, - ), - ], - namedParams: [], - ), - isStatic: true, - ), - 'evaluateJavascriptViaWebview': BridgeMethodDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.future, [BridgeTypeRef(CoreTypes.string)]), - ), - params: [ - BridgeParameter( - 'url', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'headers', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - ), - false, - ), - BridgeParameter( - 'scripts', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.string), - ]), - ), - false, - ), - ], - ), - ), + 'getFilterList': + (visitor, target, positionalArgs, namedArgs) => + (target as MProvider).getFilterList(), + 'getSourcePreferences': + (visitor, target, positionalArgs, namedArgs) => + (target as MProvider).getSourcePreferences(), }, - bridge: true, ); - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $MProvider(); - } - - @override - $Value? $bridgeGet(String identifier) { - return switch (identifier) { - 'print' => $Function((_, __, List<$Value?> args) { - Logger.add(LoggerLevel.warning, "${args[0]!.$reified}"); - return null; - }), - 'evalJs' => $Function((_, __, List<$Value?> args) { - final runtime = getJavascriptRuntime(); - return $Future.wrap( - runtime - .evaluateAsync(args[0]!.$reified) - .then((value) => $String(value.stringResult)), - ); - }), - 'getUrlWithoutDomain' => $Function((_, __, List<$Value?> args) { - return $String((args[0]!.$value as String).getUrlWithoutDomain); - }), - 'parseHtml' => $Function((_, __, List<$Value?> args) { - final res = MBridge.parsHtml(args[0]!.$reified); - return $MDocument.wrap(res); - }), - 'getPreferenceValue' => $Function((_, __, List<$Value?> args) { - final value = getPreferenceValue(args[0]!.$reified, args[1]!.$reified); - if (value is String) { - return $String(value); - } else if (value is bool) { - return $bool(value); - } - return $List.wrap(value.map((e) => $String(e)).toList()); - }), - 'getPrefStringValue' => $Function((_, __, List<$Value?> args) { - final value = getSourcePreferenceStringValue( - args[0]!.$reified, - args[1]!.$reified, - args[2]!.$reified, - ); - return $String(value); - }), - 'setPrefStringValue' => $Function((_, __, List<$Value?> args) { - setSourcePreferenceStringValue( - args[0]!.$reified, - args[1]!.$reified, - args[2]!.$reified, - ); - return; - }), - "cryptoHandler" => $Function((_, __, List<$Value?> args) { - return $String( - MBridge.cryptoHandler( - args[0]!.$value, - args[1]!.$value, - args[2]!.$value, - args[3]!.$value, - ), - ); - }), - "encryptAESCryptoJS" => $Function((_, __, List<$Value?> args) { - return $String( - MBridge.encryptAESCryptoJS(args[0]!.$value, args[1]!.$value), - ); - }), - "decryptAESCryptoJS" => $Function((_, __, List<$Value?> args) { - return $String( - MBridge.decryptAESCryptoJS(args[0]!.$value, args[1]!.$value), - ); - }), - "deobfuscateJsPassword" => $Function((_, __, List<$Value?> args) { - return $String(MBridge.deobfuscateJsPassword(args[0]!.$value)); - }), - - /////////////////////////////////////////////////////////////////////// - "substringAfter" => $Function((_, __, List<$Value?> args) { - return $String( - MBridge.substringAfter(args[0]!.$value, args[1]!.$value), - ); - }), - "substringBefore" => $Function((_, __, List<$Value?> args) { - return $String( - MBridge.substringBefore(args[0]!.$value, args[1]!.$value), - ); - }), - "substringBeforeLast" => $Function((_, __, List<$Value?> args) { - return $String( - MBridge.substringBeforeLast(args[0]!.$value, args[1]!.$value), - ); - }), - "substringAfterLast" => $Function((_, __, List<$Value?> args) { - return $String( - MBridge.substringAfterLast(args[0]!.$value, args[1]!.$value), - ); - }), - - /////////////////////////////////////////////////////////////////////// - "sibnetExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.sibnetExtractor(args[0]!.$value, args[1]?.$value ?? "").then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(mProviderBridged); + interpreter.registertopLevelFunction( + 'getPreferenceValue', + (visitor, positionalArgs, namedArgs, _) => getPreferenceValue( + positionalArgs[0] as int, + positionalArgs[1] as String, ), - "myTvExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.myTvExtractor(args[0]!.$value).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'getPrefStringValue', + (visitor, positionalArgs, namedArgs, _) => getSourcePreferenceStringValue( + positionalArgs[0] as int, + positionalArgs[1] as String, + positionalArgs[2] as String, ), - "okruExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.okruExtractor(args[0]!.$value).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'cryptoHandler', + (visitor, positionalArgs, namedArgs, _) => MBridge.cryptoHandler( + positionalArgs[0] as String, + positionalArgs[1] as String, + positionalArgs[2] as String, + positionalArgs[3] as bool, ), - "voeExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.voeExtractor(args[0]!.$value, args[1]?.$value).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'encryptAESCryptoJS', + (visitor, positionalArgs, namedArgs, _) => MBridge.encryptAESCryptoJS( + positionalArgs[0] as String, + positionalArgs[1] as String, ), - "vidBomExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.vidBomExtractor(args[0]!.$value).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'decryptAESCryptoJS', + (visitor, positionalArgs, namedArgs, _) => MBridge.decryptAESCryptoJS( + positionalArgs[0] as String, + positionalArgs[1] as String, ), - "streamlareExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.streamlareExtractor( - args[0]!.$value, - args[1]?.$value, - args[2]?.$value, - ).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'deobfuscateJsPassword', + (visitor, positionalArgs, namedArgs, _) => + MBridge.deobfuscateJsPassword(positionalArgs[0] as String), + ); + interpreter.registertopLevelFunction( + 'sibnetExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.sibnetExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String, ), - "sendVidExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.sendVidExtractor( - args[0]!.$value, - args[1]?.$value, - args[2]?.$value, - ).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'myTvExtractor', + (visitor, positionalArgs, namedArgs, _) => + MBridge.myTvExtractor(positionalArgs[0] as String), + ); + interpreter.registertopLevelFunction( + 'okruExtractor', + (visitor, positionalArgs, namedArgs, _) => + MBridge.okruExtractor(positionalArgs[0] as String), + ); + interpreter.registertopLevelFunction( + 'voeExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.voeExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String?, ), - "yourUploadExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.yourUploadExtractor( - args[0]!.$value, - args[1]?.$value, - args[2]?.$value, - args[3]?.$value ?? "", - ).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'vidBomExtractor', + (visitor, positionalArgs, namedArgs, _) => + MBridge.vidBomExtractor(positionalArgs[0] as String), + ); + interpreter.registertopLevelFunction( + 'streamlareExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.streamlareExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String, + positionalArgs[2] as String, ), - "gogoCdnExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.gogoCdnExtractor(args[0]!.$value).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'sendVidExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.sendVidExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String?, + positionalArgs[2] as String, ), - "doodExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.doodExtractor(args[0]!.$value, args[1]?.$value).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'yourUploadExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.yourUploadExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String?, + positionalArgs[2] as String?, + positionalArgs[3] as String, ), - "streamTapeExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.streamTapeExtractor(args[0]!.$value, args[1]!.$value).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'quarkVideosExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.quarkVideosExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String, ), - "mp4UploadExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.mp4UploadExtractor( - args[0]!.$value, - args[1]!.$value, - args[2]?.$value, - args[3]!.$value, - ).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'ucVideosExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.ucVideosExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String, ), - "streamWishExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.streamWishExtractor(args[0]!.$value, args[1]!.$value).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'quarkFilesExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.quarkFilesExtractor( + (positionalArgs[0] as List).cast(), + positionalArgs[1] as String, ), - "filemoonExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.filemoonExtractor( - args[0]!.$value, - args[1]?.$value ?? "", - args[2]?.$value ?? "", - ).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'ucFilesExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.ucFilesExtractor( + (positionalArgs[0] as List).cast(), + positionalArgs[1] as String, ), - "quarkVideosExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.quarkVideosExtractor(args[0]!.$value, args[1]!.$value).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'substringAfter', + (visitor, positionalArgs, namedArgs, _) => MBridge.substringAfter( + positionalArgs[0] as String, + positionalArgs[1] as String, ), - "ucVideosExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.ucVideosExtractor(args[0]!.$value, args[1]!.$value).then( - (value) => $List.wrap(value.map((e) => _toMVideo(e)).toList()), - ), - ), + ); + interpreter.registertopLevelFunction( + 'substringBefore', + (visitor, positionalArgs, namedArgs, _) => MBridge.substringBefore( + positionalArgs[0] as String, + positionalArgs[1] as String, ), - "quarkFilesExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.quarkFilesExtractor(args[0]!.$value, args[1]!.$value).then(( - value, - ) { - return $List.wrap( - value - .map( - (e) => $Map.wrap({ - $String('name'): $String(e['name'] ?? ''), - $String('url'): $String(e['url'] ?? ''), - }), - ) - .toList(), - ); - }), - ), + ); + interpreter.registertopLevelFunction( + 'substringBeforeLast', + (visitor, positionalArgs, namedArgs, _) => MBridge.substringBeforeLast( + positionalArgs[0] as String, + positionalArgs[1] as String, ), - "ucFilesExtractor" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( - MBridge.ucFilesExtractor(args[0]!.$value, args[1]!.$value).then(( - value, - ) { - return $List.wrap( - value - .map( - (e) => $Map.wrap({ - $String('name'): $String(e['name'] ?? ''), - $String('url'): $String(e['url'] ?? ''), - }), - ) - .toList(), - ); - }), - ), + ); + interpreter.registertopLevelFunction( + 'substringAfterLast', + (visitor, positionalArgs, namedArgs, _) => MBridge.substringAfterLast( + positionalArgs[0] as String, + positionalArgs[1] as String, ), - "evaluateJavascriptViaWebview" => $Function( - (_, __, List<$Value?> args) => $Future.wrap( + ); + interpreter.registertopLevelFunction( + 'getMapValue', + (visitor, positionalArgs, namedArgs, _) => MBridge.getMapValue( + positionalArgs[0] as String, + positionalArgs[1] as String, + namedArgs.get('encode') ?? false, + ), + ); + interpreter.registertopLevelFunction( + 'parseStatus', + (visitor, positionalArgs, namedArgs, _) => MBridge.parseStatus( + positionalArgs[0] as String, + positionalArgs[1] as List, + ), + ); + interpreter.registertopLevelFunction( + 'parseDates', + (visitor, positionalArgs, namedArgs, _) => MBridge.parseDates( + positionalArgs[0] as List, + positionalArgs[1] as String, + positionalArgs[2] as String, + ), + ); + interpreter.registertopLevelFunction( + 'xpath', + (visitor, positionalArgs, namedArgs, _) => MBridge.xpath( + positionalArgs[0] as String, + positionalArgs[1] as String, + ), + ); + interpreter.registertopLevelFunction( + 'gogoCdnExtractor', + (visitor, positionalArgs, namedArgs, _) => + MBridge.gogoCdnExtractor(positionalArgs[0] as String), + ); + interpreter.registertopLevelFunction( + 'doodExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.doodExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String?, + ), + ); + interpreter.registertopLevelFunction( + 'streamTapeExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.streamTapeExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String?, + ), + ); + interpreter.registertopLevelFunction( + 'mp4UploadExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.mp4UploadExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String?, + positionalArgs[2] as String, + positionalArgs[3] as String, + ), + ); + interpreter.registertopLevelFunction( + 'streamWishExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.streamWishExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String, + ), + ); + interpreter.registertopLevelFunction( + 'filemoonExtractor', + (visitor, positionalArgs, namedArgs, _) => MBridge.filemoonExtractor( + positionalArgs[0] as String, + positionalArgs[1] as String, + positionalArgs[2] as String, + ), + ); + interpreter.registertopLevelFunction( + 'unpackJs', + (visitor, positionalArgs, namedArgs, _) => + MBridge.unpackJs(positionalArgs[0] as String), + ); + interpreter.registertopLevelFunction( + 'unpackJsAndCombine', + (visitor, positionalArgs, namedArgs, _) => + MBridge.unpackJsAndCombine(positionalArgs[0] as String), + ); + interpreter.registertopLevelFunction( + 'evalJs', + (visitor, positionalArgs, namedArgs, _) => + getJavascriptRuntime().evaluateAsync(positionalArgs[0] as String), + ); + interpreter.registertopLevelFunction( + 'regExp', + (visitor, positionalArgs, namedArgs, _) => MBridge.regExp( + positionalArgs[0] as String, + positionalArgs[1] as String, + positionalArgs[2] as String, + positionalArgs[3] as int, + positionalArgs[4] as int, + ), + ); + interpreter.registertopLevelFunction( + 'sortMapList', + (visitor, positionalArgs, namedArgs, _) => MBridge.sortMapList( + positionalArgs[0] as List, + positionalArgs[1] as String, + positionalArgs[2] as int, + ), + ); + interpreter.registertopLevelFunction( + 'parseHtml', + (visitor, positionalArgs, namedArgs, _) => + MBridge.parsHtml(positionalArgs[0] as String), + ); + interpreter.registertopLevelFunction( + 'getUrlWithoutDomain', + (visitor, positionalArgs, namedArgs, _) => + (positionalArgs[0] as String).getUrlWithoutDomain, + ); + interpreter.registertopLevelFunction( + 'evaluateJavascriptViaWebview', + (visitor, positionalArgs, namedArgs, _) => MBridge.evaluateJavascriptViaWebview( - args[0]!.$value, - (args[1]!.$value as Map).map( - (key, value) => - MapEntry(key.$reified.toString(), value.$reified.toString()), - ), - (args[2]!.$value as List) - .map((e) => e.$reified.toString()) - .toList(), - ).then((value) { - return $String(value); - }), - ), - ), - "toVideo" => $Function((_, __, List<$Value?> args) { - final value = MBridge.toVideo( - args[0]!.$value, - args[1]!.$value, - args[2]!.$value, - args[3]?.$value, - args[4]?.$value, - args[5]?.$value, - ); - return _toMVideo(value); - }), - - /////////////////////////////////////////////////////////////////////// - "unpackJsAndCombine" => MBridge.unpackJsAndCombine, - "unpackJs" => MBridge.unpackJs, - "regExp" => $Function((_, __, List<$Value?> args) { - return $String( - MBridge.regExp( - args[0]!.$value, - args[1]!.$value, - args[2]!.$value, - args[3]!.$value, - args[4]!.$value, + positionalArgs[0] as String, + (positionalArgs[1] as Map).cast(), + (positionalArgs[2] as List).cast(), + time: namedArgs.get('time') ?? 30, ), - ); - }), - "jsonPathToString" => MBridge.jsonPathToString, - "jsonPathToList" => MBridge.jsonPathToList, - "sortMapList" => $Function((_, __, List<$Value?> args) { - List list = args[0]!.$value; - if (list is $List) { - list = list.$reified; - } - list = - list.map((e) { - if (e is $Map<$Value?, $Value?>) { - return e.$reified; - } - return e; - }).toList(); - return $String( - jsonEncode( - MBridge.sortMapList(list, args[1]!.$value, args[2]!.$value), - ), - ); - }), - "getMapValue" => $Function((_, __, List<$Value?> args) { - return $String( - MBridge.getMapValue( - args[0]!.$value, - args[1]!.$value, - args[2]?.$value ?? false, - ), - ); - }), - "parseStatus" => $Function((_, __, List<$Value?> args) { - List argss2 = []; - if (args[1]!.$value is List<$Value>) { - argss2 = args[1]!.$value as List<$Value>; - } else { - argss2 = args[1]!.$value as List; - } - return $MStatus.wrap(MBridge.parseStatus(args[0]!.$value, argss2)); - }), - "parseDates" => $Function((_, __, List<$Value?> args) { - return $List.wrap( - MBridge.parseDates( - args[0]!.$value, - args[1]!.$value, - args[2]!.$value, - ).map((e) => $String(e)).toList(), - ); - }), - "xpath" => MBridge.xpath, - _ => $Function((_, __, List<$Value?> args) { - throw UnimplementedError('Unknown property $identifier'); - }), - }; - } - - @override - void $bridgeSet(String identifier, $Value value) { - throw UnimplementedError(); - } - - @override - bool get supportsLatest => $_get('supportsLatest'); - - @override - String? get baseUrl => $_get('baseUrl'); - - @override - Future getDetail(String url) async => - await $_invoke('getDetail', [$String(url)]); - - @override - Future getLatestUpdates(int page) async => - await $_invoke('getLatestUpdates', [$int(page)]); - - @override - Future getPopular(int page) async => - await $_invoke('getPopular', [$int(page)]); - - @override - Future search(String query, int page, FilterList filterList) async => - await $_invoke('search', [ - $String(query), - $int(page), - $FilterList.wrap(FilterList(_toValueList(filterList.filters))), - ]); - - @override - Future> getPageList(String url) async { - final res = await $_invoke('getPageList', [$String(url)]); - List list = []; - if (res is $List) { - list = res.$reified; - } else { - list = res; - } - - return list.map((e) => (e is $Value ? e.$reified : e)).toList(); - } - - @override - List getFilterList() { - final res = $_invoke('getFilterList', []); - if (res is $List) { - return res.$reified; - } - return res; - } - - @override - List getSourcePreferences() { - final res = $_invoke('getSourcePreferences', []); - if (res is $List) { - return res.$reified; - } - return res; - } - - @override - Future> getVideoList(String url) async { - final res = await $_invoke('getVideoList', [$String(url)]); - List list = []; - if (res is $List) { - list = res.$reified; - } else { - list = res; - } - - return list.map((e) => (e is $Value ? e.$reified : e) as Video).toList(); - } - - @override - Future getHtmlContent(String name, String url) async => - await $_invoke('getHtmlContent', [$String(name), $String(url)]); - - @override - Future cleanHtmlContent(String html) async => - await $_invoke('cleanHtmlContent', [$String(html)]); - - @override - Map get headers { - try { - return ($_get('headers') as Map).toMapStringString!; - } catch (e) { - return {}; - } - } - - $MVideo _toMVideo(Video e) => $MVideo.wrap( - Video(e.url, e.quality, e.originalUrl) - ..headers = e.headers - ..subtitles = $List.wrap( - e.subtitles == null - ? [] - : e.subtitles! - .map((t) => $MTrack.wrap(Track(file: t.file, label: t.label))) - .toList(), - ) - ..audios = $List.wrap( - e.audios == null - ? [] - : e.audios! - .map((t) => $MTrack.wrap(Track(file: t.file, label: t.label))) - .toList(), - ), - ); - - _toValueList(List filters) { - return (filters).map((e) { - if (e is SelectFilter) { - return $SelectFilter.wrap( - SelectFilter( - e.type, - e.name, - e.state, - _toValueList(e.values), - e.typeName, - ), - ); - } else if (e is TextFilter) { - return $TextFilter.wrap(e); - } else if (e is HeaderFilter) { - return $HeaderFilter.wrap(e); - } else if (e is CheckBoxFilter) { - return $CheckBoxFilter.wrap(e); - } else if (e is TriStateFilter) { - return $TriStateFilter.wrap(e); - } else if (e is SeparatorFilter) { - return $SeparatorFilter.wrap(e); - } else if (e is SortFilter) { - return $SortFilter.wrap( - SortFilter( - e.type, - e.name, - e.state, - _toValueList(e.values), - e.typeName, - ), - ); - } else if (e is SortState) { - return $SortState.wrap(e); - } else if (e is CheckBoxFilter) { - return $CheckBoxFilter.wrap(e); - } else if (e is SelectFilterOption) { - return $SelectFilterOption.wrap(e); - } else if (e is GroupFilter) { - return $GroupFilter.wrap( - GroupFilter(e.type, e.name, _toValueList(e.state), e.typeName), - ); - } - return e; - }).toList(); + ); } } diff --git a/lib/eval/dart/bridge/m_source.dart b/lib/eval/dart/bridge/m_source.dart index 3c5b7bb2..26936d79 100644 --- a/lib/eval/dart/bridge/m_source.dart +++ b/lib/eval/dart/bridge/m_source.dart @@ -1,211 +1,44 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/eval/model/m_source.dart'; -class $MSource implements MSource, $Instance { - $MSource.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MSource'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), +class MSourceBridge { + final mSourceBridgedClass = BridgedClassDefinition( + nativeType: MSource, + name: 'MSource', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type), params: []), - ), + '': (visitor, positionalArgs, namedArgs) { + return MSource( + id: namedArgs.get('id'), + name: namedArgs.get('name'), + baseUrl: namedArgs.get('baseUrl'), + lang: namedArgs.get('lang'), + isFullData: namedArgs.get('isFullData'), + hasCloudflare: namedArgs.get('hasCloudflare'), + dateFormat: namedArgs.get('dateFormat'), + dateFormatLocale: namedArgs.get('dateFormatLocale'), + apiUrl: namedArgs.get('apiUrl'), + additionalParams: namedArgs.get('additionalParams'), + notes: namedArgs.get('notes'), + ); + }, }, - fields: { - 'id': BridgeFieldDef(BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int))), - 'name': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'baseUrl': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'lang': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'isFullData': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - 'hasCloudflare': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - 'dateFormat': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'dateFormatLocale': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'apiUrl': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'additionalParams': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'notes': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), + getters: { + 'id': (visitor, target) => (target as MSource).id, + 'name': (visitor, target) => (target as MSource).name, + 'baseUrl': (visitor, target) => (target as MSource).baseUrl, + 'lang': (visitor, target) => (target as MSource).lang, + 'isFullData': (visitor, target) => (target as MSource).isFullData, + 'hasCloudflare': (visitor, target) => (target as MSource).hasCloudflare, + 'dateFormat': (visitor, target) => (target as MSource).dateFormat, + 'dateFormatLocale': + (visitor, target) => (target as MSource).dateFormatLocale, + 'apiUrl': (visitor, target) => (target as MSource).apiUrl, + 'additionalParams': + (visitor, target) => (target as MSource).additionalParams, + 'notes': (visitor, target) => (target as MSource).notes, }, - wrap: true, ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $MSource.wrap(MSource()); + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(mSourceBridgedClass); } - - @override - final MSource $value; - - @override - MSource get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'id': - return $int($value.id!); - case 'name': - return $String($value.name!); - case 'baseUrl': - return $String($value.baseUrl!); - case 'lang': - return $String($value.lang!); - case 'isFullData': - return $bool($value.isFullData!); - case 'hasCloudflare': - return $bool($value.hasCloudflare!); - case 'dateFormat': - return $String($value.dateFormat!); - case 'dateFormatLocale': - return $String($value.dateFormatLocale!); - case 'apiUrl': - return $String($value.apiUrl!); - case 'additionalParams': - return $String($value.additionalParams!); - case 'notes': - return $String($value.notes!); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'id': - $value.id = value.$reified; - case 'name': - $value.name = value.$reified; - case 'baseUrl': - $value.baseUrl = value.$reified; - case 'lang': - $value.lang = value.$reified; - case 'isFullData': - $value.isFullData = value.$reified; - case 'hasCloudflare': - $value.hasCloudflare = value.$reified; - case 'dateFormat': - $value.dateFormat = value.$reified; - case 'dateFormatLocale': - $value.dateFormatLocale = value.$reified; - case 'apiUrl': - $value.apiUrl = value.$reified; - case 'additionalParams': - $value.additionalParams = value.$reified; - case 'notes': - $value.notes = value.$reified; - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String? get apiUrl => $value.apiUrl; - - @override - String? get baseUrl => $value.baseUrl; - - @override - String? get dateFormat => $value.dateFormat; - - @override - String? get dateFormatLocale => $value.dateFormatLocale; - - @override - bool? get hasCloudflare => $value.hasCloudflare; - - @override - int? get id => $value.id; - - @override - bool? get isFullData => $value.isFullData; - - @override - String? get lang => $value.lang; - - @override - String? get name => $value.name; - - @override - String? get additionalParams => $value.additionalParams; - - @override - String? get notes => $value.notes; - - @override - set apiUrl(String? apiUrl) {} - - @override - set baseUrl(String? baseUrl) {} - - @override - set dateFormat(String? dateFormat) {} - - @override - set dateFormatLocale(String? dateFormatLocale) {} - - @override - set hasCloudflare(bool? hasCloudflare) {} - - @override - set id(int? id) {} - - @override - set isFullData(bool? isFullData) {} - - @override - set lang(String? lang) {} - - @override - set name(String? name) {} - - @override - set additionalParams(String? additionalParams) {} - - @override - set notes(String? notes) {} - - @override - Map toJson() => { - 'apiUrl': apiUrl, - 'baseUrl': baseUrl, - 'dateFormat': dateFormat, - 'dateFormatLocale': dateFormatLocale, - 'hasCloudflare': hasCloudflare, - 'id': id, - 'isFullData': isFullData, - 'lang': lang, - 'name': name, - 'additionalParams': additionalParams, - 'notes': notes, - }; } diff --git a/lib/eval/dart/bridge/m_status.dart b/lib/eval/dart/bridge/m_status.dart index c8bc6004..d58d4f02 100644 --- a/lib/eval/dart/bridge/m_status.dart +++ b/lib/eval/dart/bridge/m_status.dart @@ -1,57 +1,12 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/models/manga.dart'; -class $MStatus implements $Instance { - static $MStatus $wrap(Runtime runtime, $Value? target, List<$Value?> args) => - $MStatus.wrap(args[0]!.$value); - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MStatus'), +class MStatusBridge { + final statusDefinition = BridgedEnumDefinition( + name: 'MStatus', + values: Status.values, ); - static const $declaration = BridgeEnumDef( - $type, - values: [ - 'ongoing', - 'completed', - 'canceled', - 'unknown', - 'onHiatus', - 'publishingFinished', - ], - methods: {}, - getters: {}, - setters: {}, - fields: {}, - ); - static final $values = Status.values.asNameMap().map( - (key, value) => MapEntry(key, $MStatus.wrap(value)), - ); - const $MStatus.wrap(this.$value); - - @override - final Status $value; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'index': - return $int($value.index); - case 'name': - return $String($value.name); - case 'hashCode': - return $int($value.hashCode); - } - throw UnimplementedError(); + void registerBridgedEnum(D4rt interpreter) { + interpreter.registerBridgedEnum(statusDefinition); } - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - throw UnimplementedError('Cannot set property on an enum'); - } - - @override - get $reified => $value; - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); } diff --git a/lib/eval/dart/bridge/m_track.dart b/lib/eval/dart/bridge/m_track.dart index e5090b07..454a0319 100644 --- a/lib/eval/dart/bridge/m_track.dart +++ b/lib/eval/dart/bridge/m_track.dart @@ -1,88 +1,31 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/models/video.dart'; -class $MTrack implements Track, $Instance { - $MTrack.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MTrack'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), +class MTrackBridge { + final mTrackBridgedClass = BridgedClassDefinition( + nativeType: Track, + name: 'MTrack', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type)), - ), + '': (visitor, positionalArgs, namedArgs) { + return Track( + file: namedArgs.get('file'), + label: namedArgs.get('label'), + ); + }, }, - // Specify class fields - fields: { - 'file': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'label': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), + getters: { + 'file': (visitor, target) => (target as Track).file, + 'label': (visitor, target) => (target as Track).label, + }, + setters: { + 'file': + (visitor, target, value) => (target as Track).file = value as String?, + 'label': + (visitor, target, value) => + (target as Track).label = value as String?, }, - wrap: true, ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $MTrack.wrap(Track()); - } - - @override - final Track $value; - - @override - Track get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'file': - return $String($value.file!); - case 'label': - return $String($value.label!); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'file': - $value.file = value.$reified; - case 'label': - $value.label = value.$reified; - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String? get file => $value.file; - - @override - String? get label => $value.label; - - @override - set file(String? file) {} - - @override - set label(String? label) {} - - @override - Map toJson() { - throw UnimplementedError(); + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(mTrackBridgedClass); } } diff --git a/lib/eval/dart/bridge/m_video.dart b/lib/eval/dart/bridge/m_video.dart index 74739099..9efd059e 100644 --- a/lib/eval/dart/bridge/m_video.dart +++ b/lib/eval/dart/bridge/m_video.dart @@ -1,164 +1,51 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; -import 'package:mangayomi/eval/dart/bridge/m_track.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/models/video.dart'; -class $MVideo implements Video, $Instance { - $MVideo.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MVideo'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), +class MVideoBridge { + final mVideoBridgedClass = BridgedClassDefinition( + nativeType: Video, + name: 'MVideo', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef(returns: BridgeTypeAnnotation($type)), - ), + '': (visitor, positionalArgs, namedArgs) { + return Video( + positionalArgs.get(0) ?? '', + positionalArgs.get(1) ?? '', + positionalArgs.get(2) ?? '', + headers: namedArgs.get('headers')?.cast(), + subtitles: namedArgs.get?>('subtitles'), + audios: namedArgs.get?>('audios'), + ); + }, }, - // Specify class fields - fields: { - 'url': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'quality': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'originalUrl': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'headers': BridgeFieldDef( - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.map, [ - BridgeTypeRef(CoreTypes.string), - BridgeTypeRef(CoreTypes.string), - ]), - nullable: true, - ), - ), - 'subtitles': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.list, [$MTrack.$type])), - ), - 'audios': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.list, [$MTrack.$type])), - ), + getters: { + 'url': (visitor, target) => (target as Video).url, + 'quality': (visitor, target) => (target as Video).quality, + 'originalUrl': (visitor, target) => (target as Video).originalUrl, + 'headers': (visitor, target) => (target as Video).headers, + 'subtitles': (visitor, target) => (target as Video).subtitles, + 'audios': (visitor, target) => (target as Video).audios, + }, + setters: { + 'url': + (visitor, target, value) => (target as Video).url = value as String, + 'quality': + (visitor, target, value) => + (target as Video).quality = value as String, + 'originalUrl': + (visitor, target, value) => + (target as Video).originalUrl = value as String, + 'headers': + (visitor, target, value) => + (target as Video).headers = (value as Map?)?.cast(), + 'subtitles': + (visitor, target, value) => + (target as Video).subtitles = (value as List?)?.cast(), + 'audios': + (visitor, target, value) => + (target as Video).audios = (value as List?)?.cast(), }, - wrap: true, ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $MVideo.wrap(Video("", "", "")); - } - - @override - final Video $value; - - @override - Video get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'url': - return $String($value.url); - case 'quality': - return $String($value.quality); - case 'originalUrl': - return $String($value.originalUrl); - case 'headers': - return $Map.wrap($value.headers ?? {}); - case 'subtitles': - return $List.wrap( - $value.subtitles! - .map((e) => $MTrack.wrap(Track(file: e.file, label: e.label))) - .toList(), - ); - case 'audios': - return $List.wrap( - $value.audios! - .map((e) => $MTrack.wrap(Track(file: e.file, label: e.label))) - .toList(), - ); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - case 'url': - $value.url = value.$reified; - case 'quality': - $value.quality = value.$reified; - case 'originalUrl': - $value.originalUrl = value.$reified; - case 'headers': - $value.headers = (value.$reified as Map).map( - (key, value) => MapEntry(key.toString(), value.toString()), - ); - case 'subtitles': - $value.subtitles = - (value.$reified as List) - .map((e) => Track(file: e.file, label: e.label)) - .toList(); - - case 'audios': - $value.audios = - (value.$reified as List) - .map((e) => Track(file: e.file, label: e.label)) - .toList(); - - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - String get url => $value.url; - - @override - List? get subtitles => $value.subtitles; - - @override - List? get audios => $value.audios; - - @override - String get quality => $value.quality; - - @override - Map? get headers => $value.headers; - - @override - String get originalUrl => $value.originalUrl; - - @override - set url(String? url) {} - - @override - set quality(String? quality) {} - - @override - set headers(Map? headers) {} - - @override - set originalUrl(String? originalUrl) {} - - @override - set subtitles(List? subtitles) {} - - @override - set audios(List? audios) {} - - @override - Map toJson() { - throw UnimplementedError(); + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(mVideoBridgedClass); } } diff --git a/lib/eval/dart/bridge/registrer.dart b/lib/eval/dart/bridge/registrer.dart new file mode 100644 index 00000000..5e024fe5 --- /dev/null +++ b/lib/eval/dart/bridge/registrer.dart @@ -0,0 +1,32 @@ +import 'package:d4rt/d4rt.dart'; +import 'package:mangayomi/eval/dart/bridge/document.dart'; +import 'package:mangayomi/eval/dart/bridge/element.dart'; +import 'package:mangayomi/eval/dart/bridge/filter.dart'; +import 'package:mangayomi/eval/dart/bridge/http.dart'; +import 'package:mangayomi/eval/dart/bridge/m_chapter.dart'; +import 'package:mangayomi/eval/dart/bridge/m_manga.dart'; +import 'package:mangayomi/eval/dart/bridge/m_pages.dart'; +import 'package:mangayomi/eval/dart/bridge/m_provider.dart'; +import 'package:mangayomi/eval/dart/bridge/m_source.dart'; +import 'package:mangayomi/eval/dart/bridge/m_status.dart'; +import 'package:mangayomi/eval/dart/bridge/m_track.dart'; +import 'package:mangayomi/eval/dart/bridge/m_video.dart'; +import 'package:mangayomi/eval/dart/bridge/source_preference.dart'; + +class RegistrerBridge { + static void registerBridge(D4rt interpreter) { + MDocumentBridge().registerBridgedClasses(interpreter); + MElementBridge().registerBridgedClasses(interpreter); + FilterBridge().registerBridgedClasses(interpreter); + HttpBridge().registerBridgedClasses(interpreter); + MMangaBridge().registerBridgedClasses(interpreter); + MChapterBridge().registerBridgedClasses(interpreter); + MPagesBridge().registerBridgedClasses(interpreter); + MProviderBridged().registerBridgedClasses(interpreter); + MSourceBridge().registerBridgedClasses(interpreter); + MStatusBridge().registerBridgedEnum(interpreter); + MTrackBridge().registerBridgedClasses(interpreter); + MVideoBridge().registerBridgedClasses(interpreter); + SourcePreferenceBridge().registerBridgedClasses(interpreter); + } +} diff --git a/lib/eval/dart/bridge/source_preference.dart b/lib/eval/dart/bridge/source_preference.dart index 416095c6..8d94c1f5 100644 --- a/lib/eval/dart/bridge/source_preference.dart +++ b/lib/eval/dart/bridge/source_preference.dart @@ -1,947 +1,185 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; -import 'package:isar/isar.dart'; +import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/eval/model/source_preference.dart'; -class $CheckBoxPreference implements SourcePreference, $Instance { - $CheckBoxPreference.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'CheckBoxPreference'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), +// EditTextPreference +class SourcePreferenceBridge { + final checkBoxPreferenceBridgedClass = BridgedClassDefinition( + nativeType: CheckBoxPreference, + name: 'CheckBoxPreference', constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [], - namedParams: [ - BridgeParameter( - 'key', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'title', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'summary', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'value', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - false, - ), - ], - ), - ), + '': (visitor, positionalArgs, namedArgs) { + return SourcePreference( + key: namedArgs.get('key'), + checkBoxPreference: CheckBoxPreference( + title: namedArgs.get('title'), + summary: namedArgs.get('summary'), + value: namedArgs.get('value'), + ), + ); + }, }, - fields: { - 'key': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'title': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'summary': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'value': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), + getters: { + 'key': (visitor, target) => (target as SourcePreference).key, + 'title': + (visitor, target) => + (target as SourcePreference).checkBoxPreference?.title, + 'summary': + (visitor, target) => + (target as SourcePreference).checkBoxPreference?.summary, + 'value': + (visitor, target) => + (target as SourcePreference).checkBoxPreference?.value, + }, + ); + final switchPreferenceCompatBridgedClass = BridgedClassDefinition( + nativeType: SwitchPreferenceCompat, + name: 'SwitchPreferenceCompat', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return SourcePreference( + key: namedArgs.get('key'), + switchPreferenceCompat: SwitchPreferenceCompat( + title: namedArgs.get('title'), + summary: namedArgs.get('summary'), + value: namedArgs.get('value'), + ), + ); + }, + }, + getters: { + 'key': (visitor, target) => (target as SourcePreference).key, + 'title': + (visitor, target) => + (target as SourcePreference).switchPreferenceCompat?.title, + 'summary': + (visitor, target) => + (target as SourcePreference).switchPreferenceCompat?.summary, + 'value': + (visitor, target) => + (target as SourcePreference).switchPreferenceCompat?.value, + }, + ); + final listPreferenceBridgedClass = BridgedClassDefinition( + nativeType: ListPreference, + name: 'ListPreference', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return SourcePreference( + key: namedArgs.get('key'), + listPreference: ListPreference( + title: namedArgs.get('title'), + summary: namedArgs.get('summary'), + valueIndex: namedArgs.get('valueIndex'), + entries: namedArgs.get('entries')?.cast(), + entryValues: namedArgs.get('entryValues')?.cast(), + ), + ); + }, + }, + getters: { + 'key': (visitor, target) => (target as SourcePreference).key, + 'title': + (visitor, target) => + (target as SourcePreference).listPreference?.title, + 'summary': + (visitor, target) => + (target as SourcePreference).listPreference?.summary, + 'value': + (visitor, target) => + (target as SourcePreference).listPreference?.valueIndex, + 'entries': + (visitor, target) => + (target as SourcePreference).listPreference?.entries, + 'entryValues': + (visitor, target) => + (target as SourcePreference).listPreference?.entryValues, }, - wrap: true, ); - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $CheckBoxPreference.wrap( - SourcePreference( - key: args[0]!.$value, - checkBoxPreference: CheckBoxPreference( - title: args[1]!.$value, - summary: args[2]!.$value, - value: args[3]!.$value, - ), - ), - ); - } + final multiSelectListPreferenceBridgedClass = BridgedClassDefinition( + nativeType: MultiSelectListPreference, + name: 'MultiSelectListPreference', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return SourcePreference( + key: namedArgs.get('key'), + multiSelectListPreference: MultiSelectListPreference( + title: namedArgs.get('title'), + summary: namedArgs.get('summary'), + entries: namedArgs.get('entries')?.cast(), + entryValues: namedArgs.get('entryValues')?.cast(), + values: namedArgs.get('values')?.cast(), + ), + ); + }, + }, + getters: { + 'key': (visitor, target) => (target as SourcePreference).key, + 'title': + (visitor, target) => + (target as SourcePreference).multiSelectListPreference?.title, + 'summary': + (visitor, target) => + (target as SourcePreference).multiSelectListPreference?.summary, + 'values': + (visitor, target) => + (target as SourcePreference).multiSelectListPreference?.values, + 'entries': + (visitor, target) => + (target as SourcePreference).multiSelectListPreference?.entries, + 'entryValues': + (visitor, target) => + (target as SourcePreference) + .multiSelectListPreference + ?.entryValues, + }, + ); + final editTextPreferenceBridgedClass = BridgedClassDefinition( + nativeType: EditTextPreference, + name: 'EditTextPreference', + constructors: { + '': (visitor, positionalArgs, namedArgs) { + return SourcePreference( + key: namedArgs.get('key'), + editTextPreference: EditTextPreference( + title: namedArgs.get('title'), + summary: namedArgs.get('summary'), + value: namedArgs.get('value'), + dialogTitle: namedArgs.get('dialogTitle'), + dialogMessage: namedArgs.get('dialogMessage'), + text: namedArgs.get('text'), + ), + ); + }, + }, + getters: { + 'key': (visitor, target) => (target as SourcePreference).key, + 'title': + (visitor, target) => + (target as SourcePreference).editTextPreference?.title, + 'summary': + (visitor, target) => + (target as SourcePreference).editTextPreference?.summary, + 'value': + (visitor, target) => + (target as SourcePreference).editTextPreference?.value, + 'dialogTitle': + (visitor, target) => + (target as SourcePreference).editTextPreference?.dialogTitle, + 'dialogMessage': + (visitor, target) => + (target as SourcePreference).editTextPreference?.dialogMessage, + 'text': + (visitor, target) => + (target as SourcePreference).editTextPreference?.text, + }, + ); - @override - final SourcePreference $value; - - @override - SourcePreference get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'key': - return $String($value.key!); - case 'title': - return $String($value.checkBoxPreference!.title!); - case 'summary': - return $String($value.checkBoxPreference!.summary!); - case 'value': - return $bool($value.checkBoxPreference!.value!); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - CheckBoxPreference? get checkBoxPreference => $value.checkBoxPreference; - - @override - EditTextPreference? get editTextPreference => $value.editTextPreference; - - @override - ListPreference? get listPreference => $value.listPreference; - - @override - MultiSelectListPreference? get multiSelectListPreference => - $value.multiSelectListPreference; - - @override - SwitchPreferenceCompat? get switchPreferenceCompat => - $value.switchPreferenceCompat; - - @override - Id? get id => $value.id; - - @override - String? get key => $value.key; - - @override - int? get sourceId => $value.sourceId; - - @override - set checkBoxPreference(CheckBoxPreference? checkBoxPreference) {} - - @override - set editTextPreference(EditTextPreference? editTextPreference) {} - - @override - set id(Id? id) {} - - @override - set key(String? key) {} - - @override - set listPreference(ListPreference? listPreference) {} - - @override - set multiSelectListPreference( - MultiSelectListPreference? multiSelectListPreference, - ) {} - - @override - set sourceId(int? sourceId) {} - - @override - set switchPreferenceCompat(SwitchPreferenceCompat? switchPreferenceCompat) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $SwitchPreferenceCompat implements SourcePreference, $Instance { - $SwitchPreferenceCompat.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec( - 'package:mangayomi/bridge_lib.dart', - 'SwitchPreferenceCompat', - ), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [], - namedParams: [ - BridgeParameter( - 'key', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'title', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'summary', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'value', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - false, - ), - ], - ), - ), - }, - fields: { - 'key': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'title': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'summary': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'value': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $SwitchPreferenceCompat.wrap( - SourcePreference( - key: args[0]!.$value, - switchPreferenceCompat: SwitchPreferenceCompat( - title: args[1]!.$value, - summary: args[2]!.$value, - value: args[3]!.$value, - ), - ), - ); - } - - @override - final SourcePreference $value; - - @override - SourcePreference get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'key': - return $String($value.key!); - case 'title': - return $String($value.checkBoxPreference!.title!); - case 'summary': - return $String($value.checkBoxPreference!.summary!); - case 'value': - return $bool($value.checkBoxPreference!.value!); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - CheckBoxPreference? get checkBoxPreference => $value.checkBoxPreference; - - @override - EditTextPreference? get editTextPreference => $value.editTextPreference; - - @override - ListPreference? get listPreference => $value.listPreference; - - @override - MultiSelectListPreference? get multiSelectListPreference => - $value.multiSelectListPreference; - - @override - SwitchPreferenceCompat? get switchPreferenceCompat => - $value.switchPreferenceCompat; - - @override - Id? get id => $value.id; - - @override - String? get key => $value.key; - - @override - int? get sourceId => $value.sourceId; - - @override - set checkBoxPreference(CheckBoxPreference? checkBoxPreference) {} - - @override - set editTextPreference(EditTextPreference? editTextPreference) {} - - @override - set id(Id? id) {} - - @override - set key(String? key) {} - - @override - set listPreference(ListPreference? listPreference) {} - - @override - set multiSelectListPreference( - MultiSelectListPreference? multiSelectListPreference, - ) {} - - @override - set sourceId(int? sourceId) {} - - @override - set switchPreferenceCompat(SwitchPreferenceCompat? switchPreferenceCompat) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $ListPreference implements SourcePreference, $Instance { - $ListPreference.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'ListPreference'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [], - namedParams: [ - BridgeParameter( - 'key', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'title', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'summary', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'valueIndex', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - false, - ), - BridgeParameter( - 'entries', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.string), - ]), - ), - false, - ), - BridgeParameter( - 'entryValues', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.string), - ]), - ), - false, - ), - ], - ), - ), - }, - fields: { - 'key': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'title': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'summary': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'valueIndex': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), - ), - 'entries': BridgeFieldDef( - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)]), - ), - ), - 'entryValues': BridgeFieldDef( - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)]), - ), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $ListPreference.wrap( - SourcePreference( - key: args[0]!.$value, - listPreference: ListPreference( - title: args[1]!.$value, - summary: args[2]!.$value, - valueIndex: args[3]!.$value, - entries: - (args[4]!.$value as List) - .map((e) => (e is $Value ? e.$reified : e).toString()) - .toList(), - entryValues: - (args[5]!.$value as List) - .map((e) => (e is $Value ? e.$reified : e).toString()) - .toList(), - ), - ), - ); - } - - @override - final SourcePreference $value; - - @override - SourcePreference get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'key': - return $String($value.key!); - case 'title': - return $String($value.listPreference!.title!); - case 'summary': - return $String($value.listPreference!.summary!); - case 'valueIndex': - return $int($value.listPreference!.valueIndex!); - case 'entries': - return $List.wrap($value.listPreference!.entries!); - case 'entryValues': - return $List.wrap($value.listPreference!.entryValues!); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - CheckBoxPreference? get checkBoxPreference => $value.checkBoxPreference; - - @override - EditTextPreference? get editTextPreference => $value.editTextPreference; - - @override - ListPreference? get listPreference => $value.listPreference; - - @override - MultiSelectListPreference? get multiSelectListPreference => - $value.multiSelectListPreference; - - @override - SwitchPreferenceCompat? get switchPreferenceCompat => - $value.switchPreferenceCompat; - - @override - Id? get id => $value.id; - - @override - String? get key => $value.key; - - @override - int? get sourceId => $value.sourceId; - - @override - set checkBoxPreference(CheckBoxPreference? checkBoxPreference) {} - - @override - set editTextPreference(EditTextPreference? editTextPreference) {} - - @override - set id(Id? id) {} - - @override - set key(String? key) {} - - @override - set listPreference(ListPreference? listPreference) {} - - @override - set multiSelectListPreference( - MultiSelectListPreference? multiSelectListPreference, - ) {} - - @override - set sourceId(int? sourceId) {} - - @override - set switchPreferenceCompat(SwitchPreferenceCompat? switchPreferenceCompat) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $MultiSelectListPreference implements SourcePreference, $Instance { - $MultiSelectListPreference.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec( - 'package:mangayomi/bridge_lib.dart', - 'MultiSelectListPreference', - ), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [], - namedParams: [ - BridgeParameter( - 'key', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'title', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'summary', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'entries', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.string), - ]), - ), - false, - ), - BridgeParameter( - 'entryValues', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.string), - ]), - ), - false, - ), - BridgeParameter( - 'values', - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [ - BridgeTypeRef(CoreTypes.string), - ]), - ), - false, - ), - ], - ), - ), - }, - fields: { - 'key': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'title': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'summary': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'entries': BridgeFieldDef( - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)]), - ), - ), - 'entryValues': BridgeFieldDef( - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)]), - ), - ), - 'values': BridgeFieldDef( - BridgeTypeAnnotation( - BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)]), - ), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $MultiSelectListPreference.wrap( - SourcePreference( - key: args[0]!.$value, - multiSelectListPreference: MultiSelectListPreference( - title: args[1]!.$value, - summary: args[2]!.$value, - entries: - (args[3]!.$value as List) - .map((e) => (e is $Value ? e.$reified : e).toString()) - .toList(), - entryValues: - (args[4]!.$value as List) - .map((e) => (e is $Value ? e.$reified : e).toString()) - .toList(), - values: - (args[5]!.$value as List) - .map((e) => (e is $Value ? e.$reified : e).toString()) - .toList(), - ), - ), - ); - } - - @override - final SourcePreference $value; - - @override - SourcePreference get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'key': - return $String($value.key!); - case 'title': - return $String($value.multiSelectListPreference!.title!); - case 'summary': - return $String($value.multiSelectListPreference!.summary!); - case 'entries': - return $List.wrap($value.multiSelectListPreference!.entries!); - case 'entryValues': - return $List.wrap($value.multiSelectListPreference!.entryValues!); - case 'values': - return $List.wrap($value.multiSelectListPreference!.values!); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - CheckBoxPreference? get checkBoxPreference => $value.checkBoxPreference; - - @override - EditTextPreference? get editTextPreference => $value.editTextPreference; - - @override - ListPreference? get listPreference => $value.listPreference; - - @override - MultiSelectListPreference? get multiSelectListPreference => - $value.multiSelectListPreference; - - @override - SwitchPreferenceCompat? get switchPreferenceCompat => - $value.switchPreferenceCompat; - - @override - Id? get id => $value.id; - - @override - String? get key => $value.key; - - @override - int? get sourceId => $value.sourceId; - - @override - set checkBoxPreference(CheckBoxPreference? checkBoxPreference) {} - - @override - set editTextPreference(EditTextPreference? editTextPreference) {} - - @override - set id(Id? id) {} - - @override - set key(String? key) {} - - @override - set listPreference(ListPreference? listPreference) {} - - @override - set multiSelectListPreference( - MultiSelectListPreference? multiSelectListPreference, - ) {} - - @override - set sourceId(int? sourceId) {} - - @override - set switchPreferenceCompat(SwitchPreferenceCompat? switchPreferenceCompat) {} - - @override - Map toJson() { - throw UnimplementedError(); - } -} - -class $EditTextPreference implements SourcePreference, $Instance { - $EditTextPreference.wrap(this.$value) : _superclass = $Object($value); - - static const $type = BridgeTypeRef( - BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'EditTextPreference'), - ); - - static const $declaration = BridgeClassDef( - BridgeClassType($type), - constructors: { - '': BridgeConstructorDef( - BridgeFunctionDef( - returns: BridgeTypeAnnotation($type), - params: [], - namedParams: [ - BridgeParameter( - 'key', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'title', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'summary', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'value', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'dialogTitle', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'dialogMessage', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - BridgeParameter( - 'text', - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - false, - ), - ], - ), - ), - }, - fields: { - 'key': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'title': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'summary': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'value': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'dialogTitle': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'dialogMessage': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - 'text': BridgeFieldDef( - BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), - ), - }, - wrap: true, - ); - - static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) { - return $EditTextPreference.wrap( - SourcePreference( - key: args[0]!.$value, - editTextPreference: EditTextPreference( - title: args[1]!.$value, - summary: args[2]!.$value, - value: args[3]!.$value, - dialogTitle: args[4]!.$value, - dialogMessage: args[5]!.$value, - text: args[6]!.$value, - ), - ), - ); - } - - @override - final SourcePreference $value; - - @override - SourcePreference get $reified => $value; - - final $Instance _superclass; - - @override - $Value? $getProperty(Runtime runtime, String identifier) { - switch (identifier) { - case 'key': - return $String($value.key!); - case 'title': - return $String($value.editTextPreference!.title!); - case 'summary': - return $String($value.editTextPreference!.summary!); - case 'value': - return $String($value.editTextPreference!.value!); - case 'dialogTitle': - return $String($value.editTextPreference!.dialogTitle!); - case 'dialogMessage': - return $String($value.editTextPreference!.dialogMessage!); - case 'text': - return $String($value.editTextPreference!.text!); - - default: - return _superclass.$getProperty(runtime, identifier); - } - } - - @override - int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); - - @override - void $setProperty(Runtime runtime, String identifier, $Value value) { - switch (identifier) { - default: - _superclass.$setProperty(runtime, identifier, value); - } - } - - @override - CheckBoxPreference? get checkBoxPreference => $value.checkBoxPreference; - - @override - EditTextPreference? get editTextPreference => $value.editTextPreference; - - @override - ListPreference? get listPreference => $value.listPreference; - - @override - MultiSelectListPreference? get multiSelectListPreference => - $value.multiSelectListPreference; - - @override - SwitchPreferenceCompat? get switchPreferenceCompat => - $value.switchPreferenceCompat; - - @override - Id? get id => $value.id; - - @override - String? get key => $value.key; - - @override - int? get sourceId => $value.sourceId; - - @override - set checkBoxPreference(CheckBoxPreference? checkBoxPreference) {} - - @override - set editTextPreference(EditTextPreference? editTextPreference) {} - - @override - set id(Id? id) {} - - @override - set key(String? key) {} - - @override - set listPreference(ListPreference? listPreference) {} - - @override - set multiSelectListPreference( - MultiSelectListPreference? multiSelectListPreference, - ) {} - - @override - set sourceId(int? sourceId) {} - - @override - set switchPreferenceCompat(SwitchPreferenceCompat? switchPreferenceCompat) {} - - @override - Map toJson() { - throw UnimplementedError(); + void registerBridgedClasses(D4rt interpreter) { + interpreter.registerBridgedClass(checkBoxPreferenceBridgedClass); + interpreter.registerBridgedClass(switchPreferenceCompatBridgedClass); + interpreter.registerBridgedClass(listPreferenceBridgedClass); + interpreter.registerBridgedClass(multiSelectListPreferenceBridgedClass); + interpreter.registerBridgedClass(editTextPreferenceBridgedClass); } } diff --git a/lib/eval/dart/compiler/compiler.dart b/lib/eval/dart/compiler/compiler.dart deleted file mode 100644 index 2fec0e56..00000000 --- a/lib/eval/dart/compiler/compiler.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'dart:typed_data'; -import 'package:dart_eval/dart_eval.dart'; -import 'package:mangayomi/eval/dart/plugin.dart'; - -Uint8List compilerEval(String code) { - late Compiler compiler = Compiler(); - final plugin = MEvalPlugin(); - compiler.addPlugin(plugin); - final program = compiler.compile({ - 'mangayomi': {'main.dart': code}, - }); - - final bytecode = program.write(); - return bytecode; -} diff --git a/lib/eval/dart/plugin.dart b/lib/eval/dart/plugin.dart deleted file mode 100644 index dd975684..00000000 --- a/lib/eval/dart/plugin.dart +++ /dev/null @@ -1,205 +0,0 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:mangayomi/eval/dart/bridge/document.dart'; -import 'package:mangayomi/eval/dart/bridge/element.dart'; -import 'package:mangayomi/eval/dart/bridge/http.dart'; -import 'package:mangayomi/eval/dart/bridge/m_chapter.dart'; -import 'package:mangayomi/eval/dart/bridge/filter.dart'; -import 'package:mangayomi/eval/dart/bridge/m_pages.dart'; -import 'package:mangayomi/eval/dart/bridge/m_status.dart'; -import 'package:mangayomi/eval/dart/bridge/m_provider.dart'; -import 'package:mangayomi/eval/dart/bridge/m_manga.dart'; -import 'package:mangayomi/eval/dart/bridge/m_source.dart'; -import 'package:mangayomi/eval/dart/bridge/m_track.dart'; -import 'package:mangayomi/eval/dart/bridge/m_video.dart'; -import 'package:mangayomi/eval/dart/bridge/source_preference.dart'; - -class MEvalPlugin extends EvalPlugin { - @override - String get identifier => 'package:mangayomi'; - - @override - void configureForCompile(BridgeDeclarationRegistry registry) { - registry.defineBridgeClass($MProvider.$declaration); - registry.defineBridgeClass($MPages.$declaration); - registry.defineBridgeClass($MSource.$declaration); - registry.defineBridgeClass($MVideo.$declaration); - registry.defineBridgeClass($MTrack.$declaration); - registry.defineBridgeClass($MChapter.$declaration); - registry.defineBridgeClass($MManga.$declaration); - registry.defineBridgeEnum($MStatus.$declaration); - //Filter - registry.defineBridgeClass($FilterList.$declaration); - registry.defineBridgeClass($SelectFilter.$declaration); - registry.defineBridgeClass($SeparatorFilter.$declaration); - registry.defineBridgeClass($HeaderFilter.$declaration); - registry.defineBridgeClass($TextFilter.$declaration); - registry.defineBridgeClass($SortFilter.$declaration); - registry.defineBridgeClass($TriStateFilter.$declaration); - registry.defineBridgeClass($GroupFilter.$declaration); - registry.defineBridgeClass($CheckBoxFilter.$declaration); - registry.defineBridgeClass($SortState.$declaration); - registry.defineBridgeClass($SelectFilterOption.$declaration); - //SourcePreferences - registry.defineBridgeClass($CheckBoxPreference.$declaration); - registry.defineBridgeClass($SwitchPreferenceCompat.$declaration); - registry.defineBridgeClass($ListPreference.$declaration); - registry.defineBridgeClass($MultiSelectListPreference.$declaration); - registry.defineBridgeClass($CheckBoxPreference.$declaration); - registry.defineBridgeClass($EditTextPreference.$declaration); - //DOM HTML - registry.defineBridgeClass($MElement.$declaration); - registry.defineBridgeClass($Element.$declaration); - registry.defineBridgeClass($MDocument.$declaration); - registry.defineBridgeClass($Document.$declaration); - //HTTP CLIENT - registry.defineBridgeClass($Client.$declaration); - registry.defineBridgeClass($Response.$declaration); - registry.defineBridgeClass($BaseRequest.$declaration); - registry.defineBridgeClass($StreamedResponse.$declaration); - registry.defineBridgeClass($ByteStream.$declaration); - } - - @override - void configureForRuntime(Runtime runtime) { - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'MProvider.', - $MProvider.$construct, - isBridge: true, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'MChapter.', - $MChapter.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'MManga.', - $MManga.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'MPages.', - $MPages.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'MSource.', - $MSource.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'MVideo.', - $MVideo.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'MTrack.', - $MTrack.$new, - ); - runtime.registerBridgeEnumValues( - 'package:mangayomi/bridge_lib.dart', - 'MStatus', - $MStatus.$values, - ); - //Filter - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'FilterList.', - $FilterList.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'SelectFilter.', - $SelectFilter.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'SeparatorFilter.', - $SeparatorFilter.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'HeaderFilter.', - $HeaderFilter.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'TextFilter.', - $TextFilter.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'SortFilter.', - $SortFilter.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'TriStateFilter.', - $TriStateFilter.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'GroupFilter.', - $GroupFilter.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'CheckBoxFilter.', - $CheckBoxFilter.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'SortState.', - $SortState.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'SelectFilterOption.', - $SelectFilterOption.$new, - ); - //Sources preferences - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'CheckBoxPreference.', - $CheckBoxPreference.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'SwitchPreferenceCompat.', - $SwitchPreferenceCompat.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'ListPreference.', - $ListPreference.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'MultiSelectListPreference.', - $MultiSelectListPreference.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'EditTextPreference.', - $EditTextPreference.$new, - ); - //DOM HTML - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'MElement.', - $MElement.$new, - ); - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'MDocument.', - $MDocument.$new, - ); - //HTTP CLIENT - runtime.registerBridgeFunc( - 'package:mangayomi/bridge_lib.dart', - 'Client.', - $Client.$new, - ); - } -} diff --git a/lib/eval/dart/runtime/runtime.dart b/lib/eval/dart/runtime/runtime.dart deleted file mode 100644 index e8b4c6ed..00000000 --- a/lib/eval/dart/runtime/runtime.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'dart:typed_data'; -import 'package:dart_eval/dart_eval.dart'; -import 'package:mangayomi/eval/dart/plugin.dart'; - -Runtime runtimeEval(Uint8List bytecode) { - final runtime = Runtime(bytecode.buffer.asByteData()); - final plugin = MEvalPlugin(); - runtime.addPlugin(plugin); - return runtime; -} diff --git a/lib/eval/dart/service.dart b/lib/eval/dart/service.dart index 527825ff..004a51df 100644 --- a/lib/eval/dart/service.dart +++ b/lib/eval/dart/service.dart @@ -1,13 +1,9 @@ -import 'package:dart_eval/dart_eval_bridge.dart'; -import 'package:dart_eval/stdlib/core.dart'; -import 'package:mangayomi/eval/dart/bridge/m_source.dart'; -import 'package:mangayomi/eval/dart/compiler/compiler.dart'; -import 'package:mangayomi/eval/dart/runtime/runtime.dart'; +import 'package:d4rt/d4rt.dart'; +import 'package:mangayomi/eval/dart/bridge/registrer.dart'; import 'package:mangayomi/eval/model/filter.dart'; import 'package:mangayomi/eval/javascript/http.dart'; import 'package:mangayomi/eval/model/m_manga.dart'; import 'package:mangayomi/eval/model/m_pages.dart'; -import 'package:mangayomi/eval/model/m_provider.dart'; import 'package:mangayomi/eval/model/source_preference.dart'; import 'package:mangayomi/models/page.dart'; import 'package:mangayomi/models/source.dart'; @@ -21,38 +17,31 @@ class DartExtensionService implements ExtensionService { DartExtensionService(this.source); - MProvider _executeLib() { - final bytecode = compilerEval(source.sourceCode!); + D4rt _executeLib() { + final interpreter = D4rt(); + RegistrerBridge.registerBridge(interpreter); - final runtime = runtimeEval(bytecode); - - return runtime.executeLib('package:mangayomi/main.dart', 'main', [ - $MSource.wrap(source.toMSource()), - ]) - as MProvider; + interpreter.execute( + source.sourceCode!.replaceAll( + "final Client client = Client(source)", + "final Client client = Client()", + ), + mainArgs: source.toMSource(), + ); + return interpreter; } @override Map getHeaders() { Map headers = {}; try { - final bytecode = compilerEval(source.sourceCode!); - final runtime = runtimeEval(bytecode); - runtime.args = [$String(source.baseUrl!)]; - var res = runtime.executeLib('package:mangayomi/main.dart', 'getHeader'); - if (res is $Map) { - headers = (res.$reified).toMapStringString!; - } else if (res is Map) { - headers = res.toMapStringString!; - } else { - throw ""; - } + headers = _executeLib().invoke('headers', []) as Map; } catch (_) { try { - headers = _executeLib().headers; - } catch (_) { - return {}; - } + headers = + _executeLib().invoke('getHeader', [source.baseUrl!]) + as Map; + } catch (_) {} } return headers; } @@ -61,10 +50,9 @@ class DartExtensionService implements ExtensionService { String get sourceBaseUrl { String? baseUrl; try { - baseUrl = _executeLib().baseUrl; - } catch (_) { - // - } + final interpreter = _executeLib(); + baseUrl = interpreter.invoke('baseUrl', []) as String?; + } catch (_) {} return baseUrl == null || baseUrl.isEmpty ? source.baseUrl! : baseUrl; } @@ -73,36 +61,55 @@ class DartExtensionService implements ExtensionService { bool get supportsLatest { bool? supportsLatest; try { - supportsLatest = _executeLib().supportsLatest; + final interpreter = _executeLib(); + supportsLatest = interpreter.invoke('supportsLatest', []) as bool?; } catch (e) { supportsLatest = true; } - return supportsLatest; + return supportsLatest ?? true; } @override Future getPopular(int page) async { - return await _executeLib().getPopular(page); + try { + final interpreter = _executeLib(); + final result = await interpreter.invoke('getPopular', [page]); + return result as MPages; + } catch (e) { + rethrow; + } } @override Future getLatestUpdates(int page) async { - return await _executeLib().getLatestUpdates(page); + final interpreter = _executeLib(); + final result = await interpreter.invoke('getLatestUpdates', [page]); + return result as MPages; } @override Future search(String query, int page, List filters) async { - return await _executeLib().search(query, page, FilterList(filters)); + final interpreter = _executeLib(); + final result = await interpreter.invoke('search', [ + query, + page, + FilterList(filters), + ]); + return result as MPages; } @override Future getDetail(String url) async { - return await _executeLib().getDetail(url); + final interpreter = _executeLib(); + final result = await interpreter.invoke('getDetail', [url]); + return result as MManga; } @override Future> getPageList(String url) async { - return (await _executeLib().getPageList(url)) + final interpreter = _executeLib(); + final result = await interpreter.invoke('getPageList', [url]); + return (result as List) .map( (e) => e is String @@ -114,45 +121,593 @@ class DartExtensionService implements ExtensionService { @override Future> getVideoList(String url) async { - return await _executeLib().getVideoList(url); + final interpreter = _executeLib(); + final result = await interpreter.invoke('getVideoList', [url]); + return (result as List).cast