@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,22 @@
|
|
|
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 ContentTypeValue {
|
|
11
|
+
static readonly APPLICATION_JSON = 'application/json' as const;
|
|
12
|
+
static readonly APPLICATION_JAVASCRIPT = 'application/javascript' as const;
|
|
13
|
+
static readonly APPLICATION_XML = 'application/xml' as const;
|
|
14
|
+
static readonly APPLICATION_XML_UTF8 = `${ContentTypeValue.APPLICATION_XML}; charset=utf-8` as const;
|
|
15
|
+
static readonly APPLICATION_X_WWW_FORM = 'application/x-www-form-urlencoded' as const;
|
|
16
|
+
static readonly MULTIPART_FORM_DATA = 'multipart/form-data' as const;
|
|
17
|
+
static readonly TEXT_HTML = 'text/html' as const;
|
|
18
|
+
static readonly TEXT_HTML_UTF8 = `${ContentTypeValue.TEXT_HTML}; charset=utf-8` as const;
|
|
19
|
+
static readonly TEXT_JAVASCRIPT = 'text/javascript' as const;
|
|
20
|
+
static readonly TEXT_PLAIN = 'text/plain' as const;
|
|
21
|
+
static readonly TEXT_PLAIN_UTF8 = `${ContentTypeValue.TEXT_PLAIN}; charset=utf-8` as const;
|
|
22
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
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 HeaderName {
|
|
11
|
+
static readonly ACCEPT = 'Accept' as const;
|
|
12
|
+
static readonly ACCEPT_CHARSET = 'Accept-Charset' as const;
|
|
13
|
+
static readonly ACCEPT_ENCODING = 'Accept-Encoding' as const;
|
|
14
|
+
static readonly ACCEPT_LANGUAGE = 'Accept-Language' as const;
|
|
15
|
+
static readonly ACCEPT_RANGES = 'Accept-Ranges' as const;
|
|
16
|
+
static readonly AGE = 'Age' as const;
|
|
17
|
+
static readonly ALLOW = 'Allow' as const;
|
|
18
|
+
static readonly AUTHORIZATION = 'Authorization' as const;
|
|
19
|
+
static readonly CACHE_CONTROL = 'Cache-Control' as const;
|
|
20
|
+
static readonly CONNECTION = 'Connection' as const;
|
|
21
|
+
static readonly CONTENT_ENCODING = 'Content-Encoding' as const;
|
|
22
|
+
static readonly CONTENT_LANGUAGE = 'Content-Language' as const;
|
|
23
|
+
static readonly CONTENT_LENGTH = 'Content-Length' as const;
|
|
24
|
+
static readonly CONTENT_LOCATION = 'Content-Location' as const;
|
|
25
|
+
static readonly CONTENT_MD5 = 'Content-MD5' as const;
|
|
26
|
+
static readonly CONTENT_RANGE = 'Content-Range' as const;
|
|
27
|
+
static readonly CONTENT_TYPE = 'Content-Type' as const;
|
|
28
|
+
static readonly DATE = 'Date' as const;
|
|
29
|
+
static readonly E_TAG = 'ETag' as const;
|
|
30
|
+
static readonly EXPECT = 'Expect' as const;
|
|
31
|
+
static readonly EXPIRES = 'Expires' as const;
|
|
32
|
+
static readonly FROM = 'From' as const;
|
|
33
|
+
static readonly HOST = 'Host' as const;
|
|
34
|
+
static readonly IF_MATCH = 'If-Match' as const;
|
|
35
|
+
static readonly IF_MODIFIED_SINCE = 'If-Modified-Since' as const;
|
|
36
|
+
static readonly IF_NONE_MATCH = 'If-None-Match' as const;
|
|
37
|
+
static readonly IF_RANGE = 'If-Range' as const;
|
|
38
|
+
static readonly IF_UNMODIFIED_SINCE = 'If-Unmodified-Since' as const;
|
|
39
|
+
static readonly LAST_MODIFIED = 'Last-Modified' as const;
|
|
40
|
+
static readonly LOCATION = 'Location' as const;
|
|
41
|
+
static readonly MAX_FORWARDS = 'Max-Forwards' as const;
|
|
42
|
+
static readonly PRAGMA = 'Pragma' as const;
|
|
43
|
+
static readonly PROXY_AUTHENTICATE = 'Proxy-Authenticate' as const;
|
|
44
|
+
static readonly PROXY_AUTHORIZATION = 'Proxy-Authorization' as const;
|
|
45
|
+
static readonly RANGE = 'Range' as const;
|
|
46
|
+
static readonly REFERER = 'Referer' as const;
|
|
47
|
+
static readonly RETRY_AFTER = 'Retry-After' as const;
|
|
48
|
+
static readonly SERVER = 'Server' as const;
|
|
49
|
+
static readonly SET_COOKIE = 'Set-Cookie' as const;
|
|
50
|
+
static readonly TE = 'TE' as const;
|
|
51
|
+
static readonly TRAILER = 'Trailer' as const;
|
|
52
|
+
static readonly TRANSFER_ENCODING = 'Transfer-Encoding' as const;
|
|
53
|
+
static readonly UPGRADE = 'Upgrade' as const;
|
|
54
|
+
static readonly USER_AGENT = 'User-Agent' as const;
|
|
55
|
+
static readonly VARY = 'Vary' as const;
|
|
56
|
+
static readonly VIA = 'Via' as const;
|
|
57
|
+
static readonly WARNING = 'Warning' as const;
|
|
58
|
+
static readonly WWW_AUTHENTICATE = 'WWW-Authenticate' as const;
|
|
59
|
+
static readonly X_REQUESTED_WITH = 'X-Requested-With' as const;
|
|
60
|
+
}
|
|
@@ -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
|
+
export class HeaderValue {
|
|
11
|
+
static readonly BEARER = 'Bearer' as const;
|
|
12
|
+
}
|
|
@@ -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
|
+
export class HttpMessageServiceId {
|
|
11
|
+
static readonly ServerRequestContract = 'Valkyrja.Http.Message.Request.ServerRequestContract' as const;
|
|
12
|
+
static readonly ResponseFactoryContract = 'Valkyrja.Http.Message.Response.Factory.ResponseFactoryContract' as const;
|
|
13
|
+
}
|
|
@@ -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 class Port {
|
|
11
|
+
static readonly MIN = 1 as const;
|
|
12
|
+
static readonly MAX = 65535 as const;
|
|
13
|
+
static readonly HTTP = 80 as const;
|
|
14
|
+
static readonly HTTPS = 443 as const;
|
|
15
|
+
|
|
16
|
+
static isValid(port: number): boolean {
|
|
17
|
+
return port >= Port.MIN && port <= Port.MAX;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -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 { HeaderCollectionContract } from '../Header/Collection/Contract/HeaderCollectionContract.js';
|
|
11
|
+
import type { StreamContract } from '../Stream/Contract/StreamContract.js';
|
|
12
|
+
import type { ProtocolVersion } from '../Enum/ProtocolVersion.js';
|
|
13
|
+
|
|
14
|
+
export interface MessageContract {
|
|
15
|
+
getProtocolVersion(): ProtocolVersion;
|
|
16
|
+
withProtocolVersion(version: ProtocolVersion): this;
|
|
17
|
+
getHeaders(): HeaderCollectionContract;
|
|
18
|
+
withHeaders(headers: HeaderCollectionContract): this;
|
|
19
|
+
getBody(): StreamContract;
|
|
20
|
+
withBody(body: StreamContract): this;
|
|
21
|
+
}
|
|
@@ -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
|
+
export enum ProtocolVersion {
|
|
11
|
+
V1 = '1.0',
|
|
12
|
+
V1_1 = '1.1',
|
|
13
|
+
V2 = '2',
|
|
14
|
+
V3 = '3',
|
|
15
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
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 enum RequestMethod {
|
|
11
|
+
GET = 'GET',
|
|
12
|
+
HEAD = 'HEAD',
|
|
13
|
+
POST = 'POST',
|
|
14
|
+
PUT = 'PUT',
|
|
15
|
+
DELETE = 'DELETE',
|
|
16
|
+
CONNECT = 'CONNECT',
|
|
17
|
+
OPTIONS = 'OPTIONS',
|
|
18
|
+
TRACE = 'TRACE',
|
|
19
|
+
PATCH = 'PATCH',
|
|
20
|
+
ANY = 'ANY',
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function allRequestMethods(): RequestMethod[] {
|
|
24
|
+
return [
|
|
25
|
+
RequestMethod.GET,
|
|
26
|
+
RequestMethod.HEAD,
|
|
27
|
+
RequestMethod.POST,
|
|
28
|
+
RequestMethod.PUT,
|
|
29
|
+
RequestMethod.DELETE,
|
|
30
|
+
RequestMethod.CONNECT,
|
|
31
|
+
RequestMethod.OPTIONS,
|
|
32
|
+
RequestMethod.TRACE,
|
|
33
|
+
RequestMethod.PATCH,
|
|
34
|
+
];
|
|
35
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
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 enum SameSite {
|
|
11
|
+
NONE = 'none',
|
|
12
|
+
LAX = 'lax',
|
|
13
|
+
STRICT = 'strict',
|
|
14
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
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 { StatusText } from './StatusText.js';
|
|
11
|
+
|
|
12
|
+
export enum StatusCode {
|
|
13
|
+
CONTINUE = 100,
|
|
14
|
+
SWITCHING_PROTOCOLS = 101,
|
|
15
|
+
PROCESSING = 102,
|
|
16
|
+
EARLY_HINTS = 103,
|
|
17
|
+
OK = 200,
|
|
18
|
+
CREATED = 201,
|
|
19
|
+
ACCEPTED = 202,
|
|
20
|
+
NON_AUTHORITATIVE_INFORMATION = 203,
|
|
21
|
+
NO_CONTENT = 204,
|
|
22
|
+
RESET_CONTENT = 205,
|
|
23
|
+
PARTIAL_CONTENT = 206,
|
|
24
|
+
MULTI_STATUS = 207,
|
|
25
|
+
ALREADY_REPORTED = 208,
|
|
26
|
+
IM_USED = 226,
|
|
27
|
+
MULTIPLE_CHOICES = 300,
|
|
28
|
+
MOVED_PERMANENTLY = 301,
|
|
29
|
+
FOUND = 302,
|
|
30
|
+
SEE_OTHER = 303,
|
|
31
|
+
NOT_MODIFIED = 304,
|
|
32
|
+
USE_PROXY = 305,
|
|
33
|
+
TEMPORARY_REDIRECT = 307,
|
|
34
|
+
PERMANENT_REDIRECT = 308,
|
|
35
|
+
BAD_REQUEST = 400,
|
|
36
|
+
UNAUTHORIZED = 401,
|
|
37
|
+
PAYMENT_REQUIRED = 402,
|
|
38
|
+
FORBIDDEN = 403,
|
|
39
|
+
NOT_FOUND = 404,
|
|
40
|
+
METHOD_NOT_ALLOWED = 405,
|
|
41
|
+
NOT_ACCEPTABLE = 406,
|
|
42
|
+
PROXY_AUTHENTICATION_REQUIRED = 407,
|
|
43
|
+
REQUEST_TIMEOUT = 408,
|
|
44
|
+
CONFLICT = 409,
|
|
45
|
+
GONE = 410,
|
|
46
|
+
LENGTH_REQUIRED = 411,
|
|
47
|
+
PRECONDITION_FAILED = 412,
|
|
48
|
+
PAYLOAD_TOO_LARGE = 413,
|
|
49
|
+
URI_TOO_LONG = 414,
|
|
50
|
+
UNSUPPORTED_MEDIA_TYPE = 415,
|
|
51
|
+
RANGE_NOT_SATISFIABLE = 416,
|
|
52
|
+
EXPECTATION_FAILED = 417,
|
|
53
|
+
I_AM_A_TEAPOT = 418,
|
|
54
|
+
MISDIRECTED_REQUEST = 421,
|
|
55
|
+
UNPROCESSABLE_ENTITY = 422,
|
|
56
|
+
LOCKED = 423,
|
|
57
|
+
FAILED_DEPENDENCY = 424,
|
|
58
|
+
TOO_EARLY = 425,
|
|
59
|
+
UPGRADE_REQUIRED = 426,
|
|
60
|
+
PRECONDITION_REQUIRED = 428,
|
|
61
|
+
TOO_MANY_REQUESTS = 429,
|
|
62
|
+
REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
|
|
63
|
+
UNAVAILABLE_FOR_LEGAL_REASONS = 451,
|
|
64
|
+
INTERNAL_SERVER_ERROR = 500,
|
|
65
|
+
NOT_IMPLEMENTED = 501,
|
|
66
|
+
BAD_GATEWAY = 502,
|
|
67
|
+
SERVICE_UNAVAILABLE = 503,
|
|
68
|
+
GATEWAY_TIMEOUT = 504,
|
|
69
|
+
HTTP_VERSION_NOT_SUPPORTED = 505,
|
|
70
|
+
VARIANT_ALSO_NEGOTIATES = 506,
|
|
71
|
+
INSUFFICIENT_STORAGE = 507,
|
|
72
|
+
LOOP_DETECTED = 508,
|
|
73
|
+
NOT_EXTENDED_OBSOLETED = 510,
|
|
74
|
+
NETWORK_AUTHENTICATION_REQUIRED = 511,
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const statusCodeToText: Record<StatusCode, StatusText> = {
|
|
78
|
+
[StatusCode.CONTINUE]: StatusText.CONTINUE,
|
|
79
|
+
[StatusCode.SWITCHING_PROTOCOLS]: StatusText.SWITCHING_PROTOCOLS,
|
|
80
|
+
[StatusCode.PROCESSING]: StatusText.PROCESSING,
|
|
81
|
+
[StatusCode.EARLY_HINTS]: StatusText.EARLY_HINTS,
|
|
82
|
+
[StatusCode.OK]: StatusText.OK,
|
|
83
|
+
[StatusCode.CREATED]: StatusText.CREATED,
|
|
84
|
+
[StatusCode.ACCEPTED]: StatusText.ACCEPTED,
|
|
85
|
+
[StatusCode.NON_AUTHORITATIVE_INFORMATION]: StatusText.NON_AUTHORITATIVE_INFORMATION,
|
|
86
|
+
[StatusCode.NO_CONTENT]: StatusText.NO_CONTENT,
|
|
87
|
+
[StatusCode.RESET_CONTENT]: StatusText.RESET_CONTENT,
|
|
88
|
+
[StatusCode.PARTIAL_CONTENT]: StatusText.PARTIAL_CONTENT,
|
|
89
|
+
[StatusCode.MULTI_STATUS]: StatusText.MULTI_STATUS,
|
|
90
|
+
[StatusCode.ALREADY_REPORTED]: StatusText.ALREADY_REPORTED,
|
|
91
|
+
[StatusCode.IM_USED]: StatusText.IM_USED,
|
|
92
|
+
[StatusCode.MULTIPLE_CHOICES]: StatusText.MULTIPLE_CHOICES,
|
|
93
|
+
[StatusCode.MOVED_PERMANENTLY]: StatusText.MOVED_PERMANENTLY,
|
|
94
|
+
[StatusCode.FOUND]: StatusText.FOUND,
|
|
95
|
+
[StatusCode.SEE_OTHER]: StatusText.SEE_OTHER,
|
|
96
|
+
[StatusCode.NOT_MODIFIED]: StatusText.NOT_MODIFIED,
|
|
97
|
+
[StatusCode.USE_PROXY]: StatusText.USE_PROXY,
|
|
98
|
+
[StatusCode.TEMPORARY_REDIRECT]: StatusText.TEMPORARY_REDIRECT,
|
|
99
|
+
[StatusCode.PERMANENT_REDIRECT]: StatusText.PERMANENT_REDIRECT,
|
|
100
|
+
[StatusCode.BAD_REQUEST]: StatusText.BAD_REQUEST,
|
|
101
|
+
[StatusCode.UNAUTHORIZED]: StatusText.UNAUTHORIZED,
|
|
102
|
+
[StatusCode.PAYMENT_REQUIRED]: StatusText.PAYMENT_REQUIRED,
|
|
103
|
+
[StatusCode.FORBIDDEN]: StatusText.FORBIDDEN,
|
|
104
|
+
[StatusCode.NOT_FOUND]: StatusText.NOT_FOUND,
|
|
105
|
+
[StatusCode.METHOD_NOT_ALLOWED]: StatusText.METHOD_NOT_ALLOWED,
|
|
106
|
+
[StatusCode.NOT_ACCEPTABLE]: StatusText.NOT_ACCEPTABLE,
|
|
107
|
+
[StatusCode.PROXY_AUTHENTICATION_REQUIRED]: StatusText.PROXY_AUTHENTICATION_REQUIRED,
|
|
108
|
+
[StatusCode.REQUEST_TIMEOUT]: StatusText.REQUEST_TIMEOUT,
|
|
109
|
+
[StatusCode.CONFLICT]: StatusText.CONFLICT,
|
|
110
|
+
[StatusCode.GONE]: StatusText.GONE,
|
|
111
|
+
[StatusCode.LENGTH_REQUIRED]: StatusText.LENGTH_REQUIRED,
|
|
112
|
+
[StatusCode.PRECONDITION_FAILED]: StatusText.PRECONDITION_FAILED,
|
|
113
|
+
[StatusCode.PAYLOAD_TOO_LARGE]: StatusText.PAYLOAD_TOO_LARGE,
|
|
114
|
+
[StatusCode.URI_TOO_LONG]: StatusText.URI_TOO_LONG,
|
|
115
|
+
[StatusCode.UNSUPPORTED_MEDIA_TYPE]: StatusText.UNSUPPORTED_MEDIA_TYPE,
|
|
116
|
+
[StatusCode.RANGE_NOT_SATISFIABLE]: StatusText.RANGE_NOT_SATISFIABLE,
|
|
117
|
+
[StatusCode.EXPECTATION_FAILED]: StatusText.EXPECTATION_FAILED,
|
|
118
|
+
[StatusCode.I_AM_A_TEAPOT]: StatusText.I_AM_A_TEAPOT,
|
|
119
|
+
[StatusCode.MISDIRECTED_REQUEST]: StatusText.MISDIRECTED_REQUEST,
|
|
120
|
+
[StatusCode.UNPROCESSABLE_ENTITY]: StatusText.UNPROCESSABLE_ENTITY,
|
|
121
|
+
[StatusCode.LOCKED]: StatusText.LOCKED,
|
|
122
|
+
[StatusCode.FAILED_DEPENDENCY]: StatusText.FAILED_DEPENDENCY,
|
|
123
|
+
[StatusCode.TOO_EARLY]: StatusText.TOO_EARLY,
|
|
124
|
+
[StatusCode.UPGRADE_REQUIRED]: StatusText.UPGRADE_REQUIRED,
|
|
125
|
+
[StatusCode.PRECONDITION_REQUIRED]: StatusText.PRECONDITION_REQUIRED,
|
|
126
|
+
[StatusCode.TOO_MANY_REQUESTS]: StatusText.TOO_MANY_REQUESTS,
|
|
127
|
+
[StatusCode.REQUEST_HEADER_FIELDS_TOO_LARGE]: StatusText.REQUEST_HEADER_FIELDS_TOO_LARGE,
|
|
128
|
+
[StatusCode.UNAVAILABLE_FOR_LEGAL_REASONS]: StatusText.UNAVAILABLE_FOR_LEGAL_REASONS,
|
|
129
|
+
[StatusCode.INTERNAL_SERVER_ERROR]: StatusText.INTERNAL_SERVER_ERROR,
|
|
130
|
+
[StatusCode.NOT_IMPLEMENTED]: StatusText.NOT_IMPLEMENTED,
|
|
131
|
+
[StatusCode.BAD_GATEWAY]: StatusText.BAD_GATEWAY,
|
|
132
|
+
[StatusCode.SERVICE_UNAVAILABLE]: StatusText.SERVICE_UNAVAILABLE,
|
|
133
|
+
[StatusCode.GATEWAY_TIMEOUT]: StatusText.GATEWAY_TIMEOUT,
|
|
134
|
+
[StatusCode.HTTP_VERSION_NOT_SUPPORTED]: StatusText.HTTP_VERSION_NOT_SUPPORTED,
|
|
135
|
+
[StatusCode.VARIANT_ALSO_NEGOTIATES]: StatusText.VARIANT_ALSO_NEGOTIATES,
|
|
136
|
+
[StatusCode.INSUFFICIENT_STORAGE]: StatusText.INSUFFICIENT_STORAGE,
|
|
137
|
+
[StatusCode.LOOP_DETECTED]: StatusText.LOOP_DETECTED,
|
|
138
|
+
[StatusCode.NOT_EXTENDED_OBSOLETED]: StatusText.NOT_EXTENDED_OBSOLETED,
|
|
139
|
+
[StatusCode.NETWORK_AUTHENTICATION_REQUIRED]: StatusText.NETWORK_AUTHENTICATION_REQUIRED,
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
export function statusCodeIsRedirect(code: StatusCode): boolean {
|
|
143
|
+
return code >= StatusCode.MULTIPLE_CHOICES && code < StatusCode.BAD_REQUEST;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export function statusCodeIsError(code: StatusCode): boolean {
|
|
147
|
+
return code >= StatusCode.INTERNAL_SERVER_ERROR;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export function statusCodeAsPhrase(code: StatusCode): StatusText {
|
|
151
|
+
return statusCodeToText[code];
|
|
152
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
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 enum StatusText {
|
|
11
|
+
CONTINUE = 'Continue',
|
|
12
|
+
SWITCHING_PROTOCOLS = 'Switching Protocols',
|
|
13
|
+
PROCESSING = 'Processing',
|
|
14
|
+
EARLY_HINTS = 'Early Hints',
|
|
15
|
+
OK = 'OK',
|
|
16
|
+
CREATED = 'Created',
|
|
17
|
+
ACCEPTED = 'Accepted',
|
|
18
|
+
NON_AUTHORITATIVE_INFORMATION = 'Non-Authoritative Information',
|
|
19
|
+
NO_CONTENT = 'No Content',
|
|
20
|
+
RESET_CONTENT = 'Reset Content',
|
|
21
|
+
PARTIAL_CONTENT = 'Partial Content',
|
|
22
|
+
MULTI_STATUS = 'Multi-Status',
|
|
23
|
+
ALREADY_REPORTED = 'Already Reported',
|
|
24
|
+
IM_USED = 'IM Used',
|
|
25
|
+
MULTIPLE_CHOICES = 'Multiple Choices',
|
|
26
|
+
MOVED_PERMANENTLY = 'Moved Permanently',
|
|
27
|
+
FOUND = 'Found',
|
|
28
|
+
SEE_OTHER = 'See Other',
|
|
29
|
+
NOT_MODIFIED = 'Not Modified',
|
|
30
|
+
USE_PROXY = 'Use Proxy',
|
|
31
|
+
TEMPORARY_REDIRECT = 'Temporary Redirect',
|
|
32
|
+
PERMANENT_REDIRECT = 'Permanent Redirect',
|
|
33
|
+
BAD_REQUEST = 'Bad Request',
|
|
34
|
+
UNAUTHORIZED = 'Unauthorized',
|
|
35
|
+
PAYMENT_REQUIRED = 'Payment Required',
|
|
36
|
+
FORBIDDEN = 'Forbidden',
|
|
37
|
+
NOT_FOUND = 'Not Found',
|
|
38
|
+
METHOD_NOT_ALLOWED = 'Method Not Allowed',
|
|
39
|
+
NOT_ACCEPTABLE = 'Not Acceptable',
|
|
40
|
+
PROXY_AUTHENTICATION_REQUIRED = 'Proxy Authentication Required',
|
|
41
|
+
REQUEST_TIMEOUT = 'Request Timeout',
|
|
42
|
+
CONFLICT = 'Conflict',
|
|
43
|
+
GONE = 'Gone',
|
|
44
|
+
LENGTH_REQUIRED = 'Length Required',
|
|
45
|
+
PRECONDITION_FAILED = 'Precondition Failed',
|
|
46
|
+
PAYLOAD_TOO_LARGE = 'Payload Too Large',
|
|
47
|
+
URI_TOO_LONG = 'URI Too Long',
|
|
48
|
+
UNSUPPORTED_MEDIA_TYPE = 'Unsupported Media Type',
|
|
49
|
+
RANGE_NOT_SATISFIABLE = 'Range Not Satisfiable',
|
|
50
|
+
EXPECTATION_FAILED = 'Expectation Failed',
|
|
51
|
+
I_AM_A_TEAPOT = 'I Am A Teapot',
|
|
52
|
+
MISDIRECTED_REQUEST = 'Misdirected Request',
|
|
53
|
+
UNPROCESSABLE_ENTITY = 'Unprocessable Entity',
|
|
54
|
+
LOCKED = 'Locked',
|
|
55
|
+
FAILED_DEPENDENCY = 'Failed Dependency',
|
|
56
|
+
TOO_EARLY = 'Too Early',
|
|
57
|
+
UPGRADE_REQUIRED = 'Upgrade Required',
|
|
58
|
+
PRECONDITION_REQUIRED = 'Precondition Required',
|
|
59
|
+
TOO_MANY_REQUESTS = 'Too Many Requests',
|
|
60
|
+
REQUEST_HEADER_FIELDS_TOO_LARGE = 'Request Header Fields Too Large',
|
|
61
|
+
UNAVAILABLE_FOR_LEGAL_REASONS = 'Unavailable For Legal Reasons',
|
|
62
|
+
INTERNAL_SERVER_ERROR = 'Internal Server Error',
|
|
63
|
+
NOT_IMPLEMENTED = 'Not Implemented',
|
|
64
|
+
BAD_GATEWAY = 'Bad Gateway',
|
|
65
|
+
SERVICE_UNAVAILABLE = 'Service Unavailable',
|
|
66
|
+
GATEWAY_TIMEOUT = 'Gateway Timeout',
|
|
67
|
+
HTTP_VERSION_NOT_SUPPORTED = 'HTTP Version Not Supported',
|
|
68
|
+
VARIANT_ALSO_NEGOTIATES = 'Variant Also Negotiates',
|
|
69
|
+
INSUFFICIENT_STORAGE = 'Insufficient Storage',
|
|
70
|
+
LOOP_DETECTED = 'Loop Detected',
|
|
71
|
+
NOT_EXTENDED_OBSOLETED = 'Not Extended',
|
|
72
|
+
NETWORK_AUTHENTICATION_REQUIRED = 'Network Authentication Required',
|
|
73
|
+
}
|
|
@@ -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
|
+
import type { UploadedFileContract } from '../../Contract/UploadedFileContract.js';
|
|
11
|
+
|
|
12
|
+
export interface UploadedFileCollectionContract {
|
|
13
|
+
has(key: string): boolean;
|
|
14
|
+
get(key: string): UploadedFileContract;
|
|
15
|
+
getAll(): Record<string, UploadedFileContract>;
|
|
16
|
+
getOnly(...keys: string[]): Record<string, UploadedFileContract>;
|
|
17
|
+
getAllExcept(...keys: string[]): Record<string, UploadedFileContract>;
|
|
18
|
+
with(collection: Record<string, UploadedFileContract>): this;
|
|
19
|
+
withAdded(collection: Record<string, UploadedFileContract>): this;
|
|
20
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
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 { UploadedFileCollectionContract } from './Contract/UploadedFileCollectionContract.js';
|
|
11
|
+
import type { UploadedFileContract } from '../Contract/UploadedFileContract.js';
|
|
12
|
+
import { UploadedFileInvalidKeyException } from '../Throwable/Exception/UploadedFileInvalidKeyException.js';
|
|
13
|
+
import { UploadedFileInvalidParamException } from '../Throwable/Exception/UploadedFileInvalidParamException.js';
|
|
14
|
+
import { ObjectFactory } from '../../../../Type/Object/Factory/ObjectFactory.js';
|
|
15
|
+
|
|
16
|
+
export class UploadedFileCollection implements UploadedFileCollectionContract {
|
|
17
|
+
protected files: Record<string, UploadedFileContract>;
|
|
18
|
+
|
|
19
|
+
constructor(files: Record<string, UploadedFileContract> = {}) {
|
|
20
|
+
this.validateFiles(files);
|
|
21
|
+
this.files = files;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
has(key: string): boolean {
|
|
25
|
+
return key in this.files;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
get(key: string): UploadedFileContract {
|
|
29
|
+
const file = this.files[key];
|
|
30
|
+
if (file === undefined) {
|
|
31
|
+
throw new UploadedFileInvalidKeyException(`The provided key '${key}' does not exist in the collection`);
|
|
32
|
+
}
|
|
33
|
+
return file;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
getAll(): Record<string, UploadedFileContract> {
|
|
37
|
+
return { ...this.files };
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
getOnly(...keys: string[]): Record<string, UploadedFileContract> {
|
|
41
|
+
const result: Record<string, UploadedFileContract> = {};
|
|
42
|
+
for (const [k, v] of Object.entries(this.files)) {
|
|
43
|
+
if (keys.includes(k)) {
|
|
44
|
+
result[k] = v;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
getAllExcept(...keys: string[]): Record<string, UploadedFileContract> {
|
|
51
|
+
const result: Record<string, UploadedFileContract> = {};
|
|
52
|
+
for (const [k, v] of Object.entries(this.files)) {
|
|
53
|
+
if (!keys.includes(k)) {
|
|
54
|
+
result[k] = v;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
with(collection: Record<string, UploadedFileContract>): this {
|
|
61
|
+
this.validateFiles(collection);
|
|
62
|
+
const clone = ObjectFactory.clone(this);
|
|
63
|
+
clone.files = collection;
|
|
64
|
+
return clone;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
withAdded(collection: Record<string, UploadedFileContract>): this {
|
|
68
|
+
this.validateFiles(collection);
|
|
69
|
+
const clone = ObjectFactory.clone(this);
|
|
70
|
+
clone.files = { ...this.files, ...collection };
|
|
71
|
+
return clone;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
protected validateFiles(files: Record<string, unknown>): void {
|
|
75
|
+
for (const [key, file] of Object.entries(files)) {
|
|
76
|
+
if (file === null || typeof file !== 'object' || !('getStream' in file)) {
|
|
77
|
+
throw new UploadedFileInvalidParamException(
|
|
78
|
+
`Value for key '${key}' must be an UploadedFileContract instance`,
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -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 class UploadErrorExceptionMessage {
|
|
11
|
+
static readonly FORM_SIZE_MESSAGE = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
|
|
12
|
+
static readonly INI_SIZE_MESSAGE =
|
|
13
|
+
'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
|
|
14
|
+
static readonly PARTIAL_MESSAGE = 'The uploaded file was only partially uploaded';
|
|
15
|
+
static readonly NO_FILE_MESSAGE = 'No file was uploaded';
|
|
16
|
+
static readonly NO_TMP_DIR_MESSAGE = 'Missing a temporary folder';
|
|
17
|
+
static readonly CANT_WRITE_MESSAGE = 'Failed to write file to disk';
|
|
18
|
+
static readonly EXTENSION_MESSAGE = 'A PHP extension stopped the file upload';
|
|
19
|
+
static readonly OK_MESSAGE = 'OK is not a valid upload error';
|
|
20
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
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 { StreamContract } from '../../Stream/Contract/StreamContract.js';
|
|
11
|
+
|
|
12
|
+
export interface UploadedFileContract {
|
|
13
|
+
getStream(): StreamContract;
|
|
14
|
+
moveTo(targetPath: string): Promise<void>;
|
|
15
|
+
hasSize(): boolean;
|
|
16
|
+
getSize(): number;
|
|
17
|
+
getError(): Error | null;
|
|
18
|
+
hasClientFilename(): boolean;
|
|
19
|
+
getClientFilename(): string;
|
|
20
|
+
hasClientMediaType(): boolean;
|
|
21
|
+
getClientMediaType(): string;
|
|
22
|
+
}
|
|
@@ -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 enum UploadError {
|
|
11
|
+
OK = 0,
|
|
12
|
+
INI_SIZE = 1,
|
|
13
|
+
FORM_SIZE = 2,
|
|
14
|
+
PARTIAL = 3,
|
|
15
|
+
NO_FILE = 4,
|
|
16
|
+
NO_TMP_DIR = 6,
|
|
17
|
+
CANT_WRITE = 7,
|
|
18
|
+
EXTENSION = 8,
|
|
19
|
+
}
|
|
@@ -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 { UploadedFileContract } from '../Contract/UploadedFileContract.js';
|
|
11
|
+
import type { StreamContract } from '../../Stream/Contract/StreamContract.js';
|
|
12
|
+
import { UploadedFile } from '../UploadedFile.js';
|
|
13
|
+
|
|
14
|
+
export interface UploadedFileData {
|
|
15
|
+
file?: string;
|
|
16
|
+
stream?: StreamContract;
|
|
17
|
+
error?: Error;
|
|
18
|
+
size?: number;
|
|
19
|
+
fileName?: string;
|
|
20
|
+
mediaType?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export abstract class UploadedFileFactory {
|
|
24
|
+
static create(data: UploadedFileData): UploadedFileContract {
|
|
25
|
+
return new UploadedFile(
|
|
26
|
+
data.file ?? null,
|
|
27
|
+
data.stream ?? null,
|
|
28
|
+
data.error ?? null,
|
|
29
|
+
data.size ?? 0,
|
|
30
|
+
data.fileName ?? '',
|
|
31
|
+
data.mediaType ?? '',
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -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 { HttpMessageThrowable } from '../../../Throwable/Contract/HttpMessageThrowable.js';
|
|
11
|
+
|
|
12
|
+
export type UploadedFileThrowable = HttpMessageThrowable;
|