diff --git a/.github/workflows/combine-prs.yaml b/.github/workflows/combine-prs.yaml index 56348c79..4153009f 100644 --- a/.github/workflows/combine-prs.yaml +++ b/.github/workflows/combine-prs.yaml @@ -108,7 +108,8 @@ jobs: - uses: subosito/flutter-action@v2 - uses: bluefireteam/melos-action@v2 - run: | - cargo build -r + cargo install flutter_rust_bridge_codegen + melos run codegen git config --global user.name 'MimirActionsBot' git config --global user.email 'mimiractionsbot@users.noreply.github.com' git commit -am "chore: update generated files" diff --git a/analysis_options.yaml b/analysis_options.yaml index 3093f654..dfaf4512 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,4 +1,4 @@ -# Modified from very_good_analysis@5.0.0+1 +# Modified from very_good_analysis@6.0.0 analyzer: language: strict-casts: true @@ -10,11 +10,14 @@ analyzer: missing_required_param: error missing_return: error record_literal_one_positional_no_trailing_comma: error + collection_methods_unrelated_type: warning + unrelated_type_equality_checks: warning exclude: - '**.freezed.dart' - - '**.g.dart' - - '**/bridge_generated.*dart' + - '**/frb_generated.*dart' + - '**/src/api.dart' + - '**/src/lib.dart' - test/.test_coverage.dart - lib/generated_plugin_registrant.dart @@ -86,7 +89,6 @@ linter: - implementation_imports - implicit_reopen - invalid_case_patterns - - iterable_contains_unrelated_type - join_return_with_assignment - leading_newlines_in_multiline_strings - library_annotations @@ -94,8 +96,8 @@ linter: - library_prefixes - library_private_types_in_public_api - lines_longer_than_80_chars - - list_remove_unrelated_type - literal_only_boolean_expressions + - missing_code_block_language_in_doc_comment - missing_whitespace_between_adjacent_strings - no_adjacent_strings_in_list - no_default_cases @@ -104,6 +106,8 @@ linter: - no_leading_underscores_for_local_identifiers - no_logic_in_create_state - no_runtimeType_toString + - no_self_assignments + - no_wildcard_variable_uses - non_constant_identifier_names - noop_primitive_operations - null_check_on_nullable_type_parameter diff --git a/flutter_rust_bridge.yaml b/flutter_rust_bridge.yaml new file mode 100644 index 00000000..59b82c0a --- /dev/null +++ b/flutter_rust_bridge.yaml @@ -0,0 +1,7 @@ +rust_input: crate::api +rust_root: packages/mimir/native/ +dart_output: packages/mimir/lib/src/ +full_dep: true +c_output: packages/flutter_mimir/ios/Classes/frb.h +duplicated_c_output: + - packages/flutter_mimir/macos/Classes/frb.h diff --git a/melos.yaml b/melos.yaml index 1f13ad51..45ae872e 100644 --- a/melos.yaml +++ b/melos.yaml @@ -26,6 +26,10 @@ scripts: run: bash scripts/build-other.sh description: Build the .tar.gz for all other platforms. + codegen: + run: flutter_rust_bridge_codegen generate + description: Run the flutter_rust_bridge code generation. + test: run: melos run test:dart --no-select && melos run test:flutter --no-select description: Run all Dart & Flutter tests in this project. diff --git a/packages/flutter_mimir/ios/Classes/frb.h b/packages/flutter_mimir/ios/Classes/frb.h index 07d0ce06..05c0bc95 100644 --- a/packages/flutter_mimir/ios/Classes/frb.h +++ b/packages/flutter_mimir/ios/Classes/frb.h @@ -1,333 +1,271 @@ #include #include #include -typedef struct _Dart_Handle* Dart_Handle; - -typedef struct DartCObject DartCObject; +// EXTRA BEGIN +typedef struct DartCObject *WireSyncRust2DartDco; +typedef struct WireSyncRust2DartSse { + uint8_t *ptr; + int32_t len; +} WireSyncRust2DartSse; typedef int64_t DartPort; - typedef bool (*DartPostCObjectFnType)(DartPort port_id, void *message); +void store_dart_post_cobject(DartPostCObjectFnType ptr); +// EXTRA END +typedef struct _Dart_Handle* Dart_Handle; -typedef struct wire_uint_8_list { +typedef struct wire_cst_list_prim_u_8_strict { uint8_t *ptr; int32_t len; -} wire_uint_8_list; +} wire_cst_list_prim_u_8_strict; -typedef struct wire_StringList { - struct wire_uint_8_list **ptr; +typedef struct wire_cst_list_String { + struct wire_cst_list_prim_u_8_strict **ptr; int32_t len; -} wire_StringList; +} wire_cst_list_String; -typedef struct wire_SortBy_Asc { - struct wire_uint_8_list *field0; -} wire_SortBy_Asc; +typedef struct wire_cst_SortBy_Asc { + struct wire_cst_list_prim_u_8_strict *field0; +} wire_cst_SortBy_Asc; -typedef struct wire_SortBy_Desc { - struct wire_uint_8_list *field0; -} wire_SortBy_Desc; +typedef struct wire_cst_SortBy_Desc { + struct wire_cst_list_prim_u_8_strict *field0; +} wire_cst_SortBy_Desc; typedef union SortByKind { - struct wire_SortBy_Asc *Asc; - struct wire_SortBy_Desc *Desc; + struct wire_cst_SortBy_Asc Asc; + struct wire_cst_SortBy_Desc Desc; } SortByKind; -typedef struct wire_SortBy { +typedef struct wire_cst_sort_by { int32_t tag; - union SortByKind *kind; -} wire_SortBy; + union SortByKind kind; +} wire_cst_sort_by; -typedef struct wire_list_sort_by { - struct wire_SortBy *ptr; +typedef struct wire_cst_list_sort_by { + struct wire_cst_sort_by *ptr; int32_t len; -} wire_list_sort_by; +} wire_cst_list_sort_by; -typedef struct wire_list_filter { - struct wire_Filter *ptr; +typedef struct wire_cst_list_filter { + struct wire_cst_filter *ptr; int32_t len; -} wire_list_filter; - -typedef struct wire_Filter_Or { - struct wire_list_filter *field0; -} wire_Filter_Or; - -typedef struct wire_Filter_And { - struct wire_list_filter *field0; -} wire_Filter_And; - -typedef struct wire_Filter_Not { - struct wire_Filter *field0; -} wire_Filter_Not; - -typedef struct wire_Filter_Exists { - struct wire_uint_8_list *field; -} wire_Filter_Exists; - -typedef struct wire_Filter_InValues { - struct wire_uint_8_list *field; - struct wire_StringList *values; -} wire_Filter_InValues; - -typedef struct wire_Filter_GreaterThan { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_GreaterThan; - -typedef struct wire_Filter_GreaterThanOrEqual { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_GreaterThanOrEqual; - -typedef struct wire_Filter_Equal { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_Equal; - -typedef struct wire_Filter_NotEqual { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_NotEqual; - -typedef struct wire_Filter_LessThan { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_LessThan; - -typedef struct wire_Filter_LessThanOrEqual { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_LessThanOrEqual; - -typedef struct wire_Filter_Between { - struct wire_uint_8_list *field; - struct wire_uint_8_list *from; - struct wire_uint_8_list *to; -} wire_Filter_Between; - -typedef struct wire_Filter_IsNull { - struct wire_uint_8_list *field; -} wire_Filter_IsNull; - -typedef struct wire_Filter_IsEmpty { - struct wire_uint_8_list *field; -} wire_Filter_IsEmpty; +} wire_cst_list_filter; + +typedef struct wire_cst_Filter_Or { + struct wire_cst_list_filter *field0; +} wire_cst_Filter_Or; + +typedef struct wire_cst_Filter_And { + struct wire_cst_list_filter *field0; +} wire_cst_Filter_And; + +typedef struct wire_cst_Filter_Not { + struct wire_cst_filter *field0; +} wire_cst_Filter_Not; + +typedef struct wire_cst_Filter_Exists { + struct wire_cst_list_prim_u_8_strict *field; +} wire_cst_Filter_Exists; + +typedef struct wire_cst_Filter_InValues { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_String *values; +} wire_cst_Filter_InValues; + +typedef struct wire_cst_Filter_GreaterThan { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_GreaterThan; + +typedef struct wire_cst_Filter_GreaterThanOrEqual { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_GreaterThanOrEqual; + +typedef struct wire_cst_Filter_Equal { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_Equal; + +typedef struct wire_cst_Filter_NotEqual { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_NotEqual; + +typedef struct wire_cst_Filter_LessThan { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_LessThan; + +typedef struct wire_cst_Filter_LessThanOrEqual { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_LessThanOrEqual; + +typedef struct wire_cst_Filter_Between { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *from; + struct wire_cst_list_prim_u_8_strict *to; +} wire_cst_Filter_Between; + +typedef struct wire_cst_Filter_IsNull { + struct wire_cst_list_prim_u_8_strict *field; +} wire_cst_Filter_IsNull; + +typedef struct wire_cst_Filter_IsEmpty { + struct wire_cst_list_prim_u_8_strict *field; +} wire_cst_Filter_IsEmpty; typedef union FilterKind { - struct wire_Filter_Or *Or; - struct wire_Filter_And *And; - struct wire_Filter_Not *Not; - struct wire_Filter_Exists *Exists; - struct wire_Filter_InValues *InValues; - struct wire_Filter_GreaterThan *GreaterThan; - struct wire_Filter_GreaterThanOrEqual *GreaterThanOrEqual; - struct wire_Filter_Equal *Equal; - struct wire_Filter_NotEqual *NotEqual; - struct wire_Filter_LessThan *LessThan; - struct wire_Filter_LessThanOrEqual *LessThanOrEqual; - struct wire_Filter_Between *Between; - struct wire_Filter_IsNull *IsNull; - struct wire_Filter_IsEmpty *IsEmpty; + struct wire_cst_Filter_Or Or; + struct wire_cst_Filter_And And; + struct wire_cst_Filter_Not Not; + struct wire_cst_Filter_Exists Exists; + struct wire_cst_Filter_InValues InValues; + struct wire_cst_Filter_GreaterThan GreaterThan; + struct wire_cst_Filter_GreaterThanOrEqual GreaterThanOrEqual; + struct wire_cst_Filter_Equal Equal; + struct wire_cst_Filter_NotEqual NotEqual; + struct wire_cst_Filter_LessThan LessThan; + struct wire_cst_Filter_LessThanOrEqual LessThanOrEqual; + struct wire_cst_Filter_Between Between; + struct wire_cst_Filter_IsNull IsNull; + struct wire_cst_Filter_IsEmpty IsEmpty; } FilterKind; -typedef struct wire_Filter { +typedef struct wire_cst_filter { int32_t tag; - union FilterKind *kind; -} wire_Filter; + union FilterKind kind; +} wire_cst_filter; -typedef struct wire_Synonyms { - struct wire_uint_8_list *word; - struct wire_StringList *synonyms; -} wire_Synonyms; +typedef struct wire_cst_synonyms { + struct wire_cst_list_prim_u_8_strict *word; + struct wire_cst_list_String *synonyms; +} wire_cst_synonyms; -typedef struct wire_list_synonyms { - struct wire_Synonyms *ptr; +typedef struct wire_cst_list_synonyms { + struct wire_cst_synonyms *ptr; int32_t len; -} wire_list_synonyms; - -typedef struct wire_MimirIndexSettings { - struct wire_uint_8_list *primary_key; - struct wire_StringList *searchable_fields; - struct wire_StringList *filterable_fields; - struct wire_StringList *sortable_fields; - struct wire_StringList *ranking_rules; - struct wire_StringList *stop_words; - struct wire_list_synonyms *synonyms; +} wire_cst_list_synonyms; + +typedef struct wire_cst_mimir_index_settings { + struct wire_cst_list_prim_u_8_strict *primary_key; + struct wire_cst_list_String *searchable_fields; + struct wire_cst_list_String *filterable_fields; + struct wire_cst_list_String *sortable_fields; + struct wire_cst_list_String *ranking_rules; + struct wire_cst_list_String *stop_words; + struct wire_cst_list_synonyms *synonyms; bool typos_enabled; uint8_t min_word_size_for_one_typo; uint8_t min_word_size_for_two_typos; - struct wire_StringList *disallow_typos_on_words; - struct wire_StringList *disallow_typos_on_fields; -} wire_MimirIndexSettings; - -typedef struct DartCObject *WireSyncReturn; - -void store_dart_post_cobject(DartPostCObjectFnType ptr); - -Dart_Handle get_dart_object(uintptr_t ptr); - -void drop_dart_object(uintptr_t ptr); - -uintptr_t new_dart_opaque(Dart_Handle handle); - -intptr_t init_frb_dart_api_dl(void *obj); - -void wire_ensure_instance_initialized(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *tmp_dir); - -void wire_ensure_index_initialized(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name); - -void wire_add_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_StringList *documents); - -void wire_delete_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_StringList *document_ids); - -void wire_delete_all_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name); - -void wire_set_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_StringList *documents); - -void wire_get_document(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_uint_8_list *document_id); - -void wire_get_all_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name); - -void wire_search_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_uint_8_list *query, - uint32_t *limit, - uint32_t *offset, - struct wire_list_sort_by *sort_criteria, - struct wire_Filter *filter, - int32_t *matching_strategy); - -void wire_number_of_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name); - -void wire_get_settings(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name); - -void wire_set_settings(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_MimirIndexSettings *settings); - -struct wire_StringList *new_StringList_0(int32_t len); - -struct wire_Filter *new_box_autoadd_filter_0(void); - -struct wire_MimirIndexSettings *new_box_autoadd_mimir_index_settings_0(void); - -int32_t *new_box_autoadd_terms_matching_strategy_0(int32_t value); - -uint32_t *new_box_autoadd_u32_0(uint32_t value); - -struct wire_Filter *new_box_filter_0(void); + struct wire_cst_list_String *disallow_typos_on_words; + struct wire_cst_list_String *disallow_typos_on_fields; +} wire_cst_mimir_index_settings; -struct wire_list_filter *new_list_filter_0(int32_t len); +void frbgen_mimir_wire__crate__api__add_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_list_String *documents); -struct wire_list_sort_by *new_list_sort_by_0(int32_t len); +void frbgen_mimir_wire__crate__api__delete_all_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name); -struct wire_list_synonyms *new_list_synonyms_0(int32_t len); +void frbgen_mimir_wire__crate__api__delete_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_list_String *document_ids); -struct wire_uint_8_list *new_uint_8_list_0(int32_t len); +void frbgen_mimir_wire__crate__api__ensure_index_initialized(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name); -union FilterKind *inflate_Filter_Or(void); +void frbgen_mimir_wire__crate__api__ensure_instance_initialized(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *tmp_dir); -union FilterKind *inflate_Filter_And(void); +void frbgen_mimir_wire__crate__api__get_all_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name); -union FilterKind *inflate_Filter_Not(void); +void frbgen_mimir_wire__crate__api__get_document(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_list_prim_u_8_strict *document_id); -union FilterKind *inflate_Filter_Exists(void); +void frbgen_mimir_wire__crate__api__get_settings(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name); -union FilterKind *inflate_Filter_InValues(void); +void frbgen_mimir_wire__crate__api__number_of_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name); -union FilterKind *inflate_Filter_GreaterThan(void); +void frbgen_mimir_wire__crate__api__search_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_list_prim_u_8_strict *query, + uint32_t *limit, + uint32_t *offset, + struct wire_cst_list_sort_by *sort_criteria, + struct wire_cst_filter *filter, + int32_t *matching_strategy); -union FilterKind *inflate_Filter_GreaterThanOrEqual(void); +void frbgen_mimir_wire__crate__api__set_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_list_String *documents); -union FilterKind *inflate_Filter_Equal(void); +void frbgen_mimir_wire__crate__api__set_settings(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_mimir_index_settings *settings); -union FilterKind *inflate_Filter_NotEqual(void); +struct wire_cst_filter *frbgen_mimir_cst_new_box_autoadd_filter(void); -union FilterKind *inflate_Filter_LessThan(void); +struct wire_cst_mimir_index_settings *frbgen_mimir_cst_new_box_autoadd_mimir_index_settings(void); -union FilterKind *inflate_Filter_LessThanOrEqual(void); +int32_t *frbgen_mimir_cst_new_box_autoadd_terms_matching_strategy(int32_t value); -union FilterKind *inflate_Filter_Between(void); +uint32_t *frbgen_mimir_cst_new_box_autoadd_u_32(uint32_t value); -union FilterKind *inflate_Filter_IsNull(void); +struct wire_cst_filter *frbgen_mimir_cst_new_box_filter(void); -union FilterKind *inflate_Filter_IsEmpty(void); +struct wire_cst_list_String *frbgen_mimir_cst_new_list_String(int32_t len); -union SortByKind *inflate_SortBy_Asc(void); +struct wire_cst_list_filter *frbgen_mimir_cst_new_list_filter(int32_t len); -union SortByKind *inflate_SortBy_Desc(void); +struct wire_cst_list_prim_u_8_strict *frbgen_mimir_cst_new_list_prim_u_8_strict(int32_t len); -void free_WireSyncReturn(WireSyncReturn ptr); +struct wire_cst_list_sort_by *frbgen_mimir_cst_new_list_sort_by(int32_t len); +struct wire_cst_list_synonyms *frbgen_mimir_cst_new_list_synonyms(int32_t len); static int64_t dummy_method_to_enforce_bundling(void) { int64_t dummy_var = 0; - dummy_var ^= ((int64_t) (void*) wire_ensure_instance_initialized); - dummy_var ^= ((int64_t) (void*) wire_ensure_index_initialized); - dummy_var ^= ((int64_t) (void*) wire_add_documents); - dummy_var ^= ((int64_t) (void*) wire_delete_documents); - dummy_var ^= ((int64_t) (void*) wire_delete_all_documents); - dummy_var ^= ((int64_t) (void*) wire_set_documents); - dummy_var ^= ((int64_t) (void*) wire_get_document); - dummy_var ^= ((int64_t) (void*) wire_get_all_documents); - dummy_var ^= ((int64_t) (void*) wire_search_documents); - dummy_var ^= ((int64_t) (void*) wire_number_of_documents); - dummy_var ^= ((int64_t) (void*) wire_get_settings); - dummy_var ^= ((int64_t) (void*) wire_set_settings); - dummy_var ^= ((int64_t) (void*) new_StringList_0); - dummy_var ^= ((int64_t) (void*) new_box_autoadd_filter_0); - dummy_var ^= ((int64_t) (void*) new_box_autoadd_mimir_index_settings_0); - dummy_var ^= ((int64_t) (void*) new_box_autoadd_terms_matching_strategy_0); - dummy_var ^= ((int64_t) (void*) new_box_autoadd_u32_0); - dummy_var ^= ((int64_t) (void*) new_box_filter_0); - dummy_var ^= ((int64_t) (void*) new_list_filter_0); - dummy_var ^= ((int64_t) (void*) new_list_sort_by_0); - dummy_var ^= ((int64_t) (void*) new_list_synonyms_0); - dummy_var ^= ((int64_t) (void*) new_uint_8_list_0); - dummy_var ^= ((int64_t) (void*) inflate_Filter_Or); - dummy_var ^= ((int64_t) (void*) inflate_Filter_And); - dummy_var ^= ((int64_t) (void*) inflate_Filter_Not); - dummy_var ^= ((int64_t) (void*) inflate_Filter_Exists); - dummy_var ^= ((int64_t) (void*) inflate_Filter_InValues); - dummy_var ^= ((int64_t) (void*) inflate_Filter_GreaterThan); - dummy_var ^= ((int64_t) (void*) inflate_Filter_GreaterThanOrEqual); - dummy_var ^= ((int64_t) (void*) inflate_Filter_Equal); - dummy_var ^= ((int64_t) (void*) inflate_Filter_NotEqual); - dummy_var ^= ((int64_t) (void*) inflate_Filter_LessThan); - dummy_var ^= ((int64_t) (void*) inflate_Filter_LessThanOrEqual); - dummy_var ^= ((int64_t) (void*) inflate_Filter_Between); - dummy_var ^= ((int64_t) (void*) inflate_Filter_IsNull); - dummy_var ^= ((int64_t) (void*) inflate_Filter_IsEmpty); - dummy_var ^= ((int64_t) (void*) inflate_SortBy_Asc); - dummy_var ^= ((int64_t) (void*) inflate_SortBy_Desc); - dummy_var ^= ((int64_t) (void*) free_WireSyncReturn); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_box_autoadd_filter); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_box_autoadd_mimir_index_settings); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_box_autoadd_terms_matching_strategy); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_box_autoadd_u_32); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_box_filter); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_list_String); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_list_filter); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_list_prim_u_8_strict); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_list_sort_by); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_list_synonyms); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__add_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__delete_all_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__delete_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__ensure_index_initialized); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__ensure_instance_initialized); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__get_all_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__get_document); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__get_settings); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__number_of_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__search_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__set_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__set_settings); dummy_var ^= ((int64_t) (void*) store_dart_post_cobject); - dummy_var ^= ((int64_t) (void*) get_dart_object); - dummy_var ^= ((int64_t) (void*) drop_dart_object); - dummy_var ^= ((int64_t) (void*) new_dart_opaque); return dummy_var; } diff --git a/packages/flutter_mimir/lib/src/ffi/io.dart b/packages/flutter_mimir/lib/src/ffi/io.dart deleted file mode 100644 index 13c832a3..00000000 --- a/packages/flutter_mimir/lib/src/ffi/io.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'dart:ffi'; -import 'dart:io'; - -import 'package:meta/meta.dart'; - -@internal -// ignore: public_member_api_docs -DynamicLibrary createLibraryImpl() { - const base = 'embedded_milli'; - - if (Platform.isIOS || Platform.isMacOS) { - return DynamicLibrary.executable(); - } else if (Platform.isWindows) { - return DynamicLibrary.open('$base.dll'); - } else { - return DynamicLibrary.open('lib$base.so'); - } -} diff --git a/packages/flutter_mimir/lib/src/ffi/stub.dart b/packages/flutter_mimir/lib/src/ffi/stub.dart deleted file mode 100644 index 090f26d8..00000000 --- a/packages/flutter_mimir/lib/src/ffi/stub.dart +++ /dev/null @@ -1,5 +0,0 @@ -import 'package:meta/meta.dart'; - -@internal -// ignore: public_member_api_docs -Object createLibraryImpl() => throw UnimplementedError(); diff --git a/packages/flutter_mimir/lib/src/ffi/web.dart b/packages/flutter_mimir/lib/src/ffi/web.dart deleted file mode 100644 index 6864439c..00000000 --- a/packages/flutter_mimir/lib/src/ffi/web.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:meta/meta.dart'; -import 'package:mimir/mimir.dart'; - -@internal -// ignore: public_member_api_docs -WasmModule createLibraryImpl() { - // Web is currently not supported. If we support web in the future, see: - // https://github.com/fzyzcjy/flutter_rust_bridge/blob/master/frb_example/with_flutter/lib/ffi.web.dart - - throw UnsupportedError( - 'Web support is not provided by mimir (yet). See here:\n' - 'https://github.com/GregoryConrad/mimir/issues/10', - ); -} diff --git a/packages/flutter_mimir/lib/src/flutter_interface.dart b/packages/flutter_mimir/lib/src/flutter_interface.dart index da1e3c94..2fbab8a4 100644 --- a/packages/flutter_mimir/lib/src/flutter_interface.dart +++ b/packages/flutter_mimir/lib/src/flutter_interface.dart @@ -2,11 +2,6 @@ import 'package:flutter_mimir/flutter_mimir.dart'; import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart' as pp; -// ignore: always_use_package_imports -import 'ffi/stub.dart' - if (dart.library.io) 'ffi/io.dart' - if (dart.library.html) 'ffi/web.dart'; - /// Flutter extensions for the MimirInterface to make it easier to work with extension FlutterMimirInterface on MimirInterface { /// Creates the default [MimirInstance] instance for Flutter @@ -32,5 +27,5 @@ extension FlutterMimirInterface on MimirInterface { /// Creates a [MimirInstance] from the given path for Flutter Future getInstanceForPath(String path) => - getInstance(path: path, library: createLibraryImpl()); + getInstance(path: path); } diff --git a/packages/flutter_mimir/macos/Classes/frb.h b/packages/flutter_mimir/macos/Classes/frb.h index 07d0ce06..05c0bc95 100644 --- a/packages/flutter_mimir/macos/Classes/frb.h +++ b/packages/flutter_mimir/macos/Classes/frb.h @@ -1,333 +1,271 @@ #include #include #include -typedef struct _Dart_Handle* Dart_Handle; - -typedef struct DartCObject DartCObject; +// EXTRA BEGIN +typedef struct DartCObject *WireSyncRust2DartDco; +typedef struct WireSyncRust2DartSse { + uint8_t *ptr; + int32_t len; +} WireSyncRust2DartSse; typedef int64_t DartPort; - typedef bool (*DartPostCObjectFnType)(DartPort port_id, void *message); +void store_dart_post_cobject(DartPostCObjectFnType ptr); +// EXTRA END +typedef struct _Dart_Handle* Dart_Handle; -typedef struct wire_uint_8_list { +typedef struct wire_cst_list_prim_u_8_strict { uint8_t *ptr; int32_t len; -} wire_uint_8_list; +} wire_cst_list_prim_u_8_strict; -typedef struct wire_StringList { - struct wire_uint_8_list **ptr; +typedef struct wire_cst_list_String { + struct wire_cst_list_prim_u_8_strict **ptr; int32_t len; -} wire_StringList; +} wire_cst_list_String; -typedef struct wire_SortBy_Asc { - struct wire_uint_8_list *field0; -} wire_SortBy_Asc; +typedef struct wire_cst_SortBy_Asc { + struct wire_cst_list_prim_u_8_strict *field0; +} wire_cst_SortBy_Asc; -typedef struct wire_SortBy_Desc { - struct wire_uint_8_list *field0; -} wire_SortBy_Desc; +typedef struct wire_cst_SortBy_Desc { + struct wire_cst_list_prim_u_8_strict *field0; +} wire_cst_SortBy_Desc; typedef union SortByKind { - struct wire_SortBy_Asc *Asc; - struct wire_SortBy_Desc *Desc; + struct wire_cst_SortBy_Asc Asc; + struct wire_cst_SortBy_Desc Desc; } SortByKind; -typedef struct wire_SortBy { +typedef struct wire_cst_sort_by { int32_t tag; - union SortByKind *kind; -} wire_SortBy; + union SortByKind kind; +} wire_cst_sort_by; -typedef struct wire_list_sort_by { - struct wire_SortBy *ptr; +typedef struct wire_cst_list_sort_by { + struct wire_cst_sort_by *ptr; int32_t len; -} wire_list_sort_by; +} wire_cst_list_sort_by; -typedef struct wire_list_filter { - struct wire_Filter *ptr; +typedef struct wire_cst_list_filter { + struct wire_cst_filter *ptr; int32_t len; -} wire_list_filter; - -typedef struct wire_Filter_Or { - struct wire_list_filter *field0; -} wire_Filter_Or; - -typedef struct wire_Filter_And { - struct wire_list_filter *field0; -} wire_Filter_And; - -typedef struct wire_Filter_Not { - struct wire_Filter *field0; -} wire_Filter_Not; - -typedef struct wire_Filter_Exists { - struct wire_uint_8_list *field; -} wire_Filter_Exists; - -typedef struct wire_Filter_InValues { - struct wire_uint_8_list *field; - struct wire_StringList *values; -} wire_Filter_InValues; - -typedef struct wire_Filter_GreaterThan { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_GreaterThan; - -typedef struct wire_Filter_GreaterThanOrEqual { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_GreaterThanOrEqual; - -typedef struct wire_Filter_Equal { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_Equal; - -typedef struct wire_Filter_NotEqual { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_NotEqual; - -typedef struct wire_Filter_LessThan { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_LessThan; - -typedef struct wire_Filter_LessThanOrEqual { - struct wire_uint_8_list *field; - struct wire_uint_8_list *value; -} wire_Filter_LessThanOrEqual; - -typedef struct wire_Filter_Between { - struct wire_uint_8_list *field; - struct wire_uint_8_list *from; - struct wire_uint_8_list *to; -} wire_Filter_Between; - -typedef struct wire_Filter_IsNull { - struct wire_uint_8_list *field; -} wire_Filter_IsNull; - -typedef struct wire_Filter_IsEmpty { - struct wire_uint_8_list *field; -} wire_Filter_IsEmpty; +} wire_cst_list_filter; + +typedef struct wire_cst_Filter_Or { + struct wire_cst_list_filter *field0; +} wire_cst_Filter_Or; + +typedef struct wire_cst_Filter_And { + struct wire_cst_list_filter *field0; +} wire_cst_Filter_And; + +typedef struct wire_cst_Filter_Not { + struct wire_cst_filter *field0; +} wire_cst_Filter_Not; + +typedef struct wire_cst_Filter_Exists { + struct wire_cst_list_prim_u_8_strict *field; +} wire_cst_Filter_Exists; + +typedef struct wire_cst_Filter_InValues { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_String *values; +} wire_cst_Filter_InValues; + +typedef struct wire_cst_Filter_GreaterThan { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_GreaterThan; + +typedef struct wire_cst_Filter_GreaterThanOrEqual { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_GreaterThanOrEqual; + +typedef struct wire_cst_Filter_Equal { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_Equal; + +typedef struct wire_cst_Filter_NotEqual { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_NotEqual; + +typedef struct wire_cst_Filter_LessThan { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_LessThan; + +typedef struct wire_cst_Filter_LessThanOrEqual { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *value; +} wire_cst_Filter_LessThanOrEqual; + +typedef struct wire_cst_Filter_Between { + struct wire_cst_list_prim_u_8_strict *field; + struct wire_cst_list_prim_u_8_strict *from; + struct wire_cst_list_prim_u_8_strict *to; +} wire_cst_Filter_Between; + +typedef struct wire_cst_Filter_IsNull { + struct wire_cst_list_prim_u_8_strict *field; +} wire_cst_Filter_IsNull; + +typedef struct wire_cst_Filter_IsEmpty { + struct wire_cst_list_prim_u_8_strict *field; +} wire_cst_Filter_IsEmpty; typedef union FilterKind { - struct wire_Filter_Or *Or; - struct wire_Filter_And *And; - struct wire_Filter_Not *Not; - struct wire_Filter_Exists *Exists; - struct wire_Filter_InValues *InValues; - struct wire_Filter_GreaterThan *GreaterThan; - struct wire_Filter_GreaterThanOrEqual *GreaterThanOrEqual; - struct wire_Filter_Equal *Equal; - struct wire_Filter_NotEqual *NotEqual; - struct wire_Filter_LessThan *LessThan; - struct wire_Filter_LessThanOrEqual *LessThanOrEqual; - struct wire_Filter_Between *Between; - struct wire_Filter_IsNull *IsNull; - struct wire_Filter_IsEmpty *IsEmpty; + struct wire_cst_Filter_Or Or; + struct wire_cst_Filter_And And; + struct wire_cst_Filter_Not Not; + struct wire_cst_Filter_Exists Exists; + struct wire_cst_Filter_InValues InValues; + struct wire_cst_Filter_GreaterThan GreaterThan; + struct wire_cst_Filter_GreaterThanOrEqual GreaterThanOrEqual; + struct wire_cst_Filter_Equal Equal; + struct wire_cst_Filter_NotEqual NotEqual; + struct wire_cst_Filter_LessThan LessThan; + struct wire_cst_Filter_LessThanOrEqual LessThanOrEqual; + struct wire_cst_Filter_Between Between; + struct wire_cst_Filter_IsNull IsNull; + struct wire_cst_Filter_IsEmpty IsEmpty; } FilterKind; -typedef struct wire_Filter { +typedef struct wire_cst_filter { int32_t tag; - union FilterKind *kind; -} wire_Filter; + union FilterKind kind; +} wire_cst_filter; -typedef struct wire_Synonyms { - struct wire_uint_8_list *word; - struct wire_StringList *synonyms; -} wire_Synonyms; +typedef struct wire_cst_synonyms { + struct wire_cst_list_prim_u_8_strict *word; + struct wire_cst_list_String *synonyms; +} wire_cst_synonyms; -typedef struct wire_list_synonyms { - struct wire_Synonyms *ptr; +typedef struct wire_cst_list_synonyms { + struct wire_cst_synonyms *ptr; int32_t len; -} wire_list_synonyms; - -typedef struct wire_MimirIndexSettings { - struct wire_uint_8_list *primary_key; - struct wire_StringList *searchable_fields; - struct wire_StringList *filterable_fields; - struct wire_StringList *sortable_fields; - struct wire_StringList *ranking_rules; - struct wire_StringList *stop_words; - struct wire_list_synonyms *synonyms; +} wire_cst_list_synonyms; + +typedef struct wire_cst_mimir_index_settings { + struct wire_cst_list_prim_u_8_strict *primary_key; + struct wire_cst_list_String *searchable_fields; + struct wire_cst_list_String *filterable_fields; + struct wire_cst_list_String *sortable_fields; + struct wire_cst_list_String *ranking_rules; + struct wire_cst_list_String *stop_words; + struct wire_cst_list_synonyms *synonyms; bool typos_enabled; uint8_t min_word_size_for_one_typo; uint8_t min_word_size_for_two_typos; - struct wire_StringList *disallow_typos_on_words; - struct wire_StringList *disallow_typos_on_fields; -} wire_MimirIndexSettings; - -typedef struct DartCObject *WireSyncReturn; - -void store_dart_post_cobject(DartPostCObjectFnType ptr); - -Dart_Handle get_dart_object(uintptr_t ptr); - -void drop_dart_object(uintptr_t ptr); - -uintptr_t new_dart_opaque(Dart_Handle handle); - -intptr_t init_frb_dart_api_dl(void *obj); - -void wire_ensure_instance_initialized(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *tmp_dir); - -void wire_ensure_index_initialized(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name); - -void wire_add_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_StringList *documents); - -void wire_delete_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_StringList *document_ids); - -void wire_delete_all_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name); - -void wire_set_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_StringList *documents); - -void wire_get_document(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_uint_8_list *document_id); - -void wire_get_all_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name); - -void wire_search_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_uint_8_list *query, - uint32_t *limit, - uint32_t *offset, - struct wire_list_sort_by *sort_criteria, - struct wire_Filter *filter, - int32_t *matching_strategy); - -void wire_number_of_documents(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name); - -void wire_get_settings(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name); - -void wire_set_settings(int64_t port_, - struct wire_uint_8_list *instance_dir, - struct wire_uint_8_list *index_name, - struct wire_MimirIndexSettings *settings); - -struct wire_StringList *new_StringList_0(int32_t len); - -struct wire_Filter *new_box_autoadd_filter_0(void); - -struct wire_MimirIndexSettings *new_box_autoadd_mimir_index_settings_0(void); - -int32_t *new_box_autoadd_terms_matching_strategy_0(int32_t value); - -uint32_t *new_box_autoadd_u32_0(uint32_t value); - -struct wire_Filter *new_box_filter_0(void); + struct wire_cst_list_String *disallow_typos_on_words; + struct wire_cst_list_String *disallow_typos_on_fields; +} wire_cst_mimir_index_settings; -struct wire_list_filter *new_list_filter_0(int32_t len); +void frbgen_mimir_wire__crate__api__add_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_list_String *documents); -struct wire_list_sort_by *new_list_sort_by_0(int32_t len); +void frbgen_mimir_wire__crate__api__delete_all_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name); -struct wire_list_synonyms *new_list_synonyms_0(int32_t len); +void frbgen_mimir_wire__crate__api__delete_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_list_String *document_ids); -struct wire_uint_8_list *new_uint_8_list_0(int32_t len); +void frbgen_mimir_wire__crate__api__ensure_index_initialized(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name); -union FilterKind *inflate_Filter_Or(void); +void frbgen_mimir_wire__crate__api__ensure_instance_initialized(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *tmp_dir); -union FilterKind *inflate_Filter_And(void); +void frbgen_mimir_wire__crate__api__get_all_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name); -union FilterKind *inflate_Filter_Not(void); +void frbgen_mimir_wire__crate__api__get_document(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_list_prim_u_8_strict *document_id); -union FilterKind *inflate_Filter_Exists(void); +void frbgen_mimir_wire__crate__api__get_settings(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name); -union FilterKind *inflate_Filter_InValues(void); +void frbgen_mimir_wire__crate__api__number_of_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name); -union FilterKind *inflate_Filter_GreaterThan(void); +void frbgen_mimir_wire__crate__api__search_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_list_prim_u_8_strict *query, + uint32_t *limit, + uint32_t *offset, + struct wire_cst_list_sort_by *sort_criteria, + struct wire_cst_filter *filter, + int32_t *matching_strategy); -union FilterKind *inflate_Filter_GreaterThanOrEqual(void); +void frbgen_mimir_wire__crate__api__set_documents(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_list_String *documents); -union FilterKind *inflate_Filter_Equal(void); +void frbgen_mimir_wire__crate__api__set_settings(int64_t port_, + struct wire_cst_list_prim_u_8_strict *instance_dir, + struct wire_cst_list_prim_u_8_strict *index_name, + struct wire_cst_mimir_index_settings *settings); -union FilterKind *inflate_Filter_NotEqual(void); +struct wire_cst_filter *frbgen_mimir_cst_new_box_autoadd_filter(void); -union FilterKind *inflate_Filter_LessThan(void); +struct wire_cst_mimir_index_settings *frbgen_mimir_cst_new_box_autoadd_mimir_index_settings(void); -union FilterKind *inflate_Filter_LessThanOrEqual(void); +int32_t *frbgen_mimir_cst_new_box_autoadd_terms_matching_strategy(int32_t value); -union FilterKind *inflate_Filter_Between(void); +uint32_t *frbgen_mimir_cst_new_box_autoadd_u_32(uint32_t value); -union FilterKind *inflate_Filter_IsNull(void); +struct wire_cst_filter *frbgen_mimir_cst_new_box_filter(void); -union FilterKind *inflate_Filter_IsEmpty(void); +struct wire_cst_list_String *frbgen_mimir_cst_new_list_String(int32_t len); -union SortByKind *inflate_SortBy_Asc(void); +struct wire_cst_list_filter *frbgen_mimir_cst_new_list_filter(int32_t len); -union SortByKind *inflate_SortBy_Desc(void); +struct wire_cst_list_prim_u_8_strict *frbgen_mimir_cst_new_list_prim_u_8_strict(int32_t len); -void free_WireSyncReturn(WireSyncReturn ptr); +struct wire_cst_list_sort_by *frbgen_mimir_cst_new_list_sort_by(int32_t len); +struct wire_cst_list_synonyms *frbgen_mimir_cst_new_list_synonyms(int32_t len); static int64_t dummy_method_to_enforce_bundling(void) { int64_t dummy_var = 0; - dummy_var ^= ((int64_t) (void*) wire_ensure_instance_initialized); - dummy_var ^= ((int64_t) (void*) wire_ensure_index_initialized); - dummy_var ^= ((int64_t) (void*) wire_add_documents); - dummy_var ^= ((int64_t) (void*) wire_delete_documents); - dummy_var ^= ((int64_t) (void*) wire_delete_all_documents); - dummy_var ^= ((int64_t) (void*) wire_set_documents); - dummy_var ^= ((int64_t) (void*) wire_get_document); - dummy_var ^= ((int64_t) (void*) wire_get_all_documents); - dummy_var ^= ((int64_t) (void*) wire_search_documents); - dummy_var ^= ((int64_t) (void*) wire_number_of_documents); - dummy_var ^= ((int64_t) (void*) wire_get_settings); - dummy_var ^= ((int64_t) (void*) wire_set_settings); - dummy_var ^= ((int64_t) (void*) new_StringList_0); - dummy_var ^= ((int64_t) (void*) new_box_autoadd_filter_0); - dummy_var ^= ((int64_t) (void*) new_box_autoadd_mimir_index_settings_0); - dummy_var ^= ((int64_t) (void*) new_box_autoadd_terms_matching_strategy_0); - dummy_var ^= ((int64_t) (void*) new_box_autoadd_u32_0); - dummy_var ^= ((int64_t) (void*) new_box_filter_0); - dummy_var ^= ((int64_t) (void*) new_list_filter_0); - dummy_var ^= ((int64_t) (void*) new_list_sort_by_0); - dummy_var ^= ((int64_t) (void*) new_list_synonyms_0); - dummy_var ^= ((int64_t) (void*) new_uint_8_list_0); - dummy_var ^= ((int64_t) (void*) inflate_Filter_Or); - dummy_var ^= ((int64_t) (void*) inflate_Filter_And); - dummy_var ^= ((int64_t) (void*) inflate_Filter_Not); - dummy_var ^= ((int64_t) (void*) inflate_Filter_Exists); - dummy_var ^= ((int64_t) (void*) inflate_Filter_InValues); - dummy_var ^= ((int64_t) (void*) inflate_Filter_GreaterThan); - dummy_var ^= ((int64_t) (void*) inflate_Filter_GreaterThanOrEqual); - dummy_var ^= ((int64_t) (void*) inflate_Filter_Equal); - dummy_var ^= ((int64_t) (void*) inflate_Filter_NotEqual); - dummy_var ^= ((int64_t) (void*) inflate_Filter_LessThan); - dummy_var ^= ((int64_t) (void*) inflate_Filter_LessThanOrEqual); - dummy_var ^= ((int64_t) (void*) inflate_Filter_Between); - dummy_var ^= ((int64_t) (void*) inflate_Filter_IsNull); - dummy_var ^= ((int64_t) (void*) inflate_Filter_IsEmpty); - dummy_var ^= ((int64_t) (void*) inflate_SortBy_Asc); - dummy_var ^= ((int64_t) (void*) inflate_SortBy_Desc); - dummy_var ^= ((int64_t) (void*) free_WireSyncReturn); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_box_autoadd_filter); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_box_autoadd_mimir_index_settings); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_box_autoadd_terms_matching_strategy); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_box_autoadd_u_32); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_box_filter); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_list_String); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_list_filter); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_list_prim_u_8_strict); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_list_sort_by); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_cst_new_list_synonyms); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__add_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__delete_all_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__delete_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__ensure_index_initialized); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__ensure_instance_initialized); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__get_all_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__get_document); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__get_settings); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__number_of_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__search_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__set_documents); + dummy_var ^= ((int64_t) (void*) frbgen_mimir_wire__crate__api__set_settings); dummy_var ^= ((int64_t) (void*) store_dart_post_cobject); - dummy_var ^= ((int64_t) (void*) get_dart_object); - dummy_var ^= ((int64_t) (void*) drop_dart_object); - dummy_var ^= ((int64_t) (void*) new_dart_opaque); return dummy_var; } diff --git a/packages/mimir/example/lib/mimir_example.dart b/packages/mimir/example/lib/mimir_example.dart index 1cebd93c..a3d353ef 100644 --- a/packages/mimir/example/lib/mimir_example.dart +++ b/packages/mimir/example/lib/mimir_example.dart @@ -1,5 +1,4 @@ import 'dart:convert'; -import 'dart:ffi'; import 'dart:io'; import 'package:collection/collection.dart'; @@ -10,16 +9,19 @@ final uri = Uri.parse( 'https://raw.githubusercontent.com/prust/wikipedia-movie-data/master/movies.json', ); +// If you are running this example locally, you will need to run +// `cargo build -r` to generate the needed dylib. Future main() async { - final tmpDir = getTmpDir(); + const dylibPath = '../../../target/release/'; + final tmpDir = Directory.systemTemp.createTempSync(); try { - await run(tmpDir.path, getLibrary()); + await run(tmpDir.path, dylibPath); } finally { tmpDir.deleteSync(recursive: true); } } -Future run(String path, DynamicLibrary lib) async { +Future run(String path, String dylibPath) async { // First, we get our instance of Mimir from: // - path, the path to the instance directory (that holds all of our data) // - lib, an instance of DynamicLibrary @@ -27,7 +29,7 @@ Future run(String path, DynamicLibrary lib) async { // If you are going to use Flutter, don't pay too much attention to lib; // lib will be created for you automatically under the hood. // However, in pure Dart, you need to explicity state how to get it. - final instance = await Mimir.getInstance(path: path, library: lib); + final instance = await Mimir.getInstance(path: path, ioDirectory: dylibPath); // Let's create an 'index' of movies that we can search through. // An index can be thought of as a grouping of documents of the same type. @@ -116,23 +118,3 @@ Future run(String path, DynamicLibrary lib) async { 'Query for 2015-2017 Bruce Willis movies should return the expected results', ); } - -DynamicLibrary getLibrary() { - // If you are running this example locally, you will need to run - // `cargo build -r` to generate the needed dylib. - const libName = 'embedded_milli'; - final libPrefix = { - Platform.isWindows: '', - Platform.isMacOS: 'lib', - Platform.isLinux: 'lib', - }[true]!; - final libSuffix = { - Platform.isWindows: 'dll', - Platform.isMacOS: 'dylib', - Platform.isLinux: 'so', - }[true]!; - final dylibPath = '../../../target/release/$libPrefix$libName.$libSuffix'; - return DynamicLibrary.open(dylibPath); -} - -Directory getTmpDir() => Directory.systemTemp.createTempSync(); diff --git a/packages/mimir/lib/mimir.dart b/packages/mimir/lib/mimir.dart index 570bbc79..f6d67dc6 100644 --- a/packages/mimir/lib/mimir.dart +++ b/packages/mimir/lib/mimir.dart @@ -1,6 +1,5 @@ // Rust FFI related -export 'package:flutter_rust_bridge/flutter_rust_bridge.dart' show WasmModule; -export 'src/bridge_generated.dart' +export 'src/api.dart' show Filter, MimirIndexSettings, SortBy, Synonyms, TermsMatchingStrategy; // Dart API related diff --git a/packages/mimir/lib/src/api.dart b/packages/mimir/lib/src/api.dart new file mode 100644 index 00000000..35105cdb --- /dev/null +++ b/packages/mimir/lib/src/api.dart @@ -0,0 +1,252 @@ +// This file is automatically generated, so please do not edit it. +// Generated by `flutter_rust_bridge`@ 2.1.0. + +// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import + +import 'frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; +import 'package:freezed_annotation/freezed_annotation.dart' hide protected; +part 'api.freezed.dart'; + +// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `clone`, `clone`, `eq`, `eq`, `fmt`, `fmt` +// These functions are ignored (category: IgnoreBecauseExplicitAttribute): `to_document`, `to_string` +// These functions are ignored (category: IgnoreBecauseNotAllowedOwner): `to_document`, `to_string` + +/// Ensures an instance of milli (represented by just a directory) is initialized +/// +/// `tmp_dir`, if specified, is the directory used to store all temporary files +/// (see https://github.com/GregoryConrad/mimir/issues/170) +Future ensureInstanceInitialized( + {required String instanceDir, String? tmpDir}) => + RustLib.instance.api.crateApiEnsureInstanceInitialized( + instanceDir: instanceDir, tmpDir: tmpDir); + +/// Ensures a milli index is initialized +Future ensureIndexInitialized( + {required String instanceDir, required String indexName}) => + RustLib.instance.api.crateApiEnsureIndexInitialized( + instanceDir: instanceDir, indexName: indexName); + +/// Adds the given list of documents to the specified milli index +/// +/// Replaces documents that already exist in the index based on document ids. +Future addDocuments( + {required String instanceDir, + required String indexName, + required List documents}) => + RustLib.instance.api.crateApiAddDocuments( + instanceDir: instanceDir, indexName: indexName, documents: documents); + +/// Deletes the documents with the given ids from the milli index +Future deleteDocuments( + {required String instanceDir, + required String indexName, + required List documentIds}) => + RustLib.instance.api.crateApiDeleteDocuments( + instanceDir: instanceDir, + indexName: indexName, + documentIds: documentIds); + +/// Deletes all the documents from the milli index +Future deleteAllDocuments( + {required String instanceDir, required String indexName}) => + RustLib.instance.api.crateApiDeleteAllDocuments( + instanceDir: instanceDir, indexName: indexName); + +/// Replaces all documents with the given documents +Future setDocuments( + {required String instanceDir, + required String indexName, + required List documents}) => + RustLib.instance.api.crateApiSetDocuments( + instanceDir: instanceDir, indexName: indexName, documents: documents); + +/// Returns the document with the specified id from the index, if one exists +Future getDocument( + {required String instanceDir, + required String indexName, + required String documentId}) => + RustLib.instance.api.crateApiGetDocument( + instanceDir: instanceDir, indexName: indexName, documentId: documentId); + +/// Returns all documents stored in the index. +Future> getAllDocuments( + {required String instanceDir, required String indexName}) => + RustLib.instance.api.crateApiGetAllDocuments( + instanceDir: instanceDir, indexName: indexName); + +/// Performs a search against the index and returns the documents found +Future> searchDocuments( + {required String instanceDir, + required String indexName, + String? query, + int? limit, + int? offset, + List? sortCriteria, + Filter? filter, + TermsMatchingStrategy? matchingStrategy}) => + RustLib.instance.api.crateApiSearchDocuments( + instanceDir: instanceDir, + indexName: indexName, + query: query, + limit: limit, + offset: offset, + sortCriteria: sortCriteria, + filter: filter, + matchingStrategy: matchingStrategy); + +Future numberOfDocuments( + {required String instanceDir, required String indexName}) => + RustLib.instance.api.crateApiNumberOfDocuments( + instanceDir: instanceDir, indexName: indexName); + +/// Gets the settings of the specified index +Future getSettings( + {required String instanceDir, required String indexName}) => + RustLib.instance.api + .crateApiGetSettings(instanceDir: instanceDir, indexName: indexName); + +/// Sets the settings of the specified index +Future setSettings( + {required String instanceDir, + required String indexName, + required MimirIndexSettings settings}) => + RustLib.instance.api.crateApiSetSettings( + instanceDir: instanceDir, indexName: indexName, settings: settings); + +@freezed +sealed class Filter with _$Filter { + const Filter._(); + + /// Creates an "or" [Filter] of the given sub-filters. + const factory Filter.or( + List field0, + ) = Filter_Or; + + /// Creates an "and" [Filter] of the given sub-filters. + const factory Filter.and( + List field0, + ) = Filter_And; + + /// Creates a "not" [Filter] of the given sub-filter. + const factory Filter.not( + Filter field0, + ) = Filter_Not; + + /// Creates a [Filter] that specifies the given field exists. + const factory Filter.exists({ + required String field, + }) = Filter_Exists; + + /// Creates a [Filter] for the "IN" operator. + const factory Filter.inValues({ + required String field, + required List values, + }) = Filter_InValues; + + /// Creates a [Filter] for the ">" operator. + const factory Filter.greaterThan({ + required String field, + required String value, + }) = Filter_GreaterThan; + + /// Creates a [Filter] for the ">=" operator. + const factory Filter.greaterThanOrEqual({ + required String field, + required String value, + }) = Filter_GreaterThanOrEqual; + + /// Creates a [Filter] for the "==" operator. + const factory Filter.equal({ + required String field, + required String value, + }) = Filter_Equal; + + /// Creates a [Filter] for the "!=" operator. + const factory Filter.notEqual({ + required String field, + required String value, + }) = Filter_NotEqual; + + /// Creates a [Filter] for the "<" operator. + const factory Filter.lessThan({ + required String field, + required String value, + }) = Filter_LessThan; + + /// Creates a [Filter] for the "<=" operator. + const factory Filter.lessThanOrEqual({ + required String field, + required String value, + }) = Filter_LessThanOrEqual; + + /// Creates a [Filter] for the "BETWEEN" operator. + const factory Filter.between({ + required String field, + required String from, + required String to, + }) = Filter_Between; + + /// Creates a [Filter] for the "IS NULL" operator. + const factory Filter.isNull({ + required String field, + }) = Filter_IsNull; + + /// Creates a [Filter] for the "IS EMPTY" operator. + const factory Filter.isEmpty({ + required String field, + }) = Filter_IsEmpty; +} + +/// The settings of a mimir index +@freezed +class MimirIndexSettings with _$MimirIndexSettings { + const factory MimirIndexSettings({ + String? primaryKey, + List? searchableFields, + required List filterableFields, + required List sortableFields, + required List rankingRules, + required List stopWords, + required List synonyms, + required bool typosEnabled, + required int minWordSizeForOneTypo, + required int minWordSizeForTwoTypos, + required List disallowTyposOnWords, + required List disallowTyposOnFields, + }) = _MimirIndexSettings; +} + +@freezed +sealed class SortBy with _$SortBy { + const SortBy._(); + + /// Sort by the given field in ascending order + const factory SortBy.asc( + String field0, + ) = SortBy_Asc; + + /// Sort by the given field in descending order + const factory SortBy.desc( + String field0, + ) = SortBy_Desc; +} + +/// Represents the synonyms of a given word +@freezed +class Synonyms with _$Synonyms { + const factory Synonyms({ + required String word, + required List synonyms, + }) = _Synonyms; +} + +/// See https://docs.meilisearch.com/reference/api/search.html#matching-strategy +enum TermsMatchingStrategy { + /// Remove last word first + last, + + /// All words are mandatory + all, + ; +} diff --git a/packages/mimir/lib/src/bridge_generated.freezed.dart b/packages/mimir/lib/src/api.freezed.dart similarity index 92% rename from packages/mimir/lib/src/bridge_generated.freezed.dart rename to packages/mimir/lib/src/api.freezed.dart index 630118ca..238234c1 100644 --- a/packages/mimir/lib/src/bridge_generated.freezed.dart +++ b/packages/mimir/lib/src/api.freezed.dart @@ -3,7 +3,7 @@ // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark -part of 'bridge_generated.dart'; +part of 'api.dart'; // ************************************************************************** // FreezedGenerator @@ -12,7 +12,7 @@ part of 'bridge_generated.dart'; T _$identity(T value) => value; final _privateConstructorUsedError = UnsupportedError( - 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); /// @nodoc mixin _$Filter { @@ -144,6 +144,9 @@ class _$FilterCopyWithImpl<$Res, $Val extends Filter> final $Val _value; // ignore: unused_field final $Res Function($Val) _then; + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. } /// @nodoc @@ -163,6 +166,8 @@ class __$$Filter_OrImplCopyWithImpl<$Res> _$Filter_OrImpl _value, $Res Function(_$Filter_OrImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -179,8 +184,10 @@ class __$$Filter_OrImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_OrImpl implements Filter_Or { - const _$Filter_OrImpl(final List field0) : _field0 = field0; +class _$Filter_OrImpl extends Filter_Or { + const _$Filter_OrImpl(final List field0) + : _field0 = field0, + super._(); final List _field0; @override @@ -207,7 +214,9 @@ class _$Filter_OrImpl implements Filter_Or { int get hashCode => Object.hash(runtimeType, const DeepCollectionEquality().hash(_field0)); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_OrImplCopyWith<_$Filter_OrImpl> get copyWith => @@ -349,11 +358,15 @@ class _$Filter_OrImpl implements Filter_Or { } } -abstract class Filter_Or implements Filter { +abstract class Filter_Or extends Filter { const factory Filter_Or(final List field0) = _$Filter_OrImpl; + const Filter_Or._() : super._(); List get field0; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_OrImplCopyWith<_$Filter_OrImpl> get copyWith => throw _privateConstructorUsedError; } @@ -375,6 +388,8 @@ class __$$Filter_AndImplCopyWithImpl<$Res> _$Filter_AndImpl _value, $Res Function(_$Filter_AndImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -391,8 +406,10 @@ class __$$Filter_AndImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_AndImpl implements Filter_And { - const _$Filter_AndImpl(final List field0) : _field0 = field0; +class _$Filter_AndImpl extends Filter_And { + const _$Filter_AndImpl(final List field0) + : _field0 = field0, + super._(); final List _field0; @override @@ -419,7 +436,9 @@ class _$Filter_AndImpl implements Filter_And { int get hashCode => Object.hash(runtimeType, const DeepCollectionEquality().hash(_field0)); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_AndImplCopyWith<_$Filter_AndImpl> get copyWith => @@ -561,11 +580,15 @@ class _$Filter_AndImpl implements Filter_And { } } -abstract class Filter_And implements Filter { +abstract class Filter_And extends Filter { const factory Filter_And(final List field0) = _$Filter_AndImpl; + const Filter_And._() : super._(); List get field0; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_AndImplCopyWith<_$Filter_AndImpl> get copyWith => throw _privateConstructorUsedError; } @@ -589,6 +612,8 @@ class __$$Filter_NotImplCopyWithImpl<$Res> _$Filter_NotImpl _value, $Res Function(_$Filter_NotImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -602,6 +627,8 @@ class __$$Filter_NotImplCopyWithImpl<$Res> )); } + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @override @pragma('vm:prefer-inline') $FilterCopyWith<$Res> get field0 { @@ -613,8 +640,8 @@ class __$$Filter_NotImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_NotImpl implements Filter_Not { - const _$Filter_NotImpl(this.field0); +class _$Filter_NotImpl extends Filter_Not { + const _$Filter_NotImpl(this.field0) : super._(); @override final Filter field0; @@ -635,7 +662,9 @@ class _$Filter_NotImpl implements Filter_Not { @override int get hashCode => Object.hash(runtimeType, field0); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_NotImplCopyWith<_$Filter_NotImpl> get copyWith => @@ -777,11 +806,15 @@ class _$Filter_NotImpl implements Filter_Not { } } -abstract class Filter_Not implements Filter { +abstract class Filter_Not extends Filter { const factory Filter_Not(final Filter field0) = _$Filter_NotImpl; + const Filter_Not._() : super._(); Filter get field0; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_NotImplCopyWith<_$Filter_NotImpl> get copyWith => throw _privateConstructorUsedError; } @@ -803,6 +836,8 @@ class __$$Filter_ExistsImplCopyWithImpl<$Res> _$Filter_ExistsImpl _value, $Res Function(_$Filter_ExistsImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -819,8 +854,8 @@ class __$$Filter_ExistsImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_ExistsImpl implements Filter_Exists { - const _$Filter_ExistsImpl({required this.field}); +class _$Filter_ExistsImpl extends Filter_Exists { + const _$Filter_ExistsImpl({required this.field}) : super._(); @override final String field; @@ -841,7 +876,9 @@ class _$Filter_ExistsImpl implements Filter_Exists { @override int get hashCode => Object.hash(runtimeType, field); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_ExistsImplCopyWith<_$Filter_ExistsImpl> get copyWith => @@ -983,12 +1020,16 @@ class _$Filter_ExistsImpl implements Filter_Exists { } } -abstract class Filter_Exists implements Filter { +abstract class Filter_Exists extends Filter { const factory Filter_Exists({required final String field}) = _$Filter_ExistsImpl; + const Filter_Exists._() : super._(); String get field; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_ExistsImplCopyWith<_$Filter_ExistsImpl> get copyWith => throw _privateConstructorUsedError; } @@ -1010,6 +1051,8 @@ class __$$Filter_InValuesImplCopyWithImpl<$Res> _$Filter_InValuesImpl _value, $Res Function(_$Filter_InValuesImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1031,10 +1074,11 @@ class __$$Filter_InValuesImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_InValuesImpl implements Filter_InValues { +class _$Filter_InValuesImpl extends Filter_InValues { const _$Filter_InValuesImpl( {required this.field, required final List values}) - : _values = values; + : _values = values, + super._(); @override final String field; @@ -1064,7 +1108,9 @@ class _$Filter_InValuesImpl implements Filter_InValues { int get hashCode => Object.hash( runtimeType, field, const DeepCollectionEquality().hash(_values)); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_InValuesImplCopyWith<_$Filter_InValuesImpl> get copyWith => @@ -1207,14 +1253,18 @@ class _$Filter_InValuesImpl implements Filter_InValues { } } -abstract class Filter_InValues implements Filter { +abstract class Filter_InValues extends Filter { const factory Filter_InValues( {required final String field, required final List values}) = _$Filter_InValuesImpl; + const Filter_InValues._() : super._(); String get field; List get values; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_InValuesImplCopyWith<_$Filter_InValuesImpl> get copyWith => throw _privateConstructorUsedError; } @@ -1236,6 +1286,8 @@ class __$$Filter_GreaterThanImplCopyWithImpl<$Res> $Res Function(_$Filter_GreaterThanImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1257,8 +1309,9 @@ class __$$Filter_GreaterThanImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_GreaterThanImpl implements Filter_GreaterThan { - const _$Filter_GreaterThanImpl({required this.field, required this.value}); +class _$Filter_GreaterThanImpl extends Filter_GreaterThan { + const _$Filter_GreaterThanImpl({required this.field, required this.value}) + : super._(); @override final String field; @@ -1282,7 +1335,9 @@ class _$Filter_GreaterThanImpl implements Filter_GreaterThan { @override int get hashCode => Object.hash(runtimeType, field, value); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_GreaterThanImplCopyWith<_$Filter_GreaterThanImpl> get copyWith => @@ -1425,14 +1480,18 @@ class _$Filter_GreaterThanImpl implements Filter_GreaterThan { } } -abstract class Filter_GreaterThan implements Filter { +abstract class Filter_GreaterThan extends Filter { const factory Filter_GreaterThan( {required final String field, required final String value}) = _$Filter_GreaterThanImpl; + const Filter_GreaterThan._() : super._(); String get field; String get value; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_GreaterThanImplCopyWith<_$Filter_GreaterThanImpl> get copyWith => throw _privateConstructorUsedError; } @@ -1456,6 +1515,8 @@ class __$$Filter_GreaterThanOrEqualImplCopyWithImpl<$Res> $Res Function(_$Filter_GreaterThanOrEqualImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1477,9 +1538,10 @@ class __$$Filter_GreaterThanOrEqualImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_GreaterThanOrEqualImpl implements Filter_GreaterThanOrEqual { +class _$Filter_GreaterThanOrEqualImpl extends Filter_GreaterThanOrEqual { const _$Filter_GreaterThanOrEqualImpl( - {required this.field, required this.value}); + {required this.field, required this.value}) + : super._(); @override final String field; @@ -1503,7 +1565,9 @@ class _$Filter_GreaterThanOrEqualImpl implements Filter_GreaterThanOrEqual { @override int get hashCode => Object.hash(runtimeType, field, value); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_GreaterThanOrEqualImplCopyWith<_$Filter_GreaterThanOrEqualImpl> @@ -1646,14 +1710,18 @@ class _$Filter_GreaterThanOrEqualImpl implements Filter_GreaterThanOrEqual { } } -abstract class Filter_GreaterThanOrEqual implements Filter { +abstract class Filter_GreaterThanOrEqual extends Filter { const factory Filter_GreaterThanOrEqual( {required final String field, required final String value}) = _$Filter_GreaterThanOrEqualImpl; + const Filter_GreaterThanOrEqual._() : super._(); String get field; String get value; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_GreaterThanOrEqualImplCopyWith<_$Filter_GreaterThanOrEqualImpl> get copyWith => throw _privateConstructorUsedError; } @@ -1675,6 +1743,8 @@ class __$$Filter_EqualImplCopyWithImpl<$Res> _$Filter_EqualImpl _value, $Res Function(_$Filter_EqualImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1696,8 +1766,9 @@ class __$$Filter_EqualImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_EqualImpl implements Filter_Equal { - const _$Filter_EqualImpl({required this.field, required this.value}); +class _$Filter_EqualImpl extends Filter_Equal { + const _$Filter_EqualImpl({required this.field, required this.value}) + : super._(); @override final String field; @@ -1721,7 +1792,9 @@ class _$Filter_EqualImpl implements Filter_Equal { @override int get hashCode => Object.hash(runtimeType, field, value); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_EqualImplCopyWith<_$Filter_EqualImpl> get copyWith => @@ -1863,14 +1936,18 @@ class _$Filter_EqualImpl implements Filter_Equal { } } -abstract class Filter_Equal implements Filter { +abstract class Filter_Equal extends Filter { const factory Filter_Equal( {required final String field, required final String value}) = _$Filter_EqualImpl; + const Filter_Equal._() : super._(); String get field; String get value; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_EqualImplCopyWith<_$Filter_EqualImpl> get copyWith => throw _privateConstructorUsedError; } @@ -1892,6 +1969,8 @@ class __$$Filter_NotEqualImplCopyWithImpl<$Res> _$Filter_NotEqualImpl _value, $Res Function(_$Filter_NotEqualImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -1913,8 +1992,9 @@ class __$$Filter_NotEqualImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_NotEqualImpl implements Filter_NotEqual { - const _$Filter_NotEqualImpl({required this.field, required this.value}); +class _$Filter_NotEqualImpl extends Filter_NotEqual { + const _$Filter_NotEqualImpl({required this.field, required this.value}) + : super._(); @override final String field; @@ -1938,7 +2018,9 @@ class _$Filter_NotEqualImpl implements Filter_NotEqual { @override int get hashCode => Object.hash(runtimeType, field, value); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_NotEqualImplCopyWith<_$Filter_NotEqualImpl> get copyWith => @@ -2081,14 +2163,18 @@ class _$Filter_NotEqualImpl implements Filter_NotEqual { } } -abstract class Filter_NotEqual implements Filter { +abstract class Filter_NotEqual extends Filter { const factory Filter_NotEqual( {required final String field, required final String value}) = _$Filter_NotEqualImpl; + const Filter_NotEqual._() : super._(); String get field; String get value; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_NotEqualImplCopyWith<_$Filter_NotEqualImpl> get copyWith => throw _privateConstructorUsedError; } @@ -2110,6 +2196,8 @@ class __$$Filter_LessThanImplCopyWithImpl<$Res> _$Filter_LessThanImpl _value, $Res Function(_$Filter_LessThanImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -2131,8 +2219,9 @@ class __$$Filter_LessThanImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_LessThanImpl implements Filter_LessThan { - const _$Filter_LessThanImpl({required this.field, required this.value}); +class _$Filter_LessThanImpl extends Filter_LessThan { + const _$Filter_LessThanImpl({required this.field, required this.value}) + : super._(); @override final String field; @@ -2156,7 +2245,9 @@ class _$Filter_LessThanImpl implements Filter_LessThan { @override int get hashCode => Object.hash(runtimeType, field, value); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_LessThanImplCopyWith<_$Filter_LessThanImpl> get copyWith => @@ -2299,14 +2390,18 @@ class _$Filter_LessThanImpl implements Filter_LessThan { } } -abstract class Filter_LessThan implements Filter { +abstract class Filter_LessThan extends Filter { const factory Filter_LessThan( {required final String field, required final String value}) = _$Filter_LessThanImpl; + const Filter_LessThan._() : super._(); String get field; String get value; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_LessThanImplCopyWith<_$Filter_LessThanImpl> get copyWith => throw _privateConstructorUsedError; } @@ -2330,6 +2425,8 @@ class __$$Filter_LessThanOrEqualImplCopyWithImpl<$Res> $Res Function(_$Filter_LessThanOrEqualImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -2351,9 +2448,9 @@ class __$$Filter_LessThanOrEqualImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_LessThanOrEqualImpl implements Filter_LessThanOrEqual { - const _$Filter_LessThanOrEqualImpl( - {required this.field, required this.value}); +class _$Filter_LessThanOrEqualImpl extends Filter_LessThanOrEqual { + const _$Filter_LessThanOrEqualImpl({required this.field, required this.value}) + : super._(); @override final String field; @@ -2377,7 +2474,9 @@ class _$Filter_LessThanOrEqualImpl implements Filter_LessThanOrEqual { @override int get hashCode => Object.hash(runtimeType, field, value); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_LessThanOrEqualImplCopyWith<_$Filter_LessThanOrEqualImpl> @@ -2520,14 +2619,18 @@ class _$Filter_LessThanOrEqualImpl implements Filter_LessThanOrEqual { } } -abstract class Filter_LessThanOrEqual implements Filter { +abstract class Filter_LessThanOrEqual extends Filter { const factory Filter_LessThanOrEqual( {required final String field, required final String value}) = _$Filter_LessThanOrEqualImpl; + const Filter_LessThanOrEqual._() : super._(); String get field; String get value; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_LessThanOrEqualImplCopyWith<_$Filter_LessThanOrEqualImpl> get copyWith => throw _privateConstructorUsedError; } @@ -2549,6 +2652,8 @@ class __$$Filter_BetweenImplCopyWithImpl<$Res> _$Filter_BetweenImpl _value, $Res Function(_$Filter_BetweenImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -2575,9 +2680,10 @@ class __$$Filter_BetweenImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_BetweenImpl implements Filter_Between { +class _$Filter_BetweenImpl extends Filter_Between { const _$Filter_BetweenImpl( - {required this.field, required this.from, required this.to}); + {required this.field, required this.from, required this.to}) + : super._(); @override final String field; @@ -2604,7 +2710,9 @@ class _$Filter_BetweenImpl implements Filter_Between { @override int get hashCode => Object.hash(runtimeType, field, from, to); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_BetweenImplCopyWith<_$Filter_BetweenImpl> get copyWith => @@ -2747,16 +2855,20 @@ class _$Filter_BetweenImpl implements Filter_Between { } } -abstract class Filter_Between implements Filter { +abstract class Filter_Between extends Filter { const factory Filter_Between( {required final String field, required final String from, required final String to}) = _$Filter_BetweenImpl; + const Filter_Between._() : super._(); String get field; String get from; String get to; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_BetweenImplCopyWith<_$Filter_BetweenImpl> get copyWith => throw _privateConstructorUsedError; } @@ -2778,6 +2890,8 @@ class __$$Filter_IsNullImplCopyWithImpl<$Res> _$Filter_IsNullImpl _value, $Res Function(_$Filter_IsNullImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -2794,8 +2908,8 @@ class __$$Filter_IsNullImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_IsNullImpl implements Filter_IsNull { - const _$Filter_IsNullImpl({required this.field}); +class _$Filter_IsNullImpl extends Filter_IsNull { + const _$Filter_IsNullImpl({required this.field}) : super._(); @override final String field; @@ -2816,7 +2930,9 @@ class _$Filter_IsNullImpl implements Filter_IsNull { @override int get hashCode => Object.hash(runtimeType, field); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_IsNullImplCopyWith<_$Filter_IsNullImpl> get copyWith => @@ -2958,12 +3074,16 @@ class _$Filter_IsNullImpl implements Filter_IsNull { } } -abstract class Filter_IsNull implements Filter { +abstract class Filter_IsNull extends Filter { const factory Filter_IsNull({required final String field}) = _$Filter_IsNullImpl; + const Filter_IsNull._() : super._(); String get field; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_IsNullImplCopyWith<_$Filter_IsNullImpl> get copyWith => throw _privateConstructorUsedError; } @@ -2985,6 +3105,8 @@ class __$$Filter_IsEmptyImplCopyWithImpl<$Res> _$Filter_IsEmptyImpl _value, $Res Function(_$Filter_IsEmptyImpl) _then) : super(_value, _then); + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -3001,8 +3123,8 @@ class __$$Filter_IsEmptyImplCopyWithImpl<$Res> /// @nodoc -class _$Filter_IsEmptyImpl implements Filter_IsEmpty { - const _$Filter_IsEmptyImpl({required this.field}); +class _$Filter_IsEmptyImpl extends Filter_IsEmpty { + const _$Filter_IsEmptyImpl({required this.field}) : super._(); @override final String field; @@ -3023,7 +3145,9 @@ class _$Filter_IsEmptyImpl implements Filter_IsEmpty { @override int get hashCode => Object.hash(runtimeType, field); - @JsonKey(ignore: true) + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$Filter_IsEmptyImplCopyWith<_$Filter_IsEmptyImpl> get copyWith => @@ -3166,12 +3290,16 @@ class _$Filter_IsEmptyImpl implements Filter_IsEmpty { } } -abstract class Filter_IsEmpty implements Filter { +abstract class Filter_IsEmpty extends Filter { const factory Filter_IsEmpty({required final String field}) = _$Filter_IsEmptyImpl; + const Filter_IsEmpty._() : super._(); String get field; - @JsonKey(ignore: true) + + /// Create a copy of Filter + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) _$$Filter_IsEmptyImplCopyWith<_$Filter_IsEmptyImpl> get copyWith => throw _privateConstructorUsedError; } @@ -3191,7 +3319,9 @@ mixin _$MimirIndexSettings { List get disallowTyposOnWords => throw _privateConstructorUsedError; List get disallowTyposOnFields => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + /// Create a copy of MimirIndexSettings + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $MimirIndexSettingsCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -3227,6 +3357,8 @@ class _$MimirIndexSettingsCopyWithImpl<$Res, $Val extends MimirIndexSettings> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of MimirIndexSettings + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -3327,6 +3459,8 @@ class __$$MimirIndexSettingsImplCopyWithImpl<$Res> $Res Function(_$MimirIndexSettingsImpl) _then) : super(_value, _then); + /// Create a copy of MimirIndexSettings + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -3550,7 +3684,9 @@ class _$MimirIndexSettingsImpl implements _MimirIndexSettings { const DeepCollectionEquality().hash(_disallowTyposOnWords), const DeepCollectionEquality().hash(_disallowTyposOnFields)); - @JsonKey(ignore: true) + /// Create a copy of MimirIndexSettings + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$MimirIndexSettingsImplCopyWith<_$MimirIndexSettingsImpl> get copyWith => @@ -3598,8 +3734,11 @@ abstract class _MimirIndexSettings implements MimirIndexSettings { List get disallowTyposOnWords; @override List get disallowTyposOnFields; + + /// Create a copy of MimirIndexSettings + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$MimirIndexSettingsImplCopyWith<_$MimirIndexSettingsImpl> get copyWith => throw _privateConstructorUsedError; } @@ -3646,7 +3785,9 @@ mixin _$SortBy { }) => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + /// Create a copy of SortBy + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SortByCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -3668,6 +3809,8 @@ class _$SortByCopyWithImpl<$Res, $Val extends SortBy> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of SortBy + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -3701,6 +3844,8 @@ class __$$SortBy_AscImplCopyWithImpl<$Res> _$SortBy_AscImpl _value, $Res Function(_$SortBy_AscImpl) _then) : super(_value, _then); + /// Create a copy of SortBy + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -3717,8 +3862,8 @@ class __$$SortBy_AscImplCopyWithImpl<$Res> /// @nodoc -class _$SortBy_AscImpl implements SortBy_Asc { - const _$SortBy_AscImpl(this.field0); +class _$SortBy_AscImpl extends SortBy_Asc { + const _$SortBy_AscImpl(this.field0) : super._(); @override final String field0; @@ -3739,7 +3884,9 @@ class _$SortBy_AscImpl implements SortBy_Asc { @override int get hashCode => Object.hash(runtimeType, field0); - @JsonKey(ignore: true) + /// Create a copy of SortBy + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SortBy_AscImplCopyWith<_$SortBy_AscImpl> get copyWith => @@ -3808,13 +3955,17 @@ class _$SortBy_AscImpl implements SortBy_Asc { } } -abstract class SortBy_Asc implements SortBy { +abstract class SortBy_Asc extends SortBy { const factory SortBy_Asc(final String field0) = _$SortBy_AscImpl; + const SortBy_Asc._() : super._(); @override String get field0; + + /// Create a copy of SortBy + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SortBy_AscImplCopyWith<_$SortBy_AscImpl> get copyWith => throw _privateConstructorUsedError; } @@ -3838,6 +3989,8 @@ class __$$SortBy_DescImplCopyWithImpl<$Res> _$SortBy_DescImpl _value, $Res Function(_$SortBy_DescImpl) _then) : super(_value, _then); + /// Create a copy of SortBy + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -3854,8 +4007,8 @@ class __$$SortBy_DescImplCopyWithImpl<$Res> /// @nodoc -class _$SortBy_DescImpl implements SortBy_Desc { - const _$SortBy_DescImpl(this.field0); +class _$SortBy_DescImpl extends SortBy_Desc { + const _$SortBy_DescImpl(this.field0) : super._(); @override final String field0; @@ -3876,7 +4029,9 @@ class _$SortBy_DescImpl implements SortBy_Desc { @override int get hashCode => Object.hash(runtimeType, field0); - @JsonKey(ignore: true) + /// Create a copy of SortBy + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SortBy_DescImplCopyWith<_$SortBy_DescImpl> get copyWith => @@ -3945,13 +4100,17 @@ class _$SortBy_DescImpl implements SortBy_Desc { } } -abstract class SortBy_Desc implements SortBy { +abstract class SortBy_Desc extends SortBy { const factory SortBy_Desc(final String field0) = _$SortBy_DescImpl; + const SortBy_Desc._() : super._(); @override String get field0; + + /// Create a copy of SortBy + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SortBy_DescImplCopyWith<_$SortBy_DescImpl> get copyWith => throw _privateConstructorUsedError; } @@ -3961,7 +4120,9 @@ mixin _$Synonyms { String get word => throw _privateConstructorUsedError; List get synonyms => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + /// Create a copy of Synonyms + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $SynonymsCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -3984,6 +4145,8 @@ class _$SynonymsCopyWithImpl<$Res, $Val extends Synonyms> // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of Synonyms + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -4022,6 +4185,8 @@ class __$$SynonymsImplCopyWithImpl<$Res> _$SynonymsImpl _value, $Res Function(_$SynonymsImpl) _then) : super(_value, _then); + /// Create a copy of Synonyms + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -4076,7 +4241,9 @@ class _$SynonymsImpl implements _Synonyms { int get hashCode => Object.hash( runtimeType, word, const DeepCollectionEquality().hash(_synonyms)); - @JsonKey(ignore: true) + /// Create a copy of Synonyms + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$SynonymsImplCopyWith<_$SynonymsImpl> get copyWith => @@ -4092,8 +4259,11 @@ abstract class _Synonyms implements Synonyms { String get word; @override List get synonyms; + + /// Create a copy of Synonyms + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$SynonymsImplCopyWith<_$SynonymsImpl> get copyWith => throw _privateConstructorUsedError; } diff --git a/packages/mimir/lib/src/bridge_generated.dart b/packages/mimir/lib/src/bridge_generated.dart deleted file mode 100644 index 812941b5..00000000 --- a/packages/mimir/lib/src/bridge_generated.dart +++ /dev/null @@ -1,675 +0,0 @@ -// AUTO GENERATED FILE, DO NOT EDIT. -// Generated by `flutter_rust_bridge`@ 1.82.6. -// ignore_for_file: non_constant_identifier_names, unused_element, duplicate_ignore, directives_ordering, curly_braces_in_flow_control_structures, unnecessary_lambdas, slash_for_doc_comments, prefer_const_literals_to_create_immutables, implicit_dynamic_list_literal, duplicate_import, unused_import, unnecessary_import, prefer_single_quotes, prefer_const_constructors, use_super_parameters, always_use_package_imports, annotate_overrides, invalid_use_of_protected_member, constant_identifier_names, invalid_use_of_internal_member, prefer_is_empty, unnecessary_const - -import 'dart:convert'; -import 'dart:async'; -import 'package:meta/meta.dart'; -import 'package:flutter_rust_bridge/flutter_rust_bridge.dart'; -import 'package:uuid/uuid.dart'; -import 'package:freezed_annotation/freezed_annotation.dart' hide protected; - -import 'dart:convert'; -import 'dart:async'; -import 'package:meta/meta.dart'; -import 'package:flutter_rust_bridge/flutter_rust_bridge.dart'; -import 'package:uuid/uuid.dart'; -import 'bridge_generated.io.dart' - if (dart.library.html) 'bridge_generated.web.dart'; - -part 'bridge_generated.freezed.dart'; - -abstract class EmbeddedMilli { - /// Ensures an instance of milli (represented by just a directory) is initialized - /// - /// `tmp_dir`, if specified, is the directory used to store all temporary files - /// (see https://github.com/GregoryConrad/mimir/issues/170) - Future ensureInstanceInitialized( - {required String instanceDir, String? tmpDir, dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kEnsureInstanceInitializedConstMeta; - - /// Ensures a milli index is initialized - Future ensureIndexInitialized( - {required String instanceDir, required String indexName, dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kEnsureIndexInitializedConstMeta; - - /// Adds the given list of documents to the specified milli index - /// - /// Replaces documents that already exist in the index based on document ids. - Future addDocuments( - {required String instanceDir, - required String indexName, - required List documents, - dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kAddDocumentsConstMeta; - - /// Deletes the documents with the given ids from the milli index - Future deleteDocuments( - {required String instanceDir, - required String indexName, - required List documentIds, - dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kDeleteDocumentsConstMeta; - - /// Deletes all the documents from the milli index - Future deleteAllDocuments( - {required String instanceDir, required String indexName, dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kDeleteAllDocumentsConstMeta; - - /// Replaces all documents with the given documents - Future setDocuments( - {required String instanceDir, - required String indexName, - required List documents, - dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kSetDocumentsConstMeta; - - /// Returns the document with the specified id from the index, if one exists - Future getDocument( - {required String instanceDir, - required String indexName, - required String documentId, - dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kGetDocumentConstMeta; - - /// Returns all documents stored in the index. - Future> getAllDocuments( - {required String instanceDir, required String indexName, dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kGetAllDocumentsConstMeta; - - /// Performs a search against the index and returns the documents found - Future> searchDocuments( - {required String instanceDir, - required String indexName, - String? query, - int? limit, - int? offset, - List? sortCriteria, - Filter? filter, - TermsMatchingStrategy? matchingStrategy, - dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kSearchDocumentsConstMeta; - - Future numberOfDocuments( - {required String instanceDir, required String indexName, dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kNumberOfDocumentsConstMeta; - - /// Gets the settings of the specified index - Future getSettings( - {required String instanceDir, required String indexName, dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kGetSettingsConstMeta; - - /// Sets the settings of the specified index - Future setSettings( - {required String instanceDir, - required String indexName, - required MimirIndexSettings settings, - dynamic hint}); - - FlutterRustBridgeTaskConstMeta get kSetSettingsConstMeta; -} - -@freezed -class Filter with _$Filter { - /// Creates an "or" [Filter] of the given sub-filters. - const factory Filter.or( - List field0, - ) = Filter_Or; - - /// Creates an "and" [Filter] of the given sub-filters. - const factory Filter.and( - List field0, - ) = Filter_And; - - /// Creates a "not" [Filter] of the given sub-filter. - const factory Filter.not( - Filter field0, - ) = Filter_Not; - - /// Creates a [Filter] that specifies the given field exists. - const factory Filter.exists({ - required String field, - }) = Filter_Exists; - - /// Creates a [Filter] for the "IN" operator. - const factory Filter.inValues({ - required String field, - required List values, - }) = Filter_InValues; - - /// Creates a [Filter] for the ">" operator. - const factory Filter.greaterThan({ - required String field, - required String value, - }) = Filter_GreaterThan; - - /// Creates a [Filter] for the ">=" operator. - const factory Filter.greaterThanOrEqual({ - required String field, - required String value, - }) = Filter_GreaterThanOrEqual; - - /// Creates a [Filter] for the "==" operator. - const factory Filter.equal({ - required String field, - required String value, - }) = Filter_Equal; - - /// Creates a [Filter] for the "!=" operator. - const factory Filter.notEqual({ - required String field, - required String value, - }) = Filter_NotEqual; - - /// Creates a [Filter] for the "<" operator. - const factory Filter.lessThan({ - required String field, - required String value, - }) = Filter_LessThan; - - /// Creates a [Filter] for the "<=" operator. - const factory Filter.lessThanOrEqual({ - required String field, - required String value, - }) = Filter_LessThanOrEqual; - - /// Creates a [Filter] for the "BETWEEN" operator. - const factory Filter.between({ - required String field, - required String from, - required String to, - }) = Filter_Between; - - /// Creates a [Filter] for the "IS NULL" operator. - const factory Filter.isNull({ - required String field, - }) = Filter_IsNull; - - /// Creates a [Filter] for the "IS EMPTY" operator. - const factory Filter.isEmpty({ - required String field, - }) = Filter_IsEmpty; -} - -/// The settings of a mimir index -@freezed -class MimirIndexSettings with _$MimirIndexSettings { - const factory MimirIndexSettings({ - String? primaryKey, - List? searchableFields, - required List filterableFields, - required List sortableFields, - required List rankingRules, - required List stopWords, - required List synonyms, - required bool typosEnabled, - required int minWordSizeForOneTypo, - required int minWordSizeForTwoTypos, - required List disallowTyposOnWords, - required List disallowTyposOnFields, - }) = _MimirIndexSettings; -} - -@freezed -class SortBy with _$SortBy { - /// Sort by the given field in ascending order - const factory SortBy.asc( - String field0, - ) = SortBy_Asc; - - /// Sort by the given field in descending order - const factory SortBy.desc( - String field0, - ) = SortBy_Desc; -} - -/// Represents the synonyms of a given word -@freezed -class Synonyms with _$Synonyms { - const factory Synonyms({ - required String word, - required List synonyms, - }) = _Synonyms; -} - -/// See https://docs.meilisearch.com/reference/api/search.html#matching-strategy -enum TermsMatchingStrategy { - /// Remove last word first - Last, - - /// All words are mandatory - All, -} - -class EmbeddedMilliImpl implements EmbeddedMilli { - final EmbeddedMilliPlatform _platform; - factory EmbeddedMilliImpl(ExternalLibrary dylib) => - EmbeddedMilliImpl.raw(EmbeddedMilliPlatform(dylib)); - - /// Only valid on web/WASM platforms. - factory EmbeddedMilliImpl.wasm(FutureOr module) => - EmbeddedMilliImpl(module as ExternalLibrary); - EmbeddedMilliImpl.raw(this._platform); - Future ensureInstanceInitialized( - {required String instanceDir, String? tmpDir, dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_opt_String(tmpDir); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => - _platform.inner.wire_ensure_instance_initialized(port_, arg0, arg1), - parseSuccessData: _wire2api_unit, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kEnsureInstanceInitializedConstMeta, - argValues: [instanceDir, tmpDir], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kEnsureInstanceInitializedConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "ensure_instance_initialized", - argNames: ["instanceDir", "tmpDir"], - ); - - Future ensureIndexInitialized( - {required String instanceDir, required String indexName, dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_String(indexName); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => - _platform.inner.wire_ensure_index_initialized(port_, arg0, arg1), - parseSuccessData: _wire2api_unit, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kEnsureIndexInitializedConstMeta, - argValues: [instanceDir, indexName], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kEnsureIndexInitializedConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "ensure_index_initialized", - argNames: ["instanceDir", "indexName"], - ); - - Future addDocuments( - {required String instanceDir, - required String indexName, - required List documents, - dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_String(indexName); - var arg2 = _platform.api2wire_StringList(documents); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => - _platform.inner.wire_add_documents(port_, arg0, arg1, arg2), - parseSuccessData: _wire2api_unit, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kAddDocumentsConstMeta, - argValues: [instanceDir, indexName, documents], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kAddDocumentsConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "add_documents", - argNames: ["instanceDir", "indexName", "documents"], - ); - - Future deleteDocuments( - {required String instanceDir, - required String indexName, - required List documentIds, - dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_String(indexName); - var arg2 = _platform.api2wire_StringList(documentIds); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => - _platform.inner.wire_delete_documents(port_, arg0, arg1, arg2), - parseSuccessData: _wire2api_unit, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kDeleteDocumentsConstMeta, - argValues: [instanceDir, indexName, documentIds], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kDeleteDocumentsConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "delete_documents", - argNames: ["instanceDir", "indexName", "documentIds"], - ); - - Future deleteAllDocuments( - {required String instanceDir, required String indexName, dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_String(indexName); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => - _platform.inner.wire_delete_all_documents(port_, arg0, arg1), - parseSuccessData: _wire2api_unit, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kDeleteAllDocumentsConstMeta, - argValues: [instanceDir, indexName], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kDeleteAllDocumentsConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "delete_all_documents", - argNames: ["instanceDir", "indexName"], - ); - - Future setDocuments( - {required String instanceDir, - required String indexName, - required List documents, - dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_String(indexName); - var arg2 = _platform.api2wire_StringList(documents); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => - _platform.inner.wire_set_documents(port_, arg0, arg1, arg2), - parseSuccessData: _wire2api_unit, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kSetDocumentsConstMeta, - argValues: [instanceDir, indexName, documents], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kSetDocumentsConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "set_documents", - argNames: ["instanceDir", "indexName", "documents"], - ); - - Future getDocument( - {required String instanceDir, - required String indexName, - required String documentId, - dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_String(indexName); - var arg2 = _platform.api2wire_String(documentId); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => - _platform.inner.wire_get_document(port_, arg0, arg1, arg2), - parseSuccessData: _wire2api_opt_String, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kGetDocumentConstMeta, - argValues: [instanceDir, indexName, documentId], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kGetDocumentConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "get_document", - argNames: ["instanceDir", "indexName", "documentId"], - ); - - Future> getAllDocuments( - {required String instanceDir, required String indexName, dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_String(indexName); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => - _platform.inner.wire_get_all_documents(port_, arg0, arg1), - parseSuccessData: _wire2api_StringList, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kGetAllDocumentsConstMeta, - argValues: [instanceDir, indexName], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kGetAllDocumentsConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "get_all_documents", - argNames: ["instanceDir", "indexName"], - ); - - Future> searchDocuments( - {required String instanceDir, - required String indexName, - String? query, - int? limit, - int? offset, - List? sortCriteria, - Filter? filter, - TermsMatchingStrategy? matchingStrategy, - dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_String(indexName); - var arg2 = _platform.api2wire_opt_String(query); - var arg3 = _platform.api2wire_opt_box_autoadd_u32(limit); - var arg4 = _platform.api2wire_opt_box_autoadd_u32(offset); - var arg5 = _platform.api2wire_opt_list_sort_by(sortCriteria); - var arg6 = _platform.api2wire_opt_box_autoadd_filter(filter); - var arg7 = _platform - .api2wire_opt_box_autoadd_terms_matching_strategy(matchingStrategy); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => _platform.inner.wire_search_documents( - port_, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7), - parseSuccessData: _wire2api_StringList, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kSearchDocumentsConstMeta, - argValues: [ - instanceDir, - indexName, - query, - limit, - offset, - sortCriteria, - filter, - matchingStrategy - ], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kSearchDocumentsConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "search_documents", - argNames: [ - "instanceDir", - "indexName", - "query", - "limit", - "offset", - "sortCriteria", - "filter", - "matchingStrategy" - ], - ); - - Future numberOfDocuments( - {required String instanceDir, required String indexName, dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_String(indexName); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => - _platform.inner.wire_number_of_documents(port_, arg0, arg1), - parseSuccessData: _wire2api_u64, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kNumberOfDocumentsConstMeta, - argValues: [instanceDir, indexName], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kNumberOfDocumentsConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "number_of_documents", - argNames: ["instanceDir", "indexName"], - ); - - Future getSettings( - {required String instanceDir, required String indexName, dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_String(indexName); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => _platform.inner.wire_get_settings(port_, arg0, arg1), - parseSuccessData: _wire2api_mimir_index_settings, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kGetSettingsConstMeta, - argValues: [instanceDir, indexName], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kGetSettingsConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "get_settings", - argNames: ["instanceDir", "indexName"], - ); - - Future setSettings( - {required String instanceDir, - required String indexName, - required MimirIndexSettings settings, - dynamic hint}) { - var arg0 = _platform.api2wire_String(instanceDir); - var arg1 = _platform.api2wire_String(indexName); - var arg2 = _platform.api2wire_box_autoadd_mimir_index_settings(settings); - return _platform.executeNormal(FlutterRustBridgeTask( - callFfi: (port_) => - _platform.inner.wire_set_settings(port_, arg0, arg1, arg2), - parseSuccessData: _wire2api_unit, - parseErrorData: _wire2api_FrbAnyhowException, - constMeta: kSetSettingsConstMeta, - argValues: [instanceDir, indexName, settings], - hint: hint, - )); - } - - FlutterRustBridgeTaskConstMeta get kSetSettingsConstMeta => - const FlutterRustBridgeTaskConstMeta( - debugName: "set_settings", - argNames: ["instanceDir", "indexName", "settings"], - ); - - void dispose() { - _platform.dispose(); - } -// Section: wire2api - - FrbAnyhowException _wire2api_FrbAnyhowException(dynamic raw) { - return FrbAnyhowException(raw as String); - } - - String _wire2api_String(dynamic raw) { - return raw as String; - } - - List _wire2api_StringList(dynamic raw) { - return (raw as List).cast(); - } - - bool _wire2api_bool(dynamic raw) { - return raw as bool; - } - - List _wire2api_list_synonyms(dynamic raw) { - return (raw as List).map(_wire2api_synonyms).toList(); - } - - MimirIndexSettings _wire2api_mimir_index_settings(dynamic raw) { - final arr = raw as List; - if (arr.length != 12) - throw Exception('unexpected arr length: expect 12 but see ${arr.length}'); - return MimirIndexSettings( - primaryKey: _wire2api_opt_String(arr[0]), - searchableFields: _wire2api_opt_StringList(arr[1]), - filterableFields: _wire2api_StringList(arr[2]), - sortableFields: _wire2api_StringList(arr[3]), - rankingRules: _wire2api_StringList(arr[4]), - stopWords: _wire2api_StringList(arr[5]), - synonyms: _wire2api_list_synonyms(arr[6]), - typosEnabled: _wire2api_bool(arr[7]), - minWordSizeForOneTypo: _wire2api_u8(arr[8]), - minWordSizeForTwoTypos: _wire2api_u8(arr[9]), - disallowTyposOnWords: _wire2api_StringList(arr[10]), - disallowTyposOnFields: _wire2api_StringList(arr[11]), - ); - } - - String? _wire2api_opt_String(dynamic raw) { - return raw == null ? null : _wire2api_String(raw); - } - - List? _wire2api_opt_StringList(dynamic raw) { - return raw == null ? null : _wire2api_StringList(raw); - } - - Synonyms _wire2api_synonyms(dynamic raw) { - final arr = raw as List; - if (arr.length != 2) - throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); - return Synonyms( - word: _wire2api_String(arr[0]), - synonyms: _wire2api_StringList(arr[1]), - ); - } - - int _wire2api_u64(dynamic raw) { - return castInt(raw); - } - - int _wire2api_u8(dynamic raw) { - return raw as int; - } - - Uint8List _wire2api_uint_8_list(dynamic raw) { - return raw as Uint8List; - } - - void _wire2api_unit(dynamic raw) { - return; - } -} - -// Section: api2wire - -@protected -bool api2wire_bool(bool raw) { - return raw; -} - -@protected -int api2wire_i32(int raw) { - return raw; -} - -@protected -int api2wire_terms_matching_strategy(TermsMatchingStrategy raw) { - return api2wire_i32(raw.index); -} - -@protected -int api2wire_u32(int raw) { - return raw; -} - -@protected -int api2wire_u8(int raw) { - return raw; -} - -// Section: finalizer diff --git a/packages/mimir/lib/src/bridge_generated.io.dart b/packages/mimir/lib/src/bridge_generated.io.dart deleted file mode 100644 index 7d404383..00000000 --- a/packages/mimir/lib/src/bridge_generated.io.dart +++ /dev/null @@ -1,1232 +0,0 @@ -// AUTO GENERATED FILE, DO NOT EDIT. -// Generated by `flutter_rust_bridge`@ 1.82.6. -// ignore_for_file: non_constant_identifier_names, unused_element, duplicate_ignore, directives_ordering, curly_braces_in_flow_control_structures, unnecessary_lambdas, slash_for_doc_comments, prefer_const_literals_to_create_immutables, implicit_dynamic_list_literal, duplicate_import, unused_import, unnecessary_import, prefer_single_quotes, prefer_const_constructors, use_super_parameters, always_use_package_imports, annotate_overrides, invalid_use_of_protected_member, constant_identifier_names, invalid_use_of_internal_member, prefer_is_empty, unnecessary_const - -import 'dart:convert'; -import 'dart:async'; -import 'package:meta/meta.dart'; -import 'package:flutter_rust_bridge/flutter_rust_bridge.dart'; -import 'package:uuid/uuid.dart'; -import 'bridge_generated.dart'; -export 'bridge_generated.dart'; -import 'dart:ffi' as ffi; - -class EmbeddedMilliPlatform extends FlutterRustBridgeBase { - EmbeddedMilliPlatform(ffi.DynamicLibrary dylib) - : super(EmbeddedMilliWire(dylib)); - -// Section: api2wire - - @protected - ffi.Pointer api2wire_String(String raw) { - return api2wire_uint_8_list(utf8.encoder.convert(raw)); - } - - @protected - ffi.Pointer api2wire_StringList(List raw) { - final ans = inner.new_StringList_0(raw.length); - for (var i = 0; i < raw.length; i++) { - ans.ref.ptr[i] = api2wire_String(raw[i]); - } - return ans; - } - - @protected - ffi.Pointer api2wire_box_autoadd_filter(Filter raw) { - final ptr = inner.new_box_autoadd_filter_0(); - _api_fill_to_wire_filter(raw, ptr.ref); - return ptr; - } - - @protected - ffi.Pointer - api2wire_box_autoadd_mimir_index_settings(MimirIndexSettings raw) { - final ptr = inner.new_box_autoadd_mimir_index_settings_0(); - _api_fill_to_wire_mimir_index_settings(raw, ptr.ref); - return ptr; - } - - @protected - ffi.Pointer api2wire_box_autoadd_terms_matching_strategy( - TermsMatchingStrategy raw) { - return inner.new_box_autoadd_terms_matching_strategy_0( - api2wire_terms_matching_strategy(raw)); - } - - @protected - ffi.Pointer api2wire_box_autoadd_u32(int raw) { - return inner.new_box_autoadd_u32_0(api2wire_u32(raw)); - } - - @protected - ffi.Pointer api2wire_box_filter(Filter raw) { - final ptr = inner.new_box_filter_0(); - _api_fill_to_wire_filter(raw, ptr.ref); - return ptr; - } - - @protected - ffi.Pointer api2wire_list_filter(List raw) { - final ans = inner.new_list_filter_0(raw.length); - for (var i = 0; i < raw.length; ++i) { - _api_fill_to_wire_filter(raw[i], ans.ref.ptr[i]); - } - return ans; - } - - @protected - ffi.Pointer api2wire_list_sort_by(List raw) { - final ans = inner.new_list_sort_by_0(raw.length); - for (var i = 0; i < raw.length; ++i) { - _api_fill_to_wire_sort_by(raw[i], ans.ref.ptr[i]); - } - return ans; - } - - @protected - ffi.Pointer api2wire_list_synonyms(List raw) { - final ans = inner.new_list_synonyms_0(raw.length); - for (var i = 0; i < raw.length; ++i) { - _api_fill_to_wire_synonyms(raw[i], ans.ref.ptr[i]); - } - return ans; - } - - @protected - ffi.Pointer api2wire_opt_String(String? raw) { - return raw == null ? ffi.nullptr : api2wire_String(raw); - } - - @protected - ffi.Pointer api2wire_opt_StringList(List? raw) { - return raw == null ? ffi.nullptr : api2wire_StringList(raw); - } - - @protected - ffi.Pointer api2wire_opt_box_autoadd_filter(Filter? raw) { - return raw == null ? ffi.nullptr : api2wire_box_autoadd_filter(raw); - } - - @protected - ffi.Pointer api2wire_opt_box_autoadd_terms_matching_strategy( - TermsMatchingStrategy? raw) { - return raw == null - ? ffi.nullptr - : api2wire_box_autoadd_terms_matching_strategy(raw); - } - - @protected - ffi.Pointer api2wire_opt_box_autoadd_u32(int? raw) { - return raw == null ? ffi.nullptr : api2wire_box_autoadd_u32(raw); - } - - @protected - ffi.Pointer api2wire_opt_list_sort_by(List? raw) { - return raw == null ? ffi.nullptr : api2wire_list_sort_by(raw); - } - - @protected - ffi.Pointer api2wire_uint_8_list(Uint8List raw) { - final ans = inner.new_uint_8_list_0(raw.length); - ans.ref.ptr.asTypedList(raw.length).setAll(0, raw); - return ans; - } -// Section: finalizer - -// Section: api_fill_to_wire - - void _api_fill_to_wire_box_autoadd_filter( - Filter apiObj, ffi.Pointer wireObj) { - _api_fill_to_wire_filter(apiObj, wireObj.ref); - } - - void _api_fill_to_wire_box_autoadd_mimir_index_settings( - MimirIndexSettings apiObj, ffi.Pointer wireObj) { - _api_fill_to_wire_mimir_index_settings(apiObj, wireObj.ref); - } - - void _api_fill_to_wire_box_filter( - Filter apiObj, ffi.Pointer wireObj) { - _api_fill_to_wire_filter(apiObj, wireObj.ref); - } - - void _api_fill_to_wire_filter(Filter apiObj, wire_Filter wireObj) { - if (apiObj is Filter_Or) { - var pre_field0 = api2wire_list_filter(apiObj.field0); - wireObj.tag = 0; - wireObj.kind = inner.inflate_Filter_Or(); - wireObj.kind.ref.Or.ref.field0 = pre_field0; - return; - } - if (apiObj is Filter_And) { - var pre_field0 = api2wire_list_filter(apiObj.field0); - wireObj.tag = 1; - wireObj.kind = inner.inflate_Filter_And(); - wireObj.kind.ref.And.ref.field0 = pre_field0; - return; - } - if (apiObj is Filter_Not) { - var pre_field0 = api2wire_box_filter(apiObj.field0); - wireObj.tag = 2; - wireObj.kind = inner.inflate_Filter_Not(); - wireObj.kind.ref.Not.ref.field0 = pre_field0; - return; - } - if (apiObj is Filter_Exists) { - var pre_field = api2wire_String(apiObj.field); - wireObj.tag = 3; - wireObj.kind = inner.inflate_Filter_Exists(); - wireObj.kind.ref.Exists.ref.field = pre_field; - return; - } - if (apiObj is Filter_InValues) { - var pre_field = api2wire_String(apiObj.field); - var pre_values = api2wire_StringList(apiObj.values); - wireObj.tag = 4; - wireObj.kind = inner.inflate_Filter_InValues(); - wireObj.kind.ref.InValues.ref.field = pre_field; - wireObj.kind.ref.InValues.ref.values = pre_values; - return; - } - if (apiObj is Filter_GreaterThan) { - var pre_field = api2wire_String(apiObj.field); - var pre_value = api2wire_String(apiObj.value); - wireObj.tag = 5; - wireObj.kind = inner.inflate_Filter_GreaterThan(); - wireObj.kind.ref.GreaterThan.ref.field = pre_field; - wireObj.kind.ref.GreaterThan.ref.value = pre_value; - return; - } - if (apiObj is Filter_GreaterThanOrEqual) { - var pre_field = api2wire_String(apiObj.field); - var pre_value = api2wire_String(apiObj.value); - wireObj.tag = 6; - wireObj.kind = inner.inflate_Filter_GreaterThanOrEqual(); - wireObj.kind.ref.GreaterThanOrEqual.ref.field = pre_field; - wireObj.kind.ref.GreaterThanOrEqual.ref.value = pre_value; - return; - } - if (apiObj is Filter_Equal) { - var pre_field = api2wire_String(apiObj.field); - var pre_value = api2wire_String(apiObj.value); - wireObj.tag = 7; - wireObj.kind = inner.inflate_Filter_Equal(); - wireObj.kind.ref.Equal.ref.field = pre_field; - wireObj.kind.ref.Equal.ref.value = pre_value; - return; - } - if (apiObj is Filter_NotEqual) { - var pre_field = api2wire_String(apiObj.field); - var pre_value = api2wire_String(apiObj.value); - wireObj.tag = 8; - wireObj.kind = inner.inflate_Filter_NotEqual(); - wireObj.kind.ref.NotEqual.ref.field = pre_field; - wireObj.kind.ref.NotEqual.ref.value = pre_value; - return; - } - if (apiObj is Filter_LessThan) { - var pre_field = api2wire_String(apiObj.field); - var pre_value = api2wire_String(apiObj.value); - wireObj.tag = 9; - wireObj.kind = inner.inflate_Filter_LessThan(); - wireObj.kind.ref.LessThan.ref.field = pre_field; - wireObj.kind.ref.LessThan.ref.value = pre_value; - return; - } - if (apiObj is Filter_LessThanOrEqual) { - var pre_field = api2wire_String(apiObj.field); - var pre_value = api2wire_String(apiObj.value); - wireObj.tag = 10; - wireObj.kind = inner.inflate_Filter_LessThanOrEqual(); - wireObj.kind.ref.LessThanOrEqual.ref.field = pre_field; - wireObj.kind.ref.LessThanOrEqual.ref.value = pre_value; - return; - } - if (apiObj is Filter_Between) { - var pre_field = api2wire_String(apiObj.field); - var pre_from = api2wire_String(apiObj.from); - var pre_to = api2wire_String(apiObj.to); - wireObj.tag = 11; - wireObj.kind = inner.inflate_Filter_Between(); - wireObj.kind.ref.Between.ref.field = pre_field; - wireObj.kind.ref.Between.ref.from = pre_from; - wireObj.kind.ref.Between.ref.to = pre_to; - return; - } - if (apiObj is Filter_IsNull) { - var pre_field = api2wire_String(apiObj.field); - wireObj.tag = 12; - wireObj.kind = inner.inflate_Filter_IsNull(); - wireObj.kind.ref.IsNull.ref.field = pre_field; - return; - } - if (apiObj is Filter_IsEmpty) { - var pre_field = api2wire_String(apiObj.field); - wireObj.tag = 13; - wireObj.kind = inner.inflate_Filter_IsEmpty(); - wireObj.kind.ref.IsEmpty.ref.field = pre_field; - return; - } - } - - void _api_fill_to_wire_mimir_index_settings( - MimirIndexSettings apiObj, wire_MimirIndexSettings wireObj) { - wireObj.primary_key = api2wire_opt_String(apiObj.primaryKey); - wireObj.searchable_fields = - api2wire_opt_StringList(apiObj.searchableFields); - wireObj.filterable_fields = api2wire_StringList(apiObj.filterableFields); - wireObj.sortable_fields = api2wire_StringList(apiObj.sortableFields); - wireObj.ranking_rules = api2wire_StringList(apiObj.rankingRules); - wireObj.stop_words = api2wire_StringList(apiObj.stopWords); - wireObj.synonyms = api2wire_list_synonyms(apiObj.synonyms); - wireObj.typos_enabled = api2wire_bool(apiObj.typosEnabled); - wireObj.min_word_size_for_one_typo = - api2wire_u8(apiObj.minWordSizeForOneTypo); - wireObj.min_word_size_for_two_typos = - api2wire_u8(apiObj.minWordSizeForTwoTypos); - wireObj.disallow_typos_on_words = - api2wire_StringList(apiObj.disallowTyposOnWords); - wireObj.disallow_typos_on_fields = - api2wire_StringList(apiObj.disallowTyposOnFields); - } - - void _api_fill_to_wire_sort_by(SortBy apiObj, wire_SortBy wireObj) { - if (apiObj is SortBy_Asc) { - var pre_field0 = api2wire_String(apiObj.field0); - wireObj.tag = 0; - wireObj.kind = inner.inflate_SortBy_Asc(); - wireObj.kind.ref.Asc.ref.field0 = pre_field0; - return; - } - if (apiObj is SortBy_Desc) { - var pre_field0 = api2wire_String(apiObj.field0); - wireObj.tag = 1; - wireObj.kind = inner.inflate_SortBy_Desc(); - wireObj.kind.ref.Desc.ref.field0 = pre_field0; - return; - } - } - - void _api_fill_to_wire_synonyms(Synonyms apiObj, wire_Synonyms wireObj) { - wireObj.word = api2wire_String(apiObj.word); - wireObj.synonyms = api2wire_StringList(apiObj.synonyms); - } -} - -// ignore_for_file: camel_case_types, non_constant_identifier_names, avoid_positional_boolean_parameters, annotate_overrides, constant_identifier_names - -// AUTO GENERATED FILE, DO NOT EDIT. -// -// Generated by `package:ffigen`. -// ignore_for_file: type=lint - -/// generated by flutter_rust_bridge -class EmbeddedMilliWire implements FlutterRustBridgeWireBase { - @internal - late final dartApi = DartApiDl(init_frb_dart_api_dl); - - /// Holds the symbol lookup function. - final ffi.Pointer Function(String symbolName) - _lookup; - - /// The symbols are looked up in [dynamicLibrary]. - EmbeddedMilliWire(ffi.DynamicLibrary dynamicLibrary) - : _lookup = dynamicLibrary.lookup; - - /// The symbols are looked up with [lookup]. - EmbeddedMilliWire.fromLookup( - ffi.Pointer Function(String symbolName) - lookup) - : _lookup = lookup; - - void store_dart_post_cobject( - DartPostCObjectFnType ptr, - ) { - return _store_dart_post_cobject( - ptr, - ); - } - - late final _store_dart_post_cobjectPtr = - _lookup>( - 'store_dart_post_cobject'); - late final _store_dart_post_cobject = _store_dart_post_cobjectPtr - .asFunction(); - - Object get_dart_object( - int ptr, - ) { - return _get_dart_object( - ptr, - ); - } - - late final _get_dart_objectPtr = - _lookup>( - 'get_dart_object'); - late final _get_dart_object = - _get_dart_objectPtr.asFunction(); - - void drop_dart_object( - int ptr, - ) { - return _drop_dart_object( - ptr, - ); - } - - late final _drop_dart_objectPtr = - _lookup>( - 'drop_dart_object'); - late final _drop_dart_object = - _drop_dart_objectPtr.asFunction(); - - int new_dart_opaque( - Object handle, - ) { - return _new_dart_opaque( - handle, - ); - } - - late final _new_dart_opaquePtr = - _lookup>( - 'new_dart_opaque'); - late final _new_dart_opaque = - _new_dart_opaquePtr.asFunction(); - - int init_frb_dart_api_dl( - ffi.Pointer obj, - ) { - return _init_frb_dart_api_dl( - obj, - ); - } - - late final _init_frb_dart_api_dlPtr = - _lookup)>>( - 'init_frb_dart_api_dl'); - late final _init_frb_dart_api_dl = _init_frb_dart_api_dlPtr - .asFunction)>(); - - void wire_ensure_instance_initialized( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer tmp_dir, - ) { - return _wire_ensure_instance_initialized( - port_, - instance_dir, - tmp_dir, - ); - } - - late final _wire_ensure_instance_initializedPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Int64, ffi.Pointer, - ffi.Pointer)>>( - 'wire_ensure_instance_initialized'); - late final _wire_ensure_instance_initialized = - _wire_ensure_instance_initializedPtr.asFunction< - void Function(int, ffi.Pointer, - ffi.Pointer)>(); - - void wire_ensure_index_initialized( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer index_name, - ) { - return _wire_ensure_index_initialized( - port_, - instance_dir, - index_name, - ); - } - - late final _wire_ensure_index_initializedPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Int64, ffi.Pointer, - ffi.Pointer)>>('wire_ensure_index_initialized'); - late final _wire_ensure_index_initialized = - _wire_ensure_index_initializedPtr.asFunction< - void Function(int, ffi.Pointer, - ffi.Pointer)>(); - - void wire_add_documents( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer index_name, - ffi.Pointer documents, - ) { - return _wire_add_documents( - port_, - instance_dir, - index_name, - documents, - ); - } - - late final _wire_add_documentsPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Int64, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('wire_add_documents'); - late final _wire_add_documents = _wire_add_documentsPtr.asFunction< - void Function(int, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - void wire_delete_documents( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer index_name, - ffi.Pointer document_ids, - ) { - return _wire_delete_documents( - port_, - instance_dir, - index_name, - document_ids, - ); - } - - late final _wire_delete_documentsPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Int64, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('wire_delete_documents'); - late final _wire_delete_documents = _wire_delete_documentsPtr.asFunction< - void Function(int, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - void wire_delete_all_documents( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer index_name, - ) { - return _wire_delete_all_documents( - port_, - instance_dir, - index_name, - ); - } - - late final _wire_delete_all_documentsPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Int64, ffi.Pointer, - ffi.Pointer)>>('wire_delete_all_documents'); - late final _wire_delete_all_documents = - _wire_delete_all_documentsPtr.asFunction< - void Function(int, ffi.Pointer, - ffi.Pointer)>(); - - void wire_set_documents( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer index_name, - ffi.Pointer documents, - ) { - return _wire_set_documents( - port_, - instance_dir, - index_name, - documents, - ); - } - - late final _wire_set_documentsPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Int64, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('wire_set_documents'); - late final _wire_set_documents = _wire_set_documentsPtr.asFunction< - void Function(int, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - void wire_get_document( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer index_name, - ffi.Pointer document_id, - ) { - return _wire_get_document( - port_, - instance_dir, - index_name, - document_id, - ); - } - - late final _wire_get_documentPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Int64, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('wire_get_document'); - late final _wire_get_document = _wire_get_documentPtr.asFunction< - void Function(int, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - void wire_get_all_documents( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer index_name, - ) { - return _wire_get_all_documents( - port_, - instance_dir, - index_name, - ); - } - - late final _wire_get_all_documentsPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Int64, ffi.Pointer, - ffi.Pointer)>>('wire_get_all_documents'); - late final _wire_get_all_documents = _wire_get_all_documentsPtr.asFunction< - void Function( - int, ffi.Pointer, ffi.Pointer)>(); - - void wire_search_documents( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer index_name, - ffi.Pointer query, - ffi.Pointer limit, - ffi.Pointer offset, - ffi.Pointer sort_criteria, - ffi.Pointer filter, - ffi.Pointer matching_strategy, - ) { - return _wire_search_documents( - port_, - instance_dir, - index_name, - query, - limit, - offset, - sort_criteria, - filter, - matching_strategy, - ); - } - - late final _wire_search_documentsPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Int64, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('wire_search_documents'); - late final _wire_search_documents = _wire_search_documentsPtr.asFunction< - void Function( - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - void wire_number_of_documents( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer index_name, - ) { - return _wire_number_of_documents( - port_, - instance_dir, - index_name, - ); - } - - late final _wire_number_of_documentsPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Int64, ffi.Pointer, - ffi.Pointer)>>('wire_number_of_documents'); - late final _wire_number_of_documents = - _wire_number_of_documentsPtr.asFunction< - void Function(int, ffi.Pointer, - ffi.Pointer)>(); - - void wire_get_settings( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer index_name, - ) { - return _wire_get_settings( - port_, - instance_dir, - index_name, - ); - } - - late final _wire_get_settingsPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Int64, ffi.Pointer, - ffi.Pointer)>>('wire_get_settings'); - late final _wire_get_settings = _wire_get_settingsPtr.asFunction< - void Function( - int, ffi.Pointer, ffi.Pointer)>(); - - void wire_set_settings( - int port_, - ffi.Pointer instance_dir, - ffi.Pointer index_name, - ffi.Pointer settings, - ) { - return _wire_set_settings( - port_, - instance_dir, - index_name, - settings, - ); - } - - late final _wire_set_settingsPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Int64, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('wire_set_settings'); - late final _wire_set_settings = _wire_set_settingsPtr.asFunction< - void Function( - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - ffi.Pointer new_StringList_0( - int len, - ) { - return _new_StringList_0( - len, - ); - } - - late final _new_StringList_0Ptr = _lookup< - ffi.NativeFunction Function(ffi.Int32)>>( - 'new_StringList_0'); - late final _new_StringList_0 = _new_StringList_0Ptr - .asFunction Function(int)>(); - - ffi.Pointer new_box_autoadd_filter_0() { - return _new_box_autoadd_filter_0(); - } - - late final _new_box_autoadd_filter_0Ptr = - _lookup Function()>>( - 'new_box_autoadd_filter_0'); - late final _new_box_autoadd_filter_0 = _new_box_autoadd_filter_0Ptr - .asFunction Function()>(); - - ffi.Pointer - new_box_autoadd_mimir_index_settings_0() { - return _new_box_autoadd_mimir_index_settings_0(); - } - - late final _new_box_autoadd_mimir_index_settings_0Ptr = _lookup< - ffi.NativeFunction Function()>>( - 'new_box_autoadd_mimir_index_settings_0'); - late final _new_box_autoadd_mimir_index_settings_0 = - _new_box_autoadd_mimir_index_settings_0Ptr - .asFunction Function()>(); - - ffi.Pointer new_box_autoadd_terms_matching_strategy_0( - int value, - ) { - return _new_box_autoadd_terms_matching_strategy_0( - value, - ); - } - - late final _new_box_autoadd_terms_matching_strategy_0Ptr = - _lookup Function(ffi.Int32)>>( - 'new_box_autoadd_terms_matching_strategy_0'); - late final _new_box_autoadd_terms_matching_strategy_0 = - _new_box_autoadd_terms_matching_strategy_0Ptr - .asFunction Function(int)>(); - - ffi.Pointer new_box_autoadd_u32_0( - int value, - ) { - return _new_box_autoadd_u32_0( - value, - ); - } - - late final _new_box_autoadd_u32_0Ptr = - _lookup Function(ffi.Uint32)>>( - 'new_box_autoadd_u32_0'); - late final _new_box_autoadd_u32_0 = _new_box_autoadd_u32_0Ptr - .asFunction Function(int)>(); - - ffi.Pointer new_box_filter_0() { - return _new_box_filter_0(); - } - - late final _new_box_filter_0Ptr = - _lookup Function()>>( - 'new_box_filter_0'); - late final _new_box_filter_0 = - _new_box_filter_0Ptr.asFunction Function()>(); - - ffi.Pointer new_list_filter_0( - int len, - ) { - return _new_list_filter_0( - len, - ); - } - - late final _new_list_filter_0Ptr = _lookup< - ffi - .NativeFunction Function(ffi.Int32)>>( - 'new_list_filter_0'); - late final _new_list_filter_0 = _new_list_filter_0Ptr - .asFunction Function(int)>(); - - ffi.Pointer new_list_sort_by_0( - int len, - ) { - return _new_list_sort_by_0( - len, - ); - } - - late final _new_list_sort_by_0Ptr = _lookup< - ffi - .NativeFunction Function(ffi.Int32)>>( - 'new_list_sort_by_0'); - late final _new_list_sort_by_0 = _new_list_sort_by_0Ptr - .asFunction Function(int)>(); - - ffi.Pointer new_list_synonyms_0( - int len, - ) { - return _new_list_synonyms_0( - len, - ); - } - - late final _new_list_synonyms_0Ptr = _lookup< - ffi - .NativeFunction Function(ffi.Int32)>>( - 'new_list_synonyms_0'); - late final _new_list_synonyms_0 = _new_list_synonyms_0Ptr - .asFunction Function(int)>(); - - ffi.Pointer new_uint_8_list_0( - int len, - ) { - return _new_uint_8_list_0( - len, - ); - } - - late final _new_uint_8_list_0Ptr = _lookup< - ffi - .NativeFunction Function(ffi.Int32)>>( - 'new_uint_8_list_0'); - late final _new_uint_8_list_0 = _new_uint_8_list_0Ptr - .asFunction Function(int)>(); - - ffi.Pointer inflate_Filter_Or() { - return _inflate_Filter_Or(); - } - - late final _inflate_Filter_OrPtr = - _lookup Function()>>( - 'inflate_Filter_Or'); - late final _inflate_Filter_Or = - _inflate_Filter_OrPtr.asFunction Function()>(); - - ffi.Pointer inflate_Filter_And() { - return _inflate_Filter_And(); - } - - late final _inflate_Filter_AndPtr = - _lookup Function()>>( - 'inflate_Filter_And'); - late final _inflate_Filter_And = - _inflate_Filter_AndPtr.asFunction Function()>(); - - ffi.Pointer inflate_Filter_Not() { - return _inflate_Filter_Not(); - } - - late final _inflate_Filter_NotPtr = - _lookup Function()>>( - 'inflate_Filter_Not'); - late final _inflate_Filter_Not = - _inflate_Filter_NotPtr.asFunction Function()>(); - - ffi.Pointer inflate_Filter_Exists() { - return _inflate_Filter_Exists(); - } - - late final _inflate_Filter_ExistsPtr = - _lookup Function()>>( - 'inflate_Filter_Exists'); - late final _inflate_Filter_Exists = _inflate_Filter_ExistsPtr - .asFunction Function()>(); - - ffi.Pointer inflate_Filter_InValues() { - return _inflate_Filter_InValues(); - } - - late final _inflate_Filter_InValuesPtr = - _lookup Function()>>( - 'inflate_Filter_InValues'); - late final _inflate_Filter_InValues = _inflate_Filter_InValuesPtr - .asFunction Function()>(); - - ffi.Pointer inflate_Filter_GreaterThan() { - return _inflate_Filter_GreaterThan(); - } - - late final _inflate_Filter_GreaterThanPtr = - _lookup Function()>>( - 'inflate_Filter_GreaterThan'); - late final _inflate_Filter_GreaterThan = _inflate_Filter_GreaterThanPtr - .asFunction Function()>(); - - ffi.Pointer inflate_Filter_GreaterThanOrEqual() { - return _inflate_Filter_GreaterThanOrEqual(); - } - - late final _inflate_Filter_GreaterThanOrEqualPtr = - _lookup Function()>>( - 'inflate_Filter_GreaterThanOrEqual'); - late final _inflate_Filter_GreaterThanOrEqual = - _inflate_Filter_GreaterThanOrEqualPtr - .asFunction Function()>(); - - ffi.Pointer inflate_Filter_Equal() { - return _inflate_Filter_Equal(); - } - - late final _inflate_Filter_EqualPtr = - _lookup Function()>>( - 'inflate_Filter_Equal'); - late final _inflate_Filter_Equal = - _inflate_Filter_EqualPtr.asFunction Function()>(); - - ffi.Pointer inflate_Filter_NotEqual() { - return _inflate_Filter_NotEqual(); - } - - late final _inflate_Filter_NotEqualPtr = - _lookup Function()>>( - 'inflate_Filter_NotEqual'); - late final _inflate_Filter_NotEqual = _inflate_Filter_NotEqualPtr - .asFunction Function()>(); - - ffi.Pointer inflate_Filter_LessThan() { - return _inflate_Filter_LessThan(); - } - - late final _inflate_Filter_LessThanPtr = - _lookup Function()>>( - 'inflate_Filter_LessThan'); - late final _inflate_Filter_LessThan = _inflate_Filter_LessThanPtr - .asFunction Function()>(); - - ffi.Pointer inflate_Filter_LessThanOrEqual() { - return _inflate_Filter_LessThanOrEqual(); - } - - late final _inflate_Filter_LessThanOrEqualPtr = - _lookup Function()>>( - 'inflate_Filter_LessThanOrEqual'); - late final _inflate_Filter_LessThanOrEqual = - _inflate_Filter_LessThanOrEqualPtr - .asFunction Function()>(); - - ffi.Pointer inflate_Filter_Between() { - return _inflate_Filter_Between(); - } - - late final _inflate_Filter_BetweenPtr = - _lookup Function()>>( - 'inflate_Filter_Between'); - late final _inflate_Filter_Between = _inflate_Filter_BetweenPtr - .asFunction Function()>(); - - ffi.Pointer inflate_Filter_IsNull() { - return _inflate_Filter_IsNull(); - } - - late final _inflate_Filter_IsNullPtr = - _lookup Function()>>( - 'inflate_Filter_IsNull'); - late final _inflate_Filter_IsNull = _inflate_Filter_IsNullPtr - .asFunction Function()>(); - - ffi.Pointer inflate_Filter_IsEmpty() { - return _inflate_Filter_IsEmpty(); - } - - late final _inflate_Filter_IsEmptyPtr = - _lookup Function()>>( - 'inflate_Filter_IsEmpty'); - late final _inflate_Filter_IsEmpty = _inflate_Filter_IsEmptyPtr - .asFunction Function()>(); - - ffi.Pointer inflate_SortBy_Asc() { - return _inflate_SortBy_Asc(); - } - - late final _inflate_SortBy_AscPtr = - _lookup Function()>>( - 'inflate_SortBy_Asc'); - late final _inflate_SortBy_Asc = - _inflate_SortBy_AscPtr.asFunction Function()>(); - - ffi.Pointer inflate_SortBy_Desc() { - return _inflate_SortBy_Desc(); - } - - late final _inflate_SortBy_DescPtr = - _lookup Function()>>( - 'inflate_SortBy_Desc'); - late final _inflate_SortBy_Desc = - _inflate_SortBy_DescPtr.asFunction Function()>(); - - void free_WireSyncReturn( - WireSyncReturn ptr, - ) { - return _free_WireSyncReturn( - ptr, - ); - } - - late final _free_WireSyncReturnPtr = - _lookup>( - 'free_WireSyncReturn'); - late final _free_WireSyncReturn = - _free_WireSyncReturnPtr.asFunction(); -} - -final class _Dart_Handle extends ffi.Opaque {} - -final class wire_uint_8_list extends ffi.Struct { - external ffi.Pointer ptr; - - @ffi.Int32() - external int len; -} - -final class wire_StringList extends ffi.Struct { - external ffi.Pointer> ptr; - - @ffi.Int32() - external int len; -} - -final class wire_SortBy_Asc extends ffi.Struct { - external ffi.Pointer field0; -} - -final class wire_SortBy_Desc extends ffi.Struct { - external ffi.Pointer field0; -} - -final class SortByKind extends ffi.Union { - external ffi.Pointer Asc; - - external ffi.Pointer Desc; -} - -final class wire_SortBy extends ffi.Struct { - @ffi.Int32() - external int tag; - - external ffi.Pointer kind; -} - -final class wire_list_sort_by extends ffi.Struct { - external ffi.Pointer ptr; - - @ffi.Int32() - external int len; -} - -final class wire_list_filter extends ffi.Struct { - external ffi.Pointer ptr; - - @ffi.Int32() - external int len; -} - -final class wire_Filter extends ffi.Struct { - @ffi.Int32() - external int tag; - - external ffi.Pointer kind; -} - -final class FilterKind extends ffi.Union { - external ffi.Pointer Or; - - external ffi.Pointer And; - - external ffi.Pointer Not; - - external ffi.Pointer Exists; - - external ffi.Pointer InValues; - - external ffi.Pointer GreaterThan; - - external ffi.Pointer GreaterThanOrEqual; - - external ffi.Pointer Equal; - - external ffi.Pointer NotEqual; - - external ffi.Pointer LessThan; - - external ffi.Pointer LessThanOrEqual; - - external ffi.Pointer Between; - - external ffi.Pointer IsNull; - - external ffi.Pointer IsEmpty; -} - -final class wire_Filter_Or extends ffi.Struct { - external ffi.Pointer field0; -} - -final class wire_Filter_And extends ffi.Struct { - external ffi.Pointer field0; -} - -final class wire_Filter_Not extends ffi.Struct { - external ffi.Pointer field0; -} - -final class wire_Filter_Exists extends ffi.Struct { - external ffi.Pointer field; -} - -final class wire_Filter_InValues extends ffi.Struct { - external ffi.Pointer field; - - external ffi.Pointer values; -} - -final class wire_Filter_GreaterThan extends ffi.Struct { - external ffi.Pointer field; - - external ffi.Pointer value; -} - -final class wire_Filter_GreaterThanOrEqual extends ffi.Struct { - external ffi.Pointer field; - - external ffi.Pointer value; -} - -final class wire_Filter_Equal extends ffi.Struct { - external ffi.Pointer field; - - external ffi.Pointer value; -} - -final class wire_Filter_NotEqual extends ffi.Struct { - external ffi.Pointer field; - - external ffi.Pointer value; -} - -final class wire_Filter_LessThan extends ffi.Struct { - external ffi.Pointer field; - - external ffi.Pointer value; -} - -final class wire_Filter_LessThanOrEqual extends ffi.Struct { - external ffi.Pointer field; - - external ffi.Pointer value; -} - -final class wire_Filter_Between extends ffi.Struct { - external ffi.Pointer field; - - external ffi.Pointer from; - - external ffi.Pointer to; -} - -final class wire_Filter_IsNull extends ffi.Struct { - external ffi.Pointer field; -} - -final class wire_Filter_IsEmpty extends ffi.Struct { - external ffi.Pointer field; -} - -final class wire_Synonyms extends ffi.Struct { - external ffi.Pointer word; - - external ffi.Pointer synonyms; -} - -final class wire_list_synonyms extends ffi.Struct { - external ffi.Pointer ptr; - - @ffi.Int32() - external int len; -} - -final class wire_MimirIndexSettings extends ffi.Struct { - external ffi.Pointer primary_key; - - external ffi.Pointer searchable_fields; - - external ffi.Pointer filterable_fields; - - external ffi.Pointer sortable_fields; - - external ffi.Pointer ranking_rules; - - external ffi.Pointer stop_words; - - external ffi.Pointer synonyms; - - @ffi.Bool() - external bool typos_enabled; - - @ffi.Uint8() - external int min_word_size_for_one_typo; - - @ffi.Uint8() - external int min_word_size_for_two_typos; - - external ffi.Pointer disallow_typos_on_words; - - external ffi.Pointer disallow_typos_on_fields; -} - -typedef DartPostCObjectFnType = ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function(DartPort port_id, ffi.Pointer message)>>; -typedef DartPort = ffi.Int64; diff --git a/packages/mimir/lib/src/bridge_generated.web.dart b/packages/mimir/lib/src/bridge_generated.web.dart deleted file mode 100644 index 4d6be2e2..00000000 --- a/packages/mimir/lib/src/bridge_generated.web.dart +++ /dev/null @@ -1,322 +0,0 @@ -// AUTO GENERATED FILE, DO NOT EDIT. -// Generated by `flutter_rust_bridge`@ 1.82.6. -// ignore_for_file: non_constant_identifier_names, unused_element, duplicate_ignore, directives_ordering, curly_braces_in_flow_control_structures, unnecessary_lambdas, slash_for_doc_comments, prefer_const_literals_to_create_immutables, implicit_dynamic_list_literal, duplicate_import, unused_import, unnecessary_import, prefer_single_quotes, prefer_const_constructors, use_super_parameters, always_use_package_imports, annotate_overrides, invalid_use_of_protected_member, constant_identifier_names, invalid_use_of_internal_member, prefer_is_empty, unnecessary_const - -import 'dart:convert'; -import 'dart:async'; -import 'package:meta/meta.dart'; -import 'package:flutter_rust_bridge/flutter_rust_bridge.dart'; -import 'package:uuid/uuid.dart'; -import 'bridge_generated.dart'; -export 'bridge_generated.dart'; - -class EmbeddedMilliPlatform extends FlutterRustBridgeBase - with FlutterRustBridgeSetupMixin { - EmbeddedMilliPlatform(FutureOr dylib) - : super(EmbeddedMilliWire(dylib)) { - setupMixinConstructor(); - } - Future setup() => inner.init; - -// Section: api2wire - - @protected - String api2wire_String(String raw) { - return raw; - } - - @protected - List api2wire_StringList(List raw) { - return raw; - } - - @protected - List api2wire_box_autoadd_filter(Filter raw) { - return api2wire_filter(raw); - } - - @protected - List api2wire_box_autoadd_mimir_index_settings( - MimirIndexSettings raw) { - return api2wire_mimir_index_settings(raw); - } - - @protected - int api2wire_box_autoadd_terms_matching_strategy(TermsMatchingStrategy raw) { - return api2wire_terms_matching_strategy(raw); - } - - @protected - int api2wire_box_autoadd_u32(int raw) { - return api2wire_u32(raw); - } - - @protected - List api2wire_box_filter(Filter raw) { - return api2wire_filter(raw); - } - - @protected - List api2wire_filter(Filter raw) { - if (raw is Filter_Or) { - return [0, api2wire_list_filter(raw.field0)]; - } - if (raw is Filter_And) { - return [1, api2wire_list_filter(raw.field0)]; - } - if (raw is Filter_Not) { - return [2, api2wire_box_filter(raw.field0)]; - } - if (raw is Filter_Exists) { - return [3, api2wire_String(raw.field)]; - } - if (raw is Filter_InValues) { - return [4, api2wire_String(raw.field), api2wire_StringList(raw.values)]; - } - if (raw is Filter_GreaterThan) { - return [5, api2wire_String(raw.field), api2wire_String(raw.value)]; - } - if (raw is Filter_GreaterThanOrEqual) { - return [6, api2wire_String(raw.field), api2wire_String(raw.value)]; - } - if (raw is Filter_Equal) { - return [7, api2wire_String(raw.field), api2wire_String(raw.value)]; - } - if (raw is Filter_NotEqual) { - return [8, api2wire_String(raw.field), api2wire_String(raw.value)]; - } - if (raw is Filter_LessThan) { - return [9, api2wire_String(raw.field), api2wire_String(raw.value)]; - } - if (raw is Filter_LessThanOrEqual) { - return [10, api2wire_String(raw.field), api2wire_String(raw.value)]; - } - if (raw is Filter_Between) { - return [ - 11, - api2wire_String(raw.field), - api2wire_String(raw.from), - api2wire_String(raw.to) - ]; - } - if (raw is Filter_IsNull) { - return [12, api2wire_String(raw.field)]; - } - if (raw is Filter_IsEmpty) { - return [13, api2wire_String(raw.field)]; - } - - throw Exception('unreachable'); - } - - @protected - List api2wire_list_filter(List raw) { - return raw.map(api2wire_filter).toList(); - } - - @protected - List api2wire_list_sort_by(List raw) { - return raw.map(api2wire_sort_by).toList(); - } - - @protected - List api2wire_list_synonyms(List raw) { - return raw.map(api2wire_synonyms).toList(); - } - - @protected - List api2wire_mimir_index_settings(MimirIndexSettings raw) { - return [ - api2wire_opt_String(raw.primaryKey), - api2wire_opt_StringList(raw.searchableFields), - api2wire_StringList(raw.filterableFields), - api2wire_StringList(raw.sortableFields), - api2wire_StringList(raw.rankingRules), - api2wire_StringList(raw.stopWords), - api2wire_list_synonyms(raw.synonyms), - api2wire_bool(raw.typosEnabled), - api2wire_u8(raw.minWordSizeForOneTypo), - api2wire_u8(raw.minWordSizeForTwoTypos), - api2wire_StringList(raw.disallowTyposOnWords), - api2wire_StringList(raw.disallowTyposOnFields) - ]; - } - - @protected - String? api2wire_opt_String(String? raw) { - return raw == null ? null : api2wire_String(raw); - } - - @protected - List? api2wire_opt_StringList(List? raw) { - return raw == null ? null : api2wire_StringList(raw); - } - - @protected - List? api2wire_opt_box_autoadd_filter(Filter? raw) { - return raw == null ? null : api2wire_box_autoadd_filter(raw); - } - - @protected - int? api2wire_opt_box_autoadd_terms_matching_strategy( - TermsMatchingStrategy? raw) { - return raw == null - ? null - : api2wire_box_autoadd_terms_matching_strategy(raw); - } - - @protected - int? api2wire_opt_box_autoadd_u32(int? raw) { - return raw == null ? null : api2wire_box_autoadd_u32(raw); - } - - @protected - List? api2wire_opt_list_sort_by(List? raw) { - return raw == null ? null : api2wire_list_sort_by(raw); - } - - @protected - List api2wire_sort_by(SortBy raw) { - if (raw is SortBy_Asc) { - return [0, api2wire_String(raw.field0)]; - } - if (raw is SortBy_Desc) { - return [1, api2wire_String(raw.field0)]; - } - - throw Exception('unreachable'); - } - - @protected - List api2wire_synonyms(Synonyms raw) { - return [api2wire_String(raw.word), api2wire_StringList(raw.synonyms)]; - } - - @protected - Uint8List api2wire_uint_8_list(Uint8List raw) { - return raw; - } -// Section: finalizer -} - -// Section: WASM wire module - -@JS('wasm_bindgen') -external EmbeddedMilliWasmModule get wasmModule; - -@JS() -@anonymous -class EmbeddedMilliWasmModule implements WasmModule { - external Object /* Promise */ call([String? moduleName]); - external EmbeddedMilliWasmModule bind(dynamic thisArg, String moduleName); - external dynamic /* void */ wire_ensure_instance_initialized( - NativePortType port_, String instance_dir, String? tmp_dir); - - external dynamic /* void */ wire_ensure_index_initialized( - NativePortType port_, String instance_dir, String index_name); - - external dynamic /* void */ wire_add_documents(NativePortType port_, - String instance_dir, String index_name, List documents); - - external dynamic /* void */ wire_delete_documents(NativePortType port_, - String instance_dir, String index_name, List document_ids); - - external dynamic /* void */ wire_delete_all_documents( - NativePortType port_, String instance_dir, String index_name); - - external dynamic /* void */ wire_set_documents(NativePortType port_, - String instance_dir, String index_name, List documents); - - external dynamic /* void */ wire_get_document(NativePortType port_, - String instance_dir, String index_name, String document_id); - - external dynamic /* void */ wire_get_all_documents( - NativePortType port_, String instance_dir, String index_name); - - external dynamic /* void */ wire_search_documents( - NativePortType port_, - String instance_dir, - String index_name, - String? query, - int? limit, - int? offset, - List? sort_criteria, - List? filter, - int? matching_strategy); - - external dynamic /* void */ wire_number_of_documents( - NativePortType port_, String instance_dir, String index_name); - - external dynamic /* void */ wire_get_settings( - NativePortType port_, String instance_dir, String index_name); - - external dynamic /* void */ wire_set_settings(NativePortType port_, - String instance_dir, String index_name, List settings); -} - -// Section: WASM wire connector - -class EmbeddedMilliWire - extends FlutterRustBridgeWasmWireBase { - EmbeddedMilliWire(FutureOr module) - : super(WasmModule.cast(module)); - - void wire_ensure_instance_initialized( - NativePortType port_, String instance_dir, String? tmp_dir) => - wasmModule.wire_ensure_instance_initialized(port_, instance_dir, tmp_dir); - - void wire_ensure_index_initialized( - NativePortType port_, String instance_dir, String index_name) => - wasmModule.wire_ensure_index_initialized(port_, instance_dir, index_name); - - void wire_add_documents(NativePortType port_, String instance_dir, - String index_name, List documents) => - wasmModule.wire_add_documents(port_, instance_dir, index_name, documents); - - void wire_delete_documents(NativePortType port_, String instance_dir, - String index_name, List document_ids) => - wasmModule.wire_delete_documents( - port_, instance_dir, index_name, document_ids); - - void wire_delete_all_documents( - NativePortType port_, String instance_dir, String index_name) => - wasmModule.wire_delete_all_documents(port_, instance_dir, index_name); - - void wire_set_documents(NativePortType port_, String instance_dir, - String index_name, List documents) => - wasmModule.wire_set_documents(port_, instance_dir, index_name, documents); - - void wire_get_document(NativePortType port_, String instance_dir, - String index_name, String document_id) => - wasmModule.wire_get_document( - port_, instance_dir, index_name, document_id); - - void wire_get_all_documents( - NativePortType port_, String instance_dir, String index_name) => - wasmModule.wire_get_all_documents(port_, instance_dir, index_name); - - void wire_search_documents( - NativePortType port_, - String instance_dir, - String index_name, - String? query, - int? limit, - int? offset, - List? sort_criteria, - List? filter, - int? matching_strategy) => - wasmModule.wire_search_documents(port_, instance_dir, index_name, query, - limit, offset, sort_criteria, filter, matching_strategy); - - void wire_number_of_documents( - NativePortType port_, String instance_dir, String index_name) => - wasmModule.wire_number_of_documents(port_, instance_dir, index_name); - - void wire_get_settings( - NativePortType port_, String instance_dir, String index_name) => - wasmModule.wire_get_settings(port_, instance_dir, index_name); - - void wire_set_settings(NativePortType port_, String instance_dir, - String index_name, List settings) => - wasmModule.wire_set_settings(port_, instance_dir, index_name, settings); -} diff --git a/packages/mimir/lib/src/frb_generated.dart b/packages/mimir/lib/src/frb_generated.dart new file mode 100644 index 00000000..ccaf235d --- /dev/null +++ b/packages/mimir/lib/src/frb_generated.dart @@ -0,0 +1,1410 @@ +// This file is automatically generated, so please do not edit it. +// Generated by `flutter_rust_bridge`@ 2.1.0. + +// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field + +import 'api.dart'; +import 'dart:async'; +import 'dart:convert'; +import 'frb_generated.dart'; +import 'frb_generated.io.dart' + if (dart.library.js_interop) 'frb_generated.web.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +/// Main entrypoint of the Rust API +class RustLib extends BaseEntrypoint { + @internal + static final instance = RustLib._(); + + RustLib._(); + + /// Initialize flutter_rust_bridge + static Future init({ + RustLibApi? api, + BaseHandler? handler, + ExternalLibrary? externalLibrary, + }) async { + await instance.initImpl( + api: api, + handler: handler, + externalLibrary: externalLibrary, + ); + } + + /// Dispose flutter_rust_bridge + /// + /// The call to this function is optional, since flutter_rust_bridge (and everything else) + /// is automatically disposed when the app stops. + static void dispose() => instance.disposeImpl(); + + @override + ApiImplConstructor get apiImplConstructor => + RustLibApiImpl.new; + + @override + WireConstructor get wireConstructor => + RustLibWire.fromExternalLibrary; + + @override + Future executeRustInitializers() async {} + + @override + ExternalLibraryLoaderConfig get defaultExternalLibraryLoaderConfig => + kDefaultExternalLibraryLoaderConfig; + + @override + String get codegenVersion => '2.1.0'; + + @override + int get rustContentHash => 1727542745; + + static const kDefaultExternalLibraryLoaderConfig = + ExternalLibraryLoaderConfig( + stem: 'embedded_milli', + ioDirectory: 'native/target/release/', + webPrefix: 'pkg/', + ); +} + +abstract class RustLibApi extends BaseApi { + Future crateApiAddDocuments( + {required String instanceDir, + required String indexName, + required List documents}); + + Future crateApiDeleteAllDocuments( + {required String instanceDir, required String indexName}); + + Future crateApiDeleteDocuments( + {required String instanceDir, + required String indexName, + required List documentIds}); + + Future crateApiEnsureIndexInitialized( + {required String instanceDir, required String indexName}); + + Future crateApiEnsureInstanceInitialized( + {required String instanceDir, String? tmpDir}); + + Future> crateApiGetAllDocuments( + {required String instanceDir, required String indexName}); + + Future crateApiGetDocument( + {required String instanceDir, + required String indexName, + required String documentId}); + + Future crateApiGetSettings( + {required String instanceDir, required String indexName}); + + Future crateApiNumberOfDocuments( + {required String instanceDir, required String indexName}); + + Future> crateApiSearchDocuments( + {required String instanceDir, + required String indexName, + String? query, + int? limit, + int? offset, + List? sortCriteria, + Filter? filter, + TermsMatchingStrategy? matchingStrategy}); + + Future crateApiSetDocuments( + {required String instanceDir, + required String indexName, + required List documents}); + + Future crateApiSetSettings( + {required String instanceDir, + required String indexName, + required MimirIndexSettings settings}); +} + +class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { + RustLibApiImpl({ + required super.handler, + required super.wire, + required super.generalizedFrbRustBinding, + required super.portManager, + }); + + @override + Future crateApiAddDocuments( + {required String instanceDir, + required String indexName, + required List documents}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_String(indexName); + var arg2 = cst_encode_list_String(documents); + return wire.wire__crate__api__add_documents(port_, arg0, arg1, arg2); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_unit, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiAddDocumentsConstMeta, + argValues: [instanceDir, indexName, documents], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiAddDocumentsConstMeta => const TaskConstMeta( + debugName: "add_documents", + argNames: ["instanceDir", "indexName", "documents"], + ); + + @override + Future crateApiDeleteAllDocuments( + {required String instanceDir, required String indexName}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_String(indexName); + return wire.wire__crate__api__delete_all_documents(port_, arg0, arg1); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_unit, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiDeleteAllDocumentsConstMeta, + argValues: [instanceDir, indexName], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiDeleteAllDocumentsConstMeta => const TaskConstMeta( + debugName: "delete_all_documents", + argNames: ["instanceDir", "indexName"], + ); + + @override + Future crateApiDeleteDocuments( + {required String instanceDir, + required String indexName, + required List documentIds}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_String(indexName); + var arg2 = cst_encode_list_String(documentIds); + return wire.wire__crate__api__delete_documents(port_, arg0, arg1, arg2); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_unit, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiDeleteDocumentsConstMeta, + argValues: [instanceDir, indexName, documentIds], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiDeleteDocumentsConstMeta => const TaskConstMeta( + debugName: "delete_documents", + argNames: ["instanceDir", "indexName", "documentIds"], + ); + + @override + Future crateApiEnsureIndexInitialized( + {required String instanceDir, required String indexName}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_String(indexName); + return wire.wire__crate__api__ensure_index_initialized( + port_, arg0, arg1); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_unit, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiEnsureIndexInitializedConstMeta, + argValues: [instanceDir, indexName], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiEnsureIndexInitializedConstMeta => + const TaskConstMeta( + debugName: "ensure_index_initialized", + argNames: ["instanceDir", "indexName"], + ); + + @override + Future crateApiEnsureInstanceInitialized( + {required String instanceDir, String? tmpDir}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_opt_String(tmpDir); + return wire.wire__crate__api__ensure_instance_initialized( + port_, arg0, arg1); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_unit, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiEnsureInstanceInitializedConstMeta, + argValues: [instanceDir, tmpDir], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiEnsureInstanceInitializedConstMeta => + const TaskConstMeta( + debugName: "ensure_instance_initialized", + argNames: ["instanceDir", "tmpDir"], + ); + + @override + Future> crateApiGetAllDocuments( + {required String instanceDir, required String indexName}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_String(indexName); + return wire.wire__crate__api__get_all_documents(port_, arg0, arg1); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_list_String, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiGetAllDocumentsConstMeta, + argValues: [instanceDir, indexName], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiGetAllDocumentsConstMeta => const TaskConstMeta( + debugName: "get_all_documents", + argNames: ["instanceDir", "indexName"], + ); + + @override + Future crateApiGetDocument( + {required String instanceDir, + required String indexName, + required String documentId}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_String(indexName); + var arg2 = cst_encode_String(documentId); + return wire.wire__crate__api__get_document(port_, arg0, arg1, arg2); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_opt_String, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiGetDocumentConstMeta, + argValues: [instanceDir, indexName, documentId], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiGetDocumentConstMeta => const TaskConstMeta( + debugName: "get_document", + argNames: ["instanceDir", "indexName", "documentId"], + ); + + @override + Future crateApiGetSettings( + {required String instanceDir, required String indexName}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_String(indexName); + return wire.wire__crate__api__get_settings(port_, arg0, arg1); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_mimir_index_settings, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiGetSettingsConstMeta, + argValues: [instanceDir, indexName], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiGetSettingsConstMeta => const TaskConstMeta( + debugName: "get_settings", + argNames: ["instanceDir", "indexName"], + ); + + @override + Future crateApiNumberOfDocuments( + {required String instanceDir, required String indexName}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_String(indexName); + return wire.wire__crate__api__number_of_documents(port_, arg0, arg1); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_u_64, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiNumberOfDocumentsConstMeta, + argValues: [instanceDir, indexName], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiNumberOfDocumentsConstMeta => const TaskConstMeta( + debugName: "number_of_documents", + argNames: ["instanceDir", "indexName"], + ); + + @override + Future> crateApiSearchDocuments( + {required String instanceDir, + required String indexName, + String? query, + int? limit, + int? offset, + List? sortCriteria, + Filter? filter, + TermsMatchingStrategy? matchingStrategy}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_String(indexName); + var arg2 = cst_encode_opt_String(query); + var arg3 = cst_encode_opt_box_autoadd_u_32(limit); + var arg4 = cst_encode_opt_box_autoadd_u_32(offset); + var arg5 = cst_encode_opt_list_sort_by(sortCriteria); + var arg6 = cst_encode_opt_box_autoadd_filter(filter); + var arg7 = cst_encode_opt_box_autoadd_terms_matching_strategy( + matchingStrategy); + return wire.wire__crate__api__search_documents( + port_, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_list_String, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiSearchDocumentsConstMeta, + argValues: [ + instanceDir, + indexName, + query, + limit, + offset, + sortCriteria, + filter, + matchingStrategy + ], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiSearchDocumentsConstMeta => const TaskConstMeta( + debugName: "search_documents", + argNames: [ + "instanceDir", + "indexName", + "query", + "limit", + "offset", + "sortCriteria", + "filter", + "matchingStrategy" + ], + ); + + @override + Future crateApiSetDocuments( + {required String instanceDir, + required String indexName, + required List documents}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_String(indexName); + var arg2 = cst_encode_list_String(documents); + return wire.wire__crate__api__set_documents(port_, arg0, arg1, arg2); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_unit, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiSetDocumentsConstMeta, + argValues: [instanceDir, indexName, documents], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiSetDocumentsConstMeta => const TaskConstMeta( + debugName: "set_documents", + argNames: ["instanceDir", "indexName", "documents"], + ); + + @override + Future crateApiSetSettings( + {required String instanceDir, + required String indexName, + required MimirIndexSettings settings}) { + return handler.executeNormal(NormalTask( + callFfi: (port_) { + var arg0 = cst_encode_String(instanceDir); + var arg1 = cst_encode_String(indexName); + var arg2 = cst_encode_box_autoadd_mimir_index_settings(settings); + return wire.wire__crate__api__set_settings(port_, arg0, arg1, arg2); + }, + codec: DcoCodec( + decodeSuccessData: dco_decode_unit, + decodeErrorData: dco_decode_AnyhowException, + ), + constMeta: kCrateApiSetSettingsConstMeta, + argValues: [instanceDir, indexName, settings], + apiImpl: this, + )); + } + + TaskConstMeta get kCrateApiSetSettingsConstMeta => const TaskConstMeta( + debugName: "set_settings", + argNames: ["instanceDir", "indexName", "settings"], + ); + + @protected + AnyhowException dco_decode_AnyhowException(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return AnyhowException(raw as String); + } + + @protected + String dco_decode_String(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as String; + } + + @protected + bool dco_decode_bool(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as bool; + } + + @protected + Filter dco_decode_box_autoadd_filter(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_filter(raw); + } + + @protected + MimirIndexSettings dco_decode_box_autoadd_mimir_index_settings(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_mimir_index_settings(raw); + } + + @protected + TermsMatchingStrategy dco_decode_box_autoadd_terms_matching_strategy( + dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_terms_matching_strategy(raw); + } + + @protected + int dco_decode_box_autoadd_u_32(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as int; + } + + @protected + Filter dco_decode_box_filter(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_filter(raw); + } + + @protected + Filter dco_decode_filter(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + switch (raw[0]) { + case 0: + return Filter_Or( + dco_decode_list_filter(raw[1]), + ); + case 1: + return Filter_And( + dco_decode_list_filter(raw[1]), + ); + case 2: + return Filter_Not( + dco_decode_box_filter(raw[1]), + ); + case 3: + return Filter_Exists( + field: dco_decode_String(raw[1]), + ); + case 4: + return Filter_InValues( + field: dco_decode_String(raw[1]), + values: dco_decode_list_String(raw[2]), + ); + case 5: + return Filter_GreaterThan( + field: dco_decode_String(raw[1]), + value: dco_decode_String(raw[2]), + ); + case 6: + return Filter_GreaterThanOrEqual( + field: dco_decode_String(raw[1]), + value: dco_decode_String(raw[2]), + ); + case 7: + return Filter_Equal( + field: dco_decode_String(raw[1]), + value: dco_decode_String(raw[2]), + ); + case 8: + return Filter_NotEqual( + field: dco_decode_String(raw[1]), + value: dco_decode_String(raw[2]), + ); + case 9: + return Filter_LessThan( + field: dco_decode_String(raw[1]), + value: dco_decode_String(raw[2]), + ); + case 10: + return Filter_LessThanOrEqual( + field: dco_decode_String(raw[1]), + value: dco_decode_String(raw[2]), + ); + case 11: + return Filter_Between( + field: dco_decode_String(raw[1]), + from: dco_decode_String(raw[2]), + to: dco_decode_String(raw[3]), + ); + case 12: + return Filter_IsNull( + field: dco_decode_String(raw[1]), + ); + case 13: + return Filter_IsEmpty( + field: dco_decode_String(raw[1]), + ); + default: + throw Exception("unreachable"); + } + } + + @protected + int dco_decode_i_32(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as int; + } + + @protected + List dco_decode_list_String(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_String).toList(); + } + + @protected + List dco_decode_list_filter(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_filter).toList(); + } + + @protected + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as Uint8List; + } + + @protected + List dco_decode_list_sort_by(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_sort_by).toList(); + } + + @protected + List dco_decode_list_synonyms(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_synonyms).toList(); + } + + @protected + MimirIndexSettings dco_decode_mimir_index_settings(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 12) + throw Exception('unexpected arr length: expect 12 but see ${arr.length}'); + return MimirIndexSettings( + primaryKey: dco_decode_opt_String(arr[0]), + searchableFields: dco_decode_opt_list_String(arr[1]), + filterableFields: dco_decode_list_String(arr[2]), + sortableFields: dco_decode_list_String(arr[3]), + rankingRules: dco_decode_list_String(arr[4]), + stopWords: dco_decode_list_String(arr[5]), + synonyms: dco_decode_list_synonyms(arr[6]), + typosEnabled: dco_decode_bool(arr[7]), + minWordSizeForOneTypo: dco_decode_u_8(arr[8]), + minWordSizeForTwoTypos: dco_decode_u_8(arr[9]), + disallowTyposOnWords: dco_decode_list_String(arr[10]), + disallowTyposOnFields: dco_decode_list_String(arr[11]), + ); + } + + @protected + String? dco_decode_opt_String(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_String(raw); + } + + @protected + Filter? dco_decode_opt_box_autoadd_filter(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_box_autoadd_filter(raw); + } + + @protected + TermsMatchingStrategy? dco_decode_opt_box_autoadd_terms_matching_strategy( + dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null + ? null + : dco_decode_box_autoadd_terms_matching_strategy(raw); + } + + @protected + int? dco_decode_opt_box_autoadd_u_32(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_box_autoadd_u_32(raw); + } + + @protected + List? dco_decode_opt_list_String(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_list_String(raw); + } + + @protected + List? dco_decode_opt_list_sort_by(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_list_sort_by(raw); + } + + @protected + SortBy dco_decode_sort_by(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + switch (raw[0]) { + case 0: + return SortBy_Asc( + dco_decode_String(raw[1]), + ); + case 1: + return SortBy_Desc( + dco_decode_String(raw[1]), + ); + default: + throw Exception("unreachable"); + } + } + + @protected + Synonyms dco_decode_synonyms(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 2) + throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); + return Synonyms( + word: dco_decode_String(arr[0]), + synonyms: dco_decode_list_String(arr[1]), + ); + } + + @protected + TermsMatchingStrategy dco_decode_terms_matching_strategy(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TermsMatchingStrategy.values[raw as int]; + } + + @protected + int dco_decode_u_32(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as int; + } + + @protected + BigInt dco_decode_u_64(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dcoDecodeU64(raw); + } + + @protected + int dco_decode_u_8(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as int; + } + + @protected + void dco_decode_unit(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return; + } + + @protected + AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_String(deserializer); + return AnyhowException(inner); + } + + @protected + String sse_decode_String(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_list_prim_u_8_strict(deserializer); + return utf8.decoder.convert(inner); + } + + @protected + bool sse_decode_bool(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint8() != 0; + } + + @protected + Filter sse_decode_box_autoadd_filter(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_filter(deserializer)); + } + + @protected + MimirIndexSettings sse_decode_box_autoadd_mimir_index_settings( + SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_mimir_index_settings(deserializer)); + } + + @protected + TermsMatchingStrategy sse_decode_box_autoadd_terms_matching_strategy( + SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_terms_matching_strategy(deserializer)); + } + + @protected + int sse_decode_box_autoadd_u_32(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_u_32(deserializer)); + } + + @protected + Filter sse_decode_box_filter(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_filter(deserializer)); + } + + @protected + Filter sse_decode_filter(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var tag_ = sse_decode_i_32(deserializer); + switch (tag_) { + case 0: + var var_field0 = sse_decode_list_filter(deserializer); + return Filter_Or(var_field0); + case 1: + var var_field0 = sse_decode_list_filter(deserializer); + return Filter_And(var_field0); + case 2: + var var_field0 = sse_decode_box_filter(deserializer); + return Filter_Not(var_field0); + case 3: + var var_field = sse_decode_String(deserializer); + return Filter_Exists(field: var_field); + case 4: + var var_field = sse_decode_String(deserializer); + var var_values = sse_decode_list_String(deserializer); + return Filter_InValues(field: var_field, values: var_values); + case 5: + var var_field = sse_decode_String(deserializer); + var var_value = sse_decode_String(deserializer); + return Filter_GreaterThan(field: var_field, value: var_value); + case 6: + var var_field = sse_decode_String(deserializer); + var var_value = sse_decode_String(deserializer); + return Filter_GreaterThanOrEqual(field: var_field, value: var_value); + case 7: + var var_field = sse_decode_String(deserializer); + var var_value = sse_decode_String(deserializer); + return Filter_Equal(field: var_field, value: var_value); + case 8: + var var_field = sse_decode_String(deserializer); + var var_value = sse_decode_String(deserializer); + return Filter_NotEqual(field: var_field, value: var_value); + case 9: + var var_field = sse_decode_String(deserializer); + var var_value = sse_decode_String(deserializer); + return Filter_LessThan(field: var_field, value: var_value); + case 10: + var var_field = sse_decode_String(deserializer); + var var_value = sse_decode_String(deserializer); + return Filter_LessThanOrEqual(field: var_field, value: var_value); + case 11: + var var_field = sse_decode_String(deserializer); + var var_from = sse_decode_String(deserializer); + var var_to = sse_decode_String(deserializer); + return Filter_Between(field: var_field, from: var_from, to: var_to); + case 12: + var var_field = sse_decode_String(deserializer); + return Filter_IsNull(field: var_field); + case 13: + var var_field = sse_decode_String(deserializer); + return Filter_IsEmpty(field: var_field); + default: + throw UnimplementedError(''); + } + } + + @protected + int sse_decode_i_32(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getInt32(); + } + + @protected + List sse_decode_list_String(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var len_ = sse_decode_i_32(deserializer); + var ans_ = []; + for (var idx_ = 0; idx_ < len_; ++idx_) { + ans_.add(sse_decode_String(deserializer)); + } + return ans_; + } + + @protected + List sse_decode_list_filter(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var len_ = sse_decode_i_32(deserializer); + var ans_ = []; + for (var idx_ = 0; idx_ < len_; ++idx_) { + ans_.add(sse_decode_filter(deserializer)); + } + return ans_; + } + + @protected + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var len_ = sse_decode_i_32(deserializer); + return deserializer.buffer.getUint8List(len_); + } + + @protected + List sse_decode_list_sort_by(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var len_ = sse_decode_i_32(deserializer); + var ans_ = []; + for (var idx_ = 0; idx_ < len_; ++idx_) { + ans_.add(sse_decode_sort_by(deserializer)); + } + return ans_; + } + + @protected + List sse_decode_list_synonyms(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var len_ = sse_decode_i_32(deserializer); + var ans_ = []; + for (var idx_ = 0; idx_ < len_; ++idx_) { + ans_.add(sse_decode_synonyms(deserializer)); + } + return ans_; + } + + @protected + MimirIndexSettings sse_decode_mimir_index_settings( + SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_primaryKey = sse_decode_opt_String(deserializer); + var var_searchableFields = sse_decode_opt_list_String(deserializer); + var var_filterableFields = sse_decode_list_String(deserializer); + var var_sortableFields = sse_decode_list_String(deserializer); + var var_rankingRules = sse_decode_list_String(deserializer); + var var_stopWords = sse_decode_list_String(deserializer); + var var_synonyms = sse_decode_list_synonyms(deserializer); + var var_typosEnabled = sse_decode_bool(deserializer); + var var_minWordSizeForOneTypo = sse_decode_u_8(deserializer); + var var_minWordSizeForTwoTypos = sse_decode_u_8(deserializer); + var var_disallowTyposOnWords = sse_decode_list_String(deserializer); + var var_disallowTyposOnFields = sse_decode_list_String(deserializer); + return MimirIndexSettings( + primaryKey: var_primaryKey, + searchableFields: var_searchableFields, + filterableFields: var_filterableFields, + sortableFields: var_sortableFields, + rankingRules: var_rankingRules, + stopWords: var_stopWords, + synonyms: var_synonyms, + typosEnabled: var_typosEnabled, + minWordSizeForOneTypo: var_minWordSizeForOneTypo, + minWordSizeForTwoTypos: var_minWordSizeForTwoTypos, + disallowTyposOnWords: var_disallowTyposOnWords, + disallowTyposOnFields: var_disallowTyposOnFields); + } + + @protected + String? sse_decode_opt_String(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_String(deserializer)); + } else { + return null; + } + } + + @protected + Filter? sse_decode_opt_box_autoadd_filter(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_filter(deserializer)); + } else { + return null; + } + } + + @protected + TermsMatchingStrategy? sse_decode_opt_box_autoadd_terms_matching_strategy( + SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_terms_matching_strategy(deserializer)); + } else { + return null; + } + } + + @protected + int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_u_32(deserializer)); + } else { + return null; + } + } + + @protected + List? sse_decode_opt_list_String(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_list_String(deserializer)); + } else { + return null; + } + } + + @protected + List? sse_decode_opt_list_sort_by(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_list_sort_by(deserializer)); + } else { + return null; + } + } + + @protected + SortBy sse_decode_sort_by(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var tag_ = sse_decode_i_32(deserializer); + switch (tag_) { + case 0: + var var_field0 = sse_decode_String(deserializer); + return SortBy_Asc(var_field0); + case 1: + var var_field0 = sse_decode_String(deserializer); + return SortBy_Desc(var_field0); + default: + throw UnimplementedError(''); + } + } + + @protected + Synonyms sse_decode_synonyms(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_word = sse_decode_String(deserializer); + var var_synonyms = sse_decode_list_String(deserializer); + return Synonyms(word: var_word, synonyms: var_synonyms); + } + + @protected + TermsMatchingStrategy sse_decode_terms_matching_strategy( + SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_i_32(deserializer); + return TermsMatchingStrategy.values[inner]; + } + + @protected + int sse_decode_u_32(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint32(); + } + + @protected + BigInt sse_decode_u_64(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getBigUint64(); + } + + @protected + int sse_decode_u_8(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint8(); + } + + @protected + void sse_decode_unit(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + } + + @protected + bool cst_encode_bool(bool raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw; + } + + @protected + int cst_encode_i_32(int raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw; + } + + @protected + int cst_encode_terms_matching_strategy(TermsMatchingStrategy raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return cst_encode_i_32(raw.index); + } + + @protected + int cst_encode_u_32(int raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw; + } + + @protected + int cst_encode_u_8(int raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw; + } + + @protected + void cst_encode_unit(void raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw; + } + + @protected + void sse_encode_AnyhowException( + AnyhowException self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.message, serializer); + } + + @protected + void sse_encode_String(String self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_list_prim_u_8_strict(utf8.encoder.convert(self), serializer); + } + + @protected + void sse_encode_bool(bool self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putUint8(self ? 1 : 0); + } + + @protected + void sse_encode_box_autoadd_filter(Filter self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_filter(self, serializer); + } + + @protected + void sse_encode_box_autoadd_mimir_index_settings( + MimirIndexSettings self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_mimir_index_settings(self, serializer); + } + + @protected + void sse_encode_box_autoadd_terms_matching_strategy( + TermsMatchingStrategy self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_terms_matching_strategy(self, serializer); + } + + @protected + void sse_encode_box_autoadd_u_32(int self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_u_32(self, serializer); + } + + @protected + void sse_encode_box_filter(Filter self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_filter(self, serializer); + } + + @protected + void sse_encode_filter(Filter self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + switch (self) { + case Filter_Or(field0: final field0): + sse_encode_i_32(0, serializer); + sse_encode_list_filter(field0, serializer); + case Filter_And(field0: final field0): + sse_encode_i_32(1, serializer); + sse_encode_list_filter(field0, serializer); + case Filter_Not(field0: final field0): + sse_encode_i_32(2, serializer); + sse_encode_box_filter(field0, serializer); + case Filter_Exists(field: final field): + sse_encode_i_32(3, serializer); + sse_encode_String(field, serializer); + case Filter_InValues(field: final field, values: final values): + sse_encode_i_32(4, serializer); + sse_encode_String(field, serializer); + sse_encode_list_String(values, serializer); + case Filter_GreaterThan(field: final field, value: final value): + sse_encode_i_32(5, serializer); + sse_encode_String(field, serializer); + sse_encode_String(value, serializer); + case Filter_GreaterThanOrEqual(field: final field, value: final value): + sse_encode_i_32(6, serializer); + sse_encode_String(field, serializer); + sse_encode_String(value, serializer); + case Filter_Equal(field: final field, value: final value): + sse_encode_i_32(7, serializer); + sse_encode_String(field, serializer); + sse_encode_String(value, serializer); + case Filter_NotEqual(field: final field, value: final value): + sse_encode_i_32(8, serializer); + sse_encode_String(field, serializer); + sse_encode_String(value, serializer); + case Filter_LessThan(field: final field, value: final value): + sse_encode_i_32(9, serializer); + sse_encode_String(field, serializer); + sse_encode_String(value, serializer); + case Filter_LessThanOrEqual(field: final field, value: final value): + sse_encode_i_32(10, serializer); + sse_encode_String(field, serializer); + sse_encode_String(value, serializer); + case Filter_Between(field: final field, from: final from, to: final to): + sse_encode_i_32(11, serializer); + sse_encode_String(field, serializer); + sse_encode_String(from, serializer); + sse_encode_String(to, serializer); + case Filter_IsNull(field: final field): + sse_encode_i_32(12, serializer); + sse_encode_String(field, serializer); + case Filter_IsEmpty(field: final field): + sse_encode_i_32(13, serializer); + sse_encode_String(field, serializer); + default: + throw UnimplementedError(''); + } + } + + @protected + void sse_encode_i_32(int self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putInt32(self); + } + + @protected + void sse_encode_list_String(List self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + for (final item in self) { + sse_encode_String(item, serializer); + } + } + + @protected + void sse_encode_list_filter(List self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + for (final item in self) { + sse_encode_filter(item, serializer); + } + } + + @protected + void sse_encode_list_prim_u_8_strict( + Uint8List self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + serializer.buffer.putUint8List(self); + } + + @protected + void sse_encode_list_sort_by(List self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + for (final item in self) { + sse_encode_sort_by(item, serializer); + } + } + + @protected + void sse_encode_list_synonyms(List self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + for (final item in self) { + sse_encode_synonyms(item, serializer); + } + } + + @protected + void sse_encode_mimir_index_settings( + MimirIndexSettings self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_opt_String(self.primaryKey, serializer); + sse_encode_opt_list_String(self.searchableFields, serializer); + sse_encode_list_String(self.filterableFields, serializer); + sse_encode_list_String(self.sortableFields, serializer); + sse_encode_list_String(self.rankingRules, serializer); + sse_encode_list_String(self.stopWords, serializer); + sse_encode_list_synonyms(self.synonyms, serializer); + sse_encode_bool(self.typosEnabled, serializer); + sse_encode_u_8(self.minWordSizeForOneTypo, serializer); + sse_encode_u_8(self.minWordSizeForTwoTypos, serializer); + sse_encode_list_String(self.disallowTyposOnWords, serializer); + sse_encode_list_String(self.disallowTyposOnFields, serializer); + } + + @protected + void sse_encode_opt_String(String? self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_String(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_filter( + Filter? self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_box_autoadd_filter(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_terms_matching_strategy( + TermsMatchingStrategy? self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_box_autoadd_terms_matching_strategy(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_box_autoadd_u_32(self, serializer); + } + } + + @protected + void sse_encode_opt_list_String( + List? self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_list_String(self, serializer); + } + } + + @protected + void sse_encode_opt_list_sort_by( + List? self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_list_sort_by(self, serializer); + } + } + + @protected + void sse_encode_sort_by(SortBy self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + switch (self) { + case SortBy_Asc(field0: final field0): + sse_encode_i_32(0, serializer); + sse_encode_String(field0, serializer); + case SortBy_Desc(field0: final field0): + sse_encode_i_32(1, serializer); + sse_encode_String(field0, serializer); + default: + throw UnimplementedError(''); + } + } + + @protected + void sse_encode_synonyms(Synonyms self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.word, serializer); + sse_encode_list_String(self.synonyms, serializer); + } + + @protected + void sse_encode_terms_matching_strategy( + TermsMatchingStrategy self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.index, serializer); + } + + @protected + void sse_encode_u_32(int self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putUint32(self); + } + + @protected + void sse_encode_u_64(BigInt self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putBigUint64(self); + } + + @protected + void sse_encode_u_8(int self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putUint8(self); + } + + @protected + void sse_encode_unit(void self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + } +} diff --git a/packages/mimir/lib/src/frb_generated.io.dart b/packages/mimir/lib/src/frb_generated.io.dart new file mode 100644 index 00000000..9d9f3350 --- /dev/null +++ b/packages/mimir/lib/src/frb_generated.io.dart @@ -0,0 +1,1379 @@ +// This file is automatically generated, so please do not edit it. +// Generated by `flutter_rust_bridge`@ 2.1.0. + +// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field + +import 'api.dart'; +import 'dart:async'; +import 'dart:convert'; +import 'dart:ffi' as ffi; +import 'frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; + +abstract class RustLibApiImplPlatform extends BaseApiImpl { + RustLibApiImplPlatform({ + required super.handler, + required super.wire, + required super.generalizedFrbRustBinding, + required super.portManager, + }); + + @protected + AnyhowException dco_decode_AnyhowException(dynamic raw); + + @protected + String dco_decode_String(dynamic raw); + + @protected + bool dco_decode_bool(dynamic raw); + + @protected + Filter dco_decode_box_autoadd_filter(dynamic raw); + + @protected + MimirIndexSettings dco_decode_box_autoadd_mimir_index_settings(dynamic raw); + + @protected + TermsMatchingStrategy dco_decode_box_autoadd_terms_matching_strategy( + dynamic raw); + + @protected + int dco_decode_box_autoadd_u_32(dynamic raw); + + @protected + Filter dco_decode_box_filter(dynamic raw); + + @protected + Filter dco_decode_filter(dynamic raw); + + @protected + int dco_decode_i_32(dynamic raw); + + @protected + List dco_decode_list_String(dynamic raw); + + @protected + List dco_decode_list_filter(dynamic raw); + + @protected + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); + + @protected + List dco_decode_list_sort_by(dynamic raw); + + @protected + List dco_decode_list_synonyms(dynamic raw); + + @protected + MimirIndexSettings dco_decode_mimir_index_settings(dynamic raw); + + @protected + String? dco_decode_opt_String(dynamic raw); + + @protected + Filter? dco_decode_opt_box_autoadd_filter(dynamic raw); + + @protected + TermsMatchingStrategy? dco_decode_opt_box_autoadd_terms_matching_strategy( + dynamic raw); + + @protected + int? dco_decode_opt_box_autoadd_u_32(dynamic raw); + + @protected + List? dco_decode_opt_list_String(dynamic raw); + + @protected + List? dco_decode_opt_list_sort_by(dynamic raw); + + @protected + SortBy dco_decode_sort_by(dynamic raw); + + @protected + Synonyms dco_decode_synonyms(dynamic raw); + + @protected + TermsMatchingStrategy dco_decode_terms_matching_strategy(dynamic raw); + + @protected + int dco_decode_u_32(dynamic raw); + + @protected + BigInt dco_decode_u_64(dynamic raw); + + @protected + int dco_decode_u_8(dynamic raw); + + @protected + void dco_decode_unit(dynamic raw); + + @protected + AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer); + + @protected + String sse_decode_String(SseDeserializer deserializer); + + @protected + bool sse_decode_bool(SseDeserializer deserializer); + + @protected + Filter sse_decode_box_autoadd_filter(SseDeserializer deserializer); + + @protected + MimirIndexSettings sse_decode_box_autoadd_mimir_index_settings( + SseDeserializer deserializer); + + @protected + TermsMatchingStrategy sse_decode_box_autoadd_terms_matching_strategy( + SseDeserializer deserializer); + + @protected + int sse_decode_box_autoadd_u_32(SseDeserializer deserializer); + + @protected + Filter sse_decode_box_filter(SseDeserializer deserializer); + + @protected + Filter sse_decode_filter(SseDeserializer deserializer); + + @protected + int sse_decode_i_32(SseDeserializer deserializer); + + @protected + List sse_decode_list_String(SseDeserializer deserializer); + + @protected + List sse_decode_list_filter(SseDeserializer deserializer); + + @protected + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); + + @protected + List sse_decode_list_sort_by(SseDeserializer deserializer); + + @protected + List sse_decode_list_synonyms(SseDeserializer deserializer); + + @protected + MimirIndexSettings sse_decode_mimir_index_settings( + SseDeserializer deserializer); + + @protected + String? sse_decode_opt_String(SseDeserializer deserializer); + + @protected + Filter? sse_decode_opt_box_autoadd_filter(SseDeserializer deserializer); + + @protected + TermsMatchingStrategy? sse_decode_opt_box_autoadd_terms_matching_strategy( + SseDeserializer deserializer); + + @protected + int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer); + + @protected + List? sse_decode_opt_list_String(SseDeserializer deserializer); + + @protected + List? sse_decode_opt_list_sort_by(SseDeserializer deserializer); + + @protected + SortBy sse_decode_sort_by(SseDeserializer deserializer); + + @protected + Synonyms sse_decode_synonyms(SseDeserializer deserializer); + + @protected + TermsMatchingStrategy sse_decode_terms_matching_strategy( + SseDeserializer deserializer); + + @protected + int sse_decode_u_32(SseDeserializer deserializer); + + @protected + BigInt sse_decode_u_64(SseDeserializer deserializer); + + @protected + int sse_decode_u_8(SseDeserializer deserializer); + + @protected + void sse_decode_unit(SseDeserializer deserializer); + + @protected + ffi.Pointer cst_encode_AnyhowException( + AnyhowException raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + throw UnimplementedError(); + } + + @protected + ffi.Pointer cst_encode_String(String raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return cst_encode_list_prim_u_8_strict(utf8.encoder.convert(raw)); + } + + @protected + ffi.Pointer cst_encode_box_autoadd_filter(Filter raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + final ptr = wire.cst_new_box_autoadd_filter(); + cst_api_fill_to_wire_filter(raw, ptr.ref); + return ptr; + } + + @protected + ffi.Pointer + cst_encode_box_autoadd_mimir_index_settings(MimirIndexSettings raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + final ptr = wire.cst_new_box_autoadd_mimir_index_settings(); + cst_api_fill_to_wire_mimir_index_settings(raw, ptr.ref); + return ptr; + } + + @protected + ffi.Pointer cst_encode_box_autoadd_terms_matching_strategy( + TermsMatchingStrategy raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return wire.cst_new_box_autoadd_terms_matching_strategy( + cst_encode_terms_matching_strategy(raw)); + } + + @protected + ffi.Pointer cst_encode_box_autoadd_u_32(int raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return wire.cst_new_box_autoadd_u_32(cst_encode_u_32(raw)); + } + + @protected + ffi.Pointer cst_encode_box_filter(Filter raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + final ptr = wire.cst_new_box_filter(); + cst_api_fill_to_wire_filter(raw, ptr.ref); + return ptr; + } + + @protected + ffi.Pointer cst_encode_list_String(List raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + final ans = wire.cst_new_list_String(raw.length); + for (var i = 0; i < raw.length; ++i) { + ans.ref.ptr[i] = cst_encode_String(raw[i]); + } + return ans; + } + + @protected + ffi.Pointer cst_encode_list_filter(List raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + final ans = wire.cst_new_list_filter(raw.length); + for (var i = 0; i < raw.length; ++i) { + cst_api_fill_to_wire_filter(raw[i], ans.ref.ptr[i]); + } + return ans; + } + + @protected + ffi.Pointer cst_encode_list_prim_u_8_strict( + Uint8List raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + final ans = wire.cst_new_list_prim_u_8_strict(raw.length); + ans.ref.ptr.asTypedList(raw.length).setAll(0, raw); + return ans; + } + + @protected + ffi.Pointer cst_encode_list_sort_by(List raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + final ans = wire.cst_new_list_sort_by(raw.length); + for (var i = 0; i < raw.length; ++i) { + cst_api_fill_to_wire_sort_by(raw[i], ans.ref.ptr[i]); + } + return ans; + } + + @protected + ffi.Pointer cst_encode_list_synonyms( + List raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + final ans = wire.cst_new_list_synonyms(raw.length); + for (var i = 0; i < raw.length; ++i) { + cst_api_fill_to_wire_synonyms(raw[i], ans.ref.ptr[i]); + } + return ans; + } + + @protected + ffi.Pointer cst_encode_opt_String( + String? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null ? ffi.nullptr : cst_encode_String(raw); + } + + @protected + ffi.Pointer cst_encode_opt_box_autoadd_filter(Filter? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null ? ffi.nullptr : cst_encode_box_autoadd_filter(raw); + } + + @protected + ffi.Pointer cst_encode_opt_box_autoadd_terms_matching_strategy( + TermsMatchingStrategy? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null + ? ffi.nullptr + : cst_encode_box_autoadd_terms_matching_strategy(raw); + } + + @protected + ffi.Pointer cst_encode_opt_box_autoadd_u_32(int? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null ? ffi.nullptr : cst_encode_box_autoadd_u_32(raw); + } + + @protected + ffi.Pointer cst_encode_opt_list_String( + List? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null ? ffi.nullptr : cst_encode_list_String(raw); + } + + @protected + ffi.Pointer cst_encode_opt_list_sort_by( + List? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null ? ffi.nullptr : cst_encode_list_sort_by(raw); + } + + @protected + int cst_encode_u_64(BigInt raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw.toSigned(64).toInt(); + } + + @protected + void cst_api_fill_to_wire_box_autoadd_filter( + Filter apiObj, ffi.Pointer wireObj) { + cst_api_fill_to_wire_filter(apiObj, wireObj.ref); + } + + @protected + void cst_api_fill_to_wire_box_autoadd_mimir_index_settings( + MimirIndexSettings apiObj, + ffi.Pointer wireObj) { + cst_api_fill_to_wire_mimir_index_settings(apiObj, wireObj.ref); + } + + @protected + void cst_api_fill_to_wire_box_filter( + Filter apiObj, ffi.Pointer wireObj) { + cst_api_fill_to_wire_filter(apiObj, wireObj.ref); + } + + @protected + void cst_api_fill_to_wire_filter(Filter apiObj, wire_cst_filter wireObj) { + if (apiObj is Filter_Or) { + var pre_field0 = cst_encode_list_filter(apiObj.field0); + wireObj.tag = 0; + wireObj.kind.Or.field0 = pre_field0; + return; + } + if (apiObj is Filter_And) { + var pre_field0 = cst_encode_list_filter(apiObj.field0); + wireObj.tag = 1; + wireObj.kind.And.field0 = pre_field0; + return; + } + if (apiObj is Filter_Not) { + var pre_field0 = cst_encode_box_filter(apiObj.field0); + wireObj.tag = 2; + wireObj.kind.Not.field0 = pre_field0; + return; + } + if (apiObj is Filter_Exists) { + var pre_field = cst_encode_String(apiObj.field); + wireObj.tag = 3; + wireObj.kind.Exists.field = pre_field; + return; + } + if (apiObj is Filter_InValues) { + var pre_field = cst_encode_String(apiObj.field); + var pre_values = cst_encode_list_String(apiObj.values); + wireObj.tag = 4; + wireObj.kind.InValues.field = pre_field; + wireObj.kind.InValues.values = pre_values; + return; + } + if (apiObj is Filter_GreaterThan) { + var pre_field = cst_encode_String(apiObj.field); + var pre_value = cst_encode_String(apiObj.value); + wireObj.tag = 5; + wireObj.kind.GreaterThan.field = pre_field; + wireObj.kind.GreaterThan.value = pre_value; + return; + } + if (apiObj is Filter_GreaterThanOrEqual) { + var pre_field = cst_encode_String(apiObj.field); + var pre_value = cst_encode_String(apiObj.value); + wireObj.tag = 6; + wireObj.kind.GreaterThanOrEqual.field = pre_field; + wireObj.kind.GreaterThanOrEqual.value = pre_value; + return; + } + if (apiObj is Filter_Equal) { + var pre_field = cst_encode_String(apiObj.field); + var pre_value = cst_encode_String(apiObj.value); + wireObj.tag = 7; + wireObj.kind.Equal.field = pre_field; + wireObj.kind.Equal.value = pre_value; + return; + } + if (apiObj is Filter_NotEqual) { + var pre_field = cst_encode_String(apiObj.field); + var pre_value = cst_encode_String(apiObj.value); + wireObj.tag = 8; + wireObj.kind.NotEqual.field = pre_field; + wireObj.kind.NotEqual.value = pre_value; + return; + } + if (apiObj is Filter_LessThan) { + var pre_field = cst_encode_String(apiObj.field); + var pre_value = cst_encode_String(apiObj.value); + wireObj.tag = 9; + wireObj.kind.LessThan.field = pre_field; + wireObj.kind.LessThan.value = pre_value; + return; + } + if (apiObj is Filter_LessThanOrEqual) { + var pre_field = cst_encode_String(apiObj.field); + var pre_value = cst_encode_String(apiObj.value); + wireObj.tag = 10; + wireObj.kind.LessThanOrEqual.field = pre_field; + wireObj.kind.LessThanOrEqual.value = pre_value; + return; + } + if (apiObj is Filter_Between) { + var pre_field = cst_encode_String(apiObj.field); + var pre_from = cst_encode_String(apiObj.from); + var pre_to = cst_encode_String(apiObj.to); + wireObj.tag = 11; + wireObj.kind.Between.field = pre_field; + wireObj.kind.Between.from = pre_from; + wireObj.kind.Between.to = pre_to; + return; + } + if (apiObj is Filter_IsNull) { + var pre_field = cst_encode_String(apiObj.field); + wireObj.tag = 12; + wireObj.kind.IsNull.field = pre_field; + return; + } + if (apiObj is Filter_IsEmpty) { + var pre_field = cst_encode_String(apiObj.field); + wireObj.tag = 13; + wireObj.kind.IsEmpty.field = pre_field; + return; + } + } + + @protected + void cst_api_fill_to_wire_mimir_index_settings( + MimirIndexSettings apiObj, wire_cst_mimir_index_settings wireObj) { + wireObj.primary_key = cst_encode_opt_String(apiObj.primaryKey); + wireObj.searchable_fields = + cst_encode_opt_list_String(apiObj.searchableFields); + wireObj.filterable_fields = cst_encode_list_String(apiObj.filterableFields); + wireObj.sortable_fields = cst_encode_list_String(apiObj.sortableFields); + wireObj.ranking_rules = cst_encode_list_String(apiObj.rankingRules); + wireObj.stop_words = cst_encode_list_String(apiObj.stopWords); + wireObj.synonyms = cst_encode_list_synonyms(apiObj.synonyms); + wireObj.typos_enabled = cst_encode_bool(apiObj.typosEnabled); + wireObj.min_word_size_for_one_typo = + cst_encode_u_8(apiObj.minWordSizeForOneTypo); + wireObj.min_word_size_for_two_typos = + cst_encode_u_8(apiObj.minWordSizeForTwoTypos); + wireObj.disallow_typos_on_words = + cst_encode_list_String(apiObj.disallowTyposOnWords); + wireObj.disallow_typos_on_fields = + cst_encode_list_String(apiObj.disallowTyposOnFields); + } + + @protected + void cst_api_fill_to_wire_sort_by(SortBy apiObj, wire_cst_sort_by wireObj) { + if (apiObj is SortBy_Asc) { + var pre_field0 = cst_encode_String(apiObj.field0); + wireObj.tag = 0; + wireObj.kind.Asc.field0 = pre_field0; + return; + } + if (apiObj is SortBy_Desc) { + var pre_field0 = cst_encode_String(apiObj.field0); + wireObj.tag = 1; + wireObj.kind.Desc.field0 = pre_field0; + return; + } + } + + @protected + void cst_api_fill_to_wire_synonyms( + Synonyms apiObj, wire_cst_synonyms wireObj) { + wireObj.word = cst_encode_String(apiObj.word); + wireObj.synonyms = cst_encode_list_String(apiObj.synonyms); + } + + @protected + bool cst_encode_bool(bool raw); + + @protected + int cst_encode_i_32(int raw); + + @protected + int cst_encode_terms_matching_strategy(TermsMatchingStrategy raw); + + @protected + int cst_encode_u_32(int raw); + + @protected + int cst_encode_u_8(int raw); + + @protected + void cst_encode_unit(void raw); + + @protected + void sse_encode_AnyhowException( + AnyhowException self, SseSerializer serializer); + + @protected + void sse_encode_String(String self, SseSerializer serializer); + + @protected + void sse_encode_bool(bool self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_filter(Filter self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_mimir_index_settings( + MimirIndexSettings self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_terms_matching_strategy( + TermsMatchingStrategy self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_u_32(int self, SseSerializer serializer); + + @protected + void sse_encode_box_filter(Filter self, SseSerializer serializer); + + @protected + void sse_encode_filter(Filter self, SseSerializer serializer); + + @protected + void sse_encode_i_32(int self, SseSerializer serializer); + + @protected + void sse_encode_list_String(List self, SseSerializer serializer); + + @protected + void sse_encode_list_filter(List self, SseSerializer serializer); + + @protected + void sse_encode_list_prim_u_8_strict( + Uint8List self, SseSerializer serializer); + + @protected + void sse_encode_list_sort_by(List self, SseSerializer serializer); + + @protected + void sse_encode_list_synonyms(List self, SseSerializer serializer); + + @protected + void sse_encode_mimir_index_settings( + MimirIndexSettings self, SseSerializer serializer); + + @protected + void sse_encode_opt_String(String? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_filter( + Filter? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_terms_matching_strategy( + TermsMatchingStrategy? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer); + + @protected + void sse_encode_opt_list_String(List? self, SseSerializer serializer); + + @protected + void sse_encode_opt_list_sort_by( + List? self, SseSerializer serializer); + + @protected + void sse_encode_sort_by(SortBy self, SseSerializer serializer); + + @protected + void sse_encode_synonyms(Synonyms self, SseSerializer serializer); + + @protected + void sse_encode_terms_matching_strategy( + TermsMatchingStrategy self, SseSerializer serializer); + + @protected + void sse_encode_u_32(int self, SseSerializer serializer); + + @protected + void sse_encode_u_64(BigInt self, SseSerializer serializer); + + @protected + void sse_encode_u_8(int self, SseSerializer serializer); + + @protected + void sse_encode_unit(void self, SseSerializer serializer); +} + +// Section: wire_class + +// ignore_for_file: camel_case_types, non_constant_identifier_names, avoid_positional_boolean_parameters, annotate_overrides, constant_identifier_names +// AUTO GENERATED FILE, DO NOT EDIT. +// +// Generated by `package:ffigen`. +// ignore_for_file: type=lint + +/// generated by flutter_rust_bridge +class RustLibWire implements BaseWire { + factory RustLibWire.fromExternalLibrary(ExternalLibrary lib) => + RustLibWire(lib.ffiDynamicLibrary); + + /// Holds the symbol lookup function. + final ffi.Pointer Function(String symbolName) + _lookup; + + /// The symbols are looked up in [dynamicLibrary]. + RustLibWire(ffi.DynamicLibrary dynamicLibrary) + : _lookup = dynamicLibrary.lookup; + + /// The symbols are looked up with [lookup]. + RustLibWire.fromLookup( + ffi.Pointer Function(String symbolName) + lookup) + : _lookup = lookup; + + void store_dart_post_cobject( + DartPostCObjectFnType ptr, + ) { + return _store_dart_post_cobject( + ptr, + ); + } + + late final _store_dart_post_cobjectPtr = + _lookup>( + 'store_dart_post_cobject'); + late final _store_dart_post_cobject = _store_dart_post_cobjectPtr + .asFunction(); + + void wire__crate__api__add_documents( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer index_name, + ffi.Pointer documents, + ) { + return _wire__crate__api__add_documents( + port_, + instance_dir, + index_name, + documents, + ); + } + + late final _wire__crate__api__add_documentsPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__add_documents'); + late final _wire__crate__api__add_documents = + _wire__crate__api__add_documentsPtr.asFunction< + void Function( + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + void wire__crate__api__delete_all_documents( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer index_name, + ) { + return _wire__crate__api__delete_all_documents( + port_, + instance_dir, + index_name, + ); + } + + late final _wire__crate__api__delete_all_documentsPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__delete_all_documents'); + late final _wire__crate__api__delete_all_documents = + _wire__crate__api__delete_all_documentsPtr.asFunction< + void Function(int, ffi.Pointer, + ffi.Pointer)>(); + + void wire__crate__api__delete_documents( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer index_name, + ffi.Pointer document_ids, + ) { + return _wire__crate__api__delete_documents( + port_, + instance_dir, + index_name, + document_ids, + ); + } + + late final _wire__crate__api__delete_documentsPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__delete_documents'); + late final _wire__crate__api__delete_documents = + _wire__crate__api__delete_documentsPtr.asFunction< + void Function( + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + void wire__crate__api__ensure_index_initialized( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer index_name, + ) { + return _wire__crate__api__ensure_index_initialized( + port_, + instance_dir, + index_name, + ); + } + + late final _wire__crate__api__ensure_index_initializedPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__ensure_index_initialized'); + late final _wire__crate__api__ensure_index_initialized = + _wire__crate__api__ensure_index_initializedPtr.asFunction< + void Function(int, ffi.Pointer, + ffi.Pointer)>(); + + void wire__crate__api__ensure_instance_initialized( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer tmp_dir, + ) { + return _wire__crate__api__ensure_instance_initialized( + port_, + instance_dir, + tmp_dir, + ); + } + + late final _wire__crate__api__ensure_instance_initializedPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__ensure_instance_initialized'); + late final _wire__crate__api__ensure_instance_initialized = + _wire__crate__api__ensure_instance_initializedPtr.asFunction< + void Function(int, ffi.Pointer, + ffi.Pointer)>(); + + void wire__crate__api__get_all_documents( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer index_name, + ) { + return _wire__crate__api__get_all_documents( + port_, + instance_dir, + index_name, + ); + } + + late final _wire__crate__api__get_all_documentsPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__get_all_documents'); + late final _wire__crate__api__get_all_documents = + _wire__crate__api__get_all_documentsPtr.asFunction< + void Function(int, ffi.Pointer, + ffi.Pointer)>(); + + void wire__crate__api__get_document( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer index_name, + ffi.Pointer document_id, + ) { + return _wire__crate__api__get_document( + port_, + instance_dir, + index_name, + document_id, + ); + } + + late final _wire__crate__api__get_documentPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__get_document'); + late final _wire__crate__api__get_document = + _wire__crate__api__get_documentPtr.asFunction< + void Function( + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + void wire__crate__api__get_settings( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer index_name, + ) { + return _wire__crate__api__get_settings( + port_, + instance_dir, + index_name, + ); + } + + late final _wire__crate__api__get_settingsPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__get_settings'); + late final _wire__crate__api__get_settings = + _wire__crate__api__get_settingsPtr.asFunction< + void Function(int, ffi.Pointer, + ffi.Pointer)>(); + + void wire__crate__api__number_of_documents( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer index_name, + ) { + return _wire__crate__api__number_of_documents( + port_, + instance_dir, + index_name, + ); + } + + late final _wire__crate__api__number_of_documentsPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__number_of_documents'); + late final _wire__crate__api__number_of_documents = + _wire__crate__api__number_of_documentsPtr.asFunction< + void Function(int, ffi.Pointer, + ffi.Pointer)>(); + + void wire__crate__api__search_documents( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer index_name, + ffi.Pointer query, + ffi.Pointer limit, + ffi.Pointer offset, + ffi.Pointer sort_criteria, + ffi.Pointer filter, + ffi.Pointer matching_strategy, + ) { + return _wire__crate__api__search_documents( + port_, + instance_dir, + index_name, + query, + limit, + offset, + sort_criteria, + filter, + matching_strategy, + ); + } + + late final _wire__crate__api__search_documentsPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__search_documents'); + late final _wire__crate__api__search_documents = + _wire__crate__api__search_documentsPtr.asFunction< + void Function( + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + void wire__crate__api__set_documents( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer index_name, + ffi.Pointer documents, + ) { + return _wire__crate__api__set_documents( + port_, + instance_dir, + index_name, + documents, + ); + } + + late final _wire__crate__api__set_documentsPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__set_documents'); + late final _wire__crate__api__set_documents = + _wire__crate__api__set_documentsPtr.asFunction< + void Function( + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + void wire__crate__api__set_settings( + int port_, + ffi.Pointer instance_dir, + ffi.Pointer index_name, + ffi.Pointer settings, + ) { + return _wire__crate__api__set_settings( + port_, + instance_dir, + index_name, + settings, + ); + } + + late final _wire__crate__api__set_settingsPtr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Int64, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>( + 'frbgen_mimir_wire__crate__api__set_settings'); + late final _wire__crate__api__set_settings = + _wire__crate__api__set_settingsPtr.asFunction< + void Function( + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + ffi.Pointer cst_new_box_autoadd_filter() { + return _cst_new_box_autoadd_filter(); + } + + late final _cst_new_box_autoadd_filterPtr = + _lookup Function()>>( + 'frbgen_mimir_cst_new_box_autoadd_filter'); + late final _cst_new_box_autoadd_filter = _cst_new_box_autoadd_filterPtr + .asFunction Function()>(); + + ffi.Pointer + cst_new_box_autoadd_mimir_index_settings() { + return _cst_new_box_autoadd_mimir_index_settings(); + } + + late final _cst_new_box_autoadd_mimir_index_settingsPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function()>>( + 'frbgen_mimir_cst_new_box_autoadd_mimir_index_settings'); + late final _cst_new_box_autoadd_mimir_index_settings = + _cst_new_box_autoadd_mimir_index_settingsPtr + .asFunction Function()>(); + + ffi.Pointer cst_new_box_autoadd_terms_matching_strategy( + int value, + ) { + return _cst_new_box_autoadd_terms_matching_strategy( + value, + ); + } + + late final _cst_new_box_autoadd_terms_matching_strategyPtr = + _lookup Function(ffi.Int32)>>( + 'frbgen_mimir_cst_new_box_autoadd_terms_matching_strategy'); + late final _cst_new_box_autoadd_terms_matching_strategy = + _cst_new_box_autoadd_terms_matching_strategyPtr + .asFunction Function(int)>(); + + ffi.Pointer cst_new_box_autoadd_u_32( + int value, + ) { + return _cst_new_box_autoadd_u_32( + value, + ); + } + + late final _cst_new_box_autoadd_u_32Ptr = + _lookup Function(ffi.Uint32)>>( + 'frbgen_mimir_cst_new_box_autoadd_u_32'); + late final _cst_new_box_autoadd_u_32 = _cst_new_box_autoadd_u_32Ptr + .asFunction Function(int)>(); + + ffi.Pointer cst_new_box_filter() { + return _cst_new_box_filter(); + } + + late final _cst_new_box_filterPtr = + _lookup Function()>>( + 'frbgen_mimir_cst_new_box_filter'); + late final _cst_new_box_filter = _cst_new_box_filterPtr + .asFunction Function()>(); + + ffi.Pointer cst_new_list_String( + int len, + ) { + return _cst_new_list_String( + len, + ); + } + + late final _cst_new_list_StringPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Int32)>>('frbgen_mimir_cst_new_list_String'); + late final _cst_new_list_String = _cst_new_list_StringPtr + .asFunction Function(int)>(); + + ffi.Pointer cst_new_list_filter( + int len, + ) { + return _cst_new_list_filter( + len, + ); + } + + late final _cst_new_list_filterPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Int32)>>('frbgen_mimir_cst_new_list_filter'); + late final _cst_new_list_filter = _cst_new_list_filterPtr + .asFunction Function(int)>(); + + ffi.Pointer cst_new_list_prim_u_8_strict( + int len, + ) { + return _cst_new_list_prim_u_8_strict( + len, + ); + } + + late final _cst_new_list_prim_u_8_strictPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Int32)>>('frbgen_mimir_cst_new_list_prim_u_8_strict'); + late final _cst_new_list_prim_u_8_strict = _cst_new_list_prim_u_8_strictPtr + .asFunction Function(int)>(); + + ffi.Pointer cst_new_list_sort_by( + int len, + ) { + return _cst_new_list_sort_by( + len, + ); + } + + late final _cst_new_list_sort_byPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Int32)>>('frbgen_mimir_cst_new_list_sort_by'); + late final _cst_new_list_sort_by = _cst_new_list_sort_byPtr + .asFunction Function(int)>(); + + ffi.Pointer cst_new_list_synonyms( + int len, + ) { + return _cst_new_list_synonyms( + len, + ); + } + + late final _cst_new_list_synonymsPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Int32)>>('frbgen_mimir_cst_new_list_synonyms'); + late final _cst_new_list_synonyms = _cst_new_list_synonymsPtr + .asFunction Function(int)>(); + + int dummy_method_to_enforce_bundling() { + return _dummy_method_to_enforce_bundling(); + } + + late final _dummy_method_to_enforce_bundlingPtr = + _lookup>( + 'dummy_method_to_enforce_bundling'); + late final _dummy_method_to_enforce_bundling = + _dummy_method_to_enforce_bundlingPtr.asFunction(); +} + +typedef DartPostCObjectFnType + = ffi.Pointer>; +typedef DartPostCObjectFnTypeFunction = ffi.Bool Function( + DartPort port_id, ffi.Pointer message); +typedef DartDartPostCObjectFnTypeFunction = bool Function( + DartDartPort port_id, ffi.Pointer message); +typedef DartPort = ffi.Int64; +typedef DartDartPort = int; + +final class wire_cst_list_prim_u_8_strict extends ffi.Struct { + external ffi.Pointer ptr; + + @ffi.Int32() + external int len; +} + +final class wire_cst_list_String extends ffi.Struct { + external ffi.Pointer> ptr; + + @ffi.Int32() + external int len; +} + +final class wire_cst_SortBy_Asc extends ffi.Struct { + external ffi.Pointer field0; +} + +final class wire_cst_SortBy_Desc extends ffi.Struct { + external ffi.Pointer field0; +} + +final class SortByKind extends ffi.Union { + external wire_cst_SortBy_Asc Asc; + + external wire_cst_SortBy_Desc Desc; +} + +final class wire_cst_sort_by extends ffi.Struct { + @ffi.Int32() + external int tag; + + external SortByKind kind; +} + +final class wire_cst_list_sort_by extends ffi.Struct { + external ffi.Pointer ptr; + + @ffi.Int32() + external int len; +} + +final class wire_cst_list_filter extends ffi.Struct { + external ffi.Pointer ptr; + + @ffi.Int32() + external int len; +} + +final class wire_cst_filter extends ffi.Struct { + @ffi.Int32() + external int tag; + + external FilterKind kind; +} + +final class FilterKind extends ffi.Union { + external wire_cst_Filter_Or Or; + + external wire_cst_Filter_And And; + + external wire_cst_Filter_Not Not; + + external wire_cst_Filter_Exists Exists; + + external wire_cst_Filter_InValues InValues; + + external wire_cst_Filter_GreaterThan GreaterThan; + + external wire_cst_Filter_GreaterThanOrEqual GreaterThanOrEqual; + + external wire_cst_Filter_Equal Equal; + + external wire_cst_Filter_NotEqual NotEqual; + + external wire_cst_Filter_LessThan LessThan; + + external wire_cst_Filter_LessThanOrEqual LessThanOrEqual; + + external wire_cst_Filter_Between Between; + + external wire_cst_Filter_IsNull IsNull; + + external wire_cst_Filter_IsEmpty IsEmpty; +} + +final class wire_cst_Filter_Or extends ffi.Struct { + external ffi.Pointer field0; +} + +final class wire_cst_Filter_And extends ffi.Struct { + external ffi.Pointer field0; +} + +final class wire_cst_Filter_Not extends ffi.Struct { + external ffi.Pointer field0; +} + +final class wire_cst_Filter_Exists extends ffi.Struct { + external ffi.Pointer field; +} + +final class wire_cst_Filter_InValues extends ffi.Struct { + external ffi.Pointer field; + + external ffi.Pointer values; +} + +final class wire_cst_Filter_GreaterThan extends ffi.Struct { + external ffi.Pointer field; + + external ffi.Pointer value; +} + +final class wire_cst_Filter_GreaterThanOrEqual extends ffi.Struct { + external ffi.Pointer field; + + external ffi.Pointer value; +} + +final class wire_cst_Filter_Equal extends ffi.Struct { + external ffi.Pointer field; + + external ffi.Pointer value; +} + +final class wire_cst_Filter_NotEqual extends ffi.Struct { + external ffi.Pointer field; + + external ffi.Pointer value; +} + +final class wire_cst_Filter_LessThan extends ffi.Struct { + external ffi.Pointer field; + + external ffi.Pointer value; +} + +final class wire_cst_Filter_LessThanOrEqual extends ffi.Struct { + external ffi.Pointer field; + + external ffi.Pointer value; +} + +final class wire_cst_Filter_Between extends ffi.Struct { + external ffi.Pointer field; + + external ffi.Pointer from; + + external ffi.Pointer to; +} + +final class wire_cst_Filter_IsNull extends ffi.Struct { + external ffi.Pointer field; +} + +final class wire_cst_Filter_IsEmpty extends ffi.Struct { + external ffi.Pointer field; +} + +final class wire_cst_synonyms extends ffi.Struct { + external ffi.Pointer word; + + external ffi.Pointer synonyms; +} + +final class wire_cst_list_synonyms extends ffi.Struct { + external ffi.Pointer ptr; + + @ffi.Int32() + external int len; +} + +final class wire_cst_mimir_index_settings extends ffi.Struct { + external ffi.Pointer primary_key; + + external ffi.Pointer searchable_fields; + + external ffi.Pointer filterable_fields; + + external ffi.Pointer sortable_fields; + + external ffi.Pointer ranking_rules; + + external ffi.Pointer stop_words; + + external ffi.Pointer synonyms; + + @ffi.Bool() + external bool typos_enabled; + + @ffi.Uint8() + external int min_word_size_for_one_typo; + + @ffi.Uint8() + external int min_word_size_for_two_typos; + + external ffi.Pointer disallow_typos_on_words; + + external ffi.Pointer disallow_typos_on_fields; +} diff --git a/packages/mimir/lib/src/frb_generated.web.dart b/packages/mimir/lib/src/frb_generated.web.dart new file mode 100644 index 00000000..38480346 --- /dev/null +++ b/packages/mimir/lib/src/frb_generated.web.dart @@ -0,0 +1,671 @@ +// This file is automatically generated, so please do not edit it. +// Generated by `flutter_rust_bridge`@ 2.1.0. + +// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field + +// Static analysis wrongly picks the IO variant, thus ignore this +// ignore_for_file: argument_type_not_assignable + +import 'api.dart'; +import 'dart:async'; +import 'dart:convert'; +import 'frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart'; + +abstract class RustLibApiImplPlatform extends BaseApiImpl { + RustLibApiImplPlatform({ + required super.handler, + required super.wire, + required super.generalizedFrbRustBinding, + required super.portManager, + }); + + @protected + AnyhowException dco_decode_AnyhowException(dynamic raw); + + @protected + String dco_decode_String(dynamic raw); + + @protected + bool dco_decode_bool(dynamic raw); + + @protected + Filter dco_decode_box_autoadd_filter(dynamic raw); + + @protected + MimirIndexSettings dco_decode_box_autoadd_mimir_index_settings(dynamic raw); + + @protected + TermsMatchingStrategy dco_decode_box_autoadd_terms_matching_strategy( + dynamic raw); + + @protected + int dco_decode_box_autoadd_u_32(dynamic raw); + + @protected + Filter dco_decode_box_filter(dynamic raw); + + @protected + Filter dco_decode_filter(dynamic raw); + + @protected + int dco_decode_i_32(dynamic raw); + + @protected + List dco_decode_list_String(dynamic raw); + + @protected + List dco_decode_list_filter(dynamic raw); + + @protected + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); + + @protected + List dco_decode_list_sort_by(dynamic raw); + + @protected + List dco_decode_list_synonyms(dynamic raw); + + @protected + MimirIndexSettings dco_decode_mimir_index_settings(dynamic raw); + + @protected + String? dco_decode_opt_String(dynamic raw); + + @protected + Filter? dco_decode_opt_box_autoadd_filter(dynamic raw); + + @protected + TermsMatchingStrategy? dco_decode_opt_box_autoadd_terms_matching_strategy( + dynamic raw); + + @protected + int? dco_decode_opt_box_autoadd_u_32(dynamic raw); + + @protected + List? dco_decode_opt_list_String(dynamic raw); + + @protected + List? dco_decode_opt_list_sort_by(dynamic raw); + + @protected + SortBy dco_decode_sort_by(dynamic raw); + + @protected + Synonyms dco_decode_synonyms(dynamic raw); + + @protected + TermsMatchingStrategy dco_decode_terms_matching_strategy(dynamic raw); + + @protected + int dco_decode_u_32(dynamic raw); + + @protected + BigInt dco_decode_u_64(dynamic raw); + + @protected + int dco_decode_u_8(dynamic raw); + + @protected + void dco_decode_unit(dynamic raw); + + @protected + AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer); + + @protected + String sse_decode_String(SseDeserializer deserializer); + + @protected + bool sse_decode_bool(SseDeserializer deserializer); + + @protected + Filter sse_decode_box_autoadd_filter(SseDeserializer deserializer); + + @protected + MimirIndexSettings sse_decode_box_autoadd_mimir_index_settings( + SseDeserializer deserializer); + + @protected + TermsMatchingStrategy sse_decode_box_autoadd_terms_matching_strategy( + SseDeserializer deserializer); + + @protected + int sse_decode_box_autoadd_u_32(SseDeserializer deserializer); + + @protected + Filter sse_decode_box_filter(SseDeserializer deserializer); + + @protected + Filter sse_decode_filter(SseDeserializer deserializer); + + @protected + int sse_decode_i_32(SseDeserializer deserializer); + + @protected + List sse_decode_list_String(SseDeserializer deserializer); + + @protected + List sse_decode_list_filter(SseDeserializer deserializer); + + @protected + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); + + @protected + List sse_decode_list_sort_by(SseDeserializer deserializer); + + @protected + List sse_decode_list_synonyms(SseDeserializer deserializer); + + @protected + MimirIndexSettings sse_decode_mimir_index_settings( + SseDeserializer deserializer); + + @protected + String? sse_decode_opt_String(SseDeserializer deserializer); + + @protected + Filter? sse_decode_opt_box_autoadd_filter(SseDeserializer deserializer); + + @protected + TermsMatchingStrategy? sse_decode_opt_box_autoadd_terms_matching_strategy( + SseDeserializer deserializer); + + @protected + int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer); + + @protected + List? sse_decode_opt_list_String(SseDeserializer deserializer); + + @protected + List? sse_decode_opt_list_sort_by(SseDeserializer deserializer); + + @protected + SortBy sse_decode_sort_by(SseDeserializer deserializer); + + @protected + Synonyms sse_decode_synonyms(SseDeserializer deserializer); + + @protected + TermsMatchingStrategy sse_decode_terms_matching_strategy( + SseDeserializer deserializer); + + @protected + int sse_decode_u_32(SseDeserializer deserializer); + + @protected + BigInt sse_decode_u_64(SseDeserializer deserializer); + + @protected + int sse_decode_u_8(SseDeserializer deserializer); + + @protected + void sse_decode_unit(SseDeserializer deserializer); + + @protected + String cst_encode_AnyhowException(AnyhowException raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + throw UnimplementedError(); + } + + @protected + String cst_encode_String(String raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw; + } + + @protected + JSAny cst_encode_box_autoadd_filter(Filter raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return cst_encode_filter(raw); + } + + @protected + JSAny cst_encode_box_autoadd_mimir_index_settings(MimirIndexSettings raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return cst_encode_mimir_index_settings(raw); + } + + @protected + int cst_encode_box_autoadd_terms_matching_strategy( + TermsMatchingStrategy raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return cst_encode_terms_matching_strategy(raw); + } + + @protected + int cst_encode_box_autoadd_u_32(int raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return cst_encode_u_32(raw); + } + + @protected + JSAny cst_encode_box_filter(Filter raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return cst_encode_filter(raw); + } + + @protected + JSAny cst_encode_filter(Filter raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + if (raw is Filter_Or) { + return [0, cst_encode_list_filter(raw.field0)].jsify()!; + } + if (raw is Filter_And) { + return [1, cst_encode_list_filter(raw.field0)].jsify()!; + } + if (raw is Filter_Not) { + return [2, cst_encode_box_filter(raw.field0)].jsify()!; + } + if (raw is Filter_Exists) { + return [3, cst_encode_String(raw.field)].jsify()!; + } + if (raw is Filter_InValues) { + return [ + 4, + cst_encode_String(raw.field), + cst_encode_list_String(raw.values) + ].jsify()!; + } + if (raw is Filter_GreaterThan) { + return [5, cst_encode_String(raw.field), cst_encode_String(raw.value)] + .jsify()!; + } + if (raw is Filter_GreaterThanOrEqual) { + return [6, cst_encode_String(raw.field), cst_encode_String(raw.value)] + .jsify()!; + } + if (raw is Filter_Equal) { + return [7, cst_encode_String(raw.field), cst_encode_String(raw.value)] + .jsify()!; + } + if (raw is Filter_NotEqual) { + return [8, cst_encode_String(raw.field), cst_encode_String(raw.value)] + .jsify()!; + } + if (raw is Filter_LessThan) { + return [9, cst_encode_String(raw.field), cst_encode_String(raw.value)] + .jsify()!; + } + if (raw is Filter_LessThanOrEqual) { + return [10, cst_encode_String(raw.field), cst_encode_String(raw.value)] + .jsify()!; + } + if (raw is Filter_Between) { + return [ + 11, + cst_encode_String(raw.field), + cst_encode_String(raw.from), + cst_encode_String(raw.to) + ].jsify()!; + } + if (raw is Filter_IsNull) { + return [12, cst_encode_String(raw.field)].jsify()!; + } + if (raw is Filter_IsEmpty) { + return [13, cst_encode_String(raw.field)].jsify()!; + } + + throw Exception('unreachable'); + } + + @protected + JSAny cst_encode_list_String(List raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw.map(cst_encode_String).toList().jsify()!; + } + + @protected + JSAny cst_encode_list_filter(List raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw.map(cst_encode_filter).toList().jsify()!; + } + + @protected + JSAny cst_encode_list_prim_u_8_strict(Uint8List raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw.jsify()!; + } + + @protected + JSAny cst_encode_list_sort_by(List raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw.map(cst_encode_sort_by).toList().jsify()!; + } + + @protected + JSAny cst_encode_list_synonyms(List raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw.map(cst_encode_synonyms).toList().jsify()!; + } + + @protected + JSAny cst_encode_mimir_index_settings(MimirIndexSettings raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return [ + cst_encode_opt_String(raw.primaryKey), + cst_encode_opt_list_String(raw.searchableFields), + cst_encode_list_String(raw.filterableFields), + cst_encode_list_String(raw.sortableFields), + cst_encode_list_String(raw.rankingRules), + cst_encode_list_String(raw.stopWords), + cst_encode_list_synonyms(raw.synonyms), + cst_encode_bool(raw.typosEnabled), + cst_encode_u_8(raw.minWordSizeForOneTypo), + cst_encode_u_8(raw.minWordSizeForTwoTypos), + cst_encode_list_String(raw.disallowTyposOnWords), + cst_encode_list_String(raw.disallowTyposOnFields) + ].jsify()!; + } + + @protected + String? cst_encode_opt_String(String? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null ? null : cst_encode_String(raw); + } + + @protected + JSAny? cst_encode_opt_box_autoadd_filter(Filter? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null ? null : cst_encode_box_autoadd_filter(raw); + } + + @protected + int? cst_encode_opt_box_autoadd_terms_matching_strategy( + TermsMatchingStrategy? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null + ? null + : cst_encode_box_autoadd_terms_matching_strategy(raw); + } + + @protected + int? cst_encode_opt_box_autoadd_u_32(int? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null ? null : cst_encode_box_autoadd_u_32(raw); + } + + @protected + JSAny? cst_encode_opt_list_String(List? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null ? null : cst_encode_list_String(raw); + } + + @protected + JSAny? cst_encode_opt_list_sort_by(List? raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return raw == null ? null : cst_encode_list_sort_by(raw); + } + + @protected + JSAny cst_encode_sort_by(SortBy raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + if (raw is SortBy_Asc) { + return [0, cst_encode_String(raw.field0)].jsify()!; + } + if (raw is SortBy_Desc) { + return [1, cst_encode_String(raw.field0)].jsify()!; + } + + throw Exception('unreachable'); + } + + @protected + JSAny cst_encode_synonyms(Synonyms raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return [cst_encode_String(raw.word), cst_encode_list_String(raw.synonyms)] + .jsify()!; + } + + @protected + JSAny cst_encode_u_64(BigInt raw) { + // Codec=Cst (C-struct based), see doc to use other codecs + return castNativeBigInt(raw); + } + + @protected + bool cst_encode_bool(bool raw); + + @protected + int cst_encode_i_32(int raw); + + @protected + int cst_encode_terms_matching_strategy(TermsMatchingStrategy raw); + + @protected + int cst_encode_u_32(int raw); + + @protected + int cst_encode_u_8(int raw); + + @protected + void cst_encode_unit(void raw); + + @protected + void sse_encode_AnyhowException( + AnyhowException self, SseSerializer serializer); + + @protected + void sse_encode_String(String self, SseSerializer serializer); + + @protected + void sse_encode_bool(bool self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_filter(Filter self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_mimir_index_settings( + MimirIndexSettings self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_terms_matching_strategy( + TermsMatchingStrategy self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_u_32(int self, SseSerializer serializer); + + @protected + void sse_encode_box_filter(Filter self, SseSerializer serializer); + + @protected + void sse_encode_filter(Filter self, SseSerializer serializer); + + @protected + void sse_encode_i_32(int self, SseSerializer serializer); + + @protected + void sse_encode_list_String(List self, SseSerializer serializer); + + @protected + void sse_encode_list_filter(List self, SseSerializer serializer); + + @protected + void sse_encode_list_prim_u_8_strict( + Uint8List self, SseSerializer serializer); + + @protected + void sse_encode_list_sort_by(List self, SseSerializer serializer); + + @protected + void sse_encode_list_synonyms(List self, SseSerializer serializer); + + @protected + void sse_encode_mimir_index_settings( + MimirIndexSettings self, SseSerializer serializer); + + @protected + void sse_encode_opt_String(String? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_filter( + Filter? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_terms_matching_strategy( + TermsMatchingStrategy? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer); + + @protected + void sse_encode_opt_list_String(List? self, SseSerializer serializer); + + @protected + void sse_encode_opt_list_sort_by( + List? self, SseSerializer serializer); + + @protected + void sse_encode_sort_by(SortBy self, SseSerializer serializer); + + @protected + void sse_encode_synonyms(Synonyms self, SseSerializer serializer); + + @protected + void sse_encode_terms_matching_strategy( + TermsMatchingStrategy self, SseSerializer serializer); + + @protected + void sse_encode_u_32(int self, SseSerializer serializer); + + @protected + void sse_encode_u_64(BigInt self, SseSerializer serializer); + + @protected + void sse_encode_u_8(int self, SseSerializer serializer); + + @protected + void sse_encode_unit(void self, SseSerializer serializer); +} + +// Section: wire_class + +class RustLibWire implements BaseWire { + RustLibWire.fromExternalLibrary(ExternalLibrary lib); + + void wire__crate__api__add_documents(NativePortType port_, + String instance_dir, String index_name, JSAny documents) => + wasmModule.wire__crate__api__add_documents( + port_, instance_dir, index_name, documents); + + void wire__crate__api__delete_all_documents( + NativePortType port_, String instance_dir, String index_name) => + wasmModule.wire__crate__api__delete_all_documents( + port_, instance_dir, index_name); + + void wire__crate__api__delete_documents(NativePortType port_, + String instance_dir, String index_name, JSAny document_ids) => + wasmModule.wire__crate__api__delete_documents( + port_, instance_dir, index_name, document_ids); + + void wire__crate__api__ensure_index_initialized( + NativePortType port_, String instance_dir, String index_name) => + wasmModule.wire__crate__api__ensure_index_initialized( + port_, instance_dir, index_name); + + void wire__crate__api__ensure_instance_initialized( + NativePortType port_, String instance_dir, String? tmp_dir) => + wasmModule.wire__crate__api__ensure_instance_initialized( + port_, instance_dir, tmp_dir); + + void wire__crate__api__get_all_documents( + NativePortType port_, String instance_dir, String index_name) => + wasmModule.wire__crate__api__get_all_documents( + port_, instance_dir, index_name); + + void wire__crate__api__get_document(NativePortType port_, String instance_dir, + String index_name, String document_id) => + wasmModule.wire__crate__api__get_document( + port_, instance_dir, index_name, document_id); + + void wire__crate__api__get_settings( + NativePortType port_, String instance_dir, String index_name) => + wasmModule.wire__crate__api__get_settings( + port_, instance_dir, index_name); + + void wire__crate__api__number_of_documents( + NativePortType port_, String instance_dir, String index_name) => + wasmModule.wire__crate__api__number_of_documents( + port_, instance_dir, index_name); + + void wire__crate__api__search_documents( + NativePortType port_, + String instance_dir, + String index_name, + String? query, + int? limit, + int? offset, + JSAny? sort_criteria, + JSAny? filter, + int? matching_strategy) => + wasmModule.wire__crate__api__search_documents( + port_, + instance_dir, + index_name, + query, + limit, + offset, + sort_criteria, + filter, + matching_strategy); + + void wire__crate__api__set_documents(NativePortType port_, + String instance_dir, String index_name, JSAny documents) => + wasmModule.wire__crate__api__set_documents( + port_, instance_dir, index_name, documents); + + void wire__crate__api__set_settings(NativePortType port_, String instance_dir, + String index_name, JSAny settings) => + wasmModule.wire__crate__api__set_settings( + port_, instance_dir, index_name, settings); +} + +@JS('wasm_bindgen') +external RustLibWasmModule get wasmModule; + +@JS() +@anonymous +extension type RustLibWasmModule._(JSObject _) implements JSObject { + external void wire__crate__api__add_documents(NativePortType port_, + String instance_dir, String index_name, JSAny documents); + + external void wire__crate__api__delete_all_documents( + NativePortType port_, String instance_dir, String index_name); + + external void wire__crate__api__delete_documents(NativePortType port_, + String instance_dir, String index_name, JSAny document_ids); + + external void wire__crate__api__ensure_index_initialized( + NativePortType port_, String instance_dir, String index_name); + + external void wire__crate__api__ensure_instance_initialized( + NativePortType port_, String instance_dir, String? tmp_dir); + + external void wire__crate__api__get_all_documents( + NativePortType port_, String instance_dir, String index_name); + + external void wire__crate__api__get_document(NativePortType port_, + String instance_dir, String index_name, String document_id); + + external void wire__crate__api__get_settings( + NativePortType port_, String instance_dir, String index_name); + + external void wire__crate__api__number_of_documents( + NativePortType port_, String instance_dir, String index_name); + + external void wire__crate__api__search_documents( + NativePortType port_, + String instance_dir, + String index_name, + String? query, + int? limit, + int? offset, + JSAny? sort_criteria, + JSAny? filter, + int? matching_strategy); + + external void wire__crate__api__set_documents(NativePortType port_, + String instance_dir, String index_name, JSAny documents); + + external void wire__crate__api__set_settings(NativePortType port_, + String instance_dir, String index_name, JSAny settings); +} diff --git a/packages/mimir/lib/src/impl/ffi/io.dart b/packages/mimir/lib/src/impl/ffi/io.dart index bec079b5..46195e09 100644 --- a/packages/mimir/lib/src/impl/ffi/io.dart +++ b/packages/mimir/lib/src/impl/ffi/io.dart @@ -1,18 +1,6 @@ -import 'dart:ffi'; import 'dart:io'; import 'package:meta/meta.dart'; -import 'package:mimir/src/bridge_generated.dart'; - -/// Represents the external library for mimir -/// -/// Will be a DynamicLibrary for dart:io or WasmModule for dart:html -typedef ExternalLibrary = DynamicLibrary; - -@internal -// ignore: public_member_api_docs -EmbeddedMilli createWrapperImpl(ExternalLibrary dylib) => - EmbeddedMilliImpl(dylib); /// Needed by https://github.com/GregoryConrad/mimir/issues/170 @internal diff --git a/packages/mimir/lib/src/impl/ffi/stub.dart b/packages/mimir/lib/src/impl/ffi/stub.dart index 51a0870e..71024824 100644 --- a/packages/mimir/lib/src/impl/ffi/stub.dart +++ b/packages/mimir/lib/src/impl/ffi/stub.dart @@ -1,15 +1,4 @@ import 'package:meta/meta.dart'; -import 'package:mimir/src/bridge_generated.dart'; - -/// Represents the external library for mimir -/// -/// Will be a DynamicLibrary for dart:io or WasmModule for dart:html -typedef ExternalLibrary = Object; - -@internal -// ignore: public_member_api_docs -EmbeddedMilli createWrapperImpl(ExternalLibrary lib) => - throw UnimplementedError(); /// Needed by https://github.com/GregoryConrad/mimir/issues/170 @internal diff --git a/packages/mimir/lib/src/impl/ffi/web.dart b/packages/mimir/lib/src/impl/ffi/web.dart deleted file mode 100644 index 3ee28478..00000000 --- a/packages/mimir/lib/src/impl/ffi/web.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:flutter_rust_bridge/flutter_rust_bridge.dart'; -import 'package:meta/meta.dart'; -import 'package:mimir/src/bridge_generated.dart'; - -/// Represents the external library for mimir -/// -/// Will be a DynamicLibrary for dart:io or WasmModule for dart:html -typedef ExternalLibrary = WasmModule; - -@internal -// ignore: public_member_api_docs -EmbeddedMilli createWrapperImpl(ExternalLibrary module) => - EmbeddedMilliImpl.wasm(module); - -/// Needed by https://github.com/GregoryConrad/mimir/issues/170 -@internal -String? tmpDir() => null; diff --git a/packages/mimir/lib/src/impl/index_impl.dart b/packages/mimir/lib/src/impl/index_impl.dart index caefa2df..93cf7913 100644 --- a/packages/mimir/lib/src/impl/index_impl.dart +++ b/packages/mimir/lib/src/impl/index_impl.dart @@ -3,9 +3,9 @@ import 'dart:convert'; import 'package:flutter_rust_bridge/flutter_rust_bridge.dart'; import 'package:meta/meta.dart'; -import 'package:mimir/src/bridge_generated.dart'; +import 'package:mimir/mimir.dart'; +import 'package:mimir/src/api.dart' as api; import 'package:mimir/src/impl/instance_impl.dart'; -import 'package:mimir/src/index.dart'; // ignore_for_file: public_member_api_docs @@ -21,11 +21,10 @@ class MimirIndexImpl extends MimirIndex { final _changes = StreamController.broadcast(); String get instanceDir => instance.path; - EmbeddedMilli get milli => instance.milli; @override Future addDocuments(List documents) async { - await milli.addDocuments( + await api.addDocuments( instanceDir: instanceDir, indexName: name, documents: documents.map((d) => json.encode(d)).toList(), @@ -35,7 +34,7 @@ class MimirIndexImpl extends MimirIndex { @override Future deleteDocuments(List ids) async { - await milli.deleteDocuments( + await api.deleteDocuments( instanceDir: instanceDir, indexName: name, documentIds: ids, @@ -45,7 +44,7 @@ class MimirIndexImpl extends MimirIndex { @override Future deleteAllDocuments() async { - await milli.deleteAllDocuments( + await api.deleteAllDocuments( instanceDir: instanceDir, indexName: name, ); @@ -54,7 +53,7 @@ class MimirIndexImpl extends MimirIndex { @override Future setDocuments(List documents) async { - await milli.setDocuments( + await api.setDocuments( instanceDir: instanceDir, indexName: name, documents: documents.map((d) => json.encode(d)).toList(), @@ -64,14 +63,14 @@ class MimirIndexImpl extends MimirIndex { @override Future getDocument(String id) { - return milli + return api .getDocument(instanceDir: instanceDir, indexName: name, documentId: id) .then((s) => s == null ? null : json.decode(s) as Map); } @override Future> getAllDocuments() async { - final jsonDocs = await milli.getAllDocuments( + final jsonDocs = await api.getAllDocuments( instanceDir: instanceDir, indexName: name, ); @@ -80,15 +79,12 @@ class MimirIndexImpl extends MimirIndex { @override Future getSettings() { - return milli.getSettings( - instanceDir: instanceDir, - indexName: name, - ); + return api.getSettings(instanceDir: instanceDir, indexName: name); } @override Future setSettings(MimirIndexSettings settings) async { - await milli.setSettings( + await api.setSettings( instanceDir: instanceDir, indexName: name, settings: settings, @@ -157,8 +153,8 @@ class MimirIndexImpl extends MimirIndex { } @override - Future get numberOfDocuments => - milli.numberOfDocuments(instanceDir: instanceDir, indexName: name); + Future get numberOfDocuments => + api.numberOfDocuments(instanceDir: instanceDir, indexName: name); @override Future> search({ @@ -170,7 +166,7 @@ class MimirIndexImpl extends MimirIndex { Filter? filter, }) async { try { - final jsonDocs = await milli.searchDocuments( + final jsonDocs = await api.searchDocuments( instanceDir: instanceDir, indexName: name, query: query, @@ -181,13 +177,13 @@ class MimirIndexImpl extends MimirIndex { filter: filter, ); return jsonDocs.map((s) => json.decode(s)).cast().toList(); - } on FrbAnyhowException catch (e) { + } on AnyhowException catch (e) { // Check to see if this error was caused by any filters or sortBys // not being indexed for search final filtersNotAdded = - filter != null && e.anyhow.contains('not filterable'); + filter != null && e.message.contains('not filterable'); final sortBysNotAdded = - sortBy != null && e.anyhow.contains('not sortable'); + sortBy != null && e.message.contains('not sortable'); if (filtersNotAdded || sortBysNotAdded) { final currSettings = await getSettings(); diff --git a/packages/mimir/lib/src/impl/instance_impl.dart b/packages/mimir/lib/src/impl/instance_impl.dart index c150dc65..ebb79cec 100644 --- a/packages/mimir/lib/src/impl/instance_impl.dart +++ b/packages/mimir/lib/src/impl/instance_impl.dart @@ -1,15 +1,12 @@ import 'package:meta/meta.dart'; import 'package:mimir/mimir.dart'; -import 'package:mimir/src/bridge_generated.dart'; import 'package:mimir/src/impl/index_impl.dart'; // ignore_for_file: public_member_api_docs @internal class MimirInstanceImpl extends MimirInstance { - MimirInstanceImpl(this.path, this.milli); - - final EmbeddedMilli milli; + MimirInstanceImpl(this.path); @override final String path; diff --git a/packages/mimir/lib/src/index.dart b/packages/mimir/lib/src/index.dart index f52dafad..0d3f9d0d 100644 --- a/packages/mimir/lib/src/index.dart +++ b/packages/mimir/lib/src/index.dart @@ -1,4 +1,4 @@ -import 'package:mimir/src/bridge_generated.dart'; +import 'package:mimir/src/api.dart'; /// Represents a document in a mimir (and also milli) index typedef MimirDocument = Map; @@ -42,7 +42,7 @@ abstract class MimirIndex { /// Returns the number of documents in this index. /// Useful for pagination or infinite scroll. - Future get numberOfDocuments; + Future get numberOfDocuments; /// Gets the given document from the index, if it exists Future getDocument(String id); diff --git a/packages/mimir/lib/src/interface.dart b/packages/mimir/lib/src/interface.dart index 650afdf7..19b15b7a 100644 --- a/packages/mimir/lib/src/interface.dart +++ b/packages/mimir/lib/src/interface.dart @@ -1,11 +1,14 @@ -import 'package:mimir/src/bridge_generated.dart'; +import 'dart:io'; + +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; +import 'package:mimir/src/api.dart'; +import 'package:mimir/src/frb_generated.dart'; import 'package:mimir/src/impl/instance_impl.dart'; import 'package:mimir/src/instance.dart'; // ignore: directives_ordering import 'package:mimir/src/impl/ffi/stub.dart' - if (dart.library.io) 'package:mimir/src/impl/ffi/io.dart' - if (dart.library.html) 'package:mimir/src/impl/ffi/web.dart'; + if (dart.library.io) 'package:mimir/src/impl/ffi/io.dart'; /// The exposed API to interact with mimir // Instead of just having a Mimir namespace, we have to do this instead, @@ -21,32 +24,41 @@ class MimirInterface { // This class should only ever be instantiated *once*, so private constructor MimirInterface._(); - // Internal ffi wrapper that is instantianted lazily. - // Should only have one instance per process. - EmbeddedMilli? _milli; - // Instances map. Should only have one instance per app for streams to work. final _instances = {}; - /// Creates a MimirInstance from the given [path] and [library] + /// Creates a MimirInstance from the given [path]. /// /// The [path] has to point to a directory; a directory will be /// created for you at the given path if one does not already exist. /// - /// [library] is a WasmModule on web & a DynamicLibrary on dart:io platforms. - /// [library] is used to create the internal ffi object - /// that is used to call the Rust APIs. + /// In io (native), [ioDirectory] is the directory path used to locate + /// the compiled rust library file. + /// + /// In Web, [webPrefix] is the prefix path for the wasm. Future getInstance({ required String path, - required ExternalLibrary library, + String? ioDirectory, + String? webPrefix, }) async { - _milli ??= createWrapperImpl(library); - await _milli! - .ensureInstanceInitialized(instanceDir: path, tmpDir: tmpDir()); - return _instances.putIfAbsent( - path, - () => MimirInstanceImpl(path, _milli!), - ); + if (!RustLib.instance.initialized) { + final libraryLoaderConfig = ExternalLibraryLoaderConfig( + stem: 'embedded_milli', + ioDirectory: ioDirectory, + webPrefix: webPrefix, + ); + // TODO(GregoryConrad): remove this once Flutter gets SPM or Native Assets + ExternalLibrary lib; + if (Platform.isIOS || Platform.isMacOS) { + lib = ExternalLibrary.process(iKnowHowToUseIt: true); + } else { + lib = await loadExternalLibrary(libraryLoaderConfig); + } + await RustLib.init(externalLibrary: lib); + } + + await ensureInstanceInitialized(instanceDir: path, tmpDir: tmpDir()); + return _instances.putIfAbsent(path, () => MimirInstanceImpl(path)); } /// Creates an "or" [Filter] of the given sub-filters. diff --git a/packages/mimir/lib/src/lib.dart b/packages/mimir/lib/src/lib.dart new file mode 100644 index 00000000..0ed7c594 --- /dev/null +++ b/packages/mimir/lib/src/lib.dart @@ -0,0 +1,10 @@ +// This file is automatically generated, so please do not edit it. +// Generated by `flutter_rust_bridge`@ 2.1.0. + +// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import + +import 'frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +// Rust type: RustOpaqueNom>> +abstract class MapStringValue implements RustOpaqueInterface {} diff --git a/packages/mimir/native/Cargo.toml b/packages/mimir/native/Cargo.toml index eb8534f1..ecac49f5 100644 --- a/packages/mimir/native/Cargo.toml +++ b/packages/mimir/native/Cargo.toml @@ -6,11 +6,8 @@ edition = "2021" [lib] crate-type = ["staticlib", "cdylib"] -[build-dependencies] -flutter_rust_bridge_codegen = "=1.82.6" - [dependencies] -flutter_rust_bridge = "=1.82.6" +flutter_rust_bridge = "=2.1.0" anyhow = "1.0.*" serde = "1.0.*" serde_json = "1.0.*" diff --git a/packages/mimir/native/build.rs b/packages/mimir/native/build.rs deleted file mode 100644 index 2dbeb382..00000000 --- a/packages/mimir/native/build.rs +++ /dev/null @@ -1,40 +0,0 @@ -use lib_flutter_rust_bridge_codegen::{ - config_parse, frb_codegen, get_symbols_if_no_duplicates, RawOpts, -}; - -// Adopted from https://github.com/fzyzcjy/flutter_rust_bridge/blob/master/frb_example/pure_dart/rust/build.rs - -const RUST_INPUT: &str = "src/api.rs"; -const DART_OUTPUT: &str = "../lib/src/bridge_generated.dart"; - -const IOS_C_OUTPUT: &str = "../../flutter_mimir/ios/Classes/frb.h"; -const MACOS_C_OUTPUT_DIR: &str = "../../flutter_mimir/macos/Classes/"; - -fn main() { - // Tell Cargo that if the input Rust code changes, rerun this build script - println!("cargo:rerun-if-changed={RUST_INPUT}"); - - // Options for frb_codegen - let raw_opts = RawOpts { - rust_input: vec![RUST_INPUT.to_string()], - dart_output: vec![DART_OUTPUT.to_string()], - c_output: Some(vec![IOS_C_OUTPUT.to_string()]), - extra_c_output_path: Some(vec![MACOS_C_OUTPUT_DIR.to_string()]), - inline_rust: true, - wasm: true, - ..Default::default() - }; - - // Generate Rust & Dart ffi bridges - let configs = config_parse(raw_opts); - let all_symbols = get_symbols_if_no_duplicates(&configs).unwrap(); - for config in configs.iter() { - frb_codegen(config, &all_symbols).unwrap(); - } - - // Format the generated Dart code - _ = std::process::Command::new("dart") - .arg("format") - .arg("..") - .spawn(); -} diff --git a/packages/mimir/native/src/api.rs b/packages/mimir/native/src/api.rs index 676d6abf..2cd21efc 100644 --- a/packages/mimir/native/src/api.rs +++ b/packages/mimir/native/src/api.rs @@ -204,6 +204,7 @@ pub fn set_settings( } trait StringExt { + #[frb(ignore)] fn to_document(&self) -> Result; } @@ -214,6 +215,7 @@ impl StringExt for String { } trait DocumentExt { + #[frb(ignore)] fn to_string(&self) -> Result; } diff --git a/packages/mimir/native/src/bridge_generated.rs b/packages/mimir/native/src/bridge_generated.rs deleted file mode 100644 index 45ec51f1..00000000 --- a/packages/mimir/native/src/bridge_generated.rs +++ /dev/null @@ -1,1618 +0,0 @@ -#![allow( - non_camel_case_types, - unused, - clippy::redundant_closure, - clippy::useless_conversion, - clippy::unit_arg, - clippy::double_parens, - non_snake_case, - clippy::too_many_arguments -)] -// AUTO GENERATED FILE, DO NOT EDIT. -// Generated by `flutter_rust_bridge`@ 1.82.6. - -use crate::api::*; -use core::panic::UnwindSafe; -use flutter_rust_bridge::rust2dart::IntoIntoDart; -use flutter_rust_bridge::*; -use std::ffi::c_void; -use std::sync::Arc; - -// Section: imports - -// Section: wire functions - -fn wire_ensure_instance_initialized_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - tmp_dir: impl Wire2Api> + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, (), _>( - WrapInfo { - debug_name: "ensure_instance_initialized", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_tmp_dir = tmp_dir.wire2api(); - move |task_callback| ensure_instance_initialized(api_instance_dir, api_tmp_dir) - }, - ) -} -fn wire_ensure_index_initialized_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - index_name: impl Wire2Api + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, (), _>( - WrapInfo { - debug_name: "ensure_index_initialized", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_index_name = index_name.wire2api(); - move |task_callback| ensure_index_initialized(api_instance_dir, api_index_name) - }, - ) -} -fn wire_add_documents_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - index_name: impl Wire2Api + UnwindSafe, - documents: impl Wire2Api> + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, (), _>( - WrapInfo { - debug_name: "add_documents", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_index_name = index_name.wire2api(); - let api_documents = documents.wire2api(); - move |task_callback| add_documents(api_instance_dir, api_index_name, api_documents) - }, - ) -} -fn wire_delete_documents_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - index_name: impl Wire2Api + UnwindSafe, - document_ids: impl Wire2Api> + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, (), _>( - WrapInfo { - debug_name: "delete_documents", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_index_name = index_name.wire2api(); - let api_document_ids = document_ids.wire2api(); - move |task_callback| { - delete_documents(api_instance_dir, api_index_name, api_document_ids) - } - }, - ) -} -fn wire_delete_all_documents_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - index_name: impl Wire2Api + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, (), _>( - WrapInfo { - debug_name: "delete_all_documents", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_index_name = index_name.wire2api(); - move |task_callback| delete_all_documents(api_instance_dir, api_index_name) - }, - ) -} -fn wire_set_documents_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - index_name: impl Wire2Api + UnwindSafe, - documents: impl Wire2Api> + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, (), _>( - WrapInfo { - debug_name: "set_documents", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_index_name = index_name.wire2api(); - let api_documents = documents.wire2api(); - move |task_callback| set_documents(api_instance_dir, api_index_name, api_documents) - }, - ) -} -fn wire_get_document_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - index_name: impl Wire2Api + UnwindSafe, - document_id: impl Wire2Api + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, Option, _>( - WrapInfo { - debug_name: "get_document", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_index_name = index_name.wire2api(); - let api_document_id = document_id.wire2api(); - move |task_callback| get_document(api_instance_dir, api_index_name, api_document_id) - }, - ) -} -fn wire_get_all_documents_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - index_name: impl Wire2Api + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, Vec, _>( - WrapInfo { - debug_name: "get_all_documents", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_index_name = index_name.wire2api(); - move |task_callback| get_all_documents(api_instance_dir, api_index_name) - }, - ) -} -fn wire_search_documents_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - index_name: impl Wire2Api + UnwindSafe, - query: impl Wire2Api> + UnwindSafe, - limit: impl Wire2Api> + UnwindSafe, - offset: impl Wire2Api> + UnwindSafe, - sort_criteria: impl Wire2Api>> + UnwindSafe, - filter: impl Wire2Api> + UnwindSafe, - matching_strategy: impl Wire2Api> + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, Vec, _>( - WrapInfo { - debug_name: "search_documents", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_index_name = index_name.wire2api(); - let api_query = query.wire2api(); - let api_limit = limit.wire2api(); - let api_offset = offset.wire2api(); - let api_sort_criteria = sort_criteria.wire2api(); - let api_filter = filter.wire2api(); - let api_matching_strategy = matching_strategy.wire2api(); - move |task_callback| { - search_documents( - api_instance_dir, - api_index_name, - api_query, - api_limit, - api_offset, - api_sort_criteria, - api_filter, - api_matching_strategy, - ) - } - }, - ) -} -fn wire_number_of_documents_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - index_name: impl Wire2Api + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, u64, _>( - WrapInfo { - debug_name: "number_of_documents", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_index_name = index_name.wire2api(); - move |task_callback| number_of_documents(api_instance_dir, api_index_name) - }, - ) -} -fn wire_get_settings_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - index_name: impl Wire2Api + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, MimirIndexSettings, _>( - WrapInfo { - debug_name: "get_settings", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_index_name = index_name.wire2api(); - move |task_callback| get_settings(api_instance_dir, api_index_name) - }, - ) -} -fn wire_set_settings_impl( - port_: MessagePort, - instance_dir: impl Wire2Api + UnwindSafe, - index_name: impl Wire2Api + UnwindSafe, - settings: impl Wire2Api + UnwindSafe, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap::<_, _, _, (), _>( - WrapInfo { - debug_name: "set_settings", - port: Some(port_), - mode: FfiCallMode::Normal, - }, - move || { - let api_instance_dir = instance_dir.wire2api(); - let api_index_name = index_name.wire2api(); - let api_settings = settings.wire2api(); - move |task_callback| set_settings(api_instance_dir, api_index_name, api_settings) - }, - ) -} -// Section: wrapper structs - -// Section: static checks - -// Section: allocate functions - -// Section: related functions - -// Section: impl Wire2Api - -pub trait Wire2Api { - fn wire2api(self) -> T; -} - -impl Wire2Api> for *mut S -where - *mut S: Wire2Api, -{ - fn wire2api(self) -> Option { - (!self.is_null()).then(|| self.wire2api()) - } -} - -impl Wire2Api for bool { - fn wire2api(self) -> bool { - self - } -} - -impl Wire2Api for i32 { - fn wire2api(self) -> i32 { - self - } -} - -impl Wire2Api for i32 { - fn wire2api(self) -> TermsMatchingStrategy { - match self { - 0 => TermsMatchingStrategy::Last, - 1 => TermsMatchingStrategy::All, - _ => unreachable!("Invalid variant for TermsMatchingStrategy: {}", self), - } - } -} -impl Wire2Api for u32 { - fn wire2api(self) -> u32 { - self - } -} -impl Wire2Api for u8 { - fn wire2api(self) -> u8 { - self - } -} - -// Section: impl IntoDart - -impl support::IntoDart for MimirIndexSettings { - fn into_dart(self) -> support::DartAbi { - vec![ - self.primary_key.into_dart(), - self.searchable_fields.into_dart(), - self.filterable_fields.into_into_dart().into_dart(), - self.sortable_fields.into_into_dart().into_dart(), - self.ranking_rules.into_into_dart().into_dart(), - self.stop_words.into_into_dart().into_dart(), - self.synonyms.into_into_dart().into_dart(), - self.typos_enabled.into_into_dart().into_dart(), - self.min_word_size_for_one_typo.into_into_dart().into_dart(), - self.min_word_size_for_two_typos - .into_into_dart() - .into_dart(), - self.disallow_typos_on_words.into_into_dart().into_dart(), - self.disallow_typos_on_fields.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl support::IntoDartExceptPrimitive for MimirIndexSettings {} -impl rust2dart::IntoIntoDart for MimirIndexSettings { - fn into_into_dart(self) -> Self { - self - } -} - -impl support::IntoDart for Synonyms { - fn into_dart(self) -> support::DartAbi { - vec![ - self.word.into_into_dart().into_dart(), - self.synonyms.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl support::IntoDartExceptPrimitive for Synonyms {} -impl rust2dart::IntoIntoDart for Synonyms { - fn into_into_dart(self) -> Self { - self - } -} - -// Section: executor - -support::lazy_static! { - pub static ref FLUTTER_RUST_BRIDGE_HANDLER: support::DefaultHandler = Default::default(); -} - -/// cbindgen:ignore -#[cfg(target_family = "wasm")] -mod web { - use super::*; - // Section: wire functions - - #[wasm_bindgen] - pub fn wire_ensure_instance_initialized( - port_: MessagePort, - instance_dir: String, - tmp_dir: Option, - ) { - wire_ensure_instance_initialized_impl(port_, instance_dir, tmp_dir) - } - - #[wasm_bindgen] - pub fn wire_ensure_index_initialized( - port_: MessagePort, - instance_dir: String, - index_name: String, - ) { - wire_ensure_index_initialized_impl(port_, instance_dir, index_name) - } - - #[wasm_bindgen] - pub fn wire_add_documents( - port_: MessagePort, - instance_dir: String, - index_name: String, - documents: JsValue, - ) { - wire_add_documents_impl(port_, instance_dir, index_name, documents) - } - - #[wasm_bindgen] - pub fn wire_delete_documents( - port_: MessagePort, - instance_dir: String, - index_name: String, - document_ids: JsValue, - ) { - wire_delete_documents_impl(port_, instance_dir, index_name, document_ids) - } - - #[wasm_bindgen] - pub fn wire_delete_all_documents(port_: MessagePort, instance_dir: String, index_name: String) { - wire_delete_all_documents_impl(port_, instance_dir, index_name) - } - - #[wasm_bindgen] - pub fn wire_set_documents( - port_: MessagePort, - instance_dir: String, - index_name: String, - documents: JsValue, - ) { - wire_set_documents_impl(port_, instance_dir, index_name, documents) - } - - #[wasm_bindgen] - pub fn wire_get_document( - port_: MessagePort, - instance_dir: String, - index_name: String, - document_id: String, - ) { - wire_get_document_impl(port_, instance_dir, index_name, document_id) - } - - #[wasm_bindgen] - pub fn wire_get_all_documents(port_: MessagePort, instance_dir: String, index_name: String) { - wire_get_all_documents_impl(port_, instance_dir, index_name) - } - - #[wasm_bindgen] - pub fn wire_search_documents( - port_: MessagePort, - instance_dir: String, - index_name: String, - query: Option, - limit: JsValue, - offset: JsValue, - sort_criteria: JsValue, - filter: JsValue, - matching_strategy: JsValue, - ) { - wire_search_documents_impl( - port_, - instance_dir, - index_name, - query, - limit, - offset, - sort_criteria, - filter, - matching_strategy, - ) - } - - #[wasm_bindgen] - pub fn wire_number_of_documents(port_: MessagePort, instance_dir: String, index_name: String) { - wire_number_of_documents_impl(port_, instance_dir, index_name) - } - - #[wasm_bindgen] - pub fn wire_get_settings(port_: MessagePort, instance_dir: String, index_name: String) { - wire_get_settings_impl(port_, instance_dir, index_name) - } - - #[wasm_bindgen] - pub fn wire_set_settings( - port_: MessagePort, - instance_dir: String, - index_name: String, - settings: JsValue, - ) { - wire_set_settings_impl(port_, instance_dir, index_name, settings) - } - - // Section: allocate functions - - // Section: related functions - - // Section: impl Wire2Api - - impl Wire2Api for String { - fn wire2api(self) -> String { - self - } - } - impl Wire2Api> for JsValue { - fn wire2api(self) -> Vec { - self.dyn_into::() - .unwrap() - .iter() - .map(Wire2Api::wire2api) - .collect() - } - } - - impl Wire2Api for JsValue { - fn wire2api(self) -> Filter { - let self_ = self.unchecked_into::(); - match self_.get(0).unchecked_into_f64() as _ { - 0 => Filter::Or(self_.get(1).wire2api()), - 1 => Filter::And(self_.get(1).wire2api()), - 2 => Filter::Not(self_.get(1).wire2api()), - 3 => Filter::Exists { - field: self_.get(1).wire2api(), - }, - 4 => Filter::InValues { - field: self_.get(1).wire2api(), - values: self_.get(2).wire2api(), - }, - 5 => Filter::GreaterThan { - field: self_.get(1).wire2api(), - value: self_.get(2).wire2api(), - }, - 6 => Filter::GreaterThanOrEqual { - field: self_.get(1).wire2api(), - value: self_.get(2).wire2api(), - }, - 7 => Filter::Equal { - field: self_.get(1).wire2api(), - value: self_.get(2).wire2api(), - }, - 8 => Filter::NotEqual { - field: self_.get(1).wire2api(), - value: self_.get(2).wire2api(), - }, - 9 => Filter::LessThan { - field: self_.get(1).wire2api(), - value: self_.get(2).wire2api(), - }, - 10 => Filter::LessThanOrEqual { - field: self_.get(1).wire2api(), - value: self_.get(2).wire2api(), - }, - 11 => Filter::Between { - field: self_.get(1).wire2api(), - from: self_.get(2).wire2api(), - to: self_.get(3).wire2api(), - }, - 12 => Filter::IsNull { - field: self_.get(1).wire2api(), - }, - 13 => Filter::IsEmpty { - field: self_.get(1).wire2api(), - }, - _ => unreachable!(), - } - } - } - - impl Wire2Api> for JsValue { - fn wire2api(self) -> Vec { - self.dyn_into::() - .unwrap() - .iter() - .map(Wire2Api::wire2api) - .collect() - } - } - impl Wire2Api> for JsValue { - fn wire2api(self) -> Vec { - self.dyn_into::() - .unwrap() - .iter() - .map(Wire2Api::wire2api) - .collect() - } - } - impl Wire2Api> for JsValue { - fn wire2api(self) -> Vec { - self.dyn_into::() - .unwrap() - .iter() - .map(Wire2Api::wire2api) - .collect() - } - } - impl Wire2Api for JsValue { - fn wire2api(self) -> MimirIndexSettings { - let self_ = self.dyn_into::().unwrap(); - assert_eq!( - self_.length(), - 12, - "Expected 12 elements, got {}", - self_.length() - ); - MimirIndexSettings { - primary_key: self_.get(0).wire2api(), - searchable_fields: self_.get(1).wire2api(), - filterable_fields: self_.get(2).wire2api(), - sortable_fields: self_.get(3).wire2api(), - ranking_rules: self_.get(4).wire2api(), - stop_words: self_.get(5).wire2api(), - synonyms: self_.get(6).wire2api(), - typos_enabled: self_.get(7).wire2api(), - min_word_size_for_one_typo: self_.get(8).wire2api(), - min_word_size_for_two_typos: self_.get(9).wire2api(), - disallow_typos_on_words: self_.get(10).wire2api(), - disallow_typos_on_fields: self_.get(11).wire2api(), - } - } - } - impl Wire2Api> for Option { - fn wire2api(self) -> Option { - self.map(Wire2Api::wire2api) - } - } - impl Wire2Api>> for Option { - fn wire2api(self) -> Option> { - self.map(Wire2Api::wire2api) - } - } - - impl Wire2Api for JsValue { - fn wire2api(self) -> SortBy { - let self_ = self.unchecked_into::(); - match self_.get(0).unchecked_into_f64() as _ { - 0 => SortBy::Asc(self_.get(1).wire2api()), - 1 => SortBy::Desc(self_.get(1).wire2api()), - _ => unreachable!(), - } - } - } - impl Wire2Api for JsValue { - fn wire2api(self) -> Synonyms { - let self_ = self.dyn_into::().unwrap(); - assert_eq!( - self_.length(), - 2, - "Expected 2 elements, got {}", - self_.length() - ); - Synonyms { - word: self_.get(0).wire2api(), - synonyms: self_.get(1).wire2api(), - } - } - } - - impl Wire2Api> for Box<[u8]> { - fn wire2api(self) -> Vec { - self.into_vec() - } - } - // Section: impl Wire2Api for JsValue - - impl Wire2Api> for JsValue - where - JsValue: Wire2Api, - { - fn wire2api(self) -> Option { - (!self.is_null() && !self.is_undefined()).then(|| self.wire2api()) - } - } - impl Wire2Api for JsValue { - fn wire2api(self) -> String { - self.as_string().expect("non-UTF-8 string, or not a string") - } - } - impl Wire2Api for JsValue { - fn wire2api(self) -> bool { - self.is_truthy() - } - } - impl Wire2Api> for JsValue { - fn wire2api(self) -> Box { - Box::new(self.wire2api()) - } - } - impl Wire2Api for JsValue { - fn wire2api(self) -> i32 { - self.unchecked_into_f64() as _ - } - } - impl Wire2Api for JsValue { - fn wire2api(self) -> TermsMatchingStrategy { - (self.unchecked_into_f64() as i32).wire2api() - } - } - impl Wire2Api for JsValue { - fn wire2api(self) -> u32 { - self.unchecked_into_f64() as _ - } - } - impl Wire2Api for JsValue { - fn wire2api(self) -> u8 { - self.unchecked_into_f64() as _ - } - } - impl Wire2Api> for JsValue { - fn wire2api(self) -> Vec { - self.unchecked_into::().to_vec().into() - } - } -} -#[cfg(target_family = "wasm")] -pub use self::web::*; - -#[cfg(not(target_family = "wasm"))] -mod io { - use super::*; - // Section: wire functions - - #[no_mangle] - pub extern "C" fn wire_ensure_instance_initialized( - port_: i64, - instance_dir: *mut wire_uint_8_list, - tmp_dir: *mut wire_uint_8_list, - ) { - wire_ensure_instance_initialized_impl(port_, instance_dir, tmp_dir) - } - - #[no_mangle] - pub extern "C" fn wire_ensure_index_initialized( - port_: i64, - instance_dir: *mut wire_uint_8_list, - index_name: *mut wire_uint_8_list, - ) { - wire_ensure_index_initialized_impl(port_, instance_dir, index_name) - } - - #[no_mangle] - pub extern "C" fn wire_add_documents( - port_: i64, - instance_dir: *mut wire_uint_8_list, - index_name: *mut wire_uint_8_list, - documents: *mut wire_StringList, - ) { - wire_add_documents_impl(port_, instance_dir, index_name, documents) - } - - #[no_mangle] - pub extern "C" fn wire_delete_documents( - port_: i64, - instance_dir: *mut wire_uint_8_list, - index_name: *mut wire_uint_8_list, - document_ids: *mut wire_StringList, - ) { - wire_delete_documents_impl(port_, instance_dir, index_name, document_ids) - } - - #[no_mangle] - pub extern "C" fn wire_delete_all_documents( - port_: i64, - instance_dir: *mut wire_uint_8_list, - index_name: *mut wire_uint_8_list, - ) { - wire_delete_all_documents_impl(port_, instance_dir, index_name) - } - - #[no_mangle] - pub extern "C" fn wire_set_documents( - port_: i64, - instance_dir: *mut wire_uint_8_list, - index_name: *mut wire_uint_8_list, - documents: *mut wire_StringList, - ) { - wire_set_documents_impl(port_, instance_dir, index_name, documents) - } - - #[no_mangle] - pub extern "C" fn wire_get_document( - port_: i64, - instance_dir: *mut wire_uint_8_list, - index_name: *mut wire_uint_8_list, - document_id: *mut wire_uint_8_list, - ) { - wire_get_document_impl(port_, instance_dir, index_name, document_id) - } - - #[no_mangle] - pub extern "C" fn wire_get_all_documents( - port_: i64, - instance_dir: *mut wire_uint_8_list, - index_name: *mut wire_uint_8_list, - ) { - wire_get_all_documents_impl(port_, instance_dir, index_name) - } - - #[no_mangle] - pub extern "C" fn wire_search_documents( - port_: i64, - instance_dir: *mut wire_uint_8_list, - index_name: *mut wire_uint_8_list, - query: *mut wire_uint_8_list, - limit: *mut u32, - offset: *mut u32, - sort_criteria: *mut wire_list_sort_by, - filter: *mut wire_Filter, - matching_strategy: *mut i32, - ) { - wire_search_documents_impl( - port_, - instance_dir, - index_name, - query, - limit, - offset, - sort_criteria, - filter, - matching_strategy, - ) - } - - #[no_mangle] - pub extern "C" fn wire_number_of_documents( - port_: i64, - instance_dir: *mut wire_uint_8_list, - index_name: *mut wire_uint_8_list, - ) { - wire_number_of_documents_impl(port_, instance_dir, index_name) - } - - #[no_mangle] - pub extern "C" fn wire_get_settings( - port_: i64, - instance_dir: *mut wire_uint_8_list, - index_name: *mut wire_uint_8_list, - ) { - wire_get_settings_impl(port_, instance_dir, index_name) - } - - #[no_mangle] - pub extern "C" fn wire_set_settings( - port_: i64, - instance_dir: *mut wire_uint_8_list, - index_name: *mut wire_uint_8_list, - settings: *mut wire_MimirIndexSettings, - ) { - wire_set_settings_impl(port_, instance_dir, index_name, settings) - } - - // Section: allocate functions - - #[no_mangle] - pub extern "C" fn new_StringList_0(len: i32) -> *mut wire_StringList { - let wrap = wire_StringList { - ptr: support::new_leak_vec_ptr(<*mut wire_uint_8_list>::new_with_null_ptr(), len), - len, - }; - support::new_leak_box_ptr(wrap) - } - - #[no_mangle] - pub extern "C" fn new_box_autoadd_filter_0() -> *mut wire_Filter { - support::new_leak_box_ptr(wire_Filter::new_with_null_ptr()) - } - - #[no_mangle] - pub extern "C" fn new_box_autoadd_mimir_index_settings_0() -> *mut wire_MimirIndexSettings { - support::new_leak_box_ptr(wire_MimirIndexSettings::new_with_null_ptr()) - } - - #[no_mangle] - pub extern "C" fn new_box_autoadd_terms_matching_strategy_0(value: i32) -> *mut i32 { - support::new_leak_box_ptr(value) - } - - #[no_mangle] - pub extern "C" fn new_box_autoadd_u32_0(value: u32) -> *mut u32 { - support::new_leak_box_ptr(value) - } - - #[no_mangle] - pub extern "C" fn new_box_filter_0() -> *mut wire_Filter { - support::new_leak_box_ptr(wire_Filter::new_with_null_ptr()) - } - - #[no_mangle] - pub extern "C" fn new_list_filter_0(len: i32) -> *mut wire_list_filter { - let wrap = wire_list_filter { - ptr: support::new_leak_vec_ptr(::new_with_null_ptr(), len), - len, - }; - support::new_leak_box_ptr(wrap) - } - - #[no_mangle] - pub extern "C" fn new_list_sort_by_0(len: i32) -> *mut wire_list_sort_by { - let wrap = wire_list_sort_by { - ptr: support::new_leak_vec_ptr(::new_with_null_ptr(), len), - len, - }; - support::new_leak_box_ptr(wrap) - } - - #[no_mangle] - pub extern "C" fn new_list_synonyms_0(len: i32) -> *mut wire_list_synonyms { - let wrap = wire_list_synonyms { - ptr: support::new_leak_vec_ptr(::new_with_null_ptr(), len), - len, - }; - support::new_leak_box_ptr(wrap) - } - - #[no_mangle] - pub extern "C" fn new_uint_8_list_0(len: i32) -> *mut wire_uint_8_list { - let ans = wire_uint_8_list { - ptr: support::new_leak_vec_ptr(Default::default(), len), - len, - }; - support::new_leak_box_ptr(ans) - } - - // Section: related functions - - // Section: impl Wire2Api - - impl Wire2Api for *mut wire_uint_8_list { - fn wire2api(self) -> String { - let vec: Vec = self.wire2api(); - String::from_utf8_lossy(&vec).into_owned() - } - } - impl Wire2Api> for *mut wire_StringList { - fn wire2api(self) -> Vec { - let vec = unsafe { - let wrap = support::box_from_leak_ptr(self); - support::vec_from_leak_ptr(wrap.ptr, wrap.len) - }; - vec.into_iter().map(Wire2Api::wire2api).collect() - } - } - - impl Wire2Api for *mut wire_Filter { - fn wire2api(self) -> Filter { - let wrap = unsafe { support::box_from_leak_ptr(self) }; - Wire2Api::::wire2api(*wrap).into() - } - } - impl Wire2Api for *mut wire_MimirIndexSettings { - fn wire2api(self) -> MimirIndexSettings { - let wrap = unsafe { support::box_from_leak_ptr(self) }; - Wire2Api::::wire2api(*wrap).into() - } - } - impl Wire2Api for *mut i32 { - fn wire2api(self) -> TermsMatchingStrategy { - let wrap = unsafe { support::box_from_leak_ptr(self) }; - Wire2Api::::wire2api(*wrap).into() - } - } - impl Wire2Api for *mut u32 { - fn wire2api(self) -> u32 { - unsafe { *support::box_from_leak_ptr(self) } - } - } - impl Wire2Api> for *mut wire_Filter { - fn wire2api(self) -> Box { - let wrap = unsafe { support::box_from_leak_ptr(self) }; - Wire2Api::::wire2api(*wrap).into() - } - } - impl Wire2Api for wire_Filter { - fn wire2api(self) -> Filter { - match self.tag { - 0 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.Or); - Filter::Or(ans.field0.wire2api()) - }, - 1 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.And); - Filter::And(ans.field0.wire2api()) - }, - 2 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.Not); - Filter::Not(ans.field0.wire2api()) - }, - 3 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.Exists); - Filter::Exists { - field: ans.field.wire2api(), - } - }, - 4 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.InValues); - Filter::InValues { - field: ans.field.wire2api(), - values: ans.values.wire2api(), - } - }, - 5 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.GreaterThan); - Filter::GreaterThan { - field: ans.field.wire2api(), - value: ans.value.wire2api(), - } - }, - 6 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.GreaterThanOrEqual); - Filter::GreaterThanOrEqual { - field: ans.field.wire2api(), - value: ans.value.wire2api(), - } - }, - 7 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.Equal); - Filter::Equal { - field: ans.field.wire2api(), - value: ans.value.wire2api(), - } - }, - 8 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.NotEqual); - Filter::NotEqual { - field: ans.field.wire2api(), - value: ans.value.wire2api(), - } - }, - 9 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.LessThan); - Filter::LessThan { - field: ans.field.wire2api(), - value: ans.value.wire2api(), - } - }, - 10 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.LessThanOrEqual); - Filter::LessThanOrEqual { - field: ans.field.wire2api(), - value: ans.value.wire2api(), - } - }, - 11 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.Between); - Filter::Between { - field: ans.field.wire2api(), - from: ans.from.wire2api(), - to: ans.to.wire2api(), - } - }, - 12 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.IsNull); - Filter::IsNull { - field: ans.field.wire2api(), - } - }, - 13 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.IsEmpty); - Filter::IsEmpty { - field: ans.field.wire2api(), - } - }, - _ => unreachable!(), - } - } - } - - impl Wire2Api> for *mut wire_list_filter { - fn wire2api(self) -> Vec { - let vec = unsafe { - let wrap = support::box_from_leak_ptr(self); - support::vec_from_leak_ptr(wrap.ptr, wrap.len) - }; - vec.into_iter().map(Wire2Api::wire2api).collect() - } - } - impl Wire2Api> for *mut wire_list_sort_by { - fn wire2api(self) -> Vec { - let vec = unsafe { - let wrap = support::box_from_leak_ptr(self); - support::vec_from_leak_ptr(wrap.ptr, wrap.len) - }; - vec.into_iter().map(Wire2Api::wire2api).collect() - } - } - impl Wire2Api> for *mut wire_list_synonyms { - fn wire2api(self) -> Vec { - let vec = unsafe { - let wrap = support::box_from_leak_ptr(self); - support::vec_from_leak_ptr(wrap.ptr, wrap.len) - }; - vec.into_iter().map(Wire2Api::wire2api).collect() - } - } - impl Wire2Api for wire_MimirIndexSettings { - fn wire2api(self) -> MimirIndexSettings { - MimirIndexSettings { - primary_key: self.primary_key.wire2api(), - searchable_fields: self.searchable_fields.wire2api(), - filterable_fields: self.filterable_fields.wire2api(), - sortable_fields: self.sortable_fields.wire2api(), - ranking_rules: self.ranking_rules.wire2api(), - stop_words: self.stop_words.wire2api(), - synonyms: self.synonyms.wire2api(), - typos_enabled: self.typos_enabled.wire2api(), - min_word_size_for_one_typo: self.min_word_size_for_one_typo.wire2api(), - min_word_size_for_two_typos: self.min_word_size_for_two_typos.wire2api(), - disallow_typos_on_words: self.disallow_typos_on_words.wire2api(), - disallow_typos_on_fields: self.disallow_typos_on_fields.wire2api(), - } - } - } - - impl Wire2Api for wire_SortBy { - fn wire2api(self) -> SortBy { - match self.tag { - 0 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.Asc); - SortBy::Asc(ans.field0.wire2api()) - }, - 1 => unsafe { - let ans = support::box_from_leak_ptr(self.kind); - let ans = support::box_from_leak_ptr(ans.Desc); - SortBy::Desc(ans.field0.wire2api()) - }, - _ => unreachable!(), - } - } - } - impl Wire2Api for wire_Synonyms { - fn wire2api(self) -> Synonyms { - Synonyms { - word: self.word.wire2api(), - synonyms: self.synonyms.wire2api(), - } - } - } - - impl Wire2Api> for *mut wire_uint_8_list { - fn wire2api(self) -> Vec { - unsafe { - let wrap = support::box_from_leak_ptr(self); - support::vec_from_leak_ptr(wrap.ptr, wrap.len) - } - } - } - // Section: wire structs - - #[repr(C)] - #[derive(Clone)] - pub struct wire_StringList { - ptr: *mut *mut wire_uint_8_list, - len: i32, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_list_filter { - ptr: *mut wire_Filter, - len: i32, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_list_sort_by { - ptr: *mut wire_SortBy, - len: i32, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_list_synonyms { - ptr: *mut wire_Synonyms, - len: i32, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_MimirIndexSettings { - primary_key: *mut wire_uint_8_list, - searchable_fields: *mut wire_StringList, - filterable_fields: *mut wire_StringList, - sortable_fields: *mut wire_StringList, - ranking_rules: *mut wire_StringList, - stop_words: *mut wire_StringList, - synonyms: *mut wire_list_synonyms, - typos_enabled: bool, - min_word_size_for_one_typo: u8, - min_word_size_for_two_typos: u8, - disallow_typos_on_words: *mut wire_StringList, - disallow_typos_on_fields: *mut wire_StringList, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Synonyms { - word: *mut wire_uint_8_list, - synonyms: *mut wire_StringList, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_uint_8_list { - ptr: *mut u8, - len: i32, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter { - tag: i32, - kind: *mut FilterKind, - } - - #[repr(C)] - pub union FilterKind { - Or: *mut wire_Filter_Or, - And: *mut wire_Filter_And, - Not: *mut wire_Filter_Not, - Exists: *mut wire_Filter_Exists, - InValues: *mut wire_Filter_InValues, - GreaterThan: *mut wire_Filter_GreaterThan, - GreaterThanOrEqual: *mut wire_Filter_GreaterThanOrEqual, - Equal: *mut wire_Filter_Equal, - NotEqual: *mut wire_Filter_NotEqual, - LessThan: *mut wire_Filter_LessThan, - LessThanOrEqual: *mut wire_Filter_LessThanOrEqual, - Between: *mut wire_Filter_Between, - IsNull: *mut wire_Filter_IsNull, - IsEmpty: *mut wire_Filter_IsEmpty, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_Or { - field0: *mut wire_list_filter, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_And { - field0: *mut wire_list_filter, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_Not { - field0: *mut wire_Filter, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_Exists { - field: *mut wire_uint_8_list, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_InValues { - field: *mut wire_uint_8_list, - values: *mut wire_StringList, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_GreaterThan { - field: *mut wire_uint_8_list, - value: *mut wire_uint_8_list, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_GreaterThanOrEqual { - field: *mut wire_uint_8_list, - value: *mut wire_uint_8_list, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_Equal { - field: *mut wire_uint_8_list, - value: *mut wire_uint_8_list, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_NotEqual { - field: *mut wire_uint_8_list, - value: *mut wire_uint_8_list, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_LessThan { - field: *mut wire_uint_8_list, - value: *mut wire_uint_8_list, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_LessThanOrEqual { - field: *mut wire_uint_8_list, - value: *mut wire_uint_8_list, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_Between { - field: *mut wire_uint_8_list, - from: *mut wire_uint_8_list, - to: *mut wire_uint_8_list, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_IsNull { - field: *mut wire_uint_8_list, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_Filter_IsEmpty { - field: *mut wire_uint_8_list, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_SortBy { - tag: i32, - kind: *mut SortByKind, - } - - #[repr(C)] - pub union SortByKind { - Asc: *mut wire_SortBy_Asc, - Desc: *mut wire_SortBy_Desc, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_SortBy_Asc { - field0: *mut wire_uint_8_list, - } - - #[repr(C)] - #[derive(Clone)] - pub struct wire_SortBy_Desc { - field0: *mut wire_uint_8_list, - } - - // Section: impl NewWithNullPtr - - pub trait NewWithNullPtr { - fn new_with_null_ptr() -> Self; - } - - impl NewWithNullPtr for *mut T { - fn new_with_null_ptr() -> Self { - std::ptr::null_mut() - } - } - - impl Default for wire_Filter { - fn default() -> Self { - Self::new_with_null_ptr() - } - } - - impl NewWithNullPtr for wire_Filter { - fn new_with_null_ptr() -> Self { - Self { - tag: -1, - kind: core::ptr::null_mut(), - } - } - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_Or() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - Or: support::new_leak_box_ptr(wire_Filter_Or { - field0: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_And() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - And: support::new_leak_box_ptr(wire_Filter_And { - field0: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_Not() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - Not: support::new_leak_box_ptr(wire_Filter_Not { - field0: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_Exists() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - Exists: support::new_leak_box_ptr(wire_Filter_Exists { - field: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_InValues() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - InValues: support::new_leak_box_ptr(wire_Filter_InValues { - field: core::ptr::null_mut(), - values: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_GreaterThan() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - GreaterThan: support::new_leak_box_ptr(wire_Filter_GreaterThan { - field: core::ptr::null_mut(), - value: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_GreaterThanOrEqual() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - GreaterThanOrEqual: support::new_leak_box_ptr(wire_Filter_GreaterThanOrEqual { - field: core::ptr::null_mut(), - value: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_Equal() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - Equal: support::new_leak_box_ptr(wire_Filter_Equal { - field: core::ptr::null_mut(), - value: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_NotEqual() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - NotEqual: support::new_leak_box_ptr(wire_Filter_NotEqual { - field: core::ptr::null_mut(), - value: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_LessThan() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - LessThan: support::new_leak_box_ptr(wire_Filter_LessThan { - field: core::ptr::null_mut(), - value: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_LessThanOrEqual() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - LessThanOrEqual: support::new_leak_box_ptr(wire_Filter_LessThanOrEqual { - field: core::ptr::null_mut(), - value: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_Between() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - Between: support::new_leak_box_ptr(wire_Filter_Between { - field: core::ptr::null_mut(), - from: core::ptr::null_mut(), - to: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_IsNull() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - IsNull: support::new_leak_box_ptr(wire_Filter_IsNull { - field: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_Filter_IsEmpty() -> *mut FilterKind { - support::new_leak_box_ptr(FilterKind { - IsEmpty: support::new_leak_box_ptr(wire_Filter_IsEmpty { - field: core::ptr::null_mut(), - }), - }) - } - - impl NewWithNullPtr for wire_MimirIndexSettings { - fn new_with_null_ptr() -> Self { - Self { - primary_key: core::ptr::null_mut(), - searchable_fields: core::ptr::null_mut(), - filterable_fields: core::ptr::null_mut(), - sortable_fields: core::ptr::null_mut(), - ranking_rules: core::ptr::null_mut(), - stop_words: core::ptr::null_mut(), - synonyms: core::ptr::null_mut(), - typos_enabled: Default::default(), - min_word_size_for_one_typo: Default::default(), - min_word_size_for_two_typos: Default::default(), - disallow_typos_on_words: core::ptr::null_mut(), - disallow_typos_on_fields: core::ptr::null_mut(), - } - } - } - - impl Default for wire_MimirIndexSettings { - fn default() -> Self { - Self::new_with_null_ptr() - } - } - - impl Default for wire_SortBy { - fn default() -> Self { - Self::new_with_null_ptr() - } - } - - impl NewWithNullPtr for wire_SortBy { - fn new_with_null_ptr() -> Self { - Self { - tag: -1, - kind: core::ptr::null_mut(), - } - } - } - - #[no_mangle] - pub extern "C" fn inflate_SortBy_Asc() -> *mut SortByKind { - support::new_leak_box_ptr(SortByKind { - Asc: support::new_leak_box_ptr(wire_SortBy_Asc { - field0: core::ptr::null_mut(), - }), - }) - } - - #[no_mangle] - pub extern "C" fn inflate_SortBy_Desc() -> *mut SortByKind { - support::new_leak_box_ptr(SortByKind { - Desc: support::new_leak_box_ptr(wire_SortBy_Desc { - field0: core::ptr::null_mut(), - }), - }) - } - - impl NewWithNullPtr for wire_Synonyms { - fn new_with_null_ptr() -> Self { - Self { - word: core::ptr::null_mut(), - synonyms: core::ptr::null_mut(), - } - } - } - - impl Default for wire_Synonyms { - fn default() -> Self { - Self::new_with_null_ptr() - } - } - - // Section: sync execution mode utility - - #[no_mangle] - pub extern "C" fn free_WireSyncReturn(ptr: support::WireSyncReturn) { - unsafe { - let _ = support::box_from_leak_ptr(ptr); - }; - } -} -#[cfg(not(target_family = "wasm"))] -pub use self::io::*; diff --git a/packages/mimir/native/src/frb_generated.rs b/packages/mimir/native/src/frb_generated.rs new file mode 100644 index 00000000..ac6b25b8 --- /dev/null +++ b/packages/mimir/native/src/frb_generated.rs @@ -0,0 +1,2453 @@ +// This file is automatically generated, so please do not edit it. +// Generated by `flutter_rust_bridge`@ 2.1.0. + +#![allow( + non_camel_case_types, + unused, + non_snake_case, + clippy::needless_return, + clippy::redundant_closure_call, + clippy::redundant_closure, + clippy::useless_conversion, + clippy::unit_arg, + clippy::unused_unit, + clippy::double_parens, + clippy::let_and_return, + clippy::too_many_arguments, + clippy::match_single_binding, + clippy::clone_on_copy, + clippy::let_unit_value, + clippy::deref_addrof, + clippy::explicit_auto_deref, + clippy::borrow_deref_ref, + clippy::needless_borrow +)] + +// Section: imports + +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!( + default_stream_sink_codec = DcoCodec, + default_rust_opaque = RustOpaqueNom, + default_rust_auto_opaque = RustAutoOpaqueNom, +); +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.1.0"; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 1727542745; + +// Section: executor + +flutter_rust_bridge::frb_generated_default_handler!(); + +// Section: wire_funcs + +fn wire__crate__api__add_documents_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + index_name: impl CstDecode, + documents: impl CstDecode>, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "add_documents", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_index_name = index_name.cst_decode(); + let api_documents = documents.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = crate::api::add_documents( + api_instance_dir, + api_index_name, + api_documents, + )?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__delete_all_documents_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + index_name: impl CstDecode, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "delete_all_documents", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_index_name = index_name.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = + crate::api::delete_all_documents(api_instance_dir, api_index_name)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__delete_documents_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + index_name: impl CstDecode, + document_ids: impl CstDecode>, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "delete_documents", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_index_name = index_name.cst_decode(); + let api_document_ids = document_ids.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = crate::api::delete_documents( + api_instance_dir, + api_index_name, + api_document_ids, + )?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__ensure_index_initialized_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + index_name: impl CstDecode, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "ensure_index_initialized", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_index_name = index_name.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = + crate::api::ensure_index_initialized(api_instance_dir, api_index_name)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__ensure_instance_initialized_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + tmp_dir: impl CstDecode>, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "ensure_instance_initialized", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_tmp_dir = tmp_dir.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = + crate::api::ensure_instance_initialized(api_instance_dir, api_tmp_dir)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__get_all_documents_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + index_name: impl CstDecode, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "get_all_documents", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_index_name = index_name.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = + crate::api::get_all_documents(api_instance_dir, api_index_name)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__get_document_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + index_name: impl CstDecode, + document_id: impl CstDecode, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "get_document", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_index_name = index_name.cst_decode(); + let api_document_id = document_id.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = crate::api::get_document( + api_instance_dir, + api_index_name, + api_document_id, + )?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__get_settings_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + index_name: impl CstDecode, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "get_settings", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_index_name = index_name.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = crate::api::get_settings(api_instance_dir, api_index_name)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__number_of_documents_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + index_name: impl CstDecode, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "number_of_documents", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_index_name = index_name.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = + crate::api::number_of_documents(api_instance_dir, api_index_name)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__search_documents_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + index_name: impl CstDecode, + query: impl CstDecode>, + limit: impl CstDecode>, + offset: impl CstDecode>, + sort_criteria: impl CstDecode>>, + filter: impl CstDecode>, + matching_strategy: impl CstDecode>, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "search_documents", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_index_name = index_name.cst_decode(); + let api_query = query.cst_decode(); + let api_limit = limit.cst_decode(); + let api_offset = offset.cst_decode(); + let api_sort_criteria = sort_criteria.cst_decode(); + let api_filter = filter.cst_decode(); + let api_matching_strategy = matching_strategy.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = crate::api::search_documents( + api_instance_dir, + api_index_name, + api_query, + api_limit, + api_offset, + api_sort_criteria, + api_filter, + api_matching_strategy, + )?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__set_documents_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + index_name: impl CstDecode, + documents: impl CstDecode>, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "set_documents", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_index_name = index_name.cst_decode(); + let api_documents = documents.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = crate::api::set_documents( + api_instance_dir, + api_index_name, + api_documents, + )?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__crate__api__set_settings_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: impl CstDecode, + index_name: impl CstDecode, + settings: impl CstDecode, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "set_settings", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let api_instance_dir = instance_dir.cst_decode(); + let api_index_name = index_name.cst_decode(); + let api_settings = settings.cst_decode(); + move |context| { + transform_result_dco::<_, _, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = crate::api::set_settings( + api_instance_dir, + api_index_name, + api_settings, + )?; + Ok(output_ok) + })(), + ) + } + }, + ) +} + +// Section: dart2rust + +impl CstDecode for bool { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> bool { + self + } +} +impl CstDecode for i32 { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> i32 { + self + } +} +impl CstDecode for i32 { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::TermsMatchingStrategy { + match self { + 0 => crate::api::TermsMatchingStrategy::Last, + 1 => crate::api::TermsMatchingStrategy::All, + _ => unreachable!("Invalid variant for TermsMatchingStrategy: {}", self), + } + } +} +impl CstDecode for u32 { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> u32 { + self + } +} +impl CstDecode for u64 { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> u64 { + self + } +} +impl CstDecode for u8 { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> u8 { + self + } +} +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 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 Box { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + return Box::new(::sse_decode(deserializer)); + } +} + +impl SseDecode for crate::api::Filter { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut tag_ = ::sse_decode(deserializer); + match tag_ { + 0 => { + let mut var_field0 = >::sse_decode(deserializer); + return crate::api::Filter::Or(var_field0); + } + 1 => { + let mut var_field0 = >::sse_decode(deserializer); + return crate::api::Filter::And(var_field0); + } + 2 => { + let mut var_field0 = >::sse_decode(deserializer); + return crate::api::Filter::Not(var_field0); + } + 3 => { + let mut var_field = ::sse_decode(deserializer); + return crate::api::Filter::Exists { field: var_field }; + } + 4 => { + let mut var_field = ::sse_decode(deserializer); + let mut var_values = >::sse_decode(deserializer); + return crate::api::Filter::InValues { + field: var_field, + values: var_values, + }; + } + 5 => { + let mut var_field = ::sse_decode(deserializer); + let mut var_value = ::sse_decode(deserializer); + return crate::api::Filter::GreaterThan { + field: var_field, + value: var_value, + }; + } + 6 => { + let mut var_field = ::sse_decode(deserializer); + let mut var_value = ::sse_decode(deserializer); + return crate::api::Filter::GreaterThanOrEqual { + field: var_field, + value: var_value, + }; + } + 7 => { + let mut var_field = ::sse_decode(deserializer); + let mut var_value = ::sse_decode(deserializer); + return crate::api::Filter::Equal { + field: var_field, + value: var_value, + }; + } + 8 => { + let mut var_field = ::sse_decode(deserializer); + let mut var_value = ::sse_decode(deserializer); + return crate::api::Filter::NotEqual { + field: var_field, + value: var_value, + }; + } + 9 => { + let mut var_field = ::sse_decode(deserializer); + let mut var_value = ::sse_decode(deserializer); + return crate::api::Filter::LessThan { + field: var_field, + value: var_value, + }; + } + 10 => { + let mut var_field = ::sse_decode(deserializer); + let mut var_value = ::sse_decode(deserializer); + return crate::api::Filter::LessThanOrEqual { + field: var_field, + value: var_value, + }; + } + 11 => { + let mut var_field = ::sse_decode(deserializer); + let mut var_from = ::sse_decode(deserializer); + let mut var_to = ::sse_decode(deserializer); + return crate::api::Filter::Between { + field: var_field, + from: var_from, + to: var_to, + }; + } + 12 => { + let mut var_field = ::sse_decode(deserializer); + return crate::api::Filter::IsNull { field: var_field }; + } + 13 => { + let mut var_field = ::sse_decode(deserializer); + return crate::api::Filter::IsEmpty { field: var_field }; + } + _ => { + unimplemented!(""); + } + } + } +} + +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() + } +} + +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode(deserializer)); + } + return ans_; + } +} + +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode(deserializer)); + } + return ans_; + } +} + +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode(deserializer)); + } + return ans_; + } +} + +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode(deserializer)); + } + return ans_; + } +} + +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + 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 crate::api::MimirIndexSettings { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_primaryKey = >::sse_decode(deserializer); + let mut var_searchableFields = >>::sse_decode(deserializer); + let mut var_filterableFields = >::sse_decode(deserializer); + let mut var_sortableFields = >::sse_decode(deserializer); + let mut var_rankingRules = >::sse_decode(deserializer); + let mut var_stopWords = >::sse_decode(deserializer); + let mut var_synonyms = >::sse_decode(deserializer); + let mut var_typosEnabled = ::sse_decode(deserializer); + let mut var_minWordSizeForOneTypo = ::sse_decode(deserializer); + let mut var_minWordSizeForTwoTypos = ::sse_decode(deserializer); + let mut var_disallowTyposOnWords = >::sse_decode(deserializer); + let mut var_disallowTyposOnFields = >::sse_decode(deserializer); + return crate::api::MimirIndexSettings { + primary_key: var_primaryKey, + searchable_fields: var_searchableFields, + filterable_fields: var_filterableFields, + sortable_fields: var_sortableFields, + ranking_rules: var_rankingRules, + stop_words: var_stopWords, + synonyms: var_synonyms, + typos_enabled: var_typosEnabled, + min_word_size_for_one_typo: var_minWordSizeForOneTypo, + min_word_size_for_two_typos: var_minWordSizeForTwoTypos, + disallow_typos_on_words: var_disallowTyposOnWords, + disallow_typos_on_fields: var_disallowTyposOnFields, + }; + } +} + +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 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 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 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 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 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 crate::api::SortBy { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut tag_ = ::sse_decode(deserializer); + match tag_ { + 0 => { + let mut var_field0 = ::sse_decode(deserializer); + return crate::api::SortBy::Asc(var_field0); + } + 1 => { + let mut var_field0 = ::sse_decode(deserializer); + return crate::api::SortBy::Desc(var_field0); + } + _ => { + unimplemented!(""); + } + } + } +} + +impl SseDecode for crate::api::Synonyms { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_word = ::sse_decode(deserializer); + let mut var_synonyms = >::sse_decode(deserializer); + return crate::api::Synonyms { + word: var_word, + synonyms: var_synonyms, + }; + } +} + +impl SseDecode for crate::api::TermsMatchingStrategy { + // 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 match inner { + 0 => crate::api::TermsMatchingStrategy::Last, + 1 => crate::api::TermsMatchingStrategy::All, + _ => unreachable!("Invalid variant for TermsMatchingStrategy: {}", inner), + }; + } +} + +impl SseDecode for u32 { + // 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_u32::().unwrap() + } +} + +impl SseDecode for u64 { + // 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() + } +} + +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 () { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {} +} + +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 { + _ => 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 { + _ => unreachable!(), + } +} + +// Section: rust2dart + +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::Filter { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + match self { + crate::api::Filter::Or(field0) => { + [0.into_dart(), field0.into_into_dart().into_dart()].into_dart() + } + crate::api::Filter::And(field0) => { + [1.into_dart(), field0.into_into_dart().into_dart()].into_dart() + } + crate::api::Filter::Not(field0) => { + [2.into_dart(), field0.into_into_dart().into_dart()].into_dart() + } + crate::api::Filter::Exists { field } => { + [3.into_dart(), field.into_into_dart().into_dart()].into_dart() + } + crate::api::Filter::InValues { field, values } => [ + 4.into_dart(), + field.into_into_dart().into_dart(), + values.into_into_dart().into_dart(), + ] + .into_dart(), + crate::api::Filter::GreaterThan { field, value } => [ + 5.into_dart(), + field.into_into_dart().into_dart(), + value.into_into_dart().into_dart(), + ] + .into_dart(), + crate::api::Filter::GreaterThanOrEqual { field, value } => [ + 6.into_dart(), + field.into_into_dart().into_dart(), + value.into_into_dart().into_dart(), + ] + .into_dart(), + crate::api::Filter::Equal { field, value } => [ + 7.into_dart(), + field.into_into_dart().into_dart(), + value.into_into_dart().into_dart(), + ] + .into_dart(), + crate::api::Filter::NotEqual { field, value } => [ + 8.into_dart(), + field.into_into_dart().into_dart(), + value.into_into_dart().into_dart(), + ] + .into_dart(), + crate::api::Filter::LessThan { field, value } => [ + 9.into_dart(), + field.into_into_dart().into_dart(), + value.into_into_dart().into_dart(), + ] + .into_dart(), + crate::api::Filter::LessThanOrEqual { field, value } => [ + 10.into_dart(), + field.into_into_dart().into_dart(), + value.into_into_dart().into_dart(), + ] + .into_dart(), + crate::api::Filter::Between { field, from, to } => [ + 11.into_dart(), + field.into_into_dart().into_dart(), + from.into_into_dart().into_dart(), + to.into_into_dart().into_dart(), + ] + .into_dart(), + crate::api::Filter::IsNull { field } => { + [12.into_dart(), field.into_into_dart().into_dart()].into_dart() + } + crate::api::Filter::IsEmpty { field } => { + [13.into_dart(), field.into_into_dart().into_dart()].into_dart() + } + _ => { + unimplemented!(""); + } + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::api::Filter {} +impl flutter_rust_bridge::IntoIntoDart for crate::api::Filter { + fn into_into_dart(self) -> crate::api::Filter { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::MimirIndexSettings { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.primary_key.into_into_dart().into_dart(), + self.searchable_fields.into_into_dart().into_dart(), + self.filterable_fields.into_into_dart().into_dart(), + self.sortable_fields.into_into_dart().into_dart(), + self.ranking_rules.into_into_dart().into_dart(), + self.stop_words.into_into_dart().into_dart(), + self.synonyms.into_into_dart().into_dart(), + self.typos_enabled.into_into_dart().into_dart(), + self.min_word_size_for_one_typo.into_into_dart().into_dart(), + self.min_word_size_for_two_typos + .into_into_dart() + .into_dart(), + self.disallow_typos_on_words.into_into_dart().into_dart(), + self.disallow_typos_on_fields.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::MimirIndexSettings +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::MimirIndexSettings +{ + fn into_into_dart(self) -> crate::api::MimirIndexSettings { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::SortBy { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + match self { + crate::api::SortBy::Asc(field0) => { + [0.into_dart(), field0.into_into_dart().into_dart()].into_dart() + } + crate::api::SortBy::Desc(field0) => { + [1.into_dart(), field0.into_into_dart().into_dart()].into_dart() + } + _ => { + unimplemented!(""); + } + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::api::SortBy {} +impl flutter_rust_bridge::IntoIntoDart for crate::api::SortBy { + fn into_into_dart(self) -> crate::api::SortBy { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::Synonyms { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.word.into_into_dart().into_dart(), + self.synonyms.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::api::Synonyms {} +impl flutter_rust_bridge::IntoIntoDart for crate::api::Synonyms { + fn into_into_dart(self) -> crate::api::Synonyms { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::TermsMatchingStrategy { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + match self { + Self::Last => 0.into_dart(), + Self::All => 1.into_dart(), + _ => unreachable!(), + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::TermsMatchingStrategy +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::TermsMatchingStrategy +{ + fn into_into_dart(self) -> crate::api::TermsMatchingStrategy { + self + } +} + +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 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 Box { + // 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, serializer); + } +} + +impl SseEncode for crate::api::Filter { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + match self { + crate::api::Filter::Or(field0) => { + ::sse_encode(0, serializer); + >::sse_encode(field0, serializer); + } + crate::api::Filter::And(field0) => { + ::sse_encode(1, serializer); + >::sse_encode(field0, serializer); + } + crate::api::Filter::Not(field0) => { + ::sse_encode(2, serializer); + >::sse_encode(field0, serializer); + } + crate::api::Filter::Exists { field } => { + ::sse_encode(3, serializer); + ::sse_encode(field, serializer); + } + crate::api::Filter::InValues { field, values } => { + ::sse_encode(4, serializer); + ::sse_encode(field, serializer); + >::sse_encode(values, serializer); + } + crate::api::Filter::GreaterThan { field, value } => { + ::sse_encode(5, serializer); + ::sse_encode(field, serializer); + ::sse_encode(value, serializer); + } + crate::api::Filter::GreaterThanOrEqual { field, value } => { + ::sse_encode(6, serializer); + ::sse_encode(field, serializer); + ::sse_encode(value, serializer); + } + crate::api::Filter::Equal { field, value } => { + ::sse_encode(7, serializer); + ::sse_encode(field, serializer); + ::sse_encode(value, serializer); + } + crate::api::Filter::NotEqual { field, value } => { + ::sse_encode(8, serializer); + ::sse_encode(field, serializer); + ::sse_encode(value, serializer); + } + crate::api::Filter::LessThan { field, value } => { + ::sse_encode(9, serializer); + ::sse_encode(field, serializer); + ::sse_encode(value, serializer); + } + crate::api::Filter::LessThanOrEqual { field, value } => { + ::sse_encode(10, serializer); + ::sse_encode(field, serializer); + ::sse_encode(value, serializer); + } + crate::api::Filter::Between { field, from, to } => { + ::sse_encode(11, serializer); + ::sse_encode(field, serializer); + ::sse_encode(from, serializer); + ::sse_encode(to, serializer); + } + crate::api::Filter::IsNull { field } => { + ::sse_encode(12, serializer); + ::sse_encode(field, serializer); + } + crate::api::Filter::IsEmpty { field } => { + ::sse_encode(13, serializer); + ::sse_encode(field, serializer); + } + _ => { + unimplemented!(""); + } + } + } +} + +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(); + } +} + +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + +impl SseEncode for crate::api::MimirIndexSettings { + // 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.primary_key, serializer); + >>::sse_encode(self.searchable_fields, serializer); + >::sse_encode(self.filterable_fields, serializer); + >::sse_encode(self.sortable_fields, serializer); + >::sse_encode(self.ranking_rules, serializer); + >::sse_encode(self.stop_words, serializer); + >::sse_encode(self.synonyms, serializer); + ::sse_encode(self.typos_enabled, serializer); + ::sse_encode(self.min_word_size_for_one_typo, serializer); + ::sse_encode(self.min_word_size_for_two_typos, serializer); + >::sse_encode(self.disallow_typos_on_words, serializer); + >::sse_encode(self.disallow_typos_on_fields, 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 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 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 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 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 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 crate::api::SortBy { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + match self { + crate::api::SortBy::Asc(field0) => { + ::sse_encode(0, serializer); + ::sse_encode(field0, serializer); + } + crate::api::SortBy::Desc(field0) => { + ::sse_encode(1, serializer); + ::sse_encode(field0, serializer); + } + _ => { + unimplemented!(""); + } + } + } +} + +impl SseEncode for crate::api::Synonyms { + // 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.word, serializer); + >::sse_encode(self.synonyms, serializer); + } +} + +impl SseEncode for crate::api::TermsMatchingStrategy { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode( + match self { + crate::api::TermsMatchingStrategy::Last => 0, + crate::api::TermsMatchingStrategy::All => 1, + _ => { + unimplemented!(""); + } + }, + serializer, + ); + } +} + +impl SseEncode for u32 { + // 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_u32::(self).unwrap(); + } +} + +impl SseEncode for u64 { + // 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).unwrap(); + } +} + +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 () { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {} +} + +#[cfg(not(target_family = "wasm"))] +mod io { + // This file is automatically generated, so please do not edit it. + // Generated by `flutter_rust_bridge`@ 2.1.0. + + // Section: imports + + use super::*; + 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!(); + + // Section: dart2rust + + impl CstDecode + for *mut wire_cst_list_prim_u_8_strict + { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> flutter_rust_bridge::for_generated::anyhow::Error { + unimplemented!() + } + } + impl CstDecode for *mut wire_cst_list_prim_u_8_strict { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> String { + let vec: Vec = self.cst_decode(); + String::from_utf8(vec).unwrap() + } + } + impl CstDecode for *mut wire_cst_filter { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::Filter { + let wrap = unsafe { flutter_rust_bridge::for_generated::box_from_leak_ptr(self) }; + CstDecode::::cst_decode(*wrap).into() + } + } + impl CstDecode for *mut wire_cst_mimir_index_settings { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::MimirIndexSettings { + let wrap = unsafe { flutter_rust_bridge::for_generated::box_from_leak_ptr(self) }; + CstDecode::::cst_decode(*wrap).into() + } + } + impl CstDecode for *mut i32 { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::TermsMatchingStrategy { + let wrap = unsafe { flutter_rust_bridge::for_generated::box_from_leak_ptr(self) }; + CstDecode::::cst_decode(*wrap).into() + } + } + impl CstDecode for *mut u32 { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> u32 { + unsafe { *flutter_rust_bridge::for_generated::box_from_leak_ptr(self) } + } + } + impl CstDecode> for *mut wire_cst_filter { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Box { + let wrap = unsafe { flutter_rust_bridge::for_generated::box_from_leak_ptr(self) }; + CstDecode::::cst_decode(*wrap).into() + } + } + impl CstDecode for wire_cst_filter { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::Filter { + match self.tag { + 0 => { + let ans = unsafe { self.kind.Or }; + crate::api::Filter::Or(ans.field0.cst_decode()) + } + 1 => { + let ans = unsafe { self.kind.And }; + crate::api::Filter::And(ans.field0.cst_decode()) + } + 2 => { + let ans = unsafe { self.kind.Not }; + crate::api::Filter::Not(ans.field0.cst_decode()) + } + 3 => { + let ans = unsafe { self.kind.Exists }; + crate::api::Filter::Exists { + field: ans.field.cst_decode(), + } + } + 4 => { + let ans = unsafe { self.kind.InValues }; + crate::api::Filter::InValues { + field: ans.field.cst_decode(), + values: ans.values.cst_decode(), + } + } + 5 => { + let ans = unsafe { self.kind.GreaterThan }; + crate::api::Filter::GreaterThan { + field: ans.field.cst_decode(), + value: ans.value.cst_decode(), + } + } + 6 => { + let ans = unsafe { self.kind.GreaterThanOrEqual }; + crate::api::Filter::GreaterThanOrEqual { + field: ans.field.cst_decode(), + value: ans.value.cst_decode(), + } + } + 7 => { + let ans = unsafe { self.kind.Equal }; + crate::api::Filter::Equal { + field: ans.field.cst_decode(), + value: ans.value.cst_decode(), + } + } + 8 => { + let ans = unsafe { self.kind.NotEqual }; + crate::api::Filter::NotEqual { + field: ans.field.cst_decode(), + value: ans.value.cst_decode(), + } + } + 9 => { + let ans = unsafe { self.kind.LessThan }; + crate::api::Filter::LessThan { + field: ans.field.cst_decode(), + value: ans.value.cst_decode(), + } + } + 10 => { + let ans = unsafe { self.kind.LessThanOrEqual }; + crate::api::Filter::LessThanOrEqual { + field: ans.field.cst_decode(), + value: ans.value.cst_decode(), + } + } + 11 => { + let ans = unsafe { self.kind.Between }; + crate::api::Filter::Between { + field: ans.field.cst_decode(), + from: ans.from.cst_decode(), + to: ans.to.cst_decode(), + } + } + 12 => { + let ans = unsafe { self.kind.IsNull }; + crate::api::Filter::IsNull { + field: ans.field.cst_decode(), + } + } + 13 => { + let ans = unsafe { self.kind.IsEmpty }; + crate::api::Filter::IsEmpty { + field: ans.field.cst_decode(), + } + } + _ => unreachable!(), + } + } + } + impl CstDecode> for *mut wire_cst_list_String { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Vec { + let vec = unsafe { + let wrap = flutter_rust_bridge::for_generated::box_from_leak_ptr(self); + flutter_rust_bridge::for_generated::vec_from_leak_ptr(wrap.ptr, wrap.len) + }; + vec.into_iter().map(CstDecode::cst_decode).collect() + } + } + impl CstDecode> for *mut wire_cst_list_filter { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Vec { + let vec = unsafe { + let wrap = flutter_rust_bridge::for_generated::box_from_leak_ptr(self); + flutter_rust_bridge::for_generated::vec_from_leak_ptr(wrap.ptr, wrap.len) + }; + vec.into_iter().map(CstDecode::cst_decode).collect() + } + } + impl CstDecode> for *mut wire_cst_list_prim_u_8_strict { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Vec { + unsafe { + let wrap = flutter_rust_bridge::for_generated::box_from_leak_ptr(self); + flutter_rust_bridge::for_generated::vec_from_leak_ptr(wrap.ptr, wrap.len) + } + } + } + impl CstDecode> for *mut wire_cst_list_sort_by { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Vec { + let vec = unsafe { + let wrap = flutter_rust_bridge::for_generated::box_from_leak_ptr(self); + flutter_rust_bridge::for_generated::vec_from_leak_ptr(wrap.ptr, wrap.len) + }; + vec.into_iter().map(CstDecode::cst_decode).collect() + } + } + impl CstDecode> for *mut wire_cst_list_synonyms { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Vec { + let vec = unsafe { + let wrap = flutter_rust_bridge::for_generated::box_from_leak_ptr(self); + flutter_rust_bridge::for_generated::vec_from_leak_ptr(wrap.ptr, wrap.len) + }; + vec.into_iter().map(CstDecode::cst_decode).collect() + } + } + impl CstDecode for wire_cst_mimir_index_settings { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::MimirIndexSettings { + crate::api::MimirIndexSettings { + primary_key: self.primary_key.cst_decode(), + searchable_fields: self.searchable_fields.cst_decode(), + filterable_fields: self.filterable_fields.cst_decode(), + sortable_fields: self.sortable_fields.cst_decode(), + ranking_rules: self.ranking_rules.cst_decode(), + stop_words: self.stop_words.cst_decode(), + synonyms: self.synonyms.cst_decode(), + typos_enabled: self.typos_enabled.cst_decode(), + min_word_size_for_one_typo: self.min_word_size_for_one_typo.cst_decode(), + min_word_size_for_two_typos: self.min_word_size_for_two_typos.cst_decode(), + disallow_typos_on_words: self.disallow_typos_on_words.cst_decode(), + disallow_typos_on_fields: self.disallow_typos_on_fields.cst_decode(), + } + } + } + impl CstDecode for wire_cst_sort_by { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::SortBy { + match self.tag { + 0 => { + let ans = unsafe { self.kind.Asc }; + crate::api::SortBy::Asc(ans.field0.cst_decode()) + } + 1 => { + let ans = unsafe { self.kind.Desc }; + crate::api::SortBy::Desc(ans.field0.cst_decode()) + } + _ => unreachable!(), + } + } + } + impl CstDecode for wire_cst_synonyms { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::Synonyms { + crate::api::Synonyms { + word: self.word.cst_decode(), + synonyms: self.synonyms.cst_decode(), + } + } + } + impl NewWithNullPtr for wire_cst_filter { + fn new_with_null_ptr() -> Self { + Self { + tag: -1, + kind: FilterKind { nil__: () }, + } + } + } + impl Default for wire_cst_filter { + fn default() -> Self { + Self::new_with_null_ptr() + } + } + impl NewWithNullPtr for wire_cst_mimir_index_settings { + fn new_with_null_ptr() -> Self { + Self { + primary_key: core::ptr::null_mut(), + searchable_fields: core::ptr::null_mut(), + filterable_fields: core::ptr::null_mut(), + sortable_fields: core::ptr::null_mut(), + ranking_rules: core::ptr::null_mut(), + stop_words: core::ptr::null_mut(), + synonyms: core::ptr::null_mut(), + typos_enabled: Default::default(), + min_word_size_for_one_typo: Default::default(), + min_word_size_for_two_typos: Default::default(), + disallow_typos_on_words: core::ptr::null_mut(), + disallow_typos_on_fields: core::ptr::null_mut(), + } + } + } + impl Default for wire_cst_mimir_index_settings { + fn default() -> Self { + Self::new_with_null_ptr() + } + } + impl NewWithNullPtr for wire_cst_sort_by { + fn new_with_null_ptr() -> Self { + Self { + tag: -1, + kind: SortByKind { nil__: () }, + } + } + } + impl Default for wire_cst_sort_by { + fn default() -> Self { + Self::new_with_null_ptr() + } + } + impl NewWithNullPtr for wire_cst_synonyms { + fn new_with_null_ptr() -> Self { + Self { + word: core::ptr::null_mut(), + synonyms: core::ptr::null_mut(), + } + } + } + impl Default for wire_cst_synonyms { + fn default() -> Self { + Self::new_with_null_ptr() + } + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__add_documents( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + index_name: *mut wire_cst_list_prim_u_8_strict, + documents: *mut wire_cst_list_String, + ) { + wire__crate__api__add_documents_impl(port_, instance_dir, index_name, documents) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__delete_all_documents( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + index_name: *mut wire_cst_list_prim_u_8_strict, + ) { + wire__crate__api__delete_all_documents_impl(port_, instance_dir, index_name) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__delete_documents( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + index_name: *mut wire_cst_list_prim_u_8_strict, + document_ids: *mut wire_cst_list_String, + ) { + wire__crate__api__delete_documents_impl(port_, instance_dir, index_name, document_ids) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__ensure_index_initialized( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + index_name: *mut wire_cst_list_prim_u_8_strict, + ) { + wire__crate__api__ensure_index_initialized_impl(port_, instance_dir, index_name) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__ensure_instance_initialized( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + tmp_dir: *mut wire_cst_list_prim_u_8_strict, + ) { + wire__crate__api__ensure_instance_initialized_impl(port_, instance_dir, tmp_dir) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__get_all_documents( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + index_name: *mut wire_cst_list_prim_u_8_strict, + ) { + wire__crate__api__get_all_documents_impl(port_, instance_dir, index_name) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__get_document( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + index_name: *mut wire_cst_list_prim_u_8_strict, + document_id: *mut wire_cst_list_prim_u_8_strict, + ) { + wire__crate__api__get_document_impl(port_, instance_dir, index_name, document_id) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__get_settings( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + index_name: *mut wire_cst_list_prim_u_8_strict, + ) { + wire__crate__api__get_settings_impl(port_, instance_dir, index_name) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__number_of_documents( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + index_name: *mut wire_cst_list_prim_u_8_strict, + ) { + wire__crate__api__number_of_documents_impl(port_, instance_dir, index_name) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__search_documents( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + index_name: *mut wire_cst_list_prim_u_8_strict, + query: *mut wire_cst_list_prim_u_8_strict, + limit: *mut u32, + offset: *mut u32, + sort_criteria: *mut wire_cst_list_sort_by, + filter: *mut wire_cst_filter, + matching_strategy: *mut i32, + ) { + wire__crate__api__search_documents_impl( + port_, + instance_dir, + index_name, + query, + limit, + offset, + sort_criteria, + filter, + matching_strategy, + ) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__set_documents( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + index_name: *mut wire_cst_list_prim_u_8_strict, + documents: *mut wire_cst_list_String, + ) { + wire__crate__api__set_documents_impl(port_, instance_dir, index_name, documents) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_wire__crate__api__set_settings( + port_: i64, + instance_dir: *mut wire_cst_list_prim_u_8_strict, + index_name: *mut wire_cst_list_prim_u_8_strict, + settings: *mut wire_cst_mimir_index_settings, + ) { + wire__crate__api__set_settings_impl(port_, instance_dir, index_name, settings) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_cst_new_box_autoadd_filter() -> *mut wire_cst_filter { + flutter_rust_bridge::for_generated::new_leak_box_ptr(wire_cst_filter::new_with_null_ptr()) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_cst_new_box_autoadd_mimir_index_settings( + ) -> *mut wire_cst_mimir_index_settings { + flutter_rust_bridge::for_generated::new_leak_box_ptr( + wire_cst_mimir_index_settings::new_with_null_ptr(), + ) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_cst_new_box_autoadd_terms_matching_strategy( + value: i32, + ) -> *mut i32 { + flutter_rust_bridge::for_generated::new_leak_box_ptr(value) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_cst_new_box_autoadd_u_32(value: u32) -> *mut u32 { + flutter_rust_bridge::for_generated::new_leak_box_ptr(value) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_cst_new_box_filter() -> *mut wire_cst_filter { + flutter_rust_bridge::for_generated::new_leak_box_ptr(wire_cst_filter::new_with_null_ptr()) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_cst_new_list_String(len: i32) -> *mut wire_cst_list_String { + let wrap = wire_cst_list_String { + ptr: flutter_rust_bridge::for_generated::new_leak_vec_ptr( + <*mut wire_cst_list_prim_u_8_strict>::new_with_null_ptr(), + len, + ), + len, + }; + flutter_rust_bridge::for_generated::new_leak_box_ptr(wrap) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_cst_new_list_filter(len: i32) -> *mut wire_cst_list_filter { + let wrap = wire_cst_list_filter { + ptr: flutter_rust_bridge::for_generated::new_leak_vec_ptr( + ::new_with_null_ptr(), + len, + ), + len, + }; + flutter_rust_bridge::for_generated::new_leak_box_ptr(wrap) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_cst_new_list_prim_u_8_strict( + len: i32, + ) -> *mut wire_cst_list_prim_u_8_strict { + let ans = wire_cst_list_prim_u_8_strict { + ptr: flutter_rust_bridge::for_generated::new_leak_vec_ptr(Default::default(), len), + len, + }; + flutter_rust_bridge::for_generated::new_leak_box_ptr(ans) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_cst_new_list_sort_by(len: i32) -> *mut wire_cst_list_sort_by { + let wrap = wire_cst_list_sort_by { + ptr: flutter_rust_bridge::for_generated::new_leak_vec_ptr( + ::new_with_null_ptr(), + len, + ), + len, + }; + flutter_rust_bridge::for_generated::new_leak_box_ptr(wrap) + } + + #[no_mangle] + pub extern "C" fn frbgen_mimir_cst_new_list_synonyms(len: i32) -> *mut wire_cst_list_synonyms { + let wrap = wire_cst_list_synonyms { + ptr: flutter_rust_bridge::for_generated::new_leak_vec_ptr( + ::new_with_null_ptr(), + len, + ), + len, + }; + flutter_rust_bridge::for_generated::new_leak_box_ptr(wrap) + } + + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_filter { + tag: i32, + kind: FilterKind, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub union FilterKind { + Or: wire_cst_Filter_Or, + And: wire_cst_Filter_And, + Not: wire_cst_Filter_Not, + Exists: wire_cst_Filter_Exists, + InValues: wire_cst_Filter_InValues, + GreaterThan: wire_cst_Filter_GreaterThan, + GreaterThanOrEqual: wire_cst_Filter_GreaterThanOrEqual, + Equal: wire_cst_Filter_Equal, + NotEqual: wire_cst_Filter_NotEqual, + LessThan: wire_cst_Filter_LessThan, + LessThanOrEqual: wire_cst_Filter_LessThanOrEqual, + Between: wire_cst_Filter_Between, + IsNull: wire_cst_Filter_IsNull, + IsEmpty: wire_cst_Filter_IsEmpty, + nil__: (), + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_Or { + field0: *mut wire_cst_list_filter, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_And { + field0: *mut wire_cst_list_filter, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_Not { + field0: *mut wire_cst_filter, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_Exists { + field: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_InValues { + field: *mut wire_cst_list_prim_u_8_strict, + values: *mut wire_cst_list_String, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_GreaterThan { + field: *mut wire_cst_list_prim_u_8_strict, + value: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_GreaterThanOrEqual { + field: *mut wire_cst_list_prim_u_8_strict, + value: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_Equal { + field: *mut wire_cst_list_prim_u_8_strict, + value: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_NotEqual { + field: *mut wire_cst_list_prim_u_8_strict, + value: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_LessThan { + field: *mut wire_cst_list_prim_u_8_strict, + value: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_LessThanOrEqual { + field: *mut wire_cst_list_prim_u_8_strict, + value: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_Between { + field: *mut wire_cst_list_prim_u_8_strict, + from: *mut wire_cst_list_prim_u_8_strict, + to: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_IsNull { + field: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_Filter_IsEmpty { + field: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_list_String { + ptr: *mut *mut wire_cst_list_prim_u_8_strict, + len: i32, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_list_filter { + ptr: *mut wire_cst_filter, + len: i32, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_list_prim_u_8_strict { + ptr: *mut u8, + len: i32, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_list_sort_by { + ptr: *mut wire_cst_sort_by, + len: i32, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_list_synonyms { + ptr: *mut wire_cst_synonyms, + len: i32, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_mimir_index_settings { + primary_key: *mut wire_cst_list_prim_u_8_strict, + searchable_fields: *mut wire_cst_list_String, + filterable_fields: *mut wire_cst_list_String, + sortable_fields: *mut wire_cst_list_String, + ranking_rules: *mut wire_cst_list_String, + stop_words: *mut wire_cst_list_String, + synonyms: *mut wire_cst_list_synonyms, + typos_enabled: bool, + min_word_size_for_one_typo: u8, + min_word_size_for_two_typos: u8, + disallow_typos_on_words: *mut wire_cst_list_String, + disallow_typos_on_fields: *mut wire_cst_list_String, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_sort_by { + tag: i32, + kind: SortByKind, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub union SortByKind { + Asc: wire_cst_SortBy_Asc, + Desc: wire_cst_SortBy_Desc, + nil__: (), + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_SortBy_Asc { + field0: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_SortBy_Desc { + field0: *mut wire_cst_list_prim_u_8_strict, + } + #[repr(C)] + #[derive(Clone, Copy)] + pub struct wire_cst_synonyms { + word: *mut wire_cst_list_prim_u_8_strict, + synonyms: *mut wire_cst_list_String, + } +} +#[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.1.0. + + // Section: imports + + use super::*; + 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!(); + + // Section: dart2rust + + impl CstDecode for String { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> flutter_rust_bridge::for_generated::anyhow::Error { + unimplemented!() + } + } + impl CstDecode for String { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> String { + self + } + } + impl CstDecode for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::Filter { + let self_ = self.unchecked_into::(); + match self_.get(0).unchecked_into_f64() as _ { + 0 => crate::api::Filter::Or(self_.get(1).cst_decode()), + 1 => crate::api::Filter::And(self_.get(1).cst_decode()), + 2 => crate::api::Filter::Not(self_.get(1).cst_decode()), + 3 => crate::api::Filter::Exists { + field: self_.get(1).cst_decode(), + }, + 4 => crate::api::Filter::InValues { + field: self_.get(1).cst_decode(), + values: self_.get(2).cst_decode(), + }, + 5 => crate::api::Filter::GreaterThan { + field: self_.get(1).cst_decode(), + value: self_.get(2).cst_decode(), + }, + 6 => crate::api::Filter::GreaterThanOrEqual { + field: self_.get(1).cst_decode(), + value: self_.get(2).cst_decode(), + }, + 7 => crate::api::Filter::Equal { + field: self_.get(1).cst_decode(), + value: self_.get(2).cst_decode(), + }, + 8 => crate::api::Filter::NotEqual { + field: self_.get(1).cst_decode(), + value: self_.get(2).cst_decode(), + }, + 9 => crate::api::Filter::LessThan { + field: self_.get(1).cst_decode(), + value: self_.get(2).cst_decode(), + }, + 10 => crate::api::Filter::LessThanOrEqual { + field: self_.get(1).cst_decode(), + value: self_.get(2).cst_decode(), + }, + 11 => crate::api::Filter::Between { + field: self_.get(1).cst_decode(), + from: self_.get(2).cst_decode(), + to: self_.get(3).cst_decode(), + }, + 12 => crate::api::Filter::IsNull { + field: self_.get(1).cst_decode(), + }, + 13 => crate::api::Filter::IsEmpty { + field: self_.get(1).cst_decode(), + }, + _ => unreachable!(), + } + } + } + impl CstDecode> for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Vec { + self.dyn_into::() + .unwrap() + .iter() + .map(CstDecode::cst_decode) + .collect() + } + } + impl CstDecode> + for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue + { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Vec { + self.dyn_into::() + .unwrap() + .iter() + .map(CstDecode::cst_decode) + .collect() + } + } + impl CstDecode> for Box<[u8]> { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Vec { + self.into_vec() + } + } + impl CstDecode> + for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue + { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Vec { + self.dyn_into::() + .unwrap() + .iter() + .map(CstDecode::cst_decode) + .collect() + } + } + impl CstDecode> + for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue + { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Vec { + self.dyn_into::() + .unwrap() + .iter() + .map(CstDecode::cst_decode) + .collect() + } + } + impl CstDecode + for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue + { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::MimirIndexSettings { + let self_ = self + .dyn_into::() + .unwrap(); + assert_eq!( + self_.length(), + 12, + "Expected 12 elements, got {}", + self_.length() + ); + crate::api::MimirIndexSettings { + primary_key: self_.get(0).cst_decode(), + searchable_fields: self_.get(1).cst_decode(), + filterable_fields: self_.get(2).cst_decode(), + sortable_fields: self_.get(3).cst_decode(), + ranking_rules: self_.get(4).cst_decode(), + stop_words: self_.get(5).cst_decode(), + synonyms: self_.get(6).cst_decode(), + typos_enabled: self_.get(7).cst_decode(), + min_word_size_for_one_typo: self_.get(8).cst_decode(), + min_word_size_for_two_typos: self_.get(9).cst_decode(), + disallow_typos_on_words: self_.get(10).cst_decode(), + disallow_typos_on_fields: self_.get(11).cst_decode(), + } + } + } + impl CstDecode> for Option { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Option { + self.map(CstDecode::cst_decode) + } + } + impl CstDecode for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::SortBy { + let self_ = self.unchecked_into::(); + match self_.get(0).unchecked_into_f64() as _ { + 0 => crate::api::SortBy::Asc(self_.get(1).cst_decode()), + 1 => crate::api::SortBy::Desc(self_.get(1).cst_decode()), + _ => unreachable!(), + } + } + } + impl CstDecode for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::Synonyms { + let self_ = self + .dyn_into::() + .unwrap(); + assert_eq!( + self_.length(), + 2, + "Expected 2 elements, got {}", + self_.length() + ); + crate::api::Synonyms { + word: self_.get(0).cst_decode(), + synonyms: self_.get(1).cst_decode(), + } + } + } + impl CstDecode + for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue + { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> flutter_rust_bridge::for_generated::anyhow::Error { + unimplemented!() + } + } + impl CstDecode for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> String { + self.as_string().expect("non-UTF-8 string, or not a string") + } + } + impl CstDecode for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> bool { + self.is_truthy() + } + } + impl CstDecode> + for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue + { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Box { + Box::new(self.cst_decode()) + } + } + impl CstDecode for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> i32 { + self.unchecked_into_f64() as _ + } + } + impl CstDecode> for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> Vec { + self.unchecked_into::() + .to_vec() + .into() + } + } + impl CstDecode + for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue + { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> crate::api::TermsMatchingStrategy { + (self.unchecked_into_f64() as i32).cst_decode() + } + } + impl CstDecode for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> u32 { + self.unchecked_into_f64() as _ + } + } + impl CstDecode for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> u64 { + ::std::convert::TryInto::::try_into(self).unwrap() as _ + } + } + impl CstDecode for flutter_rust_bridge::for_generated::wasm_bindgen::JsValue { + // Codec=Cst (C-struct based), see doc to use other codecs + fn cst_decode(self) -> u8 { + self.unchecked_into_f64() as _ + } + } + + #[wasm_bindgen] + pub fn wire__crate__api__add_documents( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + index_name: String, + documents: flutter_rust_bridge::for_generated::wasm_bindgen::JsValue, + ) { + wire__crate__api__add_documents_impl(port_, instance_dir, index_name, documents) + } + + #[wasm_bindgen] + pub fn wire__crate__api__delete_all_documents( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + index_name: String, + ) { + wire__crate__api__delete_all_documents_impl(port_, instance_dir, index_name) + } + + #[wasm_bindgen] + pub fn wire__crate__api__delete_documents( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + index_name: String, + document_ids: flutter_rust_bridge::for_generated::wasm_bindgen::JsValue, + ) { + wire__crate__api__delete_documents_impl(port_, instance_dir, index_name, document_ids) + } + + #[wasm_bindgen] + pub fn wire__crate__api__ensure_index_initialized( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + index_name: String, + ) { + wire__crate__api__ensure_index_initialized_impl(port_, instance_dir, index_name) + } + + #[wasm_bindgen] + pub fn wire__crate__api__ensure_instance_initialized( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + tmp_dir: Option, + ) { + wire__crate__api__ensure_instance_initialized_impl(port_, instance_dir, tmp_dir) + } + + #[wasm_bindgen] + pub fn wire__crate__api__get_all_documents( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + index_name: String, + ) { + wire__crate__api__get_all_documents_impl(port_, instance_dir, index_name) + } + + #[wasm_bindgen] + pub fn wire__crate__api__get_document( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + index_name: String, + document_id: String, + ) { + wire__crate__api__get_document_impl(port_, instance_dir, index_name, document_id) + } + + #[wasm_bindgen] + pub fn wire__crate__api__get_settings( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + index_name: String, + ) { + wire__crate__api__get_settings_impl(port_, instance_dir, index_name) + } + + #[wasm_bindgen] + pub fn wire__crate__api__number_of_documents( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + index_name: String, + ) { + wire__crate__api__number_of_documents_impl(port_, instance_dir, index_name) + } + + #[wasm_bindgen] + pub fn wire__crate__api__search_documents( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + index_name: String, + query: Option, + limit: flutter_rust_bridge::for_generated::wasm_bindgen::JsValue, + offset: flutter_rust_bridge::for_generated::wasm_bindgen::JsValue, + sort_criteria: flutter_rust_bridge::for_generated::wasm_bindgen::JsValue, + filter: flutter_rust_bridge::for_generated::wasm_bindgen::JsValue, + matching_strategy: flutter_rust_bridge::for_generated::wasm_bindgen::JsValue, + ) { + wire__crate__api__search_documents_impl( + port_, + instance_dir, + index_name, + query, + limit, + offset, + sort_criteria, + filter, + matching_strategy, + ) + } + + #[wasm_bindgen] + pub fn wire__crate__api__set_documents( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + index_name: String, + documents: flutter_rust_bridge::for_generated::wasm_bindgen::JsValue, + ) { + wire__crate__api__set_documents_impl(port_, instance_dir, index_name, documents) + } + + #[wasm_bindgen] + pub fn wire__crate__api__set_settings( + port_: flutter_rust_bridge::for_generated::MessagePort, + instance_dir: String, + index_name: String, + settings: flutter_rust_bridge::for_generated::wasm_bindgen::JsValue, + ) { + wire__crate__api__set_settings_impl(port_, instance_dir, index_name, settings) + } +} +#[cfg(target_family = "wasm")] +pub use web::*; diff --git a/packages/mimir/native/src/lib.rs b/packages/mimir/native/src/lib.rs index 1f08f398..15391cdc 100644 --- a/packages/mimir/native/src/lib.rs +++ b/packages/mimir/native/src/lib.rs @@ -1,3 +1,4 @@ +mod frb_generated; /* AUTO INJECTED BY flutter_rust_bridge. This line may not be accurate, and you can change it according to your needs. */ + mod api; -mod bridge_generated; /* AUTO INJECTED BY flutter_rust_bridge. This line may not be accurate, and you can change it according to your needs. */ mod embedded_milli; diff --git a/packages/mimir/pubspec.yaml b/packages/mimir/pubspec.yaml index abe43dde..476721aa 100644 --- a/packages/mimir/pubspec.yaml +++ b/packages/mimir/pubspec.yaml @@ -8,19 +8,16 @@ repository: https://github.com/GregoryConrad/mimir issue_tracker: https://github.com/GregoryConrad/mimir/issues environment: - sdk: '>=3.0.0 <4.0.0' + sdk: '>=3.4.0 <4.0.0' dependencies: - ffi: ^2.0.1 - flutter_rust_bridge: 1.82.6 + ffi: ^2.1.0 + flutter_rust_bridge: 2.1.0 freezed_annotation: ^2.2.0 meta: ^1.8.0 - # TODO https://github.com/fzyzcjy/flutter_rust_bridge/issues/1147 - uuid: any - dev_dependencies: build_runner: ^2.3.2 - ffigen: ^8.0.2 + ffigen: ^11.0.0 freezed: ^2.2.1 test: ^1.22.0 diff --git a/packages/mimir/test/basic_test.dart b/packages/mimir/test/basic_test.dart index 0e8b5ae8..5cfa186b 100644 --- a/packages/mimir/test/basic_test.dart +++ b/packages/mimir/test/basic_test.dart @@ -216,11 +216,11 @@ void main() { const invalidIdDoc = {'id': 'abc123='}; expect( () => index.addDocument(missingIdDoc), - throwsA(const TypeMatcher()), + throwsA(const TypeMatcher()), ); expect( () => index.addDocument(invalidIdDoc), - throwsA(const TypeMatcher()), + throwsA(const TypeMatcher()), ); }); @@ -230,11 +230,11 @@ void main() { const invalidIdDoc = {'id': 'abc123='}; expect( () => index.setDocuments([missingIdDoc]), - throwsA(const TypeMatcher()), + throwsA(const TypeMatcher()), ); expect( () => index.setDocuments([invalidIdDoc]), - throwsA(const TypeMatcher()), + throwsA(const TypeMatcher()), ); }); @@ -274,7 +274,7 @@ void main() { 'id': 1234, 'anotherId': 4321, }; - expect(index.addDocument(doc), throwsA(isA())); + expect(index.addDocument(doc), throwsA(isA())); }); test('openIndex should use the supplied PK', () async { @@ -312,7 +312,7 @@ void main() { await index.updateSettings(primaryKey: 'id'); // should be a no-op expect( index.updateSettings(primaryKey: 'anotherId'), - throwsA(isA()), + throwsA(isA()), ); }); @@ -325,7 +325,7 @@ void main() { expect( index.addDocument(doc), - throwsA(isA()), + throwsA(isA()), ); }); @@ -380,13 +380,13 @@ void main() { test('numberOfDocuments returns the correct number of documents', () async { final index = await useTestIndex(); - expect(await index.numberOfDocuments, 0); + expect(await index.numberOfDocuments, BigInt.from(0)); await index.addDocument({'id': 0}); - expect(await index.numberOfDocuments, 1); + expect(await index.numberOfDocuments, BigInt.from(1)); await index.addDocument({'id': 1}); - expect(await index.numberOfDocuments, 2); + expect(await index.numberOfDocuments, BigInt.from(2)); await index.deleteAllDocuments(); - expect(await index.numberOfDocuments, 0); + expect(await index.numberOfDocuments, BigInt.from(0)); }); test('isNull filter returns only documents where field is null', () async { diff --git a/packages/mimir/test/utils.dart b/packages/mimir/test/utils.dart index 585e1911..b6a06c9f 100644 --- a/packages/mimir/test/utils.dart +++ b/packages/mimir/test/utils.dart @@ -1,5 +1,4 @@ import 'dart:convert'; -import 'dart:ffi'; import 'dart:io'; import 'package:freezed_annotation/freezed_annotation.dart'; @@ -8,22 +7,6 @@ import 'package:test/test.dart'; part 'utils.freezed.dart'; -DynamicLibrary useLibrary() { - const libName = 'embedded_milli'; - final libPrefix = { - Platform.isWindows: '', - Platform.isMacOS: 'lib', - Platform.isLinux: 'lib', - }[true]!; - final libSuffix = { - Platform.isWindows: 'dll', - Platform.isMacOS: 'dylib', - Platform.isLinux: 'so', - }[true]!; - final dylibPath = '../../target/release/$libPrefix$libName.$libSuffix'; - return DynamicLibrary.open(dylibPath); -} - Directory useTmpDir() { final dir = Directory.systemTemp.createTempSync(); addTearDown(() => dir.deleteSync(recursive: true)); @@ -32,8 +15,8 @@ Directory useTmpDir() { Future useInstance() { final dir = useTmpDir(); - final lib = useLibrary(); - return Mimir.getInstance(path: dir.path, library: lib); + const ioDirectory = '../../target/release/'; + return Mimir.getInstance(path: dir.path, ioDirectory: ioDirectory); } Future useTestIndex() async => diff --git a/packages/mimir/test/utils.freezed.dart b/packages/mimir/test/utils.freezed.dart index 41226585..bc07e59a 100644 --- a/packages/mimir/test/utils.freezed.dart +++ b/packages/mimir/test/utils.freezed.dart @@ -12,7 +12,7 @@ part of 'utils.dart'; T _$identity(T value) => value; final _privateConstructorUsedError = UnsupportedError( - 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); /// @nodoc mixin _$ComparableMimirIndexSettings { @@ -28,7 +28,9 @@ mixin _$ComparableMimirIndexSettings { Set get disallowTyposOnWords => throw _privateConstructorUsedError; Set get disallowTyposOnFields => throw _privateConstructorUsedError; - @JsonKey(ignore: true) + /// Create a copy of ComparableMimirIndexSettings + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) $ComparableMimirIndexSettingsCopyWith get copyWith => throw _privateConstructorUsedError; } @@ -66,6 +68,8 @@ class _$ComparableMimirIndexSettingsCopyWithImpl<$Res, // ignore: unused_field final $Res Function($Val) _then; + /// Create a copy of ComparableMimirIndexSettings + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -163,6 +167,8 @@ class __$$ComparableMimirIndexSettingsImplCopyWithImpl<$Res> $Res Function(_$ComparableMimirIndexSettingsImpl) _then) : super(_value, _then); + /// Create a copy of ComparableMimirIndexSettings + /// with the given fields replaced by the non-null parameter values. @pragma('vm:prefer-inline') @override $Res call({ @@ -374,7 +380,9 @@ class _$ComparableMimirIndexSettingsImpl const DeepCollectionEquality().hash(_disallowTyposOnWords), const DeepCollectionEquality().hash(_disallowTyposOnFields)); - @JsonKey(ignore: true) + /// Create a copy of ComparableMimirIndexSettings + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) @override @pragma('vm:prefer-inline') _$$ComparableMimirIndexSettingsImplCopyWith< @@ -421,8 +429,11 @@ abstract class _ComparableMimirIndexSettings Set get disallowTyposOnWords; @override Set get disallowTyposOnFields; + + /// Create a copy of ComparableMimirIndexSettings + /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(ignore: true) + @JsonKey(includeFromJson: false, includeToJson: false) _$$ComparableMimirIndexSettingsImplCopyWith< _$ComparableMimirIndexSettingsImpl> get copyWith => throw _privateConstructorUsedError; diff --git a/pubspec.lock b/pubspec.lock index 3726cc5e..8a78e783 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -370,4 +370,4 @@ packages: source: hosted version: "2.1.1" sdks: - dart: ">=3.0.0 <4.0.0" + dart: ">=3.2.0 <4.0.0"