From cf208dc7c14b5e3854ff7ec90db422dc11bc3c9f Mon Sep 17 00:00:00 2001 From: Patrick Stewart Date: Sat, 15 Jun 2024 08:00:29 -0700 Subject: [PATCH] add: adding blank files refactor contracts.dart to auth.dart --- packages/contracts/lib/auth.dart | 21 +++++++++ packages/contracts/lib/contracts.dart | 8 ---- .../lib/src/auth/authenticatable.dart | 37 ++++++++++++++++ .../lib/src/auth/can_reset_password.dart | 12 +++++ packages/contracts/lib/src/auth/factory.dart | 16 +++++++ packages/contracts/lib/src/auth/guard.dart | 43 ++++++++++++++++++ .../lib/src/auth/must_verify_email.dart | 21 +++++++++ .../lib/src/auth/password_broker.dart | 34 ++++++++++++++ .../lib/src/auth/password_broker_factory.dart | 9 ++++ .../lib/src/auth/stateful_guard.dart | 44 +++++++++++++++++++ .../lib/src/auth/supports_basic_auth.dart | 17 +++++++ .../contracts/lib/src/auth/user_provider.dart | 44 +++++++++++++++++++ .../lib/src/broadcasting/broadcaster.dart | 0 .../lib/src/broadcasting/factory.dart | 0 .../broadcasting/has_broadcast_channel.dart | 0 .../src/broadcasting/should_be_unique.dart | 0 .../src/broadcasting/should_broadcast.dart | 0 .../broadcasting/should_broadcast_now.dart | 0 .../contracts/lib/src/bus/dispatcher.dart | 0 .../lib/src/bus/queueing_dispatcher.dart | 0 packages/contracts/lib/src/cache/factory.dart | 0 packages/contracts/lib/src/cache/lock.dart | 0 .../lib/src/cache/lock_provider.dart | 0 .../lib/src/cache/lock_timeout_exception.dart | 0 .../contracts/lib/src/cache/repository.dart | 0 packages/contracts/lib/src/cache/store.dart | 0 .../contracts/lib/src/config/repository.dart | 0 .../lib/src/console/application.dart | 0 .../contracts/lib/src/console/isolatable.dart | 0 .../contracts/lib/src/console/kernel.dart | 0 .../console/prompts_for_missing_input.dart | 0 .../binding_resolution_exception.dart | 0 .../circular_dependency_exception.dart | 0 .../lib/src/container/container.dart | 0 .../container/contextual_binding_builder.dart | 0 .../contracts/lib/src/cookie/factory.dart | 0 .../lib/src/cookie/queueing_factory.dart | 0 .../lib/src/database/eloquent/builder.dart | 0 .../lib/src/database/eloquent/castable.dart | 0 .../database/eloquent/casts_attributes.dart | 0 .../eloquent/casts_inbound_attributes.dart | 0 .../deviates_castable_attributes.dart | 0 .../serializes_castable_attributes.dart | 0 .../eloquent/supports_partial_relations.dart | 0 .../src/database/events/migration_event.dart | 0 .../lib/src/database/model_identifier.dart | 0 .../lib/src/database/query/builder.dart | 0 .../database/query/condition_expression.dart | 0 .../lib/src/database/query/expression.dart | 0 .../lib/src/debug/exception_handler.dart | 0 .../lib/src/encryption/decrypt_exception.dart | 0 .../lib/src/encryption/encrypt_exception.dart | 0 .../lib/src/encryption/encrypter.dart | 0 .../lib/src/encryption/string_encrypter.dart | 0 .../contracts/lib/src/events/dispatcher.dart | 0 .../events/should_dispatch_after_commit.dart | 0 .../should_handle_events_after_commit.dart | 0 .../contracts/lib/src/filesystem/cloud.dart | 0 .../contracts/lib/src/filesystem/factory.dart | 0 .../filesystem/file_not_found_exception.dart | 0 .../lib/src/filesystem/filesystem.dart | 0 .../filesystem/lock_timeout_exception.dart | 0 .../lib/src/foundation/application.dart | 0 .../src/foundation/caches_configuration.dart | 0 .../lib/src/foundation/caches_routes.dart | 0 .../src/foundation/exception_renderer.dart | 0 .../lib/src/foundation/maintenance_mode.dart | 0 .../contracts/lib/src/hashing/hasher.dart | 0 packages/contracts/lib/src/http/kernel.dart | 0 .../contracts/lib/src/mail/attachable.dart | 0 packages/contracts/lib/src/mail/factory.dart | 0 .../contracts/lib/src/mail/mail_queue.dart | 0 packages/contracts/lib/src/mail/mailable.dart | 0 packages/contracts/lib/src/mail/mailer.dart | 0 .../lib/src/notifications/dispatcher.dart | 0 .../lib/src/notifications/factory.dart | 0 .../lib/src/pagination/cursor_paginator.dart | 0 .../pagination/length_aware_paginator.dart | 0 .../lib/src/pagination/paginator.dart | 0 packages/contracts/lib/src/pipeline/hub.dart | 0 .../contracts/lib/src/pipeline/pipeline.dart | 0 .../lib/src/process/invoked_process.dart | 0 .../lib/src/process/process_result.dart | 0 .../lib/src/queue/clearable_queue.dart | 0 .../src/queue/entity_not_found_exception.dart | 0 .../lib/src/queue/entity_resolver.dart | 0 packages/contracts/lib/src/queue/factory.dart | 0 packages/contracts/lib/src/queue/job.dart | 0 packages/contracts/lib/src/queue/monitor.dart | 0 packages/contracts/lib/src/queue/queue.dart | 0 .../lib/src/queue/queueable_collection.dart | 0 .../lib/src/queue/queueable_entity.dart | 0 .../lib/src/queue/should_be_encrypted.dart | 0 .../lib/src/queue/should_be_unique.dart | 0 .../should_be_unique_until_processing.dart | 0 .../contracts/lib/src/queue/should_queue.dart | 0 .../src/queue/should_queue_after_commit.dart | 0 .../contracts/lib/src/redis/connection.dart | 0 .../contracts/lib/src/redis/connector.dart | 0 packages/contracts/lib/src/redis/factory.dart | 0 .../src/redis/limiter_timeout_exception.dart | 0 .../lib/src/routing/binding_registrar.dart | 0 .../contracts/lib/src/routing/registrar.dart | 0 .../lib/src/routing/response_factory.dart | 0 .../lib/src/routing/url_generator.dart | 0 .../lib/src/routing/url_routable.dart | 0 .../middleware/authenticates_sessions.dart | 0 .../contracts/lib/src/session/session.dart | 0 .../contracts/lib/src/support/arrayable.dart | 0 .../can_be_escaped_when_cast_to_string.dart | 0 .../lib/src/support/deferrable_provider.dart | 0 .../support/deferring_displayable_value.dart | 0 .../contracts/lib/src/support/htmlable.dart | 0 .../contracts/lib/src/support/jsonable.dart | 0 .../lib/src/support/message_bag.dart | 0 .../lib/src/support/message_provider.dart | 0 .../contracts/lib/src/support/renderable.dart | 0 .../lib/src/support/responsable.dart | 0 .../lib/src/support/validate_data.dart | 0 .../translation/has_local_preferences.dart | 0 .../contracts/lib/src/translation/loader.dart | 0 .../lib/src/translation/translator.dart | 0 .../lib/src/validation/data_aware_rule.dart | 0 .../contracts/lib/src/validation/factory.dart | 0 .../lib/src/validation/implicit_rule.dart | 0 .../lib/src/validation/invokable_rule.dart | 0 .../contracts/lib/src/validation/rule.dart | 0 .../validation/uncompromised_verifier.dart | 0 .../validation/validates_when_resolved.dart | 0 .../lib/src/validation/validation_rule.dart | 0 .../lib/src/validation/validator.dart | 0 .../src/validation/validator_aware_rule.dart | 0 packages/contracts/lib/src/view/engine.dart | 0 packages/contracts/lib/src/view/factory.dart | 0 packages/contracts/lib/src/view/view.dart | 0 .../src/view/view_compilation_exception.dart | 0 136 files changed, 298 insertions(+), 8 deletions(-) create mode 100644 packages/contracts/lib/auth.dart delete mode 100644 packages/contracts/lib/contracts.dart create mode 100644 packages/contracts/lib/src/broadcasting/broadcaster.dart create mode 100644 packages/contracts/lib/src/broadcasting/factory.dart create mode 100644 packages/contracts/lib/src/broadcasting/has_broadcast_channel.dart create mode 100644 packages/contracts/lib/src/broadcasting/should_be_unique.dart create mode 100644 packages/contracts/lib/src/broadcasting/should_broadcast.dart create mode 100644 packages/contracts/lib/src/broadcasting/should_broadcast_now.dart create mode 100644 packages/contracts/lib/src/bus/dispatcher.dart create mode 100644 packages/contracts/lib/src/bus/queueing_dispatcher.dart create mode 100644 packages/contracts/lib/src/cache/factory.dart create mode 100644 packages/contracts/lib/src/cache/lock.dart create mode 100644 packages/contracts/lib/src/cache/lock_provider.dart create mode 100644 packages/contracts/lib/src/cache/lock_timeout_exception.dart create mode 100644 packages/contracts/lib/src/cache/repository.dart create mode 100644 packages/contracts/lib/src/cache/store.dart create mode 100644 packages/contracts/lib/src/config/repository.dart create mode 100644 packages/contracts/lib/src/console/application.dart create mode 100644 packages/contracts/lib/src/console/isolatable.dart create mode 100644 packages/contracts/lib/src/console/kernel.dart create mode 100644 packages/contracts/lib/src/console/prompts_for_missing_input.dart create mode 100644 packages/contracts/lib/src/container/binding_resolution_exception.dart create mode 100644 packages/contracts/lib/src/container/circular_dependency_exception.dart create mode 100644 packages/contracts/lib/src/container/container.dart create mode 100644 packages/contracts/lib/src/container/contextual_binding_builder.dart create mode 100644 packages/contracts/lib/src/cookie/factory.dart create mode 100644 packages/contracts/lib/src/cookie/queueing_factory.dart create mode 100644 packages/contracts/lib/src/database/eloquent/builder.dart create mode 100644 packages/contracts/lib/src/database/eloquent/castable.dart create mode 100644 packages/contracts/lib/src/database/eloquent/casts_attributes.dart create mode 100644 packages/contracts/lib/src/database/eloquent/casts_inbound_attributes.dart create mode 100644 packages/contracts/lib/src/database/eloquent/deviates_castable_attributes.dart create mode 100644 packages/contracts/lib/src/database/eloquent/serializes_castable_attributes.dart create mode 100644 packages/contracts/lib/src/database/eloquent/supports_partial_relations.dart create mode 100644 packages/contracts/lib/src/database/events/migration_event.dart create mode 100644 packages/contracts/lib/src/database/model_identifier.dart create mode 100644 packages/contracts/lib/src/database/query/builder.dart create mode 100644 packages/contracts/lib/src/database/query/condition_expression.dart create mode 100644 packages/contracts/lib/src/database/query/expression.dart create mode 100644 packages/contracts/lib/src/debug/exception_handler.dart create mode 100644 packages/contracts/lib/src/encryption/decrypt_exception.dart create mode 100644 packages/contracts/lib/src/encryption/encrypt_exception.dart create mode 100644 packages/contracts/lib/src/encryption/encrypter.dart create mode 100644 packages/contracts/lib/src/encryption/string_encrypter.dart create mode 100644 packages/contracts/lib/src/events/dispatcher.dart create mode 100644 packages/contracts/lib/src/events/should_dispatch_after_commit.dart create mode 100644 packages/contracts/lib/src/events/should_handle_events_after_commit.dart create mode 100644 packages/contracts/lib/src/filesystem/cloud.dart create mode 100644 packages/contracts/lib/src/filesystem/factory.dart create mode 100644 packages/contracts/lib/src/filesystem/file_not_found_exception.dart create mode 100644 packages/contracts/lib/src/filesystem/filesystem.dart create mode 100644 packages/contracts/lib/src/filesystem/lock_timeout_exception.dart create mode 100644 packages/contracts/lib/src/foundation/application.dart create mode 100644 packages/contracts/lib/src/foundation/caches_configuration.dart create mode 100644 packages/contracts/lib/src/foundation/caches_routes.dart create mode 100644 packages/contracts/lib/src/foundation/exception_renderer.dart create mode 100644 packages/contracts/lib/src/foundation/maintenance_mode.dart create mode 100644 packages/contracts/lib/src/hashing/hasher.dart create mode 100644 packages/contracts/lib/src/http/kernel.dart create mode 100644 packages/contracts/lib/src/mail/attachable.dart create mode 100644 packages/contracts/lib/src/mail/factory.dart create mode 100644 packages/contracts/lib/src/mail/mail_queue.dart create mode 100644 packages/contracts/lib/src/mail/mailable.dart create mode 100644 packages/contracts/lib/src/mail/mailer.dart create mode 100644 packages/contracts/lib/src/notifications/dispatcher.dart create mode 100644 packages/contracts/lib/src/notifications/factory.dart create mode 100644 packages/contracts/lib/src/pagination/cursor_paginator.dart create mode 100644 packages/contracts/lib/src/pagination/length_aware_paginator.dart create mode 100644 packages/contracts/lib/src/pagination/paginator.dart create mode 100644 packages/contracts/lib/src/pipeline/hub.dart create mode 100644 packages/contracts/lib/src/pipeline/pipeline.dart create mode 100644 packages/contracts/lib/src/process/invoked_process.dart create mode 100644 packages/contracts/lib/src/process/process_result.dart create mode 100644 packages/contracts/lib/src/queue/clearable_queue.dart create mode 100644 packages/contracts/lib/src/queue/entity_not_found_exception.dart create mode 100644 packages/contracts/lib/src/queue/entity_resolver.dart create mode 100644 packages/contracts/lib/src/queue/factory.dart create mode 100644 packages/contracts/lib/src/queue/job.dart create mode 100644 packages/contracts/lib/src/queue/monitor.dart create mode 100644 packages/contracts/lib/src/queue/queue.dart create mode 100644 packages/contracts/lib/src/queue/queueable_collection.dart create mode 100644 packages/contracts/lib/src/queue/queueable_entity.dart create mode 100644 packages/contracts/lib/src/queue/should_be_encrypted.dart create mode 100644 packages/contracts/lib/src/queue/should_be_unique.dart create mode 100644 packages/contracts/lib/src/queue/should_be_unique_until_processing.dart create mode 100644 packages/contracts/lib/src/queue/should_queue.dart create mode 100644 packages/contracts/lib/src/queue/should_queue_after_commit.dart create mode 100644 packages/contracts/lib/src/redis/connection.dart create mode 100644 packages/contracts/lib/src/redis/connector.dart create mode 100644 packages/contracts/lib/src/redis/factory.dart create mode 100644 packages/contracts/lib/src/redis/limiter_timeout_exception.dart create mode 100644 packages/contracts/lib/src/routing/binding_registrar.dart create mode 100644 packages/contracts/lib/src/routing/registrar.dart create mode 100644 packages/contracts/lib/src/routing/response_factory.dart create mode 100644 packages/contracts/lib/src/routing/url_generator.dart create mode 100644 packages/contracts/lib/src/routing/url_routable.dart create mode 100644 packages/contracts/lib/src/session/middleware/authenticates_sessions.dart create mode 100644 packages/contracts/lib/src/session/session.dart create mode 100644 packages/contracts/lib/src/support/arrayable.dart create mode 100644 packages/contracts/lib/src/support/can_be_escaped_when_cast_to_string.dart create mode 100644 packages/contracts/lib/src/support/deferrable_provider.dart create mode 100644 packages/contracts/lib/src/support/deferring_displayable_value.dart create mode 100644 packages/contracts/lib/src/support/htmlable.dart create mode 100644 packages/contracts/lib/src/support/jsonable.dart create mode 100644 packages/contracts/lib/src/support/message_bag.dart create mode 100644 packages/contracts/lib/src/support/message_provider.dart create mode 100644 packages/contracts/lib/src/support/renderable.dart create mode 100644 packages/contracts/lib/src/support/responsable.dart create mode 100644 packages/contracts/lib/src/support/validate_data.dart create mode 100644 packages/contracts/lib/src/translation/has_local_preferences.dart create mode 100644 packages/contracts/lib/src/translation/loader.dart create mode 100644 packages/contracts/lib/src/translation/translator.dart create mode 100644 packages/contracts/lib/src/validation/data_aware_rule.dart create mode 100644 packages/contracts/lib/src/validation/factory.dart create mode 100644 packages/contracts/lib/src/validation/implicit_rule.dart create mode 100644 packages/contracts/lib/src/validation/invokable_rule.dart create mode 100644 packages/contracts/lib/src/validation/rule.dart create mode 100644 packages/contracts/lib/src/validation/uncompromised_verifier.dart create mode 100644 packages/contracts/lib/src/validation/validates_when_resolved.dart create mode 100644 packages/contracts/lib/src/validation/validation_rule.dart create mode 100644 packages/contracts/lib/src/validation/validator.dart create mode 100644 packages/contracts/lib/src/validation/validator_aware_rule.dart create mode 100644 packages/contracts/lib/src/view/engine.dart create mode 100644 packages/contracts/lib/src/view/factory.dart create mode 100644 packages/contracts/lib/src/view/view.dart create mode 100644 packages/contracts/lib/src/view/view_compilation_exception.dart diff --git a/packages/contracts/lib/auth.dart b/packages/contracts/lib/auth.dart new file mode 100644 index 0000000..1b715ba --- /dev/null +++ b/packages/contracts/lib/auth.dart @@ -0,0 +1,21 @@ +/// Support for doing something awesome. +/// +/// More dartdocs go here. +library; + +// Auth Contracts +export 'src/auth/access/authorizable.dart'; +export 'src/auth/access/gate.dart'; +export 'src/auth/middleware/authenticates_request.dart'; +export 'src/auth/authenticatable.dart'; +export 'src/auth/can_reset_password.dart'; +export 'src/auth/factory.dart'; +export 'src/auth/guard.dart'; +export 'src/auth/must_verify_email.dart'; +export 'src/auth/password_broker_factory.dart'; +export 'src/auth/password_broker.dart'; +export 'src/auth/stateful_guard.dart'; +export 'src/auth/supports_basic_auth.dart'; +export 'src/auth/user_provider.dart'; + +// TODO: Export any libraries intended for clients of this package. diff --git a/packages/contracts/lib/contracts.dart b/packages/contracts/lib/contracts.dart deleted file mode 100644 index 44cd577..0000000 --- a/packages/contracts/lib/contracts.dart +++ /dev/null @@ -1,8 +0,0 @@ -/// Support for doing something awesome. -/// -/// More dartdocs go here. -library; - -// export 'src/fabric_contracts_base.dart'; - -// TODO: Export any libraries intended for clients of this package. diff --git a/packages/contracts/lib/src/auth/authenticatable.dart b/packages/contracts/lib/src/auth/authenticatable.dart index e69de29..0663181 100644 --- a/packages/contracts/lib/src/auth/authenticatable.dart +++ b/packages/contracts/lib/src/auth/authenticatable.dart @@ -0,0 +1,37 @@ +abstract class Authenticatable { + /// Get the name of the unique identifier for the user. + /// + /// @return string + String getAuthIdentifierName(); + + /// Get the unique identifier for the user. + /// + /// @return dynamic + dynamic getAuthIdentifier(); + + /// Get the name of the password attribute for the user. + /// + /// @return string + String getAuthPasswordName(); + + /// Get the password for the user. + /// + /// @return string + String getAuthPassword(); + + /// Get the token value for the "remember me" session. + /// + /// @return string + String getRememberToken(); + + /// Set the token value for the "remember me" session. + /// + /// @param string value + /// @return void + void setRememberToken(String value); + + /// Get the column name for the "remember me" token. + /// + /// @return string + String getRememberTokenName(); +} diff --git a/packages/contracts/lib/src/auth/can_reset_password.dart b/packages/contracts/lib/src/auth/can_reset_password.dart index e69de29..c6b8e9d 100644 --- a/packages/contracts/lib/src/auth/can_reset_password.dart +++ b/packages/contracts/lib/src/auth/can_reset_password.dart @@ -0,0 +1,12 @@ +abstract class CanResetPassword { + /// Get the e-mail address where password reset links are sent. + /// + /// @return string + String getEmailForPasswordReset(); + + /// Send the password reset notification. + /// + /// @param string token + /// @return void + void sendPasswordResetNotification(String token); +} diff --git a/packages/contracts/lib/src/auth/factory.dart b/packages/contracts/lib/src/auth/factory.dart index e69de29..65b0bd2 100644 --- a/packages/contracts/lib/src/auth/factory.dart +++ b/packages/contracts/lib/src/auth/factory.dart @@ -0,0 +1,16 @@ +//import 'package:your_project_path/contracts/auth/guard.dart'; +//import 'package:your_project_path/contracts/auth/stateful_guard.dart'; +import 'package:fabric_contracts/auth.dart'; + +abstract class Factory { + /// Get a guard instance by name. + /// + /// @param [name] The name of the guard instance to retrieve. + /// @return An instance of [Guard] or [StatefulGuard]. + Guard guard(String? name); + + /// Set the default guard the factory should serve. + /// + /// @param [name] The name of the default guard. + void shouldUse(String name); +} diff --git a/packages/contracts/lib/src/auth/guard.dart b/packages/contracts/lib/src/auth/guard.dart index e69de29..f55d818 100644 --- a/packages/contracts/lib/src/auth/guard.dart +++ b/packages/contracts/lib/src/auth/guard.dart @@ -0,0 +1,43 @@ +import 'authenticatable.dart'; +abstract class Guard { + /// Determine if the current user is authenticated. + /// + /// @return bool + bool check(); + + /// Determine if the current user is a guest. + /// + /// @return bool + bool guest(); + + /// Get the currently authenticated user. + /// + /// @return Authenticatable|null + Authenticatable? user(); + + /// Get the ID for the currently authenticated user. + /// + /// @return int|string|null + dynamic id(); + + /// Validate a user's credentials. + /// + /// @param Map credentials + /// @return bool + bool validate(Map credentials); + + /// Determine if the guard has a user instance. + /// + /// @return bool + bool hasUser(); + + /// Set the current user. + /// + /// @param Authenticatable user + /// @return Guard + Guard setUser(Authenticatable user); +} + +//abstract class Authenticatable { +// String getIdentifier(); +//} diff --git a/packages/contracts/lib/src/auth/must_verify_email.dart b/packages/contracts/lib/src/auth/must_verify_email.dart index e69de29..94f7408 100644 --- a/packages/contracts/lib/src/auth/must_verify_email.dart +++ b/packages/contracts/lib/src/auth/must_verify_email.dart @@ -0,0 +1,21 @@ +abstract class MustVerifyEmail { + /// Determine if the user has verified their email address. + /// + /// @return bool + bool hasVerifiedEmail(); + + /// Mark the given user's email as verified. + /// + /// @return bool + bool markEmailAsVerified(); + + /// Send the email verification notification. + /// + /// @return void + void sendEmailVerificationNotification(); + + /// Get the email address that should be used for verification. + /// + /// @return string + String getEmailForVerification(); +} diff --git a/packages/contracts/lib/src/auth/password_broker.dart b/packages/contracts/lib/src/auth/password_broker.dart index e69de29..0b7c5b0 100644 --- a/packages/contracts/lib/src/auth/password_broker.dart +++ b/packages/contracts/lib/src/auth/password_broker.dart @@ -0,0 +1,34 @@ +import 'dart:async'; + +typedef Closure = FutureOr Function(); + +abstract class PasswordBroker { + /// Constant representing a successfully sent reminder. + static const String RESET_LINK_SENT = 'passwords.sent'; + + /// Constant representing a successfully reset password. + static const String PASSWORD_RESET = 'passwords.reset'; + + /// Constant representing the user not found response. + static const String INVALID_USER = 'passwords.user'; + + /// Constant representing an invalid token. + static const String INVALID_TOKEN = 'passwords.token'; + + /// Constant representing a throttled reset attempt. + static const String RESET_THROTTLED = 'passwords.throttled'; + + /// Send a password reset link to a user. + /// + /// @param Map credentials + /// @param Closure? callback + /// @return Future + Future sendResetLink(Map credentials, [Closure? callback]); + + /// Reset the password for the given token. + /// + /// @param Map credentials + /// @param Closure callback + /// @return Future + Future reset(Map credentials, Closure callback); +} diff --git a/packages/contracts/lib/src/auth/password_broker_factory.dart b/packages/contracts/lib/src/auth/password_broker_factory.dart index e69de29..2948608 100644 --- a/packages/contracts/lib/src/auth/password_broker_factory.dart +++ b/packages/contracts/lib/src/auth/password_broker_factory.dart @@ -0,0 +1,9 @@ +import 'password_broker.dart'; + +abstract class PasswordBrokerFactory { + /// Get a password broker instance by name. + /// + /// @param String? name + /// @return PasswordBroker + PasswordBroker broker([String? name]); +} diff --git a/packages/contracts/lib/src/auth/stateful_guard.dart b/packages/contracts/lib/src/auth/stateful_guard.dart index e69de29..a747756 100644 --- a/packages/contracts/lib/src/auth/stateful_guard.dart +++ b/packages/contracts/lib/src/auth/stateful_guard.dart @@ -0,0 +1,44 @@ +import 'authenticatable.dart'; +import 'guard.dart'; + +abstract class StatefulGuard extends Guard { + /// Attempt to authenticate a user using the given credentials. + /// + /// [credentials] are the user's credentials. + /// [remember] indicates if the user should be remembered. + /// Returns true if authentication was successful. + Future attempt(Map credentials, {bool remember = false}); + + /// Log a user into the application without sessions or cookies. + /// + /// [credentials] are the user's credentials. + /// Returns true if authentication was successful. + Future once(Map credentials); + + /// Log a user into the application. + /// + /// [user] is the user to log in. + /// [remember] indicates if the user should be remembered. + void login(Authenticatable user, {bool remember = false}); + + /// Log the given user ID into the application. + /// + /// [id] is the ID of the user. + /// [remember] indicates if the user should be remembered. + /// Returns the authenticated user or false if authentication failed. + Future loginUsingId(dynamic id, {bool remember = false}); + + /// Log the given user ID into the application without sessions or cookies. + /// + /// [id] is the ID of the user. + /// Returns the authenticated user or false if authentication failed. + Future onceUsingId(dynamic id); + + /// Determine if the user was authenticated via "remember me" cookie. + /// + /// Returns true if authenticated via "remember me" cookie. + bool viaRemember(); + + /// Log the user out of the application. + void logout(); +} diff --git a/packages/contracts/lib/src/auth/supports_basic_auth.dart b/packages/contracts/lib/src/auth/supports_basic_auth.dart index e69de29..8765f54 100644 --- a/packages/contracts/lib/src/auth/supports_basic_auth.dart +++ b/packages/contracts/lib/src/auth/supports_basic_auth.dart @@ -0,0 +1,17 @@ +import 'package:symfony/http_foundation.dart'; + +abstract class SupportsBasicAuth { + /// Attempt to authenticate using HTTP Basic Auth. + /// + /// @param String field + /// @param Map extraConditions + /// @return Response|null + Response? basic({String field = 'email', Map extraConditions = const {}}); + + /// Perform a stateless HTTP Basic login attempt. + /// + /// @param String field + /// @param Map extraConditions + /// @return Response|null + Response? onceBasic({String field = 'email', Map extraConditions = const {}}); +} diff --git a/packages/contracts/lib/src/auth/user_provider.dart b/packages/contracts/lib/src/auth/user_provider.dart index e69de29..222427d 100644 --- a/packages/contracts/lib/src/auth/user_provider.dart +++ b/packages/contracts/lib/src/auth/user_provider.dart @@ -0,0 +1,44 @@ +import 'authenticatable.dart'; + +abstract class UserProvider { + /// Retrieve a user by their unique identifier. + /// + /// @param dynamic identifier + /// @return Authenticatable|null + Future retrieveById(dynamic identifier); + + /// Retrieve a user by their unique identifier and "remember me" token. + /// + /// @param dynamic identifier + /// @param String token + /// @return Authenticatable|null + Future retrieveByToken(dynamic identifier, String token); + + /// Update the "remember me" token for the given user in storage. + /// + /// @param Authenticatable user + /// @param String token + /// @return void + Future updateRememberToken(Authenticatable user, String token); + + /// Retrieve a user by the given credentials. + /// + /// @param Map credentials + /// @return Authenticatable|null + Future retrieveByCredentials(Map credentials); + + /// Validate a user against the given credentials. + /// + /// @param Authenticatable user + /// @param Map credentials + /// @return bool + Future validateCredentials(Authenticatable user, Map credentials); + + /// Rehash the user's password if required and supported. + /// + /// @param Authenticatable user + /// @param Map credentials + /// @param bool force + /// @return void + Future rehashPasswordIfRequired(Authenticatable user, Map credentials, {bool force = false}); +} diff --git a/packages/contracts/lib/src/broadcasting/broadcaster.dart b/packages/contracts/lib/src/broadcasting/broadcaster.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/broadcasting/factory.dart b/packages/contracts/lib/src/broadcasting/factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/broadcasting/has_broadcast_channel.dart b/packages/contracts/lib/src/broadcasting/has_broadcast_channel.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/broadcasting/should_be_unique.dart b/packages/contracts/lib/src/broadcasting/should_be_unique.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/broadcasting/should_broadcast.dart b/packages/contracts/lib/src/broadcasting/should_broadcast.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/broadcasting/should_broadcast_now.dart b/packages/contracts/lib/src/broadcasting/should_broadcast_now.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/bus/dispatcher.dart b/packages/contracts/lib/src/bus/dispatcher.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/bus/queueing_dispatcher.dart b/packages/contracts/lib/src/bus/queueing_dispatcher.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/cache/factory.dart b/packages/contracts/lib/src/cache/factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/cache/lock.dart b/packages/contracts/lib/src/cache/lock.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/cache/lock_provider.dart b/packages/contracts/lib/src/cache/lock_provider.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/cache/lock_timeout_exception.dart b/packages/contracts/lib/src/cache/lock_timeout_exception.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/cache/repository.dart b/packages/contracts/lib/src/cache/repository.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/cache/store.dart b/packages/contracts/lib/src/cache/store.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/config/repository.dart b/packages/contracts/lib/src/config/repository.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/console/application.dart b/packages/contracts/lib/src/console/application.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/console/isolatable.dart b/packages/contracts/lib/src/console/isolatable.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/console/kernel.dart b/packages/contracts/lib/src/console/kernel.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/console/prompts_for_missing_input.dart b/packages/contracts/lib/src/console/prompts_for_missing_input.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/container/binding_resolution_exception.dart b/packages/contracts/lib/src/container/binding_resolution_exception.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/container/circular_dependency_exception.dart b/packages/contracts/lib/src/container/circular_dependency_exception.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/container/container.dart b/packages/contracts/lib/src/container/container.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/container/contextual_binding_builder.dart b/packages/contracts/lib/src/container/contextual_binding_builder.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/cookie/factory.dart b/packages/contracts/lib/src/cookie/factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/cookie/queueing_factory.dart b/packages/contracts/lib/src/cookie/queueing_factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/eloquent/builder.dart b/packages/contracts/lib/src/database/eloquent/builder.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/eloquent/castable.dart b/packages/contracts/lib/src/database/eloquent/castable.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/eloquent/casts_attributes.dart b/packages/contracts/lib/src/database/eloquent/casts_attributes.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/eloquent/casts_inbound_attributes.dart b/packages/contracts/lib/src/database/eloquent/casts_inbound_attributes.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/eloquent/deviates_castable_attributes.dart b/packages/contracts/lib/src/database/eloquent/deviates_castable_attributes.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/eloquent/serializes_castable_attributes.dart b/packages/contracts/lib/src/database/eloquent/serializes_castable_attributes.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/eloquent/supports_partial_relations.dart b/packages/contracts/lib/src/database/eloquent/supports_partial_relations.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/events/migration_event.dart b/packages/contracts/lib/src/database/events/migration_event.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/model_identifier.dart b/packages/contracts/lib/src/database/model_identifier.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/query/builder.dart b/packages/contracts/lib/src/database/query/builder.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/query/condition_expression.dart b/packages/contracts/lib/src/database/query/condition_expression.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/database/query/expression.dart b/packages/contracts/lib/src/database/query/expression.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/debug/exception_handler.dart b/packages/contracts/lib/src/debug/exception_handler.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/encryption/decrypt_exception.dart b/packages/contracts/lib/src/encryption/decrypt_exception.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/encryption/encrypt_exception.dart b/packages/contracts/lib/src/encryption/encrypt_exception.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/encryption/encrypter.dart b/packages/contracts/lib/src/encryption/encrypter.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/encryption/string_encrypter.dart b/packages/contracts/lib/src/encryption/string_encrypter.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/events/dispatcher.dart b/packages/contracts/lib/src/events/dispatcher.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/events/should_dispatch_after_commit.dart b/packages/contracts/lib/src/events/should_dispatch_after_commit.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/events/should_handle_events_after_commit.dart b/packages/contracts/lib/src/events/should_handle_events_after_commit.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/filesystem/cloud.dart b/packages/contracts/lib/src/filesystem/cloud.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/filesystem/factory.dart b/packages/contracts/lib/src/filesystem/factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/filesystem/file_not_found_exception.dart b/packages/contracts/lib/src/filesystem/file_not_found_exception.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/filesystem/filesystem.dart b/packages/contracts/lib/src/filesystem/filesystem.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/filesystem/lock_timeout_exception.dart b/packages/contracts/lib/src/filesystem/lock_timeout_exception.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/foundation/application.dart b/packages/contracts/lib/src/foundation/application.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/foundation/caches_configuration.dart b/packages/contracts/lib/src/foundation/caches_configuration.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/foundation/caches_routes.dart b/packages/contracts/lib/src/foundation/caches_routes.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/foundation/exception_renderer.dart b/packages/contracts/lib/src/foundation/exception_renderer.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/foundation/maintenance_mode.dart b/packages/contracts/lib/src/foundation/maintenance_mode.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/hashing/hasher.dart b/packages/contracts/lib/src/hashing/hasher.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/http/kernel.dart b/packages/contracts/lib/src/http/kernel.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/mail/attachable.dart b/packages/contracts/lib/src/mail/attachable.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/mail/factory.dart b/packages/contracts/lib/src/mail/factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/mail/mail_queue.dart b/packages/contracts/lib/src/mail/mail_queue.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/mail/mailable.dart b/packages/contracts/lib/src/mail/mailable.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/mail/mailer.dart b/packages/contracts/lib/src/mail/mailer.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/notifications/dispatcher.dart b/packages/contracts/lib/src/notifications/dispatcher.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/notifications/factory.dart b/packages/contracts/lib/src/notifications/factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/pagination/cursor_paginator.dart b/packages/contracts/lib/src/pagination/cursor_paginator.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/pagination/length_aware_paginator.dart b/packages/contracts/lib/src/pagination/length_aware_paginator.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/pagination/paginator.dart b/packages/contracts/lib/src/pagination/paginator.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/pipeline/hub.dart b/packages/contracts/lib/src/pipeline/hub.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/pipeline/pipeline.dart b/packages/contracts/lib/src/pipeline/pipeline.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/process/invoked_process.dart b/packages/contracts/lib/src/process/invoked_process.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/process/process_result.dart b/packages/contracts/lib/src/process/process_result.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/clearable_queue.dart b/packages/contracts/lib/src/queue/clearable_queue.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/entity_not_found_exception.dart b/packages/contracts/lib/src/queue/entity_not_found_exception.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/entity_resolver.dart b/packages/contracts/lib/src/queue/entity_resolver.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/factory.dart b/packages/contracts/lib/src/queue/factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/job.dart b/packages/contracts/lib/src/queue/job.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/monitor.dart b/packages/contracts/lib/src/queue/monitor.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/queue.dart b/packages/contracts/lib/src/queue/queue.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/queueable_collection.dart b/packages/contracts/lib/src/queue/queueable_collection.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/queueable_entity.dart b/packages/contracts/lib/src/queue/queueable_entity.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/should_be_encrypted.dart b/packages/contracts/lib/src/queue/should_be_encrypted.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/should_be_unique.dart b/packages/contracts/lib/src/queue/should_be_unique.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/should_be_unique_until_processing.dart b/packages/contracts/lib/src/queue/should_be_unique_until_processing.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/should_queue.dart b/packages/contracts/lib/src/queue/should_queue.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/queue/should_queue_after_commit.dart b/packages/contracts/lib/src/queue/should_queue_after_commit.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/redis/connection.dart b/packages/contracts/lib/src/redis/connection.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/redis/connector.dart b/packages/contracts/lib/src/redis/connector.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/redis/factory.dart b/packages/contracts/lib/src/redis/factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/redis/limiter_timeout_exception.dart b/packages/contracts/lib/src/redis/limiter_timeout_exception.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/routing/binding_registrar.dart b/packages/contracts/lib/src/routing/binding_registrar.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/routing/registrar.dart b/packages/contracts/lib/src/routing/registrar.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/routing/response_factory.dart b/packages/contracts/lib/src/routing/response_factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/routing/url_generator.dart b/packages/contracts/lib/src/routing/url_generator.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/routing/url_routable.dart b/packages/contracts/lib/src/routing/url_routable.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/session/middleware/authenticates_sessions.dart b/packages/contracts/lib/src/session/middleware/authenticates_sessions.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/session/session.dart b/packages/contracts/lib/src/session/session.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/support/arrayable.dart b/packages/contracts/lib/src/support/arrayable.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/support/can_be_escaped_when_cast_to_string.dart b/packages/contracts/lib/src/support/can_be_escaped_when_cast_to_string.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/support/deferrable_provider.dart b/packages/contracts/lib/src/support/deferrable_provider.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/support/deferring_displayable_value.dart b/packages/contracts/lib/src/support/deferring_displayable_value.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/support/htmlable.dart b/packages/contracts/lib/src/support/htmlable.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/support/jsonable.dart b/packages/contracts/lib/src/support/jsonable.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/support/message_bag.dart b/packages/contracts/lib/src/support/message_bag.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/support/message_provider.dart b/packages/contracts/lib/src/support/message_provider.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/support/renderable.dart b/packages/contracts/lib/src/support/renderable.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/support/responsable.dart b/packages/contracts/lib/src/support/responsable.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/support/validate_data.dart b/packages/contracts/lib/src/support/validate_data.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/translation/has_local_preferences.dart b/packages/contracts/lib/src/translation/has_local_preferences.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/translation/loader.dart b/packages/contracts/lib/src/translation/loader.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/translation/translator.dart b/packages/contracts/lib/src/translation/translator.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/validation/data_aware_rule.dart b/packages/contracts/lib/src/validation/data_aware_rule.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/validation/factory.dart b/packages/contracts/lib/src/validation/factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/validation/implicit_rule.dart b/packages/contracts/lib/src/validation/implicit_rule.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/validation/invokable_rule.dart b/packages/contracts/lib/src/validation/invokable_rule.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/validation/rule.dart b/packages/contracts/lib/src/validation/rule.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/validation/uncompromised_verifier.dart b/packages/contracts/lib/src/validation/uncompromised_verifier.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/validation/validates_when_resolved.dart b/packages/contracts/lib/src/validation/validates_when_resolved.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/validation/validation_rule.dart b/packages/contracts/lib/src/validation/validation_rule.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/validation/validator.dart b/packages/contracts/lib/src/validation/validator.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/validation/validator_aware_rule.dart b/packages/contracts/lib/src/validation/validator_aware_rule.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/view/engine.dart b/packages/contracts/lib/src/view/engine.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/view/factory.dart b/packages/contracts/lib/src/view/factory.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/view/view.dart b/packages/contracts/lib/src/view/view.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/contracts/lib/src/view/view_compilation_exception.dart b/packages/contracts/lib/src/view/view_compilation_exception.dart new file mode 100644 index 0000000..e69de29