refactor: Use express-async-errors instead of express-async-handler

This commit is contained in:
Faruk AYDIN
2024-08-28 11:10:31 +03:00
parent 6540d0ea53
commit f7ca59bd5f
22 changed files with 68 additions and 157 deletions

View File

@@ -38,7 +38,7 @@
"debug": "~2.6.9", "debug": "~2.6.9",
"dotenv": "^10.0.0", "dotenv": "^10.0.0",
"express": "~4.18.2", "express": "~4.18.2",
"express-async-handler": "^1.2.0", "express-async-errors": "^3.1.1",
"express-basic-auth": "^1.2.1", "express-basic-auth": "^1.2.1",
"express-graphql": "^0.12.0", "express-graphql": "^0.12.0",
"fast-xml-parser": "^4.0.11", "fast-xml-parser": "^4.0.11",
@@ -106,7 +106,9 @@
"access": "public" "access": "public"
}, },
"nodemonConfig": { "nodemonConfig": {
"watch": [ "src/" ], "watch": [
"src/"
],
"ext": "js" "ext": "js"
} }
} }

View File

@@ -1,5 +1,6 @@
import createError from 'http-errors'; import createError from 'http-errors';
import express from 'express'; import express from 'express';
import 'express-async-errors';
import cors from 'cors'; import cors from 'cors';
import appConfig from './config/app.js'; import appConfig from './config/app.js';

View File

@@ -1,16 +1,11 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import createAccessTokenAction from '../../../controllers/api/v1/access-tokens/create-access-token.js'; import createAccessTokenAction from '../../../controllers/api/v1/access-tokens/create-access-token.js';
import revokeAccessTokenAction from '../../../controllers/api/v1/access-tokens/revoke-access-token.js'; import revokeAccessTokenAction from '../../../controllers/api/v1/access-tokens/revoke-access-token.js';
import { authenticateUser } from '../../../helpers/authentication.js'; import { authenticateUser } from '../../../helpers/authentication.js';
const router = Router(); const router = Router();
router.post('/', asyncHandler(createAccessTokenAction)); router.post('/', createAccessTokenAction);
router.delete( router.delete('/:token', authenticateUser, revokeAccessTokenAction);
'/:token',
authenticateUser,
asyncHandler(revokeAccessTokenAction)
);
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../../helpers/authentication.js'; import { authenticateUser } from '../../../../helpers/authentication.js';
import { authorizeAdmin } from '../../../../helpers/authorization.js'; import { authorizeAdmin } from '../../../../helpers/authorization.js';
import { checkIsEnterprise } from '../../../../helpers/check-is-enterprise.js'; import { checkIsEnterprise } from '../../../../helpers/check-is-enterprise.js';
@@ -14,7 +13,7 @@ router.get(
authenticateUser, authenticateUser,
authorizeAdmin, authorizeAdmin,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(getAuthClientsAction) getAuthClientsAction
); );
router.post( router.post(
@@ -22,7 +21,7 @@ router.post(
authenticateUser, authenticateUser,
authorizeAdmin, authorizeAdmin,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(createAuthClientAction) createAuthClientAction
); );
router.get( router.get(
@@ -30,7 +29,7 @@ router.get(
authenticateUser, authenticateUser,
authorizeAdmin, authorizeAdmin,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(getAuthClientAction) getAuthClientAction
); );
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../../helpers/authentication.js'; import { authenticateUser } from '../../../../helpers/authentication.js';
import { authorizeAdmin } from '../../../../helpers/authorization.js'; import { authorizeAdmin } from '../../../../helpers/authorization.js';
import { checkIsEnterprise } from '../../../../helpers/check-is-enterprise.js'; import { checkIsEnterprise } from '../../../../helpers/check-is-enterprise.js';
@@ -12,7 +11,7 @@ router.get(
authenticateUser, authenticateUser,
authorizeAdmin, authorizeAdmin,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(getPermissionsCatalogAction) getPermissionsCatalogAction
); );
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../../helpers/authentication.js'; import { authenticateUser } from '../../../../helpers/authentication.js';
import { authorizeAdmin } from '../../../../helpers/authorization.js'; import { authorizeAdmin } from '../../../../helpers/authorization.js';
import { checkIsEnterprise } from '../../../../helpers/check-is-enterprise.js'; import { checkIsEnterprise } from '../../../../helpers/check-is-enterprise.js';
@@ -13,7 +12,7 @@ router.get(
authenticateUser, authenticateUser,
authorizeAdmin, authorizeAdmin,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(getRolesAction) getRolesAction
); );
router.get( router.get(
@@ -21,7 +20,7 @@ router.get(
authenticateUser, authenticateUser,
authorizeAdmin, authorizeAdmin,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(getRoleAction) getRoleAction
); );
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../../helpers/authentication.js'; import { authenticateUser } from '../../../../helpers/authentication.js';
import { authorizeAdmin } from '../../../../helpers/authorization.js'; import { authorizeAdmin } from '../../../../helpers/authorization.js';
import { checkIsEnterprise } from '../../../../helpers/check-is-enterprise.js'; import { checkIsEnterprise } from '../../../../helpers/check-is-enterprise.js';
@@ -14,7 +13,7 @@ router.get(
authenticateUser, authenticateUser,
authorizeAdmin, authorizeAdmin,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(getSamlAuthProvidersAction) getSamlAuthProvidersAction
); );
router.get( router.get(
@@ -22,7 +21,7 @@ router.get(
authenticateUser, authenticateUser,
authorizeAdmin, authorizeAdmin,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(getSamlAuthProviderAction) getSamlAuthProviderAction
); );
router.get( router.get(
@@ -30,7 +29,7 @@ router.get(
authenticateUser, authenticateUser,
authorizeAdmin, authorizeAdmin,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(getRoleMappingsAction) getRoleMappingsAction
); );
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../../helpers/authentication.js'; import { authenticateUser } from '../../../../helpers/authentication.js';
import { authorizeAdmin } from '../../../../helpers/authorization.js'; import { authorizeAdmin } from '../../../../helpers/authorization.js';
import getUsersAction from '../../../../controllers/api/v1/admin/users/get-users.ee.js'; import getUsersAction from '../../../../controllers/api/v1/admin/users/get-users.ee.js';
@@ -8,20 +7,8 @@ import deleteUserAction from '../../../../controllers/api/v1/admin/users/delete-
const router = Router(); const router = Router();
router.get('/', authenticateUser, authorizeAdmin, asyncHandler(getUsersAction)); router.get('/', authenticateUser, authorizeAdmin, getUsersAction);
router.get('/:userId', authenticateUser, authorizeAdmin, getUserAction);
router.get( router.delete('/:userId', authenticateUser, authorizeAdmin, deleteUserAction);
'/:userId',
authenticateUser,
authorizeAdmin,
asyncHandler(getUserAction)
);
router.delete(
'/:userId',
authenticateUser,
authorizeAdmin,
asyncHandler(deleteUserAction)
);
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../helpers/authentication.js'; import { authenticateUser } from '../../../helpers/authentication.js';
import { authorizeUser } from '../../../helpers/authorization.js'; import { authorizeUser } from '../../../helpers/authorization.js';
import { checkIsEnterprise } from '../../../helpers/check-is-enterprise.js'; import { checkIsEnterprise } from '../../../helpers/check-is-enterprise.js';
@@ -18,67 +17,54 @@ import getFlowsAction from '../../../controllers/api/v1/apps/get-flows.js';
const router = Router(); const router = Router();
router.get('/', authenticateUser, asyncHandler(getAppsAction)); router.get('/', authenticateUser, getAppsAction);
router.get('/:appKey', authenticateUser, asyncHandler(getAppAction)); router.get('/:appKey', authenticateUser, getAppAction);
router.get('/:appKey/auth', authenticateUser, asyncHandler(getAuthAction)); router.get('/:appKey/auth', authenticateUser, getAuthAction);
router.get( router.get(
'/:appKey/connections', '/:appKey/connections',
authenticateUser, authenticateUser,
authorizeUser, authorizeUser,
asyncHandler(getConnectionsAction) getConnectionsAction
); );
router.get( router.get(
'/:appKey/config', '/:appKey/config',
authenticateUser, authenticateUser,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(getConfigAction) getConfigAction
); );
router.get( router.get(
'/:appKey/auth-clients', '/:appKey/auth-clients',
authenticateUser, authenticateUser,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(getAuthClientsAction) getAuthClientsAction
); );
router.get( router.get(
'/:appKey/auth-clients/:appAuthClientId', '/:appKey/auth-clients/:appAuthClientId',
authenticateUser, authenticateUser,
checkIsEnterprise, checkIsEnterprise,
asyncHandler(getAuthClientAction) getAuthClientAction
); );
router.get( router.get('/:appKey/triggers', authenticateUser, getTriggersAction);
'/:appKey/triggers',
authenticateUser,
asyncHandler(getTriggersAction)
);
router.get( router.get(
'/:appKey/triggers/:triggerKey/substeps', '/:appKey/triggers/:triggerKey/substeps',
authenticateUser, authenticateUser,
asyncHandler(getTriggerSubstepsAction) getTriggerSubstepsAction
); );
router.get( router.get('/:appKey/actions', authenticateUser, getActionsAction);
'/:appKey/actions',
authenticateUser,
asyncHandler(getActionsAction)
);
router.get( router.get(
'/:appKey/actions/:actionKey/substeps', '/:appKey/actions/:actionKey/substeps',
authenticateUser, authenticateUser,
asyncHandler(getActionSubstepsAction) getActionSubstepsAction
); );
router.get( router.get('/:appKey/flows', authenticateUser, authorizeUser, getFlowsAction);
'/:appKey/flows',
authenticateUser,
authorizeUser,
asyncHandler(getFlowsAction)
);
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { checkIsEnterprise } from '../../../helpers/check-is-enterprise.js'; import { checkIsEnterprise } from '../../../helpers/check-is-enterprise.js';
import versionAction from '../../../controllers/api/v1/automatisch/version.js'; import versionAction from '../../../controllers/api/v1/automatisch/version.js';
import notificationsAction from '../../../controllers/api/v1/automatisch/notifications.js'; import notificationsAction from '../../../controllers/api/v1/automatisch/notifications.js';
@@ -9,10 +8,10 @@ import configAction from '../../../controllers/api/v1/automatisch/config.ee.js';
const router = Router(); const router = Router();
router.get('/version', asyncHandler(versionAction)); router.get('/version', versionAction);
router.get('/notifications', asyncHandler(notificationsAction)); router.get('/notifications', notificationsAction);
router.get('/info', asyncHandler(infoAction)); router.get('/info', infoAction);
router.get('/license', asyncHandler(licenseAction)); router.get('/license', licenseAction);
router.get('/config', checkIsEnterprise, asyncHandler(configAction)); router.get('/config', checkIsEnterprise, configAction);
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../helpers/authentication.js'; import { authenticateUser } from '../../../helpers/authentication.js';
import { authorizeUser } from '../../../helpers/authorization.js'; import { authorizeUser } from '../../../helpers/authorization.js';
import getFlowsAction from '../../../controllers/api/v1/connections/get-flows.js'; import getFlowsAction from '../../../controllers/api/v1/connections/get-flows.js';
@@ -12,21 +11,21 @@ router.get(
'/:connectionId/flows', '/:connectionId/flows',
authenticateUser, authenticateUser,
authorizeUser, authorizeUser,
asyncHandler(getFlowsAction) getFlowsAction
); );
router.post( router.post(
'/:connectionId/test', '/:connectionId/test',
authenticateUser, authenticateUser,
authorizeUser, authorizeUser,
asyncHandler(testConnectionAction) testConnectionAction
); );
router.post( router.post(
'/:connectionId/verify', '/:connectionId/verify',
authenticateUser, authenticateUser,
authorizeUser, authorizeUser,
asyncHandler(verifyConnectionAction) verifyConnectionAction
); );
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../helpers/authentication.js'; import { authenticateUser } from '../../../helpers/authentication.js';
import { authorizeUser } from '../../../helpers/authorization.js'; import { authorizeUser } from '../../../helpers/authorization.js';
import getExecutionsAction from '../../../controllers/api/v1/executions/get-executions.js'; import getExecutionsAction from '../../../controllers/api/v1/executions/get-executions.js';
@@ -8,25 +7,20 @@ import getExecutionStepsAction from '../../../controllers/api/v1/executions/get-
const router = Router(); const router = Router();
router.get( router.get('/', authenticateUser, authorizeUser, getExecutionsAction);
'/',
authenticateUser,
authorizeUser,
asyncHandler(getExecutionsAction)
);
router.get( router.get(
'/:executionId', '/:executionId',
authenticateUser, authenticateUser,
authorizeUser, authorizeUser,
asyncHandler(getExecutionAction) getExecutionAction
); );
router.get( router.get(
'/:executionId/execution-steps', '/:executionId/execution-steps',
authenticateUser, authenticateUser,
authorizeUser, authorizeUser,
asyncHandler(getExecutionStepsAction) getExecutionStepsAction
); );
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../helpers/authentication.js'; import { authenticateUser } from '../../../helpers/authentication.js';
import { authorizeUser } from '../../../helpers/authorization.js'; import { authorizeUser } from '../../../helpers/authorization.js';
import getFlowsAction from '../../../controllers/api/v1/flows/get-flows.js'; import getFlowsAction from '../../../controllers/api/v1/flows/get-flows.js';
@@ -7,13 +6,7 @@ import getFlowAction from '../../../controllers/api/v1/flows/get-flow.js';
const router = Router(); const router = Router();
router.get('/', authenticateUser, authorizeUser, asyncHandler(getFlowsAction)); router.get('/', authenticateUser, authorizeUser, getFlowsAction);
router.get('/:flowId', authenticateUser, authorizeUser, getFlowAction);
router.get(
'/:flowId',
authenticateUser,
authorizeUser,
asyncHandler(getFlowAction)
);
export default router; export default router;

View File

@@ -1,14 +1,9 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { allowInstallation } from '../../../../helpers/allow-installation.js'; import { allowInstallation } from '../../../../helpers/allow-installation.js';
import createUserAction from '../../../../controllers/api/v1/installation/users/create-user.js'; import createUserAction from '../../../../controllers/api/v1/installation/users/create-user.js';
const router = Router(); const router = Router();
router.post( router.post('/', allowInstallation, createUserAction);
'/',
allowInstallation,
asyncHandler(createUserAction)
);
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../helpers/authentication.js'; import { authenticateUser } from '../../../helpers/authentication.js';
import checkIsCloud from '../../../helpers/check-is-cloud.js'; import checkIsCloud from '../../../helpers/check-is-cloud.js';
import getPlansAction from '../../../controllers/api/v1/payment/get-plans.ee.js'; import getPlansAction from '../../../controllers/api/v1/payment/get-plans.ee.js';
@@ -7,18 +6,7 @@ import getPaddleInfoAction from '../../../controllers/api/v1/payment/get-paddle-
const router = Router(); const router = Router();
router.get( router.get('/plans', authenticateUser, checkIsCloud, getPlansAction);
'/plans', router.get('/paddle-info', authenticateUser, checkIsCloud, getPaddleInfoAction);
authenticateUser,
checkIsCloud,
asyncHandler(getPlansAction)
);
router.get(
'/paddle-info',
authenticateUser,
checkIsCloud,
asyncHandler(getPaddleInfoAction)
);
export default router; export default router;

View File

@@ -1,10 +1,9 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { checkIsEnterprise } from '../../../helpers/check-is-enterprise.js'; import { checkIsEnterprise } from '../../../helpers/check-is-enterprise.js';
import getSamlAuthProvidersAction from '../../../controllers/api/v1/saml-auth-providers/get-saml-auth-providers.ee.js'; import getSamlAuthProvidersAction from '../../../controllers/api/v1/saml-auth-providers/get-saml-auth-providers.ee.js';
const router = Router(); const router = Router();
router.get('/', checkIsEnterprise, asyncHandler(getSamlAuthProvidersAction)); router.get('/', checkIsEnterprise, getSamlAuthProvidersAction);
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../helpers/authentication.js'; import { authenticateUser } from '../../../helpers/authentication.js';
import { authorizeUser } from '../../../helpers/authorization.js'; import { authorizeUser } from '../../../helpers/authorization.js';
import getConnectionAction from '../../../controllers/api/v1/steps/get-connection.js'; import getConnectionAction from '../../../controllers/api/v1/steps/get-connection.js';
@@ -14,35 +13,30 @@ router.get(
'/:stepId/connection', '/:stepId/connection',
authenticateUser, authenticateUser,
authorizeUser, authorizeUser,
asyncHandler(getConnectionAction) getConnectionAction
); );
router.get( router.get(
'/:stepId/previous-steps', '/:stepId/previous-steps',
authenticateUser, authenticateUser,
authorizeUser, authorizeUser,
asyncHandler(getPreviousStepsAction) getPreviousStepsAction
); );
router.post( router.post(
'/:stepId/dynamic-fields', '/:stepId/dynamic-fields',
authenticateUser, authenticateUser,
authorizeUser, authorizeUser,
asyncHandler(createDynamicFieldsAction) createDynamicFieldsAction
); );
router.post( router.post(
'/:stepId/dynamic-data', '/:stepId/dynamic-data',
authenticateUser, authenticateUser,
authorizeUser, authorizeUser,
asyncHandler(createDynamicDataAction) createDynamicDataAction
); );
router.delete( router.delete('/:stepId', authenticateUser, authorizeUser, deleteStepAction);
'/:stepId',
authenticateUser,
authorizeUser,
asyncHandler(deleteStepAction)
);
export default router; export default router;

View File

@@ -1,5 +1,4 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import { authenticateUser } from '../../../helpers/authentication.js'; import { authenticateUser } from '../../../helpers/authentication.js';
import { authorizeUser } from '../../../helpers/authorization.js'; import { authorizeUser } from '../../../helpers/authorization.js';
import checkIsCloud from '../../../helpers/check-is-cloud.js'; import checkIsCloud from '../../../helpers/check-is-cloud.js';
@@ -15,46 +14,33 @@ import resetPasswordAction from '../../../controllers/api/v1/users/reset-passwor
const router = Router(); const router = Router();
router.get('/me', authenticateUser, asyncHandler(getCurrentUserAction)); router.get('/me', authenticateUser, getCurrentUserAction);
router.get('/:userId/apps', authenticateUser, authorizeUser, getAppsAction);
router.get( router.get('/invoices', authenticateUser, checkIsCloud, getInvoicesAction);
'/:userId/apps',
authenticateUser,
authorizeUser,
asyncHandler(getAppsAction)
);
router.get(
'/invoices',
authenticateUser,
checkIsCloud,
asyncHandler(getInvoicesAction)
);
router.get( router.get(
'/:userId/trial', '/:userId/trial',
authenticateUser, authenticateUser,
checkIsCloud, checkIsCloud,
asyncHandler(getUserTrialAction) getUserTrialAction
); );
router.get( router.get(
'/:userId/subscription', '/:userId/subscription',
authenticateUser, authenticateUser,
checkIsCloud, checkIsCloud,
asyncHandler(getSubscriptionAction) getSubscriptionAction
); );
router.get( router.get(
'/:userId/plan-and-usage', '/:userId/plan-and-usage',
authenticateUser, authenticateUser,
checkIsCloud, checkIsCloud,
asyncHandler(getPlanAndUsageAction) getPlanAndUsageAction
); );
router.post('/invitation', asyncHandler(acceptInvitationAction)); router.post('/invitation', acceptInvitationAction);
router.post('/forgot-password', asyncHandler(forgotPasswordAction)); router.post('/forgot-password', forgotPasswordAction);
router.post('/reset-password', resetPasswordAction);
router.post('/reset-password', asyncHandler(resetPasswordAction));
export default router; export default router;

View File

@@ -1,9 +1,8 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import indexAction from '../controllers/healthcheck/index.js'; import indexAction from '../controllers/healthcheck/index.js';
const router = Router(); const router = Router();
router.get('/', asyncHandler(indexAction)); router.get('/', indexAction);
export default router; export default router;

View File

@@ -43,5 +43,4 @@ router.use('/api/v1/admin/permissions', permissionsRouter);
router.use('/api/v1/admin/saml-auth-providers', adminSamlAuthProvidersRouter); router.use('/api/v1/admin/saml-auth-providers', adminSamlAuthProvidersRouter);
router.use('/api/v1/installation/users', installationUsersRouter); router.use('/api/v1/installation/users', installationUsersRouter);
export default router; export default router;

View File

@@ -1,9 +1,8 @@
import { Router } from 'express'; import { Router } from 'express';
import asyncHandler from 'express-async-handler';
import webhooksHandler from '../controllers/paddle/webhooks.ee.js'; import webhooksHandler from '../controllers/paddle/webhooks.ee.js';
const router = Router(); const router = Router();
router.post('/webhooks', asyncHandler(webhooksHandler)); router.post('/webhooks', webhooksHandler);
export default router; export default router;

View File

@@ -8551,10 +8551,10 @@ exponential-backoff@^3.1.1:
resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6"
integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==
express-async-handler@^1.2.0: express-async-errors@^3.1.1:
version "1.2.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/express-async-handler/-/express-async-handler-1.2.0.tgz#ffc9896061d90f8d2e71a2d2b8668db5b0934391" resolved "https://registry.yarnpkg.com/express-async-errors/-/express-async-errors-3.1.1.tgz#6053236d61d21ddef4892d6bd1d736889fc9da41"
integrity sha512-rCSVtPXRmQSW8rmik/AIb2P0op6l7r1fMW538yyvTMltCO4xQEWMmobfrIxN2V1/mVrgxB8Az3reYF6yUZw37w== integrity sha512-h6aK1da4tpqWSbyCa3FxB/V6Ehd4EEB15zyQq9qe75OZBp0krinNKuH4rAY+S/U/2I36vdLAUFSjQJ+TFmODng==
express-basic-auth@^1.2.1: express-basic-auth@^1.2.1:
version "1.2.1" version "1.2.1"