From 14d16a99d404ef3e5e03f5bd17e6b2bafc803938 Mon Sep 17 00:00:00 2001 From: zadam Date: Wed, 22 Nov 2023 00:00:37 +0100 Subject: [PATCH] wip conversion to ES modules --- package-lock.json | 21 +++++++++-- package.json | 1 + src/becca/becca.js | 18 ++++----- src/becca/becca_loader.js | 11 ++---- src/becca/becca_service.js | 2 - src/becca/entities/abstract_becca_entity.js | 7 +--- src/becca/entities/battachment.js | 7 ++-- src/becca/entities/battribute.js | 3 -- src/becca/entities/bbranch.js | 2 - src/becca/entities/betapi_token.js | 2 - src/becca/entities/bnote.js | 22 ++++------- src/becca/entities/boption.js | 2 - src/becca/entities/brecent_note.js | 2 - src/becca/entities/brevision.js | 2 - src/routes/api/app_info.js | 2 - src/routes/api/attributes.js | 2 - src/routes/api/autocomplete.js | 2 - src/routes/api/backend_log.js | 2 - src/routes/api/branches.js | 2 - src/routes/api/clipper.js | 2 - src/routes/api/cloning.js | 2 - src/routes/api/database.js | 2 - src/routes/api/export.js | 2 - src/routes/api/files.js | 2 - src/routes/api/image.js | 2 - src/routes/api/import.js | 2 - src/routes/api/keys.js | 2 - src/routes/api/login.js | 2 - src/routes/api/note_map.js | 2 - src/routes/api/notes.js | 2 - src/routes/api/options.js | 2 - src/routes/api/password.js | 2 - src/routes/api/recent_changes.js | 2 - src/routes/api/recent_notes.js | 2 - src/routes/api/revisions.js | 2 - src/routes/api/script.js | 2 - src/routes/api/search.js | 2 - src/routes/api/sender.js | 2 - src/routes/api/setup.js | 2 - src/routes/api/similar_notes.js | 2 - src/routes/api/special_notes.js | 2 - src/routes/api/sql.js | 2 - src/routes/api/sync.js | 2 - src/routes/api/tree.js | 2 - src/routes/index.js | 2 - src/routes/login.js | 2 - src/routes/routes.js | 2 - src/routes/setup.js | 2 - src/services/app_icon.js | 2 - src/services/app_info.js | 2 - src/services/attribute_formatter.js | 2 - src/services/attributes.js | 2 - src/services/auth.js | 2 - src/services/backup.js | 2 - src/services/cloning.js | 2 - src/services/config.js | 2 - src/services/consistency_checks.js | 7 +--- src/services/content_hash.js | 2 - src/services/data_dir.js | 2 - src/services/date_notes.js | 2 - src/services/encryption/data_encryption.js | 2 - src/services/encryption/my_scrypt.js | 2 - src/services/encryption/password.js | 2 - src/services/entity_changes.js | 5 ++- src/services/export/md.js | 2 - src/services/export/opml.js | 2 - src/services/export/single.js | 2 - src/services/export/zip.js | 2 - src/services/image.js | 2 - src/services/import/markdown.js | 2 - src/services/import/mime.js | 4 +- src/services/import/opml.js | 2 - src/services/import/single.js | 2 - src/services/import/utils.js | 2 - src/services/import/zip.js | 2 - src/services/keyboard_actions.js | 2 - src/services/log.js | 2 - src/services/options.js | 6 +-- src/services/protected_session.js | 10 ++--- src/services/request.js | 2 - src/services/revisions.js | 2 - src/services/search/expressions/ancestor.js | 2 - src/services/search/expressions/and.js | 2 - .../search/expressions/attribute_exists.js | 2 - src/services/search/expressions/child_of.js | 2 - .../search/expressions/descendant_of.js | 2 - src/services/search/expressions/expression.js | 2 - src/services/search/expressions/is_hidden.js | 2 - .../search/expressions/label_comparison.js | 2 - src/services/search/expressions/not.js | 2 - .../expressions/note_content_fulltext.js | 2 - .../search/expressions/note_flat_text.js | 2 - src/services/search/expressions/or.js | 2 - .../search/expressions/order_by_and_limit.js | 2 - src/services/search/expressions/parent_of.js | 2 - .../search/expressions/property_comparison.js | 2 - .../search/expressions/relation_where.js | 2 - src/services/search/expressions/true.js | 2 - src/services/search/note_set.js | 2 - src/services/search/search_context.js | 2 - src/services/search/search_result.js | 2 - src/services/search/services/parse.js | 2 - src/services/search/services/search.js | 8 ++-- src/services/search/value_extractor.js | 2 - src/services/session_secret.js | 2 - src/services/sql.js | 15 ++------ src/services/sql_init.js | 37 ++++++++----------- src/services/sync.js | 17 +++------ src/services/sync_options.js | 2 - src/services/task_context.js | 2 - src/services/tree.js | 2 - src/services/utils.js | 2 - .../shaca/entities/abstract_shaca_entity.js | 4 +- src/share/shaca/entities/sattachment.js | 2 - src/share/shaca/entities/sattribute.js | 2 - src/share/shaca/entities/sbranch.js | 2 - src/share/shaca/entities/snote.js | 2 - src/share/shaca/shaca.js | 2 - src/share/shaca/shaca_loader.js | 2 - src/share/sql.js | 2 - 120 files changed, 83 insertions(+), 324 deletions(-) diff --git a/package-lock.json b/package-lock.json index fffa87653..d47c05de8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,6 +41,7 @@ "http-proxy-agent": "7.0.0", "https-proxy-agent": "7.0.2", "image-type": "4.1.0", + "import-sync": "^2.1.2", "ini": "3.0.1", "is-animated": "2.0.2", "is-svg": "4.3.2", @@ -5540,7 +5541,6 @@ "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true, "engines": { "node": ">=6" } @@ -7278,6 +7278,14 @@ "node": ">=8" } }, + "node_modules/import-sync": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/import-sync/-/import-sync-2.1.2.tgz", + "integrity": "sha512-Zz48pnwt7D6HWI/OV2J8FRCtalVJYWvQiJDEatimu9CcqEpNJNYmij9FfY+PktWHgGzTR+Bs9igYxRbKdyMaTQ==", + "dependencies": { + "esm": "^3.2.25" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -17848,8 +17856,7 @@ "esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" }, "espree": { "version": "9.6.1", @@ -19136,6 +19143,14 @@ "resolve-cwd": "^3.0.0" } }, + "import-sync": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/import-sync/-/import-sync-2.1.2.tgz", + "integrity": "sha512-Zz48pnwt7D6HWI/OV2J8FRCtalVJYWvQiJDEatimu9CcqEpNJNYmij9FfY+PktWHgGzTR+Bs9igYxRbKdyMaTQ==", + "requires": { + "esm": "^3.2.25" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", diff --git a/package.json b/package.json index e098f28b0..7dbe23c5e 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,7 @@ "http-proxy-agent": "7.0.0", "https-proxy-agent": "7.0.2", "image-type": "4.1.0", + "import-sync": "^2.1.2", "ini": "3.0.1", "is-animated": "2.0.2", "is-svg": "4.3.2", diff --git a/src/becca/becca.js b/src/becca/becca.js index b7f6c0e58..683135ad2 100644 --- a/src/becca/becca.js +++ b/src/becca/becca.js @@ -1,16 +1,7 @@ -"use strict"; - import sql from '../services/sql.js' import NoteSet from '../services/search/note_set.js' import NotFoundError from '../errors/not_found_error.js' - -import BRevision from './entities/brevision.js' // avoiding circular dependency problems - -import BAttachment from './entities/battachment.js' // avoiding circular dependency problems - -import BBlob from './entities/bblob.js' // avoiding circular dependency problems - -import BRecentNote from './entities/brecent_note.js' // avoiding circular dependency problems +import importSync from "import-sync"; /** * Becca is a backend cache of all notes, branches, and attributes. @@ -155,6 +146,7 @@ class Becca { /** @returns {BRevision|null} */ getRevision(revisionId) { const row = sql.getRow("SELECT * FROM revisions WHERE revisionId = ?", [revisionId]); + const BRevision = importSync('./entities/brevision.js'); return row ? new BRevision(row) : null; } @@ -168,6 +160,7 @@ class Becca { JOIN blobs USING (blobId) WHERE attachmentId = ? AND isDeleted = 0` : `SELECT * FROM attachments WHERE attachmentId = ? AND isDeleted = 0`; + const BAttachment = importSync('./entities/battachment.js'); return sql.getRows(query, [attachmentId]) .map(row => new BAttachment(row))[0]; } @@ -183,7 +176,7 @@ class Becca { /** @returns {BAttachment[]} */ getAttachments(attachmentIds) { -// avoiding circular dependency problems + const BAttachment = importSync('./entities/battachment.js'); return sql.getManyRows("SELECT * FROM attachments WHERE attachmentId IN (???) AND isDeleted = 0", attachmentIds) .map(row => new BAttachment(row)); } @@ -191,6 +184,7 @@ class Becca { /** @returns {BBlob|null} */ getBlob(entity) { const row = sql.getRow("SELECT *, LENGTH(content) AS contentLength FROM blobs WHERE blobId = ?", [entity.blobId]); + const BBlob = importSync('./entities/bblob.js'); return row ? new BBlob(row) : null; } @@ -238,12 +232,14 @@ class Becca { /** @returns {BRecentNote[]} */ getRecentNotesFromQuery(query, params = []) { const rows = sql.getRows(query, params); + const BRecentNote = importSync('./entities/brecentnote.js'); return rows.map(row => new BRecentNote(row)); } /** @returns {BRevision[]} */ getRevisionsFromQuery(query, params = []) { const rows = sql.getRows(query, params); + const BRevision = importSync('./entities/brevision.js'); return rows.map(row => new BRevision(row)); } diff --git a/src/becca/becca_loader.js b/src/becca/becca_loader.js index f2c61c2f2..a73cef642 100644 --- a/src/becca/becca_loader.js +++ b/src/becca/becca_loader.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from '../services/sql.js' import eventService from '../services/events.js' import becca from './becca.js' @@ -12,17 +10,14 @@ import BOption from './entities/boption.js' import BEtapiToken from './entities/betapi_token.js' import cls from '../services/cls.js' import entityConstructor from '../becca/entity_constructor.js' - -import services from '../services/options_init.js' - -import services0 from '../services/ws.js' +import importSync from "import-sync"; const beccaLoaded = new Promise((res, rej) => { sqlInit.dbReady.then(() => { cls.init(() => { load(); - services.initStartupOptions(); + importSync('../services/options_init.js').initStartupOptions(); res(); }); @@ -75,7 +70,7 @@ function load() { function reload(reason) { load(); - services0.reloadFrontend(reason || "becca reloaded"); + importSync('../services/ws.js').reloadFrontend(reason || "becca reloaded"); } eventService.subscribeBeccaLoader([eventService.ENTITY_CHANGE_SYNCED], ({entityName, entityRow}) => { diff --git a/src/becca/becca_service.js b/src/becca/becca_service.js index b813bfbf0..f97180c26 100644 --- a/src/becca/becca_service.js +++ b/src/becca/becca_service.js @@ -1,5 +1,3 @@ -"use strict"; - import becca from './becca.js' import cls from '../services/cls.js' import log from '../services/log.js' diff --git a/src/becca/entities/abstract_becca_entity.js b/src/becca/entities/abstract_becca_entity.js index 9fea04986..f258bb885 100644 --- a/src/becca/entities/abstract_becca_entity.js +++ b/src/becca/entities/abstract_becca_entity.js @@ -1,5 +1,3 @@ -"use strict"; - import utils from '../../services/utils.js' import sql from '../../services/sql.js' import entityChangesService from '../../services/entity_changes.js' @@ -9,8 +7,7 @@ import cls from '../../services/cls.js' import log from '../../services/log.js' import protectedSessionService from '../../services/protected_session.js' import blobService from '../../services/blob.js' - -import becca0 from '../becca.js' +import importSync from "import-sync"; let becca = null; @@ -36,7 +33,7 @@ class AbstractBeccaEntity { */ get becca() { if (!becca) { - becca = becca0; + becca = importSync("../becca.js"); } return becca; diff --git a/src/becca/entities/battachment.js b/src/becca/entities/battachment.js index 37b17b339..7e4b7ff99 100644 --- a/src/becca/entities/battachment.js +++ b/src/becca/entities/battachment.js @@ -1,13 +1,10 @@ -"use strict"; - import utils from '../../services/utils.js' import dateUtils from '../../services/date_utils.js' import AbstractBeccaEntity from './abstract_becca_entity.js' import sql from '../../services/sql.js' import protectedSessionService from '../../services/protected_session.js' import log from '../../services/log.js' - -import noteService from '../../services/notes.js' +import importSync from "import-sync"; const attachmentRoleToNoteTypeMapping = { 'image': 'image' @@ -154,6 +151,8 @@ class BAttachment extends AbstractBeccaEntity { if (!this.isContentAvailable()) { // isProtected is the same for attachment throw new Error(`Cannot convert protected attachment outside of protected session`); } + + const noteService = importSync('../../services/notes.js'); const { note, branch } = noteService.createNewNote({ parentNoteId: this.ownerId, title: this.title, diff --git a/src/becca/entities/battribute.js b/src/becca/entities/battribute.js index 9b65945e2..41f15eba7 100644 --- a/src/becca/entities/battribute.js +++ b/src/becca/entities/battribute.js @@ -1,8 +1,5 @@ -"use strict"; - import BNote from './bnote.js' import AbstractBeccaEntity from './abstract_becca_entity.js' -import sql from '../../services/sql.js' import dateUtils from '../../services/date_utils.js' import promotedAttributeDefinitionParser from '../../services/promoted_attribute_definition_parser.js' import { sanitizeAttributeName } from '../../services/sanitize_attribute_name.js'; diff --git a/src/becca/entities/bbranch.js b/src/becca/entities/bbranch.js index 77541618d..46f1094e2 100644 --- a/src/becca/entities/bbranch.js +++ b/src/becca/entities/bbranch.js @@ -1,5 +1,3 @@ -"use strict"; - import BNote from './bnote.js' import AbstractBeccaEntity from './abstract_becca_entity.js' import dateUtils from '../../services/date_utils.js' diff --git a/src/becca/entities/betapi_token.js b/src/becca/entities/betapi_token.js index e912f7715..379887c67 100644 --- a/src/becca/entities/betapi_token.js +++ b/src/becca/entities/betapi_token.js @@ -1,5 +1,3 @@ -"use strict"; - import dateUtils from '../../services/date_utils.js' import AbstractBeccaEntity from './abstract_becca_entity.js' diff --git a/src/becca/entities/bnote.js b/src/becca/entities/bnote.js index bb5d53033..b952d279a 100644 --- a/src/becca/entities/bnote.js +++ b/src/becca/entities/bnote.js @@ -1,5 +1,3 @@ -"use strict"; - import protectedSessionService from '../../services/protected_session.js' import log from '../../services/log.js' import sql from '../../services/sql.js' @@ -8,21 +6,11 @@ import dateUtils from '../../services/date_utils.js' import AbstractBeccaEntity from './abstract_becca_entity.js' import BRevision from './brevision.js' import BAttachment from './battachment.js' +import BAttribute from './battribute.js' import TaskContext from '../../services/task_context.js' import dayjs from "dayjs"; import utc from "dayjs/plugin/utc.js"; -import eventService from '../../services/events.js' -import searchService from '../../services/search/services/search.js' - -import BAttribute from './battribute.js' - -import cloningService from '../../services/cloning.js' - -import noteService from '../../services/notes.js' - - -// needs to be run before branches and attributes are deleted and thus attached relations disappear -import handlers from '../../services/handlers.js' +import importSync from "import-sync"; dayjs.extend(utc); @@ -279,6 +267,7 @@ class BNote extends AbstractBeccaEntity { setContent(content, opts) { this._setContent(content, opts); + const eventService = importSync('../../services/events.js'); eventService.emit(eventService.NOTE_CONTENT_CHANGE, { entity: this }); } @@ -915,6 +904,7 @@ class BNote extends AbstractBeccaEntity { } try { + const searchService = importSync('../../services/search/services/search.js'); const {searchResultNoteIds} = searchService.searchFromNote(this); const becca = this.becca; @@ -1469,6 +1459,7 @@ class BNote extends AbstractBeccaEntity { cloneTo(parentNoteId) { const branch = this.becca.getNote(parentNoteId).getParentBranches()[0]; + const cloningService = importSync('../../services/cloning.js'); return cloningService.cloneNoteToBranch(this.noteId, branch.branchId); } @@ -1539,6 +1530,7 @@ class BNote extends AbstractBeccaEntity { const fixedContent = utils.replaceAll(parentContent, oldNoteUrl, newAttachmentUrl); parentNote.setContent(fixedContent); + const noteService = importSync('../../services/notes.js'); noteService.asyncPostProcessContent(parentNote, fixedContent); // to mark an unused attachment for deletion this.deleteNote(); @@ -1564,6 +1556,8 @@ class BNote extends AbstractBeccaEntity { if (!taskContext) { taskContext = new TaskContext('no-progress-reporting'); } + // needs to be run before branches and attributes are deleted and thus attached relations disappear + const handlers = importSync('../../services/handlers.js'); handlers.runAttachedRelations(this, 'runOnNoteDeletion', this); taskContext.noteDeletionHandlerTriggered = true; diff --git a/src/becca/entities/boption.js b/src/becca/entities/boption.js index 3b43f5e69..a428c9f0f 100644 --- a/src/becca/entities/boption.js +++ b/src/becca/entities/boption.js @@ -1,5 +1,3 @@ -"use strict"; - import dateUtils from '../../services/date_utils.js' import AbstractBeccaEntity from './abstract_becca_entity.js' diff --git a/src/becca/entities/brecent_note.js b/src/becca/entities/brecent_note.js index 889471591..af09fa43e 100644 --- a/src/becca/entities/brecent_note.js +++ b/src/becca/entities/brecent_note.js @@ -1,5 +1,3 @@ -"use strict"; - import dateUtils from '../../services/date_utils.js' import AbstractBeccaEntity from './abstract_becca_entity.js' diff --git a/src/becca/entities/brevision.js b/src/becca/entities/brevision.js index 82931902f..1dad7ceba 100644 --- a/src/becca/entities/brevision.js +++ b/src/becca/entities/brevision.js @@ -1,5 +1,3 @@ -"use strict"; - import protectedSessionService from '../../services/protected_session.js' import utils from '../../services/utils.js' import dateUtils from '../../services/date_utils.js' diff --git a/src/routes/api/app_info.js b/src/routes/api/app_info.js index ec86c79e8..13e066ec4 100644 --- a/src/routes/api/app_info.js +++ b/src/routes/api/app_info.js @@ -1,5 +1,3 @@ -"use strict"; - import appInfo from '../../services/app_info.js' function getAppInfo() { diff --git a/src/routes/api/attributes.js b/src/routes/api/attributes.js index 7b06be2cc..75e05046a 100644 --- a/src/routes/api/attributes.js +++ b/src/routes/api/attributes.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from '../../services/sql.js' import log from '../../services/log.js' import attributeService from '../../services/attributes.js' diff --git a/src/routes/api/autocomplete.js b/src/routes/api/autocomplete.js index 26ed90146..d71e257f3 100644 --- a/src/routes/api/autocomplete.js +++ b/src/routes/api/autocomplete.js @@ -1,5 +1,3 @@ -"use strict"; - import beccaService from '../../becca/becca_service.js' import searchService from '../../services/search/services/search.js' import log from '../../services/log.js' diff --git a/src/routes/api/backend_log.js b/src/routes/api/backend_log.js index e3ea26240..fca7c9586 100644 --- a/src/routes/api/backend_log.js +++ b/src/routes/api/backend_log.js @@ -1,5 +1,3 @@ -"use strict"; - import fs from 'fs'; import dateUtils from '../../services/date_utils.js' import dataDir from '../../services/data_dir.js'; diff --git a/src/routes/api/branches.js b/src/routes/api/branches.js index 477ba91c6..d042332cf 100644 --- a/src/routes/api/branches.js +++ b/src/routes/api/branches.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from '../../services/sql.js' import utils from '../../services/utils.js' import entityChangesService from '../../services/entity_changes.js' diff --git a/src/routes/api/clipper.js b/src/routes/api/clipper.js index f10658c6f..9501739d1 100644 --- a/src/routes/api/clipper.js +++ b/src/routes/api/clipper.js @@ -1,5 +1,3 @@ -"use strict"; - import attributeService from '../../services/attributes.js' import cloneService from '../../services/cloning.js' import noteService from '../../services/notes.js' diff --git a/src/routes/api/cloning.js b/src/routes/api/cloning.js index 22b2722fe..c00811f95 100644 --- a/src/routes/api/cloning.js +++ b/src/routes/api/cloning.js @@ -1,5 +1,3 @@ -"use strict"; - import cloningService from '../../services/cloning.js' function cloneNoteToBranch(req) { diff --git a/src/routes/api/database.js b/src/routes/api/database.js index 29e9e3f15..ce3aac91f 100644 --- a/src/routes/api/database.js +++ b/src/routes/api/database.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from '../../services/sql.js' import log from '../../services/log.js' import backupService from '../../services/backup.js' diff --git a/src/routes/api/export.js b/src/routes/api/export.js index f681e960d..26877a60b 100644 --- a/src/routes/api/export.js +++ b/src/routes/api/export.js @@ -1,5 +1,3 @@ -"use strict"; - import zipExportService from '../../services/export/zip.js' import singleExportService from '../../services/export/single.js' import opmlExportService from '../../services/export/opml.js' diff --git a/src/routes/api/files.js b/src/routes/api/files.js index 84bf0ee89..cbd7048e4 100644 --- a/src/routes/api/files.js +++ b/src/routes/api/files.js @@ -1,5 +1,3 @@ -"use strict"; - import protectedSessionService from '../../services/protected_session.js' import utils from '../../services/utils.js' import log from '../../services/log.js' diff --git a/src/routes/api/image.js b/src/routes/api/image.js index 29a1b7bde..8cf902ea0 100644 --- a/src/routes/api/image.js +++ b/src/routes/api/image.js @@ -1,5 +1,3 @@ -"use strict"; - import imageService from '../../services/image.js' import becca from '../../becca/becca.js' import resourceDir from '../../services/resource_dir.js'; diff --git a/src/routes/api/import.js b/src/routes/api/import.js index b76b17a0b..3960a2462 100644 --- a/src/routes/api/import.js +++ b/src/routes/api/import.js @@ -1,5 +1,3 @@ -"use strict"; - import enexImportService from '../../services/import/enex.js' import opmlImportService from '../../services/import/opml.js' import zipImportService from '../../services/import/zip.js' diff --git a/src/routes/api/keys.js b/src/routes/api/keys.js index dfa5ca65c..153e8bd98 100644 --- a/src/routes/api/keys.js +++ b/src/routes/api/keys.js @@ -1,5 +1,3 @@ -"use strict"; - import keyboardActions from '../../services/keyboard_actions.js' import becca from '../../becca/becca.js' diff --git a/src/routes/api/login.js b/src/routes/api/login.js index e777c09a6..dd19cb78d 100644 --- a/src/routes/api/login.js +++ b/src/routes/api/login.js @@ -1,5 +1,3 @@ -"use strict"; - import options from '../../services/options.js' import utils from '../../services/utils.js' import dateUtils from '../../services/date_utils.js' diff --git a/src/routes/api/note_map.js b/src/routes/api/note_map.js index 27c502d3d..0c2f52bf9 100644 --- a/src/routes/api/note_map.js +++ b/src/routes/api/note_map.js @@ -1,5 +1,3 @@ -"use strict"; - import becca from '../../becca/becca.js' import { JSDOM } from 'jsdom'; diff --git a/src/routes/api/notes.js b/src/routes/api/notes.js index fb68aceea..70b4f23ca 100644 --- a/src/routes/api/notes.js +++ b/src/routes/api/notes.js @@ -1,5 +1,3 @@ -"use strict"; - import noteService from '../../services/notes.js' import eraseService from '../../services/erase.js' import treeService from '../../services/tree.js' diff --git a/src/routes/api/options.js b/src/routes/api/options.js index 2b441ce2e..944f01e3e 100644 --- a/src/routes/api/options.js +++ b/src/routes/api/options.js @@ -1,5 +1,3 @@ -"use strict"; - import optionService from '../../services/options.js' import log from '../../services/log.js' import searchService from '../../services/search/services/search.js' diff --git a/src/routes/api/password.js b/src/routes/api/password.js index 600cdf52f..915b35da4 100644 --- a/src/routes/api/password.js +++ b/src/routes/api/password.js @@ -1,5 +1,3 @@ -"use strict"; - import passwordService from '../../services/encryption/password.js' import ValidationError from '../../errors/validation_error.js' diff --git a/src/routes/api/recent_changes.js b/src/routes/api/recent_changes.js index 8f1df3706..4e87680fd 100644 --- a/src/routes/api/recent_changes.js +++ b/src/routes/api/recent_changes.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from '../../services/sql.js' import protectedSessionService from '../../services/protected_session.js' import noteService from '../../services/notes.js' diff --git a/src/routes/api/recent_notes.js b/src/routes/api/recent_notes.js index 81fc5720d..bf6e6ddc1 100644 --- a/src/routes/api/recent_notes.js +++ b/src/routes/api/recent_notes.js @@ -1,5 +1,3 @@ -"use strict"; - import BRecentNote from '../../becca/entities/brecent_note.js' import sql from '../../services/sql.js' import dateUtils from '../../services/date_utils.js' diff --git a/src/routes/api/revisions.js b/src/routes/api/revisions.js index 67612fb9b..5dd948ef4 100644 --- a/src/routes/api/revisions.js +++ b/src/routes/api/revisions.js @@ -1,5 +1,3 @@ -"use strict"; - import beccaService from '../../becca/becca_service.js' import revisionService from '../../services/revisions.js' import utils from '../../services/utils.js' diff --git a/src/routes/api/script.js b/src/routes/api/script.js index fe81d8a6b..1a50ea920 100644 --- a/src/routes/api/script.js +++ b/src/routes/api/script.js @@ -1,5 +1,3 @@ -"use strict"; - import scriptService from '../../services/script.js' import attributeService from '../../services/attributes.js' import becca from '../../becca/becca.js' diff --git a/src/routes/api/search.js b/src/routes/api/search.js index 4c25901cf..c89133a34 100644 --- a/src/routes/api/search.js +++ b/src/routes/api/search.js @@ -1,5 +1,3 @@ -"use strict"; - import becca from '../../becca/becca.js' import SearchContext from '../../services/search/search_context.js' import searchService from '../../services/search/services/search.js' diff --git a/src/routes/api/sender.js b/src/routes/api/sender.js index 2ef741847..4e3883299 100644 --- a/src/routes/api/sender.js +++ b/src/routes/api/sender.js @@ -1,5 +1,3 @@ -"use strict"; - import imageType from 'image-type'; import imageService from '../../services/image.js' import noteService from '../../services/notes.js' diff --git a/src/routes/api/setup.js b/src/routes/api/setup.js index 175accc5a..9686c13a9 100644 --- a/src/routes/api/setup.js +++ b/src/routes/api/setup.js @@ -1,5 +1,3 @@ -"use strict"; - import sqlInit from '../../services/sql_init.js' import setupService from '../../services/setup.js' import log from '../../services/log.js' diff --git a/src/routes/api/similar_notes.js b/src/routes/api/similar_notes.js index 2cf511b47..1751ff4d9 100644 --- a/src/routes/api/similar_notes.js +++ b/src/routes/api/similar_notes.js @@ -1,5 +1,3 @@ -"use strict"; - import similarityService from '../../becca/similarity.js' import becca from '../../becca/becca.js' diff --git a/src/routes/api/special_notes.js b/src/routes/api/special_notes.js index 89542a4a2..218397382 100644 --- a/src/routes/api/special_notes.js +++ b/src/routes/api/special_notes.js @@ -1,5 +1,3 @@ -"use strict"; - import dateNoteService from '../../services/date_notes.js' import sql from '../../services/sql.js' import cls from '../../services/cls.js' diff --git a/src/routes/api/sql.js b/src/routes/api/sql.js index 7da1adde5..d188f6ace 100644 --- a/src/routes/api/sql.js +++ b/src/routes/api/sql.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from '../../services/sql.js' import becca from '../../becca/becca.js' diff --git a/src/routes/api/sync.js b/src/routes/api/sync.js index e9c726cb3..d860afe55 100644 --- a/src/routes/api/sync.js +++ b/src/routes/api/sync.js @@ -1,5 +1,3 @@ -"use strict"; - import syncService from '../../services/sync.js' import syncUpdateService from '../../services/sync_update.js' import entityChangesService from '../../services/entity_changes.js' diff --git a/src/routes/api/tree.js b/src/routes/api/tree.js index 46ca66a85..3ad30ab09 100644 --- a/src/routes/api/tree.js +++ b/src/routes/api/tree.js @@ -1,5 +1,3 @@ -"use strict"; - import becca from '../../becca/becca.js' import log from '../../services/log.js' import NotFoundError from '../../errors/not_found_error.js' diff --git a/src/routes/index.js b/src/routes/index.js index 10fb74f53..84d22c7e4 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from '../services/sql.js' import attributeService from '../services/attributes.js' import config from '../services/config.js' diff --git a/src/routes/login.js b/src/routes/login.js index 3f1905577..ae25f32ca 100644 --- a/src/routes/login.js +++ b/src/routes/login.js @@ -1,5 +1,3 @@ -"use strict"; - import utils from '../services/utils.js' import optionService from '../services/options.js' import myScryptService from '../services/encryption/my_scrypt.js' diff --git a/src/routes/routes.js b/src/routes/routes.js index 70e7046b9..297b1d206 100644 --- a/src/routes/routes.js +++ b/src/routes/routes.js @@ -1,5 +1,3 @@ -"use strict"; - import utils from '../services/utils.js' import multer from 'multer'; import log from '../services/log.js' diff --git a/src/routes/setup.js b/src/routes/setup.js index e0e12da9f..68deb692e 100644 --- a/src/routes/setup.js +++ b/src/routes/setup.js @@ -1,5 +1,3 @@ -"use strict"; - import sqlInit from '../services/sql_init.js' import setupService from '../services/setup.js' import utils from '../services/utils.js' diff --git a/src/services/app_icon.js b/src/services/app_icon.js index 499d036be..a9d319835 100644 --- a/src/services/app_icon.js +++ b/src/services/app_icon.js @@ -1,5 +1,3 @@ -"use strict"; - import path from 'path'; import resourceDir from './resource_dir.js'; import log from './log.js' diff --git a/src/services/app_info.js b/src/services/app_info.js index 492baee93..fa03788d8 100644 --- a/src/services/app_info.js +++ b/src/services/app_info.js @@ -1,5 +1,3 @@ -"use strict"; - import build from './build.js' import packageJson from '../../package.json' assert { type: 'json' } import dataDir from './data_dir.js'; diff --git a/src/services/attribute_formatter.js b/src/services/attribute_formatter.js index 8d741dc31..fc0e2f739 100644 --- a/src/services/attribute_formatter.js +++ b/src/services/attribute_formatter.js @@ -1,5 +1,3 @@ -"use strict"; - export function formatAttrForSearch(attr, searchWithValue) { let searchStr = ''; diff --git a/src/services/attributes.js b/src/services/attributes.js index 8a73d425e..00004921b 100644 --- a/src/services/attributes.js +++ b/src/services/attributes.js @@ -1,5 +1,3 @@ -"use strict"; - import searchService from './search/services/search.js' import sql from './sql.js' import becca from '../becca/becca.js' diff --git a/src/services/auth.js b/src/services/auth.js index 42d2255f4..ce5670cba 100644 --- a/src/services/auth.js +++ b/src/services/auth.js @@ -1,5 +1,3 @@ -"use strict"; - import etapiTokenService from './etapi_tokens.js' import log from './log.js' import sqlInit from './sql_init.js' diff --git a/src/services/backup.js b/src/services/backup.js index d19ac0465..ab63783de 100644 --- a/src/services/backup.js +++ b/src/services/backup.js @@ -1,5 +1,3 @@ -"use strict"; - import dateUtils from './date_utils.js' import optionService from './options.js' import fs from 'fs-extra'; diff --git a/src/services/cloning.js b/src/services/cloning.js index a4dc4ba2e..4750c446b 100644 --- a/src/services/cloning.js +++ b/src/services/cloning.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from './sql.js' import eventChangesService from './entity_changes.js' import treeService from './tree.js' diff --git a/src/services/config.js b/src/services/config.js index a39e06874..91d3dafaa 100644 --- a/src/services/config.js +++ b/src/services/config.js @@ -1,5 +1,3 @@ -"use strict"; - import ini from 'ini'; import fs from 'fs'; import dataDir from './data_dir.js' diff --git a/src/services/consistency_checks.js b/src/services/consistency_checks.js index a7a39067c..96733d54e 100644 --- a/src/services/consistency_checks.js +++ b/src/services/consistency_checks.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from './sql.js' import sqlInit from './sql_init.js' import log from './log.js' @@ -15,8 +13,7 @@ import utils from '../services/utils.js' import eraseService from '../services/erase.js' import { sanitizeAttributeName } from './sanitize_attribute_name.js'; import services from '../services/note_types.js' - -import becca0 from '../becca/becca_loader.js' +import importSync from "import-sync"; const noteTypes = services.getNoteTypeNames(); @@ -767,7 +764,7 @@ class ConsistencyChecks { } if (this.reloadNeeded) { - becca0.reload("consistency checks need becca reload"); + importSync('../becca/becca_loader.js').reload("consistency checks need becca reload"); } return !this.unrecoveredConsistencyErrors; diff --git a/src/services/content_hash.js b/src/services/content_hash.js index 1727b023c..d331218be 100644 --- a/src/services/content_hash.js +++ b/src/services/content_hash.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from './sql.js' import utils from './utils.js' import log from './log.js' diff --git a/src/services/data_dir.js b/src/services/data_dir.js index ba7fc0071..8e17b2667 100644 --- a/src/services/data_dir.js +++ b/src/services/data_dir.js @@ -1,5 +1,3 @@ -"use strict"; - /* * This file resolves trilium data path in this order of priority: * - if TRILIUM_DATA_DIR environment variable exists, then its value is used as the path diff --git a/src/services/date_notes.js b/src/services/date_notes.js index d9132d93f..e1ab4b43a 100644 --- a/src/services/date_notes.js +++ b/src/services/date_notes.js @@ -1,5 +1,3 @@ -"use strict"; - import noteService from './notes.js' import attributeService from './attributes.js' import dateUtils from './date_utils.js' diff --git a/src/services/encryption/data_encryption.js b/src/services/encryption/data_encryption.js index b3d0172cd..991cee460 100644 --- a/src/services/encryption/data_encryption.js +++ b/src/services/encryption/data_encryption.js @@ -1,5 +1,3 @@ -"use strict"; - import crypto from 'crypto'; import log from '../log.js' diff --git a/src/services/encryption/my_scrypt.js b/src/services/encryption/my_scrypt.js index cc65d752a..fa05f83ca 100644 --- a/src/services/encryption/my_scrypt.js +++ b/src/services/encryption/my_scrypt.js @@ -1,5 +1,3 @@ -"use strict"; - import optionService from '../options.js' import crypto from 'crypto'; diff --git a/src/services/encryption/password.js b/src/services/encryption/password.js index 01bd0bdc1..a060ec42e 100644 --- a/src/services/encryption/password.js +++ b/src/services/encryption/password.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from '../sql.js' import optionService from '../options.js' import myScryptService from './my_scrypt.js' diff --git a/src/services/entity_changes.js b/src/services/entity_changes.js index c30b6bab5..56ea69de9 100644 --- a/src/services/entity_changes.js +++ b/src/services/entity_changes.js @@ -6,8 +6,7 @@ import utils from './utils.js' import instanceId from './instance_id.js' import becca from '../becca/becca.js' import blobService from '../services/blob.js' - -import eventService from './events.js' +import importSync from "import-sync"; let maxEntityChangeId = 0; @@ -54,6 +53,8 @@ function putNoteReorderingEntityChange(parentNoteId, componentId) { componentId, instanceId }); + + const eventService = importSync('./events.js'); eventService.emit(eventService.ENTITY_CHANGED, { entityName: 'note_reordering', entity: sql.getMap(`SELECT branchId, notePosition FROM branches WHERE isDeleted = 0 AND parentNoteId = ?`, [parentNoteId]) diff --git a/src/services/export/md.js b/src/services/export/md.js index 96c3ddd62..4cbad4ddb 100644 --- a/src/services/export/md.js +++ b/src/services/export/md.js @@ -1,5 +1,3 @@ -"use strict"; - import TurndownService from 'turndown'; import turndownPluginGfm from 'joplin-turndown-plugin-gfm'; diff --git a/src/services/export/opml.js b/src/services/export/opml.js index 1f9a950c8..d8a2cf70c 100644 --- a/src/services/export/opml.js +++ b/src/services/export/opml.js @@ -1,5 +1,3 @@ -"use strict"; - import utils from '../utils.js' import becca from '../../becca/becca.js' diff --git a/src/services/export/single.js b/src/services/export/single.js index 5f02177de..c0e7821af 100644 --- a/src/services/export/single.js +++ b/src/services/export/single.js @@ -1,5 +1,3 @@ -"use strict"; - import mimeTypes from 'mime-types'; import html from 'html'; import utils from '../utils.js' diff --git a/src/services/export/zip.js b/src/services/export/zip.js index 7de890ae2..4fc9513ca 100644 --- a/src/services/export/zip.js +++ b/src/services/export/zip.js @@ -1,5 +1,3 @@ -"use strict"; - import html from 'html'; import dateUtils from '../date_utils.js' import path from 'path'; diff --git a/src/services/image.js b/src/services/image.js index 92a266ec8..fdb3c563f 100644 --- a/src/services/image.js +++ b/src/services/image.js @@ -1,5 +1,3 @@ -"use strict"; - import becca from '../becca/becca.js' import log from './log.js' import protectedSessionService from './protected_session.js' diff --git a/src/services/import/markdown.js b/src/services/import/markdown.js index adf658cac..02de0585c 100644 --- a/src/services/import/markdown.js +++ b/src/services/import/markdown.js @@ -1,5 +1,3 @@ -"use strict"; - import { marked } from 'marked'; import htmlSanitizer from '../html_sanitizer.js' import importUtils from './utils.js' diff --git a/src/services/import/mime.js b/src/services/import/mime.js index a44614656..3b1a531ec 100644 --- a/src/services/import/mime.js +++ b/src/services/import/mime.js @@ -1,5 +1,3 @@ -"use strict"; - import mimeTypes from 'mime-types'; import path from 'path'; @@ -111,4 +109,4 @@ export default { getMime, getType, normalizeMimeType -}; \ No newline at end of file +}; diff --git a/src/services/import/opml.js b/src/services/import/opml.js index 8e7452e05..f4627b499 100644 --- a/src/services/import/opml.js +++ b/src/services/import/opml.js @@ -1,5 +1,3 @@ -"use strict"; - import noteService from '../../services/notes.js' import { parseString } from 'xml2js'; import protectedSessionService from '../protected_session.js' diff --git a/src/services/import/single.js b/src/services/import/single.js index 071070f61..4d906adae 100644 --- a/src/services/import/single.js +++ b/src/services/import/single.js @@ -1,5 +1,3 @@ -"use strict"; - import noteService from '../../services/notes.js' import imageService from '../../services/image.js' import protectedSessionService from '../protected_session.js' diff --git a/src/services/import/utils.js b/src/services/import/utils.js index bedb2658e..6ca9f11de 100644 --- a/src/services/import/utils.js +++ b/src/services/import/utils.js @@ -1,5 +1,3 @@ -"use strict"; - function handleH1(content, title) { content = content.replace(/

([^<]*)<\/h1>/gi, (match, text) => { if (title.trim() === text.trim()) { diff --git a/src/services/import/zip.js b/src/services/import/zip.js index b92aa097f..56c2434d5 100644 --- a/src/services/import/zip.js +++ b/src/services/import/zip.js @@ -1,5 +1,3 @@ -"use strict"; - import BAttribute from '../../becca/entities/battribute.js' import utils from '../../services/utils.js' import log from '../../services/log.js' diff --git a/src/services/keyboard_actions.js b/src/services/keyboard_actions.js index 4050eb074..6b50d24b5 100644 --- a/src/services/keyboard_actions.js +++ b/src/services/keyboard_actions.js @@ -1,5 +1,3 @@ -"use strict"; - import optionService from './options.js' import log from './log.js' import utils from './utils.js' diff --git a/src/services/log.js b/src/services/log.js index 3572b87cf..87a078f9d 100644 --- a/src/services/log.js +++ b/src/services/log.js @@ -1,5 +1,3 @@ -"use strict"; - import fs from 'fs'; import dataDir from './data_dir.js' import cls from './cls.js' diff --git a/src/services/options.js b/src/services/options.js index ea82f89c8..a060d4934 100644 --- a/src/services/options.js +++ b/src/services/options.js @@ -1,9 +1,6 @@ import becca from '../becca/becca.js' import sql from './sql.js' - - -// to avoid circular dependency, need to find a better solution -import BOption from "../becca/entities/boption.js"; +import importSync from "import-sync"; /** @returns {string|null} */ function getOptionOrNull(name) { @@ -76,6 +73,7 @@ function setOption(name, value) { } function createOption(name, value, isSynced) { + const BOption = importSync("../becca/entities/boption.js"); new BOption({ name: name, value: value, diff --git a/src/services/protected_session.js b/src/services/protected_session.js index 7198e2591..16e960176 100644 --- a/src/services/protected_session.js +++ b/src/services/protected_session.js @@ -1,11 +1,6 @@ -"use strict"; - import log from './log.js' import dataEncryptionService from './encryption/data_encryption.js' - -import options from './options.js' - -import ws from './ws.js' +import importSync from "import-sync"; let dataKey = null; @@ -54,6 +49,7 @@ function touchProtectedSession() { } function checkProtectedSessionExpiration() { + const options = importSync('./options.js'); const protectedSessionTimeout = options.getOptionInt('protectedSessionTimeout'); if (isProtectedSessionAvailable() && lastProtectedSessionOperationDate @@ -63,7 +59,7 @@ function checkProtectedSessionExpiration() { log.info("Expiring protected session"); - ws.reloadFrontend("leaving protected session"); + importSync("./ws").reloadFrontend("leaving protected session"); } } diff --git a/src/services/request.js b/src/services/request.js index ce5a9cd2d..eaed5f772 100644 --- a/src/services/request.js +++ b/src/services/request.js @@ -1,5 +1,3 @@ -"use strict"; - import utils from './utils.js' import log from './log.js' import url from 'url'; diff --git a/src/services/revisions.js b/src/services/revisions.js index 1c6121f04..375df0c4d 100644 --- a/src/services/revisions.js +++ b/src/services/revisions.js @@ -1,5 +1,3 @@ -"use strict"; - import log from './log.js' import sql from './sql.js' import protectedSessionService from './protected_session.js' diff --git a/src/services/search/expressions/ancestor.js b/src/services/search/expressions/ancestor.js index 038fed41a..1c07dd65b 100644 --- a/src/services/search/expressions/ancestor.js +++ b/src/services/search/expressions/ancestor.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' import log from '../../log.js' diff --git a/src/services/search/expressions/and.js b/src/services/search/expressions/and.js index a5c14a42f..d80bfed00 100644 --- a/src/services/search/expressions/and.js +++ b/src/services/search/expressions/and.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import TrueExp from './true.js' diff --git a/src/services/search/expressions/attribute_exists.js b/src/services/search/expressions/attribute_exists.js index c11fbf060..56ee27817 100644 --- a/src/services/search/expressions/attribute_exists.js +++ b/src/services/search/expressions/attribute_exists.js @@ -1,5 +1,3 @@ -"use strict"; - import NoteSet from '../note_set.js' import becca from '../../../becca/becca.js' import Expression from './expression.js' diff --git a/src/services/search/expressions/child_of.js b/src/services/search/expressions/child_of.js index 53d81ef4f..78a6f2025 100644 --- a/src/services/search/expressions/child_of.js +++ b/src/services/search/expressions/child_of.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' diff --git a/src/services/search/expressions/descendant_of.js b/src/services/search/expressions/descendant_of.js index 007e9cefd..f60565dfd 100644 --- a/src/services/search/expressions/descendant_of.js +++ b/src/services/search/expressions/descendant_of.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' import becca from '../../../becca/becca.js' diff --git a/src/services/search/expressions/expression.js b/src/services/search/expressions/expression.js index b0c7706ea..42a3b5348 100644 --- a/src/services/search/expressions/expression.js +++ b/src/services/search/expressions/expression.js @@ -1,5 +1,3 @@ -"use strict"; - class Expression { constructor() { this.name = this.constructor.name; // for DEBUG mode to have expression name as part of dumped JSON diff --git a/src/services/search/expressions/is_hidden.js b/src/services/search/expressions/is_hidden.js index d51062bb9..3dfd7ec81 100644 --- a/src/services/search/expressions/is_hidden.js +++ b/src/services/search/expressions/is_hidden.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' diff --git a/src/services/search/expressions/label_comparison.js b/src/services/search/expressions/label_comparison.js index 5d3f09087..6f02d1b7b 100644 --- a/src/services/search/expressions/label_comparison.js +++ b/src/services/search/expressions/label_comparison.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' import becca from '../../../becca/becca.js' diff --git a/src/services/search/expressions/not.js b/src/services/search/expressions/not.js index 12c49c6bb..e567ff1bc 100644 --- a/src/services/search/expressions/not.js +++ b/src/services/search/expressions/not.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' class NotExp extends Expression { diff --git a/src/services/search/expressions/note_content_fulltext.js b/src/services/search/expressions/note_content_fulltext.js index bab155b4d..956c1f3ad 100644 --- a/src/services/search/expressions/note_content_fulltext.js +++ b/src/services/search/expressions/note_content_fulltext.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' import log from '../../log.js' diff --git a/src/services/search/expressions/note_flat_text.js b/src/services/search/expressions/note_flat_text.js index 276b75ecc..cc79defb2 100644 --- a/src/services/search/expressions/note_flat_text.js +++ b/src/services/search/expressions/note_flat_text.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' import becca from '../../../becca/becca.js' diff --git a/src/services/search/expressions/or.js b/src/services/search/expressions/or.js index 346b4b03c..e43bae352 100644 --- a/src/services/search/expressions/or.js +++ b/src/services/search/expressions/or.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' import TrueExp from './true.js' diff --git a/src/services/search/expressions/order_by_and_limit.js b/src/services/search/expressions/order_by_and_limit.js index 290a77acb..bdd8ccc2c 100644 --- a/src/services/search/expressions/order_by_and_limit.js +++ b/src/services/search/expressions/order_by_and_limit.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' diff --git a/src/services/search/expressions/parent_of.js b/src/services/search/expressions/parent_of.js index c3c842cb0..e00399ed0 100644 --- a/src/services/search/expressions/parent_of.js +++ b/src/services/search/expressions/parent_of.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' diff --git a/src/services/search/expressions/property_comparison.js b/src/services/search/expressions/property_comparison.js index 18a957ec7..56e186084 100644 --- a/src/services/search/expressions/property_comparison.js +++ b/src/services/search/expressions/property_comparison.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' import buildComparator from '../services/build_comparator.js' diff --git a/src/services/search/expressions/relation_where.js b/src/services/search/expressions/relation_where.js index e3ad24e50..9b1aafd4e 100644 --- a/src/services/search/expressions/relation_where.js +++ b/src/services/search/expressions/relation_where.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' import NoteSet from '../note_set.js' import becca from '../../../becca/becca.js' diff --git a/src/services/search/expressions/true.js b/src/services/search/expressions/true.js index 0fc868003..a9be0e605 100644 --- a/src/services/search/expressions/true.js +++ b/src/services/search/expressions/true.js @@ -1,5 +1,3 @@ -"use strict"; - import Expression from './expression.js' class TrueExp extends Expression { diff --git a/src/services/search/note_set.js b/src/services/search/note_set.js index f3646a9dd..14d1e6507 100644 --- a/src/services/search/note_set.js +++ b/src/services/search/note_set.js @@ -1,5 +1,3 @@ -"use strict"; - class NoteSet { constructor(notes = []) { /** @type {BNote[]} */ diff --git a/src/services/search/search_context.js b/src/services/search/search_context.js index 2919607e8..b6092d071 100644 --- a/src/services/search/search_context.js +++ b/src/services/search/search_context.js @@ -1,5 +1,3 @@ -"use strict"; - import hoistedNoteService from '../hoisted_note.js' class SearchContext { diff --git a/src/services/search/search_result.js b/src/services/search/search_result.js index d7618ccb6..fd862a4a3 100644 --- a/src/services/search/search_result.js +++ b/src/services/search/search_result.js @@ -1,5 +1,3 @@ -"use strict"; - import beccaService from '../../becca/becca_service.js' import becca from '../../becca/becca.js' diff --git a/src/services/search/services/parse.js b/src/services/search/services/parse.js index 82579fca3..aeab5877d 100644 --- a/src/services/search/services/parse.js +++ b/src/services/search/services/parse.js @@ -1,5 +1,3 @@ -"use strict"; - import dayjs from 'dayjs'; import AndExp from '../expressions/and.js' import OrExp from '../expressions/or.js' diff --git a/src/services/search/services/search.js b/src/services/search/services/search.js index 38a11f17e..01e065c10 100644 --- a/src/services/search/services/search.js +++ b/src/services/search/services/search.js @@ -1,5 +1,3 @@ -"use strict"; - import normalizeString from 'normalize-strings'; import lex from './lex.js' import handleParens from './handle_parens.js' @@ -11,10 +9,8 @@ import beccaService from '../../../becca/becca_service.js' import utils from '../../utils.js' import log from '../../log.js' import hoistedNoteService from '../../hoisted_note.js' - -import scriptService from '../../script.js' // to avoid circular dependency - import sql from '../../sql.js' +import importSync from "import-sync"; function searchFromNote(note) { let searchResultNoteIds, highlightedTokens; @@ -75,6 +71,8 @@ function searchFromRelation(note, relationName) { return []; } + + const scriptService = importSync('../../script.js'); const result = scriptService.executeNote(scriptNote, {originEntity: note}); if (!Array.isArray(result)) { diff --git a/src/services/search/value_extractor.js b/src/services/search/value_extractor.js index dad84c29b..cc6fbbb5b 100644 --- a/src/services/search/value_extractor.js +++ b/src/services/search/value_extractor.js @@ -1,5 +1,3 @@ -"use strict"; - /** * Search string is lower cased for case-insensitive comparison. But when retrieving properties, * we need a case-sensitive form, so we have this translation object. diff --git a/src/services/session_secret.js b/src/services/session_secret.js index 82b9c8eb0..c429dea91 100644 --- a/src/services/session_secret.js +++ b/src/services/session_secret.js @@ -1,5 +1,3 @@ -"use strict"; - import fs from 'fs'; import crypto from 'crypto'; import dataDir from './data_dir.js' diff --git a/src/services/sql.js b/src/services/sql.js index ff204078d..da9731a91 100644 --- a/src/services/sql.js +++ b/src/services/sql.js @@ -1,5 +1,3 @@ -"use strict"; - /** * @module sql */ @@ -10,12 +8,7 @@ import Database from 'better-sqlite3'; import dataDir from './data_dir.js' import cls from './cls.js' import fs from 'fs-extra'; - -import ws from './ws.js' - -import becca from '../becca/becca_loader.js' - -import entity_changes from './entity_changes.js' +import importSync from "import-sync"; const dbConnection = new Database(dataDir.DOCUMENT_PATH); dbConnection.pragma('journal_mode = WAL'); @@ -249,7 +242,7 @@ function transactional(func) { const ret = dbConnection.transaction(func).deferred(); if (!dbConnection.inTransaction) { // i.e. transaction was really committed (and not just savepoint released) - ws.sendTransactionEntityChangesToAllClients(); + importSync('./ws.js').sendTransactionEntityChangesToAllClients(); } return ret; @@ -260,11 +253,11 @@ function transactional(func) { if (entityChangeIds.length > 0) { log.info("Transaction rollback dirtied the becca, forcing reload."); - becca.load(); + importSync('../becca/becca_loader.js').load(); } // the maxEntityChangeId has been incremented during failed transaction, need to recalculate - entity_changes.recalculateMaxEntityChangeId(); + importSync('./entity_changes.js').recalculateMaxEntityChangeId(); throw e; } diff --git a/src/services/sql_init.js b/src/services/sql_init.js index 7064e4273..dda120a25 100644 --- a/src/services/sql_init.js +++ b/src/services/sql_init.js @@ -3,27 +3,12 @@ import fs from 'fs'; import resourceDir from './resource_dir.js' import sql from './sql.js' import utils from './utils.js' -import optionService from './options.js' import port from './port.js' -import BOption from '../becca/entities/boption.js' import TaskContext from './task_context.js' import migrationService from './migration.js' import cls from './cls.js' import config from './config.js' - -import becca from "../becca/becca_loader.js"; - -import BNote from "../becca/entities/bnote.js"; - -import BBranch from "../becca/entities/bbranch.js"; - -import optionsInitService from "./options_init.js"; - -import encryption from "./encryption/password.js"; - -import zipImportService from "./import/zip.js"; - -import backup from "./backup.js"; +import importSync from "import-sync"; const dbReady = utils.deferred(); @@ -74,9 +59,10 @@ async function createInitialDatabase() { sql.executeScript(schema); - becca.load(); + importSync("../becca/becca_loader.js").load(); log.info("Creating root note ..."); + const BNote = importSync("../becca/entities/bnote.js"); rootNote = new BNote({ noteId: 'root', title: 'root', @@ -86,22 +72,25 @@ async function createInitialDatabase() { rootNote.setContent(''); + const BBranch = importSync("../becca/entities/bbranch.js"); new BBranch({ noteId: 'root', parentNoteId: 'none', isExpanded: true, notePosition: 10 }).save(); + + const optionsInitService = importSync("./options_init.js"); optionsInitService.initDocumentOptions(); optionsInitService.initNotSyncedOptions(true, {}); optionsInitService.initStartupOptions(); - encryption.resetPassword(); + importSync("./encryption/password.js").resetPassword(); }); log.info("Importing demo content ..."); const dummyTaskContext = new TaskContext("no-progress-reporting", 'import', false); - await zipImportService.importZip(dummyTaskContext, demoFile, rootNote); + await importSync("./import/zip.js").importZip(dummyTaskContext, demoFile, rootNote); sql.transactional(() => { // this needs to happen after ZIP import, @@ -109,6 +98,7 @@ async function createInitialDatabase() { // are not all in one transaction (because ZIP import is async and thus not transactional) const startNoteId = sql.getValue("SELECT noteId FROM branches WHERE parentNoteId = 'root' AND isDeleted = 0 ORDER BY notePosition"); + const optionService = importSync('./options.js'); optionService.setOption('openNoteContexts', JSON.stringify([ { notePath: startNoteId, @@ -134,8 +124,10 @@ function createDatabaseForSync(options, syncServerHost = '', syncProxy = '') { sql.transactional(() => { sql.executeScript(schema); + const optionsInitService = importSync("./options_init.js"); optionsInitService.initNotSyncedOptions(false, { syncServerHost, syncProxy }); + const BOption = importSync('../becca/entities/boption.js'); // document options required for sync to kick off for (const opt of options) { new BOption(opt).save(); @@ -147,6 +139,7 @@ function createDatabaseForSync(options, syncServerHost = '', syncProxy = '') { function setDbAsInitialized() { if (!isDbInitialized()) { + const optionService = importSync('./options.js'); optionService.setOption('initialized', 'true'); initDbConnection(); @@ -169,10 +162,10 @@ dbReady.then(() => { return; } - setInterval(() => backup.regularBackup(), 4 * 60 * 60 * 1000); + setInterval(() => importSync("./backup.js").regularBackup(), 4 * 60 * 60 * 1000); - // kickoff first backup soon after start up - setTimeout(() => backup.regularBackup(), 5 * 60 * 1000); + // kickoff first backup soon after start-up + setTimeout(() => importSync("./backup.js").regularBackup(), 5 * 60 * 1000); // optimize is usually inexpensive no-op, so running it semi-frequently is not a big deal setTimeout(() => optimize(), 60 * 60 * 1000); diff --git a/src/services/sync.js b/src/services/sync.js index d8286a9fd..609e8d0ba 100644 --- a/src/services/sync.js +++ b/src/services/sync.js @@ -1,5 +1,3 @@ -"use strict"; - import log from './log.js' import sql from './sql.js' import optionService from './options.js' @@ -17,14 +15,7 @@ import ws from './ws.js' import entityChangesService from './entity_changes.js' import entityConstructor from '../becca/entity_constructor.js' import becca from '../becca/becca.js' - -import setupService from './setup.js' // circular dependency issue - - -// before re-queuing sectors, make sure the entity changes are correct -import consistencyChecks from './consistency_checks.js' - -import becca0 from '../becca/becca_loader.js' +import importSync from "import-sync"; let proxyToggle = true; @@ -92,6 +83,8 @@ async function sync() { } async function login() { + const setupService = importSync('./setup.js'); + if (!(await setupService.hasSyncServerSchemaAndSeed())) { await setupService.sendSeedToSyncServer(); } @@ -249,6 +242,8 @@ async function checkContentHash(syncContext) { const failedChecks = contentHashService.checkContentHashes(resp.entityHashes); if (failedChecks.length > 0) { + // before re-queuing sectors, make sure the entity changes are correct + const consistencyChecks = importSync('./consistency_checks.js'); consistencyChecks.runEntityChangesChecks(); await syncRequest(syncContext, 'POST', `/api/sync/check-entity-changes`); @@ -403,7 +398,7 @@ function getOutstandingPullCount() { return outstandingPullCount; } -becca0.beccaLoaded.then(() => { +importSync('../becca/becca_loader.js').beccaLoaded.then(() => { setInterval(cls.wrap(sync), 60000); // kickoff initial sync immediately, but should happen after initial consistency checks diff --git a/src/services/sync_options.js b/src/services/sync_options.js index 64a72ac1a..a38b6c2ee 100644 --- a/src/services/sync_options.js +++ b/src/services/sync_options.js @@ -1,5 +1,3 @@ -"use strict"; - import optionService from './options.js' import config from './config.js' diff --git a/src/services/task_context.js b/src/services/task_context.js index c6cce7923..33e599bb8 100644 --- a/src/services/task_context.js +++ b/src/services/task_context.js @@ -1,5 +1,3 @@ -"use strict"; - import ws from './ws.js' // taskId => TaskContext diff --git a/src/services/tree.js b/src/services/tree.js index dad543be5..f13cb734b 100644 --- a/src/services/tree.js +++ b/src/services/tree.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from './sql.js' import log from './log.js' import BBranch from '../becca/entities/bbranch.js' diff --git a/src/services/utils.js b/src/services/utils.js index 910856176..c75b0fac8 100644 --- a/src/services/utils.js +++ b/src/services/utils.js @@ -1,5 +1,3 @@ -"use strict"; - import crypto from 'crypto'; import unescape from 'unescape'; import escape from 'escape-html'; diff --git a/src/share/shaca/entities/abstract_shaca_entity.js b/src/share/shaca/entities/abstract_shaca_entity.js index 024febd9e..ccd1dacd7 100644 --- a/src/share/shaca/entities/abstract_shaca_entity.js +++ b/src/share/shaca/entities/abstract_shaca_entity.js @@ -1,4 +1,4 @@ -import shaca0 from '../shaca.js' +import importSync from "import-sync"; let shaca; @@ -6,7 +6,7 @@ class AbstractShacaEntity { /** @return {Shaca} */ get shaca() { if (!shaca) { - shaca = shaca0; + shaca = importSync('../shaca.js'); } return shaca; diff --git a/src/share/shaca/entities/sattachment.js b/src/share/shaca/entities/sattachment.js index a3e585a56..15efd8a7e 100644 --- a/src/share/shaca/entities/sattachment.js +++ b/src/share/shaca/entities/sattachment.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from '../../sql.js' import utils from '../../../services/utils.js' import AbstractShacaEntity from './abstract_shaca_entity.js' diff --git a/src/share/shaca/entities/sattribute.js b/src/share/shaca/entities/sattribute.js index 134deacd0..4af62322f 100644 --- a/src/share/shaca/entities/sattribute.js +++ b/src/share/shaca/entities/sattribute.js @@ -1,5 +1,3 @@ -"use strict"; - import AbstractShacaEntity from './abstract_shaca_entity.js' class SAttribute extends AbstractShacaEntity { diff --git a/src/share/shaca/entities/sbranch.js b/src/share/shaca/entities/sbranch.js index cb7de96c0..b3873681c 100644 --- a/src/share/shaca/entities/sbranch.js +++ b/src/share/shaca/entities/sbranch.js @@ -1,5 +1,3 @@ -"use strict"; - import AbstractShacaEntity from './abstract_shaca_entity.js' class SBranch extends AbstractShacaEntity { diff --git a/src/share/shaca/entities/snote.js b/src/share/shaca/entities/snote.js index edc2f40d9..c305bc1c6 100644 --- a/src/share/shaca/entities/snote.js +++ b/src/share/shaca/entities/snote.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from '../../sql.js' import utils from '../../../services/utils.js' import AbstractShacaEntity from './abstract_shaca_entity.js' diff --git a/src/share/shaca/shaca.js b/src/share/shaca/shaca.js index 51b377955..3ea64f36a 100644 --- a/src/share/shaca/shaca.js +++ b/src/share/shaca/shaca.js @@ -1,5 +1,3 @@ -"use strict"; - class Shaca { constructor() { this.reset(); diff --git a/src/share/shaca/shaca_loader.js b/src/share/shaca/shaca_loader.js index 7b1cc98fe..4dadfc7fd 100644 --- a/src/share/shaca/shaca_loader.js +++ b/src/share/shaca/shaca_loader.js @@ -1,5 +1,3 @@ -"use strict"; - import sql from '../sql.js' import shaca from './shaca.js' import log from '../../services/log.js' diff --git a/src/share/sql.js b/src/share/sql.js index 0e47de1ea..07cd99137 100644 --- a/src/share/sql.js +++ b/src/share/sql.js @@ -1,5 +1,3 @@ -"use strict"; - import Database from 'better-sqlite3'; import dataDir from '../services/data_dir.js'