gitextract_qi8hzr2l/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── documentation-issue.md │ │ └── feature_request.md │ ├── stale.yml │ └── workflows/ │ └── vania-dart.yml ├── .gitignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── README.tr.md ├── analysis_options.yaml ├── example/ │ ├── app_exception_handler.dart │ └── main.dart ├── lib/ │ ├── application.dart │ ├── authentication.dart │ ├── database.dart │ ├── http/ │ │ ├── controller.dart │ │ ├── form_validation.dart │ │ ├── middleware.dart │ │ ├── request.dart │ │ └── response.dart │ ├── mail.dart │ ├── migration.dart │ ├── orm/ │ │ └── model.dart │ ├── query_builder.dart │ ├── route.dart │ ├── service_provider.dart │ ├── src/ │ │ ├── authentication/ │ │ │ ├── authenticate.dart │ │ │ ├── authentication.dart │ │ │ ├── gate/ │ │ │ │ └── gate.dart │ │ │ ├── has_api_tokens.dart │ │ │ ├── model/ │ │ │ │ └── personal_access_token.dart │ │ │ └── redirect_if_authenticated.dart │ │ ├── aws/ │ │ │ └── s3_client.dart │ │ ├── cache/ │ │ │ ├── cache.dart │ │ │ ├── cache_driver.dart │ │ │ ├── file_cache_driver.dart │ │ │ └── redis_cache_driver.dart │ │ ├── config/ │ │ │ ├── config.dart │ │ │ ├── defined_regexp.dart │ │ │ └── http_cors.dart │ │ ├── container.dart │ │ ├── contract/ │ │ │ ├── database/ │ │ │ │ ├── _connectors/ │ │ │ │ │ └── _database_connection.dart │ │ │ │ └── query_builder/ │ │ │ │ ├── _bulk_operations_builder.dart │ │ │ │ ├── _cte_builder.dart │ │ │ │ ├── _delete_query_builder.dart │ │ │ │ ├── _insert_query_builder.dart │ │ │ │ ├── _join_clause_builder.dart │ │ │ │ ├── _query_executor_builder.dart │ │ │ │ ├── _select_query_builder.dart │ │ │ │ ├── _union_clause_builder.dart │ │ │ │ ├── _update_query_builder.dart │ │ │ │ ├── _where_clauses_builder.dart │ │ │ │ ├── _window_functions_builder.dart │ │ │ │ └── query_builder.dart │ │ │ ├── http/ │ │ │ │ └── request/ │ │ │ │ └── form_validation.dart │ │ │ └── orm/ │ │ │ ├── morph_relation.dart │ │ │ └── relation.dart │ │ ├── cryptographic/ │ │ │ ├── hash.dart │ │ │ └── vania_encryption.dart │ │ ├── database/ │ │ │ ├── _connection_manager.dart │ │ │ ├── _connectors/ │ │ │ │ ├── _database_connection_factory.dart │ │ │ │ └── _database_connection_proxy.dart │ │ │ ├── _database_utils/ │ │ │ │ ├── _db_config.dart │ │ │ │ ├── _paginated_result.dart │ │ │ │ ├── _raw_expression.dart │ │ │ │ └── _singularize.dart │ │ │ ├── adapters/ │ │ │ │ ├── _mysql_connector.dart │ │ │ │ ├── _postgres_connector.dart │ │ │ │ └── _sqlite_connector.dart │ │ │ ├── db.dart │ │ │ ├── isolate_db.dart │ │ │ ├── migration/ │ │ │ │ ├── adapters/ │ │ │ │ │ ├── grammar/ │ │ │ │ │ │ ├── mysql_grammar.dart │ │ │ │ │ │ ├── postgresql_grammar.dart │ │ │ │ │ │ ├── sql_grammar.dart │ │ │ │ │ │ └── sqlite_grammar.dart │ │ │ │ │ ├── mysql_adapter.dart │ │ │ │ │ ├── postgresql_adapter.dart │ │ │ │ │ └── sqlite_adapter.dart │ │ │ │ ├── builders/ │ │ │ │ │ ├── column_definition.dart │ │ │ │ │ ├── column_types.dart │ │ │ │ │ ├── schema.dart │ │ │ │ │ └── table_definition.dart │ │ │ │ ├── contracts/ │ │ │ │ │ ├── database_adapter_interface.dart │ │ │ │ │ ├── migration_connection_interface.dart │ │ │ │ │ └── schema_interface.dart │ │ │ │ ├── migration.dart │ │ │ │ ├── migration_connection.dart │ │ │ │ └── runners/ │ │ │ │ └── migration_runner.dart │ │ │ ├── monitoring/ │ │ │ │ └── database_monitor.dart │ │ │ ├── orm/ │ │ │ │ ├── belongs_to.dart │ │ │ │ ├── belongs_to_many.dart │ │ │ │ ├── has_many.dart │ │ │ │ ├── has_one.dart │ │ │ │ ├── model.dart │ │ │ │ └── polymorphic/ │ │ │ │ ├── morph_many.dart │ │ │ │ ├── morph_one.dart │ │ │ │ ├── morph_to.dart │ │ │ │ ├── morph_to_many.dart │ │ │ │ └── morphed_by_many.dart │ │ │ ├── query_builder/ │ │ │ │ ├── _bulk_operations_builder_impl.dart │ │ │ │ ├── _cte/ │ │ │ │ │ ├── _cte_cache.dart │ │ │ │ │ ├── _cte_configuration.dart │ │ │ │ │ ├── _cte_definition.dart │ │ │ │ │ ├── _cte_exception.dart │ │ │ │ │ ├── _cte_feature.dart │ │ │ │ │ ├── _database_type.dart │ │ │ │ │ ├── _duplicate_cte_name_exception.dart │ │ │ │ │ ├── _invalid_cte_configuration_exception.dart │ │ │ │ │ ├── _sql_identifier_escaper.dart │ │ │ │ │ ├── _standard_escaping_strategy.dart │ │ │ │ │ └── _unsupported_cte_feature_exception.dart │ │ │ │ ├── _cte_builder_impl.dart │ │ │ │ ├── _delete_query_builder_impl.dart │ │ │ │ ├── _insert_query_builder_impl.dart │ │ │ │ ├── _join_clause_builder_impl.dart │ │ │ │ ├── _query_builder_impl.dart │ │ │ │ ├── _query_executor_builder_impl.dart │ │ │ │ ├── _select_query_builder_impl.dart │ │ │ │ ├── _union_clause_builder_impl.dart │ │ │ │ ├── _update_query_builder_impl.dart │ │ │ │ ├── _where_clauses_builder_impl.dart │ │ │ │ └── _window_functions_builder_impl.dart │ │ │ └── seeder/ │ │ │ ├── seeder.dart │ │ │ ├── seeder_factory.dart │ │ │ └── seeder_runner.dart │ │ ├── enum/ │ │ │ ├── column_index.dart │ │ │ └── http_request_method.dart │ │ ├── env_handler/ │ │ │ └── env.dart │ │ ├── exception/ │ │ │ ├── base_http_exception.dart │ │ │ ├── database_exception.dart │ │ │ ├── exception_handler.dart │ │ │ ├── forbidden_exception.dart │ │ │ ├── http_exception.dart │ │ │ ├── internal_server_error.dart │ │ │ ├── invalid_argument_exception.dart │ │ │ ├── not_found_exception.dart │ │ │ ├── page_expired_exception.dart │ │ │ ├── query_exception.dart │ │ │ ├── redirect_exception.dart │ │ │ ├── throttle_exception.dart │ │ │ ├── unauthenticated.dart │ │ │ ├── unauthorized_exception.dart │ │ │ └── validation_exception.dart │ │ ├── extensions/ │ │ │ ├── date_time_extension.dart │ │ │ ├── extensions.dart │ │ │ ├── localization_extension.dart │ │ │ ├── map_extension.dart │ │ │ ├── number_extension.dart │ │ │ ├── string_extension.dart │ │ │ └── string_list_extension.dart │ │ ├── http/ │ │ │ ├── controller/ │ │ │ │ ├── controller.dart │ │ │ │ └── controller_handler.dart │ │ │ ├── middleware/ │ │ │ │ ├── middleware.dart │ │ │ │ ├── middleware_handler.dart │ │ │ │ └── web_socket_middleware_handler.dart │ │ │ ├── request/ │ │ │ │ ├── request.dart │ │ │ │ ├── request_body.dart │ │ │ │ ├── request_file.dart │ │ │ │ ├── request_form_data.dart │ │ │ │ └── request_handler.dart │ │ │ ├── response/ │ │ │ │ ├── response.dart │ │ │ │ └── stream_file.dart │ │ │ ├── session/ │ │ │ │ ├── session_file_store.dart │ │ │ │ └── session_manager.dart │ │ │ └── validation/ │ │ │ ├── custom_validation_rule.dart │ │ │ ├── field_validation.dart │ │ │ ├── nested_validation.dart │ │ │ ├── rules.dart │ │ │ ├── validation_chain/ │ │ │ │ ├── export_chain_validation.dart │ │ │ │ ├── rules/ │ │ │ │ │ ├── between.dart │ │ │ │ │ ├── confirmed.dart │ │ │ │ │ ├── end_width.dart │ │ │ │ │ ├── greater_than.dart │ │ │ │ │ ├── in_array.dart │ │ │ │ │ ├── is_alpha.dart │ │ │ │ │ ├── is_alpha_dash.dart │ │ │ │ │ ├── is_alpha_numeric.dart │ │ │ │ │ ├── is_array.dart │ │ │ │ │ ├── is_boolean.dart │ │ │ │ │ ├── is_date.dart │ │ │ │ │ ├── is_double.dart │ │ │ │ │ ├── is_email.dart │ │ │ │ │ ├── is_file.dart │ │ │ │ │ ├── is_image.dart │ │ │ │ │ ├── is_integer.dart │ │ │ │ │ ├── is_ip.dart │ │ │ │ │ ├── is_json.dart │ │ │ │ │ ├── is_numeric.dart │ │ │ │ │ ├── is_required.dart │ │ │ │ │ ├── is_string.dart │ │ │ │ │ ├── is_url.dart │ │ │ │ │ ├── is_uuid.dart │ │ │ │ │ ├── lenght_between.dart │ │ │ │ │ ├── less_than.dart │ │ │ │ │ ├── max.dart │ │ │ │ │ ├── max_lenght.dart │ │ │ │ │ ├── min.dart │ │ │ │ │ ├── min_lenght.dart │ │ │ │ │ ├── not_in_array.dart │ │ │ │ │ ├── required_if.dart │ │ │ │ │ ├── required_if_not.dart │ │ │ │ │ └── start_with.dart │ │ │ │ ├── validation.dart │ │ │ │ └── validation_rule.dart │ │ │ ├── validation_item.dart │ │ │ └── validator.dart │ │ ├── ioc_container.dart │ │ ├── localization_handler/ │ │ │ └── localization.dart │ │ ├── logger/ │ │ │ └── logger.dart │ │ ├── mail/ │ │ │ ├── content.dart │ │ │ ├── envelope.dart │ │ │ ├── mail.dart │ │ │ ├── mail_view.dart │ │ │ └── mailable.dart │ │ ├── redis/ │ │ │ ├── command/ │ │ │ │ ├── client.dart │ │ │ │ ├── codec.dart │ │ │ │ └── commands.dart │ │ │ ├── exception.dart │ │ │ ├── lowlevel/ │ │ │ │ ├── protocol_client.dart │ │ │ │ └── resp.dart │ │ │ ├── redis.dart │ │ │ └── vania_redis.dart │ │ ├── route/ │ │ │ ├── middleware/ │ │ │ │ ├── csrf_middleware.dart │ │ │ │ └── throttle.dart │ │ │ ├── route.dart │ │ │ ├── route_data.dart │ │ │ ├── route_handler.dart │ │ │ ├── route_history.dart │ │ │ ├── router.dart │ │ │ ├── set_static_path.dart │ │ │ └── throttle_requests.dart │ │ ├── server/ │ │ │ ├── base_http_server.dart │ │ │ └── initialize_config.dart │ │ ├── service/ │ │ │ └── service_provider.dart │ │ ├── storage/ │ │ │ ├── local_storage.dart │ │ │ ├── s3_storage.dart │ │ │ ├── storage.dart │ │ │ └── storage_driver.dart │ │ ├── utils/ │ │ │ ├── _pluralize.dart │ │ │ ├── functions.dart │ │ │ ├── helper.dart │ │ │ └── request_helper.dart │ │ ├── view_engine/ │ │ │ ├── helper.dart │ │ │ ├── processor_engine/ │ │ │ │ ├── abs_processor.dart │ │ │ │ ├── assets_processor.dart │ │ │ │ ├── comment_processor.dart │ │ │ │ ├── csrf_processor.dart │ │ │ │ ├── csrf_token_processor.dart │ │ │ │ ├── error_processor.dart │ │ │ │ ├── evaluate_expression.dart │ │ │ │ ├── extends_processor.dart │ │ │ │ ├── for_loop_processor.dart │ │ │ │ ├── if_statement_processor.dart │ │ │ │ ├── include_processor.dart │ │ │ │ ├── old_processor.dart │ │ │ │ ├── route_processor.dart │ │ │ │ ├── section_processor.dart │ │ │ │ ├── session_processor.dart │ │ │ │ ├── switch_cases_processor.dart │ │ │ │ ├── translate_processor.dart │ │ │ │ └── variables_processor.dart │ │ │ ├── template_engine.dart │ │ │ └── template_reader.dart │ │ └── websocket/ │ │ ├── web_socket_handler.dart │ │ ├── websocket_client.dart │ │ ├── websocket_constants.dart │ │ ├── websocket_event.dart │ │ └── websocket_session.dart │ ├── vania.dart │ └── websocket.dart ├── pubspec.yaml └── test/ ├── src/ │ └── extensions/ │ ├── date_time_extension_test.dart │ ├── number_extension_test.dart │ ├── string_extension_test.dart │ └── string_list_extension_test.dart └── unit/ ├── hash_test.dart ├── route_test.dart └── validation_test.dart