@cratis/arc 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GetHttpHeaders.ts +7 -0
- package/Globals.ts +14 -0
- package/ICanBeConfigured.ts +33 -0
- package/README.md +65 -0
- package/UrlHelpers.ts +71 -0
- package/commands/Command.ts +209 -0
- package/commands/CommandResult.ts +203 -0
- package/commands/CommandResults.ts +105 -0
- package/commands/CommandValidator.ts +17 -0
- package/commands/ICommand.ts +82 -0
- package/commands/ICommandResult.ts +60 -0
- package/commands/for_Command/CommandWithRouteParams.ts +34 -0
- package/commands/for_Command/SomeCommand.ts +34 -0
- package/commands/for_Command/given/a_command.ts +18 -0
- package/commands/for_Command/when_clearing_the_command.ts +17 -0
- package/commands/for_Command/when_executing/and_command_route_not_found.ts +26 -0
- package/commands/for_Command/when_executing/and_fetch_throws_exception.ts +24 -0
- package/commands/for_Command/when_executing/with_command_properties.ts +40 -0
- package/commands/for_Command/when_executing/with_custom_http_headers.ts +60 -0
- package/commands/for_Command/when_executing/with_microservice_header.ts +55 -0
- package/commands/for_Command/when_executing/with_origin_and_api_base_path.ts +51 -0
- package/commands/for_Command/when_executing/with_route_parameters.ts +58 -0
- package/commands/for_Command/when_executing/with_successful_response.ts +51 -0
- package/commands/for_Command/when_property_changed_value_that_is_different_from_initial_value.ts +16 -0
- package/commands/for_Command/when_property_changed_value_that_is_same_as_initial_value.ts +16 -0
- package/commands/for_Command/when_property_changes_and_initial_value_is_undefined.ts +12 -0
- package/commands/for_Command/when_property_changes_and_there_is_a_callback.ts +15 -0
- package/commands/for_Command/when_property_has_changed_and_we_revert.ts +15 -0
- package/commands/for_Command/when_setting_initial_values_after_property_changed.ts +17 -0
- package/commands/for_Command/when_validating/and_fetch_throws_exception.ts +24 -0
- package/commands/for_Command/when_validating/and_validation_endpoint_not_found.ts +26 -0
- package/commands/for_Command/when_validating/does_not_update_initial_values.ts +39 -0
- package/commands/for_Command/when_validating/with_successful_response.ts +47 -0
- package/commands/for_Command/when_validating/with_validation_errors.ts +45 -0
- package/commands/for_CommandResult/when_chaining_callbacks/and_result_has_exceptions.ts +54 -0
- package/commands/for_CommandResult/when_chaining_callbacks/and_result_is_invalid.ts +53 -0
- package/commands/for_CommandResult/when_chaining_callbacks/and_result_is_successful.ts +42 -0
- package/commands/for_CommandResult/when_chaining_callbacks/and_result_is_unauthorized.ts +43 -0
- package/commands/index.ts +9 -0
- package/deepEqual.ts +23 -0
- package/dist/cjs/GetHttpHeaders.d.ts +2 -0
- package/dist/cjs/GetHttpHeaders.d.ts.map +1 -0
- package/dist/cjs/Globals.d.ts +7 -0
- package/dist/cjs/Globals.d.ts.map +1 -0
- package/dist/cjs/Globals.js +10 -0
- package/dist/cjs/Globals.js.map +1 -0
- package/dist/cjs/ICanBeConfigured.d.ts +8 -0
- package/dist/cjs/ICanBeConfigured.d.ts.map +1 -0
- package/dist/cjs/UrlHelpers.d.ts +9 -0
- package/dist/cjs/UrlHelpers.d.ts.map +1 -0
- package/dist/cjs/UrlHelpers.js +43 -0
- package/dist/cjs/UrlHelpers.js.map +1 -0
- package/dist/cjs/commands/Command.d.ts +41 -0
- package/dist/cjs/commands/Command.d.ts.map +1 -0
- package/dist/cjs/commands/Command.js +151 -0
- package/dist/cjs/commands/Command.js.map +1 -0
- package/dist/cjs/commands/CommandResult.d.ts +48 -0
- package/dist/cjs/commands/CommandResult.d.ts.map +1 -0
- package/dist/cjs/commands/CommandResult.js +95 -0
- package/dist/cjs/commands/CommandResult.js.map +1 -0
- package/dist/cjs/commands/CommandResults.d.ts +23 -0
- package/dist/cjs/commands/CommandResults.d.ts.map +1 -0
- package/dist/cjs/commands/CommandResults.js +72 -0
- package/dist/cjs/commands/CommandResults.js.map +1 -0
- package/dist/cjs/commands/CommandValidator.d.ts +9 -0
- package/dist/cjs/commands/CommandValidator.d.ts.map +1 -0
- package/dist/cjs/commands/CommandValidator.js +10 -0
- package/dist/cjs/commands/CommandValidator.js.map +1 -0
- package/dist/cjs/commands/ICommand.d.ts +18 -0
- package/dist/cjs/commands/ICommand.d.ts.map +1 -0
- package/dist/cjs/commands/ICommandResult.d.ts +15 -0
- package/dist/cjs/commands/ICommandResult.d.ts.map +1 -0
- package/dist/cjs/commands/index.d.ts +7 -0
- package/dist/cjs/commands/index.d.ts.map +1 -0
- package/dist/cjs/commands/index.js +14 -0
- package/dist/cjs/commands/index.js.map +1 -0
- package/dist/cjs/deepEqual.d.ts +2 -0
- package/dist/cjs/deepEqual.d.ts.map +1 -0
- package/dist/cjs/deepEqual.js +22 -0
- package/dist/cjs/deepEqual.js.map +1 -0
- package/dist/cjs/given.d.ts +5 -0
- package/dist/cjs/given.d.ts.map +1 -0
- package/dist/cjs/identity/IIdentity.d.ts +8 -0
- package/dist/cjs/identity/IIdentity.d.ts.map +1 -0
- package/dist/cjs/identity/IIdentityProvider.d.ts +5 -0
- package/dist/cjs/identity/IIdentityProvider.d.ts.map +1 -0
- package/dist/cjs/identity/IIdentityProvider.js +7 -0
- package/dist/cjs/identity/IIdentityProvider.js.map +1 -0
- package/dist/cjs/identity/IdentityProvider.d.ts +14 -0
- package/dist/cjs/identity/IdentityProvider.d.ts.map +1 -0
- package/dist/cjs/identity/IdentityProvider.js +63 -0
- package/dist/cjs/identity/IdentityProvider.js.map +1 -0
- package/dist/cjs/identity/IdentityProviderResult.d.ts +6 -0
- package/dist/cjs/identity/IdentityProviderResult.d.ts.map +1 -0
- package/dist/cjs/identity/index.d.ts +5 -0
- package/dist/cjs/identity/index.d.ts.map +1 -0
- package/dist/cjs/identity/index.js +10 -0
- package/dist/cjs/identity/index.js.map +1 -0
- package/dist/cjs/index.d.ts +12 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/joinPaths.d.ts +2 -0
- package/dist/cjs/joinPaths.d.ts.map +1 -0
- package/dist/cjs/joinPaths.js +9 -0
- package/dist/cjs/joinPaths.js.map +1 -0
- package/dist/cjs/queries/IObservableQueryConnection.d.ts +6 -0
- package/dist/cjs/queries/IObservableQueryConnection.d.ts.map +1 -0
- package/dist/cjs/queries/IObservableQueryFor.d.ts +13 -0
- package/dist/cjs/queries/IObservableQueryFor.d.ts.map +1 -0
- package/dist/cjs/queries/IQuery.d.ts +10 -0
- package/dist/cjs/queries/IQuery.d.ts.map +1 -0
- package/dist/cjs/queries/IQueryFor.d.ts +12 -0
- package/dist/cjs/queries/IQueryFor.d.ts.map +1 -0
- package/dist/cjs/queries/IQueryProvider.d.ts +6 -0
- package/dist/cjs/queries/IQueryProvider.d.ts.map +1 -0
- package/dist/cjs/queries/IQueryProvider.js +7 -0
- package/dist/cjs/queries/IQueryProvider.js.map +1 -0
- package/dist/cjs/queries/IQueryResult.d.ts +15 -0
- package/dist/cjs/queries/IQueryResult.d.ts.map +1 -0
- package/dist/cjs/queries/NullObservableQueryConnection.d.ts +9 -0
- package/dist/cjs/queries/NullObservableQueryConnection.d.ts.map +1 -0
- package/dist/cjs/queries/NullObservableQueryConnection.js +18 -0
- package/dist/cjs/queries/NullObservableQueryConnection.js.map +1 -0
- package/dist/cjs/queries/ObservableQueryConnection.d.ts +14 -0
- package/dist/cjs/queries/ObservableQueryConnection.d.ts.map +1 -0
- package/dist/cjs/queries/ObservableQueryConnection.js +101 -0
- package/dist/cjs/queries/ObservableQueryConnection.js.map +1 -0
- package/dist/cjs/queries/ObservableQueryFor.d.ts +37 -0
- package/dist/cjs/queries/ObservableQueryFor.d.ts.map +1 -0
- package/dist/cjs/queries/ObservableQueryFor.js +176 -0
- package/dist/cjs/queries/ObservableQueryFor.js.map +1 -0
- package/dist/cjs/queries/ObservableQuerySubscription.d.ts +7 -0
- package/dist/cjs/queries/ObservableQuerySubscription.d.ts.map +1 -0
- package/dist/cjs/queries/ObservableQuerySubscription.js +17 -0
- package/dist/cjs/queries/ObservableQuerySubscription.js.map +1 -0
- package/dist/cjs/queries/Paging.d.ts +8 -0
- package/dist/cjs/queries/Paging.d.ts.map +1 -0
- package/dist/cjs/queries/Paging.js +17 -0
- package/dist/cjs/queries/Paging.js.map +1 -0
- package/dist/cjs/queries/PagingInfo.d.ts +9 -0
- package/dist/cjs/queries/PagingInfo.d.ts.map +1 -0
- package/dist/cjs/queries/PagingInfo.js +18 -0
- package/dist/cjs/queries/PagingInfo.js.map +1 -0
- package/dist/cjs/queries/QueryFor.d.ts +30 -0
- package/dist/cjs/queries/QueryFor.d.ts.map +1 -0
- package/dist/cjs/queries/QueryFor.js +101 -0
- package/dist/cjs/queries/QueryFor.js.map +1 -0
- package/dist/cjs/queries/QueryProvider.d.ts +13 -0
- package/dist/cjs/queries/QueryProvider.d.ts.map +1 -0
- package/dist/cjs/queries/QueryProvider.js +25 -0
- package/dist/cjs/queries/QueryProvider.js.map +1 -0
- package/dist/cjs/queries/QueryResult.d.ts +44 -0
- package/dist/cjs/queries/QueryResult.d.ts.map +1 -0
- package/dist/cjs/queries/QueryResult.js +95 -0
- package/dist/cjs/queries/QueryResult.js.map +1 -0
- package/dist/cjs/queries/QueryResultWithState.d.ts +22 -0
- package/dist/cjs/queries/QueryResultWithState.d.ts.map +1 -0
- package/dist/cjs/queries/QueryResultWithState.js +46 -0
- package/dist/cjs/queries/QueryResultWithState.js.map +1 -0
- package/dist/cjs/queries/SortDirection.d.ts +6 -0
- package/dist/cjs/queries/SortDirection.d.ts.map +1 -0
- package/dist/cjs/queries/SortDirection.js +9 -0
- package/dist/cjs/queries/SortDirection.js.map +1 -0
- package/dist/cjs/queries/Sorting.d.ts +9 -0
- package/dist/cjs/queries/Sorting.d.ts.map +1 -0
- package/dist/cjs/queries/Sorting.js +19 -0
- package/dist/cjs/queries/Sorting.js.map +1 -0
- package/dist/cjs/queries/SortingActions.d.ts +10 -0
- package/dist/cjs/queries/SortingActions.d.ts.map +1 -0
- package/dist/cjs/queries/SortingActions.js +24 -0
- package/dist/cjs/queries/SortingActions.js.map +1 -0
- package/dist/cjs/queries/SortingActionsForObservableQuery.d.ts +10 -0
- package/dist/cjs/queries/SortingActionsForObservableQuery.d.ts.map +1 -0
- package/dist/cjs/queries/SortingActionsForObservableQuery.js +24 -0
- package/dist/cjs/queries/SortingActionsForObservableQuery.js.map +1 -0
- package/dist/cjs/queries/SortingActionsForQuery.d.ts +10 -0
- package/dist/cjs/queries/SortingActionsForQuery.d.ts.map +1 -0
- package/dist/cjs/queries/SortingActionsForQuery.js +24 -0
- package/dist/cjs/queries/SortingActionsForQuery.js.map +1 -0
- package/dist/cjs/queries/ValidateRequestArguments.d.ts +2 -0
- package/dist/cjs/queries/ValidateRequestArguments.d.ts.map +1 -0
- package/dist/cjs/queries/ValidateRequestArguments.js +29 -0
- package/dist/cjs/queries/ValidateRequestArguments.js.map +1 -0
- package/dist/cjs/queries/index.d.ts +19 -0
- package/dist/cjs/queries/index.d.ts.map +1 -0
- package/dist/cjs/queries/index.js +37 -0
- package/dist/cjs/queries/index.js.map +1 -0
- package/dist/cjs/reflection/IHaveParameters.d.ts +5 -0
- package/dist/cjs/reflection/IHaveParameters.d.ts.map +1 -0
- package/dist/cjs/reflection/ParameterDescriptor.d.ts +7 -0
- package/dist/cjs/reflection/ParameterDescriptor.d.ts.map +1 -0
- package/dist/cjs/reflection/ParameterDescriptor.js +13 -0
- package/dist/cjs/reflection/ParameterDescriptor.js.map +1 -0
- package/dist/cjs/reflection/ParametersHelper.d.ts +5 -0
- package/dist/cjs/reflection/ParametersHelper.d.ts.map +1 -0
- package/dist/cjs/reflection/ParametersHelper.js +17 -0
- package/dist/cjs/reflection/ParametersHelper.js.map +1 -0
- package/dist/cjs/reflection/PropertyDescriptor.d.ts +7 -0
- package/dist/cjs/reflection/PropertyDescriptor.d.ts.map +1 -0
- package/dist/cjs/reflection/PropertyDescriptor.js +13 -0
- package/dist/cjs/reflection/PropertyDescriptor.js.map +1 -0
- package/dist/cjs/reflection/index.d.ts +5 -0
- package/dist/cjs/reflection/index.d.ts.map +1 -0
- package/dist/cjs/reflection/index.js +12 -0
- package/dist/cjs/reflection/index.js.map +1 -0
- package/dist/cjs/validation/ValidationResult.d.ts +9 -0
- package/dist/cjs/validation/ValidationResult.d.ts.map +1 -0
- package/dist/cjs/validation/ValidationResult.js +17 -0
- package/dist/cjs/validation/ValidationResult.js.map +1 -0
- package/dist/cjs/validation/ValidationResultSeverity.d.ts +7 -0
- package/dist/cjs/validation/ValidationResultSeverity.d.ts.map +1 -0
- package/dist/cjs/validation/Validator.d.ts +4 -0
- package/dist/cjs/validation/Validator.d.ts.map +1 -0
- package/dist/cjs/validation/Validator.js +10 -0
- package/dist/cjs/validation/Validator.js.map +1 -0
- package/dist/cjs/validation/index.d.ts +3 -0
- package/dist/cjs/validation/index.d.ts.map +1 -0
- package/dist/cjs/validation/index.js +10 -0
- package/dist/cjs/validation/index.js.map +1 -0
- package/dist/esm/GetHttpHeaders.d.ts +2 -0
- package/dist/esm/GetHttpHeaders.d.ts.map +1 -0
- package/dist/esm/GetHttpHeaders.js +2 -0
- package/dist/esm/GetHttpHeaders.js.map +1 -0
- package/dist/esm/Globals.d.ts +7 -0
- package/dist/esm/Globals.d.ts.map +1 -0
- package/dist/esm/Globals.js +8 -0
- package/dist/esm/Globals.js.map +1 -0
- package/dist/esm/ICanBeConfigured.d.ts +8 -0
- package/dist/esm/ICanBeConfigured.d.ts.map +1 -0
- package/dist/esm/ICanBeConfigured.js +2 -0
- package/dist/esm/ICanBeConfigured.js.map +1 -0
- package/dist/esm/UrlHelpers.d.ts +9 -0
- package/dist/esm/UrlHelpers.d.ts.map +1 -0
- package/dist/esm/UrlHelpers.js +41 -0
- package/dist/esm/UrlHelpers.js.map +1 -0
- package/dist/esm/commands/Command.d.ts +41 -0
- package/dist/esm/commands/Command.d.ts.map +1 -0
- package/dist/esm/commands/Command.js +149 -0
- package/dist/esm/commands/Command.js.map +1 -0
- package/dist/esm/commands/CommandResult.d.ts +48 -0
- package/dist/esm/commands/CommandResult.d.ts.map +1 -0
- package/dist/esm/commands/CommandResult.js +93 -0
- package/dist/esm/commands/CommandResult.js.map +1 -0
- package/dist/esm/commands/CommandResults.d.ts +23 -0
- package/dist/esm/commands/CommandResults.d.ts.map +1 -0
- package/dist/esm/commands/CommandResults.js +70 -0
- package/dist/esm/commands/CommandResults.js.map +1 -0
- package/dist/esm/commands/CommandValidator.d.ts +9 -0
- package/dist/esm/commands/CommandValidator.d.ts.map +1 -0
- package/dist/esm/commands/CommandValidator.js +8 -0
- package/dist/esm/commands/CommandValidator.js.map +1 -0
- package/dist/esm/commands/ICommand.d.ts +18 -0
- package/dist/esm/commands/ICommand.d.ts.map +1 -0
- package/dist/esm/commands/ICommand.js +2 -0
- package/dist/esm/commands/ICommand.js.map +1 -0
- package/dist/esm/commands/ICommandResult.d.ts +15 -0
- package/dist/esm/commands/ICommandResult.d.ts.map +1 -0
- package/dist/esm/commands/ICommandResult.js +2 -0
- package/dist/esm/commands/ICommandResult.js.map +1 -0
- package/dist/esm/commands/index.d.ts +7 -0
- package/dist/esm/commands/index.d.ts.map +1 -0
- package/dist/esm/commands/index.js +5 -0
- package/dist/esm/commands/index.js.map +1 -0
- package/dist/esm/deepEqual.d.ts +2 -0
- package/dist/esm/deepEqual.d.ts.map +1 -0
- package/dist/esm/deepEqual.js +20 -0
- package/dist/esm/deepEqual.js.map +1 -0
- package/dist/esm/given.d.ts +5 -0
- package/dist/esm/given.d.ts.map +1 -0
- package/dist/esm/given.js +7 -0
- package/dist/esm/given.js.map +1 -0
- package/dist/esm/identity/IIdentity.d.ts +8 -0
- package/dist/esm/identity/IIdentity.d.ts.map +1 -0
- package/dist/esm/identity/IIdentity.js +2 -0
- package/dist/esm/identity/IIdentity.js.map +1 -0
- package/dist/esm/identity/IIdentityProvider.d.ts +5 -0
- package/dist/esm/identity/IIdentityProvider.d.ts.map +1 -0
- package/dist/esm/identity/IIdentityProvider.js +5 -0
- package/dist/esm/identity/IIdentityProvider.js.map +1 -0
- package/dist/esm/identity/IdentityProvider.d.ts +14 -0
- package/dist/esm/identity/IdentityProvider.d.ts.map +1 -0
- package/dist/esm/identity/IdentityProvider.js +61 -0
- package/dist/esm/identity/IdentityProvider.js.map +1 -0
- package/dist/esm/identity/IdentityProviderResult.d.ts +6 -0
- package/dist/esm/identity/IdentityProviderResult.d.ts.map +1 -0
- package/dist/esm/identity/IdentityProviderResult.js +2 -0
- package/dist/esm/identity/IdentityProviderResult.js.map +1 -0
- package/dist/esm/identity/index.d.ts +5 -0
- package/dist/esm/identity/index.d.ts.map +1 -0
- package/dist/esm/identity/index.js +3 -0
- package/dist/esm/identity/index.js.map +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +14 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/joinPaths.d.ts +2 -0
- package/dist/esm/joinPaths.d.ts.map +1 -0
- package/dist/esm/joinPaths.js +7 -0
- package/dist/esm/joinPaths.js.map +1 -0
- package/dist/esm/queries/IObservableQueryConnection.d.ts +6 -0
- package/dist/esm/queries/IObservableQueryConnection.d.ts.map +1 -0
- package/dist/esm/queries/IObservableQueryConnection.js +2 -0
- package/dist/esm/queries/IObservableQueryConnection.js.map +1 -0
- package/dist/esm/queries/IObservableQueryFor.d.ts +13 -0
- package/dist/esm/queries/IObservableQueryFor.d.ts.map +1 -0
- package/dist/esm/queries/IObservableQueryFor.js +2 -0
- package/dist/esm/queries/IObservableQueryFor.js.map +1 -0
- package/dist/esm/queries/IQuery.d.ts +10 -0
- package/dist/esm/queries/IQuery.d.ts.map +1 -0
- package/dist/esm/queries/IQuery.js +2 -0
- package/dist/esm/queries/IQuery.js.map +1 -0
- package/dist/esm/queries/IQueryFor.d.ts +12 -0
- package/dist/esm/queries/IQueryFor.d.ts.map +1 -0
- package/dist/esm/queries/IQueryFor.js +2 -0
- package/dist/esm/queries/IQueryFor.js.map +1 -0
- package/dist/esm/queries/IQueryProvider.d.ts +6 -0
- package/dist/esm/queries/IQueryProvider.d.ts.map +1 -0
- package/dist/esm/queries/IQueryProvider.js +5 -0
- package/dist/esm/queries/IQueryProvider.js.map +1 -0
- package/dist/esm/queries/IQueryResult.d.ts +15 -0
- package/dist/esm/queries/IQueryResult.d.ts.map +1 -0
- package/dist/esm/queries/IQueryResult.js +2 -0
- package/dist/esm/queries/IQueryResult.js.map +1 -0
- package/dist/esm/queries/NullObservableQueryConnection.d.ts +9 -0
- package/dist/esm/queries/NullObservableQueryConnection.d.ts.map +1 -0
- package/dist/esm/queries/NullObservableQueryConnection.js +16 -0
- package/dist/esm/queries/NullObservableQueryConnection.js.map +1 -0
- package/dist/esm/queries/ObservableQueryConnection.d.ts +14 -0
- package/dist/esm/queries/ObservableQueryConnection.d.ts.map +1 -0
- package/dist/esm/queries/ObservableQueryConnection.js +99 -0
- package/dist/esm/queries/ObservableQueryConnection.js.map +1 -0
- package/dist/esm/queries/ObservableQueryFor.d.ts +37 -0
- package/dist/esm/queries/ObservableQueryFor.d.ts.map +1 -0
- package/dist/esm/queries/ObservableQueryFor.js +174 -0
- package/dist/esm/queries/ObservableQueryFor.js.map +1 -0
- package/dist/esm/queries/ObservableQuerySubscription.d.ts +7 -0
- package/dist/esm/queries/ObservableQuerySubscription.d.ts.map +1 -0
- package/dist/esm/queries/ObservableQuerySubscription.js +15 -0
- package/dist/esm/queries/ObservableQuerySubscription.js.map +1 -0
- package/dist/esm/queries/Paging.d.ts +8 -0
- package/dist/esm/queries/Paging.d.ts.map +1 -0
- package/dist/esm/queries/Paging.js +15 -0
- package/dist/esm/queries/Paging.js.map +1 -0
- package/dist/esm/queries/PagingInfo.d.ts +9 -0
- package/dist/esm/queries/PagingInfo.d.ts.map +1 -0
- package/dist/esm/queries/PagingInfo.js +16 -0
- package/dist/esm/queries/PagingInfo.js.map +1 -0
- package/dist/esm/queries/QueryFor.d.ts +30 -0
- package/dist/esm/queries/QueryFor.d.ts.map +1 -0
- package/dist/esm/queries/QueryFor.js +99 -0
- package/dist/esm/queries/QueryFor.js.map +1 -0
- package/dist/esm/queries/QueryProvider.d.ts +13 -0
- package/dist/esm/queries/QueryProvider.d.ts.map +1 -0
- package/dist/esm/queries/QueryProvider.js +23 -0
- package/dist/esm/queries/QueryProvider.js.map +1 -0
- package/dist/esm/queries/QueryResult.d.ts +44 -0
- package/dist/esm/queries/QueryResult.d.ts.map +1 -0
- package/dist/esm/queries/QueryResult.js +93 -0
- package/dist/esm/queries/QueryResult.js.map +1 -0
- package/dist/esm/queries/QueryResultWithState.d.ts +22 -0
- package/dist/esm/queries/QueryResultWithState.d.ts.map +1 -0
- package/dist/esm/queries/QueryResultWithState.js +44 -0
- package/dist/esm/queries/QueryResultWithState.js.map +1 -0
- package/dist/esm/queries/SortDirection.d.ts +6 -0
- package/dist/esm/queries/SortDirection.d.ts.map +1 -0
- package/dist/esm/queries/SortDirection.js +9 -0
- package/dist/esm/queries/SortDirection.js.map +1 -0
- package/dist/esm/queries/Sorting.d.ts +9 -0
- package/dist/esm/queries/Sorting.d.ts.map +1 -0
- package/dist/esm/queries/Sorting.js +17 -0
- package/dist/esm/queries/Sorting.js.map +1 -0
- package/dist/esm/queries/SortingActions.d.ts +10 -0
- package/dist/esm/queries/SortingActions.d.ts.map +1 -0
- package/dist/esm/queries/SortingActions.js +22 -0
- package/dist/esm/queries/SortingActions.js.map +1 -0
- package/dist/esm/queries/SortingActionsForObservableQuery.d.ts +10 -0
- package/dist/esm/queries/SortingActionsForObservableQuery.d.ts.map +1 -0
- package/dist/esm/queries/SortingActionsForObservableQuery.js +22 -0
- package/dist/esm/queries/SortingActionsForObservableQuery.js.map +1 -0
- package/dist/esm/queries/SortingActionsForQuery.d.ts +10 -0
- package/dist/esm/queries/SortingActionsForQuery.d.ts.map +1 -0
- package/dist/esm/queries/SortingActionsForQuery.js +22 -0
- package/dist/esm/queries/SortingActionsForQuery.js.map +1 -0
- package/dist/esm/queries/ValidateRequestArguments.d.ts +2 -0
- package/dist/esm/queries/ValidateRequestArguments.d.ts.map +1 -0
- package/dist/esm/queries/ValidateRequestArguments.js +27 -0
- package/dist/esm/queries/ValidateRequestArguments.js.map +1 -0
- package/dist/esm/queries/index.d.ts +19 -0
- package/dist/esm/queries/index.d.ts.map +1 -0
- package/dist/esm/queries/index.js +15 -0
- package/dist/esm/queries/index.js.map +1 -0
- package/dist/esm/reflection/IHaveParameters.d.ts +5 -0
- package/dist/esm/reflection/IHaveParameters.d.ts.map +1 -0
- package/dist/esm/reflection/IHaveParameters.js +2 -0
- package/dist/esm/reflection/IHaveParameters.js.map +1 -0
- package/dist/esm/reflection/ParameterDescriptor.d.ts +7 -0
- package/dist/esm/reflection/ParameterDescriptor.d.ts.map +1 -0
- package/dist/esm/reflection/ParameterDescriptor.js +11 -0
- package/dist/esm/reflection/ParameterDescriptor.js.map +1 -0
- package/dist/esm/reflection/ParametersHelper.d.ts +5 -0
- package/dist/esm/reflection/ParametersHelper.d.ts.map +1 -0
- package/dist/esm/reflection/ParametersHelper.js +15 -0
- package/dist/esm/reflection/ParametersHelper.js.map +1 -0
- package/dist/esm/reflection/PropertyDescriptor.d.ts +7 -0
- package/dist/esm/reflection/PropertyDescriptor.d.ts.map +1 -0
- package/dist/esm/reflection/PropertyDescriptor.js +11 -0
- package/dist/esm/reflection/PropertyDescriptor.js.map +1 -0
- package/dist/esm/reflection/index.d.ts +5 -0
- package/dist/esm/reflection/index.d.ts.map +1 -0
- package/dist/esm/reflection/index.js +4 -0
- package/dist/esm/reflection/index.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/validation/ValidationResult.d.ts +9 -0
- package/dist/esm/validation/ValidationResult.d.ts.map +1 -0
- package/dist/esm/validation/ValidationResult.js +15 -0
- package/dist/esm/validation/ValidationResult.js.map +1 -0
- package/dist/esm/validation/ValidationResultSeverity.d.ts +7 -0
- package/dist/esm/validation/ValidationResultSeverity.d.ts.map +1 -0
- package/dist/esm/validation/ValidationResultSeverity.js +8 -0
- package/dist/esm/validation/ValidationResultSeverity.js.map +1 -0
- package/dist/esm/validation/Validator.d.ts +4 -0
- package/dist/esm/validation/Validator.d.ts.map +1 -0
- package/dist/esm/validation/Validator.js +8 -0
- package/dist/esm/validation/Validator.js.map +1 -0
- package/dist/esm/validation/index.d.ts +3 -0
- package/dist/esm/validation/index.d.ts.map +1 -0
- package/dist/esm/validation/index.js +3 -0
- package/dist/esm/validation/index.js.map +1 -0
- package/for_UrlHelpers/when_building_query_params/with_additional_parameters.ts +23 -0
- package/for_UrlHelpers/when_building_query_params/with_empty_parameters.ts +16 -0
- package/for_UrlHelpers/when_building_query_params/with_null_and_undefined_values.ts +22 -0
- package/for_UrlHelpers/when_building_query_params/with_unused_parameters_only.ts +21 -0
- package/for_UrlHelpers/when_creating_url_from/with_base_path_ending_with_slash.ts +32 -0
- package/for_UrlHelpers/when_creating_url_from/with_empty_origin.ts +45 -0
- package/for_UrlHelpers/when_creating_url_from/with_null_or_undefined_origin.ts +53 -0
- package/for_UrlHelpers/when_creating_url_from/with_relative_route.ts +32 -0
- package/for_UrlHelpers/when_creating_url_from/with_valid_parameters.ts +32 -0
- package/for_UrlHelpers/when_creating_url_from/without_document_object.ts +34 -0
- package/for_UrlHelpers/when_replacing_route_parameters/with_all_parameters_used_in_route.ts +21 -0
- package/for_UrlHelpers/when_replacing_route_parameters/with_no_parameters.ts +19 -0
- package/for_UrlHelpers/when_replacing_route_parameters/with_unused_parameters.ts +23 -0
- package/for_UrlHelpers/when_replacing_route_parameters/with_url_encoded_values.ts +20 -0
- package/given.ts +14 -0
- package/identity/IIdentity.ts +33 -0
- package/identity/IIdentityProvider.ts +16 -0
- package/identity/IdentityProvider.ts +85 -0
- package/identity/IdentityProviderResult.ts +8 -0
- package/identity/index.ts +7 -0
- package/index.ts +21 -0
- package/joinPaths.ts +7 -0
- package/package.json +70 -0
- package/queries/IObservableQueryConnection.ts +21 -0
- package/queries/IObservableQueryFor.ts +38 -0
- package/queries/IQuery.ts +31 -0
- package/queries/IQueryFor.ts +36 -0
- package/queries/IQueryProvider.ts +17 -0
- package/queries/IQueryResult.ts +60 -0
- package/queries/NullObservableQueryConnection.ts +29 -0
- package/queries/ObservableQueryConnection.ts +118 -0
- package/queries/ObservableQueryFor.ts +230 -0
- package/queries/ObservableQuerySubscription.ts +27 -0
- package/queries/Paging.ts +38 -0
- package/queries/PagingInfo.ts +43 -0
- package/queries/QueryFor.ts +138 -0
- package/queries/QueryProvider.ts +36 -0
- package/queries/QueryResult.ts +157 -0
- package/queries/QueryResultWithState.ts +95 -0
- package/queries/SortDirection.ts +22 -0
- package/queries/Sorting.ts +30 -0
- package/queries/SortingActions.ts +36 -0
- package/queries/SortingActionsForObservableQuery.ts +36 -0
- package/queries/SortingActionsForQuery.ts +36 -0
- package/queries/ValidateRequestArguments.ts +36 -0
- package/queries/for_ObservableQueryFor/given/TestQueries.ts +58 -0
- package/queries/for_ObservableQueryFor/given/an_observable_query_for.ts +16 -0
- package/queries/for_ObservableQueryFor/when_constructing.ts +32 -0
- package/queries/for_ObservableQueryFor/when_constructing_enumerable.ts +18 -0
- package/queries/for_ObservableQueryFor/when_disposing.ts +28 -0
- package/queries/for_ObservableQueryFor/when_performing/with_enumerable_query.ts +61 -0
- package/queries/for_ObservableQueryFor/when_performing/with_invalid_arguments.ts +22 -0
- package/queries/for_ObservableQueryFor/when_performing/with_paging.ts +55 -0
- package/queries/for_ObservableQueryFor/when_performing/with_parameter_descriptor_values.ts +68 -0
- package/queries/for_ObservableQueryFor/when_performing/with_partial_parameter_descriptor_values.ts +67 -0
- package/queries/for_ObservableQueryFor/when_performing/with_route_parameters_and_unused_parameters.ts +71 -0
- package/queries/for_ObservableQueryFor/when_performing/with_sorting.ts +56 -0
- package/queries/for_ObservableQueryFor/when_performing/with_valid_arguments.ts +79 -0
- package/queries/for_ObservableQueryFor/when_setting_api_base_path.ts +17 -0
- package/queries/for_ObservableQueryFor/when_setting_microservice.ts +17 -0
- package/queries/for_ObservableQueryFor/when_setting_origin.ts +17 -0
- package/queries/for_ObservableQueryFor/when_subscribing/with_enumerable_query.ts +34 -0
- package/queries/for_ObservableQueryFor/when_subscribing/with_invalid_arguments.ts +40 -0
- package/queries/for_ObservableQueryFor/when_subscribing/with_paging.ts +36 -0
- package/queries/for_ObservableQueryFor/when_subscribing/with_sorting.ts +37 -0
- package/queries/for_ObservableQueryFor/when_subscribing/with_valid_arguments.ts +35 -0
- package/queries/for_QueryFor/given/TestQueries.ts +72 -0
- package/queries/for_QueryFor/given/a_query_for.ts +18 -0
- package/queries/for_QueryFor/when_constructing.ts +31 -0
- package/queries/for_QueryFor/when_constructing_enumerable.ts +17 -0
- package/queries/for_QueryFor/when_performing/with_abort_controller.ts +71 -0
- package/queries/for_QueryFor/when_performing/with_enumerable_query.ts +62 -0
- package/queries/for_QueryFor/when_performing/with_fetch_error.ts +47 -0
- package/queries/for_QueryFor/when_performing/with_invalid_arguments.ts +29 -0
- package/queries/for_QueryFor/when_performing/with_json_parse_error.ts +45 -0
- package/queries/for_QueryFor/when_performing/with_paging.ts +62 -0
- package/queries/for_QueryFor/when_performing/with_parameter_descriptor_values.ts +68 -0
- package/queries/for_QueryFor/when_performing/with_partial_parameter_descriptor_values.ts +67 -0
- package/queries/for_QueryFor/when_performing/with_query_without_required_parameters.ts +58 -0
- package/queries/for_QueryFor/when_performing/with_route_parameters_and_unused_parameters.ts +71 -0
- package/queries/for_QueryFor/when_performing/with_sorting.ts +99 -0
- package/queries/for_QueryFor/when_performing/with_valid_arguments.ts +87 -0
- package/queries/for_QueryFor/when_setting_api_base_path.ts +19 -0
- package/queries/for_QueryFor/when_setting_microservice.ts +19 -0
- package/queries/for_QueryFor/when_setting_origin.ts +19 -0
- package/queries/for_QueryResult/when_asking_has_data/and_it_an_array_with_items.ts +27 -0
- package/queries/for_QueryResult/when_asking_has_data/and_it_is_defined_instance.ts +27 -0
- package/queries/for_QueryResult/when_asking_has_data/and_it_is_empty_array.ts +27 -0
- package/queries/for_QueryResult/when_asking_has_data/and_it_is_undefined.ts +27 -0
- package/queries/index.ts +21 -0
- package/reflection/IHaveParameters.ts +11 -0
- package/reflection/ParameterDescriptor.ts +17 -0
- package/reflection/ParametersHelper.ts +25 -0
- package/reflection/PropertyDescriptor.ts +17 -0
- package/reflection/index.ts +7 -0
- package/validation/ValidationResult.ts +16 -0
- package/validation/ValidationResultSeverity.ts +28 -0
- package/validation/Validator.ts +15 -0
- package/validation/index.ts +5 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GetHttpHeaders } from 'GetHttpHeaders';
|
|
2
|
+
export interface ICanBeConfigured {
|
|
3
|
+
setMicroservice(microservice: string): any;
|
|
4
|
+
setApiBasePath(apiBasePath: string): void;
|
|
5
|
+
setOrigin(origin: string): void;
|
|
6
|
+
setHttpHeadersCallback(callback: GetHttpHeaders): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=ICanBeConfigured.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ICanBeConfigured.d.ts","sourceRoot":"","sources":["../../ICanBeConfigured.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKhD,MAAM,WAAW,gBAAgB;IAK7B,eAAe,CAAC,YAAY,EAAE,MAAM,OAAE;IAMtC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAM1C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAMhC,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CAC1D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class UrlHelpers {
|
|
2
|
+
static createUrlFrom(origin: string, apiBasePath: string, route: string): URL;
|
|
3
|
+
static replaceRouteParameters<T extends object>(route: string, parameters?: T): {
|
|
4
|
+
route: string;
|
|
5
|
+
unusedParameters: Partial<T>;
|
|
6
|
+
};
|
|
7
|
+
static buildQueryParams(unusedParameters: object, additionalParams?: Record<string, string | number>): URLSearchParams;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=UrlHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UrlHelpers.d.ts","sourceRoot":"","sources":["../../UrlHelpers.ts"],"names":[],"mappings":"AAGA,qBAAa,UAAU;IAQnB,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG;IAe7E,MAAM,CAAC,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE;IA2B/H,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,eAAe;CAiBzH"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
class UrlHelpers {
|
|
4
|
+
static createUrlFrom(origin, apiBasePath, route) {
|
|
5
|
+
if ((!origin || origin.length === 0) && typeof document !== 'undefined') {
|
|
6
|
+
origin = document.location?.origin ?? '';
|
|
7
|
+
}
|
|
8
|
+
return new URL(route, `${origin}${apiBasePath}`);
|
|
9
|
+
}
|
|
10
|
+
static replaceRouteParameters(route, parameters) {
|
|
11
|
+
if (!parameters) {
|
|
12
|
+
return { route, unusedParameters: {} };
|
|
13
|
+
}
|
|
14
|
+
let result = route;
|
|
15
|
+
const unusedParameters = { ...parameters };
|
|
16
|
+
for (const [key, value] of Object.entries(parameters)) {
|
|
17
|
+
const pattern = new RegExp(`\\{${key}\\}`, 'gi');
|
|
18
|
+
const newRoute = result.replace(pattern, encodeURIComponent(String(value)));
|
|
19
|
+
if (newRoute !== result) {
|
|
20
|
+
delete unusedParameters[key];
|
|
21
|
+
result = newRoute;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return { route: result, unusedParameters };
|
|
25
|
+
}
|
|
26
|
+
static buildQueryParams(unusedParameters, additionalParams) {
|
|
27
|
+
const queryParams = new URLSearchParams();
|
|
28
|
+
for (const [key, value] of Object.entries(unusedParameters)) {
|
|
29
|
+
if (value !== undefined && value !== null) {
|
|
30
|
+
queryParams.set(key, String(value));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (additionalParams) {
|
|
34
|
+
for (const [key, value] of Object.entries(additionalParams)) {
|
|
35
|
+
queryParams.set(key, String(value));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return queryParams;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
exports.UrlHelpers = UrlHelpers;
|
|
43
|
+
//# sourceMappingURL=UrlHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UrlHelpers.js","sources":["../../UrlHelpers.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nexport class UrlHelpers {\n /**\n * Creates a URL from the given origin, API base path, and route.\n * @param origin The origin of the request. If not provided, it defaults to the current document's origin.\n * @param apiBasePath The base path for the API.\n * @param route The specific route for the request.\n * @returns The constructed URL.\n */\n static createUrlFrom(origin: string, apiBasePath: string, route: string): URL {\n if ((!origin || origin.length === 0) && typeof document !== 'undefined') {\n origin = document.location?.origin ?? '';\n }\n\n return new URL(route, `${origin}${apiBasePath}`);\n }\n\n /**\n * Replaces route parameters in the route template with values from the parameters object.\n * Returns both the updated route and the parameters that were not used in the route.\n * @param route The route template with placeholders like {paramName}.\n * @param parameters The parameters to replace in the route.\n * @returns An object containing the updated route and unused parameters.\n */\n static replaceRouteParameters<T extends object>(route: string, parameters?: T): { route: string; unusedParameters: Partial<T> } {\n if (!parameters) {\n return { route, unusedParameters: {} };\n }\n\n let result = route;\n const unusedParameters: Partial<T> = { ...parameters };\n\n for (const [key, value] of Object.entries(parameters)) {\n const pattern = new RegExp(`\\\\{${key}\\\\}`, 'gi');\n const newRoute = result.replace(pattern, encodeURIComponent(String(value)));\n \n if (newRoute !== result) {\n delete unusedParameters[key as keyof T];\n result = newRoute;\n }\n }\n\n return { route: result, unusedParameters };\n }\n\n /**\n * Builds URLSearchParams from the given parameters and additional query parameters.\n * @param unusedParameters Parameters that were not used in route replacement.\n * @param additionalParams Additional query parameters to include.\n * @returns URLSearchParams containing all parameters.\n */\n static buildQueryParams(unusedParameters: object, additionalParams?: Record<string, string | number>): URLSearchParams {\n const queryParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(unusedParameters)) {\n if (value !== undefined && value !== null) {\n queryParams.set(key, String(value));\n }\n }\n\n if (additionalParams) {\n for (const [key, value] of Object.entries(additionalParams)) {\n queryParams.set(key, String(value));\n }\n }\n\n return queryParams;\n }\n}"],"names":[],"mappings":";;MAGa,UAAU,CAAA;AAQnB,IAAA,OAAO,aAAa,CAAC,MAAc,EAAE,WAAmB,EAAE,KAAa,EAAA;AACnE,QAAA,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,OAAO,QAAQ,KAAK,WAAW,EAAE;YACrE,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE;QAC5C;QAEA,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,CAAA,EAAG,MAAM,CAAA,EAAG,WAAW,CAAA,CAAE,CAAC;IACpD;AASA,IAAA,OAAO,sBAAsB,CAAmB,KAAa,EAAE,UAAc,EAAA;QACzE,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE;QAC1C;QAEA,IAAI,MAAM,GAAG,KAAK;AAClB,QAAA,MAAM,gBAAgB,GAAe,EAAE,GAAG,UAAU,EAAE;AAEtD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACnD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,CAAA,GAAA,EAAM,GAAG,CAAA,GAAA,CAAK,EAAE,IAAI,CAAC;AAChD,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAE3E,YAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACrB,gBAAA,OAAO,gBAAgB,CAAC,GAAc,CAAC;gBACvC,MAAM,GAAG,QAAQ;YACrB;QACJ;AAEA,QAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAC9C;AAQA,IAAA,OAAO,gBAAgB,CAAC,gBAAwB,EAAE,gBAAkD,EAAA;AAChG,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;AAEzC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACzD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBACvC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACvC;QACJ;QAEA,IAAI,gBAAgB,EAAE;AAClB,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;gBACzD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACvC;QACJ;AAEA,QAAA,OAAO,WAAW;IACtB;AACH;;;;"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ICommand, PropertyChanged } from './ICommand';
|
|
2
|
+
import { CommandResult } from "./CommandResult";
|
|
3
|
+
import { CommandValidator } from './CommandValidator';
|
|
4
|
+
import { Constructor } from '@cratis/fundamentals';
|
|
5
|
+
import { GetHttpHeaders } from '../GetHttpHeaders';
|
|
6
|
+
import { PropertyDescriptor } from '../reflection/PropertyDescriptor';
|
|
7
|
+
export declare abstract class Command<TCommandContent = object, TCommandResponse = object> implements ICommand<TCommandContent, TCommandResponse> {
|
|
8
|
+
readonly _responseType: Constructor;
|
|
9
|
+
readonly _isResponseTypeEnumerable: boolean;
|
|
10
|
+
private _microservice;
|
|
11
|
+
private _apiBasePath;
|
|
12
|
+
private _origin;
|
|
13
|
+
private _httpHeadersCallback;
|
|
14
|
+
abstract readonly route: string;
|
|
15
|
+
abstract readonly validation: CommandValidator;
|
|
16
|
+
abstract readonly propertyDescriptors: PropertyDescriptor[];
|
|
17
|
+
abstract get requestParameters(): string[];
|
|
18
|
+
abstract get properties(): string[];
|
|
19
|
+
private _initialValues;
|
|
20
|
+
private _hasChanges;
|
|
21
|
+
private _callbacks;
|
|
22
|
+
constructor(_responseType: Constructor | undefined, _isResponseTypeEnumerable: boolean);
|
|
23
|
+
setMicroservice(microservice: string): void;
|
|
24
|
+
setApiBasePath(apiBasePath: string): void;
|
|
25
|
+
setOrigin(origin: string): void;
|
|
26
|
+
setHttpHeadersCallback(callback: GetHttpHeaders): void;
|
|
27
|
+
execute(): Promise<CommandResult<TCommandResponse>>;
|
|
28
|
+
validate(): Promise<CommandResult<TCommandResponse>>;
|
|
29
|
+
private buildPayload;
|
|
30
|
+
private buildHeaders;
|
|
31
|
+
private performRequest;
|
|
32
|
+
clear(): void;
|
|
33
|
+
setInitialValues(values: TCommandContent): void;
|
|
34
|
+
setInitialValuesFromCurrentValues(): void;
|
|
35
|
+
revertChanges(): void;
|
|
36
|
+
get hasChanges(): boolean;
|
|
37
|
+
propertyChanged(property: string): void;
|
|
38
|
+
onPropertyChanged(callback: PropertyChanged, thisArg: object): void;
|
|
39
|
+
private updateHasChanges;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=Command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../commands/Command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AAInE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAUtE,8BAAsB,OAAO,CAAC,eAAe,GAAG,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAAE,YAAW,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAoBzH,QAAQ,CAAC,aAAa,EAAE,WAAW;IAAW,QAAQ,CAAC,yBAAyB,EAAE,OAAO;IAnBrG,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,oBAAoB,CAAiB;IAC7C,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC5D,QAAQ,KAAK,iBAAiB,IAAI,MAAM,EAAE,CAAC;IAC3C,QAAQ,KAAK,UAAU,IAAI,MAAM,EAAE,CAAC;IAEpC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAkB;gBAOf,aAAa,EAAE,WAAW,YAAS,EAAW,yBAAyB,EAAE,OAAO;IAQrG,eAAe,CAAC,YAAY,EAAE,MAAM;IAKpC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKzC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/B,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAKhD,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAenD,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAK1D,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,YAAY;YAeN,cAAc;IA6B5B,KAAK,IAAI,IAAI;IASb,gBAAgB,CAAC,MAAM,EAAE,eAAe;IAWxC,iCAAiC;IAUjC,aAAa,IAAI,IAAI;IAOrB,IAAI,UAAU,YAEb;IAGD,eAAe,CAAC,QAAQ,EAAE,MAAM;IAehC,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM;IAO5D,OAAO,CAAC,gBAAgB;CAG3B"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var CommandResult = require('./CommandResult.js');
|
|
4
|
+
var fundamentals = require('@cratis/fundamentals');
|
|
5
|
+
var Globals = require('../Globals.js');
|
|
6
|
+
var joinPaths = require('../joinPaths.js');
|
|
7
|
+
var UrlHelpers = require('../UrlHelpers.js');
|
|
8
|
+
|
|
9
|
+
class Command {
|
|
10
|
+
_responseType;
|
|
11
|
+
_isResponseTypeEnumerable;
|
|
12
|
+
_microservice;
|
|
13
|
+
_apiBasePath;
|
|
14
|
+
_origin;
|
|
15
|
+
_httpHeadersCallback;
|
|
16
|
+
_initialValues = {};
|
|
17
|
+
_hasChanges = false;
|
|
18
|
+
_callbacks = [];
|
|
19
|
+
constructor(_responseType = Object, _isResponseTypeEnumerable) {
|
|
20
|
+
this._responseType = _responseType;
|
|
21
|
+
this._isResponseTypeEnumerable = _isResponseTypeEnumerable;
|
|
22
|
+
this._microservice = Globals.Globals.microservice ?? '';
|
|
23
|
+
this._apiBasePath = '';
|
|
24
|
+
this._origin = '';
|
|
25
|
+
this._httpHeadersCallback = () => ({});
|
|
26
|
+
}
|
|
27
|
+
setMicroservice(microservice) {
|
|
28
|
+
this._microservice = microservice;
|
|
29
|
+
}
|
|
30
|
+
setApiBasePath(apiBasePath) {
|
|
31
|
+
this._apiBasePath = apiBasePath;
|
|
32
|
+
}
|
|
33
|
+
setOrigin(origin) {
|
|
34
|
+
this._origin = origin;
|
|
35
|
+
}
|
|
36
|
+
setHttpHeadersCallback(callback) {
|
|
37
|
+
this._httpHeadersCallback = callback;
|
|
38
|
+
}
|
|
39
|
+
async execute() {
|
|
40
|
+
let actualRoute = this.route;
|
|
41
|
+
if (this.requestParameters && this.requestParameters.length > 0) {
|
|
42
|
+
const payload = this.buildPayload();
|
|
43
|
+
const { route } = UrlHelpers.UrlHelpers.replaceRouteParameters(this.route, payload);
|
|
44
|
+
actualRoute = route;
|
|
45
|
+
}
|
|
46
|
+
const result = await this.performRequest(actualRoute, 'Command not found at route', 'Error during server call');
|
|
47
|
+
this.setInitialValuesFromCurrentValues();
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
async validate() {
|
|
51
|
+
const actualRoute = `${this.route}/validate`;
|
|
52
|
+
return this.performRequest(actualRoute, 'Command validation endpoint not found at route', 'Error during validation call');
|
|
53
|
+
}
|
|
54
|
+
buildPayload() {
|
|
55
|
+
const payload = {};
|
|
56
|
+
this.properties.forEach(property => {
|
|
57
|
+
payload[property] = this[property];
|
|
58
|
+
});
|
|
59
|
+
return payload;
|
|
60
|
+
}
|
|
61
|
+
buildHeaders() {
|
|
62
|
+
const customHeaders = this._httpHeadersCallback?.() ?? {};
|
|
63
|
+
const headers = {
|
|
64
|
+
...customHeaders,
|
|
65
|
+
'Accept': 'application/json',
|
|
66
|
+
'Content-Type': 'application/json'
|
|
67
|
+
};
|
|
68
|
+
if (this._microservice?.length > 0) {
|
|
69
|
+
headers[Globals.Globals.microserviceHttpHeader] = this._microservice;
|
|
70
|
+
}
|
|
71
|
+
return headers;
|
|
72
|
+
}
|
|
73
|
+
async performRequest(route, notFoundMessage, errorMessage) {
|
|
74
|
+
const payload = this.buildPayload();
|
|
75
|
+
const headers = this.buildHeaders();
|
|
76
|
+
const actualRoute = joinPaths.joinPaths(this._apiBasePath, route);
|
|
77
|
+
const url = UrlHelpers.UrlHelpers.createUrlFrom(this._origin, this._apiBasePath, actualRoute);
|
|
78
|
+
try {
|
|
79
|
+
const response = await fetch(url, {
|
|
80
|
+
method: 'POST',
|
|
81
|
+
headers,
|
|
82
|
+
body: fundamentals.JsonSerializer.serialize(payload)
|
|
83
|
+
});
|
|
84
|
+
if (response.status === 404) {
|
|
85
|
+
return CommandResult.CommandResult.failed([`${notFoundMessage} '${actualRoute}'`]);
|
|
86
|
+
}
|
|
87
|
+
const result = await response.json();
|
|
88
|
+
return new CommandResult.CommandResult(result, this._responseType, this._isResponseTypeEnumerable);
|
|
89
|
+
}
|
|
90
|
+
catch (ex) {
|
|
91
|
+
return CommandResult.CommandResult.failed([`${errorMessage}: ${ex}`]);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
clear() {
|
|
95
|
+
this.properties.forEach(property => {
|
|
96
|
+
this[property] = undefined;
|
|
97
|
+
});
|
|
98
|
+
this._initialValues = {};
|
|
99
|
+
this._hasChanges = false;
|
|
100
|
+
}
|
|
101
|
+
setInitialValues(values) {
|
|
102
|
+
this.properties.forEach(property => {
|
|
103
|
+
if (Object.prototype.hasOwnProperty.call(values, property)) {
|
|
104
|
+
this._initialValues[property] = values[property];
|
|
105
|
+
this[property] = values[property];
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
this.updateHasChanges();
|
|
109
|
+
}
|
|
110
|
+
setInitialValuesFromCurrentValues() {
|
|
111
|
+
this.properties.forEach(property => {
|
|
112
|
+
if (this[property]) {
|
|
113
|
+
this._initialValues[property] = this[property];
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
this.updateHasChanges();
|
|
117
|
+
}
|
|
118
|
+
revertChanges() {
|
|
119
|
+
this.properties.forEach(property => {
|
|
120
|
+
this[property] = this._initialValues[property];
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
get hasChanges() {
|
|
124
|
+
return this._hasChanges;
|
|
125
|
+
}
|
|
126
|
+
propertyChanged(property) {
|
|
127
|
+
this.updateHasChanges();
|
|
128
|
+
this._callbacks.forEach(callbackContainer => {
|
|
129
|
+
const callback = callbackContainer.callback.deref();
|
|
130
|
+
const thisArg = callbackContainer.thisArg.deref();
|
|
131
|
+
if (callback && thisArg) {
|
|
132
|
+
callback.call(thisArg, property);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this._callbacks = this._callbacks.filter(_ => _.callback !== callbackContainer.callback);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
onPropertyChanged(callback, thisArg) {
|
|
140
|
+
this._callbacks.push({
|
|
141
|
+
callback: new WeakRef(callback),
|
|
142
|
+
thisArg: new WeakRef(thisArg)
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
updateHasChanges() {
|
|
146
|
+
this._hasChanges = this.properties.some(property => this[property] !== this._initialValues[property]);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
exports.Command = Command;
|
|
151
|
+
//# sourceMappingURL=Command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Command.js","sources":["../../../commands/Command.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ICommand, PropertyChanged } from './ICommand';\nimport { CommandResult } from \"./CommandResult\";\nimport { CommandValidator } from './CommandValidator';\nimport { Constructor, JsonSerializer } from '@cratis/fundamentals';\nimport { Globals } from '../Globals';\nimport { joinPaths } from '../joinPaths';\nimport { UrlHelpers } from '../UrlHelpers';\nimport { GetHttpHeaders } from '../GetHttpHeaders';\nimport { PropertyDescriptor } from '../reflection/PropertyDescriptor';\n\ntype Callback = {\n callback: WeakRef<PropertyChanged>;\n thisArg: WeakRef<object>;\n}\n\n/**\n * Represents an implementation of {@link ICommand} that works with HTTP fetch.\n */\nexport abstract class Command<TCommandContent = object, TCommandResponse = object> implements ICommand<TCommandContent, TCommandResponse> {\n private _microservice: string;\n private _apiBasePath: string;\n private _origin: string;\n private _httpHeadersCallback: GetHttpHeaders;\n abstract readonly route: string;\n abstract readonly validation: CommandValidator;\n abstract readonly propertyDescriptors: PropertyDescriptor[];\n abstract get requestParameters(): string[];\n abstract get properties(): string[];\n\n private _initialValues: object = {};\n private _hasChanges = false;\n private _callbacks: Callback[] = [];\n\n /**\n * Initializes a new instance of the {@link Command<,>} class.\n * @param _responseType Type of response.\n * @param _isResponseTypeEnumerable Whether or not the response type is enumerable.\n */\n constructor(readonly _responseType: Constructor = Object, readonly _isResponseTypeEnumerable: boolean) {\n this._microservice = Globals.microservice ?? '';\n this._apiBasePath = '';\n this._origin = '';\n this._httpHeadersCallback = () => ({});\n }\n\n /** @inheritdoc */\n setMicroservice(microservice: string) {\n this._microservice = microservice;\n }\n\n /** @inheritdoc */\n setApiBasePath(apiBasePath: string): void {\n this._apiBasePath = apiBasePath;\n }\n\n /** @inheritdoc */\n setOrigin(origin: string): void {\n this._origin = origin;\n }\n\n /** @inheritdoc */\n setHttpHeadersCallback(callback: GetHttpHeaders): void {\n this._httpHeadersCallback = callback;\n }\n\n /** @inheritdoc */\n async execute(): Promise<CommandResult<TCommandResponse>> {\n let actualRoute = this.route;\n\n if (this.requestParameters && this.requestParameters.length > 0) {\n const payload = this.buildPayload();\n const { route } = UrlHelpers.replaceRouteParameters(this.route, payload);\n actualRoute = route;\n }\n\n const result = await this.performRequest(actualRoute, 'Command not found at route', 'Error during server call');\n this.setInitialValuesFromCurrentValues();\n return result;\n }\n\n /** @inheritdoc */\n async validate(): Promise<CommandResult<TCommandResponse>> {\n const actualRoute = `${this.route}/validate`;\n return this.performRequest(actualRoute, 'Command validation endpoint not found at route', 'Error during validation call');\n }\n\n private buildPayload(): object {\n const payload = {};\n this.properties.forEach(property => {\n payload[property] = this[property];\n });\n return payload;\n }\n\n private buildHeaders(): HeadersInit {\n const customHeaders = this._httpHeadersCallback?.() ?? {};\n const headers = {\n ...customHeaders,\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n };\n\n if (this._microservice?.length > 0) {\n headers[Globals.microserviceHttpHeader] = this._microservice;\n }\n\n return headers;\n }\n\n private async performRequest(\n route: string,\n notFoundMessage: string,\n errorMessage: string\n ): Promise<CommandResult<TCommandResponse>> {\n const payload = this.buildPayload();\n const headers = this.buildHeaders();\n const actualRoute = joinPaths(this._apiBasePath, route);\n const url = UrlHelpers.createUrlFrom(this._origin, this._apiBasePath, actualRoute);\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JsonSerializer.serialize(payload)\n });\n\n if (response.status === 404) {\n return CommandResult.failed([`${notFoundMessage} '${actualRoute}'`]) as CommandResult<TCommandResponse>;\n }\n\n const result = await response.json();\n return new CommandResult(result, this._responseType, this._isResponseTypeEnumerable);\n } catch (ex) {\n return CommandResult.failed([`${errorMessage}: ${ex}`]) as CommandResult<TCommandResponse>;\n }\n }\n\n /** @inheritdoc */\n clear(): void {\n this.properties.forEach(property => {\n this[property] = undefined;\n });\n this._initialValues = {};\n this._hasChanges = false;\n }\n\n /** @inheritdoc */\n setInitialValues(values: TCommandContent) {\n this.properties.forEach(property => {\n if (Object.prototype.hasOwnProperty.call(values, property)) {\n this._initialValues[property] = values[property];\n this[property] = values[property];\n }\n });\n this.updateHasChanges();\n }\n\n /** @inheritdoc */\n setInitialValuesFromCurrentValues() {\n this.properties.forEach(property => {\n if (this[property]) {\n this._initialValues[property] = this[property];\n }\n });\n this.updateHasChanges();\n }\n\n /** @inheritdoc */\n revertChanges(): void {\n this.properties.forEach(property => {\n this[property] = this._initialValues[property];\n });\n }\n\n /** @inheritdoc */\n get hasChanges() {\n return this._hasChanges;\n }\n\n /** @inheritdoc */\n propertyChanged(property: string) {\n this.updateHasChanges();\n\n this._callbacks.forEach(callbackContainer => {\n const callback = callbackContainer.callback.deref();\n const thisArg = callbackContainer.thisArg.deref();\n if (callback && thisArg) {\n callback.call(thisArg, property);\n } else {\n this._callbacks = this._callbacks.filter(_ => _.callback !== callbackContainer.callback);\n }\n });\n }\n\n /** @inheritdoc */\n onPropertyChanged(callback: PropertyChanged, thisArg: object) {\n this._callbacks.push({\n callback: new WeakRef(callback),\n thisArg: new WeakRef(thisArg)\n });\n }\n\n private updateHasChanges() {\n this._hasChanges = this.properties.some(property => this[property] !== this._initialValues[property]);\n }\n}\n"],"names":["Globals","UrlHelpers","joinPaths","JsonSerializer","CommandResult"],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Guid } from '@cratis/fundamentals';
|
|
2
|
+
import { ICommandResult } from './ICommandResult';
|
|
3
|
+
import { ValidationResult } from '../validation/ValidationResult';
|
|
4
|
+
import { Constructor } from '@cratis/fundamentals';
|
|
5
|
+
type OnSuccess = (<TResponse>(response: TResponse) => void) | (() => void);
|
|
6
|
+
type OnFailed<TResponse> = ((commandResult: CommandResult<TResponse>) => void) | (() => void);
|
|
7
|
+
type OnException = (messages: string[], stackTrace: string) => void;
|
|
8
|
+
type OnUnauthorized = () => void;
|
|
9
|
+
type OnValidationFailure = (validationResults: ValidationResult[]) => void;
|
|
10
|
+
type ServerCommandResult = {
|
|
11
|
+
correlationId: string;
|
|
12
|
+
isSuccess: boolean;
|
|
13
|
+
isAuthorized: boolean;
|
|
14
|
+
isValid: boolean;
|
|
15
|
+
hasExceptions: boolean;
|
|
16
|
+
validationResults: {
|
|
17
|
+
severity: number;
|
|
18
|
+
message: string;
|
|
19
|
+
members: string[];
|
|
20
|
+
state: object;
|
|
21
|
+
}[];
|
|
22
|
+
exceptionMessages: string[];
|
|
23
|
+
exceptionStackTrace: string;
|
|
24
|
+
authorizationFailureReason: string;
|
|
25
|
+
response: any;
|
|
26
|
+
};
|
|
27
|
+
export declare class CommandResult<TResponse = object> implements ICommandResult<TResponse> {
|
|
28
|
+
static empty: CommandResult;
|
|
29
|
+
static failed: (exceptionMessages: string[]) => CommandResult;
|
|
30
|
+
readonly correlationId: Guid;
|
|
31
|
+
readonly isSuccess: boolean;
|
|
32
|
+
readonly isAuthorized: boolean;
|
|
33
|
+
readonly isValid: boolean;
|
|
34
|
+
readonly hasExceptions: boolean;
|
|
35
|
+
readonly validationResults: ValidationResult[];
|
|
36
|
+
readonly exceptionMessages: string[];
|
|
37
|
+
readonly exceptionStackTrace: string;
|
|
38
|
+
readonly authorizationFailureReason: string;
|
|
39
|
+
readonly response?: TResponse;
|
|
40
|
+
constructor(result: ServerCommandResult, responseInstanceType: Constructor | undefined, isResponseTypeEnumerable: boolean);
|
|
41
|
+
onSuccess(callback: OnSuccess): CommandResult<TResponse>;
|
|
42
|
+
onFailed(callback: OnFailed<TResponse>): CommandResult<TResponse>;
|
|
43
|
+
onException(callback: OnException): CommandResult<TResponse>;
|
|
44
|
+
onUnauthorized(callback: OnUnauthorized): CommandResult<TResponse>;
|
|
45
|
+
onValidationFailure(callback: OnValidationFailure): CommandResult<TResponse>;
|
|
46
|
+
}
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=CommandResult.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandResult.d.ts","sourceRoot":"","sources":["../../../commands/CommandResult.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AAKnE,KAAK,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AAK3E,KAAK,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AAK9F,KAAK,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;AAKpE,KAAK,cAAc,GAAG,MAAM,IAAI,CAAC;AAKjC,KAAK,mBAAmB,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;AAE3E,KAAK,mBAAmB,GAAG;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;IACJ,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B,EAAE,MAAM,CAAC;IAGnC,QAAQ,EAAE,GAAG,CAAC;CAEjB,CAAA;AAKD,qBAAa,aAAa,CAAC,SAAS,GAAG,MAAM,CAAE,YAAW,cAAc,CAAC,SAAS,CAAC;IAE/E,MAAM,CAAC,KAAK,EAAE,aAAa,CAWT;IAElB,MAAM,CAAC,MAAM,GAAI,mBAAmB,MAAM,EAAE,KAAG,aAAa,CAa1D;IAGF,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;IAG7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAG5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAG/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAG1B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAGhC,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IAG/C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAGrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAGrC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAG5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;gBAQlB,MAAM,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,WAAW,YAAS,EAAE,wBAAwB,EAAE,OAAO;IAyBtH,SAAS,CAAC,QAAQ,EAAE,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;IAYxD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC;IAYjE,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC;IAY5D,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,aAAa,CAAC,SAAS,CAAC;IAYlE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,aAAa,CAAC,SAAS,CAAC;CAM/E"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fundamentals = require('@cratis/fundamentals');
|
|
4
|
+
var ValidationResult = require('../validation/ValidationResult.js');
|
|
5
|
+
|
|
6
|
+
class CommandResult {
|
|
7
|
+
static empty = new CommandResult({
|
|
8
|
+
correlationId: fundamentals.Guid.empty.toString(),
|
|
9
|
+
isSuccess: true,
|
|
10
|
+
isAuthorized: true,
|
|
11
|
+
isValid: true,
|
|
12
|
+
hasExceptions: false,
|
|
13
|
+
validationResults: [],
|
|
14
|
+
exceptionMessages: [],
|
|
15
|
+
exceptionStackTrace: '',
|
|
16
|
+
authorizationFailureReason: '',
|
|
17
|
+
response: null
|
|
18
|
+
}, Object, false);
|
|
19
|
+
static failed = (exceptionMessages) => {
|
|
20
|
+
return new CommandResult({
|
|
21
|
+
correlationId: fundamentals.Guid.empty.toString(),
|
|
22
|
+
isSuccess: false,
|
|
23
|
+
isAuthorized: true,
|
|
24
|
+
isValid: true,
|
|
25
|
+
hasExceptions: true,
|
|
26
|
+
validationResults: [],
|
|
27
|
+
exceptionMessages: exceptionMessages,
|
|
28
|
+
exceptionStackTrace: '',
|
|
29
|
+
authorizationFailureReason: '',
|
|
30
|
+
response: null
|
|
31
|
+
}, Object, false);
|
|
32
|
+
};
|
|
33
|
+
correlationId;
|
|
34
|
+
isSuccess;
|
|
35
|
+
isAuthorized;
|
|
36
|
+
isValid;
|
|
37
|
+
hasExceptions;
|
|
38
|
+
validationResults;
|
|
39
|
+
exceptionMessages;
|
|
40
|
+
exceptionStackTrace;
|
|
41
|
+
authorizationFailureReason;
|
|
42
|
+
response;
|
|
43
|
+
constructor(result, responseInstanceType = Object, isResponseTypeEnumerable) {
|
|
44
|
+
this.correlationId = fundamentals.Guid.parse(result.correlationId);
|
|
45
|
+
this.isSuccess = result.isSuccess;
|
|
46
|
+
this.isAuthorized = result.isAuthorized;
|
|
47
|
+
this.isValid = result.isValid;
|
|
48
|
+
this.hasExceptions = result.hasExceptions;
|
|
49
|
+
this.validationResults = result.validationResults.map(_ => new ValidationResult.ValidationResult(_.severity, _.message, _.members, _.state));
|
|
50
|
+
this.exceptionMessages = result.exceptionMessages;
|
|
51
|
+
this.exceptionStackTrace = result.exceptionStackTrace;
|
|
52
|
+
this.authorizationFailureReason = result.authorizationFailureReason;
|
|
53
|
+
if (result.response) {
|
|
54
|
+
if (isResponseTypeEnumerable) {
|
|
55
|
+
this.response = fundamentals.JsonSerializer.deserializeArrayFromInstance(responseInstanceType, result.response);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.response = fundamentals.JsonSerializer.deserializeFromInstance(responseInstanceType, result.response);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
onSuccess(callback) {
|
|
63
|
+
if (this.isSuccess) {
|
|
64
|
+
callback(this.response);
|
|
65
|
+
}
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
onFailed(callback) {
|
|
69
|
+
if (!this.isSuccess) {
|
|
70
|
+
callback(this);
|
|
71
|
+
}
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
onException(callback) {
|
|
75
|
+
if (this.hasExceptions) {
|
|
76
|
+
callback(this.exceptionMessages, this.exceptionStackTrace);
|
|
77
|
+
}
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
onUnauthorized(callback) {
|
|
81
|
+
if (!this.isAuthorized) {
|
|
82
|
+
callback();
|
|
83
|
+
}
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
onValidationFailure(callback) {
|
|
87
|
+
if (!this.isValid) {
|
|
88
|
+
callback(this.validationResults);
|
|
89
|
+
}
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
exports.CommandResult = CommandResult;
|
|
95
|
+
//# sourceMappingURL=CommandResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandResult.js","sources":["../../../commands/CommandResult.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Guid } from '@cratis/fundamentals';\nimport { ICommandResult } from './ICommandResult';\nimport { ValidationResult } from '../validation/ValidationResult';\nimport { Constructor, JsonSerializer } from '@cratis/fundamentals';\n\n/**\n * Delegate type for the onSuccess callback.\n */\ntype OnSuccess = (<TResponse>(response: TResponse) => void) | (() => void);\n\n/**\n * Delegate type for the onFailed callback.\n */\ntype OnFailed<TResponse> = ((commandResult: CommandResult<TResponse>) => void) | (() => void);\n\n/**\n * Delegate type for the onException callback.\n */\ntype OnException = (messages: string[], stackTrace: string) => void;\n\n/**\n * Delegate type for the onUnauthorized callback.\n */\ntype OnUnauthorized = () => void;\n\n/**\n * Delegate type for the onValidationFailure callback.\n */\ntype OnValidationFailure = (validationResults: ValidationResult[]) => void;\n\ntype ServerCommandResult = {\n correlationId: string;\n isSuccess: boolean;\n isAuthorized: boolean;\n isValid: boolean;\n hasExceptions: boolean;\n validationResults: {\n severity: number;\n message: string;\n members: string[];\n state: object;\n }[];\n exceptionMessages: string[];\n exceptionStackTrace: string;\n authorizationFailureReason: string;\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n response: any;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n}\n\n/**\n * Represents the result from executing a {@link ICommand}.\n */\nexport class CommandResult<TResponse = object> implements ICommandResult<TResponse> {\n\n static empty: CommandResult = new CommandResult({\n correlationId: Guid.empty.toString(),\n isSuccess: true,\n isAuthorized: true,\n isValid: true,\n hasExceptions: false,\n validationResults: [],\n exceptionMessages: [],\n exceptionStackTrace: '',\n authorizationFailureReason: '',\n response: null\n }, Object, false);\n\n static failed = (exceptionMessages: string[]): CommandResult => {\n return new CommandResult({\n correlationId: Guid.empty.toString(),\n isSuccess: false,\n isAuthorized: true,\n isValid: true,\n hasExceptions: true,\n validationResults: [],\n exceptionMessages: exceptionMessages,\n exceptionStackTrace: '',\n authorizationFailureReason: '',\n response: null\n }, Object, false);\n };\n\n /** @inheritdoc */\n readonly correlationId: Guid;\n\n /** @inheritdoc */\n readonly isSuccess: boolean;\n\n /** @inheritdoc */\n readonly isAuthorized: boolean;\n\n /** @inheritdoc */\n readonly isValid: boolean;\n\n /** @inheritdoc */\n readonly hasExceptions: boolean;\n\n /** @inheritdoc */\n readonly validationResults: ValidationResult[];\n\n /** @inheritdoc */\n readonly exceptionMessages: string[];\n\n /** @inheritdoc */\n readonly exceptionStackTrace: string;\n\n /** @inheritdoc */\n readonly authorizationFailureReason: string;\n\n /** @inheritdoc */\n readonly response?: TResponse;\n\n /**\n * Creates an instance of command result.\n * @param {*} result The JSON/any representation of the command result;\n * @param {Constructor} responseInstanceType The {@see Constructor} that represents the type of response, if any. Defaults to {@see Object}.\n * @param {boolean} isResponseTypeEnumerable Whether or not the response type is an enumerable or not.\n */\n constructor(result: ServerCommandResult, responseInstanceType: Constructor = Object, isResponseTypeEnumerable: boolean) {\n this.correlationId = Guid.parse(result.correlationId);\n this.isSuccess = result.isSuccess;\n this.isAuthorized = result.isAuthorized;\n this.isValid = result.isValid;\n this.hasExceptions = result.hasExceptions;\n this.validationResults = result.validationResults.map(_ => new ValidationResult(_.severity, _.message, _.members, _.state));\n this.exceptionMessages = result.exceptionMessages;\n this.exceptionStackTrace = result.exceptionStackTrace;\n this.authorizationFailureReason = result.authorizationFailureReason;\n\n if (result.response) {\n if (isResponseTypeEnumerable) {\n this.response = JsonSerializer.deserializeArrayFromInstance(responseInstanceType, result.response) as TResponse;\n } else {\n this.response = JsonSerializer.deserializeFromInstance(responseInstanceType, result.response) as TResponse;\n }\n }\n }\n\n /**\n * Set up a callback for when the command was successful.\n * @param {OnSuccess} callback The callback to call when the command was successful.\n * @returns {CommandResult} The instance of the command result.\n */\n onSuccess(callback: OnSuccess): CommandResult<TResponse> {\n if (this.isSuccess) {\n callback(this.response as TResponse);\n }\n return this;\n }\n\n /**\n * Set up a callback for when the command failed.\n * @param {OnFailed} callback The callback to call when the command failed.\n * @returns {CommandResult} The instance of the command result.\n */\n onFailed(callback: OnFailed<TResponse>): CommandResult<TResponse> {\n if (!this.isSuccess) {\n callback(this);\n }\n return this;\n }\n\n /**\n * Set up a callback for when the command failed with an exception.\n * @param {OnException} callback The callback to call when the command had an exception.\n * @returns {CommandResult} The instance of the command result.\n */\n onException(callback: OnException): CommandResult<TResponse> {\n if (this.hasExceptions) {\n callback(this.exceptionMessages, this.exceptionStackTrace);\n }\n return this;\n }\n\n /**\n * Set up a callback for when the command was unauthorized.\n * @param {OnUnauthorized} callback The callback to call when the command was unauthorized.\n * @returns {CommandResult} The instance of the command result.\n */\n onUnauthorized(callback: OnUnauthorized): CommandResult<TResponse> {\n if (!this.isAuthorized) {\n callback();\n }\n return this;\n }\n\n /**\n * Set up a callback for when the command had validation errors.\n * @param {OnSuccess} callback The callback to call when the command was invalid.\n * @returns {CommandResult} The instance of the command result.\n */\n onValidationFailure(callback: OnValidationFailure): CommandResult<TResponse> {\n if (!this.isValid) {\n callback(this.validationResults);\n }\n return this;\n }\n}\n"],"names":["Guid","ValidationResult","JsonSerializer"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Guid } from '@cratis/fundamentals';
|
|
2
|
+
import { ValidationResult } from '../validation/ValidationResult';
|
|
3
|
+
import { Command } from './Command';
|
|
4
|
+
import { CommandResult } from './CommandResult';
|
|
5
|
+
import { ICommandResult } from './ICommandResult';
|
|
6
|
+
type GetSpecificState = (commandResult: CommandResult) => boolean;
|
|
7
|
+
export declare class CommandResults implements ICommandResult {
|
|
8
|
+
private readonly _commandResultsPerCommand;
|
|
9
|
+
constructor(_commandResultsPerCommand: Map<Command, CommandResult>);
|
|
10
|
+
readonly correlationId: Guid;
|
|
11
|
+
get isSuccess(): boolean;
|
|
12
|
+
get isAuthorized(): boolean;
|
|
13
|
+
get isValid(): boolean;
|
|
14
|
+
get hasExceptions(): boolean;
|
|
15
|
+
get validationResults(): ValidationResult[];
|
|
16
|
+
get exceptionMessages(): string[];
|
|
17
|
+
get authorizationFailureReason(): string;
|
|
18
|
+
get exceptionStackTrace(): string;
|
|
19
|
+
isAnyFalse(callback: GetSpecificState): boolean;
|
|
20
|
+
isAnyTrue(callback: GetSpecificState): boolean;
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=CommandResults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandResults.d.ts","sourceRoot":"","sources":["../../../commands/CommandResults.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,KAAK,gBAAgB,GAAG,CAAC,aAAa,EAAE,aAAa,KAAK,OAAO,CAAC;AAGlE,qBAAa,cAAe,YAAW,cAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;gBAAzB,yBAAyB,EAAE,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC;IAInF,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAc;IAG1C,IAAI,SAAS,IAAI,OAAO,CAEvB;IAGD,IAAI,YAAY,IAAI,OAAO,CAE1B;IAGD,IAAI,OAAO,IAAI,OAAO,CAErB;IAGD,IAAI,aAAa,IAAI,OAAO,CAE3B;IAGD,IAAI,iBAAiB,IAAI,gBAAgB,EAAE,CAQ1C;IAGD,IAAI,iBAAiB,IAAI,MAAM,EAAE,CAQhC;IAGD,IAAI,0BAA0B,IAAI,MAAM,CAUvC;IAGD,IAAI,mBAAmB,IAAI,MAAM,CAShC;IAGD,UAAU,CAAC,QAAQ,EAAE,gBAAgB;IASrC,SAAS,CAAC,QAAQ,EAAE,gBAAgB;CAQvC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fundamentals = require('@cratis/fundamentals');
|
|
4
|
+
|
|
5
|
+
class CommandResults {
|
|
6
|
+
_commandResultsPerCommand;
|
|
7
|
+
constructor(_commandResultsPerCommand) {
|
|
8
|
+
this._commandResultsPerCommand = _commandResultsPerCommand;
|
|
9
|
+
}
|
|
10
|
+
correlationId = fundamentals.Guid.empty;
|
|
11
|
+
get isSuccess() {
|
|
12
|
+
return this.isAnyFalse(_ => _.isSuccess);
|
|
13
|
+
}
|
|
14
|
+
get isAuthorized() {
|
|
15
|
+
return this.isAnyFalse(_ => _.isAuthorized);
|
|
16
|
+
}
|
|
17
|
+
get isValid() {
|
|
18
|
+
return this.isAnyFalse(_ => _.isValid);
|
|
19
|
+
}
|
|
20
|
+
get hasExceptions() {
|
|
21
|
+
return this.isAnyTrue(_ => _.hasExceptions);
|
|
22
|
+
}
|
|
23
|
+
get validationResults() {
|
|
24
|
+
const errors = [];
|
|
25
|
+
for (const result of this._commandResultsPerCommand.values()) {
|
|
26
|
+
result.validationResults.forEach(_ => errors.push(_));
|
|
27
|
+
}
|
|
28
|
+
return errors;
|
|
29
|
+
}
|
|
30
|
+
get exceptionMessages() {
|
|
31
|
+
const messages = [];
|
|
32
|
+
for (const result of this._commandResultsPerCommand.values()) {
|
|
33
|
+
result.exceptionMessages.forEach(_ => messages.push(_));
|
|
34
|
+
}
|
|
35
|
+
return messages;
|
|
36
|
+
}
|
|
37
|
+
get authorizationFailureReason() {
|
|
38
|
+
const reasons = [];
|
|
39
|
+
for (const result of this._commandResultsPerCommand.values()) {
|
|
40
|
+
if (result.authorizationFailureReason) {
|
|
41
|
+
reasons.push(result.authorizationFailureReason);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return reasons.join('; ');
|
|
45
|
+
}
|
|
46
|
+
get exceptionStackTrace() {
|
|
47
|
+
let stackTraces = '';
|
|
48
|
+
for (const result of this._commandResultsPerCommand.values()) {
|
|
49
|
+
stackTraces = stackTraces + '\n' + result.exceptionStackTrace;
|
|
50
|
+
}
|
|
51
|
+
return stackTraces;
|
|
52
|
+
}
|
|
53
|
+
isAnyFalse(callback) {
|
|
54
|
+
for (const result of this._commandResultsPerCommand.values()) {
|
|
55
|
+
if (!callback(result)) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
isAnyTrue(callback) {
|
|
62
|
+
for (const result of this._commandResultsPerCommand.values()) {
|
|
63
|
+
if (callback(result)) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
exports.CommandResults = CommandResults;
|
|
72
|
+
//# sourceMappingURL=CommandResults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandResults.js","sources":["../../../commands/CommandResults.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Guid } from '@cratis/fundamentals';\nimport { ValidationResult } from '../validation/ValidationResult';\nimport { Command } from './Command';\nimport { CommandResult } from './CommandResult';\nimport { ICommandResult } from './ICommandResult';\n\ntype GetSpecificState = (commandResult: CommandResult) => boolean;\n\n\nexport class CommandResults implements ICommandResult {\n constructor(private readonly _commandResultsPerCommand: Map<Command, CommandResult>) {\n }\n\n /** @inheritdoc */\n readonly correlationId: Guid = Guid.empty;\n\n /** @inheritdoc */\n get isSuccess(): boolean {\n return this.isAnyFalse(_ => _.isSuccess);\n }\n\n /** @inheritdoc */\n get isAuthorized(): boolean {\n return this.isAnyFalse(_ => _.isAuthorized);\n }\n\n /** @inheritdoc */\n get isValid(): boolean {\n return this.isAnyFalse(_ => _.isValid);\n }\n\n /** @inheritdoc */\n get hasExceptions(): boolean {\n return this.isAnyTrue(_ => _.hasExceptions);\n }\n\n /** @inheritdoc */\n get validationResults(): ValidationResult[] {\n const errors: ValidationResult[] = [];\n\n for (const result of this._commandResultsPerCommand.values()) {\n result.validationResults.forEach(_ => errors.push(_));\n }\n\n return errors;\n }\n\n /** @inheritdoc */\n get exceptionMessages(): string[] {\n const messages: string[] = [];\n\n for (const result of this._commandResultsPerCommand.values()) {\n result.exceptionMessages.forEach(_ => messages.push(_));\n }\n\n return messages;\n }\n\n /** @inheritdoc */\n get authorizationFailureReason(): string {\n const reasons: string[] = [];\n\n for (const result of this._commandResultsPerCommand.values()) {\n if (result.authorizationFailureReason) {\n reasons.push(result.authorizationFailureReason);\n }\n }\n\n return reasons.join('; ');\n }\n\n /** @inheritdoc */\n get exceptionStackTrace(): string {\n let stackTraces = '';\n\n for (const result of this._commandResultsPerCommand.values()) {\n stackTraces = stackTraces + '\\n' + result.exceptionStackTrace;\n }\n\n return stackTraces;\n\n }\n\n\n isAnyFalse(callback: GetSpecificState) {\n for (const result of this._commandResultsPerCommand.values()) {\n if (!callback(result)) {\n return false;\n }\n }\n return true;\n }\n\n isAnyTrue(callback: GetSpecificState) {\n for (const result of this._commandResultsPerCommand.values()) {\n if (callback(result)) {\n return true;\n }\n }\n return false;\n }\n}\n"],"names":["Guid"],"mappings":";;;;MAYa,cAAc,CAAA;AACM,IAAA,yBAAA;AAA7B,IAAA,WAAA,CAA6B,yBAAsD,EAAA;QAAtD,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;IACtD;AAGS,IAAA,aAAa,GAASA,iBAAI,CAAC,KAAK;AAGzC,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;IAC5C;AAGA,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;IAC/C;AAGA,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAC1C;AAGA,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC;IAC/C;AAGA,IAAA,IAAI,iBAAiB,GAAA;QACjB,MAAM,MAAM,GAAuB,EAAE;QAErC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,EAAE;AAC1D,YAAA,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD;AAEA,QAAA,OAAO,MAAM;IACjB;AAGA,IAAA,IAAI,iBAAiB,GAAA;QACjB,MAAM,QAAQ,GAAa,EAAE;QAE7B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,EAAE;AAC1D,YAAA,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D;AAEA,QAAA,OAAO,QAAQ;IACnB;AAGA,IAAA,IAAI,0BAA0B,GAAA;QAC1B,MAAM,OAAO,GAAa,EAAE;QAE5B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,EAAE;AAC1D,YAAA,IAAI,MAAM,CAAC,0BAA0B,EAAE;AACnC,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC;YACnD;QACJ;AAEA,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;AAGA,IAAA,IAAI,mBAAmB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;QAEpB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,EAAE;YAC1D,WAAW,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC,mBAAmB;QACjE;AAEA,QAAA,OAAO,WAAW;IAEtB;AAGA,IAAA,UAAU,CAAC,QAA0B,EAAA;QACjC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,EAAE;AAC1D,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACnB,gBAAA,OAAO,KAAK;YAChB;QACJ;AACA,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,SAAS,CAAC,QAA0B,EAAA;QAChC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,EAAE;AAC1D,YAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AAClB,gBAAA,OAAO,IAAI;YACf;QACJ;AACA,QAAA,OAAO,KAAK;IAChB;AACH;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Validator } from '../validation/Validator';
|
|
2
|
+
export type CommandPropertyValidators = {
|
|
3
|
+
[key: string]: Validator;
|
|
4
|
+
};
|
|
5
|
+
export declare abstract class CommandValidator {
|
|
6
|
+
abstract readonly properties: CommandPropertyValidators;
|
|
7
|
+
get isValid(): boolean;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=CommandValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandValidator.d.ts","sourceRoot":"","sources":["../../../commands/CommandValidator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,MAAM,yBAAyB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CAAE,CAAC;AAKtE,8BAAsB,gBAAgB;IAClC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAExD,IAAI,OAAO,YAEV;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandValidator.js","sources":["../../../commands/CommandValidator.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Validator } from '../validation/Validator';\n\nexport type CommandPropertyValidators = { [key: string]: Validator; };\n\n/**\n * Represents the command validator\n */\nexport abstract class CommandValidator {\n abstract readonly properties: CommandPropertyValidators;\n\n get isValid() {\n return true;\n }\n}\n"],"names":[],"mappings":";;MAUsB,gBAAgB,CAAA;AAGlC,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI;IACf;AACH;;;;"}
|