diff --git a/analysis_options.yaml b/analysis_options.yaml index 99f5ff0..f4455b2 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -20,3 +20,5 @@ analyzer: - "android/**" - "windows/**" - "macos/**" + errors: + invalid_annotation_target: ignore diff --git a/flutter_rust_bridge.yaml b/flutter_rust_bridge.yaml index e15ed91..3e1550c 100644 --- a/flutter_rust_bridge.yaml +++ b/flutter_rust_bridge.yaml @@ -1,3 +1,4 @@ rust_input: crate::api rust_root: rust/ -dart_output: lib/src/rust \ No newline at end of file +dart_output: lib/src/rust +web: false \ No newline at end of file diff --git a/lib/common/models/isar/diary.dart b/lib/common/models/isar/diary.dart index 56ac048..ce4662d 100644 --- a/lib/common/models/isar/diary.dart +++ b/lib/common/models/isar/diary.dart @@ -67,6 +67,12 @@ class Diary { // 位置信息 List position = []; + // 关键词 + List keywords = []; + + // 分词 + List tokenizer = []; + // 类型,富文本还是纯文本,不会为空,延迟加载 late String type; @@ -97,6 +103,8 @@ class Diary { const ListEquality().equals(videoName, other.videoName) && const ListEquality().equals(tags, other.tags) && const ListEquality().equals(position, other.position) && + const ListEquality().equals(keywords, other.keywords) && + const ListEquality().equals(tokenizer, other.tokenizer) && type == other.type && imageColor == other.imageColor && aspect == other.aspect; @@ -118,6 +126,8 @@ class Diary { const ListEquality().hash(videoName) ^ const ListEquality().hash(tags) ^ const ListEquality().hash(position) ^ + const ListEquality().hash(keywords) ^ + const ListEquality().hash(tokenizer) ^ type.hashCode ^ imageColor.hashCode ^ aspect.hashCode; @@ -145,6 +155,8 @@ class Diary { ..videoName = List.from(videoName) ..tags = List.from(tags) ..position = List.from(position) + ..keywords = List.from(keywords) + ..tokenizer = List.from(tokenizer) ..type = type ..imageColor = imageColor ..aspect = aspect; @@ -168,6 +180,8 @@ class Diary { 'videoName': videoName, 'tags': tags, 'position': position, + 'keywords': keywords, + 'tokenizer': tokenizer, 'type': type, 'imageColor': imageColor, 'aspect': aspect, @@ -191,6 +205,8 @@ class Diary { ..videoName = List.from(json['videoName'] as List) ..tags = List.from(json['tags'] as List) ..position = List.from(json['position'] as List) + ..keywords = List.from(json['keywords'] as List) + ..tokenizer = List.from(json['tokenizer'] as List) ..type = json['type'] as String ..imageColor = json['imageColor'] as int? ..aspect = (json['aspect'] as num?)?.toDouble(); diff --git a/lib/common/models/isar/diary.g.dart b/lib/common/models/isar/diary.g.dart index 172d834..3057d7b 100644 --- a/lib/common/models/isar/diary.g.dart +++ b/lib/common/models/isar/diary.g.dart @@ -35,6 +35,8 @@ const DiarySchema = IsarGeneratedSchema( IsarPropertySchema(name: 'videoName', type: IsarType.stringList), IsarPropertySchema(name: 'tags', type: IsarType.stringList), IsarPropertySchema(name: 'position', type: IsarType.stringList), + IsarPropertySchema(name: 'keywords', type: IsarType.stringList), + IsarPropertySchema(name: 'tokenizer', type: IsarType.stringList), IsarPropertySchema(name: 'type', type: IsarType.string), IsarPropertySchema(name: 'imageColor', type: IsarType.long), IsarPropertySchema(name: 'aspect', type: IsarType.double), @@ -152,11 +154,27 @@ int serializeDiary(IsarWriter writer, Diary object) { } IsarCore.endList(writer, listWriter); } - IsarCore.writeString(writer, 16, object.type); - IsarCore.writeLong(writer, 17, object.imageColor ?? -9223372036854775808); - IsarCore.writeDouble(writer, 18, object.aspect ?? double.nan); - IsarCore.writeString(writer, 19, object.yM); - IsarCore.writeString(writer, 20, object.yMd); + { + final list = object.keywords; + final listWriter = IsarCore.beginList(writer, 16, list.length); + for (var i = 0; i < list.length; i++) { + IsarCore.writeString(listWriter, i, list[i]); + } + IsarCore.endList(writer, listWriter); + } + { + final list = object.tokenizer; + final listWriter = IsarCore.beginList(writer, 17, list.length); + for (var i = 0; i < list.length; i++) { + IsarCore.writeString(listWriter, i, list[i]); + } + IsarCore.endList(writer, listWriter); + } + IsarCore.writeString(writer, 18, object.type); + IsarCore.writeLong(writer, 19, object.imageColor ?? -9223372036854775808); + IsarCore.writeDouble(writer, 20, object.aspect ?? double.nan); + IsarCore.writeString(writer, 21, object.yM); + IsarCore.writeString(writer, 22, object.yMd); return object.isarId; } @@ -286,9 +304,41 @@ Diary deserializeDiary(IsarReader reader) { } } } - object.type = IsarCore.readString(reader, 16) ?? ''; { - final value = IsarCore.readLong(reader, 17); + final length = IsarCore.readList(reader, 16, IsarCore.readerPtrPtr); + { + final reader = IsarCore.readerPtr; + if (reader.isNull) { + object.keywords = const []; + } else { + final list = List.filled(length, '', growable: true); + for (var i = 0; i < length; i++) { + list[i] = IsarCore.readString(reader, i) ?? ''; + } + IsarCore.freeReader(reader); + object.keywords = list; + } + } + } + { + final length = IsarCore.readList(reader, 17, IsarCore.readerPtrPtr); + { + final reader = IsarCore.readerPtr; + if (reader.isNull) { + object.tokenizer = const []; + } else { + final list = List.filled(length, '', growable: true); + for (var i = 0; i < length; i++) { + list[i] = IsarCore.readString(reader, i) ?? ''; + } + IsarCore.freeReader(reader); + object.tokenizer = list; + } + } + } + object.type = IsarCore.readString(reader, 18) ?? ''; + { + final value = IsarCore.readLong(reader, 19); if (value == -9223372036854775808) { object.imageColor = null; } else { @@ -296,7 +346,7 @@ Diary deserializeDiary(IsarReader reader) { } } { - final value = IsarCore.readDouble(reader, 18); + final value = IsarCore.readDouble(reader, 20); if (value.isNaN) { object.aspect = null; } else { @@ -450,19 +500,53 @@ dynamic deserializeDiaryProp(IsarReader reader, int property) { } } case 16: - return IsarCore.readString(reader, 16) ?? ''; + { + final length = IsarCore.readList(reader, 16, IsarCore.readerPtrPtr); + { + final reader = IsarCore.readerPtr; + if (reader.isNull) { + return const []; + } else { + final list = List.filled(length, '', growable: true); + for (var i = 0; i < length; i++) { + list[i] = IsarCore.readString(reader, i) ?? ''; + } + IsarCore.freeReader(reader); + return list; + } + } + } case 17: { - final value = IsarCore.readLong(reader, 17); + final length = IsarCore.readList(reader, 17, IsarCore.readerPtrPtr); + { + final reader = IsarCore.readerPtr; + if (reader.isNull) { + return const []; + } else { + final list = List.filled(length, '', growable: true); + for (var i = 0; i < length; i++) { + list[i] = IsarCore.readString(reader, i) ?? ''; + } + IsarCore.freeReader(reader); + return list; + } + } + } + case 18: + return IsarCore.readString(reader, 18) ?? ''; + case 19: + { + final value = IsarCore.readLong(reader, 19); if (value == -9223372036854775808) { return null; } else { return value; } } - case 18: + case 20: { - final value = IsarCore.readDouble(reader, 18); + final value = IsarCore.readDouble(reader, 20); if (value.isNaN) { return null; } else { @@ -471,10 +555,10 @@ dynamic deserializeDiaryProp(IsarReader reader, int property) { } case 0: return IsarCore.readId(reader); - case 19: - return IsarCore.readString(reader, 19) ?? ''; - case 20: - return IsarCore.readString(reader, 20) ?? ''; + case 21: + return IsarCore.readString(reader, 21) ?? ''; + case 22: + return IsarCore.readString(reader, 22) ?? ''; default: throw ArgumentError('Unknown property: $property'); } @@ -535,11 +619,11 @@ class _DiaryUpdateImpl implements _DiaryUpdate { if (lastModified != ignore) 7: lastModified as DateTime?, if (show != ignore) 8: show as bool?, if (mood != ignore) 9: mood as double?, - if (type != ignore) 16: type as String?, - if (imageColor != ignore) 17: imageColor as int?, - if (aspect != ignore) 18: aspect as double?, - if (yM != ignore) 19: yM as String?, - if (yMd != ignore) 20: yMd as String?, + if (type != ignore) 18: type as String?, + if (imageColor != ignore) 19: imageColor as int?, + if (aspect != ignore) 20: aspect as double?, + if (yM != ignore) 21: yM as String?, + if (yMd != ignore) 22: yMd as String?, }, ) > 0; @@ -599,11 +683,11 @@ class _DiaryUpdateAllImpl implements _DiaryUpdateAll { if (lastModified != ignore) 7: lastModified as DateTime?, if (show != ignore) 8: show as bool?, if (mood != ignore) 9: mood as double?, - if (type != ignore) 16: type as String?, - if (imageColor != ignore) 17: imageColor as int?, - if (aspect != ignore) 18: aspect as double?, - if (yM != ignore) 19: yM as String?, - if (yMd != ignore) 20: yMd as String?, + if (type != ignore) 18: type as String?, + if (imageColor != ignore) 19: imageColor as int?, + if (aspect != ignore) 20: aspect as double?, + if (yM != ignore) 21: yM as String?, + if (yMd != ignore) 22: yMd as String?, }); } } @@ -666,11 +750,11 @@ class _DiaryQueryUpdateImpl implements _DiaryQueryUpdate { if (lastModified != ignore) 7: lastModified as DateTime?, if (show != ignore) 8: show as bool?, if (mood != ignore) 9: mood as double?, - if (type != ignore) 16: type as String?, - if (imageColor != ignore) 17: imageColor as int?, - if (aspect != ignore) 18: aspect as double?, - if (yM != ignore) 19: yM as String?, - if (yMd != ignore) 20: yMd as String?, + if (type != ignore) 18: type as String?, + if (imageColor != ignore) 19: imageColor as int?, + if (aspect != ignore) 20: aspect as double?, + if (yM != ignore) 21: yM as String?, + if (yMd != ignore) 22: yMd as String?, }); } } @@ -716,11 +800,11 @@ class _DiaryQueryBuilderUpdateImpl implements _DiaryQueryUpdate { if (lastModified != ignore) 7: lastModified as DateTime?, if (show != ignore) 8: show as bool?, if (mood != ignore) 9: mood as double?, - if (type != ignore) 16: type as String?, - if (imageColor != ignore) 17: imageColor as int?, - if (aspect != ignore) 18: aspect as double?, - if (yM != ignore) 19: yM as String?, - if (yMd != ignore) 20: yMd as String?, + if (type != ignore) 18: type as String?, + if (imageColor != ignore) 19: imageColor as int?, + if (aspect != ignore) 20: aspect as double?, + if (yM != ignore) 21: yM as String?, + if (yMd != ignore) 22: yMd as String?, }); } finally { q.close(); @@ -1732,6 +1816,7 @@ extension DiaryQueryFilter on QueryBuilder { property: 9, lower: lower, upper: upper, + epsilon: epsilon, ), ); @@ -2789,7 +2874,7 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeEqualTo( + QueryBuilder keywordsElementEqualTo( String value, { bool caseSensitive = true, }) { @@ -2804,7 +2889,7 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeGreaterThan( + QueryBuilder keywordsElementGreaterThan( String value, { bool caseSensitive = true, }) { @@ -2819,7 +2904,8 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeGreaterThanOrEqualTo( + QueryBuilder + keywordsElementGreaterThanOrEqualTo( String value, { bool caseSensitive = true, }) { @@ -2834,7 +2920,7 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeLessThan( + QueryBuilder keywordsElementLessThan( String value, { bool caseSensitive = true, }) { @@ -2845,10 +2931,8 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeLessThanOrEqualTo( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder + keywordsElementLessThanOrEqualTo(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( LessOrEqualCondition( @@ -2860,7 +2944,7 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeBetween( + QueryBuilder keywordsElementBetween( String lower, String upper, { bool caseSensitive = true, @@ -2877,7 +2961,7 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeStartsWith( + QueryBuilder keywordsElementStartsWith( String value, { bool caseSensitive = true, }) { @@ -2892,7 +2976,7 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeEndsWith( + QueryBuilder keywordsElementEndsWith( String value, { bool caseSensitive = true, }) { @@ -2907,7 +2991,7 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeContains( + QueryBuilder keywordsElementContains( String value, { bool caseSensitive = true, }) { @@ -2922,7 +3006,7 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeMatches( + QueryBuilder keywordsElementMatches( String pattern, { bool caseSensitive = true, }) { @@ -2937,7 +3021,7 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeIsEmpty() { + QueryBuilder keywordsElementIsEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( const EqualCondition(property: 16, value: ''), @@ -2945,7 +3029,8 @@ extension DiaryQueryFilter on QueryBuilder { }); } - QueryBuilder typeIsNotEmpty() { + QueryBuilder + keywordsElementIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( const GreaterCondition(property: 16, value: ''), @@ -2953,15 +3038,367 @@ extension DiaryQueryFilter on QueryBuilder { }); } + QueryBuilder keywordsIsEmpty() { + return not().keywordsIsNotEmpty(); + } + + QueryBuilder keywordsIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const GreaterOrEqualCondition(property: 16, value: null), + ); + }); + } + + QueryBuilder tokenizerElementEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + EqualCondition( + property: 17, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder tokenizerElementGreaterThan( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + GreaterCondition( + property: 17, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + tokenizerElementGreaterThanOrEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + GreaterOrEqualCondition( + property: 17, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder tokenizerElementLessThan( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + LessCondition(property: 17, value: value, caseSensitive: caseSensitive), + ); + }); + } + + QueryBuilder + tokenizerElementLessThanOrEqualTo(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + LessOrEqualCondition( + property: 17, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder tokenizerElementBetween( + String lower, + String upper, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + BetweenCondition( + property: 17, + lower: lower, + upper: upper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder tokenizerElementStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + StartsWithCondition( + property: 17, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder tokenizerElementEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + EndsWithCondition( + property: 17, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder tokenizerElementContains( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + ContainsCondition( + property: 17, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder tokenizerElementMatches( + String pattern, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + MatchesCondition( + property: 17, + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder tokenizerElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const EqualCondition(property: 17, value: ''), + ); + }); + } + + QueryBuilder + tokenizerElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const GreaterCondition(property: 17, value: ''), + ); + }); + } + + QueryBuilder tokenizerIsEmpty() { + return not().tokenizerIsNotEmpty(); + } + + QueryBuilder tokenizerIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const GreaterOrEqualCondition(property: 17, value: null), + ); + }); + } + + QueryBuilder typeEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + EqualCondition( + property: 18, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder typeGreaterThan( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + GreaterCondition( + property: 18, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder typeGreaterThanOrEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + GreaterOrEqualCondition( + property: 18, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder typeLessThan( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + LessCondition(property: 18, value: value, caseSensitive: caseSensitive), + ); + }); + } + + QueryBuilder typeLessThanOrEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + LessOrEqualCondition( + property: 18, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder typeBetween( + String lower, + String upper, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + BetweenCondition( + property: 18, + lower: lower, + upper: upper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder typeStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + StartsWithCondition( + property: 18, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder typeEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + EndsWithCondition( + property: 18, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder typeContains( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + ContainsCondition( + property: 18, + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder typeMatches( + String pattern, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + MatchesCondition( + property: 18, + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder typeIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const EqualCondition(property: 18, value: ''), + ); + }); + } + + QueryBuilder typeIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const GreaterCondition(property: 18, value: ''), + ); + }); + } + QueryBuilder imageColorIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const IsNullCondition(property: 17)); + return query.addFilterCondition(const IsNullCondition(property: 19)); }); } QueryBuilder imageColorIsNotNull() { return QueryBuilder.apply(not(), (query) { - return query.addFilterCondition(const IsNullCondition(property: 17)); + return query.addFilterCondition(const IsNullCondition(property: 19)); }); } @@ -2970,7 +3407,7 @@ extension DiaryQueryFilter on QueryBuilder { ) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - EqualCondition(property: 17, value: value), + EqualCondition(property: 19, value: value), ); }); } @@ -2980,7 +3417,7 @@ extension DiaryQueryFilter on QueryBuilder { ) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - GreaterCondition(property: 17, value: value), + GreaterCondition(property: 19, value: value), ); }); } @@ -2989,7 +3426,7 @@ extension DiaryQueryFilter on QueryBuilder { imageColorGreaterThanOrEqualTo(int? value) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - GreaterOrEqualCondition(property: 17, value: value), + GreaterOrEqualCondition(property: 19, value: value), ); }); } @@ -2999,7 +3436,7 @@ extension DiaryQueryFilter on QueryBuilder { ) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - LessCondition(property: 17, value: value), + LessCondition(property: 19, value: value), ); }); } @@ -3009,7 +3446,7 @@ extension DiaryQueryFilter on QueryBuilder { ) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - LessOrEqualCondition(property: 17, value: value), + LessOrEqualCondition(property: 19, value: value), ); }); } @@ -3020,20 +3457,20 @@ extension DiaryQueryFilter on QueryBuilder { ) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - BetweenCondition(property: 17, lower: lower, upper: upper), + BetweenCondition(property: 19, lower: lower, upper: upper), ); }); } QueryBuilder aspectIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const IsNullCondition(property: 18)); + return query.addFilterCondition(const IsNullCondition(property: 20)); }); } QueryBuilder aspectIsNotNull() { return QueryBuilder.apply(not(), (query) { - return query.addFilterCondition(const IsNullCondition(property: 18)); + return query.addFilterCondition(const IsNullCondition(property: 20)); }); } @@ -3043,7 +3480,7 @@ extension DiaryQueryFilter on QueryBuilder { }) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - EqualCondition(property: 18, value: value, epsilon: epsilon), + EqualCondition(property: 20, value: value, epsilon: epsilon), ); }); } @@ -3054,7 +3491,7 @@ extension DiaryQueryFilter on QueryBuilder { }) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - GreaterCondition(property: 18, value: value, epsilon: epsilon), + GreaterCondition(property: 20, value: value, epsilon: epsilon), ); }); } @@ -3065,7 +3502,7 @@ extension DiaryQueryFilter on QueryBuilder { }) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - GreaterOrEqualCondition(property: 18, value: value, epsilon: epsilon), + GreaterOrEqualCondition(property: 20, value: value, epsilon: epsilon), ); }); } @@ -3076,7 +3513,7 @@ extension DiaryQueryFilter on QueryBuilder { }) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - LessCondition(property: 18, value: value, epsilon: epsilon), + LessCondition(property: 20, value: value, epsilon: epsilon), ); }); } @@ -3087,7 +3524,7 @@ extension DiaryQueryFilter on QueryBuilder { }) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - LessOrEqualCondition(property: 18, value: value, epsilon: epsilon), + LessOrEqualCondition(property: 20, value: value, epsilon: epsilon), ); }); } @@ -3100,9 +3537,10 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( BetweenCondition( - property: 18, + property: 20, lower: lower, upper: upper, + epsilon: epsilon, ), ); @@ -3171,7 +3609,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( EqualCondition( - property: 19, + property: 21, value: value, caseSensitive: caseSensitive, ), @@ -3186,7 +3624,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( GreaterCondition( - property: 19, + property: 21, value: value, caseSensitive: caseSensitive, ), @@ -3201,7 +3639,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( GreaterOrEqualCondition( - property: 19, + property: 21, value: value, caseSensitive: caseSensitive, ), @@ -3215,7 +3653,7 @@ extension DiaryQueryFilter on QueryBuilder { }) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - LessCondition(property: 19, value: value, caseSensitive: caseSensitive), + LessCondition(property: 21, value: value, caseSensitive: caseSensitive), ); }); } @@ -3227,7 +3665,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( LessOrEqualCondition( - property: 19, + property: 21, value: value, caseSensitive: caseSensitive, ), @@ -3243,7 +3681,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( BetweenCondition( - property: 19, + property: 21, lower: lower, upper: upper, caseSensitive: caseSensitive, @@ -3259,7 +3697,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( StartsWithCondition( - property: 19, + property: 21, value: value, caseSensitive: caseSensitive, ), @@ -3274,7 +3712,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( EndsWithCondition( - property: 19, + property: 21, value: value, caseSensitive: caseSensitive, ), @@ -3289,7 +3727,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( ContainsCondition( - property: 19, + property: 21, value: value, caseSensitive: caseSensitive, ), @@ -3304,7 +3742,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( MatchesCondition( - property: 19, + property: 21, wildcard: pattern, caseSensitive: caseSensitive, ), @@ -3315,7 +3753,7 @@ extension DiaryQueryFilter on QueryBuilder { QueryBuilder yMIsEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - const EqualCondition(property: 19, value: ''), + const EqualCondition(property: 21, value: ''), ); }); } @@ -3323,7 +3761,7 @@ extension DiaryQueryFilter on QueryBuilder { QueryBuilder yMIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - const GreaterCondition(property: 19, value: ''), + const GreaterCondition(property: 21, value: ''), ); }); } @@ -3335,7 +3773,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( EqualCondition( - property: 20, + property: 22, value: value, caseSensitive: caseSensitive, ), @@ -3350,7 +3788,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( GreaterCondition( - property: 20, + property: 22, value: value, caseSensitive: caseSensitive, ), @@ -3365,7 +3803,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( GreaterOrEqualCondition( - property: 20, + property: 22, value: value, caseSensitive: caseSensitive, ), @@ -3379,7 +3817,7 @@ extension DiaryQueryFilter on QueryBuilder { }) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - LessCondition(property: 20, value: value, caseSensitive: caseSensitive), + LessCondition(property: 22, value: value, caseSensitive: caseSensitive), ); }); } @@ -3391,7 +3829,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( LessOrEqualCondition( - property: 20, + property: 22, value: value, caseSensitive: caseSensitive, ), @@ -3407,7 +3845,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( BetweenCondition( - property: 20, + property: 22, lower: lower, upper: upper, caseSensitive: caseSensitive, @@ -3423,7 +3861,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( StartsWithCondition( - property: 20, + property: 22, value: value, caseSensitive: caseSensitive, ), @@ -3438,7 +3876,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( EndsWithCondition( - property: 20, + property: 22, value: value, caseSensitive: caseSensitive, ), @@ -3453,7 +3891,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( ContainsCondition( - property: 20, + property: 22, value: value, caseSensitive: caseSensitive, ), @@ -3468,7 +3906,7 @@ extension DiaryQueryFilter on QueryBuilder { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( MatchesCondition( - property: 20, + property: 22, wildcard: pattern, caseSensitive: caseSensitive, ), @@ -3479,7 +3917,7 @@ extension DiaryQueryFilter on QueryBuilder { QueryBuilder yMdIsEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - const EqualCondition(property: 20, value: ''), + const EqualCondition(property: 22, value: ''), ); }); } @@ -3487,7 +3925,7 @@ extension DiaryQueryFilter on QueryBuilder { QueryBuilder yMdIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition( - const GreaterCondition(property: 20, value: ''), + const GreaterCondition(property: 22, value: ''), ); }); } @@ -3628,7 +4066,7 @@ extension DiaryQuerySortBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(16, caseSensitive: caseSensitive); + return query.addSortBy(18, caseSensitive: caseSensitive); }); } @@ -3636,31 +4074,31 @@ extension DiaryQuerySortBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(16, sort: Sort.desc, caseSensitive: caseSensitive); + return query.addSortBy(18, sort: Sort.desc, caseSensitive: caseSensitive); }); } QueryBuilder sortByImageColor() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(17); + return query.addSortBy(19); }); } QueryBuilder sortByImageColorDesc() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(17, sort: Sort.desc); + return query.addSortBy(19, sort: Sort.desc); }); } QueryBuilder sortByAspect() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(18); + return query.addSortBy(20); }); } QueryBuilder sortByAspectDesc() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(18, sort: Sort.desc); + return query.addSortBy(20, sort: Sort.desc); }); } @@ -3680,7 +4118,7 @@ extension DiaryQuerySortBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(19, caseSensitive: caseSensitive); + return query.addSortBy(21, caseSensitive: caseSensitive); }); } @@ -3688,7 +4126,7 @@ extension DiaryQuerySortBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(19, sort: Sort.desc, caseSensitive: caseSensitive); + return query.addSortBy(21, sort: Sort.desc, caseSensitive: caseSensitive); }); } @@ -3696,7 +4134,7 @@ extension DiaryQuerySortBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(20, caseSensitive: caseSensitive); + return query.addSortBy(22, caseSensitive: caseSensitive); }); } @@ -3704,7 +4142,7 @@ extension DiaryQuerySortBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(20, sort: Sort.desc, caseSensitive: caseSensitive); + return query.addSortBy(22, sort: Sort.desc, caseSensitive: caseSensitive); }); } } @@ -3842,7 +4280,7 @@ extension DiaryQuerySortThenBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(16, caseSensitive: caseSensitive); + return query.addSortBy(18, caseSensitive: caseSensitive); }); } @@ -3850,31 +4288,31 @@ extension DiaryQuerySortThenBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(16, sort: Sort.desc, caseSensitive: caseSensitive); + return query.addSortBy(18, sort: Sort.desc, caseSensitive: caseSensitive); }); } QueryBuilder thenByImageColor() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(17); + return query.addSortBy(19); }); } QueryBuilder thenByImageColorDesc() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(17, sort: Sort.desc); + return query.addSortBy(19, sort: Sort.desc); }); } QueryBuilder thenByAspect() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(18); + return query.addSortBy(20); }); } QueryBuilder thenByAspectDesc() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(18, sort: Sort.desc); + return query.addSortBy(20, sort: Sort.desc); }); } @@ -3894,7 +4332,7 @@ extension DiaryQuerySortThenBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(19, caseSensitive: caseSensitive); + return query.addSortBy(21, caseSensitive: caseSensitive); }); } @@ -3902,7 +4340,7 @@ extension DiaryQuerySortThenBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(19, sort: Sort.desc, caseSensitive: caseSensitive); + return query.addSortBy(21, sort: Sort.desc, caseSensitive: caseSensitive); }); } @@ -3910,7 +4348,7 @@ extension DiaryQuerySortThenBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(20, caseSensitive: caseSensitive); + return query.addSortBy(22, caseSensitive: caseSensitive); }); } @@ -3918,7 +4356,7 @@ extension DiaryQuerySortThenBy on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addSortBy(20, sort: Sort.desc, caseSensitive: caseSensitive); + return query.addSortBy(22, sort: Sort.desc, caseSensitive: caseSensitive); }); } } @@ -4024,23 +4462,35 @@ extension DiaryQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByType({ - bool caseSensitive = true, - }) { + QueryBuilder distinctByKeywords() { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(16, caseSensitive: caseSensitive); + return query.addDistinctBy(16); }); } - QueryBuilder distinctByImageColor() { + QueryBuilder distinctByTokenizer() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(17); }); } + QueryBuilder distinctByType({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(18, caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByImageColor() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(19); + }); + } + QueryBuilder distinctByAspect() { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(18); + return query.addDistinctBy(20); }); } @@ -4048,7 +4498,7 @@ extension DiaryQueryWhereDistinct on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(19, caseSensitive: caseSensitive); + return query.addDistinctBy(21, caseSensitive: caseSensitive); }); } @@ -4056,7 +4506,7 @@ extension DiaryQueryWhereDistinct on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(20, caseSensitive: caseSensitive); + return query.addDistinctBy(22, caseSensitive: caseSensitive); }); } } @@ -4152,24 +4602,36 @@ extension DiaryQueryProperty1 on QueryBuilder { }); } - QueryBuilder typeProperty() { + QueryBuilder, QAfterProperty> keywordsProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(16); }); } - QueryBuilder imageColorProperty() { + QueryBuilder, QAfterProperty> tokenizerProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(17); }); } - QueryBuilder aspectProperty() { + QueryBuilder typeProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(18); }); } + QueryBuilder imageColorProperty() { + return QueryBuilder.apply(this, (query) { + return query.addProperty(19); + }); + } + + QueryBuilder aspectProperty() { + return QueryBuilder.apply(this, (query) { + return query.addProperty(20); + }); + } + QueryBuilder isarIdProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(0); @@ -4178,13 +4640,13 @@ extension DiaryQueryProperty1 on QueryBuilder { QueryBuilder yMProperty() { return QueryBuilder.apply(this, (query) { - return query.addProperty(19); + return query.addProperty(21); }); } QueryBuilder yMdProperty() { return QueryBuilder.apply(this, (query) { - return query.addProperty(20); + return query.addProperty(22); }); } } @@ -4280,24 +4742,36 @@ extension DiaryQueryProperty2 on QueryBuilder { }); } - QueryBuilder typeProperty() { + QueryBuilder), QAfterProperty> keywordsProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(16); }); } - QueryBuilder imageColorProperty() { + QueryBuilder), QAfterProperty> tokenizerProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(17); }); } - QueryBuilder aspectProperty() { + QueryBuilder typeProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(18); }); } + QueryBuilder imageColorProperty() { + return QueryBuilder.apply(this, (query) { + return query.addProperty(19); + }); + } + + QueryBuilder aspectProperty() { + return QueryBuilder.apply(this, (query) { + return query.addProperty(20); + }); + } + QueryBuilder isarIdProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(0); @@ -4306,13 +4780,13 @@ extension DiaryQueryProperty2 on QueryBuilder { QueryBuilder yMProperty() { return QueryBuilder.apply(this, (query) { - return query.addProperty(19); + return query.addProperty(21); }); } QueryBuilder yMdProperty() { return QueryBuilder.apply(this, (query) { - return query.addProperty(20); + return query.addProperty(22); }); } } @@ -4409,24 +4883,36 @@ extension DiaryQueryProperty3 }); } - QueryBuilder typeProperty() { + QueryBuilder), QOperations> keywordsProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(16); }); } - QueryBuilder imageColorProperty() { + QueryBuilder), QOperations> tokenizerProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(17); }); } - QueryBuilder aspectProperty() { + QueryBuilder typeProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(18); }); } + QueryBuilder imageColorProperty() { + return QueryBuilder.apply(this, (query) { + return query.addProperty(19); + }); + } + + QueryBuilder aspectProperty() { + return QueryBuilder.apply(this, (query) { + return query.addProperty(20); + }); + } + QueryBuilder isarIdProperty() { return QueryBuilder.apply(this, (query) { return query.addProperty(0); @@ -4435,13 +4921,13 @@ extension DiaryQueryProperty3 QueryBuilder yMProperty() { return QueryBuilder.apply(this, (query) { - return query.addProperty(19); + return query.addProperty(21); }); } QueryBuilder yMdProperty() { return QueryBuilder.apply(this, (query) { - return query.addProperty(20); + return query.addProperty(22); }); } } diff --git a/lib/components/base/image.dart b/lib/components/base/image.dart index 533e9fe..6e4d4e2 100644 --- a/lib/components/base/image.dart +++ b/lib/components/base/image.dart @@ -4,7 +4,6 @@ import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:moodiary/utils/cache_util.dart'; -import 'package:moodiary/utils/log_util.dart'; final kTransparentImage = Uint8List.fromList([ 0x89, @@ -149,7 +148,7 @@ class _MoodiaryImageState extends State { void _loadImage() async { _loadState.value = _ImageLoadState.loading; try { - logger.d('Image loaded from path: ${widget.imagePath}'); + //logger.d('Image loaded from path: ${widget.imagePath}'); final imageAspect = await ImageCacheUtil().getImageAspectRatioWithCache( imagePath: widget.imagePath, ); diff --git a/lib/components/base/sheet.dart b/lib/components/base/sheet.dart index 033a99c..97c6633 100644 --- a/lib/components/base/sheet.dart +++ b/lib/components/base/sheet.dart @@ -17,7 +17,7 @@ class FloatingModal extends StatelessWidget { @override Widget build(BuildContext context) { - final padding = MediaQuery.viewPaddingOf(context); + final padding = MediaQuery.viewInsetsOf(context); final size = MediaQuery.sizeOf(context); final maxHeight = isScrollControlled @@ -26,12 +26,12 @@ class FloatingModal extends StatelessWidget { return Align( alignment: Alignment.bottomCenter, child: ConstrainedBox( - constraints: BoxConstraints(maxHeight: maxHeight, maxWidth: 640), + constraints: BoxConstraints(maxHeight: maxHeight+padding.bottom, maxWidth: 640), child: Padding( padding: EdgeInsets.only( left: 16, right: 16, - bottom: max(padding.bottom, 16), + bottom: max(padding.bottom + 16, 16), ), child: Material( color: context.theme.colorScheme.surfaceContainerHigh, diff --git a/lib/components/search_card/search_card_logic.dart b/lib/components/search_card/search_card_logic.dart deleted file mode 100644 index 2dcd717..0000000 --- a/lib/components/search_card/search_card_logic.dart +++ /dev/null @@ -1,16 +0,0 @@ -import 'package:get/get.dart'; -import 'package:moodiary/common/models/isar/diary.dart'; -import 'package:moodiary/pages/diary_details/diary_details_logic.dart'; -import 'package:moodiary/router/app_routes.dart'; - -import 'search_card_state.dart'; - -class SearchCardLogic extends GetxController { - final SearchCardState state = SearchCardState(); - - //选中卡片后跳转到详情页,直接携带Diary作为参数 - Future toDiaryPage(Diary diary) async { - Bind.lazyPut(() => DiaryDetailsLogic(), tag: diary.id); - await Get.toNamed(AppRoutes.diaryPage, arguments: [diary.clone(), false]); - } -} diff --git a/lib/components/search_card/search_card_state.dart b/lib/components/search_card/search_card_state.dart deleted file mode 100644 index 2d8306c..0000000 --- a/lib/components/search_card/search_card_state.dart +++ /dev/null @@ -1,5 +0,0 @@ -class SearchCardState { - SearchCardState() { - ///Initialize variables - } -} diff --git a/lib/components/search_card/search_card_view.dart b/lib/components/search_card/search_card_view.dart index fdf274e..9842a8e 100644 --- a/lib/components/search_card/search_card_view.dart +++ b/lib/components/search_card/search_card_view.dart @@ -1,58 +1,123 @@ +import 'package:dartx/dartx.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:moodiary/common/models/isar/diary.dart'; import 'package:moodiary/common/values/border.dart'; +import 'package:moodiary/components/base/text.dart'; +import 'package:moodiary/pages/diary_details/diary_details_logic.dart'; +import 'package:moodiary/router/app_routes.dart'; +import 'package:substring_highlight/substring_highlight.dart'; -import 'search_card_logic.dart'; +String getHighlightedExcerpt( + String content, + List keywords, { + int contextLength = 50, +}) { + for (final word in keywords) { + final index = content.indexOf(word); + if (index != -1) { + final wordStart = index; + final wordEnd = index + word.length; + + int start = wordStart - contextLength; + int end = wordEnd + contextLength; + + if (start < 0) { + end += -start; + start = 0; + } + if (end > content.length) { + final overflow = end - content.length; + start = (start - overflow).clamp(0, content.length); + end = content.length; + } + + final snippet = content.substring(start, end); + + final hasHead = start > 0; + final hasTail = end < content.length; + + return "${hasHead ? '...' : ''}$snippet${hasTail ? '...' : ''}"; + } + } + + // 没有关键词命中,返回默认摘要 + final fallback = content.length > 200 ? content.substring(0, 200) : content; + return "${fallback.trimRight()}${content.length > 200 ? '...' : ''}"; +} class SearchCardComponent extends StatelessWidget { const SearchCardComponent({ super.key, required this.diary, - required this.index, + required this.queryList, }); + final List queryList; + final Diary diary; - final String index; @override Widget build(BuildContext context) { - final logic = Bind.find(tag: index); - - return GetBuilder( - tag: index, - assignId: true, - builder: (_) { - return InkWell( - onTap: () { - logic.toDiaryPage(diary); - }, - child: Container( - decoration: BoxDecoration( - color: context.theme.colorScheme.surfaceContainerHighest, - borderRadius: AppBorderRadius.smallBorderRadius, - ), - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - diary.contentText, - overflow: TextOverflow.ellipsis, - maxLines: 1, - ), - Text(diary.time.toString().split('.')[0]), - ], - ), - ), - ], - ), - ), + final contentText = getHighlightedExcerpt( + diary.contentText.removeLineBreaks(), + queryList, + ); + final title = diary.title.removeLineBreaks(); + return InkWell( + onTap: () async { + Bind.lazyPut(() => DiaryDetailsLogic(), tag: diary.id); + await Get.toNamed( + AppRoutes.diaryPage, + arguments: [diary.clone(), false], ); }, + child: Container( + decoration: BoxDecoration( + color: context.theme.colorScheme.surfaceContainerHighest, + borderRadius: AppBorderRadius.smallBorderRadius, + ), + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 4.0, + children: [ + if (title.isNotBlank) + SubstringHighlight( + text: title, + terms: queryList, + maxLines: 1, + overflow: TextOverflow.ellipsis, + textStyle: context.textTheme.titleMedium!.copyWith( + color: context.theme.colorScheme.onSurface, + ), + textStyleHighlight: context.textTheme.titleMedium! + .copyWith( + backgroundColor: context.theme.colorScheme.primary, + color: context.theme.colorScheme.onPrimary, + ), + ), + SubstringHighlight( + text: contentText, + terms: queryList, + textStyle: context.textTheme.bodyMedium!.copyWith( + color: context.theme.colorScheme.onSurface, + ), + textStyleHighlight: context.textTheme.bodyMedium!.copyWith( + backgroundColor: context.theme.colorScheme.primary, + color: context.theme.colorScheme.onPrimary, + ), + ), + Text(diary.time.toString().split('.')[0]), + ], + ), + ), + ], + ), + ), ); } } diff --git a/lib/components/search_sheet/search_sheet_logic.dart b/lib/components/search_sheet/search_sheet_logic.dart index 25c02fa..2cd21e7 100644 --- a/lib/components/search_sheet/search_sheet_logic.dart +++ b/lib/components/search_sheet/search_sheet_logic.dart @@ -1,6 +1,13 @@ +import 'dart:async'; + +import 'package:dartx/dartx.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:moodiary/common/values/keyboard_state.dart'; +import 'package:moodiary/components/keyboard_listener/keyboard_listener.dart'; import 'package:moodiary/persistence/isar.dart'; +import 'package:moodiary/src/rust/api/jieba.dart'; +import 'package:throttling/throttling.dart'; import 'search_sheet_state.dart'; @@ -9,27 +16,97 @@ class SearchSheetLogic extends GetxController { late TextEditingController textEditingController = TextEditingController(); late FocusNode focusNode = FocusNode(); + late final KeyboardObserver _keyboardObserver; + + late final Throttling _throttling = Throttling( + duration: const Duration(milliseconds: 500), + ); + + String _lastText = ''; + + Timer? _timer; + + @override + void onInit() { + _keyboardObserver = KeyboardObserver( + onHeightChanged: (height) { + if (height > 0) { + state.keyboardHeight.value = height; + } + }, + onStateChanged: (state) { + switch (state) { + case KeyboardState.opening: + break; + case KeyboardState.closing: + unFocus(); + break; + case KeyboardState.closed: + break; + case KeyboardState.unknown: + break; + } + }, + ); + _keyboardObserver.start(); + textEditingController.addListener(() { + _throttling.throttle(() async { + await doSearch(); + }); + }); + + _timer = Timer.periodic(const Duration(milliseconds: 500), (_) async { + final currentText = textEditingController.text.trim(); + if (currentText != _lastText) { + _lastText = currentText; + if (currentText.isNotBlank) { + await doSearch(); + } else { + clear(); + } + } + }); + super.onInit(); + } + @override void onClose() { + _keyboardObserver.stop(); textEditingController.dispose(); focusNode.dispose(); + _throttling.close(); + _timer?.cancel(); + _timer = null; super.onClose(); } - void clearSearch() { - state.searchList = []; + void unFocus() { + focusNode.unfocus(); + } + + void clear() { + state.searchList.clear(); + state.totalCount.value = 0; + state.queryList = []; + state.isSearching.value = false; update(); } - Future search() async { - focusNode.unfocus(); - if (textEditingController.text != '') { - state.isSearching.value = true; - state.searchList = await IsarUtil.searchDiaries( - textEditingController.text, - ); - state.totalCount.value = state.searchList.length; - state.isSearching.value = false; + Future doSearch() async { + final currentText = textEditingController.text.trim(); + if (currentText == _lastText) { + return; } + if (currentText.isBlank) { + clear(); + return; + } + state.isSearching.value = true; + _lastText = currentText; + final queryList = await JiebaRs.cutForSearch(text: _lastText, hmm: true); + state.searchList = await IsarUtil.searchDiaries(queryList: queryList); + state.totalCount.value = state.searchList.length; + state.queryList = queryList; + state.isSearching.value = false; } } diff --git a/lib/components/search_sheet/search_sheet_state.dart b/lib/components/search_sheet/search_sheet_state.dart index d57a482..c7c5109 100644 --- a/lib/components/search_sheet/search_sheet_state.dart +++ b/lib/components/search_sheet/search_sheet_state.dart @@ -9,6 +9,10 @@ class SearchSheetState { late RxInt totalCount; + RxDouble keyboardHeight = 0.0.obs; + + late List queryList = []; + SearchSheetState() { searchList = []; isSearching = false.obs; diff --git a/lib/components/search_sheet/search_sheet_view.dart b/lib/components/search_sheet/search_sheet_view.dart index 9d26e35..2cdafad 100644 --- a/lib/components/search_sheet/search_sheet_view.dart +++ b/lib/components/search_sheet/search_sheet_view.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:gap/gap.dart'; import 'package:get/get.dart'; import 'package:moodiary/common/values/border.dart'; -import 'package:moodiary/components/search_card/search_card_logic.dart'; import 'package:moodiary/components/search_card/search_card_view.dart'; import 'package:moodiary/l10n/l10n.dart'; @@ -21,12 +22,7 @@ class SearchSheetComponent extends StatelessWidget { return Column( children: [ Padding( - padding: const EdgeInsets.only( - left: 8.0, - right: 8.0, - top: 8.0, - bottom: 4.0, - ), + padding: const EdgeInsets.all(8.0), child: TextField( maxLines: 1, controller: logic.textEditingController, @@ -40,8 +36,8 @@ class SearchSheetComponent extends StatelessWidget { filled: true, labelText: context.l10n.diarySearch, suffixIcon: IconButton( - onPressed: () { - logic.search(); + onPressed: () async { + await logic.doSearch(); }, icon: const Icon(Icons.search), ), @@ -49,32 +45,57 @@ class SearchSheetComponent extends StatelessWidget { ), ), Obx(() { - return Expanded( - child: - state.isSearching.value - ? const Center(child: CircularProgressIndicator()) - : ListView.builder( - itemCount: state.searchList.length, - padding: EdgeInsets.zero, - itemBuilder: (context, index) { - Bind.lazyPut( - () => SearchCardLogic(), - tag: index.toString(), - ); - return Padding( - padding: const EdgeInsets.only( - left: 8.0, - right: 8.0, - top: 4.0, - bottom: 4.0, - ), - child: SearchCardComponent( - diary: state.searchList[index], - index: index.toString(), - ), - ); - }, + Widget child; + if (state.isSearching.value && state.searchList.isEmpty) { + child = const Center( + key: ValueKey('loading'), + child: CircularProgressIndicator(), + ); + } else if (state.searchList.isEmpty) { + child = Center( + key: const ValueKey('empty'), + child: FaIcon( + FontAwesomeIcons.boxOpen, + color: context.theme.colorScheme.onSurface, + size: 56, + ), + ); + } else { + child = Stack( + children: [ + Positioned.fill( + child: ListView.separated( + itemCount: state.searchList.length, + padding: const EdgeInsets.symmetric(horizontal: 8.0), + itemBuilder: (context, index) { + return SearchCardComponent( + diary: state.searchList[index], + queryList: state.queryList, + ); + }, + separatorBuilder: (_, _) => const Gap(8.0), + ), + ), + if (state.isSearching.value && state.searchList.isNotEmpty) + Positioned.fill( + child: Container( + color: context.theme.colorScheme.surfaceContainer + .withValues(alpha: 0.8), + child: const Center( + key: ValueKey('loading2'), + child: CircularProgressIndicator(), + ), ), + ), + ], + ); + } + + return Expanded( + child: AnimatedSwitcher( + duration: Durations.short3, + child: child, + ), ); }), Padding( diff --git a/lib/pages/edit/edit_logic.dart b/lib/pages/edit/edit_logic.dart index 21a40ed..2edda62 100644 --- a/lib/pages/edit/edit_logic.dart +++ b/lib/pages/edit/edit_logic.dart @@ -13,6 +13,7 @@ import 'package:moodiary/api/api.dart'; import 'package:moodiary/common/models/isar/diary.dart'; import 'package:moodiary/common/values/diary_type.dart'; import 'package:moodiary/common/values/keyboard_state.dart'; +import 'package:moodiary/components/base/text.dart'; import 'package:moodiary/components/keyboard_listener/keyboard_listener.dart'; import 'package:moodiary/components/quill_embed/audio_embed.dart'; import 'package:moodiary/components/quill_embed/image_embed.dart'; @@ -22,6 +23,7 @@ import 'package:moodiary/l10n/l10n.dart'; import 'package:moodiary/persistence/isar.dart'; import 'package:moodiary/persistence/pref.dart'; import 'package:moodiary/router/app_routes.dart'; +import 'package:moodiary/src/rust/api/jieba.dart'; import 'package:moodiary/src/rust/api/kmp.dart'; import 'package:moodiary/utils/file_util.dart'; import 'package:moodiary/utils/markdown_util.dart'; @@ -435,14 +437,25 @@ class EditLogic extends GetxController { text: originContent, replacements: {...imageNameMap, ...videoNameMap, ...audioNameMap}, ); + final contentText = _toPlainText().removeLineBreaks(); + final tokenizer = await JiebaRs.cutAll(text: contentText); + final keywords = await JiebaRs.extractKeywordsTfidf( + text: contentText, + topK: BigInt.from(5), + allowedPos: [], + ); + final sortByWeight = keywords..sort((a, b) => b.weight.compareTo(a.weight)); + final sortedKeywords = sortByWeight.map((e) => e.keyword).toList(); state.currentDiary ..title = titleTextEditingController.text ..content = content ..type = state.type.value - ..contentText = _toPlainText() + ..contentText = contentText ..audioName = state.audioNameList ..imageName = imageNameMap.values.toList() ..videoName = videoNameMap.values.toList() + ..tokenizer = tokenizer + ..keywords = sortedKeywords ..imageColor = await getCoverColor() ..aspect = await getCoverAspect(); diff --git a/lib/pages/laboratory/laboratory_logic.dart b/lib/pages/laboratory/laboratory_logic.dart index 6a4313e..91a04ac 100644 --- a/lib/pages/laboratory/laboratory_logic.dart +++ b/lib/pages/laboratory/laboratory_logic.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:io'; import 'package:get/get.dart'; +import 'package:moodiary/persistence/isar.dart'; import 'package:moodiary/persistence/pref.dart'; import 'package:moodiary/utils/aes_util.dart'; import 'package:moodiary/utils/cache_util.dart'; @@ -85,4 +86,13 @@ class LaboratoryLogic extends GetxController { return false; } } + + bool generateFTSAndKeyword() { + try { + IsarUtil.mergeToV2_7_4(FileUtil.getRealPath('database', '')); + return true; + } catch (e) { + return false; + } + } } diff --git a/lib/pages/laboratory/laboratory_view.dart b/lib/pages/laboratory/laboratory_view.dart index 1a10535..d262245 100644 --- a/lib/pages/laboratory/laboratory_view.dart +++ b/lib/pages/laboratory/laboratory_view.dart @@ -108,6 +108,18 @@ class LaboratoryPage extends StatelessWidget { }, title: const Text('清理图片缩略图缓存'), ), + const Gap(12), + ListTile( + onTap: () async { + final res = logic.generateFTSAndKeyword(); + if (res) { + toast.success(message: '重新生成成功'); + } else { + toast.error(message: '重新生成失败'); + } + }, + title: const Text('重新进行全文搜索索引'), + ), ], ); }, diff --git a/lib/persistence/isar.dart b/lib/persistence/isar.dart index 0748dbc..b9f5da6 100644 --- a/lib/persistence/isar.dart +++ b/lib/persistence/isar.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:collection'; import 'dart:convert'; import 'package:flutter/material.dart'; @@ -11,10 +12,12 @@ import 'package:moodiary/common/models/isar/font.dart'; import 'package:moodiary/common/models/isar/sync_record.dart'; import 'package:moodiary/common/models/map.dart'; import 'package:moodiary/common/values/diary_type.dart'; +import 'package:moodiary/components/base/text.dart'; import 'package:moodiary/components/quill_embed/audio_embed.dart'; import 'package:moodiary/components/quill_embed/image_embed.dart'; import 'package:moodiary/components/quill_embed/video_embed.dart'; import 'package:moodiary/persistence/pref.dart'; +import 'package:moodiary/src/rust/api/jieba.dart'; import 'package:moodiary/utils/file_util.dart'; import 'package:moodiary/utils/webdav_util.dart'; import 'package:path/path.dart'; @@ -201,28 +204,38 @@ class IsarUtil { } } - //查询日记 - static Future> searchDiaries(String value) async { - final contentResults = - await _isar.diarys - .where() - .showEqualTo(true) - .contentTextContains(value) - .findAllAsync(); - final titleResults = - await _isar.diarys - .where() - .showEqualTo(true) - .titleContains(value) - .findAllAsync(); + static Future> searchDiaries({ + required List queryList, + }) async { + if (queryList.isEmpty) return []; - // 合并并去重 - final combinedResults = {...contentResults, ...titleResults}.toList(); + // 收集所有匹配关键词的内容结果 + final HashSet results = HashSet( + equals: (a, b) { + return a.isarId == b.isarId; + }, + hashCode: (e) { + return e.isarId; + }, + ); - // 按时间排序 - combinedResults.sort((a, b) => b.time.compareTo(a.time)); + for (final word in queryList) { + final matches = + await _isar.diarys + .where() + .showEqualTo(true) + .tokenizerElementMatches(word, caseSensitive: false) + .or() + .titleContains(word, caseSensitive: false) + .findAllAsync(); + results.addAll(matches); + } - return combinedResults; + // 按时间降序排序 + final List sortedResults = + results.toList()..sort((a, b) => b.time.compareTo(a.time)); + + return sortedResults; } static Future> searchDiariesByTag(String value) async { @@ -435,6 +448,37 @@ class IsarUtil { isar.close(); } + /// 2.7.4 版本变更 + /// 新增字段 + /// 1. keywords 关键词 + /// 2. tokenizer 分词器 + static Future mergeToV2_7_4(String dir) async { + final countDiary = _isar.diarys.where().count(); + for (var i = 0; i < countDiary; i += 50) { + final diaries = await _isar.diarys.where().findAllAsync( + offset: i, + limit: 50, + ); + for (final diary in diaries) { + final newContent = diary.contentText.removeLineBreaks(); + diary.tokenizer = await JiebaRs.cutAll(text: newContent); + final keywords = await JiebaRs.extractKeywordsTfidf( + text: newContent, + topK: BigInt.from(5), + allowedPos: [], + ); + final sortByWeight = + keywords..sort((a, b) => b.weight.compareTo(a.weight)); + final sortedKeywords = sortByWeight.map((e) => e.keyword).toList(); + diary.keywords = sortedKeywords; + diary.contentText = newContent; + await _isar.writeAsync((isar) { + isar.diarys.put(diary); + }); + } + } + } + /// 2.6.3 修复 /// 修复之前webdav同步时,没有同步分类的问题 /// 遍历所有日记,如果本地没有日记的分类,就创建一个分类,名称为分类名 diff --git a/lib/src/rust/api/aes.dart b/lib/src/rust/api/aes.dart index 64d6ae4..9071007 100644 --- a/lib/src/rust/api/aes.dart +++ b/lib/src/rust/api/aes.dart @@ -3,9 +3,8 @@ // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; - import '../frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; // Rust type: RustOpaqueMoi> abstract class AesEncryption implements RustOpaqueInterface { diff --git a/lib/src/rust/api/compress.dart b/lib/src/rust/api/compress.dart index 559d23c..0820fe7 100644 --- a/lib/src/rust/api/compress.dart +++ b/lib/src/rust/api/compress.dart @@ -3,31 +3,13 @@ // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; - import '../frb_generated.dart'; import 'constants.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; -// These functions are ignored because they are not marked as `pub`: `calculate_target_dimensions`, `load_image` +// These functions are ignored because they are not marked as `pub`: `calculate_target_dimensions`, `compress` // These types are ignored because they are neither used by any `pub` functions nor (for structs and enums) marked `#[frb(unignore)]`: `ResizeOptions` -Future compress({ - required DynamicImage img, - required int dstHeight, - required int dstWidth, - required CompressFormat compressFormat, - required int quality, -}) => RustLib.instance.api.crateApiCompressCompress( - img: img, - dstHeight: dstHeight, - dstWidth: dstWidth, - compressFormat: compressFormat, - quality: quality, -); - -// Rust type: RustOpaqueMoi> -abstract class DynamicImage implements RustOpaqueInterface {} - // Rust type: RustOpaqueMoi> abstract class ImageCompress implements RustOpaqueInterface { static Future containWithOptions({ diff --git a/lib/src/rust/api/constants.dart b/lib/src/rust/api/constants.dart index 40fc11c..1459b8e 100644 --- a/lib/src/rust/api/constants.dart +++ b/lib/src/rust/api/constants.dart @@ -3,9 +3,8 @@ // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; - import '../frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; // These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `eq` diff --git a/lib/src/rust/api/font.dart b/lib/src/rust/api/font.dart index 1bec250..6dbe881 100644 --- a/lib/src/rust/api/font.dart +++ b/lib/src/rust/api/font.dart @@ -3,9 +3,8 @@ // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; - import '../frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; // Rust type: RustOpaqueMoi> abstract class FontReader implements RustOpaqueInterface { diff --git a/lib/src/rust/api/jieba.dart b/lib/src/rust/api/jieba.dart new file mode 100644 index 0000000..4988a4a --- /dev/null +++ b/lib/src/rust/api/jieba.dart @@ -0,0 +1,58 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.9.0. + +// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import + +import '../frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +// These functions are ignored because they are not marked as `pub`: `convert_keywords`, `get_instance`, `init_global`, `new` +// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `clone`, `fmt` + +// Rust type: RustOpaqueMoi> +abstract class JiebaRs implements RustOpaqueInterface { + static Future> cut({required String text, required bool hmm}) => + RustLib.instance.api.crateApiJiebaJiebaRsCut(text: text, hmm: hmm); + + static Future> cutAll({required String text}) => + RustLib.instance.api.crateApiJiebaJiebaRsCutAll(text: text); + + static Future> cutForSearch({ + required String text, + required bool hmm, + }) => RustLib.instance.api.crateApiJiebaJiebaRsCutForSearch( + text: text, + hmm: hmm, + ); + + static Future> extractKeywordsTextRank({ + required String text, + required BigInt topK, + required List allowedPos, + }) => RustLib.instance.api.crateApiJiebaJiebaRsExtractKeywordsTextRank( + text: text, + topK: topK, + allowedPos: allowedPos, + ); + + static Future> extractKeywordsTfidf({ + required String text, + required BigInt topK, + required List allowedPos, + }) => RustLib.instance.api.crateApiJiebaJiebaRsExtractKeywordsTfidf( + text: text, + topK: topK, + allowedPos: allowedPos, + ); +} + +// Rust type: RustOpaqueMoi> +abstract class Keyword implements RustOpaqueInterface { + String get keyword; + + double get weight; + + set keyword(String keyword); + + set weight(double weight); +} diff --git a/lib/src/rust/api/kmp.dart b/lib/src/rust/api/kmp.dart index 050292c..e63bfa9 100644 --- a/lib/src/rust/api/kmp.dart +++ b/lib/src/rust/api/kmp.dart @@ -3,9 +3,8 @@ // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; - import '../frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; Future buildPrefixTable({required List pattern}) => RustLib.instance.api.crateApiKmpBuildPrefixTable(pattern: pattern); diff --git a/lib/src/rust/api/zip.dart b/lib/src/rust/api/zip.dart index 504faca..41e61ca 100644 --- a/lib/src/rust/api/zip.dart +++ b/lib/src/rust/api/zip.dart @@ -3,9 +3,8 @@ // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; - import '../frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; // These functions are ignored because they are not marked as `pub`: `read_file_to_vec` diff --git a/lib/src/rust/frb_generated.dart b/lib/src/rust/frb_generated.dart index 1f73666..f856cc3 100644 --- a/lib/src/rust/frb_generated.dart +++ b/lib/src/rust/frb_generated.dart @@ -3,20 +3,19 @@ // ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field -import 'dart:async'; -import 'dart:convert'; - -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; - import 'api/aes.dart'; import 'api/compress.dart'; import 'api/constants.dart'; import 'api/font.dart'; +import 'api/jieba.dart'; import 'api/kmp.dart'; import 'api/zip.dart'; +import 'dart:async'; +import 'dart:convert'; import 'frb_generated.dart'; import 'frb_generated.io.dart' -if (dart.library.js_interop) 'frb_generated.webated.dart'; + if (dart.library.js_interop) 'frb_generated.web.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; /// Main entrypoint of the Rust API class RustLib extends BaseEntrypoint { @@ -59,7 +58,9 @@ class RustLib extends BaseEntrypoint { RustLibWire.fromExternalLibrary; @override - Future executeRustInitializers() async {} + Future executeRustInitializers() async { + await api.crateApiJiebaInitJieba(); + } @override ExternalLibraryLoaderConfig get defaultExternalLibraryLoaderConfig => @@ -69,7 +70,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.9.0'; @override - int get rustContentHash => 199828844; + int get rustContentHash => 1525123801; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( @@ -115,6 +116,44 @@ abstract class RustLibApi extends BaseApi { int? quality, }); + Future> crateApiJiebaJiebaRsCut({ + required String text, + required bool hmm, + }); + + Future> crateApiJiebaJiebaRsCutAll({required String text}); + + Future> crateApiJiebaJiebaRsCutForSearch({ + required String text, + required bool hmm, + }); + + Future> crateApiJiebaJiebaRsExtractKeywordsTextRank({ + required String text, + required BigInt topK, + required List allowedPos, + }); + + Future> crateApiJiebaJiebaRsExtractKeywordsTfidf({ + required String text, + required BigInt topK, + required List allowedPos, + }); + + String crateApiJiebaKeywordAutoAccessorGetKeyword({required Keyword that}); + + double crateApiJiebaKeywordAutoAccessorGetWeight({required Keyword that}); + + void crateApiJiebaKeywordAutoAccessorSetKeyword({ + required Keyword that, + required String keyword, + }); + + void crateApiJiebaKeywordAutoAccessorSetWeight({ + required Keyword that, + required double weight, + }); + Future> crateApiKmpKmpFindMatches({ required String text, required List patterns, @@ -153,13 +192,7 @@ abstract class RustLibApi extends BaseApi { required List pattern, }); - Future crateApiCompressCompress({ - required DynamicImage img, - required int dstHeight, - required int dstWidth, - required CompressFormat compressFormat, - required int quality, - }); + Future crateApiJiebaInitJieba(); Future crateApiKmpKmpSearch({ required String text, @@ -175,14 +208,6 @@ abstract class RustLibApi extends BaseApi { CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_AesEncryptionPtr; - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_DynamicImage; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_DynamicImage; - - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_DynamicImagePtr; - RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_FontReader; @@ -200,6 +225,18 @@ abstract class RustLibApi extends BaseApi { CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_ImageCompressPtr; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_JiebaRs; + + RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_JiebaRs; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_JiebaRsPtr; + + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_Keyword; + + RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_Keyword; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KeywordPtr; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_Kmp; RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_Kmp; @@ -464,6 +501,301 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ], ); + @override + Future> crateApiJiebaJiebaRsCut({ + required String text, + required bool hmm, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(text, serializer); + sse_encode_bool(hmm, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 7, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_String, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateApiJiebaJiebaRsCutConstMeta, + argValues: [text, hmm], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiJiebaJiebaRsCutConstMeta => + const TaskConstMeta(debugName: "JiebaRs_cut", argNames: ["text", "hmm"]); + + @override + Future> crateApiJiebaJiebaRsCutAll({required String text}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(text, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 8, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_String, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateApiJiebaJiebaRsCutAllConstMeta, + argValues: [text], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiJiebaJiebaRsCutAllConstMeta => + const TaskConstMeta(debugName: "JiebaRs_cut_all", argNames: ["text"]); + + @override + Future> crateApiJiebaJiebaRsCutForSearch({ + required String text, + required bool hmm, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(text, serializer); + sse_encode_bool(hmm, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 9, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_String, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateApiJiebaJiebaRsCutForSearchConstMeta, + argValues: [text, hmm], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiJiebaJiebaRsCutForSearchConstMeta => + const TaskConstMeta( + debugName: "JiebaRs_cut_for_search", + argNames: ["text", "hmm"], + ); + + @override + Future> crateApiJiebaJiebaRsExtractKeywordsTextRank({ + required String text, + required BigInt topK, + required List allowedPos, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(text, serializer); + sse_encode_usize(topK, serializer); + sse_encode_list_String(allowedPos, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 10, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateApiJiebaJiebaRsExtractKeywordsTextRankConstMeta, + argValues: [text, topK, allowedPos], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiJiebaJiebaRsExtractKeywordsTextRankConstMeta => + const TaskConstMeta( + debugName: "JiebaRs_extract_keywords_text_rank", + argNames: ["text", "topK", "allowedPos"], + ); + + @override + Future> crateApiJiebaJiebaRsExtractKeywordsTfidf({ + required String text, + required BigInt topK, + required List allowedPos, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(text, serializer); + sse_encode_usize(topK, serializer); + sse_encode_list_String(allowedPos, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 11, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateApiJiebaJiebaRsExtractKeywordsTfidfConstMeta, + argValues: [text, topK, allowedPos], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiJiebaJiebaRsExtractKeywordsTfidfConstMeta => + const TaskConstMeta( + debugName: "JiebaRs_extract_keywords_tfidf", + argNames: ["text", "topK", "allowedPos"], + ); + + @override + String crateApiJiebaKeywordAutoAccessorGetKeyword({required Keyword that}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 12)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kCrateApiJiebaKeywordAutoAccessorGetKeywordConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiJiebaKeywordAutoAccessorGetKeywordConstMeta => + const TaskConstMeta( + debugName: "Keyword_auto_accessor_get_keyword", + argNames: ["that"], + ); + + @override + double crateApiJiebaKeywordAutoAccessorGetWeight({required Keyword that}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 13)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_f_64, + decodeErrorData: null, + ), + constMeta: kCrateApiJiebaKeywordAutoAccessorGetWeightConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiJiebaKeywordAutoAccessorGetWeightConstMeta => + const TaskConstMeta( + debugName: "Keyword_auto_accessor_get_weight", + argNames: ["that"], + ); + + @override + void crateApiJiebaKeywordAutoAccessorSetKeyword({ + required Keyword that, + required String keyword, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + that, + serializer, + ); + sse_encode_String(keyword, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 14)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiJiebaKeywordAutoAccessorSetKeywordConstMeta, + argValues: [that, keyword], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiJiebaKeywordAutoAccessorSetKeywordConstMeta => + const TaskConstMeta( + debugName: "Keyword_auto_accessor_set_keyword", + argNames: ["that", "keyword"], + ); + + @override + void crateApiJiebaKeywordAutoAccessorSetWeight({ + required Keyword that, + required double weight, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + that, + serializer, + ); + sse_encode_f_64(weight, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 15)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiJiebaKeywordAutoAccessorSetWeightConstMeta, + argValues: [that, weight], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiJiebaKeywordAutoAccessorSetWeightConstMeta => + const TaskConstMeta( + debugName: "Keyword_auto_accessor_set_weight", + argNames: ["that", "weight"], + ); + @override Future> crateApiKmpKmpFindMatches({ required String text, @@ -478,7 +810,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 7, + funcId: 16, port: port_, ); }, @@ -512,7 +844,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 8, + funcId: 17, port: port_, ); }, @@ -554,7 +886,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 9, + funcId: 18, port: port_, ); }, @@ -595,7 +927,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 10, + funcId: 19, port: port_, ); }, @@ -631,7 +963,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 11, + funcId: 20, port: port_, ); }, @@ -664,7 +996,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 12, + funcId: 21, port: port_, ); }, @@ -689,7 +1021,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_String(filePath, serializer); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 13)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 22)!; }, codec: SseCodec( decodeSuccessData: @@ -718,7 +1050,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 14, + funcId: 23, port: port_, ); }, @@ -740,47 +1072,31 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); @override - Future crateApiCompressCompress({ - required DynamicImage img, - required int dstHeight, - required int dstWidth, - required CompressFormat compressFormat, - required int quality, - }) { + Future crateApiJiebaInitJieba() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - img, - serializer, - ); - sse_encode_u_32(dstHeight, serializer); - sse_encode_u_32(dstWidth, serializer); - sse_encode_compress_format(compressFormat, serializer); - sse_encode_u_8(quality, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 15, + funcId: 24, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_prim_u_8_strict, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kCrateApiCompressCompressConstMeta, - argValues: [img, dstHeight, dstWidth, compressFormat, quality], + constMeta: kCrateApiJiebaInitJiebaConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiCompressCompressConstMeta => const TaskConstMeta( - debugName: "compress", - argNames: ["img", "dstHeight", "dstWidth", "compressFormat", "quality"], - ); + TaskConstMeta get kCrateApiJiebaInitJiebaConstMeta => + const TaskConstMeta(debugName: "init_jieba", argNames: []); @override Future crateApiKmpKmpSearch({ @@ -796,7 +1112,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 16, + funcId: 25, port: port_, ); }, @@ -824,14 +1140,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { get rust_arc_decrement_strong_count_AesEncryption => wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption; - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_DynamicImage => - wire.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_DynamicImage => - wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage; - RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_FontReader => wire.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader; @@ -848,6 +1156,22 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { get rust_arc_decrement_strong_count_ImageCompress => wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress; + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_JiebaRs => + wire.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_JiebaRs => + wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_Keyword => + wire.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_Keyword => + wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_Kmp => wire.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp; @@ -893,6 +1217,24 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return ImageCompressImpl.frbInternalDcoDecode(raw as List); } + @protected + JiebaRs + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return JiebaRsImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Keyword + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return KeywordImpl.frbInternalDcoDecode(raw as List); + } + @protected Kmp dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -911,6 +1253,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return ZipImpl.frbInternalDcoDecode(raw as List); } + @protected + Keyword + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return KeywordImpl.frbInternalDcoDecode(raw as List); + } + @protected Zip dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( @@ -921,12 +1272,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - DynamicImage - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( + Keyword + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( dynamic raw, ) { // Codec=Dco (DartCObject based), see doc to use other codecs - return DynamicImageImpl.frbInternalDcoDecode(raw as List); + return KeywordImpl.frbInternalDcoDecode(raw as List); } @protected @@ -962,15 +1313,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return AesEncryptionImpl.frbInternalDcoDecode(raw as List); } - @protected - DynamicImage - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return DynamicImageImpl.frbInternalDcoDecode(raw as List); - } - @protected FontReader dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( @@ -989,6 +1331,24 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return ImageCompressImpl.frbInternalDcoDecode(raw as List); } + @protected + JiebaRs + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return JiebaRsImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Keyword + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return KeywordImpl.frbInternalDcoDecode(raw as List); + } + @protected Kmp dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -1013,6 +1373,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw as String; } + @protected + bool dco_decode_bool(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as bool; + } + @protected CompressFormat dco_decode_box_autoadd_compress_format(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -1043,12 +1409,31 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw as double; } + @protected + double dco_decode_f_64(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as double; + } + @protected int dco_decode_i_32(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs return raw as int; } + @protected + List + dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List) + .map( + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword, + ) + .toList(); + } + @protected List dco_decode_list_Char(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -1202,6 +1587,30 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + JiebaRs + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return JiebaRsImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Keyword + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return KeywordImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected Kmp sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -1226,6 +1635,18 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + Keyword + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return KeywordImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected Zip sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( @@ -1239,12 +1660,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - DynamicImage - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( + Keyword + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - return DynamicImageImpl.frbInternalSseDecode( + return KeywordImpl.frbInternalSseDecode( sse_decode_usize(deserializer), sse_decode_i_32(deserializer), ); @@ -1287,18 +1708,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } - @protected - DynamicImage - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return DynamicImageImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - @protected FontReader sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( @@ -1323,6 +1732,30 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + JiebaRs + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return JiebaRsImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Keyword + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return KeywordImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected Kmp sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -1354,6 +1787,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return utf8.decoder.convert(inner); } + @protected + bool sse_decode_bool(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint8() != 0; + } + @protected CompressFormat sse_decode_box_autoadd_compress_format( SseDeserializer deserializer, @@ -1387,12 +1826,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return deserializer.buffer.getFloat32(); } + @protected + double sse_decode_f_64(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getFloat64(); + } + @protected int sse_decode_i_32(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs return deserializer.buffer.getInt32(); } + @protected + List + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + final len_ = sse_decode_i_32(deserializer); + final ans_ = []; + for (var idx_ = 0; idx_ < len_; ++idx_) { + ans_.add( + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + deserializer, + ), + ); + } + return ans_; + } + @protected List sse_decode_list_Char(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -1553,12 +2017,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return deserializer.buffer.getBigUint64(); } - @protected - bool sse_decode_bool(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getUint8() != 0; - } - @protected void sse_encode_AnyhowException( AnyhowException self, @@ -1607,6 +2065,32 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + JiebaRs self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as JiebaRsImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + Keyword self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as KeywordImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -1633,6 +2117,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + Keyword self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as KeywordImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + @protected void sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( @@ -1648,13 +2145,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { @protected void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - DynamicImage self, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + Keyword self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_usize( - (self as DynamicImageImpl).frbInternalSseEncode(move: false), + (self as KeywordImpl).frbInternalSseEncode(move: false), serializer, ); } @@ -1702,19 +2199,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - DynamicImage self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as DynamicImageImpl).frbInternalSseEncode(move: null), - serializer, - ); - } - @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( @@ -1741,6 +2225,32 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + JiebaRs self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as JiebaRsImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + Keyword self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as KeywordImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -1773,6 +2283,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_list_prim_u_8_strict(utf8.encoder.convert(self), serializer); } + @protected + void sse_encode_bool(bool self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putUint8(self ? 1 : 0); + } + @protected void sse_encode_box_autoadd_compress_format( CompressFormat self, @@ -1809,12 +2325,34 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { serializer.buffer.putFloat32(self); } + @protected + void sse_encode_f_64(double self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putFloat64(self); + } + @protected void sse_encode_i_32(int self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs serializer.buffer.putInt32(self); } + @protected + void + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + List self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + for (final item in self) { + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + item, + serializer, + ); + } + } + @protected void sse_encode_list_Char(List self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -1974,12 +2512,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs serializer.buffer.putBigUint64(self); } - - @protected - void sse_encode_bool(bool self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putUint8(self ? 1 : 0); - } } @sealed @@ -2002,26 +2534,6 @@ class AesEncryptionImpl extends RustOpaque implements AesEncryption { ); } -@sealed -class DynamicImageImpl extends RustOpaque implements DynamicImage { - // Not to be used by end users - DynamicImageImpl.frbInternalDcoDecode(List wire) - : super.frbInternalDcoDecode(wire, _kStaticData); - - // Not to be used by end users - DynamicImageImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) - : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); - - static final _kStaticData = RustArcStaticData( - rustArcIncrementStrongCount: - RustLib.instance.api.rust_arc_increment_strong_count_DynamicImage, - rustArcDecrementStrongCount: - RustLib.instance.api.rust_arc_decrement_strong_count_DynamicImage, - rustArcDecrementStrongCountPtr: - RustLib.instance.api.rust_arc_decrement_strong_count_DynamicImagePtr, - ); -} - @sealed class FontReaderImpl extends RustOpaque implements FontReader { // Not to be used by end users @@ -2062,6 +2574,58 @@ class ImageCompressImpl extends RustOpaque implements ImageCompress { ); } +@sealed +class JiebaRsImpl extends RustOpaque implements JiebaRs { + // Not to be used by end users + JiebaRsImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + JiebaRsImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_JiebaRs, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_JiebaRs, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_JiebaRsPtr, + ); +} + +@sealed +class KeywordImpl extends RustOpaque implements Keyword { + // Not to be used by end users + KeywordImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + KeywordImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_Keyword, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_Keyword, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_KeywordPtr, + ); + + String get keyword => RustLib.instance.api + .crateApiJiebaKeywordAutoAccessorGetKeyword(that: this); + + double get weight => RustLib.instance.api + .crateApiJiebaKeywordAutoAccessorGetWeight(that: this); + + set keyword(String keyword) => RustLib.instance.api + .crateApiJiebaKeywordAutoAccessorSetKeyword(that: this, keyword: keyword); + + set weight(double weight) => RustLib.instance.api + .crateApiJiebaKeywordAutoAccessorSetWeight(that: this, weight: weight); +} + @sealed class KmpImpl extends RustOpaque implements Kmp { // Not to be used by end users diff --git a/lib/src/rust/frb_generated.io.dart b/lib/src/rust/frb_generated.io.dart index bb9da08..c3cba59 100644 --- a/lib/src/rust/frb_generated.io.dart +++ b/lib/src/rust/frb_generated.io.dart @@ -3,19 +3,18 @@ // ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field -import 'dart:async'; -import 'dart:convert'; -import 'dart:ffi' as ffi; - -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; - import 'api/aes.dart'; import 'api/compress.dart'; import 'api/constants.dart'; import 'api/font.dart'; +import 'api/jieba.dart'; import 'api/kmp.dart'; import 'api/zip.dart'; +import 'dart:async'; +import 'dart:convert'; +import 'dart:ffi' as ffi; import 'frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; abstract class RustLibApiImplPlatform extends BaseApiImpl { RustLibApiImplPlatform({ @@ -29,10 +28,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { get rust_arc_decrement_strong_count_AesEncryptionPtr => wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryptionPtr; - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_DynamicImagePtr => - wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImagePtr; - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_FontReaderPtr => wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReaderPtr; @@ -40,6 +35,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { get rust_arc_decrement_strong_count_ImageCompressPtr => wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompressPtr; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_JiebaRsPtr => + wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRsPtr; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KeywordPtr => + wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeywordPtr; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KmpPtr => wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmpPtr; @@ -67,6 +68,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + JiebaRs + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + dynamic raw, + ); + + @protected + Keyword + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + dynamic raw, + ); + @protected Kmp dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -79,6 +92,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + Keyword + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + dynamic raw, + ); + @protected Zip dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( @@ -86,8 +105,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - DynamicImage - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( + Keyword + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( dynamic raw, ); @@ -106,12 +125,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); - @protected - DynamicImage - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - dynamic raw, - ); - @protected FontReader dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( @@ -124,6 +137,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + JiebaRs + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + dynamic raw, + ); + + @protected + Keyword + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + dynamic raw, + ); + @protected Kmp dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -139,6 +164,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected String dco_decode_String(dynamic raw); + @protected + bool dco_decode_bool(dynamic raw); + @protected CompressFormat dco_decode_box_autoadd_compress_format(dynamic raw); @@ -154,9 +182,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double dco_decode_f_32(dynamic raw); + @protected + double dco_decode_f_64(dynamic raw); + @protected int dco_decode_i_32(dynamic raw); + @protected + List + dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + dynamic raw, + ); + @protected List dco_decode_list_Char(dynamic raw); @@ -229,6 +266,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + JiebaRs + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + SseDeserializer deserializer, + ); + + @protected + Keyword + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + SseDeserializer deserializer, + ); + @protected Kmp sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -241,6 +290,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + Keyword + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + SseDeserializer deserializer, + ); + @protected Zip sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( @@ -248,8 +303,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - DynamicImage - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( + Keyword + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( SseDeserializer deserializer, ); @@ -272,12 +327,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); - @protected - DynamicImage - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - SseDeserializer deserializer, - ); - @protected FontReader sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( @@ -290,6 +339,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + JiebaRs + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + SseDeserializer deserializer, + ); + + @protected + Keyword + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + SseDeserializer deserializer, + ); + @protected Kmp sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -305,6 +366,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected String sse_decode_String(SseDeserializer deserializer); + @protected + bool sse_decode_bool(SseDeserializer deserializer); + @protected CompressFormat sse_decode_box_autoadd_compress_format( SseDeserializer deserializer, @@ -322,9 +386,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double sse_decode_f_32(SseDeserializer deserializer); + @protected + double sse_decode_f_64(SseDeserializer deserializer); + @protected int sse_decode_i_32(SseDeserializer deserializer); + @protected + List + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + SseDeserializer deserializer, + ); + @protected List sse_decode_list_Char(SseDeserializer deserializer); @@ -384,9 +457,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected BigInt sse_decode_usize(SseDeserializer deserializer); - @protected - bool sse_decode_bool(SseDeserializer deserializer); - @protected void sse_encode_AnyhowException( AnyhowException self, @@ -414,6 +484,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + JiebaRs self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + Keyword self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -428,6 +512,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + Keyword self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( @@ -437,8 +528,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - DynamicImage self, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + Keyword self, SseSerializer serializer, ); @@ -464,13 +555,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - DynamicImage self, - SseSerializer serializer, - ); - @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( @@ -485,6 +569,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + JiebaRs self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + Keyword self, + SseSerializer serializer, + ); + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( @@ -502,6 +600,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_String(String self, SseSerializer serializer); + @protected + void sse_encode_bool(bool self, SseSerializer serializer); + @protected void sse_encode_box_autoadd_compress_format( CompressFormat self, @@ -523,9 +624,19 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_f_32(double self, SseSerializer serializer); + @protected + void sse_encode_f_64(double self, SseSerializer serializer); + @protected void sse_encode_i_32(int self, SseSerializer serializer); + @protected + void + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + List self, + SseSerializer serializer, + ); + @protected void sse_encode_list_Char(List self, SseSerializer serializer); @@ -597,9 +708,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_usize(BigInt self, SseSerializer serializer); - - @protected - void sse_encode_bool(bool self, SseSerializer serializer); } // Section: wire_class @@ -650,40 +758,6 @@ class RustLibWire implements BaseWire { _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryptionPtr .asFunction)>(); - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - ffi.Pointer ptr, - ) { - return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - ptr, - ); - } - - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImagePtr = - _lookup)>>( - 'frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage', - ); - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage = - _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImagePtr - .asFunction)>(); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - ffi.Pointer ptr, - ) { - return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - ptr, - ); - } - - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImagePtr = - _lookup)>>( - 'frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage', - ); - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage = - _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImagePtr - .asFunction)>(); - void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( ffi.Pointer ptr, @@ -752,6 +826,74 @@ class RustLibWire implements BaseWire { _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompressPtr .asFunction)>(); + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRsPtr = + _lookup)>>( + 'frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRsPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRsPtr = + _lookup)>>( + 'frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRsPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeywordPtr = + _lookup)>>( + 'frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeywordPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeywordPtr = + _lookup)>>( + 'frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeywordPtr + .asFunction)>(); + void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( ffi.Pointer ptr, diff --git a/lib/src/rust/frb_generated.web.dart b/lib/src/rust/frb_generated.web.dart deleted file mode 100644 index b35c9ce..0000000 --- a/lib/src/rust/frb_generated.web.dart +++ /dev/null @@ -1,774 +0,0 @@ -// This file is automatically generated, so please do not edit it. -// @generated by `flutter_rust_bridge`@ 2.9.0. - -// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field - -// Static analysis wrongly picks the IO variant, thus ignore this -// ignore_for_file: argument_type_not_assignable - -import 'dart:async'; -import 'dart:convert'; - -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart'; - -import 'api/aes.dart'; -import 'api/compress.dart'; -import 'api/constants.dart'; -import 'api/font.dart'; -import 'api/kmp.dart'; -import 'api/zip.dart'; -import 'frb_generated.dart'; - -abstract class RustLibApiImplPlatform extends BaseApiImpl { - RustLibApiImplPlatform({ - required super.handler, - required super.wire, - required super.generalizedFrbRustBinding, - required super.portManager, - }); - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_AesEncryptionPtr => - wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_DynamicImagePtr => - wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage; - - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_FontReaderPtr => - wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_ImageCompressPtr => - wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress; - - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KmpPtr => - wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp; - - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_ZipPtr => - wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip; - - @protected - AnyhowException dco_decode_AnyhowException(dynamic raw); - - @protected - AesEncryption - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - dynamic raw, - ); - - @protected - FontReader - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - dynamic raw, - ); - - @protected - ImageCompress - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - dynamic raw, - ); - - @protected - Kmp - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - dynamic raw, - ); - - @protected - Zip - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - dynamic raw, - ); - - @protected - Zip - dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - dynamic raw, - ); - - @protected - DynamicImage - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - dynamic raw, - ); - - @protected - String dco_decode_Char(dynamic raw); - - @protected - Map dco_decode_Map_String_String_None(dynamic raw); - - @protected - Map dco_decode_Map_String_f_32_None(dynamic raw); - - @protected - AesEncryption - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - dynamic raw, - ); - - @protected - DynamicImage - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - dynamic raw, - ); - - @protected - FontReader - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - dynamic raw, - ); - - @protected - ImageCompress - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - dynamic raw, - ); - - @protected - Kmp - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - dynamic raw, - ); - - @protected - Zip - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - dynamic raw, - ); - - @protected - String dco_decode_String(dynamic raw); - - @protected - CompressFormat dco_decode_box_autoadd_compress_format(dynamic raw); - - @protected - int dco_decode_box_autoadd_u_32(dynamic raw); - - @protected - int dco_decode_box_autoadd_u_8(dynamic raw); - - @protected - CompressFormat dco_decode_compress_format(dynamic raw); - - @protected - double dco_decode_f_32(dynamic raw); - - @protected - int dco_decode_i_32(dynamic raw); - - @protected - List dco_decode_list_Char(dynamic raw); - - @protected - List dco_decode_list_String(dynamic raw); - - @protected - List dco_decode_list_prim_u_8_loose(dynamic raw); - - @protected - Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); - - @protected - Uint64List dco_decode_list_prim_usize_strict(dynamic raw); - - @protected - List<(String, double)> dco_decode_list_record_string_f_32(dynamic raw); - - @protected - List<(String, String)> dco_decode_list_record_string_string(dynamic raw); - - @protected - String? dco_decode_opt_String(dynamic raw); - - @protected - CompressFormat? dco_decode_opt_box_autoadd_compress_format(dynamic raw); - - @protected - int? dco_decode_opt_box_autoadd_u_32(dynamic raw); - - @protected - int? dco_decode_opt_box_autoadd_u_8(dynamic raw); - - @protected - (String, double) dco_decode_record_string_f_32(dynamic raw); - - @protected - (String, String) dco_decode_record_string_string(dynamic raw); - - @protected - int dco_decode_u_32(dynamic raw); - - @protected - int dco_decode_u_8(dynamic raw); - - @protected - void dco_decode_unit(dynamic raw); - - @protected - BigInt dco_decode_usize(dynamic raw); - - @protected - AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer); - - @protected - AesEncryption - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - SseDeserializer deserializer, - ); - - @protected - FontReader - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - SseDeserializer deserializer, - ); - - @protected - ImageCompress - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - SseDeserializer deserializer, - ); - - @protected - Kmp - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - SseDeserializer deserializer, - ); - - @protected - Zip - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - SseDeserializer deserializer, - ); - - @protected - Zip - sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - SseDeserializer deserializer, - ); - - @protected - DynamicImage - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - SseDeserializer deserializer, - ); - - @protected - String sse_decode_Char(SseDeserializer deserializer); - - @protected - Map sse_decode_Map_String_String_None( - SseDeserializer deserializer, - ); - - @protected - Map sse_decode_Map_String_f_32_None( - SseDeserializer deserializer, - ); - - @protected - AesEncryption - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - SseDeserializer deserializer, - ); - - @protected - DynamicImage - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - SseDeserializer deserializer, - ); - - @protected - FontReader - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - SseDeserializer deserializer, - ); - - @protected - ImageCompress - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - SseDeserializer deserializer, - ); - - @protected - Kmp - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - SseDeserializer deserializer, - ); - - @protected - Zip - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - SseDeserializer deserializer, - ); - - @protected - String sse_decode_String(SseDeserializer deserializer); - - @protected - CompressFormat sse_decode_box_autoadd_compress_format( - SseDeserializer deserializer, - ); - - @protected - int sse_decode_box_autoadd_u_32(SseDeserializer deserializer); - - @protected - int sse_decode_box_autoadd_u_8(SseDeserializer deserializer); - - @protected - CompressFormat sse_decode_compress_format(SseDeserializer deserializer); - - @protected - double sse_decode_f_32(SseDeserializer deserializer); - - @protected - int sse_decode_i_32(SseDeserializer deserializer); - - @protected - List sse_decode_list_Char(SseDeserializer deserializer); - - @protected - List sse_decode_list_String(SseDeserializer deserializer); - - @protected - List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer); - - @protected - Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); - - @protected - Uint64List sse_decode_list_prim_usize_strict(SseDeserializer deserializer); - - @protected - List<(String, double)> sse_decode_list_record_string_f_32( - SseDeserializer deserializer, - ); - - @protected - List<(String, String)> sse_decode_list_record_string_string( - SseDeserializer deserializer, - ); - - @protected - String? sse_decode_opt_String(SseDeserializer deserializer); - - @protected - CompressFormat? sse_decode_opt_box_autoadd_compress_format( - SseDeserializer deserializer, - ); - - @protected - int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer); - - @protected - int? sse_decode_opt_box_autoadd_u_8(SseDeserializer deserializer); - - @protected - (String, double) sse_decode_record_string_f_32(SseDeserializer deserializer); - - @protected - (String, String) sse_decode_record_string_string( - SseDeserializer deserializer, - ); - - @protected - int sse_decode_u_32(SseDeserializer deserializer); - - @protected - int sse_decode_u_8(SseDeserializer deserializer); - - @protected - void sse_decode_unit(SseDeserializer deserializer); - - @protected - BigInt sse_decode_usize(SseDeserializer deserializer); - - @protected - bool sse_decode_bool(SseDeserializer deserializer); - - @protected - void sse_encode_AnyhowException( - AnyhowException self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - AesEncryption self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - FontReader self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - ImageCompress self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - Kmp self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - Zip self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - Zip self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - DynamicImage self, - SseSerializer serializer, - ); - - @protected - void sse_encode_Char(String self, SseSerializer serializer); - - @protected - void sse_encode_Map_String_String_None( - Map self, - SseSerializer serializer, - ); - - @protected - void sse_encode_Map_String_f_32_None( - Map self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - AesEncryption self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - DynamicImage self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - FontReader self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - ImageCompress self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - Kmp self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - Zip self, - SseSerializer serializer, - ); - - @protected - void sse_encode_String(String self, SseSerializer serializer); - - @protected - void sse_encode_box_autoadd_compress_format( - CompressFormat self, - SseSerializer serializer, - ); - - @protected - void sse_encode_box_autoadd_u_32(int self, SseSerializer serializer); - - @protected - void sse_encode_box_autoadd_u_8(int self, SseSerializer serializer); - - @protected - void sse_encode_compress_format( - CompressFormat self, - SseSerializer serializer, - ); - - @protected - void sse_encode_f_32(double self, SseSerializer serializer); - - @protected - void sse_encode_i_32(int self, SseSerializer serializer); - - @protected - void sse_encode_list_Char(List self, SseSerializer serializer); - - @protected - void sse_encode_list_String(List self, SseSerializer serializer); - - @protected - void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); - - @protected - void sse_encode_list_prim_u_8_strict( - Uint8List self, - SseSerializer serializer, - ); - - @protected - void sse_encode_list_prim_usize_strict( - Uint64List self, - SseSerializer serializer, - ); - - @protected - void sse_encode_list_record_string_f_32( - List<(String, double)> self, - SseSerializer serializer, - ); - - @protected - void sse_encode_list_record_string_string( - List<(String, String)> self, - SseSerializer serializer, - ); - - @protected - void sse_encode_opt_String(String? self, SseSerializer serializer); - - @protected - void sse_encode_opt_box_autoadd_compress_format( - CompressFormat? self, - SseSerializer serializer, - ); - - @protected - void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer); - - @protected - void sse_encode_opt_box_autoadd_u_8(int? self, SseSerializer serializer); - - @protected - void sse_encode_record_string_f_32( - (String, double) self, - SseSerializer serializer, - ); - - @protected - void sse_encode_record_string_string( - (String, String) self, - SseSerializer serializer, - ); - - @protected - void sse_encode_u_32(int self, SseSerializer serializer); - - @protected - void sse_encode_u_8(int self, SseSerializer serializer); - - @protected - void sse_encode_unit(void self, SseSerializer serializer); - - @protected - void sse_encode_usize(BigInt self, SseSerializer serializer); - - @protected - void sse_encode_bool(bool self, SseSerializer serializer); -} - -// Section: wire_class - -class RustLibWire implements BaseWire { - RustLibWire.fromExternalLibrary(ExternalLibrary lib); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - ptr, - ); -} - -@JS('wasm_bindgen') -external RustLibWasmModule get wasmModule; - -@JS() -@anonymous -extension type RustLibWasmModule._(JSObject _) implements JSObject { - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - int ptr, - ); -} diff --git a/pubspec.lock b/pubspec.lock index a536f43..dd5e79a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -30,14 +30,6 @@ packages: url: "https://pub.dev" source: hosted version: "6.11.0" - analyzer_plugin: - dependency: transitive - description: - name: analyzer_plugin - sha256: "9661b30b13a685efaee9f02e5d01ed9f2b423bd889d28a304d02d704aee69161" - url: "https://pub.dev" - source: hosted - version: "0.11.3" animated_stack_widget: dependency: transitive description: @@ -402,10 +394,10 @@ packages: dependency: "direct main" description: name: chewie - sha256: df6711bc3ba165ad19cb496e350250be5673327f79c61c9cc8a15088ed8007ed + sha256: "4d9554a8f87cc2dc6575dfd5ad20a4375015a29edd567fd6733febe6365e2566" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.11.3" cli_util: dependency: transitive description: @@ -518,22 +510,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" - custom_lint_core: - dependency: transitive - description: - name: custom_lint_core - sha256: "02450c3e45e2a6e8b26c4d16687596ab3c4644dd5792e3313aa9ceba5a49b7f5" - url: "https://pub.dev" - source: hosted - version: "0.7.0" - custom_lint_visitor: - dependency: transitive - description: - name: custom_lint_visitor - sha256: bfe9b7a09c4775a587b58d10ebb871d4fe618237639b1e84d5ec62d7dfef25f9 - url: "https://pub.dev" - source: hosted - version: "1.0.0+6.11.0" dart_earcut: dependency: transitive description: @@ -554,10 +530,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820" + sha256: "27eb0ae77836989a3bc541ce55595e8ceee0992807f14511552a898ddd0d88ac" url: "https://pub.dev" source: hosted - version: "2.3.8" + version: "3.0.1" dartx: dependency: "direct main" description: @@ -1104,14 +1080,6 @@ packages: url: "https://pub.dev" source: hosted version: "11.0.0" - flutter_riverpod: - dependency: "direct main" - description: - name: flutter_riverpod - sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" - url: "https://pub.dev" - source: hosted - version: "2.6.1" flutter_rust_bridge: dependency: "direct main" description: @@ -1202,14 +1170,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0-dev.3" + freezed: + dependency: "direct dev" + description: + name: freezed + sha256: "6022db4c7bfa626841b2a10f34dd1e1b68e8f8f9650db6112dcdeeca45ca793c" + url: "https://pub.dev" + source: hosted + version: "3.0.6" freezed_annotation: dependency: "direct main" description: name: freezed_annotation - sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 + sha256: c87ff004c8aa6af2d531668b46a4ea379f7191dc6dfa066acd53d506da6e044b url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "3.0.0" frontend_server_client: dependency: transitive description: @@ -1567,10 +1543,10 @@ packages: dependency: "direct dev" description: name: json_serializable - sha256: c2fcb3920cf2b6ae6845954186420fca40bc0a8abcc84903b7801f17d7050d7c + sha256: c50ef5fc083d5b5e12eef489503ba3bf5ccc899e487d691584699b4bdefeea8c url: "https://pub.dev" source: hosted - version: "6.9.0" + version: "6.9.5" jwt_decode: dependency: transitive description: @@ -2086,10 +2062,10 @@ packages: dependency: transitive description: name: posix - sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a + sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62 url: "https://pub.dev" source: hosted - version: "6.0.1" + version: "6.0.2" postgrest: dependency: transitive description: @@ -2306,38 +2282,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" - riverpod: - dependency: transitive - description: - name: riverpod - sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" - url: "https://pub.dev" - source: hosted - version: "2.6.1" - riverpod_analyzer_utils: - dependency: transitive - description: - name: riverpod_analyzer_utils - sha256: c6b8222b2b483cb87ae77ad147d6408f400c64f060df7a225b127f4afef4f8c8 - url: "https://pub.dev" - source: hosted - version: "0.5.8" - riverpod_annotation: - dependency: "direct main" - description: - name: riverpod_annotation - sha256: e14b0bf45b71326654e2705d462f21b958f987087be850afd60578fcd502d1b8 - url: "https://pub.dev" - source: hosted - version: "2.6.1" - riverpod_generator: - dependency: "direct dev" - description: - name: riverpod_generator - sha256: "63546d70952015f0981361636bf8f356d9cfd9d7f6f0815e3c07789a41233188" - url: "https://pub.dev" - source: hosted - version: "2.6.3" rxdart: dependency: "direct main" description: @@ -2512,13 +2456,13 @@ packages: source: hosted version: "1.2.1" source_gen: - dependency: transitive + dependency: "direct overridden" description: name: source_gen - sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" + sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "2.0.0" source_helper: dependency: transitive description: @@ -2591,14 +2535,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.12.1" - state_notifier: - dependency: transitive - description: - name: state_notifier - sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb - url: "https://pub.dev" - source: hosted - version: "1.0.0" storage_client: dependency: transitive description: @@ -2899,10 +2835,10 @@ packages: dependency: transitive description: name: video_player_avfoundation - sha256: "84b4752745eeccb6e75865c9aab39b3d28eb27ba5726d352d45db8297fbd75bc" + sha256: "9ee764e5cd2fc1e10911ae8ad588e1a19db3b6aa9a6eb53c127c42d3a3c3f22f" url: "https://pub.dev" source: hosted - version: "2.7.0" + version: "2.7.1" video_player_media_kit: dependency: "direct main" description: @@ -2952,21 +2888,21 @@ packages: source: hosted version: "3.3.3" wakelock_plus: - dependency: transitive + dependency: "direct main" description: name: wakelock_plus - sha256: b90fbcc8d7bdf3b883ea9706d9d76b9978cb1dfa4351fcc8014d6ec31a493354 + sha256: b6962cd9fc15e4843b573ba7b53bc46dd8a787594cf9ed5c5182581924656a58 url: "https://pub.dev" source: hosted - version: "1.2.11" + version: "1.3.1" wakelock_plus_platform_interface: dependency: transitive description: name: wakelock_plus_platform_interface - sha256: "70e780bc99796e1db82fe764b1e7dcb89a86f1e5b3afb1db354de50f2e41eb7a" + sha256: e10444072e50dbc4999d7316fd303f7ea53d31c824aa5eb05d7ccbdd98985207 url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.2.3" watcher: dependency: transitive description: @@ -2995,18 +2931,18 @@ packages: dependency: transitive description: name: web_socket - sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + sha256: bfe6f435f6ec49cb6c01da1e275ae4228719e59a6b067048c51e72d9d63bcc4b url: "https://pub.dev" source: hosted - version: "0.1.6" + version: "1.0.0" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5" + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" webdav_client: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 721d80f..aca51c6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -81,7 +81,7 @@ dependencies: image_picker_android: 0.8.12+22 video_player_media_kit: 1.0.6 video_player: 2.9.5 - chewie: 1.11.1 + chewie: 1.11.3 flutter_markdown: 0.7.7 image_picker_platform_interface: 2.10.1 flutter_image_compress: 2.4.0 @@ -113,10 +113,6 @@ dependencies: photo_view: 0.15.0 dartx: 1.2.0 material_color_utilities: 0.11.1 - flutter_riverpod: 2.6.1 - riverpod_annotation: 2.6.1 - freezed_annotation: 2.4.4 - json_annotation: 4.9.0 audioplayers_android_exo: 0.1.2 scrollview_observer: 1.26.0 flutter_smart_dialog: 4.9.8+7 @@ -129,6 +125,9 @@ dependencies: hive_ce: 2.10.1 hive_ce_flutter: 2.2.0 flutter_modular: 6.3.4 + freezed_annotation: 3.0.0 + json_annotation: 4.9.0 + wakelock_plus: 1.3.1 dev_dependencies: flutter_test: @@ -137,11 +136,13 @@ dev_dependencies: flutter_launcher_icons: 0.14.3 msix: 3.16.8 flutter_lints: 5.0.0 - riverpod_generator: 2.6.3 - json_serializable: 6.9.0 flutter_gen: 5.10.0 flutter_gen_runner: 5.10.0 + freezed: 3.0.6 + json_serializable: 6.9.5 +dependency_overrides: + source_gen: 2.0.0 flutter_launcher_icons: diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 65ffe5c..19d239e 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -17,6 +17,12 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + [[package]] name = "aes" version = "0.8.4" @@ -28,6 +34,18 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy 0.7.35", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -54,6 +72,12 @@ dependencies = [ "backtrace", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "android_log-sys" version = "0.3.2" @@ -253,6 +277,15 @@ dependencies = [ "shlex", ] +[[package]] +name = "cedarwood" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d910bedd62c24733263d0bed247460853c9d22e8956bd4cd964302095e04e90" +dependencies = [ + "smallvec", +] + [[package]] name = "cfg-expr" version = "0.15.8" @@ -301,6 +334,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + [[package]] name = "cpufeatures" version = "0.2.17" @@ -375,6 +417,41 @@ dependencies = [ "typenum", ] +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn", +] + [[package]] name = "dart-sys" version = "4.1.5" @@ -384,6 +461,12 @@ dependencies = [ "cc", ] +[[package]] +name = "dary_heap" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04d2cd9c18b9f454ed67da600630b021a8a80bf33f8c95896ab33aaf1c26b728" + [[package]] name = "dashmap" version = "4.0.2" @@ -431,6 +514,37 @@ dependencies = [ "syn", ] +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn", +] + [[package]] name = "digest" version = "0.10.7" @@ -563,6 +677,12 @@ dependencies = [ "syn", ] +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "futures" version = "0.3.31" @@ -652,6 +772,15 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -713,6 +842,16 @@ dependencies = [ "crunchy", ] +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + [[package]] name = "hashbrown" version = "0.15.2" @@ -746,6 +885,12 @@ dependencies = [ "digest", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "image" version = "0.25.6" @@ -785,6 +930,29 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" +[[package]] +name = "include-flate" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df49c16750695486c1f34de05da5b7438096156466e7f76c38fcdf285cf0113e" +dependencies = [ + "include-flate-codegen", + "lazy_static", + "libflate", +] + +[[package]] +name = "include-flate-codegen" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c5b246c6261be723b85c61ecf87804e8ea4a35cb68be0ff282ed84b95ffe7d7" +dependencies = [ + "libflate", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "indexmap" version = "2.9.0" @@ -792,7 +960,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.2", ] [[package]] @@ -824,6 +992,32 @@ dependencies = [ "either", ] +[[package]] +name = "jieba-macros" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c676b32a471d3cfae8dac2ad2f8334cd52e53377733cca8c1fb0a5062fec192" +dependencies = [ + "phf_codegen", +] + +[[package]] +name = "jieba-rs" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1bcad6332969e4d48ee568d430e14ee6dea70740c2549d005d87677ebefb0c" +dependencies = [ + "cedarwood", + "derive_builder", + "fxhash", + "include-flate", + "jieba-macros", + "lazy_static", + "ordered-float", + "phf", + "regex", +] + [[package]] name = "jobserver" version = "0.1.33" @@ -868,6 +1062,30 @@ version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +[[package]] +name = "libflate" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e" +dependencies = [ + "adler32", + "core2", + "crc32fast", + "dary_heap", + "libflate_lz77", +] + +[[package]] +name = "libflate_lz77" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" +dependencies = [ + "core2", + "hashbrown 0.14.5", + "rle-decode-fast", +] + [[package]] name = "libfuzzer-sys" version = "0.4.9" @@ -976,7 +1194,10 @@ dependencies = [ "fast_image_resize", "flutter_rust_bridge", "image", + "jieba-rs", + "once_cell", "ring", + "tokio", "ttf-parser", "walkdir", "zip", @@ -1085,6 +1306,15 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + [[package]] name = "oslog" version = "0.1.0" @@ -1112,6 +1342,44 @@ dependencies = [ "hmac", ] +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project-lite" version = "0.2.16" @@ -1161,7 +1429,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy", + "zerocopy 0.8.24", ] [[package]] @@ -1371,6 +1639,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rle-decode-fast" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" + [[package]] name = "rustc-demangle" version = "0.1.24" @@ -1453,6 +1727,12 @@ dependencies = [ "quote", ] +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + [[package]] name = "slab" version = "0.4.9" @@ -1468,6 +1748,12 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "subtle" version = "2.6.1" @@ -1883,13 +2169,33 @@ dependencies = [ "lzma-sys", ] +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive 0.7.35", +] + [[package]] name = "zerocopy" version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" dependencies = [ - "zerocopy-derive", + "zerocopy-derive 0.8.24", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", ] [[package]] diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 62355eb..887c45b 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -15,6 +15,9 @@ ttf-parser = { git = "https://github.com/ZhuJHua/ttf-parser", branch = "fvar" } ring = "0.17.14" zip = "2.6.1" walkdir = "2.5.0" +jieba-rs = { version = "0.7.2", features = ["default-dict", "tfidf", "textrank"] } +once_cell = "1.21.3" +tokio = "1.44.2" [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(frb_expand)'] } diff --git a/rust/src/api/compress.rs b/rust/src/api/compress.rs index 7769e7f..94239f7 100644 --- a/rust/src/api/compress.rs +++ b/rust/src/api/compress.rs @@ -16,7 +16,7 @@ use image::{ use super::constants::CompressFormat; -pub fn compress( +fn compress( img: &DynamicImage, dst_height: u32, dst_width: u32, @@ -84,7 +84,10 @@ impl ImageCompress { max_height: Option, quality: Option, ) -> Result> { - let src_img = Self::load_image(&file_path)?; + let src_img = ImageReader::open(file_path)? + .with_guessed_format()? + .decode() + .map_err(|e| anyhow::anyhow!("Failed to decode image: {}", e))?; let compress_format = compress_format.unwrap_or(CompressFormat::Jpeg); let quality = quality.unwrap_or(80); @@ -137,13 +140,6 @@ impl ImageCompress { (max_width, (img_height as f64 * ratio).round() as u32) } } - - fn load_image(file_path: &str) -> Result { - ImageReader::open(file_path)? - .with_guessed_format()? - .decode() - .map_err(|e| anyhow::anyhow!("Failed to decode image: {}", e)) - } } pub struct ResizeOptions { pub target_width: Option, diff --git a/rust/src/api/jieba.rs b/rust/src/api/jieba.rs new file mode 100644 index 0000000..be1ae4b --- /dev/null +++ b/rust/src/api/jieba.rs @@ -0,0 +1,126 @@ +use anyhow::{Context, Ok, Result}; +use flutter_rust_bridge::frb; +use jieba_rs::{Jieba, KeywordExtract, TextRank, TfIdf}; +use once_cell::sync::OnceCell; +use std::collections::HashSet; +use std::sync::Arc; +use tokio::sync::OnceCell as AsyncOnceCell; + +#[frb(opaque)] +pub struct JiebaRs { + inner: Jieba, + tfidf: OnceCell, + text_rank: OnceCell, +} + +#[derive(Debug, Clone)] +#[frb(opaque)] +pub struct Keyword { + pub keyword: String, + pub weight: f64, +} + +static GLOBAL_JIEBA: AsyncOnceCell> = AsyncOnceCell::const_new(); + +#[frb(init)] +pub async fn init_jieba() { + JiebaRs::init_global().await; +} + +impl JiebaRs { + fn new() -> Self { + Self { + inner: Jieba::new(), + tfidf: OnceCell::new(), + text_rank: OnceCell::new(), + } + } + + async fn init_global() { + GLOBAL_JIEBA + .get_or_init(|| async { + let instance = JiebaRs::new(); + Arc::new(instance) + }) + .await; + } + + fn get_instance() -> Result> { + GLOBAL_JIEBA + .get() + .cloned() + .context("JiebaRs is not initialized. Please call init_global() first.") + } + + pub fn cut(text: String, hmm: bool) -> Result> { + let jieba = Self::get_instance()?; + Ok(jieba + .inner + .cut(&text, hmm) + .iter() + .map(|s| s.to_string()) + .collect()) + } + + pub fn cut_all(text: String) -> Result> { + let jieba = Self::get_instance()?; + let result: HashSet = jieba + .inner + .cut_all(&text) + .iter() + .map(|s| s.to_string()) + .collect(); + Ok(result.into_iter().collect()) + } + + pub fn cut_for_search(text: String, hmm: bool) -> Result> { + let jieba = Self::get_instance()?; + let result: HashSet = jieba + .inner + .cut_for_search(&text, hmm) + .iter() + .map(|s| s.to_string()) + .collect(); + Ok(result.into_iter().collect()) + } + + pub fn extract_keywords_tfidf( + text: String, + top_k: usize, + allowed_pos: Vec, + ) -> Result> { + let jieba = Self::get_instance()?; + let tfidf = jieba + .tfidf + .get_or_try_init(|| Ok(TfIdf::default())) + .context("Failed to initialize TF-IDF")?; + + let keywords = tfidf.extract_keywords(&jieba.inner, &text, top_k, allowed_pos); + Ok(Self::convert_keywords(keywords)) + } + + pub fn extract_keywords_text_rank( + text: String, + top_k: usize, + allowed_pos: Vec, + ) -> Result> { + let jieba = Self::get_instance()?; + let text_rank = jieba + .text_rank + .get_or_try_init(|| Ok(TextRank::default())) + .context("Failed to initialize TextRank")?; + + let keywords = text_rank.extract_keywords(&jieba.inner, &text, top_k, allowed_pos); + Ok(Self::convert_keywords(keywords)) + } + + fn convert_keywords(keywords: Vec) -> Vec { + keywords + .into_iter() + .map(|k| Keyword { + keyword: k.keyword, + weight: k.weight, + }) + .collect() + } +} diff --git a/rust/src/api/mod.rs b/rust/src/api/mod.rs index 3361cfc..c40cb50 100644 --- a/rust/src/api/mod.rs +++ b/rust/src/api/mod.rs @@ -3,4 +3,5 @@ pub mod constants; pub mod kmp; pub mod font; pub mod aes; -pub mod zip; \ No newline at end of file +pub mod zip; +pub mod jieba; \ No newline at end of file diff --git a/rust/src/frb_generated.rs b/rust/src/frb_generated.rs index c41070b..a34deec 100644 --- a/rust/src/frb_generated.rs +++ b/rust/src/frb_generated.rs @@ -28,12 +28,13 @@ use crate::api::aes::*; use crate::api::compress::*; use crate::api::font::*; +use crate::api::jieba::*; use crate::api::kmp::*; use crate::api::zip::*; use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, ReadBytesExt, WriteBytesExt}; use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; use flutter_rust_bridge::{Handler, IntoIntoDart}; -use image::DynamicImage; + // Section: boilerplate flutter_rust_bridge::frb_generated_boilerplate!( @@ -42,7 +43,7 @@ flutter_rust_bridge::frb_generated_boilerplate!( default_rust_auto_opaque = RustAutoOpaqueMoi, ); pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.9.0"; -pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 199828844; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 1525123801; // Section: executor @@ -284,6 +285,390 @@ fn wire__crate__api__compress__ImageCompress_contain_with_options_impl( }, ) } +fn wire__crate__api__jieba__JiebaRs_cut_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "JiebaRs_cut", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_text = ::sse_decode(&mut deserializer); + let api_hmm = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = crate::api::jieba::JiebaRs::cut(api_text, api_hmm)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__jieba__JiebaRs_cut_all_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "JiebaRs_cut_all", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_text = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = crate::api::jieba::JiebaRs::cut_all(api_text)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__jieba__JiebaRs_cut_for_search_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "JiebaRs_cut_for_search", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_text = ::sse_decode(&mut deserializer); + let api_hmm = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = + crate::api::jieba::JiebaRs::cut_for_search(api_text, api_hmm)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__jieba__JiebaRs_extract_keywords_text_rank_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "JiebaRs_extract_keywords_text_rank", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_text = ::sse_decode(&mut deserializer); + let api_top_k = ::sse_decode(&mut deserializer); + let api_allowed_pos = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = crate::api::jieba::JiebaRs::extract_keywords_text_rank( + api_text, + api_top_k, + api_allowed_pos, + )?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__jieba__JiebaRs_extract_keywords_tfidf_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "JiebaRs_extract_keywords_tfidf", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_text = ::sse_decode(&mut deserializer); + let api_top_k = ::sse_decode(&mut deserializer); + let api_allowed_pos = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = crate::api::jieba::JiebaRs::extract_keywords_tfidf( + api_text, + api_top_k, + api_allowed_pos, + )?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__jieba__Keyword_auto_accessor_get_keyword_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Keyword_auto_accessor_get_keyword", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.keyword.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__jieba__Keyword_auto_accessor_get_weight_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Keyword_auto_accessor_get_weight", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.weight.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__jieba__Keyword_auto_accessor_set_keyword_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Keyword_auto_accessor_set_keyword", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_keyword = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.keyword = api_keyword; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__jieba__Keyword_auto_accessor_set_weight_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Keyword_auto_accessor_set_weight", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_weight = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.weight = api_weight; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} fn wire__crate__api__kmp__Kmp_find_matches_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -635,15 +1020,15 @@ fn wire__crate__api__kmp__build_prefix_table_impl( }, ) } -fn wire__crate__api__compress__compress_impl( +fn wire__crate__api__jieba__init_jieba_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "compress", + debug_name: "init_jieba", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -657,41 +1042,16 @@ fn wire__crate__api__compress__compress_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_img = , - >>::sse_decode(&mut deserializer); - let api_dst_height = ::sse_decode(&mut deserializer); - let api_dst_width = ::sse_decode(&mut deserializer); - let api_compress_format = - ::sse_decode(&mut deserializer); - let api_quality = ::sse_decode(&mut deserializer); deserializer.end(); - move |context| { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || { - let mut api_img_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_img, 0, false, - )], - ); - for i in decode_indices_ { - match i { - 0 => api_img_guard = Some(api_img.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_img_guard = api_img_guard.unwrap(); - let output_ok = crate::api::compress::compress( - &*api_img_guard, - api_dst_height, - api_dst_width, - api_compress_format, - api_quality, - )?; + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let output_ok = Result::<_, ()>::Ok({ + crate::api::jieba::init_jieba().await; + })?; Ok(output_ok) - })(), + })() + .await, ) } }, @@ -738,15 +1098,18 @@ fn wire__crate__api__kmp__kmp_search_impl( flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); -flutter_rust_bridge::frb_generated_moi_arc_impl_value!( - flutter_rust_bridge::for_generated::RustAutoOpaqueInner -); flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!( + flutter_rust_bridge::for_generated::RustAutoOpaqueInner +); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!( + flutter_rust_bridge::for_generated::RustAutoOpaqueInner +); flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); @@ -794,6 +1157,26 @@ impl SseDecode for ImageCompress { } } +impl SseDecode for JiebaRs { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut inner = , + >>::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner); + } +} + +impl SseDecode for Keyword { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut inner = , + >>::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner); + } +} + impl SseDecode for Kmp { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -844,16 +1227,6 @@ impl SseDecode } } -impl SseDecode - for RustOpaqueMoi> -{ - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = ::sse_decode(deserializer); - return decode_rust_opaque_moi(inner); - } -} - impl SseDecode for RustOpaqueMoi> { @@ -874,6 +1247,22 @@ impl SseDecode } } +impl SseDecode for RustOpaqueMoi> { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut inner = ::sse_decode(deserializer); + return decode_rust_opaque_moi(inner); + } +} + +impl SseDecode for RustOpaqueMoi> { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut inner = ::sse_decode(deserializer); + return decode_rust_opaque_moi(inner); + } +} + impl SseDecode for RustOpaqueMoi> { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -898,6 +1287,13 @@ impl SseDecode for String { } } +impl SseDecode for bool { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + deserializer.cursor.read_u8().unwrap() != 0 + } +} + impl SseDecode for crate::api::constants::CompressFormat { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -918,6 +1314,13 @@ impl SseDecode for f32 { } } +impl SseDecode for f64 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + deserializer.cursor.read_f64::().unwrap() + } +} + impl SseDecode for i32 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -925,6 +1328,18 @@ impl SseDecode for i32 { } } +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode(deserializer)); + } + return ans_; + } +} + impl SseDecode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -1087,13 +1502,6 @@ impl SseDecode for usize { } } -impl SseDecode for bool { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - deserializer.cursor.read_u8().unwrap() != 0 - } -} - fn pde_ffi_dispatcher_primary_impl( func_id: i32, port: flutter_rust_bridge::for_generated::MessagePort, @@ -1126,15 +1534,32 @@ fn pde_ffi_dispatcher_primary_impl( rust_vec_len, data_len, ), - 7 => wire__crate__api__kmp__Kmp_find_matches_impl(port, ptr, rust_vec_len, data_len), - 8 => wire__crate__api__kmp__Kmp_replace_with_kmp_impl(port, ptr, rust_vec_len, data_len), - 9 => wire__crate__api__zip__Zip_add_dir_impl(port, ptr, rust_vec_len, data_len), - 10 => wire__crate__api__zip__Zip_add_file_impl(port, ptr, rust_vec_len, data_len), - 11 => wire__crate__api__zip__Zip_extract_impl(port, ptr, rust_vec_len, data_len), - 12 => wire__crate__api__zip__Zip_finish_impl(port, ptr, rust_vec_len, data_len), - 14 => wire__crate__api__kmp__build_prefix_table_impl(port, ptr, rust_vec_len, data_len), - 15 => wire__crate__api__compress__compress_impl(port, ptr, rust_vec_len, data_len), - 16 => wire__crate__api__kmp__kmp_search_impl(port, ptr, rust_vec_len, data_len), + 7 => wire__crate__api__jieba__JiebaRs_cut_impl(port, ptr, rust_vec_len, data_len), + 8 => wire__crate__api__jieba__JiebaRs_cut_all_impl(port, ptr, rust_vec_len, data_len), + 9 => { + wire__crate__api__jieba__JiebaRs_cut_for_search_impl(port, ptr, rust_vec_len, data_len) + } + 10 => wire__crate__api__jieba__JiebaRs_extract_keywords_text_rank_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 11 => wire__crate__api__jieba__JiebaRs_extract_keywords_tfidf_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 16 => wire__crate__api__kmp__Kmp_find_matches_impl(port, ptr, rust_vec_len, data_len), + 17 => wire__crate__api__kmp__Kmp_replace_with_kmp_impl(port, ptr, rust_vec_len, data_len), + 18 => wire__crate__api__zip__Zip_add_dir_impl(port, ptr, rust_vec_len, data_len), + 19 => wire__crate__api__zip__Zip_add_file_impl(port, ptr, rust_vec_len, data_len), + 20 => wire__crate__api__zip__Zip_extract_impl(port, ptr, rust_vec_len, data_len), + 21 => wire__crate__api__zip__Zip_finish_impl(port, ptr, rust_vec_len, data_len), + 23 => wire__crate__api__kmp__build_prefix_table_impl(port, ptr, rust_vec_len, data_len), + 24 => wire__crate__api__jieba__init_jieba_impl(port, ptr, rust_vec_len, data_len), + 25 => wire__crate__api__kmp__kmp_search_impl(port, ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -1147,7 +1572,27 @@ fn pde_ffi_dispatcher_sync_impl( ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { // Codec=Pde (Serialization + dispatch), see doc to use other codecs match func_id { - 13 => wire__crate__api__zip__Zip_new_impl(ptr, rust_vec_len, data_len), + 12 => wire__crate__api__jieba__Keyword_auto_accessor_get_keyword_impl( + ptr, + rust_vec_len, + data_len, + ), + 13 => wire__crate__api__jieba__Keyword_auto_accessor_get_weight_impl( + ptr, + rust_vec_len, + data_len, + ), + 14 => wire__crate__api__jieba__Keyword_auto_accessor_set_keyword_impl( + ptr, + rust_vec_len, + data_len, + ), + 15 => wire__crate__api__jieba__Keyword_auto_accessor_set_weight_impl( + ptr, + rust_vec_len, + data_len, + ), + 22 => wire__crate__api__zip__Zip_new_impl(ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -1199,6 +1644,36 @@ impl flutter_rust_bridge::IntoIntoDart> for ImageCompr } } +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for FrbWrapper { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0) + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for FrbWrapper {} + +impl flutter_rust_bridge::IntoIntoDart> for JiebaRs { + fn into_into_dart(self) -> FrbWrapper { + self.into() + } +} + +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for FrbWrapper { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0) + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for FrbWrapper {} + +impl flutter_rust_bridge::IntoIntoDart> for Keyword { + fn into_into_dart(self) -> FrbWrapper { + self.into() + } +} + // Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for FrbWrapper { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { @@ -1280,6 +1755,20 @@ impl SseEncode for ImageCompress { } } +impl SseEncode for JiebaRs { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); + } +} + +impl SseEncode for Keyword { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); + } +} + impl SseEncode for Kmp { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -1332,17 +1821,6 @@ impl SseEncode } } -impl SseEncode - for RustOpaqueMoi> -{ - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - let (ptr, size) = self.sse_encode_raw(); - ::sse_encode(ptr, serializer); - ::sse_encode(size, serializer); - } -} - impl SseEncode for RustOpaqueMoi> { @@ -1365,6 +1843,24 @@ impl SseEncode } } +impl SseEncode for RustOpaqueMoi> { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + let (ptr, size) = self.sse_encode_raw(); + ::sse_encode(ptr, serializer); + ::sse_encode(size, serializer); + } +} + +impl SseEncode for RustOpaqueMoi> { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + let (ptr, size) = self.sse_encode_raw(); + ::sse_encode(ptr, serializer); + ::sse_encode(size, serializer); + } +} + impl SseEncode for RustOpaqueMoi> { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -1390,6 +1886,13 @@ impl SseEncode for String { } } +impl SseEncode for bool { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + serializer.cursor.write_u8(self as _).unwrap(); + } +} + impl SseEncode for crate::api::constants::CompressFormat { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -1414,6 +1917,13 @@ impl SseEncode for f32 { } } +impl SseEncode for f64 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + serializer.cursor.write_f64::(self).unwrap(); + } +} + impl SseEncode for i32 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -1421,6 +1931,16 @@ impl SseEncode for i32 { } } +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + impl SseEncode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -1566,13 +2086,6 @@ impl SseEncode for usize { } } -impl SseEncode for bool { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - serializer.cursor.write_u8(self as _).unwrap(); - } -} - #[cfg(not(target_family = "wasm"))] mod io { // This file is automatically generated, so please do not edit it. @@ -1584,6 +2097,7 @@ mod io { use crate::api::aes::*; use crate::api::compress::*; use crate::api::font::*; + use crate::api::jieba::*; use crate::api::kmp::*; use crate::api::zip::*; use flutter_rust_bridge::for_generated::byteorder::{ @@ -1610,20 +2124,6 @@ mod io { MoiArc::>::decrement_strong_count(ptr as _); } - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - #[unsafe(no_mangle)] pub extern "C" fn frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( ptr: *const std::ffi::c_void, @@ -1652,6 +2152,34 @@ mod io { MoiArc::>::decrement_strong_count(ptr as _); } + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + #[unsafe(no_mangle)] pub extern "C" fn frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( ptr: *const std::ffi::c_void, @@ -1682,116 +2210,3 @@ mod io { } #[cfg(not(target_family = "wasm"))] pub use io::*; - -/// cbindgen:ignore -#[cfg(target_family = "wasm")] -mod web { - // This file is automatically generated, so please do not edit it. - // @generated by `flutter_rust_bridge`@ 2.9.0. - - // Section: imports - - use super::*; - use crate::api::aes::*; - use crate::api::compress::*; - use crate::api::font::*; - use crate::api::kmp::*; - use crate::api::zip::*; - use flutter_rust_bridge::for_generated::byteorder::{ - NativeEndian, ReadBytesExt, WriteBytesExt, - }; - use flutter_rust_bridge::for_generated::wasm_bindgen; - use flutter_rust_bridge::for_generated::wasm_bindgen::prelude::*; - use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; - use flutter_rust_bridge::{Handler, IntoIntoDart}; - - // Section: boilerplate - - flutter_rust_bridge::frb_generated_boilerplate_web!(); - - #[wasm_bindgen] - pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[wasm_bindgen] - pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[wasm_bindgen] - pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[wasm_bindgen] - pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[wasm_bindgen] - pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[wasm_bindgen] - pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[wasm_bindgen] - pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[wasm_bindgen] - pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[wasm_bindgen] - pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[wasm_bindgen] - pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[wasm_bindgen] - pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[wasm_bindgen] - pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } -} -#[cfg(target_family = "wasm")] -pub use web::*;