diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml index c533d722..5f14f8a1 100644 --- a/.github/workflows/benchmark.yaml +++ b/.github/workflows/benchmark.yaml @@ -41,9 +41,10 @@ jobs: - name: Run Benchmark id: run-benchmark + 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/.github/workflows/dart-tests.yaml b/.github/workflows/dart-tests.yaml index a134c5dd..d63fab81 100644 --- a/.github/workflows/dart-tests.yaml +++ b/.github/workflows/dart-tests.yaml @@ -11,11 +11,11 @@ on: env: PUB_CACHE_PATH: ~/.pub-cache - LOWEST_DART_SDK: "3.7.0" + LOWEST_DART_SDK: "3.8.1" jobs: - build: - name: Verify Build + analyze: + name: Analyze runs-on: ${{ matrix.os }} strategy: matrix: @@ -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 @@ -41,18 +41,12 @@ 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 - # 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 - run: >- - dart pub downgrade --tighten && - dart pub upgrade --major-versions && - git diff-files --quiet - - name: Analyze (downgraded) run: >- dart pub downgrade && @@ -65,29 +59,63 @@ 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/${{ 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/${{ 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/${{ matrix.package }} 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 @@ -110,21 +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 - 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: 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 73e45694..e815b152 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -1,12 +1,30 @@ -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-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 + with: + working-directory: packages/relic 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/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/doc/site/Makefile b/doc/site/Makefile index e67d267a..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)/../../example) +EXAMPLE_SOURCE_DIR := $(abspath $(CURDIR)/../../packages/examples) 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..11cb9466 120000 --- a/doc/site/docs/_example +++ b/doc/site/docs/_example @@ -1 +1 @@ -../../../example \ No newline at end of file +../../../packages/examples \ No newline at end of file diff --git a/lib/io_adapter.dart b/lib/io_adapter.dart deleted file mode 100644 index c6faada4..00000000 --- a/lib/io_adapter.dart +++ /dev/null @@ -1,3 +0,0 @@ -export 'src/adapter/io/bind_http_server.dart'; -export 'src/adapter/io/io_adapter.dart'; -export 'src/adapter/io/io_serve.dart'; diff --git a/benchmark/benchmark.dart b/packages/benchmark/bin/benchmark.dart similarity index 99% rename from benchmark/benchmark.dart rename to packages/benchmark/bin/benchmark.dart index cd744e7f..98ab95fd 100644 --- a/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/benchmark/completion_script_carapace.dart b/packages/benchmark/lib/src/completion_script_carapace.dart similarity index 100% rename from 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/example/_static_files/hello.txt b/packages/examples/_static_files/hello.txt similarity index 100% rename from example/_static_files/hello.txt rename to packages/examples/_static_files/hello.txt diff --git a/example/_static_files/logo.svg b/packages/examples/_static_files/logo.svg similarity index 100% rename from example/_static_files/logo.svg rename to packages/examples/_static_files/logo.svg diff --git a/example/advanced/multi_isolate.dart b/packages/examples/advanced/multi_isolate.dart similarity index 97% rename from example/advanced/multi_isolate.dart rename to packages/examples/advanced/multi_isolate.dart index 663ef817..f68e9c64 100644 --- a/example/advanced/multi_isolate.dart +++ b/packages/examples/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/example/basic/as_handle.dart b/packages/examples/basic/as_handle.dart similarity index 95% rename from example/basic/as_handle.dart rename to packages/examples/basic/as_handle.dart index 4efacd7b..9cf24266 100644 --- a/example/basic/as_handle.dart +++ b/packages/examples/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/example/basic/body.dart b/packages/examples/basic/body.dart similarity index 99% rename from example/basic/body.dart rename to packages/examples/basic/body.dart index a2e7a71a..908f80e6 100644 --- a/example/basic/body.dart +++ b/packages/examples/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/example/basic/handler.dart b/packages/examples/basic/handler.dart similarity index 98% rename from example/basic/handler.dart rename to packages/examples/basic/handler.dart index b10723cb..fabe1230 100644 --- a/example/basic/handler.dart +++ b/packages/examples/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/example/basic/relic_shelf.dart b/packages/examples/basic/relic_shelf.dart similarity index 86% rename from example/basic/relic_shelf.dart rename to packages/examples/basic/relic_shelf.dart index 1674e2fa..3cd2011d 100644 --- a/example/basic/relic_shelf.dart +++ b/packages/examples/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/example/basic/static_files.dart b/packages/examples/basic/static_files.dart similarity index 98% rename from example/basic/static_files.dart rename to packages/examples/basic/static_files.dart index 2df8e709..44a6cf97 100644 --- a/example/basic/static_files.dart +++ b/packages/examples/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/example/context/context.dart b/packages/examples/context/context.dart similarity index 99% rename from example/context/context.dart rename to packages/examples/context/context.dart index 52baba31..ffe38348 100644 --- a/example/context/context.dart +++ b/packages/examples/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/example/context/context_property.dart b/packages/examples/context/context_property.dart similarity index 97% rename from example/context/context_property.dart rename to packages/examples/context/context_property.dart index f38629d2..59cedb5f 100644 --- a/example/context/context_property.dart +++ b/packages/examples/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/example/example.dart b/packages/examples/example.dart similarity index 96% rename from example/example.dart rename to packages/examples/example.dart index 299fea46..fd8e6857 100644 --- a/example/example.dart +++ b/packages/examples/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/example/middleware/auth.dart b/packages/examples/middleware/auth.dart similarity index 97% rename from example/middleware/auth.dart rename to packages/examples/middleware/auth.dart index 631b061a..517629e8 100644 --- a/example/middleware/auth.dart +++ b/packages/examples/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/example/middleware/cors.dart b/packages/examples/middleware/cors.dart similarity index 97% rename from example/middleware/cors.dart rename to packages/examples/middleware/cors.dart index c9064fc9..e526e282 100644 --- a/example/middleware/cors.dart +++ b/packages/examples/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/example/middleware/example.dart b/packages/examples/middleware/example.dart similarity index 97% rename from example/middleware/example.dart rename to packages/examples/middleware/example.dart index 023bbacc..34c2ce31 100644 --- a/example/middleware/example.dart +++ b/packages/examples/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/example/middleware/middleware.dart b/packages/examples/middleware/middleware.dart similarity index 98% rename from example/middleware/middleware.dart rename to packages/examples/middleware/middleware.dart index ba5417da..b5cc22a3 100644 --- a/example/middleware/middleware.dart +++ b/packages/examples/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/example/middleware/pipeline.dart b/packages/examples/middleware/pipeline.dart similarity index 97% rename from example/middleware/pipeline.dart rename to packages/examples/middleware/pipeline.dart index 5baa120b..e44538e8 100644 --- a/example/middleware/pipeline.dart +++ b/packages/examples/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/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/example/routing/basic_routing.dart b/packages/examples/routing/basic_routing.dart similarity index 98% rename from example/routing/basic_routing.dart rename to packages/examples/routing/basic_routing.dart index ed84cc40..711789ad 100644 --- a/example/routing/basic_routing.dart +++ b/packages/examples/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/example/routing/dynamic_segments.dart b/packages/examples/routing/dynamic_segments.dart similarity index 98% rename from example/routing/dynamic_segments.dart rename to packages/examples/routing/dynamic_segments.dart index ec931c8a..054d6f37 100644 --- a/example/routing/dynamic_segments.dart +++ b/packages/examples/routing/dynamic_segments.dart @@ -1,4 +1,3 @@ -import 'package:relic/io_adapter.dart'; import 'package:relic/relic.dart'; // doctag diff --git a/example/routing/pipeline.dart b/packages/examples/routing/pipeline.dart similarity index 95% rename from example/routing/pipeline.dart rename to packages/examples/routing/pipeline.dart index de47fa0d..3def2269 100644 --- a/example/routing/pipeline.dart +++ b/packages/examples/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/example/routing/request.dart b/packages/examples/routing/request.dart similarity index 99% rename from example/routing/request.dart rename to packages/examples/routing/request.dart index 9917e72f..38feddaf 100644 --- a/example/routing/request.dart +++ b/packages/examples/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/example/routing/request_response.dart b/packages/examples/routing/request_response.dart similarity index 99% rename from example/routing/request_response.dart rename to packages/examples/routing/request_response.dart index 27801135..a6f58115 100644 --- a/example/routing/request_response.dart +++ b/packages/examples/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/example/routing/response.dart b/packages/examples/routing/response.dart similarity index 95% rename from example/routing/response.dart rename to packages/examples/routing/response.dart index a6026de8..8f7785be 100644 --- a/example/routing/response.dart +++ b/packages/examples/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/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/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/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 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/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/packages/relic/example/example.dart b/packages/relic/example/example.dart new file mode 100644 index 00000000..e11faf51 --- /dev/null +++ b/packages/relic/example/example.dart @@ -0,0 +1,13 @@ +import 'package:relic/relic.dart'; + +/// A simple 'Hello World' server demonstrating basic Relic usage. +Future main() async { + final app = RelicApp()..get('/hello/:name', helloHandler); + + await app.serve(); +} + +Response helloHandler(final Request req) { + final name = req.rawPathParameters[#name]; + return Response.ok(body: Body.fromString('Hello, $name!\n')); +} diff --git a/packages/relic/lib/io_adapter.dart b/packages/relic/lib/io_adapter.dart new file mode 100644 index 00000000..ce54806e --- /dev/null +++ b/packages/relic/lib/io_adapter.dart @@ -0,0 +1,7 @@ +/// 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 new file mode 100644 index 00000000..eddf70d9 --- /dev/null +++ b/packages/relic/lib/relic.dart @@ -0,0 +1,8 @@ +/// Relic web server framework. +/// +/// This package re-exports [relic_core] and [relic_io] for convenience. +library; + +// Re-export all of relic_core and relic_io +export 'package:relic_core/relic_core.dart'; +export 'package:relic_io/relic_io.dart'; diff --git a/packages/relic/pubspec.yaml b/packages/relic/pubspec.yaml new file mode 100644 index 00000000..f649df30 --- /dev/null +++ b/packages/relic/pubspec.yaml @@ -0,0 +1,42 @@ +name: relic +description: A lightweight and flexible web server inspired by Shelf for building APIs and backend services. +version: 0.13.2 +repository: https://github.com/serverpod/relic +homepage: https://docs.dartrelic.dev/ +topics: + - server + - web + - backend + - http + +environment: + sdk: ^3.7.0 + +resolution: workspace + +dependencies: + relic_core: ^0.13.2 + relic_io: ^0.13.2 + +dev_dependencies: + async: ^2.13.0 + http: ^1.5.0 + http_parser: ^4.0.2 + lints: ">=5.0.0 <7.0.0" + meta: ^1.16.0 + mime: ">=1.0.6 <3.0.0" + mockito: ^5.4.4 + path: ^1.8.3 + serverpod_lints: ^3.0.0 + 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 + # our direct dependencies indicate. + file: ^7.0.1 # ignore: sort_pub_dependencies + frontend_server_client: ^4.0.0 + pub_semver: ^2.2.0 + watcher: ^1.1.0 diff --git a/test/adapter/connection_info_test.dart b/packages/relic/test/adapter/connection_info_test.dart similarity index 97% rename from test/adapter/connection_info_test.dart rename to packages/relic/test/adapter/connection_info_test.dart index 5c9490e0..bf2bc38f 100644 --- a/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/test/body/body_max_length_test.dart b/packages/relic/test/body/body_max_length_test.dart similarity index 99% rename from test/body/body_max_length_test.dart rename to packages/relic/test/body/body_max_length_test.dart index c27ab8b2..c870dbbb 100644 --- a/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/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 99% rename from test/handler/cascade_test.dart rename to packages/relic/test/handler/cascade_test.dart index a6b06d7a..9114f44b 100644 --- a/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/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 97% rename from test/headers/headers_accessor_test.dart rename to packages/relic/test/headers/headers_accessor_test.dart index 63d8823d..46718301 100644 --- a/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/test/headers/headers_test_utils.dart b/packages/relic/test/headers/headers_test_utils.dart similarity index 98% rename from test/headers/headers_test_utils.dart rename to packages/relic/test/headers/headers_test_utils.dart index bcb488a9..81ca5b93 100644 --- a/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/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/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/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/message/apply_headers_test.dart b/packages/relic/test/message/apply_headers_test.dart similarity index 99% rename from test/message/apply_headers_test.dart rename to packages/relic/test/message/apply_headers_test.dart index afd2b0e3..5999d668 100644 --- a/test/message/apply_headers_test.dart +++ b/packages/relic/test/message/apply_headers_test.dart @@ -6,7 +6,6 @@ import 'dart:typed_data'; import 'package:http_parser/http_parser.dart'; import 'package:mockito/mockito.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/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 99% rename from test/message/request_test.dart rename to packages/relic/test/message/request_test.dart index 544203c3..0608de2f 100644 --- a/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/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 97% rename from test/middleware/log_middleware_test.dart rename to packages/relic/test/middleware/log_middleware_test.dart index 246bd6c7..7c8589ca 100644 --- a/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/test/middleware/routing_middleware_test.dart b/packages/relic/test/middleware/routing_middleware_test.dart similarity index 99% rename from test/middleware/routing_middleware_test.dart rename to packages/relic/test/middleware/routing_middleware_test.dart index 887a22d7..3a3c4a52 100644 --- a/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/test/path/path_param_test.dart b/packages/relic/test/path/path_param_test.dart similarity index 99% rename from test/path/path_param_test.dart rename to packages/relic/test/path/path_param_test.dart index b5a5730d..6c5a195a 100644 --- a/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/test/query/query_param_test.dart b/packages/relic/test/query/query_param_test.dart similarity index 98% rename from test/query/query_param_test.dart rename to packages/relic/test/query/query_param_test.dart index f3a2c96c..0615489e 100644 --- a/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/test/relic_server_connections_info_test.dart b/packages/relic/test/relic_server_connections_info_test.dart similarity index 98% rename from test/relic_server_connections_info_test.dart rename to packages/relic/test/relic_server_connections_info_test.dart index b70b7d2b..51dc3c17 100644 --- a/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/test/relic_server_graceful_shutdown_test.dart b/packages/relic/test/relic_server_graceful_shutdown_test.dart similarity index 99% rename from test/relic_server_graceful_shutdown_test.dart rename to packages/relic/test/relic_server_graceful_shutdown_test.dart index 1df400e9..a713bdb1 100644 --- a/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/test/relic_server_serve_test.dart b/packages/relic/test/relic_server_serve_test.dart similarity index 99% rename from test/relic_server_serve_test.dart rename to packages/relic/test/relic_server_serve_test.dart index 20bf0db4..4fa6a82e 100644 --- a/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/test/relic_server_test.dart b/packages/relic/test/relic_server_test.dart similarity index 97% rename from test/relic_server_test.dart rename to packages/relic/test/relic_server_test.dart index 58f728c2..9a88a942 100644 --- a/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/test/router/relic_app_test.dart b/packages/relic/test/router/relic_app_test.dart similarity index 98% rename from test/router/relic_app_test.dart rename to packages/relic/test/router/relic_app_test.dart index 230f62c3..5663897e 100644 --- a/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/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/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 98% rename from test/static/alternative_root_test.dart rename to packages/relic/test/static/alternative_root_test.dart index 0063ccc2..1f713edc 100644 --- a/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/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 99% rename from test/static/cache_busting_config_test.dart rename to packages/relic/test/static/cache_busting_config_test.dart index c10603bc..d2509b76 100644 --- a/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/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 98% rename from test/static/symbolic_link_test.dart rename to packages/relic/test/static/symbolic_link_test.dart index bc5899b5..f63442ab 100644 --- a/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/test/static/test_util.dart b/packages/relic/test/static/test_util.dart similarity index 92% rename from test/static/test_util.dart rename to packages/relic/test/static/test_util.dart index a18d82df..f76fd891 100644 --- a/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/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 97% rename from test/util/test_util.dart rename to packages/relic/test/util/test_util.dart index 551778ed..0816d3d6 100644 --- a/test/util/test_util.dart +++ b/packages/relic/test/util/test_util.dart @@ -3,9 +3,7 @@ import 'dart:convert'; 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/test/web_socket/web_socket_test.dart b/packages/relic/test/web_socket/web_socket_test.dart similarity index 99% rename from test/web_socket/web_socket_test.dart rename to packages/relic/test/web_socket/web_socket_test.dart index 701d1aa5..158b6863 100644 --- a/test/web_socket/web_socket_test.dart +++ b/packages/relic/test/web_socket/web_socket_test.dart @@ -5,7 +5,6 @@ import 'dart:isolate'; import 'dart:typed_data'; 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/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/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_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/lib/relic.dart b/packages/relic_core/lib/relic_core.dart similarity index 76% rename from lib/relic.dart rename to packages/relic_core/lib/relic_core.dart index df0868fb..4b788626 100644 --- a/lib/relic.dart +++ b/packages/relic_core/lib/relic_core.dart @@ -2,23 +2,26 @@ 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' hide RequestInternal; +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/io/static/cache_busting_config.dart' show CacheBustingConfig; -export 'src/io/static/static_handler.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; @@ -26,7 +29,11 @@ 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/lib/src/accessor/accessor.dart b/packages/relic_core/lib/src/accessor/accessor.dart similarity index 100% rename from lib/src/accessor/accessor.dart rename to packages/relic_core/lib/src/accessor/accessor.dart diff --git a/lib/src/adapter/adapter.dart b/packages/relic_core/lib/src/adapter/adapter.dart similarity index 100% rename from lib/src/adapter/adapter.dart rename to packages/relic_core/lib/src/adapter/adapter.dart diff --git a/lib/src/adapter/connection_info.dart b/packages/relic_core/lib/src/adapter/connection_info.dart similarity index 100% rename from lib/src/adapter/connection_info.dart rename to packages/relic_core/lib/src/adapter/connection_info.dart diff --git a/lib/src/adapter/relic_web_socket.dart b/packages/relic_core/lib/src/adapter/relic_web_socket.dart similarity index 100% rename from lib/src/adapter/relic_web_socket.dart rename to packages/relic_core/lib/src/adapter/relic_web_socket.dart diff --git a/lib/src/body/body.dart b/packages/relic_core/lib/src/body/body.dart similarity index 100% rename from lib/src/body/body.dart rename to packages/relic_core/lib/src/body/body.dart diff --git a/lib/src/body/types/body_type.dart b/packages/relic_core/lib/src/body/types/body_type.dart similarity index 100% rename from lib/src/body/types/body_type.dart rename to packages/relic_core/lib/src/body/types/body_type.dart diff --git a/lib/src/body/types/mime_type.dart b/packages/relic_core/lib/src/body/types/mime_type.dart similarity index 100% rename from lib/src/body/types/mime_type.dart rename to packages/relic_core/lib/src/body/types/mime_type.dart diff --git a/lib/src/context/message.dart b/packages/relic_core/lib/src/context/message.dart similarity index 100% rename from lib/src/context/message.dart rename to packages/relic_core/lib/src/context/message.dart diff --git a/lib/src/context/request.dart b/packages/relic_core/lib/src/context/request.dart similarity index 100% rename from lib/src/context/request.dart rename to packages/relic_core/lib/src/context/request.dart diff --git a/lib/src/context/response.dart b/packages/relic_core/lib/src/context/response.dart similarity index 100% rename from lib/src/context/response.dart rename to packages/relic_core/lib/src/context/response.dart diff --git a/lib/src/context/result.dart b/packages/relic_core/lib/src/context/result.dart similarity index 96% rename from lib/src/context/result.dart rename to packages/relic_core/lib/src/context/result.dart index 10c86020..5bc79921 100644 --- a/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/lib/src/handler/cascade.dart b/packages/relic_core/lib/src/handler/cascade.dart similarity index 100% rename from lib/src/handler/cascade.dart rename to packages/relic_core/lib/src/handler/cascade.dart diff --git a/lib/src/handler/handler.dart b/packages/relic_core/lib/src/handler/handler.dart similarity index 100% rename from lib/src/handler/handler.dart rename to packages/relic_core/lib/src/handler/handler.dart diff --git a/lib/src/handler/pipeline.dart b/packages/relic_core/lib/src/handler/pipeline.dart similarity index 100% rename from lib/src/handler/pipeline.dart rename to packages/relic_core/lib/src/handler/pipeline.dart diff --git a/lib/src/headers/codec.dart b/packages/relic_core/lib/src/headers/codec.dart similarity index 100% rename from lib/src/headers/codec.dart rename to packages/relic_core/lib/src/headers/codec.dart diff --git a/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 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/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/lib/src/headers/exception/header_exception.dart b/packages/relic_core/lib/src/headers/exception/header_exception.dart similarity index 100% rename from lib/src/headers/exception/header_exception.dart rename to packages/relic_core/lib/src/headers/exception/header_exception.dart diff --git a/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 lib/src/headers/extension/string_list_extensions.dart rename to packages/relic_core/lib/src/headers/extension/string_list_extensions.dart diff --git a/lib/src/headers/header_accessor.dart b/packages/relic_core/lib/src/headers/header_accessor.dart similarity index 100% rename from lib/src/headers/header_accessor.dart rename to packages/relic_core/lib/src/headers/header_accessor.dart diff --git a/lib/src/headers/headers.dart b/packages/relic_core/lib/src/headers/headers.dart similarity index 99% rename from lib/src/headers/headers.dart rename to packages/relic_core/lib/src/headers/headers.dart index de1c7d47..73069519 100644 --- a/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/lib/src/headers/mutable_headers.dart b/packages/relic_core/lib/src/headers/mutable_headers.dart similarity index 100% rename from lib/src/headers/mutable_headers.dart rename to packages/relic_core/lib/src/headers/mutable_headers.dart diff --git a/lib/src/headers/standard_headers_extensions.dart b/packages/relic_core/lib/src/headers/standard_headers_extensions.dart similarity index 100% rename from lib/src/headers/standard_headers_extensions.dart rename to packages/relic_core/lib/src/headers/standard_headers_extensions.dart diff --git a/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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/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 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/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 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/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/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 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/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 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/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/lib/src/headers/typed/typed_headers.dart b/packages/relic_core/lib/src/headers/typed/typed_headers.dart similarity index 100% rename from lib/src/headers/typed/typed_headers.dart rename to packages/relic_core/lib/src/headers/typed/typed_headers.dart diff --git a/lib/src/ip_address/endianness.dart b/packages/relic_core/lib/src/ip_address/endianness.dart similarity index 100% rename from lib/src/ip_address/endianness.dart rename to packages/relic_core/lib/src/ip_address/endianness.dart diff --git a/lib/src/ip_address/ip_address.dart b/packages/relic_core/lib/src/ip_address/ip_address.dart similarity index 100% rename from lib/src/ip_address/ip_address.dart rename to packages/relic_core/lib/src/ip_address/ip_address.dart diff --git a/lib/src/ip_address/ipv4_address.dart b/packages/relic_core/lib/src/ip_address/ipv4_address.dart similarity index 100% rename from lib/src/ip_address/ipv4_address.dart rename to packages/relic_core/lib/src/ip_address/ipv4_address.dart diff --git a/lib/src/ip_address/ipv6_address.dart b/packages/relic_core/lib/src/ip_address/ipv6_address.dart similarity index 100% rename from lib/src/ip_address/ipv6_address.dart rename to packages/relic_core/lib/src/ip_address/ipv6_address.dart diff --git a/lib/src/isolated_object.dart b/packages/relic_core/lib/src/isolated_object.dart similarity index 100% rename from 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/lib/src/middleware/context_property.dart b/packages/relic_core/lib/src/middleware/context_property.dart similarity index 100% rename from lib/src/middleware/context_property.dart rename to packages/relic_core/lib/src/middleware/context_property.dart diff --git a/lib/src/middleware/middleware.dart b/packages/relic_core/lib/src/middleware/middleware.dart similarity index 99% rename from lib/src/middleware/middleware.dart rename to packages/relic_core/lib/src/middleware/middleware.dart index 70f59ce9..a1642e7b 100644 --- a/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/lib/src/middleware/middleware_extensions.dart b/packages/relic_core/lib/src/middleware/middleware_extensions.dart similarity index 100% rename from lib/src/middleware/middleware_extensions.dart rename to packages/relic_core/lib/src/middleware/middleware_extensions.dart diff --git a/lib/src/middleware/middleware_logger.dart b/packages/relic_core/lib/src/middleware/middleware_logger.dart similarity index 97% rename from lib/src/middleware/middleware_logger.dart rename to packages/relic_core/lib/src/middleware/middleware_logger.dart index 970a8d90..b9248092 100644 --- a/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/lib/src/middleware/path_params.dart b/packages/relic_core/lib/src/middleware/path_params.dart similarity index 100% rename from lib/src/middleware/path_params.dart rename to packages/relic_core/lib/src/middleware/path_params.dart diff --git a/lib/src/middleware/routing_middleware.dart b/packages/relic_core/lib/src/middleware/routing_middleware.dart similarity index 100% rename from lib/src/middleware/routing_middleware.dart rename to packages/relic_core/lib/src/middleware/routing_middleware.dart diff --git a/lib/src/query/query_param.dart b/packages/relic_core/lib/src/query/query_param.dart similarity index 100% rename from lib/src/query/query_param.dart rename to packages/relic_core/lib/src/query/query_param.dart diff --git a/lib/src/relic_server.dart b/packages/relic_core/lib/src/relic_server.dart similarity index 100% rename from lib/src/relic_server.dart rename to packages/relic_core/lib/src/relic_server.dart diff --git a/lib/src/router/lookup_result.dart b/packages/relic_core/lib/src/router/lookup_result.dart similarity index 100% rename from lib/src/router/lookup_result.dart rename to packages/relic_core/lib/src/router/lookup_result.dart diff --git a/lib/src/router/lru_cache.dart b/packages/relic_core/lib/src/router/lru_cache.dart similarity index 100% rename from lib/src/router/lru_cache.dart rename to packages/relic_core/lib/src/router/lru_cache.dart diff --git a/lib/src/router/method.dart b/packages/relic_core/lib/src/router/method.dart similarity index 100% rename from lib/src/router/method.dart rename to packages/relic_core/lib/src/router/method.dart diff --git a/lib/src/router/normalized_path.dart b/packages/relic_core/lib/src/router/normalized_path.dart similarity index 100% rename from lib/src/router/normalized_path.dart rename to packages/relic_core/lib/src/router/normalized_path.dart diff --git a/lib/src/router/path_trie.dart b/packages/relic_core/lib/src/router/path_trie.dart similarity index 100% rename from lib/src/router/path_trie.dart rename to packages/relic_core/lib/src/router/path_trie.dart diff --git a/lib/src/router/relic_app.dart b/packages/relic_core/lib/src/router/relic_app.dart similarity index 100% rename from lib/src/router/relic_app.dart rename to packages/relic_core/lib/src/router/relic_app.dart diff --git a/lib/src/router/router.dart b/packages/relic_core/lib/src/router/router.dart similarity index 99% rename from lib/src/router/router.dart rename to packages/relic_core/lib/src/router/router.dart index 5af753e8..0f572119 100644 --- a/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/lib/src/router/router_handler_extension.dart b/packages/relic_core/lib/src/router/router_handler_extension.dart similarity index 97% rename from lib/src/router/router_handler_extension.dart rename to packages/relic_core/lib/src/router/router_handler_extension.dart index 097032f5..9c3d33e0 100644 --- a/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/lib/src/util/util.dart b/packages/relic_core/lib/src/util/util.dart similarity index 100% rename from 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..855c4bf3 --- /dev/null +++ b/packages/relic_core/pubspec.yaml @@ -0,0 +1,36 @@ +name: relic_core +description: Core framework for Relic web server (platform-agnostic). +version: 0.13.2 +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.13.0 + collection: ^1.19.0 + convert: ^3.1.1 + crypto: ^3.0.0 + http_parser: ^4.0.2 + meta: ^1.16.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: + lints: ">=5.0.0 <7.0.0" + mockito: ^5.4.4 + serverpod_lints: ^3.0.0 + test: ^1.25.10 diff --git a/test/accessor/accessor_test.dart b/packages/relic_core/test/accessor/accessor_test.dart similarity index 98% rename from test/accessor/accessor_test.dart rename to packages/relic_core/test/accessor/accessor_test.dart index 0ac99fd6..f1614863 100644 --- a/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/test/adapter/context_test.dart b/packages/relic_core/test/adapter/context_test.dart similarity index 97% rename from test/adapter/context_test.dart rename to packages/relic_core/test/adapter/context_test.dart index 89e09352..a9bf53ce 100644 --- a/test/adapter/context_test.dart +++ b/packages/relic_core/test/adapter/context_test.dart @@ -1,5 +1,4 @@ -import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/body/body_infer_mime_type_test.dart b/packages/relic_core/test/body/body_infer_mime_type_test.dart similarity index 98% rename from test/body/body_infer_mime_type_test.dart rename to packages/relic_core/test/body/body_infer_mime_type_test.dart index f08e6d5e..6c9b7cbc 100644 --- a/test/body/body_infer_mime_type_test.dart +++ b/packages/relic_core/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_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/body/types/body_type_test.dart b/packages/relic_core/test/body/types/body_type_test.dart similarity index 89% rename from test/body/types/body_type_test.dart rename to packages/relic_core/test/body/types/body_type_test.dart index 7c568c7b..dcedd148 100644 --- a/test/body/types/body_type_test.dart +++ b/packages/relic_core/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_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/headers/headers_constants_test.dart b/packages/relic_core/test/headers/headers_constants_test.dart similarity index 92% rename from test/headers/headers_constants_test.dart rename to packages/relic_core/test/headers/headers_constants_test.dart index 08690865..146ded44 100644 --- a/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/test/headers/mutable_headers_test.dart b/packages/relic_core/test/headers/mutable_headers_test.dart similarity index 96% rename from test/headers/mutable_headers_test.dart rename to packages/relic_core/test/headers/mutable_headers_test.dart index c542d01a..99d2fb40 100644 --- a/test/headers/mutable_headers_test.dart +++ b/packages/relic_core/test/headers/mutable_headers_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/src/headers/headers.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/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 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/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/test/headers/typed/forwarded_header_test.dart b/packages/relic_core/test/headers/typed/forwarded_header_test.dart similarity index 99% rename from test/headers/typed/forwarded_header_test.dart rename to packages/relic_core/test/headers/typed/forwarded_header_test.dart index bc91c31b..4c121be9 100644 --- a/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/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 test/headers/typed/x_forwarded_for_header_test.dart rename to packages/relic_core/test/headers/typed/x_forwarded_for_header_test.dart index 57ccdf9e..3f4fc6cd 100644 --- a/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/src/headers/typed/headers/x_forwarded_for_header.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/ip_address/endianness_test.dart b/packages/relic_core/test/ip_address/endianness_test.dart similarity index 94% rename from test/ip_address/endianness_test.dart rename to packages/relic_core/test/ip_address/endianness_test.dart index bb491640..14c18814 100644 --- a/test/ip_address/endianness_test.dart +++ b/packages/relic_core/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_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/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 test/ip_address/ip_address_cidr_test.dart rename to packages/relic_core/test/ip_address/ip_address_cidr_test.dart index 5156db81..d56524c3 100644 --- a/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/src/ip_address/ip_address.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/ip_address/ip_address_test.dart b/packages/relic_core/test/ip_address/ip_address_test.dart similarity index 98% rename from test/ip_address/ip_address_test.dart rename to packages/relic_core/test/ip_address/ip_address_test.dart index 8d1b8514..a6daa7b6 100644 --- a/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/src/ip_address/ip_address.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/ip_address/ipv4_address_test.dart b/packages/relic_core/test/ip_address/ipv4_address_test.dart similarity index 99% rename from test/ip_address/ipv4_address_test.dart rename to packages/relic_core/test/ip_address/ipv4_address_test.dart index 67de5fe1..90ac3453 100644 --- a/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/src/ip_address/ip_address.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/ip_address/ipv6_address_test.dart b/packages/relic_core/test/ip_address/ipv6_address_test.dart similarity index 99% rename from test/ip_address/ipv6_address_test.dart rename to packages/relic_core/test/ip_address/ipv6_address_test.dart index 6868b903..0084b1ed 100644 --- a/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/src/ip_address/ip_address.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/isolated_object/isolated_object_close_test.dart b/packages/relic_core/test/isolated_object/isolated_object_close_test.dart similarity index 96% rename from test/isolated_object/isolated_object_close_test.dart rename to packages/relic_core/test/isolated_object/isolated_object_close_test.dart index 4d4c422a..2e898629 100644 --- a/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/src/isolated_object.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/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 test/isolated_object/isolated_object_create_test.dart rename to packages/relic_core/test/isolated_object/isolated_object_create_test.dart index bd02c63a..4aa94e22 100644 --- a/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/src/isolated_object.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/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 test/isolated_object/isolated_object_evaluate_test.dart rename to packages/relic_core/test/isolated_object/isolated_object_evaluate_test.dart index 36bce4b3..2ad650b9 100644 --- a/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/src/isolated_object.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/middleware/middleware_object_test.dart b/packages/relic_core/test/middleware/middleware_object_test.dart similarity index 98% rename from test/middleware/middleware_object_test.dart rename to packages/relic_core/test/middleware/middleware_object_test.dart index d76cc2c6..46452151 100644 --- a/test/middleware/middleware_object_test.dart +++ b/packages/relic_core/test/middleware/middleware_object_test.dart @@ -1,5 +1,4 @@ -import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/router/lru_cache_test.dart b/packages/relic_core/test/router/lru_cache_test.dart similarity index 98% rename from test/router/lru_cache_test.dart rename to packages/relic_core/test/router/lru_cache_test.dart index 757964e1..40cd76e9 100644 --- a/test/router/lru_cache_test.dart +++ b/packages/relic_core/test/router/lru_cache_test.dart @@ -1,4 +1,4 @@ -import 'package:relic/src/router/lru_cache.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/router/normalized_path_test.dart b/packages/relic_core/test/router/normalized_path_test.dart similarity index 99% rename from test/router/normalized_path_test.dart rename to packages/relic_core/test/router/normalized_path_test.dart index 192f3609..cc1c33b3 100644 --- a/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/src/router/normalized_path.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/router/path_trie_crud_test.dart b/packages/relic_core/test/router/path_trie_crud_test.dart similarity index 99% rename from test/router/path_trie_crud_test.dart rename to packages/relic_core/test/router/path_trie_crud_test.dart index d45371b9..fa3788d8 100644 --- a/test/router/path_trie_crud_test.dart +++ b/packages/relic_core/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_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/router/path_trie_tail_test.dart b/packages/relic_core/test/router/path_trie_tail_test.dart similarity index 98% rename from test/router/path_trie_tail_test.dart rename to packages/relic_core/test/router/path_trie_tail_test.dart index 20c8fb85..75c84f38 100644 --- a/test/router/path_trie_tail_test.dart +++ b/packages/relic_core/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_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/router/path_trie_test.dart b/packages/relic_core/test/router/path_trie_test.dart similarity index 99% rename from test/router/path_trie_test.dart rename to packages/relic_core/test/router/path_trie_test.dart index 1818e629..43ab403c 100644 --- a/test/router/path_trie_test.dart +++ b/packages/relic_core/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_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/router/path_trie_use_test.dart b/packages/relic_core/test/router/path_trie_use_test.dart similarity index 98% rename from test/router/path_trie_use_test.dart rename to packages/relic_core/test/router/path_trie_use_test.dart index 7e3e3f36..69ac1cb8 100644 --- a/test/router/path_trie_use_test.dart +++ b/packages/relic_core/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_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/router/path_trie_wildcard_test.dart b/packages/relic_core/test/router/path_trie_wildcard_test.dart similarity index 98% rename from test/router/path_trie_wildcard_test.dart rename to packages/relic_core/test/router/path_trie_wildcard_test.dart index 5f53aeef..ffdb5c4d 100644 --- a/test/router/path_trie_wildcard_test.dart +++ b/packages/relic_core/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_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/router/router_groups_test.dart b/packages/relic_core/test/router/router_groups_test.dart similarity index 99% rename from test/router/router_groups_test.dart rename to packages/relic_core/test/router/router_groups_test.dart index 04104df7..b004c591 100644 --- a/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/test/router/router_handler_test.dart b/packages/relic_core/test/router/router_handler_test.dart similarity index 99% rename from test/router/router_handler_test.dart rename to packages/relic_core/test/router/router_handler_test.dart index 6aac5272..00475334 100644 --- a/test/router/router_handler_test.dart +++ b/packages/relic_core/test/router/router_handler_test.dart @@ -1,5 +1,4 @@ -import 'package:relic/relic.dart'; -import 'package:relic/src/context/result.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; Request _request( diff --git a/test/router/router_inject_test.dart b/packages/relic_core/test/router/router_inject_test.dart similarity index 98% rename from test/router/router_inject_test.dart rename to packages/relic_core/test/router/router_inject_test.dart index 81604b1a..9811878f 100644 --- a/test/router/router_inject_test.dart +++ b/packages/relic_core/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:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/router/router_test.dart b/packages/relic_core/test/router/router_test.dart similarity index 99% rename from test/router/router_test.dart rename to packages/relic_core/test/router/router_test.dart index b59e0acf..c97df431 100644 --- a/test/router/router_test.dart +++ b/packages/relic_core/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_core/relic_core.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/router/router_use_test.dart b/packages/relic_core/test/router/router_use_test.dart similarity index 99% rename from test/router/router_use_test.dart rename to packages/relic_core/test/router/router_use_test.dart index 2b77f97c..2f2db8da 100644 --- a/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/test/src/middleware/context_property_test.dart b/packages/relic_core/test/src/middleware/context_property_test.dart similarity index 98% rename from test/src/middleware/context_property_test.dart rename to packages/relic_core/test/src/middleware/context_property_test.dart index e1e759b4..036610b5 100644 --- a/test/src/middleware/context_property_test.dart +++ b/packages/relic_core/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:relic_core/relic_core.dart'; import 'package:test/test.dart'; Request _request() { diff --git a/test/util/util_test.dart b/packages/relic_core/test/util/util_test.dart similarity index 93% rename from test/util/util_test.dart rename to packages/relic_core/test/util/util_test.dart index dc8090f3..2b6f2af4 100644 --- a/test/util/util_test.dart +++ b/packages/relic_core/test/util/util_test.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:relic/src/util/util.dart'; +import 'package:relic_core/relic_core.dart'; import 'package:test/test.dart'; void main() { 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/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 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}'); +} 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/lib/src/adapter/io/bind_http_server.dart b/packages/relic_io/lib/src/adapter/bind_http_server.dart similarity index 100% rename from lib/src/adapter/io/bind_http_server.dart rename to packages/relic_io/lib/src/adapter/bind_http_server.dart diff --git a/lib/src/adapter/io/http_response_extension.dart b/packages/relic_io/lib/src/adapter/http_response_extension.dart similarity index 99% rename from 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/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/lib/src/adapter/io/io_adapter.dart b/packages/relic_io/lib/src/adapter/io_adapter.dart similarity index 98% rename from lib/src/adapter/io/io_adapter.dart rename to packages/relic_io/lib/src/adapter/io_adapter.dart index f01505b2..8c64bde5 100644 --- a/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/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 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/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/lib/src/adapter/io/io_serve.dart b/packages/relic_io/lib/src/adapter/io_serve.dart similarity index 97% rename from lib/src/adapter/io/io_serve.dart rename to packages/relic_io/lib/src/adapter/io_serve.dart index 4782eb3a..cd5638aa 100644 --- a/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/lib/src/adapter/io/request.dart b/packages/relic_io/lib/src/adapter/request.dart similarity index 86% rename from lib/src/adapter/io/request.dart rename to packages/relic_io/lib/src/adapter/request.dart index 0a05aa74..a9c66785 100644 --- a/lib/src/adapter/io/request.dart +++ b/packages/relic_io/lib/src/adapter/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/lib/src/adapter/io/response.dart b/packages/relic_io/lib/src/adapter/response.dart similarity index 89% rename from lib/src/adapter/io/response.dart rename to packages/relic_io/lib/src/adapter/response.dart index dc3a42ff..a8a74c46 100644 --- a/lib/src/adapter/io/response.dart +++ b/packages/relic_io/lib/src/adapter/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/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 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/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/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 lib/src/io/static/extension/datetime_extension.dart rename to packages/relic_io/lib/src/io/static/extension/datetime_extension.dart diff --git a/lib/src/io/static/static_handler.dart b/packages/relic_io/lib/src/io/static/static_handler.dart similarity index 99% rename from lib/src/io/static/static_handler.dart rename to packages/relic_io/lib/src/io/static/static_handler.dart index 2afeb122..e7e770aa 100644 --- a/lib/src/io/static/static_handler.dart +++ b/packages/relic_io/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/lib/src/logger/logger.dart b/packages/relic_io/lib/src/logger/logger.dart similarity index 100% rename from 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..00d848ae --- /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.2 +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.2 + stack_trace: ^1.10.0 + stream_channel: ^2.1.1 + web_socket: ^1.0.1 diff --git a/pubspec.yaml b/pubspec.yaml index a4436fd6..a1e5df5e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,49 +1,37 @@ -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: relic_workspace +publish_to: none environment: - sdk: ^3.7.0 + sdk: ^3.8.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 +workspace: + - packages/benchmark + - packages/examples + - packages/relic + - packages/relic_core + - packages/relic_io 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 + melos: ^7.4.0-dev.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)