Merge pull request #268 from TriliumNext/feature/server_esm_part4

Server ESM port: Fix Electron build
This commit is contained in:
Elian Doran 2024-07-27 15:21:03 +03:00 committed by GitHub
commit b58b7a6575
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
91 changed files with 127 additions and 140 deletions

View File

@ -9,7 +9,7 @@ import windowService from "./src/services/window.js";
import tray from "./src/services/tray.js";
// Prevent Trilium starting twice on first install and on uninstall for the Windows installer.
if (await import('electron-squirrel-startup')) {
if ((await import('electron-squirrel-startup')).default) {
process.exit(0);
}

View File

@ -1,6 +1,6 @@
import * as attributeParser from '../src/public/app/services/attribute_parser.js';
import {describe, it, expect, execute} from './mini_test';
import {describe, it, expect, execute} from './mini_test.js';
describe("Lexing", () => {
it("simple label", () => {

View File

@ -1,5 +1,5 @@
import crypto from "crypto";
import etapi from "../support/etapi";
import etapi from "../support/etapi.js";
etapi.describeEtapi("notes", () => {
it("create", async () => {

View File

@ -4,7 +4,7 @@ import BAttribute from "../../src/becca/entities/battribute.js";
import becca from "../../src/becca/becca.js";
import randtoken from "rand-token";
import SearchResult from "../../src/services/search/search_result.js";
import { NoteType } from "../../src/becca/entities/rows";
import { NoteType } from "../../src/becca/entities/rows.js";
randtoken.generator({ source: "crypto" });
function findNoteByTitle(

View File

@ -1,5 +1,5 @@
import handleParens from "../../src/services/search/services/handle_parens";
import { TokenStructure } from "../../src/services/search/services/types";
import handleParens from "../../src/services/search/services/handle_parens.js";
import { TokenStructure } from "../../src/services/search/services/types.js";
describe("Parens handler", () => {
it("handles parens", () => {

View File

@ -1,6 +1,6 @@
import anonymizationService from "./services/anonymization.js";
import sqlInit from "./services/sql_init.js";
await import("./becca/entity_constructor");
await import("./becca/entity_constructor.js");
sqlInit.dbReady.then(async () => {
try {

View File

@ -15,8 +15,8 @@ import error_handlers from "./routes/error_handlers.js";
import { startScheduledCleanup } from "./services/erase.js";
import sql_init from "./services/sql_init.js";
await import('./services/handlers');
await import('./becca/becca_loader');
await import('./services/handlers.js');
await import('./becca/becca_loader.js');
const app = express();
@ -56,20 +56,20 @@ custom.register(app);
error_handlers.register(app);
// triggers sync timer
await import("./services/sync");
await import("./services/sync.js");
// triggers backup timer
await import('./services/backup');
await import('./services/backup.js');
// trigger consistency checks timer
await import('./services/consistency_checks');
await import('./services/consistency_checks.js');
await import('./services/scheduler');
await import('./services/scheduler.js');
startScheduledCleanup();
if (utils.isElectron()) {
(await import('@electron/remote/main')).initialize();
(await import('@electron/remote/main/index.js')).initialize();
}
export default app;

View File

@ -8,7 +8,7 @@ import BAttribute from "./entities/battribute.js";
import BBranch from "./entities/bbranch.js";
import BRevision from "./entities/brevision.js";
import BAttachment from "./entities/battachment.js";
import { AttachmentRow, RevisionRow } from './entities/rows';
import { AttachmentRow, BlobRow, RevisionRow } from './entities/rows.js';
import BBlob from "./entities/bblob.js";
import BRecentNote from "./entities/brecent_note.js";
import AbstractBeccaEntity from "./entities/abstract_becca_entity.js";
@ -199,7 +199,7 @@ export default class Becca {
return null;
}
const row = sql.getRow<BBlob | null>("SELECT *, LENGTH(content) AS contentLength FROM blobs WHERE blobId = ?", [entity.blobId]);
const row = sql.getRow<BlobRow | null>("SELECT *, LENGTH(content) AS contentLength FROM blobs WHERE blobId = ?", [entity.blobId]);
return row ? new BBlob(row) : null;
}

View File

@ -1,6 +1,6 @@
"use strict";
import Becca from "./becca-interface";
import Becca from "./becca-interface.js";
const becca = new Becca();

View File

@ -12,7 +12,7 @@ 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 { AttributeRow, BranchRow, EtapiTokenRow, NoteRow, OptionRow } from './entities/rows';
import { AttributeRow, BranchRow, EtapiTokenRow, NoteRow, OptionRow } from './entities/rows.js';
import AbstractBeccaEntity from "./entities/abstract_becca_entity.js";
import options_init from "../services/options_init.js";
import ws from "../services/ws.js";

View File

@ -9,7 +9,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 Becca, { ConstructorData } from '../becca-interface';
import Becca, { ConstructorData } from '../becca-interface.js';
import becca from "../becca.js";
interface ContentOpts {

View File

@ -6,7 +6,7 @@ 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 { AttachmentRow } from './rows';
import { AttachmentRow } from './rows.js';
import BNote from "./bnote.js";
import BBranch from "./bbranch.js";
import noteService from "../../services/notes.js";
@ -44,9 +44,6 @@ class BAttachment extends AbstractBeccaEntity<BAttachment> {
title!: string;
type?: keyof typeof attachmentRoleToNoteTypeMapping;
position?: number;
blobId?: string;
isProtected?: boolean;
dateModified?: string;
utcDateScheduledForErasureSince?: string | null;
/** optionally added to the entity */
contentLength?: number;

View File

@ -5,7 +5,7 @@ import AbstractBeccaEntity from "./abstract_becca_entity.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";
import { AttributeRow, AttributeType } from './rows';
import { AttributeRow, AttributeType } from './rows.js';
interface SavingOpts {
skipValidation?: boolean;

View File

@ -1,5 +1,5 @@
import AbstractBeccaEntity from "./abstract_becca_entity.js";
import { BlobRow } from "./rows";
import { BlobRow } from "./rows.js";
// TODO: Why this does not extend the abstract becca?
class BBlob extends AbstractBeccaEntity<BBlob> {
@ -7,11 +7,8 @@ class BBlob extends AbstractBeccaEntity<BBlob> {
static get primaryKeyName() { return "blobId"; }
static get hashedProperties() { return ["blobId", "content"]; }
blobId!: string;
content!: string | Buffer;
contentLength!: number;
dateModified!: string;
utcDateModified!: string;
constructor(row: BlobRow) {
super();

View File

@ -7,7 +7,7 @@ import utils from "../../services/utils.js";
import TaskContext from "../../services/task_context.js";
import cls from "../../services/cls.js";
import log from "../../services/log.js";
import { BranchRow } from './rows';
import { BranchRow } from './rows.js';
import handlers from "../../services/handlers.js";
/**
@ -29,7 +29,6 @@ class BBranch extends AbstractBeccaEntity<BBranch> {
prefix!: string | null;
notePosition!: number;
isExpanded!: boolean;
utcDateModified?: string;
constructor(row?: BranchRow) {
super();

View File

@ -1,6 +1,6 @@
"use strict";
import { EtapiTokenRow } from "./rows";
import { EtapiTokenRow } from "./rows.js";
import dateUtils from "../../services/date_utils.js";
import AbstractBeccaEntity from "./abstract_becca_entity.js";

View File

@ -10,12 +10,12 @@ import BRevision from "./brevision.js";
import BAttachment from "./battachment.js";
import TaskContext from "../../services/task_context.js";
import dayjs from "dayjs";
import utc from "dayjs/plugin/utc";
import utc from "dayjs/plugin/utc.js";
import eventService from "../../services/events.js";
import { AttachmentRow, AttributeType, NoteRow, NoteType, RevisionRow } from './rows';
import { AttachmentRow, AttributeType, NoteRow, NoteType, RevisionRow } from './rows.js';
import BBranch from "./bbranch.js";
import BAttribute from "./battribute.js";
import { NotePojo } from '../becca-interface';
import { NotePojo } from '../becca-interface.js';
import searchService from "../../services/search/services/search.js";
import cloningService, { CloneResponse } from "../../services/cloning.js";
import noteService from "../../services/notes.js";

View File

@ -2,7 +2,7 @@
import dateUtils from "../../services/date_utils.js";
import AbstractBeccaEntity from "./abstract_becca_entity.js";
import { OptionRow } from './rows';
import { OptionRow } from './rows.js';
/**
* Option represents a name-value pair, either directly configurable by the user or some system property.
@ -14,7 +14,6 @@ class BOption extends AbstractBeccaEntity<BOption> {
name!: string;
value!: string;
isSynced!: boolean;
constructor(row?: OptionRow) {
super();

View File

@ -1,6 +1,6 @@
"use strict";
import { RecentNoteRow } from "./rows";
import { RecentNoteRow } from "./rows.js";
import dateUtils from "../../services/date_utils.js";
import AbstractBeccaEntity from "./abstract_becca_entity.js";
@ -15,7 +15,6 @@ class BRecentNote extends AbstractBeccaEntity<BRecentNote> {
noteId!: string;
notePath!: string;
utcDateCreated!: string;
constructor(row: RecentNoteRow) {
super();

View File

@ -7,7 +7,7 @@ import becca from "../becca.js";
import AbstractBeccaEntity from "./abstract_becca_entity.js";
import sql from "../../services/sql.js";
import BAttachment from "./battachment.js";
import { AttachmentRow, RevisionRow } from './rows';
import { AttachmentRow, RevisionRow } from './rows.js';
import eraseService from "../../services/erase.js";
interface ContentOpts {
@ -33,13 +33,9 @@ class BRevision extends AbstractBeccaEntity<BRevision> {
noteId!: string;
type!: string;
mime!: string;
isProtected!: boolean;
title!: string;
blobId?: string;
dateLastEdited?: string;
dateCreated!: string;
utcDateLastEdited?: string;
utcDateCreated!: string;
contentLength?: number;
content?: string | Buffer;

View File

@ -1,4 +1,4 @@
import { ConstructorData } from './becca-interface';
import { ConstructorData } from './becca-interface.js';
import AbstractBeccaEntity from "./entities/abstract_becca_entity.js";
import BAttachment from "./entities/battachment.js";
import BAttribute from "./entities/battribute.js";

View File

@ -4,8 +4,8 @@ import mappers from "./mappers.js";
import v from "./validators.js";
import utils from "../services/utils.js";
import { Router } from 'express';
import { AttachmentRow } from '../becca/entities/rows';
import { ValidatorMap } from './etapi-interface';
import { AttachmentRow } from '../becca/entities/rows.js';
import { ValidatorMap } from './etapi-interface.js';
function register(router: Router) {
const ALLOWED_PROPERTIES_FOR_CREATE_ATTACHMENT: ValidatorMap = {

View File

@ -4,8 +4,8 @@ import mappers from "./mappers.js";
import attributeService from "../services/attributes.js";
import v from "./validators.js";
import { Router } from 'express';
import { AttributeRow } from '../becca/entities/rows';
import { ValidatorMap } from './etapi-interface';
import { AttributeRow } from '../becca/entities/rows.js';
import { ValidatorMap } from './etapi-interface.js';
function register(router: Router) {
eu.route(router, 'get', '/etapi/attributes/:attributeId', (req, res, next) => {

View File

@ -6,7 +6,7 @@ import mappers from "./mappers.js";
import BBranch from "../becca/entities/bbranch.js";
import entityChangesService from "../services/entity_changes.js";
import v from "./validators.js";
import { BranchRow } from "../becca/entities/rows";
import { BranchRow } from "../becca/entities/rows.js";
function register(router: Router) {
eu.route(router, 'get', '/etapi/branches/:branchId', (req, res, next) => {

View File

@ -5,8 +5,8 @@ import becca from "../becca/becca.js";
import etapiTokenService from "../services/etapi_tokens.js";
import config from "../services/config.js";
import { NextFunction, Request, RequestHandler, Response, Router } from 'express';
import { AppRequest, AppRequestHandler } from '../routes/route-interface';
import { ValidatorMap } from './etapi-interface';
import { AppRequest, AppRequestHandler } from '../routes/route-interface.js';
import { ValidatorMap } from './etapi-interface.js';
const GENERIC_CODE = "GENERIC";
type HttpMethod = "all" | "get" | "post" | "put" | "delete" | "patch" | "options" | "head";

View File

@ -10,12 +10,11 @@ import SearchContext from "../services/search/search_context.js";
import zipExportService from "../services/export/zip.js";
import zipImportService from "../services/import/zip.js";
import { Router } from 'express';
import { AppRequest } from '../routes/route-interface';
import { AppRequest } from '../routes/route-interface.js';
import { ParsedQs } from 'qs';
import { NoteParams } from '../services/note-interface';
import BNote from "../becca/entities/bnote.js";
import { SearchParams } from '../services/search/services/types';
import { ValidatorMap } from './etapi-interface';
import { NoteParams } from '../services/note-interface.js';
import { SearchParams } from '../services/search/services/types.js';
import { ValidatorMap } from './etapi-interface.js';
function register(router: Router) {
eu.route(router, 'get', '/etapi/notes', (req, res, next) => {

View File

@ -14,7 +14,7 @@ import ValidationError from "../../errors/validation_error.js";
import { Request, Response } from 'express';
import BNote from "../../becca/entities/bnote.js";
import BAttachment from "../../becca/entities/battachment.js";
import { AppRequest } from '../route-interface';
import { AppRequest } from '../route-interface.js';
function updateFile(req: AppRequest) {
const note = becca.getNoteOrThrow(req.params.noteId);

View File

@ -6,7 +6,7 @@ import fs from "fs";
import { Request, Response } from 'express';
import BNote from "../../becca/entities/bnote.js";
import BRevision from "../../becca/entities/brevision.js";
import { AppRequest } from '../route-interface';
import { AppRequest } from '../route-interface.js';
import { RESOURCE_DIR } from "../../services/resource_dir.js";
function returnImageFromNote(req: Request, res: Response) {

View File

@ -13,7 +13,7 @@ import TaskContext from "../../services/task_context.js";
import ValidationError from "../../errors/validation_error.js";
import { Request } from 'express';
import BNote from "../../becca/entities/bnote.js";
import { AppRequest } from '../route-interface';
import { AppRequest } from '../route-interface.js';
async function importNotesToBranch(req: AppRequest) {
const { parentNoteId } = req.params;

View File

@ -13,7 +13,7 @@ import sql from "../../services/sql.js";
import ws from "../../services/ws.js";
import etapiTokenService from "../../services/etapi_tokens.js";
import { Request } from 'express';
import { AppRequest } from '../route-interface';
import { AppRequest } from '../route-interface.js';
function loginSync(req: AppRequest) {
if (!sqlInit.schemaExists()) {

View File

@ -12,7 +12,7 @@ import ValidationError from "../../errors/validation_error.js";
import blobService from "../../services/blob.js";
import { Request } from 'express';
import BBranch from "../../becca/entities/bbranch.js";
import { AttributeRow } from '../../becca/entities/rows';
import { AttributeRow } from '../../becca/entities/rows.js';
function getNote(req: Request) {
return becca.getNoteOrThrow(req.params.noteId);

View File

@ -5,7 +5,7 @@ import protectedSessionService from "../../services/protected_session.js";
import noteService from "../../services/notes.js";
import becca from "../../becca/becca.js";
import { Request } from 'express';
import { RevisionRow } from '../../becca/entities/rows';
import { RevisionRow } from '../../becca/entities/rows.js';
interface RecentChangeRow {
noteId: string;

View File

@ -12,7 +12,7 @@ import eraseService from "../../services/erase.js";
import { Request, Response } from 'express';
import BRevision from "../../becca/entities/brevision.js";
import BNote from "../../becca/entities/bnote.js";
import { NotePojo } from '../../becca/becca-interface';
import { NotePojo } from '../../becca/becca-interface.js';
interface NotePath {
noteId: string;
@ -64,6 +64,10 @@ function getRevision(req: Request) {
function getRevisionFilename(revision: BRevision) {
let filename = utils.formatDownloadTitle(revision.title, revision.type, revision.mime);
if (!revision.dateCreated) {
throw new Error("Missing creation date for revision.");
}
const extension = path.extname(filename);
const date = revision.dateCreated
.substr(0, 19)

View File

@ -6,7 +6,7 @@ import noteService from "../../services/notes.js";
import sanitize_attribute_name from "../../services/sanitize_attribute_name.js";
import specialNotesService from "../../services/special_notes.js";
import { Request } from 'express';
import { AppRequest } from '../route-interface';
import { AppRequest } from '../route-interface.js';
function uploadImage(req: AppRequest) {
const file = req.file;

View File

@ -12,7 +12,7 @@ import syncOptions from "../../services/sync_options.js";
import utils from "../../services/utils.js";
import ws from "../../services/ws.js";
import { Request } from 'express';
import { EntityChange, EntityChangeRecord } from '../../services/entity_changes_interface';
import { EntityChange, EntityChangeRecord } from '../../services/entity_changes_interface.js';
import ValidationError from "../../errors/validation_error.js";
import consistencyChecksService from "../../services/consistency_checks.js";

View File

@ -8,7 +8,7 @@ import log from "../services/log.js";
import env from "../services/env.js";
import utils from "../services/utils.js";
import protectedSessionService from "../services/protected_session.js";
import packageJson from "../../package.json";
import packageJson from "../../package.json" with { type: "json" };
import assetPath from "../services/asset_path.js";
import appPath from "../services/app_path.js";
import { Request, Response } from 'express';

View File

@ -9,7 +9,7 @@ import assetPath from "../services/asset_path.js";
import appPath from "../services/app_path.js";
import ValidationError from "../errors/validation_error.js";
import { Request, Response } from 'express';
import { AppRequest } from './route-interface';
import { AppRequest } from './route-interface.js';
function loginPage(req: Request, res: Response) {
res.render('login', {

View File

@ -70,7 +70,7 @@ import etapiNoteRoutes from "../etapi/notes.js";
import etapiSpecialNoteRoutes from "../etapi/special_notes.js";
import etapiSpecRoute from "../etapi/spec.js";
import etapiBackupRoute from "../etapi/backup.js";
import { AppRequest, AppRequestHandler } from './route-interface';
import { AppRequest, AppRequestHandler } from './route-interface.js';
const csrfMiddleware = csurf({
cookie: {

View File

@ -35,7 +35,7 @@ function setupPage(req: Request, res: Response) {
}
async function handleElectronRedirect() {
const windowService = (await import("../services/window")).default;
const windowService = (await import("../services/window.js")).default;
const { app } = await import("electron");
windowService.createMainWindow(app);
windowService.closeSetupWindow();

View File

@ -1,4 +1,4 @@
import { OptionRow } from "../becca/entities/rows";
import { OptionRow } from "../becca/entities/rows.js";
/**
* Response for /api/setup/status.

View File

@ -1,7 +1,7 @@
"use strict";
import build from "./build.js";
import packageJson from "../../package.json";
import packageJson from "../../package.json" with { type: "json" };
import dataDir from "./data_dir.js";
const APP_DB_VERSION = 228;

View File

@ -1,6 +1,6 @@
"use strict";
import { AttributeRow } from "../becca/entities/rows";
import { AttributeRow } from "../becca/entities/rows.js";
function formatAttrForSearch(attr: AttributeRow, searchWithValue: boolean) {
let searchStr = '';

View File

@ -7,7 +7,7 @@ import BAttribute from "../becca/entities/battribute.js";
import attributeFormatter from "./attribute_formatter.js";
import BUILTIN_ATTRIBUTES from "./builtin_attributes.js";
import BNote from "../becca/entities/bnote.js";
import { AttributeRow } from '../becca/entities/rows';
import { AttributeRow } from '../becca/entities/rows.js';
const ATTRIBUTE_TYPES = ['label', 'relation'];

View File

@ -8,7 +8,7 @@ import passwordEncryptionService from "./encryption/password_encryption.js";
import config from "./config.js";
import passwordService from "./encryption/password.js";
import type { NextFunction, Request, Response } from 'express';
import { AppRequest } from '../routes/route-interface';
import { AppRequest } from '../routes/route-interface.js';
const noAuthentication = config.General && config.General.noAuthentication === true;

View File

@ -30,10 +30,10 @@ import BAttachment from "../becca/entities/battachment.js";
import BRevision from "../becca/entities/brevision.js";
import BEtapiToken from "../becca/entities/betapi_token.js";
import BOption from "../becca/entities/boption.js";
import { AttributeRow, AttributeType, NoteType } from '../becca/entities/rows';
import Becca from '../becca/becca-interface';
import { NoteParams } from './note-interface';
import { ApiParams } from './backend_script_api_interface';
import { AttributeRow } from '../becca/entities/rows.js';
import Becca from '../becca/becca-interface.js';
import { NoteParams } from './note-interface.js';
import { ApiParams } from './backend_script_api_interface.js';
/**

View File

@ -2,7 +2,7 @@ import becca from "../becca/becca.js";
import NotFoundError from "../errors/not_found_error.js";
import protectedSessionService from "./protected_session.js";
import utils from "./utils.js";
import type { Blob } from "./blob-interface";
import type { Blob } from "./blob-interface.js";
function getBlobPojo(entityName: string, entityId: string, opts?: { preview: boolean }) {
// TODO: Unused opts.

View File

@ -1,11 +1,11 @@
"use strict";
import sql from './sql';
import eventChangesService from './entity_changes';
import treeService from './tree';
import BBranch from '../becca/entities/bbranch';
import becca from '../becca/becca';
import log from './log';
import sql from './sql.js';
import eventChangesService from './entity_changes.js';
import treeService from './tree.js';
import BBranch from '../becca/entities/bbranch.js';
import becca from '../becca/becca.js';
import log from './log.js';
export interface CloneResponse {
success: boolean;

View File

@ -1,5 +1,5 @@
import clsHooked from "cls-hooked";
import { EntityChange } from './entity_changes_interface';
import { EntityChange } from './entity_changes_interface.js';
const namespace = clsHooked.createNamespace("trilium");
type Callback = (...args: any[]) => any;

View File

@ -14,8 +14,8 @@ import utils from "../services/utils.js";
import eraseService from "../services/erase.js";
import sanitizeAttributeName from "./sanitize_attribute_name.js";
import noteTypesService from "../services/note_types.js";
import { BranchRow } from '../becca/entities/rows';
import { EntityChange } from './entity_changes_interface';
import { BranchRow } from '../becca/entities/rows.js';
import { EntityChange } from './entity_changes_interface.js';
import becca_loader from "../becca/becca_loader.js";
const noteTypes = noteTypesService.getNoteTypeNames();

View File

@ -6,8 +6,8 @@ import utils from "./utils.js";
import instanceId from "./instance_id.js";
import becca from "../becca/becca.js";
import blobService from "../services/blob.js";
import { EntityChange } from './entity_changes_interface';
import type { Blob } from "./blob-interface";
import { EntityChange } from './entity_changes_interface.js';
import type { Blob } from "./blob-interface.js";
import eventService from "./events.js";
let maxEntityChangeId = 0;

View File

@ -1,12 +1,11 @@
import sql from "./sql.js";
import revisionService from "./revisions.js";
import log from "./log.js";
import entityChangesService from "./entity_changes.js";
import optionService from "./options.js";
import dateUtils from "./date_utils.js";
import sqlInit from "./sql_init.js";
import cls from "./cls.js";
import { EntityChange } from "./entity_changes_interface";
import { EntityChange } from "./entity_changes_interface.js";
function eraseNotes(noteIdsToErase: string[]) {
if (noteIdsToErase.length === 0) {

View File

@ -1,4 +1,4 @@
import log from "./log";
import log from "./log.js";
const NOTE_TITLE_CHANGED = "NOTE_TITLE_CHANGED";
const ENTER_PROTECTED_SESSION = "ENTER_PROTECTED_SESSION";

View File

@ -5,7 +5,7 @@ import dateUtils from "../date_utils.js";
import path from "path";
import mimeTypes from "mime-types";
import mdService from "./md.js";
import packageInfo from "../../../package.json";
import packageInfo from "../../../package.json" with { type: "json" };
import utils from "../utils.js";
import protectedSessionService from "../protected_session.js";
import sanitize from "sanitize-filename";

View File

@ -8,7 +8,7 @@ import hiddenSubtreeService from "./hidden_subtree.js";
import oneTimeTimer from "./one_time_timer.js";
import BNote from "../becca/entities/bnote.js";
import AbstractBeccaEntity from "../becca/entities/abstract_becca_entity.js";
import { DefinitionObject } from './promoted_attribute_definition_interface';
import { DefinitionObject } from './promoted_attribute_definition_interface.js';
type Handler = (definition: DefinitionObject, note: BNote, targetNote: BNote) => void;

View File

@ -1,5 +1,5 @@
import BAttribute from "../becca/entities/battribute.js";
import { AttributeType, NoteType } from "../becca/entities/rows";
import { AttributeType, NoteType } from "../becca/entities/rows.js";
import becca from "../becca/becca.js";
import noteService from "./notes.js";

View File

@ -11,7 +11,7 @@ import htmlSanitizer from "../html_sanitizer.js";
import sanitizeAttributeName from "../sanitize_attribute_name.js";
import TaskContext from "../task_context.js";
import BNote from "../../becca/entities/bnote.js";
import { File } from "./common";
import { File } from "./common.js";
import { AttributeType } from "../../becca/entities/rows.js";
/**

View File

@ -2,7 +2,7 @@
import mimeTypes from "mime-types";
import path from "path";
import { TaskData } from '../task_context_interface';
import { TaskData } from '../task_context_interface.js';
const CODE_MIME_TYPES: Record<string, boolean | string> = {
'text/plain': true,

View File

@ -11,7 +11,7 @@ import mimeService from "./mime.js";
import utils from "../../services/utils.js";
import importUtils from "./utils.js";
import htmlSanitizer from "../html_sanitizer.js";
import { File } from "./common";
import { File } from "./common.js";
function importSingleFile(taskContext: TaskContext, file: File, parentNote: BNote) {
const mime = mimeService.getMime(file.originalname) || file.mimetype;

View File

@ -20,7 +20,7 @@ import BNote from "../../becca/entities/bnote.js";
import NoteMeta from "../meta/note_meta.js";
import AttributeMeta from "../meta/attribute_meta.js";
import { Stream } from 'stream';
import { ALLOWED_NOTE_TYPES, NoteType } from '../../becca/entities/rows';
import { ALLOWED_NOTE_TYPES, NoteType } from '../../becca/entities/rows.js';
interface MetaFile {
files: NoteMeta[]

View File

@ -3,7 +3,7 @@
import optionService from "./options.js";
import log from "./log.js";
import utils from "./utils.js";
import { KeyboardShortcut } from './keyboard_actions_interface';
import { KeyboardShortcut } from './keyboard_actions_interface.js';
const isMac = process.platform === "darwin";
const isElectron = utils.isElectron();

View File

@ -1,4 +1,4 @@
import { AttributeType } from "../../becca/entities/rows";
import { AttributeType } from "../../becca/entities/rows.js";
interface AttributeMeta {
noteId?: string;

View File

@ -1,4 +1,4 @@
import { NoteType } from "../becca/entities/rows";
import { NoteType } from "../becca/entities/rows.js";
export interface NoteParams {
/** optionally can force specific noteId */

View File

@ -23,9 +23,9 @@ import noteTypesService from "./note_types.js";
import fs from "fs";
import ws from "./ws.js";
import html2plaintext from "html2plaintext";
import { AttachmentRow, AttributeRow, BranchRow, NoteRow, NoteType } from '../becca/entities/rows';
import { AttachmentRow, AttributeRow, BranchRow, NoteRow, NoteType } from '../becca/entities/rows.js';
import TaskContext from "./task_context.js";
import { NoteParams } from './note-interface';
import { NoteParams } from './note-interface.js';
import imageService from "./image.js";
interface FoundLink {

View File

@ -1,6 +1,6 @@
import becca from "../becca/becca.js";
import BOption from "../becca/entities/boption.js";
import { OptionRow } from '../becca/entities/rows';
import { OptionRow } from '../becca/entities/rows.js';
import sql from "./sql.js";
function getOptionOrNull(name: string): string | null {

View File

@ -4,7 +4,7 @@ import utils from "./utils.js";
import log from "./log.js";
import dateUtils from "./date_utils.js";
import keyboardActions from "./keyboard_actions.js";
import { KeyboardShortcutWithRequiredActionName } from './keyboard_actions_interface';
import { KeyboardShortcutWithRequiredActionName } from './keyboard_actions_interface.js';
function initDocumentOptions() {
optionService.createOption('documentId', utils.randomSecureToken(16), false);

View File

@ -1,4 +1,4 @@
import { DefinitionObject } from "./promoted_attribute_definition_interface";
import { DefinitionObject } from "./promoted_attribute_definition_interface.js";
function parse(value: string): DefinitionObject {
const tokens = value.split(',').map(t => t.trim());

View File

@ -4,7 +4,7 @@ import utils from "./utils.js";
import log from "./log.js";
import url from "url";
import syncOptions from "./sync_options.js";
import { ExecOpts } from './request_interface';
import { ExecOpts } from './request_interface.js';
// this service provides abstraction over node's HTTP/HTTPS and electron net.client APIs
// this allows supporting system proxy

View File

@ -3,7 +3,7 @@ import cls from "./cls.js";
import log from "./log.js";
import becca from "../becca/becca.js";
import BNote from "../becca/entities/bnote.js";
import { ApiParams } from './backend_script_api_interface';
import { ApiParams } from './backend_script_api_interface.js';
interface Bundle {
note?: BNote;

View File

@ -1,7 +1,7 @@
import utils from "./utils.js";
import BackendScriptApi from "./backend_script_api.js";
import BNote from "../becca/entities/bnote.js";
import { ApiParams } from './backend_script_api_interface';
import { ApiParams } from './backend_script_api_interface.js';
type Module = {
exports: any[];

View File

@ -1,6 +1,6 @@
"use strict";
import { NoteRow } from "../../../becca/entities/rows";
import { NoteRow } from "../../../becca/entities/rows.js";
import SearchContext from "../search_context.js";
import Expression from "./expression.js";

View File

@ -1,7 +1,7 @@
"use strict";
import hoistedNoteService from "../hoisted_note.js";
import { SearchParams } from './services/types';
import { SearchParams } from './services/types.js';
class SearchContext {

View File

@ -1,4 +1,4 @@
import { TokenData, TokenStructure } from "./types";
import { TokenData, TokenStructure } from "./types.js";
/**
* This will create a recursive object from a list of tokens - tokens between parenthesis are grouped in a single array

View File

@ -1,4 +1,4 @@
import { TokenData } from "./types";
import { TokenData } from "./types.js";
function lex(str: string) {
str = str.toLowerCase();

View File

@ -21,7 +21,7 @@ import utils from "../../utils.js";
import TrueExp from "../expressions/true.js";
import IsHiddenExp from "../expressions/is_hidden.js";
import SearchContext from "../search_context.js";
import { TokenData, TokenStructure } from "./types";
import { TokenData, TokenStructure } from "./types.js";
import Expression from "../expressions/expression.js";
function getFulltext(_tokens: TokenData[], searchContext: SearchContext) {

View File

@ -13,7 +13,7 @@ import log from "../../log.js";
import hoistedNoteService from "../../hoisted_note.js";
import BNote from "../../../becca/entities/bnote.js";
import BAttribute from "../../../becca/entities/battribute.js";
import { SearchParams, TokenStructure } from "./types";
import { SearchParams, TokenStructure } from "./types.js";
import Expression from "../expressions/expression.js";
import sql from "../../sql.js";
import scriptService from "../../script.js";

View File

@ -7,7 +7,7 @@ import request from "./request.js";
import appInfo from "./app_info.js";
import utils from "./utils.js";
import becca from "../becca/becca.js";
import { SetupStatusResponse, SetupSyncSeedResponse } from './api-interface';
import { SetupStatusResponse, SetupSyncSeedResponse } from './api-interface.js';
async function hasSyncServerSchemaAndSeed() {
const response = await requestToSyncServer<SetupStatusResponse>('GET', '/api/setup/status');

View File

@ -10,7 +10,7 @@ import TaskContext from "./task_context.js";
import migrationService from "./migration.js";
import cls from "./cls.js";
import config from "./config.js";
import { OptionRow } from '../becca/entities/rows';
import { OptionRow } from '../becca/entities/rows.js';
import optionsInitService from "./options_init.js";
import BNote from "../becca/entities/bnote.js";
import BBranch from "../becca/entities/bbranch.js";

View File

@ -17,8 +17,8 @@ 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 { EntityChange, EntityChangeRecord, EntityRow } from './entity_changes_interface';
import { CookieJar, ExecOpts } from './request_interface';
import { EntityChange, EntityChangeRecord, EntityRow } from './entity_changes_interface.js';
import { CookieJar, ExecOpts } from './request_interface.js';
import setupService from "./setup.js";
import consistency_checks from "./consistency_checks.js";
import becca_loader from "../becca/becca_loader.js";

View File

@ -4,7 +4,7 @@ import entityChangesService from "./entity_changes.js";
import eventService from "./events.js";
import entityConstructor from "../becca/entity_constructor.js";
import ws from "./ws.js";
import { EntityChange, EntityChangeRecord, EntityRow } from './entity_changes_interface';
import { EntityChange, EntityChangeRecord, EntityRow } from './entity_changes_interface.js';
interface UpdateContext {
alreadyErased: number;

View File

@ -1,6 +1,6 @@
"use strict";
import { TaskData } from './task_context_interface';
import { TaskData } from './task_context_interface.js';
import ws from "./ws.js";
// taskId => TaskContext

View File

@ -7,7 +7,7 @@ import log from "./log.js";
import sqlInit from "./sql_init.js";
import cls from "./cls.js";
import keyboardActionsService from "./keyboard_actions.js";
import remoteMain from "@electron/remote/main"
import remoteMain from "@electron/remote/main/index.js"
import { App, BrowserWindow, WebContents, ipcMain } from 'electron';
import { fileURLToPath } from "url";

View File

@ -11,7 +11,7 @@ import AbstractBeccaEntity from "../becca/entities/abstract_becca_entity.js";
import env from "./env.js";
import { IncomingMessage, Server } from 'http';
import { EntityChange } from './entity_changes_interface';
import { EntityChange } from './entity_changes_interface.js';
if (env.isDev()) {
const chokidar = (await import("chokidar")).default;

View File

@ -1,5 +1,5 @@
import shaca from "../shaca";
import Shaca from "../shaca-interface";
import shaca from "../shaca.js";
import Shaca from "../shaca-interface.js";
class AbstractShacaEntity {
get shaca(): Shaca {

View File

@ -4,8 +4,8 @@ import sql from "../../sql.js";
import utils from "../../../services/utils.js";
import AbstractShacaEntity from "./abstract_shaca_entity.js";
import SNote from "./snote.js";
import { Blob } from '../../../services/blob-interface';
import { SAttachmentRow } from './rows';
import { Blob } from '../../../services/blob-interface.js';
import { SAttachmentRow } from './rows.js';
class SAttachment extends AbstractShacaEntity {
private attachmentId: string;

View File

@ -1,7 +1,7 @@
"use strict";
import AbstractShacaEntity from "./abstract_shaca_entity";
import { SAttributeRow } from "./rows";
import AbstractShacaEntity from "./abstract_shaca_entity.js";
import { SAttributeRow } from "./rows.js";
import SNote from "./snote.js";
class SAttribute extends AbstractShacaEntity {

View File

@ -1,7 +1,7 @@
"use strict";
import AbstractShacaEntity from "./abstract_shaca_entity.js";
import { SBranchRow } from './rows';
import { SBranchRow } from './rows.js';
import SNote from "./snote.js";
class SBranch extends AbstractShacaEntity {

View File

@ -4,11 +4,11 @@ import sql from "../../sql.js";
import utils from "../../../services/utils.js";
import AbstractShacaEntity from "./abstract_shaca_entity.js";
import escape from "escape-html";
import { Blob } from '../../../services/blob-interface';
import { Blob } from '../../../services/blob-interface.js';
import SAttachment from "./sattachment.js";
import SAttribute from "./sattribute.js";
import SBranch from "./sbranch.js";
import { SNoteRow } from './rows';
import { SNoteRow } from './rows.js';
const LABEL = 'label';
const RELATION = 'relation';

View File

@ -1,6 +1,6 @@
"use strict";
import Shaca from "./shaca-interface";
import Shaca from "./shaca-interface.js";
const shaca = new Shaca();

View File

@ -9,7 +9,7 @@ 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 { SAttachmentRow, SAttributeRow, SBranchRow, SNoteRow } from './entities/rows';
import { SAttachmentRow, SAttributeRow, SBranchRow, SNoteRow } from './entities/rows.js';
function load() {
const start = Date.now();

View File

@ -69,7 +69,7 @@ async function startTrilium() {
ws.init(httpServer, sessionParser as any); // TODO: Not sure why session parser is incompatible.
if (utils.isElectron()) {
const electronRouting = await import('./routes/electron');
const electronRouting = await import('./routes/electron.js');
electronRouting.default(app);
}
}

View File

@ -1,8 +1,6 @@
{
"compilerOptions": {
"moduleResolution": "Bundler",
"module": "ESNext",
"target": "ES2020",
"module": "NodeNext",
"declaration": false,
"sourceMap": true,
"outDir": "./build",