mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	refactor(routes/custom): update path "/custom/*path" for express v5
This commit is contained in:
		
							parent
							
								
									23297c9860
								
							
						
					
					
						commit
						0bc91349f6
					
				@ -8,9 +8,26 @@ import type { Request, Response, Router } from "express";
 | 
				
			|||||||
import { safeExtractMessageAndStackFromError } from "../services/utils.js";
 | 
					import { safeExtractMessageAndStackFromError } from "../services/utils.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function handleRequest(req: Request, res: Response) {
 | 
					function handleRequest(req: Request, res: Response) {
 | 
				
			||||||
    // express puts content after first slash into 0 index element
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const path = req.params.path + req.params[0];
 | 
					    // handle path from "*path" route wildcard
 | 
				
			||||||
 | 
					    // in express v4, you could just add
 | 
				
			||||||
 | 
					    // req.params.path + req.params[0], but with v5
 | 
				
			||||||
 | 
					    // we get a split array that we have to join ourselves again
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // @TriliumNextTODO: remove typecasting once express types are fixed
 | 
				
			||||||
 | 
					    // they currently only treat req.params as string, while in reality
 | 
				
			||||||
 | 
					    // it can also be a string[], when using wildcards
 | 
				
			||||||
 | 
					    const splitPath = req.params.path as unknown as string[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //const path = splitPath.map(segment => encodeURIComponent(segment)).join("/")
 | 
				
			||||||
 | 
					    // naively join the "decoded" paths using a slash
 | 
				
			||||||
 | 
					    // this is to mimick handleRequest behaviour
 | 
				
			||||||
 | 
					    // as with the previous express v4.
 | 
				
			||||||
 | 
					    // @TriliumNextTODO: using something like =>
 | 
				
			||||||
 | 
					    // splitPath.map(segment => encodeURIComponent(segment)).join("/")
 | 
				
			||||||
 | 
					    // might be safer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const path = splitPath.join("/")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const attributeIds = sql.getColumn<string>("SELECT attributeId FROM attributes WHERE isDeleted = 0 AND type = 'label' AND name IN ('customRequestHandler', 'customResourceProvider')");
 | 
					    const attributeIds = sql.getColumn<string>("SELECT attributeId FROM attributes WHERE isDeleted = 0 AND type = 'label' AND name IN ('customRequestHandler', 'customResourceProvider')");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -70,7 +87,7 @@ function handleRequest(req: Request, res: Response) {
 | 
				
			|||||||
function register(router: Router) {
 | 
					function register(router: Router) {
 | 
				
			||||||
    // explicitly no CSRF middleware since it's meant to allow integration from external services
 | 
					    // explicitly no CSRF middleware since it's meant to allow integration from external services
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    router.all("/custom/:path*", (req: Request, res: Response, _next) => {
 | 
					    router.all("/custom/*path", (req: Request, res: Response, _next) => {
 | 
				
			||||||
        cls.namespace.bindEmitter(req);
 | 
					        cls.namespace.bindEmitter(req);
 | 
				
			||||||
        cls.namespace.bindEmitter(res);
 | 
					        cls.namespace.bindEmitter(res);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user