chore(core): integrate events service

This commit is contained in:
Elian Doran 2026-01-06 11:10:09 +02:00
parent 14e2e85da7
commit c20da77f83
No known key found for this signature in database
15 changed files with 137 additions and 138 deletions

View File

@ -1,25 +1,26 @@
import express from "express";
import path from "path";
import favicon from "serve-favicon";
import cookieParser from "cookie-parser";
import helmet from "helmet";
import compression from "compression";
import config from "./services/config.js";
import utils, { getResourceDir, isDev } from "./services/utils.js";
import assets from "./routes/assets.js";
import routes from "./routes/routes.js";
import custom from "./routes/custom.js";
import error_handlers from "./routes/error_handlers.js";
import { startScheduledCleanup } from "./services/erase.js";
import sql_init from "./services/sql_init.js";
import { auth } from "express-openid-connect";
import openID from "./services/open_id.js";
import { t } from "i18next";
import eventService from "./services/events.js";
import log from "./services/log.js";
import "./services/handlers.js";
import "./becca/becca_loader.js";
import compression from "compression";
import cookieParser from "cookie-parser";
import express from "express";
import { auth } from "express-openid-connect";
import helmet from "helmet";
import { t } from "i18next";
import path from "path";
import favicon from "serve-favicon";
import assets from "./routes/assets.js";
import custom from "./routes/custom.js";
import error_handlers from "./routes/error_handlers.js";
import routes from "./routes/routes.js";
import config from "./services/config.js";
import { startScheduledCleanup } from "./services/erase.js";
import log from "./services/log.js";
import openID from "./services/open_id.js";
import { RESOURCE_DIR } from "./services/resource_dir.js";
import sql_init from "./services/sql_init.js";
import utils, { getResourceDir, isDev } from "./services/utils.js";
export default async function buildApp() {
const app = express();

View File

@ -1,20 +1,19 @@
"use strict";
import sql from "../services/sql.js";
import eventService from "../services/events.js";
import becca from "./becca.js";
import log from "../services/log.js";
import BNote from "./entities/bnote.js";
import BBranch from "./entities/bbranch.js";
import BAttribute from "./entities/battribute.js";
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 type { AttributeRow, BranchRow, EtapiTokenRow, NoteRow, OptionRow } from "@triliumnext/commons";
import type AbstractBeccaEntity from "./entities/abstract_becca_entity.js";
import ws from "../services/ws.js";
import { events as eventService } from "@triliumnext/core";
import entityConstructor from "../becca/entity_constructor.js";
import cls from "../services/cls.js";
import log from "../services/log.js";
import sql from "../services/sql.js";
import { dbReady } from "../services/sql_init.js";
import ws from "../services/ws.js";
import becca from "./becca.js";
import type AbstractBeccaEntity from "./entities/abstract_becca_entity.js";
import BAttribute from "./entities/battribute.js";
import BBranch from "./entities/bbranch.js";
import BEtapiToken from "./entities/betapi_token.js";
import BNote from "./entities/bnote.js";
import BOption from "./entities/boption.js";
export const beccaLoaded = new Promise<void>(async (res, rej) => {
// We have to import async since options init requires keyboard actions which require translations.

View File

@ -1,8 +1,9 @@
import { events as eventService } from "@triliumnext/core";
import blobService from "../../services/blob.js";
import cls from "../../services/cls.js";
import dateUtils from "../../services/date_utils.js";
import entityChangesService from "../../services/entity_changes.js";
import eventService from "../../services/events.js";
import log from "../../services/log.js";
import protectedSessionService from "../../services/protected_session.js";
import sql from "../../services/sql.js";

View File

@ -1,10 +1,10 @@
import type { AttachmentRow, AttributeType, CloneResponse, NoteRow, NoteType, RevisionRow } from "@triliumnext/commons";
import { dayjs } from "@triliumnext/commons";
import { events as eventService } from "@triliumnext/core";
import cloningService from "../../services/cloning.js";
import dateUtils from "../../services/date_utils.js";
import eraseService from "../../services/erase.js";
import eventService from "../../services/events.js";
import handlers from "../../services/handlers.js";
import log from "../../services/log.js";
import noteService from "../../services/notes.js";

View File

@ -1,18 +1,17 @@
"use strict";
import sql from "../../services/sql.js";
import utils from "../../services/utils.js";
import entityChangesService from "../../services/entity_changes.js";
import treeService from "../../services/tree.js";
import eraseService from "../../services/erase.js";
import becca from "../../becca/becca.js";
import TaskContext from "../../services/task_context.js";
import branchService from "../../services/branches.js";
import log from "../../services/log.js";
import ValidationError from "../../errors/validation_error.js";
import eventService from "../../services/events.js";
import { events as eventService } from "@triliumnext/core";
import type { Request } from "express";
import becca from "../../becca/becca.js";
import ValidationError from "../../errors/validation_error.js";
import branchService from "../../services/branches.js";
import entityChangesService from "../../services/entity_changes.js";
import eraseService from "../../services/erase.js";
import log from "../../services/log.js";
import sql from "../../services/sql.js";
import TaskContext from "../../services/task_context.js";
import treeService from "../../services/tree.js";
import utils from "../../services/utils.js";
/**
* Code in this file deals with moving and cloning branches. The relationship between note and parent note is unique
* for not deleted branches. There may be multiple deleted note-parent note relationships.
@ -256,7 +255,7 @@ function deleteBranch(req: Request) {
}
return {
noteDeleted: noteDeleted
noteDeleted
};
}
@ -272,7 +271,7 @@ function setPrefix(req: Request) {
function setPrefixBatch(req: Request) {
const { branchIds, prefix } = req.body;
if (!Array.isArray(branchIds)) {
throw new ValidationError("branchIds must be an array");
}

View File

@ -1,20 +1,19 @@
"use strict";
import options from "../../services/options.js";
import utils from "../../services/utils.js";
import dateUtils from "../../services/date_utils.js";
import instanceId from "../../services/instance_id.js";
import passwordEncryptionService from "../../services/encryption/password_encryption.js";
import protectedSessionService from "../../services/protected_session.js";
import appInfo from "../../services/app_info.js";
import eventService from "../../services/events.js";
import sqlInit from "../../services/sql_init.js";
import sql from "../../services/sql.js";
import ws from "../../services/ws.js";
import etapiTokenService from "../../services/etapi_tokens.js";
import { events as eventService } from "@triliumnext/core";
import type { Request } from "express";
import totp from "../../services/totp";
import appInfo from "../../services/app_info.js";
import dateUtils from "../../services/date_utils.js";
import passwordEncryptionService from "../../services/encryption/password_encryption.js";
import recoveryCodeService from "../../services/encryption/recovery_codes";
import etapiTokenService from "../../services/etapi_tokens.js";
import instanceId from "../../services/instance_id.js";
import options from "../../services/options.js";
import protectedSessionService from "../../services/protected_session.js";
import sql from "../../services/sql.js";
import sqlInit from "../../services/sql_init.js";
import totp from "../../services/totp";
import utils from "../../services/utils.js";
import ws from "../../services/ws.js";
/**
* @swagger
@ -115,7 +114,7 @@ function loginSync(req: Request) {
req.session.loggedIn = true;
return {
instanceId: instanceId,
instanceId,
maxEntityChangeId: sql.getValue("SELECT COALESCE(MAX(id), 0) FROM entity_changes WHERE isSynced = 1")
};
}

View File

@ -1,14 +1,15 @@
import sql from "./sql.js";
import dateUtils from "./date_utils.js";
import log from "./log.js";
import cls from "./cls.js";
import { randomString } from "./utils.js";
import instanceId from "./instance_id.js";
import type { EntityChange } from "@triliumnext/commons";
import { events as eventService } from "@triliumnext/core";
import becca from "../becca/becca.js";
import blobService from "../services/blob.js";
import type { EntityChange } from "@triliumnext/commons";
import type { Blob } from "./blob-interface.js";
import eventService from "./events.js";
import cls from "./cls.js";
import dateUtils from "./date_utils.js";
import instanceId from "./instance_id.js";
import log from "./log.js";
import sql from "./sql.js";
import { randomString } from "./utils.js";
let maxEntityChangeId = 0;

View File

@ -1,14 +1,15 @@
import eventService from "./events.js";
import { events as eventService } from "@triliumnext/core";
import becca from "../becca/becca.js";
import type AbstractBeccaEntity from "../becca/entities/abstract_becca_entity.js";
import BAttribute from "../becca/entities/battribute.js";
import type BNote from "../becca/entities/bnote.js";
import hiddenSubtreeService from "./hidden_subtree.js";
import noteService from "./notes.js";
import oneTimeTimer from "./one_time_timer.js";
import type { DefinitionObject } from "./promoted_attribute_definition_interface.js";
import scriptService from "./script.js";
import treeService from "./tree.js";
import noteService from "./notes.js";
import becca from "../becca/becca.js";
import BAttribute from "../becca/entities/battribute.js";
import hiddenSubtreeService from "./hidden_subtree.js";
import oneTimeTimer from "./one_time_timer.js";
import type BNote from "../becca/entities/bnote.js";
import type AbstractBeccaEntity from "../becca/entities/abstract_becca_entity.js";
import type { DefinitionObject } from "./promoted_attribute_definition_interface.js";
type Handler = (definition: DefinitionObject, note: BNote, targetNote: BNote) => void;

View File

@ -1,32 +1,28 @@
import options from '../options.js';
import eventService from '../events.js';
import type { AIService, ChatCompletionOptions, ChatResponse, Message } from './ai_interface.js';
import { AnthropicService } from './providers/anthropic_service.js';
import { ContextExtractor } from './context/index.js';
import agentTools from './context_extractors/index.js';
import contextService from './context/services/context_service.js';
import log from '../log.js';
import { OllamaService } from './providers/ollama_service.js';
import { OpenAIService } from './providers/openai_service.js';
// Import interfaces
import type {
ServiceProviders,
IAIServiceManager,
ProviderMetadata
} from './interfaces/ai_service_interfaces.js';
import type { NoteSearchResult } from './interfaces/context_interfaces.js';
import options from '../options.js';
import type { AIService, ChatCompletionOptions, ChatResponse, Message } from './ai_interface.js';
// Import new configuration system
import {
getSelectedProvider,
parseModelIdentifier,
isAIEnabled,
getDefaultModelForProvider,
clearConfigurationCache,
getDefaultModelForProvider,
getSelectedProvider,
isAIEnabled,
parseModelIdentifier,
validateConfiguration
} from './config/configuration_helpers.js';
import { ContextExtractor } from './context/index.js';
import contextService from './context/services/context_service.js';
import agentTools from './context_extractors/index.js';
// Import interfaces
import type {
IAIServiceManager,
ProviderMetadata,
ServiceProviders} from './interfaces/ai_service_interfaces.js';
import type { ProviderType } from './interfaces/configuration_interfaces.js';
import type { NoteSearchResult } from './interfaces/context_interfaces.js';
import { AnthropicService } from './providers/anthropic_service.js';
import { OllamaService } from './providers/ollama_service.js';
import { OpenAIService } from './providers/openai_service.js';
/**
* Interface representing relevant note context
@ -173,7 +169,7 @@ export class AIServiceManager implements IAIServiceManager {
/**
* Get list of available providers
*/
getAvailableProviders(): ServiceProviders[] {
getAvailableProviders(): ServiceProviders[] {
this.ensureInitialized();
const allProviders: ServiceProviders[] = ['openai', 'anthropic', 'ollama'];

View File

@ -1,6 +1,7 @@
import type { AttachmentRow, AttributeRow, BranchRow, NoteRow } from "@triliumnext/commons";
import { dayjs } from "@triliumnext/commons";
import { date_utils } from "@triliumnext/core";
import { events as eventService } from "@triliumnext/core";
import fs from "fs";
import html2plaintext from "html2plaintext";
import { t } from "i18next";
@ -18,7 +19,6 @@ import log from "../services/log.js";
import protectedSessionService from "../services/protected_session.js";
import { newEntityId, quoteRegex, toMap,unescapeHtml } from "../services/utils.js";
import entityChangesService from "./entity_changes.js";
import eventService from "./events.js";
import htmlSanitizer from "./html_sanitizer.js";
import imageService from "./image.js";
import noteTypesService from "./note_types.js";

View File

@ -1,24 +1,25 @@
import log from "./log.js";
import { deferred, type OptionRow } from "@triliumnext/commons";
import { events as eventService } from "@triliumnext/core";
import fs from "fs";
import resourceDir from "./resource_dir.js";
import sql from "./sql.js";
import { isElectron } from "./utils.js";
import optionService from "./options.js";
import port from "./port.js";
import { t } from "i18next";
import BBranch from "../becca/entities/bbranch.js";
import BNote from "../becca/entities/bnote.js";
import BOption from "../becca/entities/boption.js";
import TaskContext from "./task_context.js";
import migrationService from "./migration.js";
import backup from "./backup.js";
import cls from "./cls.js";
import config from "./config.js";
import { deferred, type OptionRow } from "@triliumnext/commons";
import BNote from "../becca/entities/bnote.js";
import BBranch from "../becca/entities/bbranch.js";
import zipImportService from "./import/zip.js";
import password from "./encryption/password.js";
import backup from "./backup.js";
import eventService from "./events.js";
import { t } from "i18next";
import hidden_subtree from "./hidden_subtree.js";
import zipImportService from "./import/zip.js";
import log from "./log.js";
import migrationService from "./migration.js";
import optionService from "./options.js";
import port from "./port.js";
import resourceDir from "./resource_dir.js";
import sql from "./sql.js";
import TaskContext from "./task_context.js";
import { isElectron } from "./utils.js";
export const dbReady = deferred<void>();
@ -65,7 +66,7 @@ async function initDbConnection() {
isSetup TEXT DEFAULT "false",
UNIQUE (tmpID),
PRIMARY KEY (tmpID)
);`)
);`);
dbReady.resolve();
}

View File

@ -1,10 +1,11 @@
import sql from "./sql.js";
import log from "./log.js";
import entityChangesService from "./entity_changes.js";
import eventService from "./events.js";
import entityConstructor from "../becca/entity_constructor.js";
import ws from "./ws.js";
import type { EntityChange, EntityChangeRecord, EntityRow } from "@triliumnext/commons";
import { events as eventService } from "@triliumnext/core";
import entityConstructor from "../becca/entity_constructor.js";
import entityChangesService from "./entity_changes.js";
import log from "./log.js";
import sql from "./sql.js";
import ws from "./ws.js";
interface UpdateContext {
alreadyErased: number;

View File

@ -1,15 +1,14 @@
"use strict";
import { events as eventService } from "@triliumnext/core";
import sql from "../sql.js";
import shaca from "./shaca.js";
import log from "../../services/log.js";
import SNote from "./entities/snote.js";
import SBranch from "./entities/sbranch.js";
import SAttribute from "./entities/sattribute.js";
import SAttachment from "./entities/sattachment.js";
import shareRoot from "../share_root.js";
import eventService from "../../services/events.js";
import sql from "../sql.js";
import type { SAttachmentRow, SAttributeRow, SBranchRow, SNoteRow } from "./entities/rows.js";
import SAttachment from "./entities/sattachment.js";
import SAttribute from "./entities/sattribute.js";
import SBranch from "./entities/sbranch.js";
import SNote from "./entities/snote.js";
import shaca from "./shaca.js";
function load() {
const start = Date.now();

View File

@ -10,6 +10,7 @@ export * as protected_session from "./services/encryption/protected_session";
export { default as data_encryption } from "./services/encryption/data_encryption"
export * as binary_utils from "./services/utils/binary";
export { default as date_utils } from "./services/utils/date";
export { default as events } from "./services/events";
export { getContext, type ExecutionContext } from "./services/context";
export type { CryptoProvider } from "./services/encryption/crypto";