mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 11:39:01 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| import zipExportService from "../../services/export/zip.js";
 | |
| import singleExportService from "../../services/export/single.js";
 | |
| import opmlExportService from "../../services/export/opml.js";
 | |
| import becca from "../../becca/becca.js";
 | |
| import TaskContext from "../../services/task_context.js";
 | |
| import log from "../../services/log.js";
 | |
| import NotFoundError from "../../errors/not_found_error.js";
 | |
| import type { Request, Response } from "express";
 | |
| import ValidationError from "../../errors/validation_error.js";
 | |
| import { safeExtractMessageAndStackFromError } from "../../services/utils.js";
 | |
| 
 | |
| function exportBranch(req: Request, res: Response) {
 | |
|     const { branchId, type, format, version, taskId } = req.params;
 | |
|     const branch = becca.getBranch(branchId);
 | |
| 
 | |
|     if (!branch) {
 | |
|         const message = `Cannot export branch '${branchId}' since it does not exist.`;
 | |
|         log.error(message);
 | |
| 
 | |
|         res.setHeader("Content-Type", "text/plain").status(500).send(message);
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     const taskContext = new TaskContext(taskId, "export");
 | |
| 
 | |
|     try {
 | |
|         if (type === "subtree" && (format === "html" || format === "markdown")) {
 | |
|             zipExportService.exportToZip(taskContext, branch, format, res);
 | |
|         } else if (type === "single") {
 | |
|             if (format !== "html" && format !== "markdown") {
 | |
|                 throw new ValidationError("Invalid export type.");
 | |
|             }
 | |
|             singleExportService.exportSingleNote(taskContext, branch, format, res);
 | |
|         } else if (format === "opml") {
 | |
|             opmlExportService.exportToOpml(taskContext, branch, version, res);
 | |
|         } else {
 | |
|             throw new NotFoundError(`Unrecognized export format '${format}'`);
 | |
|         }
 | |
|     } catch (e: unknown) {
 | |
|         const [errMessage, errStack] = safeExtractMessageAndStackFromError(e);
 | |
|         const message = `Export failed with following error: '${errMessage}'. More details might be in the logs.`;
 | |
|         taskContext.reportError(message);
 | |
| 
 | |
|         log.error(errMessage + errStack);
 | |
| 
 | |
|         res.setHeader("Content-Type", "text/plain").status(500).send(message);
 | |
|     }
 | |
| }
 | |
| 
 | |
| export default {
 | |
|     exportBranch
 | |
| };
 | 
