From b2e93921e769cdd047fca14a9dd43fcbb624d53a Mon Sep 17 00:00:00 2001 From: Dominik Toton <166132265+dtscalac@users.noreply.github.com> Date: Mon, 13 Jan 2025 10:01:05 +0100 Subject: [PATCH 1/6] fix(flutter/catalyst_key_derivation)!: catalyst key derivation native compilation fix and publishing (#1505) * fix: add android ndk version as required by flutter_rust_bridge * chore: sync ios & macOS pods * chore: raise macos minimum deployment target as required by 'gal' pod * docs: document that catalyst_key_derivation must be initialised before catalyst_cardano_serialization * fix: add missing files for catalyst_key_derivation * chore: fix catalyst_key_derivation publishing * style: reformat * style: spelling --- .config/dictionaries/project.dic | 2 + .../apps/voices/android/app/build.gradle | 3 +- catalyst_voices/apps/voices/ios/Podfile.lock | 135 +- .../ios/Runner.xcodeproj/project.pbxproj | 246 +-- catalyst_voices/apps/voices/macos/Podfile | 2 +- .../apps/voices/macos/Podfile.lock | 79 +- .../macos/Runner.xcodeproj/project.pbxproj | 72 +- catalyst_voices/melos.yaml | 6 +- .../catalyst_cardano/README.md | 4 + .../catalyst_cardano_serialization/README.md | 5 +- .../example/main.dart | 4 +- .../catalyst_key_derivation/.earthlyignore | 1 + .../libs/catalyst_key_derivation/.gitignore | 5 +- .../libs/catalyst_key_derivation/.pubignore | 14 + .../assets/js/catalyst_key_derivation.js | 1484 +++++++------- .../assets/js/catalyst_key_derivation_bg.wasm | Bin 859816 -> 860845 bytes .../libs/catalyst_key_derivation/pubspec.yaml | 2 +- .../rust/src/frb_generated.rs | 1722 +++++++++++++++++ 18 files changed, 2835 insertions(+), 951 deletions(-) create mode 100644 catalyst_voices/packages/libs/catalyst_key_derivation/.pubignore create mode 100644 catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/frb_generated.rs diff --git a/.config/dictionaries/project.dic b/.config/dictionaries/project.dic index 013d85f1b88..9c6c3354447 100644 --- a/.config/dictionaries/project.dic +++ b/.config/dictionaries/project.dic @@ -30,6 +30,7 @@ bimap bindgen bkioshn bluefireteam +bridgefor BROTLI canvaskit cardano @@ -105,6 +106,7 @@ fmtfix fontawesome fontello Formz +frbgen fuzzer gapless gcloud diff --git a/catalyst_voices/apps/voices/android/app/build.gradle b/catalyst_voices/apps/voices/android/app/build.gradle index 5b837bf96bf..72c996b08e0 100644 --- a/catalyst_voices/apps/voices/android/app/build.gradle +++ b/catalyst_voices/apps/voices/android/app/build.gradle @@ -30,6 +30,7 @@ if (keystorePropertiesFile.exists()) { android { compileSdkVersion flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -46,7 +47,7 @@ android { defaultConfig { applicationId "io.projectcatalyst.catalyst_voices" - minSdkVersion flutter.minSdkVersion + minSdkVersion 23 // required by super_native_extensions targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/catalyst_voices/apps/voices/ios/Podfile.lock b/catalyst_voices/apps/voices/ios/Podfile.lock index 3b33371d558..d8bc906958d 100644 --- a/catalyst_voices/apps/voices/ios/Podfile.lock +++ b/catalyst_voices/apps/voices/ios/Podfile.lock @@ -1,61 +1,174 @@ PODS: + - catalyst_key_derivation (0.0.1): + - Flutter + - device_info_plus (0.0.1): + - Flutter + - DKImagePickerController/Core (4.3.9): + - DKImagePickerController/ImageDataManager + - DKImagePickerController/Resource + - DKImagePickerController/ImageDataManager (4.3.9) + - DKImagePickerController/PhotoGallery (4.3.9): + - DKImagePickerController/Core + - DKPhotoGallery + - DKImagePickerController/Resource (4.3.9) + - DKPhotoGallery (0.0.19): + - DKPhotoGallery/Core (= 0.0.19) + - DKPhotoGallery/Model (= 0.0.19) + - DKPhotoGallery/Preview (= 0.0.19) + - DKPhotoGallery/Resource (= 0.0.19) + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Core (0.0.19): + - DKPhotoGallery/Model + - DKPhotoGallery/Preview + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Model (0.0.19): + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Preview (0.0.19): + - DKPhotoGallery/Model + - DKPhotoGallery/Resource + - SDWebImage + - SwiftyGif + - DKPhotoGallery/Resource (0.0.19): + - SDWebImage + - SwiftyGif + - file_picker (0.0.1): + - DKImagePickerController/PhotoGallery + - Flutter - Flutter (1.0.0) + - flutter_keyboard_visibility_temp_fork (0.0.1): + - Flutter - flutter_secure_storage (6.0.0): - Flutter + - gal (1.0.0): + - Flutter + - FlutterMacOS + - image_picker_ios (0.0.1): + - Flutter - integration_test (0.0.1): - Flutter + - irondash_engine_context (0.0.1): + - Flutter - package_info_plus (0.4.5): - Flutter - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS - - Sentry/HybridSDK (8.35.1) - - sentry_flutter (8.8.0): + - quill_native_bridge_ios (0.0.1): + - Flutter + - SDWebImage (5.20.0): + - SDWebImage/Core (= 5.20.0) + - SDWebImage/Core (5.20.0) + - Sentry/HybridSDK (8.40.1) + - sentry_flutter (8.10.1): + - Flutter + - FlutterMacOS + - Sentry/HybridSDK (= 8.40.1) + - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - - Sentry/HybridSDK (= 8.35.1) + - super_native_extensions (0.0.1): + - Flutter + - SwiftyGif (5.4.5) - url_launcher_ios (0.0.1): - Flutter + - video_player_avfoundation (0.0.1): + - Flutter + - FlutterMacOS DEPENDENCIES: + - catalyst_key_derivation (from `.symlinks/plugins/catalyst_key_derivation/ios`) + - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) + - file_picker (from `.symlinks/plugins/file_picker/ios`) - Flutter (from `Flutter`) + - flutter_keyboard_visibility_temp_fork (from `.symlinks/plugins/flutter_keyboard_visibility_temp_fork/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) + - gal (from `.symlinks/plugins/gal/darwin`) + - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - integration_test (from `.symlinks/plugins/integration_test/ios`) + - irondash_engine_context (from `.symlinks/plugins/irondash_engine_context/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - quill_native_bridge_ios (from `.symlinks/plugins/quill_native_bridge_ios/ios`) - sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) + - super_native_extensions (from `.symlinks/plugins/super_native_extensions/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) + - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) SPEC REPOS: trunk: + - DKImagePickerController + - DKPhotoGallery + - SDWebImage - Sentry + - SwiftyGif EXTERNAL SOURCES: + catalyst_key_derivation: + :path: ".symlinks/plugins/catalyst_key_derivation/ios" + device_info_plus: + :path: ".symlinks/plugins/device_info_plus/ios" + file_picker: + :path: ".symlinks/plugins/file_picker/ios" Flutter: :path: Flutter + flutter_keyboard_visibility_temp_fork: + :path: ".symlinks/plugins/flutter_keyboard_visibility_temp_fork/ios" flutter_secure_storage: :path: ".symlinks/plugins/flutter_secure_storage/ios" + gal: + :path: ".symlinks/plugins/gal/darwin" + image_picker_ios: + :path: ".symlinks/plugins/image_picker_ios/ios" integration_test: :path: ".symlinks/plugins/integration_test/ios" + irondash_engine_context: + :path: ".symlinks/plugins/irondash_engine_context/ios" package_info_plus: :path: ".symlinks/plugins/package_info_plus/ios" path_provider_foundation: :path: ".symlinks/plugins/path_provider_foundation/darwin" + quill_native_bridge_ios: + :path: ".symlinks/plugins/quill_native_bridge_ios/ios" sentry_flutter: :path: ".symlinks/plugins/sentry_flutter/ios" + shared_preferences_foundation: + :path: ".symlinks/plugins/shared_preferences_foundation/darwin" + super_native_extensions: + :path: ".symlinks/plugins/super_native_extensions/ios" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" + video_player_avfoundation: + :path: ".symlinks/plugins/video_player_avfoundation/darwin" SPEC CHECKSUMS: + catalyst_key_derivation: 4862949c59475ebcf8ba052843829e64bb9138f5 + device_info_plus: 71ffc6ab7634ade6267c7a93088ed7e4f74e5896 + DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c + DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 + file_picker: 9b3292d7c8bc68c8a7bf8eb78f730e49c8efc517 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 - integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573 - package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c - path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 - Sentry: 1fe34e9c2cbba1e347623610d26db121dcb569f1 - sentry_flutter: a39c2a2d67d5e5b9cb0b94a4985c76dd5b3fc737 - url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe + flutter_keyboard_visibility_temp_fork: 95b2d534bacf6ac62e7fcbe5c2a9e2c2a17ce06f + flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13 + gal: 44e5b10dbd347c8247a2851acee6c1fbe282c1d3 + image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a + integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e + irondash_engine_context: 8e58ca8e0212ee9d1c7dc6a42121849986c88486 + package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 + path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 + quill_native_bridge_ios: f47af4b14e7757968486641656c5d23250cee521 + SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8 + Sentry: e9215d7b17f7902692b4f8700e061e4f853e3521 + sentry_flutter: ba644c90ccccb202066a5218a593d1c35584cd37 + shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 + super_native_extensions: b763c02dc3a8fd078389f410bf15149179020cb4 + SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 + url_launcher_ios: 694010445543906933d732453a59da0a173ae33d + video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b PODFILE CHECKSUM: ff9ae414ffbc80ad6f9d2058e299051a15f6eca7 -COCOAPODS: 1.15.2 +COCOAPODS: 1.16.2 diff --git a/catalyst_voices/apps/voices/ios/Runner.xcodeproj/project.pbxproj b/catalyst_voices/apps/voices/ios/Runner.xcodeproj/project.pbxproj index 1c0528367b5..574e50cf13e 100644 --- a/catalyst_voices/apps/voices/ios/Runner.xcodeproj/project.pbxproj +++ b/catalyst_voices/apps/voices/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 0F70377D00797D35A7053E26 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C1BA8F176C375B8915F86E3 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - 9D0FA56BCE8AC1C65B14A455 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58AD41A647D3ECFB0AFDB4C4 /* Pods_Runner.framework */; }; + C54008320994E85E767FDFA6 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1064CC2FD29A5A7440F1E9FD /* Pods_Runner.framework */; }; CE6B64BD2AF0F46900FBC49C /* RunnerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6B64BC2AF0F46900FBC49C /* RunnerTests.m */; }; - D53E7506F151DF64BA6648D1 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A226CD369F80553777A41F2 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,39 +42,25 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 04DBF35C680937E90FD17861 /* Pods-RunnerTests.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-prod.xcconfig"; sourceTree = ""; }; - 110D21E644358DF4FF7A1651 /* Pods-Runner.debug-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-qa.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-qa.xcconfig"; sourceTree = ""; }; + 0C1BA8F176C375B8915F86E3 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1064CC2FD29A5A7440F1E9FD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1403AEAC65574867C4747BCD /* Pods-Runner.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-dev.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 1D542E73B16F2EFD03178B92 /* Pods-Runner.profile-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-qa.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-qa.xcconfig"; sourceTree = ""; }; - 25F1B71D8B24DA7FDAB9D3DD /* Pods-Runner.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-staging.xcconfig"; sourceTree = ""; }; - 2D16A5D50EE3E1B111EE91D6 /* Pods-Runner.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-dev.xcconfig"; sourceTree = ""; }; - 2D61113F8BE9B62F4DD11903 /* Pods-Runner.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-prod.xcconfig"; sourceTree = ""; }; - 2E0014B094388ADF8FBD708F /* Pods-RunnerTests.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-staging.xcconfig"; sourceTree = ""; }; - 31A397FCE8216C1593BE34CF /* Pods-RunnerTests.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-production.xcconfig"; sourceTree = ""; }; - 337F9E3173CD29E887343C74 /* Pods-Runner.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-staging.xcconfig"; sourceTree = ""; }; - 34CB998BDA3DCF8CA0AE3B67 /* Pods-Runner.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-development.xcconfig"; sourceTree = ""; }; - 3797E7C5E46FFA9E99ADF798 /* Pods-RunnerTests.profile-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-preprod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-preprod.xcconfig"; sourceTree = ""; }; - 3A226CD369F80553777A41F2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1C0BAC79A7686C8EA09B8FD3 /* Pods-Runner.debug-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-preprod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-preprod.xcconfig"; sourceTree = ""; }; + 31922200DD6AE5BB84DF1186 /* Pods-RunnerTests.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-prod.xcconfig"; sourceTree = ""; }; + 36232300431297996CB7810F /* Pods-RunnerTests.debug-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-preprod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-preprod.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 47CE06DF243826DB794F81DA /* Pods-RunnerTests.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-staging.xcconfig"; sourceTree = ""; }; - 4FACF8FAA8DB4A9997126640 /* Pods-RunnerTests.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-production.xcconfig"; sourceTree = ""; }; - 542D386CEB4D50666C4BB91A /* Pods-RunnerTests.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-prod.xcconfig"; sourceTree = ""; }; - 58AD41A647D3ECFB0AFDB4C4 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 63BCF9D6A6545EE5FAD7EA0F /* Pods-Runner.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-production.xcconfig"; sourceTree = ""; }; - 69C11808F46572DE4DBA3848 /* Pods-RunnerTests.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-dev.xcconfig"; sourceTree = ""; }; - 6A05BE755BF46EB5C733C879 /* Pods-Runner.debug-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-preprod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-preprod.xcconfig"; sourceTree = ""; }; - 7050E1265BDD656EC4D2A451 /* Pods-Runner.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-production.xcconfig"; sourceTree = ""; }; + 47D058809AB24308DADE2023 /* Pods-Runner.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-prod.xcconfig"; sourceTree = ""; }; + 4D06A70F96562C30FF130821 /* Pods-Runner.profile-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-qa.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-qa.xcconfig"; sourceTree = ""; }; + 4D75C75BCAC7937C0C902E8A /* Pods-RunnerTests.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-prod.xcconfig"; sourceTree = ""; }; + 6D3FD11226640411C249E968 /* Pods-RunnerTests.debug-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-qa.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-qa.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 75BC2E5520DD3E7D84064AAE /* Pods-Runner.release-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-qa.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-qa.xcconfig"; sourceTree = ""; }; - 773F545FCFD04AF1DB122DBF /* Pods-Runner.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-development.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7E7B78E916114E5C1F57FE33 /* Pods-RunnerTests.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-prod.xcconfig"; sourceTree = ""; }; - 80C4104488BCCAA4D8B223D7 /* Pods-RunnerTests.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-dev.xcconfig"; sourceTree = ""; }; - 887F4148005171B9B77DE0AE /* Pods-Runner.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-prod.xcconfig"; sourceTree = ""; }; - 8D191FE27020DF590389CD37 /* Pods-Runner.release-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-preprod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-preprod.xcconfig"; sourceTree = ""; }; - 944A13CD719576F1CDA6D74A /* Pods-RunnerTests.debug-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-preprod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-preprod.xcconfig"; sourceTree = ""; }; + 7B683BBFDB7DD3B6CCE27505 /* Pods-Runner.debug-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-qa.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-qa.xcconfig"; sourceTree = ""; }; + 7EF386402C303635AE6B4C0E /* Pods-RunnerTests.release-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-preprod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-preprod.xcconfig"; sourceTree = ""; }; + 8381BDED401D0770B360C41A /* Pods-RunnerTests.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-dev.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -82,25 +68,21 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9847E211E5A4CE6EE37E0A95 /* Pods-Runner.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"; sourceTree = ""; }; - 9AAF575D874B9B76D88C0390 /* Pods-RunnerTests.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-development.xcconfig"; sourceTree = ""; }; - 9C0275AC840A610349C5E7C4 /* Pods-RunnerTests.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-development.xcconfig"; sourceTree = ""; }; - 9C4311ED66475714D0455C45 /* Pods-Runner.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-staging.xcconfig"; sourceTree = ""; }; - AB0EDBCC67C0C9925389B800 /* Pods-RunnerTests.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-development.xcconfig"; sourceTree = ""; }; - AFD5684096F91FC2F28C7D2A /* Pods-RunnerTests.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-production.xcconfig"; sourceTree = ""; }; - B10C5FA70C1041F29CE6A68E /* Pods-RunnerTests.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-dev.xcconfig"; sourceTree = ""; }; - B5E3C6949A27EB5D8C58BA43 /* Pods-RunnerTests.release-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-qa.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-qa.xcconfig"; sourceTree = ""; }; - B92FEC54F76EBB576E779B07 /* Pods-RunnerTests.release-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-preprod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-preprod.xcconfig"; sourceTree = ""; }; - BF4CC1003B733B884CF10F4C /* Pods-Runner.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-prod.xcconfig"; sourceTree = ""; }; - C5A9E9568A02B6B88B101B24 /* Pods-Runner.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-dev.xcconfig"; sourceTree = ""; }; - C6461643F68A308EF81D55A5 /* Pods-RunnerTests.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-staging.xcconfig"; sourceTree = ""; }; - CC54985AB21DFFB05FC233CF /* Pods-Runner.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-development.xcconfig"; sourceTree = ""; }; + 98D3337F1C3373697CE91D6A /* Pods-Runner.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-prod.xcconfig"; sourceTree = ""; }; + B53EB5F55056D26544250DBE /* Pods-RunnerTests.profile-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-qa.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-qa.xcconfig"; sourceTree = ""; }; + BEC3B02CDF67E6B74BB75281 /* Pods-RunnerTests.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-dev.xcconfig"; sourceTree = ""; }; + C0286E8E9375B139C47FC732 /* Pods-Runner.profile-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-preprod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-preprod.xcconfig"; sourceTree = ""; }; + CD93F8B8FFF0FD65E4205299 /* Pods-Runner.release-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-preprod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-preprod.xcconfig"; sourceTree = ""; }; CE6B64BA2AF0F46900FBC49C /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CE6B64BC2AF0F46900FBC49C /* RunnerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RunnerTests.m; sourceTree = ""; }; - DA17BE7AD3C5866321DA51D1 /* Pods-RunnerTests.debug-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-qa.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-qa.xcconfig"; sourceTree = ""; }; - DD126E88F4D7C9F039A51EF3 /* Pods-Runner.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-production.xcconfig"; sourceTree = ""; }; - E78EC75FAD107D55E0264945 /* Pods-RunnerTests.profile-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-qa.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-qa.xcconfig"; sourceTree = ""; }; - FE2DB87A2CCC5A6B200DC816 /* Pods-Runner.profile-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-preprod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-preprod.xcconfig"; sourceTree = ""; }; + D6215F43D257CEB606DCA6D5 /* Pods-Runner.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-dev.xcconfig"; sourceTree = ""; }; + D833A5582BD02F02D5FE92B4 /* Pods-Runner.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-prod.xcconfig"; sourceTree = ""; }; + D9F0F7E5710A98FE733AB6C8 /* Pods-RunnerTests.release-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-qa.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-qa.xcconfig"; sourceTree = ""; }; + E41DA787FFECED35972C502A /* Pods-RunnerTests.profile-preprod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-preprod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-preprod.xcconfig"; sourceTree = ""; }; + EA2AE941E24AB961A0694270 /* Pods-RunnerTests.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-dev.xcconfig"; sourceTree = ""; }; + EC3691799FDBB75BD0A4FF0E /* Pods-RunnerTests.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-prod.xcconfig"; sourceTree = ""; }; + F4D3A0184F37C287F4FD3AEC /* Pods-Runner.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"; sourceTree = ""; }; + FCB603FB39B00B0B40F776CC /* Pods-Runner.release-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-qa.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-qa.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -108,7 +90,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9D0FA56BCE8AC1C65B14A455 /* Pods_Runner.framework in Frameworks */, + C54008320994E85E767FDFA6 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -116,7 +98,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D53E7506F151DF64BA6648D1 /* Pods_RunnerTests.framework in Frameworks */, + 0F70377D00797D35A7053E26 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -126,52 +108,43 @@ 08A2B3987EB250E54DC3A21D /* Pods */ = { isa = PBXGroup; children = ( - 63BCF9D6A6545EE5FAD7EA0F /* Pods-Runner.debug-production.xcconfig */, - CC54985AB21DFFB05FC233CF /* Pods-Runner.debug-development.xcconfig */, - 25F1B71D8B24DA7FDAB9D3DD /* Pods-Runner.debug-staging.xcconfig */, - 7050E1265BDD656EC4D2A451 /* Pods-Runner.release-production.xcconfig */, - 34CB998BDA3DCF8CA0AE3B67 /* Pods-Runner.release-development.xcconfig */, - 9C4311ED66475714D0455C45 /* Pods-Runner.release-staging.xcconfig */, - DD126E88F4D7C9F039A51EF3 /* Pods-Runner.profile-production.xcconfig */, - 773F545FCFD04AF1DB122DBF /* Pods-Runner.profile-development.xcconfig */, - 337F9E3173CD29E887343C74 /* Pods-Runner.profile-staging.xcconfig */, - AFD5684096F91FC2F28C7D2A /* Pods-RunnerTests.debug-production.xcconfig */, - 9C0275AC840A610349C5E7C4 /* Pods-RunnerTests.debug-development.xcconfig */, - C6461643F68A308EF81D55A5 /* Pods-RunnerTests.debug-staging.xcconfig */, - 31A397FCE8216C1593BE34CF /* Pods-RunnerTests.release-production.xcconfig */, - AB0EDBCC67C0C9925389B800 /* Pods-RunnerTests.release-development.xcconfig */, - 2E0014B094388ADF8FBD708F /* Pods-RunnerTests.release-staging.xcconfig */, - 4FACF8FAA8DB4A9997126640 /* Pods-RunnerTests.profile-production.xcconfig */, - 9AAF575D874B9B76D88C0390 /* Pods-RunnerTests.profile-development.xcconfig */, - 47CE06DF243826DB794F81DA /* Pods-RunnerTests.profile-staging.xcconfig */, - BF4CC1003B733B884CF10F4C /* Pods-Runner.debug-prod.xcconfig */, - 6A05BE755BF46EB5C733C879 /* Pods-Runner.debug-preprod.xcconfig */, - 9847E211E5A4CE6EE37E0A95 /* Pods-Runner.debug-dev.xcconfig */, - 110D21E644358DF4FF7A1651 /* Pods-Runner.debug-qa.xcconfig */, - 887F4148005171B9B77DE0AE /* Pods-Runner.release-prod.xcconfig */, - 8D191FE27020DF590389CD37 /* Pods-Runner.release-preprod.xcconfig */, - C5A9E9568A02B6B88B101B24 /* Pods-Runner.release-dev.xcconfig */, - 75BC2E5520DD3E7D84064AAE /* Pods-Runner.release-qa.xcconfig */, - 2D61113F8BE9B62F4DD11903 /* Pods-Runner.profile-prod.xcconfig */, - FE2DB87A2CCC5A6B200DC816 /* Pods-Runner.profile-preprod.xcconfig */, - 2D16A5D50EE3E1B111EE91D6 /* Pods-Runner.profile-dev.xcconfig */, - 1D542E73B16F2EFD03178B92 /* Pods-Runner.profile-qa.xcconfig */, - 542D386CEB4D50666C4BB91A /* Pods-RunnerTests.debug-prod.xcconfig */, - 944A13CD719576F1CDA6D74A /* Pods-RunnerTests.debug-preprod.xcconfig */, - B10C5FA70C1041F29CE6A68E /* Pods-RunnerTests.debug-dev.xcconfig */, - DA17BE7AD3C5866321DA51D1 /* Pods-RunnerTests.debug-qa.xcconfig */, - 04DBF35C680937E90FD17861 /* Pods-RunnerTests.release-prod.xcconfig */, - B92FEC54F76EBB576E779B07 /* Pods-RunnerTests.release-preprod.xcconfig */, - 80C4104488BCCAA4D8B223D7 /* Pods-RunnerTests.release-dev.xcconfig */, - B5E3C6949A27EB5D8C58BA43 /* Pods-RunnerTests.release-qa.xcconfig */, - 7E7B78E916114E5C1F57FE33 /* Pods-RunnerTests.profile-prod.xcconfig */, - 3797E7C5E46FFA9E99ADF798 /* Pods-RunnerTests.profile-preprod.xcconfig */, - 69C11808F46572DE4DBA3848 /* Pods-RunnerTests.profile-dev.xcconfig */, - E78EC75FAD107D55E0264945 /* Pods-RunnerTests.profile-qa.xcconfig */, + 47D058809AB24308DADE2023 /* Pods-Runner.debug-prod.xcconfig */, + 1C0BAC79A7686C8EA09B8FD3 /* Pods-Runner.debug-preprod.xcconfig */, + F4D3A0184F37C287F4FD3AEC /* Pods-Runner.debug-dev.xcconfig */, + 7B683BBFDB7DD3B6CCE27505 /* Pods-Runner.debug-qa.xcconfig */, + D833A5582BD02F02D5FE92B4 /* Pods-Runner.release-prod.xcconfig */, + CD93F8B8FFF0FD65E4205299 /* Pods-Runner.release-preprod.xcconfig */, + D6215F43D257CEB606DCA6D5 /* Pods-Runner.release-dev.xcconfig */, + FCB603FB39B00B0B40F776CC /* Pods-Runner.release-qa.xcconfig */, + 98D3337F1C3373697CE91D6A /* Pods-Runner.profile-prod.xcconfig */, + C0286E8E9375B139C47FC732 /* Pods-Runner.profile-preprod.xcconfig */, + 1403AEAC65574867C4747BCD /* Pods-Runner.profile-dev.xcconfig */, + 4D06A70F96562C30FF130821 /* Pods-Runner.profile-qa.xcconfig */, + 31922200DD6AE5BB84DF1186 /* Pods-RunnerTests.debug-prod.xcconfig */, + 36232300431297996CB7810F /* Pods-RunnerTests.debug-preprod.xcconfig */, + EA2AE941E24AB961A0694270 /* Pods-RunnerTests.debug-dev.xcconfig */, + 6D3FD11226640411C249E968 /* Pods-RunnerTests.debug-qa.xcconfig */, + EC3691799FDBB75BD0A4FF0E /* Pods-RunnerTests.release-prod.xcconfig */, + 7EF386402C303635AE6B4C0E /* Pods-RunnerTests.release-preprod.xcconfig */, + 8381BDED401D0770B360C41A /* Pods-RunnerTests.release-dev.xcconfig */, + D9F0F7E5710A98FE733AB6C8 /* Pods-RunnerTests.release-qa.xcconfig */, + 4D75C75BCAC7937C0C902E8A /* Pods-RunnerTests.profile-prod.xcconfig */, + E41DA787FFECED35972C502A /* Pods-RunnerTests.profile-preprod.xcconfig */, + BEC3B02CDF67E6B74BB75281 /* Pods-RunnerTests.profile-dev.xcconfig */, + B53EB5F55056D26544250DBE /* Pods-RunnerTests.profile-qa.xcconfig */, ); path = Pods; sourceTree = ""; }; + 2E6663F837A28B4153A36E1D /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1064CC2FD29A5A7440F1E9FD /* Pods_Runner.framework */, + 0C1BA8F176C375B8915F86E3 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -191,7 +164,7 @@ CE6B64BB2AF0F46900FBC49C /* RunnerTests */, 97C146EF1CF9000F007C117D /* Products */, 08A2B3987EB250E54DC3A21D /* Pods */, - D03E20C6287DCD86205EC91C /* Frameworks */, + 2E6663F837A28B4153A36E1D /* Frameworks */, ); sourceTree = ""; }; @@ -227,15 +200,6 @@ path = RunnerTests; sourceTree = ""; }; - D03E20C6287DCD86205EC91C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 58AD41A647D3ECFB0AFDB4C4 /* Pods_Runner.framework */, - 3A226CD369F80553777A41F2 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -243,14 +207,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 05D808F923123BFB68869738 /* [CP] Check Pods Manifest.lock */, + 473D9089724DDE5DAE905129 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - FE2827EE334808ED9FD3D9AF /* [CP] Embed Pods Frameworks */, + 5A3DD7CF36040DA629C29F35 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -265,7 +229,7 @@ isa = PBXNativeTarget; buildConfigurationList = CE6B64C92AF0F46900FBC49C /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - D70CAF3F46F17C7A7FE7082B /* [CP] Check Pods Manifest.lock */, + D87C8CB8273BABBB7B22F595 /* [CP] Check Pods Manifest.lock */, CE6B64B62AF0F46900FBC49C /* Sources */, CE6B64B72AF0F46900FBC49C /* Frameworks */, CE6B64B82AF0F46900FBC49C /* Resources */, @@ -341,7 +305,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 05D808F923123BFB68869738 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 473D9089724DDE5DAE905129 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -363,21 +343,22 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 5A3DD7CF36040DA629C29F35 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -394,7 +375,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; }; - D70CAF3F46F17C7A7FE7082B /* [CP] Check Pods Manifest.lock */ = { + D87C8CB8273BABBB7B22F595 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -416,23 +397,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - FE2827EE334808ED9FD3D9AF /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -811,7 +775,7 @@ }; CE6754FA2B39D0E900447170 /* Debug-preprod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 944A13CD719576F1CDA6D74A /* Pods-RunnerTests.debug-preprod.xcconfig */; + baseConfigurationReference = 36232300431297996CB7810F /* Pods-RunnerTests.debug-preprod.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; @@ -970,7 +934,7 @@ }; CE6754FD2B39D0FA00447170 /* Release-preprod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B92FEC54F76EBB576E779B07 /* Pods-RunnerTests.release-preprod.xcconfig */; + baseConfigurationReference = 7EF386402C303635AE6B4C0E /* Pods-RunnerTests.release-preprod.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1121,7 +1085,7 @@ }; CE6755002B39D10800447170 /* Profile-preprod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3797E7C5E46FFA9E99ADF798 /* Pods-RunnerTests.profile-preprod.xcconfig */; + baseConfigurationReference = E41DA787FFECED35972C502A /* Pods-RunnerTests.profile-preprod.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1194,7 +1158,7 @@ }; CE6B64C02AF0F46900FBC49C /* Debug-prod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 542D386CEB4D50666C4BB91A /* Pods-RunnerTests.debug-prod.xcconfig */; + baseConfigurationReference = 31922200DD6AE5BB84DF1186 /* Pods-RunnerTests.debug-prod.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1273,7 +1237,7 @@ }; CE6B64C12AF0F46900FBC49C /* Debug-dev */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B10C5FA70C1041F29CE6A68E /* Pods-RunnerTests.debug-dev.xcconfig */; + baseConfigurationReference = EA2AE941E24AB961A0694270 /* Pods-RunnerTests.debug-dev.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1352,7 +1316,7 @@ }; CE6B64C22AF0F46900FBC49C /* Debug-qa */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DA17BE7AD3C5866321DA51D1 /* Pods-RunnerTests.debug-qa.xcconfig */; + baseConfigurationReference = 6D3FD11226640411C249E968 /* Pods-RunnerTests.debug-qa.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1431,7 +1395,7 @@ }; CE6B64C32AF0F46900FBC49C /* Release-prod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 04DBF35C680937E90FD17861 /* Pods-RunnerTests.release-prod.xcconfig */; + baseConfigurationReference = EC3691799FDBB75BD0A4FF0E /* Pods-RunnerTests.release-prod.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1504,7 +1468,7 @@ }; CE6B64C42AF0F46900FBC49C /* Release-dev */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 80C4104488BCCAA4D8B223D7 /* Pods-RunnerTests.release-dev.xcconfig */; + baseConfigurationReference = 8381BDED401D0770B360C41A /* Pods-RunnerTests.release-dev.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1577,7 +1541,7 @@ }; CE6B64C52AF0F46900FBC49C /* Release-qa */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B5E3C6949A27EB5D8C58BA43 /* Pods-RunnerTests.release-qa.xcconfig */; + baseConfigurationReference = D9F0F7E5710A98FE733AB6C8 /* Pods-RunnerTests.release-qa.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1650,7 +1614,7 @@ }; CE6B64C62AF0F46900FBC49C /* Profile-prod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7E7B78E916114E5C1F57FE33 /* Pods-RunnerTests.profile-prod.xcconfig */; + baseConfigurationReference = 4D75C75BCAC7937C0C902E8A /* Pods-RunnerTests.profile-prod.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1723,7 +1687,7 @@ }; CE6B64C72AF0F46900FBC49C /* Profile-dev */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 69C11808F46572DE4DBA3848 /* Pods-RunnerTests.profile-dev.xcconfig */; + baseConfigurationReference = BEC3B02CDF67E6B74BB75281 /* Pods-RunnerTests.profile-dev.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; @@ -1796,7 +1760,7 @@ }; CE6B64C82AF0F46900FBC49C /* Profile-qa */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E78EC75FAD107D55E0264945 /* Pods-RunnerTests.profile-qa.xcconfig */; + baseConfigurationReference = B53EB5F55056D26544250DBE /* Pods-RunnerTests.profile-qa.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; diff --git a/catalyst_voices/apps/voices/macos/Podfile b/catalyst_voices/apps/voices/macos/Podfile index c795730db8e..dbccf89c90c 100644 --- a/catalyst_voices/apps/voices/macos/Podfile +++ b/catalyst_voices/apps/voices/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '11.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/catalyst_voices/apps/voices/macos/Podfile.lock b/catalyst_voices/apps/voices/macos/Podfile.lock index dcbae2b4f5e..cbf113a7d65 100644 --- a/catalyst_voices/apps/voices/macos/Podfile.lock +++ b/catalyst_voices/apps/voices/macos/Podfile.lock @@ -1,55 +1,112 @@ PODS: + - catalyst_key_derivation (0.0.1): + - FlutterMacOS + - device_info_plus (0.0.1): + - FlutterMacOS + - file_selector_macos (0.0.1): + - FlutterMacOS - flutter_secure_storage_macos (6.1.1): - FlutterMacOS - FlutterMacOS (1.0.0) + - gal (1.0.0): + - Flutter + - FlutterMacOS + - irondash_engine_context (0.0.1): + - FlutterMacOS - package_info_plus (0.0.1): - FlutterMacOS - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS - - Sentry/HybridSDK (8.35.1) - - sentry_flutter (8.8.0): + - quill_native_bridge_macos (0.0.1): + - FlutterMacOS + - Sentry/HybridSDK (8.40.1) + - sentry_flutter (8.10.1): + - Flutter + - FlutterMacOS + - Sentry/HybridSDK (= 8.40.1) + - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - - Sentry/HybridSDK (= 8.35.1) + - super_native_extensions (0.0.1): + - FlutterMacOS - url_launcher_macos (0.0.1): - FlutterMacOS + - video_player_avfoundation (0.0.1): + - Flutter + - FlutterMacOS DEPENDENCIES: + - catalyst_key_derivation (from `Flutter/ephemeral/.symlinks/plugins/catalyst_key_derivation/macos`) + - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`) + - file_selector_macos (from `Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos`) - flutter_secure_storage_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos`) - FlutterMacOS (from `Flutter/ephemeral`) + - gal (from `Flutter/ephemeral/.symlinks/plugins/gal/darwin`) + - irondash_engine_context (from `Flutter/ephemeral/.symlinks/plugins/irondash_engine_context/macos`) - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) + - quill_native_bridge_macos (from `Flutter/ephemeral/.symlinks/plugins/quill_native_bridge_macos/macos`) - sentry_flutter (from `Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos`) + - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) + - super_native_extensions (from `Flutter/ephemeral/.symlinks/plugins/super_native_extensions/macos`) - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) + - video_player_avfoundation (from `Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin`) SPEC REPOS: trunk: - Sentry EXTERNAL SOURCES: + catalyst_key_derivation: + :path: Flutter/ephemeral/.symlinks/plugins/catalyst_key_derivation/macos + device_info_plus: + :path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos + file_selector_macos: + :path: Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos flutter_secure_storage_macos: :path: Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos FlutterMacOS: :path: Flutter/ephemeral + gal: + :path: Flutter/ephemeral/.symlinks/plugins/gal/darwin + irondash_engine_context: + :path: Flutter/ephemeral/.symlinks/plugins/irondash_engine_context/macos package_info_plus: :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos path_provider_foundation: :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin + quill_native_bridge_macos: + :path: Flutter/ephemeral/.symlinks/plugins/quill_native_bridge_macos/macos sentry_flutter: :path: Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos + shared_preferences_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin + super_native_extensions: + :path: Flutter/ephemeral/.symlinks/plugins/super_native_extensions/macos url_launcher_macos: :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos + video_player_avfoundation: + :path: Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin SPEC CHECKSUMS: - flutter_secure_storage_macos: 59459653abe1adb92abbc8ea747d79f8d19866c9 + catalyst_key_derivation: e1cfae78b4f64d1575aa08c86bea27cb511aa396 + device_info_plus: a56e6e74dbbd2bb92f2da12c64ddd4f67a749041 + file_selector_macos: 6280b52b459ae6c590af5d78fc35c7267a3c4b31 + flutter_secure_storage_macos: b2d62a774c23b060f0b99d0173b0b36abb4a8632 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c - path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 - Sentry: 1fe34e9c2cbba1e347623610d26db121dcb569f1 - sentry_flutter: a39c2a2d67d5e5b9cb0b94a4985c76dd5b3fc737 - url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399 + gal: 44e5b10dbd347c8247a2851acee6c1fbe282c1d3 + irondash_engine_context: 893c7d96d20ce361d7e996f39d360c4c2f9869ba + package_info_plus: f0052d280d17aa382b932f399edf32507174e870 + path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 + quill_native_bridge_macos: 2b005cb56902bb740e0cd9620aa399dfac6b4882 + Sentry: e9215d7b17f7902692b4f8700e061e4f853e3521 + sentry_flutter: ba644c90ccccb202066a5218a593d1c35584cd37 + shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 + super_native_extensions: c2795d6d9aedf4a79fae25cb6160b71b50549189 + url_launcher_macos: 0fba8ddabfc33ce0a9afe7c5fef5aab3d8d2d673 + video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b -PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367 +PODFILE CHECKSUM: c2e95c8c0fe03c5c57e438583cae4cc732296009 -COCOAPODS: 1.15.2 +COCOAPODS: 1.16.2 diff --git a/catalyst_voices/apps/voices/macos/Runner.xcodeproj/project.pbxproj b/catalyst_voices/apps/voices/macos/Runner.xcodeproj/project.pbxproj index bc970326f8d..70afe752c6b 100644 --- a/catalyst_voices/apps/voices/macos/Runner.xcodeproj/project.pbxproj +++ b/catalyst_voices/apps/voices/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 076FFA74738B22410924144A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD6C76351E46A1689BD993ED /* Pods_Runner.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 4982A9CA223334F268D90B07 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF71BF465E2A7A328B770A4C /* Pods_RunnerTests.framework */; }; - DDE35E0B7610CB7A6661E258 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F27DBE9D21B01084E7C16C44 /* Pods_Runner.framework */; }; + 4403B10C888C3393F7F97AEE /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 89F49234813ED42D3AD06615 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,6 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0B993F4C30B68F94F7EE6D8A /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 1D159482D5851445A99AE6BE /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -78,16 +80,14 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 3B4C9F1C2FD10F768203A4E5 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - 528A7CEE0312191D7E4DA977 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 6A7592E507EB2C9B2477D15E /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 89F49234813ED42D3AD06615 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 959AB52DB90279BD07574FF7 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A9B97E3E9A2EB165AE350989 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - AF71BF465E2A7A328B770A4C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CBED6CC413E113E2077A022E /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - E622B18541E9B9A228FDC012 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - F27DBE9D21B01084E7C16C44 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ACA9CE09F5BA66957F39F55D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + BD6C76351E46A1689BD993ED /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C8C61DF00F85E1514F4D76CC /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + EFC30B7A2E6C2DF426FC0768 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4982A9CA223334F268D90B07 /* Pods_RunnerTests.framework in Frameworks */, + 4403B10C888C3393F7F97AEE /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DDE35E0B7610CB7A6661E258 /* Pods_Runner.framework in Frameworks */, + 076FFA74738B22410924144A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -136,8 +136,8 @@ 33CEB47122A05771004F2AC0 /* Flutter */, 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - 479AC62A05419CF24867E9FE /* Pods */, + AD391740F78D5D12E9557CBC /* Pods */, + 84EFEF439B55E73A89B9D0D8 /* Frameworks */, ); sourceTree = ""; }; @@ -185,27 +185,27 @@ path = Runner; sourceTree = ""; }; - 479AC62A05419CF24867E9FE /* Pods */ = { + 84EFEF439B55E73A89B9D0D8 /* Frameworks */ = { isa = PBXGroup; children = ( - E622B18541E9B9A228FDC012 /* Pods-Runner.debug.xcconfig */, - 528A7CEE0312191D7E4DA977 /* Pods-Runner.release.xcconfig */, - 6A7592E507EB2C9B2477D15E /* Pods-Runner.profile.xcconfig */, - A9B97E3E9A2EB165AE350989 /* Pods-RunnerTests.debug.xcconfig */, - 3B4C9F1C2FD10F768203A4E5 /* Pods-RunnerTests.release.xcconfig */, - CBED6CC413E113E2077A022E /* Pods-RunnerTests.profile.xcconfig */, + BD6C76351E46A1689BD993ED /* Pods_Runner.framework */, + 89F49234813ED42D3AD06615 /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { + AD391740F78D5D12E9557CBC /* Pods */ = { isa = PBXGroup; children = ( - F27DBE9D21B01084E7C16C44 /* Pods_Runner.framework */, - AF71BF465E2A7A328B770A4C /* Pods_RunnerTests.framework */, + 1D159482D5851445A99AE6BE /* Pods-Runner.debug.xcconfig */, + ACA9CE09F5BA66957F39F55D /* Pods-Runner.release.xcconfig */, + 959AB52DB90279BD07574FF7 /* Pods-Runner.profile.xcconfig */, + EFC30B7A2E6C2DF426FC0768 /* Pods-RunnerTests.debug.xcconfig */, + C8C61DF00F85E1514F4D76CC /* Pods-RunnerTests.release.xcconfig */, + 0B993F4C30B68F94F7EE6D8A /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; /* End PBXGroup section */ @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - C4B81E565DAE6227689DEE29 /* [CP] Check Pods Manifest.lock */, + FC641A558577868C5A7315C0 /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,13 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 3C963901DE4324EB08E3BAE0 /* [CP] Check Pods Manifest.lock */, + 7F8380EF14F6E84AB19292BD /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 6F7B1E16949CD5486CBF3004 /* [CP] Embed Pods Frameworks */, + 8638C28AF79D418DB452E5F4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 3C963901DE4324EB08E3BAE0 /* [CP] Check Pods Manifest.lock */ = { + 7F8380EF14F6E84AB19292BD /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -383,7 +383,7 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 6F7B1E16949CD5486CBF3004 /* [CP] Embed Pods Frameworks */ = { + 8638C28AF79D418DB452E5F4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - C4B81E565DAE6227689DEE29 /* [CP] Check Pods Manifest.lock */ = { + FC641A558577868C5A7315C0 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A9B97E3E9A2EB165AE350989 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EFC30B7A2E6C2DF426FC0768 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3B4C9F1C2FD10F768203A4E5 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C8C61DF00F85E1514F4D76CC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CBED6CC413E113E2077A022E /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 0B993F4C30B68F94F7EE6D8A /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; diff --git a/catalyst_voices/melos.yaml b/catalyst_voices/melos.yaml index 02003aa2f5d..3fa787bd622 100644 --- a/catalyst_voices/melos.yaml +++ b/catalyst_voices/melos.yaml @@ -8,8 +8,10 @@ packages: - utilities/** ignore: - # ignores flutter_rust_bridge packages that are non-conformant with melos + # ignore flutter_rust_bridge packages that are non-conformant with melos - packages/libs/catalyst_key_derivation/example/** + # ignore temporary packages that are non-conformant with melos + - apps/voices/build/** permittedLicenses: - MIT @@ -108,7 +110,7 @@ command: flutter_markdown: ^0.7.4+3 flutter_quill: ^10.8.2 flutter_quill_extensions: ^10.8.2 - flutter_rust_bridge: ^2.5.1 + flutter_rust_bridge: 2.5.1 flutter_secure_storage: ^9.2.2 formz: ^0.7.0 intl: ^0.19.0 diff --git a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/README.md b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/README.md index 3a1ec3c2ff2..14a9214b91b 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/README.md +++ b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/README.md @@ -32,6 +32,7 @@ dependencies: catalyst_cardano_serialization: any # or the latest version on Pub catalyst_cardano: any # or the latest version on Pub catalyst_cardano_web: any # or the latest version on Pub + catalyst_key_derivation: any # or the latest version on Pub ``` ## Web setup @@ -58,8 +59,11 @@ import 'dart:async'; import 'package:catalyst_cardano/catalyst_cardano.dart'; import 'package:catalyst_cardano_serialization/catalyst_cardano_serialization.dart'; +import 'package:catalyst_key_derivation/catalyst_key_derivation.dart'; Future main() async { + await CatalystKeyDerivation.init(); + final wallets = await CatalystCardano.instance.getWallets(); if (wallets.isEmpty) { // no wallet extension found, please install in your browser diff --git a/catalyst_voices/packages/libs/catalyst_cardano_serialization/README.md b/catalyst_voices/packages/libs/catalyst_cardano_serialization/README.md index c237a6938f6..f30308ebdf2 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano_serialization/README.md +++ b/catalyst_voices/packages/libs/catalyst_cardano_serialization/README.md @@ -31,6 +31,7 @@ and submission are outside of scope of this package. ```yaml dependencies: catalyst_cardano_serialization: any # or the latest version on Pub + catalyst_key_derivation: any # or the latest version on Pub ``` ## Example @@ -51,7 +52,9 @@ import 'package:cbor/cbor.dart'; import 'package:convert/convert.dart'; /* cSpell:disable */ -void main() { +Future main() async { + await CatalystKeyDerivation.init(); + const txBuilderConfig = TransactionBuilderConfig( feeAlgo: TieredFee( constant: 155381, diff --git a/catalyst_voices/packages/libs/catalyst_cardano_serialization/example/main.dart b/catalyst_voices/packages/libs/catalyst_cardano_serialization/example/main.dart index 2b2afd182c8..38fe8babaa2 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano_serialization/example/main.dart +++ b/catalyst_voices/packages/libs/catalyst_cardano_serialization/example/main.dart @@ -6,7 +6,9 @@ import 'package:cbor/cbor.dart'; import 'package:convert/convert.dart'; /* cSpell:disable */ -void main() { +Future main() async { + await CatalystKeyDerivation.init(); + const txBuilderConfig = TransactionBuilderConfig( feeAlgo: TieredFee( constant: 155381, diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/.earthlyignore b/catalyst_voices/packages/libs/catalyst_key_derivation/.earthlyignore index c0dad16a97f..ae7cd9c9864 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/.earthlyignore +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/.earthlyignore @@ -20,3 +20,4 @@ # Rust related **/target +**/Cargo.lock diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/.gitignore b/catalyst_voices/packages/libs/catalyst_key_derivation/.gitignore index 105973cfae7..0a4490147e4 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/.gitignore +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/.gitignore @@ -27,7 +27,4 @@ migrate_working_dir/ **/doc/api/ .dart_tool/ build/ -/web/pkg - -# Ignore all auto generated file for rust -rust/src/frb_generated.rs \ No newline at end of file +/web/pkg \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/.pubignore b/catalyst_voices/packages/libs/catalyst_key_derivation/.pubignore new file mode 100644 index 00000000000..d24167e4e45 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/.pubignore @@ -0,0 +1,14 @@ +# ignores all files not intended to be published to pub.dev + +.dart_tool/ +build +coverage +example +target +.secret +blueprint.cue +Earthfile +Justfile +*.log +*.iml +pubspec_overrides.yaml \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation.js b/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation.js index 589b3147503..d05581ae8de 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation.js +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation.js @@ -13,43 +13,48 @@ let wasm_bindgen; } } - const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); - - if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; - - let cachedUint8ArrayMemory0 = null; - - function getUint8ArrayMemory0() { - if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) { - cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + function logError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + let error = (function () { + try { + return e instanceof Error ? `${e.message}\n\nStack:\n${e.stack}` : e.toString(); + } catch(_) { + return ""; + } + }()); + console.error("wasm-bindgen: imported JS function that was not marked as `catch` threw an error:", error); + throw e; } - return cachedUint8ArrayMemory0; } - function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len)); + function addToExternrefTable0(obj) { + const idx = wasm.__externref_table_alloc(); + wasm.__wbindgen_export_2.set(idx, obj); + return idx; } - function isLikeNone(x) { - return x === undefined || x === null; + function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + const idx = addToExternrefTable0(e); + wasm.__wbindgen_exn_store(idx); + } } - function _assertNum(n) { - if (typeof(n) !== 'number') throw new Error(`expected a number argument, found ${typeof(n)}`); - } + let WASM_VECTOR_LEN = 0; - let cachedDataViewMemory0 = null; + let cachedUint8ArrayMemory0 = null; - function getDataViewMemory0() { - if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) { - cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); } - return cachedDataViewMemory0; + return cachedUint8ArrayMemory0; } - let WASM_VECTOR_LEN = 0; - const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } ); const encodeString = function (arg, view) { @@ -102,6 +107,63 @@ let wasm_bindgen; return ptr; } + let cachedDataViewMemory0 = null; + + function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; + } + + const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); + + if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; + + function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len)); + } + + function _assertNum(n) { + if (typeof(n) !== 'number') throw new Error(`expected a number argument, found ${typeof(n)}`); + } + + function isLikeNone(x) { + return x === undefined || x === null; + } + + const CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(state => { + wasm.__wbindgen_export_7.get(state.dtor)(state.a, state.b) + }); + + function makeMutClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + // First up with a closure we increment the internal reference + // count. This ensures that the Rust closure environment won't + // be deallocated while we're invoking it. + state.cnt++; + const a = state.a; + state.a = 0; + try { + return f(a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_7.get(state.dtor)(a, state.b); + CLOSURE_DTORS.unregister(state); + } else { + state.a = a; + } + } + }; + real.original = state; + CLOSURE_DTORS.register(real, state, state); + return real; + } + function debugString(val) { // primitive types const type = typeof val; @@ -143,7 +205,7 @@ let wasm_bindgen; // Test for built-in const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); let className; - if (builtInMatches.length > 1) { + if (builtInMatches && builtInMatches.length > 1) { className = builtInMatches[1]; } else { // Failed to match the standard '[object ClassName]' @@ -166,769 +228,709 @@ let wasm_bindgen; // TODO we could test for more things here, like `Set`s and `Map`s. return className; } + /** + * @returns {number} + */ + __exports.frb_get_rust_content_hash = function() { + const ret = wasm.frb_get_rust_content_hash(); + return ret; + }; - const CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(state => { - wasm.__wbindgen_export_4.get(state.dtor)(state.a, state.b) -}); - -function makeMutClosure(arg0, arg1, dtor, f) { - const state = { a: arg0, b: arg1, cnt: 1, dtor }; - const real = (...args) => { - // First up with a closure we increment the internal reference - // count. This ensures that the Rust closure environment won't - // be deallocated while we're invoking it. - state.cnt++; - const a = state.a; - state.a = 0; - try { - return f(a, state.b, ...args); - } finally { - if (--state.cnt === 0) { - wasm.__wbindgen_export_4.get(state.dtor)(a, state.b); - CLOSURE_DTORS.unregister(state); - } else { - state.a = a; - } - } + /** + * @param {number} func_id + * @param {any} port_ + * @param {any} ptr_ + * @param {number} rust_vec_len_ + * @param {number} data_len_ + */ + __exports.frb_pde_ffi_dispatcher_primary = function(func_id, port_, ptr_, rust_vec_len_, data_len_) { + _assertNum(func_id); + _assertNum(rust_vec_len_); + _assertNum(data_len_); + wasm.frb_pde_ffi_dispatcher_primary(func_id, port_, ptr_, rust_vec_len_, data_len_); }; - real.original = state; - CLOSURE_DTORS.register(real, state, state); - return real; -} - -function logError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - let error = (function () { - try { - return e instanceof Error ? `${e.message}\n\nStack:\n${e.stack}` : e.toString(); - } catch(_) { - return ""; - } - }()); - console.error("wasm-bindgen: imported JS function that was not marked as `catch` threw an error:", error); - throw e; - } -} -function __wbg_adapter_36(arg0, arg1, arg2) { - _assertNum(arg0); - _assertNum(arg1); - wasm.closure126_externref_shim(arg0, arg1, arg2); -} - -function __wbg_adapter_39(arg0, arg1, arg2) { - _assertNum(arg0); - _assertNum(arg1); - wasm.closure154_externref_shim(arg0, arg1, arg2); -} - -function __wbg_adapter_42(arg0, arg1, arg2) { - _assertNum(arg0); - _assertNum(arg1); - wasm.closure158_externref_shim(arg0, arg1, arg2); -} - -/** - * @returns {number} - */ -__exports.frb_get_rust_content_hash = function() { - const ret = wasm.frb_get_rust_content_hash(); - return ret; -}; - -/** - * @param {number} func_id - * @param {any} port_ - * @param {any} ptr_ - * @param {number} rust_vec_len_ - * @param {number} data_len_ - */ -__exports.frb_pde_ffi_dispatcher_primary = function(func_id, port_, ptr_, rust_vec_len_, data_len_) { - _assertNum(func_id); - _assertNum(rust_vec_len_); - _assertNum(data_len_); - wasm.frb_pde_ffi_dispatcher_primary(func_id, port_, ptr_, rust_vec_len_, data_len_); -}; - -/** - * @param {number} func_id - * @param {any} ptr_ - * @param {number} rust_vec_len_ - * @param {number} data_len_ - * @returns {any} - */ -__exports.frb_pde_ffi_dispatcher_sync = function(func_id, ptr_, rust_vec_len_, data_len_) { - _assertNum(func_id); - _assertNum(rust_vec_len_); - _assertNum(data_len_); - const ret = wasm.frb_pde_ffi_dispatcher_sync(func_id, ptr_, rust_vec_len_, data_len_); - return ret; -}; - -/** - * @param {number} call_id - * @param {any} ptr_ - * @param {number} rust_vec_len_ - * @param {number} data_len_ - */ -__exports.dart_fn_deliver_output = function(call_id, ptr_, rust_vec_len_, data_len_) { - _assertNum(call_id); - _assertNum(rust_vec_len_); - _assertNum(data_len_); - wasm.dart_fn_deliver_output(call_id, ptr_, rust_vec_len_, data_len_); -}; - -/** - * @param {number} ptr - */ -__exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature = function(ptr) { - _assertNum(ptr); - wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr); -}; - -/** - * @param {number} ptr - */ -__exports.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature = function(ptr) { - _assertNum(ptr); - wasm.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr); -}; - -/** - * @param {number} ptr - */ -__exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey = function(ptr) { - _assertNum(ptr); - wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey(ptr); -}; - -/** - * @param {number} ptr - */ -__exports.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey = function(ptr) { - _assertNum(ptr); - wasm.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey(ptr); -}; - -/** - * @param {number} ptr - */ -__exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey = function(ptr) { - _assertNum(ptr); - wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr); -}; - -/** - * @param {number} ptr - */ -__exports.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey = function(ptr) { - _assertNum(ptr); - wasm.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr); -}; - -function takeFromExternrefTable0(idx) { - const value = wasm.__wbindgen_export_3.get(idx); - wasm.__externref_table_dealloc(idx); - return value; -} - -function addToExternrefTable0(obj) { - const idx = wasm.__externref_table_alloc(); - wasm.__wbindgen_export_3.set(idx, obj); - return idx; -} - -function passArrayJsValueToWasm0(array, malloc) { - const ptr = malloc(array.length * 4, 4) >>> 0; - const mem = getDataViewMemory0(); - for (let i = 0; i < array.length; i++) { - mem.setUint32(ptr + 4 * i, addToExternrefTable0(array[i]), true); - } - WASM_VECTOR_LEN = array.length; - return ptr; -} -/** - * ## Safety - * This function reclaims a raw pointer created by [`TransferClosure`], and therefore - * should **only** be used in conjunction with it. - * Furthermore, the WASM module in the worker must have been initialized with the shared - * memory from the host JS scope. - * @param {number} payload - * @param {any[]} transfer - */ -__exports.receive_transfer_closure = function(payload, transfer) { - _assertNum(payload); - const ptr0 = passArrayJsValueToWasm0(transfer, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.receive_transfer_closure(payload, ptr0, len0); - if (ret[1]) { - throw takeFromExternrefTable0(ret[0]); - } -}; - -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - const idx = addToExternrefTable0(e); - wasm.__wbindgen_exn_store(idx); - } -} -/** - * @param {number} ptr - */ -__exports.dart_opaque_drop_thread_box_persistent_handle = function(ptr) { - _assertNum(ptr); - wasm.dart_opaque_drop_thread_box_persistent_handle(ptr); -}; - -function notDefined(what) { return () => { throw new Error(`${what} is not defined`); }; } -function __wbg_adapter_124(arg0, arg1, arg2, arg3) { - _assertNum(arg0); - _assertNum(arg1); - wasm.closure259_externref_shim(arg0, arg1, arg2, arg3); -} - -/** - * @param {number} ptr - * @returns {any} - */ -__exports.dart_opaque_rust2dart_decode = function(ptr) { - _assertNum(ptr); - const ret = wasm.dart_opaque_rust2dart_decode(ptr); - return ret; -}; - -/** - * # Safety - * - * This should never be called manually. - * @param {any} handle - * @param {any} dart_handler_port - * @returns {number} - */ -__exports.dart_opaque_dart2rust_encode = function(handle, dart_handler_port) { - const ret = wasm.dart_opaque_dart2rust_encode(handle, dart_handler_port); - return ret >>> 0; -}; - -__exports.wasm_start_callback = function() { - wasm.wasm_start_callback(); -}; - -const WorkerPoolFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_workerpool_free(ptr >>> 0, 1)); - -class WorkerPool { - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - WorkerPoolFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_workerpool_free(ptr, 0); - } /** - * Creates a new `WorkerPool` which immediately creates `initial` workers. - * - * The pool created here can be used over a long period of time, and it - * will be initially primed with `initial` workers. Currently workers are - * never released or gc'd until the whole pool is destroyed. - * - * # Errors - * - * Returns any error that may happen while a JS web worker is created and a - * message is sent to it. - * @param {number} initial - * @param {string} script_src + * @param {number} func_id + * @param {any} ptr_ + * @param {number} rust_vec_len_ + * @param {number} data_len_ + * @returns {any} */ - constructor(initial, script_src) { - _assertNum(initial); - const ptr0 = passStringToWasm0(script_src, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.workerpool_new(initial, ptr0, len0); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - this.__wbg_ptr = ret[0] >>> 0; - WorkerPoolFinalization.register(this, this.__wbg_ptr, this); - return this; - } -} -__exports.WorkerPool = WorkerPool; + __exports.frb_pde_ffi_dispatcher_sync = function(func_id, ptr_, rust_vec_len_, data_len_) { + _assertNum(func_id); + _assertNum(rust_vec_len_); + _assertNum(data_len_); + const ret = wasm.frb_pde_ffi_dispatcher_sync(func_id, ptr_, rust_vec_len_, data_len_); + return ret; + }; -async function __wbg_load(module, imports) { - if (typeof Response === 'function' && module instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === 'function') { - try { - return await WebAssembly.instantiateStreaming(module, imports); + /** + * @param {number} call_id + * @param {any} ptr_ + * @param {number} rust_vec_len_ + * @param {number} data_len_ + */ + __exports.dart_fn_deliver_output = function(call_id, ptr_, rust_vec_len_, data_len_) { + _assertNum(call_id); + _assertNum(rust_vec_len_); + _assertNum(data_len_); + wasm.dart_fn_deliver_output(call_id, ptr_, rust_vec_len_, data_len_); + }; - } catch (e) { - if (module.headers.get('Content-Type') != 'application/wasm') { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + /** + * @param {number} ptr + */ + __exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature = function(ptr) { + _assertNum(ptr); + wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr); + }; - } else { - throw e; - } - } - } + /** + * @param {number} ptr + */ + __exports.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature = function(ptr) { + _assertNum(ptr); + wasm.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr); + }; - const bytes = await module.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); + /** + * @param {number} ptr + */ + __exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey = function(ptr) { + _assertNum(ptr); + wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey(ptr); + }; - } else { - const instance = await WebAssembly.instantiate(module, imports); + /** + * @param {number} ptr + */ + __exports.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey = function(ptr) { + _assertNum(ptr); + wasm.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey(ptr); + }; - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; + /** + * @param {number} ptr + */ + __exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey = function(ptr) { + _assertNum(ptr); + wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr); + }; - } else { - return instance; - } + /** + * @param {number} ptr + */ + __exports.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey = function(ptr) { + _assertNum(ptr); + wasm.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr); + }; + + function takeFromExternrefTable0(idx) { + const value = wasm.__wbindgen_export_2.get(idx); + wasm.__externref_table_dealloc(idx); + return value; } -} -function __wbg_get_imports() { - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbindgen_number_new = function(arg0) { - const ret = arg0; - return ret; - }; - imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) { - const ret = arg0 === arg1; - _assertBoolean(ret); - return ret; - }; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return ret; - }; - imports.wbg.__wbindgen_number_get = function(arg0, arg1) { - const obj = arg1; - const ret = typeof(obj) === 'number' ? obj : undefined; - if (!isLikeNone(ret)) { - _assertNum(ret); + function passArrayJsValueToWasm0(array, malloc) { + const ptr = malloc(array.length * 4, 4) >>> 0; + const mem = getDataViewMemory0(); + for (let i = 0; i < array.length; i++) { + mem.setUint32(ptr + 4 * i, addToExternrefTable0(array[i]), true); } - getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); - }; - imports.wbg.__wbindgen_cb_drop = function(arg0) { - const obj = arg0.original; - if (obj.cnt-- == 1) { - obj.a = 0; - return true; + WASM_VECTOR_LEN = array.length; + return ptr; + } + /** + * ## Safety + * This function reclaims a raw pointer created by [`TransferClosure`], and therefore + * should **only** be used in conjunction with it. + * Furthermore, the WASM module in the worker must have been initialized with the shared + * memory from the host JS scope. + * @param {number} payload + * @param {any[]} transfer + */ + __exports.receive_transfer_closure = function(payload, transfer) { + _assertNum(payload); + const ptr0 = passArrayJsValueToWasm0(transfer, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.receive_transfer_closure(payload, ptr0, len0); + if (ret[1]) { + throw takeFromExternrefTable0(ret[0]); } - const ret = false; - _assertBoolean(ret); - return ret; - }; - imports.wbg.__wbindgen_is_falsy = function(arg0) { - const ret = !arg0; - _assertBoolean(ret); - return ret; }; - imports.wbg.__wbg_error_ff1fa6a31da883f3 = function() { return logError(function (arg0, arg1) { - console.error(getStringFromWasm0(arg0, arg1)); - }, arguments) }; - imports.wbg.__wbindgen_string_get = function(arg0, arg1) { - const obj = arg1; - const ret = typeof(obj) === 'string' ? obj : undefined; - var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + + /** + * @param {number} ptr + */ + __exports.dart_opaque_drop_thread_box_persistent_handle = function(ptr) { + _assertNum(ptr); + wasm.dart_opaque_drop_thread_box_persistent_handle(ptr); }; - imports.wbg.__wbg_postMessage_4f5b1f1567ceb41e = function() { return handleError(function (arg0, arg1) { - arg0.postMessage(arg1); - }, arguments) }; - imports.wbg.__wbg_waitAsync_d62f74bb033aed68 = function() { return logError(function () { - const ret = Atomics.waitAsync; - return ret; - }, arguments) }; - imports.wbg.__wbindgen_is_undefined = function(arg0) { - const ret = arg0 === undefined; - _assertBoolean(ret); + + /** + * @param {number} ptr + * @returns {any} + */ + __exports.dart_opaque_rust2dart_decode = function(ptr) { + _assertNum(ptr); + const ret = wasm.dart_opaque_rust2dart_decode(ptr); return ret; }; - imports.wbg.__wbg_waitAsync_87bf5e0c4485591d = function() { return logError(function (arg0, arg1, arg2) { - const ret = Atomics.waitAsync(arg0, arg1 >>> 0, arg2); - return ret; - }, arguments) }; - imports.wbg.__wbg_async_a3f53c0737bd7dbb = function() { return logError(function (arg0) { - const ret = arg0.async; - _assertBoolean(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_value_be4e2931afebd744 = function() { return logError(function (arg0) { - const ret = arg0.value; - return ret; - }, arguments) }; - imports.wbg.__wbindgen_link_541969fbbd47a922 = function() { return logError(function (arg0) { - const val = `onmessage = function (ev) { - let [ia, index, value] = ev.data; - ia = new Int32Array(ia.buffer); - let result = Atomics.wait(ia, index, value); - postMessage(result); - }; - `; - const ret = typeof URL.createObjectURL === 'undefined' ? "data:application/javascript," + encodeURIComponent(val) : URL.createObjectURL(new Blob([val], { type: "text/javascript" })); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, arguments) }; - imports.wbg.__wbg_queueMicrotask_c5419c06eab41e73 = typeof queueMicrotask == 'function' ? queueMicrotask : notDefined('queueMicrotask'); - imports.wbg.__wbg_queueMicrotask_848aa4969108a57e = function() { return logError(function (arg0) { - const ret = arg0.queueMicrotask; - return ret; - }, arguments) }; - imports.wbg.__wbindgen_is_function = function(arg0) { - const ret = typeof(arg0) === 'function'; - _assertBoolean(ret); - return ret; + + /** + * # Safety + * + * This should never be called manually. + * @param {any} handle + * @param {any} dart_handler_port + * @returns {number} + */ + __exports.dart_opaque_dart2rust_encode = function(handle, dart_handler_port) { + const ret = wasm.dart_opaque_dart2rust_encode(handle, dart_handler_port); + return ret >>> 0; }; - imports.wbg.__wbg_newwithblobsequenceandoptions_4af878769922c608 = function() { return handleError(function (arg0, arg1) { - const ret = new Blob(arg0, arg1); - return ret; - }, arguments) }; - imports.wbg.__wbg_createObjectURL_11804d71ac214694 = function() { return handleError(function (arg0, arg1) { - const ret = URL.createObjectURL(arg1); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, arguments) }; - imports.wbg.__wbg_instanceof_MessageEvent_a025220a70647214 = function() { return logError(function (arg0) { - let result; - try { - result = arg0 instanceof MessageEvent; - } catch (_) { - result = false; + + __exports.wasm_start_callback = function() { + wasm.wasm_start_callback(); + }; + + function __wbg_adapter_36(arg0, arg1, arg2) { + _assertNum(arg0); + _assertNum(arg1); + wasm.closure126_externref_shim(arg0, arg1, arg2); + } + + function __wbg_adapter_39(arg0, arg1, arg2) { + _assertNum(arg0); + _assertNum(arg1); + wasm.closure165_externref_shim(arg0, arg1, arg2); + } + + function __wbg_adapter_42(arg0, arg1, arg2) { + _assertNum(arg0); + _assertNum(arg1); + wasm.closure162_externref_shim(arg0, arg1, arg2); + } + + function __wbg_adapter_124(arg0, arg1, arg2, arg3) { + _assertNum(arg0); + _assertNum(arg1); + wasm.closure260_externref_shim(arg0, arg1, arg2, arg3); + } + + const WorkerPoolFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_workerpool_free(ptr >>> 0, 1)); + + class WorkerPool { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + WorkerPoolFinalization.unregister(this); + return ptr; } - const ret = result; - _assertBoolean(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_data_134d3a704b9fca32 = function() { return logError(function (arg0) { - const ret = arg0.data; - return ret; - }, arguments) }; - imports.wbg.__wbg_setonmessage_7e6ff33e920fdb07 = function() { return logError(function (arg0, arg1) { - arg0.onmessage = arg1; - }, arguments) }; - imports.wbg.__wbg_setonerror_b4509e7faa7b467c = function() { return logError(function (arg0, arg1) { - arg0.onerror = arg1; - }, arguments) }; - imports.wbg.__wbg_new_00d033f8a8736a28 = function() { return handleError(function (arg0, arg1) { - const ret = new Worker(getStringFromWasm0(arg0, arg1)); - return ret; - }, arguments) }; - imports.wbg.__wbg_postMessage_49334e5d7d9cc421 = function() { return handleError(function (arg0, arg1) { - arg0.postMessage(arg1); - }, arguments) }; - imports.wbg.__wbg_postMessage_857ce8a4ab57c841 = function() { return handleError(function (arg0, arg1, arg2) { - arg0.postMessage(arg1, arg2); - }, arguments) }; - imports.wbg.__wbg_postMessage_db4646ee95ec1359 = function() { return handleError(function (arg0, arg1) { - arg0.postMessage(arg1); - }, arguments) }; - imports.wbg.__wbg_instanceof_BroadcastChannel_95a2d09ab0acabf5 = function() { return logError(function (arg0) { - let result; - try { - result = arg0 instanceof BroadcastChannel; - } catch (_) { - result = false; + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_workerpool_free(ptr, 0); } - const ret = result; - _assertBoolean(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_name_b2ecc084c5f949ae = function() { return logError(function (arg0, arg1) { - const ret = arg1.name; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, arguments) }; - imports.wbg.__wbg_new_2fa7be5f655ff747 = function() { return handleError(function (arg0, arg1) { - const ret = new BroadcastChannel(getStringFromWasm0(arg0, arg1)); - return ret; - }, arguments) }; - imports.wbg.__wbg_instanceof_ErrorEvent_d4e102d1c48abb99 = function() { return logError(function (arg0) { - let result; - try { - result = arg0 instanceof ErrorEvent; - } catch (_) { - result = false; + /** + * Creates a new `WorkerPool` which immediately creates `initial` workers. + * + * The pool created here can be used over a long period of time, and it + * will be initially primed with `initial` workers. Currently workers are + * never released or gc'd until the whole pool is destroyed. + * + * # Errors + * + * Returns any error that may happen while a JS web worker is created and a + * message is sent to it. + * @param {number} initial + * @param {string} script_src + */ + constructor(initial, script_src) { + _assertNum(initial); + const ptr0 = passStringToWasm0(script_src, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.workerpool_new(initial, ptr0, len0); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + this.__wbg_ptr = ret[0] >>> 0; + WorkerPoolFinalization.register(this, this.__wbg_ptr, this); + return this; } - const ret = result; - _assertBoolean(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_message_81c104ef29dcf2fc = function() { return logError(function (arg0, arg1) { - const ret = arg1.message; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, arguments) }; - imports.wbg.__wbg_settype_623d2ee701e6310a = function() { return logError(function (arg0, arg1, arg2) { - arg0.type = getStringFromWasm0(arg1, arg2); - }, arguments) }; - imports.wbg.__wbg_new_034f913e7636e987 = function() { return logError(function () { - const ret = new Array(); - return ret; - }, arguments) }; - imports.wbg.__wbg_newnoargs_1ede4bf2ebbaaf43 = function() { return logError(function (arg0, arg1) { - const ret = new Function(getStringFromWasm0(arg0, arg1)); - return ret; - }, arguments) }; - imports.wbg.__wbg_get_ef828680c64da212 = function() { return handleError(function (arg0, arg1) { - const ret = Reflect.get(arg0, arg1); - return ret; - }, arguments) }; - imports.wbg.__wbg_call_a9ef466721e824f2 = function() { return handleError(function (arg0, arg1) { - const ret = arg0.call(arg1); - return ret; - }, arguments) }; - imports.wbg.__wbg_new_e69b5f66fda8f13c = function() { return logError(function () { - const ret = new Object(); - return ret; - }, arguments) }; - imports.wbg.__wbg_self_bf91bf94d9e04084 = function() { return handleError(function () { - const ret = self.self; - return ret; - }, arguments) }; - imports.wbg.__wbg_window_52dd9f07d03fd5f8 = function() { return handleError(function () { - const ret = window.window; - return ret; - }, arguments) }; - imports.wbg.__wbg_globalThis_05c129bf37fcf1be = function() { return handleError(function () { - const ret = globalThis.globalThis; - return ret; - }, arguments) }; - imports.wbg.__wbg_global_3eca19bb09e9c484 = function() { return handleError(function () { - const ret = global.global; - return ret; - }, arguments) }; - imports.wbg.__wbg_eval_1bab7c4fbae3b3d6 = function() { return handleError(function (arg0, arg1) { - const ret = eval(getStringFromWasm0(arg0, arg1)); - return ret; - }, arguments) }; - imports.wbg.__wbg_of_89e8c832a3ab551d = function() { return logError(function (arg0, arg1, arg2) { - const ret = Array.of(arg0, arg1, arg2); - return ret; - }, arguments) }; - imports.wbg.__wbg_push_36cf4d81d7da33d1 = function() { return logError(function (arg0, arg1) { - const ret = arg0.push(arg1); - _assertNum(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_unshift_326da4ca20840433 = function() { return logError(function (arg0, arg1) { - const ret = arg0.unshift(arg1); - _assertNum(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_call_3bfa248576352471 = function() { return handleError(function (arg0, arg1, arg2) { - const ret = arg0.call(arg1, arg2); - return ret; - }, arguments) }; - imports.wbg.__wbg_new_1073970097e5a420 = function() { return logError(function (arg0, arg1) { - try { - var state0 = {a: arg0, b: arg1}; - var cb0 = (arg0, arg1) => { - const a = state0.a; - state0.a = 0; + } + __exports.WorkerPool = WorkerPool; + + async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { try { - return __wbg_adapter_124(a, state0.b, arg0, arg1); - } finally { - state0.a = a; - } - }; - const ret = new Promise(cb0); - return ret; - } finally { - state0.a = state0.b = 0; - } - }, arguments) }; - imports.wbg.__wbg_resolve_0aad7c1484731c99 = function() { return logError(function (arg0) { - const ret = Promise.resolve(arg0); - return ret; - }, arguments) }; - imports.wbg.__wbg_then_748f75edfb032440 = function() { return logError(function (arg0, arg1) { - const ret = arg0.then(arg1); - return ret; - }, arguments) }; - imports.wbg.__wbg_buffer_ccaed51a635d8a2d = function() { return logError(function (arg0) { - const ret = arg0.buffer; - return ret; - }, arguments) }; - imports.wbg.__wbg_new_c177f2faf9d9c9f2 = function() { return logError(function (arg0) { - const ret = new Int32Array(arg0); - return ret; - }, arguments) }; - imports.wbg.__wbg_newwithbyteoffsetandlength_7e3eb787208af730 = function() { return logError(function (arg0, arg1, arg2) { - const ret = new Uint8Array(arg0, arg1 >>> 0, arg2 >>> 0); - return ret; - }, arguments) }; - imports.wbg.__wbg_new_fec2611eb9180f95 = function() { return logError(function (arg0) { - const ret = new Uint8Array(arg0); - return ret; - }, arguments) }; - imports.wbg.__wbg_set_ec2fcf81bc573fd9 = function() { return logError(function (arg0, arg1, arg2) { - arg0.set(arg1, arg2 >>> 0); - }, arguments) }; - imports.wbg.__wbg_length_9254c4bd3b9f23c4 = function() { return logError(function (arg0) { - const ret = arg0.length; - _assertNum(ret); - return ret; - }, arguments) }; - imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { - const ret = debugString(arg1); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }; - imports.wbg.__wbindgen_throw = function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }; - imports.wbg.__wbindgen_rethrow = function(arg0) { - throw arg0; - }; - imports.wbg.__wbindgen_module = function() { - const ret = __wbg_init.__wbindgen_wasm_module; - return ret; - }; - imports.wbg.__wbindgen_memory = function() { - const ret = wasm.memory; - return ret; - }; - imports.wbg.__wbg_new_abda76e883ba8a5f = function() { return logError(function () { - const ret = new Error(); - return ret; - }, arguments) }; - imports.wbg.__wbg_stack_658279fe44541cf6 = function() { return logError(function (arg0, arg1) { - const ret = arg1.stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, arguments) }; - imports.wbg.__wbg_error_f851667af71bcfc6 = function() { return logError(function (arg0, arg1) { - let deferred0_0; - let deferred0_1; - try { - deferred0_0 = arg0; - deferred0_1 = arg1; - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); - } - }, arguments) }; - imports.wbg.__wbindgen_closure_wrapper447 = function() { return logError(function (arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 127, __wbg_adapter_36); - return ret; - }, arguments) }; - imports.wbg.__wbindgen_closure_wrapper558 = function() { return logError(function (arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 155, __wbg_adapter_39); - return ret; - }, arguments) }; - imports.wbg.__wbindgen_closure_wrapper560 = function() { return logError(function (arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 159, __wbg_adapter_42); - return ret; - }, arguments) }; - imports.wbg.__wbindgen_init_externref_table = function() { - const table = wasm.__wbindgen_export_3; - const offset = table.grow(4); - table.set(0, undefined); - table.set(offset + 0, undefined); - table.set(offset + 1, null); - table.set(offset + 2, true); - table.set(offset + 3, false); - ; - }; + return await WebAssembly.instantiateStreaming(module, imports); - return imports; -} + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); -function __wbg_init_memory(imports, memory) { - imports.wbg.memory = memory || new WebAssembly.Memory({initial:22,maximum:16384,shared:true}); -} + } else { + throw e; + } + } + } -function __wbg_finalize_init(instance, module, thread_stack_size) { - wasm = instance.exports; - __wbg_init.__wbindgen_wasm_module = module; - cachedDataViewMemory0 = null; - cachedUint8ArrayMemory0 = null; + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); -if (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' } -wasm.__wbindgen_start(thread_stack_size); -return wasm; -} + } else { + const instance = await WebAssembly.instantiate(module, imports); -function initSync(module, memory) { - if (wasm !== undefined) return wasm; + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; - let thread_stack_size - if (typeof module !== 'undefined') { - if (Object.getPrototypeOf(module) === Object.prototype) { - ({module, memory, thread_stack_size} = module) - } else { - console.warn('using deprecated parameters for `initSync()`; pass a single object instead') + } else { + return instance; + } } } - const imports = __wbg_get_imports(); + function __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbg_async_9ac6fc144c5030e2 = function() { return logError(function (arg0) { + const ret = arg0.async; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_buffer_61b7ce01341d7f88 = function() { return logError(function (arg0) { + const ret = arg0.buffer; + return ret; + }, arguments) }; + imports.wbg.__wbg_call_500db948e69c7330 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = arg0.call(arg1, arg2); + return ret; + }, arguments) }; + imports.wbg.__wbg_call_b0d8e36992d9900d = function() { return handleError(function (arg0, arg1) { + const ret = arg0.call(arg1); + return ret; + }, arguments) }; + imports.wbg.__wbg_createObjectURL_296ad2113ed20fe0 = function() { return handleError(function (arg0, arg1) { + const ret = URL.createObjectURL(arg1); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, arguments) }; + imports.wbg.__wbg_data_4ce8a82394d8b110 = function() { return logError(function (arg0) { + const ret = arg0.data; + return ret; + }, arguments) }; + imports.wbg.__wbg_error_7534b8e9a36f1ab4 = function() { return logError(function (arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); + } + }, arguments) }; + imports.wbg.__wbg_error_7eeb6e13f7693d4b = function() { return logError(function (arg0, arg1) { + console.error(getStringFromWasm0(arg0, arg1)); + }, arguments) }; + imports.wbg.__wbg_eval_cd0c386c3899dd07 = function() { return handleError(function (arg0, arg1) { + const ret = eval(getStringFromWasm0(arg0, arg1)); + return ret; + }, arguments) }; + imports.wbg.__wbg_get_bbccf8970793c087 = function() { return handleError(function (arg0, arg1) { + const ret = Reflect.get(arg0, arg1); + return ret; + }, arguments) }; + imports.wbg.__wbg_instanceof_BroadcastChannel_3b5ae13c314e67a9 = function() { return logError(function (arg0) { + let result; + try { + result = arg0 instanceof BroadcastChannel; + } catch (_) { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_instanceof_ErrorEvent_a42064d9628e071c = function() { return logError(function (arg0) { + let result; + try { + result = arg0 instanceof ErrorEvent; + } catch (_) { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_instanceof_MessageEvent_4503e23b62c66dfc = function() { return logError(function (arg0) { + let result; + try { + result = arg0 instanceof MessageEvent; + } catch (_) { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_length_65d1cd11729ced11 = function() { return logError(function (arg0) { + const ret = arg0.length; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_message_5d9da9f584617c9f = function() { return logError(function (arg0, arg1) { + const ret = arg1.message; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, arguments) }; + imports.wbg.__wbg_name_e6ccca67b371df34 = function() { return logError(function (arg0, arg1) { + const ret = arg1.name; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, arguments) }; + imports.wbg.__wbg_new_1bbd050bd0c8595a = function() { return handleError(function (arg0, arg1) { + const ret = new BroadcastChannel(getStringFromWasm0(arg0, arg1)); + return ret; + }, arguments) }; + imports.wbg.__wbg_new_254fa9eac11932ae = function() { return logError(function () { + const ret = new Array(); + return ret; + }, arguments) }; + imports.wbg.__wbg_new_31cb5207e607864d = function() { return logError(function (arg0) { + const ret = new Int32Array(arg0); + return ret; + }, arguments) }; + imports.wbg.__wbg_new_3d446df9155128ef = function() { return logError(function (arg0, arg1) { + try { + var state0 = {a: arg0, b: arg1}; + var cb0 = (arg0, arg1) => { + const a = state0.a; + state0.a = 0; + try { + return __wbg_adapter_124(a, state0.b, arg0, arg1); + } finally { + state0.a = a; + } + }; + const ret = new Promise(cb0); + return ret; + } finally { + state0.a = state0.b = 0; + } + }, arguments) }; + imports.wbg.__wbg_new_3d662e5b2b6548c5 = function() { return handleError(function (arg0, arg1) { + const ret = new Worker(getStringFromWasm0(arg0, arg1)); + return ret; + }, arguments) }; + imports.wbg.__wbg_new_3ff5b33b1ce712df = function() { return logError(function (arg0) { + const ret = new Uint8Array(arg0); + return ret; + }, arguments) }; + imports.wbg.__wbg_new_688846f374351c92 = function() { return logError(function () { + const ret = new Object(); + return ret; + }, arguments) }; + imports.wbg.__wbg_new_8a6f238a6ece86ea = function() { return logError(function () { + const ret = new Error(); + return ret; + }, arguments) }; + imports.wbg.__wbg_newnoargs_fd9e4bf8be2bc16d = function() { return logError(function (arg0, arg1) { + const ret = new Function(getStringFromWasm0(arg0, arg1)); + return ret; + }, arguments) }; + imports.wbg.__wbg_newwithblobsequenceandoptions_b590694ff46405f6 = function() { return handleError(function (arg0, arg1) { + const ret = new Blob(arg0, arg1); + return ret; + }, arguments) }; + imports.wbg.__wbg_newwithbyteoffsetandlength_ba35896968751d91 = function() { return logError(function (arg0, arg1, arg2) { + const ret = new Uint8Array(arg0, arg1 >>> 0, arg2 >>> 0); + return ret; + }, arguments) }; + imports.wbg.__wbg_of_d3331a102e573656 = function() { return logError(function (arg0, arg1, arg2) { + const ret = Array.of(arg0, arg1, arg2); + return ret; + }, arguments) }; + imports.wbg.__wbg_postMessage_19a1943702ae7f6c = function() { return handleError(function (arg0, arg1) { + arg0.postMessage(arg1); + }, arguments) }; + imports.wbg.__wbg_postMessage_586e33893b92051e = function() { return handleError(function (arg0, arg1, arg2) { + arg0.postMessage(arg1, arg2); + }, arguments) }; + imports.wbg.__wbg_postMessage_6fd166b24db78adf = function() { return handleError(function (arg0, arg1) { + arg0.postMessage(arg1); + }, arguments) }; + imports.wbg.__wbg_postMessage_f648f854fd6c3f80 = function() { return handleError(function (arg0, arg1) { + arg0.postMessage(arg1); + }, arguments) }; + imports.wbg.__wbg_push_6edad0df4b546b2c = function() { return logError(function (arg0, arg1) { + const ret = arg0.push(arg1); + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_queueMicrotask_2181040e064c0dc8 = function() { return logError(function (arg0) { + queueMicrotask(arg0); + }, arguments) }; + imports.wbg.__wbg_queueMicrotask_ef9ac43769cbcc4f = function() { return logError(function (arg0) { + const ret = arg0.queueMicrotask; + return ret; + }, arguments) }; + imports.wbg.__wbg_resolve_0bf7c44d641804f9 = function() { return logError(function (arg0) { + const ret = Promise.resolve(arg0); + return ret; + }, arguments) }; + imports.wbg.__wbg_set_23d69db4e5c66a6e = function() { return logError(function (arg0, arg1, arg2) { + arg0.set(arg1, arg2 >>> 0); + }, arguments) }; + imports.wbg.__wbg_setonerror_ce12d6e32c146e3d = function() { return logError(function (arg0, arg1) { + arg0.onerror = arg1; + }, arguments) }; + imports.wbg.__wbg_setonmessage_4596c1308611382a = function() { return logError(function (arg0, arg1) { + arg0.onmessage = arg1; + }, arguments) }; + imports.wbg.__wbg_settype_fd39465d237c2f36 = function() { return logError(function (arg0, arg1, arg2) { + arg0.type = getStringFromWasm0(arg1, arg2); + }, arguments) }; + imports.wbg.__wbg_stack_0ed75d68575b0f3c = function() { return logError(function (arg0, arg1) { + const ret = arg1.stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, arguments) }; + imports.wbg.__wbg_static_accessor_GLOBAL_0be7472e492ad3e3 = function() { return logError(function () { + const ret = typeof global === 'undefined' ? null : global; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, arguments) }; + imports.wbg.__wbg_static_accessor_GLOBAL_THIS_1a6eb482d12c9bfb = function() { return logError(function () { + const ret = typeof globalThis === 'undefined' ? null : globalThis; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, arguments) }; + imports.wbg.__wbg_static_accessor_SELF_1dc398a895c82351 = function() { return logError(function () { + const ret = typeof self === 'undefined' ? null : self; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, arguments) }; + imports.wbg.__wbg_static_accessor_WINDOW_ae1c80c7eea8d64a = function() { return logError(function () { + const ret = typeof window === 'undefined' ? null : window; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, arguments) }; + imports.wbg.__wbg_then_0438fad860fe38e1 = function() { return logError(function (arg0, arg1) { + const ret = arg0.then(arg1); + return ret; + }, arguments) }; + imports.wbg.__wbg_unshift_96c5b9afa55182d1 = function() { return logError(function (arg0, arg1) { + const ret = arg0.unshift(arg1); + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_value_d13029fab89e1e86 = function() { return logError(function (arg0) { + const ret = arg0.value; + return ret; + }, arguments) }; + imports.wbg.__wbg_waitAsync_b8546c4e21098b3f = function() { return logError(function () { + const ret = Atomics.waitAsync; + return ret; + }, arguments) }; + imports.wbg.__wbg_waitAsync_fa6069d0a74f6749 = function() { return logError(function (arg0, arg1, arg2) { + const ret = Atomics.waitAsync(arg0, arg1 >>> 0, arg2); + return ret; + }, arguments) }; + imports.wbg.__wbindgen_cb_drop = function(arg0) { + const obj = arg0.original; + if (obj.cnt-- == 1) { + obj.a = 0; + return true; + } + const ret = false; + _assertBoolean(ret); + return ret; + }; + imports.wbg.__wbindgen_closure_wrapper447 = function() { return logError(function (arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 127, __wbg_adapter_36); + return ret; + }, arguments) }; + imports.wbg.__wbindgen_closure_wrapper569 = function() { return logError(function (arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 166, __wbg_adapter_39); + return ret; + }, arguments) }; + imports.wbg.__wbindgen_closure_wrapper570 = function() { return logError(function (arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 163, __wbg_adapter_42); + return ret; + }, arguments) }; + imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { + const ret = debugString(arg1); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbindgen_init_externref_table = function() { + const table = wasm.__wbindgen_export_2; + const offset = table.grow(4); + table.set(0, undefined); + table.set(offset + 0, undefined); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); + ; + }; + imports.wbg.__wbindgen_is_falsy = function(arg0) { + const ret = !arg0; + _assertBoolean(ret); + return ret; + }; + imports.wbg.__wbindgen_is_function = function(arg0) { + const ret = typeof(arg0) === 'function'; + _assertBoolean(ret); + return ret; + }; + imports.wbg.__wbindgen_is_undefined = function(arg0) { + const ret = arg0 === undefined; + _assertBoolean(ret); + return ret; + }; + imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) { + const ret = arg0 === arg1; + _assertBoolean(ret); + return ret; + }; + imports.wbg.__wbindgen_link_dca1b66dc9e85c0b = function() { return logError(function (arg0) { + const val = `onmessage = function (ev) { + let [ia, index, value] = ev.data; + ia = new Int32Array(ia.buffer); + let result = Atomics.wait(ia, index, value); + postMessage(result); + }; + `; + const ret = typeof URL.createObjectURL === 'undefined' ? "data:application/javascript," + encodeURIComponent(val) : URL.createObjectURL(new Blob([val], { type: "text/javascript" })); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, arguments) }; + imports.wbg.__wbindgen_memory = function() { + const ret = wasm.memory; + return ret; + }; + imports.wbg.__wbindgen_module = function() { + const ret = __wbg_init.__wbindgen_wasm_module; + return ret; + }; + imports.wbg.__wbindgen_number_get = function(arg0, arg1) { + const obj = arg1; + const ret = typeof(obj) === 'number' ? obj : undefined; + if (!isLikeNone(ret)) { + _assertNum(ret); + } + getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); + }; + imports.wbg.__wbindgen_number_new = function(arg0) { + const ret = arg0; + return ret; + }; + imports.wbg.__wbindgen_rethrow = function(arg0) { + throw arg0; + }; + imports.wbg.__wbindgen_string_get = function(arg0, arg1) { + const obj = arg1; + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return ret; + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + + return imports; + } + + function __wbg_init_memory(imports, memory) { + imports.wbg.memory = memory || new WebAssembly.Memory({initial:22,maximum:16384,shared:true}); + } - __wbg_init_memory(imports, memory); + function __wbg_finalize_init(instance, module, thread_stack_size) { + wasm = instance.exports; + __wbg_init.__wbindgen_wasm_module = module; + cachedDataViewMemory0 = null; + cachedUint8ArrayMemory0 = null; - if (!(module instanceof WebAssembly.Module)) { - module = new WebAssembly.Module(module); + if (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' } + wasm.__wbindgen_start(thread_stack_size); + return wasm; } - const instance = new WebAssembly.Instance(module, imports); + function initSync(module, memory) { + if (wasm !== undefined) return wasm; + + let thread_stack_size + if (typeof module !== 'undefined') { + if (Object.getPrototypeOf(module) === Object.prototype) { + ({module, memory, thread_stack_size} = module) + } else { + console.warn('using deprecated parameters for `initSync()`; pass a single object instead') + } + } - return __wbg_finalize_init(instance, module, thread_stack_size); -} + const imports = __wbg_get_imports(); -async function __wbg_init(module_or_path, memory) { - if (wasm !== undefined) return wasm; + __wbg_init_memory(imports, memory); - let thread_stack_size - if (typeof module_or_path !== 'undefined') { - if (Object.getPrototypeOf(module_or_path) === Object.prototype) { - ({module_or_path, memory, thread_stack_size} = module_or_path) - } else { - console.warn('using deprecated parameters for the initialization function; pass a single object instead') + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); } - } - if (typeof module_or_path === 'undefined' && typeof script_src !== 'undefined') { - module_or_path = script_src.replace(/\.js$/, '_bg.wasm'); - } - const imports = __wbg_get_imports(); + const instance = new WebAssembly.Instance(module, imports); - if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { - module_or_path = fetch(module_or_path); + return __wbg_finalize_init(instance, module, thread_stack_size); } - __wbg_init_memory(imports, memory); + async function __wbg_init(module_or_path, memory) { + if (wasm !== undefined) return wasm; - const { instance, module } = await __wbg_load(await module_or_path, imports); + let thread_stack_size + if (typeof module_or_path !== 'undefined') { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({module_or_path, memory, thread_stack_size} = module_or_path) + } else { + console.warn('using deprecated parameters for the initialization function; pass a single object instead') + } + } + + if (typeof module_or_path === 'undefined' && typeof script_src !== 'undefined') { + module_or_path = script_src.replace(/\.js$/, '_bg.wasm'); + } + const imports = __wbg_get_imports(); - return __wbg_finalize_init(instance, module, thread_stack_size); -} + if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { + module_or_path = fetch(module_or_path); + } + + __wbg_init_memory(imports, memory); + + const { instance, module } = await __wbg_load(await module_or_path, imports); + + return __wbg_finalize_init(instance, module, thread_stack_size); + } -wasm_bindgen = Object.assign(__wbg_init, { initSync }, __exports); + wasm_bindgen = Object.assign(__wbg_init, { initSync }, __exports); })(); diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation_bg.wasm b/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation_bg.wasm index 089450e3d117dc2cd4ce0d2db3b3d038e2c52d78..02c67b1edf75900bc4f34470ae15fdadb99ad138 100644 GIT binary patch delta 275722 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ξOh{U_YFfUU&0Wr6po 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�=Uq^kMJcsExzIbcpYhUb} z^VxV3P#bImDaztEq3q4M_Qbde52?k&`?N>&>F1tWwtY|Ye|K>4w8?b>=Q@E9b^*`$ z-wn#Rm(aIdk`~_G{Oqc=FEq}CO>}LS%kG>@7x?o4tp_+=M3Re>B()|fia^!zI{+988t~R4JgyNRHyEYCrAHm&fL*Y>Wx<(Kt0HUTA8z{hvz zIJ?f^k|0^;0%b0j<*xfz{`}ja&lbM|3>ocljs*ZQesWp9_TaMy%qLN%k|^`q7v-ZHpPctgZp$KJkY}3~`R#kN-+%p;`S)x<-|W|} z9H1Jrcee`iv;V%o_l1Y2EqE6g(%WSms%W=&f4X+nC+ogmFk?3`w(G>gSp1s3yM#np zPNFPsUzClzKmB6a2RA)OPN`kLMjZ)^wk#&%d(k(Pwww2<5i#=b#=)BEEOO z^mW6cEwgWXfo7iV`ZX2WXt#Ionz`n`bLam0*~7rtt`iHJUJPb=7RmB-lI5B0%kst@ z4WGZX{@&ZkQ=Y0@YfF}cT0P~QrJvt?`*)u|T5;-bE?$&Phu?X&Y5Cme&p8#h23@q< zzvnGlwc`G1FRmYXNH`H}DMo_0s$b6DJ+f?GR<-o5Ujx8C^X;ih*oPsxWtj<9ja z@f?!lUr3IF+Lzd1U!4=}Xr(oBzba#0@M z{qpy_KiRSN05G=ezxaS7`t}f#<#3YadF{(`$EVxp9r$+JJBQH7sm|Qml4Z<*^TYeE z-TCHC5A2!_?Y2L66HYE(mV1Ak{qBvgwtO)Q7*2I&c5+!ZuADXh;iIp7HX9h*otg0g zNA&NJB+C&b%c1Sd@~hu&J+SKj`HhRv$f?fW+L7hmKiqrIZ%6hVeiU+0*_u(e}yi@XGpj-6tzmX&_B1!(WeM#OtecByA%v-V= zquQzZwYCHqGvYk({ID?*y@1DhFA&jR#B}S_i%H-Y zv@h_-o_YA5kD5Pw#&sh1H%^UNp^GWr2_$X~@k{3K`uVN;FCT>V+joZ;bx|%};Pda; zKX1#IuQg|p#@bt*iACwj4R`u)bLPEs1k#`uashhBGc&`(N#?`3%!hNC zp9fQJYZoha6HRC#gS2o7X(6qBE$HhP%v}Ecle-J*g84D4o-ooB;yos2B|PWJwXpK{ z$Cfe5a9Pu-D5wSe%0o5Bxn{i91f;kWN=*|Gl6hj*;z<6C=<1PX0;5%BzsUq0Mx z9Q^!kV9bnRw@q%t*b3vGMC}0eVFP~z>0|`g$q25Kp|EyDpQs;X@P3dXG;j)XfAa9% zUu;_T<|`DfKY^DG$3*t>d0+IXu*`fMBN%}l9MCe7(=w81foasK|0GKO$tn3Kr-Y2) zMf=re5gwXi#FODG7P)+j<&cY!XOOAYQAX$?F%tB{QWb@1kQa2SY4J{vf~nJ?He1QSmW1v??MNqA&^*tl$#tiL)gts-S2iXuCO z%F9$fHP|@>iKd0HWri9kpE@a|s?@B?n^i@#kFNM&!wsQeK)>?Zw6vs&z<^pwga%0b z*fdGizZusrHs zsS{BR!b;U|zkGNHaGM(C7R`3W?oWU)CF%RdskZl4?ca8-KH&;~N*tRgm=o-w54gOC zKJE&a-gSIRhhypQLwlrzC{=&pa<%lv=Wm}2lLASnz)l`^J~$BxM1AU7pZ9~|^n>B}$#DGK zaQu43gf7mg&h(?#rJV~y?@88`NY>>A9#wNqnFLX*{X*E>O$r6GaJ(Q7$ntuzc zerjqc*jYtMl*>XpovEG9yq(UXowrv%yHE}V^G;>~`W4rA(0`toVFy!rkYMVh9-aN| zSn(y33YcHNeNs=BMg2EMI`2)&Rs1UYVit_RHJKZM!{ksOKDnQgr3OQwIa!~9%y_=u znw-_aPcrp$nfirHJE~p5nwomoRlP>GXU9EBvpuq5cqq`)Y9&rKOi_DmdEdX`uUz57+6}w6D%<>)JMP&PoDj zWmBE&FDDZZaTX+j1i3(hTp;Lh$Jn`^ef^LaJzsf!kv_9NVBL4mlDl-@)Xb=ozq&qR zv;%J7MjNB#+8ap8Fb@5t8`@Fw&Kvyj2*2Kt1yz$g7R}nVT$uOCcp>wK3%M%%4|j~h zxtabD&g6#Ki}V_$c0@flN#&lK^bHu=debl-L-2|v}^^LLq;LMwf^b2MLlx6qsTW1Mjc!od7j5ESm+tt_K)D<3L z^9)r_n8t;DX4I?yF@sh6hQMPg#!$8Urnx_EN3ZJ94u2;%Wem7I;7l%@p?3fAvlm{q zb9^UN9R@2;thd%jP9M@gMvHA*DGa?WZ%pjyzmE^}nElyu#LErg|yo#`q~P_siN@=(m0Gcd4VdYgjROYw@B&G8f6 z)+vv$@z-abS%&ek3+kMUI++;gG2SQP^_WZd&%xQTRmFHx^4!84D4~ z?N%+?W+~KFO2pB4tdhjKXr~jaHoijINb9$^ACFnTo%m%JmQ>L--%8Z+ZM35LSNanT zC2YyE9SzeNTehs`);C?=o7_Nq@ME-B?whl$|J^Io*%JMir*3BZ^&1ywWLr*?Mt~f( zM8=X!lSqNGw&ueYq|Vi!UhGde8}EB1tOvBbknbY>-Nk1(Umyn5kZ+5g`E)_o6N_E81}&d5BQ-3mUW(h*CV?r{t&|2&lON` zJ;7@PE@i#KSZ8_zlBxt9SU!4f&^H!O3N03GUQwKktFSv@OgnmkHyVbwGK^2y|60v zk(il-HLXKqg93?eEOWg;pGa#`$3WbykhJh1EN2~BI0W>#nGp(L-K!w&4JIPwkO=c4 z+BJrMYrfkg`EG_;p{|LHPys#IhG_=9bajOIQNvzU@x5zT6M0z=u;=Sv{7{Qhb#cFFJ7~@(eu6cu7quFyQwTYbDaY)0Fo(_iziR0gaZ%jJl zSe4P2NvBLZ0A!l%J4DuFc5Ko+3MjlsX+QA-P>T$0a-ETq0uC4ygy=8}n>q~x2{4iJ zp;Pqq7@ayur{D%144Oq|gv3Kp&W__J$_}q7TC)sL9f26r>kG>hRLBGL@1IKxJBbxC z2M7S>YmzNTOtmX7ueMRj16QIt$=D9jcufo8P+en#@XuD*E#AgbuY?aF50CEH72XNaBcwIg_rgCjl%a>eMN$*>++ z14r%^$P+no?k)xSKnyoGHt40%0BI1bI`sW3Qo{4THqD<}4^hK(s}4c}Rz!y5fv`}I z;?^3e4xbM+ixdH$piUkM;GX#9&{vV})L zVJ^bugShCxMg50HvOxg{^&?d0F5it5px_BsLl(mzK+=|1bWw2W^`wX)?_}r`J>dv` z?(os$IDU@X0_#>tX>QUXKwP*W#O$C7=?{LF2=v01=Y0#l$=Ag>9Lm-}nAXr{b~w)A z#J%vE47F!RM%K7&(*Q*G0+I3E3)+tDT_D;4@ncwk

x;qKX$;-X`)`m*?f)3*{|j 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.TOoAG^L9v=K5L@?YSoOP~cIw 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�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�(?^| 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 flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Bip32Ed25519Signature_get_inner", + 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( + crate::api::key_derivation::Bip32Ed25519Signature::get_inner(&*api_that_guard), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519Signature_new_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: "Bip32Ed25519Signature_new", + 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_sig_bytes = <[u8; 64]>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok( + crate::api::key_derivation::Bip32Ed25519Signature::new(api_sig_bytes), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519Signature_to_hex_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: "Bip32Ed25519Signature_to_hex", + 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( + crate::api::key_derivation::Bip32Ed25519Signature::to_hex(&*api_that_guard), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_derive_xprv_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_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Bip32Ed25519XPrivateKey_derive_xprv", + 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_that = , + >>::sse_decode(&mut deserializer); + let api_path = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async 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_async_ref().await) + }, + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = + crate::api::key_derivation::Bip32Ed25519XPrivateKey::derive_xprv( + &*api_that_guard, + api_path, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_drop_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: "Bip32Ed25519XPrivateKey_drop", + 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, 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({ + crate::api::key_derivation::Bip32Ed25519XPrivateKey::drop(&mut *api_that_guard); + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_chain_code_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: "Bip32Ed25519XPrivateKey_get_chain_code", + 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( + crate::api::key_derivation::Bip32Ed25519XPrivateKey::get_chain_code( + &*api_that_guard, + ), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_extended_secret_key_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: "Bip32Ed25519XPrivateKey_get_extended_secret_key", + 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( + crate::api::key_derivation::Bip32Ed25519XPrivateKey::get_extended_secret_key( + &*api_that_guard, + ), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_inner_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: "Bip32Ed25519XPrivateKey_get_inner", + 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( + crate::api::key_derivation::Bip32Ed25519XPrivateKey::get_inner( + &*api_that_guard, + ), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_new_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: "Bip32Ed25519XPrivateKey_new", + 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_xprv_bytes = <[u8; 96]>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok( + crate::api::key_derivation::Bip32Ed25519XPrivateKey::new(api_xprv_bytes), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_sign_data_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_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Bip32Ed25519XPrivateKey_sign_data", + 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_that = , + >>::sse_decode(&mut deserializer); + let api_data = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async 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_async_ref().await) + }, + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = + crate::api::key_derivation::Bip32Ed25519XPrivateKey::sign_data( + &*api_that_guard, + api_data, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_to_hex_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: "Bip32Ed25519XPrivateKey_to_hex", + 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( + crate::api::key_derivation::Bip32Ed25519XPrivateKey::to_hex(&*api_that_guard), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_verify_signature_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_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Bip32Ed25519XPrivateKey_verify_signature", + 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_that = , + >>::sse_decode(&mut deserializer); + let api_data = >::sse_decode(&mut deserializer); + let api_signature = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let mut api_signature_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, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_signature, + 1, + false, + ), + ], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + }, + 1 => { + api_signature_guard = + Some(api_signature.lockable_decode_async_ref().await) + }, + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let api_signature_guard = api_signature_guard.unwrap(); + let output_ok = + crate::api::key_derivation::Bip32Ed25519XPrivateKey::verify_signature( + &*api_that_guard, + api_data, + &*api_signature_guard, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_xpublic_key_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_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Bip32Ed25519XPrivateKey_xpublic_key", + 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_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async 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_async_ref().await) + }, + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = + crate::api::key_derivation::Bip32Ed25519XPrivateKey::xpublic_key( + &*api_that_guard, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_chain_code_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: "Bip32Ed25519XPublicKey_get_chain_code", + 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( + crate::api::key_derivation::Bip32Ed25519XPublicKey::get_chain_code( + &*api_that_guard, + ), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_inner_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: "Bip32Ed25519XPublicKey_get_inner", + 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( + crate::api::key_derivation::Bip32Ed25519XPublicKey::get_inner(&*api_that_guard), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_public_key_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: "Bip32Ed25519XPublicKey_get_public_key", + 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( + crate::api::key_derivation::Bip32Ed25519XPublicKey::get_public_key( + &*api_that_guard, + ), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_new_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: "Bip32Ed25519XPublicKey_new", + 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_xpub_bytes = <[u8; 64]>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok( + crate::api::key_derivation::Bip32Ed25519XPublicKey::new(api_xpub_bytes), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_to_hex_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: "Bip32Ed25519XPublicKey_to_hex", + 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( + crate::api::key_derivation::Bip32Ed25519XPublicKey::to_hex(&*api_that_guard), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_verify_signature_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_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Bip32Ed25519XPublicKey_verify_signature", + 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_that = , + >>::sse_decode(&mut deserializer); + let api_data = >::sse_decode(&mut deserializer); + let api_signature = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let mut api_signature_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, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_signature, + 1, + false, + ), + ], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + }, + 1 => { + api_signature_guard = + Some(api_signature.lockable_decode_async_ref().await) + }, + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let api_signature_guard = api_signature_guard.unwrap(); + let output_ok = + crate::api::key_derivation::Bip32Ed25519XPublicKey::verify_signature( + &*api_that_guard, + api_data, + &*api_signature_guard, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__key_derivation__mnemonic_to_xprv_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_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "mnemonic_to_xprv", + 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_mnemonic = ::sse_decode(&mut deserializer); + let api_passphrase = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let output_ok = crate::api::key_derivation::mnemonic_to_xprv( + api_mnemonic, + api_passphrase, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} + +// Section: related_funcs + +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 +); + +// Section: dart2rust + +impl SseDecode for flutter_rust_bridge::for_generated::anyhow::Error { + // 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::anyhow::anyhow!("{}", inner); + } +} + +impl SseDecode for Bip32Ed25519Signature { + // 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 Bip32Ed25519XPrivateKey { + // 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 Bip32Ed25519XPublicKey { + // 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 RustOpaqueMoi< + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, + > +{ + // 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< + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, + > +{ + // 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< + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, + > +{ + // 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 String { + // 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 String::from_utf8(inner).unwrap(); + } +} + +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 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 Option { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + if (::sse_decode(deserializer)) { + return Some(::sse_decode(deserializer)); + } else { + return None; + } + } +} + +impl SseDecode for u8 { + // 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() + } +} + +impl SseDecode for [u8; 32] { + // 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::from_vec_to_array(inner); + } +} + +impl SseDecode for [u8; 64] { + // 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::from_vec_to_array(inner); + } +} + +impl SseDecode for [u8; 96] { + // 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::from_vec_to_array(inner); + } +} + +impl SseDecode for () { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {} +} + +impl SseDecode for usize { + // 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_u64::().unwrap() as _ + } +} + +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 { + deserializer.cursor.read_i32::().unwrap() + } +} + +fn pde_ffi_dispatcher_primary_impl( + func_id: i32, port: flutter_rust_bridge::for_generated::MessagePort, + ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len: i32, + data_len: i32, +) { + // Codec=Pde (Serialization + dispatch), see doc to use other codecs + match func_id { + 4 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_derive_xprv_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 10 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_sign_data_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 12 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_verify_signature_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 13 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_xpublic_key_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 19 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_verify_signature_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 20 => wire__crate__api__key_derivation__mnemonic_to_xprv_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + _ => unreachable!(), + } +} + +fn pde_ffi_dispatcher_sync_impl( + func_id: i32, ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len: i32, data_len: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + // Codec=Pde (Serialization + dispatch), see doc to use other codecs + match func_id { + 1 => wire__crate__api__key_derivation__Bip32Ed25519Signature_get_inner_impl( + ptr, + rust_vec_len, + data_len, + ), + 2 => wire__crate__api__key_derivation__Bip32Ed25519Signature_new_impl( + ptr, + rust_vec_len, + data_len, + ), + 3 => wire__crate__api__key_derivation__Bip32Ed25519Signature_to_hex_impl( + ptr, + rust_vec_len, + data_len, + ), + 5 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_drop_impl( + ptr, + rust_vec_len, + data_len, + ), + 6 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_chain_code_impl( + ptr, + rust_vec_len, + data_len, + ), + 7 => { + wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_extended_secret_key_impl( + ptr, + rust_vec_len, + data_len, + ) + }, + 8 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_inner_impl( + ptr, + rust_vec_len, + data_len, + ), + 9 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_new_impl( + ptr, + rust_vec_len, + data_len, + ), + 11 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_to_hex_impl( + ptr, + rust_vec_len, + data_len, + ), + 14 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_chain_code_impl( + ptr, + rust_vec_len, + data_len, + ), + 15 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_inner_impl( + ptr, + rust_vec_len, + data_len, + ), + 16 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_public_key_impl( + ptr, + rust_vec_len, + data_len, + ), + 17 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_new_impl( + ptr, + rust_vec_len, + data_len, + ), + 18 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_to_hex_impl( + ptr, + rust_vec_len, + data_len, + ), + _ => unreachable!(), + } +} + +// Section: rust2dart + +// 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 Bip32Ed25519Signature +{ + 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 Bip32Ed25519XPrivateKey +{ + 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 Bip32Ed25519XPublicKey +{ + fn into_into_dart(self) -> FrbWrapper { + self.into() + } +} + +impl SseEncode for flutter_rust_bridge::for_generated::anyhow::Error { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(format!("{:?}", self), serializer); + } +} + +impl SseEncode for Bip32Ed25519Signature { + // 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 Bip32Ed25519XPrivateKey { + // 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 Bip32Ed25519XPublicKey { + // 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 RustOpaqueMoi< + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, + > +{ + // 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< + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, + > +{ + // 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< + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, + > +{ + // 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 String { + // 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.into_bytes(), serializer); + } +} + +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 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 Option { + // 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.is_some(), serializer); + if let Some(value) = self { + ::sse_encode(value, serializer); + } + } +} + +impl SseEncode for u8 { + // 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).unwrap(); + } +} + +impl SseEncode for [u8; 32] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >::sse_encode( + { + let boxed: Box<[_]> = Box::new(self); + boxed.into_vec() + }, + serializer, + ); + } +} + +impl SseEncode for [u8; 64] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >::sse_encode( + { + let boxed: Box<[_]> = Box::new(self); + boxed.into_vec() + }, + serializer, + ); + } +} + +impl SseEncode for [u8; 96] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >::sse_encode( + { + let boxed: Box<[_]> = Box::new(self); + boxed.into_vec() + }, + serializer, + ); + } +} + +impl SseEncode for () { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {} +} + +impl SseEncode for usize { + // 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_u64::(self as _) + .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) { + serializer.cursor.write_i32::(self).unwrap(); + } +} + +#[cfg(not(target_family = "wasm"))] +mod io { + // This file is automatically generated, so please do not edit it. + // @generated by `flutter_rust_bridge`@ 2.5.1. + + // Section: imports + + use super::*; + use crate::api::key_derivation::*; + 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}; + + // Section: boilerplate + + flutter_rust_bridge::frb_generated_boilerplate_io!(); + + #[no_mangle] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[no_mangle] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[no_mangle] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[no_mangle] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[no_mangle] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[no_mangle] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } +} +#[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.5.1. + + // Section: imports + + use super::*; + use crate::api::key_derivation::*; + 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_generatedRustAutoOpaqueInnerBip32Ed25519Signature( + 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_generatedRustAutoOpaqueInnerBip32Ed25519Signature( + 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_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey( + 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_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey( + 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_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey( + 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_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } +} +#[cfg(target_family = "wasm")] +pub use web::*; From 40afc4284746b6939f8cf87fed251ad6754e7736 Mon Sep 17 00:00:00 2001 From: Dominik Toton <166132265+dtscalac@users.noreply.github.com> Date: Mon, 13 Jan 2025 11:24:06 +0100 Subject: [PATCH 2/6] chore(flutter): publish packages (#1507) * chore(release): publish packages - catalyst_cardano@0.4.0+3 - catalyst_key_derivation@0.1.2 - catalyst_cardano_serialization@0.5.0+3 - catalyst_cardano_web@0.4.0+3 - catalyst_cardano_platform_interface@0.4.0+3 * style: markdown formatting and spelling fixes * style: markdown and spelling fixes --- .markdownlint-cli2.jsonc | 3 +- catalyst_voices/CHANGELOG.md | 79 ++++++++++++++++--- catalyst_voices/apps/voices/pubspec.yaml | 8 +- .../catalyst_voices_blocs/pubspec.yaml | 8 +- .../catalyst_voices_models/pubspec.yaml | 6 +- .../catalyst_voices_repositories/pubspec.yaml | 2 +- .../catalyst_voices_services/pubspec.yaml | 8 +- .../catalyst_voices_shared/pubspec.yaml | 4 +- .../catalyst_voices_view_models/pubspec.yaml | 6 +- .../catalyst_cardano/CHANGELOG.md | 4 + .../catalyst_cardano/example/pubspec.yaml | 8 +- .../catalyst_cardano/pubspec.yaml | 8 +- .../CHANGELOG.md | 4 + .../pubspec.yaml | 4 +- .../catalyst_cardano_web/CHANGELOG.md | 4 + .../catalyst_cardano_web/pubspec.yaml | 6 +- .../CHANGELOG.md | 4 + .../pubspec.yaml | 4 +- .../libs/catalyst_key_derivation/CHANGELOG.md | 7 ++ .../libs/catalyst_key_derivation/pubspec.yaml | 2 +- .../utilities/uikit_example/pubspec.yaml | 2 +- 21 files changed, 133 insertions(+), 48 deletions(-) diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc index 29dc3190021..430c6bbb7f2 100644 --- a/.markdownlint-cli2.jsonc +++ b/.markdownlint-cli2.jsonc @@ -10,10 +10,11 @@ "ignores": [ ".config/dictionaries/**", "catalyst-gateway/target/**", - "CHANGELOG.md", + "catalyst_voices/CHANGELOG.md", "catalyst_voices/packages/libs/**/CHANGELOG.md", "catalyst_voices/packages/libs/**/cargokit/**", "catalyst_voices/apps/voices/macos/Pods/**", + "catalyst_voices/apps/voices/ios/Pods/**", "**/node_modules/**", "**/.dart_tool/**" ], diff --git a/catalyst_voices/CHANGELOG.md b/catalyst_voices/CHANGELOG.md index 0468eaf01df..d37c8a2cf0f 100644 --- a/catalyst_voices/CHANGELOG.md +++ b/catalyst_voices/CHANGELOG.md @@ -3,6 +3,55 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 2025-01-13 + +### Changes + +--- + +Packages with breaking changes: + +* There are no breaking changes in this release. + +Packages with other changes: + +* [`catalyst_cardano` - `v0.4.0+3`](#catalyst_cardano---v0403) +* [`catalyst_key_derivation` - `v0.1.2`](#catalyst_key_derivation---v012) +* `catalyst_cardano_serialization` - `v0.5.0+3` +* `catalyst_cardano_web` - `v0.4.0+3` +* `catalyst_cardano_platform_interface` - `v0.4.0+3` + +Packages with dependency updates only: + +> Packages listed below depend on other packages in this workspace that have had changes. +> Their versions have been incremented to bump the minimum dependency versions of the packages +> they depend upon in this project. + +* `catalyst_cardano_serialization` - `v0.5.0+3` +* `catalyst_cardano_web` - `v0.4.0+3` +* `catalyst_cardano_platform_interface` - `v0.4.0+3` + +--- + +#### `catalyst_cardano` - `v0.4.0+3` + +* **FIX**(general): Update cat-ci to latest version to bring in doc test fixes and latest +rust compiler ([#1462](https://github.com/input-output-hk/catalyst-voices/issues/1462)). +([6ddc4c5e](https://github.com/input-output-hk/catalyst-voices/commit/6ddc4c5ea6e5e93a0042e188982505ba25cccf76)) + +#### `catalyst_key_derivation` - `v0.1.2` + +* **FIX**(general): Update cat-ci to latest version to bring in doc test fixes and latest +rust compiler ([#1462](https://github.com/input-output-hk/catalyst-voices/issues/1462)). +([6ddc4c5e](https://github.com/input-output-hk/catalyst-voices/commit/6ddc4c5ea6e5e93a0042e188982505ba25cccf76)) +* **FIX**: add missing dependency. +([1334cb06](https://github.com/input-output-hk/catalyst-voices/commit/1334cb066877b2507af2e469f31b6c3549181146)) +* **FEAT**(cat-voices): Enable the 'arithmetic_side_effects' Clippy lint +([#1456](https://github.com/input-output-hk/catalyst-voices/issues/1456)). +([5a0e2f46](https://github.com/input-output-hk/catalyst-voices/commit/5a0e2f46859b44ff325d47ca0eb90d4fa904d125)) +* **DOCS**: update pub.dev topics for catalyst_key_derivation package. +([a6d9bcfa](https://github.com/input-output-hk/catalyst-voices/commit/a6d9bcfa451cbb8d0ded9659e63fbfa290416480)) + ## 2025-01-02v2 ### Changes @@ -16,14 +65,18 @@ Packages with breaking changes: Packages with other changes: * [Change Log](#change-log) - * [2025-01-02v2](#2025-01-02v2) + * [2025-01-13](#2025-01-13) * [Changes](#changes) + * [`catalyst_cardano` - `v0.4.0+3`](#catalyst_cardano---v0403) + * [`catalyst_key_derivation` - `v0.1.2`](#catalyst_key_derivation---v012) + * [2025-01-02v2](#2025-01-02v2) + * [Changes](#changes-1) * [`catalyst_key_derivation` - `v0.1.1+1`](#catalyst_key_derivation---v0111) * [2025-01-02v1](#2025-01-02v1) - * [Changes](#changes-1) + * [Changes](#changes-2) * [`catalyst_key_derivation` - `v0.1.1`](#catalyst_key_derivation---v011) * [2025-01-02](#2025-01-02) - * [Changes](#changes-2) + * [Changes](#changes-3) * [`catalyst_cardano` - `v0.4.0`](#catalyst_cardano---v040) * [`catalyst_cardano_platform_interface` - `v0.4.0`](#catalyst_cardano_platform_interface---v040) * [`catalyst_cardano_serialization` - `v0.5.0`](#catalyst_cardano_serialization---v050) @@ -64,14 +117,18 @@ Packages with breaking changes: Packages with other changes: * [Change Log](#change-log) - * [2025-01-02v2](#2025-01-02v2) + * [2025-01-13](#2025-01-13) * [Changes](#changes) + * [`catalyst_cardano` - `v0.4.0+3`](#catalyst_cardano---v0403) + * [`catalyst_key_derivation` - `v0.1.2`](#catalyst_key_derivation---v012) + * [2025-01-02v2](#2025-01-02v2) + * [Changes](#changes-1) * [`catalyst_key_derivation` - `v0.1.1+1`](#catalyst_key_derivation---v0111) * [2025-01-02v1](#2025-01-02v1) - * [Changes](#changes-1) + * [Changes](#changes-2) * [`catalyst_key_derivation` - `v0.1.1`](#catalyst_key_derivation---v011) * [2025-01-02](#2025-01-02) - * [Changes](#changes-2) + * [Changes](#changes-3) * [`catalyst_cardano` - `v0.4.0`](#catalyst_cardano---v040) * [`catalyst_cardano_platform_interface` - `v0.4.0`](#catalyst_cardano_platform_interface---v040) * [`catalyst_cardano_serialization` - `v0.5.0`](#catalyst_cardano_serialization---v050) @@ -121,14 +178,18 @@ Packages with breaking changes: Packages with other changes: * [Change Log](#change-log) - * [2025-01-02v2](#2025-01-02v2) + * [2025-01-13](#2025-01-13) * [Changes](#changes) + * [`catalyst_cardano` - `v0.4.0+3`](#catalyst_cardano---v0403) + * [`catalyst_key_derivation` - `v0.1.2`](#catalyst_key_derivation---v012) + * [2025-01-02v2](#2025-01-02v2) + * [Changes](#changes-1) * [`catalyst_key_derivation` - `v0.1.1+1`](#catalyst_key_derivation---v0111) * [2025-01-02v1](#2025-01-02v1) - * [Changes](#changes-1) + * [Changes](#changes-2) * [`catalyst_key_derivation` - `v0.1.1`](#catalyst_key_derivation---v011) * [2025-01-02](#2025-01-02) - * [Changes](#changes-2) + * [Changes](#changes-3) * [`catalyst_cardano` - `v0.4.0`](#catalyst_cardano---v040) * [`catalyst_cardano_platform_interface` - `v0.4.0`](#catalyst_cardano_platform_interface---v040) * [`catalyst_cardano_serialization` - `v0.5.0`](#catalyst_cardano_serialization---v050) diff --git a/catalyst_voices/apps/voices/pubspec.yaml b/catalyst_voices/apps/voices/pubspec.yaml index 52f5c2070ac..b1f48f06ce5 100644 --- a/catalyst_voices/apps/voices/pubspec.yaml +++ b/catalyst_voices/apps/voices/pubspec.yaml @@ -10,10 +10,10 @@ environment: dependencies: animated_text_kit: ^4.2.2 animations: ^2.0.11 - catalyst_cardano: ^0.4.0+2 - catalyst_cardano_serialization: ^0.5.0+2 - catalyst_cardano_web: ^0.4.0+2 - catalyst_key_derivation: ^0.1.1+1 + catalyst_cardano: ^0.4.0+3 + catalyst_cardano_serialization: ^0.5.0+3 + catalyst_cardano_web: ^0.4.0+3 + catalyst_key_derivation: ^0.1.2 catalyst_voices_assets: path: ../../packages/internal/catalyst_voices_assets catalyst_voices_blocs: diff --git a/catalyst_voices/packages/internal/catalyst_voices_blocs/pubspec.yaml b/catalyst_voices/packages/internal/catalyst_voices_blocs/pubspec.yaml index 7b2391d8b5c..49d5bfbcada 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_blocs/pubspec.yaml +++ b/catalyst_voices/packages/internal/catalyst_voices_blocs/pubspec.yaml @@ -9,10 +9,10 @@ environment: dependencies: bloc_concurrency: ^0.2.2 - catalyst_cardano: ^0.4.0+2 - catalyst_cardano_serialization: ^0.5.0+2 - catalyst_cardano_web: ^0.4.0+2 - catalyst_key_derivation: ^0.1.1+1 + catalyst_cardano: ^0.4.0+3 + catalyst_cardano_serialization: ^0.5.0+3 + catalyst_cardano_web: ^0.4.0+3 + catalyst_key_derivation: ^0.1.2 catalyst_voices_brands: path: ../catalyst_voices_brands catalyst_voices_models: diff --git a/catalyst_voices/packages/internal/catalyst_voices_models/pubspec.yaml b/catalyst_voices/packages/internal/catalyst_voices_models/pubspec.yaml index 954c8734c1b..eb6deb589af 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_models/pubspec.yaml +++ b/catalyst_voices/packages/internal/catalyst_voices_models/pubspec.yaml @@ -8,9 +8,9 @@ environment: dependencies: bip39: ^1.0.6 - catalyst_cardano: ^0.4.0+2 - catalyst_cardano_serialization: ^0.5.0+2 - catalyst_cardano_web: ^0.4.0+2 + catalyst_cardano: ^0.4.0+3 + catalyst_cardano_serialization: ^0.5.0+3 + catalyst_cardano_web: ^0.4.0+3 catalyst_voices_shared: path: ../catalyst_voices_shared collection: ^1.18.0 diff --git a/catalyst_voices/packages/internal/catalyst_voices_repositories/pubspec.yaml b/catalyst_voices/packages/internal/catalyst_voices_repositories/pubspec.yaml index 4049eaffac6..6eece78d6a7 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_repositories/pubspec.yaml +++ b/catalyst_voices/packages/internal/catalyst_voices_repositories/pubspec.yaml @@ -8,7 +8,7 @@ environment: flutter: ">=3.24.1" dependencies: - catalyst_cardano_serialization: ^0.5.0+2 + catalyst_cardano_serialization: ^0.5.0+3 catalyst_voices_models: path: ../catalyst_voices_models catalyst_voices_shared: diff --git a/catalyst_voices/packages/internal/catalyst_voices_services/pubspec.yaml b/catalyst_voices/packages/internal/catalyst_voices_services/pubspec.yaml index 9cd6999fdd6..0f92dfd77b3 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_services/pubspec.yaml +++ b/catalyst_voices/packages/internal/catalyst_voices_services/pubspec.yaml @@ -8,10 +8,10 @@ environment: flutter: ">=3.24.1" dependencies: - catalyst_cardano: ^0.4.0+2 - catalyst_cardano_serialization: ^0.5.0+2 - catalyst_cardano_web: ^0.4.0+2 - catalyst_key_derivation: ^0.1.1+1 + catalyst_cardano: ^0.4.0+3 + catalyst_cardano_serialization: ^0.5.0+3 + catalyst_cardano_web: ^0.4.0+3 + catalyst_key_derivation: ^0.1.2 catalyst_voices_models: path: ../catalyst_voices_models catalyst_voices_repositories: diff --git a/catalyst_voices/packages/internal/catalyst_voices_shared/pubspec.yaml b/catalyst_voices/packages/internal/catalyst_voices_shared/pubspec.yaml index 0a9252b3199..1739266cc56 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_shared/pubspec.yaml +++ b/catalyst_voices/packages/internal/catalyst_voices_shared/pubspec.yaml @@ -8,10 +8,10 @@ environment: flutter: ">=3.24.1" dependencies: - catalyst_cardano_serialization: ^0.5.0+2 + catalyst_cardano_serialization: ^0.5.0+3 catalyst_compression: ^0.4.0 catalyst_cose: ^0.4.0 - catalyst_key_derivation: ^0.1.1+1 + catalyst_key_derivation: ^0.1.2 catalyst_voices_models: path: ../catalyst_voices_models cbor: ^6.2.0 diff --git a/catalyst_voices/packages/internal/catalyst_voices_view_models/pubspec.yaml b/catalyst_voices/packages/internal/catalyst_voices_view_models/pubspec.yaml index 890c3fed04a..d15becd4aeb 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_view_models/pubspec.yaml +++ b/catalyst_voices/packages/internal/catalyst_voices_view_models/pubspec.yaml @@ -8,9 +8,9 @@ environment: flutter: ">=3.24.1" dependencies: - catalyst_cardano: ^0.4.0+2 - catalyst_cardano_serialization: ^0.5.0+2 - catalyst_cardano_web: ^0.4.0+2 + catalyst_cardano: ^0.4.0+3 + catalyst_cardano_serialization: ^0.5.0+3 + catalyst_cardano_web: ^0.4.0+3 catalyst_voices_assets: path: ../catalyst_voices_assets catalyst_voices_localization: diff --git a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/CHANGELOG.md b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/CHANGELOG.md index 5f3313421d7..726e7610a12 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/CHANGELOG.md +++ b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.0+3 + + - **FIX**(general): Update cat-ci to latest version to bring in doc test fixes and latest rust compiler ([#1462](https://github.com/input-output-hk/catalyst-voices/issues/1462)). ([6ddc4c5e](https://github.com/input-output-hk/catalyst-voices/commit/6ddc4c5ea6e5e93a0042e188982505ba25cccf76)) + ## 0.4.0+2 - Update a dependency to the latest release. diff --git a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/pubspec.yaml index 55b2c0203f7..11b51129810 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/pubspec.yaml +++ b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/pubspec.yaml @@ -9,12 +9,12 @@ environment: flutter: ">=3.24.1" dependencies: - catalyst_cardano: ^0.4.0+2 - catalyst_cardano_serialization: ^0.5.0+2 - catalyst_cardano_web: ^0.4.0+2 + catalyst_cardano: ^0.4.0+3 + catalyst_cardano_serialization: ^0.5.0+3 + catalyst_cardano_web: ^0.4.0+3 catalyst_compression: ^0.4.0 catalyst_compression_web: ^0.4.0 - catalyst_key_derivation: ^0.1.1+1 + catalyst_key_derivation: ^0.1.2 catalyst_voices_driver: path: ../../../../internal/catalyst_voices_driver cbor: ^6.2.0 diff --git a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/pubspec.yaml index 7f606188526..d027b535c53 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/pubspec.yaml +++ b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/pubspec.yaml @@ -3,7 +3,7 @@ description: A Flutter plugin exposing the CIP-30 and CIP-95 APIs. Allows to com repository: https://github.com/input-output-hk/catalyst-voices/tree/main/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano issue_tracker: https://github.com/input-output-hk/catalyst-voices/issues topics: [blockchain, cardano, cryptocurrency, wallet] -version: 0.4.0+2 +version: 0.4.0+3 environment: sdk: ">=3.5.0 <4.0.0" @@ -16,9 +16,9 @@ flutter: default_package: catalyst_cardano_web dependencies: - catalyst_cardano_platform_interface: ^0.4.0+2 - catalyst_cardano_serialization: ^0.5.0+2 - catalyst_cardano_web: ^0.4.0+2 + catalyst_cardano_platform_interface: ^0.4.0+3 + catalyst_cardano_serialization: ^0.5.0+3 + catalyst_cardano_web: ^0.4.0+3 flutter: sdk: flutter diff --git a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_platform_interface/CHANGELOG.md b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_platform_interface/CHANGELOG.md index 1172f193b42..2a88f801639 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_platform_interface/CHANGELOG.md +++ b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.0+3 + + - Update a dependency to the latest release. + ## 0.4.0+2 - Update a dependency to the latest release. diff --git a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_platform_interface/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_platform_interface/pubspec.yaml index cf9462502f5..1ca2641e914 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_platform_interface/pubspec.yaml +++ b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_platform_interface/pubspec.yaml @@ -3,14 +3,14 @@ description: A common platform interface for the catalyst_cardano plugin. repository: https://github.com/input-output-hk/catalyst-voices/tree/main/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_platform_interface issue_tracker: https://github.com/input-output-hk/catalyst-voices/issues topics: [blockchain, cardano, cryptocurrency, wallet] -version: 0.4.0+2 +version: 0.4.0+3 environment: sdk: ">=3.5.0 <4.0.0" flutter: ">=3.24.1" dependencies: - catalyst_cardano_serialization: ^0.5.0+2 + catalyst_cardano_serialization: ^0.5.0+3 equatable: ^2.0.7 flutter: sdk: flutter diff --git a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_web/CHANGELOG.md b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_web/CHANGELOG.md index 936ffa589bc..fe5b1952f83 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_web/CHANGELOG.md +++ b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.0+3 + + - Update a dependency to the latest release. + ## 0.4.0+2 - Update a dependency to the latest release. diff --git a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_web/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_web/pubspec.yaml index 6c341d0f22f..14e74796033 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_web/pubspec.yaml +++ b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_web/pubspec.yaml @@ -3,7 +3,7 @@ description: Web platform implementation of catalyst_cardano. Allows to communic repository: https://github.com/input-output-hk/catalyst-voices/tree/main/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano_web issue_tracker: https://github.com/input-output-hk/catalyst-voices/issues topics: [blockchain, cardano, cryptocurrency, wallet] -version: 0.4.0+2 +version: 0.4.0+3 environment: sdk: ">=3.5.0 <4.0.0" @@ -21,8 +21,8 @@ flutter: - assets/js/ dependencies: - catalyst_cardano_platform_interface: ^0.4.0+2 - catalyst_cardano_serialization: ^0.5.0+2 + catalyst_cardano_platform_interface: ^0.4.0+3 + catalyst_cardano_serialization: ^0.5.0+3 cbor: ^6.2.0 convert: ^3.1.1 flutter: diff --git a/catalyst_voices/packages/libs/catalyst_cardano_serialization/CHANGELOG.md b/catalyst_voices/packages/libs/catalyst_cardano_serialization/CHANGELOG.md index 5010f6a764d..f67159ebdb9 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano_serialization/CHANGELOG.md +++ b/catalyst_voices/packages/libs/catalyst_cardano_serialization/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.0+3 + + - Update a dependency to the latest release. + ## 0.5.0+2 - Update a dependency to the latest release. diff --git a/catalyst_voices/packages/libs/catalyst_cardano_serialization/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_cardano_serialization/pubspec.yaml index e62074009b2..d982837545a 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano_serialization/pubspec.yaml +++ b/catalyst_voices/packages/libs/catalyst_cardano_serialization/pubspec.yaml @@ -3,7 +3,7 @@ description: Dart package providing serialization/deserialization for common str repository: https://github.com/input-output-hk/catalyst-voices/tree/main/catalyst_voices/packages/libs/catalyst_cardano_serialization issue_tracker: https://github.com/input-output-hk/catalyst-voices/issues topics: [blockchain, cardano, cryptocurrency, wallet] -version: 0.5.0+2 +version: 0.5.0+3 environment: sdk: ">=3.5.0 <4.0.0" @@ -15,7 +15,7 @@ dependencies: bip32_ed25519: ^0.6.0 catalyst_compression: ^0.4.0 catalyst_compression_web: ^0.4.0 - catalyst_key_derivation: ^0.1.1+1 + catalyst_key_derivation: ^0.1.2 cbor: ^6.2.0 convert: ^3.1.1 cryptography: ^2.7.0 diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/CHANGELOG.md b/catalyst_voices/packages/libs/catalyst_key_derivation/CHANGELOG.md index 682e61fd448..c55c8657bd4 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/CHANGELOG.md +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.1.2 + + - **FIX**(general): Update cat-ci to latest version to bring in doc test fixes and latest rust compiler ([#1462](https://github.com/input-output-hk/catalyst-voices/issues/1462)). ([6ddc4c5e](https://github.com/input-output-hk/catalyst-voices/commit/6ddc4c5ea6e5e93a0042e188982505ba25cccf76)) + - **FIX**: add missing dependency. ([1334cb06](https://github.com/input-output-hk/catalyst-voices/commit/1334cb066877b2507af2e469f31b6c3549181146)) + - **FEAT**(cat-voices): Enable the 'arithmetic_side_effects' Clippy lint ([#1456](https://github.com/input-output-hk/catalyst-voices/issues/1456)). ([5a0e2f46](https://github.com/input-output-hk/catalyst-voices/commit/5a0e2f46859b44ff325d47ca0eb90d4fa904d125)) + - **DOCS**: update pub.dev topics for catalyst_key_derivation package. ([a6d9bcfa](https://github.com/input-output-hk/catalyst-voices/commit/a6d9bcfa451cbb8d0ded9659e63fbfa290416480)) + ## 0.1.1+1 - **DOCS**: update pub.dev topics for catalyst_key_derivation package. ([a6d9bcfa](https://github.com/input-output-hk/catalyst-voices/commit/a6d9bcfa451cbb8d0ded9659e63fbfa290416480)) diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_key_derivation/pubspec.yaml index 459f9eff6db..ee9ea7461f2 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/pubspec.yaml +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/pubspec.yaml @@ -3,7 +3,7 @@ description: A Flutter plugin exposing CIP-1852 Cardano HD Key Derivation repository: https://github.com/input-output-hk/catalyst-voices/tree/main/catalyst_voices/packages/libs/catalyst_key_derivation issue_tracker: https://github.com/input-output-hk/catalyst-voices/issues topics: [cryptography, encryption] -version: 0.1.1+1 +version: 0.1.2 environment: sdk: ">=3.5.0 <4.0.0" diff --git a/catalyst_voices/utilities/uikit_example/pubspec.yaml b/catalyst_voices/utilities/uikit_example/pubspec.yaml index fa6d7e5f065..fa961a92516 100644 --- a/catalyst_voices/utilities/uikit_example/pubspec.yaml +++ b/catalyst_voices/utilities/uikit_example/pubspec.yaml @@ -7,7 +7,7 @@ environment: flutter: ">=3.24.1" dependencies: - catalyst_cardano_serialization: ^0.5.0+2 + catalyst_cardano_serialization: ^0.5.0+3 catalyst_voices: path: ../../ catalyst_voices_assets: From a40efb551807404547d7a87df87106905d162451 Mon Sep 17 00:00:00 2001 From: Stefano Cunego <93382903+kukkok3@users.noreply.github.com> Date: Mon, 13 Jan 2025 12:32:26 +0100 Subject: [PATCH 3/6] test(cat-gateway): schemathesis for health endpoints (#1485) * wip * wip * wip * wip * wip * wip * fix: remove scylla earthfile * feat: runs schemathesis only on api/started endpoint * clean up * fix: blueprint * fix: blueprint * fix: blueprint * fix: blueprint * fix: remove hooks * fix: remove some checks * feat: adds seed param to chemathesis package * fix: poetry * fix: earthly dockerd bug * fix: remove checks all param * fix: remove duplicated function * fix: regex * adds all check * chore: clean up * clean up * chore: update schemathesis version * fix: update schemathesis option to latest version * fixes * fix: st target failing statment --------- Co-authored-by: Steven Johnson Co-authored-by: Oleksandr Prokhorenko --- .gitignore | 6 ++++- Overall, | 0 .../tests/schemathesis_tests/.gitignore | 4 ++-- .../tests/schemathesis_tests/Earthfile | 24 ++++++++++++------- 4 files changed, 23 insertions(+), 11 deletions(-) delete mode 100644 Overall, diff --git a/.gitignore b/.gitignore index 406b997792a..9d15200d205 100644 --- a/.gitignore +++ b/.gitignore @@ -123,4 +123,8 @@ test-results/ /playwright/.cache/ extensions/ browser_extensions/ -!catalyst_voices/packages/internal/catalyst_voices_driver/lib/src/extensions/ \ No newline at end of file +!catalyst_voices/packages/internal/catalyst_voices_driver/lib/src/extensions/ + +#Test report and coverage +*.junit-report.xml +*.coverage.info \ No newline at end of file diff --git a/Overall, b/Overall, deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/catalyst-gateway/tests/schemathesis_tests/.gitignore b/catalyst-gateway/tests/schemathesis_tests/.gitignore index 3b9825d2f9c..12e88d03ad5 100644 --- a/catalyst-gateway/tests/schemathesis_tests/.gitignore +++ b/catalyst-gateway/tests/schemathesis_tests/.gitignore @@ -1,3 +1,3 @@ __pycache__ -junit-report.xml -.hypothesis/ \ No newline at end of file +.hypothesis/ +cassette.yaml \ No newline at end of file diff --git a/catalyst-gateway/tests/schemathesis_tests/Earthfile b/catalyst-gateway/tests/schemathesis_tests/Earthfile index 97e8ed756f1..4e29e62855d 100644 --- a/catalyst-gateway/tests/schemathesis_tests/Earthfile +++ b/catalyst-gateway/tests/schemathesis_tests/Earthfile @@ -3,21 +3,25 @@ VERSION 0.8 package-schemathesis: FROM python:3.12-alpine3.20 # TODO: https://github.com/input-output-hk/catalyst-voices/issues/465 + ARG openapi_spec + # optional argument that can be used to pass a --hypothesis-seed to replicate specific test failures + ARG seed + ARG version=3.39.5 + RUN apk add --no-cache gcc musl-dev - RUN python -m pip install schemathesis==3.27.1 + RUN python -m pip install schemathesis==$version RUN mkdir /results COPY ./hooks/hooks.py . VOLUME /results - ARG openapi_spec - # optional argument that can be used to pass a --hypothesis-seed to replicate specific test failures - ARG seed - ENTRYPOINT st run --endpoint '^/api/v1/health' $openapi_spec \ + ENTRYPOINT st run --include-path-regex '^/api/v1/health/' \ + --exclude-path '/api/v1/health/inspection' \ #excluding since this is a internal debug endpoint + --checks=all $openapi_spec \ --workers=2 \ --wait-for-schema=120 \ --max-response-time=5000 \ --hypothesis-max-examples=1000 \ --data-generation-method=all \ - --skip-deprecated-operations \ + --exclude-deprecated \ --force-schema-version=30 \ --show-trace \ --force-color \ @@ -31,7 +35,7 @@ package-schemathesis: # test-fuzzer-api - Fuzzy test cat-gateway using openapi specs. test-fuzzer-api: FROM earthly/dind:alpine-3.19-docker-25.0.5-r0 - RUN apk update && apk add iptables-legacy # workaround for https://github.com/earthly/earthly/issues/3784 + RUN apk update && apk add iptables-legacy curl # workaround for https://github.com/earthly/earthly/issues/3784 COPY schemathesis-docker-compose.yml . LET OPENAPI_SPEC="http://0.0.0.0:3030/docs/cat-gateway.json" ARG seed @@ -45,11 +49,15 @@ test-fuzzer-api: --service cat-gateway \ --allow-privileged - RUN docker run --net=host --name=st schemathesis:latest && \ + RUN docker run --net=host --name=st schemathesis:latest || echo fail > fail; \ docker cp st:/results/junit-report.xml junit-report.xml && \ docker cp st:/results/cassette.yaml cassette.yaml END WAIT SAVE ARTIFACT junit-report.xml AS LOCAL schemathesis.junit-report.xml SAVE ARTIFACT cassette.yaml AS LOCAL cassette.yaml + END + IF [ -f fail ] + RUN --no-cache echo "Schemathesis test failed. Check the logs for more details" && \ + exit 1 END \ No newline at end of file From 53a4ddbe1065b327b5a0e303f31b07d479aaed1d Mon Sep 17 00:00:00 2001 From: Emir Hodzic Date: Mon, 13 Jan 2025 12:47:40 +0100 Subject: [PATCH 4/6] test(cat-voices): Adding account tests (#1491) --- .../voices/integration_test/all_test.dart | 2 + .../pageobject/account_dropdown_page.dart | 45 +++++++++++++++++++ .../pageobject/app_bar_page.dart | 1 + .../integration_test/suites/account_test.dart | 45 +++++++++++++++++++ .../integration_test/suites/app_test.dart | 4 ++ .../lib/pages/account/account_popup.dart | 4 ++ .../app_bar/session/session_state_header.dart | 1 + 7 files changed, 102 insertions(+) create mode 100644 catalyst_voices/apps/voices/integration_test/pageobject/account_dropdown_page.dart create mode 100644 catalyst_voices/apps/voices/integration_test/suites/account_test.dart diff --git a/catalyst_voices/apps/voices/integration_test/all_test.dart b/catalyst_voices/apps/voices/integration_test/all_test.dart index ea42d30f7bc..a87f2cfee63 100644 --- a/catalyst_voices/apps/voices/integration_test/all_test.dart +++ b/catalyst_voices/apps/voices/integration_test/all_test.dart @@ -2,6 +2,7 @@ import 'package:catalyst_voices/configs/bootstrap.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; +import 'suites/account_test.dart' as account_test; import 'suites/app_test.dart' as app_test; import 'suites/onboarding_test.dart' as onboarding_test; @@ -14,4 +15,5 @@ void main() async { app_test.main(); onboarding_test.main(); + account_test.main(); } diff --git a/catalyst_voices/apps/voices/integration_test/pageobject/account_dropdown_page.dart b/catalyst_voices/apps/voices/integration_test/pageobject/account_dropdown_page.dart new file mode 100644 index 00000000000..9cee212d044 --- /dev/null +++ b/catalyst_voices/apps/voices/integration_test/pageobject/account_dropdown_page.dart @@ -0,0 +1,45 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:patrol_finders/patrol_finders.dart'; + +import '../utils/translations_utils.dart'; + +class AccountDropdownPage { + static const popUpMenuAccountHeader = Key('PopUpMenuAccountHeader'); + static const popUpMenuMyAccount = Key('PopUpMenuMyAccount'); + static const popUpMenuProfileAndKeychain = Key('PopUpMenuProfileAndKeychain'); + static const popUpMenuLock = Key('PopUpMenuLockAccount'); + + static Future accountDropdownContainsSpecificData( + PatrolTester $, + ) async { + expect( + $(popUpMenuAccountHeader).$(Expanded).$(Text).text?.isNotEmpty, + true, + reason: 'The wallet name should not be an empty string.', + ); + expect( + $(popUpMenuAccountHeader).$(Expanded).$(Text).at(1).text?.contains('₳'), + true, + reason: 'The account balance should contain the symbol ₳.', + ); + expect( + $(popUpMenuMyAccount).$(Text).text, + T.get('My account'), + ); + expect( + $(popUpMenuProfileAndKeychain).$(Text).text, + T.get('Profile & Keychain'), + ); + expect($(popUpMenuLock).$(Text).text, T.get('Lock account')); + } + + static Future accountDropdownLooksAsExpected( + PatrolTester $, + ) async { + expect($(popUpMenuAccountHeader), findsOneWidget); + expect($(popUpMenuMyAccount), findsOneWidget); + expect($(popUpMenuProfileAndKeychain), findsOneWidget); + expect($(popUpMenuLock), findsOneWidget); + } +} diff --git a/catalyst_voices/apps/voices/integration_test/pageobject/app_bar_page.dart b/catalyst_voices/apps/voices/integration_test/pageobject/app_bar_page.dart index 7c24a975f07..b8c17783f4e 100644 --- a/catalyst_voices/apps/voices/integration_test/pageobject/app_bar_page.dart +++ b/catalyst_voices/apps/voices/integration_test/pageobject/app_bar_page.dart @@ -3,4 +3,5 @@ import 'package:flutter/material.dart'; class AppBarPage { static const spacesDrawerButton = Key('DrawerButton'); static const getStartedBtn = Key('GetStartedButton'); + static const accountPopupBtn = Key('AccountPopupButton'); } diff --git a/catalyst_voices/apps/voices/integration_test/suites/account_test.dart b/catalyst_voices/apps/voices/integration_test/suites/account_test.dart new file mode 100644 index 00000000000..6bae0391148 --- /dev/null +++ b/catalyst_voices/apps/voices/integration_test/suites/account_test.dart @@ -0,0 +1,45 @@ +import 'package:catalyst_voices/app/view/app.dart'; +import 'package:catalyst_voices/configs/bootstrap.dart'; +import 'package:catalyst_voices/routes/routes.dart'; +import 'package:catalyst_voices_models/catalyst_voices_models.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:go_router/go_router.dart'; +import 'package:patrol_finders/patrol_finders.dart'; + +import '../pageobject/account_dropdown_page.dart'; +import '../pageobject/app_bar_page.dart'; +import '../pageobject/overall_spaces_page.dart'; + +void main() async { + late final GoRouter router; + + setUpAll(() async { + router = buildAppRouter(); + }); + + setUp(() async { + await registerDependencies(config: const AppConfig()); + router.go(const DiscoveryRoute().location); + }); + + tearDown(() async { + await restartDependencies(); + }); + + group( + 'Account dropdown -', + () { + patrolWidgetTest( + 'user - Account dropdown button opens account dropdown', + (PatrolTester $) async { + await $.pumpWidgetAndSettle(App(routerConfig: router)); + await $(OverallSpacesPage.userShortcutBtn) + .tap(settleTimeout: const Duration(seconds: 10)); + await $(AppBarPage.accountPopupBtn).tap(); + await AccountDropdownPage.accountDropdownLooksAsExpected($); + await AccountDropdownPage.accountDropdownContainsSpecificData($); + }, + ); + }, + ); +} diff --git a/catalyst_voices/apps/voices/integration_test/suites/app_test.dart b/catalyst_voices/apps/voices/integration_test/suites/app_test.dart index 0a790864aa5..11d0f9a6d30 100644 --- a/catalyst_voices/apps/voices/integration_test/suites/app_test.dart +++ b/catalyst_voices/apps/voices/integration_test/suites/app_test.dart @@ -41,6 +41,8 @@ void main() async { patrolWidgetTest( 'guest - chooser - clicking on icons works correctly', + tags: 'https://github.com/input-output-hk/catalyst-voices/issues/1473', + skip: true, (PatrolTester $) async { await $.pumpWidgetAndSettle(App(routerConfig: router)); await $(OverallSpacesPage.guestShortcutBtn) @@ -58,6 +60,8 @@ void main() async { ); patrolWidgetTest( + tags: 'https://github.com/input-output-hk/catalyst-voices/issues/1473', + skip: true, 'guest - chooser - next,previous buttons work correctly', (PatrolTester $) async { await $.pumpWidgetAndSettle(App(routerConfig: router)); diff --git a/catalyst_voices/apps/voices/lib/pages/account/account_popup.dart b/catalyst_voices/apps/voices/lib/pages/account/account_popup.dart index 8288221a1d8..93e9057d5fb 100644 --- a/catalyst_voices/apps/voices/lib/pages/account/account_popup.dart +++ b/catalyst_voices/apps/voices/lib/pages/account/account_popup.dart @@ -38,6 +38,7 @@ class AccountPopup extends StatelessWidget { padding: EdgeInsets.zero, enabled: false, value: null, + key: const Key('PopUpMenuAccountHeader'), child: _Header( accountLetter: avatarLetter, walletName: 'Wallet name', @@ -56,11 +57,13 @@ class AccountPopup extends StatelessWidget { padding: EdgeInsets.zero, enabled: false, value: null, + key: Key('PopUpMenuMyAccount'), child: _Section('My account'), ), PopupMenuItem( padding: EdgeInsets.zero, value: _MenuItemValue.profileAndKeychain, + key: const Key('PopUpMenuProfileAndKeychain'), child: _MenuItem( 'Profile & Keychain', VoicesAssets.icons.userCircle, @@ -69,6 +72,7 @@ class AccountPopup extends StatelessWidget { PopupMenuItem( padding: EdgeInsets.zero, value: _MenuItemValue.lock, + key: const Key('PopUpMenuLockAccount'), child: _MenuItem( 'Lock account', VoicesAssets.icons.lockClosed, diff --git a/catalyst_voices/apps/voices/lib/widgets/app_bar/session/session_state_header.dart b/catalyst_voices/apps/voices/lib/widgets/app_bar/session/session_state_header.dart index 5aec9ba1c4c..5a5e896186f 100644 --- a/catalyst_voices/apps/voices/lib/widgets/app_bar/session/session_state_header.dart +++ b/catalyst_voices/apps/voices/lib/widgets/app_bar/session/session_state_header.dart @@ -23,6 +23,7 @@ class SessionStateHeader extends StatelessWidget { avatarLetter: account?.acronym ?? '', onLockAccountTap: () => _onLockAccount(context), onProfileKeychainTap: () => _onSeeProfile(context), + key: const Key('AccountPopupButton'), ), }; }, From c69e5c7eafc07a8e42e3f10eb779f4ba2d098a9c Mon Sep 17 00:00:00 2001 From: Stefano Cunego <93382903+kukkok3@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:58:19 +0100 Subject: [PATCH 5/6] fix: schemathesis (#1511) --- catalyst-gateway/tests/schemathesis_tests/Earthfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/catalyst-gateway/tests/schemathesis_tests/Earthfile b/catalyst-gateway/tests/schemathesis_tests/Earthfile index 4e29e62855d..3255d70db3b 100644 --- a/catalyst-gateway/tests/schemathesis_tests/Earthfile +++ b/catalyst-gateway/tests/schemathesis_tests/Earthfile @@ -15,7 +15,7 @@ package-schemathesis: VOLUME /results ENTRYPOINT st run --include-path-regex '^/api/v1/health/' \ --exclude-path '/api/v1/health/inspection' \ #excluding since this is a internal debug endpoint - --checks=all $openapi_spec \ + $openapi_spec \ --workers=2 \ --wait-for-schema=120 \ --max-response-time=5000 \ From 581033186f360510b2e00670190b9487789863a1 Mon Sep 17 00:00:00 2001 From: Ryszard Schossler <51096731+LynxLynxx@users.noreply.github.com> Date: Mon, 13 Jan 2025 17:01:56 +0100 Subject: [PATCH 6/6] feat(cat-voices): Add link(s) component (#1492) * feat: creating ui layout * feat: adding validation for text field * feat: adding localization string for validation * chore: adding ui styling * feat: changing logic of suffix icon in voices_textfield * fix: remove unecessary check * fix: relisten to controller if widget changes * chore: conditional logic, making variables private * chore: changing widget from stateful to stateless * chore: adding extension to format description --- .../lib/common/ext/document_property_ext.dart | 8 + .../single_line_https_url_widget.dart.dart | 123 +++++++++++++++ .../text_field/voices_https_text_field.dart | 147 ++++++++++++++++++ .../widgets/text_field/voices_text_field.dart | 34 +++- .../tiles/document_builder_section_tile.dart | 11 +- .../lib/l10n/intl_en.arb | 9 +- ...ingle_line_https_url_entry_definition.dart | 7 +- .../lib/src/document/document_validator.dart | 26 ++++ .../validation/document_validation_test.dart | 50 ++++++ .../localized_document_validation_result.dart | 14 ++ 10 files changed, 423 insertions(+), 6 deletions(-) create mode 100644 catalyst_voices/apps/voices/lib/common/ext/document_property_ext.dart create mode 100644 catalyst_voices/apps/voices/lib/widgets/document_builder/single_line_https_url_widget.dart.dart create mode 100644 catalyst_voices/apps/voices/lib/widgets/text_field/voices_https_text_field.dart create mode 100644 catalyst_voices/packages/internal/catalyst_voices_models/test/document/validation/document_validation_test.dart diff --git a/catalyst_voices/apps/voices/lib/common/ext/document_property_ext.dart b/catalyst_voices/apps/voices/lib/common/ext/document_property_ext.dart new file mode 100644 index 00000000000..8034d8f499c --- /dev/null +++ b/catalyst_voices/apps/voices/lib/common/ext/document_property_ext.dart @@ -0,0 +1,8 @@ +import 'package:catalyst_voices/common/ext/string_ext.dart'; +import 'package:catalyst_voices_models/catalyst_voices_models.dart'; + +extension DocumentPropertyExt on DocumentProperty { + String get formattedDescription { + return (schema.description ?? '').starred(isEnabled: schema.isRequired); + } +} diff --git a/catalyst_voices/apps/voices/lib/widgets/document_builder/single_line_https_url_widget.dart.dart b/catalyst_voices/apps/voices/lib/widgets/document_builder/single_line_https_url_widget.dart.dart new file mode 100644 index 00000000000..9474d2f54bd --- /dev/null +++ b/catalyst_voices/apps/voices/lib/widgets/document_builder/single_line_https_url_widget.dart.dart @@ -0,0 +1,123 @@ +import 'package:catalyst_voices/common/ext/document_property_ext.dart'; +import 'package:catalyst_voices/widgets/text_field/voices_https_text_field.dart'; +import 'package:catalyst_voices/widgets/widgets.dart'; +import 'package:catalyst_voices_models/catalyst_voices_models.dart'; +import 'package:catalyst_voices_view_models/catalyst_voices_view_models.dart'; +import 'package:flutter/material.dart'; + +class SingleLineHttpsUrlWidget extends StatefulWidget { + final DocumentProperty property; + final bool isEditMode; + final ValueChanged onChanged; + + const SingleLineHttpsUrlWidget({ + super.key, + required this.property, + required this.isEditMode, + required this.onChanged, + }); + + @override + State createState() => + _SingleLineHttpsUrlWidgetState(); +} + +class _SingleLineHttpsUrlWidgetState extends State { + late final TextEditingController _textEditingController; + late final FocusNode _focusNode; + + String get _description => widget.property.formattedDescription; + + @override + void initState() { + super.initState(); + _textEditingController = TextEditingController(text: widget.property.value); + _textEditingController.addListener(_handleControllerChange); + _focusNode = FocusNode(canRequestFocus: widget.isEditMode); + } + + @override + void didUpdateWidget(covariant SingleLineHttpsUrlWidget oldWidget) { + super.didUpdateWidget(oldWidget); + + if (oldWidget.isEditMode != widget.isEditMode && + widget.isEditMode == false) { + _textEditingController.text = widget.property.value ?? ''; + } + + if (widget.isEditMode != oldWidget.isEditMode) { + _handleEditModeChanged(); + } + } + + @override + void dispose() { + _textEditingController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + if (_description.isNotEmpty) ...[ + Text( + _description, + style: Theme.of(context).textTheme.titleSmall, + ), + const SizedBox(height: 8), + ], + VoicesHttpsTextField( + controller: _textEditingController, + focusNode: _focusNode, + onFieldSubmitted: _notifyChangeListener, + validator: _validate, + enabled: widget.isEditMode, + ), + ], + ); + } + + void _handleControllerChange() { + final controllerValue = _textEditingController.text; + if (widget.property.value != controllerValue && + controllerValue.isNotEmpty) { + _notifyChangeListener(controllerValue); + } + } + + void _notifyChangeListener(String? value) { + final change = DocumentChange( + nodeId: widget.property.schema.nodeId, + value: value, + ); + + widget.onChanged(change); + } + + VoicesTextFieldValidationResult _validate(String? value) { + if (value == null || value.isEmpty) { + return const VoicesTextFieldValidationResult.none(); + } + final schema = widget.property.schema; + final result = schema.validatePropertyValue(value); + if (result.isValid) { + return const VoicesTextFieldValidationResult.success(); + } else { + final localized = LocalizedDocumentValidationResult.from(result); + return VoicesTextFieldValidationResult.error(localized.message(context)); + } + } + + void _handleEditModeChanged() { + _focusNode.canRequestFocus = widget.isEditMode; + + if (widget.isEditMode) { + _focusNode.requestFocus(); + } else { + _focusNode.unfocus(); + } + } +} diff --git a/catalyst_voices/apps/voices/lib/widgets/text_field/voices_https_text_field.dart b/catalyst_voices/apps/voices/lib/widgets/text_field/voices_https_text_field.dart new file mode 100644 index 00000000000..434e1b4661d --- /dev/null +++ b/catalyst_voices/apps/voices/lib/widgets/text_field/voices_https_text_field.dart @@ -0,0 +1,147 @@ +import 'package:catalyst_voices/widgets/widgets.dart'; +import 'package:catalyst_voices_assets/catalyst_voices_assets.dart'; +import 'package:catalyst_voices_brands/catalyst_voices_brands.dart'; +import 'package:catalyst_voices_localization/catalyst_voices_localization.dart'; +import 'package:catalyst_voices_shared/catalyst_voices_shared.dart'; +import 'package:flutter/material.dart'; + +class VoicesHttpsTextField extends StatefulWidget { + final ValueChanged? onFieldSubmitted; + final TextEditingController? controller; + final FocusNode? focusNode; + final VoicesTextFieldValidator? validator; + final bool enabled; + + const VoicesHttpsTextField({ + super.key, + this.onFieldSubmitted, + this.focusNode, + this.enabled = false, + this.controller, + this.validator, + }); + + @override + State createState() => _VoicesHttpsTextFieldState(); +} + +class _VoicesHttpsTextFieldState extends State + with LaunchUrlMixin { + TextEditingController? _controller; + TextEditingController get _effectiveController { + return widget.controller ?? (_controller ??= TextEditingController()); + } + + @override + void dispose() { + _controller?.dispose(); + _controller = null; + + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: widget.enabled ? null : _launchUrl, + child: VoicesTextField( + controller: _effectiveController, + focusNode: widget.focusNode, + onFieldSubmitted: widget.onFieldSubmitted, + validator: widget.validator, + decoration: VoicesTextFieldDecoration( + hintText: + widget.enabled ? context.l10n.noUrlAdded : context.l10n.addUrl, + prefixIcon: VoicesAssets.icons.link.buildIcon(), + showStatusSuffixIcon: widget.enabled, + suffixIcon: ValueListenableBuilder( + valueListenable: _effectiveController, + builder: (context, value, child) { + return _AdditionalSuffixIcons( + enabled: widget.enabled, + canClear: value.text.isNotEmpty, + onLinkTap: _launchUrl, + onClearTap: _onClearTap, + ); + }, + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide( + color: Theme.of(context).colorScheme.outlineVariant, + ), + ), + disabledBorder: OutlineInputBorder( + borderSide: BorderSide( + color: Theme.of(context).colorScheme.outlineVariant, + ), + ), + fillColor: Theme.of(context).colors.onSurfaceNeutralOpaqueLv1, + filled: true, + ), + style: _getTextStyle(context), + enabled: widget.enabled, + readOnly: !widget.enabled, + autovalidateMode: AutovalidateMode.onUserInteraction, + ), + ); + } + + TextStyle? _getTextStyle(BuildContext context) { + final theme = Theme.of(context); + final textTheme = theme.textTheme; + if (widget.enabled) { + return textTheme.bodyLarge; + } + return textTheme.bodyLarge?.copyWith( + color: theme.colorScheme.primary, + decoration: TextDecoration.underline, + decorationColor: theme.colorScheme.primary, + ); + } + + Future _launchUrl() async { + if (_effectiveController.text.isEmpty) return; + + final url = Uri.tryParse(_effectiveController.text); + if (url != null) { + await launchHrefUrl(url); + } + } + + void _onClearTap() { + _effectiveController.clear(); + } +} + +class _AdditionalSuffixIcons extends StatelessWidget { + final bool enabled; + final bool canClear; + final VoidCallback onLinkTap; + final VoidCallback onClearTap; + + const _AdditionalSuffixIcons({ + required this.enabled, + required this.canClear, + required this.onLinkTap, + required this.onClearTap, + }); + + @override + Widget build(BuildContext context) { + if (!enabled) { + return VoicesIconButton( + onTap: onLinkTap, + child: VoicesAssets.icons.externalLink.buildIcon( + color: Theme.of(context).colorScheme.primary, + ), + ); + } + return Offstage( + offstage: !canClear, + child: TextButton( + onPressed: onClearTap, + child: Text(context.l10n.clear), + ), + ); + } +} diff --git a/catalyst_voices/apps/voices/lib/widgets/text_field/voices_text_field.dart b/catalyst_voices/apps/voices/lib/widgets/text_field/voices_text_field.dart index cd037a9720f..1af6a00b13b 100644 --- a/catalyst_voices/apps/voices/lib/widgets/text_field/voices_text_field.dart +++ b/catalyst_voices/apps/voices/lib/widgets/text_field/voices_text_field.dart @@ -343,8 +343,8 @@ class _VoicesTextFieldState extends State { return textStyle; }), - suffixIcon: _wrapIconIfExists( - widget.decoration?.suffixIcon ?? _getStatusSuffixWidget(), + suffixIcon: _wrapSuffixIfExists( + widget.decoration?.suffixIcon, const EdgeInsetsDirectional.only(start: 4, end: 8), ), suffixText: widget.decoration?.suffixText, @@ -425,6 +425,36 @@ class _VoicesTextFieldState extends State { ); } + Widget? _wrapSuffixIfExists(Widget? child, EdgeInsetsDirectional padding) { + final statusSuffixWidget = _getStatusSuffixWidget(); + if (child == null) return statusSuffixWidget; + + return Padding( + padding: padding, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.min, + children: [ + IconTheme( + data: IconThemeData( + size: 24, + color: Theme.of(context).colors.iconsForeground, + ), + child: Align( + widthFactor: 1, + heightFactor: 1, + child: child, + ), + ), + if (statusSuffixWidget != null) ...[ + const SizedBox(width: 2), + statusSuffixWidget, + ], + ], + ), + ); + } + Color _getStatusColor({required Color orDefault}) { switch (_validation.status) { case VoicesTextFieldStatus.none: diff --git a/catalyst_voices/apps/voices/lib/widgets/tiles/document_builder_section_tile.dart b/catalyst_voices/apps/voices/lib/widgets/tiles/document_builder_section_tile.dart index 9f7ff16d789..88f0465f37e 100644 --- a/catalyst_voices/apps/voices/lib/widgets/tiles/document_builder_section_tile.dart +++ b/catalyst_voices/apps/voices/lib/widgets/tiles/document_builder_section_tile.dart @@ -2,6 +2,7 @@ import 'package:catalyst_voices/widgets/document_builder/agreement_confirmation_ import 'package:catalyst_voices/widgets/document_builder/document_token_value_widget.dart'; import 'package:catalyst_voices/widgets/document_builder/single_dropdown_selection_widget.dart'; import 'package:catalyst_voices/widgets/document_builder/single_grouped_tag_selector_widget.dart'; +import 'package:catalyst_voices/widgets/document_builder/single_line_https_url_widget.dart.dart'; import 'package:catalyst_voices/widgets/widgets.dart'; import 'package:catalyst_voices_localization/catalyst_voices_localization.dart'; import 'package:catalyst_voices_models/catalyst_voices_models.dart'; @@ -206,7 +207,6 @@ class _PropertyBuilder extends StatelessWidget { 'by $DocumentBuilderSectionTile', ); case SingleLineTextEntryDefinition(): - case SingleLineHttpsURLEntryDefinition(): case MultiLineTextEntryDefinition(): case MultiLineTextEntryMarkdownDefinition(): case MultiSelectDefinition(): @@ -221,7 +221,14 @@ class _PropertyBuilder extends StatelessWidget { case YesNoChoiceDefinition(): case SPDXLicenceOrUrlDefinition(): case LanguageCodeDefinition(): - throw UnimplementedError(); + throw UnimplementedError('${definition.type} not implemented'); + case SingleLineHttpsURLEntryDefinition(): + final castProperty = definition.castProperty(property); + return SingleLineHttpsUrlWidget( + property: castProperty, + isEditMode: isEditMode, + onChanged: onChanged, + ); case SingleGroupedTagSelectorDefinition(): final castProperty = definition.castProperty(property); return SingleGroupedTagSelectorWidget( diff --git a/catalyst_voices/packages/internal/catalyst_voices_localization/lib/l10n/intl_en.arb b/catalyst_voices/packages/internal/catalyst_voices_localization/lib/l10n/intl_en.arb index 61dd36220e5..f2638c42b23 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_localization/lib/l10n/intl_en.arb +++ b/catalyst_voices/packages/internal/catalyst_voices_localization/lib/l10n/intl_en.arb @@ -1285,6 +1285,13 @@ "@noTagSelected": { "description": "For example in context of document builder" }, + "errorValidationPatternMismatch": "The value does not match the valid pattern.", + "@errorValidationPatternMismatch": { + "description": "Validation error when the user entered value does not match the pattern" + }, "singleGroupedTagSelectorTitle": "Please choose the most relevant category group and tag related to the outcomes of your proposal", - "singleGroupedTagSelectorRelevantTag": "Select the most relevant tag" + "singleGroupedTagSelectorRelevantTag": "Select the most relevant tag", + "noUrlAdded": "No URL added", + "addUrl": "Add URL", + "clear": "Clear" } \ No newline at end of file diff --git a/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/document/definitions/single_line_https_url_entry_definition.dart b/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/document/definitions/single_line_https_url_entry_definition.dart index ea8d25e9a44..a66608299ae 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/document/definitions/single_line_https_url_entry_definition.dart +++ b/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/document/definitions/single_line_https_url_entry_definition.dart @@ -17,7 +17,12 @@ final class SingleLineHttpsURLEntryDefinition DocumentSchemaProperty schema, String? value, ) { - return DocumentValidator.validateString(schema, value); + final stringValidationResult = + DocumentValidator.validateString(schema, value); + if (stringValidationResult.isInvalid) { + return stringValidationResult; + } + return DocumentValidator.validatePattern(pattern, value); } @override diff --git a/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/document/document_validator.dart b/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/document/document_validator.dart index f2c9d15e612..ac141a8dafe 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/document/document_validator.dart +++ b/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/document/document_validator.dart @@ -97,6 +97,19 @@ final class DocumentValidator { ) { return validateBasic(schema, value); } + + static DocumentValidationResult validatePattern( + String pattern, + String? value, + ) { + final regex = RegExp(pattern); + if (value != null) { + if (!regex.hasMatch(value)) { + return DocumentPatternMismatch(pattern: pattern, value: value); + } + } + return const SuccessfulDocumentValidation(); + } } sealed class DocumentValidationResult extends Equatable { @@ -176,3 +189,16 @@ final class DocumentItemsOutOfRange @override List get props => [invalidNodeId, expectedRange, actualItems]; } + +final class DocumentPatternMismatch extends DocumentValidationResult { + final String pattern; + final String? value; + + const DocumentPatternMismatch({ + required this.pattern, + required this.value, + }); + + @override + List get props => [pattern, value]; +} diff --git a/catalyst_voices/packages/internal/catalyst_voices_models/test/document/validation/document_validation_test.dart b/catalyst_voices/packages/internal/catalyst_voices_models/test/document/validation/document_validation_test.dart new file mode 100644 index 00000000000..b18920102c5 --- /dev/null +++ b/catalyst_voices/packages/internal/catalyst_voices_models/test/document/validation/document_validation_test.dart @@ -0,0 +1,50 @@ +import 'package:catalyst_voices_models/catalyst_voices_models.dart'; +import 'package:test/test.dart'; + +void main() { + group('$DocumentValidator', () { + group('$SingleLineHttpsURLEntryDefinition validation', () { + late DocumentProperty property; + + setUp(() { + property = const DocumentProperty( + schema: DocumentSchemaProperty( + definition: SingleLineHttpsURLEntryDefinition( + type: DocumentDefinitionsObjectType.string, + note: '', + format: DocumentDefinitionsFormat.uri, + pattern: '^https://', + ), + nodeId: DocumentNodeId.root, + id: '', + title: '', + description: '', + defaultValue: null, + guidance: '', + enumValues: null, + numRange: null, + strLengthRange: null, + itemsRange: null, + oneOf: null, + isRequired: true, + ), + value: null, + validationResult: SuccessfulDocumentValidation(), + ); + }); + + test('value cannot be null when required', () { + final result = property.schema.validatePropertyValue(null); + + expect(result, isA()); + }); + + test('value is valid when matches pattern', () { + final result = + property.schema.validatePropertyValue('https://www.catalyst.org/'); + + expect(result, isA()); + }); + }); + }); +} diff --git a/catalyst_voices/packages/internal/catalyst_voices_view_models/lib/src/document/validation/localized_document_validation_result.dart b/catalyst_voices/packages/internal/catalyst_voices_view_models/lib/src/document/validation/localized_document_validation_result.dart index e7dd83da5f8..430d66961de 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_view_models/lib/src/document/validation/localized_document_validation_result.dart +++ b/catalyst_voices/packages/internal/catalyst_voices_view_models/lib/src/document/validation/localized_document_validation_result.dart @@ -24,6 +24,7 @@ sealed class LocalizedDocumentValidationResult extends Equatable { LocalizedDocumentStringOutOfRange(range: result.expectedRange), DocumentItemsOutOfRange() => LocalizedDocumentItemsOutOfRange(range: result.expectedRange), + DocumentPatternMismatch() => const LocalizedDocumentPatternMismatch(), }; } @@ -142,3 +143,16 @@ final class LocalizedDocumentItemsOutOfRange @override List get props => [range]; } + +final class LocalizedDocumentPatternMismatch + extends LocalizedDocumentValidationResult { + const LocalizedDocumentPatternMismatch(); + + @override + String? message(BuildContext context) { + return context.l10n.errorValidationPatternMismatch; + } + + @override + List get props => []; +}