@konker.dev/neverthrow-r-middleware 0.0.2

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 (303) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +26 -0
  3. package/dist/handler.d.ts +3 -0
  4. package/dist/handler.d.ts.map +1 -0
  5. package/dist/handler.js +2 -0
  6. package/dist/handler.js.map +1 -0
  7. package/dist/http/HttpApiError.d.ts +16 -0
  8. package/dist/http/HttpApiError.d.ts.map +1 -0
  9. package/dist/http/HttpApiError.js +60 -0
  10. package/dist/http/HttpApiError.js.map +1 -0
  11. package/dist/http/HttpApiError.test.d.ts +2 -0
  12. package/dist/http/HttpApiError.test.d.ts.map +1 -0
  13. package/dist/http/HttpApiError.test.js +45 -0
  14. package/dist/http/HttpApiError.test.js.map +1 -0
  15. package/dist/http/Rec.d.ts +13 -0
  16. package/dist/http/Rec.d.ts.map +1 -0
  17. package/dist/http/Rec.js +2 -0
  18. package/dist/http/Rec.js.map +1 -0
  19. package/dist/http/RequestResponseHandler.d.ts +7 -0
  20. package/dist/http/RequestResponseHandler.d.ts.map +1 -0
  21. package/dist/http/RequestResponseHandler.js +2 -0
  22. package/dist/http/RequestResponseHandler.js.map +1 -0
  23. package/dist/http/RequestW.d.ts +14 -0
  24. package/dist/http/RequestW.d.ts.map +1 -0
  25. package/dist/http/RequestW.js +17 -0
  26. package/dist/http/RequestW.js.map +1 -0
  27. package/dist/http/RequestW.test.d.ts +2 -0
  28. package/dist/http/RequestW.test.d.ts.map +1 -0
  29. package/dist/http/RequestW.test.js +26 -0
  30. package/dist/http/RequestW.test.js.map +1 -0
  31. package/dist/http/ResponseW.d.ts +11 -0
  32. package/dist/http/ResponseW.d.ts.map +1 -0
  33. package/dist/http/ResponseW.js +14 -0
  34. package/dist/http/ResponseW.js.map +1 -0
  35. package/dist/http/ResponseW.test.d.ts +2 -0
  36. package/dist/http/ResponseW.test.d.ts.map +1 -0
  37. package/dist/http/ResponseW.test.js +23 -0
  38. package/dist/http/ResponseW.test.js.map +1 -0
  39. package/dist/http/contrib/apiGatewayProxyEventV2Adapter.d.ts +14 -0
  40. package/dist/http/contrib/apiGatewayProxyEventV2Adapter.d.ts.map +1 -0
  41. package/dist/http/contrib/apiGatewayProxyEventV2Adapter.js +26 -0
  42. package/dist/http/contrib/apiGatewayProxyEventV2Adapter.js.map +1 -0
  43. package/dist/http/contrib/apiGatewayProxyEventV2Adapter.test.d.ts +2 -0
  44. package/dist/http/contrib/apiGatewayProxyEventV2Adapter.test.d.ts.map +1 -0
  45. package/dist/http/contrib/apiGatewayProxyEventV2Adapter.test.js +76 -0
  46. package/dist/http/contrib/apiGatewayProxyEventV2Adapter.test.js.map +1 -0
  47. package/dist/http/contrib/base64BodyDecoder.d.ts +7 -0
  48. package/dist/http/contrib/base64BodyDecoder.d.ts.map +1 -0
  49. package/dist/http/contrib/base64BodyDecoder.js +15 -0
  50. package/dist/http/contrib/base64BodyDecoder.js.map +1 -0
  51. package/dist/http/contrib/base64BodyDecoder.test.d.ts +2 -0
  52. package/dist/http/contrib/base64BodyDecoder.test.d.ts.map +1 -0
  53. package/dist/http/contrib/base64BodyDecoder.test.js +47 -0
  54. package/dist/http/contrib/base64BodyDecoder.test.js.map +1 -0
  55. package/dist/http/contrib/basicAuthAuthenticator.d.ts +17 -0
  56. package/dist/http/contrib/basicAuthAuthenticator.d.ts.map +1 -0
  57. package/dist/http/contrib/basicAuthAuthenticator.js +30 -0
  58. package/dist/http/contrib/basicAuthAuthenticator.js.map +1 -0
  59. package/dist/http/contrib/basicAuthAuthenticator.test.d.ts +2 -0
  60. package/dist/http/contrib/basicAuthAuthenticator.test.d.ts.map +1 -0
  61. package/dist/http/contrib/basicAuthAuthenticator.test.js +64 -0
  62. package/dist/http/contrib/basicAuthAuthenticator.test.js.map +1 -0
  63. package/dist/http/contrib/basicAuthDecoder.d.ts +13 -0
  64. package/dist/http/contrib/basicAuthDecoder.d.ts.map +1 -0
  65. package/dist/http/contrib/basicAuthDecoder.js +23 -0
  66. package/dist/http/contrib/basicAuthDecoder.js.map +1 -0
  67. package/dist/http/contrib/basicAuthDecoder.test.d.ts +2 -0
  68. package/dist/http/contrib/basicAuthDecoder.test.d.ts.map +1 -0
  69. package/dist/http/contrib/basicAuthDecoder.test.js +31 -0
  70. package/dist/http/contrib/basicAuthDecoder.test.js.map +1 -0
  71. package/dist/http/contrib/bodyValidator.d.ts +11 -0
  72. package/dist/http/contrib/bodyValidator.d.ts.map +1 -0
  73. package/dist/http/contrib/bodyValidator.js +15 -0
  74. package/dist/http/contrib/bodyValidator.js.map +1 -0
  75. package/dist/http/contrib/bodyValidator.test.d.ts +2 -0
  76. package/dist/http/contrib/bodyValidator.test.d.ts.map +1 -0
  77. package/dist/http/contrib/bodyValidator.test.js +58 -0
  78. package/dist/http/contrib/bodyValidator.test.js.map +1 -0
  79. package/dist/http/contrib/envValidator.d.ts +10 -0
  80. package/dist/http/contrib/envValidator.d.ts.map +1 -0
  81. package/dist/http/contrib/envValidator.js +12 -0
  82. package/dist/http/contrib/envValidator.js.map +1 -0
  83. package/dist/http/contrib/envValidator.test.d.ts +2 -0
  84. package/dist/http/contrib/envValidator.test.d.ts.map +1 -0
  85. package/dist/http/contrib/envValidator.test.js +49 -0
  86. package/dist/http/contrib/envValidator.test.js.map +1 -0
  87. package/dist/http/contrib/headerSignatureAuthorizer/index.d.ts +13 -0
  88. package/dist/http/contrib/headerSignatureAuthorizer/index.d.ts.map +1 -0
  89. package/dist/http/contrib/headerSignatureAuthorizer/index.js +22 -0
  90. package/dist/http/contrib/headerSignatureAuthorizer/index.js.map +1 -0
  91. package/dist/http/contrib/headerSignatureAuthorizer/index.test.d.ts +2 -0
  92. package/dist/http/contrib/headerSignatureAuthorizer/index.test.d.ts.map +1 -0
  93. package/dist/http/contrib/headerSignatureAuthorizer/index.test.js +39 -0
  94. package/dist/http/contrib/headerSignatureAuthorizer/index.test.js.map +1 -0
  95. package/dist/http/contrib/headerSignatureAuthorizer/lib.d.ts +4 -0
  96. package/dist/http/contrib/headerSignatureAuthorizer/lib.d.ts.map +1 -0
  97. package/dist/http/contrib/headerSignatureAuthorizer/lib.js +13 -0
  98. package/dist/http/contrib/headerSignatureAuthorizer/lib.js.map +1 -0
  99. package/dist/http/contrib/headerSignatureAuthorizer/lib.test.d.ts +2 -0
  100. package/dist/http/contrib/headerSignatureAuthorizer/lib.test.d.ts.map +1 -0
  101. package/dist/http/contrib/headerSignatureAuthorizer/lib.test.js +9 -0
  102. package/dist/http/contrib/headerSignatureAuthorizer/lib.test.js.map +1 -0
  103. package/dist/http/contrib/headersNormalizer/index.d.ts +9 -0
  104. package/dist/http/contrib/headersNormalizer/index.d.ts.map +1 -0
  105. package/dist/http/contrib/headersNormalizer/index.js +8 -0
  106. package/dist/http/contrib/headersNormalizer/index.js.map +1 -0
  107. package/dist/http/contrib/headersNormalizer/index.test.d.ts +2 -0
  108. package/dist/http/contrib/headersNormalizer/index.test.d.ts.map +1 -0
  109. package/dist/http/contrib/headersNormalizer/index.test.js +38 -0
  110. package/dist/http/contrib/headersNormalizer/index.test.js.map +1 -0
  111. package/dist/http/contrib/headersNormalizer/lib.d.ts +11 -0
  112. package/dist/http/contrib/headersNormalizer/lib.d.ts.map +1 -0
  113. package/dist/http/contrib/headersNormalizer/lib.js +64 -0
  114. package/dist/http/contrib/headersNormalizer/lib.js.map +1 -0
  115. package/dist/http/contrib/headersNormalizer/lib.test.d.ts +2 -0
  116. package/dist/http/contrib/headersNormalizer/lib.test.d.ts.map +1 -0
  117. package/dist/http/contrib/headersNormalizer/lib.test.js +35 -0
  118. package/dist/http/contrib/headersNormalizer/lib.test.js.map +1 -0
  119. package/dist/http/contrib/headersNormalizer/types.d.ts +10 -0
  120. package/dist/http/contrib/headersNormalizer/types.d.ts.map +1 -0
  121. package/dist/http/contrib/headersNormalizer/types.js +2 -0
  122. package/dist/http/contrib/headersNormalizer/types.js.map +1 -0
  123. package/dist/http/contrib/headersValidator.d.ts +12 -0
  124. package/dist/http/contrib/headersValidator.d.ts.map +1 -0
  125. package/dist/http/contrib/headersValidator.js +15 -0
  126. package/dist/http/contrib/headersValidator.js.map +1 -0
  127. package/dist/http/contrib/headersValidator.test.d.ts +2 -0
  128. package/dist/http/contrib/headersValidator.test.d.ts.map +1 -0
  129. package/dist/http/contrib/headersValidator.test.js +46 -0
  130. package/dist/http/contrib/headersValidator.test.js.map +1 -0
  131. package/dist/http/contrib/helmetJsHeaders.d.ts +5 -0
  132. package/dist/http/contrib/helmetJsHeaders.d.ts.map +1 -0
  133. package/dist/http/contrib/helmetJsHeaders.js +25 -0
  134. package/dist/http/contrib/helmetJsHeaders.js.map +1 -0
  135. package/dist/http/contrib/helmetJsHeaders.test.d.ts +2 -0
  136. package/dist/http/contrib/helmetJsHeaders.test.d.ts.map +1 -0
  137. package/dist/http/contrib/helmetJsHeaders.test.js +18 -0
  138. package/dist/http/contrib/helmetJsHeaders.test.js.map +1 -0
  139. package/dist/http/contrib/honoAdapter.d.ts +16 -0
  140. package/dist/http/contrib/honoAdapter.d.ts.map +1 -0
  141. package/dist/http/contrib/honoAdapter.js +28 -0
  142. package/dist/http/contrib/honoAdapter.js.map +1 -0
  143. package/dist/http/contrib/honoAdapter.test.d.ts +2 -0
  144. package/dist/http/contrib/honoAdapter.test.d.ts.map +1 -0
  145. package/dist/http/contrib/honoAdapter.test.js +75 -0
  146. package/dist/http/contrib/honoAdapter.test.js.map +1 -0
  147. package/dist/http/contrib/identity.d.ts +4 -0
  148. package/dist/http/contrib/identity.d.ts.map +1 -0
  149. package/dist/http/contrib/identity.js +3 -0
  150. package/dist/http/contrib/identity.js.map +1 -0
  151. package/dist/http/contrib/identity.test.d.ts +2 -0
  152. package/dist/http/contrib/identity.test.d.ts.map +1 -0
  153. package/dist/http/contrib/identity.test.js +12 -0
  154. package/dist/http/contrib/identity.test.js.map +1 -0
  155. package/dist/http/contrib/index.d.ts +25 -0
  156. package/dist/http/contrib/index.d.ts.map +1 -0
  157. package/dist/http/contrib/index.js +25 -0
  158. package/dist/http/contrib/index.js.map +1 -0
  159. package/dist/http/contrib/jsonBodyParserRequest.d.ts +10 -0
  160. package/dist/http/contrib/jsonBodyParserRequest.d.ts.map +1 -0
  161. package/dist/http/contrib/jsonBodyParserRequest.js +22 -0
  162. package/dist/http/contrib/jsonBodyParserRequest.js.map +1 -0
  163. package/dist/http/contrib/jsonBodyParserRequest.test.d.ts +2 -0
  164. package/dist/http/contrib/jsonBodyParserRequest.test.d.ts.map +1 -0
  165. package/dist/http/contrib/jsonBodyParserRequest.test.js +37 -0
  166. package/dist/http/contrib/jsonBodyParserRequest.test.js.map +1 -0
  167. package/dist/http/contrib/jsonBodySerializerResponse.d.ts +9 -0
  168. package/dist/http/contrib/jsonBodySerializerResponse.d.ts.map +1 -0
  169. package/dist/http/contrib/jsonBodySerializerResponse.js +15 -0
  170. package/dist/http/contrib/jsonBodySerializerResponse.js.map +1 -0
  171. package/dist/http/contrib/jsonBodySerializerResponse.test.d.ts +2 -0
  172. package/dist/http/contrib/jsonBodySerializerResponse.test.d.ts.map +1 -0
  173. package/dist/http/contrib/jsonBodySerializerResponse.test.js +31 -0
  174. package/dist/http/contrib/jsonBodySerializerResponse.test.js.map +1 -0
  175. package/dist/http/contrib/jwtAuthenticator.d.ts +15 -0
  176. package/dist/http/contrib/jwtAuthenticator.d.ts.map +1 -0
  177. package/dist/http/contrib/jwtAuthenticator.js +28 -0
  178. package/dist/http/contrib/jwtAuthenticator.js.map +1 -0
  179. package/dist/http/contrib/jwtAuthenticator.test.d.ts +2 -0
  180. package/dist/http/contrib/jwtAuthenticator.test.d.ts.map +1 -0
  181. package/dist/http/contrib/jwtAuthenticator.test.js +88 -0
  182. package/dist/http/contrib/jwtAuthenticator.test.js.map +1 -0
  183. package/dist/http/contrib/jwtAuthenticatorRsa.d.ts +15 -0
  184. package/dist/http/contrib/jwtAuthenticatorRsa.d.ts.map +1 -0
  185. package/dist/http/contrib/jwtAuthenticatorRsa.js +28 -0
  186. package/dist/http/contrib/jwtAuthenticatorRsa.js.map +1 -0
  187. package/dist/http/contrib/jwtAuthenticatorRsa.test.d.ts +2 -0
  188. package/dist/http/contrib/jwtAuthenticatorRsa.test.d.ts.map +1 -0
  189. package/dist/http/contrib/jwtAuthenticatorRsa.test.js +88 -0
  190. package/dist/http/contrib/jwtAuthenticatorRsa.test.js.map +1 -0
  191. package/dist/http/contrib/jwtDecoder.d.ts +13 -0
  192. package/dist/http/contrib/jwtDecoder.d.ts.map +1 -0
  193. package/dist/http/contrib/jwtDecoder.js +23 -0
  194. package/dist/http/contrib/jwtDecoder.js.map +1 -0
  195. package/dist/http/contrib/jwtDecoder.test.d.ts +2 -0
  196. package/dist/http/contrib/jwtDecoder.test.d.ts.map +1 -0
  197. package/dist/http/contrib/jwtDecoder.test.js +76 -0
  198. package/dist/http/contrib/jwtDecoder.test.js.map +1 -0
  199. package/dist/http/contrib/pathParametersValidator.d.ts +12 -0
  200. package/dist/http/contrib/pathParametersValidator.d.ts.map +1 -0
  201. package/dist/http/contrib/pathParametersValidator.js +15 -0
  202. package/dist/http/contrib/pathParametersValidator.js.map +1 -0
  203. package/dist/http/contrib/pathParametersValidator.test.d.ts +2 -0
  204. package/dist/http/contrib/pathParametersValidator.test.d.ts.map +1 -0
  205. package/dist/http/contrib/pathParametersValidator.test.js +46 -0
  206. package/dist/http/contrib/pathParametersValidator.test.js.map +1 -0
  207. package/dist/http/contrib/pathTokenAuthorizer.d.ts +13 -0
  208. package/dist/http/contrib/pathTokenAuthorizer.d.ts.map +1 -0
  209. package/dist/http/contrib/pathTokenAuthorizer.js +19 -0
  210. package/dist/http/contrib/pathTokenAuthorizer.js.map +1 -0
  211. package/dist/http/contrib/pathTokenAuthorizer.test.d.ts +2 -0
  212. package/dist/http/contrib/pathTokenAuthorizer.test.d.ts.map +1 -0
  213. package/dist/http/contrib/pathTokenAuthorizer.test.js +29 -0
  214. package/dist/http/contrib/pathTokenAuthorizer.test.js.map +1 -0
  215. package/dist/http/contrib/queryStringValidator.d.ts +12 -0
  216. package/dist/http/contrib/queryStringValidator.d.ts.map +1 -0
  217. package/dist/http/contrib/queryStringValidator.js +15 -0
  218. package/dist/http/contrib/queryStringValidator.js.map +1 -0
  219. package/dist/http/contrib/queryStringValidator.test.d.ts +2 -0
  220. package/dist/http/contrib/queryStringValidator.test.d.ts.map +1 -0
  221. package/dist/http/contrib/queryStringValidator.test.js +46 -0
  222. package/dist/http/contrib/queryStringValidator.test.js.map +1 -0
  223. package/dist/http/contrib/requestResponseLogger.d.ts +5 -0
  224. package/dist/http/contrib/requestResponseLogger.d.ts.map +1 -0
  225. package/dist/http/contrib/requestResponseLogger.js +8 -0
  226. package/dist/http/contrib/requestResponseLogger.js.map +1 -0
  227. package/dist/http/contrib/requestResponseLogger.test.d.ts +2 -0
  228. package/dist/http/contrib/requestResponseLogger.test.d.ts.map +1 -0
  229. package/dist/http/contrib/requestResponseLogger.test.js +18 -0
  230. package/dist/http/contrib/requestResponseLogger.test.js.map +1 -0
  231. package/dist/http/contrib/responseProcessor.d.ts +8 -0
  232. package/dist/http/contrib/responseProcessor.d.ts.map +1 -0
  233. package/dist/http/contrib/responseProcessor.js +16 -0
  234. package/dist/http/contrib/responseProcessor.js.map +1 -0
  235. package/dist/http/contrib/responseProcessor.test.d.ts +2 -0
  236. package/dist/http/contrib/responseProcessor.test.d.ts.map +1 -0
  237. package/dist/http/contrib/responseProcessor.test.js +29 -0
  238. package/dist/http/contrib/responseProcessor.test.js.map +1 -0
  239. package/dist/http/contrib/standardRequestResponseAdapter.d.ts +16 -0
  240. package/dist/http/contrib/standardRequestResponseAdapter.d.ts.map +1 -0
  241. package/dist/http/contrib/standardRequestResponseAdapter.js +27 -0
  242. package/dist/http/contrib/standardRequestResponseAdapter.js.map +1 -0
  243. package/dist/http/contrib/standardRequestResponseAdapter.test.d.ts +2 -0
  244. package/dist/http/contrib/standardRequestResponseAdapter.test.d.ts.map +1 -0
  245. package/dist/http/contrib/standardRequestResponseAdapter.test.js +85 -0
  246. package/dist/http/contrib/standardRequestResponseAdapter.test.js.map +1 -0
  247. package/dist/http/contrib/trivial.d.ts +5 -0
  248. package/dist/http/contrib/trivial.d.ts.map +1 -0
  249. package/dist/http/contrib/trivial.js +9 -0
  250. package/dist/http/contrib/trivial.js.map +1 -0
  251. package/dist/http/contrib/trivial.test.d.ts +2 -0
  252. package/dist/http/contrib/trivial.test.d.ts.map +1 -0
  253. package/dist/http/contrib/trivial.test.js +14 -0
  254. package/dist/http/contrib/trivial.test.js.map +1 -0
  255. package/dist/http/index.d.ts +6 -0
  256. package/dist/http/index.d.ts.map +1 -0
  257. package/dist/http/index.js +6 -0
  258. package/dist/http/index.js.map +1 -0
  259. package/dist/index.d.ts +3 -0
  260. package/dist/index.d.ts.map +1 -0
  261. package/dist/index.js +3 -0
  262. package/dist/index.js.map +1 -0
  263. package/dist/lib/Logger.d.ts +23 -0
  264. package/dist/lib/Logger.d.ts.map +1 -0
  265. package/dist/lib/Logger.js +30 -0
  266. package/dist/lib/Logger.js.map +1 -0
  267. package/dist/lib/Logger.test.d.ts +2 -0
  268. package/dist/lib/Logger.test.d.ts.map +1 -0
  269. package/dist/lib/Logger.test.js +54 -0
  270. package/dist/lib/Logger.test.js.map +1 -0
  271. package/dist/lib/MiddlewareError.d.ts +10 -0
  272. package/dist/lib/MiddlewareError.d.ts.map +1 -0
  273. package/dist/lib/MiddlewareError.js +20 -0
  274. package/dist/lib/MiddlewareError.js.map +1 -0
  275. package/dist/lib/MiddlewareError.test.d.ts +2 -0
  276. package/dist/lib/MiddlewareError.test.d.ts.map +1 -0
  277. package/dist/lib/MiddlewareError.test.js +55 -0
  278. package/dist/lib/MiddlewareError.test.js.map +1 -0
  279. package/dist/lib/index.d.ts +4 -0
  280. package/dist/lib/index.d.ts.map +1 -0
  281. package/dist/lib/index.js +4 -0
  282. package/dist/lib/index.js.map +1 -0
  283. package/dist/lib/utils.d.ts +7 -0
  284. package/dist/lib/utils.d.ts.map +1 -0
  285. package/dist/lib/utils.js +11 -0
  286. package/dist/lib/utils.js.map +1 -0
  287. package/dist/lib/utils.test.d.ts +2 -0
  288. package/dist/lib/utils.test.d.ts.map +1 -0
  289. package/dist/lib/utils.test.js +47 -0
  290. package/dist/lib/utils.test.js.map +1 -0
  291. package/dist/test/kitchen-sink.test.d.ts +2 -0
  292. package/dist/test/kitchen-sink.test.d.ts.map +1 -0
  293. package/dist/test/kitchen-sink.test.js +76 -0
  294. package/dist/test/kitchen-sink.test.js.map +1 -0
  295. package/dist/test/round-trip.test.d.ts +2 -0
  296. package/dist/test/round-trip.test.d.ts.map +1 -0
  297. package/dist/test/round-trip.test.js +75 -0
  298. package/dist/test/round-trip.test.js.map +1 -0
  299. package/dist/test/test-common.d.ts +17 -0
  300. package/dist/test/test-common.d.ts.map +1 -0
  301. package/dist/test/test-common.js +25 -0
  302. package/dist/test/test-common.js.map +1 -0
  303. package/package.json +265 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/http/contrib/headerSignatureAuthorizer/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ResultR } from '@konker.dev/neverthrow-r';
2
+ import { type HttpApiError } from '../../HttpApiError.js';
3
+ export declare function validateHeaderSignature(signature: string | undefined, requestRawBody: unknown, secret: string): ResultR<unknown, boolean, HttpApiError>;
4
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/headerSignatureAuthorizer/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAIpE,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,uBAAuB,CAAC;AAE1E,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,cAAc,EAAE,OAAO,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAazC"}
@@ -0,0 +1,13 @@
1
+ import { fromResult } from '@konker.dev/neverthrow-r';
2
+ import { sha256HmacHex } from '@konker.dev/neverthrow-r-utils/hash';
3
+ import { ok } from 'neverthrow';
4
+ import { toHttpApiError } from '../../HttpApiError.js';
5
+ export function validateHeaderSignature(signature, requestRawBody, secret) {
6
+ if (!signature) {
7
+ return fromResult(ok(false));
8
+ }
9
+ return fromResult(sha256HmacHex(String(requestRawBody), secret)(undefined)
10
+ .map((calculatedHmac) => calculatedHmac === signature)
11
+ .mapErr(toHttpApiError));
12
+ }
13
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../../src/http/contrib/headerSignatureAuthorizer/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgB,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAEhC,OAAO,EAAqB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE1E,MAAM,UAAU,uBAAuB,CACrC,SAA6B,EAC7B,cAAuB,EACvB,MAAc;IAEd,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CACf,aAAa,CACX,MAAM,CAAC,cAAc,CAAC,EACtB,MAAM,CACP,CAAC,SAAS,CAAC;SACT,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,KAAK,SAAS,CAAC;SACrD,MAAM,CAAC,cAAc,CAAC,CAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lib.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.test.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/headerSignatureAuthorizer/lib.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { validateHeaderSignature } from './lib.js';
3
+ describe('headerSignatureAuthorizer/lib', () => {
4
+ it('returns false when the signature is missing', () => {
5
+ const result = validateHeaderSignature(undefined, 'body', 'secret')(undefined);
6
+ expect(result.isOk() && result.value).toBe(false);
7
+ });
8
+ });
9
+ //# sourceMappingURL=lib.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.test.js","sourceRoot":"","sources":["../../../../src/http/contrib/headerSignatureAuthorizer/lib.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;QAE/E,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { WithLogger } from '../../../lib/Logger.js';
2
+ import type { Override, Rec, RequestResponseHandler } from '../../RequestResponseHandler.js';
3
+ import type { WithNormalizedInputHeaders, WithNormalizedOutputHeaders } from './types.js';
4
+ export declare const TAG = "headersNormalizer";
5
+ export declare const middleware: ({ normalizeRequestHeaders, normalizeResponseHeaders }?: {
6
+ normalizeRequestHeaders?: boolean | undefined;
7
+ normalizeResponseHeaders?: boolean | undefined;
8
+ }) => <I extends Rec, O extends Rec, E, R>(wrapped: RequestResponseHandler<Override<I, WithNormalizedInputHeaders>, R, O, E>) => RequestResponseHandler<I, R & WithLogger, Override<O, WithNormalizedOutputHeaders>, E>;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/headersNormalizer/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAG7F,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE1F,eAAO,MAAM,GAAG,sBAAsB,CAAC;AAEvC,eAAO,MAAM,UAAU,GACpB;;;CAAwE,MACxE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EACjC,SAAS,sBAAsB,CAAC,QAAQ,CAAC,CAAC,EAAE,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAChF,sBAAsB,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,2BAA2B,CAAC,EAAE,CAAC,CASrF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { andThenAsync, mapAsync } from '@konker.dev/neverthrow-r/async';
2
+ import { okAsyncR } from '@konker.dev/neverthrow-r/constructors';
3
+ import { pipe } from '@konker.dev/neverthrow-r/pipe';
4
+ import { tapLogger } from '../../../lib/Logger.js';
5
+ import { transformInput, transformOutput } from './lib.js';
6
+ export const TAG = 'headersNormalizer';
7
+ export const middleware = ({ normalizeRequestHeaders = true, normalizeResponseHeaders = true } = {}) => (wrapped) => (i) => pipe(okAsyncR(i), tapLogger('debug', `[${TAG}] IN`), mapAsync(transformInput(normalizeRequestHeaders)), andThenAsync(wrapped), mapAsync(transformOutput(normalizeResponseHeaders)), tapLogger('debug', `[${TAG}] OUT`));
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/http/contrib/headersNormalizer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3D,MAAM,CAAC,MAAM,GAAG,GAAG,mBAAmB,CAAC;AAEvC,MAAM,CAAC,MAAM,UAAU,GACrB,CAAC,EAAE,uBAAuB,GAAG,IAAI,EAAE,wBAAwB,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAC7E,CACE,OAAiF,EACO,EAAE,CAC5F,CAAC,CAAc,EAAE,EAAE,CACjB,IAAI,CACF,QAAQ,CAAC,CAAC,CAAC,EACX,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,EACjC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC,EACjD,YAAY,CAAC,OAAO,CAAC,EACrB,QAAQ,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC,EACnD,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,CACnC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/headersNormalizer/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ import { okAsyncR } from '@konker.dev/neverthrow-r/constructors';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { recordingLogger, sampleRequestW } from '../../../test/test-common.js';
4
+ import { makeRequestW } from '../../RequestW.js';
5
+ import { EMPTY_RESPONSE_W } from '../../ResponseW.js';
6
+ import { middleware as headersNormalizer } from './index.js';
7
+ describe('headersNormalizer', () => {
8
+ it('normalizes request and response header casing by default', async () => {
9
+ const { logger } = recordingLogger();
10
+ const wrapped = headersNormalizer()((req) => okAsyncR({
11
+ ...EMPTY_RESPONSE_W,
12
+ headers: req.headers,
13
+ }));
14
+ const input = makeRequestW(sampleRequestW, { headers: { FOO: 'bar' } });
15
+ const result = await wrapped(input)({ logger });
16
+ expect(result.isOk() && result.value.headers).toEqual({ Foo: 'bar' });
17
+ });
18
+ it('can skip request header normalization', async () => {
19
+ const { logger } = recordingLogger();
20
+ const wrapped = headersNormalizer({ normalizeRequestHeaders: false })((req) => okAsyncR({
21
+ ...EMPTY_RESPONSE_W,
22
+ body: req.headers,
23
+ }));
24
+ const input = makeRequestW(sampleRequestW, { headers: { FOO: 'bar' } });
25
+ const result = await wrapped(input)({ logger });
26
+ expect(result.isOk() && result.value.body).toEqual({ FOO: 'bar' });
27
+ });
28
+ it('can skip response header normalization', async () => {
29
+ const { logger } = recordingLogger();
30
+ const wrapped = headersNormalizer({ normalizeResponseHeaders: false })(() => okAsyncR({
31
+ ...EMPTY_RESPONSE_W,
32
+ headers: { foo: 'bar' },
33
+ }));
34
+ const result = await wrapped(sampleRequestW)({ logger });
35
+ expect(result.isOk() && result.value.headers).toEqual({ foo: 'bar' });
36
+ });
37
+ });
38
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/http/contrib/headersNormalizer/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAkB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE7D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1C,QAAQ,CAAY;YAClB,GAAG,gBAAgB;YACnB,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CACH,CAAC;QACF,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAC5E,QAAQ,CAAY;YAClB,GAAG,gBAAgB;YACnB,IAAI,EAAE,GAAG,CAAC,OAAO;SACL,CAAC,CAChB,CAAC;QACF,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAC1E,QAAQ,CAAY;YAClB,GAAG,gBAAgB;YACnB,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;SACxB,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAEzD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Override, Rec } from '../../Rec.js';
2
+ import { type RequestW } from '../../RequestW.js';
3
+ import { type ResponseW } from '../../ResponseW.js';
4
+ import type { WithNormalizedInputHeaders, WithNormalizedOutputHeaders } from './types.js';
5
+ export declare function fromExceptionList(s: string): string | undefined;
6
+ export declare function lowerCaseNormalizer(s: string): string;
7
+ export declare function canonicalNormalizer(s: string): string;
8
+ export declare function normalizeKeys(rec: Record<string, string | number | boolean | undefined> | undefined, normalizer: (s: string) => string): Record<string, string>;
9
+ export declare const transformInput: <I extends Rec>(normalizeRequestHeaders: boolean) => (i: RequestW<I>) => RequestW<Override<I, WithNormalizedInputHeaders>>;
10
+ export declare const transformOutput: <O extends Rec>(normalizeResponseHeaders: boolean) => (o: ResponseW<O>) => ResponseW<Override<O, WithNormalizedOutputHeaders>>;
11
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/headersNormalizer/lib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAkC1F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/D;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CASrD;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,EACtE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUxB;AAED,eAAO,MAAM,cAAc,GACxB,CAAC,SAAS,GAAG,EAAE,yBAAyB,OAAO,MAC/C,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAI9D,CAAC;AAEP,eAAO,MAAM,eAAe,GACzB,CAAC,SAAS,GAAG,EAAE,0BAA0B,OAAO,MAChD,GAAG,SAAS,CAAC,CAAC,CAAC,KAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAGjE,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { makeRequestW } from '../../RequestW.js';
2
+ import { makeResponseW } from '../../ResponseW.js';
3
+ const EXCEPTIONS_LIST = [
4
+ 'ALPN',
5
+ 'C-PEP',
6
+ 'C-PEP-Info',
7
+ 'CalDAV-Timezones',
8
+ 'Content-ID',
9
+ 'Content-MD5',
10
+ 'DASL',
11
+ 'DAV',
12
+ 'DNT',
13
+ 'ETag',
14
+ 'GetProfile',
15
+ 'HTTP2-Settings',
16
+ 'Last-Event-ID',
17
+ 'MIME-Version',
18
+ 'Optional-WWW-Authenticate',
19
+ 'Sec-WebSocket-Accept',
20
+ 'Sec-WebSocket-Extensions',
21
+ 'Sec-WebSocket-Key',
22
+ 'Sec-WebSocket-Protocol',
23
+ 'Sec-WebSocket-Version',
24
+ 'SLUG',
25
+ 'TCN',
26
+ 'TE',
27
+ 'TTL',
28
+ 'WWW-Authenticate',
29
+ 'X-ATT-DeviceId',
30
+ 'X-DNSPrefetch-Control',
31
+ 'X-UIDH',
32
+ 'X-XSS-Protection',
33
+ ];
34
+ export function fromExceptionList(s) {
35
+ const lower = s.toLowerCase();
36
+ return EXCEPTIONS_LIST.find((item) => item.toLowerCase() === lower);
37
+ }
38
+ export function lowerCaseNormalizer(s) {
39
+ return s.toLowerCase();
40
+ }
41
+ export function canonicalNormalizer(s) {
42
+ const exception = fromExceptionList(s);
43
+ return (exception ??
44
+ s
45
+ .split('-')
46
+ .map((part) => part.charAt(0).toUpperCase() + part.substring(1).toLowerCase())
47
+ .join('-'));
48
+ }
49
+ export function normalizeKeys(rec, normalizer) {
50
+ return rec
51
+ ? Object.keys(rec).reduce((acc, key) => ({
52
+ ...acc,
53
+ [normalizer(key)]: String(rec[key] ?? ''),
54
+ }), {})
55
+ : {};
56
+ }
57
+ export const transformInput = (normalizeRequestHeaders) => (i) => makeRequestW(i, {
58
+ headers: normalizeRequestHeaders ? normalizeKeys(i.headers, lowerCaseNormalizer) : { ...i.headers },
59
+ headersNormalizerRequestRaw: i.headers,
60
+ });
61
+ export const transformOutput = (normalizeResponseHeaders) => (o) => makeResponseW(o, {
62
+ headers: normalizeResponseHeaders ? normalizeKeys(o.headers, canonicalNormalizer) : { ...o.headers },
63
+ });
64
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../../src/http/contrib/headersNormalizer/lib.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAiB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAkB,MAAM,oBAAoB,CAAC;AAGnE,MAAM,eAAe,GAAG;IACtB,MAAM;IACN,OAAO;IACP,YAAY;IACZ,kBAAkB;IAClB,YAAY;IACZ,aAAa;IACb,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,YAAY;IACZ,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,2BAA2B;IAC3B,sBAAsB;IACtB,0BAA0B;IAC1B,mBAAmB;IACnB,wBAAwB;IACxB,uBAAuB;IACvB,MAAM;IACN,KAAK;IACL,IAAI;IACJ,KAAK;IACL,kBAAkB;IAClB,gBAAgB;IAChB,uBAAuB;IACvB,QAAQ;IACR,kBAAkB;CACV,CAAC;AAEX,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAS;IAC3C,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAS;IAC3C,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CACL,SAAS;QACT,CAAC;aACE,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC7E,IAAI,CAAC,GAAG,CAAC,CACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAsE,EACtE,UAAiC;IAEjC,OAAO,GAAG;QACR,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CACrB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,GAAG,GAAG;YACN,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SAC1C,CAAC,EACF,EAAE,CACH;QACH,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GACzB,CAAgB,uBAAgC,EAAE,EAAE,CACpD,CAAC,CAAc,EAAqD,EAAE,CACpE,YAAY,CAAC,CAAC,EAAE;IACd,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE;IACnG,2BAA2B,EAAE,CAAC,CAAC,OAAO;CACvC,CAAC,CAAC;AAEP,MAAM,CAAC,MAAM,eAAe,GAC1B,CAAgB,wBAAiC,EAAE,EAAE,CACrD,CAAC,CAAe,EAAuD,EAAE,CACvE,aAAa,CAAC,CAAC,EAAE;IACf,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE;CACrG,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lib.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.test.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/headersNormalizer/lib.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { EMPTY_REQUEST_W } from '../../RequestW.js';
3
+ import { EMPTY_RESPONSE_W } from '../../ResponseW.js';
4
+ import { canonicalNormalizer, fromExceptionList, normalizeKeys, transformInput, transformOutput } from './lib.js';
5
+ describe('headersNormalizer/lib', () => {
6
+ it('uses the exception list for canonical names', () => {
7
+ expect(fromExceptionList('x-xss-protection')).toBe('X-XSS-Protection');
8
+ expect(canonicalNormalizer('x-xss-protection')).toBe('X-XSS-Protection');
9
+ });
10
+ it('returns an empty record when normalizing undefined', () => {
11
+ expect(normalizeKeys(undefined, (s) => s)).toEqual({});
12
+ });
13
+ it('stringifies non-string values while normalizing keys', () => {
14
+ expect(normalizeKeys({ foo: 1, bar: true }, (s) => s.toUpperCase())).toEqual({ FOO: '1', BAR: 'true' });
15
+ });
16
+ it('stringifies undefined values as empty strings', () => {
17
+ expect(normalizeKeys({ foo: undefined }, (s) => s)).toEqual({ foo: '' });
18
+ });
19
+ it('preserves raw request headers when request normalization is disabled', () => {
20
+ const result = transformInput(false)({
21
+ ...EMPTY_REQUEST_W,
22
+ headers: { FOO: 'bar' },
23
+ });
24
+ expect(result.headers).toEqual({ FOO: 'bar' });
25
+ expect(result.headersNormalizerRequestRaw).toEqual({ FOO: 'bar' });
26
+ });
27
+ it('preserves response header keys when response normalization is disabled', () => {
28
+ const result = transformOutput(false)({
29
+ ...EMPTY_RESPONSE_W,
30
+ headers: { foo: 'bar' },
31
+ });
32
+ expect(result.headers).toEqual({ foo: 'bar' });
33
+ });
34
+ });
35
+ //# sourceMappingURL=lib.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.test.js","sourceRoot":"","sources":["../../../../src/http/contrib/headersNormalizer/lib.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAElH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACvE,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1G,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACnC,GAAG,eAAe;YAClB,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACpC,GAAG,gBAAgB;YACnB,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { RequestW } from '../../RequestW.js';
2
+ import type { ResponseW } from '../../ResponseW.js';
3
+ export type WithNormalizedInputHeaders = {
4
+ readonly headers: RequestW['headers'];
5
+ readonly headersNormalizerRequestRaw: Record<string, string>;
6
+ };
7
+ export type WithNormalizedOutputHeaders = {
8
+ readonly headers: ResponseW['headers'];
9
+ };
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/headersNormalizer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9D,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACxC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/http/contrib/headersNormalizer/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { StandardSchemaV1 } from '@standard-schema/spec';
2
+ import type { WithLogger } from '../../lib/Logger.js';
3
+ import type { MiddlewareError } from '../../lib/MiddlewareError.js';
4
+ import type { Override, Rec, RequestResponseHandler } from '../RequestResponseHandler.js';
5
+ import { type RequestW } from '../RequestW.js';
6
+ export declare const TAG = "headersValidator";
7
+ export type WithValidatedHeaders<V> = {
8
+ readonly headers: V;
9
+ readonly headersValidatorRaw: RequestW['headers'] | undefined;
10
+ };
11
+ export declare const middleware: <V>(schema: StandardSchemaV1<unknown, V>) => <I extends Rec, O extends Rec, E, R>(wrapped: RequestResponseHandler<Override<I, WithValidatedHeaders<V>>, R, O, E>) => RequestResponseHandler<I, R & WithLogger, O, E | MiddlewareError>;
12
+ //# sourceMappingURL=headersValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headersValidator.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/headersValidator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG7D,eAAO,MAAM,GAAG,qBAAqB,CAAC;AAEtC,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;IACpC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;CAC/D,CAAC;AAKF,eAAO,MAAM,UAAU,GACpB,CAAC,EAAE,QAAQ,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,MACvC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EACjC,SAAS,sBAAsB,CAAC,QAAQ,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7E,sBAAsB,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,eAAe,CAgBhE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { andThenAsync, mapAsync, mapErrAsync } from '@konker.dev/neverthrow-r/async';
2
+ import { okAsyncR } from '@konker.dev/neverthrow-r/constructors';
3
+ import { pipe } from '@konker.dev/neverthrow-r/pipe';
4
+ import { andThenParseAsyncR } from '@konker.dev/neverthrow-r-schema/async';
5
+ import { tapLogger } from '../../lib/Logger.js';
6
+ import { middlewareError } from '../../lib/MiddlewareError.js';
7
+ import { makeRequestW } from '../RequestW.js';
8
+ import { makeResponseW } from '../ResponseW.js';
9
+ export const TAG = 'headersValidator';
10
+ const toMiddlewareError = (error) => middlewareError(error.message, error.cause === undefined ? error.issues : [error.cause, ...error.issues]);
11
+ export const middleware = (schema) => (wrapped) => (i) => pipe(okAsyncR(i.headers), tapLogger('debug', `[${TAG}] IN`), andThenParseAsyncR(schema, { message: 'Headers validation failed' }), mapErrAsync(toMiddlewareError), mapAsync((validatedHeaders) => makeRequestW(i, {
12
+ headers: validatedHeaders,
13
+ headersValidatorRaw: i.headers,
14
+ })), andThenAsync(wrapped), mapAsync((res) => makeResponseW(res)), tapLogger('debug', `[${TAG}] OUT`));
15
+ //# sourceMappingURL=headersValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headersValidator.js","sourceRoot":"","sources":["../../../src/http/contrib/headersValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAK3E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAiB,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,MAAM,GAAG,GAAG,kBAAkB,CAAC;AAOtC,MAAM,iBAAiB,GAAG,CAAC,KAA4B,EAAmB,EAAE,CAC1E,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5G,MAAM,CAAC,MAAM,UAAU,GACrB,CAAI,MAAoC,EAAE,EAAE,CAC5C,CACE,OAA8E,EACX,EAAE,CACvE,CAAC,CAAc,EAAE,EAAE,CACjB,IAAI,CACF,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EACnB,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,EACjC,kBAAkB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,EACpE,WAAW,CAAC,iBAAiB,CAAC,EAC9B,QAAQ,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAC5B,YAAY,CAAC,CAAC,EAAE;IACd,OAAO,EAAE,gBAAgB;IACzB,mBAAmB,EAAE,CAAC,CAAC,OAAO;CAC/B,CAAC,CACH,EACD,YAAY,CAAC,OAAO,CAAC,EACrB,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EACrC,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,CACnC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=headersValidator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headersValidator.test.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/headersValidator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ import { okAsyncR } from '@konker.dev/neverthrow-r/constructors';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { z } from 'zod';
4
+ import { recordingLogger, sampleRequestW } from '../../test/test-common.js';
5
+ import { makeRequestW } from '../RequestW.js';
6
+ import { EMPTY_RESPONSE_W } from '../ResponseW.js';
7
+ import { middleware as headersValidator } from './headersValidator.js';
8
+ describe('headersValidator', () => {
9
+ const schema = z.object({
10
+ foo: z.literal('foo_value'),
11
+ num: z.coerce.number(),
12
+ });
13
+ it('validates and replaces headers', async () => {
14
+ const { logger } = recordingLogger();
15
+ const wrapped = headersValidator(schema)((req) => okAsyncR({
16
+ ...EMPTY_RESPONSE_W,
17
+ body: req.headers,
18
+ }));
19
+ const input = makeRequestW(sampleRequestW, { headers: { foo: 'foo_value', num: '123' } });
20
+ const result = await wrapped(input)({ logger });
21
+ expect(result.isOk() && result.value.body).toEqual({ foo: 'foo_value', num: 123 });
22
+ });
23
+ it('returns a MiddlewareError when headers fail validation', async () => {
24
+ const { logger } = recordingLogger();
25
+ const wrapped = headersValidator(schema)(() => okAsyncR(EMPTY_RESPONSE_W));
26
+ const input = makeRequestW(sampleRequestW, { headers: { foo: 'bad', num: '123' } });
27
+ const result = await wrapped(input)({ logger });
28
+ expect(result.isErr() && result.error.message).toBe('Headers validation failed');
29
+ });
30
+ it('keeps a thrown validator cause in internal details', async () => {
31
+ const schema = {
32
+ '~standard': {
33
+ version: 1,
34
+ vendor: 'fixture',
35
+ validate: () => {
36
+ throw new Error('validator exploded');
37
+ },
38
+ },
39
+ };
40
+ const { logger } = recordingLogger();
41
+ const wrapped = headersValidator(schema)(() => okAsyncR(EMPTY_RESPONSE_W));
42
+ const result = await wrapped(makeRequestW(sampleRequestW, { headers: { foo: 'bar' } }))({ logger });
43
+ expect(result.isErr() && result.error.internal?.length).toBeGreaterThan(0);
44
+ });
45
+ });
46
+ //# sourceMappingURL=headersValidator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headersValidator.test.js","sourceRoot":"","sources":["../../../src/http/contrib/headersValidator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { WithLogger } from '../../lib/Logger.js';
2
+ import type { Rec, RequestResponseHandler } from '../RequestResponseHandler.js';
3
+ export declare const TAG = "helmetJsHeaders";
4
+ export declare const middleware: () => <I extends Rec, O extends Rec, E, R>(wrapped: RequestResponseHandler<I, R, O, E>) => RequestResponseHandler<I, R & WithLogger, O, E>;
5
+ //# sourceMappingURL=helmetJsHeaders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helmetJsHeaders.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/helmetJsHeaders.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAGhF,eAAO,MAAM,GAAG,oBAAoB,CAAC;AAErC,eAAO,MAAM,UAAU,SAEpB,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EACjC,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC1C,sBAAsB,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC,CA2B9C,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { andThenAsync, mapAsync } from '@konker.dev/neverthrow-r/async';
2
+ import { okAsyncR } from '@konker.dev/neverthrow-r/constructors';
3
+ import { pipe } from '@konker.dev/neverthrow-r/pipe';
4
+ import { tapLogger } from '../../lib/Logger.js';
5
+ export const TAG = 'helmetJsHeaders';
6
+ export const middleware = () => (wrapped) => (i) => pipe(okAsyncR(i), tapLogger('debug', `[${TAG}] IN`), andThenAsync(wrapped), mapAsync((x) => ({
7
+ ...x,
8
+ headers: {
9
+ 'Content-Security-Policy': "default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests",
10
+ 'Cross-Origin-Embedder-Policy': 'require-corp',
11
+ 'Cross-Origin-Opener-Policy': 'same-origin',
12
+ 'Cross-Origin-Resource-Policy': 'same-origin',
13
+ 'Origin-Agent-Cluster': '?1',
14
+ 'Referrer-Policy': 'no-referrer',
15
+ 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains',
16
+ 'X-Content-Type-Options': 'nosniff',
17
+ 'X-DNS-Prefetch-Control': 'off',
18
+ 'X-Download-Options': 'noopen',
19
+ 'X-Frame-Options': 'SAMEORIGIN',
20
+ 'X-Permitted-Cross-Domain-Policies': 'none',
21
+ 'X-XSS-Protection': '0',
22
+ ...x.headers,
23
+ },
24
+ })), tapLogger('debug', `[${TAG}] OUT`));
25
+ //# sourceMappingURL=helmetJsHeaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helmetJsHeaders.js","sourceRoot":"","sources":["../../../src/http/contrib/helmetJsHeaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIhD,MAAM,CAAC,MAAM,GAAG,GAAG,iBAAiB,CAAC;AAErC,MAAM,CAAC,MAAM,UAAU,GACrB,GAAG,EAAE,CACL,CACE,OAA2C,EACM,EAAE,CACrD,CAAC,CAAc,EAAE,EAAE,CACjB,IAAI,CACF,QAAQ,CAAC,CAAC,CAAC,EACX,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,EACjC,YAAY,CAAC,OAAO,CAAC,EACrB,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACf,GAAG,CAAC;IACJ,OAAO,EAAE;QACP,yBAAyB,EACvB,6PAA6P;QAC/P,8BAA8B,EAAE,cAAc;QAC9C,4BAA4B,EAAE,aAAa;QAC3C,8BAA8B,EAAE,aAAa;QAC7C,sBAAsB,EAAE,IAAI;QAC5B,iBAAiB,EAAE,aAAa;QAChC,2BAA2B,EAAE,qCAAqC;QAClE,wBAAwB,EAAE,SAAS;QACnC,wBAAwB,EAAE,KAAK;QAC/B,oBAAoB,EAAE,QAAQ;QAC9B,iBAAiB,EAAE,YAAY;QAC/B,mCAAmC,EAAE,MAAM;QAC3C,kBAAkB,EAAE,GAAG;QACvB,GAAG,CAAC,CAAC,OAAO;KACb;CACF,CAAC,CAAC,EACH,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,CACnC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=helmetJsHeaders.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helmetJsHeaders.test.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/helmetJsHeaders.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { okAsyncR } from '@konker.dev/neverthrow-r/constructors';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { recordingLogger, sampleRequestW } from '../../test/test-common.js';
4
+ import { EMPTY_RESPONSE_W } from '../ResponseW.js';
5
+ import { middleware as helmetJsHeaders } from './helmetJsHeaders.js';
6
+ describe('helmetJsHeaders', () => {
7
+ it('adds the default security headers', async () => {
8
+ const { logger } = recordingLogger();
9
+ const wrapped = helmetJsHeaders()(() => okAsyncR(EMPTY_RESPONSE_W));
10
+ const result = await wrapped(sampleRequestW)({ logger });
11
+ expect(result.isOk() && result.value.headers).toMatchObject({
12
+ 'Cross-Origin-Embedder-Policy': 'require-corp',
13
+ 'Cross-Origin-Opener-Policy': 'same-origin',
14
+ 'X-Content-Type-Options': 'nosniff',
15
+ });
16
+ });
17
+ });
18
+ //# sourceMappingURL=helmetJsHeaders.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helmetJsHeaders.test.js","sourceRoot":"","sources":["../../../src/http/contrib/helmetJsHeaders.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAkB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAErE,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAY,gBAAgB,CAAC,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAEzD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;YAC1D,8BAA8B,EAAE,cAAc;YAC9C,4BAA4B,EAAE,aAAa;YAC3C,wBAAwB,EAAE,SAAS;SACpC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { HonoRequest } from 'hono';
2
+ import { ResultAsync } from 'neverthrow';
3
+ import type { Handler } from '../../handler.js';
4
+ import type { WithLogger } from '../../lib/Logger.js';
5
+ import type { MiddlewareError } from '../../lib/MiddlewareError.js';
6
+ import type { StrBodyRec } from '../RequestResponseHandler.js';
7
+ import type { RequestW } from '../RequestW.js';
8
+ import type { ResponseW } from '../ResponseW.js';
9
+ export declare const TAG = "honoAdapter";
10
+ export type WithHonoRequestRaw = {
11
+ readonly honoRequestRaw: HonoRequest;
12
+ };
13
+ export declare function adaptFromHonoRequest(request: HonoRequest): ResultAsync<RequestW<WithHonoRequestRaw & StrBodyRec>, MiddlewareError>;
14
+ export declare function adaptToHonoResponse<O extends StrBodyRec>(responseW: ResponseW<O>): ResultAsync<Response, MiddlewareError>;
15
+ export declare const middleware: (_params?: never) => <O extends StrBodyRec, E, R>(wrapped: Handler<RequestW<WithHonoRequestRaw & StrBodyRec>, R, ResponseW<O>, E>) => Handler<HonoRequest, R & WithLogger, Response, E | MiddlewareError>;
16
+ //# sourceMappingURL=honoAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"honoAdapter.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/honoAdapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,eAAO,MAAM,GAAG,gBAAgB,CAAC;AAEjC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;CACtC,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,GACnB,WAAW,CAAC,QAAQ,CAAC,kBAAkB,GAAG,UAAU,CAAC,EAAE,eAAe,CAAC,CAazE;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EACtD,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GACtB,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,CASxC;AAED,eAAO,MAAM,UAAU,GACpB,UAAU,KAAK,MACf,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC,EACzB,SAAS,OAAO,CAAC,QAAQ,CAAC,kBAAkB,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAC9E,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,UAAU,EAAE,QAAQ,EAAE,CAAC,GAAG,eAAe,CASlE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { Buffer } from 'node:buffer';
2
+ import { andThenAsync } from '@konker.dev/neverthrow-r/async';
3
+ import { okAsyncR } from '@konker.dev/neverthrow-r/constructors';
4
+ import { pipe } from '@konker.dev/neverthrow-r/pipe';
5
+ import { ResultAsync } from 'neverthrow';
6
+ import { tapLogger } from '../../lib/Logger.js';
7
+ import { toMiddlewareError } from '../../lib/MiddlewareError.js';
8
+ import { sanitizeRecord } from '../../lib/utils.js';
9
+ export const TAG = 'honoAdapter';
10
+ export function adaptFromHonoRequest(request) {
11
+ return ResultAsync.fromPromise((async () => ({
12
+ url: request.url,
13
+ method: request.method,
14
+ body: await request.text(),
15
+ headers: sanitizeRecord(request.header()),
16
+ queryStringParameters: sanitizeRecord(request.query()),
17
+ pathParameters: sanitizeRecord(request.param()),
18
+ honoRequestRaw: request,
19
+ }))(), toMiddlewareError);
20
+ }
21
+ export function adaptToHonoResponse(responseW) {
22
+ return ResultAsync.fromPromise((async () => new Response(Buffer.from(responseW.body ?? ''), {
23
+ status: responseW.statusCode,
24
+ headers: new Headers(responseW.headers),
25
+ }))(), toMiddlewareError);
26
+ }
27
+ export const middleware = (_params) => (wrapped) => (i) => pipe(okAsyncR(i), tapLogger('debug', `[${TAG}] IN`), andThenAsync(() => (_r) => adaptFromHonoRequest(i)), andThenAsync(wrapped), andThenAsync((res) => (_r) => adaptToHonoResponse(res)), tapLogger('debug', `[${TAG}] OUT`));
28
+ //# sourceMappingURL=honoAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"honoAdapter.js","sourceRoot":"","sources":["../../../src/http/contrib/honoAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,MAAM,CAAC,MAAM,GAAG,GAAG,aAAa,CAAC;AAMjC,MAAM,UAAU,oBAAoB,CAClC,OAAoB;IAEpB,OAAO,WAAW,CAAC,WAAW,CAC5B,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACZ,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE;QAC1B,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACzC,qBAAqB,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACtD,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/C,cAAc,EAAE,OAAO;KACxB,CAAC,CAAC,EAAE,EACL,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,SAAuB;IAEvB,OAAO,WAAW,CAAC,WAAW,CAC5B,CAAC,KAAK,IAAI,EAAE,CACV,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE;QAC9C,MAAM,EAAE,SAAS,CAAC,UAAU;QAC5B,OAAO,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;KACxC,CAAC,CAAC,EAAE,EACP,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GACrB,CAAC,OAAe,EAAE,EAAE,CACpB,CACE,OAA+E,EACV,EAAE,CACzE,CAAC,CAAc,EAAE,EAAE,CACjB,IAAI,CACF,QAAQ,CAAC,CAAC,CAAC,EACX,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,EACjC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAW,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAC5D,YAAY,CAAC,OAAO,CAAC,EACrB,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAW,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAChE,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,CACnC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=honoAdapter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"honoAdapter.test.d.ts","sourceRoot":"","sources":["../../../src/http/contrib/honoAdapter.test.ts"],"names":[],"mappings":""}