UNPKG

cnpmcore

Version:

Private NPM Registry for Enterprise

59 lines 5.53 kB
import { PackageSyncerService } from "../../core/service/PackageSyncerService.js"; const DEFAULT_SERVER_ERROR_STATUS = 500; export async function ErrorHandler(ctx, next) { try { await next(); } catch (err) { if (err.name === 'PackageNotFoundError') { if (err.syncPackage) { // create sync task const syncPackage = err.syncPackage; const packageSyncerService = await ctx.getEggObject(PackageSyncerService); const task = await packageSyncerService.createTask(syncPackage.fullname, { authorIp: ctx.ip, authorId: ctx.userId, tips: `Sync cause by "${syncPackage.fullname}" missing, request URL "${ctx.href}"`, }); ctx.logger.info('[middleware:ErrorHandler][syncPackage] create sync package "%s" task %s', syncPackage.fullname, task.taskId); } if (err.redirectToSourceRegistry) { // redirect to sourceRegistry ctx.redirect(`${err.redirectToSourceRegistry}${ctx.url}`); return; } } else if (err.name === 'ControllerRedirectError' && err.location) { ctx.redirect(err.location); return; } // http status, default is DEFAULT_SERVER_ERROR_STATUS ctx.status = typeof err.status === 'number' && err.status >= 200 ? err.status : DEFAULT_SERVER_ERROR_STATUS; // don't log NotImplementedError if (ctx.status >= DEFAULT_SERVER_ERROR_STATUS && err.name !== 'NotImplementedError') { ctx.logger.error(err); } let message = err.message; // convert ctx.tValidate error if (err.name === 'UnprocessableEntityError' && err.currentSchema && err.errors[0]?.message) { // { // instancePath: '/password', // schemaPath: '#/properties/password/minLength', // keyword: 'minLength', // message: 'must NOT have fewer than 8 characters' // } const item = err.errors[0]; if (item.instancePath) { message = `${item.instancePath.slice(1)}: ${item.message}`; } else { message = item.message; } } // error body format https://github.com/npm/npm-registry-fetch/blob/main/errors.js#L45 ctx.body = { error: err.code ? `[${String(err.code).toUpperCase()}] ${message}` : message, }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL3BvcnQvbWlkZGxld2FyZS9FcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFbEYsTUFBTSwyQkFBMkIsR0FBRyxHQUFHLENBQUM7QUFFeEMsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQUMsR0FBWSxFQUFFLElBQVU7SUFDekQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLHNCQUFzQixFQUFFLENBQUM7WUFDeEMsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3BCLG1CQUFtQjtnQkFDbkIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztnQkFDcEMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLEdBQUcsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDMUUsTUFBTSxJQUFJLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRTtvQkFDdkUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFO29CQUNoQixRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQWdCO29CQUM5QixJQUFJLEVBQUUsa0JBQWtCLFdBQVcsQ0FBQyxRQUFRLDJCQUEyQixHQUFHLENBQUMsSUFBSSxHQUFHO2lCQUNuRixDQUFDLENBQUM7Z0JBQ0gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2IseUVBQXlFLEVBQ3pFLFdBQVcsQ0FBQyxRQUFRLEVBQ3BCLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUNqQyw2QkFBNkI7Z0JBQzdCLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQzFELE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyx5QkFBeUIsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0IsT0FBTztRQUNULENBQUM7UUFFRCxzREFBc0Q7UUFDdEQsR0FBRyxDQUFDLE1BQU0sR0FBRyxPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztRQUM1RyxnQ0FBZ0M7UUFDaEMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLDJCQUEyQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztZQUNwRixHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUMxQiw4QkFBOEI7UUFDOUIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLDBCQUEwQixJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUMzRixJQUFJO1lBQ0osK0JBQStCO1lBQy9CLG1EQUFtRDtZQUNuRCwwQkFBMEI7WUFDMUIscURBQXFEO1lBQ3JELElBQUk7WUFDSixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0QixPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO1FBQ0Qsc0ZBQXNGO1FBQ3RGLEdBQUcsQ0FBQyxJQUFJLEdBQUc7WUFDVCxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPO1NBQzdFLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9