@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,56 @@
|
|
|
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 { ComponentContract } from './Component/Contract/ComponentContract.js';
|
|
11
|
+
import type { ValueContract } from './Contract/ValueContract.js';
|
|
12
|
+
import { ObjectFactory } from '../../../../Type/Object/Factory/ObjectFactory.js';
|
|
13
|
+
|
|
14
|
+
export class Value implements ValueContract {
|
|
15
|
+
protected components: Array<ComponentContract | string>;
|
|
16
|
+
|
|
17
|
+
constructor(...components: Array<ComponentContract | string>) {
|
|
18
|
+
this.components = this.filterComponents(...components);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static fromValue(value: string): Value {
|
|
22
|
+
const deliminator = ';';
|
|
23
|
+
const parts = value.includes(deliminator) ? value.split(deliminator) : [value];
|
|
24
|
+
return new Value(...parts.map((p) => p.trim()));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
getComponents(): Array<ComponentContract | string> {
|
|
28
|
+
return this.components;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
withComponents(...components: Array<ComponentContract | string>): this {
|
|
32
|
+
const clone = ObjectFactory.clone(this);
|
|
33
|
+
clone.components = this.filterComponents(...components);
|
|
34
|
+
return clone;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
withAddedComponents(...components: Array<ComponentContract | string>): this {
|
|
38
|
+
const clone = this.withComponents(...components);
|
|
39
|
+
clone.components = [...this.components, ...clone.components];
|
|
40
|
+
return clone;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
toString(): string {
|
|
44
|
+
return this.components
|
|
45
|
+
.map((c) => (typeof c === 'string' ? c : c.toString()).trim())
|
|
46
|
+
.filter((s) => s !== '')
|
|
47
|
+
.join('; ');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
protected filterComponents(...components: Array<ComponentContract | string>): Array<ComponentContract | string> {
|
|
51
|
+
return components.filter((c) => {
|
|
52
|
+
const str = typeof c === 'string' ? c : c.toString();
|
|
53
|
+
return str !== '';
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
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 { ParamCollectionContract } from '../Contract/ParamCollectionContract.js';
|
|
11
|
+
import { ObjectFactory } from '../../../../Type/Object/Factory/ObjectFactory.js';
|
|
12
|
+
|
|
13
|
+
export abstract class ParamCollection<V = unknown> implements ParamCollectionContract<V> {
|
|
14
|
+
protected params: Record<string, V>;
|
|
15
|
+
|
|
16
|
+
constructor(params: Record<string, V> = {}) {
|
|
17
|
+
this.params = params;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
has(key: string): boolean {
|
|
21
|
+
return key in this.params;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
get(key: string): V | undefined {
|
|
25
|
+
return this.params[key];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
getAll(): Record<string, V> {
|
|
29
|
+
return { ...this.params };
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
getOnly(...keys: string[]): Record<string, V> {
|
|
33
|
+
const result: Record<string, V> = {};
|
|
34
|
+
for (const [k, v] of Object.entries(this.params)) {
|
|
35
|
+
if (keys.includes(k)) {
|
|
36
|
+
result[k] = v;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
getAllExcept(...keys: string[]): Record<string, V> {
|
|
43
|
+
const result: Record<string, V> = {};
|
|
44
|
+
for (const [k, v] of Object.entries(this.params)) {
|
|
45
|
+
if (!keys.includes(k)) {
|
|
46
|
+
result[k] = v;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
with(params: Record<string, V>): this {
|
|
53
|
+
const clone = ObjectFactory.clone(this);
|
|
54
|
+
clone.params = params;
|
|
55
|
+
return clone;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
withAdded(params: Record<string, V>): this {
|
|
59
|
+
const clone = ObjectFactory.clone(this);
|
|
60
|
+
clone.params = { ...this.params, ...params };
|
|
61
|
+
return clone;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
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 { AttributeParamCollectionContract } from './Contract/AttributeParamCollectionContract.js';
|
|
11
|
+
import { ParamCollection } from './Abstract/ParamCollection.js';
|
|
12
|
+
|
|
13
|
+
export class AttributeParamCollection extends ParamCollection implements AttributeParamCollectionContract {}
|
|
@@ -0,0 +1,12 @@
|
|
|
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 { ParamCollectionContract } from './ParamCollectionContract.js';
|
|
11
|
+
|
|
12
|
+
export type AttributeParamCollectionContract = ParamCollectionContract;
|
|
@@ -0,0 +1,12 @@
|
|
|
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 { ParamCollectionContract } from './ParamCollectionContract.js';
|
|
11
|
+
|
|
12
|
+
export type CookieParamCollectionContract = ParamCollectionContract<string>;
|
|
@@ -0,0 +1,18 @@
|
|
|
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 ParamCollectionContract<V = unknown> {
|
|
11
|
+
has(key: string): boolean;
|
|
12
|
+
get(key: string): V | undefined;
|
|
13
|
+
getAll(): Record<string, V>;
|
|
14
|
+
getOnly(...keys: string[]): Record<string, V>;
|
|
15
|
+
getAllExcept(...keys: string[]): Record<string, V>;
|
|
16
|
+
with(params: Record<string, V>): this;
|
|
17
|
+
withAdded(params: Record<string, V>): this;
|
|
18
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
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 { ParamCollectionContract } from './ParamCollectionContract.js';
|
|
11
|
+
|
|
12
|
+
export type ParsedBodyParamCollectionContract = ParamCollectionContract<string | string[]>;
|
|
@@ -0,0 +1,12 @@
|
|
|
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 { ParamCollectionContract } from './ParamCollectionContract.js';
|
|
11
|
+
|
|
12
|
+
export type ParsedJsonParamCollectionContract = ParamCollectionContract;
|
|
@@ -0,0 +1,12 @@
|
|
|
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 { ParamCollectionContract } from './ParamCollectionContract.js';
|
|
11
|
+
|
|
12
|
+
export type QueryParamCollectionContract = ParamCollectionContract<string | string[]>;
|
|
@@ -0,0 +1,12 @@
|
|
|
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 { ParamCollectionContract } from './ParamCollectionContract.js';
|
|
11
|
+
|
|
12
|
+
export type ServerParamCollectionContract = ParamCollectionContract<string | string[]>;
|
|
@@ -0,0 +1,13 @@
|
|
|
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 { CookieParamCollectionContract } from './Contract/CookieParamCollectionContract.js';
|
|
11
|
+
import { ParamCollection } from './Abstract/ParamCollection.js';
|
|
12
|
+
|
|
13
|
+
export class CookieParamCollection extends ParamCollection<string> implements CookieParamCollectionContract {}
|
|
@@ -0,0 +1,15 @@
|
|
|
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 { ParsedBodyParamCollectionContract } from './Contract/ParsedBodyParamCollectionContract.js';
|
|
11
|
+
import { ParamCollection } from './Abstract/ParamCollection.js';
|
|
12
|
+
|
|
13
|
+
export class ParsedBodyParamCollection
|
|
14
|
+
extends ParamCollection<string | string[]>
|
|
15
|
+
implements ParsedBodyParamCollectionContract {}
|
|
@@ -0,0 +1,13 @@
|
|
|
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 { ParsedJsonParamCollectionContract } from './Contract/ParsedJsonParamCollectionContract.js';
|
|
11
|
+
import { ParamCollection } from './Abstract/ParamCollection.js';
|
|
12
|
+
|
|
13
|
+
export class ParsedJsonParamCollection extends ParamCollection implements ParsedJsonParamCollectionContract {}
|
|
@@ -0,0 +1,13 @@
|
|
|
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 { QueryParamCollectionContract } from './Contract/QueryParamCollectionContract.js';
|
|
11
|
+
import { ParamCollection } from './Abstract/ParamCollection.js';
|
|
12
|
+
|
|
13
|
+
export class QueryParamCollection extends ParamCollection<string | string[]> implements QueryParamCollectionContract {}
|
|
@@ -0,0 +1,15 @@
|
|
|
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 { ServerParamCollectionContract } from './Contract/ServerParamCollectionContract.js';
|
|
11
|
+
import { ParamCollection } from './Abstract/ParamCollection.js';
|
|
12
|
+
|
|
13
|
+
export class ServerParamCollection
|
|
14
|
+
extends ParamCollection<string | string[]>
|
|
15
|
+
implements ServerParamCollectionContract {}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 { ResponseFactory } from '../Response/Factory/ResponseFactory.js';
|
|
11
|
+
import { HttpMessageServiceId } from '../Constant/HttpMessageServiceId.js';
|
|
12
|
+
|
|
13
|
+
import type { ContainerContract } from '../../../Container/Manager/Contract/ContainerContract.js';
|
|
14
|
+
import type { ResponseFactoryContract } from '../Response/Factory/Contract/ResponseFactoryContract.js';
|
|
15
|
+
import type { ServiceProviderContract } from '../../../Container/Provider/Contract/ServiceProviderContract.js';
|
|
16
|
+
|
|
17
|
+
export class HttpMessageServiceProvider implements ServiceProviderContract {
|
|
18
|
+
publishers(): Record<string, (container: ContainerContract) => void> {
|
|
19
|
+
return {
|
|
20
|
+
[HttpMessageServiceId.ResponseFactoryContract]: HttpMessageServiceProvider.publishResponseFactory,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
static publishResponseFactory(this: void, container: ContainerContract): void {
|
|
25
|
+
container.setSingleton<ResponseFactoryContract>(
|
|
26
|
+
HttpMessageServiceId.ResponseFactoryContract,
|
|
27
|
+
new ResponseFactory(),
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -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
|
+
import type { ServerRequestContract } from './ServerRequestContract.js';
|
|
11
|
+
import type { ParsedJsonParamCollectionContract } from '../../Param/Contract/ParsedJsonParamCollectionContract.js';
|
|
12
|
+
|
|
13
|
+
export interface JsonServerRequestContract extends ServerRequestContract {
|
|
14
|
+
getParsedJson(): ParsedJsonParamCollectionContract;
|
|
15
|
+
withParsedJson(params: ParsedJsonParamCollectionContract): this;
|
|
16
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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 '../../Contract/MessageContract.js';
|
|
11
|
+
import type { UriContract } from '../../Uri/Contract/UriContract.js';
|
|
12
|
+
import type { RequestMethod } from '../../Enum/RequestMethod.js';
|
|
13
|
+
|
|
14
|
+
export interface RequestContract extends MessageContract {
|
|
15
|
+
getRequestTarget(): string;
|
|
16
|
+
withRequestTarget(requestTarget: string): this;
|
|
17
|
+
getMethod(): RequestMethod;
|
|
18
|
+
withMethod(method: RequestMethod): this;
|
|
19
|
+
getUri(): UriContract;
|
|
20
|
+
withUri(uri: UriContract, preserveHost?: boolean): this;
|
|
21
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
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 { RequestContract } from './RequestContract.js';
|
|
11
|
+
import type { UploadedFileCollectionContract } from '../../File/Collection/Contract/UploadedFileCollectionContract.js';
|
|
12
|
+
import type { AttributeParamCollectionContract } from '../../Param/Contract/AttributeParamCollectionContract.js';
|
|
13
|
+
import type { CookieParamCollectionContract } from '../../Param/Contract/CookieParamCollectionContract.js';
|
|
14
|
+
import type { ParsedBodyParamCollectionContract } from '../../Param/Contract/ParsedBodyParamCollectionContract.js';
|
|
15
|
+
import type { QueryParamCollectionContract } from '../../Param/Contract/QueryParamCollectionContract.js';
|
|
16
|
+
import type { ServerParamCollectionContract } from '../../Param/Contract/ServerParamCollectionContract.js';
|
|
17
|
+
|
|
18
|
+
export interface ServerRequestContract extends RequestContract {
|
|
19
|
+
getServerParams(): ServerParamCollectionContract;
|
|
20
|
+
withServerParams(server: ServerParamCollectionContract): this;
|
|
21
|
+
getCookieParams(): CookieParamCollectionContract;
|
|
22
|
+
withCookieParams(cookies: CookieParamCollectionContract): this;
|
|
23
|
+
getQueryParams(): QueryParamCollectionContract;
|
|
24
|
+
withQueryParams(query: QueryParamCollectionContract): this;
|
|
25
|
+
getUploadedFiles(): UploadedFileCollectionContract;
|
|
26
|
+
withUploadedFiles(uploadedFiles: UploadedFileCollectionContract): this;
|
|
27
|
+
getParsedBody(): ParsedBodyParamCollectionContract;
|
|
28
|
+
withParsedBody(params: ParsedBodyParamCollectionContract): this;
|
|
29
|
+
getAttributes(): AttributeParamCollectionContract;
|
|
30
|
+
withAttributes(attributes: AttributeParamCollectionContract): this;
|
|
31
|
+
isXmlHttpRequest(): boolean;
|
|
32
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
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 { IncomingMessage } from 'node:http';
|
|
11
|
+
import { ServerRequest } from '../ServerRequest.js';
|
|
12
|
+
import { JsonServerRequest } from '../JsonServerRequest.js';
|
|
13
|
+
import { HeaderCollection } from '../../Header/Collection/HeaderCollection.js';
|
|
14
|
+
import { Header } from '../../Header/Header.js';
|
|
15
|
+
import { CookieParamCollection } from '../../Param/CookieParamCollection.js';
|
|
16
|
+
import { QueryParamCollection } from '../../Param/QueryParamCollection.js';
|
|
17
|
+
import { ServerParamCollection } from '../../Param/ServerParamCollection.js';
|
|
18
|
+
import { ParsedBodyParamCollection } from '../../Param/ParsedBodyParamCollection.js';
|
|
19
|
+
import { UploadedFileCollection } from '../../File/Collection/UploadedFileCollection.js';
|
|
20
|
+
import { CookieFactory } from '../../Header/Factory/CookieFactory.js';
|
|
21
|
+
import { ProtocolVersion } from '../../Enum/ProtocolVersion.js';
|
|
22
|
+
import { RequestMethod } from '../../Enum/RequestMethod.js';
|
|
23
|
+
import { Stream } from '../../Stream/Stream.js';
|
|
24
|
+
import { UriFactory } from '../../Uri/Factory/UriFactory.js';
|
|
25
|
+
|
|
26
|
+
export abstract class RequestFactory {
|
|
27
|
+
static fromNodeRequest(req: IncomingMessage): ServerRequest {
|
|
28
|
+
return RequestFactory.buildFromNodeRequest(req, ServerRequest);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
static jsonFromNodeRequest(req: IncomingMessage): JsonServerRequest {
|
|
32
|
+
return RequestFactory.buildFromNodeRequest(req, JsonServerRequest) as JsonServerRequest;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
protected static buildFromNodeRequest(req: IncomingMessage, RequestClass: typeof ServerRequest): ServerRequest {
|
|
36
|
+
const rawHeaders = req.headers;
|
|
37
|
+
const headers: Header[] = [];
|
|
38
|
+
|
|
39
|
+
for (const [name, value] of Object.entries(rawHeaders)) {
|
|
40
|
+
if (value == null) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const headerValue = Array.isArray(value) ? value.join(', ') : value;
|
|
44
|
+
headers.push(new Header(name, headerValue));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const headerCollection = new HeaderCollection(...headers);
|
|
48
|
+
|
|
49
|
+
const host = rawHeaders.host ?? 'localhost';
|
|
50
|
+
const scheme = (req.socket as { encrypted?: boolean }).encrypted ? 'https' : 'http';
|
|
51
|
+
const rawUrl = req.url ?? '/';
|
|
52
|
+
const uri = UriFactory.fromString(`${scheme}://${host}${rawUrl}`);
|
|
53
|
+
|
|
54
|
+
const cookieHeader = rawHeaders.cookie ?? '';
|
|
55
|
+
const cookies = cookieHeader ? CookieFactory.parseCookieHeader(cookieHeader) : {};
|
|
56
|
+
const searchParams = new URL(`${scheme}://${host}${rawUrl}`).searchParams;
|
|
57
|
+
const query: Record<string, string | string[]> = {};
|
|
58
|
+
|
|
59
|
+
for (const [key, value] of searchParams.entries()) {
|
|
60
|
+
const existing = query[key];
|
|
61
|
+
if (existing === undefined) {
|
|
62
|
+
query[key] = value;
|
|
63
|
+
} else if (Array.isArray(existing)) {
|
|
64
|
+
existing.push(value);
|
|
65
|
+
} else {
|
|
66
|
+
query[key] = [existing, value];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const serverParams: Record<string, string | string[]> = {
|
|
71
|
+
method: req.method ?? 'GET',
|
|
72
|
+
httpVersion: req.httpVersion,
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const protocol = RequestFactory.getProtocolVersion(req.httpVersion);
|
|
76
|
+
const method = RequestMethod[(req.method ?? 'GET').toUpperCase() as keyof typeof RequestMethod];
|
|
77
|
+
|
|
78
|
+
return new RequestClass(
|
|
79
|
+
uri,
|
|
80
|
+
method,
|
|
81
|
+
new Stream(),
|
|
82
|
+
headerCollection,
|
|
83
|
+
protocol,
|
|
84
|
+
new ServerParamCollection(serverParams),
|
|
85
|
+
new CookieParamCollection(cookies),
|
|
86
|
+
new QueryParamCollection(query),
|
|
87
|
+
new ParsedBodyParamCollection(),
|
|
88
|
+
new UploadedFileCollection(),
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
protected static getProtocolVersion(httpVersion: string): ProtocolVersion {
|
|
93
|
+
switch (httpVersion) {
|
|
94
|
+
case '1.0':
|
|
95
|
+
return ProtocolVersion.V1;
|
|
96
|
+
case '2':
|
|
97
|
+
case '2.0':
|
|
98
|
+
return ProtocolVersion.V2;
|
|
99
|
+
case '3':
|
|
100
|
+
case '3.0':
|
|
101
|
+
return ProtocolVersion.V3;
|
|
102
|
+
default:
|
|
103
|
+
return ProtocolVersion.V1_1;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
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 { JsonServerRequestContract } from './Contract/JsonServerRequestContract.js';
|
|
11
|
+
import type { UriContract } from '../Uri/Contract/UriContract.js';
|
|
12
|
+
import type { HeaderCollectionContract } from '../Header/Collection/Contract/HeaderCollectionContract.js';
|
|
13
|
+
import type { StreamContract } from '../Stream/Contract/StreamContract.js';
|
|
14
|
+
import type { UploadedFileCollectionContract } from '../File/Collection/Contract/UploadedFileCollectionContract.js';
|
|
15
|
+
import type { CookieParamCollectionContract } from '../Param/Contract/CookieParamCollectionContract.js';
|
|
16
|
+
import type { ParsedBodyParamCollectionContract } from '../Param/Contract/ParsedBodyParamCollectionContract.js';
|
|
17
|
+
import type { ParsedJsonParamCollectionContract } from '../Param/Contract/ParsedJsonParamCollectionContract.js';
|
|
18
|
+
import type { QueryParamCollectionContract } from '../Param/Contract/QueryParamCollectionContract.js';
|
|
19
|
+
import type { ServerParamCollectionContract } from '../Param/Contract/ServerParamCollectionContract.js';
|
|
20
|
+
import { ServerRequest } from './ServerRequest.js';
|
|
21
|
+
import { HeaderCollection } from '../Header/Collection/HeaderCollection.js';
|
|
22
|
+
import { CookieParamCollection } from '../Param/CookieParamCollection.js';
|
|
23
|
+
import { ParsedBodyParamCollection } from '../Param/ParsedBodyParamCollection.js';
|
|
24
|
+
import { ParsedJsonParamCollection } from '../Param/ParsedJsonParamCollection.js';
|
|
25
|
+
import { QueryParamCollection } from '../Param/QueryParamCollection.js';
|
|
26
|
+
import { ServerParamCollection } from '../Param/ServerParamCollection.js';
|
|
27
|
+
import { UploadedFileCollection } from '../File/Collection/UploadedFileCollection.js';
|
|
28
|
+
import { ContentTypeValue } from '../Constant/ContentTypeValue.js';
|
|
29
|
+
import { HeaderName } from '../Constant/HeaderName.js';
|
|
30
|
+
import { ProtocolVersion } from '../Enum/ProtocolVersion.js';
|
|
31
|
+
import { RequestMethod } from '../Enum/RequestMethod.js';
|
|
32
|
+
import { Stream } from '../Stream/Stream.js';
|
|
33
|
+
import { Uri } from '../Uri/Uri.js';
|
|
34
|
+
import { ObjectFactory } from '../../../Type/Object/Factory/ObjectFactory.js';
|
|
35
|
+
|
|
36
|
+
export class JsonServerRequest extends ServerRequest implements JsonServerRequestContract {
|
|
37
|
+
protected parsedJson: ParsedJsonParamCollectionContract;
|
|
38
|
+
|
|
39
|
+
constructor(
|
|
40
|
+
uri: UriContract = new Uri(),
|
|
41
|
+
method: RequestMethod = RequestMethod.GET,
|
|
42
|
+
body: StreamContract = new Stream(),
|
|
43
|
+
headers: HeaderCollectionContract = new HeaderCollection(),
|
|
44
|
+
protocol: ProtocolVersion = ProtocolVersion.V1_1,
|
|
45
|
+
server: ServerParamCollectionContract = new ServerParamCollection(),
|
|
46
|
+
cookies: CookieParamCollectionContract = new CookieParamCollection(),
|
|
47
|
+
query: QueryParamCollectionContract = new QueryParamCollection(),
|
|
48
|
+
parsedBody: ParsedBodyParamCollectionContract = new ParsedBodyParamCollection(),
|
|
49
|
+
parsedJson: ParsedJsonParamCollectionContract = new ParsedJsonParamCollection(),
|
|
50
|
+
files: UploadedFileCollectionContract = new UploadedFileCollection(),
|
|
51
|
+
) {
|
|
52
|
+
super(uri, method, body, headers, protocol, server, cookies, query, parsedBody, files);
|
|
53
|
+
this.parsedJson = parsedJson;
|
|
54
|
+
|
|
55
|
+
const contentType = headers.getHeaderLine(HeaderName.CONTENT_TYPE);
|
|
56
|
+
|
|
57
|
+
if (contentType.includes(ContentTypeValue.APPLICATION_JSON)) {
|
|
58
|
+
const bodyContents = body.toString();
|
|
59
|
+
|
|
60
|
+
if (bodyContents !== '') {
|
|
61
|
+
const parsed = JSON.parse(bodyContents) as Record<string, unknown>;
|
|
62
|
+
this.parsedJson = new ParsedJsonParamCollection(parsed);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
getParsedJson(): ParsedJsonParamCollectionContract {
|
|
68
|
+
return this.parsedJson;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
withParsedJson(params: ParsedJsonParamCollectionContract): this {
|
|
72
|
+
const clone = ObjectFactory.clone(this);
|
|
73
|
+
clone.parsedJson = params;
|
|
74
|
+
return clone;
|
|
75
|
+
}
|
|
76
|
+
}
|