From 17cb4b53f07ad1f776ab148ea8f999a90c48c015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Tue, 9 Dec 2025 15:37:15 +0100 Subject: [PATCH 01/14] build: Convert to workspace monorepo - Create packages/relic/ directory structure - Move lib/, test/, example/, benchmark/ to packages/relic/ - Add resolution: workspace to package pubspec.yaml - Create root workspace pubspec.yaml - All tests pass --- .../relic/analysis_options.yaml | 0 .../relic/benchmark}/benchmark.dart | 0 .../completion_script_carapace.dart | 0 .../relic/dart_test.yaml | 0 .../relic/example}/_static_files/hello.txt | 0 .../relic/example}/_static_files/logo.svg | 0 .../example}/advanced/multi_isolate.dart | 0 .../relic/example}/basic/as_handle.dart | 0 .../relic/example}/basic/body.dart | 0 .../relic/example}/basic/handler.dart | 0 .../relic/example}/basic/relic_shelf.dart | 0 .../relic/example}/basic/static_files.dart | 0 .../relic/example}/context/context.dart | 0 .../example}/context/context_property.dart | 0 .../relic/example}/example.dart | 0 .../relic/example}/middleware/auth.dart | 0 .../relic/example}/middleware/cors.dart | 0 .../relic/example}/middleware/example.dart | 0 .../relic/example}/middleware/middleware.dart | 0 .../relic/example}/middleware/pipeline.dart | 0 .../relic/example}/routing/basic_routing.dart | 0 .../example}/routing/dynamic_segments.dart | 0 .../relic/example}/routing/pipeline.dart | 0 .../relic/example}/routing/request.dart | 0 .../example}/routing/request_response.dart | 0 .../relic/example}/routing/response.dart | 0 {lib => packages/relic/lib}/io_adapter.dart | 0 {lib => packages/relic/lib}/relic.dart | 0 .../relic/lib}/src/accessor/accessor.dart | 0 .../relic/lib}/src/adapter/adapter.dart | 0 .../lib}/src/adapter/connection_info.dart | 0 .../lib}/src/adapter/io/bind_http_server.dart | 0 .../adapter/io/http_response_extension.dart | 0 .../relic/lib}/src/adapter/io/io_adapter.dart | 0 .../src/adapter/io/io_relic_web_socket.dart | 0 .../relic/lib}/src/adapter/io/io_serve.dart | 0 .../relic/lib}/src/adapter/io/request.dart | 0 .../relic/lib}/src/adapter/io/response.dart | 0 .../lib}/src/adapter/relic_web_socket.dart | 0 .../relic/lib}/src/body/body.dart | 0 .../relic/lib}/src/body/types/body_type.dart | 0 .../relic/lib}/src/body/types/mime_type.dart | 0 .../relic/lib}/src/context/message.dart | 0 .../relic/lib}/src/context/request.dart | 0 .../relic/lib}/src/context/response.dart | 0 .../relic/lib}/src/context/result.dart | 0 .../relic/lib}/src/handler/cascade.dart | 0 .../relic/lib}/src/handler/handler.dart | 0 .../relic/lib}/src/handler/pipeline.dart | 0 .../relic/lib}/src/headers/codec.dart | 0 .../headers/codecs/common_types_codecs.dart | 0 .../headers/exception/header_exception.dart | 0 .../extension/string_list_extensions.dart | 0 .../lib}/src/headers/header_accessor.dart | 0 .../relic/lib}/src/headers/headers.dart | 0 .../lib}/src/headers/mutable_headers.dart | 0 .../headers/standard_headers_extensions.dart | 0 .../typed/headers/accept_encoding_header.dart | 0 .../headers/typed/headers/accept_header.dart | 0 .../typed/headers/accept_language_header.dart | 0 .../typed/headers/accept_ranges_header.dart | 0 .../access_control_allow_headers_header.dart | 0 .../access_control_allow_methods_header.dart | 0 .../access_control_allow_origin_header.dart | 0 .../access_control_expose_headers_header.dart | 0 .../typed/headers/authentication_header.dart | 0 .../typed/headers/authorization_header.dart | 0 .../typed/headers/cache_control_header.dart | 0 .../typed/headers/clear_site_data_header.dart | 0 .../typed/headers/connection_header.dart | 0 .../headers/content_disposition_header.dart | 0 .../headers/content_encoding_header.dart | 0 .../headers/content_language_header.dart | 0 .../typed/headers/content_range_header.dart | 0 .../content_security_policy_header.dart | 0 .../headers/typed/headers/cookie_header.dart | 0 .../cross_origin_embedder_policy_header.dart | 0 .../cross_origin_opener_policy_header.dart | 0 .../cross_origin_resource_policy_header.dart | 0 .../typed/headers/etag_condition_header.dart | 0 .../headers/typed/headers/etag_header.dart | 0 .../headers/typed/headers/expect_header.dart | 0 .../typed/headers/forwarded_header.dart | 0 .../headers/typed/headers/from_header.dart | 0 .../headers/typed/headers/host_header.dart | 0 .../typed/headers/if_range_header.dart | 0 .../headers/permission_policy_header.dart | 0 .../headers/typed/headers/range_header.dart | 0 .../typed/headers/referrer_policy_header.dart | 0 .../typed/headers/retry_after_header.dart | 0 .../typed/headers/sec_fetch_dest_header.dart | 0 .../typed/headers/sec_fetch_mode_header.dart | 0 .../typed/headers/sec_fetch_site_header.dart | 0 .../typed/headers/set_cookie_header.dart | 0 .../strict_transport_security_header.dart | 0 .../src/headers/typed/headers/te_header.dart | 0 .../headers/transfer_encoding_header.dart | 0 .../headers/typed/headers/upgrade_header.dart | 0 .../typed/headers/util/cookie_util.dart | 0 .../headers/typed/headers/vary_header.dart | 0 .../typed/headers/wildcard_list_header.dart | 0 .../typed/headers/x_forwarded_for_header.dart | 0 .../lib}/src/headers/typed/typed_headers.dart | 0 .../src/io/static/cache_busting_config.dart | 0 .../static/extension/datetime_extension.dart | 0 .../lib}/src/io/static/static_handler.dart | 0 .../relic/lib}/src/ip_address/endianness.dart | 0 .../relic/lib}/src/ip_address/ip_address.dart | 0 .../lib}/src/ip_address/ipv4_address.dart | 0 .../lib}/src/ip_address/ipv6_address.dart | 0 .../relic/lib}/src/isolated_object.dart | 0 .../relic/lib}/src/logger/logger.dart | 0 .../lib}/src/middleware/context_property.dart | 0 .../relic/lib}/src/middleware/middleware.dart | 0 .../src/middleware/middleware_extensions.dart | 0 .../src/middleware/middleware_logger.dart | 0 .../lib}/src/middleware/path_params.dart | 0 .../src/middleware/routing_middleware.dart | 0 .../relic/lib}/src/query/query_param.dart | 0 .../relic/lib}/src/relic_server.dart | 0 .../relic/lib}/src/router/lookup_result.dart | 0 .../relic/lib}/src/router/lru_cache.dart | 0 .../relic/lib}/src/router/method.dart | 0 .../lib}/src/router/normalized_path.dart | 0 .../relic/lib}/src/router/path_trie.dart | 0 .../relic/lib}/src/router/relic_app.dart | 0 .../relic/lib}/src/router/router.dart | 0 .../src/router/router_handler_extension.dart | 0 .../relic/lib}/src/util/util.dart | 0 packages/relic/pubspec.yaml | 51 +++++++++++++++++++ .../relic/test}/accessor/accessor_test.dart | 0 .../test}/adapter/connection_info_test.dart | 0 .../relic/test}/adapter/context_test.dart | 0 .../test}/body/body_infer_mime_type_test.dart | 0 .../test}/body/body_max_length_test.dart | 0 .../test}/body/types/body_type_test.dart | 0 .../exception/relic_exceptions_test.dart | 0 .../relic/test}/handler/cascade_test.dart | 0 .../relic/test}/handler/pipeline_test.dart | 0 ...control_allow_credentials_header_test.dart | 0 .../access_control_max_age_header_test.dart | 0 ...s_control_request_headers_header_test.dart | 0 .../test}/headers/basic/age_header_test.dart | 0 .../headers/basic/allow_header_test.dart | 0 .../basic/content_location_header_test.dart | 0 .../test}/headers/basic/date_header_test.dart | 0 .../headers/basic/expires_header_test.dart | 0 .../test}/headers/basic/host_header_test.dart | 0 .../basic/if_modified_since_header_test.dart | 0 .../if_unmodified_since_header_test.dart | 0 .../headers/basic/last_modified_header.dart | 0 .../headers/basic/location_header_test.dart | 0 .../basic/max_forwards_header_test.dart | 0 .../headers/basic/origin_header_test.dart | 0 .../headers/basic/referer_header_test.dart | 0 .../headers/basic/server_header_test.dart | 0 .../headers/basic/trailer_header_test.dart | 0 .../headers/basic/user_agent_header_test.dart | 0 .../test}/headers/basic/via_header_test.dart | 0 .../basic/x_powered_by_header_test.dart | 0 .../headers/docs/strict_validation_docs.dart | 0 .../relic/test}/headers/header_test.dart | 0 .../test}/headers/headers_accessor_test.dart | 0 .../test}/headers/headers_constants_test.dart | 0 .../test}/headers/headers_test_utils.dart | 0 .../test}/headers/mutable_headers_test.dart | 0 .../typed/accept_encoding_header_test.dart | 0 .../headers/typed/accept_header_test.dart | 0 .../headers/typed/accept_language_test.dart | 0 .../typed/accept_ranges_header_test.dart | 0 ...ess_control_allow_headers_header_test.dart | 0 ...ess_control_allow_methods_header_test.dart | 0 ...cess_control_allow_origin_header_test.dart | 0 ...ss_control_expose_headers_header_test.dart | 0 ...ss_control_request_method_header_test.dart | 0 .../typed/authorization_header_test.dart | 0 .../typed/cache_control_header_test.dart | 0 .../typed/clear_site_data_header_test.dart | 0 .../headers/typed/connection_header_test.dart | 0 .../content_disposition_header_test.dart | 0 .../typed/content_encoding_header_test.dart | 0 .../typed/content_language_header_test.dart | 0 .../typed/content_range_header_test.dart | 0 .../content_security_policy_header_test.dart | 0 .../headers/typed/cookie_header_test.dart | 0 ...ss_origin_embedder_policy_header_test.dart | 0 ...ross_origin_opener_policy_header_test.dart | 0 ...ss_origin_resource_policy_header_test.dart | 0 .../test}/headers/typed/etag_header_test.dart | 0 .../headers/typed/expect_header_test.dart | 0 .../typed/forwarded_header_behavior_test.dart | 0 .../headers/typed/forwarded_header_test.dart | 0 .../test}/headers/typed/from_header_test.dart | 0 .../headers/typed/if_match_header_test.dart | 0 .../typed/if_none_match_header_test.dart | 0 .../headers/typed/if_range_header_test.dart | 0 .../typed/permissions_policy_header_test.dart | 0 .../typed/proxy_authenticate_header_test.dart | 0 .../proxy_authorization_header_test.dart | 0 .../headers/typed/range_header_test.dart | 0 .../typed/referrer_policy_header_test.dart | 0 .../typed/retry_after_header_test.dart | 0 .../typed/sec_fetch_dest_header_test.dart | 0 .../typed/sec_fetch_mode_header_test.dart | 0 .../typed/sec_fetch_site_header_test.dart | 0 .../headers/typed/set_cookie_header_test.dart | 0 ...strict_transport_security_header_test.dart | 0 .../test}/headers/typed/te_header_test.dart | 0 .../typed/transfer_encoding_header_test.dart | 0 .../headers/typed/upgrade_header_test.dart | 0 .../test}/headers/typed/vary_header_test.dart | 0 .../typed/www_authenticate_header_test.dart | 0 .../typed/x_forwarded_for_header_test.dart | 0 .../relic/test}/hijack/relic_hijack_test.dart | 0 .../test}/ip_address/endianness_test.dart | 0 .../ip_address/ip_address_cidr_test.dart | 0 .../test}/ip_address/ip_address_test.dart | 0 .../test}/ip_address/ipv4_address_test.dart | 0 .../test}/ip_address/ipv6_address_test.dart | 0 .../isolated_object_close_test.dart | 0 .../isolated_object_create_test.dart | 0 .../isolated_object_evaluate_test.dart | 0 .../test}/message/apply_headers_test.dart | 0 .../relic/test}/message/message_test.dart | 0 .../relic/test}/message/request_test.dart | 0 .../relic/test}/message/response_test.dart | 0 .../middleware/create_middleware_test.dart | 0 .../test}/middleware/log_middleware_test.dart | 0 .../middleware/middleware_object_test.dart | 0 .../middleware/routing_middleware_test.dart | 0 .../relic/test}/path/path_param_test.dart | 0 .../relic/test}/query/query_param_test.dart | 0 .../relic_server_connections_info_test.dart | 0 .../relic_server_graceful_shutdown_test.dart | 0 .../relic/test}/relic_server_serve_test.dart | 0 .../relic/test}/relic_server_test.dart | 0 .../relic/test}/router/lru_cache_test.dart | 0 .../test}/router/normalized_path_test.dart | 0 .../test}/router/path_trie_crud_test.dart | 0 .../test}/router/path_trie_tail_test.dart | 0 .../relic/test}/router/path_trie_test.dart | 0 .../test}/router/path_trie_use_test.dart | 0 .../test}/router/path_trie_wildcard_test.dart | 0 .../relic/test}/router/relic_app_test.dart | 0 .../test}/router/router_groups_test.dart | 0 .../test}/router/router_handler_test.dart | 0 .../test}/router/router_inject_test.dart | 0 .../test}/router/router_methods_test.dart | 0 .../relic/test}/router/router_test.dart | 0 .../relic/test}/router/router_use_test.dart | 0 .../src/middleware/context_property_test.dart | 0 .../relic/test}/ssl/ssl_certs.dart | 0 .../test}/static/alternative_root_test.dart | 0 .../relic/test}/static/basic_file_test.dart | 0 .../static/cache_busting_config_test.dart | 0 .../cache_busting_static_handler_test.dart | 0 .../test}/static/cache_control_test.dart | 0 .../relic/test}/static/content_type_test.dart | 0 .../static/create_file_handler_test.dart | 0 .../test}/static/default_handler_test.dart | 0 .../relic/test}/static/get_handler_test.dart | 0 .../test}/static/if_modified_since_test.dart | 0 .../test}/static/if_none_match_test.dart | 0 .../relic/test}/static/if_range_test.dart | 0 .../relic/test}/static/mounted_test.dart | 0 .../relic/test}/static/not_found_test.dart | 0 .../test}/static/range_edge_cases_test.dart | 0 .../relic/test}/static/range_test.dart | 0 .../test}/static/symbolic_link_test.dart | 0 .../relic/test}/static/test_util.dart | 0 .../static/unsupported_methods_test.dart | 0 .../relic/test}/util/test_util.dart | 0 .../relic/test}/util/util_test.dart | 0 .../test}/web_socket/web_socket_test.dart | 0 pubspec.yaml | 49 ++---------------- 275 files changed, 55 insertions(+), 45 deletions(-) rename analysis_options.yaml => packages/relic/analysis_options.yaml (100%) rename {benchmark => packages/relic/benchmark}/benchmark.dart (100%) rename {benchmark => packages/relic/benchmark}/completion_script_carapace.dart (100%) rename dart_test.yaml => packages/relic/dart_test.yaml (100%) rename {example => packages/relic/example}/_static_files/hello.txt (100%) rename {example => packages/relic/example}/_static_files/logo.svg (100%) rename {example => packages/relic/example}/advanced/multi_isolate.dart (100%) rename {example => packages/relic/example}/basic/as_handle.dart (100%) rename {example => packages/relic/example}/basic/body.dart (100%) rename {example => packages/relic/example}/basic/handler.dart (100%) rename {example => packages/relic/example}/basic/relic_shelf.dart (100%) rename {example => packages/relic/example}/basic/static_files.dart (100%) rename {example => packages/relic/example}/context/context.dart (100%) rename {example => packages/relic/example}/context/context_property.dart (100%) rename {example => packages/relic/example}/example.dart (100%) rename {example => packages/relic/example}/middleware/auth.dart (100%) rename {example => packages/relic/example}/middleware/cors.dart (100%) rename {example => packages/relic/example}/middleware/example.dart (100%) rename {example => packages/relic/example}/middleware/middleware.dart (100%) rename {example => packages/relic/example}/middleware/pipeline.dart (100%) rename {example => packages/relic/example}/routing/basic_routing.dart (100%) rename {example => packages/relic/example}/routing/dynamic_segments.dart (100%) rename {example => packages/relic/example}/routing/pipeline.dart (100%) rename {example => packages/relic/example}/routing/request.dart (100%) rename {example => packages/relic/example}/routing/request_response.dart (100%) rename {example => packages/relic/example}/routing/response.dart (100%) rename {lib => packages/relic/lib}/io_adapter.dart (100%) rename {lib => packages/relic/lib}/relic.dart (100%) rename {lib => packages/relic/lib}/src/accessor/accessor.dart (100%) rename {lib => packages/relic/lib}/src/adapter/adapter.dart (100%) rename {lib => packages/relic/lib}/src/adapter/connection_info.dart (100%) rename {lib => packages/relic/lib}/src/adapter/io/bind_http_server.dart (100%) rename {lib => packages/relic/lib}/src/adapter/io/http_response_extension.dart (100%) rename {lib => packages/relic/lib}/src/adapter/io/io_adapter.dart (100%) rename {lib => packages/relic/lib}/src/adapter/io/io_relic_web_socket.dart (100%) rename {lib => packages/relic/lib}/src/adapter/io/io_serve.dart (100%) rename {lib => packages/relic/lib}/src/adapter/io/request.dart (100%) rename {lib => packages/relic/lib}/src/adapter/io/response.dart (100%) rename {lib => packages/relic/lib}/src/adapter/relic_web_socket.dart (100%) rename {lib => packages/relic/lib}/src/body/body.dart (100%) rename {lib => packages/relic/lib}/src/body/types/body_type.dart (100%) rename {lib => packages/relic/lib}/src/body/types/mime_type.dart (100%) rename {lib => packages/relic/lib}/src/context/message.dart (100%) rename {lib => packages/relic/lib}/src/context/request.dart (100%) rename {lib => packages/relic/lib}/src/context/response.dart (100%) rename {lib => packages/relic/lib}/src/context/result.dart (100%) rename {lib => packages/relic/lib}/src/handler/cascade.dart (100%) rename {lib => packages/relic/lib}/src/handler/handler.dart (100%) rename {lib => packages/relic/lib}/src/handler/pipeline.dart (100%) rename {lib => packages/relic/lib}/src/headers/codec.dart (100%) rename {lib => packages/relic/lib}/src/headers/codecs/common_types_codecs.dart (100%) rename {lib => packages/relic/lib}/src/headers/exception/header_exception.dart (100%) rename {lib => packages/relic/lib}/src/headers/extension/string_list_extensions.dart (100%) rename {lib => packages/relic/lib}/src/headers/header_accessor.dart (100%) rename {lib => packages/relic/lib}/src/headers/headers.dart (100%) rename {lib => packages/relic/lib}/src/headers/mutable_headers.dart (100%) rename {lib => packages/relic/lib}/src/headers/standard_headers_extensions.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/accept_encoding_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/accept_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/accept_language_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/accept_ranges_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/access_control_allow_headers_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/access_control_allow_methods_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/access_control_allow_origin_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/access_control_expose_headers_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/authentication_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/authorization_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/cache_control_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/clear_site_data_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/connection_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/content_disposition_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/content_encoding_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/content_language_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/content_range_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/content_security_policy_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/cookie_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/cross_origin_embedder_policy_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/cross_origin_opener_policy_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/cross_origin_resource_policy_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/etag_condition_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/etag_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/expect_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/forwarded_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/from_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/host_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/if_range_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/permission_policy_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/range_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/referrer_policy_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/retry_after_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/sec_fetch_dest_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/sec_fetch_mode_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/sec_fetch_site_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/set_cookie_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/strict_transport_security_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/te_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/transfer_encoding_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/upgrade_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/util/cookie_util.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/vary_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/wildcard_list_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/headers/x_forwarded_for_header.dart (100%) rename {lib => packages/relic/lib}/src/headers/typed/typed_headers.dart (100%) rename {lib => packages/relic/lib}/src/io/static/cache_busting_config.dart (100%) rename {lib => packages/relic/lib}/src/io/static/extension/datetime_extension.dart (100%) rename {lib => packages/relic/lib}/src/io/static/static_handler.dart (100%) rename {lib => packages/relic/lib}/src/ip_address/endianness.dart (100%) rename {lib => packages/relic/lib}/src/ip_address/ip_address.dart (100%) rename {lib => packages/relic/lib}/src/ip_address/ipv4_address.dart (100%) rename {lib => packages/relic/lib}/src/ip_address/ipv6_address.dart (100%) rename {lib => packages/relic/lib}/src/isolated_object.dart (100%) rename {lib => packages/relic/lib}/src/logger/logger.dart (100%) rename {lib => packages/relic/lib}/src/middleware/context_property.dart (100%) rename {lib => packages/relic/lib}/src/middleware/middleware.dart (100%) rename {lib => packages/relic/lib}/src/middleware/middleware_extensions.dart (100%) rename {lib => packages/relic/lib}/src/middleware/middleware_logger.dart (100%) rename {lib => packages/relic/lib}/src/middleware/path_params.dart (100%) rename {lib => packages/relic/lib}/src/middleware/routing_middleware.dart (100%) rename {lib => packages/relic/lib}/src/query/query_param.dart (100%) rename {lib => packages/relic/lib}/src/relic_server.dart (100%) rename {lib => packages/relic/lib}/src/router/lookup_result.dart (100%) rename {lib => packages/relic/lib}/src/router/lru_cache.dart (100%) rename {lib => packages/relic/lib}/src/router/method.dart (100%) rename {lib => packages/relic/lib}/src/router/normalized_path.dart (100%) rename {lib => packages/relic/lib}/src/router/path_trie.dart (100%) rename {lib => packages/relic/lib}/src/router/relic_app.dart (100%) rename {lib => packages/relic/lib}/src/router/router.dart (100%) rename {lib => packages/relic/lib}/src/router/router_handler_extension.dart (100%) rename {lib => packages/relic/lib}/src/util/util.dart (100%) create mode 100644 packages/relic/pubspec.yaml rename {test => packages/relic/test}/accessor/accessor_test.dart (100%) rename {test => packages/relic/test}/adapter/connection_info_test.dart (100%) rename {test => packages/relic/test}/adapter/context_test.dart (100%) rename {test => packages/relic/test}/body/body_infer_mime_type_test.dart (100%) rename {test => packages/relic/test}/body/body_max_length_test.dart (100%) rename {test => packages/relic/test}/body/types/body_type_test.dart (100%) rename {test => packages/relic/test}/exception/relic_exceptions_test.dart (100%) rename {test => packages/relic/test}/handler/cascade_test.dart (100%) rename {test => packages/relic/test}/handler/pipeline_test.dart (100%) rename {test => packages/relic/test}/headers/basic/access_control_allow_credentials_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/access_control_max_age_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/access_control_request_headers_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/age_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/allow_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/content_location_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/date_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/expires_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/host_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/if_modified_since_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/if_unmodified_since_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/last_modified_header.dart (100%) rename {test => packages/relic/test}/headers/basic/location_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/max_forwards_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/origin_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/referer_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/server_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/trailer_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/user_agent_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/via_header_test.dart (100%) rename {test => packages/relic/test}/headers/basic/x_powered_by_header_test.dart (100%) rename {test => packages/relic/test}/headers/docs/strict_validation_docs.dart (100%) rename {test => packages/relic/test}/headers/header_test.dart (100%) rename {test => packages/relic/test}/headers/headers_accessor_test.dart (100%) rename {test => packages/relic/test}/headers/headers_constants_test.dart (100%) rename {test => packages/relic/test}/headers/headers_test_utils.dart (100%) rename {test => packages/relic/test}/headers/mutable_headers_test.dart (100%) rename {test => packages/relic/test}/headers/typed/accept_encoding_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/accept_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/accept_language_test.dart (100%) rename {test => packages/relic/test}/headers/typed/accept_ranges_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/access_control_allow_headers_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/access_control_allow_methods_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/access_control_allow_origin_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/access_control_expose_headers_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/access_control_request_method_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/authorization_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/cache_control_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/clear_site_data_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/connection_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/content_disposition_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/content_encoding_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/content_language_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/content_range_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/content_security_policy_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/cookie_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/cross_origin_embedder_policy_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/cross_origin_opener_policy_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/cross_origin_resource_policy_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/etag_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/expect_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/forwarded_header_behavior_test.dart (100%) rename {test => packages/relic/test}/headers/typed/forwarded_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/from_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/if_match_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/if_none_match_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/if_range_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/permissions_policy_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/proxy_authenticate_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/proxy_authorization_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/range_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/referrer_policy_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/retry_after_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/sec_fetch_dest_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/sec_fetch_mode_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/sec_fetch_site_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/set_cookie_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/strict_transport_security_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/te_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/transfer_encoding_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/upgrade_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/vary_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/www_authenticate_header_test.dart (100%) rename {test => packages/relic/test}/headers/typed/x_forwarded_for_header_test.dart (100%) rename {test => packages/relic/test}/hijack/relic_hijack_test.dart (100%) rename {test => packages/relic/test}/ip_address/endianness_test.dart (100%) rename {test => packages/relic/test}/ip_address/ip_address_cidr_test.dart (100%) rename {test => packages/relic/test}/ip_address/ip_address_test.dart (100%) rename {test => packages/relic/test}/ip_address/ipv4_address_test.dart (100%) rename {test => packages/relic/test}/ip_address/ipv6_address_test.dart (100%) rename {test => packages/relic/test}/isolated_object/isolated_object_close_test.dart (100%) rename {test => packages/relic/test}/isolated_object/isolated_object_create_test.dart (100%) rename {test => packages/relic/test}/isolated_object/isolated_object_evaluate_test.dart (100%) rename {test => packages/relic/test}/message/apply_headers_test.dart (100%) rename {test => packages/relic/test}/message/message_test.dart (100%) rename {test => packages/relic/test}/message/request_test.dart (100%) rename {test => packages/relic/test}/message/response_test.dart (100%) rename {test => packages/relic/test}/middleware/create_middleware_test.dart (100%) rename {test => packages/relic/test}/middleware/log_middleware_test.dart (100%) rename {test => packages/relic/test}/middleware/middleware_object_test.dart (100%) rename {test => packages/relic/test}/middleware/routing_middleware_test.dart (100%) rename {test => packages/relic/test}/path/path_param_test.dart (100%) rename {test => packages/relic/test}/query/query_param_test.dart (100%) rename {test => packages/relic/test}/relic_server_connections_info_test.dart (100%) rename {test => packages/relic/test}/relic_server_graceful_shutdown_test.dart (100%) rename {test => packages/relic/test}/relic_server_serve_test.dart (100%) rename {test => packages/relic/test}/relic_server_test.dart (100%) rename {test => packages/relic/test}/router/lru_cache_test.dart (100%) rename {test => packages/relic/test}/router/normalized_path_test.dart (100%) rename {test => packages/relic/test}/router/path_trie_crud_test.dart (100%) rename {test => packages/relic/test}/router/path_trie_tail_test.dart (100%) rename {test => packages/relic/test}/router/path_trie_test.dart (100%) rename {test => packages/relic/test}/router/path_trie_use_test.dart (100%) rename {test => packages/relic/test}/router/path_trie_wildcard_test.dart (100%) rename {test => packages/relic/test}/router/relic_app_test.dart (100%) rename {test => packages/relic/test}/router/router_groups_test.dart (100%) rename {test => packages/relic/test}/router/router_handler_test.dart (100%) rename {test => packages/relic/test}/router/router_inject_test.dart (100%) rename {test => packages/relic/test}/router/router_methods_test.dart (100%) rename {test => packages/relic/test}/router/router_test.dart (100%) rename {test => packages/relic/test}/router/router_use_test.dart (100%) rename {test => packages/relic/test}/src/middleware/context_property_test.dart (100%) rename {test => packages/relic/test}/ssl/ssl_certs.dart (100%) rename {test => packages/relic/test}/static/alternative_root_test.dart (100%) rename {test => packages/relic/test}/static/basic_file_test.dart (100%) rename {test => packages/relic/test}/static/cache_busting_config_test.dart (100%) rename {test => packages/relic/test}/static/cache_busting_static_handler_test.dart (100%) rename {test => packages/relic/test}/static/cache_control_test.dart (100%) rename {test => packages/relic/test}/static/content_type_test.dart (100%) rename {test => packages/relic/test}/static/create_file_handler_test.dart (100%) rename {test => packages/relic/test}/static/default_handler_test.dart (100%) rename {test => packages/relic/test}/static/get_handler_test.dart (100%) rename {test => packages/relic/test}/static/if_modified_since_test.dart (100%) rename {test => packages/relic/test}/static/if_none_match_test.dart (100%) rename {test => packages/relic/test}/static/if_range_test.dart (100%) rename {test => packages/relic/test}/static/mounted_test.dart (100%) rename {test => packages/relic/test}/static/not_found_test.dart (100%) rename {test => packages/relic/test}/static/range_edge_cases_test.dart (100%) rename {test => packages/relic/test}/static/range_test.dart (100%) rename {test => packages/relic/test}/static/symbolic_link_test.dart (100%) rename {test => packages/relic/test}/static/test_util.dart (100%) rename {test => packages/relic/test}/static/unsupported_methods_test.dart (100%) rename {test => packages/relic/test}/util/test_util.dart (100%) rename {test => packages/relic/test}/util/util_test.dart (100%) rename {test => packages/relic/test}/web_socket/web_socket_test.dart (100%) diff --git a/analysis_options.yaml b/packages/relic/analysis_options.yaml similarity index 100% rename from analysis_options.yaml rename to packages/relic/analysis_options.yaml diff --git a/benchmark/benchmark.dart b/packages/relic/benchmark/benchmark.dart similarity index 100% rename from benchmark/benchmark.dart rename to packages/relic/benchmark/benchmark.dart diff --git a/benchmark/completion_script_carapace.dart b/packages/relic/benchmark/completion_script_carapace.dart similarity index 100% rename from benchmark/completion_script_carapace.dart rename to packages/relic/benchmark/completion_script_carapace.dart diff --git a/dart_test.yaml b/packages/relic/dart_test.yaml similarity index 100% rename from dart_test.yaml rename to packages/relic/dart_test.yaml diff --git a/example/_static_files/hello.txt b/packages/relic/example/_static_files/hello.txt similarity index 100% rename from example/_static_files/hello.txt rename to packages/relic/example/_static_files/hello.txt diff --git a/example/_static_files/logo.svg b/packages/relic/example/_static_files/logo.svg similarity index 100% rename from example/_static_files/logo.svg rename to packages/relic/example/_static_files/logo.svg diff --git a/example/advanced/multi_isolate.dart b/packages/relic/example/advanced/multi_isolate.dart similarity index 100% rename from example/advanced/multi_isolate.dart rename to packages/relic/example/advanced/multi_isolate.dart diff --git a/example/basic/as_handle.dart b/packages/relic/example/basic/as_handle.dart similarity index 100% rename from example/basic/as_handle.dart rename to packages/relic/example/basic/as_handle.dart diff --git a/example/basic/body.dart b/packages/relic/example/basic/body.dart similarity index 100% rename from example/basic/body.dart rename to packages/relic/example/basic/body.dart diff --git a/example/basic/handler.dart b/packages/relic/example/basic/handler.dart similarity index 100% rename from example/basic/handler.dart rename to packages/relic/example/basic/handler.dart diff --git a/example/basic/relic_shelf.dart b/packages/relic/example/basic/relic_shelf.dart similarity index 100% rename from example/basic/relic_shelf.dart rename to packages/relic/example/basic/relic_shelf.dart diff --git a/example/basic/static_files.dart b/packages/relic/example/basic/static_files.dart similarity index 100% rename from example/basic/static_files.dart rename to packages/relic/example/basic/static_files.dart diff --git a/example/context/context.dart b/packages/relic/example/context/context.dart similarity index 100% rename from example/context/context.dart rename to packages/relic/example/context/context.dart diff --git a/example/context/context_property.dart b/packages/relic/example/context/context_property.dart similarity index 100% rename from example/context/context_property.dart rename to packages/relic/example/context/context_property.dart diff --git a/example/example.dart b/packages/relic/example/example.dart similarity index 100% rename from example/example.dart rename to packages/relic/example/example.dart diff --git a/example/middleware/auth.dart b/packages/relic/example/middleware/auth.dart similarity index 100% rename from example/middleware/auth.dart rename to packages/relic/example/middleware/auth.dart diff --git a/example/middleware/cors.dart b/packages/relic/example/middleware/cors.dart similarity index 100% rename from example/middleware/cors.dart rename to packages/relic/example/middleware/cors.dart diff --git a/example/middleware/example.dart b/packages/relic/example/middleware/example.dart similarity index 100% rename from example/middleware/example.dart rename to packages/relic/example/middleware/example.dart diff --git a/example/middleware/middleware.dart b/packages/relic/example/middleware/middleware.dart similarity index 100% rename from example/middleware/middleware.dart rename to packages/relic/example/middleware/middleware.dart diff --git a/example/middleware/pipeline.dart b/packages/relic/example/middleware/pipeline.dart similarity index 100% rename from example/middleware/pipeline.dart rename to packages/relic/example/middleware/pipeline.dart diff --git a/example/routing/basic_routing.dart b/packages/relic/example/routing/basic_routing.dart similarity index 100% rename from example/routing/basic_routing.dart rename to packages/relic/example/routing/basic_routing.dart diff --git a/example/routing/dynamic_segments.dart b/packages/relic/example/routing/dynamic_segments.dart similarity index 100% rename from example/routing/dynamic_segments.dart rename to packages/relic/example/routing/dynamic_segments.dart diff --git a/example/routing/pipeline.dart b/packages/relic/example/routing/pipeline.dart similarity index 100% rename from example/routing/pipeline.dart rename to packages/relic/example/routing/pipeline.dart diff --git a/example/routing/request.dart b/packages/relic/example/routing/request.dart similarity index 100% rename from example/routing/request.dart rename to packages/relic/example/routing/request.dart diff --git a/example/routing/request_response.dart b/packages/relic/example/routing/request_response.dart similarity index 100% rename from example/routing/request_response.dart rename to packages/relic/example/routing/request_response.dart diff --git a/example/routing/response.dart b/packages/relic/example/routing/response.dart similarity index 100% rename from example/routing/response.dart rename to packages/relic/example/routing/response.dart diff --git a/lib/io_adapter.dart b/packages/relic/lib/io_adapter.dart similarity index 100% rename from lib/io_adapter.dart rename to packages/relic/lib/io_adapter.dart diff --git a/lib/relic.dart b/packages/relic/lib/relic.dart similarity index 100% rename from lib/relic.dart rename to packages/relic/lib/relic.dart diff --git a/lib/src/accessor/accessor.dart b/packages/relic/lib/src/accessor/accessor.dart similarity index 100% rename from lib/src/accessor/accessor.dart rename to packages/relic/lib/src/accessor/accessor.dart diff --git a/lib/src/adapter/adapter.dart b/packages/relic/lib/src/adapter/adapter.dart similarity index 100% rename from lib/src/adapter/adapter.dart rename to packages/relic/lib/src/adapter/adapter.dart diff --git a/lib/src/adapter/connection_info.dart b/packages/relic/lib/src/adapter/connection_info.dart similarity index 100% rename from lib/src/adapter/connection_info.dart rename to packages/relic/lib/src/adapter/connection_info.dart diff --git a/lib/src/adapter/io/bind_http_server.dart b/packages/relic/lib/src/adapter/io/bind_http_server.dart similarity index 100% rename from lib/src/adapter/io/bind_http_server.dart rename to packages/relic/lib/src/adapter/io/bind_http_server.dart diff --git a/lib/src/adapter/io/http_response_extension.dart b/packages/relic/lib/src/adapter/io/http_response_extension.dart similarity index 100% rename from lib/src/adapter/io/http_response_extension.dart rename to packages/relic/lib/src/adapter/io/http_response_extension.dart diff --git a/lib/src/adapter/io/io_adapter.dart b/packages/relic/lib/src/adapter/io/io_adapter.dart similarity index 100% rename from lib/src/adapter/io/io_adapter.dart rename to packages/relic/lib/src/adapter/io/io_adapter.dart diff --git a/lib/src/adapter/io/io_relic_web_socket.dart b/packages/relic/lib/src/adapter/io/io_relic_web_socket.dart similarity index 100% rename from lib/src/adapter/io/io_relic_web_socket.dart rename to packages/relic/lib/src/adapter/io/io_relic_web_socket.dart diff --git a/lib/src/adapter/io/io_serve.dart b/packages/relic/lib/src/adapter/io/io_serve.dart similarity index 100% rename from lib/src/adapter/io/io_serve.dart rename to packages/relic/lib/src/adapter/io/io_serve.dart diff --git a/lib/src/adapter/io/request.dart b/packages/relic/lib/src/adapter/io/request.dart similarity index 100% rename from lib/src/adapter/io/request.dart rename to packages/relic/lib/src/adapter/io/request.dart diff --git a/lib/src/adapter/io/response.dart b/packages/relic/lib/src/adapter/io/response.dart similarity index 100% rename from lib/src/adapter/io/response.dart rename to packages/relic/lib/src/adapter/io/response.dart diff --git a/lib/src/adapter/relic_web_socket.dart b/packages/relic/lib/src/adapter/relic_web_socket.dart similarity index 100% rename from lib/src/adapter/relic_web_socket.dart rename to packages/relic/lib/src/adapter/relic_web_socket.dart diff --git a/lib/src/body/body.dart b/packages/relic/lib/src/body/body.dart similarity index 100% rename from lib/src/body/body.dart rename to packages/relic/lib/src/body/body.dart diff --git a/lib/src/body/types/body_type.dart b/packages/relic/lib/src/body/types/body_type.dart similarity index 100% rename from lib/src/body/types/body_type.dart rename to packages/relic/lib/src/body/types/body_type.dart diff --git a/lib/src/body/types/mime_type.dart b/packages/relic/lib/src/body/types/mime_type.dart similarity index 100% rename from lib/src/body/types/mime_type.dart rename to packages/relic/lib/src/body/types/mime_type.dart diff --git a/lib/src/context/message.dart b/packages/relic/lib/src/context/message.dart similarity index 100% rename from lib/src/context/message.dart rename to packages/relic/lib/src/context/message.dart diff --git a/lib/src/context/request.dart b/packages/relic/lib/src/context/request.dart similarity index 100% rename from lib/src/context/request.dart rename to packages/relic/lib/src/context/request.dart diff --git a/lib/src/context/response.dart b/packages/relic/lib/src/context/response.dart similarity index 100% rename from lib/src/context/response.dart rename to packages/relic/lib/src/context/response.dart diff --git a/lib/src/context/result.dart b/packages/relic/lib/src/context/result.dart similarity index 100% rename from lib/src/context/result.dart rename to packages/relic/lib/src/context/result.dart diff --git a/lib/src/handler/cascade.dart b/packages/relic/lib/src/handler/cascade.dart similarity index 100% rename from lib/src/handler/cascade.dart rename to packages/relic/lib/src/handler/cascade.dart diff --git a/lib/src/handler/handler.dart b/packages/relic/lib/src/handler/handler.dart similarity index 100% rename from lib/src/handler/handler.dart rename to packages/relic/lib/src/handler/handler.dart diff --git a/lib/src/handler/pipeline.dart b/packages/relic/lib/src/handler/pipeline.dart similarity index 100% rename from lib/src/handler/pipeline.dart rename to packages/relic/lib/src/handler/pipeline.dart diff --git a/lib/src/headers/codec.dart b/packages/relic/lib/src/headers/codec.dart similarity index 100% rename from lib/src/headers/codec.dart rename to packages/relic/lib/src/headers/codec.dart diff --git a/lib/src/headers/codecs/common_types_codecs.dart b/packages/relic/lib/src/headers/codecs/common_types_codecs.dart similarity index 100% rename from lib/src/headers/codecs/common_types_codecs.dart rename to packages/relic/lib/src/headers/codecs/common_types_codecs.dart diff --git a/lib/src/headers/exception/header_exception.dart b/packages/relic/lib/src/headers/exception/header_exception.dart similarity index 100% rename from lib/src/headers/exception/header_exception.dart rename to packages/relic/lib/src/headers/exception/header_exception.dart diff --git a/lib/src/headers/extension/string_list_extensions.dart b/packages/relic/lib/src/headers/extension/string_list_extensions.dart similarity index 100% rename from lib/src/headers/extension/string_list_extensions.dart rename to packages/relic/lib/src/headers/extension/string_list_extensions.dart diff --git a/lib/src/headers/header_accessor.dart b/packages/relic/lib/src/headers/header_accessor.dart similarity index 100% rename from lib/src/headers/header_accessor.dart rename to packages/relic/lib/src/headers/header_accessor.dart diff --git a/lib/src/headers/headers.dart b/packages/relic/lib/src/headers/headers.dart similarity index 100% rename from lib/src/headers/headers.dart rename to packages/relic/lib/src/headers/headers.dart diff --git a/lib/src/headers/mutable_headers.dart b/packages/relic/lib/src/headers/mutable_headers.dart similarity index 100% rename from lib/src/headers/mutable_headers.dart rename to packages/relic/lib/src/headers/mutable_headers.dart diff --git a/lib/src/headers/standard_headers_extensions.dart b/packages/relic/lib/src/headers/standard_headers_extensions.dart similarity index 100% rename from lib/src/headers/standard_headers_extensions.dart rename to packages/relic/lib/src/headers/standard_headers_extensions.dart diff --git a/lib/src/headers/typed/headers/accept_encoding_header.dart b/packages/relic/lib/src/headers/typed/headers/accept_encoding_header.dart similarity index 100% rename from lib/src/headers/typed/headers/accept_encoding_header.dart rename to packages/relic/lib/src/headers/typed/headers/accept_encoding_header.dart diff --git a/lib/src/headers/typed/headers/accept_header.dart b/packages/relic/lib/src/headers/typed/headers/accept_header.dart similarity index 100% rename from lib/src/headers/typed/headers/accept_header.dart rename to packages/relic/lib/src/headers/typed/headers/accept_header.dart diff --git a/lib/src/headers/typed/headers/accept_language_header.dart b/packages/relic/lib/src/headers/typed/headers/accept_language_header.dart similarity index 100% rename from lib/src/headers/typed/headers/accept_language_header.dart rename to packages/relic/lib/src/headers/typed/headers/accept_language_header.dart diff --git a/lib/src/headers/typed/headers/accept_ranges_header.dart b/packages/relic/lib/src/headers/typed/headers/accept_ranges_header.dart similarity index 100% rename from lib/src/headers/typed/headers/accept_ranges_header.dart rename to packages/relic/lib/src/headers/typed/headers/accept_ranges_header.dart diff --git a/lib/src/headers/typed/headers/access_control_allow_headers_header.dart b/packages/relic/lib/src/headers/typed/headers/access_control_allow_headers_header.dart similarity index 100% rename from lib/src/headers/typed/headers/access_control_allow_headers_header.dart rename to packages/relic/lib/src/headers/typed/headers/access_control_allow_headers_header.dart diff --git a/lib/src/headers/typed/headers/access_control_allow_methods_header.dart b/packages/relic/lib/src/headers/typed/headers/access_control_allow_methods_header.dart similarity index 100% rename from lib/src/headers/typed/headers/access_control_allow_methods_header.dart rename to packages/relic/lib/src/headers/typed/headers/access_control_allow_methods_header.dart diff --git a/lib/src/headers/typed/headers/access_control_allow_origin_header.dart b/packages/relic/lib/src/headers/typed/headers/access_control_allow_origin_header.dart similarity index 100% rename from lib/src/headers/typed/headers/access_control_allow_origin_header.dart rename to packages/relic/lib/src/headers/typed/headers/access_control_allow_origin_header.dart diff --git a/lib/src/headers/typed/headers/access_control_expose_headers_header.dart b/packages/relic/lib/src/headers/typed/headers/access_control_expose_headers_header.dart similarity index 100% rename from lib/src/headers/typed/headers/access_control_expose_headers_header.dart rename to packages/relic/lib/src/headers/typed/headers/access_control_expose_headers_header.dart diff --git a/lib/src/headers/typed/headers/authentication_header.dart b/packages/relic/lib/src/headers/typed/headers/authentication_header.dart similarity index 100% rename from lib/src/headers/typed/headers/authentication_header.dart rename to packages/relic/lib/src/headers/typed/headers/authentication_header.dart diff --git a/lib/src/headers/typed/headers/authorization_header.dart b/packages/relic/lib/src/headers/typed/headers/authorization_header.dart similarity index 100% rename from lib/src/headers/typed/headers/authorization_header.dart rename to packages/relic/lib/src/headers/typed/headers/authorization_header.dart diff --git a/lib/src/headers/typed/headers/cache_control_header.dart b/packages/relic/lib/src/headers/typed/headers/cache_control_header.dart similarity index 100% rename from lib/src/headers/typed/headers/cache_control_header.dart rename to packages/relic/lib/src/headers/typed/headers/cache_control_header.dart diff --git a/lib/src/headers/typed/headers/clear_site_data_header.dart b/packages/relic/lib/src/headers/typed/headers/clear_site_data_header.dart similarity index 100% rename from lib/src/headers/typed/headers/clear_site_data_header.dart rename to packages/relic/lib/src/headers/typed/headers/clear_site_data_header.dart diff --git a/lib/src/headers/typed/headers/connection_header.dart b/packages/relic/lib/src/headers/typed/headers/connection_header.dart similarity index 100% rename from lib/src/headers/typed/headers/connection_header.dart rename to packages/relic/lib/src/headers/typed/headers/connection_header.dart diff --git a/lib/src/headers/typed/headers/content_disposition_header.dart b/packages/relic/lib/src/headers/typed/headers/content_disposition_header.dart similarity index 100% rename from lib/src/headers/typed/headers/content_disposition_header.dart rename to packages/relic/lib/src/headers/typed/headers/content_disposition_header.dart diff --git a/lib/src/headers/typed/headers/content_encoding_header.dart b/packages/relic/lib/src/headers/typed/headers/content_encoding_header.dart similarity index 100% rename from lib/src/headers/typed/headers/content_encoding_header.dart rename to packages/relic/lib/src/headers/typed/headers/content_encoding_header.dart diff --git a/lib/src/headers/typed/headers/content_language_header.dart b/packages/relic/lib/src/headers/typed/headers/content_language_header.dart similarity index 100% rename from lib/src/headers/typed/headers/content_language_header.dart rename to packages/relic/lib/src/headers/typed/headers/content_language_header.dart diff --git a/lib/src/headers/typed/headers/content_range_header.dart b/packages/relic/lib/src/headers/typed/headers/content_range_header.dart similarity index 100% rename from lib/src/headers/typed/headers/content_range_header.dart rename to packages/relic/lib/src/headers/typed/headers/content_range_header.dart diff --git a/lib/src/headers/typed/headers/content_security_policy_header.dart b/packages/relic/lib/src/headers/typed/headers/content_security_policy_header.dart similarity index 100% rename from lib/src/headers/typed/headers/content_security_policy_header.dart rename to packages/relic/lib/src/headers/typed/headers/content_security_policy_header.dart diff --git a/lib/src/headers/typed/headers/cookie_header.dart b/packages/relic/lib/src/headers/typed/headers/cookie_header.dart similarity index 100% rename from lib/src/headers/typed/headers/cookie_header.dart rename to packages/relic/lib/src/headers/typed/headers/cookie_header.dart diff --git a/lib/src/headers/typed/headers/cross_origin_embedder_policy_header.dart b/packages/relic/lib/src/headers/typed/headers/cross_origin_embedder_policy_header.dart similarity index 100% rename from lib/src/headers/typed/headers/cross_origin_embedder_policy_header.dart rename to packages/relic/lib/src/headers/typed/headers/cross_origin_embedder_policy_header.dart diff --git a/lib/src/headers/typed/headers/cross_origin_opener_policy_header.dart b/packages/relic/lib/src/headers/typed/headers/cross_origin_opener_policy_header.dart similarity index 100% rename from lib/src/headers/typed/headers/cross_origin_opener_policy_header.dart rename to packages/relic/lib/src/headers/typed/headers/cross_origin_opener_policy_header.dart diff --git a/lib/src/headers/typed/headers/cross_origin_resource_policy_header.dart b/packages/relic/lib/src/headers/typed/headers/cross_origin_resource_policy_header.dart similarity index 100% rename from lib/src/headers/typed/headers/cross_origin_resource_policy_header.dart rename to packages/relic/lib/src/headers/typed/headers/cross_origin_resource_policy_header.dart diff --git a/lib/src/headers/typed/headers/etag_condition_header.dart b/packages/relic/lib/src/headers/typed/headers/etag_condition_header.dart similarity index 100% rename from lib/src/headers/typed/headers/etag_condition_header.dart rename to packages/relic/lib/src/headers/typed/headers/etag_condition_header.dart diff --git a/lib/src/headers/typed/headers/etag_header.dart b/packages/relic/lib/src/headers/typed/headers/etag_header.dart similarity index 100% rename from lib/src/headers/typed/headers/etag_header.dart rename to packages/relic/lib/src/headers/typed/headers/etag_header.dart diff --git a/lib/src/headers/typed/headers/expect_header.dart b/packages/relic/lib/src/headers/typed/headers/expect_header.dart similarity index 100% rename from lib/src/headers/typed/headers/expect_header.dart rename to packages/relic/lib/src/headers/typed/headers/expect_header.dart diff --git a/lib/src/headers/typed/headers/forwarded_header.dart b/packages/relic/lib/src/headers/typed/headers/forwarded_header.dart similarity index 100% rename from lib/src/headers/typed/headers/forwarded_header.dart rename to packages/relic/lib/src/headers/typed/headers/forwarded_header.dart diff --git a/lib/src/headers/typed/headers/from_header.dart b/packages/relic/lib/src/headers/typed/headers/from_header.dart similarity index 100% rename from lib/src/headers/typed/headers/from_header.dart rename to packages/relic/lib/src/headers/typed/headers/from_header.dart diff --git a/lib/src/headers/typed/headers/host_header.dart b/packages/relic/lib/src/headers/typed/headers/host_header.dart similarity index 100% rename from lib/src/headers/typed/headers/host_header.dart rename to packages/relic/lib/src/headers/typed/headers/host_header.dart diff --git a/lib/src/headers/typed/headers/if_range_header.dart b/packages/relic/lib/src/headers/typed/headers/if_range_header.dart similarity index 100% rename from lib/src/headers/typed/headers/if_range_header.dart rename to packages/relic/lib/src/headers/typed/headers/if_range_header.dart diff --git a/lib/src/headers/typed/headers/permission_policy_header.dart b/packages/relic/lib/src/headers/typed/headers/permission_policy_header.dart similarity index 100% rename from lib/src/headers/typed/headers/permission_policy_header.dart rename to packages/relic/lib/src/headers/typed/headers/permission_policy_header.dart diff --git a/lib/src/headers/typed/headers/range_header.dart b/packages/relic/lib/src/headers/typed/headers/range_header.dart similarity index 100% rename from lib/src/headers/typed/headers/range_header.dart rename to packages/relic/lib/src/headers/typed/headers/range_header.dart diff --git a/lib/src/headers/typed/headers/referrer_policy_header.dart b/packages/relic/lib/src/headers/typed/headers/referrer_policy_header.dart similarity index 100% rename from lib/src/headers/typed/headers/referrer_policy_header.dart rename to packages/relic/lib/src/headers/typed/headers/referrer_policy_header.dart diff --git a/lib/src/headers/typed/headers/retry_after_header.dart b/packages/relic/lib/src/headers/typed/headers/retry_after_header.dart similarity index 100% rename from lib/src/headers/typed/headers/retry_after_header.dart rename to packages/relic/lib/src/headers/typed/headers/retry_after_header.dart diff --git a/lib/src/headers/typed/headers/sec_fetch_dest_header.dart b/packages/relic/lib/src/headers/typed/headers/sec_fetch_dest_header.dart similarity index 100% rename from lib/src/headers/typed/headers/sec_fetch_dest_header.dart rename to packages/relic/lib/src/headers/typed/headers/sec_fetch_dest_header.dart diff --git a/lib/src/headers/typed/headers/sec_fetch_mode_header.dart b/packages/relic/lib/src/headers/typed/headers/sec_fetch_mode_header.dart similarity index 100% rename from lib/src/headers/typed/headers/sec_fetch_mode_header.dart rename to packages/relic/lib/src/headers/typed/headers/sec_fetch_mode_header.dart diff --git a/lib/src/headers/typed/headers/sec_fetch_site_header.dart b/packages/relic/lib/src/headers/typed/headers/sec_fetch_site_header.dart similarity index 100% rename from lib/src/headers/typed/headers/sec_fetch_site_header.dart rename to packages/relic/lib/src/headers/typed/headers/sec_fetch_site_header.dart diff --git a/lib/src/headers/typed/headers/set_cookie_header.dart b/packages/relic/lib/src/headers/typed/headers/set_cookie_header.dart similarity index 100% rename from lib/src/headers/typed/headers/set_cookie_header.dart rename to packages/relic/lib/src/headers/typed/headers/set_cookie_header.dart diff --git a/lib/src/headers/typed/headers/strict_transport_security_header.dart b/packages/relic/lib/src/headers/typed/headers/strict_transport_security_header.dart similarity index 100% rename from lib/src/headers/typed/headers/strict_transport_security_header.dart rename to packages/relic/lib/src/headers/typed/headers/strict_transport_security_header.dart diff --git a/lib/src/headers/typed/headers/te_header.dart b/packages/relic/lib/src/headers/typed/headers/te_header.dart similarity index 100% rename from lib/src/headers/typed/headers/te_header.dart rename to packages/relic/lib/src/headers/typed/headers/te_header.dart diff --git a/lib/src/headers/typed/headers/transfer_encoding_header.dart b/packages/relic/lib/src/headers/typed/headers/transfer_encoding_header.dart similarity index 100% rename from lib/src/headers/typed/headers/transfer_encoding_header.dart rename to packages/relic/lib/src/headers/typed/headers/transfer_encoding_header.dart diff --git a/lib/src/headers/typed/headers/upgrade_header.dart b/packages/relic/lib/src/headers/typed/headers/upgrade_header.dart similarity index 100% rename from lib/src/headers/typed/headers/upgrade_header.dart rename to packages/relic/lib/src/headers/typed/headers/upgrade_header.dart diff --git a/lib/src/headers/typed/headers/util/cookie_util.dart b/packages/relic/lib/src/headers/typed/headers/util/cookie_util.dart similarity index 100% rename from lib/src/headers/typed/headers/util/cookie_util.dart rename to packages/relic/lib/src/headers/typed/headers/util/cookie_util.dart diff --git a/lib/src/headers/typed/headers/vary_header.dart b/packages/relic/lib/src/headers/typed/headers/vary_header.dart similarity index 100% rename from lib/src/headers/typed/headers/vary_header.dart rename to packages/relic/lib/src/headers/typed/headers/vary_header.dart diff --git a/lib/src/headers/typed/headers/wildcard_list_header.dart b/packages/relic/lib/src/headers/typed/headers/wildcard_list_header.dart similarity index 100% rename from lib/src/headers/typed/headers/wildcard_list_header.dart rename to packages/relic/lib/src/headers/typed/headers/wildcard_list_header.dart diff --git a/lib/src/headers/typed/headers/x_forwarded_for_header.dart b/packages/relic/lib/src/headers/typed/headers/x_forwarded_for_header.dart similarity index 100% rename from lib/src/headers/typed/headers/x_forwarded_for_header.dart rename to packages/relic/lib/src/headers/typed/headers/x_forwarded_for_header.dart diff --git a/lib/src/headers/typed/typed_headers.dart b/packages/relic/lib/src/headers/typed/typed_headers.dart similarity index 100% rename from lib/src/headers/typed/typed_headers.dart rename to packages/relic/lib/src/headers/typed/typed_headers.dart diff --git a/lib/src/io/static/cache_busting_config.dart b/packages/relic/lib/src/io/static/cache_busting_config.dart similarity index 100% rename from lib/src/io/static/cache_busting_config.dart rename to packages/relic/lib/src/io/static/cache_busting_config.dart diff --git a/lib/src/io/static/extension/datetime_extension.dart b/packages/relic/lib/src/io/static/extension/datetime_extension.dart similarity index 100% rename from lib/src/io/static/extension/datetime_extension.dart rename to packages/relic/lib/src/io/static/extension/datetime_extension.dart diff --git a/lib/src/io/static/static_handler.dart b/packages/relic/lib/src/io/static/static_handler.dart similarity index 100% rename from lib/src/io/static/static_handler.dart rename to packages/relic/lib/src/io/static/static_handler.dart diff --git a/lib/src/ip_address/endianness.dart b/packages/relic/lib/src/ip_address/endianness.dart similarity index 100% rename from lib/src/ip_address/endianness.dart rename to packages/relic/lib/src/ip_address/endianness.dart diff --git a/lib/src/ip_address/ip_address.dart b/packages/relic/lib/src/ip_address/ip_address.dart similarity index 100% rename from lib/src/ip_address/ip_address.dart rename to packages/relic/lib/src/ip_address/ip_address.dart diff --git a/lib/src/ip_address/ipv4_address.dart b/packages/relic/lib/src/ip_address/ipv4_address.dart similarity index 100% rename from lib/src/ip_address/ipv4_address.dart rename to packages/relic/lib/src/ip_address/ipv4_address.dart diff --git a/lib/src/ip_address/ipv6_address.dart b/packages/relic/lib/src/ip_address/ipv6_address.dart similarity index 100% rename from lib/src/ip_address/ipv6_address.dart rename to packages/relic/lib/src/ip_address/ipv6_address.dart diff --git a/lib/src/isolated_object.dart b/packages/relic/lib/src/isolated_object.dart similarity index 100% rename from lib/src/isolated_object.dart rename to packages/relic/lib/src/isolated_object.dart diff --git a/lib/src/logger/logger.dart b/packages/relic/lib/src/logger/logger.dart similarity index 100% rename from lib/src/logger/logger.dart rename to packages/relic/lib/src/logger/logger.dart diff --git a/lib/src/middleware/context_property.dart b/packages/relic/lib/src/middleware/context_property.dart similarity index 100% rename from lib/src/middleware/context_property.dart rename to packages/relic/lib/src/middleware/context_property.dart diff --git a/lib/src/middleware/middleware.dart b/packages/relic/lib/src/middleware/middleware.dart similarity index 100% rename from lib/src/middleware/middleware.dart rename to packages/relic/lib/src/middleware/middleware.dart diff --git a/lib/src/middleware/middleware_extensions.dart b/packages/relic/lib/src/middleware/middleware_extensions.dart similarity index 100% rename from lib/src/middleware/middleware_extensions.dart rename to packages/relic/lib/src/middleware/middleware_extensions.dart diff --git a/lib/src/middleware/middleware_logger.dart b/packages/relic/lib/src/middleware/middleware_logger.dart similarity index 100% rename from lib/src/middleware/middleware_logger.dart rename to packages/relic/lib/src/middleware/middleware_logger.dart diff --git a/lib/src/middleware/path_params.dart b/packages/relic/lib/src/middleware/path_params.dart similarity index 100% rename from lib/src/middleware/path_params.dart rename to packages/relic/lib/src/middleware/path_params.dart diff --git a/lib/src/middleware/routing_middleware.dart b/packages/relic/lib/src/middleware/routing_middleware.dart similarity index 100% rename from lib/src/middleware/routing_middleware.dart rename to packages/relic/lib/src/middleware/routing_middleware.dart diff --git a/lib/src/query/query_param.dart b/packages/relic/lib/src/query/query_param.dart similarity index 100% rename from lib/src/query/query_param.dart rename to packages/relic/lib/src/query/query_param.dart diff --git a/lib/src/relic_server.dart b/packages/relic/lib/src/relic_server.dart similarity index 100% rename from lib/src/relic_server.dart rename to packages/relic/lib/src/relic_server.dart diff --git a/lib/src/router/lookup_result.dart b/packages/relic/lib/src/router/lookup_result.dart similarity index 100% rename from lib/src/router/lookup_result.dart rename to packages/relic/lib/src/router/lookup_result.dart diff --git a/lib/src/router/lru_cache.dart b/packages/relic/lib/src/router/lru_cache.dart similarity index 100% rename from lib/src/router/lru_cache.dart rename to packages/relic/lib/src/router/lru_cache.dart diff --git a/lib/src/router/method.dart b/packages/relic/lib/src/router/method.dart similarity index 100% rename from lib/src/router/method.dart rename to packages/relic/lib/src/router/method.dart diff --git a/lib/src/router/normalized_path.dart b/packages/relic/lib/src/router/normalized_path.dart similarity index 100% rename from lib/src/router/normalized_path.dart rename to packages/relic/lib/src/router/normalized_path.dart diff --git a/lib/src/router/path_trie.dart b/packages/relic/lib/src/router/path_trie.dart similarity index 100% rename from lib/src/router/path_trie.dart rename to packages/relic/lib/src/router/path_trie.dart diff --git a/lib/src/router/relic_app.dart b/packages/relic/lib/src/router/relic_app.dart similarity index 100% rename from lib/src/router/relic_app.dart rename to packages/relic/lib/src/router/relic_app.dart diff --git a/lib/src/router/router.dart b/packages/relic/lib/src/router/router.dart similarity index 100% rename from lib/src/router/router.dart rename to packages/relic/lib/src/router/router.dart diff --git a/lib/src/router/router_handler_extension.dart b/packages/relic/lib/src/router/router_handler_extension.dart similarity index 100% rename from lib/src/router/router_handler_extension.dart rename to packages/relic/lib/src/router/router_handler_extension.dart diff --git a/lib/src/util/util.dart b/packages/relic/lib/src/util/util.dart similarity index 100% rename from lib/src/util/util.dart rename to packages/relic/lib/src/util/util.dart diff --git a/packages/relic/pubspec.yaml b/packages/relic/pubspec.yaml new file mode 100644 index 00000000..d7314e02 --- /dev/null +++ b/packages/relic/pubspec.yaml @@ -0,0 +1,51 @@ +name: relic +description: A lightweight and flexible web server inspired by Shelf for building APIs and backend services. +version: 0.13.1 +repository: https://github.com/serverpod/relic +homepage: https://docs.dartrelic.dev/ +topics: + - server + - web + - backend + - http + +environment: + sdk: ^3.7.0 + +resolution: workspace + +dependencies: + async: ^2.11.0 + collection: ^1.18.0 + convert: ^3.1.1 + crypto: ^3.0.0 + http_parser: ^4.0.2 + meta: ^1.15.0 + mime: ">=1.0.6 <3.0.0" + path: ^1.8.3 + stack_trace: ^1.10.0 + stream_channel: ^2.1.1 + vm_service: ^15.0.0 + web_socket: ^1.0.1 + web_socket_channel: ^3.0.3 + +dev_dependencies: + benchmark_harness: ^2.3.1 + cli_tools: ^0.9.0 + config: ^0.8.3 + git: ^2.2.1 + http: ^1.1.0 + lints: ">=5.0.0 <7.0.0" + mockito: ^5.4.4 + routingkit: ^5.1.2 + serverpod_lints: ^3.0.0 + spanner: ^1.0.5 + test: ^1.25.10 + test_descriptor: ^2.0.1 + # The following are not used directly, but are included transitively. + # Due to bad semver hygiene we need to bound the versions higher than + # our direct dependencies indicate. + file: ^7.0.0 # ignore: sort_pub_dependencies + frontend_server_client: ^4.0.0 + pub_semver: ^2.1.4 + watcher: ^1.1.0 diff --git a/test/accessor/accessor_test.dart b/packages/relic/test/accessor/accessor_test.dart similarity index 100% rename from test/accessor/accessor_test.dart rename to packages/relic/test/accessor/accessor_test.dart diff --git a/test/adapter/connection_info_test.dart b/packages/relic/test/adapter/connection_info_test.dart similarity index 100% rename from test/adapter/connection_info_test.dart rename to packages/relic/test/adapter/connection_info_test.dart diff --git a/test/adapter/context_test.dart b/packages/relic/test/adapter/context_test.dart similarity index 100% rename from test/adapter/context_test.dart rename to packages/relic/test/adapter/context_test.dart diff --git a/test/body/body_infer_mime_type_test.dart b/packages/relic/test/body/body_infer_mime_type_test.dart similarity index 100% rename from test/body/body_infer_mime_type_test.dart rename to packages/relic/test/body/body_infer_mime_type_test.dart diff --git a/test/body/body_max_length_test.dart b/packages/relic/test/body/body_max_length_test.dart similarity index 100% rename from test/body/body_max_length_test.dart rename to packages/relic/test/body/body_max_length_test.dart diff --git a/test/body/types/body_type_test.dart b/packages/relic/test/body/types/body_type_test.dart similarity index 100% rename from test/body/types/body_type_test.dart rename to packages/relic/test/body/types/body_type_test.dart diff --git a/test/exception/relic_exceptions_test.dart b/packages/relic/test/exception/relic_exceptions_test.dart similarity index 100% rename from test/exception/relic_exceptions_test.dart rename to packages/relic/test/exception/relic_exceptions_test.dart diff --git a/test/handler/cascade_test.dart b/packages/relic/test/handler/cascade_test.dart similarity index 100% rename from test/handler/cascade_test.dart rename to packages/relic/test/handler/cascade_test.dart diff --git a/test/handler/pipeline_test.dart b/packages/relic/test/handler/pipeline_test.dart similarity index 100% rename from test/handler/pipeline_test.dart rename to packages/relic/test/handler/pipeline_test.dart diff --git a/test/headers/basic/access_control_allow_credentials_header_test.dart b/packages/relic/test/headers/basic/access_control_allow_credentials_header_test.dart similarity index 100% rename from test/headers/basic/access_control_allow_credentials_header_test.dart rename to packages/relic/test/headers/basic/access_control_allow_credentials_header_test.dart diff --git a/test/headers/basic/access_control_max_age_header_test.dart b/packages/relic/test/headers/basic/access_control_max_age_header_test.dart similarity index 100% rename from test/headers/basic/access_control_max_age_header_test.dart rename to packages/relic/test/headers/basic/access_control_max_age_header_test.dart diff --git a/test/headers/basic/access_control_request_headers_header_test.dart b/packages/relic/test/headers/basic/access_control_request_headers_header_test.dart similarity index 100% rename from test/headers/basic/access_control_request_headers_header_test.dart rename to packages/relic/test/headers/basic/access_control_request_headers_header_test.dart diff --git a/test/headers/basic/age_header_test.dart b/packages/relic/test/headers/basic/age_header_test.dart similarity index 100% rename from test/headers/basic/age_header_test.dart rename to packages/relic/test/headers/basic/age_header_test.dart diff --git a/test/headers/basic/allow_header_test.dart b/packages/relic/test/headers/basic/allow_header_test.dart similarity index 100% rename from test/headers/basic/allow_header_test.dart rename to packages/relic/test/headers/basic/allow_header_test.dart diff --git a/test/headers/basic/content_location_header_test.dart b/packages/relic/test/headers/basic/content_location_header_test.dart similarity index 100% rename from test/headers/basic/content_location_header_test.dart rename to packages/relic/test/headers/basic/content_location_header_test.dart diff --git a/test/headers/basic/date_header_test.dart b/packages/relic/test/headers/basic/date_header_test.dart similarity index 100% rename from test/headers/basic/date_header_test.dart rename to packages/relic/test/headers/basic/date_header_test.dart diff --git a/test/headers/basic/expires_header_test.dart b/packages/relic/test/headers/basic/expires_header_test.dart similarity index 100% rename from test/headers/basic/expires_header_test.dart rename to packages/relic/test/headers/basic/expires_header_test.dart diff --git a/test/headers/basic/host_header_test.dart b/packages/relic/test/headers/basic/host_header_test.dart similarity index 100% rename from test/headers/basic/host_header_test.dart rename to packages/relic/test/headers/basic/host_header_test.dart diff --git a/test/headers/basic/if_modified_since_header_test.dart b/packages/relic/test/headers/basic/if_modified_since_header_test.dart similarity index 100% rename from test/headers/basic/if_modified_since_header_test.dart rename to packages/relic/test/headers/basic/if_modified_since_header_test.dart diff --git a/test/headers/basic/if_unmodified_since_header_test.dart b/packages/relic/test/headers/basic/if_unmodified_since_header_test.dart similarity index 100% rename from test/headers/basic/if_unmodified_since_header_test.dart rename to packages/relic/test/headers/basic/if_unmodified_since_header_test.dart diff --git a/test/headers/basic/last_modified_header.dart b/packages/relic/test/headers/basic/last_modified_header.dart similarity index 100% rename from test/headers/basic/last_modified_header.dart rename to packages/relic/test/headers/basic/last_modified_header.dart diff --git a/test/headers/basic/location_header_test.dart b/packages/relic/test/headers/basic/location_header_test.dart similarity index 100% rename from test/headers/basic/location_header_test.dart rename to packages/relic/test/headers/basic/location_header_test.dart diff --git a/test/headers/basic/max_forwards_header_test.dart b/packages/relic/test/headers/basic/max_forwards_header_test.dart similarity index 100% rename from test/headers/basic/max_forwards_header_test.dart rename to packages/relic/test/headers/basic/max_forwards_header_test.dart diff --git a/test/headers/basic/origin_header_test.dart b/packages/relic/test/headers/basic/origin_header_test.dart similarity index 100% rename from test/headers/basic/origin_header_test.dart rename to packages/relic/test/headers/basic/origin_header_test.dart diff --git a/test/headers/basic/referer_header_test.dart b/packages/relic/test/headers/basic/referer_header_test.dart similarity index 100% rename from test/headers/basic/referer_header_test.dart rename to packages/relic/test/headers/basic/referer_header_test.dart diff --git a/test/headers/basic/server_header_test.dart b/packages/relic/test/headers/basic/server_header_test.dart similarity index 100% rename from test/headers/basic/server_header_test.dart rename to packages/relic/test/headers/basic/server_header_test.dart diff --git a/test/headers/basic/trailer_header_test.dart b/packages/relic/test/headers/basic/trailer_header_test.dart similarity index 100% rename from test/headers/basic/trailer_header_test.dart rename to packages/relic/test/headers/basic/trailer_header_test.dart diff --git a/test/headers/basic/user_agent_header_test.dart b/packages/relic/test/headers/basic/user_agent_header_test.dart similarity index 100% rename from test/headers/basic/user_agent_header_test.dart rename to packages/relic/test/headers/basic/user_agent_header_test.dart diff --git a/test/headers/basic/via_header_test.dart b/packages/relic/test/headers/basic/via_header_test.dart similarity index 100% rename from test/headers/basic/via_header_test.dart rename to packages/relic/test/headers/basic/via_header_test.dart diff --git a/test/headers/basic/x_powered_by_header_test.dart b/packages/relic/test/headers/basic/x_powered_by_header_test.dart similarity index 100% rename from test/headers/basic/x_powered_by_header_test.dart rename to packages/relic/test/headers/basic/x_powered_by_header_test.dart diff --git a/test/headers/docs/strict_validation_docs.dart b/packages/relic/test/headers/docs/strict_validation_docs.dart similarity index 100% rename from test/headers/docs/strict_validation_docs.dart rename to packages/relic/test/headers/docs/strict_validation_docs.dart diff --git a/test/headers/header_test.dart b/packages/relic/test/headers/header_test.dart similarity index 100% rename from test/headers/header_test.dart rename to packages/relic/test/headers/header_test.dart diff --git a/test/headers/headers_accessor_test.dart b/packages/relic/test/headers/headers_accessor_test.dart similarity index 100% rename from test/headers/headers_accessor_test.dart rename to packages/relic/test/headers/headers_accessor_test.dart diff --git a/test/headers/headers_constants_test.dart b/packages/relic/test/headers/headers_constants_test.dart similarity index 100% rename from test/headers/headers_constants_test.dart rename to packages/relic/test/headers/headers_constants_test.dart diff --git a/test/headers/headers_test_utils.dart b/packages/relic/test/headers/headers_test_utils.dart similarity index 100% rename from test/headers/headers_test_utils.dart rename to packages/relic/test/headers/headers_test_utils.dart diff --git a/test/headers/mutable_headers_test.dart b/packages/relic/test/headers/mutable_headers_test.dart similarity index 100% rename from test/headers/mutable_headers_test.dart rename to packages/relic/test/headers/mutable_headers_test.dart diff --git a/test/headers/typed/accept_encoding_header_test.dart b/packages/relic/test/headers/typed/accept_encoding_header_test.dart similarity index 100% rename from test/headers/typed/accept_encoding_header_test.dart rename to packages/relic/test/headers/typed/accept_encoding_header_test.dart diff --git a/test/headers/typed/accept_header_test.dart b/packages/relic/test/headers/typed/accept_header_test.dart similarity index 100% rename from test/headers/typed/accept_header_test.dart rename to packages/relic/test/headers/typed/accept_header_test.dart diff --git a/test/headers/typed/accept_language_test.dart b/packages/relic/test/headers/typed/accept_language_test.dart similarity index 100% rename from test/headers/typed/accept_language_test.dart rename to packages/relic/test/headers/typed/accept_language_test.dart diff --git a/test/headers/typed/accept_ranges_header_test.dart b/packages/relic/test/headers/typed/accept_ranges_header_test.dart similarity index 100% rename from test/headers/typed/accept_ranges_header_test.dart rename to packages/relic/test/headers/typed/accept_ranges_header_test.dart diff --git a/test/headers/typed/access_control_allow_headers_header_test.dart b/packages/relic/test/headers/typed/access_control_allow_headers_header_test.dart similarity index 100% rename from test/headers/typed/access_control_allow_headers_header_test.dart rename to packages/relic/test/headers/typed/access_control_allow_headers_header_test.dart diff --git a/test/headers/typed/access_control_allow_methods_header_test.dart b/packages/relic/test/headers/typed/access_control_allow_methods_header_test.dart similarity index 100% rename from test/headers/typed/access_control_allow_methods_header_test.dart rename to packages/relic/test/headers/typed/access_control_allow_methods_header_test.dart diff --git a/test/headers/typed/access_control_allow_origin_header_test.dart b/packages/relic/test/headers/typed/access_control_allow_origin_header_test.dart similarity index 100% rename from test/headers/typed/access_control_allow_origin_header_test.dart rename to packages/relic/test/headers/typed/access_control_allow_origin_header_test.dart diff --git a/test/headers/typed/access_control_expose_headers_header_test.dart b/packages/relic/test/headers/typed/access_control_expose_headers_header_test.dart similarity index 100% rename from test/headers/typed/access_control_expose_headers_header_test.dart rename to packages/relic/test/headers/typed/access_control_expose_headers_header_test.dart diff --git a/test/headers/typed/access_control_request_method_header_test.dart b/packages/relic/test/headers/typed/access_control_request_method_header_test.dart similarity index 100% rename from test/headers/typed/access_control_request_method_header_test.dart rename to packages/relic/test/headers/typed/access_control_request_method_header_test.dart diff --git a/test/headers/typed/authorization_header_test.dart b/packages/relic/test/headers/typed/authorization_header_test.dart similarity index 100% rename from test/headers/typed/authorization_header_test.dart rename to packages/relic/test/headers/typed/authorization_header_test.dart diff --git a/test/headers/typed/cache_control_header_test.dart b/packages/relic/test/headers/typed/cache_control_header_test.dart similarity index 100% rename from test/headers/typed/cache_control_header_test.dart rename to packages/relic/test/headers/typed/cache_control_header_test.dart diff --git a/test/headers/typed/clear_site_data_header_test.dart b/packages/relic/test/headers/typed/clear_site_data_header_test.dart similarity index 100% rename from test/headers/typed/clear_site_data_header_test.dart rename to packages/relic/test/headers/typed/clear_site_data_header_test.dart diff --git a/test/headers/typed/connection_header_test.dart b/packages/relic/test/headers/typed/connection_header_test.dart similarity index 100% rename from test/headers/typed/connection_header_test.dart rename to packages/relic/test/headers/typed/connection_header_test.dart diff --git a/test/headers/typed/content_disposition_header_test.dart b/packages/relic/test/headers/typed/content_disposition_header_test.dart similarity index 100% rename from test/headers/typed/content_disposition_header_test.dart rename to packages/relic/test/headers/typed/content_disposition_header_test.dart diff --git a/test/headers/typed/content_encoding_header_test.dart b/packages/relic/test/headers/typed/content_encoding_header_test.dart similarity index 100% rename from test/headers/typed/content_encoding_header_test.dart rename to packages/relic/test/headers/typed/content_encoding_header_test.dart diff --git a/test/headers/typed/content_language_header_test.dart b/packages/relic/test/headers/typed/content_language_header_test.dart similarity index 100% rename from test/headers/typed/content_language_header_test.dart rename to packages/relic/test/headers/typed/content_language_header_test.dart diff --git a/test/headers/typed/content_range_header_test.dart b/packages/relic/test/headers/typed/content_range_header_test.dart similarity index 100% rename from test/headers/typed/content_range_header_test.dart rename to packages/relic/test/headers/typed/content_range_header_test.dart diff --git a/test/headers/typed/content_security_policy_header_test.dart b/packages/relic/test/headers/typed/content_security_policy_header_test.dart similarity index 100% rename from test/headers/typed/content_security_policy_header_test.dart rename to packages/relic/test/headers/typed/content_security_policy_header_test.dart diff --git a/test/headers/typed/cookie_header_test.dart b/packages/relic/test/headers/typed/cookie_header_test.dart similarity index 100% rename from test/headers/typed/cookie_header_test.dart rename to packages/relic/test/headers/typed/cookie_header_test.dart diff --git a/test/headers/typed/cross_origin_embedder_policy_header_test.dart b/packages/relic/test/headers/typed/cross_origin_embedder_policy_header_test.dart similarity index 100% rename from test/headers/typed/cross_origin_embedder_policy_header_test.dart rename to packages/relic/test/headers/typed/cross_origin_embedder_policy_header_test.dart diff --git a/test/headers/typed/cross_origin_opener_policy_header_test.dart b/packages/relic/test/headers/typed/cross_origin_opener_policy_header_test.dart similarity index 100% rename from test/headers/typed/cross_origin_opener_policy_header_test.dart rename to packages/relic/test/headers/typed/cross_origin_opener_policy_header_test.dart diff --git a/test/headers/typed/cross_origin_resource_policy_header_test.dart b/packages/relic/test/headers/typed/cross_origin_resource_policy_header_test.dart similarity index 100% rename from test/headers/typed/cross_origin_resource_policy_header_test.dart rename to packages/relic/test/headers/typed/cross_origin_resource_policy_header_test.dart diff --git a/test/headers/typed/etag_header_test.dart b/packages/relic/test/headers/typed/etag_header_test.dart similarity index 100% rename from test/headers/typed/etag_header_test.dart rename to packages/relic/test/headers/typed/etag_header_test.dart diff --git a/test/headers/typed/expect_header_test.dart b/packages/relic/test/headers/typed/expect_header_test.dart similarity index 100% rename from test/headers/typed/expect_header_test.dart rename to packages/relic/test/headers/typed/expect_header_test.dart diff --git a/test/headers/typed/forwarded_header_behavior_test.dart b/packages/relic/test/headers/typed/forwarded_header_behavior_test.dart similarity index 100% rename from test/headers/typed/forwarded_header_behavior_test.dart rename to packages/relic/test/headers/typed/forwarded_header_behavior_test.dart diff --git a/test/headers/typed/forwarded_header_test.dart b/packages/relic/test/headers/typed/forwarded_header_test.dart similarity index 100% rename from test/headers/typed/forwarded_header_test.dart rename to packages/relic/test/headers/typed/forwarded_header_test.dart diff --git a/test/headers/typed/from_header_test.dart b/packages/relic/test/headers/typed/from_header_test.dart similarity index 100% rename from test/headers/typed/from_header_test.dart rename to packages/relic/test/headers/typed/from_header_test.dart diff --git a/test/headers/typed/if_match_header_test.dart b/packages/relic/test/headers/typed/if_match_header_test.dart similarity index 100% rename from test/headers/typed/if_match_header_test.dart rename to packages/relic/test/headers/typed/if_match_header_test.dart diff --git a/test/headers/typed/if_none_match_header_test.dart b/packages/relic/test/headers/typed/if_none_match_header_test.dart similarity index 100% rename from test/headers/typed/if_none_match_header_test.dart rename to packages/relic/test/headers/typed/if_none_match_header_test.dart diff --git a/test/headers/typed/if_range_header_test.dart b/packages/relic/test/headers/typed/if_range_header_test.dart similarity index 100% rename from test/headers/typed/if_range_header_test.dart rename to packages/relic/test/headers/typed/if_range_header_test.dart diff --git a/test/headers/typed/permissions_policy_header_test.dart b/packages/relic/test/headers/typed/permissions_policy_header_test.dart similarity index 100% rename from test/headers/typed/permissions_policy_header_test.dart rename to packages/relic/test/headers/typed/permissions_policy_header_test.dart diff --git a/test/headers/typed/proxy_authenticate_header_test.dart b/packages/relic/test/headers/typed/proxy_authenticate_header_test.dart similarity index 100% rename from test/headers/typed/proxy_authenticate_header_test.dart rename to packages/relic/test/headers/typed/proxy_authenticate_header_test.dart diff --git a/test/headers/typed/proxy_authorization_header_test.dart b/packages/relic/test/headers/typed/proxy_authorization_header_test.dart similarity index 100% rename from test/headers/typed/proxy_authorization_header_test.dart rename to packages/relic/test/headers/typed/proxy_authorization_header_test.dart diff --git a/test/headers/typed/range_header_test.dart b/packages/relic/test/headers/typed/range_header_test.dart similarity index 100% rename from test/headers/typed/range_header_test.dart rename to packages/relic/test/headers/typed/range_header_test.dart diff --git a/test/headers/typed/referrer_policy_header_test.dart b/packages/relic/test/headers/typed/referrer_policy_header_test.dart similarity index 100% rename from test/headers/typed/referrer_policy_header_test.dart rename to packages/relic/test/headers/typed/referrer_policy_header_test.dart diff --git a/test/headers/typed/retry_after_header_test.dart b/packages/relic/test/headers/typed/retry_after_header_test.dart similarity index 100% rename from test/headers/typed/retry_after_header_test.dart rename to packages/relic/test/headers/typed/retry_after_header_test.dart diff --git a/test/headers/typed/sec_fetch_dest_header_test.dart b/packages/relic/test/headers/typed/sec_fetch_dest_header_test.dart similarity index 100% rename from test/headers/typed/sec_fetch_dest_header_test.dart rename to packages/relic/test/headers/typed/sec_fetch_dest_header_test.dart diff --git a/test/headers/typed/sec_fetch_mode_header_test.dart b/packages/relic/test/headers/typed/sec_fetch_mode_header_test.dart similarity index 100% rename from test/headers/typed/sec_fetch_mode_header_test.dart rename to packages/relic/test/headers/typed/sec_fetch_mode_header_test.dart diff --git a/test/headers/typed/sec_fetch_site_header_test.dart b/packages/relic/test/headers/typed/sec_fetch_site_header_test.dart similarity index 100% rename from test/headers/typed/sec_fetch_site_header_test.dart rename to packages/relic/test/headers/typed/sec_fetch_site_header_test.dart diff --git a/test/headers/typed/set_cookie_header_test.dart b/packages/relic/test/headers/typed/set_cookie_header_test.dart similarity index 100% rename from test/headers/typed/set_cookie_header_test.dart rename to packages/relic/test/headers/typed/set_cookie_header_test.dart diff --git a/test/headers/typed/strict_transport_security_header_test.dart b/packages/relic/test/headers/typed/strict_transport_security_header_test.dart similarity index 100% rename from test/headers/typed/strict_transport_security_header_test.dart rename to packages/relic/test/headers/typed/strict_transport_security_header_test.dart diff --git a/test/headers/typed/te_header_test.dart b/packages/relic/test/headers/typed/te_header_test.dart similarity index 100% rename from test/headers/typed/te_header_test.dart rename to packages/relic/test/headers/typed/te_header_test.dart diff --git a/test/headers/typed/transfer_encoding_header_test.dart b/packages/relic/test/headers/typed/transfer_encoding_header_test.dart similarity index 100% rename from test/headers/typed/transfer_encoding_header_test.dart rename to packages/relic/test/headers/typed/transfer_encoding_header_test.dart diff --git a/test/headers/typed/upgrade_header_test.dart b/packages/relic/test/headers/typed/upgrade_header_test.dart similarity index 100% rename from test/headers/typed/upgrade_header_test.dart rename to packages/relic/test/headers/typed/upgrade_header_test.dart diff --git a/test/headers/typed/vary_header_test.dart b/packages/relic/test/headers/typed/vary_header_test.dart similarity index 100% rename from test/headers/typed/vary_header_test.dart rename to packages/relic/test/headers/typed/vary_header_test.dart diff --git a/test/headers/typed/www_authenticate_header_test.dart b/packages/relic/test/headers/typed/www_authenticate_header_test.dart similarity index 100% rename from test/headers/typed/www_authenticate_header_test.dart rename to packages/relic/test/headers/typed/www_authenticate_header_test.dart diff --git a/test/headers/typed/x_forwarded_for_header_test.dart b/packages/relic/test/headers/typed/x_forwarded_for_header_test.dart similarity index 100% rename from test/headers/typed/x_forwarded_for_header_test.dart rename to packages/relic/test/headers/typed/x_forwarded_for_header_test.dart diff --git a/test/hijack/relic_hijack_test.dart b/packages/relic/test/hijack/relic_hijack_test.dart similarity index 100% rename from test/hijack/relic_hijack_test.dart rename to packages/relic/test/hijack/relic_hijack_test.dart diff --git a/test/ip_address/endianness_test.dart b/packages/relic/test/ip_address/endianness_test.dart similarity index 100% rename from test/ip_address/endianness_test.dart rename to packages/relic/test/ip_address/endianness_test.dart diff --git a/test/ip_address/ip_address_cidr_test.dart b/packages/relic/test/ip_address/ip_address_cidr_test.dart similarity index 100% rename from test/ip_address/ip_address_cidr_test.dart rename to packages/relic/test/ip_address/ip_address_cidr_test.dart diff --git a/test/ip_address/ip_address_test.dart b/packages/relic/test/ip_address/ip_address_test.dart similarity index 100% rename from test/ip_address/ip_address_test.dart rename to packages/relic/test/ip_address/ip_address_test.dart diff --git a/test/ip_address/ipv4_address_test.dart b/packages/relic/test/ip_address/ipv4_address_test.dart similarity index 100% rename from test/ip_address/ipv4_address_test.dart rename to packages/relic/test/ip_address/ipv4_address_test.dart diff --git a/test/ip_address/ipv6_address_test.dart b/packages/relic/test/ip_address/ipv6_address_test.dart similarity index 100% rename from test/ip_address/ipv6_address_test.dart rename to packages/relic/test/ip_address/ipv6_address_test.dart diff --git a/test/isolated_object/isolated_object_close_test.dart b/packages/relic/test/isolated_object/isolated_object_close_test.dart similarity index 100% rename from test/isolated_object/isolated_object_close_test.dart rename to packages/relic/test/isolated_object/isolated_object_close_test.dart diff --git a/test/isolated_object/isolated_object_create_test.dart b/packages/relic/test/isolated_object/isolated_object_create_test.dart similarity index 100% rename from test/isolated_object/isolated_object_create_test.dart rename to packages/relic/test/isolated_object/isolated_object_create_test.dart diff --git a/test/isolated_object/isolated_object_evaluate_test.dart b/packages/relic/test/isolated_object/isolated_object_evaluate_test.dart similarity index 100% rename from test/isolated_object/isolated_object_evaluate_test.dart rename to packages/relic/test/isolated_object/isolated_object_evaluate_test.dart diff --git a/test/message/apply_headers_test.dart b/packages/relic/test/message/apply_headers_test.dart similarity index 100% rename from test/message/apply_headers_test.dart rename to packages/relic/test/message/apply_headers_test.dart diff --git a/test/message/message_test.dart b/packages/relic/test/message/message_test.dart similarity index 100% rename from test/message/message_test.dart rename to packages/relic/test/message/message_test.dart diff --git a/test/message/request_test.dart b/packages/relic/test/message/request_test.dart similarity index 100% rename from test/message/request_test.dart rename to packages/relic/test/message/request_test.dart diff --git a/test/message/response_test.dart b/packages/relic/test/message/response_test.dart similarity index 100% rename from test/message/response_test.dart rename to packages/relic/test/message/response_test.dart diff --git a/test/middleware/create_middleware_test.dart b/packages/relic/test/middleware/create_middleware_test.dart similarity index 100% rename from test/middleware/create_middleware_test.dart rename to packages/relic/test/middleware/create_middleware_test.dart diff --git a/test/middleware/log_middleware_test.dart b/packages/relic/test/middleware/log_middleware_test.dart similarity index 100% rename from test/middleware/log_middleware_test.dart rename to packages/relic/test/middleware/log_middleware_test.dart diff --git a/test/middleware/middleware_object_test.dart b/packages/relic/test/middleware/middleware_object_test.dart similarity index 100% rename from test/middleware/middleware_object_test.dart rename to packages/relic/test/middleware/middleware_object_test.dart diff --git a/test/middleware/routing_middleware_test.dart b/packages/relic/test/middleware/routing_middleware_test.dart similarity index 100% rename from test/middleware/routing_middleware_test.dart rename to packages/relic/test/middleware/routing_middleware_test.dart diff --git a/test/path/path_param_test.dart b/packages/relic/test/path/path_param_test.dart similarity index 100% rename from test/path/path_param_test.dart rename to packages/relic/test/path/path_param_test.dart diff --git a/test/query/query_param_test.dart b/packages/relic/test/query/query_param_test.dart similarity index 100% rename from test/query/query_param_test.dart rename to packages/relic/test/query/query_param_test.dart diff --git a/test/relic_server_connections_info_test.dart b/packages/relic/test/relic_server_connections_info_test.dart similarity index 100% rename from test/relic_server_connections_info_test.dart rename to packages/relic/test/relic_server_connections_info_test.dart diff --git a/test/relic_server_graceful_shutdown_test.dart b/packages/relic/test/relic_server_graceful_shutdown_test.dart similarity index 100% rename from test/relic_server_graceful_shutdown_test.dart rename to packages/relic/test/relic_server_graceful_shutdown_test.dart diff --git a/test/relic_server_serve_test.dart b/packages/relic/test/relic_server_serve_test.dart similarity index 100% rename from test/relic_server_serve_test.dart rename to packages/relic/test/relic_server_serve_test.dart diff --git a/test/relic_server_test.dart b/packages/relic/test/relic_server_test.dart similarity index 100% rename from test/relic_server_test.dart rename to packages/relic/test/relic_server_test.dart diff --git a/test/router/lru_cache_test.dart b/packages/relic/test/router/lru_cache_test.dart similarity index 100% rename from test/router/lru_cache_test.dart rename to packages/relic/test/router/lru_cache_test.dart diff --git a/test/router/normalized_path_test.dart b/packages/relic/test/router/normalized_path_test.dart similarity index 100% rename from test/router/normalized_path_test.dart rename to packages/relic/test/router/normalized_path_test.dart diff --git a/test/router/path_trie_crud_test.dart b/packages/relic/test/router/path_trie_crud_test.dart similarity index 100% rename from test/router/path_trie_crud_test.dart rename to packages/relic/test/router/path_trie_crud_test.dart diff --git a/test/router/path_trie_tail_test.dart b/packages/relic/test/router/path_trie_tail_test.dart similarity index 100% rename from test/router/path_trie_tail_test.dart rename to packages/relic/test/router/path_trie_tail_test.dart diff --git a/test/router/path_trie_test.dart b/packages/relic/test/router/path_trie_test.dart similarity index 100% rename from test/router/path_trie_test.dart rename to packages/relic/test/router/path_trie_test.dart diff --git a/test/router/path_trie_use_test.dart b/packages/relic/test/router/path_trie_use_test.dart similarity index 100% rename from test/router/path_trie_use_test.dart rename to packages/relic/test/router/path_trie_use_test.dart diff --git a/test/router/path_trie_wildcard_test.dart b/packages/relic/test/router/path_trie_wildcard_test.dart similarity index 100% rename from test/router/path_trie_wildcard_test.dart rename to packages/relic/test/router/path_trie_wildcard_test.dart diff --git a/test/router/relic_app_test.dart b/packages/relic/test/router/relic_app_test.dart similarity index 100% rename from test/router/relic_app_test.dart rename to packages/relic/test/router/relic_app_test.dart diff --git a/test/router/router_groups_test.dart b/packages/relic/test/router/router_groups_test.dart similarity index 100% rename from test/router/router_groups_test.dart rename to packages/relic/test/router/router_groups_test.dart diff --git a/test/router/router_handler_test.dart b/packages/relic/test/router/router_handler_test.dart similarity index 100% rename from test/router/router_handler_test.dart rename to packages/relic/test/router/router_handler_test.dart diff --git a/test/router/router_inject_test.dart b/packages/relic/test/router/router_inject_test.dart similarity index 100% rename from test/router/router_inject_test.dart rename to packages/relic/test/router/router_inject_test.dart diff --git a/test/router/router_methods_test.dart b/packages/relic/test/router/router_methods_test.dart similarity index 100% rename from test/router/router_methods_test.dart rename to packages/relic/test/router/router_methods_test.dart diff --git a/test/router/router_test.dart b/packages/relic/test/router/router_test.dart similarity index 100% rename from test/router/router_test.dart rename to packages/relic/test/router/router_test.dart diff --git a/test/router/router_use_test.dart b/packages/relic/test/router/router_use_test.dart similarity index 100% rename from test/router/router_use_test.dart rename to packages/relic/test/router/router_use_test.dart diff --git a/test/src/middleware/context_property_test.dart b/packages/relic/test/src/middleware/context_property_test.dart similarity index 100% rename from test/src/middleware/context_property_test.dart rename to packages/relic/test/src/middleware/context_property_test.dart diff --git a/test/ssl/ssl_certs.dart b/packages/relic/test/ssl/ssl_certs.dart similarity index 100% rename from test/ssl/ssl_certs.dart rename to packages/relic/test/ssl/ssl_certs.dart diff --git a/test/static/alternative_root_test.dart b/packages/relic/test/static/alternative_root_test.dart similarity index 100% rename from test/static/alternative_root_test.dart rename to packages/relic/test/static/alternative_root_test.dart diff --git a/test/static/basic_file_test.dart b/packages/relic/test/static/basic_file_test.dart similarity index 100% rename from test/static/basic_file_test.dart rename to packages/relic/test/static/basic_file_test.dart diff --git a/test/static/cache_busting_config_test.dart b/packages/relic/test/static/cache_busting_config_test.dart similarity index 100% rename from test/static/cache_busting_config_test.dart rename to packages/relic/test/static/cache_busting_config_test.dart diff --git a/test/static/cache_busting_static_handler_test.dart b/packages/relic/test/static/cache_busting_static_handler_test.dart similarity index 100% rename from test/static/cache_busting_static_handler_test.dart rename to packages/relic/test/static/cache_busting_static_handler_test.dart diff --git a/test/static/cache_control_test.dart b/packages/relic/test/static/cache_control_test.dart similarity index 100% rename from test/static/cache_control_test.dart rename to packages/relic/test/static/cache_control_test.dart diff --git a/test/static/content_type_test.dart b/packages/relic/test/static/content_type_test.dart similarity index 100% rename from test/static/content_type_test.dart rename to packages/relic/test/static/content_type_test.dart diff --git a/test/static/create_file_handler_test.dart b/packages/relic/test/static/create_file_handler_test.dart similarity index 100% rename from test/static/create_file_handler_test.dart rename to packages/relic/test/static/create_file_handler_test.dart diff --git a/test/static/default_handler_test.dart b/packages/relic/test/static/default_handler_test.dart similarity index 100% rename from test/static/default_handler_test.dart rename to packages/relic/test/static/default_handler_test.dart diff --git a/test/static/get_handler_test.dart b/packages/relic/test/static/get_handler_test.dart similarity index 100% rename from test/static/get_handler_test.dart rename to packages/relic/test/static/get_handler_test.dart diff --git a/test/static/if_modified_since_test.dart b/packages/relic/test/static/if_modified_since_test.dart similarity index 100% rename from test/static/if_modified_since_test.dart rename to packages/relic/test/static/if_modified_since_test.dart diff --git a/test/static/if_none_match_test.dart b/packages/relic/test/static/if_none_match_test.dart similarity index 100% rename from test/static/if_none_match_test.dart rename to packages/relic/test/static/if_none_match_test.dart diff --git a/test/static/if_range_test.dart b/packages/relic/test/static/if_range_test.dart similarity index 100% rename from test/static/if_range_test.dart rename to packages/relic/test/static/if_range_test.dart diff --git a/test/static/mounted_test.dart b/packages/relic/test/static/mounted_test.dart similarity index 100% rename from test/static/mounted_test.dart rename to packages/relic/test/static/mounted_test.dart diff --git a/test/static/not_found_test.dart b/packages/relic/test/static/not_found_test.dart similarity index 100% rename from test/static/not_found_test.dart rename to packages/relic/test/static/not_found_test.dart diff --git a/test/static/range_edge_cases_test.dart b/packages/relic/test/static/range_edge_cases_test.dart similarity index 100% rename from test/static/range_edge_cases_test.dart rename to packages/relic/test/static/range_edge_cases_test.dart diff --git a/test/static/range_test.dart b/packages/relic/test/static/range_test.dart similarity index 100% rename from test/static/range_test.dart rename to packages/relic/test/static/range_test.dart diff --git a/test/static/symbolic_link_test.dart b/packages/relic/test/static/symbolic_link_test.dart similarity index 100% rename from test/static/symbolic_link_test.dart rename to packages/relic/test/static/symbolic_link_test.dart diff --git a/test/static/test_util.dart b/packages/relic/test/static/test_util.dart similarity index 100% rename from test/static/test_util.dart rename to packages/relic/test/static/test_util.dart diff --git a/test/static/unsupported_methods_test.dart b/packages/relic/test/static/unsupported_methods_test.dart similarity index 100% rename from test/static/unsupported_methods_test.dart rename to packages/relic/test/static/unsupported_methods_test.dart diff --git a/test/util/test_util.dart b/packages/relic/test/util/test_util.dart similarity index 100% rename from test/util/test_util.dart rename to packages/relic/test/util/test_util.dart diff --git a/test/util/util_test.dart b/packages/relic/test/util/util_test.dart similarity index 100% rename from test/util/util_test.dart rename to packages/relic/test/util/util_test.dart diff --git a/test/web_socket/web_socket_test.dart b/packages/relic/test/web_socket/web_socket_test.dart similarity index 100% rename from test/web_socket/web_socket_test.dart rename to packages/relic/test/web_socket/web_socket_test.dart diff --git a/pubspec.yaml b/pubspec.yaml index a4436fd6..e412507c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,49 +1,8 @@ -name: relic -description: A lightweight and flexible web server inspired by Shelf for building APIs and backend services. -version: 0.13.1 -repository: https://github.com/serverpod/relic -homepage: https://docs.dartrelic.dev/ -topics: - - server - - web - - backend - - http +name: _ +publish_to: none environment: sdk: ^3.7.0 -dependencies: - async: ^2.11.0 - collection: ^1.18.0 - convert: ^3.1.1 - crypto: ^3.0.0 - http_parser: ^4.0.2 - meta: ^1.15.0 - mime: ">=1.0.6 <3.0.0" - path: ^1.8.3 - stack_trace: ^1.10.0 - stream_channel: ^2.1.1 - vm_service: ^15.0.0 - web_socket: ^1.0.1 - web_socket_channel: ^3.0.3 - -dev_dependencies: - benchmark_harness: ^2.3.1 - cli_tools: ^0.9.0 - config: ^0.8.3 - git: ^2.2.1 - http: ^1.1.0 - lints: ">=5.0.0 <7.0.0" - mockito: ^5.4.4 - routingkit: ^5.1.2 - serverpod_lints: ^2.8.0 - spanner: ^1.0.5 - test: ^1.25.10 - test_descriptor: ^2.0.1 - # The following are not used directly, but are included transitively. - # Due to bad semver hygiene we need to bound the versions higher than - # our direct dependencies indicate. - file: ^7.0.0 # ignore: sort_pub_dependencies - frontend_server_client: ^4.0.0 - pub_semver: ^2.1.4 - watcher: ^1.1.0 +workspace: + - packages/relic From 3c44e45ed48e873547ccfc7f4a45d17ac3aa218b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Tue, 9 Dec 2025 15:58:15 +0100 Subject: [PATCH 02/14] ci: Update GitHub workflows and docs for workspace structure - Add working-directory: packages/relic to all workflow steps - Update coverage file path to packages/relic/coverage/lcov.info - Fix git diff-files to check only package directory - Update doc/site/docs/_example symlink to point to packages/relic/example - Update Makefile EXAMPLE_SOURCE_DIR for versioned docs --- .github/workflows/benchmark.yaml | 1 + .github/workflows/dart-tests.yaml | 21 ++++++++++++--------- .github/workflows/publish.yaml | 18 ++++++++++-------- doc/site/Makefile | 3 +-- doc/site/docs/_example | 2 +- pubspec.yaml | 2 +- 6 files changed, 26 insertions(+), 21 deletions(-) diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index c533d722..1c24d0f0 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -41,6 +41,7 @@ jobs: - name: Run Benchmark id: run-benchmark + working-directory: packages/relic run: | dart compile exe benchmark/benchmark.dart ./benchmark/benchmark.exe run --store-in-git-notes --verbose diff --git a/.github/workflows/dart-tests.yaml b/.github/workflows/dart-tests.yaml index a134c5dd..26114689 100644 --- a/.github/workflows/dart-tests.yaml +++ b/.github/workflows/dart-tests.yaml @@ -11,7 +11,7 @@ on: env: PUB_CACHE_PATH: ~/.pub-cache - LOWEST_DART_SDK: "3.7.0" + LOWEST_DART_SDK: "3.8.1" jobs: build: @@ -23,7 +23,7 @@ jobs: dart_sdk: # ${{ env.LOWEST_DART_SDK }} won't work at job level as env context not available for strategy ¯\_(ツ)_/¯ # (see https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs#context-availability) - - "3.7.0" + - "3.8.1" - stable steps: - name: Checkout Code @@ -42,16 +42,14 @@ jobs: restore-keys: ${{ runner.os }}-pub-cache- - name: Verify Formatting - # Disable formatting check on stable for now. - # Dart stable (3.7.2 as of 2025-03-14) has radically different formatting - if: ${{ matrix.dart_sdk == env.LOWEST_DART_SDK }} run: dart format --output=none --set-exit-if-changed . - name: Check Dependency Bounds + working-directory: packages/relic run: >- dart pub downgrade --tighten && dart pub upgrade --major-versions && - git diff-files --quiet + git diff-files --quiet -- . - name: Analyze (downgraded) run: >- @@ -66,28 +64,31 @@ jobs: dart analyze ${{ matrix.dart_sdk == env.LOWEST_DART_SDK && '--fatal-infos' || '--fatal-warnings' }} - name: Doc Dry Run + working-directory: packages/relic run: dart doc --dry-run - name: Check Pana Score if: ${{ matrix.dart_sdk == 'stable' }} # temporary workaround until https://github.com/dart-lang/pana/issues/1499 is resolved continue-on-error: true + working-directory: packages/relic run: >- dart pub global activate pana && dart pub global run pana --no-warning --exit-code-threshold=0 --json - name: Publish Dry Run + working-directory: packages/relic run: dart pub publish --dry-run unit_tests: name: Run Unit Tests runs-on: ${{ matrix.os }} - continue-on-error: ${{ matrix.dart_sdk != '3.7.0' }} # env context not available for continue-on-error + continue-on-error: ${{ matrix.dart_sdk != '3.8.1' }} # env context not available for continue-on-error strategy: fail-fast: false matrix: os: [windows-latest, ubuntu-latest, macos-latest] - dart_sdk: ["3.7.0", stable, beta] # env context not available for strategy + dart_sdk: ["3.8.1", stable, beta] # env context not available for strategy deps: [downgrade, upgrade] steps: - name: Checkout Code @@ -111,10 +112,12 @@ jobs: dart pub get - name: Hot-reload Test + working-directory: packages/relic run: >- dart --enable-vm-service test test/router/relic_app_test.dart -t hot-reload -c source - name: Run Tests With Coverage + working-directory: packages/relic run: >- dart pub global activate coverage && dart pub global run coverage:test_with_coverage --branch-coverage -- --reporter=failures-only @@ -124,7 +127,7 @@ jobs: if: ${{ !cancelled() }} # upload coverage irrespective of test results with: token: ${{ secrets.CODECOV_TOKEN }} - files: coverage/lcov.info + files: packages/relic/coverage/lcov.info docs-markdown-lint: name: Markdown lint for docs diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 73e45694..c1e19870 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -1,12 +1,14 @@ -name: Publish Relic +name: Publish Relic on: - push: - tags: - - 'v[0-9]+.[0-9]+.[0-9]+*' # Matches tags like v1.2.3 and v1.2.3-pre.1 + push: + tags: + - "v[0-9]+.[0-9]+.[0-9]+*" # Matches tags like v1.2.3 and v1.2.3-pre.1 jobs: - publish: - permissions: - id-token: write - uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 + publish: + permissions: + id-token: write + uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 + with: + working-directory: packages/relic diff --git a/doc/site/Makefile b/doc/site/Makefile index e67d267a..fb4646f8 100644 --- a/doc/site/Makefile +++ b/doc/site/Makefile @@ -3,7 +3,7 @@ # Extract version from command line (e.g., "make version 1.2.3") # Filter out known targets to get the version argument VERSION := $(filter-out install start version,$(MAKECMDGOALS)) -EXAMPLE_SOURCE_DIR := $(abspath $(CURDIR)/../../example) +EXAMPLE_SOURCE_DIR := $(abspath $(CURDIR)/../../packages/relic/example) VERSIONED_EXAMPLE_DIR := versioned_docs/version-$(VERSION)/_example install: @@ -35,4 +35,3 @@ validate-version: # Create dummy targets for version arguments to prevent Make errors %: @: - diff --git a/doc/site/docs/_example b/doc/site/docs/_example index 9f480167..16d3915d 120000 --- a/doc/site/docs/_example +++ b/doc/site/docs/_example @@ -1 +1 @@ -../../../example \ No newline at end of file +../../../packages/relic/example \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index e412507c..a0cd9b02 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: _ publish_to: none environment: - sdk: ^3.7.0 + sdk: ^3.8.0 workspace: - packages/relic From 7e6e2dd887c0aa70bd4259731fa019b0e28daf7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Tue, 9 Dec 2025 16:50:07 +0100 Subject: [PATCH 03/14] build: Add README.md and CHANGELOG.md symlinks to package --- packages/relic/CHANGELOG.md | 1 + packages/relic/README.md | 1 + 2 files changed, 2 insertions(+) create mode 120000 packages/relic/CHANGELOG.md create mode 120000 packages/relic/README.md diff --git a/packages/relic/CHANGELOG.md b/packages/relic/CHANGELOG.md new file mode 120000 index 00000000..699cc9e7 --- /dev/null +++ b/packages/relic/CHANGELOG.md @@ -0,0 +1 @@ +../../CHANGELOG.md \ No newline at end of file diff --git a/packages/relic/README.md b/packages/relic/README.md new file mode 120000 index 00000000..fe840054 --- /dev/null +++ b/packages/relic/README.md @@ -0,0 +1 @@ +../../README.md \ No newline at end of file From fbe3f4ee7f0761cd7087a2a7de048ac45b94a07d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Tue, 9 Dec 2025 16:50:07 +0100 Subject: [PATCH 04/14] ci: Add dart pub get before formatting check --- .github/workflows/dart-tests.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/dart-tests.yaml b/.github/workflows/dart-tests.yaml index 26114689..af225833 100644 --- a/.github/workflows/dart-tests.yaml +++ b/.github/workflows/dart-tests.yaml @@ -41,6 +41,9 @@ jobs: key: ${{ runner.os }}-pub-cache-${{ matrix.dart_sdk }} restore-keys: ${{ runner.os }}-pub-cache- + - name: Install Dependencies + run: dart pub get + - name: Verify Formatting run: dart format --output=none --set-exit-if-changed . From 3175607b87cb02a3319e6f4ec060d7cc54c329e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Tue, 9 Dec 2025 17:31:34 +0100 Subject: [PATCH 05/14] feat: Extract relic_core package - Create packages/relic_core/ with platform-agnostic core functionality - Move body, context, headers, router, middleware, handler, etc. to relic_core - Update relic to depend on and re-export relic_core - Keep IO-specific code in relic (adapter/io, io/static, logger) - Update all imports throughout the codebase - Tests remain in relic package for now (to be moved in Phase 4) --- packages/relic/lib/io_adapter.dart | 2 + packages/relic/lib/relic.dart | 38 ++++------------ .../relic/lib/src/adapter/io/request.dart | 8 +--- .../relic/lib/src/adapter/io/response.dart | 3 +- .../lib/src/io/static/static_handler.dart | 3 +- packages/relic/pubspec.yaml | 11 +++-- .../test/adapter/connection_info_test.dart | 3 +- packages/relic/test/adapter/context_test.dart | 1 - .../test/body/body_infer_mime_type_test.dart | 3 +- .../relic/test/body/types/body_type_test.dart | 3 +- packages/relic/test/handler/cascade_test.dart | 1 - .../test/headers/headers_accessor_test.dart | 4 +- .../test/headers/mutable_headers_test.dart | 2 +- .../typed/x_forwarded_for_header_test.dart | 2 +- .../test/ip_address/endianness_test.dart | 3 +- .../test/ip_address/ip_address_cidr_test.dart | 2 +- .../test/ip_address/ip_address_test.dart | 2 +- .../test/ip_address/ipv4_address_test.dart | 2 +- .../test/ip_address/ipv6_address_test.dart | 2 +- .../isolated_object_close_test.dart | 2 +- .../isolated_object_create_test.dart | 2 +- .../isolated_object_evaluate_test.dart | 2 +- .../test/message/apply_headers_test.dart | 2 +- packages/relic/test/message/request_test.dart | 1 - .../test/middleware/log_middleware_test.dart | 1 - .../middleware/middleware_object_test.dart | 1 - .../middleware/routing_middleware_test.dart | 1 - packages/relic/test/path/path_param_test.dart | 1 - .../relic/test/query/query_param_test.dart | 1 - .../relic/test/relic_server_serve_test.dart | 1 - .../relic/test/router/lru_cache_test.dart | 2 +- .../test/router/normalized_path_test.dart | 2 +- .../test/router/path_trie_crud_test.dart | 3 +- .../test/router/path_trie_tail_test.dart | 3 +- .../relic/test/router/path_trie_test.dart | 3 +- .../relic/test/router/path_trie_use_test.dart | 3 +- .../test/router/path_trie_wildcard_test.dart | 3 +- .../test/router/router_handler_test.dart | 1 - .../relic/test/router/router_inject_test.dart | 1 - packages/relic/test/router/router_test.dart | 4 +- .../src/middleware/context_property_test.dart | 1 - .../test/static/alternative_root_test.dart | 1 - .../static/cache_busting_config_test.dart | 2 +- .../relic/test/static/symbolic_link_test.dart | 1 - packages/relic/test/static/test_util.dart | 2 - packages/relic/test/util/test_util.dart | 1 - packages/relic/test/util/util_test.dart | 2 +- .../test/web_socket/web_socket_test.dart | 2 +- packages/relic_core/lib/relic_core.dart | 39 ++++++++++++++++ .../lib/src/accessor/accessor.dart | 0 .../lib/src/adapter/adapter.dart | 0 .../lib/src/adapter/connection_info.dart | 0 .../lib/src/adapter/relic_web_socket.dart | 0 .../lib/src/body/body.dart | 0 .../lib/src/body/types/body_type.dart | 0 .../lib/src/body/types/mime_type.dart | 0 .../lib/src/context/message.dart | 0 .../lib/src/context/request.dart | 0 .../lib/src/context/response.dart | 0 .../lib/src/context/result.dart | 3 +- .../lib/src/handler/cascade.dart | 0 .../lib/src/handler/handler.dart | 0 .../lib/src/handler/pipeline.dart | 0 .../lib/src/headers/codec.dart | 0 .../headers/codecs/common_types_codecs.dart | 2 +- .../headers/exception/header_exception.dart | 0 .../extension/string_list_extensions.dart | 0 .../lib/src/headers/header_accessor.dart | 0 .../lib/src/headers/headers.dart | 3 +- .../lib/src/headers/mutable_headers.dart | 0 .../headers/standard_headers_extensions.dart | 0 .../typed/headers/accept_encoding_header.dart | 2 +- .../headers/typed/headers/accept_header.dart | 2 +- .../typed/headers/accept_language_header.dart | 2 +- .../typed/headers/accept_ranges_header.dart | 2 +- .../access_control_allow_headers_header.dart | 2 +- .../access_control_allow_methods_header.dart | 2 +- .../access_control_allow_origin_header.dart | 2 +- .../access_control_expose_headers_header.dart | 2 +- .../typed/headers/authentication_header.dart | 2 +- .../typed/headers/authorization_header.dart | 2 +- .../typed/headers/cache_control_header.dart | 2 +- .../typed/headers/clear_site_data_header.dart | 2 +- .../typed/headers/connection_header.dart | 2 +- .../headers/content_disposition_header.dart | 2 +- .../headers/content_encoding_header.dart | 2 +- .../headers/content_language_header.dart | 2 +- .../typed/headers/content_range_header.dart | 2 +- .../content_security_policy_header.dart | 2 +- .../headers/typed/headers/cookie_header.dart | 2 +- .../cross_origin_embedder_policy_header.dart | 2 +- .../cross_origin_opener_policy_header.dart | 2 +- .../cross_origin_resource_policy_header.dart | 2 +- .../typed/headers/etag_condition_header.dart | 2 +- .../headers/typed/headers/etag_header.dart | 2 +- .../headers/typed/headers/expect_header.dart | 2 +- .../typed/headers/forwarded_header.dart | 2 +- .../headers/typed/headers/from_header.dart | 2 +- .../headers/typed/headers/host_header.dart | 2 +- .../typed/headers/if_range_header.dart | 2 +- .../headers/permission_policy_header.dart | 2 +- .../headers/typed/headers/range_header.dart | 2 +- .../typed/headers/referrer_policy_header.dart | 2 +- .../typed/headers/retry_after_header.dart | 2 +- .../typed/headers/sec_fetch_dest_header.dart | 2 +- .../typed/headers/sec_fetch_mode_header.dart | 2 +- .../typed/headers/sec_fetch_site_header.dart | 2 +- .../typed/headers/set_cookie_header.dart | 3 +- .../strict_transport_security_header.dart | 2 +- .../src/headers/typed/headers/te_header.dart | 2 +- .../headers/transfer_encoding_header.dart | 2 +- .../headers/typed/headers/upgrade_header.dart | 2 +- .../typed/headers/util/cookie_util.dart | 0 .../headers/typed/headers/vary_header.dart | 2 +- .../typed/headers/wildcard_list_header.dart | 0 .../typed/headers/x_forwarded_for_header.dart | 2 +- .../lib/src/headers/typed/typed_headers.dart | 0 .../lib/src/ip_address/endianness.dart | 0 .../lib/src/ip_address/ip_address.dart | 0 .../lib/src/ip_address/ipv4_address.dart | 0 .../lib/src/ip_address/ipv6_address.dart | 0 .../lib/src/isolated_object.dart | 0 .../relic_core/lib/src/logger/logger.dart | 44 +++++++++++++++++++ .../lib/src/middleware/context_property.dart | 0 .../lib/src/middleware/middleware.dart | 2 +- .../src/middleware/middleware_extensions.dart | 0 .../lib/src/middleware/middleware_logger.dart | 3 +- .../lib/src/middleware/path_params.dart | 0 .../src/middleware/routing_middleware.dart | 0 .../lib/src/query/query_param.dart | 0 .../lib/src/relic_server.dart | 0 .../lib/src/router/lookup_result.dart | 0 .../lib/src/router/lru_cache.dart | 0 .../lib/src/router/method.dart | 0 .../lib/src/router/normalized_path.dart | 0 .../lib/src/router/path_trie.dart | 0 .../lib/src/router/relic_app.dart | 0 .../lib/src/router/router.dart | 5 +-- .../src/router/router_handler_extension.dart | 2 +- .../lib/src/util/util.dart | 0 packages/relic_core/pubspec.yaml | 30 +++++++++++++ pubspec.yaml | 1 + 142 files changed, 209 insertions(+), 159 deletions(-) create mode 100644 packages/relic_core/lib/relic_core.dart rename packages/{relic => relic_core}/lib/src/accessor/accessor.dart (100%) rename packages/{relic => relic_core}/lib/src/adapter/adapter.dart (100%) rename packages/{relic => relic_core}/lib/src/adapter/connection_info.dart (100%) rename packages/{relic => relic_core}/lib/src/adapter/relic_web_socket.dart (100%) rename packages/{relic => relic_core}/lib/src/body/body.dart (100%) rename packages/{relic => relic_core}/lib/src/body/types/body_type.dart (100%) rename packages/{relic => relic_core}/lib/src/body/types/mime_type.dart (100%) rename packages/{relic => relic_core}/lib/src/context/message.dart (100%) rename packages/{relic => relic_core}/lib/src/context/request.dart (100%) rename packages/{relic => relic_core}/lib/src/context/response.dart (100%) rename packages/{relic => relic_core}/lib/src/context/result.dart (96%) rename packages/{relic => relic_core}/lib/src/handler/cascade.dart (100%) rename packages/{relic => relic_core}/lib/src/handler/handler.dart (100%) rename packages/{relic => relic_core}/lib/src/handler/pipeline.dart (100%) rename packages/{relic => relic_core}/lib/src/headers/codec.dart (100%) rename packages/{relic => relic_core}/lib/src/headers/codecs/common_types_codecs.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/exception/header_exception.dart (100%) rename packages/{relic => relic_core}/lib/src/headers/extension/string_list_extensions.dart (100%) rename packages/{relic => relic_core}/lib/src/headers/header_accessor.dart (100%) rename packages/{relic => relic_core}/lib/src/headers/headers.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/mutable_headers.dart (100%) rename packages/{relic => relic_core}/lib/src/headers/standard_headers_extensions.dart (100%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/accept_encoding_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/accept_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/accept_language_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/accept_ranges_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/access_control_allow_headers_header.dart (97%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/access_control_allow_methods_header.dart (97%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/access_control_allow_origin_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/access_control_expose_headers_header.dart (97%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/authentication_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/authorization_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/cache_control_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/clear_site_data_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/connection_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/content_disposition_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/content_encoding_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/content_language_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/content_range_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/content_security_policy_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/cookie_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/cross_origin_embedder_policy_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/cross_origin_opener_policy_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/cross_origin_resource_policy_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/etag_condition_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/etag_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/expect_header.dart (97%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/forwarded_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/from_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/host_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/if_range_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/permission_policy_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/range_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/referrer_policy_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/retry_after_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/sec_fetch_dest_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/sec_fetch_mode_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/sec_fetch_site_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/set_cookie_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/strict_transport_security_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/te_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/transfer_encoding_header.dart (99%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/upgrade_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/util/cookie_util.dart (100%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/vary_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/wildcard_list_header.dart (100%) rename packages/{relic => relic_core}/lib/src/headers/typed/headers/x_forwarded_for_header.dart (98%) rename packages/{relic => relic_core}/lib/src/headers/typed/typed_headers.dart (100%) rename packages/{relic => relic_core}/lib/src/ip_address/endianness.dart (100%) rename packages/{relic => relic_core}/lib/src/ip_address/ip_address.dart (100%) rename packages/{relic => relic_core}/lib/src/ip_address/ipv4_address.dart (100%) rename packages/{relic => relic_core}/lib/src/ip_address/ipv6_address.dart (100%) rename packages/{relic => relic_core}/lib/src/isolated_object.dart (100%) create mode 100644 packages/relic_core/lib/src/logger/logger.dart rename packages/{relic => relic_core}/lib/src/middleware/context_property.dart (100%) rename packages/{relic => relic_core}/lib/src/middleware/middleware.dart (99%) rename packages/{relic => relic_core}/lib/src/middleware/middleware_extensions.dart (100%) rename packages/{relic => relic_core}/lib/src/middleware/middleware_logger.dart (97%) rename packages/{relic => relic_core}/lib/src/middleware/path_params.dart (100%) rename packages/{relic => relic_core}/lib/src/middleware/routing_middleware.dart (100%) rename packages/{relic => relic_core}/lib/src/query/query_param.dart (100%) rename packages/{relic => relic_core}/lib/src/relic_server.dart (100%) rename packages/{relic => relic_core}/lib/src/router/lookup_result.dart (100%) rename packages/{relic => relic_core}/lib/src/router/lru_cache.dart (100%) rename packages/{relic => relic_core}/lib/src/router/method.dart (100%) rename packages/{relic => relic_core}/lib/src/router/normalized_path.dart (100%) rename packages/{relic => relic_core}/lib/src/router/path_trie.dart (100%) rename packages/{relic => relic_core}/lib/src/router/relic_app.dart (100%) rename packages/{relic => relic_core}/lib/src/router/router.dart (99%) rename packages/{relic => relic_core}/lib/src/router/router_handler_extension.dart (97%) rename packages/{relic => relic_core}/lib/src/util/util.dart (100%) create mode 100644 packages/relic_core/pubspec.yaml diff --git a/packages/relic/lib/io_adapter.dart b/packages/relic/lib/io_adapter.dart index c6faada4..a639fe23 100644 --- a/packages/relic/lib/io_adapter.dart +++ b/packages/relic/lib/io_adapter.dart @@ -1,3 +1,5 @@ export 'src/adapter/io/bind_http_server.dart'; +export 'src/adapter/io/http_response_extension.dart'; export 'src/adapter/io/io_adapter.dart'; +export 'src/adapter/io/io_relic_web_socket.dart'; export 'src/adapter/io/io_serve.dart'; diff --git a/packages/relic/lib/relic.dart b/packages/relic/lib/relic.dart index df0868fb..b26aac96 100644 --- a/packages/relic/lib/relic.dart +++ b/packages/relic/lib/relic.dart @@ -1,32 +1,12 @@ +/// Relic web server framework. +/// +/// This package re-exports [relic_core] and adds dart:io specific functionality. library; -export 'src/accessor/accessor.dart'; -export 'src/adapter/adapter.dart'; -export 'src/adapter/relic_web_socket.dart'; -export 'src/body/body.dart' show Body, MaxBodySizeExceeded; -export 'src/body/types/body_type.dart' show BodyType; -export 'src/body/types/mime_type.dart' show MimeType; -export 'src/context/result.dart' hide RequestInternal; -export 'src/handler/cascade.dart' show Cascade; -export 'src/handler/handler.dart'; -export 'src/handler/pipeline.dart' show Pipeline; -export 'src/headers/exception/header_exception.dart' - show HeaderException, InvalidHeaderException, MissingHeaderException; -export 'src/headers/header_accessor.dart'; -export 'src/headers/headers.dart'; -export 'src/headers/standard_headers_extensions.dart'; -export 'src/headers/typed/typed_headers.dart'; -export 'src/io/static/cache_busting_config.dart' show CacheBustingConfig; +// Re-export all of relic_core +export 'package:relic_core/relic_core.dart'; + +// dart:io specific exports +export 'src/io/static/cache_busting_config.dart'; +export 'src/io/static/extension/datetime_extension.dart'; export 'src/io/static/static_handler.dart'; -export 'src/ip_address/ip_address.dart'; -export 'src/middleware/context_property.dart'; -export 'src/middleware/middleware.dart'; -export 'src/middleware/middleware_extensions.dart' show MiddlewareExtensions; -export 'src/middleware/middleware_logger.dart' show logRequests; -export 'src/middleware/routing_middleware.dart'; -export 'src/query/query_param.dart'; -export 'src/relic_server.dart'; -export 'src/router/lookup_result.dart'; -export 'src/router/method.dart'; -export 'src/router/router.dart'; -export 'src/router/router_handler_extension.dart'; diff --git a/packages/relic/lib/src/adapter/io/request.dart b/packages/relic/lib/src/adapter/io/request.dart index 0a05aa74..a9c66785 100644 --- a/packages/relic/lib/src/adapter/io/request.dart +++ b/packages/relic/lib/src/adapter/io/request.dart @@ -1,13 +1,7 @@ import 'dart:convert'; import 'dart:io' as io; -import '../../body/body.dart'; -import '../../body/types/mime_type.dart'; -import '../../context/result.dart'; -import '../../headers/headers.dart'; -import '../../ip_address/ip_address.dart'; -import '../../router/method.dart'; -import '../connection_info.dart'; +import 'package:relic_core/relic_core.dart'; /// Creates a new [Request] from an [io.HttpRequest]. Request fromHttpRequest(final io.HttpRequest request) { diff --git a/packages/relic/lib/src/adapter/io/response.dart b/packages/relic/lib/src/adapter/io/response.dart index dc3a42ff..a8a74c46 100644 --- a/packages/relic/lib/src/adapter/io/response.dart +++ b/packages/relic/lib/src/adapter/io/response.dart @@ -1,8 +1,7 @@ import 'dart:io'; -import '../../context/result.dart'; +import 'package:relic_core/relic_core.dart'; -import '../../headers/standard_headers_extensions.dart'; import 'http_response_extension.dart'; extension ResponseExIo on Response { diff --git a/packages/relic/lib/src/io/static/static_handler.dart b/packages/relic/lib/src/io/static/static_handler.dart index 2afeb122..e7e770aa 100644 --- a/packages/relic/lib/src/io/static/static_handler.dart +++ b/packages/relic/lib/src/io/static/static_handler.dart @@ -8,9 +8,8 @@ import 'dart:typed_data'; import 'package:crypto/crypto.dart'; import 'package:mime/mime.dart'; import 'package:path/path.dart' as p; +import 'package:relic_core/relic_core.dart'; -import '../../../relic.dart'; -import '../../router/lru_cache.dart'; import 'cache_busting_config.dart'; /// The default resolver for MIME types based on file extensions. diff --git a/packages/relic/pubspec.yaml b/packages/relic/pubspec.yaml index d7314e02..ba2537a1 100644 --- a/packages/relic/pubspec.yaml +++ b/packages/relic/pubspec.yaml @@ -15,33 +15,32 @@ environment: resolution: workspace dependencies: - async: ^2.11.0 - collection: ^1.18.0 - convert: ^3.1.1 crypto: ^3.0.0 - http_parser: ^4.0.2 - meta: ^1.15.0 mime: ">=1.0.6 <3.0.0" path: ^1.8.3 + relic_core: ^0.13.1 stack_trace: ^1.10.0 stream_channel: ^2.1.1 vm_service: ^15.0.0 web_socket: ^1.0.1 - web_socket_channel: ^3.0.3 dev_dependencies: + async: ^2.11.0 benchmark_harness: ^2.3.1 cli_tools: ^0.9.0 config: ^0.8.3 git: ^2.2.1 http: ^1.1.0 + http_parser: ^4.0.2 lints: ">=5.0.0 <7.0.0" + meta: ^1.15.0 mockito: ^5.4.4 routingkit: ^5.1.2 serverpod_lints: ^3.0.0 spanner: ^1.0.5 test: ^1.25.10 test_descriptor: ^2.0.1 + web_socket_channel: ^3.0.3 # The following are not used directly, but are included transitively. # Due to bad semver hygiene we need to bound the versions higher than # our direct dependencies indicate. diff --git a/packages/relic/test/adapter/connection_info_test.dart b/packages/relic/test/adapter/connection_info_test.dart index 5c9490e0..bf2bc38f 100644 --- a/packages/relic/test/adapter/connection_info_test.dart +++ b/packages/relic/test/adapter/connection_info_test.dart @@ -1,5 +1,4 @@ -import 'package:relic/src/adapter/connection_info.dart'; -import 'package:relic/src/ip_address/ip_address.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; import '../util/test_util.dart'; diff --git a/packages/relic/test/adapter/context_test.dart b/packages/relic/test/adapter/context_test.dart index 89e09352..3b62acea 100644 --- a/packages/relic/test/adapter/context_test.dart +++ b/packages/relic/test/adapter/context_test.dart @@ -1,5 +1,4 @@ import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/body/body_infer_mime_type_test.dart b/packages/relic/test/body/body_infer_mime_type_test.dart index f08e6d5e..e118d6b8 100644 --- a/packages/relic/test/body/body_infer_mime_type_test.dart +++ b/packages/relic/test/body/body_infer_mime_type_test.dart @@ -1,8 +1,7 @@ import 'dart:convert'; import 'dart:typed_data'; -import 'package:relic/src/body/body.dart'; -import 'package:relic/src/body/types/mime_type.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/body/types/body_type_test.dart b/packages/relic/test/body/types/body_type_test.dart index 7c568c7b..cd40cb89 100644 --- a/packages/relic/test/body/types/body_type_test.dart +++ b/packages/relic/test/body/types/body_type_test.dart @@ -1,7 +1,6 @@ import 'dart:convert'; -import 'package:relic/src/body/types/body_type.dart'; -import 'package:relic/src/body/types/mime_type.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/handler/cascade_test.dart b/packages/relic/test/handler/cascade_test.dart index a6b06d7a..9114f44b 100644 --- a/packages/relic/test/handler/cascade_test.dart +++ b/packages/relic/test/handler/cascade_test.dart @@ -1,5 +1,4 @@ import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; import 'package:test/test.dart'; import '../util/test_util.dart'; diff --git a/packages/relic/test/headers/headers_accessor_test.dart b/packages/relic/test/headers/headers_accessor_test.dart index 63d8823d..46718301 100644 --- a/packages/relic/test/headers/headers_accessor_test.dart +++ b/packages/relic/test/headers/headers_accessor_test.dart @@ -1,6 +1,4 @@ -import 'package:relic/src/headers/codecs/common_types_codecs.dart'; -import 'package:relic/src/headers/header_accessor.dart'; -import 'package:relic/src/headers/headers.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; import 'headers_test_utils.dart'; diff --git a/packages/relic/test/headers/mutable_headers_test.dart b/packages/relic/test/headers/mutable_headers_test.dart index c542d01a..6b2fc556 100644 --- a/packages/relic/test/headers/mutable_headers_test.dart +++ b/packages/relic/test/headers/mutable_headers_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/src/headers/headers.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/headers/typed/x_forwarded_for_header_test.dart b/packages/relic/test/headers/typed/x_forwarded_for_header_test.dart index 57ccdf9e..373c7768 100644 --- a/packages/relic/test/headers/typed/x_forwarded_for_header_test.dart +++ b/packages/relic/test/headers/typed/x_forwarded_for_header_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/src/headers/typed/headers/x_forwarded_for_header.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/ip_address/endianness_test.dart b/packages/relic/test/ip_address/endianness_test.dart index bb491640..dbf4331b 100644 --- a/packages/relic/test/ip_address/endianness_test.dart +++ b/packages/relic/test/ip_address/endianness_test.dart @@ -1,7 +1,6 @@ import 'dart:typed_data'; -import 'package:relic/src/ip_address/endianness.dart'; -import 'package:relic/src/ip_address/ip_address.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/ip_address/ip_address_cidr_test.dart b/packages/relic/test/ip_address/ip_address_cidr_test.dart index 5156db81..8165e277 100644 --- a/packages/relic/test/ip_address/ip_address_cidr_test.dart +++ b/packages/relic/test/ip_address/ip_address_cidr_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/src/ip_address/ip_address.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/ip_address/ip_address_test.dart b/packages/relic/test/ip_address/ip_address_test.dart index 8d1b8514..b9ea96cf 100644 --- a/packages/relic/test/ip_address/ip_address_test.dart +++ b/packages/relic/test/ip_address/ip_address_test.dart @@ -1,6 +1,6 @@ import 'dart:typed_data'; -import 'package:relic/src/ip_address/ip_address.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/ip_address/ipv4_address_test.dart b/packages/relic/test/ip_address/ipv4_address_test.dart index 67de5fe1..d7a5044d 100644 --- a/packages/relic/test/ip_address/ipv4_address_test.dart +++ b/packages/relic/test/ip_address/ipv4_address_test.dart @@ -1,6 +1,6 @@ import 'dart:typed_data'; -import 'package:relic/src/ip_address/ip_address.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/ip_address/ipv6_address_test.dart b/packages/relic/test/ip_address/ipv6_address_test.dart index 6868b903..db7b3477 100644 --- a/packages/relic/test/ip_address/ipv6_address_test.dart +++ b/packages/relic/test/ip_address/ipv6_address_test.dart @@ -1,6 +1,6 @@ import 'dart:typed_data'; -import 'package:relic/src/ip_address/ip_address.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/isolated_object/isolated_object_close_test.dart b/packages/relic/test/isolated_object/isolated_object_close_test.dart index 4d4c422a..ce980ebe 100644 --- a/packages/relic/test/isolated_object/isolated_object_close_test.dart +++ b/packages/relic/test/isolated_object/isolated_object_close_test.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:relic/src/isolated_object.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/isolated_object/isolated_object_create_test.dart b/packages/relic/test/isolated_object/isolated_object_create_test.dart index bd02c63a..cbed535e 100644 --- a/packages/relic/test/isolated_object/isolated_object_create_test.dart +++ b/packages/relic/test/isolated_object/isolated_object_create_test.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:relic/src/isolated_object.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/isolated_object/isolated_object_evaluate_test.dart b/packages/relic/test/isolated_object/isolated_object_evaluate_test.dart index 36bce4b3..ad88665f 100644 --- a/packages/relic/test/isolated_object/isolated_object_evaluate_test.dart +++ b/packages/relic/test/isolated_object/isolated_object_evaluate_test.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'dart:isolate'; -import 'package:relic/src/isolated_object.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/message/apply_headers_test.dart b/packages/relic/test/message/apply_headers_test.dart index afd2b0e3..78a04de9 100644 --- a/packages/relic/test/message/apply_headers_test.dart +++ b/packages/relic/test/message/apply_headers_test.dart @@ -5,8 +5,8 @@ import 'dart:typed_data'; import 'package:http_parser/http_parser.dart'; import 'package:mockito/mockito.dart'; +import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; -import 'package:relic/src/adapter/io/http_response_extension.dart'; import 'package:test/test.dart'; import '../util/test_util.dart'; diff --git a/packages/relic/test/message/request_test.dart b/packages/relic/test/message/request_test.dart index 544203c3..0608de2f 100644 --- a/packages/relic/test/message/request_test.dart +++ b/packages/relic/test/message/request_test.dart @@ -3,7 +3,6 @@ import 'dart:typed_data'; import 'package:http_parser/http_parser.dart'; import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; import 'package:test/test.dart'; import '../util/test_util.dart'; diff --git a/packages/relic/test/middleware/log_middleware_test.dart b/packages/relic/test/middleware/log_middleware_test.dart index 246bd6c7..7c8589ca 100644 --- a/packages/relic/test/middleware/log_middleware_test.dart +++ b/packages/relic/test/middleware/log_middleware_test.dart @@ -1,5 +1,4 @@ import 'package:relic/relic.dart'; -import 'package:relic/src/logger/logger.dart'; import 'package:test/test.dart'; import '../util/test_util.dart'; diff --git a/packages/relic/test/middleware/middleware_object_test.dart b/packages/relic/test/middleware/middleware_object_test.dart index d76cc2c6..5134fecf 100644 --- a/packages/relic/test/middleware/middleware_object_test.dart +++ b/packages/relic/test/middleware/middleware_object_test.dart @@ -1,5 +1,4 @@ import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/middleware/routing_middleware_test.dart b/packages/relic/test/middleware/routing_middleware_test.dart index 887a22d7..3a3c4a52 100644 --- a/packages/relic/test/middleware/routing_middleware_test.dart +++ b/packages/relic/test/middleware/routing_middleware_test.dart @@ -1,5 +1,4 @@ import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; import 'package:test/test.dart'; import '../util/test_util.dart'; diff --git a/packages/relic/test/path/path_param_test.dart b/packages/relic/test/path/path_param_test.dart index b5a5730d..6c5a195a 100644 --- a/packages/relic/test/path/path_param_test.dart +++ b/packages/relic/test/path/path_param_test.dart @@ -1,5 +1,4 @@ import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; import 'package:test/test.dart'; import '../util/test_util.dart'; diff --git a/packages/relic/test/query/query_param_test.dart b/packages/relic/test/query/query_param_test.dart index f3a2c96c..0615489e 100644 --- a/packages/relic/test/query/query_param_test.dart +++ b/packages/relic/test/query/query_param_test.dart @@ -1,5 +1,4 @@ import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; import 'package:test/test.dart'; import '../util/test_util.dart'; diff --git a/packages/relic/test/relic_server_serve_test.dart b/packages/relic/test/relic_server_serve_test.dart index 20bf0db4..4fa6a82e 100644 --- a/packages/relic/test/relic_server_serve_test.dart +++ b/packages/relic/test/relic_server_serve_test.dart @@ -7,7 +7,6 @@ import 'package:async/async.dart'; import 'package:http/http.dart' as http; import 'package:http_parser/http_parser.dart' as parser; import 'package:relic/relic.dart'; -import 'package:relic/src/headers/codecs/common_types_codecs.dart'; import 'package:test/test.dart'; import 'package:web_socket/web_socket.dart'; diff --git a/packages/relic/test/router/lru_cache_test.dart b/packages/relic/test/router/lru_cache_test.dart index 757964e1..cb098f79 100644 --- a/packages/relic/test/router/lru_cache_test.dart +++ b/packages/relic/test/router/lru_cache_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/src/router/lru_cache.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/normalized_path_test.dart b/packages/relic/test/router/normalized_path_test.dart index 192f3609..05823095 100644 --- a/packages/relic/test/router/normalized_path_test.dart +++ b/packages/relic/test/router/normalized_path_test.dart @@ -1,5 +1,5 @@ import 'package:mockito/mockito.dart'; -import 'package:relic/src/router/normalized_path.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/path_trie_crud_test.dart b/packages/relic/test/router/path_trie_crud_test.dart index d45371b9..82af5a7f 100644 --- a/packages/relic/test/router/path_trie_crud_test.dart +++ b/packages/relic/test/router/path_trie_crud_test.dart @@ -1,5 +1,4 @@ -import 'package:relic/src/router/normalized_path.dart'; -import 'package:relic/src/router/path_trie.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/path_trie_tail_test.dart b/packages/relic/test/router/path_trie_tail_test.dart index 20c8fb85..6538a85a 100644 --- a/packages/relic/test/router/path_trie_tail_test.dart +++ b/packages/relic/test/router/path_trie_tail_test.dart @@ -1,5 +1,4 @@ -import 'package:relic/src/router/normalized_path.dart'; -import 'package:relic/src/router/path_trie.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/path_trie_test.dart b/packages/relic/test/router/path_trie_test.dart index 1818e629..8d34a669 100644 --- a/packages/relic/test/router/path_trie_test.dart +++ b/packages/relic/test/router/path_trie_test.dart @@ -1,5 +1,4 @@ -import 'package:relic/src/router/normalized_path.dart'; -import 'package:relic/src/router/path_trie.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/path_trie_use_test.dart b/packages/relic/test/router/path_trie_use_test.dart index 7e3e3f36..149f030a 100644 --- a/packages/relic/test/router/path_trie_use_test.dart +++ b/packages/relic/test/router/path_trie_use_test.dart @@ -1,5 +1,4 @@ -import 'package:relic/src/router/normalized_path.dart'; -import 'package:relic/src/router/path_trie.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/path_trie_wildcard_test.dart b/packages/relic/test/router/path_trie_wildcard_test.dart index 5f53aeef..10bf5ad6 100644 --- a/packages/relic/test/router/path_trie_wildcard_test.dart +++ b/packages/relic/test/router/path_trie_wildcard_test.dart @@ -1,5 +1,4 @@ -import 'package:relic/src/router/normalized_path.dart'; -import 'package:relic/src/router/path_trie.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/router_handler_test.dart b/packages/relic/test/router/router_handler_test.dart index 6aac5272..665cdbf8 100644 --- a/packages/relic/test/router/router_handler_test.dart +++ b/packages/relic/test/router/router_handler_test.dart @@ -1,5 +1,4 @@ import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; import 'package:test/test.dart'; Request _request( diff --git a/packages/relic/test/router/router_inject_test.dart b/packages/relic/test/router/router_inject_test.dart index 81604b1a..1493f502 100644 --- a/packages/relic/test/router/router_inject_test.dart +++ b/packages/relic/test/router/router_inject_test.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/router_test.dart b/packages/relic/test/router/router_test.dart index b59e0acf..13354941 100644 --- a/packages/relic/test/router/router_test.dart +++ b/packages/relic/test/router/router_test.dart @@ -1,6 +1,4 @@ -import 'package:relic/src/router/lookup_result.dart'; -import 'package:relic/src/router/method.dart'; -import 'package:relic/src/router/router.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/src/middleware/context_property_test.dart b/packages/relic/test/src/middleware/context_property_test.dart index e1e759b4..b1e9999c 100644 --- a/packages/relic/test/src/middleware/context_property_test.dart +++ b/packages/relic/test/src/middleware/context_property_test.dart @@ -1,5 +1,4 @@ import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; import 'package:test/test.dart'; Request _request() { diff --git a/packages/relic/test/static/alternative_root_test.dart b/packages/relic/test/static/alternative_root_test.dart index 0063ccc2..1f713edc 100644 --- a/packages/relic/test/static/alternative_root_test.dart +++ b/packages/relic/test/static/alternative_root_test.dart @@ -1,7 +1,6 @@ import 'dart:io'; import 'package:relic/relic.dart'; -import 'package:relic/src/io/static/static_handler.dart'; import 'package:test/test.dart'; import 'package:test_descriptor/test_descriptor.dart' as d; diff --git a/packages/relic/test/static/cache_busting_config_test.dart b/packages/relic/test/static/cache_busting_config_test.dart index c10603bc..d2509b76 100644 --- a/packages/relic/test/static/cache_busting_config_test.dart +++ b/packages/relic/test/static/cache_busting_config_test.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:path/path.dart' as p; -import 'package:relic/src/io/static/cache_busting_config.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; import 'package:test_descriptor/test_descriptor.dart' as d; diff --git a/packages/relic/test/static/symbolic_link_test.dart b/packages/relic/test/static/symbolic_link_test.dart index bc5899b5..f63442ab 100644 --- a/packages/relic/test/static/symbolic_link_test.dart +++ b/packages/relic/test/static/symbolic_link_test.dart @@ -2,7 +2,6 @@ import 'dart:io'; import 'package:path/path.dart' as p; import 'package:relic/relic.dart'; -import 'package:relic/src/io/static/static_handler.dart'; import 'package:test/test.dart'; import 'package:test_descriptor/test_descriptor.dart' as d; diff --git a/packages/relic/test/static/test_util.dart b/packages/relic/test/static/test_util.dart index a18d82df..f76fd891 100644 --- a/packages/relic/test/static/test_util.dart +++ b/packages/relic/test/static/test_util.dart @@ -1,8 +1,6 @@ import 'dart:async'; import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; -import 'package:relic/src/io/static/extension/datetime_extension.dart'; import 'package:test/test.dart'; /// Makes a simple GET request to [handler] and returns the result. diff --git a/packages/relic/test/util/test_util.dart b/packages/relic/test/util/test_util.dart index 551778ed..2867ac6d 100644 --- a/packages/relic/test/util/test_util.dart +++ b/packages/relic/test/util/test_util.dart @@ -5,7 +5,6 @@ import 'dart:io'; import 'package:meta/meta.dart'; import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; import 'package:test/test.dart'; final helloBytes = utf8.encode('hello,'); diff --git a/packages/relic/test/util/util_test.dart b/packages/relic/test/util/util_test.dart index dc8090f3..3cb9a25a 100644 --- a/packages/relic/test/util/util_test.dart +++ b/packages/relic/test/util/util_test.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:relic/src/util/util.dart'; +import 'package:relic/relic.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/web_socket/web_socket_test.dart b/packages/relic/test/web_socket/web_socket_test.dart index 701d1aa5..cc6ba277 100644 --- a/packages/relic/test/web_socket/web_socket_test.dart +++ b/packages/relic/test/web_socket/web_socket_test.dart @@ -4,8 +4,8 @@ import 'dart:io' as io; import 'dart:isolate'; import 'dart:typed_data'; +import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; -import 'package:relic/src/adapter/io/io_relic_web_socket.dart'; import 'package:test/test.dart'; import 'package:web_socket/web_socket.dart'; import 'package:web_socket_channel/web_socket_channel.dart'; diff --git a/packages/relic_core/lib/relic_core.dart b/packages/relic_core/lib/relic_core.dart new file mode 100644 index 00000000..4b788626 --- /dev/null +++ b/packages/relic_core/lib/relic_core.dart @@ -0,0 +1,39 @@ +library; + +export 'src/accessor/accessor.dart'; +export 'src/adapter/adapter.dart'; +export 'src/adapter/connection_info.dart'; +export 'src/adapter/relic_web_socket.dart'; +export 'src/body/body.dart' show Body, MaxBodySizeExceeded; +export 'src/body/types/body_type.dart' show BodyType; +export 'src/body/types/mime_type.dart' show MimeType; +export 'src/context/result.dart'; +export 'src/handler/cascade.dart' show Cascade; +export 'src/handler/handler.dart'; +export 'src/handler/pipeline.dart' show Pipeline; +export 'src/headers/codecs/common_types_codecs.dart'; +export 'src/headers/exception/header_exception.dart' + show HeaderException, InvalidHeaderException, MissingHeaderException; +export 'src/headers/header_accessor.dart'; +export 'src/headers/headers.dart'; +export 'src/headers/standard_headers_extensions.dart'; +export 'src/headers/typed/typed_headers.dart'; +export 'src/ip_address/endianness.dart'; +export 'src/ip_address/ip_address.dart'; +export 'src/isolated_object.dart'; +export 'src/logger/logger.dart'; +export 'src/middleware/context_property.dart'; +export 'src/middleware/middleware.dart'; +export 'src/middleware/middleware_extensions.dart' show MiddlewareExtensions; +export 'src/middleware/middleware_logger.dart' show logRequests; +export 'src/middleware/routing_middleware.dart'; +export 'src/query/query_param.dart'; +export 'src/relic_server.dart'; +export 'src/util/util.dart'; +export 'src/router/lookup_result.dart'; +export 'src/router/lru_cache.dart'; +export 'src/router/method.dart'; +export 'src/router/normalized_path.dart'; +export 'src/router/path_trie.dart'; +export 'src/router/router.dart'; +export 'src/router/router_handler_extension.dart'; diff --git a/packages/relic/lib/src/accessor/accessor.dart b/packages/relic_core/lib/src/accessor/accessor.dart similarity index 100% rename from packages/relic/lib/src/accessor/accessor.dart rename to packages/relic_core/lib/src/accessor/accessor.dart diff --git a/packages/relic/lib/src/adapter/adapter.dart b/packages/relic_core/lib/src/adapter/adapter.dart similarity index 100% rename from packages/relic/lib/src/adapter/adapter.dart rename to packages/relic_core/lib/src/adapter/adapter.dart diff --git a/packages/relic/lib/src/adapter/connection_info.dart b/packages/relic_core/lib/src/adapter/connection_info.dart similarity index 100% rename from packages/relic/lib/src/adapter/connection_info.dart rename to packages/relic_core/lib/src/adapter/connection_info.dart diff --git a/packages/relic/lib/src/adapter/relic_web_socket.dart b/packages/relic_core/lib/src/adapter/relic_web_socket.dart similarity index 100% rename from packages/relic/lib/src/adapter/relic_web_socket.dart rename to packages/relic_core/lib/src/adapter/relic_web_socket.dart diff --git a/packages/relic/lib/src/body/body.dart b/packages/relic_core/lib/src/body/body.dart similarity index 100% rename from packages/relic/lib/src/body/body.dart rename to packages/relic_core/lib/src/body/body.dart diff --git a/packages/relic/lib/src/body/types/body_type.dart b/packages/relic_core/lib/src/body/types/body_type.dart similarity index 100% rename from packages/relic/lib/src/body/types/body_type.dart rename to packages/relic_core/lib/src/body/types/body_type.dart diff --git a/packages/relic/lib/src/body/types/mime_type.dart b/packages/relic_core/lib/src/body/types/mime_type.dart similarity index 100% rename from packages/relic/lib/src/body/types/mime_type.dart rename to packages/relic_core/lib/src/body/types/mime_type.dart diff --git a/packages/relic/lib/src/context/message.dart b/packages/relic_core/lib/src/context/message.dart similarity index 100% rename from packages/relic/lib/src/context/message.dart rename to packages/relic_core/lib/src/context/message.dart diff --git a/packages/relic/lib/src/context/request.dart b/packages/relic_core/lib/src/context/request.dart similarity index 100% rename from packages/relic/lib/src/context/request.dart rename to packages/relic_core/lib/src/context/request.dart diff --git a/packages/relic/lib/src/context/response.dart b/packages/relic_core/lib/src/context/response.dart similarity index 100% rename from packages/relic/lib/src/context/response.dart rename to packages/relic_core/lib/src/context/response.dart diff --git a/packages/relic/lib/src/context/result.dart b/packages/relic_core/lib/src/context/result.dart similarity index 96% rename from packages/relic/lib/src/context/result.dart rename to packages/relic_core/lib/src/context/result.dart index 10c86020..5bc79921 100644 --- a/packages/relic/lib/src/context/result.dart +++ b/packages/relic_core/lib/src/context/result.dart @@ -1,8 +1,7 @@ import 'dart:convert'; import 'dart:typed_data'; -import '../../relic.dart'; -import '../adapter/connection_info.dart'; +import '../../relic_core.dart'; part 'message.dart'; part 'request.dart'; diff --git a/packages/relic/lib/src/handler/cascade.dart b/packages/relic_core/lib/src/handler/cascade.dart similarity index 100% rename from packages/relic/lib/src/handler/cascade.dart rename to packages/relic_core/lib/src/handler/cascade.dart diff --git a/packages/relic/lib/src/handler/handler.dart b/packages/relic_core/lib/src/handler/handler.dart similarity index 100% rename from packages/relic/lib/src/handler/handler.dart rename to packages/relic_core/lib/src/handler/handler.dart diff --git a/packages/relic/lib/src/handler/pipeline.dart b/packages/relic_core/lib/src/handler/pipeline.dart similarity index 100% rename from packages/relic/lib/src/handler/pipeline.dart rename to packages/relic_core/lib/src/handler/pipeline.dart diff --git a/packages/relic/lib/src/headers/codec.dart b/packages/relic_core/lib/src/headers/codec.dart similarity index 100% rename from packages/relic/lib/src/headers/codec.dart rename to packages/relic_core/lib/src/headers/codec.dart diff --git a/packages/relic/lib/src/headers/codecs/common_types_codecs.dart b/packages/relic_core/lib/src/headers/codecs/common_types_codecs.dart similarity index 99% rename from packages/relic/lib/src/headers/codecs/common_types_codecs.dart rename to packages/relic_core/lib/src/headers/codecs/common_types_codecs.dart index f52ad743..02773ac5 100644 --- a/packages/relic/lib/src/headers/codecs/common_types_codecs.dart +++ b/packages/relic_core/lib/src/headers/codecs/common_types_codecs.dart @@ -2,7 +2,7 @@ import 'dart:collection'; import 'package:http_parser/http_parser.dart'; -import '../../../relic.dart'; +import '../../../relic_core.dart'; import '../extension/string_list_extensions.dart'; /// Parses a URI from the given [value] and returns it as a `Uri`. diff --git a/packages/relic/lib/src/headers/exception/header_exception.dart b/packages/relic_core/lib/src/headers/exception/header_exception.dart similarity index 100% rename from packages/relic/lib/src/headers/exception/header_exception.dart rename to packages/relic_core/lib/src/headers/exception/header_exception.dart diff --git a/packages/relic/lib/src/headers/extension/string_list_extensions.dart b/packages/relic_core/lib/src/headers/extension/string_list_extensions.dart similarity index 100% rename from packages/relic/lib/src/headers/extension/string_list_extensions.dart rename to packages/relic_core/lib/src/headers/extension/string_list_extensions.dart diff --git a/packages/relic/lib/src/headers/header_accessor.dart b/packages/relic_core/lib/src/headers/header_accessor.dart similarity index 100% rename from packages/relic/lib/src/headers/header_accessor.dart rename to packages/relic_core/lib/src/headers/header_accessor.dart diff --git a/packages/relic/lib/src/headers/headers.dart b/packages/relic_core/lib/src/headers/headers.dart similarity index 99% rename from packages/relic/lib/src/headers/headers.dart rename to packages/relic_core/lib/src/headers/headers.dart index de1c7d47..73069519 100644 --- a/packages/relic/lib/src/headers/headers.dart +++ b/packages/relic_core/lib/src/headers/headers.dart @@ -2,8 +2,7 @@ import 'dart:collection'; import 'package:http_parser/http_parser.dart'; -import '../../relic.dart'; -import 'codecs/common_types_codecs.dart'; +import '../../relic_core.dart'; part 'mutable_headers.dart'; diff --git a/packages/relic/lib/src/headers/mutable_headers.dart b/packages/relic_core/lib/src/headers/mutable_headers.dart similarity index 100% rename from packages/relic/lib/src/headers/mutable_headers.dart rename to packages/relic_core/lib/src/headers/mutable_headers.dart diff --git a/packages/relic/lib/src/headers/standard_headers_extensions.dart b/packages/relic_core/lib/src/headers/standard_headers_extensions.dart similarity index 100% rename from packages/relic/lib/src/headers/standard_headers_extensions.dart rename to packages/relic_core/lib/src/headers/standard_headers_extensions.dart diff --git a/packages/relic/lib/src/headers/typed/headers/accept_encoding_header.dart b/packages/relic_core/lib/src/headers/typed/headers/accept_encoding_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/accept_encoding_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/accept_encoding_header.dart index 84962cfb..a46b48ee 100644 --- a/packages/relic/lib/src/headers/typed/headers/accept_encoding_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/accept_encoding_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import 'wildcard_list_header.dart'; /// A class representing the HTTP Accept-Encoding header. diff --git a/packages/relic/lib/src/headers/typed/headers/accept_header.dart b/packages/relic_core/lib/src/headers/typed/headers/accept_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/accept_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/accept_header.dart index ee4c89e1..6b42746d 100644 --- a/packages/relic/lib/src/headers/typed/headers/accept_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/accept_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP Accept header. diff --git a/packages/relic/lib/src/headers/typed/headers/accept_language_header.dart b/packages/relic_core/lib/src/headers/typed/headers/accept_language_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/accept_language_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/accept_language_header.dart index f857faa5..71598bcb 100644 --- a/packages/relic/lib/src/headers/typed/headers/accept_language_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/accept_language_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import 'wildcard_list_header.dart'; /// A class representing the HTTP Accept-Language header. diff --git a/packages/relic/lib/src/headers/typed/headers/accept_ranges_header.dart b/packages/relic_core/lib/src/headers/typed/headers/accept_ranges_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/accept_ranges_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/accept_ranges_header.dart index c8c03492..fde94f9e 100644 --- a/packages/relic/lib/src/headers/typed/headers/accept_ranges_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/accept_ranges_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Accept-Ranges header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/access_control_allow_headers_header.dart b/packages/relic_core/lib/src/headers/typed/headers/access_control_allow_headers_header.dart similarity index 97% rename from packages/relic/lib/src/headers/typed/headers/access_control_allow_headers_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/access_control_allow_headers_header.dart index f9190e89..968ba42f 100644 --- a/packages/relic/lib/src/headers/typed/headers/access_control_allow_headers_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/access_control_allow_headers_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import 'wildcard_list_header.dart'; /// A class representing the HTTP Access-Control-Allow-Headers header. diff --git a/packages/relic/lib/src/headers/typed/headers/access_control_allow_methods_header.dart b/packages/relic_core/lib/src/headers/typed/headers/access_control_allow_methods_header.dart similarity index 97% rename from packages/relic/lib/src/headers/typed/headers/access_control_allow_methods_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/access_control_allow_methods_header.dart index 15f16013..d421aae8 100644 --- a/packages/relic/lib/src/headers/typed/headers/access_control_allow_methods_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/access_control_allow_methods_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import 'wildcard_list_header.dart'; /// A class representing the HTTP Access-Control-Allow-Methods header. diff --git a/packages/relic/lib/src/headers/typed/headers/access_control_allow_origin_header.dart b/packages/relic_core/lib/src/headers/typed/headers/access_control_allow_origin_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/access_control_allow_origin_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/access_control_allow_origin_header.dart index 20de333e..c5217d03 100644 --- a/packages/relic/lib/src/headers/typed/headers/access_control_allow_origin_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/access_control_allow_origin_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Access-Control-Allow-Origin header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/access_control_expose_headers_header.dart b/packages/relic_core/lib/src/headers/typed/headers/access_control_expose_headers_header.dart similarity index 97% rename from packages/relic/lib/src/headers/typed/headers/access_control_expose_headers_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/access_control_expose_headers_header.dart index 444e1b8f..524831f6 100644 --- a/packages/relic/lib/src/headers/typed/headers/access_control_expose_headers_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/access_control_expose_headers_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import 'wildcard_list_header.dart'; /// A class representing the HTTP Access-Control-Expose-Headers header. diff --git a/packages/relic/lib/src/headers/typed/headers/authentication_header.dart b/packages/relic_core/lib/src/headers/typed/headers/authentication_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/authentication_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/authentication_header.dart index 2a7496a7..722dcd42 100644 --- a/packages/relic/lib/src/headers/typed/headers/authentication_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/authentication_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Authentication header. final class AuthenticationHeader { diff --git a/packages/relic/lib/src/headers/typed/headers/authorization_header.dart b/packages/relic_core/lib/src/headers/typed/headers/authorization_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/authorization_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/authorization_header.dart index 144fced0..4209ed3e 100644 --- a/packages/relic/lib/src/headers/typed/headers/authorization_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/authorization_header.dart @@ -1,6 +1,6 @@ import 'dart:convert'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// An abstract base class representing an HTTP Authorization header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/cache_control_header.dart b/packages/relic_core/lib/src/headers/typed/headers/cache_control_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/cache_control_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/cache_control_header.dart index 190628e8..aedc2ead 100644 --- a/packages/relic/lib/src/headers/typed/headers/cache_control_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/cache_control_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP Cache-Control header. diff --git a/packages/relic/lib/src/headers/typed/headers/clear_site_data_header.dart b/packages/relic_core/lib/src/headers/typed/headers/clear_site_data_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/clear_site_data_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/clear_site_data_header.dart index e8a5933e..21b1d3d3 100644 --- a/packages/relic/lib/src/headers/typed/headers/clear_site_data_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/clear_site_data_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import 'wildcard_list_header.dart'; /// A class representing the HTTP Clear-Site-Data header. diff --git a/packages/relic/lib/src/headers/typed/headers/connection_header.dart b/packages/relic_core/lib/src/headers/typed/headers/connection_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/connection_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/connection_header.dart index fdce01ca..e0ae305b 100644 --- a/packages/relic/lib/src/headers/typed/headers/connection_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/connection_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP Connection header. diff --git a/packages/relic/lib/src/headers/typed/headers/content_disposition_header.dart b/packages/relic_core/lib/src/headers/typed/headers/content_disposition_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/content_disposition_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/content_disposition_header.dart index 6b22f05e..cba26089 100644 --- a/packages/relic/lib/src/headers/typed/headers/content_disposition_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/content_disposition_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP Content-Disposition header. diff --git a/packages/relic/lib/src/headers/typed/headers/content_encoding_header.dart b/packages/relic_core/lib/src/headers/typed/headers/content_encoding_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/content_encoding_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/content_encoding_header.dart index b261e6c5..dc59dbf0 100644 --- a/packages/relic/lib/src/headers/typed/headers/content_encoding_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/content_encoding_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP Content-Encoding header. diff --git a/packages/relic/lib/src/headers/typed/headers/content_language_header.dart b/packages/relic_core/lib/src/headers/typed/headers/content_language_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/content_language_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/content_language_header.dart index ad73f7e0..91bb856d 100644 --- a/packages/relic/lib/src/headers/typed/headers/content_language_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/content_language_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP Content-Language header. diff --git a/packages/relic/lib/src/headers/typed/headers/content_range_header.dart b/packages/relic_core/lib/src/headers/typed/headers/content_range_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/content_range_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/content_range_header.dart index 5de7a904..11a2f50a 100644 --- a/packages/relic/lib/src/headers/typed/headers/content_range_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/content_range_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing an HTTP Content-Range header for byte ranges. /// diff --git a/packages/relic/lib/src/headers/typed/headers/content_security_policy_header.dart b/packages/relic_core/lib/src/headers/typed/headers/content_security_policy_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/content_security_policy_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/content_security_policy_header.dart index 1a6fca1b..d3376e53 100644 --- a/packages/relic/lib/src/headers/typed/headers/content_security_policy_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/content_security_policy_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP Content-Security-Policy (CSP) header. diff --git a/packages/relic/lib/src/headers/typed/headers/cookie_header.dart b/packages/relic_core/lib/src/headers/typed/headers/cookie_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/cookie_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/cookie_header.dart index a71c1d9b..35ced3af 100644 --- a/packages/relic/lib/src/headers/typed/headers/cookie_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/cookie_header.dart @@ -1,5 +1,5 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; import 'util/cookie_util.dart'; diff --git a/packages/relic/lib/src/headers/typed/headers/cross_origin_embedder_policy_header.dart b/packages/relic_core/lib/src/headers/typed/headers/cross_origin_embedder_policy_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/cross_origin_embedder_policy_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/cross_origin_embedder_policy_header.dart index 1459adfd..d7d1a02a 100644 --- a/packages/relic/lib/src/headers/typed/headers/cross_origin_embedder_policy_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/cross_origin_embedder_policy_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Cross-Origin-Embedder-Policy header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/cross_origin_opener_policy_header.dart b/packages/relic_core/lib/src/headers/typed/headers/cross_origin_opener_policy_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/cross_origin_opener_policy_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/cross_origin_opener_policy_header.dart index 6139a2b9..e1b5c883 100644 --- a/packages/relic/lib/src/headers/typed/headers/cross_origin_opener_policy_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/cross_origin_opener_policy_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Cross-Origin-Opener-Policy header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/cross_origin_resource_policy_header.dart b/packages/relic_core/lib/src/headers/typed/headers/cross_origin_resource_policy_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/cross_origin_resource_policy_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/cross_origin_resource_policy_header.dart index 20dfccb6..4cf951fe 100644 --- a/packages/relic/lib/src/headers/typed/headers/cross_origin_resource_policy_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/cross_origin_resource_policy_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Cross-Origin-Resource-Policy header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/etag_condition_header.dart b/packages/relic_core/lib/src/headers/typed/headers/etag_condition_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/etag_condition_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/etag_condition_header.dart index 79f423d1..180b909b 100644 --- a/packages/relic/lib/src/headers/typed/headers/etag_condition_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/etag_condition_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import 'etag_header.dart' show InternalEx; import 'wildcard_list_header.dart'; diff --git a/packages/relic/lib/src/headers/typed/headers/etag_header.dart b/packages/relic_core/lib/src/headers/typed/headers/etag_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/etag_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/etag_header.dart index 7721b4aa..9ca08ade 100644 --- a/packages/relic/lib/src/headers/typed/headers/etag_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/etag_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP ETag header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/expect_header.dart b/packages/relic_core/lib/src/headers/typed/headers/expect_header.dart similarity index 97% rename from packages/relic/lib/src/headers/typed/headers/expect_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/expect_header.dart index 74bbf8ba..5cf48e46 100644 --- a/packages/relic/lib/src/headers/typed/headers/expect_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/expect_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Expect header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/forwarded_header.dart b/packages/relic_core/lib/src/headers/typed/headers/forwarded_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/forwarded_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/forwarded_header.dart index 8d25a10f..adf98f7d 100644 --- a/packages/relic/lib/src/headers/typed/headers/forwarded_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/forwarded_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; import 'package:http_parser/http_parser.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; // RFC 7230: HTTP/1.1 Message Syntax diff --git a/packages/relic/lib/src/headers/typed/headers/from_header.dart b/packages/relic_core/lib/src/headers/typed/headers/from_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/from_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/from_header.dart index 6c0a709c..0a94e671 100644 --- a/packages/relic/lib/src/headers/typed/headers/from_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/from_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP `From` header. diff --git a/packages/relic/lib/src/headers/typed/headers/host_header.dart b/packages/relic_core/lib/src/headers/typed/headers/host_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/host_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/host_header.dart index d62a5e10..40fc507f 100644 --- a/packages/relic/lib/src/headers/typed/headers/host_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/host_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// Wanna-be RFC3986 compliant 'Host' header. final class HostHeader { diff --git a/packages/relic/lib/src/headers/typed/headers/if_range_header.dart b/packages/relic_core/lib/src/headers/typed/headers/if_range_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/if_range_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/if_range_header.dart index 299117d0..e9f7f6bc 100644 --- a/packages/relic/lib/src/headers/typed/headers/if_range_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/if_range_header.dart @@ -1,5 +1,5 @@ import 'package:http_parser/http_parser.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import 'etag_header.dart'; diff --git a/packages/relic/lib/src/headers/typed/headers/permission_policy_header.dart b/packages/relic_core/lib/src/headers/typed/headers/permission_policy_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/permission_policy_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/permission_policy_header.dart index 15e6a508..b5656757 100644 --- a/packages/relic/lib/src/headers/typed/headers/permission_policy_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/permission_policy_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP Permissions-Policy header. diff --git a/packages/relic/lib/src/headers/typed/headers/range_header.dart b/packages/relic_core/lib/src/headers/typed/headers/range_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/range_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/range_header.dart index 3cd31b45..7d29ffa5 100644 --- a/packages/relic/lib/src/headers/typed/headers/range_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/range_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Range header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/referrer_policy_header.dart b/packages/relic_core/lib/src/headers/typed/headers/referrer_policy_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/referrer_policy_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/referrer_policy_header.dart index be66d992..ff0dadaa 100644 --- a/packages/relic/lib/src/headers/typed/headers/referrer_policy_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/referrer_policy_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Referrer-Policy header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/retry_after_header.dart b/packages/relic_core/lib/src/headers/typed/headers/retry_after_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/retry_after_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/retry_after_header.dart index 46571daa..4c1980dd 100644 --- a/packages/relic/lib/src/headers/typed/headers/retry_after_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/retry_after_header.dart @@ -1,5 +1,5 @@ import 'package:http_parser/http_parser.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Retry-After header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/sec_fetch_dest_header.dart b/packages/relic_core/lib/src/headers/typed/headers/sec_fetch_dest_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/sec_fetch_dest_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/sec_fetch_dest_header.dart index fb4f77d8..80d119cc 100644 --- a/packages/relic/lib/src/headers/typed/headers/sec_fetch_dest_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/sec_fetch_dest_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Sec-Fetch-Dest header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/sec_fetch_mode_header.dart b/packages/relic_core/lib/src/headers/typed/headers/sec_fetch_mode_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/sec_fetch_mode_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/sec_fetch_mode_header.dart index 33b64d03..2a6379ec 100644 --- a/packages/relic/lib/src/headers/typed/headers/sec_fetch_mode_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/sec_fetch_mode_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Sec-Fetch-Mode header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/sec_fetch_site_header.dart b/packages/relic_core/lib/src/headers/typed/headers/sec_fetch_site_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/sec_fetch_site_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/sec_fetch_site_header.dart index 4c7d0804..92f69064 100644 --- a/packages/relic/lib/src/headers/typed/headers/sec_fetch_site_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/sec_fetch_site_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; /// A class representing the HTTP Sec-Fetch-Site header. /// diff --git a/packages/relic/lib/src/headers/typed/headers/set_cookie_header.dart b/packages/relic_core/lib/src/headers/typed/headers/set_cookie_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/set_cookie_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/set_cookie_header.dart index 3f8f272d..da79ecf1 100644 --- a/packages/relic/lib/src/headers/typed/headers/set_cookie_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/set_cookie_header.dart @@ -1,7 +1,6 @@ import 'package:http_parser/http_parser.dart'; -import '../../../../relic.dart'; -import '../../codecs/common_types_codecs.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; import 'util/cookie_util.dart'; diff --git a/packages/relic/lib/src/headers/typed/headers/strict_transport_security_header.dart b/packages/relic_core/lib/src/headers/typed/headers/strict_transport_security_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/strict_transport_security_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/strict_transport_security_header.dart index af5db990..f6b8b1dd 100644 --- a/packages/relic/lib/src/headers/typed/headers/strict_transport_security_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/strict_transport_security_header.dart @@ -1,4 +1,4 @@ -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// Represents the HTTP Strict-Transport-Security (HSTS) header for managing diff --git a/packages/relic/lib/src/headers/typed/headers/te_header.dart b/packages/relic_core/lib/src/headers/typed/headers/te_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/te_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/te_header.dart index 716c914b..32b46235 100644 --- a/packages/relic/lib/src/headers/typed/headers/te_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/te_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP TE header. diff --git a/packages/relic/lib/src/headers/typed/headers/transfer_encoding_header.dart b/packages/relic_core/lib/src/headers/typed/headers/transfer_encoding_header.dart similarity index 99% rename from packages/relic/lib/src/headers/typed/headers/transfer_encoding_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/transfer_encoding_header.dart index 4ea3a95e..9a395e7d 100644 --- a/packages/relic/lib/src/headers/typed/headers/transfer_encoding_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/transfer_encoding_header.dart @@ -1,5 +1,5 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP Transfer-Encoding header. diff --git a/packages/relic/lib/src/headers/typed/headers/upgrade_header.dart b/packages/relic_core/lib/src/headers/typed/headers/upgrade_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/upgrade_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/upgrade_header.dart index c38a2b13..3c3de72b 100644 --- a/packages/relic/lib/src/headers/typed/headers/upgrade_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/upgrade_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP Upgrade header. diff --git a/packages/relic/lib/src/headers/typed/headers/util/cookie_util.dart b/packages/relic_core/lib/src/headers/typed/headers/util/cookie_util.dart similarity index 100% rename from packages/relic/lib/src/headers/typed/headers/util/cookie_util.dart rename to packages/relic_core/lib/src/headers/typed/headers/util/cookie_util.dart diff --git a/packages/relic/lib/src/headers/typed/headers/vary_header.dart b/packages/relic_core/lib/src/headers/typed/headers/vary_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/vary_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/vary_header.dart index a1a21281..34e9189f 100644 --- a/packages/relic/lib/src/headers/typed/headers/vary_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/vary_header.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// A class representing the HTTP Vary header. diff --git a/packages/relic/lib/src/headers/typed/headers/wildcard_list_header.dart b/packages/relic_core/lib/src/headers/typed/headers/wildcard_list_header.dart similarity index 100% rename from packages/relic/lib/src/headers/typed/headers/wildcard_list_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/wildcard_list_header.dart diff --git a/packages/relic/lib/src/headers/typed/headers/x_forwarded_for_header.dart b/packages/relic_core/lib/src/headers/typed/headers/x_forwarded_for_header.dart similarity index 98% rename from packages/relic/lib/src/headers/typed/headers/x_forwarded_for_header.dart rename to packages/relic_core/lib/src/headers/typed/headers/x_forwarded_for_header.dart index 241c5258..5f7762cd 100644 --- a/packages/relic/lib/src/headers/typed/headers/x_forwarded_for_header.dart +++ b/packages/relic_core/lib/src/headers/typed/headers/x_forwarded_for_header.dart @@ -1,5 +1,5 @@ import 'package:collection/collection.dart'; -import '../../../../relic.dart'; +import '../../../../relic_core.dart'; import '../../extension/string_list_extensions.dart'; /// Typed representation of the `X-Forwarded-For` (XFF) HTTP header. diff --git a/packages/relic/lib/src/headers/typed/typed_headers.dart b/packages/relic_core/lib/src/headers/typed/typed_headers.dart similarity index 100% rename from packages/relic/lib/src/headers/typed/typed_headers.dart rename to packages/relic_core/lib/src/headers/typed/typed_headers.dart diff --git a/packages/relic/lib/src/ip_address/endianness.dart b/packages/relic_core/lib/src/ip_address/endianness.dart similarity index 100% rename from packages/relic/lib/src/ip_address/endianness.dart rename to packages/relic_core/lib/src/ip_address/endianness.dart diff --git a/packages/relic/lib/src/ip_address/ip_address.dart b/packages/relic_core/lib/src/ip_address/ip_address.dart similarity index 100% rename from packages/relic/lib/src/ip_address/ip_address.dart rename to packages/relic_core/lib/src/ip_address/ip_address.dart diff --git a/packages/relic/lib/src/ip_address/ipv4_address.dart b/packages/relic_core/lib/src/ip_address/ipv4_address.dart similarity index 100% rename from packages/relic/lib/src/ip_address/ipv4_address.dart rename to packages/relic_core/lib/src/ip_address/ipv4_address.dart diff --git a/packages/relic/lib/src/ip_address/ipv6_address.dart b/packages/relic_core/lib/src/ip_address/ipv6_address.dart similarity index 100% rename from packages/relic/lib/src/ip_address/ipv6_address.dart rename to packages/relic_core/lib/src/ip_address/ipv6_address.dart diff --git a/packages/relic/lib/src/isolated_object.dart b/packages/relic_core/lib/src/isolated_object.dart similarity index 100% rename from packages/relic/lib/src/isolated_object.dart rename to packages/relic_core/lib/src/isolated_object.dart diff --git a/packages/relic_core/lib/src/logger/logger.dart b/packages/relic_core/lib/src/logger/logger.dart new file mode 100644 index 00000000..beba6e3c --- /dev/null +++ b/packages/relic_core/lib/src/logger/logger.dart @@ -0,0 +1,44 @@ +import 'package:stack_trace/stack_trace.dart'; + +typedef Logger = + void Function(String message, {StackTrace? stackTrace, LoggerType type}); + +enum LoggerType { error, warn, info } + +/// Logs a message using [print]. +/// +/// If [stackTrace] is passed, it will be used to create a chain of frames +/// that excludes core Dart frames and frames from the 'relic' package. +/// +/// If [type] is not passed, it defaults to [LoggerType.info]. +void logMessage( + final String message, { + final StackTrace? stackTrace, + final LoggerType type = LoggerType.info, +}) { + var chain = Chain.current(); + + if (stackTrace != null) { + chain = + Chain.forTrace(stackTrace) + .foldFrames( + (final frame) => frame.isCore || frame.package == 'relic', + ) + .terse; + } + + final prefix = switch (type) { + LoggerType.error => 'ERROR', + LoggerType.warn => 'WARN', + LoggerType.info => 'INFO', + }; + + // ignore: avoid_print + print('$prefix - ${DateTime.now()}'); + // ignore: avoid_print + print(message); + if (type != LoggerType.info) { + // ignore: avoid_print + print(chain); + } +} diff --git a/packages/relic/lib/src/middleware/context_property.dart b/packages/relic_core/lib/src/middleware/context_property.dart similarity index 100% rename from packages/relic/lib/src/middleware/context_property.dart rename to packages/relic_core/lib/src/middleware/context_property.dart diff --git a/packages/relic/lib/src/middleware/middleware.dart b/packages/relic_core/lib/src/middleware/middleware.dart similarity index 99% rename from packages/relic/lib/src/middleware/middleware.dart rename to packages/relic_core/lib/src/middleware/middleware.dart index 70f59ce9..a1642e7b 100644 --- a/packages/relic/lib/src/middleware/middleware.dart +++ b/packages/relic_core/lib/src/middleware/middleware.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import '../../relic.dart'; +import '../../relic_core.dart'; /// A function which creates a new [Handler] by wrapping a [Handler]. /// diff --git a/packages/relic/lib/src/middleware/middleware_extensions.dart b/packages/relic_core/lib/src/middleware/middleware_extensions.dart similarity index 100% rename from packages/relic/lib/src/middleware/middleware_extensions.dart rename to packages/relic_core/lib/src/middleware/middleware_extensions.dart diff --git a/packages/relic/lib/src/middleware/middleware_logger.dart b/packages/relic_core/lib/src/middleware/middleware_logger.dart similarity index 97% rename from packages/relic/lib/src/middleware/middleware_logger.dart rename to packages/relic_core/lib/src/middleware/middleware_logger.dart index 970a8d90..b9248092 100644 --- a/packages/relic/lib/src/middleware/middleware_logger.dart +++ b/packages/relic_core/lib/src/middleware/middleware_logger.dart @@ -1,5 +1,4 @@ -import '../../relic.dart'; -import '../logger/logger.dart'; +import '../../relic_core.dart'; /// Middleware which prints the time of the request, the elapsed time for the /// inner handlers, the response's status code and the request URI. diff --git a/packages/relic/lib/src/middleware/path_params.dart b/packages/relic_core/lib/src/middleware/path_params.dart similarity index 100% rename from packages/relic/lib/src/middleware/path_params.dart rename to packages/relic_core/lib/src/middleware/path_params.dart diff --git a/packages/relic/lib/src/middleware/routing_middleware.dart b/packages/relic_core/lib/src/middleware/routing_middleware.dart similarity index 100% rename from packages/relic/lib/src/middleware/routing_middleware.dart rename to packages/relic_core/lib/src/middleware/routing_middleware.dart diff --git a/packages/relic/lib/src/query/query_param.dart b/packages/relic_core/lib/src/query/query_param.dart similarity index 100% rename from packages/relic/lib/src/query/query_param.dart rename to packages/relic_core/lib/src/query/query_param.dart diff --git a/packages/relic/lib/src/relic_server.dart b/packages/relic_core/lib/src/relic_server.dart similarity index 100% rename from packages/relic/lib/src/relic_server.dart rename to packages/relic_core/lib/src/relic_server.dart diff --git a/packages/relic/lib/src/router/lookup_result.dart b/packages/relic_core/lib/src/router/lookup_result.dart similarity index 100% rename from packages/relic/lib/src/router/lookup_result.dart rename to packages/relic_core/lib/src/router/lookup_result.dart diff --git a/packages/relic/lib/src/router/lru_cache.dart b/packages/relic_core/lib/src/router/lru_cache.dart similarity index 100% rename from packages/relic/lib/src/router/lru_cache.dart rename to packages/relic_core/lib/src/router/lru_cache.dart diff --git a/packages/relic/lib/src/router/method.dart b/packages/relic_core/lib/src/router/method.dart similarity index 100% rename from packages/relic/lib/src/router/method.dart rename to packages/relic_core/lib/src/router/method.dart diff --git a/packages/relic/lib/src/router/normalized_path.dart b/packages/relic_core/lib/src/router/normalized_path.dart similarity index 100% rename from packages/relic/lib/src/router/normalized_path.dart rename to packages/relic_core/lib/src/router/normalized_path.dart diff --git a/packages/relic/lib/src/router/path_trie.dart b/packages/relic_core/lib/src/router/path_trie.dart similarity index 100% rename from packages/relic/lib/src/router/path_trie.dart rename to packages/relic_core/lib/src/router/path_trie.dart diff --git a/packages/relic/lib/src/router/relic_app.dart b/packages/relic_core/lib/src/router/relic_app.dart similarity index 100% rename from packages/relic/lib/src/router/relic_app.dart rename to packages/relic_core/lib/src/router/relic_app.dart diff --git a/packages/relic/lib/src/router/router.dart b/packages/relic_core/lib/src/router/router.dart similarity index 99% rename from packages/relic/lib/src/router/router.dart rename to packages/relic_core/lib/src/router/router.dart index 5af753e8..0f572119 100644 --- a/packages/relic/lib/src/router/router.dart +++ b/packages/relic_core/lib/src/router/router.dart @@ -4,10 +4,7 @@ import 'dart:developer'; import 'package:vm_service/vm_service.dart' as vm; import 'package:vm_service/vm_service_io.dart' as vmi; -import '../../relic.dart'; -import '../util/util.dart'; -import 'normalized_path.dart'; -import 'path_trie.dart'; +import '../../relic_core.dart'; part 'relic_app.dart'; diff --git a/packages/relic/lib/src/router/router_handler_extension.dart b/packages/relic_core/lib/src/router/router_handler_extension.dart similarity index 97% rename from packages/relic/lib/src/router/router_handler_extension.dart rename to packages/relic_core/lib/src/router/router_handler_extension.dart index 097032f5..9c3d33e0 100644 --- a/packages/relic/lib/src/router/router_handler_extension.dart +++ b/packages/relic_core/lib/src/router/router_handler_extension.dart @@ -1,5 +1,5 @@ import 'dart:async'; -import '../../relic.dart'; +import '../../relic_core.dart'; /// Extension on [RelicRouter] that cater specifically to [Handler]s. extension RouterHandlerEx on RelicRouter { diff --git a/packages/relic/lib/src/util/util.dart b/packages/relic_core/lib/src/util/util.dart similarity index 100% rename from packages/relic/lib/src/util/util.dart rename to packages/relic_core/lib/src/util/util.dart diff --git a/packages/relic_core/pubspec.yaml b/packages/relic_core/pubspec.yaml new file mode 100644 index 00000000..30a496d2 --- /dev/null +++ b/packages/relic_core/pubspec.yaml @@ -0,0 +1,30 @@ +name: relic_core +description: Core framework for Relic web server (platform-agnostic). +version: 0.13.1 +repository: https://github.com/serverpod/relic +homepage: https://docs.dartrelic.dev/ +topics: + - server + - web + - backend + - http + +environment: + sdk: ^3.7.0 + +resolution: workspace + +dependencies: + async: ^2.11.0 + collection: ^1.18.0 + convert: ^3.1.1 + crypto: ^3.0.0 + http_parser: ^4.0.2 + meta: ^1.15.0 + mime: ">=1.0.6 <3.0.0" + path: ^1.8.3 + stack_trace: ^1.10.0 + stream_channel: ^2.1.1 + vm_service: ^15.0.0 + web_socket: ^1.0.1 + web_socket_channel: ^3.0.3 diff --git a/pubspec.yaml b/pubspec.yaml index a0cd9b02..f11ba6d4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,3 +6,4 @@ environment: workspace: - packages/relic + - packages/relic_core From f850d475e06501a3c63574a763b041a353fcda57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Tue, 9 Dec 2025 21:16:17 +0100 Subject: [PATCH 06/14] feat: Extract relic_io package --- .../relic/example/advanced/multi_isolate.dart | 1 - packages/relic/example/basic/as_handle.dart | 1 - packages/relic/example/basic/body.dart | 1 - packages/relic/example/basic/handler.dart | 1 - packages/relic/example/basic/relic_shelf.dart | 3 --- .../relic/example/basic/static_files.dart | 1 - packages/relic/example/context/context.dart | 1 - .../example/context/context_property.dart | 1 - packages/relic/example/example.dart | 1 - packages/relic/example/middleware/auth.dart | 1 - packages/relic/example/middleware/cors.dart | 1 - .../relic/example/middleware/example.dart | 1 - .../relic/example/middleware/middleware.dart | 1 - .../relic/example/middleware/pipeline.dart | 1 - .../relic/example/routing/basic_routing.dart | 1 - .../example/routing/dynamic_segments.dart | 1 - packages/relic/example/routing/pipeline.dart | 1 - packages/relic/example/routing/request.dart | 1 - .../example/routing/request_response.dart | 1 - packages/relic/example/routing/response.dart | 1 - packages/relic/lib/io_adapter.dart | 12 ++++++---- packages/relic/lib/relic.dart | 10 +++----- packages/relic/pubspec.yaml | 12 ++++------ .../relic/test/body/body_max_length_test.dart | 1 - .../test/headers/headers_test_utils.dart | 1 - .../test/message/apply_headers_test.dart | 1 - .../relic_server_connections_info_test.dart | 1 - .../relic_server_graceful_shutdown_test.dart | 1 - packages/relic/test/relic_server_test.dart | 1 - .../relic/test/router/relic_app_test.dart | 1 - packages/relic/test/util/test_util.dart | 1 - .../test/web_socket/web_socket_test.dart | 1 - packages/relic_io/lib/relic_io.dart | 11 +++++++++ .../lib/src/adapter}/bind_http_server.dart | 0 .../src/adapter}/http_response_extension.dart | 2 +- .../lib/src/adapter}/io_adapter.dart | 2 +- .../lib/src/adapter}/io_relic_web_socket.dart | 2 +- .../lib/src/adapter}/io_serve.dart | 2 +- .../lib/src/adapter}/request.dart | 0 .../lib/src/adapter}/response.dart | 0 .../src/io/static/cache_busting_config.dart | 2 +- .../static/extension/datetime_extension.dart | 0 .../lib/src/io/static/static_handler.dart | 0 .../lib/src/logger/logger.dart | 0 packages/relic_io/pubspec.yaml | 24 +++++++++++++++++++ pubspec.yaml | 1 + 46 files changed, 56 insertions(+), 55 deletions(-) create mode 100644 packages/relic_io/lib/relic_io.dart rename packages/{relic/lib/src/adapter/io => relic_io/lib/src/adapter}/bind_http_server.dart (100%) rename packages/{relic/lib/src/adapter/io => relic_io/lib/src/adapter}/http_response_extension.dart (99%) rename packages/{relic/lib/src/adapter/io => relic_io/lib/src/adapter}/io_adapter.dart (98%) rename packages/{relic/lib/src/adapter/io => relic_io/lib/src/adapter}/io_relic_web_socket.dart (99%) rename packages/{relic/lib/src/adapter/io => relic_io/lib/src/adapter}/io_serve.dart (97%) rename packages/{relic/lib/src/adapter/io => relic_io/lib/src/adapter}/request.dart (100%) rename packages/{relic/lib/src/adapter/io => relic_io/lib/src/adapter}/response.dart (100%) rename packages/{relic => relic_io}/lib/src/io/static/cache_busting_config.dart (99%) rename packages/{relic => relic_io}/lib/src/io/static/extension/datetime_extension.dart (100%) rename packages/{relic => relic_io}/lib/src/io/static/static_handler.dart (100%) rename packages/{relic => relic_io}/lib/src/logger/logger.dart (100%) create mode 100644 packages/relic_io/pubspec.yaml diff --git a/packages/relic/example/advanced/multi_isolate.dart b/packages/relic/example/advanced/multi_isolate.dart index 663ef817..f68e9c64 100644 --- a/packages/relic/example/advanced/multi_isolate.dart +++ b/packages/relic/example/advanced/multi_isolate.dart @@ -2,7 +2,6 @@ import 'dart:developer'; import 'dart:io'; import 'dart:isolate'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; void main() async { diff --git a/packages/relic/example/basic/as_handle.dart b/packages/relic/example/basic/as_handle.dart index 4efacd7b..9cf24266 100644 --- a/packages/relic/example/basic/as_handle.dart +++ b/packages/relic/example/basic/as_handle.dart @@ -1,6 +1,5 @@ import 'dart:io'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// Demonstrates using RelicServer with a router converted to a handler. diff --git a/packages/relic/example/basic/body.dart b/packages/relic/example/basic/body.dart index a2e7a71a..908f80e6 100644 --- a/packages/relic/example/basic/body.dart +++ b/packages/relic/example/basic/body.dart @@ -3,7 +3,6 @@ import 'dart:developer'; import 'dart:io'; import 'dart:typed_data'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// Example demonstrating Body class features. Shows creating bodies from diff --git a/packages/relic/example/basic/handler.dart b/packages/relic/example/basic/handler.dart index b10723cb..fabe1230 100644 --- a/packages/relic/example/basic/handler.dart +++ b/packages/relic/example/basic/handler.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'dart:convert'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; // Basic handler that returns a simple greeting. diff --git a/packages/relic/example/basic/relic_shelf.dart b/packages/relic/example/basic/relic_shelf.dart index 1674e2fa..3cd2011d 100644 --- a/packages/relic/example/basic/relic_shelf.dart +++ b/packages/relic/example/basic/relic_shelf.dart @@ -1,9 +1,6 @@ import 'dart:developer'; import 'dart:io'; -/// Complete code sample referenced by the Shelf migration guide. -// doctag -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; Future main() async { diff --git a/packages/relic/example/basic/static_files.dart b/packages/relic/example/basic/static_files.dart index 2df8e709..44a6cf97 100644 --- a/packages/relic/example/basic/static_files.dart +++ b/packages/relic/example/basic/static_files.dart @@ -1,6 +1,5 @@ import 'dart:io'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// Demonstrates various static file serving patterns and caching strategies. diff --git a/packages/relic/example/context/context.dart b/packages/relic/example/context/context.dart index 52baba31..ffe38348 100644 --- a/packages/relic/example/context/context.dart +++ b/packages/relic/example/context/context.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'dart:developer'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; import 'package:web_socket/web_socket.dart'; diff --git a/packages/relic/example/context/context_property.dart b/packages/relic/example/context/context_property.dart index f38629d2..59cedb5f 100644 --- a/packages/relic/example/context/context_property.dart +++ b/packages/relic/example/context/context_property.dart @@ -1,6 +1,5 @@ import 'dart:developer'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// Extension to provide easy access to the request ID. diff --git a/packages/relic/example/example.dart b/packages/relic/example/example.dart index 299fea46..fd8e6857 100644 --- a/packages/relic/example/example.dart +++ b/packages/relic/example/example.dart @@ -1,5 +1,4 @@ // doctag -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// A simple 'Hello World' server demonstrating basic Relic usage. diff --git a/packages/relic/example/middleware/auth.dart b/packages/relic/example/middleware/auth.dart index 631b061a..517629e8 100644 --- a/packages/relic/example/middleware/auth.dart +++ b/packages/relic/example/middleware/auth.dart @@ -1,5 +1,4 @@ import 'dart:developer'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// Middleware that validates API keys for authentication. diff --git a/packages/relic/example/middleware/cors.dart b/packages/relic/example/middleware/cors.dart index c9064fc9..e526e282 100644 --- a/packages/relic/example/middleware/cors.dart +++ b/packages/relic/example/middleware/cors.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'dart:developer'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// Middleware that handles Cross-Origin Resource Sharing (CORS). diff --git a/packages/relic/example/middleware/example.dart b/packages/relic/example/middleware/example.dart index 023bbacc..34c2ce31 100644 --- a/packages/relic/example/middleware/example.dart +++ b/packages/relic/example/middleware/example.dart @@ -3,7 +3,6 @@ import 'dart:developer'; import 'dart:isolate'; import 'package:http/http.dart' as http; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// Demonstrates authentication middleware with context properties. diff --git a/packages/relic/example/middleware/middleware.dart b/packages/relic/example/middleware/middleware.dart index ba5417da..b5cc22a3 100644 --- a/packages/relic/example/middleware/middleware.dart +++ b/packages/relic/example/middleware/middleware.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'dart:developer'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// Template middleware showing the basic structure. diff --git a/packages/relic/example/middleware/pipeline.dart b/packages/relic/example/middleware/pipeline.dart index 5baa120b..e44538e8 100644 --- a/packages/relic/example/middleware/pipeline.dart +++ b/packages/relic/example/middleware/pipeline.dart @@ -1,5 +1,4 @@ import 'dart:developer'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// Middleware that adds a 'Server' header to responses. diff --git a/packages/relic/example/routing/basic_routing.dart b/packages/relic/example/routing/basic_routing.dart index ed84cc40..711789ad 100644 --- a/packages/relic/example/routing/basic_routing.dart +++ b/packages/relic/example/routing/basic_routing.dart @@ -1,6 +1,5 @@ import 'dart:developer'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// A simple example demonstrating basic routing in Relic. diff --git a/packages/relic/example/routing/dynamic_segments.dart b/packages/relic/example/routing/dynamic_segments.dart index ec931c8a..054d6f37 100644 --- a/packages/relic/example/routing/dynamic_segments.dart +++ b/packages/relic/example/routing/dynamic_segments.dart @@ -1,4 +1,3 @@ -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; // doctag diff --git a/packages/relic/example/routing/pipeline.dart b/packages/relic/example/routing/pipeline.dart index de47fa0d..3def2269 100644 --- a/packages/relic/example/routing/pipeline.dart +++ b/packages/relic/example/routing/pipeline.dart @@ -1,6 +1,5 @@ import 'dart:io'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; /// Demonstrates using the Pipeline API for request processing. diff --git a/packages/relic/example/routing/request.dart b/packages/relic/example/routing/request.dart index 9917e72f..38feddaf 100644 --- a/packages/relic/example/routing/request.dart +++ b/packages/relic/example/routing/request.dart @@ -1,6 +1,5 @@ import 'dart:convert'; import 'dart:developer'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; // Comprehensive examples demonstrating request handling patterns. diff --git a/packages/relic/example/routing/request_response.dart b/packages/relic/example/routing/request_response.dart index 27801135..a6f58115 100644 --- a/packages/relic/example/routing/request_response.dart +++ b/packages/relic/example/routing/request_response.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'dart:developer'; import 'dart:typed_data'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; // doctag diff --git a/packages/relic/example/routing/response.dart b/packages/relic/example/routing/response.dart index a6026de8..8f7785be 100644 --- a/packages/relic/example/routing/response.dart +++ b/packages/relic/example/routing/response.dart @@ -1,5 +1,4 @@ import 'dart:developer'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; // Simple examples demonstrating response creation patterns. diff --git a/packages/relic/lib/io_adapter.dart b/packages/relic/lib/io_adapter.dart index a639fe23..ce54806e 100644 --- a/packages/relic/lib/io_adapter.dart +++ b/packages/relic/lib/io_adapter.dart @@ -1,5 +1,7 @@ -export 'src/adapter/io/bind_http_server.dart'; -export 'src/adapter/io/http_response_extension.dart'; -export 'src/adapter/io/io_adapter.dart'; -export 'src/adapter/io/io_relic_web_socket.dart'; -export 'src/adapter/io/io_serve.dart'; +/// dart:io adapter for Relic web server. +/// +/// This file re-exports [relic_io] for backwards compatibility. +/// Consider using `package:relic_io/relic_io.dart` directly. +library; + +export 'package:relic_io/relic_io.dart'; diff --git a/packages/relic/lib/relic.dart b/packages/relic/lib/relic.dart index b26aac96..eddf70d9 100644 --- a/packages/relic/lib/relic.dart +++ b/packages/relic/lib/relic.dart @@ -1,12 +1,8 @@ /// Relic web server framework. /// -/// This package re-exports [relic_core] and adds dart:io specific functionality. +/// This package re-exports [relic_core] and [relic_io] for convenience. library; -// Re-export all of relic_core +// Re-export all of relic_core and relic_io export 'package:relic_core/relic_core.dart'; - -// dart:io specific exports -export 'src/io/static/cache_busting_config.dart'; -export 'src/io/static/extension/datetime_extension.dart'; -export 'src/io/static/static_handler.dart'; +export 'package:relic_io/relic_io.dart'; diff --git a/packages/relic/pubspec.yaml b/packages/relic/pubspec.yaml index ba2537a1..aa889a85 100644 --- a/packages/relic/pubspec.yaml +++ b/packages/relic/pubspec.yaml @@ -15,14 +15,8 @@ environment: resolution: workspace dependencies: - crypto: ^3.0.0 - mime: ">=1.0.6 <3.0.0" - path: ^1.8.3 relic_core: ^0.13.1 - stack_trace: ^1.10.0 - stream_channel: ^2.1.1 - vm_service: ^15.0.0 - web_socket: ^1.0.1 + relic_io: ^0.13.1 dev_dependencies: async: ^2.11.0 @@ -34,12 +28,16 @@ dev_dependencies: http_parser: ^4.0.2 lints: ">=5.0.0 <7.0.0" meta: ^1.15.0 + mime: ">=1.0.6 <3.0.0" mockito: ^5.4.4 + path: ^1.8.3 routingkit: ^5.1.2 serverpod_lints: ^3.0.0 spanner: ^1.0.5 test: ^1.25.10 test_descriptor: ^2.0.1 + vm_service: ^15.0.0 + web_socket: ^1.0.1 web_socket_channel: ^3.0.3 # The following are not used directly, but are included transitively. # Due to bad semver hygiene we need to bound the versions higher than diff --git a/packages/relic/test/body/body_max_length_test.dart b/packages/relic/test/body/body_max_length_test.dart index c27ab8b2..c870dbbb 100644 --- a/packages/relic/test/body/body_max_length_test.dart +++ b/packages/relic/test/body/body_max_length_test.dart @@ -1,7 +1,6 @@ import 'dart:io'; import 'dart:typed_data'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; import 'package:test/test.dart'; diff --git a/packages/relic/test/headers/headers_test_utils.dart b/packages/relic/test/headers/headers_test_utils.dart index bcb488a9..81ca5b93 100644 --- a/packages/relic/test/headers/headers_test_utils.dart +++ b/packages/relic/test/headers/headers_test_utils.dart @@ -3,7 +3,6 @@ import 'dart:io'; import 'dart:isolate'; import 'package:http/http.dart' as http; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; import 'package:test/test.dart'; diff --git a/packages/relic/test/message/apply_headers_test.dart b/packages/relic/test/message/apply_headers_test.dart index 78a04de9..5999d668 100644 --- a/packages/relic/test/message/apply_headers_test.dart +++ b/packages/relic/test/message/apply_headers_test.dart @@ -5,7 +5,6 @@ import 'dart:typed_data'; import 'package:http_parser/http_parser.dart'; import 'package:mockito/mockito.dart'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; import 'package:test/test.dart'; diff --git a/packages/relic/test/relic_server_connections_info_test.dart b/packages/relic/test/relic_server_connections_info_test.dart index b70b7d2b..51dc3c17 100644 --- a/packages/relic/test/relic_server_connections_info_test.dart +++ b/packages/relic/test/relic_server_connections_info_test.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'dart:io'; import 'package:http/http.dart' as http; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; import 'package:test/test.dart'; diff --git a/packages/relic/test/relic_server_graceful_shutdown_test.dart b/packages/relic/test/relic_server_graceful_shutdown_test.dart index 1df400e9..a713bdb1 100644 --- a/packages/relic/test/relic_server_graceful_shutdown_test.dart +++ b/packages/relic/test/relic_server_graceful_shutdown_test.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'dart:io'; import 'package:http/http.dart' as http; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; import 'package:test/test.dart'; diff --git a/packages/relic/test/relic_server_test.dart b/packages/relic/test/relic_server_test.dart index 58f728c2..9a88a942 100644 --- a/packages/relic/test/relic_server_test.dart +++ b/packages/relic/test/relic_server_test.dart @@ -1,7 +1,6 @@ import 'dart:io'; import 'package:http/http.dart' as http; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; import 'package:test/test.dart'; diff --git a/packages/relic/test/router/relic_app_test.dart b/packages/relic/test/router/relic_app_test.dart index 230f62c3..5663897e 100644 --- a/packages/relic/test/router/relic_app_test.dart +++ b/packages/relic/test/router/relic_app_test.dart @@ -5,7 +5,6 @@ import 'dart:isolate'; import 'dart:math'; import 'package:mockito/mockito.dart'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; import 'package:test/test.dart'; diff --git a/packages/relic/test/util/test_util.dart b/packages/relic/test/util/test_util.dart index 2867ac6d..0816d3d6 100644 --- a/packages/relic/test/util/test_util.dart +++ b/packages/relic/test/util/test_util.dart @@ -3,7 +3,6 @@ import 'dart:convert'; import 'dart:io'; import 'package:meta/meta.dart'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; import 'package:test/test.dart'; diff --git a/packages/relic/test/web_socket/web_socket_test.dart b/packages/relic/test/web_socket/web_socket_test.dart index cc6ba277..158b6863 100644 --- a/packages/relic/test/web_socket/web_socket_test.dart +++ b/packages/relic/test/web_socket/web_socket_test.dart @@ -4,7 +4,6 @@ import 'dart:io' as io; import 'dart:isolate'; import 'dart:typed_data'; -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; import 'package:test/test.dart'; import 'package:web_socket/web_socket.dart'; diff --git a/packages/relic_io/lib/relic_io.dart b/packages/relic_io/lib/relic_io.dart new file mode 100644 index 00000000..3f84e1e7 --- /dev/null +++ b/packages/relic_io/lib/relic_io.dart @@ -0,0 +1,11 @@ +/// dart:io adapter for Relic web server. +library; + +export 'src/adapter/bind_http_server.dart'; +export 'src/adapter/http_response_extension.dart'; +export 'src/adapter/io_adapter.dart'; +export 'src/adapter/io_relic_web_socket.dart'; +export 'src/adapter/io_serve.dart'; +export 'src/io/static/cache_busting_config.dart'; +export 'src/io/static/extension/datetime_extension.dart'; +export 'src/io/static/static_handler.dart'; diff --git a/packages/relic/lib/src/adapter/io/bind_http_server.dart b/packages/relic_io/lib/src/adapter/bind_http_server.dart similarity index 100% rename from packages/relic/lib/src/adapter/io/bind_http_server.dart rename to packages/relic_io/lib/src/adapter/bind_http_server.dart diff --git a/packages/relic/lib/src/adapter/io/http_response_extension.dart b/packages/relic_io/lib/src/adapter/http_response_extension.dart similarity index 99% rename from packages/relic/lib/src/adapter/io/http_response_extension.dart rename to packages/relic_io/lib/src/adapter/http_response_extension.dart index a4cd0e50..d00c60b2 100644 --- a/packages/relic/lib/src/adapter/io/http_response_extension.dart +++ b/packages/relic_io/lib/src/adapter/http_response_extension.dart @@ -1,6 +1,6 @@ import 'dart:io' as io; -import '../../../relic.dart'; +import 'package:relic_core/relic_core.dart'; /// Extension for [io.HttpResponse] to apply headers and body. extension HttpResponseExtension on io.HttpResponse { diff --git a/packages/relic/lib/src/adapter/io/io_adapter.dart b/packages/relic_io/lib/src/adapter/io_adapter.dart similarity index 98% rename from packages/relic/lib/src/adapter/io/io_adapter.dart rename to packages/relic_io/lib/src/adapter/io_adapter.dart index f01505b2..8c64bde5 100644 --- a/packages/relic/lib/src/adapter/io/io_adapter.dart +++ b/packages/relic_io/lib/src/adapter/io_adapter.dart @@ -3,7 +3,7 @@ import 'dart:io' as io; import 'package:stream_channel/stream_channel.dart'; -import '../../../relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'bind_http_server.dart'; import 'io_relic_web_socket.dart'; import 'request.dart'; diff --git a/packages/relic/lib/src/adapter/io/io_relic_web_socket.dart b/packages/relic_io/lib/src/adapter/io_relic_web_socket.dart similarity index 99% rename from packages/relic/lib/src/adapter/io/io_relic_web_socket.dart rename to packages/relic_io/lib/src/adapter/io_relic_web_socket.dart index a496275f..cd0396da 100644 --- a/packages/relic/lib/src/adapter/io/io_relic_web_socket.dart +++ b/packages/relic_io/lib/src/adapter/io_relic_web_socket.dart @@ -3,7 +3,7 @@ import 'dart:convert'; import 'dart:io' as io; import 'dart:typed_data'; import 'package:web_socket/web_socket.dart'; -import '../../../relic.dart'; +import 'package:relic_core/relic_core.dart'; /// A `dart-io`-based [RelicWebSocket] implementation. class IORelicWebSocket implements RelicWebSocket { diff --git a/packages/relic/lib/src/adapter/io/io_serve.dart b/packages/relic_io/lib/src/adapter/io_serve.dart similarity index 97% rename from packages/relic/lib/src/adapter/io/io_serve.dart rename to packages/relic_io/lib/src/adapter/io_serve.dart index 4782eb3a..cd5638aa 100644 --- a/packages/relic/lib/src/adapter/io/io_serve.dart +++ b/packages/relic_io/lib/src/adapter/io_serve.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'dart:io'; -import '../../../relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'io_adapter.dart'; extension RelicAppIOServeEx on RelicApp { diff --git a/packages/relic/lib/src/adapter/io/request.dart b/packages/relic_io/lib/src/adapter/request.dart similarity index 100% rename from packages/relic/lib/src/adapter/io/request.dart rename to packages/relic_io/lib/src/adapter/request.dart diff --git a/packages/relic/lib/src/adapter/io/response.dart b/packages/relic_io/lib/src/adapter/response.dart similarity index 100% rename from packages/relic/lib/src/adapter/io/response.dart rename to packages/relic_io/lib/src/adapter/response.dart diff --git a/packages/relic/lib/src/io/static/cache_busting_config.dart b/packages/relic_io/lib/src/io/static/cache_busting_config.dart similarity index 99% rename from packages/relic/lib/src/io/static/cache_busting_config.dart rename to packages/relic_io/lib/src/io/static/cache_busting_config.dart index 45888ba6..7edcf757 100644 --- a/packages/relic/lib/src/io/static/cache_busting_config.dart +++ b/packages/relic_io/lib/src/io/static/cache_busting_config.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:path/path.dart' as p; -import '../../../relic.dart'; +import 'static_handler.dart'; /// Cache-busting for asset URLs that embed a content hash. /// diff --git a/packages/relic/lib/src/io/static/extension/datetime_extension.dart b/packages/relic_io/lib/src/io/static/extension/datetime_extension.dart similarity index 100% rename from packages/relic/lib/src/io/static/extension/datetime_extension.dart rename to packages/relic_io/lib/src/io/static/extension/datetime_extension.dart diff --git a/packages/relic/lib/src/io/static/static_handler.dart b/packages/relic_io/lib/src/io/static/static_handler.dart similarity index 100% rename from packages/relic/lib/src/io/static/static_handler.dart rename to packages/relic_io/lib/src/io/static/static_handler.dart diff --git a/packages/relic/lib/src/logger/logger.dart b/packages/relic_io/lib/src/logger/logger.dart similarity index 100% rename from packages/relic/lib/src/logger/logger.dart rename to packages/relic_io/lib/src/logger/logger.dart diff --git a/packages/relic_io/pubspec.yaml b/packages/relic_io/pubspec.yaml new file mode 100644 index 00000000..d0489b50 --- /dev/null +++ b/packages/relic_io/pubspec.yaml @@ -0,0 +1,24 @@ +name: relic_io +description: dart:io adapter for Relic web server. +version: 0.13.1 +repository: https://github.com/serverpod/relic +homepage: https://docs.dartrelic.dev/ +topics: + - server + - web + - backend + - http + +environment: + sdk: ^3.7.0 + +resolution: workspace + +dependencies: + crypto: ^3.0.0 + mime: ">=1.0.6 <3.0.0" + path: ^1.8.3 + relic_core: ^0.13.1 + stack_trace: ^1.10.0 + stream_channel: ^2.1.1 + web_socket: ^1.0.1 diff --git a/pubspec.yaml b/pubspec.yaml index f11ba6d4..931334d8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,3 +7,4 @@ environment: workspace: - packages/relic - packages/relic_core + - packages/relic_io From 4162e9398f381f0826943ed4b4787f2998e43a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Tue, 9 Dec 2025 21:33:43 +0100 Subject: [PATCH 07/14] test: Move pure unit tests to relic_core --- packages/relic_core/pubspec.yaml | 6 ++++++ .../{relic => relic_core}/test/accessor/accessor_test.dart | 2 +- .../{relic => relic_core}/test/adapter/context_test.dart | 2 +- .../test/body/body_infer_mime_type_test.dart | 2 +- .../test/body/types/body_type_test.dart | 2 +- .../test/headers/headers_constants_test.dart | 2 +- .../test/headers/mutable_headers_test.dart | 2 +- .../test/headers/typed/forwarded_header_behavior_test.dart | 2 +- .../test/headers/typed/forwarded_header_test.dart | 2 +- .../test/headers/typed/x_forwarded_for_header_test.dart | 2 +- .../test/ip_address/endianness_test.dart | 2 +- .../test/ip_address/ip_address_cidr_test.dart | 2 +- .../test/ip_address/ip_address_test.dart | 2 +- .../test/ip_address/ipv4_address_test.dart | 2 +- .../test/ip_address/ipv6_address_test.dart | 2 +- .../test/isolated_object/isolated_object_close_test.dart | 2 +- .../test/isolated_object/isolated_object_create_test.dart | 2 +- .../test/isolated_object/isolated_object_evaluate_test.dart | 2 +- .../test/middleware/middleware_object_test.dart | 2 +- .../{relic => relic_core}/test/router/lru_cache_test.dart | 2 +- .../test/router/normalized_path_test.dart | 2 +- .../test/router/path_trie_crud_test.dart | 2 +- .../test/router/path_trie_tail_test.dart | 2 +- .../{relic => relic_core}/test/router/path_trie_test.dart | 2 +- .../test/router/path_trie_use_test.dart | 2 +- .../test/router/path_trie_wildcard_test.dart | 2 +- .../test/router/router_groups_test.dart | 2 +- .../test/router/router_handler_test.dart | 2 +- .../test/router/router_inject_test.dart | 2 +- packages/{relic => relic_core}/test/router/router_test.dart | 2 +- .../{relic => relic_core}/test/router/router_use_test.dart | 2 +- .../test/src/middleware/context_property_test.dart | 2 +- packages/{relic => relic_core}/test/util/util_test.dart | 2 +- 33 files changed, 38 insertions(+), 32 deletions(-) rename packages/{relic => relic_core}/test/accessor/accessor_test.dart (98%) rename packages/{relic => relic_core}/test/adapter/context_test.dart (98%) rename packages/{relic => relic_core}/test/body/body_infer_mime_type_test.dart (99%) rename packages/{relic => relic_core}/test/body/types/body_type_test.dart (95%) rename packages/{relic => relic_core}/test/headers/headers_constants_test.dart (92%) rename packages/{relic => relic_core}/test/headers/mutable_headers_test.dart (96%) rename packages/{relic => relic_core}/test/headers/typed/forwarded_header_behavior_test.dart (97%) rename packages/{relic => relic_core}/test/headers/typed/forwarded_header_test.dart (99%) rename packages/{relic => relic_core}/test/headers/typed/x_forwarded_for_header_test.dart (99%) rename packages/{relic => relic_core}/test/ip_address/endianness_test.dart (97%) rename packages/{relic => relic_core}/test/ip_address/ip_address_cidr_test.dart (99%) rename packages/{relic => relic_core}/test/ip_address/ip_address_test.dart (98%) rename packages/{relic => relic_core}/test/ip_address/ipv4_address_test.dart (99%) rename packages/{relic => relic_core}/test/ip_address/ipv6_address_test.dart (99%) rename packages/{relic => relic_core}/test/isolated_object/isolated_object_close_test.dart (97%) rename packages/{relic => relic_core}/test/isolated_object/isolated_object_create_test.dart (96%) rename packages/{relic => relic_core}/test/isolated_object/isolated_object_evaluate_test.dart (99%) rename packages/{relic => relic_core}/test/middleware/middleware_object_test.dart (98%) rename packages/{relic => relic_core}/test/router/lru_cache_test.dart (98%) rename packages/{relic => relic_core}/test/router/normalized_path_test.dart (99%) rename packages/{relic => relic_core}/test/router/path_trie_crud_test.dart (99%) rename packages/{relic => relic_core}/test/router/path_trie_tail_test.dart (99%) rename packages/{relic => relic_core}/test/router/path_trie_test.dart (99%) rename packages/{relic => relic_core}/test/router/path_trie_use_test.dart (99%) rename packages/{relic => relic_core}/test/router/path_trie_wildcard_test.dart (99%) rename packages/{relic => relic_core}/test/router/router_groups_test.dart (99%) rename packages/{relic => relic_core}/test/router/router_handler_test.dart (99%) rename packages/{relic => relic_core}/test/router/router_inject_test.dart (99%) rename packages/{relic => relic_core}/test/router/router_test.dart (99%) rename packages/{relic => relic_core}/test/router/router_use_test.dart (99%) rename packages/{relic => relic_core}/test/src/middleware/context_property_test.dart (99%) rename packages/{relic => relic_core}/test/util/util_test.dart (93%) diff --git a/packages/relic_core/pubspec.yaml b/packages/relic_core/pubspec.yaml index 30a496d2..19bf8015 100644 --- a/packages/relic_core/pubspec.yaml +++ b/packages/relic_core/pubspec.yaml @@ -28,3 +28,9 @@ dependencies: vm_service: ^15.0.0 web_socket: ^1.0.1 web_socket_channel: ^3.0.3 + +dev_dependencies: + lints: ">=5.0.0 <7.0.0" + mockito: ^5.4.4 + serverpod_lints: ^3.0.0 + test: ^1.25.10 diff --git a/packages/relic/test/accessor/accessor_test.dart b/packages/relic_core/test/accessor/accessor_test.dart similarity index 98% rename from packages/relic/test/accessor/accessor_test.dart rename to packages/relic_core/test/accessor/accessor_test.dart index 0ac99fd6..f1614863 100644 --- a/packages/relic/test/accessor/accessor_test.dart +++ b/packages/relic_core/test/accessor/accessor_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/adapter/context_test.dart b/packages/relic_core/test/adapter/context_test.dart similarity index 98% rename from packages/relic/test/adapter/context_test.dart rename to packages/relic_core/test/adapter/context_test.dart index 3b62acea..a9bf53ce 100644 --- a/packages/relic/test/adapter/context_test.dart +++ b/packages/relic_core/test/adapter/context_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/body/body_infer_mime_type_test.dart b/packages/relic_core/test/body/body_infer_mime_type_test.dart similarity index 99% rename from packages/relic/test/body/body_infer_mime_type_test.dart rename to packages/relic_core/test/body/body_infer_mime_type_test.dart index e118d6b8..6c9b7cbc 100644 --- a/packages/relic/test/body/body_infer_mime_type_test.dart +++ b/packages/relic_core/test/body/body_infer_mime_type_test.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'dart:typed_data'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/body/types/body_type_test.dart b/packages/relic_core/test/body/types/body_type_test.dart similarity index 95% rename from packages/relic/test/body/types/body_type_test.dart rename to packages/relic_core/test/body/types/body_type_test.dart index cd40cb89..dcedd148 100644 --- a/packages/relic/test/body/types/body_type_test.dart +++ b/packages/relic_core/test/body/types/body_type_test.dart @@ -1,6 +1,6 @@ import 'dart:convert'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/headers/headers_constants_test.dart b/packages/relic_core/test/headers/headers_constants_test.dart similarity index 92% rename from packages/relic/test/headers/headers_constants_test.dart rename to packages/relic_core/test/headers/headers_constants_test.dart index 08690865..146ded44 100644 --- a/packages/relic/test/headers/headers_constants_test.dart +++ b/packages/relic_core/test/headers/headers_constants_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/headers/mutable_headers_test.dart b/packages/relic_core/test/headers/mutable_headers_test.dart similarity index 96% rename from packages/relic/test/headers/mutable_headers_test.dart rename to packages/relic_core/test/headers/mutable_headers_test.dart index 6b2fc556..99d2fb40 100644 --- a/packages/relic/test/headers/mutable_headers_test.dart +++ b/packages/relic_core/test/headers/mutable_headers_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/headers/typed/forwarded_header_behavior_test.dart b/packages/relic_core/test/headers/typed/forwarded_header_behavior_test.dart similarity index 97% rename from packages/relic/test/headers/typed/forwarded_header_behavior_test.dart rename to packages/relic_core/test/headers/typed/forwarded_header_behavior_test.dart index fa8714cf..0ace7b96 100644 --- a/packages/relic/test/headers/typed/forwarded_header_behavior_test.dart +++ b/packages/relic_core/test/headers/typed/forwarded_header_behavior_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/headers/typed/forwarded_header_test.dart b/packages/relic_core/test/headers/typed/forwarded_header_test.dart similarity index 99% rename from packages/relic/test/headers/typed/forwarded_header_test.dart rename to packages/relic_core/test/headers/typed/forwarded_header_test.dart index bc91c31b..4c121be9 100644 --- a/packages/relic/test/headers/typed/forwarded_header_test.dart +++ b/packages/relic_core/test/headers/typed/forwarded_header_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/headers/typed/x_forwarded_for_header_test.dart b/packages/relic_core/test/headers/typed/x_forwarded_for_header_test.dart similarity index 99% rename from packages/relic/test/headers/typed/x_forwarded_for_header_test.dart rename to packages/relic_core/test/headers/typed/x_forwarded_for_header_test.dart index 373c7768..3f4fc6cd 100644 --- a/packages/relic/test/headers/typed/x_forwarded_for_header_test.dart +++ b/packages/relic_core/test/headers/typed/x_forwarded_for_header_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/ip_address/endianness_test.dart b/packages/relic_core/test/ip_address/endianness_test.dart similarity index 97% rename from packages/relic/test/ip_address/endianness_test.dart rename to packages/relic_core/test/ip_address/endianness_test.dart index dbf4331b..14c18814 100644 --- a/packages/relic/test/ip_address/endianness_test.dart +++ b/packages/relic_core/test/ip_address/endianness_test.dart @@ -1,6 +1,6 @@ import 'dart:typed_data'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/ip_address/ip_address_cidr_test.dart b/packages/relic_core/test/ip_address/ip_address_cidr_test.dart similarity index 99% rename from packages/relic/test/ip_address/ip_address_cidr_test.dart rename to packages/relic_core/test/ip_address/ip_address_cidr_test.dart index 8165e277..d56524c3 100644 --- a/packages/relic/test/ip_address/ip_address_cidr_test.dart +++ b/packages/relic_core/test/ip_address/ip_address_cidr_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/ip_address/ip_address_test.dart b/packages/relic_core/test/ip_address/ip_address_test.dart similarity index 98% rename from packages/relic/test/ip_address/ip_address_test.dart rename to packages/relic_core/test/ip_address/ip_address_test.dart index b9ea96cf..a6daa7b6 100644 --- a/packages/relic/test/ip_address/ip_address_test.dart +++ b/packages/relic_core/test/ip_address/ip_address_test.dart @@ -1,6 +1,6 @@ import 'dart:typed_data'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/ip_address/ipv4_address_test.dart b/packages/relic_core/test/ip_address/ipv4_address_test.dart similarity index 99% rename from packages/relic/test/ip_address/ipv4_address_test.dart rename to packages/relic_core/test/ip_address/ipv4_address_test.dart index d7a5044d..90ac3453 100644 --- a/packages/relic/test/ip_address/ipv4_address_test.dart +++ b/packages/relic_core/test/ip_address/ipv4_address_test.dart @@ -1,6 +1,6 @@ import 'dart:typed_data'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/ip_address/ipv6_address_test.dart b/packages/relic_core/test/ip_address/ipv6_address_test.dart similarity index 99% rename from packages/relic/test/ip_address/ipv6_address_test.dart rename to packages/relic_core/test/ip_address/ipv6_address_test.dart index db7b3477..0084b1ed 100644 --- a/packages/relic/test/ip_address/ipv6_address_test.dart +++ b/packages/relic_core/test/ip_address/ipv6_address_test.dart @@ -1,6 +1,6 @@ import 'dart:typed_data'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/isolated_object/isolated_object_close_test.dart b/packages/relic_core/test/isolated_object/isolated_object_close_test.dart similarity index 97% rename from packages/relic/test/isolated_object/isolated_object_close_test.dart rename to packages/relic_core/test/isolated_object/isolated_object_close_test.dart index ce980ebe..2e898629 100644 --- a/packages/relic/test/isolated_object/isolated_object_close_test.dart +++ b/packages/relic_core/test/isolated_object/isolated_object_close_test.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/isolated_object/isolated_object_create_test.dart b/packages/relic_core/test/isolated_object/isolated_object_create_test.dart similarity index 96% rename from packages/relic/test/isolated_object/isolated_object_create_test.dart rename to packages/relic_core/test/isolated_object/isolated_object_create_test.dart index cbed535e..4aa94e22 100644 --- a/packages/relic/test/isolated_object/isolated_object_create_test.dart +++ b/packages/relic_core/test/isolated_object/isolated_object_create_test.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/isolated_object/isolated_object_evaluate_test.dart b/packages/relic_core/test/isolated_object/isolated_object_evaluate_test.dart similarity index 99% rename from packages/relic/test/isolated_object/isolated_object_evaluate_test.dart rename to packages/relic_core/test/isolated_object/isolated_object_evaluate_test.dart index ad88665f..2ad650b9 100644 --- a/packages/relic/test/isolated_object/isolated_object_evaluate_test.dart +++ b/packages/relic_core/test/isolated_object/isolated_object_evaluate_test.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'dart:isolate'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/middleware/middleware_object_test.dart b/packages/relic_core/test/middleware/middleware_object_test.dart similarity index 98% rename from packages/relic/test/middleware/middleware_object_test.dart rename to packages/relic_core/test/middleware/middleware_object_test.dart index 5134fecf..46452151 100644 --- a/packages/relic/test/middleware/middleware_object_test.dart +++ b/packages/relic_core/test/middleware/middleware_object_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/lru_cache_test.dart b/packages/relic_core/test/router/lru_cache_test.dart similarity index 98% rename from packages/relic/test/router/lru_cache_test.dart rename to packages/relic_core/test/router/lru_cache_test.dart index cb098f79..40cd76e9 100644 --- a/packages/relic/test/router/lru_cache_test.dart +++ b/packages/relic_core/test/router/lru_cache_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/normalized_path_test.dart b/packages/relic_core/test/router/normalized_path_test.dart similarity index 99% rename from packages/relic/test/router/normalized_path_test.dart rename to packages/relic_core/test/router/normalized_path_test.dart index 05823095..cc1c33b3 100644 --- a/packages/relic/test/router/normalized_path_test.dart +++ b/packages/relic_core/test/router/normalized_path_test.dart @@ -1,5 +1,5 @@ import 'package:mockito/mockito.dart'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/path_trie_crud_test.dart b/packages/relic_core/test/router/path_trie_crud_test.dart similarity index 99% rename from packages/relic/test/router/path_trie_crud_test.dart rename to packages/relic_core/test/router/path_trie_crud_test.dart index 82af5a7f..fa3788d8 100644 --- a/packages/relic/test/router/path_trie_crud_test.dart +++ b/packages/relic_core/test/router/path_trie_crud_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/path_trie_tail_test.dart b/packages/relic_core/test/router/path_trie_tail_test.dart similarity index 99% rename from packages/relic/test/router/path_trie_tail_test.dart rename to packages/relic_core/test/router/path_trie_tail_test.dart index 6538a85a..75c84f38 100644 --- a/packages/relic/test/router/path_trie_tail_test.dart +++ b/packages/relic_core/test/router/path_trie_tail_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/path_trie_test.dart b/packages/relic_core/test/router/path_trie_test.dart similarity index 99% rename from packages/relic/test/router/path_trie_test.dart rename to packages/relic_core/test/router/path_trie_test.dart index 8d34a669..43ab403c 100644 --- a/packages/relic/test/router/path_trie_test.dart +++ b/packages/relic_core/test/router/path_trie_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/path_trie_use_test.dart b/packages/relic_core/test/router/path_trie_use_test.dart similarity index 99% rename from packages/relic/test/router/path_trie_use_test.dart rename to packages/relic_core/test/router/path_trie_use_test.dart index 149f030a..69ac1cb8 100644 --- a/packages/relic/test/router/path_trie_use_test.dart +++ b/packages/relic_core/test/router/path_trie_use_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/path_trie_wildcard_test.dart b/packages/relic_core/test/router/path_trie_wildcard_test.dart similarity index 99% rename from packages/relic/test/router/path_trie_wildcard_test.dart rename to packages/relic_core/test/router/path_trie_wildcard_test.dart index 10bf5ad6..ffdb5c4d 100644 --- a/packages/relic/test/router/path_trie_wildcard_test.dart +++ b/packages/relic_core/test/router/path_trie_wildcard_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/router_groups_test.dart b/packages/relic_core/test/router/router_groups_test.dart similarity index 99% rename from packages/relic/test/router/router_groups_test.dart rename to packages/relic_core/test/router/router_groups_test.dart index 04104df7..b004c591 100644 --- a/packages/relic/test/router/router_groups_test.dart +++ b/packages/relic_core/test/router/router_groups_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/router_handler_test.dart b/packages/relic_core/test/router/router_handler_test.dart similarity index 99% rename from packages/relic/test/router/router_handler_test.dart rename to packages/relic_core/test/router/router_handler_test.dart index 665cdbf8..00475334 100644 --- a/packages/relic/test/router/router_handler_test.dart +++ b/packages/relic_core/test/router/router_handler_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; Request _request( diff --git a/packages/relic/test/router/router_inject_test.dart b/packages/relic_core/test/router/router_inject_test.dart similarity index 99% rename from packages/relic/test/router/router_inject_test.dart rename to packages/relic_core/test/router/router_inject_test.dart index 1493f502..9811878f 100644 --- a/packages/relic/test/router/router_inject_test.dart +++ b/packages/relic_core/test/router/router_inject_test.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/router_test.dart b/packages/relic_core/test/router/router_test.dart similarity index 99% rename from packages/relic/test/router/router_test.dart rename to packages/relic_core/test/router/router_test.dart index 13354941..c97df431 100644 --- a/packages/relic/test/router/router_test.dart +++ b/packages/relic_core/test/router/router_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/router/router_use_test.dart b/packages/relic_core/test/router/router_use_test.dart similarity index 99% rename from packages/relic/test/router/router_use_test.dart rename to packages/relic_core/test/router/router_use_test.dart index 2b77f97c..2f2db8da 100644 --- a/packages/relic/test/router/router_use_test.dart +++ b/packages/relic_core/test/router/router_use_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/packages/relic/test/src/middleware/context_property_test.dart b/packages/relic_core/test/src/middleware/context_property_test.dart similarity index 99% rename from packages/relic/test/src/middleware/context_property_test.dart rename to packages/relic_core/test/src/middleware/context_property_test.dart index b1e9999c..036610b5 100644 --- a/packages/relic/test/src/middleware/context_property_test.dart +++ b/packages/relic_core/test/src/middleware/context_property_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; Request _request() { diff --git a/packages/relic/test/util/util_test.dart b/packages/relic_core/test/util/util_test.dart similarity index 93% rename from packages/relic/test/util/util_test.dart rename to packages/relic_core/test/util/util_test.dart index 3cb9a25a..2b6f2af4 100644 --- a/packages/relic/test/util/util_test.dart +++ b/packages/relic_core/test/util/util_test.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:relic/relic.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { From 8865bf42f28041b8ce8d57d68ca2494b5746f363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Tue, 9 Dec 2025 21:43:13 +0100 Subject: [PATCH 08/14] chore: Add melos for workspace management --- .gitignore | 1 + pubspec.yaml | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d578ae8d..08ff595e 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ pubspec.lock .idea/ .vscode/ .vscode-test/ +*.iml # Local build artifacts *.exe diff --git a/pubspec.yaml b/pubspec.yaml index 931334d8..ac0158a5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,4 +1,4 @@ -name: _ +name: relic_workspace publish_to: none environment: @@ -8,3 +8,28 @@ workspace: - packages/relic - packages/relic_core - packages/relic_io + +dev_dependencies: + melos: ^7.0.0 + +melos: + packages: + - packages/* + + scripts: + test: + run: dart test + exec: + concurrency: 1 + packageFilters: + flutter: false + dependsOn: test + dirExists: test + description: Run tests in all packages + + check: + steps: + - dart analyze --fatal-infos . + - dart format --set-exit-if-changed . + - melos run test + description: Run all checks (analyze, format, test) From 14a2aa811cdeea23b1200527a2ad86a9e34e22e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Wed, 10 Dec 2025 08:56:10 +0100 Subject: [PATCH 09/14] chore(release): publish packages - relic@0.13.2 - relic_core@0.13.2 - relic_io@0.13.2 --- CHANGELOG.md | 36 +++++++ packages/relic/CHANGELOG.md | 161 ++++++++++++++++++++++++++++++- packages/relic/pubspec.yaml | 6 +- packages/relic_core/CHANGELOG.md | 4 + packages/relic_core/pubspec.yaml | 2 +- packages/relic_io/CHANGELOG.md | 4 + packages/relic_io/pubspec.yaml | 4 +- 7 files changed, 210 insertions(+), 7 deletions(-) mode change 120000 => 100644 packages/relic/CHANGELOG.md create mode 100644 packages/relic_core/CHANGELOG.md create mode 100644 packages/relic_io/CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md index a12befd6..bb15dd2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,39 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## 2025-12-10 + +### Changes + +--- + +Packages with breaking changes: + + - There are no breaking changes in this release. + +Packages with other changes: + + - [`relic` - `v0.13.2`](#relic---v0132) + - [`relic_core` - `v0.13.2`](#relic_core---v0132) + - [`relic_io` - `v0.13.2`](#relic_io---v0132) + +--- + +#### `relic` - `v0.13.2` + + - **FEAT**: Extract relic_io package. + - **FEAT**: Extract relic_core package. + +#### `relic_core` - `v0.13.2` + + - **FEAT**: Extract relic_core package. + +#### `relic_io` - `v0.13.2` + + - **FEAT**: Extract relic_io package. + ## 0.13.1 - fix: Close connection, if request too large ([#303](https://github.com/serverpod/relic/pull/303)) diff --git a/packages/relic/CHANGELOG.md b/packages/relic/CHANGELOG.md deleted file mode 120000 index 699cc9e7..00000000 --- a/packages/relic/CHANGELOG.md +++ /dev/null @@ -1 +0,0 @@ -../../CHANGELOG.md \ No newline at end of file diff --git a/packages/relic/CHANGELOG.md b/packages/relic/CHANGELOG.md new file mode 100644 index 00000000..ef1f6edb --- /dev/null +++ b/packages/relic/CHANGELOG.md @@ -0,0 +1,160 @@ +## 0.13.2 + + - **FEAT**: Extract relic_io package. + - **FEAT**: Extract relic_core package. + +## 0.13.1 +- fix: Close connection, if request too large ([#303](https://github.com/serverpod/relic/pull/303)) + +## 0.13.0 +- feat!: Add maxLength argument on read ([#301](https://github.com/serverpod/relic/pull/301)) + +## 0.12.0 +- feat!: Support back-tracking during routing ([#297](https://github.com/serverpod/relic/pull/297)) +- fix: Ensure close is idempotent ([#295](https://github.com/serverpod/relic/pull/295)) + +## 0.11.0 +- feat!: Add typed accessor for query and path parameters ([#288](https://github.com/serverpod/relic/pull/288)) +- feat: Introduce ConnectionInfo ([#273](https://github.com/serverpod/relic/pull/273)) +- feat: Add IPAddress class (independent of dart:io) ([#272](https://github.com/serverpod/relic/pull/272)) +- refactor!: Simplify ContextProperty interface +- refactor!: Disallow url rewriting in Request.copyWith ([#289](https://github.com/serverpod/relic/pull/289)) +- refactor!: Use named ctors on all header classes ([#283](https://github.com/serverpod/relic/pull/283)) +- refactor!: Avoid repeating ctor name on parameter ([#282](https://github.com/serverpod/relic/pull/282)) +- fix!: Remove stale arguments from Request and Response class ([#274](https://github.com/serverpod/relic/pull/274)) +- fix: Don't overwrite Content-Length when set as header ([#291](https://github.com/serverpod/relic/pull/291)) + +## 0.10.0 +- refactor!: The Great Simplification ([#264](https://github.com/serverpod/relic/pull/264)) + - Merged `RequestContext` into `Request` by moving the token property + - `HandledContext` renamed to `Result` + - Merge `ResponseContext` into `Response` (now implements `Result`) + - Removed `respond()`, `hijack()`, and `connect()` methods - handlers can construct and return `Result`s directly + - Updated handler signatures: `Handler = FutureOr Function(Request req)` + - Consolidated context classes into single file using part files + - Updated all examples and tests + - Significant simplification of the class hierarchy by eliminating the: + - `Context`, + - `RequestContext`, + - `RespondableContext`, + - `HijackableContext`, + - `ConnectableContext`, and + - `ResponseContext` interfaces + - Renamed `ConnectionContext` to `WebSocketUpgrade` (now extends `Result`) + - Renamed `HijackedContext` to `Hijack` (now extends `Result`) + +## 0.9.2 +- feat: Expose `noOfIsolates` parameter on serve extension on `RelicApp` ([#260](https://github.com/serverpod/relic/pull/260)) +- feat: Add `injectAt` extension method on `Router` ([#261](https://github.com/serverpod/relic/pull/261)) +- feat: Allow re-run of `RelicApp.run` after `close` ([#257](https://github.com/serverpod/relic/pull/257)) + +## 0.9.1 +- feat: Add async RelicServer.connectionsInfo() method ([#255](https://github.com/serverpod/relic/pull/255)) + - Adds a `connectionsInfo()` method to `RelicServer` that returns the + current number of active, closing, and idle connections. + - A new `ConnectionsInfo` typedef is introduced as a record type with + `active`, `closing`, and `idle` fields. + +## 0.9.0 +- refactor!: Context renaming ([#251](https://github.com/serverpod/relic/pull/251)) + Renames core context types for improved clarity and consistency: + - `NewContext` → `RequestContext` + - `ConnectContext` → `ConnectionContext` + - `HijackContext` → `HijackedContext` + - Base class `RequestContext` renamed to `Context` +- chore!: Upgrade sdk to ^3.7.0 ([#239](https://github.com/serverpod/relic/pull/239)) +- feat: Introduce MultiIsolateRelicServer ([#216](https://github.com/serverpod/relic/pull/216)) + Implements multi-isolate support for `RelicServer` to enable concurrent request handling across multiple CPU cores. Adds `noOfIsolates` optional named parameter to `RelicServer` + constructor, and `RelicApp.run`. +- fix: Mask sensitive credentials in authorization header toString() methods ([#238](https://github.com/serverpod/relic/pull/238)) + +## 0.8.0 +- feat!: RelicApp now supports hot-reload ([#226](https://github.com/serverpod/relic/pull/226)) +- feat: Introduce RelicApp ([#212](https://github.com/serverpod/relic/pull/212)) +- feat: Introduce MiddlewareObject ([#211](https://github.com/serverpod/relic/pull/211)) +- feat: Introduce HandlerObject ([#210](https://github.com/serverpod/relic/pull/210)) +- feat(router): Add fallback property for unmatched routes ([#196](https://github.com/serverpod/relic/pull/196)) +- feat(router): Add asHandler extension to use Router as Handler ([#209](https://github.com/serverpod/relic/pull/209)) +- feat: Adds support for cache busting ([#192](https://github.com/serverpod/relic/pull/192)) +- feat: Support mime-type inference ([#206](https://github.com/serverpod/relic/pull/206)) +- feat: Add NewContext.withRequest convenience method ([#198](https://github.com/serverpod/relic/pull/198)) +- fix: Build platform correct path when serving files. ([#207](https://github.com/serverpod/relic/pull/207)) + +## 0.7.0 +- feat(router): Add support for setting up mappings of values on lookup `router.use(path, map)` ([#186](https://github.com/serverpod/relic/pull/186)) +- feat(trie): Add support for setting up mappings of values on lookup `trie.use(path, map)` ([#185](https://github.com/serverpod/relic/pull/185)) + +## 0.6.0 +- feat!: Custom CacheControl header per file ([#167](https://github.com/serverpod/relic/pull/167)) +- feat!: Distinguish between path and method miss in router lookups ([#179](https://github.com/serverpod/relic/pull/179)) +- feat!: Remove automatic X-Powered-By header ([#169](https://github.com/serverpod/relic/pull/169)) +- feat!: Remove unused strict flag ([#181](https://github.com/serverpod/relic/pull/181)) +- feat(router): Router.group ([#157](https://github.com/serverpod/relic/pull/157)) +- feat: Add operator== and hashCode on all header classes ([#155](https://github.com/serverpod/relic/pull/155)) +- fix: HEAD request should match GET except for body, including Content-Length ([#180](https://github.com/serverpod/relic/pull/180)) +- fix: Host header is not a Uri. Introduce an RFC3986 compliant HostHeader class ([#142](https://github.com/serverpod/relic/pull/142)) +- fix: Rip out Router.staticCache ([#172](https://github.com/serverpod/relic/pull/172)) +- fix: Set content length on body, not headers ([#161](https://github.com/serverpod/relic/pull/161)) + +## 0.5.0 +- refactor!: Rename withResponse to respond (matches connect/hijack) ([#134](https://github.com/serverpod/relic/pull/134)) +- docs: Adds a docusaurus documentation page for relic. ([#132](https://github.com/serverpod/relic/pull/132)) +- refactor!: Static File Handler Overhaul ([#127](https://github.com/serverpod/relic/pull/127)) + +## 0.4.1 +- fix: Export bindHttpServer in io_adapter.dart ([#114](https://github.com/serverpod/relic/pull/114)) +- fix: Handle ':' in BasicAuthorizationHeader parser correctly ([#112](https://github.com/serverpod/relic/pull/112)) + +## 0.4.0 + +- fix: Missing convenience getters and setter for Headers.xForwardedFor ([#108](https://github.com/serverpod/relic/pull/108)) +- refactor!: Get rid of old context map on Message (Request/Response) ([#105](https://github.com/serverpod/relic/pull/105)) +- feat: X-Forwarded-For typed header ([#107](https://github.com/serverpod/relic/pull/107)) +- feat: Add ContextProperty class (wraps Expando) ([#94](https://github.com/serverpod/relic/pull/94)) +- feat: Typed forwarded header ([#101](https://github.com/serverpod/relic/pull/101)) +- build(deps): Bump cli_tools from 0.5.1 to 0.6.0 ([#100](https://github.com/serverpod/relic/pull/100)) +- refactor!: Replace DuplexStreamChannel with RelicWebSocket ([#91](https://github.com/serverpod/relic/pull/91)) +- test: Add headers constants test and rename file ([#89](https://github.com/serverpod/relic/pull/89)) +- build(deps): Bump lints from 5.1.1 to 6.0.0 ([#92](https://github.com/serverpod/relic/pull/92)) +- fix: Fix request/response header sets ([#90](https://github.com/serverpod/relic/pull/90)) +- docs: Update router docs ([#88](https://github.com/serverpod/relic/pull/88)) +- docs: Update router entry comment ([#87](https://github.com/serverpod/relic/pull/87)) +- feat: WebSocket support ([#84](https://github.com/serverpod/relic/pull/84)) +- feat: Store benchmark results with git notes ([#79](https://github.com/serverpod/relic/pull/79)) +- feat: The routeWith middleware builder function is now generic. ([#78](https://github.com/serverpod/relic/pull/78)) +- feat(Handler)!: Signature changed ([#76](https://github.com/serverpod/relic/pull/76)) +- feat: Add Router.isEmpty getter ([#75](https://github.com/serverpod/relic/pull/75)) +- docs: Add CONTRIBUTING.md and CODE_OF_CONDUCT.md ([#69](https://github.com/serverpod/relic/pull/69)) +- feat: PathTrie wildcard and tail matching support ([#70](https://github.com/serverpod/relic/pull/70)) +- feat: Router middleware ([#68](https://github.com/serverpod/relic/pull/68)) +- feat!: Router now supports verb directly ([#65](https://github.com/serverpod/relic/pull/65)) +- docs: Add badges for codecov, etc. ([#67](https://github.com/serverpod/relic/pull/67)) +- feat: Add addOrUpdate, update, and remove to PathTrie ([#63](https://github.com/serverpod/relic/pull/63)) +- feat: Support Router.attach ([#62](https://github.com/serverpod/relic/pull/62)) +- feat: Allow a trie to be attached as a subtrie to another ([#61](https://github.com/serverpod/relic/pull/61)) +- feat: Router class ([#52](https://github.com/serverpod/relic/pull/52)) +- refactor!: Decouple from dart:io and avoid using exceptions for control-flow ([#48](https://github.com/serverpod/relic/pull/48)) +- chore: Add serverpod lints ([#46](https://github.com/serverpod/relic/pull/46)) +- feat!: Replace HeaderDecode with HeaderCodec to allow customization on encoding as well ([#43](https://github.com/serverpod/relic/pull/43)) +- fix: Ensure cache is updated immediately ([#42](https://github.com/serverpod/relic/pull/42)) +- feat!: Support typed access to custom headers ([#38](https://github.com/serverpod/relic/pull/38)) +- ci: Hoist continue-on-error to job ([#37](https://github.com/serverpod/relic/pull/37)) +- ci: Add test coverage ([#36](https://github.com/serverpod/relic/pull/36)) +- fix!: RelicServer cannot reliably know the Uri to use to hit it ([#32](https://github.com/serverpod/relic/pull/32)) +- chore: Automate publishing to pub.dev when semver tag is created ([#31](https://github.com/serverpod/relic/pull/31)) +- chore: Add pull request title validation. ([#30](https://github.com/serverpod/relic/pull/30)) +- refactor!: Get rid of RelicAddress. ([#29](https://github.com/serverpod/relic/pull/29)) + +## 0.3.0 + +- feat: Implements lazy loading when parsing headers to avoid unnecessary validation. +- feat: Makes address strongly typed and adds `RelicAddress` type. +- fix: Resolves issue with `Content-Length` header conflicting with `Transfer-Encoding: chunked`. + +## 0.2.0 + +- First tech preview. + +## 0.1.0 + +- Initial version. diff --git a/packages/relic/pubspec.yaml b/packages/relic/pubspec.yaml index aa889a85..f692c931 100644 --- a/packages/relic/pubspec.yaml +++ b/packages/relic/pubspec.yaml @@ -1,6 +1,6 @@ name: relic description: A lightweight and flexible web server inspired by Shelf for building APIs and backend services. -version: 0.13.1 +version: 0.13.2 repository: https://github.com/serverpod/relic homepage: https://docs.dartrelic.dev/ topics: @@ -15,8 +15,8 @@ environment: resolution: workspace dependencies: - relic_core: ^0.13.1 - relic_io: ^0.13.1 + relic_core: ^0.13.2 + relic_io: ^0.13.2 dev_dependencies: async: ^2.11.0 diff --git a/packages/relic_core/CHANGELOG.md b/packages/relic_core/CHANGELOG.md new file mode 100644 index 00000000..63cde707 --- /dev/null +++ b/packages/relic_core/CHANGELOG.md @@ -0,0 +1,4 @@ +## 0.13.2 + + - **FEAT**: Extract relic_core package. + diff --git a/packages/relic_core/pubspec.yaml b/packages/relic_core/pubspec.yaml index 19bf8015..de2b56d8 100644 --- a/packages/relic_core/pubspec.yaml +++ b/packages/relic_core/pubspec.yaml @@ -1,6 +1,6 @@ name: relic_core description: Core framework for Relic web server (platform-agnostic). -version: 0.13.1 +version: 0.13.2 repository: https://github.com/serverpod/relic homepage: https://docs.dartrelic.dev/ topics: diff --git a/packages/relic_io/CHANGELOG.md b/packages/relic_io/CHANGELOG.md new file mode 100644 index 00000000..640d3184 --- /dev/null +++ b/packages/relic_io/CHANGELOG.md @@ -0,0 +1,4 @@ +## 0.13.2 + + - **FEAT**: Extract relic_io package. + diff --git a/packages/relic_io/pubspec.yaml b/packages/relic_io/pubspec.yaml index d0489b50..00d848ae 100644 --- a/packages/relic_io/pubspec.yaml +++ b/packages/relic_io/pubspec.yaml @@ -1,6 +1,6 @@ name: relic_io description: dart:io adapter for Relic web server. -version: 0.13.1 +version: 0.13.2 repository: https://github.com/serverpod/relic homepage: https://docs.dartrelic.dev/ topics: @@ -18,7 +18,7 @@ dependencies: crypto: ^3.0.0 mime: ">=1.0.6 <3.0.0" path: ^1.8.3 - relic_core: ^0.13.1 + relic_core: ^0.13.2 stack_trace: ^1.10.0 stream_channel: ^2.1.1 web_socket: ^1.0.1 From 72d378cb9626d1b08e9465d5fcd6a779ba3e1929 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Wed, 10 Dec 2025 09:22:50 +0100 Subject: [PATCH 10/14] ci: Update workflows for multi-package workspace --- .github/workflows/dart-tests.yaml | 73 +++++++++++++++++++++++-------- .github/workflows/publish.yaml | 18 +++++++- 2 files changed, 71 insertions(+), 20 deletions(-) diff --git a/.github/workflows/dart-tests.yaml b/.github/workflows/dart-tests.yaml index af225833..d63fab81 100644 --- a/.github/workflows/dart-tests.yaml +++ b/.github/workflows/dart-tests.yaml @@ -14,8 +14,8 @@ env: LOWEST_DART_SDK: "3.8.1" jobs: - build: - name: Verify Build + analyze: + name: Analyze runs-on: ${{ matrix.os }} strategy: matrix: @@ -47,13 +47,6 @@ jobs: - name: Verify Formatting run: dart format --output=none --set-exit-if-changed . - - name: Check Dependency Bounds - working-directory: packages/relic - run: >- - dart pub downgrade --tighten && - dart pub upgrade --major-versions && - git diff-files --quiet -- . - - name: Analyze (downgraded) run: >- dart pub downgrade && @@ -66,21 +59,52 @@ jobs: dart pub get && dart analyze ${{ matrix.dart_sdk == env.LOWEST_DART_SDK && '--fatal-infos' || '--fatal-warnings' }} + verify_packages: + name: Verify Package (${{ matrix.package }}) + runs-on: ubuntu-latest + strategy: + matrix: + package: [relic_core, relic_io, relic] + steps: + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Setup Dart + uses: dart-lang/setup-dart@v1 + with: + sdk: stable + + - name: Cache Dart Dependencies + uses: actions/cache@v4 + with: + path: ${{ env.PUB_CACHE_PATH }} + key: ${{ runner.os }}-pub-cache-stable + restore-keys: ${{ runner.os }}-pub-cache- + + - name: Install Dependencies + run: dart pub get + + - name: Check Dependency Bounds + working-directory: packages/${{ matrix.package }} + run: >- + dart pub downgrade --tighten && + dart pub upgrade --major-versions && + git diff-files --quiet -- . + - name: Doc Dry Run - working-directory: packages/relic + working-directory: packages/${{ matrix.package }} run: dart doc --dry-run - name: Check Pana Score - if: ${{ matrix.dart_sdk == 'stable' }} # temporary workaround until https://github.com/dart-lang/pana/issues/1499 is resolved continue-on-error: true - working-directory: packages/relic + working-directory: packages/${{ matrix.package }} run: >- dart pub global activate pana && dart pub global run pana --no-warning --exit-code-threshold=0 --json - name: Publish Dry Run - working-directory: packages/relic + working-directory: packages/${{ matrix.package }} run: dart pub publish --dry-run unit_tests: @@ -114,23 +138,34 @@ jobs: dart pub ${{ matrix.deps }} && dart pub get + - name: Activate Melos + run: dart pub global activate melos + - name: Hot-reload Test working-directory: packages/relic run: >- dart --enable-vm-service test test/router/relic_app_test.dart -t hot-reload -c source + - name: Run Tests + run: melos run test --no-select -- --reporter=failures-only + - name: Run Tests With Coverage - working-directory: packages/relic - run: >- - dart pub global activate coverage && - dart pub global run coverage:test_with_coverage --branch-coverage -- --reporter=failures-only + if: ${{ matrix.os == 'ubuntu-latest' && matrix.dart_sdk == '3.8.1' && matrix.deps == 'upgrade' }} + run: | + dart pub global activate coverage + for package in packages/relic_core packages/relic_io packages/relic; do + if [ -d "$package/test" ]; then + echo "Running coverage for $package" + (cd "$package" && dart pub global run coverage:test_with_coverage --branch-coverage -- --reporter=failures-only) + fi + done - name: Upload Coverage uses: codecov/codecov-action@v5 - if: ${{ !cancelled() }} # upload coverage irrespective of test results + if: ${{ matrix.os == 'ubuntu-latest' && matrix.dart_sdk == '3.8.1' && matrix.deps == 'upgrade' && !cancelled() }} with: token: ${{ secrets.CODECOV_TOKEN }} - files: packages/relic/coverage/lcov.info + files: packages/relic_core/coverage/lcov.info,packages/relic_io/coverage/lcov.info,packages/relic/coverage/lcov.info docs-markdown-lint: name: Markdown lint for docs diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index c1e19870..e815b152 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -6,7 +6,23 @@ on: - "v[0-9]+.[0-9]+.[0-9]+*" # Matches tags like v1.2.3 and v1.2.3-pre.1 jobs: - publish: + publish-core: + permissions: + id-token: write + uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 + with: + working-directory: packages/relic_core + + publish-io: + needs: publish-core + permissions: + id-token: write + uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 + with: + working-directory: packages/relic_io + + publish-relic: + needs: publish-io permissions: id-token: write uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 From 04c83b9ad45a8a52e9cfa41a5d86b6e025872d49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Wed, 10 Dec 2025 10:02:46 +0100 Subject: [PATCH 11/14] refactor: Move benchmarks to separate package --- .github/workflows/benchmark.yaml | 6 +++--- .../benchmark => benchmark/bin}/benchmark.dart | 2 +- .../lib/src}/completion_script_carapace.dart | 0 packages/benchmark/pubspec.yaml | 18 ++++++++++++++++++ packages/relic/pubspec.yaml | 6 ------ pubspec.yaml | 2 ++ 6 files changed, 24 insertions(+), 10 deletions(-) rename packages/{relic/benchmark => benchmark/bin}/benchmark.dart (99%) rename packages/{relic/benchmark => benchmark/lib/src}/completion_script_carapace.dart (100%) create mode 100644 packages/benchmark/pubspec.yaml diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index 1c24d0f0..5f14f8a1 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -41,10 +41,10 @@ jobs: - name: Run Benchmark id: run-benchmark - working-directory: packages/relic + working-directory: packages/benchmark run: | - dart compile exe benchmark/benchmark.dart - ./benchmark/benchmark.exe run --store-in-git-notes --verbose + dart compile exe bin/benchmark.dart + ./bin/benchmark.exe run --store-in-git-notes --verbose - name: Push Benchmark Data # This step runs only if the pull request is NOT from a fork. diff --git a/packages/relic/benchmark/benchmark.dart b/packages/benchmark/bin/benchmark.dart similarity index 99% rename from packages/relic/benchmark/benchmark.dart rename to packages/benchmark/bin/benchmark.dart index cd744e7f..98ab95fd 100644 --- a/packages/relic/benchmark/benchmark.dart +++ b/packages/benchmark/bin/benchmark.dart @@ -13,7 +13,7 @@ import 'package:relic/relic.dart'; import 'package:routingkit/routingkit.dart' as routingkit; import 'package:spanner/spanner.dart' as spanner; -import 'completion_script_carapace.dart'; +import 'package:benchmark/src/completion_script_carapace.dart'; late final List indexes; late final List staticRoutesToLookup; diff --git a/packages/relic/benchmark/completion_script_carapace.dart b/packages/benchmark/lib/src/completion_script_carapace.dart similarity index 100% rename from packages/relic/benchmark/completion_script_carapace.dart rename to packages/benchmark/lib/src/completion_script_carapace.dart diff --git a/packages/benchmark/pubspec.yaml b/packages/benchmark/pubspec.yaml new file mode 100644 index 00000000..751bd1d9 --- /dev/null +++ b/packages/benchmark/pubspec.yaml @@ -0,0 +1,18 @@ +name: benchmark +description: Benchmarks for Relic router. +publish_to: none + +environment: + sdk: ^3.7.0 + +resolution: workspace + +dependencies: + benchmark_harness: ^2.3.1 + cli_tools: ^0.9.0 + config: ^0.8.3 + git: ^2.2.1 + path: ^1.8.3 + relic: ^0.13.2 + routingkit: ^5.1.2 + spanner: ^1.0.5 diff --git a/packages/relic/pubspec.yaml b/packages/relic/pubspec.yaml index f692c931..1489c858 100644 --- a/packages/relic/pubspec.yaml +++ b/packages/relic/pubspec.yaml @@ -20,10 +20,6 @@ dependencies: dev_dependencies: async: ^2.11.0 - benchmark_harness: ^2.3.1 - cli_tools: ^0.9.0 - config: ^0.8.3 - git: ^2.2.1 http: ^1.1.0 http_parser: ^4.0.2 lints: ">=5.0.0 <7.0.0" @@ -31,9 +27,7 @@ dev_dependencies: mime: ">=1.0.6 <3.0.0" mockito: ^5.4.4 path: ^1.8.3 - routingkit: ^5.1.2 serverpod_lints: ^3.0.0 - spanner: ^1.0.5 test: ^1.25.10 test_descriptor: ^2.0.1 vm_service: ^15.0.0 diff --git a/pubspec.yaml b/pubspec.yaml index ac0158a5..cb0cc8c9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,6 +5,8 @@ environment: sdk: ^3.8.0 workspace: + - packages/benchmark + - packages/examples - packages/relic - packages/relic_core - packages/relic_io From 607fb6e47af800590917ac2d9aabf0a6e3b0963f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Wed, 10 Dec 2025 10:02:46 +0100 Subject: [PATCH 12/14] refactor: Move examples to separate package --- doc/site/Makefile | 2 +- doc/site/docs/_example | 2 +- .../_static_files/hello.txt | 0 .../_static_files/logo.svg | 0 .../advanced/multi_isolate.dart | 0 .../example => examples}/basic/as_handle.dart | 0 .../example => examples}/basic/body.dart | 0 .../example => examples}/basic/handler.dart | 0 .../basic/relic_shelf.dart | 0 .../basic/static_files.dart | 0 .../example => examples}/context/context.dart | 0 .../context/context_property.dart | 0 packages/examples/example.dart | 34 +++++++++++++++++++ .../example => examples}/middleware/auth.dart | 0 .../example => examples}/middleware/cors.dart | 0 .../middleware/example.dart | 0 .../middleware/middleware.dart | 0 .../middleware/pipeline.dart | 0 packages/examples/pubspec.yaml | 11 ++++++ .../routing/basic_routing.dart | 0 .../routing/dynamic_segments.dart | 0 .../routing/pipeline.dart | 0 .../example => examples}/routing/request.dart | 0 .../routing/request_response.dart | 0 .../routing/response.dart | 0 packages/relic/example/example.dart | 25 ++------------ packages/relic_core/example/example.dart | 17 ++++++++++ packages/relic_io/example/example.dart | 19 +++++++++++ 28 files changed, 85 insertions(+), 25 deletions(-) rename packages/{relic/example => examples}/_static_files/hello.txt (100%) rename packages/{relic/example => examples}/_static_files/logo.svg (100%) rename packages/{relic/example => examples}/advanced/multi_isolate.dart (100%) rename packages/{relic/example => examples}/basic/as_handle.dart (100%) rename packages/{relic/example => examples}/basic/body.dart (100%) rename packages/{relic/example => examples}/basic/handler.dart (100%) rename packages/{relic/example => examples}/basic/relic_shelf.dart (100%) rename packages/{relic/example => examples}/basic/static_files.dart (100%) rename packages/{relic/example => examples}/context/context.dart (100%) rename packages/{relic/example => examples}/context/context_property.dart (100%) create mode 100644 packages/examples/example.dart rename packages/{relic/example => examples}/middleware/auth.dart (100%) rename packages/{relic/example => examples}/middleware/cors.dart (100%) rename packages/{relic/example => examples}/middleware/example.dart (100%) rename packages/{relic/example => examples}/middleware/middleware.dart (100%) rename packages/{relic/example => examples}/middleware/pipeline.dart (100%) create mode 100644 packages/examples/pubspec.yaml rename packages/{relic/example => examples}/routing/basic_routing.dart (100%) rename packages/{relic/example => examples}/routing/dynamic_segments.dart (100%) rename packages/{relic/example => examples}/routing/pipeline.dart (100%) rename packages/{relic/example => examples}/routing/request.dart (100%) rename packages/{relic/example => examples}/routing/request_response.dart (100%) rename packages/{relic/example => examples}/routing/response.dart (100%) create mode 100644 packages/relic_core/example/example.dart create mode 100644 packages/relic_io/example/example.dart diff --git a/doc/site/Makefile b/doc/site/Makefile index fb4646f8..e0032e55 100644 --- a/doc/site/Makefile +++ b/doc/site/Makefile @@ -3,7 +3,7 @@ # Extract version from command line (e.g., "make version 1.2.3") # Filter out known targets to get the version argument VERSION := $(filter-out install start version,$(MAKECMDGOALS)) -EXAMPLE_SOURCE_DIR := $(abspath $(CURDIR)/../../packages/relic/example) +EXAMPLE_SOURCE_DIR := $(abspath $(CURDIR)/../../packages/examples) VERSIONED_EXAMPLE_DIR := versioned_docs/version-$(VERSION)/_example install: diff --git a/doc/site/docs/_example b/doc/site/docs/_example index 16d3915d..11cb9466 120000 --- a/doc/site/docs/_example +++ b/doc/site/docs/_example @@ -1 +1 @@ -../../../packages/relic/example \ No newline at end of file +../../../packages/examples \ No newline at end of file diff --git a/packages/relic/example/_static_files/hello.txt b/packages/examples/_static_files/hello.txt similarity index 100% rename from packages/relic/example/_static_files/hello.txt rename to packages/examples/_static_files/hello.txt diff --git a/packages/relic/example/_static_files/logo.svg b/packages/examples/_static_files/logo.svg similarity index 100% rename from packages/relic/example/_static_files/logo.svg rename to packages/examples/_static_files/logo.svg diff --git a/packages/relic/example/advanced/multi_isolate.dart b/packages/examples/advanced/multi_isolate.dart similarity index 100% rename from packages/relic/example/advanced/multi_isolate.dart rename to packages/examples/advanced/multi_isolate.dart diff --git a/packages/relic/example/basic/as_handle.dart b/packages/examples/basic/as_handle.dart similarity index 100% rename from packages/relic/example/basic/as_handle.dart rename to packages/examples/basic/as_handle.dart diff --git a/packages/relic/example/basic/body.dart b/packages/examples/basic/body.dart similarity index 100% rename from packages/relic/example/basic/body.dart rename to packages/examples/basic/body.dart diff --git a/packages/relic/example/basic/handler.dart b/packages/examples/basic/handler.dart similarity index 100% rename from packages/relic/example/basic/handler.dart rename to packages/examples/basic/handler.dart diff --git a/packages/relic/example/basic/relic_shelf.dart b/packages/examples/basic/relic_shelf.dart similarity index 100% rename from packages/relic/example/basic/relic_shelf.dart rename to packages/examples/basic/relic_shelf.dart diff --git a/packages/relic/example/basic/static_files.dart b/packages/examples/basic/static_files.dart similarity index 100% rename from packages/relic/example/basic/static_files.dart rename to packages/examples/basic/static_files.dart diff --git a/packages/relic/example/context/context.dart b/packages/examples/context/context.dart similarity index 100% rename from packages/relic/example/context/context.dart rename to packages/examples/context/context.dart diff --git a/packages/relic/example/context/context_property.dart b/packages/examples/context/context_property.dart similarity index 100% rename from packages/relic/example/context/context_property.dart rename to packages/examples/context/context_property.dart diff --git a/packages/examples/example.dart b/packages/examples/example.dart new file mode 100644 index 00000000..fd8e6857 --- /dev/null +++ b/packages/examples/example.dart @@ -0,0 +1,34 @@ +// doctag +import 'package:relic/relic.dart'; + +/// A simple 'Hello World' server demonstrating basic Relic usage. +Future main() async { + // Setup the app. + final app = + RelicApp() + // Route with parameters (:name & :age). + ..get('/user/:name/age/:age', helloHandler) + // Middleware on all paths below '/'. + ..use('/', logRequests()) + // Custom fallback - optional (default is 404 Not Found). + ..fallback = respondWith( + (_) => Response.notFound( + body: Body.fromString("Sorry, that doesn't compute.\n"), + ), + ); + + // Start the server (defaults to using port 8080). + await app.serve(); +} + +/// Handles requests to the hello endpoint with path parameters. +Response helloHandler(final Request req) { + final name = req.rawPathParameters[#name]; + final age = int.parse(req.rawPathParameters[#age]!); + + return Response.ok( + body: Body.fromString('Hello, $name! To think you are $age years old.\n'), + ); +} + +// end:doctag diff --git a/packages/relic/example/middleware/auth.dart b/packages/examples/middleware/auth.dart similarity index 100% rename from packages/relic/example/middleware/auth.dart rename to packages/examples/middleware/auth.dart diff --git a/packages/relic/example/middleware/cors.dart b/packages/examples/middleware/cors.dart similarity index 100% rename from packages/relic/example/middleware/cors.dart rename to packages/examples/middleware/cors.dart diff --git a/packages/relic/example/middleware/example.dart b/packages/examples/middleware/example.dart similarity index 100% rename from packages/relic/example/middleware/example.dart rename to packages/examples/middleware/example.dart diff --git a/packages/relic/example/middleware/middleware.dart b/packages/examples/middleware/middleware.dart similarity index 100% rename from packages/relic/example/middleware/middleware.dart rename to packages/examples/middleware/middleware.dart diff --git a/packages/relic/example/middleware/pipeline.dart b/packages/examples/middleware/pipeline.dart similarity index 100% rename from packages/relic/example/middleware/pipeline.dart rename to packages/examples/middleware/pipeline.dart diff --git a/packages/examples/pubspec.yaml b/packages/examples/pubspec.yaml new file mode 100644 index 00000000..52d1cce9 --- /dev/null +++ b/packages/examples/pubspec.yaml @@ -0,0 +1,11 @@ +name: examples +description: Examples for Relic web server framework. +publish_to: none + +environment: + sdk: ^3.7.0 + +resolution: workspace + +dependencies: + relic: ^0.13.2 diff --git a/packages/relic/example/routing/basic_routing.dart b/packages/examples/routing/basic_routing.dart similarity index 100% rename from packages/relic/example/routing/basic_routing.dart rename to packages/examples/routing/basic_routing.dart diff --git a/packages/relic/example/routing/dynamic_segments.dart b/packages/examples/routing/dynamic_segments.dart similarity index 100% rename from packages/relic/example/routing/dynamic_segments.dart rename to packages/examples/routing/dynamic_segments.dart diff --git a/packages/relic/example/routing/pipeline.dart b/packages/examples/routing/pipeline.dart similarity index 100% rename from packages/relic/example/routing/pipeline.dart rename to packages/examples/routing/pipeline.dart diff --git a/packages/relic/example/routing/request.dart b/packages/examples/routing/request.dart similarity index 100% rename from packages/relic/example/routing/request.dart rename to packages/examples/routing/request.dart diff --git a/packages/relic/example/routing/request_response.dart b/packages/examples/routing/request_response.dart similarity index 100% rename from packages/relic/example/routing/request_response.dart rename to packages/examples/routing/request_response.dart diff --git a/packages/relic/example/routing/response.dart b/packages/examples/routing/response.dart similarity index 100% rename from packages/relic/example/routing/response.dart rename to packages/examples/routing/response.dart diff --git a/packages/relic/example/example.dart b/packages/relic/example/example.dart index fd8e6857..e11faf51 100644 --- a/packages/relic/example/example.dart +++ b/packages/relic/example/example.dart @@ -1,34 +1,13 @@ -// doctag import 'package:relic/relic.dart'; /// A simple 'Hello World' server demonstrating basic Relic usage. Future main() async { - // Setup the app. - final app = - RelicApp() - // Route with parameters (:name & :age). - ..get('/user/:name/age/:age', helloHandler) - // Middleware on all paths below '/'. - ..use('/', logRequests()) - // Custom fallback - optional (default is 404 Not Found). - ..fallback = respondWith( - (_) => Response.notFound( - body: Body.fromString("Sorry, that doesn't compute.\n"), - ), - ); + final app = RelicApp()..get('/hello/:name', helloHandler); - // Start the server (defaults to using port 8080). await app.serve(); } -/// Handles requests to the hello endpoint with path parameters. Response helloHandler(final Request req) { final name = req.rawPathParameters[#name]; - final age = int.parse(req.rawPathParameters[#age]!); - - return Response.ok( - body: Body.fromString('Hello, $name! To think you are $age years old.\n'), - ); + return Response.ok(body: Body.fromString('Hello, $name!\n')); } - -// end:doctag diff --git a/packages/relic_core/example/example.dart b/packages/relic_core/example/example.dart new file mode 100644 index 00000000..45a3d3b8 --- /dev/null +++ b/packages/relic_core/example/example.dart @@ -0,0 +1,17 @@ +import 'package:relic_core/relic_core.dart'; + +/// Example demonstrating relic_core's platform-agnostic routing and handlers. +void main() { + // Create a router with handlers + final router = + Router() + ..get('/hello', (_) => Response.ok(body: Body.fromString('Hello!'))) + ..get('/users/:id', (final req) { + final id = req.rawPathParameters[#id]; + return Response.ok(body: Body.fromString('User: $id')); + }); + + // Look up a route + final result = router.lookup(Method.get, '/hello'); + print('Found handler: ${result is RouterMatch}'); +} diff --git a/packages/relic_io/example/example.dart b/packages/relic_io/example/example.dart new file mode 100644 index 00000000..b9cfb25f --- /dev/null +++ b/packages/relic_io/example/example.dart @@ -0,0 +1,19 @@ +import 'dart:io'; + +import 'package:relic_core/relic_core.dart'; +import 'package:relic_io/relic_io.dart'; + +/// Example demonstrating relic_io's dart:io server binding. +Future main() async { + final handler = const Pipeline() + .addMiddleware(logRequests()) + .addHandler((_) => Response.ok(body: Body.fromString('Hello!'))); + + // Create server with IOAdapter factory + final server = RelicServer( + () => IOAdapter.bind(InternetAddress.loopbackIPv4, port: 8080), + ); + + await server.mountAndStart(handler); + print('Serving at http://localhost:${server.port}'); +} From b1d05a7ec3efa65025e9cdc864084de4040eecf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Wed, 10 Dec 2025 11:15:35 +0100 Subject: [PATCH 13/14] chore: Add LICENSE symlinks to published packages --- packages/relic/LICENSE | 1 + packages/relic_core/LICENSE | 1 + packages/relic_io/LICENSE | 1 + 3 files changed, 3 insertions(+) create mode 120000 packages/relic/LICENSE create mode 120000 packages/relic_core/LICENSE create mode 120000 packages/relic_io/LICENSE diff --git a/packages/relic/LICENSE b/packages/relic/LICENSE new file mode 120000 index 00000000..30cff740 --- /dev/null +++ b/packages/relic/LICENSE @@ -0,0 +1 @@ +../../LICENSE \ No newline at end of file diff --git a/packages/relic_core/LICENSE b/packages/relic_core/LICENSE new file mode 120000 index 00000000..30cff740 --- /dev/null +++ b/packages/relic_core/LICENSE @@ -0,0 +1 @@ +../../LICENSE \ No newline at end of file diff --git a/packages/relic_io/LICENSE b/packages/relic_io/LICENSE new file mode 120000 index 00000000..30cff740 --- /dev/null +++ b/packages/relic_io/LICENSE @@ -0,0 +1 @@ +../../LICENSE \ No newline at end of file From 1285f38c591d4a466a91d3b92609b5904f286e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Overg=C3=A5rd=20Nielsen?= Date: Sun, 14 Dec 2025 13:22:03 +0100 Subject: [PATCH 14/14] chore: Upgrade melos to 7.4.0-dev.0 (for Dart 3.8 support) --- packages/relic/pubspec.yaml | 10 +++++----- packages/relic_core/pubspec.yaml | 6 +++--- pubspec.yaml | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/relic/pubspec.yaml b/packages/relic/pubspec.yaml index 1489c858..f649df30 100644 --- a/packages/relic/pubspec.yaml +++ b/packages/relic/pubspec.yaml @@ -19,11 +19,11 @@ dependencies: relic_io: ^0.13.2 dev_dependencies: - async: ^2.11.0 - http: ^1.1.0 + async: ^2.13.0 + http: ^1.5.0 http_parser: ^4.0.2 lints: ">=5.0.0 <7.0.0" - meta: ^1.15.0 + meta: ^1.16.0 mime: ">=1.0.6 <3.0.0" mockito: ^5.4.4 path: ^1.8.3 @@ -36,7 +36,7 @@ dev_dependencies: # The following are not used directly, but are included transitively. # Due to bad semver hygiene we need to bound the versions higher than # our direct dependencies indicate. - file: ^7.0.0 # ignore: sort_pub_dependencies + file: ^7.0.1 # ignore: sort_pub_dependencies frontend_server_client: ^4.0.0 - pub_semver: ^2.1.4 + pub_semver: ^2.2.0 watcher: ^1.1.0 diff --git a/packages/relic_core/pubspec.yaml b/packages/relic_core/pubspec.yaml index de2b56d8..855c4bf3 100644 --- a/packages/relic_core/pubspec.yaml +++ b/packages/relic_core/pubspec.yaml @@ -15,12 +15,12 @@ environment: resolution: workspace dependencies: - async: ^2.11.0 - collection: ^1.18.0 + async: ^2.13.0 + collection: ^1.19.0 convert: ^3.1.1 crypto: ^3.0.0 http_parser: ^4.0.2 - meta: ^1.15.0 + meta: ^1.16.0 mime: ">=1.0.6 <3.0.0" path: ^1.8.3 stack_trace: ^1.10.0 diff --git a/pubspec.yaml b/pubspec.yaml index cb0cc8c9..a1e5df5e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -12,7 +12,7 @@ workspace: - packages/relic_io dev_dependencies: - melos: ^7.0.0 + melos: ^7.4.0-dev.0 melos: packages: