backend import unification

This commit is contained in:
zadam 2021-06-29 22:15:57 +02:00
parent b9ff481eb7
commit b660238a40
64 changed files with 172 additions and 200 deletions

View file

@ -1,4 +1,4 @@
FROM node:14.17.0-alpine
FROM node:14.17.1-alpine
# Create app directory
WORKDIR /usr/src/app

1
TODO
View file

@ -1,4 +1,3 @@
- all ribbon tabs should have assignable shortcut
- new icon
- polish becca entities API
- separate private and public APIs in becca entities

View file

@ -1,7 +1,7 @@
#!/usr/bin/env bash
PKG_DIR=dist/trilium-linux-x64-server
NODE_VERSION=14.17.0
NODE_VERSION=14.17.1
if [ "$1" != "DONTCOPY" ]
then

66
package-lock.json generated
View file

@ -1,6 +1,6 @@
{
"name": "trilium",
"version": "0.47.4",
"version": "0.47.5",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -725,9 +725,9 @@
}
},
"@types/estree": {
"version": "0.0.47",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz",
"integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==",
"version": "0.0.48",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz",
"integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==",
"dev": true
},
"@types/fs-extra": {
@ -1930,9 +1930,9 @@
"dev": true
},
"caniuse-lite": {
"version": "1.0.30001239",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001239.tgz",
"integrity": "sha512-cyBkXJDMeI4wthy8xJ2FvDU6+0dtcZSJW3voUF8+e9f1bBeuvyZfc3PNbkOETyhbR+dGCPzn9E7MA3iwzusOhQ==",
"version": "1.0.30001241",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz",
"integrity": "sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ==",
"dev": true
},
"caseless": {
@ -3769,9 +3769,9 @@
}
},
"electron-to-chromium": {
"version": "1.3.756",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.756.tgz",
"integrity": "sha512-WsmJym1TMeHVndjPjczTFbnRR/c4sbzg8fBFtuhlb2Sru3i/S1VGpzDSrv/It8ctMU2bj8G7g7/O3FzYMGw6eA==",
"version": "1.3.761",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.761.tgz",
"integrity": "sha512-7a/wV/plM/b95XjTdA2Q4zAxxExTDKkNQpTiaU/nVT8tGCQVtX9NsnTjhALBFICpOB58hU6xg5fFC3CT2Bybpg==",
"dev": true
},
"electron-window-state": {
@ -5143,9 +5143,9 @@
"dev": true
},
"jest-worker": {
"version": "27.0.2",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.2.tgz",
"integrity": "sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==",
"version": "27.0.6",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz",
"integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==",
"dev": true,
"requires": {
"@types/node": "*",
@ -7279,9 +7279,9 @@
}
},
"serialize-javascript": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
"integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
"integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
"dev": true,
"requires": {
"randombytes": "^2.1.0"
@ -7769,9 +7769,9 @@
}
},
"terser": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz",
"integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==",
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz",
"integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==",
"dev": true,
"requires": {
"commander": "^2.20.0",
@ -7794,15 +7794,15 @@
}
},
"terser-webpack-plugin": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.3.tgz",
"integrity": "sha512-cxGbMqr6+A2hrIB5ehFIF+F/iST5ZOxvOmy9zih9ySbP1C2oEWQSOUS+2SNBTjzx5xLKO4xnod9eywdfq1Nb9A==",
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz",
"integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==",
"dev": true,
"requires": {
"jest-worker": "^27.0.2",
"p-limit": "^3.1.0",
"schema-utils": "^3.0.0",
"serialize-javascript": "^5.0.1",
"serialize-javascript": "^6.0.0",
"source-map": "^0.6.1",
"terser": "^5.7.0"
},
@ -7925,9 +7925,9 @@
}
},
"turndown": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/turndown/-/turndown-7.0.0.tgz",
"integrity": "sha512-G1FfxfR0mUNMeGjszLYl3kxtopC4O9DRRiMlMDDVHvU1jaBkGFg4qxIyjIk2aiKLHyDyZvZyu4qBO2guuYBy3Q==",
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/turndown/-/turndown-7.1.1.tgz",
"integrity": "sha512-BEkXaWH7Wh7e9bd2QumhfAXk5g34+6QUmmWx+0q6ThaVOLuLUqsnkq35HQ5SBHSaxjSfSM7US5o4lhJNH7B9MA==",
"requires": {
"domino": "^2.1.6"
}
@ -8226,13 +8226,13 @@
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
},
"webpack": {
"version": "5.40.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.40.0.tgz",
"integrity": "sha512-c7f5e/WWrxXWUzQqTBg54vBs5RgcAgpvKE4F4VegVgfo4x660ZxYUF2/hpMkZUnLjgytVTitjeXaN4IPlXCGIw==",
"version": "5.41.1",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.41.1.tgz",
"integrity": "sha512-AJZIIsqJ/MVTmegEq9Tlw5mk5EHdGiJbDdz9qP15vmUH+oxI1FdWcL0E9EO8K/zKaRPWqEs7G/OPxq1P61u5Ug==",
"dev": true,
"requires": {
"@types/eslint-scope": "^3.7.0",
"@types/estree": "^0.0.47",
"@types/estree": "^0.0.48",
"@webassemblyjs/ast": "1.11.0",
"@webassemblyjs/wasm-edit": "1.11.0",
"@webassemblyjs/wasm-parser": "1.11.0",
@ -8508,9 +8508,9 @@
}
},
"ws": {
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.0.tgz",
"integrity": "sha512-6ezXvzOZupqKj4jUqbQ9tXuJNo+BR2gU8fFRk3XCP3e0G6WT414u5ELe6Y0vtp7kmSJ3F7YWObSNr1ESsgi4vw=="
"version": "7.5.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz",
"integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow=="
},
"xdg-basedir": {
"version": "4.0.0",

View file

@ -74,9 +74,9 @@
"stream-throttle": "^0.1.3",
"striptags": "3.2.0",
"tmp": "^0.2.1",
"turndown": "7.0.0",
"turndown": "7.1.1",
"unescape": "1.0.1",
"ws": "7.5.0",
"ws": "7.5.1",
"yauzl": "2.10.0"
},
"devDependencies": {
@ -90,7 +90,7 @@
"jsdoc": "3.6.7",
"lorem-ipsum": "2.0.3",
"rcedit": "3.0.0",
"webpack": "5.40.0",
"webpack": "5.41.1",
"webpack-cli": "4.7.2"
},
"optionalDependencies": {

View file

@ -1,9 +1,10 @@
const Note = require('./entities/note.js');
const NoteRevision = require('./entities/note_revision.js');
const Branch = require('./entities/branch.js');
const Attribute = require('./entities/attribute.js');
const RecentNote = require('./entities/recent_note.js');
const ApiToken = require('./entities/api_token.js');
const Note = require('./entities/note');
const NoteRevision = require('./entities/note_revision');
const Branch = require('./entities/branch');
const Attribute = require('./entities/attribute');
const RecentNote = require('./entities/recent_note');
const ApiToken = require('./entities/api_token');
const Option = require('./entities/option');
const ENTITY_NAME_TO_ENTITY = {
"attributes": Attribute,
@ -14,6 +15,7 @@ const ENTITY_NAME_TO_ENTITY = {
"note_revision_contents": NoteRevision,
"recent_notes": RecentNote,
"api_tokens": ApiToken,
"options": Option
};
function getEntityFromEntityName(entityName) {
@ -24,35 +26,6 @@ function getEntityFromEntityName(entityName) {
return ENTITY_NAME_TO_ENTITY[entityName];
}
function createEntityFromRow(row) {
let entity;
if (row.attributeId) {
entity = new Attribute(row);
}
else if (row.noteRevisionId) {
entity = new NoteRevision(row);
}
else if (row.branchId && row.notePath) {
entity = new RecentNote(row);
}
else if (row.apiTokenId) {
entity = new ApiToken(row);
}
else if (row.branchId) {
entity = new Branch(row);
}
else if (row.noteId) {
entity = new Note(row);
}
else {
throw new Error('Unknown entity type for row: ' + JSON.stringify(row));
}
return entity;
}
module.exports = {
createEntityFromRow,
getEntityFromEntityName
};

View file

@ -3,8 +3,8 @@
const sql = require('../../services/sql');
const log = require('../../services/log');
const attributeService = require('../../services/attributes');
const Attribute = require('../../becca/entities/attribute.js');
const becca = require("../../becca/becca.js");
const Attribute = require('../../becca/entities/attribute');
const becca = require("../../becca/becca");
function getEffectiveNoteAttributes(req) {
const note = becca.getNote(req.params.noteId);

View file

@ -1,11 +1,11 @@
"use strict";
const beccaService = require('../../becca/becca_service.js');
const searchService = require('../../services/search/services/search.js');
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.js");
const becca = require("../../becca/becca");
function getAutocomplete(req) {
const query = req.query.query.trim();

View file

@ -2,7 +2,7 @@
const fs = require('fs');
const dateUtils = require('../../services/date_utils');
const {LOG_DIR} = require('../../services/data_dir.js');
const {LOG_DIR} = require('../../services/data_dir');
function getBackendLog() {
const file = `${LOG_DIR}/trilium-${dateUtils.localNowDate()}.log`;

View file

@ -2,10 +2,10 @@
const sql = require('../../services/sql');
const utils = require('../../services/utils');
const entityChangesService = require('../../services/entity_changes.js');
const entityChangesService = require('../../services/entity_changes');
const treeService = require('../../services/tree');
const noteService = require('../../services/notes');
const becca = require('../../becca/becca.js');
const becca = require('../../becca/becca');
const TaskContext = require('../../services/task_context');
/**

View file

@ -6,13 +6,13 @@ const dateNoteService = require('../../services/date_notes');
const dateUtils = require('../../services/date_utils');
const imageService = require('../../services/image');
const appInfo = require('../../services/app_info');
const ws = require('../../services/ws.js');
const ws = require('../../services/ws');
const log = require('../../services/log');
const utils = require('../../services/utils');
const path = require('path');
const Attribute = require('../../becca/entities/attribute.js');
const Attribute = require('../../becca/entities/attribute');
const htmlSanitizer = require('../../services/html_sanitizer');
const {formatAttrForSearch} = require("../../services/attribute_formatter.js");
const {formatAttrForSearch} = require("../../services/attribute_formatter");
function findClippingNote(todayNote, pageUrl) {
const notes = todayNote.searchNoteInSubtree(

View file

@ -9,7 +9,7 @@ const fs = require('fs');
const { Readable } = require('stream');
const chokidar = require('chokidar');
const ws = require('../../services/ws');
const becca = require("../../becca/becca.js");
const becca = require("../../becca/becca");
function updateFile(req) {
const {noteId} = req.params;

View file

@ -1,7 +1,7 @@
"use strict";
const imageService = require('../../services/image');
const becca = require('../../becca/becca.js');
const becca = require('../../becca/becca');
const RESOURCE_DIR = require('../../services/resource_dir').RESOURCE_DIR;
const fs = require('fs');

View file

@ -6,9 +6,9 @@ const zipImportService = require('../../services/import/zip');
const singleImportService = require('../../services/import/single');
const cls = require('../../services/cls');
const path = require('path');
const beccaLoader = require('../../becca/becca_loader.js');
const beccaLoader = require('../../becca/becca_loader');
const log = require('../../services/log');
const TaskContext = require('../../services/task_context.js');
const TaskContext = require('../../services/task_context');
async function importToBranch(req) {
const {parentNoteId} = req.params;

View file

@ -11,8 +11,8 @@ const eventService = require('../../services/events');
const sqlInit = require('../../services/sql_init');
const sql = require('../../services/sql');
const optionService = require('../../services/options');
const ApiToken = require('../../becca/entities/api_token.js');
const ws = require("../../services/ws.js");
const ApiToken = require('../../becca/entities/api_token');
const ws = require("../../services/ws");
function loginSync(req) {
if (!sqlInit.schemaExists()) {

View file

@ -1,12 +1,12 @@
"use strict";
const beccaService = require('../../becca/becca_service.js');
const beccaService = require('../../becca/becca_service');
const protectedSessionService = require('../../services/protected_session');
const noteRevisionService = require('../../services/note_revisions');
const utils = require('../../services/utils');
const sql = require('../../services/sql');
const path = require('path');
const becca = require("../../becca/becca.js");
const becca = require("../../becca/becca");
function getNoteRevisions(req) {
return becca.getNoteRevisionsFromQuery(`

View file

@ -7,8 +7,8 @@ const utils = require('../../services/utils');
const log = require('../../services/log');
const TaskContext = require('../../services/task_context');
const fs = require('fs');
const noteRevisionService = require("../../services/note_revisions.js");
const becca = require("../../becca/becca.js");
const noteRevisionService = require("../../services/note_revisions");
const becca = require("../../becca/becca");
function getNote(req) {
const noteId = req.params.noteId;

View file

@ -3,7 +3,7 @@
const sql = require('../../services/sql');
const protectedSessionService = require('../../services/protected_session');
const noteService = require('../../services/notes');
const beccaService = require('../../becca/becca_service.js');
const beccaService = require('../../becca/becca_service');
function getRecentChanges(req) {
const {ancestorNoteId} = req.params;

View file

@ -1,6 +1,6 @@
"use strict";
const RecentNote = require('../../becca/entities/recent_note.js');
const RecentNote = require('../../becca/entities/recent_note');
const sql = require('../../services/sql');
const dateUtils = require('../../services/date_utils');

View file

@ -2,7 +2,7 @@
const scriptService = require('../../services/script');
const attributeService = require('../../services/attributes');
const becca = require('../../becca/becca.js');
const becca = require('../../becca/becca');
const syncService = require('../../services/sync');
function exec(req) {

View file

@ -1,6 +1,6 @@
"use strict";
const becca = require('../../becca/becca.js');
const becca = require('../../becca/becca');
const SearchContext = require('../../services/search/search_context');
const log = require('../../services/log');
const scriptService = require('../../services/script');

View file

@ -1,7 +1,7 @@
"use strict";
const similarityService = require('../../becca/similarity.js');
const becca = require("../../becca/becca.js");
const similarityService = require('../../becca/similarity');
const becca = require("../../becca/becca");
async function getSimilarNotes(req) {
const noteId = req.params.noteId;

View file

@ -1,5 +1,5 @@
const sql = require('../../services/sql');
const becca = require('../../becca/becca.js');
const becca = require('../../becca/becca');
function getNoteSize(req) {
const {noteId} = req.params;

View file

@ -2,7 +2,7 @@
const syncService = require('../../services/sync');
const syncUpdateService = require('../../services/sync_update');
const entityChangesService = require('../../services/entity_changes.js');
const entityChangesService = require('../../services/entity_changes');
const sql = require('../../services/sql');
const sqlInit = require('../../services/sql_init');
const optionService = require('../../services/options');

View file

@ -1,6 +1,6 @@
"use strict";
const becca = require('../../becca/becca.js');
const becca = require('../../becca/becca');
const log = require('../../services/log');
function getNotesAndBranchesAndAttributes(noteIds) {

View file

@ -1,9 +1,9 @@
const log = require('../services/log');
const fileUploadService = require('./api/files.js');
const fileUploadService = require('./api/files');
const scriptService = require('../services/script');
const cls = require('../services/cls');
const sql = require("../services/sql");
const becca = require("../becca/becca.js");
const becca = require("../becca/becca");
function handleRequest(req, res) {
// express puts content after first slash into 0 index element

View file

@ -7,7 +7,7 @@ const config = require('../services/config');
const optionService = require('../services/options');
const log = require('../services/log');
const env = require('../services/env');
const protectedSessionService = require("../services/protected_session.js");
const protectedSessionService = require("../services/protected_session");
function index(req, res) {
const options = optionService.getOptionsMap();

View file

@ -45,7 +45,7 @@ const router = express.Router();
const auth = require('../services/auth');
const cls = require('../services/cls');
const sql = require('../services/sql');
const entityChangesService = require('../services/entity_changes.js');
const entityChangesService = require('../services/entity_changes');
const csurf = require('csurf');
const {createPartialContentHandler} = require("express-partial-content");
const rateLimit = require("express-rate-limit");

View file

@ -2,9 +2,9 @@
const searchService = require('./search/services/search');
const sql = require('./sql');
const becca = require('../becca/becca.js');
const Attribute = require('../becca/entities/attribute.js');
const {formatAttrForSearch} = require("./attribute_formatter.js");
const becca = require('../becca/becca');
const Attribute = require('../becca/entities/attribute');
const {formatAttrForSearch} = require("./attribute_formatter");
const ATTRIBUTE_TYPES = [ 'label', 'relation' ];

View file

@ -12,8 +12,8 @@ const xml2js = require('xml2js');
const cloningService = require('./cloning');
const appInfo = require('./app_info');
const searchService = require('./search/services/search');
const SearchContext = require("./search/search_context.js");
const becca = require("../becca/becca.js");
const SearchContext = require("./search/search_context");
const becca = require("../becca/becca");
/**
* This is the main backend API interface for scripts. It's published in the local "api" object.

View file

@ -1,13 +1,13 @@
"use strict";
const sql = require('./sql');
const eventChangesService = require('./entity_changes.js');
const eventChangesService = require('./entity_changes');
const treeService = require('./tree');
const noteService = require('./notes');
const Branch = require('../becca/entities/branch.js');
const TaskContext = require("./task_context.js");
const Branch = require('../becca/entities/branch');
const TaskContext = require("./task_context");
const utils = require('./utils');
const becca = require("../becca/becca.js");
const becca = require("../becca/becca");
const beccaService = require("../becca/becca_service");
function cloneNoteToParent(noteId, parentBranchId, prefix) {

View file

@ -3,16 +3,16 @@
const sql = require('./sql');
const sqlInit = require('./sql_init');
const log = require('./log');
const ws = require('./ws.js');
const ws = require('./ws');
const syncMutexService = require('./sync_mutex');
const cls = require('./cls');
const entityChangesService = require('./entity_changes.js');
const entityChangesService = require('./entity_changes');
const optionsService = require('./options');
const Branch = require('../becca/entities/branch.js');
const Branch = require('../becca/entities/branch');
const dateUtils = require('./date_utils');
const attributeService = require('./attributes');
const noteRevisionService = require('./note_revisions');
const becca = require("../becca/becca.js");
const becca = require("../becca/becca");
class ConsistencyChecks {
constructor(autoFix) {
@ -579,7 +579,7 @@ class ConsistencyChecks {
}
if (this.fixedIssues) {
require("../becca/becca_loader.js").load();
require("../becca/becca_loader").load();
}
return !this.unrecoveredConsistencyErrors;

View file

@ -3,7 +3,7 @@
const noteService = require('./notes');
const attributeService = require('./attributes');
const dateUtils = require('./date_utils');
const becca = require('../becca/becca.js');
const becca = require('../becca/becca');
const sql = require('./sql');
const protectedSessionService = require('./protected_session');

View file

@ -3,7 +3,7 @@ const sourceIdService = require('./source_id');
const dateUtils = require('./date_utils');
const log = require('./log');
const cls = require('./cls');
const becca = require("../becca/becca.js");
const becca = require("../becca/becca");
let maxEntityChangeId = 0;

View file

@ -1,7 +1,7 @@
"use strict";
const utils = require('../utils');
const becca = require("../../becca/becca.js");
const becca = require("../../becca/becca");
function exportToOpml(taskContext, branch, version, res) {
if (!['1.0', '2.0'].includes(version)) {

View file

@ -77,7 +77,7 @@ function exportToZip(taskContext, branch, format, res) {
fileName = fileName.substr(0, 30);
}
// if the note is already named with extension (e.g. "jquery.js"), then it's silly to append exact same extension again
// if the note is already named with extension (e.g. "jquery"), then it's silly to append exact same extension again
if (newExtension && existingExtension !== "." + newExtension.toLowerCase()) {
fileName += "." + newExtension;
}

View file

@ -2,8 +2,8 @@ const eventService = require('./events');
const scriptService = require('./script');
const treeService = require('./tree');
const noteService = require('./notes');
const becca = require('../becca/becca.js');
const Attribute = require('../becca/entities/attribute.js');
const becca = require('../becca/becca');
const Attribute = require('../becca/entities/attribute');
function runAttachedRelations(note, relationName, originEntity) {
// same script note can get here with multiple ways, but execute only once

View file

@ -1,6 +1,6 @@
"use strict";
const becca = require('../becca/becca.js');
const becca = require('../becca/becca');
const log = require('./log');
const protectedSessionService = require('./protected_session');
const noteService = require('./notes');
@ -9,7 +9,7 @@ const sql = require('./sql');
const jimp = require('jimp');
const imageType = require('image-type');
const sanitizeFilename = require('sanitize-filename');
const noteRevisionService = require('./note_revisions.js');
const noteRevisionService = require('./note_revisions');
const isSvg = require('is-svg');
const isAnimated = require('is-animated');

View file

@ -1,11 +1,11 @@
"use strict";
const Attribute = require('../../becca/entities/attribute.js');
const Attribute = require('../../becca/entities/attribute');
const utils = require('../../services/utils');
const log = require('../../services/log');
const noteService = require('../../services/notes');
const attributeService = require('../../services/attributes');
const Branch = require('../../becca/entities/branch.js');
const Branch = require('../../becca/entities/branch');
const path = require('path');
const commonmark = require('commonmark');
const protectedSessionService = require('../protected_session');
@ -13,7 +13,7 @@ const mimeService = require("./mime");
const treeService = require("../tree");
const yauzl = require("yauzl");
const htmlSanitizer = require('../html_sanitizer');
const becca = require("../../becca/becca.js");
const becca = require("../../becca/becca");
/**
* @param {TaskContext} taskContext

View file

@ -1,6 +1,6 @@
"use strict";
const NoteRevision = require('../becca/entities/note_revision.js');
const NoteRevision = require('../becca/entities/note_revision');
const dateUtils = require('./date_utils');
const log = require('./log');
const sql = require('./sql');

View file

@ -2,7 +2,7 @@ const sql = require('./sql');
const sqlInit = require('./sql_init');
const optionService = require('./options');
const dateUtils = require('./date_utils');
const entityChangesService = require('./entity_changes.js');
const entityChangesService = require('./entity_changes');
const eventService = require('./events');
const cls = require('../services/cls');
const protectedSessionService = require('../services/protected_session');
@ -13,10 +13,10 @@ const attributeService = require('../services/attributes');
const request = require('./request');
const path = require('path');
const url = require('url');
const becca = require('../becca/becca.js');
const Branch = require('../becca/entities/branch.js');
const Note = require('../becca/entities/note.js');
const Attribute = require('../becca/entities/attribute.js');
const becca = require('../becca/becca');
const Branch = require('../becca/entities/branch');
const Note = require('../becca/entities/note');
const Attribute = require('../becca/entities/attribute');
function getNewNotePosition(parentNoteId) {
const note = becca.notes[parentNoteId];

View file

@ -1,7 +1,7 @@
const becca = require('../becca/becca.js');
const becca = require('../becca/becca');
function getOption(name) {
const option = require('../becca/becca.js').getOption(name);
const option = require('../becca/becca').getOption(name);
if (!option) {
throw new Error(`Option "${name}" doesn't exist`);
@ -57,7 +57,7 @@ function setOption(name, value) {
function createOption(name, value, isSynced) {
// to avoid circular dependency, need to find better solution
const Option = require('../becca/entities/option.js');
const Option = require('../becca/entities/option');
new Option({
name: name,

View file

@ -4,7 +4,7 @@ const sqlInit = require('./sql_init');
const config = require('./config');
const log = require('./log');
const sql = require("./sql");
const becca = require("../becca/becca.js");
const becca = require("../becca/becca");
function getRunAtHours(note) {
try {

View file

@ -1,7 +1,7 @@
const ScriptContext = require('./script_context');
const cls = require('./cls');
const log = require('./log');
const becca = require("../becca/becca.js");
const becca = require("../becca/becca");
function executeNote(note, apiParams) {
if (!note.isJavaScript() || note.getScriptEnv() !== 'backend' || !note.isContentAvailable()) {

View file

@ -3,7 +3,7 @@
const Expression = require('./expression');
const NoteSet = require('../note_set');
const log = require('../../log');
const becca = require('../../../becca/becca.js');
const becca = require('../../../becca/becca');
class AncestorExp extends Expression {
constructor(ancestorNoteId, ancestorDepth) {

View file

@ -1,7 +1,7 @@
"use strict";
const Expression = require('./expression');
const TrueExp = require("./true.js");
const TrueExp = require("./true");
class AndExp extends Expression {
static of(subExpressions) {

View file

@ -1,7 +1,7 @@
"use strict";
const NoteSet = require('../note_set');
const becca = require('../../../becca/becca.js');
const becca = require('../../../becca/becca');
const Expression = require('./expression');
class AttributeExistsExp extends Expression {

View file

@ -2,7 +2,7 @@
const Expression = require('./expression');
const NoteSet = require('../note_set');
const becca = require('../../../becca/becca.js');
const becca = require('../../../becca/becca');
class DescendantOfExp extends Expression {
constructor(subExpression) {

View file

@ -2,7 +2,7 @@
const Expression = require('./expression');
const NoteSet = require('../note_set');
const becca = require('../../../becca/becca.js');
const becca = require('../../../becca/becca');
class LabelComparisonExp extends Expression {
constructor(attributeType, attributeName, comparator) {

View file

@ -2,7 +2,7 @@
const Expression = require('./expression');
const NoteSet = require('../note_set');
const becca = require('../../../becca/becca.js');
const becca = require('../../../becca/becca');
class BeccaFlatTextExp extends Expression {
constructor(tokens) {
@ -13,7 +13,7 @@ class BeccaFlatTextExp extends Expression {
execute(inputNoteSet, executionContext) {
// has deps on SQL which breaks unit test so needs to be dynamically required
const beccaService = require('../../../becca/becca_service.js');
const beccaService = require('../../../becca/becca_service');
const resultNoteSet = new NoteSet();
function searchDownThePath(note, tokens, path) {

View file

@ -3,7 +3,7 @@
const Expression = require('./expression');
const NoteSet = require('../note_set');
const log = require('../../log');
const becca = require('../../../becca/becca.js');
const becca = require('../../../becca/becca');
const protectedSessionService = require('../../protected_session');
const striptags = require('striptags');

View file

@ -2,7 +2,7 @@
const Expression = require('./expression');
const NoteSet = require('../note_set');
const becca = require('../../../becca/becca.js');
const becca = require('../../../becca/becca');
const striptags = require('striptags');
class NoteContentUnprotectedFulltextExp extends Expression {

View file

@ -2,7 +2,7 @@
const Expression = require('./expression');
const NoteSet = require('../note_set');
const buildComparator = require("../services/build_comparator.js");
const buildComparator = require("../services/build_comparator");
/**
* Search string is lower cased for case insensitive comparison. But when retrieving properties

View file

@ -2,7 +2,7 @@
const Expression = require('./expression');
const NoteSet = require('../note_set');
const becca = require('../../../becca/becca.js');
const becca = require('../../../becca/becca');
class RelationWhereExp extends Expression {
constructor(relationName, subExpression) {

View file

@ -1,6 +1,6 @@
"use strict";
const beccaService = require('../../becca/becca_service.js');
const beccaService = require('../../becca/becca_service');
class SearchResult {
constructor(notePathArray) {

View file

@ -1,23 +1,23 @@
"use strict";
const dayjs = require("dayjs");
const AndExp = require('../expressions/and.js');
const OrExp = require('../expressions/or.js');
const NotExp = require('../expressions/not.js');
const ChildOfExp = require('../expressions/child_of.js');
const DescendantOfExp = require('../expressions/descendant_of.js');
const ParentOfExp = require('../expressions/parent_of.js');
const RelationWhereExp = require('../expressions/relation_where.js');
const PropertyComparisonExp = require('../expressions/property_comparison.js');
const AttributeExistsExp = require('../expressions/attribute_exists.js');
const LabelComparisonExp = require('../expressions/label_comparison.js');
const BeccaFlatTextExp = require('../expressions/note_cache_flat_text.js');
const NoteContentProtectedFulltextExp = require('../expressions/note_content_protected_fulltext.js');
const NoteContentUnprotectedFulltextExp = require('../expressions/note_content_unprotected_fulltext.js');
const OrderByAndLimitExp = require('../expressions/order_by_and_limit.js');
const AncestorExp = require("../expressions/ancestor.js");
const buildComparator = require('./build_comparator.js');
const ValueExtractor = require('../value_extractor.js');
const AndExp = require('../expressions/and');
const OrExp = require('../expressions/or');
const NotExp = require('../expressions/not');
const ChildOfExp = require('../expressions/child_of');
const DescendantOfExp = require('../expressions/descendant_of');
const ParentOfExp = require('../expressions/parent_of');
const RelationWhereExp = require('../expressions/relation_where');
const PropertyComparisonExp = require('../expressions/property_comparison');
const AttributeExistsExp = require('../expressions/attribute_exists');
const LabelComparisonExp = require('../expressions/label_comparison');
const BeccaFlatTextExp = require('../expressions/note_cache_flat_text');
const NoteContentProtectedFulltextExp = require('../expressions/note_content_protected_fulltext');
const NoteContentUnprotectedFulltextExp = require('../expressions/note_content_unprotected_fulltext');
const OrderByAndLimitExp = require('../expressions/order_by_and_limit');
const AncestorExp = require("../expressions/ancestor");
const buildComparator = require('./build_comparator');
const ValueExtractor = require('../value_extractor');
function getFulltext(tokens, searchContext) {
tokens = tokens.map(t => t.token);

View file

@ -1,18 +1,18 @@
"use strict";
const lex = require('./lex.js');
const handleParens = require('./handle_parens.js');
const parse = require('./parse.js');
const NoteSet = require("../note_set.js");
const SearchResult = require("../search_result.js");
const SearchContext = require("../search_context.js");
const becca = require('../../../becca/becca.js');
const beccaService = require('../../../becca/becca_service.js');
const utils = require('../../utils.js');
const log = require('../../log.js');
const lex = require('./lex');
const handleParens = require('./handle_parens');
const parse = require('./parse');
const NoteSet = require("../note_set");
const SearchResult = require("../search_result");
const SearchContext = require("../search_context");
const becca = require('../../../becca/becca');
const beccaService = require('../../../becca/becca_service');
const utils = require('../../utils');
const log = require('../../log');
function loadNeededInfoFromDatabase() {
const sql = require('../../sql.js');
const sql = require('../../sql');
for (const noteId in becca.notes) {
becca.notes[noteId].contentSize = 0;

View file

@ -6,7 +6,7 @@ const syncOptions = require('./sync_options');
const request = require('./request');
const appInfo = require('./app_info');
const utils = require('./utils');
const becca = require("../becca/becca.js");
const becca = require("../becca/becca");
async function hasSyncServerSchemaAndSeed() {
const response = await requestToSyncServer('GET', '/api/setup/status');

View file

@ -249,7 +249,7 @@ function transactional(func) {
if (entityChanges.length > 0) {
log.info("Transaction rollback dirtied the becca, forcing reload.");
require('../becca/becca_loader.js').load();
require('../becca/becca_loader').load();
}
throw e;

View file

@ -5,8 +5,8 @@ const sql = require('./sql');
const utils = require('./utils');
const optionService = require('./options');
const port = require('./port');
const Option = require('../becca/entities/option.js');
const TaskContext = require('./task_context.js');
const Option = require('../becca/entities/option');
const TaskContext = require('./task_context');
const migrationService = require('./migration');
const cls = require('./cls');
const config = require('./config');
@ -62,10 +62,10 @@ async function createInitialDatabase(username, password, theme) {
sql.transactional(() => {
sql.executeScript(schema);
require("../becca/becca_loader.js").load();
require("../becca/becca_loader").load();
const Note = require("../becca/entities/note.js");
const Branch = require("../becca/entities/branch.js");
const Note = require("../becca/entities/note");
const Branch = require("../becca/entities/branch");
rootNote = new Note({
noteId: 'root',

View file

@ -14,8 +14,8 @@ const syncMutexService = require('./sync_mutex');
const cls = require('./cls');
const request = require('./request');
const ws = require('./ws');
const entityChangesService = require('./entity_changes.js');
const entityConstructor = require('../becca/entity_constructor.js');
const entityChangesService = require('./entity_changes');
const entityConstructor = require('../becca/entity_constructor');
let proxyToggle = true;
@ -385,7 +385,7 @@ function getOutstandingPullCount() {
return outstandingPullCount;
}
require("../becca/becca_loader.js").beccaLoaded.then(() => {
require("../becca/becca_loader").beccaLoaded.then(() => {
setInterval(cls.wrap(sync), 60000);
// kickoff initial sync immediately

View file

@ -1,8 +1,8 @@
const sql = require('./sql');
const log = require('./log');
const entityChangesService = require('./entity_changes.js');
const entityChangesService = require('./entity_changes');
const eventService = require('./events');
const entityConstructor = require("../becca/entity_constructor.js");
const entityConstructor = require("../becca/entity_constructor");
function updateEntity(entityChange, entity, sourceId) {
// can be undefined for options with isSynced=false

View file

@ -1,6 +1,6 @@
"use strict";
const ws = require('./ws.js');
const ws = require('./ws');
// taskId => TaskContext
const taskContexts = {};

View file

@ -2,10 +2,10 @@
const sql = require('./sql');
const log = require('./log');
const Branch = require('../becca/entities/branch.js');
const entityChangesService = require('./entity_changes.js');
const Branch = require('../becca/entities/branch');
const entityChangesService = require('./entity_changes');
const protectedSessionService = require('./protected_session');
const becca = require('../becca/becca.js');
const becca = require('../becca/becca');
function getNotes(noteIds) {
// we return also deleted notes which have been specifically asked for