@valkyrjaio/valkyrja 26.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/LICENSE.md +21 -0
- package/README.md +136 -0
- package/package.json +63 -0
- package/src/Valkyrja/Application/Constant/ApplicationInfo.ts +26 -0
- package/src/Valkyrja/Application/Constant/ApplicationServiceId.ts +16 -0
- package/src/Valkyrja/Application/Data/CliConfig.ts +51 -0
- package/src/Valkyrja/Application/Data/Config.ts +31 -0
- package/src/Valkyrja/Application/Data/Contract/CliConfigContract.ts +27 -0
- package/src/Valkyrja/Application/Data/Contract/ConfigContract.ts +31 -0
- package/src/Valkyrja/Application/Data/Contract/HttpConfigContract.ts +26 -0
- package/src/Valkyrja/Application/Data/HttpConfig.ts +41 -0
- package/src/Valkyrja/Application/Directory/Directory.ts +80 -0
- package/src/Valkyrja/Application/Entry/Abstract/App.ts +117 -0
- package/src/Valkyrja/Application/Entry/Abstract/WorkerHttp.ts +83 -0
- package/src/Valkyrja/Application/Entry/Cli.ts +34 -0
- package/src/Valkyrja/Application/Entry/Http.ts +41 -0
- package/src/Valkyrja/Application/Kernel/ChildApplication.ts +63 -0
- package/src/Valkyrja/Application/Kernel/Contract/ApplicationContract.ts +34 -0
- package/src/Valkyrja/Application/Kernel/Valkyrja.ts +141 -0
- package/src/Valkyrja/Application/Provider/ApplicationComponentProvider.ts +39 -0
- package/src/Valkyrja/Application/Provider/CliApplicationComponentProvider.ts +30 -0
- package/src/Valkyrja/Application/Provider/CliWithHttpApplicationComponentProvider.ts +32 -0
- package/src/Valkyrja/Application/Provider/Contract/ComponentProviderContract.ts +28 -0
- package/src/Valkyrja/Application/Provider/Contract/PublishableComponentProviderContract.ts +20 -0
- package/src/Valkyrja/Application/Provider/HttpApplicationComponentProvider.ts +20 -0
- package/src/Valkyrja/Application/Throwable/Contract/ApplicationThrowable.ts +12 -0
- package/src/Valkyrja/Application/Throwable/Exception/Abstract/ApplicationInvalidArgumentException.ts +16 -0
- package/src/Valkyrja/Application/Throwable/Exception/Abstract/ApplicationRuntimeException.ts +14 -0
- package/src/Valkyrja/Cli/Interaction/Argument/Argument.ts +25 -0
- package/src/Valkyrja/Cli/Interaction/Argument/Contract/ArgumentContract.ts +19 -0
- package/src/Valkyrja/Cli/Interaction/Argument/Factory/ArgumentFactory.ts +16 -0
- package/src/Valkyrja/Cli/Interaction/Constant/CliInteractionServiceId.ts +16 -0
- package/src/Valkyrja/Cli/Interaction/Data/CliInteractionConfig.ts +18 -0
- package/src/Valkyrja/Cli/Interaction/Data/Contract/CliInteractionConfigContract.ts +20 -0
- package/src/Valkyrja/Cli/Interaction/Enum/BackgroundColor.ts +33 -0
- package/src/Valkyrja/Cli/Interaction/Enum/ExitCode.ts +30 -0
- package/src/Valkyrja/Cli/Interaction/Enum/OptionType.ts +13 -0
- package/src/Valkyrja/Cli/Interaction/Enum/Style.ts +33 -0
- package/src/Valkyrja/Cli/Interaction/Enum/TextColor.ts +33 -0
- package/src/Valkyrja/Cli/Interaction/Format/BackgroundColorFormat.ts +17 -0
- package/src/Valkyrja/Cli/Interaction/Format/Contract/FormatContract.ts +21 -0
- package/src/Valkyrja/Cli/Interaction/Format/Format.ts +38 -0
- package/src/Valkyrja/Cli/Interaction/Format/StyleFormat.ts +17 -0
- package/src/Valkyrja/Cli/Interaction/Format/TextColorFormat.ts +17 -0
- package/src/Valkyrja/Cli/Interaction/Formatter/Contract/FormatterContract.ts +22 -0
- package/src/Valkyrja/Cli/Interaction/Formatter/ErrorFormatter.ts +20 -0
- package/src/Valkyrja/Cli/Interaction/Formatter/Formatter.ts +46 -0
- package/src/Valkyrja/Cli/Interaction/Formatter/HighlightedTextFormatter.ts +18 -0
- package/src/Valkyrja/Cli/Interaction/Formatter/QuestionFormatter.ts +18 -0
- package/src/Valkyrja/Cli/Interaction/Formatter/SuccessFormatter.ts +20 -0
- package/src/Valkyrja/Cli/Interaction/Formatter/WarningFormatter.ts +20 -0
- package/src/Valkyrja/Cli/Interaction/Input/Contract/InputContract.ts +36 -0
- package/src/Valkyrja/Cli/Interaction/Input/Factory/InputFactory.ts +47 -0
- package/src/Valkyrja/Cli/Interaction/Input/Input.ts +106 -0
- package/src/Valkyrja/Cli/Interaction/Message/Answer.ts +130 -0
- package/src/Valkyrja/Cli/Interaction/Message/Banner.ts +41 -0
- package/src/Valkyrja/Cli/Interaction/Message/Contract/AnswerContract.ts +32 -0
- package/src/Valkyrja/Cli/Interaction/Message/Contract/MessageContract.ts +26 -0
- package/src/Valkyrja/Cli/Interaction/Message/Contract/ProgressContract.ts +23 -0
- package/src/Valkyrja/Cli/Interaction/Message/Contract/QuestionContract.ts +26 -0
- package/src/Valkyrja/Cli/Interaction/Message/ErrorMessage.ts +17 -0
- package/src/Valkyrja/Cli/Interaction/Message/Header.ts +111 -0
- package/src/Valkyrja/Cli/Interaction/Message/Message.ts +64 -0
- package/src/Valkyrja/Cli/Interaction/Message/Messages.ts +28 -0
- package/src/Valkyrja/Cli/Interaction/Message/NewLine.ts +17 -0
- package/src/Valkyrja/Cli/Interaction/Message/Progress.ts +44 -0
- package/src/Valkyrja/Cli/Interaction/Message/Question.ts +91 -0
- package/src/Valkyrja/Cli/Interaction/Message/SuccessMessage.ts +17 -0
- package/src/Valkyrja/Cli/Interaction/Message/WarningMessage.ts +17 -0
- package/src/Valkyrja/Cli/Interaction/Option/Contract/OptionContract.ts +27 -0
- package/src/Valkyrja/Cli/Interaction/Option/Factory/OptionFactory.ts +60 -0
- package/src/Valkyrja/Cli/Interaction/Option/Option.ts +61 -0
- package/src/Valkyrja/Cli/Interaction/Output/Contract/EmptyOutputContract.ts +18 -0
- package/src/Valkyrja/Cli/Interaction/Output/Contract/FileOutputContract.ts +21 -0
- package/src/Valkyrja/Cli/Interaction/Output/Contract/OutputContract.ts +41 -0
- package/src/Valkyrja/Cli/Interaction/Output/Contract/PlainOutputContract.ts +18 -0
- package/src/Valkyrja/Cli/Interaction/Output/Contract/StreamOutputContract.ts +21 -0
- package/src/Valkyrja/Cli/Interaction/Output/EmptyOutput.ts +18 -0
- package/src/Valkyrja/Cli/Interaction/Output/Factory/Contract/OutputFactoryContract.ts +38 -0
- package/src/Valkyrja/Cli/Interaction/Output/Factory/OutputFactory.ts +88 -0
- package/src/Valkyrja/Cli/Interaction/Output/FileOutput.ts +41 -0
- package/src/Valkyrja/Cli/Interaction/Output/Output.ts +163 -0
- package/src/Valkyrja/Cli/Interaction/Output/PlainOutput.ts +18 -0
- package/src/Valkyrja/Cli/Interaction/Output/StreamOutput.ts +41 -0
- package/src/Valkyrja/Cli/Interaction/Provider/CliInteractionComponentProvider.ts +39 -0
- package/src/Valkyrja/Cli/Interaction/Provider/CliInteractionServiceProvider.ts +46 -0
- package/src/Valkyrja/Cli/Interaction/Throwable/Contract/CliInteractionThrowable.ts +12 -0
- package/src/Valkyrja/Cli/Interaction/Throwable/Exception/Abstract/CliInteractionInvalidArgumentException.ts +16 -0
- package/src/Valkyrja/Cli/Interaction/Throwable/Exception/Abstract/CliInteractionRuntimeException.ts +14 -0
- package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionExpectedQuestionOutputException.ts +12 -0
- package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionInvalidEmptyValueException.ts +12 -0
- package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionInvalidNonEmptyValueException.ts +12 -0
- package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionInvalidOptionNameException.ts +12 -0
- package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionNoFormatterException.ts +12 -0
- package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionNoValidationCallableException.ts +12 -0
- package/src/Valkyrja/Cli/Interaction/Writer/Contract/WriterContract.ts +22 -0
- package/src/Valkyrja/Cli/Interaction/Writer/QuestionWriter.ts +86 -0
- package/src/Valkyrja/Cli/Middleware/Constant/CliMiddlewareServiceId.ts +22 -0
- package/src/Valkyrja/Cli/Middleware/Contract/ExitedMiddlewareContract.ts +22 -0
- package/src/Valkyrja/Cli/Middleware/Contract/InputReceivedMiddlewareContract.ts +22 -0
- package/src/Valkyrja/Cli/Middleware/Contract/RouteDispatchedMiddlewareContract.ts +28 -0
- package/src/Valkyrja/Cli/Middleware/Contract/RouteMatchedMiddlewareContract.ts +27 -0
- package/src/Valkyrja/Cli/Middleware/Contract/RouteNotMatchedMiddlewareContract.ts +26 -0
- package/src/Valkyrja/Cli/Middleware/Contract/ThrowableCaughtMiddlewareContract.ts +27 -0
- package/src/Valkyrja/Cli/Middleware/Handler/Abstract/Handler.ts +48 -0
- package/src/Valkyrja/Cli/Middleware/Handler/Contract/ExitedHandlerContract.ts +22 -0
- package/src/Valkyrja/Cli/Middleware/Handler/Contract/HandlerContract.ts +33 -0
- package/src/Valkyrja/Cli/Middleware/Handler/Contract/InputReceivedHandlerContract.ts +22 -0
- package/src/Valkyrja/Cli/Middleware/Handler/Contract/RouteDispatchedHandlerContract.ts +23 -0
- package/src/Valkyrja/Cli/Middleware/Handler/Contract/RouteMatchedHandlerContract.ts +23 -0
- package/src/Valkyrja/Cli/Middleware/Handler/Contract/RouteNotMatchedHandlerContract.ts +22 -0
- package/src/Valkyrja/Cli/Middleware/Handler/Contract/ThrowableCaughtHandlerContract.ts +22 -0
- package/src/Valkyrja/Cli/Middleware/Handler/ExitedHandler.ts +24 -0
- package/src/Valkyrja/Cli/Middleware/Handler/InputReceivedHandler.ts +24 -0
- package/src/Valkyrja/Cli/Middleware/Handler/RouteDispatchedHandler.ts +25 -0
- package/src/Valkyrja/Cli/Middleware/Handler/RouteMatchedHandler.ts +25 -0
- package/src/Valkyrja/Cli/Middleware/Handler/RouteNotMatchedHandler.ts +24 -0
- package/src/Valkyrja/Cli/Middleware/Handler/ThrowableCaughtHandler.ts +29 -0
- package/src/Valkyrja/Cli/Middleware/Provider/CliMiddlewareComponentProvider.ts +39 -0
- package/src/Valkyrja/Cli/Middleware/Provider/CliMiddlewareServiceProvider.ts +119 -0
- package/src/Valkyrja/Cli/Middleware/Throwable/Contract/CliMiddlewareThrowable.ts +12 -0
- package/src/Valkyrja/Cli/Middleware/Throwable/Exception/Abstract/CliMiddlewareInvalidArgumentException.ts +16 -0
- package/src/Valkyrja/Cli/Middleware/Throwable/Exception/Abstract/CliMiddlewareRuntimeException.ts +14 -0
- package/src/Valkyrja/Cli/Routing/Collection/Contract/RouteCollectionContract.ts +26 -0
- package/src/Valkyrja/Cli/Routing/Collection/RouteCollection.ts +60 -0
- package/src/Valkyrja/Cli/Routing/Collector/Contract/RouteCollectorContract.ts +20 -0
- package/src/Valkyrja/Cli/Routing/Constant/CliRoutingServiceId.ts +16 -0
- package/src/Valkyrja/Cli/Routing/Constant/OptionName.ts +17 -0
- package/src/Valkyrja/Cli/Routing/Constant/OptionShortName.ts +17 -0
- package/src/Valkyrja/Cli/Routing/Controller/Controller.ts +18 -0
- package/src/Valkyrja/Cli/Routing/Data/Abstract/Parameter.ts +91 -0
- package/src/Valkyrja/Cli/Routing/Data/ArgumentParameter.ts +99 -0
- package/src/Valkyrja/Cli/Routing/Data/CliRoutingData.ts +14 -0
- package/src/Valkyrja/Cli/Routing/Data/Contract/ArgumentParameterContract.ts +29 -0
- package/src/Valkyrja/Cli/Routing/Data/Contract/CliRoutingConfigContract.ts +18 -0
- package/src/Valkyrja/Cli/Routing/Data/Contract/OptionParameterContract.ts +41 -0
- package/src/Valkyrja/Cli/Routing/Data/Contract/ParameterContract.ts +32 -0
- package/src/Valkyrja/Cli/Routing/Data/Contract/RouteContract.ts +57 -0
- package/src/Valkyrja/Cli/Routing/Data/Option/HelpOptionParameter.ts +30 -0
- package/src/Valkyrja/Cli/Routing/Data/Option/NoInteractionOptionParameter.ts +30 -0
- package/src/Valkyrja/Cli/Routing/Data/Option/QuietOptionParameter.ts +30 -0
- package/src/Valkyrja/Cli/Routing/Data/Option/SilentOptionParameter.ts +30 -0
- package/src/Valkyrja/Cli/Routing/Data/Option/VersionOptionParameter.ts +30 -0
- package/src/Valkyrja/Cli/Routing/Data/OptionParameter.ts +188 -0
- package/src/Valkyrja/Cli/Routing/Data/Route.ts +211 -0
- package/src/Valkyrja/Cli/Routing/Dispatcher/Contract/RouterContract.ts +23 -0
- package/src/Valkyrja/Cli/Routing/Dispatcher/Router.ts +155 -0
- package/src/Valkyrja/Cli/Routing/Enum/ArgumentMode.ts +13 -0
- package/src/Valkyrja/Cli/Routing/Enum/ArgumentValueMode.ts +13 -0
- package/src/Valkyrja/Cli/Routing/Enum/OptionMode.ts +13 -0
- package/src/Valkyrja/Cli/Routing/Enum/OptionValueMode.ts +14 -0
- package/src/Valkyrja/Cli/Routing/Provider/CliRoutingCliRouteProvider.ts +111 -0
- package/src/Valkyrja/Cli/Routing/Provider/CliRoutingComponentProvider.ts +40 -0
- package/src/Valkyrja/Cli/Routing/Provider/CliRoutingServiceProvider.ts +88 -0
- package/src/Valkyrja/Cli/Routing/Provider/Contract/CliRouteProviderContract.ts +20 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Contract/CliRoutingThrowable.ts +12 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/Abstract/CliRoutingInvalidArgumentException.ts +16 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/Abstract/CliRoutingRuntimeException.ts +14 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingArgumentValuesValidationException.ts +12 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingInvalidArgumentNameException.ts +12 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingInvalidHelpTextCallableException.ts +12 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingInvalidOptionNameException.ts +12 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingInvalidOptionWithValueException.ts +12 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingInvalidRouteNameException.ts +12 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingNoCastException.ts +12 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingNoHelpTextException.ts +12 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingNoOutputDispatchException.ts +12 -0
- package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingOptionValuesValidationException.ts +12 -0
- package/src/Valkyrja/Cli/Server/Command/HelpCommand.ts +313 -0
- package/src/Valkyrja/Cli/Server/Command/ListBashCommand.ts +44 -0
- package/src/Valkyrja/Cli/Server/Command/ListCommand.ts +98 -0
- package/src/Valkyrja/Cli/Server/Command/VersionCommand.ts +34 -0
- package/src/Valkyrja/Cli/Server/Constant/CliServerServiceId.ts +28 -0
- package/src/Valkyrja/Cli/Server/Constant/CommandName.ts +16 -0
- package/src/Valkyrja/Cli/Server/Data/Contract/CliHelpCommandConfigContract.ts +20 -0
- package/src/Valkyrja/Cli/Server/Data/Contract/CliNoInteractionConfigContract.ts +19 -0
- package/src/Valkyrja/Cli/Server/Data/Contract/CliQuietInteractionConfigContract.ts +19 -0
- package/src/Valkyrja/Cli/Server/Data/Contract/CliSilentInteractionConfigContract.ts +19 -0
- package/src/Valkyrja/Cli/Server/Data/Contract/CliVersionCommandConfigContract.ts +20 -0
- package/src/Valkyrja/Cli/Server/Handler/Contract/InputHandlerContract.ts +17 -0
- package/src/Valkyrja/Cli/Server/Handler/InputHandler.ts +112 -0
- package/src/Valkyrja/Cli/Server/Middleware/InputReceived/CheckForHelpOptionsMiddleware.ts +30 -0
- package/src/Valkyrja/Cli/Server/Middleware/InputReceived/CheckForVersionOptionsMiddleware.ts +29 -0
- package/src/Valkyrja/Cli/Server/Middleware/InputReceived/CheckGlobalInteractionOptionsMiddleware.ts +52 -0
- package/src/Valkyrja/Cli/Server/Middleware/RouteNotMatched/CheckCommandForTypoMiddleware.ts +119 -0
- package/src/Valkyrja/Cli/Server/Middleware/ThrowableCaught/LogThrowableCaughtMiddleware.ts +32 -0
- package/src/Valkyrja/Cli/Server/Middleware/ThrowableCaught/OutputThrowableCaughtMiddleware.ts +57 -0
- package/src/Valkyrja/Cli/Server/Provider/CliServerComponentProvider.ts +39 -0
- package/src/Valkyrja/Cli/Server/Provider/CliServerServiceProvider.ts +269 -0
- package/src/Valkyrja/Cli/Server/Support/Exiter.ts +32 -0
- package/src/Valkyrja/Cli/Server/Throwable/Contract/CliServerThrowable.ts +12 -0
- package/src/Valkyrja/Cli/Server/Throwable/Exception/Abstract/CliServerInvalidArgumentException.ts +16 -0
- package/src/Valkyrja/Cli/Server/Throwable/Exception/Abstract/CliServerRuntimeException.ts +14 -0
- package/src/Valkyrja/Cli/Throwable/Contract/CliThrowable.ts +12 -0
- package/src/Valkyrja/Cli/Throwable/Exception/Abstract/CliInvalidArgumentException.ts +14 -0
- package/src/Valkyrja/Cli/Throwable/Exception/Abstract/CliRuntimeException.ts +14 -0
- package/src/Valkyrja/Container/Constant/ContainerServiceId.ts +13 -0
- package/src/Valkyrja/Container/Data/ContainerData.ts +31 -0
- package/src/Valkyrja/Container/Enum/InvalidReferenceMode.ts +13 -0
- package/src/Valkyrja/Container/Manager/ChildContainer.ts +69 -0
- package/src/Valkyrja/Container/Manager/Container.ts +244 -0
- package/src/Valkyrja/Container/Manager/Contract/ContainerContract.ts +31 -0
- package/src/Valkyrja/Container/Manager/Contract/ProvidersAwareContract.ts +17 -0
- package/src/Valkyrja/Container/Provider/ContainerComponentProvider.ts +39 -0
- package/src/Valkyrja/Container/Provider/ContainerServiceProvider.ts +33 -0
- package/src/Valkyrja/Container/Provider/Contract/ServiceProviderContract.ts +20 -0
- package/src/Valkyrja/Container/Throwable/Contract/ContainerThrowable.ts +12 -0
- package/src/Valkyrja/Container/Throwable/Exception/Abstract/ContainerInvalidArgumentException.ts +16 -0
- package/src/Valkyrja/Container/Throwable/Exception/Abstract/ContainerRuntimeException.ts +14 -0
- package/src/Valkyrja/Container/Throwable/Exception/ContainerInvalidPublishCallbackException.ts +12 -0
- package/src/Valkyrja/Container/Throwable/Exception/ContainerInvalidReferenceException.ts +17 -0
- package/src/Valkyrja/Event/Constant/EventServiceId.ts +12 -0
- package/src/Valkyrja/Event/Data/Contract/ListenerContract.ts +25 -0
- package/src/Valkyrja/Event/Data/EventData.ts +15 -0
- package/src/Valkyrja/Event/Provider/Contract/ListenerProviderContract.ts +20 -0
- package/src/Valkyrja/Http/Client/Manager/Contract/ClientContract.ts +15 -0
- package/src/Valkyrja/Http/Client/Manager/LogClient.ts +28 -0
- package/src/Valkyrja/Http/Client/Manager/NullClient.ts +20 -0
- package/src/Valkyrja/Http/Client/Throwable/Contract/HttpClientThrowable.ts +12 -0
- package/src/Valkyrja/Http/Client/Throwable/Exception/Abstract/HttpClientInvalidArgumentException.ts +16 -0
- package/src/Valkyrja/Http/Client/Throwable/Exception/Abstract/HttpClientRuntimeException.ts +14 -0
- package/src/Valkyrja/Http/Message/Constant/ContentTypeValue.ts +22 -0
- package/src/Valkyrja/Http/Message/Constant/HeaderName.ts +60 -0
- package/src/Valkyrja/Http/Message/Constant/HeaderValue.ts +12 -0
- package/src/Valkyrja/Http/Message/Constant/HttpMessageServiceId.ts +13 -0
- package/src/Valkyrja/Http/Message/Constant/Port.ts +19 -0
- package/src/Valkyrja/Http/Message/Contract/MessageContract.ts +21 -0
- package/src/Valkyrja/Http/Message/Enum/ProtocolVersion.ts +15 -0
- package/src/Valkyrja/Http/Message/Enum/RequestMethod.ts +35 -0
- package/src/Valkyrja/Http/Message/Enum/SameSite.ts +14 -0
- package/src/Valkyrja/Http/Message/Enum/StatusCode.ts +152 -0
- package/src/Valkyrja/Http/Message/Enum/StatusText.ts +73 -0
- package/src/Valkyrja/Http/Message/File/Collection/Contract/UploadedFileCollectionContract.ts +20 -0
- package/src/Valkyrja/Http/Message/File/Collection/UploadedFileCollection.ts +83 -0
- package/src/Valkyrja/Http/Message/File/Constant/UploadErrorExceptionMessage.ts +20 -0
- package/src/Valkyrja/Http/Message/File/Contract/UploadedFileContract.ts +22 -0
- package/src/Valkyrja/Http/Message/File/Enum/UploadError.ts +19 -0
- package/src/Valkyrja/Http/Message/File/Factory/UploadedFileFactory.ts +34 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Contract/UploadedFileThrowable.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/Abstract/UploadedFileInvalidArgumentException.ts +15 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/Abstract/UploadedFileRuntimeException.ts +15 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileAlreadyMovedException.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidDirectoryException.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidFilesArrayStructureException.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidKeyException.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidParamException.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidTmpNameException.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidUploadErrorException.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidUploadedFileException.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidValueException.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileMoveFailureException.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileUnableToWriteFileException.ts +12 -0
- package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileUploadErrorException.ts +48 -0
- package/src/Valkyrja/Http/Message/File/UploadedFile.ts +156 -0
- package/src/Valkyrja/Http/Message/Header/Collection/Contract/HeaderCollectionContract.ts +23 -0
- package/src/Valkyrja/Http/Message/Header/Collection/HeaderCollection.ts +117 -0
- package/src/Valkyrja/Http/Message/Header/ContentType.ts +18 -0
- package/src/Valkyrja/Http/Message/Header/Contract/HeaderContract.ts +21 -0
- package/src/Valkyrja/Http/Message/Header/Factory/CookieFactory.ts +35 -0
- package/src/Valkyrja/Http/Message/Header/Factory/HeaderFactory.ts +79 -0
- package/src/Valkyrja/Http/Message/Header/Header.ts +104 -0
- package/src/Valkyrja/Http/Message/Header/Location.ts +18 -0
- package/src/Valkyrja/Http/Message/Header/Referer.ts +18 -0
- package/src/Valkyrja/Http/Message/Header/SetCookie.ts +18 -0
- package/src/Valkyrja/Http/Message/Header/Throwable/Contract/HttpHeaderThrowable.ts +12 -0
- package/src/Valkyrja/Http/Message/Header/Throwable/Exception/Abstract/HttpHeaderInvalidArgumentException.ts +15 -0
- package/src/Valkyrja/Http/Message/Header/Throwable/Exception/Abstract/HttpHeaderRuntimeException.ts +13 -0
- package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderInvalidHeaderNameException.ts +12 -0
- package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderInvalidHeaderParamException.ts +12 -0
- package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderInvalidNameException.ts +12 -0
- package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderInvalidValueException.ts +12 -0
- package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderUnsupportedMethodException.ts +12 -0
- package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderUnsupportedOffsetSetException.ts +12 -0
- package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderUnsupportedOffsetUnsetException.ts +12 -0
- package/src/Valkyrja/Http/Message/Header/Value/Component/Component.ts +54 -0
- package/src/Valkyrja/Http/Message/Header/Value/Component/Contract/ComponentContract.ts +16 -0
- package/src/Valkyrja/Http/Message/Header/Value/Contract/CookieContract.ts +35 -0
- package/src/Valkyrja/Http/Message/Header/Value/Contract/ValueContract.ts +17 -0
- package/src/Valkyrja/Http/Message/Header/Value/Cookie.ts +165 -0
- package/src/Valkyrja/Http/Message/Header/Value/Value.ts +56 -0
- package/src/Valkyrja/Http/Message/Param/Abstract/ParamCollection.ts +63 -0
- package/src/Valkyrja/Http/Message/Param/AttributeParamCollection.ts +13 -0
- package/src/Valkyrja/Http/Message/Param/Contract/AttributeParamCollectionContract.ts +12 -0
- package/src/Valkyrja/Http/Message/Param/Contract/CookieParamCollectionContract.ts +12 -0
- package/src/Valkyrja/Http/Message/Param/Contract/ParamCollectionContract.ts +18 -0
- package/src/Valkyrja/Http/Message/Param/Contract/ParsedBodyParamCollectionContract.ts +12 -0
- package/src/Valkyrja/Http/Message/Param/Contract/ParsedJsonParamCollectionContract.ts +12 -0
- package/src/Valkyrja/Http/Message/Param/Contract/QueryParamCollectionContract.ts +12 -0
- package/src/Valkyrja/Http/Message/Param/Contract/ServerParamCollectionContract.ts +12 -0
- package/src/Valkyrja/Http/Message/Param/CookieParamCollection.ts +13 -0
- package/src/Valkyrja/Http/Message/Param/ParsedBodyParamCollection.ts +15 -0
- package/src/Valkyrja/Http/Message/Param/ParsedJsonParamCollection.ts +13 -0
- package/src/Valkyrja/Http/Message/Param/QueryParamCollection.ts +13 -0
- package/src/Valkyrja/Http/Message/Param/ServerParamCollection.ts +15 -0
- package/src/Valkyrja/Http/Message/Provider/HttpMessageServiceProvider.ts +30 -0
- package/src/Valkyrja/Http/Message/Request/Contract/JsonServerRequestContract.ts +16 -0
- package/src/Valkyrja/Http/Message/Request/Contract/RequestContract.ts +21 -0
- package/src/Valkyrja/Http/Message/Request/Contract/ServerRequestContract.ts +32 -0
- package/src/Valkyrja/Http/Message/Request/Factory/RequestFactory.ts +106 -0
- package/src/Valkyrja/Http/Message/Request/JsonServerRequest.ts +76 -0
- package/src/Valkyrja/Http/Message/Request/Request.ts +109 -0
- package/src/Valkyrja/Http/Message/Request/ServerRequest.ts +116 -0
- package/src/Valkyrja/Http/Message/Request/Throwable/Contract/HttpRequestThrowable.ts +12 -0
- package/src/Valkyrja/Http/Message/Request/Throwable/Exception/Abstract/HttpRequestInvalidArgumentException.ts +15 -0
- package/src/Valkyrja/Http/Message/Request/Throwable/Exception/Abstract/HttpRequestRuntimeException.ts +13 -0
- package/src/Valkyrja/Http/Message/Request/Throwable/Exception/HttpRequestInvalidMethodException.ts +12 -0
- package/src/Valkyrja/Http/Message/Request/Throwable/Exception/HttpRequestInvalidRequestTargetException.ts +12 -0
- package/src/Valkyrja/Http/Message/Response/Contract/EmptyResponseContract.ts +12 -0
- package/src/Valkyrja/Http/Message/Response/Contract/HtmlResponseContract.ts +12 -0
- package/src/Valkyrja/Http/Message/Response/Contract/JsonResponseContract.ts +24 -0
- package/src/Valkyrja/Http/Message/Response/Contract/RedirectResponseContract.ts +26 -0
- package/src/Valkyrja/Http/Message/Response/Contract/ResponseContract.ts +23 -0
- package/src/Valkyrja/Http/Message/Response/Contract/TextResponseContract.ts +12 -0
- package/src/Valkyrja/Http/Message/Response/EmptyResponse.ts +22 -0
- package/src/Valkyrja/Http/Message/Response/Factory/Contract/ResponseFactoryContract.ts +44 -0
- package/src/Valkyrja/Http/Message/Response/Factory/ResponseFactory.ts +64 -0
- package/src/Valkyrja/Http/Message/Response/HtmlResponse.ts +36 -0
- package/src/Valkyrja/Http/Message/Response/JsonResponse.ts +111 -0
- package/src/Valkyrja/Http/Message/Response/RedirectResponse.ts +101 -0
- package/src/Valkyrja/Http/Message/Response/Response.ts +81 -0
- package/src/Valkyrja/Http/Message/Response/TextResponse.ts +44 -0
- package/src/Valkyrja/Http/Message/Response/Throwable/Contract/HttpResponseThrowable.ts +12 -0
- package/src/Valkyrja/Http/Message/Response/Throwable/Exception/Abstract/HttpResponseInvalidArgumentException.ts +15 -0
- package/src/Valkyrja/Http/Message/Response/Throwable/Exception/Abstract/HttpResponseRuntimeException.ts +15 -0
- package/src/Valkyrja/Http/Message/Response/Throwable/Exception/HttpRequestInvalidJsonCallbackException.ts +12 -0
- package/src/Valkyrja/Http/Message/Response/Throwable/Exception/HttpRequestInvalidRedirectStatusCodeException.ts +12 -0
- package/src/Valkyrja/Http/Message/Response/XmlResponse.ts +40 -0
- package/src/Valkyrja/Http/Message/Stream/Contract/StreamContract.ts +27 -0
- package/src/Valkyrja/Http/Message/Stream/Enum/Mode.ts +47 -0
- package/src/Valkyrja/Http/Message/Stream/Enum/ModeTranslation.ts +14 -0
- package/src/Valkyrja/Http/Message/Stream/Factory/StreamFactory.ts +83 -0
- package/src/Valkyrja/Http/Message/Stream/Stream.ts +140 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Contract/HttpStreamThrowable.ts +12 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/Abstract/HttpStreamInvalidArgumentException.ts +15 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/Abstract/HttpStreamRuntimeException.ts +13 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamInvalidLengthException.ts +12 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamInvalidStreamException.ts +12 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamNoStreamAvailableException.ts +12 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamStreamReadException.ts +12 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamStreamSeekException.ts +12 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamStreamTellException.ts +12 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamStreamWriteException.ts +12 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamUnreadableStreamException.ts +12 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamUnseekableStreamException.ts +12 -0
- package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamUnwritableStreamException.ts +12 -0
- package/src/Valkyrja/Http/Message/Throwable/Contract/HttpMessageThrowable.ts +12 -0
- package/src/Valkyrja/Http/Message/Throwable/Exception/Abstract/HttpMessageInvalidArgumentException.ts +15 -0
- package/src/Valkyrja/Http/Message/Throwable/Exception/Abstract/HttpMessageRuntimeException.ts +13 -0
- package/src/Valkyrja/Http/Message/Throwable/Exception/HttpNotFoundResponseException.ts +22 -0
- package/src/Valkyrja/Http/Message/Throwable/Exception/HttpRedirectResponseException.ts +42 -0
- package/src/Valkyrja/Http/Message/Throwable/Exception/HttpResponseException.ts +44 -0
- package/src/Valkyrja/Http/Message/Trait/Message.ts +77 -0
- package/src/Valkyrja/Http/Message/Uri/Contract/UriContract.ts +37 -0
- package/src/Valkyrja/Http/Message/Uri/Data/HostPortAccumulator.ts +15 -0
- package/src/Valkyrja/Http/Message/Uri/Enum/Scheme.ts +14 -0
- package/src/Valkyrja/Http/Message/Uri/Factory/UriFactory.ts +152 -0
- package/src/Valkyrja/Http/Message/Uri/Throwable/Contract/HttpUriThrowable.ts +12 -0
- package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/Abstract/HttpUriInvalidArgumentException.ts +15 -0
- package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/Abstract/HttpUriRuntimeException.ts +13 -0
- package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/HttpUriInvalidFromStringException.ts +12 -0
- package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/HttpUriInvalidPathException.ts +12 -0
- package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/HttpUriInvalidPortException.ts +12 -0
- package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/HttpUriInvalidQueryException.ts +12 -0
- package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/NoPortExceptionHttpUri.ts +12 -0
- package/src/Valkyrja/Http/Message/Uri/Type/Port.ts +39 -0
- package/src/Valkyrja/Http/Message/Uri/Uri.ts +191 -0
- package/src/Valkyrja/Http/Middleware/Constant/HttpMiddlewareServiceId.ts +24 -0
- package/src/Valkyrja/Http/Middleware/Contract/RequestReceivedMiddlewareContract.ts +19 -0
- package/src/Valkyrja/Http/Middleware/Contract/RouteDispatchedMiddlewareContract.ts +22 -0
- package/src/Valkyrja/Http/Middleware/Contract/RouteMatchedMiddlewareContract.ts +21 -0
- package/src/Valkyrja/Http/Middleware/Contract/RouteNotMatchedMiddlewareContract.ts +20 -0
- package/src/Valkyrja/Http/Middleware/Contract/SendingResponseMiddlewareContract.ts +20 -0
- package/src/Valkyrja/Http/Middleware/Contract/TerminatedMiddlewareContract.ts +16 -0
- package/src/Valkyrja/Http/Middleware/Contract/ThrowableCaughtMiddlewareContract.ts +21 -0
- package/src/Valkyrja/Http/Middleware/Handler/Abstract/Handler.ts +50 -0
- package/src/Valkyrja/Http/Middleware/Handler/Contract/HandlerContract.ts +29 -0
- package/src/Valkyrja/Http/Middleware/Handler/Contract/RequestReceivedHandlerContract.ts +17 -0
- package/src/Valkyrja/Http/Middleware/Handler/Contract/RouteDispatchedHandlerContract.ts +18 -0
- package/src/Valkyrja/Http/Middleware/Handler/Contract/RouteMatchedHandlerContract.ts +18 -0
- package/src/Valkyrja/Http/Middleware/Handler/Contract/RouteNotMatchedHandlerContract.ts +17 -0
- package/src/Valkyrja/Http/Middleware/Handler/Contract/SendingResponseHandlerContract.ts +17 -0
- package/src/Valkyrja/Http/Middleware/Handler/Contract/TerminatedHandlerContract.ts +17 -0
- package/src/Valkyrja/Http/Middleware/Handler/Contract/ThrowableCaughtHandlerContract.ts +17 -0
- package/src/Valkyrja/Http/Middleware/Handler/RequestReceivedHandler.ts +25 -0
- package/src/Valkyrja/Http/Middleware/Handler/RouteDispatchedHandler.ts +30 -0
- package/src/Valkyrja/Http/Middleware/Handler/RouteMatchedHandler.ts +26 -0
- package/src/Valkyrja/Http/Middleware/Handler/RouteNotMatchedHandler.ts +25 -0
- package/src/Valkyrja/Http/Middleware/Handler/SendingResponseHandler.ts +25 -0
- package/src/Valkyrja/Http/Middleware/Handler/TerminatedHandler.ts +24 -0
- package/src/Valkyrja/Http/Middleware/Handler/ThrowableCaughtHandler.ts +25 -0
- package/src/Valkyrja/Http/Middleware/Throwable/Contract/HttpMiddlewareThrowable.ts +12 -0
- package/src/Valkyrja/Http/Middleware/Throwable/Exception/Abstract/HttpMiddlewareInvalidArgumentException.ts +16 -0
- package/src/Valkyrja/Http/Middleware/Throwable/Exception/Abstract/HttpMiddlewareRuntimeException.ts +14 -0
- package/src/Valkyrja/Http/Routing/Cli/Command/Constant/CommandName.ts +12 -0
- package/src/Valkyrja/Http/Routing/Cli/Command/ListCommand.ts +95 -0
- package/src/Valkyrja/Http/Routing/Collection/Contract/RouteCollectionContract.ts +28 -0
- package/src/Valkyrja/Http/Routing/Collection/RouteCollection.ts +227 -0
- package/src/Valkyrja/Http/Routing/Collector/Contract/RouteCollectorContract.ts +14 -0
- package/src/Valkyrja/Http/Routing/Constant/HttpRoutingServiceId.ts +21 -0
- package/src/Valkyrja/Http/Routing/Constant/Regex.ts +57 -0
- package/src/Valkyrja/Http/Routing/Controller/Controller.ts +18 -0
- package/src/Valkyrja/Http/Routing/Data/Contract/DynamicRouteContract.ts +19 -0
- package/src/Valkyrja/Http/Routing/Data/Contract/ParameterContract.ts +28 -0
- package/src/Valkyrja/Http/Routing/Data/Contract/RouteContract.ts +69 -0
- package/src/Valkyrja/Http/Routing/Data/DynamicRoute.ts +83 -0
- package/src/Valkyrja/Http/Routing/Data/HttpRoutingData.ts +22 -0
- package/src/Valkyrja/Http/Routing/Data/Parameter.ts +104 -0
- package/src/Valkyrja/Http/Routing/Data/Route.ts +252 -0
- package/src/Valkyrja/Http/Routing/Dispatcher/Contract/RouterContract.ts +17 -0
- package/src/Valkyrja/Http/Routing/Dispatcher/Router.ts +102 -0
- package/src/Valkyrja/Http/Routing/Factory/Contract/RoutingResponseFactoryContract.ts +21 -0
- package/src/Valkyrja/Http/Routing/Factory/RoutingResponseFactory.ts +33 -0
- package/src/Valkyrja/Http/Routing/Matcher/Contract/MatcherContract.ts +17 -0
- package/src/Valkyrja/Http/Routing/Matcher/Matcher.ts +109 -0
- package/src/Valkyrja/Http/Routing/Processor/Contract/ProcessorContract.ts +14 -0
- package/src/Valkyrja/Http/Routing/Processor/Processor.ts +108 -0
- package/src/Valkyrja/Http/Routing/Provider/Contract/HttpRouteProviderContract.ts +21 -0
- package/src/Valkyrja/Http/Routing/Provider/HttpRoutingCliComponentProvider.ts +39 -0
- package/src/Valkyrja/Http/Routing/Provider/HttpRoutingCliRouteProvider.ts +42 -0
- package/src/Valkyrja/Http/Routing/Throwable/Contract/HttpRoutingThrowable.ts +12 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/Abstract/HttpRoutingInvalidArgumentException.ts +16 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/Abstract/HttpRoutingRuntimeException.ts +14 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidDynamicRouteNameException.ts +12 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidMethodTypeException.ts +12 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidParameterRegexException.ts +12 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidRouteNameException.ts +12 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidRouteParameterException.ts +12 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidRoutePathException.ts +12 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidRouteRegexException.ts +12 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingNoCastException.ts +12 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingNoRequestStructException.ts +12 -0
- package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingNoResponseStructException.ts +12 -0
- package/src/Valkyrja/Http/Routing/Url/Contract/UrlContract.ts +12 -0
- package/src/Valkyrja/Http/Routing/Url/Url.ts +27 -0
- package/src/Valkyrja/Http/Server/Constant/HttpServerServiceId.ts +14 -0
- package/src/Valkyrja/Http/Server/Handler/Contract/ExceptionResponseRequestHandlerContract.ts +15 -0
- package/src/Valkyrja/Http/Server/Handler/Contract/RequestHandlerContract.ts +20 -0
- package/src/Valkyrja/Http/Server/Handler/RequestHandler.ts +141 -0
- package/src/Valkyrja/Http/Server/Middleware/RequestReceived/RedirectTrailingSlashMiddleware.ts +47 -0
- package/src/Valkyrja/Http/Server/Middleware/RouteMatched/ResponseStructMiddleware.ts +45 -0
- package/src/Valkyrja/Http/Server/Middleware/SendingResponse/NoCacheResponseMiddleware.ts +36 -0
- package/src/Valkyrja/Http/Server/Middleware/ThrowableCaught/LogThrowableCaughtMiddleware.ts +32 -0
- package/src/Valkyrja/Http/Server/Throwable/Contract/HttpServerThrowable.ts +12 -0
- package/src/Valkyrja/Http/Server/Throwable/Exception/Abstract/HttpServerInvalidArgumentException.ts +16 -0
- package/src/Valkyrja/Http/Server/Throwable/Exception/Abstract/HttpServerRuntimeException.ts +14 -0
- package/src/Valkyrja/Http/Struct/Contract/StructContract.ts +13 -0
- package/src/Valkyrja/Http/Struct/Request/Abstract/JsonRequestStruct.ts +33 -0
- package/src/Valkyrja/Http/Struct/Request/Abstract/ParsedBodyRequestStruct.ts +21 -0
- package/src/Valkyrja/Http/Struct/Request/Abstract/QueryRequestStruct.ts +21 -0
- package/src/Valkyrja/Http/Struct/Request/Abstract/RequestStruct.ts +36 -0
- package/src/Valkyrja/Http/Struct/Request/Contract/RequestStructContract.ts +16 -0
- package/src/Valkyrja/Http/Struct/Response/Abstract/ResponseStruct.ts +31 -0
- package/src/Valkyrja/Http/Struct/Response/Contract/ResponseStructContract.ts +14 -0
- package/src/Valkyrja/Http/Struct/Throwable/Contract/HttpStructThrowable.ts +12 -0
- package/src/Valkyrja/Http/Struct/Throwable/Exception/Abstract/HttpStructInvalidArgumentException.ts +15 -0
- package/src/Valkyrja/Http/Struct/Throwable/Exception/Abstract/HttpStructRuntimeException.ts +13 -0
- package/src/Valkyrja/Http/Struct/Throwable/Exception/HttpStructJsonServerRequestExpectedException.ts +12 -0
- package/src/Valkyrja/Http/Throwable/Contract/HttpThrowable.ts +12 -0
- package/src/Valkyrja/Http/Throwable/Exception/Abstract/HttpInvalidArgumentException.ts +13 -0
- package/src/Valkyrja/Http/Throwable/Exception/Abstract/HttpRuntimeException.ts +13 -0
- package/src/Valkyrja/Log/Logger/Contract/LoggerContract.ts +22 -0
- package/src/Valkyrja/Throwable/Constant/ThrowableServiceId.ts +12 -0
- package/src/Valkyrja/Throwable/Contract/ValkyrjaThrowable.ts +12 -0
- package/src/Valkyrja/Throwable/Exception/Abstract/ValkyrjaInvalidArgumentException.ts +18 -0
- package/src/Valkyrja/Throwable/Exception/Abstract/ValkyrjaRuntimeException.ts +18 -0
- package/src/Valkyrja/Throwable/Handler/Abstract/ThrowableHandler.ts +22 -0
- package/src/Valkyrja/Throwable/Handler/Contract/ThrowableHandlerContract.ts +18 -0
- package/src/Valkyrja/Type/Data/Cast.ts +16 -0
- package/src/Valkyrja/Type/Object/Factory/ObjectFactory.ts +14 -0
- package/src/Valkyrja/Validation/Constant/ErrorMessage.ts +33 -0
- package/src/Valkyrja/Validation/Rule/Abstract/Rule.ts +30 -0
- package/src/Valkyrja/Validation/Rule/Contract/RuleContract.ts +14 -0
- package/src/Valkyrja/Validation/Rule/Int/GreaterThan.ts +24 -0
- package/src/Valkyrja/Validation/Rule/Int/LessThan.ts +24 -0
- package/src/Valkyrja/Validation/Rule/Is/Email.ts +16 -0
- package/src/Valkyrja/Validation/Rule/Is/Equal.ts +24 -0
- package/src/Valkyrja/Validation/Rule/Is/IsBool.ts +16 -0
- package/src/Valkyrja/Validation/Rule/Is/IsEmpty.ts +16 -0
- package/src/Valkyrja/Validation/Rule/Is/IsNumeric.ts +16 -0
- package/src/Valkyrja/Validation/Rule/Is/IsString.ts +16 -0
- package/src/Valkyrja/Validation/Rule/Is/NotEmpty.ts +16 -0
- package/src/Valkyrja/Validation/Rule/Is/NotEqual.ts +24 -0
- package/src/Valkyrja/Validation/Rule/Is/Required.ts +16 -0
- package/src/Valkyrja/Validation/Rule/String/Alpha.ts +16 -0
- package/src/Valkyrja/Validation/Rule/String/Contains.ts +24 -0
- package/src/Valkyrja/Validation/Rule/String/EndsWith.ts +24 -0
- package/src/Valkyrja/Validation/Rule/String/Lowercase.ts +16 -0
- package/src/Valkyrja/Validation/Rule/String/Max.ts +24 -0
- package/src/Valkyrja/Validation/Rule/String/Min.ts +24 -0
- package/src/Valkyrja/Validation/Rule/String/Regex.ts +24 -0
- package/src/Valkyrja/Validation/Rule/String/StartsWith.ts +24 -0
- package/src/Valkyrja/Validation/Rule/String/Uppercase.ts +16 -0
- package/src/Valkyrja/Validation/Throwable/Contract/ValidationThrowable.ts +12 -0
- package/src/Valkyrja/Validation/Throwable/Exception/Abstract/ValidationInvalidArgumentException.ts +15 -0
- package/src/Valkyrja/Validation/Throwable/Exception/Abstract/ValidationRuntimeException.ts +13 -0
- package/src/Valkyrja/Validation/Throwable/Exception/ValidationRuleFailureException.ts +12 -0
- package/src/Valkyrja/Validation/Validator/Contract/ValidatorContract.ts +18 -0
- package/src/Valkyrja/Validation/Validator/Validator.ts +57 -0
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { CliConfigContract } from '../../../Application/Data/Contract/CliConfigContract.js';
|
|
11
|
+
import { ExitCode } from '../../Interaction/Enum/ExitCode.js';
|
|
12
|
+
import { TextColor } from '../../Interaction/Enum/TextColor.js';
|
|
13
|
+
import { TextColorFormat } from '../../Interaction/Format/TextColorFormat.js';
|
|
14
|
+
import { Formatter } from '../../Interaction/Formatter/Formatter.js';
|
|
15
|
+
import { HighlightedTextFormatter } from '../../Interaction/Formatter/HighlightedTextFormatter.js';
|
|
16
|
+
import { Banner } from '../../Interaction/Message/Banner.js';
|
|
17
|
+
import type { MessageContract } from '../../Interaction/Message/Contract/MessageContract.js';
|
|
18
|
+
import { ErrorMessage } from '../../Interaction/Message/ErrorMessage.js';
|
|
19
|
+
import { Header } from '../../Interaction/Message/Header.js';
|
|
20
|
+
import { Message } from '../../Interaction/Message/Message.js';
|
|
21
|
+
import { Messages } from '../../Interaction/Message/Messages.js';
|
|
22
|
+
import { NewLine } from '../../Interaction/Message/NewLine.js';
|
|
23
|
+
import type { OutputContract } from '../../Interaction/Output/Contract/OutputContract.js';
|
|
24
|
+
import type { OutputFactoryContract } from '../../Interaction/Output/Factory/Contract/OutputFactoryContract.js';
|
|
25
|
+
import { HelpOptionParameter } from '../../Routing/Data/Option/HelpOptionParameter.js';
|
|
26
|
+
import { NoInteractionOptionParameter } from '../../Routing/Data/Option/NoInteractionOptionParameter.js';
|
|
27
|
+
import { QuietOptionParameter } from '../../Routing/Data/Option/QuietOptionParameter.js';
|
|
28
|
+
import { SilentOptionParameter } from '../../Routing/Data/Option/SilentOptionParameter.js';
|
|
29
|
+
import { VersionOptionParameter } from '../../Routing/Data/Option/VersionOptionParameter.js';
|
|
30
|
+
import type { ArgumentParameterContract } from '../../Routing/Data/Contract/ArgumentParameterContract.js';
|
|
31
|
+
import type { OptionParameterContract } from '../../Routing/Data/Contract/OptionParameterContract.js';
|
|
32
|
+
import type { RouteCollectionContract } from '../../Routing/Collection/Contract/RouteCollectionContract.js';
|
|
33
|
+
import type { RouteContract } from '../../Routing/Data/Contract/RouteContract.js';
|
|
34
|
+
import { ArgumentValueMode } from '../../Routing/Enum/ArgumentValueMode.js';
|
|
35
|
+
import { OptionMode } from '../../Routing/Enum/OptionMode.js';
|
|
36
|
+
import { OptionValueMode } from '../../Routing/Enum/OptionValueMode.js';
|
|
37
|
+
|
|
38
|
+
export class HelpCommand {
|
|
39
|
+
protected helpRoute!: RouteContract;
|
|
40
|
+
|
|
41
|
+
constructor(
|
|
42
|
+
protected config: CliConfigContract,
|
|
43
|
+
protected route: RouteContract,
|
|
44
|
+
protected collection: RouteCollectionContract,
|
|
45
|
+
protected outputFactory: OutputFactoryContract,
|
|
46
|
+
) {}
|
|
47
|
+
|
|
48
|
+
static help(): MessageContract {
|
|
49
|
+
return new Message('A command to get help for a specific command.');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
run(): OutputContract {
|
|
53
|
+
const commandName = this.route.getOption('command').getFirstValue();
|
|
54
|
+
|
|
55
|
+
if (!this.collection.has(commandName)) {
|
|
56
|
+
return this.outputFactory
|
|
57
|
+
.createOutput()
|
|
58
|
+
.withExitCode(ExitCode.ERROR)
|
|
59
|
+
.withAddedMessages(new Banner(new ErrorMessage(`Command \`${commandName}\` was not found.`)));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
this.helpRoute = this.collection.get(commandName);
|
|
63
|
+
|
|
64
|
+
const output = this.outputFactory
|
|
65
|
+
.createOutput()
|
|
66
|
+
.withMessages(new Header(this.config.namespace, this.config.version, this.route));
|
|
67
|
+
|
|
68
|
+
return this.getHelpText(output);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
protected getHelpText(output: OutputContract): OutputContract {
|
|
72
|
+
const route = this.helpRoute;
|
|
73
|
+
const argumentMessages = this.getArgumentsMessages();
|
|
74
|
+
const optionMessages = this.getOptionsMessages();
|
|
75
|
+
|
|
76
|
+
output = output.withAddedMessages(
|
|
77
|
+
new NewLine(),
|
|
78
|
+
this.getNameMessages(),
|
|
79
|
+
new NewLine(),
|
|
80
|
+
new NewLine(),
|
|
81
|
+
this.getDescriptionMessages(),
|
|
82
|
+
new NewLine(),
|
|
83
|
+
new NewLine(),
|
|
84
|
+
this.getUsageMessages(),
|
|
85
|
+
new NewLine(),
|
|
86
|
+
new NewLine(),
|
|
87
|
+
...argumentMessages,
|
|
88
|
+
...optionMessages,
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
if (route.hasHelpText()) {
|
|
92
|
+
const helpText = route.getHelpTextMessage();
|
|
93
|
+
|
|
94
|
+
return output.withAddedMessages(this.getHelpTextMessages(helpText), new NewLine());
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return output;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
protected getOptionsMessages(): MessageContract[] {
|
|
101
|
+
const route = this.helpRoute;
|
|
102
|
+
const optionMessages: MessageContract[] = [];
|
|
103
|
+
|
|
104
|
+
if (route.hasOptions()) {
|
|
105
|
+
optionMessages.push(this.getOptionsHeadingMessages());
|
|
106
|
+
optionMessages.push(new NewLine());
|
|
107
|
+
|
|
108
|
+
for (const option of route.getOptions()) {
|
|
109
|
+
optionMessages.push(this.getOptionMessages(option));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
optionMessages.push(this.getGlobalOptionsHeadingMessages());
|
|
114
|
+
optionMessages.push(new NewLine());
|
|
115
|
+
optionMessages.push(this.getOptionMessages(new QuietOptionParameter()));
|
|
116
|
+
optionMessages.push(this.getOptionMessages(new SilentOptionParameter()));
|
|
117
|
+
optionMessages.push(this.getOptionMessages(new NoInteractionOptionParameter()));
|
|
118
|
+
optionMessages.push(this.getOptionMessages(new HelpOptionParameter()));
|
|
119
|
+
optionMessages.push(this.getOptionMessages(new VersionOptionParameter()));
|
|
120
|
+
|
|
121
|
+
return optionMessages;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
protected getArgumentsMessages(): MessageContract[] {
|
|
125
|
+
const route = this.helpRoute;
|
|
126
|
+
const argumentMessages: MessageContract[] = [];
|
|
127
|
+
|
|
128
|
+
if (route.hasArguments()) {
|
|
129
|
+
argumentMessages.push(this.getArgumentsHeadingMessages());
|
|
130
|
+
argumentMessages.push(new NewLine());
|
|
131
|
+
|
|
132
|
+
for (const argument of route.getArguments()) {
|
|
133
|
+
argumentMessages.push(this.getArgumentMessages(argument));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return argumentMessages;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
protected getNameMessages(): Messages {
|
|
141
|
+
return new Messages(
|
|
142
|
+
new Message('Name: ', new HighlightedTextFormatter()),
|
|
143
|
+
new Message(this.helpRoute.getName()),
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
protected getDescriptionMessages(): Messages {
|
|
148
|
+
return new Messages(
|
|
149
|
+
new Message('Description:', new HighlightedTextFormatter()),
|
|
150
|
+
new NewLine(),
|
|
151
|
+
this.getIndentedText(new Message(this.helpRoute.getDescription())),
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
protected getHelpTextMessages(helpText: MessageContract): Messages {
|
|
156
|
+
return new Messages(
|
|
157
|
+
new Message('Help:', new HighlightedTextFormatter()),
|
|
158
|
+
new NewLine(),
|
|
159
|
+
this.getIndentedText(helpText),
|
|
160
|
+
new NewLine(),
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
protected getUsageMessages(): Messages {
|
|
165
|
+
const route = this.helpRoute;
|
|
166
|
+
let usage = route.getName();
|
|
167
|
+
|
|
168
|
+
if (route.hasOptions()) {
|
|
169
|
+
usage += ' [options]';
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
usage += ' [global options]';
|
|
173
|
+
|
|
174
|
+
if (route.hasArguments()) {
|
|
175
|
+
for (const argument of route.getArguments()) {
|
|
176
|
+
usage +=
|
|
177
|
+
' [' +
|
|
178
|
+
argument.getName() +
|
|
179
|
+
(argument.getValueMode() === ArgumentValueMode.ARRAY ? '...' : '') +
|
|
180
|
+
']';
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return new Messages(
|
|
185
|
+
new Message('Usage:', new HighlightedTextFormatter()),
|
|
186
|
+
new NewLine(),
|
|
187
|
+
this.getIndentedText(new Message(usage)),
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
protected getOptionsHeadingMessages(): Messages {
|
|
192
|
+
return new Messages(new Message('Options:', new HighlightedTextFormatter()));
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
protected getGlobalOptionsHeadingMessages(): Messages {
|
|
196
|
+
return new Messages(new Message('Global Options:', new HighlightedTextFormatter()));
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
protected getOptionMessages(option: OptionParameterContract): Messages {
|
|
200
|
+
const msgs: MessageContract[] = [];
|
|
201
|
+
|
|
202
|
+
msgs.push(new Message(' '));
|
|
203
|
+
msgs.push(new Message('--' + option.getName(), new Formatter(new TextColorFormat(TextColor.MAGENTA))));
|
|
204
|
+
|
|
205
|
+
this.addShortNamesOptionMessages(msgs, option);
|
|
206
|
+
this.addValueDisplayNameOptionMessages(msgs, option);
|
|
207
|
+
|
|
208
|
+
msgs.push(new NewLine());
|
|
209
|
+
msgs.push(new Message(' '));
|
|
210
|
+
msgs.push(new Message(option.getDescription()));
|
|
211
|
+
|
|
212
|
+
this.addValidValuesOptionMessages(msgs, option);
|
|
213
|
+
|
|
214
|
+
msgs.push(new NewLine());
|
|
215
|
+
msgs.push(new NewLine());
|
|
216
|
+
|
|
217
|
+
return new Messages(...msgs);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
protected addShortNamesOptionMessages(messages: MessageContract[], option: OptionParameterContract): void {
|
|
221
|
+
const shortNames = option.getShortNames();
|
|
222
|
+
|
|
223
|
+
if (shortNames.length > 0) {
|
|
224
|
+
messages.push(new Message(', '));
|
|
225
|
+
messages.push(
|
|
226
|
+
new Message('-' + shortNames.join('|'), new Formatter(new TextColorFormat(TextColor.MAGENTA))),
|
|
227
|
+
);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
protected addValueDisplayNameOptionMessages(messages: MessageContract[], option: OptionParameterContract): void {
|
|
232
|
+
if (option.hasValueDisplayName()) {
|
|
233
|
+
const valueDisplayName = option.getValueDisplayName();
|
|
234
|
+
|
|
235
|
+
messages.push(new Message(' '));
|
|
236
|
+
|
|
237
|
+
let text = '';
|
|
238
|
+
|
|
239
|
+
if (option.getValueMode() === OptionValueMode.ARRAY) {
|
|
240
|
+
text = '...';
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
if (option.getMode() === OptionMode.REQUIRED) {
|
|
244
|
+
text += '=' + valueDisplayName;
|
|
245
|
+
} else {
|
|
246
|
+
text += '[=' + valueDisplayName + ']';
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
messages.push(new Message(text, new HighlightedTextFormatter()));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
protected addValidValuesOptionMessages(messages: MessageContract[], option: OptionParameterContract): void {
|
|
254
|
+
const validValues = option.getValidValues();
|
|
255
|
+
|
|
256
|
+
if (validValues.length > 0) {
|
|
257
|
+
const defaultValue = option.getDefaultValue();
|
|
258
|
+
const valueSpacing = '\n - ';
|
|
259
|
+
|
|
260
|
+
messages.push(new NewLine());
|
|
261
|
+
messages.push(new NewLine());
|
|
262
|
+
messages.push(new Message(' '));
|
|
263
|
+
messages.push(new Message('Valid values:'));
|
|
264
|
+
|
|
265
|
+
for (const validValue of validValues) {
|
|
266
|
+
messages.push(new Message(`${valueSpacing}\`${validValue}\``));
|
|
267
|
+
|
|
268
|
+
if (validValue === defaultValue) {
|
|
269
|
+
messages.push(new Message(' (default)', new HighlightedTextFormatter()));
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
protected getArgumentsHeadingMessages(): Messages {
|
|
276
|
+
return new Messages(new Message('Arguments:', new HighlightedTextFormatter()));
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
protected getArgumentMessages(argument: ArgumentParameterContract): Messages {
|
|
280
|
+
return new Messages(
|
|
281
|
+
new Message(' '),
|
|
282
|
+
new Message(argument.getName()),
|
|
283
|
+
new NewLine(),
|
|
284
|
+
new Message(' '),
|
|
285
|
+
new Message(argument.getDescription()),
|
|
286
|
+
new NewLine(),
|
|
287
|
+
new NewLine(),
|
|
288
|
+
);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
protected getIndentedText(message: MessageContract): MessageContract {
|
|
292
|
+
const spaces = ' ';
|
|
293
|
+
const maxWidth = 100;
|
|
294
|
+
const words = (spaces + message.getText()).split(' ');
|
|
295
|
+
const lines: string[] = [];
|
|
296
|
+
let currentLine = '';
|
|
297
|
+
|
|
298
|
+
for (const word of words) {
|
|
299
|
+
if (currentLine.length + word.length + 1 <= maxWidth) {
|
|
300
|
+
currentLine += (currentLine ? ' ' : '') + word;
|
|
301
|
+
} else {
|
|
302
|
+
lines.push(currentLine);
|
|
303
|
+
currentLine = spaces + word;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
if (currentLine) {
|
|
308
|
+
lines.push(currentLine);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
return message.withText(lines.join('\n'));
|
|
312
|
+
}
|
|
313
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { MessageContract } from '../../Interaction/Message/Contract/MessageContract.js';
|
|
11
|
+
import { Message } from '../../Interaction/Message/Message.js';
|
|
12
|
+
import type { OutputContract } from '../../Interaction/Output/Contract/OutputContract.js';
|
|
13
|
+
import type { OutputFactoryContract } from '../../Interaction/Output/Factory/Contract/OutputFactoryContract.js';
|
|
14
|
+
import type { RouteCollectionContract } from '../../Routing/Collection/Contract/RouteCollectionContract.js';
|
|
15
|
+
import type { RouteContract } from '../../Routing/Data/Contract/RouteContract.js';
|
|
16
|
+
|
|
17
|
+
export class ListBashCommand {
|
|
18
|
+
constructor(
|
|
19
|
+
protected route: RouteContract,
|
|
20
|
+
protected collection: RouteCollectionContract,
|
|
21
|
+
protected outputFactory: OutputFactoryContract,
|
|
22
|
+
) {}
|
|
23
|
+
|
|
24
|
+
static help(): MessageContract {
|
|
25
|
+
return new Message('A command to list all the commands present within the Cli component for bash completion.');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
run(): OutputContract {
|
|
29
|
+
const output = this.outputFactory.createOutput();
|
|
30
|
+
let routes = Object.values(this.collection.all());
|
|
31
|
+
let colonAt: number | false = false;
|
|
32
|
+
|
|
33
|
+
if (this.route.hasArgument('namespace')) {
|
|
34
|
+
const namespace = this.route.getArgument('namespace').getFirstValue();
|
|
35
|
+
colonAt = namespace.indexOf(':');
|
|
36
|
+
|
|
37
|
+
routes = routes.filter((r) => r.getName().startsWith(namespace));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const routesForBash = routes.map((r) => (colonAt !== false ? r.getName().substring(colonAt + 1) : r.getName()));
|
|
41
|
+
|
|
42
|
+
return output.withAddedMessages(new Message(routesForBash.join(' ')));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { CliConfigContract } from '../../../Application/Data/Contract/CliConfigContract.js';
|
|
11
|
+
import { ExitCode } from '../../Interaction/Enum/ExitCode.js';
|
|
12
|
+
import { TextColor } from '../../Interaction/Enum/TextColor.js';
|
|
13
|
+
import { TextColorFormat } from '../../Interaction/Format/TextColorFormat.js';
|
|
14
|
+
import { Formatter } from '../../Interaction/Formatter/Formatter.js';
|
|
15
|
+
import { HighlightedTextFormatter } from '../../Interaction/Formatter/HighlightedTextFormatter.js';
|
|
16
|
+
import { Banner } from '../../Interaction/Message/Banner.js';
|
|
17
|
+
import type { MessageContract } from '../../Interaction/Message/Contract/MessageContract.js';
|
|
18
|
+
import { ErrorMessage } from '../../Interaction/Message/ErrorMessage.js';
|
|
19
|
+
import { Header } from '../../Interaction/Message/Header.js';
|
|
20
|
+
import { Message } from '../../Interaction/Message/Message.js';
|
|
21
|
+
import { NewLine } from '../../Interaction/Message/NewLine.js';
|
|
22
|
+
import type { OutputContract } from '../../Interaction/Output/Contract/OutputContract.js';
|
|
23
|
+
import type { OutputFactoryContract } from '../../Interaction/Output/Factory/Contract/OutputFactoryContract.js';
|
|
24
|
+
import type { RouteCollectionContract } from '../../Routing/Collection/Contract/RouteCollectionContract.js';
|
|
25
|
+
import type { RouteContract } from '../../Routing/Data/Contract/RouteContract.js';
|
|
26
|
+
|
|
27
|
+
export class ListCommand {
|
|
28
|
+
constructor(
|
|
29
|
+
protected config: CliConfigContract,
|
|
30
|
+
protected route: RouteContract,
|
|
31
|
+
protected collection: RouteCollectionContract,
|
|
32
|
+
protected outputFactory: OutputFactoryContract,
|
|
33
|
+
) {}
|
|
34
|
+
|
|
35
|
+
static help(): MessageContract {
|
|
36
|
+
return new Message('A command to list all the commands present within the Cli component.');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
run(): OutputContract {
|
|
40
|
+
let namespace = '';
|
|
41
|
+
let routes = Object.values(this.collection.all());
|
|
42
|
+
|
|
43
|
+
if (this.route.hasOption('namespace')) {
|
|
44
|
+
namespace = this.route.getOption('namespace').getFirstValue();
|
|
45
|
+
routes = routes.filter((r) => r.getName().startsWith(namespace));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (routes.length === 0) {
|
|
49
|
+
return this.getNoRoutesErrorOutput(namespace);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
routes.sort((a, b) => a.getName().localeCompare(b.getName()));
|
|
53
|
+
|
|
54
|
+
let output = this.outputFactory
|
|
55
|
+
.createOutput()
|
|
56
|
+
.withMessages(new Header(this.config.namespace, this.config.version, this.route));
|
|
57
|
+
|
|
58
|
+
output = this.addHeaderMessages(output, namespace);
|
|
59
|
+
output = this.addRoutesMessages(output, routes);
|
|
60
|
+
|
|
61
|
+
return output.withAddedMessages(new NewLine());
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
protected getNoRoutesErrorOutput(namespace: string): OutputContract {
|
|
65
|
+
const errorMessage = namespace !== '' ? `Namespace \`${namespace}\` was not found.` : 'No routes found.';
|
|
66
|
+
|
|
67
|
+
return this.outputFactory
|
|
68
|
+
.createOutput()
|
|
69
|
+
.withExitCode(ExitCode.ERROR)
|
|
70
|
+
.withAddedMessages(new Banner(new ErrorMessage(errorMessage)));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
protected addHeaderMessages(output: OutputContract, namespace: string): OutputContract {
|
|
74
|
+
return output.withAddedMessages(
|
|
75
|
+
new Message('Commands' + (namespace !== '' ? ` [${namespace}]:` : ':'), new HighlightedTextFormatter()),
|
|
76
|
+
new NewLine(),
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
protected addRoutesMessages(output: OutputContract, routes: RouteContract[]): OutputContract {
|
|
81
|
+
for (const route of routes) {
|
|
82
|
+
output = this.addRouteMessages(output, route);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return output;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
protected addRouteMessages(output: OutputContract, route: RouteContract): OutputContract {
|
|
89
|
+
return output.withAddedMessages(
|
|
90
|
+
new Message(' '),
|
|
91
|
+
new Message(route.getName(), new Formatter(new TextColorFormat(TextColor.MAGENTA))),
|
|
92
|
+
new NewLine(),
|
|
93
|
+
new Message(' - '),
|
|
94
|
+
new Message(route.getDescription(), new HighlightedTextFormatter()),
|
|
95
|
+
new NewLine(),
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { CliConfigContract } from '../../../Application/Data/Contract/CliConfigContract.js';
|
|
11
|
+
import type { MessageContract } from '../../Interaction/Message/Contract/MessageContract.js';
|
|
12
|
+
import { Header } from '../../Interaction/Message/Header.js';
|
|
13
|
+
import { Message } from '../../Interaction/Message/Message.js';
|
|
14
|
+
import type { OutputContract } from '../../Interaction/Output/Contract/OutputContract.js';
|
|
15
|
+
import type { OutputFactoryContract } from '../../Interaction/Output/Factory/Contract/OutputFactoryContract.js';
|
|
16
|
+
import type { RouteContract } from '../../Routing/Data/Contract/RouteContract.js';
|
|
17
|
+
|
|
18
|
+
export class VersionCommand {
|
|
19
|
+
constructor(
|
|
20
|
+
protected outputFactory: OutputFactoryContract,
|
|
21
|
+
protected config: CliConfigContract,
|
|
22
|
+
protected route: RouteContract,
|
|
23
|
+
) {}
|
|
24
|
+
|
|
25
|
+
static help(): MessageContract {
|
|
26
|
+
return new Message('A command to show the application version and info.');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
run(): OutputContract {
|
|
30
|
+
return this.outputFactory
|
|
31
|
+
.createOutput()
|
|
32
|
+
.withMessages(new Header(this.config.namespace, this.config.version, this.route));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export class CliServerServiceId {
|
|
11
|
+
static readonly InputHandlerContract = 'Valkyrja.Cli.Server.Handler.InputHandlerContract' as const;
|
|
12
|
+
static readonly HelpCommand = 'Valkyrja.Cli.Server.Command.HelpCommand' as const;
|
|
13
|
+
static readonly ListBashCommand = 'Valkyrja.Cli.Server.Command.ListBashCommand' as const;
|
|
14
|
+
static readonly ListCommand = 'Valkyrja.Cli.Server.Command.ListCommand' as const;
|
|
15
|
+
static readonly VersionCommand = 'Valkyrja.Cli.Server.Command.VersionCommand' as const;
|
|
16
|
+
static readonly LogThrowableCaughtMiddleware =
|
|
17
|
+
'Valkyrja.Cli.Server.Middleware.LogThrowableCaughtMiddleware' as const;
|
|
18
|
+
static readonly OutputThrowableCaughtMiddleware =
|
|
19
|
+
'Valkyrja.Cli.Server.Middleware.OutputThrowableCaughtMiddleware' as const;
|
|
20
|
+
static readonly CheckForHelpOptionsMiddleware =
|
|
21
|
+
'Valkyrja.Cli.Server.Middleware.CheckForHelpOptionsMiddleware' as const;
|
|
22
|
+
static readonly CheckForVersionOptionsMiddleware =
|
|
23
|
+
'Valkyrja.Cli.Server.Middleware.CheckForVersionOptionsMiddleware' as const;
|
|
24
|
+
static readonly CheckGlobalInteractionOptionsMiddleware =
|
|
25
|
+
'Valkyrja.Cli.Server.Middleware.CheckGlobalInteractionOptionsMiddleware' as const;
|
|
26
|
+
static readonly CheckCommandForTypoMiddleware =
|
|
27
|
+
'Valkyrja.Cli.Server.Middleware.CheckCommandForTypoMiddleware' as const;
|
|
28
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export class CliCommandName {
|
|
11
|
+
static readonly HELP: string = 'help' as const;
|
|
12
|
+
static readonly LIST: string = 'list' as const;
|
|
13
|
+
static readonly LIST_BASH: string = 'list:bash' as const;
|
|
14
|
+
static readonly VERSION: string = 'version' as const;
|
|
15
|
+
static readonly DATA_GENERATE: string = 'data:generate' as const;
|
|
16
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export interface CliHelpCommandConfigContract {
|
|
11
|
+
readonly helpCommandName: string;
|
|
12
|
+
readonly helpOptionName: string;
|
|
13
|
+
readonly helpOptionShortName: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export namespace CliHelpCommandConfigContract {
|
|
17
|
+
export function instanceOf(value: unknown): value is CliHelpCommandConfigContract {
|
|
18
|
+
return typeof value === 'object' && value !== null && 'helpCommandName' in value;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export interface CliNoInteractionConfigContract {
|
|
11
|
+
readonly noInteractionOptionName: string;
|
|
12
|
+
readonly noInteractionOptionShortName: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export namespace CliNoInteractionConfigContract {
|
|
16
|
+
export function instanceOf(value: unknown): value is CliNoInteractionConfigContract {
|
|
17
|
+
return typeof value === 'object' && value !== null && 'noInteractionOptionName' in value;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export interface CliQuietInteractionConfigContract {
|
|
11
|
+
readonly quietOptionName: string;
|
|
12
|
+
readonly quietOptionShortName: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export namespace CliQuietInteractionConfigContract {
|
|
16
|
+
export function instanceOf(value: unknown): value is CliQuietInteractionConfigContract {
|
|
17
|
+
return typeof value === 'object' && value !== null && 'quietOptionName' in value;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export interface CliSilentInteractionConfigContract {
|
|
11
|
+
readonly silentOptionName: string;
|
|
12
|
+
readonly silentOptionShortName: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export namespace CliSilentInteractionConfigContract {
|
|
16
|
+
export function instanceOf(value: unknown): value is CliSilentInteractionConfigContract {
|
|
17
|
+
return typeof value === 'object' && value !== null && 'silentOptionName' in value;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export interface CliVersionCommandConfigContract {
|
|
11
|
+
readonly versionCommandName: string;
|
|
12
|
+
readonly versionOptionName: string;
|
|
13
|
+
readonly versionOptionShortName: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export namespace CliVersionCommandConfigContract {
|
|
17
|
+
export function instanceOf(value: unknown): value is CliVersionCommandConfigContract {
|
|
18
|
+
return typeof value === 'object' && value !== null && 'versionCommandName' in value;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the Valkyrja package.
|
|
3
|
+
*
|
|
4
|
+
* (c) Melech Mizrachi <melechmizrachi@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { InputContract } from '../../../Interaction/Input/Contract/InputContract.js';
|
|
11
|
+
import type { OutputContract } from '../../../Interaction/Output/Contract/OutputContract.js';
|
|
12
|
+
|
|
13
|
+
export interface InputHandlerContract {
|
|
14
|
+
handle(input: InputContract): OutputContract;
|
|
15
|
+
exit(input: InputContract, output: OutputContract): void;
|
|
16
|
+
run(input: InputContract): void;
|
|
17
|
+
}
|