@n8n-plus/n8n-plus
Version:
n8n Workflow Automation Tool (plus edition)
42 lines • 2.08 kB
JavaScript
;
const api_types_1 = require("@n8n/api-types");
const config_1 = require("@n8n/config");
const constants_1 = require("@n8n/constants");
const di_1 = require("@n8n/di");
const bad_request_error_1 = require("../../../../errors/response-errors/bad-request.error");
const not_found_error_1 = require("../../../../errors/response-errors/not-found.error");
const n8n_packages_service_1 = require("../../../../modules/n8n-packages/n8n-packages.service");
const global_middleware_1 = require("../../shared/middlewares/global.middleware");
const n8nPackagesHandlers = {
exportWorkflows: [
(0, global_middleware_1.isLicensed)(constants_1.LICENSE_FEATURES.N8N_PACKAGES),
(0, global_middleware_1.publicApiScope)('workflow:export'),
async (req, res) => {
if (!di_1.Container.get(config_1.GlobalConfig).publicApi.packagesEnabled) {
throw new not_found_error_1.NotFoundError('Not Found');
}
const payload = api_types_1.ExportWorkflowsRequestDto.safeParse(req.body);
if (!payload.success) {
throw new bad_request_error_1.BadRequestError(payload.error.errors.map(({ message }) => message).join('; '));
}
const stream = await di_1.Container.get(n8n_packages_service_1.N8nPackagesService).exportWorkflows({
user: req.user,
workflowIds: payload.data.workflowIds,
});
res.setHeader('Content-Type', 'application/gzip');
res.setHeader('Content-Disposition', 'attachment; filename="export.n8np"');
return await new Promise((resolve, reject) => {
stream.on('error', reject);
res.on('finish', () => resolve(res));
res.on('close', () => {
if (!res.writableFinished)
stream.destroy();
resolve(res);
});
stream.pipe(res);
});
},
],
};
module.exports = n8nPackagesHandlers;
//# sourceMappingURL=n8n-packages.handler.js.map