n8n
Version:
n8n Workflow Automation Tool
64 lines • 3.31 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 import_package_upload_1 = require("../../../../modules/n8n-packages/utils/import-package-upload");
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);
});
},
],
importPackage: [
(0, global_middleware_1.isLicensed)(constants_1.LICENSE_FEATURES.N8N_PACKAGES),
(0, global_middleware_1.publicApiScope)('workflow:import'),
async (req, res) => {
if (!di_1.Container.get(config_1.GlobalConfig).publicApi.packagesEnabled) {
throw new not_found_error_1.NotFoundError('Not Found');
}
const packageFile = (0, import_package_upload_1.resolveImportPackageUpload)(req);
const payload = api_types_1.ImportPackageRequestDto.safeParse(req.body ?? {});
if (!payload.success) {
throw new bad_request_error_1.BadRequestError(payload.error.errors.map(({ message }) => message).join('; '));
}
const result = await di_1.Container.get(n8n_packages_service_1.N8nPackagesService).importPackage({
user: req.user,
projectId: payload.data.projectId,
folderId: payload.data.folderId,
packageBuffer: packageFile.buffer,
});
return res.status(200).json(result);
},
],
};
module.exports = n8nPackagesHandlers;
//# sourceMappingURL=n8n-packages.handler.js.map