@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.
Files changed (498) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +136 -0
  3. package/package.json +63 -0
  4. package/src/Valkyrja/Application/Constant/ApplicationInfo.ts +26 -0
  5. package/src/Valkyrja/Application/Constant/ApplicationServiceId.ts +16 -0
  6. package/src/Valkyrja/Application/Data/CliConfig.ts +51 -0
  7. package/src/Valkyrja/Application/Data/Config.ts +31 -0
  8. package/src/Valkyrja/Application/Data/Contract/CliConfigContract.ts +27 -0
  9. package/src/Valkyrja/Application/Data/Contract/ConfigContract.ts +31 -0
  10. package/src/Valkyrja/Application/Data/Contract/HttpConfigContract.ts +26 -0
  11. package/src/Valkyrja/Application/Data/HttpConfig.ts +41 -0
  12. package/src/Valkyrja/Application/Directory/Directory.ts +80 -0
  13. package/src/Valkyrja/Application/Entry/Abstract/App.ts +117 -0
  14. package/src/Valkyrja/Application/Entry/Abstract/WorkerHttp.ts +83 -0
  15. package/src/Valkyrja/Application/Entry/Cli.ts +34 -0
  16. package/src/Valkyrja/Application/Entry/Http.ts +41 -0
  17. package/src/Valkyrja/Application/Kernel/ChildApplication.ts +63 -0
  18. package/src/Valkyrja/Application/Kernel/Contract/ApplicationContract.ts +34 -0
  19. package/src/Valkyrja/Application/Kernel/Valkyrja.ts +141 -0
  20. package/src/Valkyrja/Application/Provider/ApplicationComponentProvider.ts +39 -0
  21. package/src/Valkyrja/Application/Provider/CliApplicationComponentProvider.ts +30 -0
  22. package/src/Valkyrja/Application/Provider/CliWithHttpApplicationComponentProvider.ts +32 -0
  23. package/src/Valkyrja/Application/Provider/Contract/ComponentProviderContract.ts +28 -0
  24. package/src/Valkyrja/Application/Provider/Contract/PublishableComponentProviderContract.ts +20 -0
  25. package/src/Valkyrja/Application/Provider/HttpApplicationComponentProvider.ts +20 -0
  26. package/src/Valkyrja/Application/Throwable/Contract/ApplicationThrowable.ts +12 -0
  27. package/src/Valkyrja/Application/Throwable/Exception/Abstract/ApplicationInvalidArgumentException.ts +16 -0
  28. package/src/Valkyrja/Application/Throwable/Exception/Abstract/ApplicationRuntimeException.ts +14 -0
  29. package/src/Valkyrja/Cli/Interaction/Argument/Argument.ts +25 -0
  30. package/src/Valkyrja/Cli/Interaction/Argument/Contract/ArgumentContract.ts +19 -0
  31. package/src/Valkyrja/Cli/Interaction/Argument/Factory/ArgumentFactory.ts +16 -0
  32. package/src/Valkyrja/Cli/Interaction/Constant/CliInteractionServiceId.ts +16 -0
  33. package/src/Valkyrja/Cli/Interaction/Data/CliInteractionConfig.ts +18 -0
  34. package/src/Valkyrja/Cli/Interaction/Data/Contract/CliInteractionConfigContract.ts +20 -0
  35. package/src/Valkyrja/Cli/Interaction/Enum/BackgroundColor.ts +33 -0
  36. package/src/Valkyrja/Cli/Interaction/Enum/ExitCode.ts +30 -0
  37. package/src/Valkyrja/Cli/Interaction/Enum/OptionType.ts +13 -0
  38. package/src/Valkyrja/Cli/Interaction/Enum/Style.ts +33 -0
  39. package/src/Valkyrja/Cli/Interaction/Enum/TextColor.ts +33 -0
  40. package/src/Valkyrja/Cli/Interaction/Format/BackgroundColorFormat.ts +17 -0
  41. package/src/Valkyrja/Cli/Interaction/Format/Contract/FormatContract.ts +21 -0
  42. package/src/Valkyrja/Cli/Interaction/Format/Format.ts +38 -0
  43. package/src/Valkyrja/Cli/Interaction/Format/StyleFormat.ts +17 -0
  44. package/src/Valkyrja/Cli/Interaction/Format/TextColorFormat.ts +17 -0
  45. package/src/Valkyrja/Cli/Interaction/Formatter/Contract/FormatterContract.ts +22 -0
  46. package/src/Valkyrja/Cli/Interaction/Formatter/ErrorFormatter.ts +20 -0
  47. package/src/Valkyrja/Cli/Interaction/Formatter/Formatter.ts +46 -0
  48. package/src/Valkyrja/Cli/Interaction/Formatter/HighlightedTextFormatter.ts +18 -0
  49. package/src/Valkyrja/Cli/Interaction/Formatter/QuestionFormatter.ts +18 -0
  50. package/src/Valkyrja/Cli/Interaction/Formatter/SuccessFormatter.ts +20 -0
  51. package/src/Valkyrja/Cli/Interaction/Formatter/WarningFormatter.ts +20 -0
  52. package/src/Valkyrja/Cli/Interaction/Input/Contract/InputContract.ts +36 -0
  53. package/src/Valkyrja/Cli/Interaction/Input/Factory/InputFactory.ts +47 -0
  54. package/src/Valkyrja/Cli/Interaction/Input/Input.ts +106 -0
  55. package/src/Valkyrja/Cli/Interaction/Message/Answer.ts +130 -0
  56. package/src/Valkyrja/Cli/Interaction/Message/Banner.ts +41 -0
  57. package/src/Valkyrja/Cli/Interaction/Message/Contract/AnswerContract.ts +32 -0
  58. package/src/Valkyrja/Cli/Interaction/Message/Contract/MessageContract.ts +26 -0
  59. package/src/Valkyrja/Cli/Interaction/Message/Contract/ProgressContract.ts +23 -0
  60. package/src/Valkyrja/Cli/Interaction/Message/Contract/QuestionContract.ts +26 -0
  61. package/src/Valkyrja/Cli/Interaction/Message/ErrorMessage.ts +17 -0
  62. package/src/Valkyrja/Cli/Interaction/Message/Header.ts +111 -0
  63. package/src/Valkyrja/Cli/Interaction/Message/Message.ts +64 -0
  64. package/src/Valkyrja/Cli/Interaction/Message/Messages.ts +28 -0
  65. package/src/Valkyrja/Cli/Interaction/Message/NewLine.ts +17 -0
  66. package/src/Valkyrja/Cli/Interaction/Message/Progress.ts +44 -0
  67. package/src/Valkyrja/Cli/Interaction/Message/Question.ts +91 -0
  68. package/src/Valkyrja/Cli/Interaction/Message/SuccessMessage.ts +17 -0
  69. package/src/Valkyrja/Cli/Interaction/Message/WarningMessage.ts +17 -0
  70. package/src/Valkyrja/Cli/Interaction/Option/Contract/OptionContract.ts +27 -0
  71. package/src/Valkyrja/Cli/Interaction/Option/Factory/OptionFactory.ts +60 -0
  72. package/src/Valkyrja/Cli/Interaction/Option/Option.ts +61 -0
  73. package/src/Valkyrja/Cli/Interaction/Output/Contract/EmptyOutputContract.ts +18 -0
  74. package/src/Valkyrja/Cli/Interaction/Output/Contract/FileOutputContract.ts +21 -0
  75. package/src/Valkyrja/Cli/Interaction/Output/Contract/OutputContract.ts +41 -0
  76. package/src/Valkyrja/Cli/Interaction/Output/Contract/PlainOutputContract.ts +18 -0
  77. package/src/Valkyrja/Cli/Interaction/Output/Contract/StreamOutputContract.ts +21 -0
  78. package/src/Valkyrja/Cli/Interaction/Output/EmptyOutput.ts +18 -0
  79. package/src/Valkyrja/Cli/Interaction/Output/Factory/Contract/OutputFactoryContract.ts +38 -0
  80. package/src/Valkyrja/Cli/Interaction/Output/Factory/OutputFactory.ts +88 -0
  81. package/src/Valkyrja/Cli/Interaction/Output/FileOutput.ts +41 -0
  82. package/src/Valkyrja/Cli/Interaction/Output/Output.ts +163 -0
  83. package/src/Valkyrja/Cli/Interaction/Output/PlainOutput.ts +18 -0
  84. package/src/Valkyrja/Cli/Interaction/Output/StreamOutput.ts +41 -0
  85. package/src/Valkyrja/Cli/Interaction/Provider/CliInteractionComponentProvider.ts +39 -0
  86. package/src/Valkyrja/Cli/Interaction/Provider/CliInteractionServiceProvider.ts +46 -0
  87. package/src/Valkyrja/Cli/Interaction/Throwable/Contract/CliInteractionThrowable.ts +12 -0
  88. package/src/Valkyrja/Cli/Interaction/Throwable/Exception/Abstract/CliInteractionInvalidArgumentException.ts +16 -0
  89. package/src/Valkyrja/Cli/Interaction/Throwable/Exception/Abstract/CliInteractionRuntimeException.ts +14 -0
  90. package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionExpectedQuestionOutputException.ts +12 -0
  91. package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionInvalidEmptyValueException.ts +12 -0
  92. package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionInvalidNonEmptyValueException.ts +12 -0
  93. package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionInvalidOptionNameException.ts +12 -0
  94. package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionNoFormatterException.ts +12 -0
  95. package/src/Valkyrja/Cli/Interaction/Throwable/Exception/CliInteractionNoValidationCallableException.ts +12 -0
  96. package/src/Valkyrja/Cli/Interaction/Writer/Contract/WriterContract.ts +22 -0
  97. package/src/Valkyrja/Cli/Interaction/Writer/QuestionWriter.ts +86 -0
  98. package/src/Valkyrja/Cli/Middleware/Constant/CliMiddlewareServiceId.ts +22 -0
  99. package/src/Valkyrja/Cli/Middleware/Contract/ExitedMiddlewareContract.ts +22 -0
  100. package/src/Valkyrja/Cli/Middleware/Contract/InputReceivedMiddlewareContract.ts +22 -0
  101. package/src/Valkyrja/Cli/Middleware/Contract/RouteDispatchedMiddlewareContract.ts +28 -0
  102. package/src/Valkyrja/Cli/Middleware/Contract/RouteMatchedMiddlewareContract.ts +27 -0
  103. package/src/Valkyrja/Cli/Middleware/Contract/RouteNotMatchedMiddlewareContract.ts +26 -0
  104. package/src/Valkyrja/Cli/Middleware/Contract/ThrowableCaughtMiddlewareContract.ts +27 -0
  105. package/src/Valkyrja/Cli/Middleware/Handler/Abstract/Handler.ts +48 -0
  106. package/src/Valkyrja/Cli/Middleware/Handler/Contract/ExitedHandlerContract.ts +22 -0
  107. package/src/Valkyrja/Cli/Middleware/Handler/Contract/HandlerContract.ts +33 -0
  108. package/src/Valkyrja/Cli/Middleware/Handler/Contract/InputReceivedHandlerContract.ts +22 -0
  109. package/src/Valkyrja/Cli/Middleware/Handler/Contract/RouteDispatchedHandlerContract.ts +23 -0
  110. package/src/Valkyrja/Cli/Middleware/Handler/Contract/RouteMatchedHandlerContract.ts +23 -0
  111. package/src/Valkyrja/Cli/Middleware/Handler/Contract/RouteNotMatchedHandlerContract.ts +22 -0
  112. package/src/Valkyrja/Cli/Middleware/Handler/Contract/ThrowableCaughtHandlerContract.ts +22 -0
  113. package/src/Valkyrja/Cli/Middleware/Handler/ExitedHandler.ts +24 -0
  114. package/src/Valkyrja/Cli/Middleware/Handler/InputReceivedHandler.ts +24 -0
  115. package/src/Valkyrja/Cli/Middleware/Handler/RouteDispatchedHandler.ts +25 -0
  116. package/src/Valkyrja/Cli/Middleware/Handler/RouteMatchedHandler.ts +25 -0
  117. package/src/Valkyrja/Cli/Middleware/Handler/RouteNotMatchedHandler.ts +24 -0
  118. package/src/Valkyrja/Cli/Middleware/Handler/ThrowableCaughtHandler.ts +29 -0
  119. package/src/Valkyrja/Cli/Middleware/Provider/CliMiddlewareComponentProvider.ts +39 -0
  120. package/src/Valkyrja/Cli/Middleware/Provider/CliMiddlewareServiceProvider.ts +119 -0
  121. package/src/Valkyrja/Cli/Middleware/Throwable/Contract/CliMiddlewareThrowable.ts +12 -0
  122. package/src/Valkyrja/Cli/Middleware/Throwable/Exception/Abstract/CliMiddlewareInvalidArgumentException.ts +16 -0
  123. package/src/Valkyrja/Cli/Middleware/Throwable/Exception/Abstract/CliMiddlewareRuntimeException.ts +14 -0
  124. package/src/Valkyrja/Cli/Routing/Collection/Contract/RouteCollectionContract.ts +26 -0
  125. package/src/Valkyrja/Cli/Routing/Collection/RouteCollection.ts +60 -0
  126. package/src/Valkyrja/Cli/Routing/Collector/Contract/RouteCollectorContract.ts +20 -0
  127. package/src/Valkyrja/Cli/Routing/Constant/CliRoutingServiceId.ts +16 -0
  128. package/src/Valkyrja/Cli/Routing/Constant/OptionName.ts +17 -0
  129. package/src/Valkyrja/Cli/Routing/Constant/OptionShortName.ts +17 -0
  130. package/src/Valkyrja/Cli/Routing/Controller/Controller.ts +18 -0
  131. package/src/Valkyrja/Cli/Routing/Data/Abstract/Parameter.ts +91 -0
  132. package/src/Valkyrja/Cli/Routing/Data/ArgumentParameter.ts +99 -0
  133. package/src/Valkyrja/Cli/Routing/Data/CliRoutingData.ts +14 -0
  134. package/src/Valkyrja/Cli/Routing/Data/Contract/ArgumentParameterContract.ts +29 -0
  135. package/src/Valkyrja/Cli/Routing/Data/Contract/CliRoutingConfigContract.ts +18 -0
  136. package/src/Valkyrja/Cli/Routing/Data/Contract/OptionParameterContract.ts +41 -0
  137. package/src/Valkyrja/Cli/Routing/Data/Contract/ParameterContract.ts +32 -0
  138. package/src/Valkyrja/Cli/Routing/Data/Contract/RouteContract.ts +57 -0
  139. package/src/Valkyrja/Cli/Routing/Data/Option/HelpOptionParameter.ts +30 -0
  140. package/src/Valkyrja/Cli/Routing/Data/Option/NoInteractionOptionParameter.ts +30 -0
  141. package/src/Valkyrja/Cli/Routing/Data/Option/QuietOptionParameter.ts +30 -0
  142. package/src/Valkyrja/Cli/Routing/Data/Option/SilentOptionParameter.ts +30 -0
  143. package/src/Valkyrja/Cli/Routing/Data/Option/VersionOptionParameter.ts +30 -0
  144. package/src/Valkyrja/Cli/Routing/Data/OptionParameter.ts +188 -0
  145. package/src/Valkyrja/Cli/Routing/Data/Route.ts +211 -0
  146. package/src/Valkyrja/Cli/Routing/Dispatcher/Contract/RouterContract.ts +23 -0
  147. package/src/Valkyrja/Cli/Routing/Dispatcher/Router.ts +155 -0
  148. package/src/Valkyrja/Cli/Routing/Enum/ArgumentMode.ts +13 -0
  149. package/src/Valkyrja/Cli/Routing/Enum/ArgumentValueMode.ts +13 -0
  150. package/src/Valkyrja/Cli/Routing/Enum/OptionMode.ts +13 -0
  151. package/src/Valkyrja/Cli/Routing/Enum/OptionValueMode.ts +14 -0
  152. package/src/Valkyrja/Cli/Routing/Provider/CliRoutingCliRouteProvider.ts +111 -0
  153. package/src/Valkyrja/Cli/Routing/Provider/CliRoutingComponentProvider.ts +40 -0
  154. package/src/Valkyrja/Cli/Routing/Provider/CliRoutingServiceProvider.ts +88 -0
  155. package/src/Valkyrja/Cli/Routing/Provider/Contract/CliRouteProviderContract.ts +20 -0
  156. package/src/Valkyrja/Cli/Routing/Throwable/Contract/CliRoutingThrowable.ts +12 -0
  157. package/src/Valkyrja/Cli/Routing/Throwable/Exception/Abstract/CliRoutingInvalidArgumentException.ts +16 -0
  158. package/src/Valkyrja/Cli/Routing/Throwable/Exception/Abstract/CliRoutingRuntimeException.ts +14 -0
  159. package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingArgumentValuesValidationException.ts +12 -0
  160. package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingInvalidArgumentNameException.ts +12 -0
  161. package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingInvalidHelpTextCallableException.ts +12 -0
  162. package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingInvalidOptionNameException.ts +12 -0
  163. package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingInvalidOptionWithValueException.ts +12 -0
  164. package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingInvalidRouteNameException.ts +12 -0
  165. package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingNoCastException.ts +12 -0
  166. package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingNoHelpTextException.ts +12 -0
  167. package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingNoOutputDispatchException.ts +12 -0
  168. package/src/Valkyrja/Cli/Routing/Throwable/Exception/CliRoutingOptionValuesValidationException.ts +12 -0
  169. package/src/Valkyrja/Cli/Server/Command/HelpCommand.ts +313 -0
  170. package/src/Valkyrja/Cli/Server/Command/ListBashCommand.ts +44 -0
  171. package/src/Valkyrja/Cli/Server/Command/ListCommand.ts +98 -0
  172. package/src/Valkyrja/Cli/Server/Command/VersionCommand.ts +34 -0
  173. package/src/Valkyrja/Cli/Server/Constant/CliServerServiceId.ts +28 -0
  174. package/src/Valkyrja/Cli/Server/Constant/CommandName.ts +16 -0
  175. package/src/Valkyrja/Cli/Server/Data/Contract/CliHelpCommandConfigContract.ts +20 -0
  176. package/src/Valkyrja/Cli/Server/Data/Contract/CliNoInteractionConfigContract.ts +19 -0
  177. package/src/Valkyrja/Cli/Server/Data/Contract/CliQuietInteractionConfigContract.ts +19 -0
  178. package/src/Valkyrja/Cli/Server/Data/Contract/CliSilentInteractionConfigContract.ts +19 -0
  179. package/src/Valkyrja/Cli/Server/Data/Contract/CliVersionCommandConfigContract.ts +20 -0
  180. package/src/Valkyrja/Cli/Server/Handler/Contract/InputHandlerContract.ts +17 -0
  181. package/src/Valkyrja/Cli/Server/Handler/InputHandler.ts +112 -0
  182. package/src/Valkyrja/Cli/Server/Middleware/InputReceived/CheckForHelpOptionsMiddleware.ts +30 -0
  183. package/src/Valkyrja/Cli/Server/Middleware/InputReceived/CheckForVersionOptionsMiddleware.ts +29 -0
  184. package/src/Valkyrja/Cli/Server/Middleware/InputReceived/CheckGlobalInteractionOptionsMiddleware.ts +52 -0
  185. package/src/Valkyrja/Cli/Server/Middleware/RouteNotMatched/CheckCommandForTypoMiddleware.ts +119 -0
  186. package/src/Valkyrja/Cli/Server/Middleware/ThrowableCaught/LogThrowableCaughtMiddleware.ts +32 -0
  187. package/src/Valkyrja/Cli/Server/Middleware/ThrowableCaught/OutputThrowableCaughtMiddleware.ts +57 -0
  188. package/src/Valkyrja/Cli/Server/Provider/CliServerComponentProvider.ts +39 -0
  189. package/src/Valkyrja/Cli/Server/Provider/CliServerServiceProvider.ts +269 -0
  190. package/src/Valkyrja/Cli/Server/Support/Exiter.ts +32 -0
  191. package/src/Valkyrja/Cli/Server/Throwable/Contract/CliServerThrowable.ts +12 -0
  192. package/src/Valkyrja/Cli/Server/Throwable/Exception/Abstract/CliServerInvalidArgumentException.ts +16 -0
  193. package/src/Valkyrja/Cli/Server/Throwable/Exception/Abstract/CliServerRuntimeException.ts +14 -0
  194. package/src/Valkyrja/Cli/Throwable/Contract/CliThrowable.ts +12 -0
  195. package/src/Valkyrja/Cli/Throwable/Exception/Abstract/CliInvalidArgumentException.ts +14 -0
  196. package/src/Valkyrja/Cli/Throwable/Exception/Abstract/CliRuntimeException.ts +14 -0
  197. package/src/Valkyrja/Container/Constant/ContainerServiceId.ts +13 -0
  198. package/src/Valkyrja/Container/Data/ContainerData.ts +31 -0
  199. package/src/Valkyrja/Container/Enum/InvalidReferenceMode.ts +13 -0
  200. package/src/Valkyrja/Container/Manager/ChildContainer.ts +69 -0
  201. package/src/Valkyrja/Container/Manager/Container.ts +244 -0
  202. package/src/Valkyrja/Container/Manager/Contract/ContainerContract.ts +31 -0
  203. package/src/Valkyrja/Container/Manager/Contract/ProvidersAwareContract.ts +17 -0
  204. package/src/Valkyrja/Container/Provider/ContainerComponentProvider.ts +39 -0
  205. package/src/Valkyrja/Container/Provider/ContainerServiceProvider.ts +33 -0
  206. package/src/Valkyrja/Container/Provider/Contract/ServiceProviderContract.ts +20 -0
  207. package/src/Valkyrja/Container/Throwable/Contract/ContainerThrowable.ts +12 -0
  208. package/src/Valkyrja/Container/Throwable/Exception/Abstract/ContainerInvalidArgumentException.ts +16 -0
  209. package/src/Valkyrja/Container/Throwable/Exception/Abstract/ContainerRuntimeException.ts +14 -0
  210. package/src/Valkyrja/Container/Throwable/Exception/ContainerInvalidPublishCallbackException.ts +12 -0
  211. package/src/Valkyrja/Container/Throwable/Exception/ContainerInvalidReferenceException.ts +17 -0
  212. package/src/Valkyrja/Event/Constant/EventServiceId.ts +12 -0
  213. package/src/Valkyrja/Event/Data/Contract/ListenerContract.ts +25 -0
  214. package/src/Valkyrja/Event/Data/EventData.ts +15 -0
  215. package/src/Valkyrja/Event/Provider/Contract/ListenerProviderContract.ts +20 -0
  216. package/src/Valkyrja/Http/Client/Manager/Contract/ClientContract.ts +15 -0
  217. package/src/Valkyrja/Http/Client/Manager/LogClient.ts +28 -0
  218. package/src/Valkyrja/Http/Client/Manager/NullClient.ts +20 -0
  219. package/src/Valkyrja/Http/Client/Throwable/Contract/HttpClientThrowable.ts +12 -0
  220. package/src/Valkyrja/Http/Client/Throwable/Exception/Abstract/HttpClientInvalidArgumentException.ts +16 -0
  221. package/src/Valkyrja/Http/Client/Throwable/Exception/Abstract/HttpClientRuntimeException.ts +14 -0
  222. package/src/Valkyrja/Http/Message/Constant/ContentTypeValue.ts +22 -0
  223. package/src/Valkyrja/Http/Message/Constant/HeaderName.ts +60 -0
  224. package/src/Valkyrja/Http/Message/Constant/HeaderValue.ts +12 -0
  225. package/src/Valkyrja/Http/Message/Constant/HttpMessageServiceId.ts +13 -0
  226. package/src/Valkyrja/Http/Message/Constant/Port.ts +19 -0
  227. package/src/Valkyrja/Http/Message/Contract/MessageContract.ts +21 -0
  228. package/src/Valkyrja/Http/Message/Enum/ProtocolVersion.ts +15 -0
  229. package/src/Valkyrja/Http/Message/Enum/RequestMethod.ts +35 -0
  230. package/src/Valkyrja/Http/Message/Enum/SameSite.ts +14 -0
  231. package/src/Valkyrja/Http/Message/Enum/StatusCode.ts +152 -0
  232. package/src/Valkyrja/Http/Message/Enum/StatusText.ts +73 -0
  233. package/src/Valkyrja/Http/Message/File/Collection/Contract/UploadedFileCollectionContract.ts +20 -0
  234. package/src/Valkyrja/Http/Message/File/Collection/UploadedFileCollection.ts +83 -0
  235. package/src/Valkyrja/Http/Message/File/Constant/UploadErrorExceptionMessage.ts +20 -0
  236. package/src/Valkyrja/Http/Message/File/Contract/UploadedFileContract.ts +22 -0
  237. package/src/Valkyrja/Http/Message/File/Enum/UploadError.ts +19 -0
  238. package/src/Valkyrja/Http/Message/File/Factory/UploadedFileFactory.ts +34 -0
  239. package/src/Valkyrja/Http/Message/File/Throwable/Contract/UploadedFileThrowable.ts +12 -0
  240. package/src/Valkyrja/Http/Message/File/Throwable/Exception/Abstract/UploadedFileInvalidArgumentException.ts +15 -0
  241. package/src/Valkyrja/Http/Message/File/Throwable/Exception/Abstract/UploadedFileRuntimeException.ts +15 -0
  242. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileAlreadyMovedException.ts +12 -0
  243. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidDirectoryException.ts +12 -0
  244. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidFilesArrayStructureException.ts +12 -0
  245. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidKeyException.ts +12 -0
  246. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidParamException.ts +12 -0
  247. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidTmpNameException.ts +12 -0
  248. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidUploadErrorException.ts +12 -0
  249. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidUploadedFileException.ts +12 -0
  250. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileInvalidValueException.ts +12 -0
  251. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileMoveFailureException.ts +12 -0
  252. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileUnableToWriteFileException.ts +12 -0
  253. package/src/Valkyrja/Http/Message/File/Throwable/Exception/UploadedFileUploadErrorException.ts +48 -0
  254. package/src/Valkyrja/Http/Message/File/UploadedFile.ts +156 -0
  255. package/src/Valkyrja/Http/Message/Header/Collection/Contract/HeaderCollectionContract.ts +23 -0
  256. package/src/Valkyrja/Http/Message/Header/Collection/HeaderCollection.ts +117 -0
  257. package/src/Valkyrja/Http/Message/Header/ContentType.ts +18 -0
  258. package/src/Valkyrja/Http/Message/Header/Contract/HeaderContract.ts +21 -0
  259. package/src/Valkyrja/Http/Message/Header/Factory/CookieFactory.ts +35 -0
  260. package/src/Valkyrja/Http/Message/Header/Factory/HeaderFactory.ts +79 -0
  261. package/src/Valkyrja/Http/Message/Header/Header.ts +104 -0
  262. package/src/Valkyrja/Http/Message/Header/Location.ts +18 -0
  263. package/src/Valkyrja/Http/Message/Header/Referer.ts +18 -0
  264. package/src/Valkyrja/Http/Message/Header/SetCookie.ts +18 -0
  265. package/src/Valkyrja/Http/Message/Header/Throwable/Contract/HttpHeaderThrowable.ts +12 -0
  266. package/src/Valkyrja/Http/Message/Header/Throwable/Exception/Abstract/HttpHeaderInvalidArgumentException.ts +15 -0
  267. package/src/Valkyrja/Http/Message/Header/Throwable/Exception/Abstract/HttpHeaderRuntimeException.ts +13 -0
  268. package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderInvalidHeaderNameException.ts +12 -0
  269. package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderInvalidHeaderParamException.ts +12 -0
  270. package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderInvalidNameException.ts +12 -0
  271. package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderInvalidValueException.ts +12 -0
  272. package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderUnsupportedMethodException.ts +12 -0
  273. package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderUnsupportedOffsetSetException.ts +12 -0
  274. package/src/Valkyrja/Http/Message/Header/Throwable/Exception/HttpHeaderUnsupportedOffsetUnsetException.ts +12 -0
  275. package/src/Valkyrja/Http/Message/Header/Value/Component/Component.ts +54 -0
  276. package/src/Valkyrja/Http/Message/Header/Value/Component/Contract/ComponentContract.ts +16 -0
  277. package/src/Valkyrja/Http/Message/Header/Value/Contract/CookieContract.ts +35 -0
  278. package/src/Valkyrja/Http/Message/Header/Value/Contract/ValueContract.ts +17 -0
  279. package/src/Valkyrja/Http/Message/Header/Value/Cookie.ts +165 -0
  280. package/src/Valkyrja/Http/Message/Header/Value/Value.ts +56 -0
  281. package/src/Valkyrja/Http/Message/Param/Abstract/ParamCollection.ts +63 -0
  282. package/src/Valkyrja/Http/Message/Param/AttributeParamCollection.ts +13 -0
  283. package/src/Valkyrja/Http/Message/Param/Contract/AttributeParamCollectionContract.ts +12 -0
  284. package/src/Valkyrja/Http/Message/Param/Contract/CookieParamCollectionContract.ts +12 -0
  285. package/src/Valkyrja/Http/Message/Param/Contract/ParamCollectionContract.ts +18 -0
  286. package/src/Valkyrja/Http/Message/Param/Contract/ParsedBodyParamCollectionContract.ts +12 -0
  287. package/src/Valkyrja/Http/Message/Param/Contract/ParsedJsonParamCollectionContract.ts +12 -0
  288. package/src/Valkyrja/Http/Message/Param/Contract/QueryParamCollectionContract.ts +12 -0
  289. package/src/Valkyrja/Http/Message/Param/Contract/ServerParamCollectionContract.ts +12 -0
  290. package/src/Valkyrja/Http/Message/Param/CookieParamCollection.ts +13 -0
  291. package/src/Valkyrja/Http/Message/Param/ParsedBodyParamCollection.ts +15 -0
  292. package/src/Valkyrja/Http/Message/Param/ParsedJsonParamCollection.ts +13 -0
  293. package/src/Valkyrja/Http/Message/Param/QueryParamCollection.ts +13 -0
  294. package/src/Valkyrja/Http/Message/Param/ServerParamCollection.ts +15 -0
  295. package/src/Valkyrja/Http/Message/Provider/HttpMessageServiceProvider.ts +30 -0
  296. package/src/Valkyrja/Http/Message/Request/Contract/JsonServerRequestContract.ts +16 -0
  297. package/src/Valkyrja/Http/Message/Request/Contract/RequestContract.ts +21 -0
  298. package/src/Valkyrja/Http/Message/Request/Contract/ServerRequestContract.ts +32 -0
  299. package/src/Valkyrja/Http/Message/Request/Factory/RequestFactory.ts +106 -0
  300. package/src/Valkyrja/Http/Message/Request/JsonServerRequest.ts +76 -0
  301. package/src/Valkyrja/Http/Message/Request/Request.ts +109 -0
  302. package/src/Valkyrja/Http/Message/Request/ServerRequest.ts +116 -0
  303. package/src/Valkyrja/Http/Message/Request/Throwable/Contract/HttpRequestThrowable.ts +12 -0
  304. package/src/Valkyrja/Http/Message/Request/Throwable/Exception/Abstract/HttpRequestInvalidArgumentException.ts +15 -0
  305. package/src/Valkyrja/Http/Message/Request/Throwable/Exception/Abstract/HttpRequestRuntimeException.ts +13 -0
  306. package/src/Valkyrja/Http/Message/Request/Throwable/Exception/HttpRequestInvalidMethodException.ts +12 -0
  307. package/src/Valkyrja/Http/Message/Request/Throwable/Exception/HttpRequestInvalidRequestTargetException.ts +12 -0
  308. package/src/Valkyrja/Http/Message/Response/Contract/EmptyResponseContract.ts +12 -0
  309. package/src/Valkyrja/Http/Message/Response/Contract/HtmlResponseContract.ts +12 -0
  310. package/src/Valkyrja/Http/Message/Response/Contract/JsonResponseContract.ts +24 -0
  311. package/src/Valkyrja/Http/Message/Response/Contract/RedirectResponseContract.ts +26 -0
  312. package/src/Valkyrja/Http/Message/Response/Contract/ResponseContract.ts +23 -0
  313. package/src/Valkyrja/Http/Message/Response/Contract/TextResponseContract.ts +12 -0
  314. package/src/Valkyrja/Http/Message/Response/EmptyResponse.ts +22 -0
  315. package/src/Valkyrja/Http/Message/Response/Factory/Contract/ResponseFactoryContract.ts +44 -0
  316. package/src/Valkyrja/Http/Message/Response/Factory/ResponseFactory.ts +64 -0
  317. package/src/Valkyrja/Http/Message/Response/HtmlResponse.ts +36 -0
  318. package/src/Valkyrja/Http/Message/Response/JsonResponse.ts +111 -0
  319. package/src/Valkyrja/Http/Message/Response/RedirectResponse.ts +101 -0
  320. package/src/Valkyrja/Http/Message/Response/Response.ts +81 -0
  321. package/src/Valkyrja/Http/Message/Response/TextResponse.ts +44 -0
  322. package/src/Valkyrja/Http/Message/Response/Throwable/Contract/HttpResponseThrowable.ts +12 -0
  323. package/src/Valkyrja/Http/Message/Response/Throwable/Exception/Abstract/HttpResponseInvalidArgumentException.ts +15 -0
  324. package/src/Valkyrja/Http/Message/Response/Throwable/Exception/Abstract/HttpResponseRuntimeException.ts +15 -0
  325. package/src/Valkyrja/Http/Message/Response/Throwable/Exception/HttpRequestInvalidJsonCallbackException.ts +12 -0
  326. package/src/Valkyrja/Http/Message/Response/Throwable/Exception/HttpRequestInvalidRedirectStatusCodeException.ts +12 -0
  327. package/src/Valkyrja/Http/Message/Response/XmlResponse.ts +40 -0
  328. package/src/Valkyrja/Http/Message/Stream/Contract/StreamContract.ts +27 -0
  329. package/src/Valkyrja/Http/Message/Stream/Enum/Mode.ts +47 -0
  330. package/src/Valkyrja/Http/Message/Stream/Enum/ModeTranslation.ts +14 -0
  331. package/src/Valkyrja/Http/Message/Stream/Factory/StreamFactory.ts +83 -0
  332. package/src/Valkyrja/Http/Message/Stream/Stream.ts +140 -0
  333. package/src/Valkyrja/Http/Message/Stream/Throwable/Contract/HttpStreamThrowable.ts +12 -0
  334. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/Abstract/HttpStreamInvalidArgumentException.ts +15 -0
  335. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/Abstract/HttpStreamRuntimeException.ts +13 -0
  336. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamInvalidLengthException.ts +12 -0
  337. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamInvalidStreamException.ts +12 -0
  338. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamNoStreamAvailableException.ts +12 -0
  339. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamStreamReadException.ts +12 -0
  340. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamStreamSeekException.ts +12 -0
  341. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamStreamTellException.ts +12 -0
  342. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamStreamWriteException.ts +12 -0
  343. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamUnreadableStreamException.ts +12 -0
  344. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamUnseekableStreamException.ts +12 -0
  345. package/src/Valkyrja/Http/Message/Stream/Throwable/Exception/HttpStreamUnwritableStreamException.ts +12 -0
  346. package/src/Valkyrja/Http/Message/Throwable/Contract/HttpMessageThrowable.ts +12 -0
  347. package/src/Valkyrja/Http/Message/Throwable/Exception/Abstract/HttpMessageInvalidArgumentException.ts +15 -0
  348. package/src/Valkyrja/Http/Message/Throwable/Exception/Abstract/HttpMessageRuntimeException.ts +13 -0
  349. package/src/Valkyrja/Http/Message/Throwable/Exception/HttpNotFoundResponseException.ts +22 -0
  350. package/src/Valkyrja/Http/Message/Throwable/Exception/HttpRedirectResponseException.ts +42 -0
  351. package/src/Valkyrja/Http/Message/Throwable/Exception/HttpResponseException.ts +44 -0
  352. package/src/Valkyrja/Http/Message/Trait/Message.ts +77 -0
  353. package/src/Valkyrja/Http/Message/Uri/Contract/UriContract.ts +37 -0
  354. package/src/Valkyrja/Http/Message/Uri/Data/HostPortAccumulator.ts +15 -0
  355. package/src/Valkyrja/Http/Message/Uri/Enum/Scheme.ts +14 -0
  356. package/src/Valkyrja/Http/Message/Uri/Factory/UriFactory.ts +152 -0
  357. package/src/Valkyrja/Http/Message/Uri/Throwable/Contract/HttpUriThrowable.ts +12 -0
  358. package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/Abstract/HttpUriInvalidArgumentException.ts +15 -0
  359. package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/Abstract/HttpUriRuntimeException.ts +13 -0
  360. package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/HttpUriInvalidFromStringException.ts +12 -0
  361. package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/HttpUriInvalidPathException.ts +12 -0
  362. package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/HttpUriInvalidPortException.ts +12 -0
  363. package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/HttpUriInvalidQueryException.ts +12 -0
  364. package/src/Valkyrja/Http/Message/Uri/Throwable/Exception/NoPortExceptionHttpUri.ts +12 -0
  365. package/src/Valkyrja/Http/Message/Uri/Type/Port.ts +39 -0
  366. package/src/Valkyrja/Http/Message/Uri/Uri.ts +191 -0
  367. package/src/Valkyrja/Http/Middleware/Constant/HttpMiddlewareServiceId.ts +24 -0
  368. package/src/Valkyrja/Http/Middleware/Contract/RequestReceivedMiddlewareContract.ts +19 -0
  369. package/src/Valkyrja/Http/Middleware/Contract/RouteDispatchedMiddlewareContract.ts +22 -0
  370. package/src/Valkyrja/Http/Middleware/Contract/RouteMatchedMiddlewareContract.ts +21 -0
  371. package/src/Valkyrja/Http/Middleware/Contract/RouteNotMatchedMiddlewareContract.ts +20 -0
  372. package/src/Valkyrja/Http/Middleware/Contract/SendingResponseMiddlewareContract.ts +20 -0
  373. package/src/Valkyrja/Http/Middleware/Contract/TerminatedMiddlewareContract.ts +16 -0
  374. package/src/Valkyrja/Http/Middleware/Contract/ThrowableCaughtMiddlewareContract.ts +21 -0
  375. package/src/Valkyrja/Http/Middleware/Handler/Abstract/Handler.ts +50 -0
  376. package/src/Valkyrja/Http/Middleware/Handler/Contract/HandlerContract.ts +29 -0
  377. package/src/Valkyrja/Http/Middleware/Handler/Contract/RequestReceivedHandlerContract.ts +17 -0
  378. package/src/Valkyrja/Http/Middleware/Handler/Contract/RouteDispatchedHandlerContract.ts +18 -0
  379. package/src/Valkyrja/Http/Middleware/Handler/Contract/RouteMatchedHandlerContract.ts +18 -0
  380. package/src/Valkyrja/Http/Middleware/Handler/Contract/RouteNotMatchedHandlerContract.ts +17 -0
  381. package/src/Valkyrja/Http/Middleware/Handler/Contract/SendingResponseHandlerContract.ts +17 -0
  382. package/src/Valkyrja/Http/Middleware/Handler/Contract/TerminatedHandlerContract.ts +17 -0
  383. package/src/Valkyrja/Http/Middleware/Handler/Contract/ThrowableCaughtHandlerContract.ts +17 -0
  384. package/src/Valkyrja/Http/Middleware/Handler/RequestReceivedHandler.ts +25 -0
  385. package/src/Valkyrja/Http/Middleware/Handler/RouteDispatchedHandler.ts +30 -0
  386. package/src/Valkyrja/Http/Middleware/Handler/RouteMatchedHandler.ts +26 -0
  387. package/src/Valkyrja/Http/Middleware/Handler/RouteNotMatchedHandler.ts +25 -0
  388. package/src/Valkyrja/Http/Middleware/Handler/SendingResponseHandler.ts +25 -0
  389. package/src/Valkyrja/Http/Middleware/Handler/TerminatedHandler.ts +24 -0
  390. package/src/Valkyrja/Http/Middleware/Handler/ThrowableCaughtHandler.ts +25 -0
  391. package/src/Valkyrja/Http/Middleware/Throwable/Contract/HttpMiddlewareThrowable.ts +12 -0
  392. package/src/Valkyrja/Http/Middleware/Throwable/Exception/Abstract/HttpMiddlewareInvalidArgumentException.ts +16 -0
  393. package/src/Valkyrja/Http/Middleware/Throwable/Exception/Abstract/HttpMiddlewareRuntimeException.ts +14 -0
  394. package/src/Valkyrja/Http/Routing/Cli/Command/Constant/CommandName.ts +12 -0
  395. package/src/Valkyrja/Http/Routing/Cli/Command/ListCommand.ts +95 -0
  396. package/src/Valkyrja/Http/Routing/Collection/Contract/RouteCollectionContract.ts +28 -0
  397. package/src/Valkyrja/Http/Routing/Collection/RouteCollection.ts +227 -0
  398. package/src/Valkyrja/Http/Routing/Collector/Contract/RouteCollectorContract.ts +14 -0
  399. package/src/Valkyrja/Http/Routing/Constant/HttpRoutingServiceId.ts +21 -0
  400. package/src/Valkyrja/Http/Routing/Constant/Regex.ts +57 -0
  401. package/src/Valkyrja/Http/Routing/Controller/Controller.ts +18 -0
  402. package/src/Valkyrja/Http/Routing/Data/Contract/DynamicRouteContract.ts +19 -0
  403. package/src/Valkyrja/Http/Routing/Data/Contract/ParameterContract.ts +28 -0
  404. package/src/Valkyrja/Http/Routing/Data/Contract/RouteContract.ts +69 -0
  405. package/src/Valkyrja/Http/Routing/Data/DynamicRoute.ts +83 -0
  406. package/src/Valkyrja/Http/Routing/Data/HttpRoutingData.ts +22 -0
  407. package/src/Valkyrja/Http/Routing/Data/Parameter.ts +104 -0
  408. package/src/Valkyrja/Http/Routing/Data/Route.ts +252 -0
  409. package/src/Valkyrja/Http/Routing/Dispatcher/Contract/RouterContract.ts +17 -0
  410. package/src/Valkyrja/Http/Routing/Dispatcher/Router.ts +102 -0
  411. package/src/Valkyrja/Http/Routing/Factory/Contract/RoutingResponseFactoryContract.ts +21 -0
  412. package/src/Valkyrja/Http/Routing/Factory/RoutingResponseFactory.ts +33 -0
  413. package/src/Valkyrja/Http/Routing/Matcher/Contract/MatcherContract.ts +17 -0
  414. package/src/Valkyrja/Http/Routing/Matcher/Matcher.ts +109 -0
  415. package/src/Valkyrja/Http/Routing/Processor/Contract/ProcessorContract.ts +14 -0
  416. package/src/Valkyrja/Http/Routing/Processor/Processor.ts +108 -0
  417. package/src/Valkyrja/Http/Routing/Provider/Contract/HttpRouteProviderContract.ts +21 -0
  418. package/src/Valkyrja/Http/Routing/Provider/HttpRoutingCliComponentProvider.ts +39 -0
  419. package/src/Valkyrja/Http/Routing/Provider/HttpRoutingCliRouteProvider.ts +42 -0
  420. package/src/Valkyrja/Http/Routing/Throwable/Contract/HttpRoutingThrowable.ts +12 -0
  421. package/src/Valkyrja/Http/Routing/Throwable/Exception/Abstract/HttpRoutingInvalidArgumentException.ts +16 -0
  422. package/src/Valkyrja/Http/Routing/Throwable/Exception/Abstract/HttpRoutingRuntimeException.ts +14 -0
  423. package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidDynamicRouteNameException.ts +12 -0
  424. package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidMethodTypeException.ts +12 -0
  425. package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidParameterRegexException.ts +12 -0
  426. package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidRouteNameException.ts +12 -0
  427. package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidRouteParameterException.ts +12 -0
  428. package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidRoutePathException.ts +12 -0
  429. package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingInvalidRouteRegexException.ts +12 -0
  430. package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingNoCastException.ts +12 -0
  431. package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingNoRequestStructException.ts +12 -0
  432. package/src/Valkyrja/Http/Routing/Throwable/Exception/HttpRoutingNoResponseStructException.ts +12 -0
  433. package/src/Valkyrja/Http/Routing/Url/Contract/UrlContract.ts +12 -0
  434. package/src/Valkyrja/Http/Routing/Url/Url.ts +27 -0
  435. package/src/Valkyrja/Http/Server/Constant/HttpServerServiceId.ts +14 -0
  436. package/src/Valkyrja/Http/Server/Handler/Contract/ExceptionResponseRequestHandlerContract.ts +15 -0
  437. package/src/Valkyrja/Http/Server/Handler/Contract/RequestHandlerContract.ts +20 -0
  438. package/src/Valkyrja/Http/Server/Handler/RequestHandler.ts +141 -0
  439. package/src/Valkyrja/Http/Server/Middleware/RequestReceived/RedirectTrailingSlashMiddleware.ts +47 -0
  440. package/src/Valkyrja/Http/Server/Middleware/RouteMatched/ResponseStructMiddleware.ts +45 -0
  441. package/src/Valkyrja/Http/Server/Middleware/SendingResponse/NoCacheResponseMiddleware.ts +36 -0
  442. package/src/Valkyrja/Http/Server/Middleware/ThrowableCaught/LogThrowableCaughtMiddleware.ts +32 -0
  443. package/src/Valkyrja/Http/Server/Throwable/Contract/HttpServerThrowable.ts +12 -0
  444. package/src/Valkyrja/Http/Server/Throwable/Exception/Abstract/HttpServerInvalidArgumentException.ts +16 -0
  445. package/src/Valkyrja/Http/Server/Throwable/Exception/Abstract/HttpServerRuntimeException.ts +14 -0
  446. package/src/Valkyrja/Http/Struct/Contract/StructContract.ts +13 -0
  447. package/src/Valkyrja/Http/Struct/Request/Abstract/JsonRequestStruct.ts +33 -0
  448. package/src/Valkyrja/Http/Struct/Request/Abstract/ParsedBodyRequestStruct.ts +21 -0
  449. package/src/Valkyrja/Http/Struct/Request/Abstract/QueryRequestStruct.ts +21 -0
  450. package/src/Valkyrja/Http/Struct/Request/Abstract/RequestStruct.ts +36 -0
  451. package/src/Valkyrja/Http/Struct/Request/Contract/RequestStructContract.ts +16 -0
  452. package/src/Valkyrja/Http/Struct/Response/Abstract/ResponseStruct.ts +31 -0
  453. package/src/Valkyrja/Http/Struct/Response/Contract/ResponseStructContract.ts +14 -0
  454. package/src/Valkyrja/Http/Struct/Throwable/Contract/HttpStructThrowable.ts +12 -0
  455. package/src/Valkyrja/Http/Struct/Throwable/Exception/Abstract/HttpStructInvalidArgumentException.ts +15 -0
  456. package/src/Valkyrja/Http/Struct/Throwable/Exception/Abstract/HttpStructRuntimeException.ts +13 -0
  457. package/src/Valkyrja/Http/Struct/Throwable/Exception/HttpStructJsonServerRequestExpectedException.ts +12 -0
  458. package/src/Valkyrja/Http/Throwable/Contract/HttpThrowable.ts +12 -0
  459. package/src/Valkyrja/Http/Throwable/Exception/Abstract/HttpInvalidArgumentException.ts +13 -0
  460. package/src/Valkyrja/Http/Throwable/Exception/Abstract/HttpRuntimeException.ts +13 -0
  461. package/src/Valkyrja/Log/Logger/Contract/LoggerContract.ts +22 -0
  462. package/src/Valkyrja/Throwable/Constant/ThrowableServiceId.ts +12 -0
  463. package/src/Valkyrja/Throwable/Contract/ValkyrjaThrowable.ts +12 -0
  464. package/src/Valkyrja/Throwable/Exception/Abstract/ValkyrjaInvalidArgumentException.ts +18 -0
  465. package/src/Valkyrja/Throwable/Exception/Abstract/ValkyrjaRuntimeException.ts +18 -0
  466. package/src/Valkyrja/Throwable/Handler/Abstract/ThrowableHandler.ts +22 -0
  467. package/src/Valkyrja/Throwable/Handler/Contract/ThrowableHandlerContract.ts +18 -0
  468. package/src/Valkyrja/Type/Data/Cast.ts +16 -0
  469. package/src/Valkyrja/Type/Object/Factory/ObjectFactory.ts +14 -0
  470. package/src/Valkyrja/Validation/Constant/ErrorMessage.ts +33 -0
  471. package/src/Valkyrja/Validation/Rule/Abstract/Rule.ts +30 -0
  472. package/src/Valkyrja/Validation/Rule/Contract/RuleContract.ts +14 -0
  473. package/src/Valkyrja/Validation/Rule/Int/GreaterThan.ts +24 -0
  474. package/src/Valkyrja/Validation/Rule/Int/LessThan.ts +24 -0
  475. package/src/Valkyrja/Validation/Rule/Is/Email.ts +16 -0
  476. package/src/Valkyrja/Validation/Rule/Is/Equal.ts +24 -0
  477. package/src/Valkyrja/Validation/Rule/Is/IsBool.ts +16 -0
  478. package/src/Valkyrja/Validation/Rule/Is/IsEmpty.ts +16 -0
  479. package/src/Valkyrja/Validation/Rule/Is/IsNumeric.ts +16 -0
  480. package/src/Valkyrja/Validation/Rule/Is/IsString.ts +16 -0
  481. package/src/Valkyrja/Validation/Rule/Is/NotEmpty.ts +16 -0
  482. package/src/Valkyrja/Validation/Rule/Is/NotEqual.ts +24 -0
  483. package/src/Valkyrja/Validation/Rule/Is/Required.ts +16 -0
  484. package/src/Valkyrja/Validation/Rule/String/Alpha.ts +16 -0
  485. package/src/Valkyrja/Validation/Rule/String/Contains.ts +24 -0
  486. package/src/Valkyrja/Validation/Rule/String/EndsWith.ts +24 -0
  487. package/src/Valkyrja/Validation/Rule/String/Lowercase.ts +16 -0
  488. package/src/Valkyrja/Validation/Rule/String/Max.ts +24 -0
  489. package/src/Valkyrja/Validation/Rule/String/Min.ts +24 -0
  490. package/src/Valkyrja/Validation/Rule/String/Regex.ts +24 -0
  491. package/src/Valkyrja/Validation/Rule/String/StartsWith.ts +24 -0
  492. package/src/Valkyrja/Validation/Rule/String/Uppercase.ts +16 -0
  493. package/src/Valkyrja/Validation/Throwable/Contract/ValidationThrowable.ts +12 -0
  494. package/src/Valkyrja/Validation/Throwable/Exception/Abstract/ValidationInvalidArgumentException.ts +15 -0
  495. package/src/Valkyrja/Validation/Throwable/Exception/Abstract/ValidationRuntimeException.ts +13 -0
  496. package/src/Valkyrja/Validation/Throwable/Exception/ValidationRuleFailureException.ts +12 -0
  497. package/src/Valkyrja/Validation/Validator/Contract/ValidatorContract.ts +18 -0
  498. package/src/Valkyrja/Validation/Validator/Validator.ts +57 -0
@@ -0,0 +1,79 @@
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 { HttpHeaderInvalidNameException } from '../Throwable/Exception/HttpHeaderInvalidNameException.js';
11
+ import { HttpHeaderInvalidValueException } from '../Throwable/Exception/HttpHeaderInvalidValueException.js';
12
+
13
+ export abstract class HeaderFactory {
14
+ static marshalHeaders(server: Record<string, string | number>): Record<string, string> {
15
+ const headers: Record<string, string> = {};
16
+ for (const [key, value] of Object.entries(server)) {
17
+ const lower = key.toLowerCase();
18
+ if (lower.startsWith('http_')) {
19
+ const name = lower.slice(5).replaceAll('_', '-');
20
+ headers[name] = String(value);
21
+ } else if (lower === 'content_type' || lower === 'content_length' || lower === 'content_md5') {
22
+ const name = lower.replaceAll('_', '-');
23
+ headers[name] = String(value);
24
+ }
25
+ }
26
+ return headers;
27
+ }
28
+
29
+ static filterValue(value: string): string {
30
+ let result = '';
31
+ for (let i = 0; i < value.length; i++) {
32
+ const ascii = value.charCodeAt(i);
33
+ if (ascii === 13) {
34
+ const lf = value.charCodeAt(i + 1);
35
+ const ws = value.charCodeAt(i + 2);
36
+ if (lf === 10 && (ws === 9 || ws === 32)) {
37
+ result += (value[i] ?? '') + (value[i + 1] ?? '');
38
+ i++;
39
+ }
40
+ continue;
41
+ }
42
+ if (!HeaderFactory.isInvalidValueAscii(ascii)) {
43
+ result += value[i] ?? '';
44
+ }
45
+ }
46
+ return result;
47
+ }
48
+
49
+ static assertValidValue(value: string): void {
50
+ if (!HeaderFactory.isValidValue(value)) {
51
+ throw new HttpHeaderInvalidValueException(`"${value}" is not valid header value`);
52
+ }
53
+ }
54
+
55
+ static isValidValue(value: string): boolean {
56
+ if (/(?:(?:(?<!\r)\n)|(?:\r(?!\n))|(?:\r\n(?![ \t])))/.test(value)) {
57
+ return false;
58
+ }
59
+ // eslint-disable-next-line no-control-regex
60
+ if (/[^\x09\x0a\x0d\x20-\x7E\x80-\xFE]/.test(value)) {
61
+ return false;
62
+ }
63
+ return true;
64
+ }
65
+
66
+ static assertValidName(name: string): void {
67
+ if (!HeaderFactory.isValidName(name)) {
68
+ throw new HttpHeaderInvalidNameException(`"${name}" is not valid header name`);
69
+ }
70
+ }
71
+
72
+ static isValidName(name: string): boolean {
73
+ return name !== '' && /^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/.test(name);
74
+ }
75
+
76
+ protected static isInvalidValueAscii(ascii: number): boolean {
77
+ return (ascii < 32 && ascii !== 9 && ascii !== 10 && ascii !== 13) || ascii === 127 || ascii === 255;
78
+ }
79
+ }
@@ -0,0 +1,104 @@
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 { HeaderContract } from './Contract/HeaderContract.js';
11
+ import type { ValueContract } from './Value/Contract/ValueContract.js';
12
+ import { HeaderFactory } from './Factory/HeaderFactory.js';
13
+ import { ObjectFactory } from '../../../Type/Object/Factory/ObjectFactory.js';
14
+
15
+ export class Header implements HeaderContract {
16
+ protected name: string;
17
+ protected normalizedName: string;
18
+ protected values: Array<ValueContract | string> = [];
19
+
20
+ constructor(name: string, ...values: Array<ValueContract | string>) {
21
+ HeaderFactory.assertValidName(name);
22
+ this.name = name;
23
+ this.normalizedName = name.toLowerCase();
24
+ this.updateValues(...values);
25
+ }
26
+
27
+ static fromValue(value: string): Header {
28
+ const deliminator = ':';
29
+ let name = value;
30
+ let valuesStr = '';
31
+ if (value.includes(deliminator)) {
32
+ const idx = value.indexOf(deliminator);
33
+ name = value.slice(0, idx);
34
+ valuesStr = value.slice(idx + 1);
35
+ }
36
+
37
+ const valueDeliminator = ',';
38
+ const parts: Array<ValueContract | string> = valuesStr.includes(valueDeliminator)
39
+ ? valuesStr.split(valueDeliminator).map((v) => v.trim())
40
+ : [valuesStr.trim()];
41
+
42
+ return new Header(name.trim(), ...parts);
43
+ }
44
+
45
+ getName(): string {
46
+ return this.name;
47
+ }
48
+ getNormalizedName(): string {
49
+ return this.normalizedName;
50
+ }
51
+
52
+ withName(name: string): this {
53
+ const clone = ObjectFactory.clone(this);
54
+ HeaderFactory.assertValidName(name);
55
+ clone.name = name;
56
+ clone.normalizedName = name.toLowerCase();
57
+ return clone;
58
+ }
59
+
60
+ getValues(): Array<ValueContract | string> {
61
+ return this.values;
62
+ }
63
+
64
+ withValues(...values: Array<ValueContract | string>): this {
65
+ const clone = ObjectFactory.clone(this);
66
+ clone.values = this.filterValues(...values);
67
+ return clone;
68
+ }
69
+
70
+ withAddedValues(...values: Array<ValueContract | string>): this {
71
+ const clone = ObjectFactory.clone(this);
72
+ clone.values = [...this.values, ...this.filterValues(...values)];
73
+ return clone;
74
+ }
75
+
76
+ getHeaderLine(): string {
77
+ return this.name + ': ' + this.valuesToString();
78
+ }
79
+
80
+ toString(): string {
81
+ return this.getHeaderLine();
82
+ }
83
+
84
+ protected updateValues(...values: Array<ValueContract | string>): void {
85
+ this.values = this.filterValues(...values);
86
+ }
87
+
88
+ protected valuesToString(): string {
89
+ return this.values
90
+ .map((v) => (typeof v === 'string' ? v : v.toString()).trim())
91
+ .filter((s) => s !== '')
92
+ .join(', ');
93
+ }
94
+
95
+ protected filterValues(...values: Array<ValueContract | string>): Array<ValueContract | string> {
96
+ return values.map((v) => {
97
+ if (typeof v === 'string') {
98
+ v = HeaderFactory.filterValue(v);
99
+ HeaderFactory.assertValidValue(v);
100
+ }
101
+ return v;
102
+ });
103
+ }
104
+ }
@@ -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
+ import type { ValueContract } from './Value/Contract/ValueContract.js';
11
+ import { Header } from './Header.js';
12
+ import { HeaderName } from '../Constant/HeaderName.js';
13
+
14
+ export class Location extends Header {
15
+ constructor(...values: Array<ValueContract | string>) {
16
+ super(HeaderName.LOCATION, ...values);
17
+ }
18
+ }
@@ -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
+ import type { ValueContract } from './Value/Contract/ValueContract.js';
11
+ import { Header } from './Header.js';
12
+ import { HeaderName } from '../Constant/HeaderName.js';
13
+
14
+ export class Referer extends Header {
15
+ constructor(...values: Array<ValueContract | string>) {
16
+ super(HeaderName.REFERER, ...values);
17
+ }
18
+ }
@@ -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
+ import type { CookieContract } from './Value/Contract/CookieContract.js';
11
+ import { Header } from './Header.js';
12
+ import { HeaderName } from '../Constant/HeaderName.js';
13
+
14
+ export class SetCookie extends Header {
15
+ constructor(...values: CookieContract[]) {
16
+ super(HeaderName.SET_COOKIE, ...values);
17
+ }
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 { HttpMessageThrowable } from '../../../Throwable/Contract/HttpMessageThrowable.js';
11
+
12
+ export type HttpHeaderThrowable = HttpMessageThrowable;
@@ -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 { HttpHeaderThrowable } from '../../Contract/HttpHeaderThrowable.js';
11
+ import { HttpMessageInvalidArgumentException } from '../../../../Throwable/Exception/Abstract/HttpMessageInvalidArgumentException.js';
12
+
13
+ export abstract class HttpHeaderInvalidArgumentException
14
+ extends HttpMessageInvalidArgumentException
15
+ implements HttpHeaderThrowable {}
@@ -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 { HttpHeaderThrowable } from '../../Contract/HttpHeaderThrowable.js';
11
+ import { HttpMessageRuntimeException } from '../../../../Throwable/Exception/Abstract/HttpMessageRuntimeException.js';
12
+
13
+ export abstract class HttpHeaderRuntimeException extends HttpMessageRuntimeException implements HttpHeaderThrowable {}
@@ -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 { HttpHeaderInvalidArgumentException } from './Abstract/HttpHeaderInvalidArgumentException.js';
11
+
12
+ export class HttpHeaderInvalidHeaderNameException extends HttpHeaderInvalidArgumentException {}
@@ -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 { HttpHeaderInvalidArgumentException } from './Abstract/HttpHeaderInvalidArgumentException.js';
11
+
12
+ export class HttpHeaderInvalidHeaderParamException extends HttpHeaderInvalidArgumentException {}
@@ -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 { HttpHeaderInvalidArgumentException } from './Abstract/HttpHeaderInvalidArgumentException.js';
11
+
12
+ export class HttpHeaderInvalidNameException extends HttpHeaderInvalidArgumentException {}
@@ -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 { HttpHeaderInvalidArgumentException } from './Abstract/HttpHeaderInvalidArgumentException.js';
11
+
12
+ export class HttpHeaderInvalidValueException extends HttpHeaderInvalidArgumentException {}
@@ -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 { HttpHeaderRuntimeException } from './Abstract/HttpHeaderRuntimeException.js';
11
+
12
+ export class HttpHeaderUnsupportedMethodException extends HttpHeaderRuntimeException {}
@@ -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 { HttpHeaderRuntimeException } from './Abstract/HttpHeaderRuntimeException.js';
11
+
12
+ export class HttpHeaderUnsupportedOffsetSetException extends HttpHeaderRuntimeException {}
@@ -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 { HttpHeaderRuntimeException } from './Abstract/HttpHeaderRuntimeException.js';
11
+
12
+ export class HttpHeaderUnsupportedOffsetUnsetException extends HttpHeaderRuntimeException {}
@@ -0,0 +1,54 @@
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 './Contract/ComponentContract.js';
11
+ import { ObjectFactory } from '../../../../../Type/Object/Factory/ObjectFactory.js';
12
+
13
+ export class Component implements ComponentContract {
14
+ constructor(
15
+ protected token: string,
16
+ protected text: string = '',
17
+ ) {
18
+ this.token = token.trim();
19
+ this.text = text.trim();
20
+ }
21
+
22
+ static fromValue(value: string): Component {
23
+ const deliminator = '=';
24
+ if (value.includes(deliminator)) {
25
+ const [token, ...rest] = value.split(deliminator);
26
+ return new Component(token?.trim() ?? '', rest.join(deliminator).trim());
27
+ }
28
+ return new Component(value.trim());
29
+ }
30
+
31
+ getToken(): string {
32
+ return this.token;
33
+ }
34
+
35
+ withToken(token: string): this {
36
+ const clone = ObjectFactory.clone(this);
37
+ clone.token = token.trim();
38
+ return clone;
39
+ }
40
+
41
+ getText(): string {
42
+ return this.text;
43
+ }
44
+
45
+ withText(text: string): this {
46
+ const clone = ObjectFactory.clone(this);
47
+ clone.text = text.trim();
48
+ return clone;
49
+ }
50
+
51
+ toString(): string {
52
+ return this.token !== '' && this.text !== '' ? `${this.token}=${this.text}` : this.token;
53
+ }
54
+ }
@@ -0,0 +1,16 @@
1
+ /*
2
+ * This file is part of the Valkyrja package.
3
+ *
4
+ * (c) Melech Mizrachi <melechmizrachi@gmail.com>
5
+ *
6
+ * For the full copyright and license information, please view the LICENSE
7
+ * file that was distributed with this source code.
8
+ */
9
+
10
+ export interface ComponentContract {
11
+ getToken(): string;
12
+ withToken(token: string): this;
13
+ getText(): string;
14
+ withText(text: string): this;
15
+ toString(): string;
16
+ }
@@ -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
+ import type { SameSite } from '../../../Enum/SameSite.js';
11
+ import type { ValueContract } from './ValueContract.js';
12
+
13
+ export interface CookieContract extends ValueContract {
14
+ delete(): this;
15
+ getMaxAge(): number;
16
+ getName(): string;
17
+ withName(name: string): this;
18
+ getValue(): string;
19
+ withValue(value: string): this;
20
+ getExpire(): number;
21
+ withExpire(expire: number): this;
22
+ getPath(): string;
23
+ withPath(path: string): this;
24
+ getDomain(): string;
25
+ withDomain(domain: string): this;
26
+ isSecure(): boolean;
27
+ withSecure(secure: boolean): this;
28
+ isHttpOnly(): boolean;
29
+ withHttpOnly(httpOnly: boolean): this;
30
+ isRaw(): boolean;
31
+ withRaw(raw: boolean): this;
32
+ getSameSite(): SameSite;
33
+ withSameSite(sameSite: SameSite): this;
34
+ toString(): string;
35
+ }
@@ -0,0 +1,17 @@
1
+ /*
2
+ * This file is part of the Valkyrja package.
3
+ *
4
+ * (c) Melech Mizrachi <melechmizrachi@gmail.com>
5
+ *
6
+ * For the full copyright and license information, please view the LICENSE
7
+ * file that was distributed with this source code.
8
+ */
9
+
10
+ import type { ComponentContract } from '../Component/Contract/ComponentContract.js';
11
+
12
+ export interface ValueContract {
13
+ getComponents(): Array<ComponentContract | string>;
14
+ withComponents(...components: Array<ComponentContract | string>): this;
15
+ withAddedComponents(...components: Array<ComponentContract | string>): this;
16
+ toString(): string;
17
+ }
@@ -0,0 +1,165 @@
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 { CookieContract } from './Contract/CookieContract.js';
11
+ import { SameSite } from '../../Enum/SameSite.js';
12
+ import { Value } from './Value.js';
13
+ import { ObjectFactory } from '../../../../Type/Object/Factory/ObjectFactory.js';
14
+
15
+ export class Cookie extends Value implements CookieContract {
16
+ constructor(
17
+ protected name: string,
18
+ protected value: string = '',
19
+ protected expire: number = 0,
20
+ protected path: string = '/',
21
+ protected domain: string = '',
22
+ protected secure: boolean = false,
23
+ protected httpOnly: boolean = true,
24
+ protected raw: boolean = false,
25
+ protected sameSite: SameSite = SameSite.LAX,
26
+ protected deleted: boolean = false,
27
+ ) {
28
+ super();
29
+ }
30
+
31
+ delete(): this {
32
+ const clone = ObjectFactory.clone(this);
33
+ clone.deleted = true;
34
+ return clone;
35
+ }
36
+
37
+ getMaxAge(): number {
38
+ return this.expire > 0 ? this.expire - Math.floor(Date.now() / 1000) : 0;
39
+ }
40
+
41
+ getName(): string {
42
+ return this.name;
43
+ }
44
+
45
+ withName(name: string): this {
46
+ const clone = ObjectFactory.clone(this);
47
+ clone.name = name;
48
+ return clone;
49
+ }
50
+
51
+ getValue(): string {
52
+ return this.value;
53
+ }
54
+
55
+ withValue(value: string): this {
56
+ const clone = ObjectFactory.clone(this);
57
+ clone.value = value;
58
+ return clone;
59
+ }
60
+
61
+ getExpire(): number {
62
+ return this.expire;
63
+ }
64
+
65
+ withExpire(expire: number): this {
66
+ const clone = ObjectFactory.clone(this);
67
+ clone.expire = expire;
68
+ return clone;
69
+ }
70
+
71
+ getPath(): string {
72
+ return this.path;
73
+ }
74
+
75
+ withPath(path: string): this {
76
+ const clone = ObjectFactory.clone(this);
77
+ clone.path = path;
78
+ return clone;
79
+ }
80
+
81
+ getDomain(): string {
82
+ return this.domain;
83
+ }
84
+
85
+ withDomain(domain: string): this {
86
+ const clone = ObjectFactory.clone(this);
87
+ clone.domain = domain;
88
+ return clone;
89
+ }
90
+
91
+ isSecure(): boolean {
92
+ return this.secure;
93
+ }
94
+
95
+ withSecure(secure: boolean): this {
96
+ const clone = ObjectFactory.clone(this);
97
+ clone.secure = secure;
98
+ return clone;
99
+ }
100
+
101
+ isHttpOnly(): boolean {
102
+ return this.httpOnly;
103
+ }
104
+
105
+ withHttpOnly(httpOnly: boolean): this {
106
+ const clone = ObjectFactory.clone(this);
107
+ clone.httpOnly = httpOnly;
108
+ return clone;
109
+ }
110
+
111
+ isRaw(): boolean {
112
+ return this.raw;
113
+ }
114
+
115
+ withRaw(raw: boolean): this {
116
+ const clone = ObjectFactory.clone(this);
117
+ clone.raw = raw;
118
+ return clone;
119
+ }
120
+
121
+ getSameSite(): SameSite {
122
+ return this.sameSite;
123
+ }
124
+
125
+ withSameSite(sameSite: SameSite): this {
126
+ const clone = ObjectFactory.clone(this);
127
+ clone.sameSite = sameSite;
128
+ return clone;
129
+ }
130
+
131
+ override toString(): string {
132
+ let value = this.value;
133
+ let expire = this.expire;
134
+ let maxAge = this.getMaxAge();
135
+
136
+ if (this.deleted) {
137
+ const pastTime = Math.floor(Date.now() / 1000) - 31536001;
138
+ expire = pastTime;
139
+ maxAge = -31536001;
140
+ value = 'delete';
141
+ }
142
+
143
+ const parts: string[] = [`${encodeURIComponent(this.name)}=${encodeURIComponent(value)}`];
144
+
145
+ if (expire !== 0) {
146
+ parts.push(`expires=${new Date(expire * 1000).toUTCString()}`);
147
+ parts.push(`max-age=${String(maxAge)}`);
148
+ }
149
+
150
+ parts.push(`path=${this.path}`);
151
+
152
+ if (this.domain !== '') {
153
+ parts.push(`domain=${this.domain}`);
154
+ }
155
+ if (this.secure) {
156
+ parts.push('secure');
157
+ }
158
+ if (this.httpOnly) {
159
+ parts.push('httponly');
160
+ }
161
+ parts.push(`samesite=${this.sameSite}`);
162
+
163
+ return parts.join('; ');
164
+ }
165
+ }