diff --git a/src/becca/becca-interface.ts b/src/becca/becca-interface.ts index 29c2d080e..48a096eda 100644 --- a/src/becca/becca-interface.ts +++ b/src/becca/becca-interface.ts @@ -242,7 +242,7 @@ export default class Becca { return (this as any)[camelCaseEntityName][entityId]; } - getRecentNotesFromQuery(query: string, params = []): BRecentNote[] { + getRecentNotesFromQuery(query: string, params: string[] = []): BRecentNote[] { const rows = sql.getRows(query, params); const BRecentNote = require('./entities/brecent_note'); // avoiding circular dependency problems diff --git a/src/routes/api/autocomplete.js b/src/routes/api/autocomplete.ts similarity index 66% rename from src/routes/api/autocomplete.js rename to src/routes/api/autocomplete.ts index 9ed36f89e..0aaa3f537 100644 --- a/src/routes/api/autocomplete.js +++ b/src/routes/api/autocomplete.ts @@ -1,21 +1,26 @@ "use strict"; -const beccaService = require('../../becca/becca_service'); -const searchService = require('../../services/search/services/search'); -const log = require('../../services/log'); -const utils = require('../../services/utils'); -const cls = require('../../services/cls'); -const becca = require('../../becca/becca'); +import beccaService = require('../../becca/becca_service'); +import searchService = require('../../services/search/services/search'); +import log = require('../../services/log'); +import utils = require('../../services/utils'); +import cls = require('../../services/cls'); +import becca = require('../../becca/becca'); +import { Request } from 'express'; +import ValidationError = require('../../errors/validation_error'); -function getAutocomplete(req) { - const query = req.query.query.trim(); +function getAutocomplete(req: Request) { + if (typeof req.query.query !== "string") { + throw new ValidationError("Invalid query data type."); + } + const query = (req.query.query || "").trim(); const activeNoteId = req.query.activeNoteId || 'none'; let results; const timestampStarted = Date.now(); - if (query.length === 0) { + if (query.length === 0 && typeof activeNoteId === "string") { results = getRecentNotes(activeNoteId); } else { @@ -31,7 +36,7 @@ function getAutocomplete(req) { return results; } -function getRecentNotes(activeNoteId) { +function getRecentNotes(activeNoteId: string) { let extraCondition = ''; const params = [activeNoteId]; @@ -70,6 +75,6 @@ function getRecentNotes(activeNoteId) { }); } -module.exports = { +export = { getAutocomplete }; diff --git a/src/routes/routes.js b/src/routes/routes.js index 269f2a6ae..27465e442 100644 --- a/src/routes/routes.js +++ b/src/routes/routes.js @@ -26,7 +26,7 @@ const treeApiRoute = require('./api/tree.js'); const notesApiRoute = require('./api/notes.js'); const branchesApiRoute = require('./api/branches.js'); const attachmentsApiRoute = require('./api/attachments'); -const autocompleteApiRoute = require('./api/autocomplete.js'); +const autocompleteApiRoute = require('./api/autocomplete'); const cloningApiRoute = require('./api/cloning'); const revisionsApiRoute = require('./api/revisions'); const recentChangesApiRoute = require('./api/recent_changes.js');