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.
- package/.eslintrc.js +26 -0
- package/.prettierrc.js +7 -0
- package/README.md +383 -0
- package/cli/cli.ts +59 -0
- package/cli/entry.cjs +3 -0
- package/cli/prettyprint.ts +16 -0
- package/dist/cli/cli.d.ts +2 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +79 -0
- package/dist/cli/prettyprint.d.ts +4 -0
- package/dist/cli/prettyprint.d.ts.map +1 -0
- package/dist/cli/prettyprint.js +18 -0
- package/dist/src/errors/BaseHttpError.d.ts +13 -0
- package/dist/src/errors/BaseHttpError.d.ts.map +1 -0
- package/dist/src/errors/BaseHttpError.js +13 -0
- package/dist/src/errors/HttpErrorHandler.d.ts +3 -0
- package/dist/src/errors/HttpErrorHandler.d.ts.map +1 -0
- package/dist/src/errors/HttpErrorHandler.js +23 -0
- package/dist/src/errors/UserFacingErrors.d.ts +11 -0
- package/dist/src/errors/UserFacingErrors.d.ts.map +1 -0
- package/dist/src/errors/UserFacingErrors.js +23 -0
- package/dist/src/hooks/authentication/useAuth.d.ts +3 -0
- package/dist/src/hooks/authentication/useAuth.d.ts.map +1 -0
- package/dist/src/hooks/authentication/useAuth.js +7 -0
- package/dist/src/hooks/authentication/useOptionalAuth.d.ts +3 -0
- package/dist/src/hooks/authentication/useOptionalAuth.d.ts.map +1 -0
- package/dist/src/hooks/authentication/useOptionalAuth.js +16 -0
- package/dist/src/hooks/useApiEndpoint.d.ts +8 -0
- package/dist/src/hooks/useApiEndpoint.d.ts.map +1 -0
- package/dist/src/hooks/useApiEndpoint.js +7 -0
- package/dist/src/hooks/useApiHeader/index.d.ts +2 -0
- package/dist/src/hooks/useApiHeader/index.d.ts.map +1 -0
- package/dist/src/hooks/useApiHeader/index.js +17 -0
- package/dist/src/hooks/useApiHeader/useApiHeader.d.ts +3 -0
- package/dist/src/hooks/useApiHeader/useApiHeader.d.ts.map +1 -0
- package/dist/src/hooks/useApiHeader/useApiHeader.js +6 -0
- package/dist/src/hooks/useApiHeader/useApiHeader.spec.data.d.ts +2 -0
- package/dist/src/hooks/useApiHeader/useApiHeader.spec.data.d.ts.map +1 -0
- package/dist/src/hooks/useApiHeader/useApiHeader.spec.data.js +22 -0
- package/dist/src/hooks/useCookieParams.d.ts +9 -0
- package/dist/src/hooks/useCookieParams.d.ts.map +1 -0
- package/dist/src/hooks/useCookieParams.js +50 -0
- package/dist/src/hooks/useExposeApiModel/index.d.ts +2 -0
- package/dist/src/hooks/useExposeApiModel/index.d.ts.map +1 -0
- package/dist/src/hooks/useExposeApiModel/index.js +17 -0
- package/dist/src/hooks/useExposeApiModel/useExposeApiModel.d.ts +3 -0
- package/dist/src/hooks/useExposeApiModel/useExposeApiModel.d.ts.map +1 -0
- package/dist/src/hooks/useExposeApiModel/useExposeApiModel.js +9 -0
- package/dist/src/hooks/useExposeApiModel/useExposeApiModel.spec.data.d.ts +2 -0
- package/dist/src/hooks/useExposeApiModel/useExposeApiModel.spec.data.d.ts.map +1 -0
- package/dist/src/hooks/useExposeApiModel/useExposeApiModel.spec.data.js +16 -0
- package/dist/src/hooks/useHeaderParams.d.ts +12 -0
- package/dist/src/hooks/useHeaderParams.d.ts.map +1 -0
- package/dist/src/hooks/useHeaderParams.js +52 -0
- package/dist/src/hooks/usePathParams.d.ts +22 -0
- package/dist/src/hooks/usePathParams.d.ts.map +1 -0
- package/dist/src/hooks/usePathParams.js +46 -0
- package/dist/src/hooks/useQueryParams.d.ts +9 -0
- package/dist/src/hooks/useQueryParams.d.ts.map +1 -0
- package/dist/src/hooks/useQueryParams.js +50 -0
- package/dist/src/hooks/useRequestBody.d.ts +9 -0
- package/dist/src/hooks/useRequestBody.d.ts.map +1 -0
- package/dist/src/hooks/useRequestBody.js +59 -0
- package/dist/src/hooks/useRequestRawBody.d.ts +7 -0
- package/dist/src/hooks/useRequestRawBody.d.ts.map +1 -0
- package/dist/src/hooks/useRequestRawBody.js +34 -0
- package/dist/src/index.d.ts +18 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +33 -0
- package/dist/src/openapi/analyzerModule/analyzerModule.d.ts +18 -0
- package/dist/src/openapi/analyzerModule/analyzerModule.d.ts.map +1 -0
- package/dist/src/openapi/analyzerModule/analyzerModule.js +192 -0
- package/dist/src/openapi/analyzerModule/nodeParsers.d.ts +19 -0
- package/dist/src/openapi/analyzerModule/nodeParsers.d.ts.map +1 -0
- package/dist/src/openapi/analyzerModule/nodeParsers.js +521 -0
- package/dist/src/openapi/analyzerModule/parseEndpoint.d.ts +4 -0
- package/dist/src/openapi/analyzerModule/parseEndpoint.d.ts.map +1 -0
- package/dist/src/openapi/analyzerModule/parseEndpoint.js +246 -0
- package/dist/src/openapi/analyzerModule/parseExposedModels.d.ts +5 -0
- package/dist/src/openapi/analyzerModule/parseExposedModels.d.ts.map +1 -0
- package/dist/src/openapi/analyzerModule/parseExposedModels.js +32 -0
- package/dist/src/openapi/analyzerModule/test/openApiAnalyzer.spec.data.d.ts +2 -0
- package/dist/src/openapi/analyzerModule/test/openApiAnalyzer.spec.data.d.ts.map +1 -0
- package/dist/src/openapi/analyzerModule/test/openApiAnalyzer.spec.data.js +400 -0
- package/dist/src/openapi/analyzerModule/types.d.ts +53 -0
- package/dist/src/openapi/analyzerModule/types.d.ts.map +1 -0
- package/dist/src/openapi/analyzerModule/types.js +2 -0
- package/dist/src/openapi/discoveryModule/discoverImports/discoverImports.d.ts +8 -0
- package/dist/src/openapi/discoveryModule/discoverImports/discoverImports.d.ts.map +1 -0
- package/dist/src/openapi/discoveryModule/discoverImports/discoverImports.js +33 -0
- package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterA.spec.data.d.ts +4 -0
- package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterA.spec.data.d.ts.map +1 -0
- package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterA.spec.data.js +8 -0
- package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterB.spec.data.d.ts +4 -0
- package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterB.spec.data.d.ts.map +1 -0
- package/dist/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterB.spec.data.js +8 -0
- package/dist/src/openapi/discoveryModule/discoverRouterFiles/discoverRouterFiles.d.ts +17 -0
- package/dist/src/openapi/discoveryModule/discoverRouterFiles/discoverRouterFiles.d.ts.map +1 -0
- package/dist/src/openapi/discoveryModule/discoverRouterFiles/discoverRouterFiles.js +80 -0
- package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.d.ts +6 -0
- package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.d.ts.map +1 -0
- package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.js +31 -0
- package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.spec.data.d.ts +5 -0
- package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.spec.data.d.ts.map +1 -0
- package/dist/src/openapi/discoveryModule/discoverRouters/discoverRouters.spec.data.js +38 -0
- package/dist/src/openapi/discoveryModule/index.d.ts +3 -0
- package/dist/src/openapi/discoveryModule/index.d.ts.map +1 -0
- package/dist/src/openapi/discoveryModule/index.js +18 -0
- package/dist/src/openapi/generatorModule/generateComponentSchemas.d.ts +4 -0
- package/dist/src/openapi/generatorModule/generateComponentSchemas.d.ts.map +1 -0
- package/dist/src/openapi/generatorModule/generateComponentSchemas.js +12 -0
- package/dist/src/openapi/generatorModule/generatePaths.d.ts +10 -0
- package/dist/src/openapi/generatorModule/generatePaths.d.ts.map +1 -0
- package/dist/src/openapi/generatorModule/generatePaths.js +116 -0
- package/dist/src/openapi/generatorModule/generatorModule.d.ts +16 -0
- package/dist/src/openapi/generatorModule/generatorModule.d.ts.map +1 -0
- package/dist/src/openapi/generatorModule/generatorModule.js +18 -0
- package/dist/src/openapi/generatorModule/getSchema.d.ts +36 -0
- package/dist/src/openapi/generatorModule/getSchema.d.ts.map +1 -0
- package/dist/src/openapi/generatorModule/getSchema.js +133 -0
- package/dist/src/openapi/generatorModule/index.d.ts +5 -0
- package/dist/src/openapi/generatorModule/index.d.ts.map +1 -0
- package/dist/src/openapi/generatorModule/index.js +20 -0
- package/dist/src/openapi/generatorModule/test/openApiGenerator.spec.data.d.ts +515 -0
- package/dist/src/openapi/generatorModule/test/openApiGenerator.spec.data.d.ts.map +1 -0
- package/dist/src/openapi/generatorModule/test/openApiGenerator.spec.data.js +1119 -0
- package/dist/src/openapi/initOpenApiEngine.d.ts +4 -0
- package/dist/src/openapi/initOpenApiEngine.d.ts.map +1 -0
- package/dist/src/openapi/initOpenApiEngine.js +14 -0
- package/dist/src/openapi/manager/OpenApiManager.d.ts +67 -0
- package/dist/src/openapi/manager/OpenApiManager.d.ts.map +1 -0
- package/dist/src/openapi/manager/OpenApiManager.js +86 -0
- package/dist/src/openapi/router/OpenApiRouter.d.ts +4 -0
- package/dist/src/openapi/router/OpenApiRouter.d.ts.map +1 -0
- package/dist/src/openapi/router/OpenApiRouter.js +11 -0
- package/dist/src/openapi/types.d.ts +81 -0
- package/dist/src/openapi/types.d.ts.map +1 -0
- package/dist/src/openapi/types.js +2 -0
- package/dist/src/router/Router.d.ts +23 -0
- package/dist/src/router/Router.d.ts.map +1 -0
- package/dist/src/router/Router.js +81 -0
- package/dist/src/router/responseValueToJson.d.ts +2 -0
- package/dist/src/router/responseValueToJson.d.ts.map +1 -0
- package/dist/src/router/responseValueToJson.js +10 -0
- package/dist/src/setupTests.d.ts +1 -0
- package/dist/src/setupTests.d.ts.map +1 -0
- package/dist/src/setupTests.js +3 -0
- package/dist/src/test/TestAppRouter.d.ts +8 -0
- package/dist/src/test/TestAppRouter.d.ts.map +1 -0
- package/dist/src/test/TestAppRouter.js +58 -0
- package/dist/src/test/app.d.ts +3 -0
- package/dist/src/test/app.d.ts.map +1 -0
- package/dist/src/test/app.js +41 -0
- package/dist/src/utils/TypeUtils.d.ts +22 -0
- package/dist/src/utils/TypeUtils.d.ts.map +1 -0
- package/dist/src/utils/TypeUtils.js +2 -0
- package/dist/src/utils/fromZodSchema.d.ts +2 -0
- package/dist/src/utils/fromZodSchema.d.ts.map +1 -0
- package/dist/src/utils/fromZodSchema.js +6 -0
- package/dist/src/utils/loadTestData.d.ts +2 -0
- package/dist/src/utils/loadTestData.d.ts.map +1 -0
- package/dist/src/utils/loadTestData.js +39 -0
- package/dist/src/utils/mockContext.d.ts +20 -0
- package/dist/src/utils/mockContext.d.ts.map +1 -0
- package/dist/src/utils/mockContext.js +85 -0
- package/dist/src/utils/nameOf.d.ts +5 -0
- package/dist/src/utils/nameOf.d.ts.map +1 -0
- package/dist/src/utils/nameOf.js +7 -0
- package/dist/src/utils/object.d.ts +7 -0
- package/dist/src/utils/object.d.ts.map +1 -0
- package/dist/src/utils/object.js +21 -0
- package/dist/src/utils/printers.d.ts +6 -0
- package/dist/src/utils/printers.d.ts.map +1 -0
- package/dist/src/utils/printers.js +76 -0
- package/dist/src/utils/validationMessages.d.ts +18 -0
- package/dist/src/utils/validationMessages.d.ts.map +1 -0
- package/dist/src/utils/validationMessages.js +43 -0
- package/dist/src/validators/BuiltInValidators.d.ts +61 -0
- package/dist/src/validators/BuiltInValidators.d.ts.map +1 -0
- package/dist/src/validators/BuiltInValidators.js +66 -0
- package/dist/src/validators/InternalParamWrappers.d.ts +5 -0
- package/dist/src/validators/InternalParamWrappers.d.ts.map +1 -0
- package/dist/src/validators/InternalParamWrappers.js +5 -0
- package/dist/src/validators/ParamWrappers.d.ts +11 -0
- package/dist/src/validators/ParamWrappers.d.ts.map +1 -0
- package/dist/src/validators/ParamWrappers.js +9 -0
- package/dist/src/validators/types.d.ts +18 -0
- package/dist/src/validators/types.d.ts.map +1 -0
- package/dist/src/validators/types.js +2 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +59 -0
- package/src/errors/BaseHttpError.ts +16 -0
- package/src/errors/HttpErrorHandler.ts +20 -0
- package/src/errors/UserFacingErrors.ts +39 -0
- package/src/hooks/authentication/useAuth.ts +8 -0
- package/src/hooks/authentication/useOptionalAuth.ts +17 -0
- package/src/hooks/useApiEndpoint.spec.ts +11 -0
- package/src/hooks/useApiEndpoint.ts +10 -0
- package/src/hooks/useApiHeader/index.ts +1 -0
- package/src/hooks/useApiHeader/useApiHeader.spec.data.ts +22 -0
- package/src/hooks/useApiHeader/useApiHeader.spec.ts +34 -0
- package/src/hooks/useApiHeader/useApiHeader.ts +6 -0
- package/src/hooks/useCookieParams.spec.ts +174 -0
- package/src/hooks/useCookieParams.ts +73 -0
- package/src/hooks/useExposeApiModel/index.ts +1 -0
- package/src/hooks/useExposeApiModel/useExposeApiModel.spec.data.ts +48 -0
- package/src/hooks/useExposeApiModel/useExposeApiModel.spec.ts +388 -0
- package/src/hooks/useExposeApiModel/useExposeApiModel.ts +9 -0
- package/src/hooks/useHeaderParams.spec.ts +186 -0
- package/src/hooks/useHeaderParams.ts +83 -0
- package/src/hooks/usePathParams.spec.ts +161 -0
- package/src/hooks/usePathParams.ts +89 -0
- package/src/hooks/useQueryParams.spec.ts +224 -0
- package/src/hooks/useQueryParams.ts +73 -0
- package/src/hooks/useRequestBody.spec.ts +215 -0
- package/src/hooks/useRequestBody.ts +94 -0
- package/src/hooks/useRequestRawBody.spec.ts +154 -0
- package/src/hooks/useRequestRawBody.ts +56 -0
- package/src/index.ts +17 -0
- package/src/openapi/analyzerModule/analyzerModule.ts +228 -0
- package/src/openapi/analyzerModule/nodeParsers.ts +648 -0
- package/src/openapi/analyzerModule/parseEndpoint.ts +305 -0
- package/src/openapi/analyzerModule/parseExposedModels.ts +34 -0
- package/src/openapi/analyzerModule/test/openApiAnalyzer.spec.data.ts +521 -0
- package/src/openapi/analyzerModule/test/openApiAnalyzer.spec.ts +1043 -0
- package/src/openapi/analyzerModule/types.ts +72 -0
- package/src/openapi/discoveryModule/discoverImports/discoverImports.ts +43 -0
- package/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterA.spec.data.ts +7 -0
- package/src/openapi/discoveryModule/discoverRouterFiles/data/testRouterB.spec.data.ts +7 -0
- package/src/openapi/discoveryModule/discoverRouterFiles/discoverRouterFiles.spec.ts +36 -0
- package/src/openapi/discoveryModule/discoverRouterFiles/discoverRouterFiles.ts +80 -0
- package/src/openapi/discoveryModule/discoverRouters/discoverRouters.spec.data.ts +42 -0
- package/src/openapi/discoveryModule/discoverRouters/discoverRouters.spec.ts +18 -0
- package/src/openapi/discoveryModule/discoverRouters/discoverRouters.ts +39 -0
- package/src/openapi/discoveryModule/index.ts +2 -0
- package/src/openapi/generatorModule/generateComponentSchemas.ts +12 -0
- package/src/openapi/generatorModule/generatePaths.ts +138 -0
- package/src/openapi/generatorModule/generatorModule.ts +17 -0
- package/src/openapi/generatorModule/getSchema.ts +169 -0
- package/src/openapi/generatorModule/index.ts +4 -0
- package/src/openapi/generatorModule/test/openApiGenerator.spec.data.ts +1119 -0
- package/src/openapi/generatorModule/test/openApiGenerator.spec.ts +783 -0
- package/src/openapi/initOpenApiEngine.ts +20 -0
- package/src/openapi/manager/OpenApiManager.ts +153 -0
- package/src/openapi/router/OpenApiRouter.ts +11 -0
- package/src/openapi/types.ts +86 -0
- package/src/router/Router.ts +123 -0
- package/src/router/responseValueToJson.ts +6 -0
- package/src/setupTests.ts +3 -0
- package/src/test/TestAppRouter.ts +76 -0
- package/src/test/app.spec.ts +130 -0
- package/src/test/app.ts +43 -0
- package/src/utils/TypeUtils.ts +51 -0
- package/src/utils/loadTestData.ts +15 -0
- package/src/utils/mockContext.ts +86 -0
- package/src/utils/nameOf.ts +7 -0
- package/src/utils/object.spec.ts +27 -0
- package/src/utils/object.ts +17 -0
- package/src/utils/printers.spec.ts +103 -0
- package/src/utils/printers.ts +49 -0
- package/src/utils/validationMessages.ts +65 -0
- package/src/validators/BuiltInValidators.ts +64 -0
- package/src/validators/InternalParamWrappers.ts +14 -0
- package/src/validators/ParamWrappers.ts +22 -0
- package/src/validators/types.ts +35 -0
- package/tsconfig.build.json +15 -0
- package/tsconfig.json +29 -0
- 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 @@
|
|
|
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,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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|