This commit is contained in:
kodjomoustapha 2023-10-31 18:02:26 +01:00
parent 9569a261bd
commit 3f206eb78e
31 changed files with 1415 additions and 1766 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,997 @@
import 'dart:convert';
import 'package:dart_eval/dart_eval.dart';
import 'package:dart_eval/dart_eval_bridge.dart';
import 'package:dart_eval/stdlib/core.dart';
import 'package:mangayomi/eval/bridge/m_source.dart';
import 'package:mangayomi/eval/bridge/m_manga.dart';
import 'package:mangayomi/eval/bridge/m_pages.dart';
import 'package:mangayomi/eval/bridge/m_status.dart';
import 'package:mangayomi/eval/bridge/m_track.dart';
import 'package:mangayomi/eval/bridge/m_video.dart';
import 'package:mangayomi/eval/model/m_bridge.dart';
import 'package:mangayomi/eval/model/m_pages.dart';
import 'package:mangayomi/eval/model/m_source.dart';
import 'package:mangayomi/eval/model/m_manga.dart';
import 'package:mangayomi/eval/model/m_provider.dart';
import 'package:mangayomi/models/video.dart';
class $MProvider extends MProvider with $Bridge<MProvider> {
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),
constructors: {
'': BridgeConstructorDef(
BridgeFunctionDef(returns: BridgeTypeAnnotation($type)))
},
methods: {
'getLatestUpdates': BridgeMethodDef(BridgeFunctionDef(
returns: BridgeTypeAnnotation(
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
params: [
BridgeParameter(
'sourceInfo',
BridgeTypeAnnotation($MSource.$type),
false,
),
BridgeParameter(
'page',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)),
false,
),
])),
'getPopular': BridgeMethodDef(BridgeFunctionDef(
returns: BridgeTypeAnnotation(
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
params: [
BridgeParameter(
'sourceInfo',
BridgeTypeAnnotation($MSource.$type),
false,
),
BridgeParameter(
'page',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)),
false,
),
])),
'search': BridgeMethodDef(BridgeFunctionDef(
returns: BridgeTypeAnnotation(
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
params: [
BridgeParameter(
'sourceInfo',
BridgeTypeAnnotation($MSource.$type),
false,
),
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(
'sourceInfo',
BridgeTypeAnnotation($MManga.$type),
false,
),
BridgeParameter(
'url',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false,
),
])),
'getPageList': BridgeMethodDef(BridgeFunctionDef(
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)])
])),
params: [
BridgeParameter(
'sourceInfo',
BridgeTypeAnnotation($MManga.$type),
false,
),
BridgeParameter(
'url',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false,
),
])),
'getVideoList': BridgeMethodDef(BridgeFunctionDef(
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
])),
params: [
BridgeParameter(
'sourceInfo',
BridgeTypeAnnotation($MManga.$type),
false,
),
BridgeParameter(
'url',
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),
]),
),
'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),
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),
]),
),
'rapidCloudExtractor': 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),
]),
),
'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)),
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),
]),
),
'querySelector': BridgeMethodDef(
BridgeFunctionDef(
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
params: [
BridgeParameter(
'html',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false),
BridgeParameter(
'selector',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false),
BridgeParameter('typeElement',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), false),
BridgeParameter(
'attributes',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false),
]),
),
'querySelectorAll': BridgeMethodDef(
BridgeFunctionDef(
returns: BridgeTypeAnnotation(BridgeTypeRef(
CoreTypes.list, [BridgeTypeRef(CoreTypes.string)])),
params: [
BridgeParameter(
'html',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false),
],
namedParams: [
BridgeParameter(
'selector',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false),
BridgeParameter('typeElement',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), false),
BridgeParameter(
'attributes',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false),
BridgeParameter('typeRegExp',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), 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),
]),
),
'http': BridgeMethodDef(
BridgeFunctionDef(
returns: BridgeTypeAnnotation(BridgeTypeRef(
CoreTypes.future, [BridgeTypeRef(CoreTypes.string)])),
params: [
BridgeParameter(
'method',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false),
BridgeParameter(
'datas',
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),
]),
),
'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),
]),
),
'evalJs': BridgeMethodDef(
BridgeFunctionDef(
returns: BridgeTypeAnnotation(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),
]),
),
},
bridge: true);
static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) {
return $MProvider();
}
@override
$Value? $bridgeGet(String identifier) {
return switch (identifier) {
'http' => $Function((_, __, List<$Value?> args) {
return $Future.wrap(MBridge.http(args[0]!.$reified, args[1]!.$reified)
.then((value) => $String(value)));
}),
"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.substringBefore(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).then(
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
"myTvExtractor" => $Function((_, __, List<$Value?> args) => $Future.wrap(
MBridge.myTvExtractor(args[0]!.$value).then(
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
"okruExtractor" => $Function((_, __, List<$Value?> args) => $Future.wrap(
MBridge.okruExtractor(args[0]!.$value).then(
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
"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())))),
"vidBomExtractor" => $Function((_, __, List<$Value?> args) =>
$Future.wrap(MBridge.vidBomExtractor(args[0]!.$value).then(
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
"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())))),
"rapidCloudExtractor" => $Function((_, __, List<$Value?> args) => $Future
.wrap(MBridge.rapidCloudExtractor(args[0]!.$value, args[1]?.$value)
.then((value) =>
$List.wrap(value.map((e) => _toMVideo(e)).toList())))),
"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())))),
"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())))),
"gogoCdnExtractor" => $Function((_, __, List<$Value?> args) =>
$Future.wrap(MBridge.gogoCdnExtractor(args[0]!.$value).then(
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
"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())))),
"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())))),
"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())))),
"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())))),
"filemoonExtractor" => $Function((_, __, List<$Value?> args) => $Future
.wrap(MBridge.filemoonExtractor(args[0]!.$value, args[1]?.$value)
.then((value) =>
$List.wrap(value.map((e) => _toMVideo(e)).toList())))),
"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);
}),
///////////////////////////////////////////////////////////////////////
"getHtmlViaWebview" => $Function((_, __, List<$Value?> args) {
return $Future.wrap(
MBridge.getHtmlViaWebview(args[0]!.$value, args[1]!.$value)
.then((value) => $String(value)));
}),
"evalJs" => MBridge.evalJs,
"regExp" => $Function((_, __, List<$Value?> args) {
return $String(MBridge.regExp(args[0]!.$value, args[1]!.$value,
args[2]!.$value, args[3]!.$value, args[4]!.$value));
}),
"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<dynamic> argss2 = [];
if (args[1]!.$value is List<$Value>) {
argss2 = args[1]!.$value as List<$Value>;
} else {
argss2 = args[1]!.$value as List<dynamic>;
}
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());
}),
"querySelector" => MBridge.querySelector,
"querySelectorAll" => MBridge.querySelectorAll,
"xpath" => MBridge.xpath,
_ => $Function((_, __, List<$Value?> args) {
throw UnimplementedError('Unknown property $identifier');
}),
};
}
@override
void $bridgeSet(String identifier, $Value value) {
throw UnimplementedError();
}
@override
Future<MManga> getDetail(MSource sourceInfo, String url) async =>
await $_invoke('getDetail', [$MSource.wrap(sourceInfo), $String(url)]);
@override
Future<MPages> getLatestUpdates(MSource sourceInfo, int page) async =>
await $_invoke(
'getLatestUpdates', [$MSource.wrap(sourceInfo), $int(page)]);
@override
Future<MPages> getPopular(MSource sourceInfo, int page) async =>
await $_invoke('getPopular', [$MSource.wrap(sourceInfo), $int(page)]);
@override
Future<MPages> search(MSource sourceInfo, String query, int page) async =>
await $_invoke(
'search', [$MSource.wrap(sourceInfo), $String(query), $int(page)]);
@override
Future<List<String>> getPageList(MSource sourceInfo, String url) async {
final res = await $_invoke(
'getPageList', [$MSource.wrap(sourceInfo), $String(url)]);
if (res is $List) {
return res.$reified.map((e) => e as String).toList();
}
return res;
}
@override
Future<List<Video>> getVideoList(MSource sourceInfo, String url) async {
final res = await $_invoke(
'getVideoList', [$MSource.wrap(sourceInfo), $String(url)]);
if (res is $List) {
return res.$reified.map((e) => e as Video).toList();
}
return res;
}
$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()));
}

View file

@ -1,182 +0,0 @@
import 'package:dart_eval/dart_eval.dart';
import 'package:dart_eval/dart_eval_bridge.dart';
import 'package:dart_eval/stdlib/core.dart';
import 'package:mangayomi/eval/bridge/m_source.dart';
import 'package:mangayomi/eval/bridge/m_manga.dart';
import 'package:mangayomi/eval/bridge/m_pages.dart';
import 'package:mangayomi/eval/bridge/m_video.dart';
import 'package:mangayomi/eval/model/m_pages.dart';
import 'package:mangayomi/eval/model/m_source.dart';
import 'package:mangayomi/eval/model/m_manga.dart';
import 'package:mangayomi/eval/model/source_provider.dart';
import 'package:mangayomi/models/video.dart';
class $MSourceProvider
with $Bridge<MSourceProvider>
implements MSourceProvider {
static $MSourceProvider $construct(
Runtime runtime, $Value? target, List<$Value?> args) =>
$MSourceProvider();
static const $type = BridgeTypeRef(
BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MSourceProvider'));
static const $declaration = BridgeClassDef(
BridgeClassType($type, isAbstract: true),
constructors: {
'': BridgeConstructorDef(
BridgeFunctionDef(returns: BridgeTypeAnnotation($type)))
},
methods: {
'getLatestUpdates': BridgeMethodDef(BridgeFunctionDef(
returns: BridgeTypeAnnotation(
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
params: [
BridgeParameter(
'sourceInfo',
BridgeTypeAnnotation($MSource.$type),
false,
),
BridgeParameter(
'page',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)),
false,
),
])),
'getPopular': BridgeMethodDef(BridgeFunctionDef(
returns: BridgeTypeAnnotation(
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
params: [
BridgeParameter(
'sourceInfo',
BridgeTypeAnnotation($MSource.$type),
false,
),
BridgeParameter(
'page',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)),
false,
),
])),
'search': BridgeMethodDef(BridgeFunctionDef(
returns: BridgeTypeAnnotation(
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
params: [
BridgeParameter(
'sourceInfo',
BridgeTypeAnnotation($MSource.$type),
false,
),
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(
'sourceInfo',
BridgeTypeAnnotation($MManga.$type),
false,
),
BridgeParameter(
'url',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false,
),
])),
'getPageList': BridgeMethodDef(BridgeFunctionDef(
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)])
])),
params: [
BridgeParameter(
'sourceInfo',
BridgeTypeAnnotation($MManga.$type),
false,
),
BridgeParameter(
'url',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false,
),
])),
'getVideoList': BridgeMethodDef(BridgeFunctionDef(
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
])),
params: [
BridgeParameter(
'sourceInfo',
BridgeTypeAnnotation($MManga.$type),
false,
),
BridgeParameter(
'url',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false,
),
])),
},
bridge: true);
static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) {
return $MSourceProvider();
}
@override
$Value? $bridgeGet(String identifier) {
throw UnimplementedError();
}
@override
void $bridgeSet(String identifier, $Value value) {
throw UnimplementedError();
}
@override
Future<MManga> getDetail(MSource sourceInfo, String url) async =>
await $_invoke('getDetail', [$MSource.wrap(sourceInfo), $String(url)]);
@override
Future<MPages> getLatestUpdates(MSource sourceInfo, int page) async =>
await $_invoke(
'getLatestUpdates', [$MSource.wrap(sourceInfo), $int(page)]);
@override
Future<MPages> getPopular(MSource sourceInfo, int page) async =>
await $_invoke('getPopular', [$MSource.wrap(sourceInfo), $int(page)]);
@override
Future<MPages> search(MSource sourceInfo, String query, int page) async =>
await $_invoke(
'search', [$MSource.wrap(sourceInfo), $String(query), $int(page)]);
@override
Future<List<String>> getPageList(MSource sourceInfo, String url) async {
final res = await $_invoke(
'getPageList', [$MSource.wrap(sourceInfo), $String(url)]);
if (res is $List) {
return res.$reified.map((e) => e as String).toList();
}
return res;
}
@override
Future<List<Video>> getVideoList(MSource sourceInfo, String url) async {
final res = await $_invoke(
'getVideoList', [$MSource.wrap(sourceInfo), $String(url)]);
if (res is $List) {
return res.$reified.map((e) => e as Video).toList();
}
return res;
}
}

View file

@ -1,31 +1,13 @@
import 'dart:typed_data';
import 'package:dart_eval/dart_eval.dart';
import 'package:mangayomi/eval/bridge/m_bridge.dart';
import 'package:mangayomi/eval/bridge/m_chapter.dart';
import 'package:mangayomi/eval/bridge/m_manga.dart';
import 'package:mangayomi/eval/bridge/m_pages.dart';
import 'package:mangayomi/eval/bridge/m_source.dart';
import 'package:mangayomi/eval/bridge/m_status.dart';
import 'package:mangayomi/eval/bridge/m_track.dart';
import 'package:mangayomi/eval/bridge/m_video.dart';
import 'package:mangayomi/eval/bridge/source_provider.dart';
import 'package:mangayomi/eval/utils.dart';
import 'package:mangayomi/eval/plugin.dart';
Uint8List compilerEval(String code) {
late Compiler compiler = Compiler();
compiler.defineBridgeClasses([
$MBridge.$declaration,
$MSourceProvider.$declaration,
$MPages.$declaration,
$MSource.$declaration,
$MVideo.$declaration,
$MTrack.$declaration,
$MChapter.$declaration,
$MManga.$declaration,
]);
compiler.defineBridgeEnum($MStatus.$declaration);
final plugin = MEvalPlugin();
compiler.addPlugin(plugin);
final program = compiler.compile({
'mangayomi': {'main.dart': code, 'utils.dart': utils}
'mangayomi': {'main.dart': code}
});
final bytecode = program.write();

View file

@ -65,27 +65,25 @@ class WordSet {
class MBridge {
///Seaches for the first descendant node matching the given selectors, using a preorder traversal.
static String querySelector(
String html,
String selector,
int typeElement,
String attributes,
) {
static const $Function querySelector = $Function(_querySelector);
static $Value? _querySelector(_, __, List<$Value?> args) {
String html = args[0]!.$reified;
String selector = args[0]!.$reified;
int typeElement = args[0]!.$reified;
String attributes = args[0]!.$reified;
String res = "";
try {
var parse = parser.parse(html);
// return querySelector text
if (typeElement == 0) {
return parse
.querySelector(selector)!
.text
.trim()
.trimLeft()
.trimRight();
res = parse.querySelector(selector)!.text.trim().trimLeft().trimRight();
// return querySelector innerHtml
} else if (typeElement == 1) {
return parse
res = parse
.querySelector(selector)!
.innerHtml
.trim()
@ -94,7 +92,7 @@ class MBridge {
// return querySelector outerHtml
} else if (typeElement == 2) {
return parse
res = parse
.querySelector(selector)!
.outerHtml
.trim()
@ -102,21 +100,27 @@ class MBridge {
.trimRight();
}
// return querySelector attributes
return parse
res = parse
.querySelector(selector)!
.attributes[attributes]!
.trim()
.trimLeft()
.trimRight();
return $String(res);
} catch (e) {
botToast(e.toString());
throw Exception(e);
}
}
///Returns all descendant nodes matching the given selectors, using a preorder traversal.
static List<String> querySelectorAll(String html, String selector,
int typeElement, String attributes, int typeRegExp) {
static const $Function querySelectorAll = $Function(_querySelectorAll);
static $Value? _querySelectorAll(_, __, List<$Value?> args) {
String html = args[0]!.$value;
String selector = args[1]!.$value;
int typeElement = args[2]!.$value;
String attributes = args[3]!.$value;
int typeRegExp = args[4]!.$value;
try {
var parse = parser.parse(html);
final a = parse.querySelectorAll(selector);
@ -146,7 +150,7 @@ class MBridge {
}
// if (typeRegExp == 0) is the default parameter
if (typeRegExp == 0) {
return res;
return $List.wrap(res.map((e) => $String(e)).toList());
}
List<String> resRegExp = [];
@ -172,7 +176,7 @@ class MBridge {
resRegExp.add(regImgMatcher(element.trim().trimLeft().trimRight()));
}
}
return resRegExp;
return $List.wrap(resRegExp.map((e) => $String(e)).toList());
} catch (e) {
botToast(e.toString());
throw Exception(e);
@ -180,7 +184,11 @@ class MBridge {
}
///Create query by html string
static List<String> xpath(String html, String xpath) {
static const $Function xpath = $Function(_xpath);
static $Value? _xpath(_, __, List<$Value?> args) {
String html = args[0]!.$reified;
String xpath = args[1]!.$reified;
List<String> attrs = [];
try {
var htmlXPath = HtmlXPath.html(html);
@ -199,10 +207,9 @@ class MBridge {
attrs = [attr];
}
}
return attrs;
return $List.wrap(attrs.map((e) => $String(e)).toList());
} catch (e) {
// botToast(e.toString());
return attrs;
throw e.toString();
}
}
@ -305,32 +312,26 @@ class MBridge {
return html!;
}
///Utility to decode json to List
static List<dynamic> jsonDecodeToList(String source, int type) {
return type == 0
? jsonDecode(source) as List
: (jsonDecode(source) as List).map((e) => jsonEncode(e)).toList();
}
///Deobfuscate a JS code
static String evalJs(String code) {
static const $Function evalJs = $Function(_evalJs);
static $Value? _evalJs(_, __, List<$Value?> args) {
String code = args[0]!.$reified;
try {
// JavascriptRuntime? flutterJs;
// flutterJs = getJavascriptRuntime();
// final res = flutterJs.evaluate(code).stringResult;
// flutterJs.dispose();
// return res;
final jsPacker = JSPacker(code);
return jsPacker.unpack() ?? "";
return $String(jsPacker.unpack() ?? "");
} catch (e) {
botToast(e.toString());
throw Exception(e);
}
}
///Read values in parsed JSON object and return resut to List<String>
static List<String> jsonPathToList(
String source, String expression, int type) {
static const $Function jsonPathToList = $Function(_jsonPathToList);
static $Value? _jsonPathToList(_, __, List<$Value?> args) {
String source = args[0]!.$reified;
String expression = args[1]!.$reified;
int type = args[2]!.$reified;
try {
//Check jsonDecode(source) is list value
if (jsonDecode(source) is List) {
@ -360,19 +361,18 @@ class MBridge {
}
list.add(val);
}
return list;
return $List.wrap(list.map((e) => $String(e)).toList());
}
// else jsonDecode(source) is Map value
else {
var map = json.decode(source);
var values = JsonPath(expression).readValues(map);
return values.map((e) {
return e == null ? "{}" : json.encode(e);
}).toList();
return $List.wrap(values.map((e) {
return $String(e == null ? "{}" : json.encode(e));
}).toList());
}
} catch (e) {
botToast(e.toString());
throw Exception(e);
}
}
@ -391,8 +391,12 @@ class MBridge {
}
///Read values in parsed JSON object and return resut to String
static String jsonPathToString(
String source, String expression, String join) {
static const $Function jsonPathToString = $Function(_jsonPathToString);
static $Value? _jsonPathToString(_, __, List<$Value?> args) {
String source = args[0]!.$reified;
String expression = args[1]!.$reified;
String join = args[2]!.$reified;
try {
List<dynamic> values = [];
@ -431,23 +435,12 @@ class MBridge {
//join the list into listRg
listRg.add(list.join(join));
}
return listRg.first;
return $String(listRg.first);
} catch (e) {
botToast(e.toString());
throw Exception(e);
}
}
//Utility to decode json values as Map<String,dynamic>
static Map jsonPathToMap(String source) {
final mMap = jsonDecode(source) as Map?;
Map<String, dynamic> map = {};
if (mMap != null) {
map = mMap.map((key, value) => MapEntry(key.toString(), value));
}
return map;
}
//Parse a list of dates to millisecondsSinceEpoch
static List parseDates(
List value, String dateFormat, String dateFormatLocale) {
@ -494,6 +487,7 @@ class MBridge {
}
//http request and also webview
static Future<String> http(String method, String datas) async {
try {
hp.StreamedResponse? res;
@ -558,13 +552,12 @@ class MBridge {
} catch (e) {
botToast(e.toString());
return "";
// throw e.toString();
}
}
static Future<List<Video>> gogoCdnExtractor(String url) async {
return await GogoCdnExtractor().videosFromUrl(
url,
);
return await GogoCdnExtractor().videosFromUrl(url);
}
static Future<List<Video>> doodExtractor(String url, String? quality) async {

View file

@ -3,8 +3,8 @@ import 'package:mangayomi/eval/model/m_source.dart';
import 'package:mangayomi/eval/model/m_manga.dart';
import 'package:mangayomi/models/video.dart';
abstract class MSourceProvider {
MSourceProvider();
abstract class MProvider {
MProvider();
Future<MPages> getLatestUpdates(MSource sourceInfo, int page);

48
lib/eval/plugin.dart Normal file
View file

@ -0,0 +1,48 @@
import 'package:dart_eval/dart_eval.dart';
import 'package:dart_eval/dart_eval_bridge.dart';
import 'package:mangayomi/eval/bridge/m_chapter.dart';
import 'package:mangayomi/eval/bridge/m_pages.dart';
import 'package:mangayomi/eval/bridge/m_status.dart';
import 'package:mangayomi/eval/bridge/m_provider.dart';
import 'package:mangayomi/eval/bridge/m_manga.dart';
import 'package:mangayomi/eval/bridge/m_source.dart';
import 'package:mangayomi/eval/bridge/m_track.dart';
import 'package:mangayomi/eval/bridge/m_video.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);
}
@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);
}
}

View file

@ -1,119 +1,11 @@
import 'dart:typed_data';
import 'package:dart_eval/dart_eval.dart';
import 'package:mangayomi/eval/bridge/m_bridge.dart';
import 'package:mangayomi/eval/bridge/m_chapter.dart';
import 'package:mangayomi/eval/bridge/m_pages.dart';
import 'package:mangayomi/eval/bridge/m_status.dart';
import 'package:mangayomi/eval/bridge/source_provider.dart';
import 'package:mangayomi/eval/bridge/m_manga.dart';
import 'package:mangayomi/eval/bridge/m_source.dart';
import 'package:mangayomi/eval/bridge/m_track.dart';
import 'package:mangayomi/eval/bridge/m_video.dart';
import 'package:mangayomi/eval/plugin.dart';
Runtime runtimeEval(Uint8List bytecode) {
final runtime = Runtime(bytecode.buffer.asByteData());
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MSourceProvider.', $MSourceProvider.$construct,
isBridge: true);
runtime.registerBridgeFunc(
'package:mangayomi/bridge_lib.dart', 'MBridge.', $MBridge.$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);
runtime.registerBridgeFunc(
'package:mangayomi/bridge_lib.dart', 'MBridge.http', $MBridge.$http);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.parseDates', $MBridge.$parseDates);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.gogoCdnExtractor', $MBridge.$gogoCdnExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.doodExtractor', $MBridge.$doodExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.rapidCloudExtractor', $MBridge.$rapidCloudExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.encryptAESCryptoJS', $MBridge.$encryptAESCryptoJS);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.decryptAESCryptoJS', $MBridge.$decryptAESCryptoJS);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.streamTapeExtractor', $MBridge.$streamTapeExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.streamWishExtractor', $MBridge.$streamWishExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.filemoonExtractor', $MBridge.$filemoonExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.mp4UploadExtractor', $MBridge.$mp4UploadExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.myTvExtractor', $MBridge.$myTvExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.sendVidExtractor', $MBridge.$sendVidExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.sibnetExtractor', $MBridge.$sibnetExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.okruExtractor', $MBridge.$okruExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.yourUploadExtractor', $MBridge.$yourUploadExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.voeExtractor', $MBridge.$voeExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.vidBomExtractor', $MBridge.$vidBomExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.streamlareExtractor', $MBridge.$streamlareExtractor);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.jsonPathToString', $MBridge.$jsonPathToString);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.toVideo', $MBridge.$toVideo);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.jsonPathToList', $MBridge.$jsonPathToList);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.jsonDecodeToList', $MBridge.$jsonDecodeToList);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.jsonPathToMap', $MBridge.$jsonPathToMap);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.parseStatus', $MBridge.$parseStatus);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.getMapValue', $MBridge.$getMapValue);
runtime.registerBridgeFunc(
'package:mangayomi/bridge_lib.dart', 'MBridge.regExp', $MBridge.$regExp);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.parseChapterDate', $MBridge.$parseChapterDate);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.substringAfter', $MBridge.$substringAfter);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.substringAfterLast', $MBridge.$substringAfterLast);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.substringBeforeLast', $MBridge.$substringBeforeLast);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.substringBefore', $MBridge.$substringBefore);
runtime.registerBridgeFunc(
'package:mangayomi/bridge_lib.dart', 'MBridge.evalJs', $MBridge.$evalJs);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.getHtmlViaWebview', $MBridge.$getHtmlViaWebview);
runtime.registerBridgeFunc(
'package:mangayomi/bridge_lib.dart', 'MBridge.xpath', $MBridge.$xpath);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.querySelector', $MBridge.$querySelector);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.deobfuscateJsPassword', $MBridge.$deobfuscateJsPassword);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.querySelectorAll', $MBridge.$querySelectorAll);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.cryptoHandler', $MBridge.$cryptoHandler);
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
'MBridge.sortMapList', $MBridge.$sortMapList);
final plugin = MEvalPlugin();
runtime.addPlugin(plugin);
runtime.setup();
return runtime;
}

View file

@ -1,26 +0,0 @@
const utils = r'''
import 'package:mangayomi/bridge_lib.dart';
class Substring {
final String _text;
Substring(this._text);
Substring substringAfter(String pattern) {
return Substring(MBridge.substringAfter(_text,pattern));
}
Substring substringAfterLast(String pattern) {
return Substring(MBridge.substringAfterLast(_text,pattern));
}
Substring substringBefore(String pattern) {
return Substring(MBridge.substringBefore(_text,pattern));
}
Substring substringBeforeLast(String pattern) {
return Substring(MBridge.substringBeforeLast(_text,pattern));
}
String get text => _text;
}''';

View file

@ -11,7 +11,7 @@ import 'package:mangayomi/modules/anime/providers/anime_player_controller_provid
import 'package:mangayomi/modules/manga/reader/providers/push_router.dart';
import 'package:mangayomi/modules/widgets/progress_center.dart';
import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/services/get_anime_servers.dart';
import 'package:mangayomi/services/get_video_list.dart';
import 'package:mangayomi/utils/colors.dart';
import 'package:mangayomi/utils/media_query.dart';
import 'package:media_kit/media_kit.dart';
@ -48,7 +48,7 @@ class _AnimePlayerViewState extends riv.ConsumerState<AnimePlayerView> {
[DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]);
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky,
overlays: []);
final serversData = ref.watch(getAnimeServersProvider(
final serversData = ref.watch(getVideoListProvider(
episode: widget.episode,
));
return serversData.when(

View file

@ -8,7 +8,7 @@ import 'package:mangayomi/models/manga.dart';
import 'package:mangayomi/modules/manga/home/manga_home_screen.dart';
import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/router/router.dart';
import 'package:mangayomi/services/search_manga.dart';
import 'package:mangayomi/services/search.dart';
import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/utils/cached_network.dart';
import 'package:mangayomi/utils/colors.dart';
@ -112,7 +112,7 @@ class SourceSearchScreen extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final l10n = l10nLocalizations(context)!;
final search = ref.watch(searchMangaProvider(
final search = ref.watch(searchProvider(
source: source,
page: 1,
query: query,

View file

@ -2,7 +2,7 @@ import 'package:mangayomi/eval/model/m_manga.dart';
import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/chapter.dart';
import 'package:mangayomi/models/manga.dart';
import 'package:mangayomi/services/get_manga_detail.dart';
import 'package:mangayomi/services/get_detail.dart';
import 'package:mangayomi/sources/utils/utils.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'update_manga_detail_providers.g.dart';
@ -17,8 +17,8 @@ Future<dynamic> updateMangaDetail(UpdateMangaDetailRef ref,
final source = getSource(manga.lang!, manga.source!);
MManga getManga;
try {
getManga = await ref.watch(
getMangaDetailProvider(url: manga.link!, source: source!).future);
getManga = await ref
.watch(getDetailProvider(url: manga.link!, source: source!).future);
} catch (_) {
return;
}

View file

@ -6,7 +6,7 @@ part of 'update_manga_detail_providers.dart';
// RiverpodGenerator
// **************************************************************************
String _$updateMangaDetailHash() => r'1e436b150c789357686ac93d90a3bf83f6044ab8';
String _$updateMangaDetailHash() => r'09b3b2a4e8fbfbcbbabf41ec5c098e2b837bb4e8';
/// Copied from Dart SDK
class _SystemHash {

View file

@ -8,8 +8,8 @@ import 'package:mangayomi/models/settings.dart';
import 'package:mangayomi/modules/manga/download/providers/convert_to_cbz.dart';
import 'package:mangayomi/modules/more/settings/downloads/providers/downloads_state_provider.dart';
import 'package:mangayomi/providers/storage_provider.dart';
import 'package:mangayomi/services/get_anime_servers.dart';
import 'package:mangayomi/services/get_chapter_url.dart';
import 'package:mangayomi/services/get_video_list.dart';
import 'package:mangayomi/services/get_chapter_pages.dart';
import 'package:mangayomi/utils/headers.dart';
import 'package:mangayomi/utils/reg_exp_matcher.dart';
import 'package:path_provider/path_provider.dart';
@ -61,7 +61,7 @@ Future<List<String>> downloadChapter(
if (isManga) {
ref
.read(getChapterUrlProvider(
.read(getChapterPagesProvider(
chapter: chapter,
).future)
.then((value) {
@ -72,7 +72,7 @@ Future<List<String>> downloadChapter(
});
} else {
ref
.read(getAnimeServersProvider(
.read(getVideoListProvider(
episode: chapter,
).future)
.then((value) {

View file

@ -6,9 +6,9 @@ import 'package:mangayomi/eval/model/m_manga.dart';
import 'package:mangayomi/eval/model/m_pages.dart';
import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/services/get_latest_updates_manga.dart';
import 'package:mangayomi/services/get_popular_manga.dart';
import 'package:mangayomi/services/search_manga.dart';
import 'package:mangayomi/services/get_latest_updates.dart';
import 'package:mangayomi/services/get_popular.dart';
import 'package:mangayomi/services/search.dart';
import 'package:mangayomi/utils/colors.dart';
import 'package:mangayomi/utils/media_query.dart';
import 'package:mangayomi/modules/library/widgets/search_text_form_field.dart';
@ -63,17 +63,17 @@ class _MangaHomeScreenState extends ConsumerState<MangaHomeScreen> {
_fullDataLength = _fullDataLength + 50;
} else {
if (_selectedIndex == 0 && !_isSearch && _query.isEmpty) {
mangaResList = await ref.watch(getPopularMangaProvider(
mangaResList = await ref.watch(getPopularProvider(
source: widget.source,
page: _page + 1,
).future);
} else if (_selectedIndex == 1 && !_isSearch && _query.isEmpty) {
mangaResList = await ref.watch(getLatestUpdatesMangaProvider(
mangaResList = await ref.watch(getLatestUpdatesProvider(
source: widget.source,
page: _page + 1,
).future);
} else if (_selectedIndex == 2 && _isSearch && _query.isNotEmpty) {
mangaResList = await ref.watch(searchMangaProvider(
mangaResList = await ref.watch(searchProvider(
source: widget.source,
query: _query,
page: _page + 1,
@ -98,12 +98,12 @@ class _MangaHomeScreenState extends ConsumerState<MangaHomeScreen> {
Widget build(BuildContext context) {
if (_selectedIndex == 2 && _isSearch && _query.isNotEmpty) {
_getManga = ref.watch(
searchMangaProvider(source: widget.source, query: _query, page: 1));
searchProvider(source: widget.source, query: _query, page: 1));
} else if (_selectedIndex == 1 && !_isSearch && _query.isEmpty) {
_getManga = ref
.watch(getLatestUpdatesMangaProvider(source: widget.source, page: 1));
.watch(getLatestUpdatesProvider(source: widget.source, page: 1));
} else if (_selectedIndex == 0 && !_isSearch && _query.isEmpty) {
_getManga = ref.watch(getPopularMangaProvider(
_getManga = ref.watch(getPopularProvider(
source: widget.source,
page: 1,
));
@ -335,19 +335,19 @@ class _MangaHomeScreenState extends ConsumerState<MangaHomeScreen> {
if (_selectedIndex == 2 &&
_isSearch &&
_query.isNotEmpty) {
ref.invalidate(searchMangaProvider(
ref.invalidate(searchProvider(
source: widget.source,
query: _query,
page: 1));
} else if (_selectedIndex == 1 &&
!_isSearch &&
_query.isEmpty) {
ref.invalidate(getLatestUpdatesMangaProvider(
ref.invalidate(getLatestUpdatesProvider(
source: widget.source, page: 1));
} else if (_selectedIndex == 0 &&
!_isSearch &&
_query.isEmpty) {
ref.invalidate(getPopularMangaProvider(
ref.invalidate(getPopularProvider(
source: widget.source,
page: 1,
));

View file

@ -19,7 +19,7 @@ import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_pr
import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/sources/utils/utils.dart';
import 'package:mangayomi/modules/manga/reader/providers/push_router.dart';
import 'package:mangayomi/services/get_chapter_url.dart';
import 'package:mangayomi/services/get_chapter_pages.dart';
import 'package:mangayomi/utils/colors.dart';
import 'package:mangayomi/utils/headers.dart';
import 'package:mangayomi/utils/media_query.dart';
@ -48,7 +48,7 @@ class MangaReaderView extends ConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) {
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky,
overlays: []);
final chapterData = ref.watch(getChapterUrlProvider(
final chapterData = ref.watch(getChapterPagesProvider(
chapter: chapter,
));
@ -144,7 +144,7 @@ class MangaChapterPageGallery extends ConsumerStatefulWidget {
required this.chapter,
required this.chapterUrlModel,
});
final GetChapterUrlModel chapterUrlModel;
final GetChapterPagesModel chapterUrlModel;
final Chapter chapter;
@ -173,7 +173,7 @@ class _MangaChapterPageGalleryState
super.dispose();
}
late GetChapterUrlModel _chapterUrlModel = widget.chapterUrlModel;
late GetChapterPagesModel _chapterUrlModel = widget.chapterUrlModel;
late Chapter chapter = widget.chapter;
@ -744,7 +744,7 @@ class _MangaChapterPageGalleryState
hasNextChapter ? _readerController.getNextChapter() : null;
if (chapter != null) {
ref
.watch(getChapterUrlProvider(
.watch(getChapterPagesProvider(
chapter: chapter,
).future)
.then((value) {
@ -755,7 +755,7 @@ class _MangaChapterPageGalleryState
}
}
_preloadNextChapter(GetChapterUrlModel chapterData, Chapter chap) {
_preloadNextChapter(GetChapterPagesModel chapterData, Chapter chap) {
try {
int length = 0;
bool isExist = false;
@ -854,7 +854,7 @@ class _MangaChapterPageGalleryState
hasNextChapter ? _readerController.getNextChapter() : null;
if (chapter != null) {
ref
.watch(getChapterUrlProvider(
.watch(getChapterPagesProvider(
chapter: chapter,
).future)
.then((value) {
@ -1891,7 +1891,7 @@ class UChapDataPreload {
bool? isLocale;
Uint8List? archiveImage;
int? index;
GetChapterUrlModel? chapterUrlModel;
GetChapterPagesModel? chapterUrlModel;
int? pageIndex;
Uint8List? cropImage;
UChapDataPreload(this.chapter, this.path, this.url, this.isLocale,

View file

@ -1,5 +1,5 @@
import 'package:http/http.dart' as http;
import 'package:mangayomi/eval/model/m_bridge.dart';
import 'package:js_packer/js_packer.dart';
import 'package:mangayomi/models/video.dart';
import 'package:mangayomi/utils/extensions.dart';
import 'package:mangayomi/utils/xpath_selector.dart';
@ -16,7 +16,7 @@ class FilemoonExtractor {
.queryXPath('//script[contains(text(), "eval")]/text()')
.attr;
final unpacked = MBridge.evalJs(jsEval!);
final unpacked = JSPacker(jsEval!).unpack() ?? "";
final masterUrl = unpacked.isNotEmpty
? unpacked.substringAfter('{file:"').substringBefore('"}')

View file

@ -1,5 +1,5 @@
import 'package:http/http.dart' as http;
import 'package:mangayomi/eval/model/m_bridge.dart';
import 'package:js_packer/js_packer.dart';
import 'package:mangayomi/models/video.dart';
import 'package:mangayomi/utils/extensions.dart';
import 'package:mangayomi/utils/xpath_selector.dart';
@ -22,7 +22,7 @@ class Mp4uploadExtractor {
.attrs;
if (scriptElementWithEval.isNotEmpty) {
script = MBridge.evalJs(script);
script = JSPacker(script).unpack() ?? "";
} else {
final scriptElementWithSrc = xpathSelector(response.body)
.queryXPath('//script[contains(text(), "player.src")]/text()')

View file

@ -1,5 +1,5 @@
import 'package:http/http.dart' as http;
import 'package:mangayomi/eval/model/m_bridge.dart';
import 'package:js_packer/js_packer.dart';
import 'package:mangayomi/models/video.dart';
import 'package:mangayomi/utils/extensions.dart';
import 'package:mangayomi/utils/xpath_selector.dart';
@ -20,7 +20,7 @@ class StreamWishExtractor {
return [];
}
String? masterUrl = MBridge.evalJs(jsEval.first!)
String? masterUrl = (JSPacker(jsEval.first!).unpack() ?? "")
.substringAfter('source')
.substringAfter('file:"')
.substringBefore('"');

View file

@ -2,7 +2,7 @@ import 'dart:async';
import 'dart:io';
import 'dart:typed_data';
import 'package:mangayomi/eval/compiler/compiler.dart';
import 'package:mangayomi/eval/model/source_provider.dart';
import 'package:mangayomi/eval/model/m_provider.dart';
import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/chapter.dart';
import 'package:mangayomi/models/settings.dart';
@ -15,15 +15,15 @@ import 'package:mangayomi/utils/reg_exp_matcher.dart';
import 'package:mangayomi/modules/more/providers/incognito_mode_state_provider.dart';
import 'package:mangayomi/sources/source_test.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'get_chapter_url.g.dart';
part 'get_chapter_pages.g.dart';
class GetChapterUrlModel {
class GetChapterPagesModel {
Directory? path;
List<String> pageUrls = [];
List<bool> isLocaleList = [];
List<Uint8List?> archiveImages = [];
List<UChapDataPreload> uChapDataPreload;
GetChapterUrlModel(
GetChapterPagesModel(
{required this.path,
required this.pageUrls,
required this.isLocaleList,
@ -32,8 +32,8 @@ class GetChapterUrlModel {
}
@riverpod
Future<GetChapterUrlModel> getChapterUrl(
GetChapterUrlRef ref, {
Future<GetChapterPagesModel> getChapterPages(
GetChapterPagesRef ref, {
required Chapter chapter,
}) async {
List<UChapDataPreload> uChapDataPreloadp = [];
@ -66,7 +66,7 @@ Future<GetChapterUrlModel> getChapterUrl(
final runtime = runtimeEval(bytecode);
var res = await runtime.executeLib('package:mangayomi/main.dart', 'main');
pageUrls = (await (res as MSourceProvider)
pageUrls = (await (res as MProvider)
.getPageList(source.toMSource(), chapter.url!));
}
}
@ -119,7 +119,7 @@ Future<GetChapterUrlModel> getChapterUrl(
isLocaleList[i],
archiveImages[i],
i,
GetChapterUrlModel(
GetChapterPagesModel(
path: path,
pageUrls: pageUrls,
isLocaleList: isLocaleList,
@ -129,7 +129,7 @@ Future<GetChapterUrlModel> getChapterUrl(
}
}
return GetChapterUrlModel(
return GetChapterPagesModel(
path: path,
pageUrls: pageUrls,
isLocaleList: isLocaleList,

View file

@ -1,12 +1,12 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'get_chapter_url.dart';
part of 'get_chapter_pages.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$getChapterUrlHash() => r'd6b596903c5d72d96755fb6e439aa825310ae5da';
String _$getChapterPagesHash() => r'ebd047f73e22df675982127c901b2d386873e208';
/// Copied from Dart SDK
class _SystemHash {
@ -29,27 +29,27 @@ class _SystemHash {
}
}
/// See also [getChapterUrl].
@ProviderFor(getChapterUrl)
const getChapterUrlProvider = GetChapterUrlFamily();
/// See also [getChapterPages].
@ProviderFor(getChapterPages)
const getChapterPagesProvider = GetChapterPagesFamily();
/// See also [getChapterUrl].
class GetChapterUrlFamily extends Family<AsyncValue<GetChapterUrlModel>> {
/// See also [getChapterUrl].
const GetChapterUrlFamily();
/// See also [getChapterPages].
class GetChapterPagesFamily extends Family<AsyncValue<GetChapterPagesModel>> {
/// See also [getChapterPages].
const GetChapterPagesFamily();
/// See also [getChapterUrl].
GetChapterUrlProvider call({
/// See also [getChapterPages].
GetChapterPagesProvider call({
required Chapter chapter,
}) {
return GetChapterUrlProvider(
return GetChapterPagesProvider(
chapter: chapter,
);
}
@override
GetChapterUrlProvider getProviderOverride(
covariant GetChapterUrlProvider provider,
GetChapterPagesProvider getProviderOverride(
covariant GetChapterPagesProvider provider,
) {
return call(
chapter: provider.chapter,
@ -68,33 +68,33 @@ class GetChapterUrlFamily extends Family<AsyncValue<GetChapterUrlModel>> {
_allTransitiveDependencies;
@override
String? get name => r'getChapterUrlProvider';
String? get name => r'getChapterPagesProvider';
}
/// See also [getChapterUrl].
class GetChapterUrlProvider
extends AutoDisposeFutureProvider<GetChapterUrlModel> {
/// See also [getChapterUrl].
GetChapterUrlProvider({
/// See also [getChapterPages].
class GetChapterPagesProvider
extends AutoDisposeFutureProvider<GetChapterPagesModel> {
/// See also [getChapterPages].
GetChapterPagesProvider({
required Chapter chapter,
}) : this._internal(
(ref) => getChapterUrl(
ref as GetChapterUrlRef,
(ref) => getChapterPages(
ref as GetChapterPagesRef,
chapter: chapter,
),
from: getChapterUrlProvider,
name: r'getChapterUrlProvider',
from: getChapterPagesProvider,
name: r'getChapterPagesProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$getChapterUrlHash,
dependencies: GetChapterUrlFamily._dependencies,
: _$getChapterPagesHash,
dependencies: GetChapterPagesFamily._dependencies,
allTransitiveDependencies:
GetChapterUrlFamily._allTransitiveDependencies,
GetChapterPagesFamily._allTransitiveDependencies,
chapter: chapter,
);
GetChapterUrlProvider._internal(
GetChapterPagesProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
@ -108,12 +108,12 @@ class GetChapterUrlProvider
@override
Override overrideWith(
FutureOr<GetChapterUrlModel> Function(GetChapterUrlRef provider) create,
FutureOr<GetChapterPagesModel> Function(GetChapterPagesRef provider) create,
) {
return ProviderOverride(
origin: this,
override: GetChapterUrlProvider._internal(
(ref) => create(ref as GetChapterUrlRef),
override: GetChapterPagesProvider._internal(
(ref) => create(ref as GetChapterPagesRef),
from: from,
name: null,
dependencies: null,
@ -125,13 +125,13 @@ class GetChapterUrlProvider
}
@override
AutoDisposeFutureProviderElement<GetChapterUrlModel> createElement() {
return _GetChapterUrlProviderElement(this);
AutoDisposeFutureProviderElement<GetChapterPagesModel> createElement() {
return _GetChapterPagesProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is GetChapterUrlProvider && other.chapter == chapter;
return other is GetChapterPagesProvider && other.chapter == chapter;
}
@override
@ -143,18 +143,18 @@ class GetChapterUrlProvider
}
}
mixin GetChapterUrlRef on AutoDisposeFutureProviderRef<GetChapterUrlModel> {
mixin GetChapterPagesRef on AutoDisposeFutureProviderRef<GetChapterPagesModel> {
/// The parameter `chapter` of this provider.
Chapter get chapter;
}
class _GetChapterUrlProviderElement
extends AutoDisposeFutureProviderElement<GetChapterUrlModel>
with GetChapterUrlRef {
_GetChapterUrlProviderElement(super.provider);
class _GetChapterPagesProviderElement
extends AutoDisposeFutureProviderElement<GetChapterPagesModel>
with GetChapterPagesRef {
_GetChapterPagesProviderElement(super.provider);
@override
Chapter get chapter => (origin as GetChapterUrlProvider).chapter;
Chapter get chapter => (origin as GetChapterPagesProvider).chapter;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member

View file

@ -1,16 +1,16 @@
import 'dart:async';
import 'package:mangayomi/eval/model/m_manga.dart';
import 'package:mangayomi/eval/compiler/compiler.dart';
import 'package:mangayomi/eval/model/source_provider.dart';
import 'package:mangayomi/eval/model/m_provider.dart';
import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/eval/runtime/runtime.dart';
import 'package:mangayomi/sources/source_test.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'get_manga_detail.g.dart';
part 'get_detail.g.dart';
@riverpod
Future<MManga> getMangaDetail(
GetMangaDetailRef ref, {
Future<MManga> getDetail(
GetDetailRef ref, {
required String url,
required Source source,
}) async {
@ -22,8 +22,7 @@ Future<MManga> getMangaDetail(
var res = await runtime.executeLib('package:mangayomi/main.dart', 'main');
try {
mangadetail =
await (res as MSourceProvider).getDetail(source.toMSource(), url);
mangadetail = await (res as MProvider).getDetail(source.toMSource(), url);
} catch (e) {
throw Exception(e);
}

View file

@ -1,12 +1,12 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'get_manga_detail.dart';
part of 'get_detail.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$getMangaDetailHash() => r'eb7a5bd7ba691d3bac1edc50c5d1e3edc8be89f8';
String _$getDetailHash() => r'683f6a473aca093cc35d5d9756ae9cbdfb302f88';
/// Copied from Dart SDK
class _SystemHash {
@ -29,29 +29,29 @@ class _SystemHash {
}
}
/// See also [getMangaDetail].
@ProviderFor(getMangaDetail)
const getMangaDetailProvider = GetMangaDetailFamily();
/// See also [getDetail].
@ProviderFor(getDetail)
const getDetailProvider = GetDetailFamily();
/// See also [getMangaDetail].
class GetMangaDetailFamily extends Family<AsyncValue<MManga>> {
/// See also [getMangaDetail].
const GetMangaDetailFamily();
/// See also [getDetail].
class GetDetailFamily extends Family<AsyncValue<MManga>> {
/// See also [getDetail].
const GetDetailFamily();
/// See also [getMangaDetail].
GetMangaDetailProvider call({
/// See also [getDetail].
GetDetailProvider call({
required String url,
required Source source,
}) {
return GetMangaDetailProvider(
return GetDetailProvider(
url: url,
source: source,
);
}
@override
GetMangaDetailProvider getProviderOverride(
covariant GetMangaDetailProvider provider,
GetDetailProvider getProviderOverride(
covariant GetDetailProvider provider,
) {
return call(
url: provider.url,
@ -71,35 +71,34 @@ class GetMangaDetailFamily extends Family<AsyncValue<MManga>> {
_allTransitiveDependencies;
@override
String? get name => r'getMangaDetailProvider';
String? get name => r'getDetailProvider';
}
/// See also [getMangaDetail].
class GetMangaDetailProvider extends AutoDisposeFutureProvider<MManga> {
/// See also [getMangaDetail].
GetMangaDetailProvider({
/// See also [getDetail].
class GetDetailProvider extends AutoDisposeFutureProvider<MManga> {
/// See also [getDetail].
GetDetailProvider({
required String url,
required Source source,
}) : this._internal(
(ref) => getMangaDetail(
ref as GetMangaDetailRef,
(ref) => getDetail(
ref as GetDetailRef,
url: url,
source: source,
),
from: getMangaDetailProvider,
name: r'getMangaDetailProvider',
from: getDetailProvider,
name: r'getDetailProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$getMangaDetailHash,
dependencies: GetMangaDetailFamily._dependencies,
allTransitiveDependencies:
GetMangaDetailFamily._allTransitiveDependencies,
: _$getDetailHash,
dependencies: GetDetailFamily._dependencies,
allTransitiveDependencies: GetDetailFamily._allTransitiveDependencies,
url: url,
source: source,
);
GetMangaDetailProvider._internal(
GetDetailProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
@ -115,12 +114,12 @@ class GetMangaDetailProvider extends AutoDisposeFutureProvider<MManga> {
@override
Override overrideWith(
FutureOr<MManga> Function(GetMangaDetailRef provider) create,
FutureOr<MManga> Function(GetDetailRef provider) create,
) {
return ProviderOverride(
origin: this,
override: GetMangaDetailProvider._internal(
(ref) => create(ref as GetMangaDetailRef),
override: GetDetailProvider._internal(
(ref) => create(ref as GetDetailRef),
from: from,
name: null,
dependencies: null,
@ -134,12 +133,12 @@ class GetMangaDetailProvider extends AutoDisposeFutureProvider<MManga> {
@override
AutoDisposeFutureProviderElement<MManga> createElement() {
return _GetMangaDetailProviderElement(this);
return _GetDetailProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is GetMangaDetailProvider &&
return other is GetDetailProvider &&
other.url == url &&
other.source == source;
}
@ -154,7 +153,7 @@ class GetMangaDetailProvider extends AutoDisposeFutureProvider<MManga> {
}
}
mixin GetMangaDetailRef on AutoDisposeFutureProviderRef<MManga> {
mixin GetDetailRef on AutoDisposeFutureProviderRef<MManga> {
/// The parameter `url` of this provider.
String get url;
@ -162,14 +161,14 @@ mixin GetMangaDetailRef on AutoDisposeFutureProviderRef<MManga> {
Source get source;
}
class _GetMangaDetailProviderElement
extends AutoDisposeFutureProviderElement<MManga> with GetMangaDetailRef {
_GetMangaDetailProviderElement(super.provider);
class _GetDetailProviderElement extends AutoDisposeFutureProviderElement<MManga>
with GetDetailRef {
_GetDetailProviderElement(super.provider);
@override
String get url => (origin as GetMangaDetailProvider).url;
String get url => (origin as GetDetailProvider).url;
@override
Source get source => (origin as GetMangaDetailProvider).source;
Source get source => (origin as GetDetailProvider).source;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member

View file

@ -1,16 +1,16 @@
import 'dart:async';
import 'package:mangayomi/eval/model/m_pages.dart';
import 'package:mangayomi/eval/compiler/compiler.dart';
import 'package:mangayomi/eval/model/source_provider.dart';
import 'package:mangayomi/eval/model/m_provider.dart';
import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/eval/runtime/runtime.dart';
import 'package:mangayomi/sources/source_test.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'get_latest_updates_manga.g.dart';
part 'get_latest_updates.g.dart';
@riverpod
Future<MPages?> getLatestUpdatesManga(
GetLatestUpdatesMangaRef ref, {
Future<MPages?> getLatestUpdates(
GetLatestUpdatesRef ref, {
required Source source,
required int page,
}) async {
@ -23,8 +23,8 @@ Future<MPages?> getLatestUpdatesManga(
final runtime = runtimeEval(bytecode);
var res = await runtime.executeLib('package:mangayomi/main.dart', 'main');
latestUpdatesManga = await (res as MSourceProvider)
.getLatestUpdates(source.toMSource(), 1);
latestUpdatesManga =
await (res as MProvider).getLatestUpdates(source.toMSource(), page);
} catch (e) {
throw Exception(e);
}

View file

@ -1,13 +1,12 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'get_latest_updates_manga.dart';
part of 'get_latest_updates.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$getLatestUpdatesMangaHash() =>
r'18b028e5a9dd359c19f1850819f0a46e50c0f27d';
String _$getLatestUpdatesHash() => r'19ccde133a23148dd90f29110b5f9804cd2cb942';
/// Copied from Dart SDK
class _SystemHash {
@ -30,29 +29,29 @@ class _SystemHash {
}
}
/// See also [getLatestUpdatesManga].
@ProviderFor(getLatestUpdatesManga)
const getLatestUpdatesMangaProvider = GetLatestUpdatesMangaFamily();
/// See also [getLatestUpdates].
@ProviderFor(getLatestUpdates)
const getLatestUpdatesProvider = GetLatestUpdatesFamily();
/// See also [getLatestUpdatesManga].
class GetLatestUpdatesMangaFamily extends Family<AsyncValue<MPages?>> {
/// See also [getLatestUpdatesManga].
const GetLatestUpdatesMangaFamily();
/// See also [getLatestUpdates].
class GetLatestUpdatesFamily extends Family<AsyncValue<MPages?>> {
/// See also [getLatestUpdates].
const GetLatestUpdatesFamily();
/// See also [getLatestUpdatesManga].
GetLatestUpdatesMangaProvider call({
/// See also [getLatestUpdates].
GetLatestUpdatesProvider call({
required Source source,
required int page,
}) {
return GetLatestUpdatesMangaProvider(
return GetLatestUpdatesProvider(
source: source,
page: page,
);
}
@override
GetLatestUpdatesMangaProvider getProviderOverride(
covariant GetLatestUpdatesMangaProvider provider,
GetLatestUpdatesProvider getProviderOverride(
covariant GetLatestUpdatesProvider provider,
) {
return call(
source: provider.source,
@ -72,35 +71,35 @@ class GetLatestUpdatesMangaFamily extends Family<AsyncValue<MPages?>> {
_allTransitiveDependencies;
@override
String? get name => r'getLatestUpdatesMangaProvider';
String? get name => r'getLatestUpdatesProvider';
}
/// See also [getLatestUpdatesManga].
class GetLatestUpdatesMangaProvider extends AutoDisposeFutureProvider<MPages?> {
/// See also [getLatestUpdatesManga].
GetLatestUpdatesMangaProvider({
/// See also [getLatestUpdates].
class GetLatestUpdatesProvider extends AutoDisposeFutureProvider<MPages?> {
/// See also [getLatestUpdates].
GetLatestUpdatesProvider({
required Source source,
required int page,
}) : this._internal(
(ref) => getLatestUpdatesManga(
ref as GetLatestUpdatesMangaRef,
(ref) => getLatestUpdates(
ref as GetLatestUpdatesRef,
source: source,
page: page,
),
from: getLatestUpdatesMangaProvider,
name: r'getLatestUpdatesMangaProvider',
from: getLatestUpdatesProvider,
name: r'getLatestUpdatesProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$getLatestUpdatesMangaHash,
dependencies: GetLatestUpdatesMangaFamily._dependencies,
: _$getLatestUpdatesHash,
dependencies: GetLatestUpdatesFamily._dependencies,
allTransitiveDependencies:
GetLatestUpdatesMangaFamily._allTransitiveDependencies,
GetLatestUpdatesFamily._allTransitiveDependencies,
source: source,
page: page,
);
GetLatestUpdatesMangaProvider._internal(
GetLatestUpdatesProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
@ -116,12 +115,12 @@ class GetLatestUpdatesMangaProvider extends AutoDisposeFutureProvider<MPages?> {
@override
Override overrideWith(
FutureOr<MPages?> Function(GetLatestUpdatesMangaRef provider) create,
FutureOr<MPages?> Function(GetLatestUpdatesRef provider) create,
) {
return ProviderOverride(
origin: this,
override: GetLatestUpdatesMangaProvider._internal(
(ref) => create(ref as GetLatestUpdatesMangaRef),
override: GetLatestUpdatesProvider._internal(
(ref) => create(ref as GetLatestUpdatesRef),
from: from,
name: null,
dependencies: null,
@ -135,12 +134,12 @@ class GetLatestUpdatesMangaProvider extends AutoDisposeFutureProvider<MPages?> {
@override
AutoDisposeFutureProviderElement<MPages?> createElement() {
return _GetLatestUpdatesMangaProviderElement(this);
return _GetLatestUpdatesProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is GetLatestUpdatesMangaProvider &&
return other is GetLatestUpdatesProvider &&
other.source == source &&
other.page == page;
}
@ -155,7 +154,7 @@ class GetLatestUpdatesMangaProvider extends AutoDisposeFutureProvider<MPages?> {
}
}
mixin GetLatestUpdatesMangaRef on AutoDisposeFutureProviderRef<MPages?> {
mixin GetLatestUpdatesRef on AutoDisposeFutureProviderRef<MPages?> {
/// The parameter `source` of this provider.
Source get source;
@ -163,15 +162,14 @@ mixin GetLatestUpdatesMangaRef on AutoDisposeFutureProviderRef<MPages?> {
int get page;
}
class _GetLatestUpdatesMangaProviderElement
extends AutoDisposeFutureProviderElement<MPages?>
with GetLatestUpdatesMangaRef {
_GetLatestUpdatesMangaProviderElement(super.provider);
class _GetLatestUpdatesProviderElement
extends AutoDisposeFutureProviderElement<MPages?> with GetLatestUpdatesRef {
_GetLatestUpdatesProviderElement(super.provider);
@override
Source get source => (origin as GetLatestUpdatesMangaProvider).source;
Source get source => (origin as GetLatestUpdatesProvider).source;
@override
int get page => (origin as GetLatestUpdatesMangaProvider).page;
int get page => (origin as GetLatestUpdatesProvider).page;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member

View file

@ -1,16 +1,16 @@
import 'dart:async';
import 'package:mangayomi/eval/model/m_pages.dart';
import 'package:mangayomi/eval/compiler/compiler.dart';
import 'package:mangayomi/eval/model/source_provider.dart';
import 'package:mangayomi/eval/model/m_provider.dart';
import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/eval/runtime/runtime.dart';
import 'package:mangayomi/sources/source_test.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'get_popular_manga.g.dart';
part 'get_popular.g.dart';
@riverpod
Future<MPages?> getPopularManga(
GetPopularMangaRef ref, {
Future<MPages?> getPopular(
GetPopularRef ref, {
required Source source,
required int page,
}) async {
@ -23,8 +23,8 @@ Future<MPages?> getPopularManga(
final runtime = runtimeEval(bytecode);
var res = runtime.executeLib('package:mangayomi/main.dart', 'main');
popularManga = await (res as MSourceProvider)
.getPopular(source.toMSource(), page);
popularManga =
await (res as MProvider).getPopular(source.toMSource(), page);
} catch (e) {
throw Exception(e);
}

View file

@ -1,12 +1,12 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'get_popular_manga.dart';
part of 'get_popular.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$getPopularMangaHash() => r'6dbb566dffd311195e5e98b2c49470435a6da8dd';
String _$getPopularHash() => r'9eb971f8ca52854efe7431010b93a998e425f9da';
/// Copied from Dart SDK
class _SystemHash {
@ -29,29 +29,29 @@ class _SystemHash {
}
}
/// See also [getPopularManga].
@ProviderFor(getPopularManga)
const getPopularMangaProvider = GetPopularMangaFamily();
/// See also [getPopular].
@ProviderFor(getPopular)
const getPopularProvider = GetPopularFamily();
/// See also [getPopularManga].
class GetPopularMangaFamily extends Family<AsyncValue<MPages?>> {
/// See also [getPopularManga].
const GetPopularMangaFamily();
/// See also [getPopular].
class GetPopularFamily extends Family<AsyncValue<MPages?>> {
/// See also [getPopular].
const GetPopularFamily();
/// See also [getPopularManga].
GetPopularMangaProvider call({
/// See also [getPopular].
GetPopularProvider call({
required Source source,
required int page,
}) {
return GetPopularMangaProvider(
return GetPopularProvider(
source: source,
page: page,
);
}
@override
GetPopularMangaProvider getProviderOverride(
covariant GetPopularMangaProvider provider,
GetPopularProvider getProviderOverride(
covariant GetPopularProvider provider,
) {
return call(
source: provider.source,
@ -71,35 +71,35 @@ class GetPopularMangaFamily extends Family<AsyncValue<MPages?>> {
_allTransitiveDependencies;
@override
String? get name => r'getPopularMangaProvider';
String? get name => r'getPopularProvider';
}
/// See also [getPopularManga].
class GetPopularMangaProvider extends AutoDisposeFutureProvider<MPages?> {
/// See also [getPopularManga].
GetPopularMangaProvider({
/// See also [getPopular].
class GetPopularProvider extends AutoDisposeFutureProvider<MPages?> {
/// See also [getPopular].
GetPopularProvider({
required Source source,
required int page,
}) : this._internal(
(ref) => getPopularManga(
ref as GetPopularMangaRef,
(ref) => getPopular(
ref as GetPopularRef,
source: source,
page: page,
),
from: getPopularMangaProvider,
name: r'getPopularMangaProvider',
from: getPopularProvider,
name: r'getPopularProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$getPopularMangaHash,
dependencies: GetPopularMangaFamily._dependencies,
: _$getPopularHash,
dependencies: GetPopularFamily._dependencies,
allTransitiveDependencies:
GetPopularMangaFamily._allTransitiveDependencies,
GetPopularFamily._allTransitiveDependencies,
source: source,
page: page,
);
GetPopularMangaProvider._internal(
GetPopularProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
@ -115,12 +115,12 @@ class GetPopularMangaProvider extends AutoDisposeFutureProvider<MPages?> {
@override
Override overrideWith(
FutureOr<MPages?> Function(GetPopularMangaRef provider) create,
FutureOr<MPages?> Function(GetPopularRef provider) create,
) {
return ProviderOverride(
origin: this,
override: GetPopularMangaProvider._internal(
(ref) => create(ref as GetPopularMangaRef),
override: GetPopularProvider._internal(
(ref) => create(ref as GetPopularRef),
from: from,
name: null,
dependencies: null,
@ -134,12 +134,12 @@ class GetPopularMangaProvider extends AutoDisposeFutureProvider<MPages?> {
@override
AutoDisposeFutureProviderElement<MPages?> createElement() {
return _GetPopularMangaProviderElement(this);
return _GetPopularProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is GetPopularMangaProvider &&
return other is GetPopularProvider &&
other.source == source &&
other.page == page;
}
@ -154,7 +154,7 @@ class GetPopularMangaProvider extends AutoDisposeFutureProvider<MPages?> {
}
}
mixin GetPopularMangaRef on AutoDisposeFutureProviderRef<MPages?> {
mixin GetPopularRef on AutoDisposeFutureProviderRef<MPages?> {
/// The parameter `source` of this provider.
Source get source;
@ -162,14 +162,14 @@ mixin GetPopularMangaRef on AutoDisposeFutureProviderRef<MPages?> {
int get page;
}
class _GetPopularMangaProviderElement
extends AutoDisposeFutureProviderElement<MPages?> with GetPopularMangaRef {
_GetPopularMangaProviderElement(super.provider);
class _GetPopularProviderElement
extends AutoDisposeFutureProviderElement<MPages?> with GetPopularRef {
_GetPopularProviderElement(super.provider);
@override
Source get source => (origin as GetPopularMangaProvider).source;
Source get source => (origin as GetPopularProvider).source;
@override
int get page => (origin as GetPopularMangaProvider).page;
int get page => (origin as GetPopularProvider).page;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member

View file

@ -1,6 +1,6 @@
import 'dart:async';
import 'dart:io';
import 'package:mangayomi/eval/model/source_provider.dart';
import 'package:mangayomi/eval/model/m_provider.dart';
import 'package:mangayomi/eval/compiler/compiler.dart';
import 'package:mangayomi/models/chapter.dart';
import 'package:mangayomi/models/video.dart';
@ -9,11 +9,11 @@ import 'package:mangayomi/providers/storage_provider.dart';
import 'package:mangayomi/sources/utils/utils.dart';
import 'package:mangayomi/sources/source_test.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'get_anime_servers.g.dart';
part 'get_video_list.g.dart';
@riverpod
Future<(List<Video>, bool)> getAnimeServers(
GetAnimeServersRef ref, {
Future<(List<Video>, bool)> getVideoList(
GetVideoListRef ref, {
required Chapter episode,
}) async {
final storageProvider = StorageProvider();
@ -33,7 +33,7 @@ Future<(List<Video>, bool)> getAnimeServers(
final runtime = runtimeEval(bytecode);
var res = runtime.executeLib('package:mangayomi/main.dart', 'main');
final dd = (await (res as MSourceProvider)
.getVideoList(source.toMSource(), episode.url!));
final dd =
(await (res as MProvider).getVideoList(source.toMSource(), episode.url!));
return (dd, false);
}

View file

@ -1,12 +1,12 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'get_anime_servers.dart';
part of 'get_video_list.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$getAnimeServersHash() => r'52f2430695b5d250be23d18725ae21ca5753376c';
String _$getVideoListHash() => r'924c2961d148f9ebb0952239c0528d5269a4526a';
/// Copied from Dart SDK
class _SystemHash {
@ -29,27 +29,27 @@ class _SystemHash {
}
}
/// See also [getAnimeServers].
@ProviderFor(getAnimeServers)
const getAnimeServersProvider = GetAnimeServersFamily();
/// See also [getVideoList].
@ProviderFor(getVideoList)
const getVideoListProvider = GetVideoListFamily();
/// See also [getAnimeServers].
class GetAnimeServersFamily extends Family<AsyncValue<(List<Video>, bool)>> {
/// See also [getAnimeServers].
const GetAnimeServersFamily();
/// See also [getVideoList].
class GetVideoListFamily extends Family<AsyncValue<(List<Video>, bool)>> {
/// See also [getVideoList].
const GetVideoListFamily();
/// See also [getAnimeServers].
GetAnimeServersProvider call({
/// See also [getVideoList].
GetVideoListProvider call({
required Chapter episode,
}) {
return GetAnimeServersProvider(
return GetVideoListProvider(
episode: episode,
);
}
@override
GetAnimeServersProvider getProviderOverride(
covariant GetAnimeServersProvider provider,
GetVideoListProvider getProviderOverride(
covariant GetVideoListProvider provider,
) {
return call(
episode: provider.episode,
@ -68,33 +68,33 @@ class GetAnimeServersFamily extends Family<AsyncValue<(List<Video>, bool)>> {
_allTransitiveDependencies;
@override
String? get name => r'getAnimeServersProvider';
String? get name => r'getVideoListProvider';
}
/// See also [getAnimeServers].
class GetAnimeServersProvider
/// See also [getVideoList].
class GetVideoListProvider
extends AutoDisposeFutureProvider<(List<Video>, bool)> {
/// See also [getAnimeServers].
GetAnimeServersProvider({
/// See also [getVideoList].
GetVideoListProvider({
required Chapter episode,
}) : this._internal(
(ref) => getAnimeServers(
ref as GetAnimeServersRef,
(ref) => getVideoList(
ref as GetVideoListRef,
episode: episode,
),
from: getAnimeServersProvider,
name: r'getAnimeServersProvider',
from: getVideoListProvider,
name: r'getVideoListProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$getAnimeServersHash,
dependencies: GetAnimeServersFamily._dependencies,
: _$getVideoListHash,
dependencies: GetVideoListFamily._dependencies,
allTransitiveDependencies:
GetAnimeServersFamily._allTransitiveDependencies,
GetVideoListFamily._allTransitiveDependencies,
episode: episode,
);
GetAnimeServersProvider._internal(
GetVideoListProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
@ -108,12 +108,12 @@ class GetAnimeServersProvider
@override
Override overrideWith(
FutureOr<(List<Video>, bool)> Function(GetAnimeServersRef provider) create,
FutureOr<(List<Video>, bool)> Function(GetVideoListRef provider) create,
) {
return ProviderOverride(
origin: this,
override: GetAnimeServersProvider._internal(
(ref) => create(ref as GetAnimeServersRef),
override: GetVideoListProvider._internal(
(ref) => create(ref as GetVideoListRef),
from: from,
name: null,
dependencies: null,
@ -126,12 +126,12 @@ class GetAnimeServersProvider
@override
AutoDisposeFutureProviderElement<(List<Video>, bool)> createElement() {
return _GetAnimeServersProviderElement(this);
return _GetVideoListProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is GetAnimeServersProvider && other.episode == episode;
return other is GetVideoListProvider && other.episode == episode;
}
@override
@ -143,18 +143,18 @@ class GetAnimeServersProvider
}
}
mixin GetAnimeServersRef on AutoDisposeFutureProviderRef<(List<Video>, bool)> {
mixin GetVideoListRef on AutoDisposeFutureProviderRef<(List<Video>, bool)> {
/// The parameter `episode` of this provider.
Chapter get episode;
}
class _GetAnimeServersProviderElement
class _GetVideoListProviderElement
extends AutoDisposeFutureProviderElement<(List<Video>, bool)>
with GetAnimeServersRef {
_GetAnimeServersProviderElement(super.provider);
with GetVideoListRef {
_GetVideoListProviderElement(super.provider);
@override
Chapter get episode => (origin as GetAnimeServersProvider).episode;
Chapter get episode => (origin as GetVideoListProvider).episode;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member

View file

@ -1,15 +1,15 @@
import 'package:mangayomi/eval/model/m_pages.dart';
import 'package:mangayomi/eval/compiler/compiler.dart';
import 'package:mangayomi/eval/model/source_provider.dart';
import 'package:mangayomi/eval/model/m_provider.dart';
import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/eval/runtime/runtime.dart';
import 'package:mangayomi/sources/source_test.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'search_manga.g.dart';
part 'search.g.dart';
@riverpod
Future<MPages?> searchManga(
SearchMangaRef ref, {
Future<MPages?> search(
SearchRef ref, {
required Source source,
required String query,
required int page,
@ -20,7 +20,7 @@ Future<MPages?> searchManga(
final runtime = runtimeEval(bytecode);
var res = runtime.executeLib('package:mangayomi/main.dart', 'main');
try {
manga = await (res as MSourceProvider)
manga = await (res as MProvider)
.search(source.toMSource(), query, page);
} catch (e) {
throw Exception(e);

View file

@ -1,12 +1,12 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'search_manga.dart';
part of 'search.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$searchMangaHash() => r'f1a2af2f06c967c647ed803f8199de711a84bb49';
String _$searchHash() => r'a387d6ddc86044bba9c8264c8bec6c1c29393ac5';
/// Copied from Dart SDK
class _SystemHash {
@ -29,22 +29,22 @@ class _SystemHash {
}
}
/// See also [searchManga].
@ProviderFor(searchManga)
const searchMangaProvider = SearchMangaFamily();
/// See also [search].
@ProviderFor(search)
const searchProvider = SearchFamily();
/// See also [searchManga].
class SearchMangaFamily extends Family<AsyncValue<MPages?>> {
/// See also [searchManga].
const SearchMangaFamily();
/// See also [search].
class SearchFamily extends Family<AsyncValue<MPages?>> {
/// See also [search].
const SearchFamily();
/// See also [searchManga].
SearchMangaProvider call({
/// See also [search].
SearchProvider call({
required Source source,
required String query,
required int page,
}) {
return SearchMangaProvider(
return SearchProvider(
source: source,
query: query,
page: page,
@ -52,8 +52,8 @@ class SearchMangaFamily extends Family<AsyncValue<MPages?>> {
}
@override
SearchMangaProvider getProviderOverride(
covariant SearchMangaProvider provider,
SearchProvider getProviderOverride(
covariant SearchProvider provider,
) {
return call(
source: provider.source,
@ -74,38 +74,37 @@ class SearchMangaFamily extends Family<AsyncValue<MPages?>> {
_allTransitiveDependencies;
@override
String? get name => r'searchMangaProvider';
String? get name => r'searchProvider';
}
/// See also [searchManga].
class SearchMangaProvider extends AutoDisposeFutureProvider<MPages?> {
/// See also [searchManga].
SearchMangaProvider({
/// See also [search].
class SearchProvider extends AutoDisposeFutureProvider<MPages?> {
/// See also [search].
SearchProvider({
required Source source,
required String query,
required int page,
}) : this._internal(
(ref) => searchManga(
ref as SearchMangaRef,
(ref) => search(
ref as SearchRef,
source: source,
query: query,
page: page,
),
from: searchMangaProvider,
name: r'searchMangaProvider',
from: searchProvider,
name: r'searchProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$searchMangaHash,
dependencies: SearchMangaFamily._dependencies,
allTransitiveDependencies:
SearchMangaFamily._allTransitiveDependencies,
: _$searchHash,
dependencies: SearchFamily._dependencies,
allTransitiveDependencies: SearchFamily._allTransitiveDependencies,
source: source,
query: query,
page: page,
);
SearchMangaProvider._internal(
SearchProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
@ -123,12 +122,12 @@ class SearchMangaProvider extends AutoDisposeFutureProvider<MPages?> {
@override
Override overrideWith(
FutureOr<MPages?> Function(SearchMangaRef provider) create,
FutureOr<MPages?> Function(SearchRef provider) create,
) {
return ProviderOverride(
origin: this,
override: SearchMangaProvider._internal(
(ref) => create(ref as SearchMangaRef),
override: SearchProvider._internal(
(ref) => create(ref as SearchRef),
from: from,
name: null,
dependencies: null,
@ -143,12 +142,12 @@ class SearchMangaProvider extends AutoDisposeFutureProvider<MPages?> {
@override
AutoDisposeFutureProviderElement<MPages?> createElement() {
return _SearchMangaProviderElement(this);
return _SearchProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is SearchMangaProvider &&
return other is SearchProvider &&
other.source == source &&
other.query == query &&
other.page == page;
@ -165,7 +164,7 @@ class SearchMangaProvider extends AutoDisposeFutureProvider<MPages?> {
}
}
mixin SearchMangaRef on AutoDisposeFutureProviderRef<MPages?> {
mixin SearchRef on AutoDisposeFutureProviderRef<MPages?> {
/// The parameter `source` of this provider.
Source get source;
@ -176,16 +175,16 @@ mixin SearchMangaRef on AutoDisposeFutureProviderRef<MPages?> {
int get page;
}
class _SearchMangaProviderElement
extends AutoDisposeFutureProviderElement<MPages?> with SearchMangaRef {
_SearchMangaProviderElement(super.provider);
class _SearchProviderElement extends AutoDisposeFutureProviderElement<MPages?>
with SearchRef {
_SearchProviderElement(super.provider);
@override
Source get source => (origin as SearchMangaProvider).source;
Source get source => (origin as SearchProvider).source;
@override
String get query => (origin as SearchMangaProvider).query;
String get query => (origin as SearchProvider).query;
@override
int get page => (origin as SearchMangaProvider).page;
int get page => (origin as SearchProvider).page;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member