moonflower 0.9.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 (268) hide show
  1. package/.eslintrc.js +26 -0
  2. package/.prettierrc.js +7 -0
  3. package/README.md +383 -0
  4. package/cli/cli.ts +59 -0
  5. package/cli/entry.cjs +3 -0
  6. package/cli/prettyprint.ts +16 -0
  7. package/dist/cli/cli.d.ts +2 -0
  8. package/dist/cli/cli.d.ts.map +1 -0
  9. package/dist/cli/cli.js +79 -0
  10. package/dist/cli/prettyprint.d.ts +4 -0
  11. package/dist/cli/prettyprint.d.ts.map +1 -0
  12. package/dist/cli/prettyprint.js +18 -0
  13. package/dist/src/errors/BaseHttpError.d.ts +13 -0
  14. package/dist/src/errors/BaseHttpError.d.ts.map +1 -0
  15. package/dist/src/errors/BaseHttpError.js +13 -0
  16. package/dist/src/errors/HttpErrorHandler.d.ts +3 -0
  17. package/dist/src/errors/HttpErrorHandler.d.ts.map +1 -0
  18. package/dist/src/errors/HttpErrorHandler.js +23 -0
  19. package/dist/src/errors/UserFacingErrors.d.ts +11 -0
  20. package/dist/src/errors/UserFacingErrors.d.ts.map +1 -0
  21. package/dist/src/errors/UserFacingErrors.js +23 -0
  22. package/dist/src/hooks/authentication/useAuth.d.ts +3 -0
  23. package/dist/src/hooks/authentication/useAuth.d.ts.map +1 -0
  24. package/dist/src/hooks/authentication/useAuth.js +7 -0
  25. package/dist/src/hooks/authentication/useOptionalAuth.d.ts +3 -0
  26. package/dist/src/hooks/authentication/useOptionalAuth.d.ts.map +1 -0
  27. package/dist/src/hooks/authentication/useOptionalAuth.js +16 -0
  28. package/dist/src/hooks/useApiEndpoint.d.ts +8 -0
  29. package/dist/src/hooks/useApiEndpoint.d.ts.map +1 -0
  30. package/dist/src/hooks/useApiEndpoint.js +7 -0
  31. package/dist/src/hooks/useApiHeader/index.d.ts +2 -0
  32. package/dist/src/hooks/useApiHeader/index.d.ts.map +1 -0
  33. package/dist/src/hooks/useApiHeader/index.js +17 -0
  34. package/dist/src/hooks/useApiHeader/useApiHeader.d.ts +3 -0
  35. package/dist/src/hooks/useApiHeader/useApiHeader.d.ts.map +1 -0
  36. package/dist/src/hooks/useApiHeader/useApiHeader.js +6 -0
  37. package/dist/src/hooks/useApiHeader/useApiHeader.spec.data.d.ts +2 -0
  38. package/dist/src/hooks/useApiHeader/useApiHeader.spec.data.d.ts.map +1 -0
  39. package/dist/src/hooks/useApiHeader/useApiHeader.spec.data.js +22 -0
  40. package/dist/src/hooks/useCookieParams.d.ts +9 -0
  41. package/dist/src/hooks/useCookieParams.d.ts.map +1 -0
  42. package/dist/src/hooks/useCookieParams.js +50 -0
  43. package/dist/src/hooks/useExposeApiModel/index.d.ts +2 -0
  44. package/dist/src/hooks/useExposeApiModel/index.d.ts.map +1 -0
  45. package/dist/src/hooks/useExposeApiModel/index.js +17 -0
  46. package/dist/src/hooks/useExposeApiModel/useExposeApiModel.d.ts +3 -0
  47. package/dist/src/hooks/useExposeApiModel/useExposeApiModel.d.ts.map +1 -0
  48. package/dist/src/hooks/useExposeApiModel/useExposeApiModel.js +9 -0
  49. package/dist/src/hooks/useExposeApiModel/useExposeApiModel.spec.data.d.ts +2 -0
  50. package/dist/src/hooks/useExposeApiModel/useExposeApiModel.spec.data.d.ts.map +1 -0
  51. package/dist/src/hooks/useExposeApiModel/useExposeApiModel.spec.data.js +16 -0
  52. package/dist/src/hooks/useHeaderParams.d.ts +12 -0
  53. package/dist/src/hooks/useHeaderParams.d.ts.map +1 -0
  54. package/dist/src/hooks/useHeaderParams.js +52 -0
  55. package/dist/src/hooks/usePathParams.d.ts +22 -0
  56. package/dist/src/hooks/usePathParams.d.ts.map +1 -0
  57. package/dist/src/hooks/usePathParams.js +46 -0
  58. package/dist/src/hooks/useQueryParams.d.ts +9 -0
  59. package/dist/src/hooks/useQueryParams.d.ts.map +1 -0
  60. package/dist/src/hooks/useQueryParams.js +50 -0
  61. package/dist/src/hooks/useRequestBody.d.ts +9 -0
  62. package/dist/src/hooks/useRequestBody.d.ts.map +1 -0
  63. package/dist/src/hooks/useRequestBody.js +59 -0
  64. package/dist/src/hooks/useRequestRawBody.d.ts +7 -0
  65. package/dist/src/hooks/useRequestRawBody.d.ts.map +1 -0
  66. package/dist/src/hooks/useRequestRawBody.js +34 -0
  67. package/dist/src/index.d.ts +18 -0
  68. package/dist/src/index.d.ts.map +1 -0
  69. package/dist/src/index.js +33 -0
  70. package/dist/src/openapi/analyzerModule/analyzerModule.d.ts +18 -0
  71. package/dist/src/openapi/analyzerModule/analyzerModule.d.ts.map +1 -0
  72. package/dist/src/openapi/analyzerModule/analyzerModule.js +192 -0
  73. package/dist/src/openapi/analyzerModule/nodeParsers.d.ts +19 -0
  74. package/dist/src/openapi/analyzerModule/nodeParsers.d.ts.map +1 -0
  75. package/dist/src/openapi/analyzerModule/nodeParsers.js +521 -0
  76. package/dist/src/openapi/analyzerModule/parseEndpoint.d.ts +4 -0
  77. package/dist/src/openapi/analyzerModule/parseEndpoint.d.ts.map +1 -0
  78. package/dist/src/openapi/analyzerModule/parseEndpoint.js +246 -0
  79. package/dist/src/openapi/analyzerModule/parseExposedModels.d.ts +5 -0
  80. package/dist/src/openapi/analyzerModule/parseExposedModels.d.ts.map +1 -0
  81. package/dist/src/openapi/analyzerModule/parseExposedModels.js +32 -0
  82. package/dist/src/openapi/analyzerModule/test/openApiAnalyzer.spec.data.d.ts +2 -0
  83. package/dist/src/openapi/analyzerModule/test/openApiAnalyzer.spec.data.d.ts.map +1 -0
  84. package/dist/src/openapi/analyzerModule/test/openApiAnalyzer.spec.data.js +400 -0
  85. package/dist/src/openapi/analyzerModule/types.d.ts +53 -0
  86. package/dist/src/openapi/analyzerModule/types.d.ts.map +1 -0
  87. package/dist/src/openapi/analyzerModule/types.js +2 -0
  88. package/dist/src/openapi/discoveryModule/discoverImports/discoverImports.d.ts +8 -0
  89. package/dist/src/openapi/discoveryModule/discoverImports/discoverImports.d.ts.map +1 -0
  90. package/dist/src/openapi/discoveryModule/discoverImports/discoverImports.js +33 -0
  91. package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterA.spec.data.d.ts +4 -0
  92. package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterA.spec.data.d.ts.map +1 -0
  93. package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterA.spec.data.js +8 -0
  94. package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterB.spec.data.d.ts +4 -0
  95. package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterB.spec.data.d.ts.map +1 -0
  96. package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterB.spec.data.js +8 -0
  97. package/dist/src/openapi/discoveryModule/discoverRouterFiles/discoverRouterFiles.d.ts +17 -0
  98. package/dist/src/openapi/discoveryModule/discoverRouterFiles/discoverRouterFiles.d.ts.map +1 -0
  99. package/dist/src/openapi/discoveryModule/discoverRouterFiles/discoverRouterFiles.js +80 -0
  100. package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.d.ts +6 -0
  101. package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.d.ts.map +1 -0
  102. package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.js +31 -0
  103. package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.spec.data.d.ts +5 -0
  104. package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.spec.data.d.ts.map +1 -0
  105. package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.spec.data.js +38 -0
  106. package/dist/src/openapi/discoveryModule/index.d.ts +3 -0
  107. package/dist/src/openapi/discoveryModule/index.d.ts.map +1 -0
  108. package/dist/src/openapi/discoveryModule/index.js +18 -0
  109. package/dist/src/openapi/generatorModule/generateComponentSchemas.d.ts +4 -0
  110. package/dist/src/openapi/generatorModule/generateComponentSchemas.d.ts.map +1 -0
  111. package/dist/src/openapi/generatorModule/generateComponentSchemas.js +12 -0
  112. package/dist/src/openapi/generatorModule/generatePaths.d.ts +10 -0
  113. package/dist/src/openapi/generatorModule/generatePaths.d.ts.map +1 -0
  114. package/dist/src/openapi/generatorModule/generatePaths.js +116 -0
  115. package/dist/src/openapi/generatorModule/generatorModule.d.ts +16 -0
  116. package/dist/src/openapi/generatorModule/generatorModule.d.ts.map +1 -0
  117. package/dist/src/openapi/generatorModule/generatorModule.js +18 -0
  118. package/dist/src/openapi/generatorModule/getSchema.d.ts +36 -0
  119. package/dist/src/openapi/generatorModule/getSchema.d.ts.map +1 -0
  120. package/dist/src/openapi/generatorModule/getSchema.js +133 -0
  121. package/dist/src/openapi/generatorModule/index.d.ts +5 -0
  122. package/dist/src/openapi/generatorModule/index.d.ts.map +1 -0
  123. package/dist/src/openapi/generatorModule/index.js +20 -0
  124. package/dist/src/openapi/generatorModule/test/openApiGenerator.spec.data.d.ts +515 -0
  125. package/dist/src/openapi/generatorModule/test/openApiGenerator.spec.data.d.ts.map +1 -0
  126. package/dist/src/openapi/generatorModule/test/openApiGenerator.spec.data.js +1119 -0
  127. package/dist/src/openapi/initOpenApiEngine.d.ts +4 -0
  128. package/dist/src/openapi/initOpenApiEngine.d.ts.map +1 -0
  129. package/dist/src/openapi/initOpenApiEngine.js +14 -0
  130. package/dist/src/openapi/manager/OpenApiManager.d.ts +67 -0
  131. package/dist/src/openapi/manager/OpenApiManager.d.ts.map +1 -0
  132. package/dist/src/openapi/manager/OpenApiManager.js +86 -0
  133. package/dist/src/openapi/router/OpenApiRouter.d.ts +4 -0
  134. package/dist/src/openapi/router/OpenApiRouter.d.ts.map +1 -0
  135. package/dist/src/openapi/router/OpenApiRouter.js +11 -0
  136. package/dist/src/openapi/types.d.ts +81 -0
  137. package/dist/src/openapi/types.d.ts.map +1 -0
  138. package/dist/src/openapi/types.js +2 -0
  139. package/dist/src/router/Router.d.ts +23 -0
  140. package/dist/src/router/Router.d.ts.map +1 -0
  141. package/dist/src/router/Router.js +81 -0
  142. package/dist/src/router/responseValueToJson.d.ts +2 -0
  143. package/dist/src/router/responseValueToJson.d.ts.map +1 -0
  144. package/dist/src/router/responseValueToJson.js +10 -0
  145. package/dist/src/setupTests.d.ts +1 -0
  146. package/dist/src/setupTests.d.ts.map +1 -0
  147. package/dist/src/setupTests.js +3 -0
  148. package/dist/src/test/TestAppRouter.d.ts +8 -0
  149. package/dist/src/test/TestAppRouter.d.ts.map +1 -0
  150. package/dist/src/test/TestAppRouter.js +58 -0
  151. package/dist/src/test/app.d.ts +3 -0
  152. package/dist/src/test/app.d.ts.map +1 -0
  153. package/dist/src/test/app.js +41 -0
  154. package/dist/src/utils/TypeUtils.d.ts +22 -0
  155. package/dist/src/utils/TypeUtils.d.ts.map +1 -0
  156. package/dist/src/utils/TypeUtils.js +2 -0
  157. package/dist/src/utils/fromZodSchema.d.ts +2 -0
  158. package/dist/src/utils/fromZodSchema.d.ts.map +1 -0
  159. package/dist/src/utils/fromZodSchema.js +6 -0
  160. package/dist/src/utils/loadTestData.d.ts +2 -0
  161. package/dist/src/utils/loadTestData.d.ts.map +1 -0
  162. package/dist/src/utils/loadTestData.js +39 -0
  163. package/dist/src/utils/mockContext.d.ts +20 -0
  164. package/dist/src/utils/mockContext.d.ts.map +1 -0
  165. package/dist/src/utils/mockContext.js +85 -0
  166. package/dist/src/utils/nameOf.d.ts +5 -0
  167. package/dist/src/utils/nameOf.d.ts.map +1 -0
  168. package/dist/src/utils/nameOf.js +7 -0
  169. package/dist/src/utils/object.d.ts +7 -0
  170. package/dist/src/utils/object.d.ts.map +1 -0
  171. package/dist/src/utils/object.js +21 -0
  172. package/dist/src/utils/printers.d.ts +6 -0
  173. package/dist/src/utils/printers.d.ts.map +1 -0
  174. package/dist/src/utils/printers.js +76 -0
  175. package/dist/src/utils/validationMessages.d.ts +18 -0
  176. package/dist/src/utils/validationMessages.d.ts.map +1 -0
  177. package/dist/src/utils/validationMessages.js +43 -0
  178. package/dist/src/validators/BuiltInValidators.d.ts +61 -0
  179. package/dist/src/validators/BuiltInValidators.d.ts.map +1 -0
  180. package/dist/src/validators/BuiltInValidators.js +66 -0
  181. package/dist/src/validators/InternalParamWrappers.d.ts +5 -0
  182. package/dist/src/validators/InternalParamWrappers.d.ts.map +1 -0
  183. package/dist/src/validators/InternalParamWrappers.js +5 -0
  184. package/dist/src/validators/ParamWrappers.d.ts +11 -0
  185. package/dist/src/validators/ParamWrappers.d.ts.map +1 -0
  186. package/dist/src/validators/ParamWrappers.js +9 -0
  187. package/dist/src/validators/types.d.ts +18 -0
  188. package/dist/src/validators/types.d.ts.map +1 -0
  189. package/dist/src/validators/types.js +2 -0
  190. package/dist/tsconfig.build.tsbuildinfo +1 -0
  191. package/package.json +59 -0
  192. package/src/errors/BaseHttpError.ts +16 -0
  193. package/src/errors/HttpErrorHandler.ts +20 -0
  194. package/src/errors/UserFacingErrors.ts +39 -0
  195. package/src/hooks/authentication/useAuth.ts +8 -0
  196. package/src/hooks/authentication/useOptionalAuth.ts +17 -0
  197. package/src/hooks/useApiEndpoint.spec.ts +11 -0
  198. package/src/hooks/useApiEndpoint.ts +10 -0
  199. package/src/hooks/useApiHeader/index.ts +1 -0
  200. package/src/hooks/useApiHeader/useApiHeader.spec.data.ts +22 -0
  201. package/src/hooks/useApiHeader/useApiHeader.spec.ts +34 -0
  202. package/src/hooks/useApiHeader/useApiHeader.ts +6 -0
  203. package/src/hooks/useCookieParams.spec.ts +174 -0
  204. package/src/hooks/useCookieParams.ts +73 -0
  205. package/src/hooks/useExposeApiModel/index.ts +1 -0
  206. package/src/hooks/useExposeApiModel/useExposeApiModel.spec.data.ts +48 -0
  207. package/src/hooks/useExposeApiModel/useExposeApiModel.spec.ts +388 -0
  208. package/src/hooks/useExposeApiModel/useExposeApiModel.ts +9 -0
  209. package/src/hooks/useHeaderParams.spec.ts +186 -0
  210. package/src/hooks/useHeaderParams.ts +83 -0
  211. package/src/hooks/usePathParams.spec.ts +161 -0
  212. package/src/hooks/usePathParams.ts +89 -0
  213. package/src/hooks/useQueryParams.spec.ts +224 -0
  214. package/src/hooks/useQueryParams.ts +73 -0
  215. package/src/hooks/useRequestBody.spec.ts +215 -0
  216. package/src/hooks/useRequestBody.ts +94 -0
  217. package/src/hooks/useRequestRawBody.spec.ts +154 -0
  218. package/src/hooks/useRequestRawBody.ts +56 -0
  219. package/src/index.ts +17 -0
  220. package/src/openapi/analyzerModule/analyzerModule.ts +228 -0
  221. package/src/openapi/analyzerModule/nodeParsers.ts +648 -0
  222. package/src/openapi/analyzerModule/parseEndpoint.ts +305 -0
  223. package/src/openapi/analyzerModule/parseExposedModels.ts +34 -0
  224. package/src/openapi/analyzerModule/test/openApiAnalyzer.spec.data.ts +521 -0
  225. package/src/openapi/analyzerModule/test/openApiAnalyzer.spec.ts +1043 -0
  226. package/src/openapi/analyzerModule/types.ts +72 -0
  227. package/src/openapi/discoveryModule/discoverImports/discoverImports.ts +43 -0
  228. package/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterA.spec.data.ts +7 -0
  229. package/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterB.spec.data.ts +7 -0
  230. package/src/openapi/discoveryModule/discoverRouterFiles/discoverRouterFiles.spec.ts +36 -0
  231. package/src/openapi/discoveryModule/discoverRouterFiles/discoverRouterFiles.ts +80 -0
  232. package/src/openapi/discoveryModule/discoverRouters/discoverRouters.spec.data.ts +42 -0
  233. package/src/openapi/discoveryModule/discoverRouters/discoverRouters.spec.ts +18 -0
  234. package/src/openapi/discoveryModule/discoverRouters/discoverRouters.ts +39 -0
  235. package/src/openapi/discoveryModule/index.ts +2 -0
  236. package/src/openapi/generatorModule/generateComponentSchemas.ts +12 -0
  237. package/src/openapi/generatorModule/generatePaths.ts +138 -0
  238. package/src/openapi/generatorModule/generatorModule.ts +17 -0
  239. package/src/openapi/generatorModule/getSchema.ts +169 -0
  240. package/src/openapi/generatorModule/index.ts +4 -0
  241. package/src/openapi/generatorModule/test/openApiGenerator.spec.data.ts +1119 -0
  242. package/src/openapi/generatorModule/test/openApiGenerator.spec.ts +783 -0
  243. package/src/openapi/initOpenApiEngine.ts +20 -0
  244. package/src/openapi/manager/OpenApiManager.ts +153 -0
  245. package/src/openapi/router/OpenApiRouter.ts +11 -0
  246. package/src/openapi/types.ts +86 -0
  247. package/src/router/Router.ts +123 -0
  248. package/src/router/responseValueToJson.ts +6 -0
  249. package/src/setupTests.ts +3 -0
  250. package/src/test/TestAppRouter.ts +76 -0
  251. package/src/test/app.spec.ts +130 -0
  252. package/src/test/app.ts +43 -0
  253. package/src/utils/TypeUtils.ts +51 -0
  254. package/src/utils/loadTestData.ts +15 -0
  255. package/src/utils/mockContext.ts +86 -0
  256. package/src/utils/nameOf.ts +7 -0
  257. package/src/utils/object.spec.ts +27 -0
  258. package/src/utils/object.ts +17 -0
  259. package/src/utils/printers.spec.ts +103 -0
  260. package/src/utils/printers.ts +49 -0
  261. package/src/utils/validationMessages.ts +65 -0
  262. package/src/validators/BuiltInValidators.ts +64 -0
  263. package/src/validators/InternalParamWrappers.ts +14 -0
  264. package/src/validators/ParamWrappers.ts +22 -0
  265. package/src/validators/types.ts +35 -0
  266. package/tsconfig.build.json +15 -0
  267. package/tsconfig.json +29 -0
  268. package/vite.config.ts +16 -0
@@ -0,0 +1,11 @@
1
+ import { BaseHttpError } from './BaseHttpError';
2
+ export declare class ValidationError extends BaseHttpError {
3
+ constructor(message: string);
4
+ }
5
+ export declare class BadRequestError extends BaseHttpError {
6
+ constructor(message: string);
7
+ }
8
+ export declare class UnauthorizedError extends BaseHttpError {
9
+ constructor(message: string);
10
+ }
11
+ //# sourceMappingURL=UserFacingErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserFacingErrors.d.ts","sourceRoot":"","sources":["../../../src/errors/UserFacingErrors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,qBAAa,eAAgB,SAAQ,aAAa;gBACrC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,eAAgB,SAAQ,aAAa;gBACrC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,iBAAkB,SAAQ,aAAa;gBACvC,OAAO,EAAE,MAAM;CAG3B"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnauthorizedError = exports.BadRequestError = exports.ValidationError = void 0;
4
+ const http_status_codes_1 = require("http-status-codes");
5
+ const BaseHttpError_1 = require("./BaseHttpError");
6
+ class ValidationError extends BaseHttpError_1.BaseHttpError {
7
+ constructor(message) {
8
+ super(http_status_codes_1.StatusCodes.BAD_REQUEST, message);
9
+ }
10
+ }
11
+ exports.ValidationError = ValidationError;
12
+ class BadRequestError extends BaseHttpError_1.BaseHttpError {
13
+ constructor(message) {
14
+ super(http_status_codes_1.StatusCodes.BAD_REQUEST, message);
15
+ }
16
+ }
17
+ exports.BadRequestError = BadRequestError;
18
+ class UnauthorizedError extends BaseHttpError_1.BaseHttpError {
19
+ constructor(message) {
20
+ super(http_status_codes_1.StatusCodes.UNAUTHORIZED, message);
21
+ }
22
+ }
23
+ exports.UnauthorizedError = UnauthorizedError;
@@ -0,0 +1,3 @@
1
+ import { ParameterizedContext } from 'koa';
2
+ export declare const useAuth: <UserObject>(ctx: ParameterizedContext, authenticator: (ctx: ParameterizedContext) => UserObject | Promise<UserObject>) => Promise<UserObject>;
3
+ //# sourceMappingURL=useAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../src/hooks/authentication/useAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAE1C,eAAO,MAAM,OAAO,oBACd,oBAAoB,uBACJ,oBAAoB,KAAK,UAAU,GAAG,QAAQ,UAAU,CAAC,KAC5E,QAAQ,UAAU,CAEpB,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useAuth = void 0;
4
+ const useAuth = async (ctx, authenticator) => {
5
+ return await authenticator(ctx);
6
+ };
7
+ exports.useAuth = useAuth;
@@ -0,0 +1,3 @@
1
+ import { ParameterizedContext } from 'koa';
2
+ export declare const useOptionalAuth: <UserObject>(ctx: ParameterizedContext, authenticator: (ctx: ParameterizedContext) => UserObject | Promise<UserObject>) => Promise<UserObject | undefined>;
3
+ //# sourceMappingURL=useOptionalAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOptionalAuth.d.ts","sourceRoot":"","sources":["../../../../src/hooks/authentication/useOptionalAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAI1C,eAAO,MAAM,eAAe,oBACtB,oBAAoB,uBACJ,oBAAoB,KAAK,UAAU,GAAG,QAAQ,UAAU,CAAC,KAC5E,QAAQ,UAAU,GAAG,SAAS,CAShC,CAAA"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useOptionalAuth = void 0;
4
+ const UserFacingErrors_1 = require("../../errors/UserFacingErrors");
5
+ const useOptionalAuth = async (ctx, authenticator) => {
6
+ try {
7
+ return await authenticator(ctx);
8
+ }
9
+ catch (err) {
10
+ if (err instanceof UserFacingErrors_1.UnauthorizedError || err instanceof UserFacingErrors_1.ValidationError) {
11
+ return undefined;
12
+ }
13
+ throw err;
14
+ }
15
+ };
16
+ exports.useOptionalAuth = useOptionalAuth;
@@ -0,0 +1,8 @@
1
+ export type ApiEndpointDocs = {
2
+ name?: string;
3
+ summary?: string;
4
+ description?: string;
5
+ tags?: string[];
6
+ };
7
+ export declare const useApiEndpoint: (docs: ApiEndpointDocs) => ApiEndpointDocs;
8
+ //# sourceMappingURL=useApiEndpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useApiEndpoint.d.ts","sourceRoot":"","sources":["../../../src/hooks/useApiEndpoint.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CACf,CAAA;AAED,eAAO,MAAM,cAAc,SAAU,eAAe,oBAEnD,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useApiEndpoint = void 0;
4
+ const useApiEndpoint = (docs) => {
5
+ return docs;
6
+ };
7
+ exports.useApiEndpoint = useApiEndpoint;
@@ -0,0 +1,2 @@
1
+ export * from './useApiHeader';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useApiHeader/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./useApiHeader"), exports);
@@ -0,0 +1,3 @@
1
+ import { ApiDocsHeader } from '../../openapi/manager/OpenApiManager';
2
+ export declare const useApiHeader: <T extends ApiDocsHeader>(_: T) => void;
3
+ //# sourceMappingURL=useApiHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useApiHeader.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useApiHeader/useApiHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAA;AAGpE,eAAO,MAAM,YAAY,+BAAgC,CAAC,SAEzD,CAAA"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useApiHeader = void 0;
4
+ const useApiHeader = (_) => {
5
+ };
6
+ exports.useApiHeader = useApiHeader;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useApiHeader.spec.data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useApiHeader.spec.data.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useApiHeader/useApiHeader.spec.data.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const useApiHeader_1 = require("./useApiHeader");
4
+ (0, useApiHeader_1.useApiHeader)({
5
+ title: 'Test title',
6
+ version: '1.0.0',
7
+ description: 'Test description',
8
+ termsOfService: 'http://example.com',
9
+ contact: {
10
+ name: 'QA Engineer',
11
+ url: 'http://best-qa.com',
12
+ email: 'admin@best-qa.com',
13
+ },
14
+ license: {
15
+ name: 'MIT',
16
+ url: 'http://best-qa.com/license',
17
+ },
18
+ });
19
+ (0, useApiHeader_1.useApiHeader)({
20
+ title: '12',
21
+ version: '123',
22
+ });
@@ -0,0 +1,9 @@
1
+ import { ParameterizedContext } from 'koa';
2
+ import { Validator } from '../validators/types';
3
+ type CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined;
4
+ type ValidatedData<T extends Record<string, Validator<any>>> = {
5
+ [K in keyof T]: CheckIfOptional<ReturnType<T[K]['parse']>, T[K]['optional']>;
6
+ };
7
+ export declare const useCookieParams: <ValidatorsT extends Record<string, Validator<any>>>(ctx: ParameterizedContext, validators: ValidatorsT) => ValidatedData<ValidatorsT>;
8
+ export {};
9
+ //# sourceMappingURL=useCookieParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCookieParams.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCookieParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAK1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAE5F,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;CAC5E,CAAA;AAED,eAAO,MAAM,eAAe,4DACtB,oBAAoB,cACb,WAAW,KACrB,cAAc,WAAW,CAwD3B,CAAA"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCookieParams = void 0;
4
+ const UserFacingErrors_1 = require("../errors/UserFacingErrors");
5
+ const object_1 = require("../utils/object");
6
+ const validationMessages_1 = require("../utils/validationMessages");
7
+ const useCookieParams = (ctx, validators) => {
8
+ const params = (0, object_1.keysOf)(validators).map((name) => ({
9
+ name,
10
+ validator: validators[name],
11
+ value: ctx.cookies.get(name),
12
+ }));
13
+ const missingParams = params.filter((param) => !param.value && !param.validator.optional);
14
+ if (missingParams.length > 0) {
15
+ throw new UserFacingErrors_1.ValidationError(`Missing cookie params: ${missingParams.map((param) => (0, validationMessages_1.getMissingParamMessage)(param)).join(', ')}`);
16
+ }
17
+ const validationResults = params.map((param) => {
18
+ const paramValue = param.value;
19
+ if (paramValue === undefined) {
20
+ return { param, validated: true };
21
+ }
22
+ try {
23
+ const validatorObject = param.validator;
24
+ const prevalidatorSuccess = !validatorObject.prevalidate || validatorObject.prevalidate(paramValue);
25
+ const parsedValue = validatorObject.parse(paramValue);
26
+ const validatorSuccess = !validatorObject.validate || validatorObject.validate(parsedValue);
27
+ return {
28
+ param,
29
+ validated: prevalidatorSuccess && validatorSuccess,
30
+ parsedValue,
31
+ };
32
+ }
33
+ catch (error) {
34
+ return { param, validated: false };
35
+ }
36
+ });
37
+ const failedValidations = validationResults.filter((result) => !result.validated);
38
+ if (failedValidations.length > 0) {
39
+ throw new UserFacingErrors_1.ValidationError(`Failed cookie param validation: ${failedValidations
40
+ .map((result) => (0, validationMessages_1.getValidationResultMessage)(result.param))
41
+ .join(', ')}`);
42
+ }
43
+ const successfulValidations = validationResults.filter((result) => result.validated);
44
+ const returnValue = {};
45
+ successfulValidations.forEach((result) => {
46
+ returnValue[result.param.name] = result.parsedValue;
47
+ });
48
+ return returnValue;
49
+ };
50
+ exports.useCookieParams = useCookieParams;
@@ -0,0 +1,2 @@
1
+ export * from './useExposeApiModel';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useExposeApiModel/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./useExposeApiModel"), exports);
@@ -0,0 +1,3 @@
1
+ export declare const useExposeApiModel: <_T>() => void;
2
+ export declare const useExposeNamedApiModels: <_T extends Record<string, any>>() => void;
3
+ //# sourceMappingURL=useExposeApiModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useExposeApiModel.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useExposeApiModel/useExposeApiModel.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,iBAAiB,gBAE7B,CAAA;AAGD,eAAO,MAAM,uBAAuB,4CAEnC,CAAA"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useExposeNamedApiModels = exports.useExposeApiModel = void 0;
4
+ const useExposeApiModel = () => {
5
+ };
6
+ exports.useExposeApiModel = useExposeApiModel;
7
+ const useExposeNamedApiModels = () => {
8
+ };
9
+ exports.useExposeNamedApiModels = useExposeNamedApiModels;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useExposeApiModel.spec.data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useExposeApiModel.spec.data.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useExposeApiModel/useExposeApiModel.spec.data.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const useExposeApiModel_1 = require("./useExposeApiModel");
4
+ (0, useExposeApiModel_1.useExposeApiModel)();
5
+ (0, useExposeApiModel_1.useExposeNamedApiModels)();
6
+ (0, useExposeApiModel_1.useExposeApiModel)();
7
+ (0, useExposeApiModel_1.useExposeApiModel)();
8
+ (0, useExposeApiModel_1.useExposeApiModel)();
9
+ (0, useExposeApiModel_1.useExposeApiModel)();
10
+ (0, useExposeApiModel_1.useExposeApiModel)();
11
+ const modelAsObject = {
12
+ foo: '123',
13
+ bar: 123,
14
+ };
15
+ useExposeApiModel_1.useExposeApiModel;
16
+ useExposeApiModel_1.useExposeNamedApiModels;
@@ -0,0 +1,12 @@
1
+ import { ParameterizedContext } from 'koa';
2
+ import { CamelCase } from '../utils/TypeUtils';
3
+ import { Validator } from '../validators/types';
4
+ type CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined;
5
+ type HeaderToCamelCase<T> = T extends string ? CamelCase<Uncapitalize<T>> : T;
6
+ type ValidatedData<T extends Record<string, Validator<any>>> = {
7
+ [K in keyof T as HeaderToCamelCase<K>]: CheckIfOptional<ReturnType<T[K]['parse']>, T[K]['optional']>;
8
+ };
9
+ export declare const useHeaderParams: <ValidatorsT extends Record<string, Validator<any>>>(ctx: ParameterizedContext, validators: ValidatorsT) => ValidatedData<ValidatorsT>;
10
+ export declare const useRequestHeaders: <ValidatorsT extends Record<string, Validator<any>>>(ctx: ParameterizedContext, validators: ValidatorsT) => ValidatedData<ValidatorsT>;
11
+ export {};
12
+ //# sourceMappingURL=useHeaderParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderParams.d.ts","sourceRoot":"","sources":["../../../src/hooks/useHeaderParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAI1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAK9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAE5F,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE7E,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;CACpG,CAAA;AAED,eAAO,MAAM,eAAe,4DACtB,oBAAoB,cACb,WAAW,+BA2DvB,CAAA;AAED,eAAO,MAAM,iBAAiB,4DA9DxB,oBAAoB,cACb,WAAW,+BA6DwB,CAAA"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useRequestHeaders = exports.useHeaderParams = void 0;
4
+ const UserFacingErrors_1 = require("../errors/UserFacingErrors");
5
+ const object_1 = require("../utils/object");
6
+ const validationMessages_1 = require("../utils/validationMessages");
7
+ const useHeaderParams = (ctx, validators) => {
8
+ const headers = ctx.headers;
9
+ const params = (0, object_1.keysOf)(validators).map((name) => ({
10
+ name: name.toLowerCase(),
11
+ originalName: name,
12
+ validator: validators[name],
13
+ }));
14
+ const missingParams = params.filter((param) => !headers[param.name] && !param.validator.optional);
15
+ if (missingParams.length > 0) {
16
+ throw new UserFacingErrors_1.ValidationError(`Missing headers: ${missingParams.map((param) => (0, validationMessages_1.getMissingParamMessage)(param)).join(', ')}`);
17
+ }
18
+ const validationResults = params.map((param) => {
19
+ const paramValue = headers[param.name];
20
+ if (paramValue === undefined) {
21
+ return { param, validated: true };
22
+ }
23
+ try {
24
+ const validatorObject = param.validator;
25
+ const prevalidatorSuccess = !validatorObject.prevalidate || validatorObject.prevalidate(paramValue);
26
+ const parsedValue = validatorObject.parse(paramValue);
27
+ const validatorSuccess = !validatorObject.validate || validatorObject.validate(parsedValue);
28
+ return {
29
+ param,
30
+ validated: prevalidatorSuccess && validatorSuccess,
31
+ parsedValue,
32
+ };
33
+ }
34
+ catch (error) {
35
+ return { param, validated: false };
36
+ }
37
+ });
38
+ const failedValidations = validationResults.filter((result) => !result.validated);
39
+ if (failedValidations.length > 0) {
40
+ throw new UserFacingErrors_1.ValidationError(`Failed header validation: ${failedValidations
41
+ .map((result) => (0, validationMessages_1.getValidationResultMessage)(result.param))
42
+ .join(', ')}`);
43
+ }
44
+ const successfulValidations = validationResults.filter((result) => result.validated);
45
+ const returnValue = {};
46
+ successfulValidations.forEach((result) => {
47
+ returnValue[(0, object_1.kebabToCamelCase)(result.param.originalName)] = result.parsedValue;
48
+ });
49
+ return returnValue;
50
+ };
51
+ exports.useHeaderParams = useHeaderParams;
52
+ exports.useRequestHeaders = exports.useHeaderParams;
@@ -0,0 +1,22 @@
1
+ import { ParameterizedContext } from 'koa';
2
+ import { CleanUpPathParam } from '../utils/TypeUtils';
3
+ import { Validator } from '../validators/types';
4
+ type CheckIfOptional<T, B> = B extends string ? (B extends `${string}?` ? T | undefined : T) : never;
5
+ type ValidatedData<ParamsT extends string[], TestTemplate extends {
6
+ [K in keyof ParamsT]: {
7
+ original: ParamsT[K];
8
+ cleaned: CleanUpPathParam<ParamsT[K]>;
9
+ callback: ValidatorsT[CleanUpPathParam<ParamsT[K]>];
10
+ };
11
+ }, ValidatorsT extends Record<TestTemplate[number]['cleaned'], Omit<Validator<any>, 'optional'>>> = {
12
+ [K in keyof TestTemplate as K extends `${number}` ? TestTemplate[K]['cleaned'] : never]: CheckIfOptional<ReturnType<TestTemplate[K]['callback']['parse']>, TestTemplate[K]['original']>;
13
+ };
14
+ export declare const usePathParams: <ParamsT extends string[], TestTemplate extends { [K in keyof ParamsT]: {
15
+ original: ParamsT[K];
16
+ cleaned: CleanUpPathParam<ParamsT[K]>;
17
+ callback: ValidatorsT[CleanUpPathParam<ParamsT[K]>];
18
+ }; }, ValidatorsT extends Record<CleanUpPathParam<ParamsT[number]>, Omit<Validator<any>, "optional">>>(ctx: ParameterizedContext & {
19
+ parsedPathParams: ParamsT;
20
+ }, validators: ValidatorsT) => ValidatedData<ParamsT, TestTemplate, ValidatorsT>;
21
+ export {};
22
+ //# sourceMappingURL=usePathParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePathParams.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePathParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAI1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;AAEpG,KAAK,aAAa,CACjB,OAAO,SAAS,MAAM,EAAE,EACxB,YAAY,SAAS;KACnB,CAAC,IAAI,MAAM,OAAO,GAAG;QACrB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;QACpB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,QAAQ,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KACnD;CACD,EACD,WAAW,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,IAC1F;KACF,CAAC,IAAI,MAAM,YAAY,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,eAAe,CACvG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,EAChD,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAC3B;CACD,CAAA;AAED,eAAO,MAAM,aAAa;;;;4GAWpB,oBAAoB,GAAG;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,cAC7C,WAAW,KACrB,cAAc,OAAO,EAAE,YAAY,EAAE,WAAW,CAgDlD,CAAA"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.usePathParams = void 0;
4
+ const UserFacingErrors_1 = require("../errors/UserFacingErrors");
5
+ const object_1 = require("../utils/object");
6
+ const validationMessages_1 = require("../utils/validationMessages");
7
+ const usePathParams = (ctx, validators) => {
8
+ const params = ctx.params;
9
+ const expectedParams = (0, object_1.keysOf)(validators).map((name) => ({
10
+ name,
11
+ validator: validators[name],
12
+ }));
13
+ const validationResults = expectedParams.map((param) => {
14
+ const paramValue = params[param.name];
15
+ if (paramValue === undefined) {
16
+ return { param, validated: true };
17
+ }
18
+ try {
19
+ const validatorObject = param.validator;
20
+ const prevalidatorSuccess = !validatorObject.prevalidate || validatorObject.prevalidate(paramValue);
21
+ const parsedValue = validatorObject.parse(paramValue);
22
+ const validatorSuccess = !validatorObject.validate || validatorObject.validate(parsedValue);
23
+ return {
24
+ param,
25
+ validated: prevalidatorSuccess && validatorSuccess,
26
+ parsedValue,
27
+ };
28
+ }
29
+ catch (error) {
30
+ return { param, validated: false };
31
+ }
32
+ });
33
+ const failedValidations = validationResults.filter((result) => !result.validated);
34
+ if (failedValidations.length > 0) {
35
+ throw new UserFacingErrors_1.ValidationError(`Failed route param validation: ${failedValidations
36
+ .map((result) => (0, validationMessages_1.getValidationResultMessage)(result.param))
37
+ .join(', ')}`);
38
+ }
39
+ const successfulValidations = validationResults.filter((result) => result.validated);
40
+ const returnValue = {};
41
+ successfulValidations.forEach((result) => {
42
+ returnValue[result.param.name] = result.parsedValue;
43
+ });
44
+ return returnValue;
45
+ };
46
+ exports.usePathParams = usePathParams;
@@ -0,0 +1,9 @@
1
+ import { ParameterizedContext } from 'koa';
2
+ import { Validator } from '../validators/types';
3
+ type CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined;
4
+ type ValidatedData<T extends Record<string, Validator<any>>> = {
5
+ [K in keyof T]: CheckIfOptional<ReturnType<T[K]['parse']>, T[K]['optional']>;
6
+ };
7
+ export declare const useQueryParams: <ValidatorsT extends Record<string, Validator<any>>>(ctx: ParameterizedContext, validators: ValidatorsT) => ValidatedData<ValidatorsT>;
8
+ export {};
9
+ //# sourceMappingURL=useQueryParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQueryParams.d.ts","sourceRoot":"","sources":["../../../src/hooks/useQueryParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAK1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAE5F,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;CAC5E,CAAA;AAED,eAAO,MAAM,cAAc,4DACrB,oBAAoB,cACb,WAAW,KACrB,cAAc,WAAW,CAwD3B,CAAA"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useQueryParams = void 0;
4
+ const UserFacingErrors_1 = require("../errors/UserFacingErrors");
5
+ const object_1 = require("../utils/object");
6
+ const validationMessages_1 = require("../utils/validationMessages");
7
+ const useQueryParams = (ctx, validators) => {
8
+ const query = ctx.query;
9
+ const params = (0, object_1.keysOf)(validators).map((name) => ({
10
+ name,
11
+ validator: validators[name],
12
+ }));
13
+ const missingParams = params.filter((param) => !query[param.name] && !param.validator.optional);
14
+ if (missingParams.length > 0) {
15
+ throw new UserFacingErrors_1.ValidationError(`Missing query params: ${missingParams.map((param) => (0, validationMessages_1.getMissingParamMessage)(param)).join(', ')}`);
16
+ }
17
+ const validationResults = params.map((param) => {
18
+ const paramValue = query[param.name];
19
+ if (paramValue === undefined) {
20
+ return { param, validated: true };
21
+ }
22
+ try {
23
+ const validatorObject = param.validator;
24
+ const prevalidatorSuccess = !validatorObject.prevalidate || validatorObject.prevalidate(paramValue);
25
+ const parsedValue = validatorObject.parse(paramValue);
26
+ const validatorSuccess = !validatorObject.validate || validatorObject.validate(parsedValue);
27
+ return {
28
+ param,
29
+ validated: prevalidatorSuccess && validatorSuccess,
30
+ parsedValue,
31
+ };
32
+ }
33
+ catch (error) {
34
+ return { param, validated: false };
35
+ }
36
+ });
37
+ const failedValidations = validationResults.filter((result) => !result.validated);
38
+ if (failedValidations.length > 0) {
39
+ throw new UserFacingErrors_1.ValidationError(`Failed query param validation: ${failedValidations
40
+ .map((result) => (0, validationMessages_1.getValidationResultMessage)(result.param))
41
+ .join(', ')}`);
42
+ }
43
+ const successfulValidations = validationResults.filter((result) => result.validated);
44
+ const returnValue = {};
45
+ successfulValidations.forEach((result) => {
46
+ returnValue[result.param.name] = result.parsedValue;
47
+ });
48
+ return returnValue;
49
+ };
50
+ exports.useQueryParams = useQueryParams;
@@ -0,0 +1,9 @@
1
+ import { ParameterizedContext } from 'koa';
2
+ import { Validator } from '../validators/types';
3
+ type CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T;
4
+ type ValidatedData<T extends Record<string, Validator<any>>> = {
5
+ [K in keyof T]: CheckIfOptional<ReturnType<T[K]['parse']>, T[K]['optional']>;
6
+ };
7
+ export declare const useRequestBody: <ValidatorsT extends Record<string, Validator<any>>>(ctx: ParameterizedContext, validators: ValidatorsT) => ValidatedData<ValidatorsT>;
8
+ export {};
9
+ //# sourceMappingURL=useRequestBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRequestBody.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRequestBody.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAK1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;AAEhF,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;CAC5E,CAAA;AAaD,eAAO,MAAM,cAAc,4DACrB,oBAAoB,cACb,WAAW,KACrB,cAAc,WAAW,CAkE3B,CAAA"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useRequestBody = void 0;
4
+ const UserFacingErrors_1 = require("../errors/UserFacingErrors");
5
+ const object_1 = require("../utils/object");
6
+ const validationMessages_1 = require("../utils/validationMessages");
7
+ const useRequestBody = (ctx, validators) => {
8
+ const providedParams = (ctx.request.body || {});
9
+ const params = (0, object_1.keysOf)(validators).map((name) => ({
10
+ name,
11
+ validator: validators[name],
12
+ }));
13
+ const missingParams = params.filter((param) => providedParams[param.name] === undefined && !validators[param.name].optional);
14
+ if (missingParams.length > 0) {
15
+ throw new UserFacingErrors_1.ValidationError(`Missing body params: ${missingParams.map((param) => (0, validationMessages_1.getMissingParamMessage)(param)).join(', ')}`);
16
+ }
17
+ const validationResults = params.map((param) => {
18
+ const paramValue = providedParams[param.name];
19
+ if (paramValue === undefined) {
20
+ return { param, validated: true };
21
+ }
22
+ try {
23
+ const convertedValue = (() => {
24
+ if (paramValue === null) {
25
+ return null;
26
+ }
27
+ else if (typeof paramValue === 'object') {
28
+ return JSON.stringify(paramValue);
29
+ }
30
+ return String(paramValue);
31
+ })();
32
+ const validatorObject = param.validator;
33
+ const prevalidatorSuccess = !validatorObject.prevalidate || validatorObject.prevalidate(convertedValue);
34
+ const parsedValue = validatorObject.parse(convertedValue);
35
+ const validatorSuccess = !validatorObject.validate || validatorObject.validate(parsedValue);
36
+ return {
37
+ param,
38
+ validated: prevalidatorSuccess && validatorSuccess,
39
+ parsedValue,
40
+ };
41
+ }
42
+ catch (error) {
43
+ return { param, validated: false };
44
+ }
45
+ });
46
+ const failedValidations = validationResults.filter((result) => !result.validated);
47
+ if (failedValidations.length > 0) {
48
+ throw new UserFacingErrors_1.ValidationError(`Failed body param validation: ${failedValidations
49
+ .map((result) => (0, validationMessages_1.getValidationResultMessage)(result.param))
50
+ .join(', ')}`);
51
+ }
52
+ const successfulValidations = validationResults.filter((result) => result.validated);
53
+ const returnValue = {};
54
+ successfulValidations.forEach((result) => {
55
+ returnValue[result.param.name] = result.parsedValue;
56
+ });
57
+ return returnValue;
58
+ };
59
+ exports.useRequestBody = useRequestBody;
@@ -0,0 +1,7 @@
1
+ import { ParameterizedContext } from 'koa';
2
+ import { Validator } from '../validators/types';
3
+ type CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined;
4
+ type ValidatedData<T extends Validator<any>> = CheckIfOptional<ReturnType<T['parse']>, T['optional']>;
5
+ export declare const useRequestRawBody: <ValidatorT extends Validator<any>>(ctx: ParameterizedContext, validator: ValidatorT) => ValidatedData<ValidatorT>;
6
+ export {};
7
+ //# sourceMappingURL=useRequestRawBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRequestRawBody.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRequestRawBody.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAI1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAE5F,KAAK,aAAa,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;AAcrG,eAAO,MAAM,iBAAiB,2CACxB,oBAAoB,aACd,UAAU,KACnB,cAAc,UAAU,CA8B1B,CAAA"}