UNPKG

cnpmcore

Version:
63 lines 5.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ErrorHandler = void 0; const PackageSyncerService_1 = require("../../core/service/PackageSyncerService"); const DEFAULT_SERVER_ERROR_STATUS = 500; async function ErrorHandler(ctx, next) { try { await next(); } catch (err) { if (err.name === 'PackageNotFoundError') { if (err.syncPackage) { // create sync task const syncPacakge = err.syncPackage; const packageSyncerService = await ctx.getEggObject(PackageSyncerService_1.PackageSyncerService); const task = await packageSyncerService.createTask(syncPacakge.fullname, { authorIp: ctx.ip, authorId: ctx.userId, tips: `Sync cause by "${syncPacakge.fullname}" missing, request URL "${ctx.href}"`, }); ctx.logger.info('[middleware:ErrorHandler][syncPackage] create sync package "%s" task %s', syncPacakge.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.substring(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, }; } } exports.ErrorHandler = ErrorHandler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL3BvcnQvbWlkZGxld2FyZS9FcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esa0ZBQStFO0FBRS9FLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBRWpDLEtBQUssVUFBVSxZQUFZLENBQUMsR0FBZSxFQUFFLElBQVU7SUFDNUQsSUFBSTtRQUNGLE1BQU0sSUFBSSxFQUFFLENBQUM7S0FDZDtJQUFDLE9BQU8sR0FBUSxFQUFFO1FBQ2pCLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxzQkFBc0IsRUFBRTtZQUN2QyxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUU7Z0JBQ25CLG1CQUFtQjtnQkFDbkIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztnQkFDcEMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLEdBQUcsQ0FBQyxZQUFZLENBQUMsMkNBQW9CLENBQUMsQ0FBQztnQkFDMUUsTUFBTSxJQUFJLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRTtvQkFDdkUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFO29CQUNoQixRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU07b0JBQ3BCLElBQUksRUFBRSxrQkFBa0IsV0FBVyxDQUFDLFFBQVEsMkJBQTJCLEdBQUcsQ0FBQyxJQUFJLEdBQUc7aUJBQ25GLENBQUMsQ0FBQztnQkFDSCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5RUFBeUUsRUFDdkYsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdEM7WUFDRCxJQUFJLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRTtnQkFDaEMsNkJBQTZCO2dCQUM3QixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLHdCQUF3QixHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRCxPQUFPO2FBQ1I7U0FDRjthQUFNLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyx5QkFBeUIsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQ2pFLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNCLE9BQU87U0FDUjtRQUVELHNEQUFzRDtRQUN0RCxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztRQUM5RyxnQ0FBZ0M7UUFDaEMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLDJCQUEyQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLEVBQUU7WUFDbkYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkI7UUFDRCxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQzFCLDhCQUE4QjtRQUM5QixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssMEJBQTBCLElBQUksR0FBRyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRTtZQUMxRixJQUFJO1lBQ0osK0JBQStCO1lBQy9CLG1EQUFtRDtZQUNuRCwwQkFBMEI7WUFDMUIscURBQXFEO1lBQ3JELElBQUk7WUFDSixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2hFO2lCQUFNO2dCQUNMLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ3hCO1NBQ0Y7UUFDRCxzRkFBc0Y7UUFDdEYsR0FBRyxDQUFDLElBQUksR0FBRztZQUNULEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU87U0FDN0UsQ0FBQztLQUNIO0FBQ0gsQ0FBQztBQXRERCxvQ0FzREMifQ==