diff --git a/src/becca/becca_loader.js b/src/becca/becca_loader.js index ad64570a0..ecf7a7441 100644 --- a/src/becca/becca_loader.js +++ b/src/becca/becca_loader.js @@ -1,7 +1,7 @@ "use strict"; const sql = require('../services/sql'); -const eventService = require('../services/events.js'); +const eventService = require('../services/events'); const becca = require('./becca.js'); const sqlInit = require('../services/sql_init.js'); const log = require('../services/log'); diff --git a/src/routes/api/branches.js b/src/routes/api/branches.js index 4149a7315..55576665e 100644 --- a/src/routes/api/branches.js +++ b/src/routes/api/branches.js @@ -10,7 +10,7 @@ const TaskContext = require('../../services/task_context.js'); const branchService = require('../../services/branches.js'); const log = require('../../services/log'); const ValidationError = require('../../errors/validation_error'); -const eventService = require("../../services/events.js"); +const eventService = require("../../services/events"); /** * Code in this file deals with moving and cloning branches. The relationship between note and parent note is unique diff --git a/src/routes/api/login.js b/src/routes/api/login.js index ec5891c28..6d57519d4 100644 --- a/src/routes/api/login.js +++ b/src/routes/api/login.js @@ -7,7 +7,7 @@ const instanceId = require('../../services/instance_id.js'); const passwordEncryptionService = require('../../services/encryption/password_encryption.js'); const protectedSessionService = require('../../services/protected_session'); const appInfo = require('../../services/app_info.js'); -const eventService = require('../../services/events.js'); +const eventService = require('../../services/events'); const sqlInit = require('../../services/sql_init.js'); const sql = require('../../services/sql'); const ws = require('../../services/ws.js'); diff --git a/src/services/entity_changes.js b/src/services/entity_changes.js index 209afc359..a2b9c99ca 100644 --- a/src/services/entity_changes.js +++ b/src/services/entity_changes.js @@ -53,7 +53,7 @@ function putNoteReorderingEntityChange(parentNoteId, componentId) { instanceId }); - const eventService = require('./events.js'); + const eventService = require('./events'); eventService.emit(eventService.ENTITY_CHANGED, { entityName: 'note_reordering', diff --git a/src/services/events.js b/src/services/events.ts similarity index 84% rename from src/services/events.js rename to src/services/events.ts index 51c30be17..fffcc3982 100644 --- a/src/services/events.js +++ b/src/services/events.ts @@ -11,13 +11,16 @@ const ENTITY_DELETE_SYNCED = "ENTITY_DELETE_SYNCED"; const CHILD_NOTE_CREATED = "CHILD_NOTE_CREATED"; const NOTE_CONTENT_CHANGE = "NOTE_CONTENT_CHANGED"; -const eventListeners = {}; +type EventType = string | string[]; +type EventListener = (data: any) => void; + +const eventListeners: Record = {}; /** * @param {string|string[]}eventTypes - can be either single event or an array of events * @param listener */ -function subscribe(eventTypes, listener) { +function subscribe(eventTypes: EventType, listener: EventListener) { if (!Array.isArray(eventTypes)) { eventTypes = [ eventTypes ]; } @@ -28,7 +31,7 @@ function subscribe(eventTypes, listener) { } } -function subscribeBeccaLoader(eventTypes, listener) { +function subscribeBeccaLoader(eventTypes: EventType, listener: EventListener) { if (!Array.isArray(eventTypes)) { eventTypes = [ eventTypes ]; } @@ -41,7 +44,7 @@ function subscribeBeccaLoader(eventTypes, listener) { } } -function emit(eventType, data) { +function emit(eventType: string, data: any) { const listeners = eventListeners[eventType]; if (listeners) { @@ -49,7 +52,7 @@ function emit(eventType, data) { try { listener(data); } - catch (e) { + catch (e: any) { log.error(`Listener threw error: ${e.message}, stack: ${e.stack}`); // we won't stop execution because of listener } @@ -57,7 +60,7 @@ function emit(eventType, data) { } } -module.exports = { +export = { subscribe, subscribeBeccaLoader, emit, diff --git a/src/services/handlers.js b/src/services/handlers.js index 769c69485..d5a55fafe 100644 --- a/src/services/handlers.js +++ b/src/services/handlers.js @@ -1,4 +1,4 @@ -const eventService = require('./events.js'); +const eventService = require('./events'); const scriptService = require('./script.js'); const treeService = require('./tree.js'); const noteService = require('./notes.js'); diff --git a/src/services/notes.js b/src/services/notes.js index 050729c4c..214975a95 100644 --- a/src/services/notes.js +++ b/src/services/notes.js @@ -2,7 +2,7 @@ const sql = require('./sql'); const optionService = require('./options.js'); const dateUtils = require('./date_utils'); const entityChangesService = require('./entity_changes.js'); -const eventService = require('./events.js'); +const eventService = require('./events'); const cls = require('../services/cls'); const protectedSessionService = require('../services/protected_session'); const log = require('../services/log'); diff --git a/src/services/sync_update.js b/src/services/sync_update.js index 5db427e1f..6581066f4 100644 --- a/src/services/sync_update.js +++ b/src/services/sync_update.js @@ -1,7 +1,7 @@ const sql = require('./sql'); const log = require('./log'); const entityChangesService = require('./entity_changes.js'); -const eventService = require('./events.js'); +const eventService = require('./events'); const entityConstructor = require('../becca/entity_constructor.js'); const ws = require('./ws.js'); diff --git a/src/share/shaca/shaca_loader.js b/src/share/shaca/shaca_loader.js index aef4f36d5..5d1648f49 100644 --- a/src/share/shaca/shaca_loader.js +++ b/src/share/shaca/shaca_loader.js @@ -8,7 +8,7 @@ const SBranch = require('./entities/sbranch.js'); const SAttribute = require('./entities/sattribute.js'); const SAttachment = require('./entities/sattachment.js'); const shareRoot = require('../share_root.js'); -const eventService = require('../../services/events.js'); +const eventService = require('../../services/events'); function load() { const start = Date.now();