After the DC-005 module reorganization (41 files moved into src/ subdirs),
138 test suites failed because the refactor script's path-rewrite logic
missed three categories:
1. Files inside src/ doing 'require("./src/...")' — should be 'require("../...")'
2. Files in src/X/Y/ doing 'require("../../../src/...")' — should be 'require("../../...")'
3. Test files in __tests__/ with leftover 'require("../../../src/...")' paths
Root cause: the original refactor script ran before all files were moved,
so it computed relative paths against stale filesystem state.
Result:
- 30/30 test suites pass
- 879/879 tests pass (was: 18/30 suites, 614/687 tests)
Also fixed:
- routes/apps/restore.js: wrong responses import path
- routes/*/*.js: '../../src/utilities/X' → '../src/utilities/X' (depth 2 routes)
31 lines
799 B
JavaScript
31 lines
799 B
JavaScript
/**
|
|
* Async handler wrapper - Eliminates try/catch boilerplate
|
|
*/
|
|
const { AppError } = require('../utilities/errors');
|
|
|
|
/**
|
|
* Wrap async route handlers - catches errors and logs them
|
|
*/
|
|
function asyncHandler(logError, fn, context) {
|
|
return async (req, res, next) => {
|
|
try {
|
|
await fn(req, res, next);
|
|
} catch (error) {
|
|
// Let typed errors propagate to global error handler
|
|
if (error instanceof AppError) {
|
|
return next(error);
|
|
}
|
|
|
|
await logError(context || req.path, error);
|
|
|
|
if (!res.headersSent) {
|
|
const { errorResponse } = require('./responses');
|
|
const { safeErrorMessage } = require('./logging');
|
|
errorResponse(res, 500, safeErrorMessage(error));
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
module.exports = { asyncHandler };
|