mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
Merge pull request #268 from TriliumNext/feature/server_esm_part4
Server ESM port: Fix Electron build
This commit is contained in:
commit
b58b7a6575
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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", () => {
|
||||
|
@ -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 () => {
|
||||
|
@ -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(
|
||||
|
@ -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", () => {
|
||||
|
@ -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 {
|
||||
|
14
src/app.ts
14
src/app.ts
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
import Becca from "./becca-interface";
|
||||
import Becca from "./becca-interface.js";
|
||||
|
||||
const becca = new Becca();
|
||||
|
||||
|
@ -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";
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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";
|
||||
|
@ -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";
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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";
|
||||
|
@ -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 = {
|
||||
|
@ -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) => {
|
||||
|
@ -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) => {
|
||||
|
@ -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";
|
||||
|
@ -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) => {
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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()) {
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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';
|
||||
|
@ -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', {
|
||||
|
@ -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: {
|
||||
|
@ -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();
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { OptionRow } from "../becca/entities/rows";
|
||||
import { OptionRow } from "../becca/entities/rows.js";
|
||||
|
||||
/**
|
||||
* Response for /api/setup/status.
|
||||
|
@ -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;
|
||||
|
@ -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 = '';
|
||||
|
@ -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'];
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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';
|
||||
|
||||
|
||||
/**
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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";
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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";
|
||||
|
@ -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";
|
||||
|
||||
/**
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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[]
|
||||
|
@ -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();
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { AttributeType } from "../../becca/entities/rows";
|
||||
import { AttributeType } from "../../becca/entities/rows.js";
|
||||
|
||||
interface AttributeMeta {
|
||||
noteId?: string;
|
||||
|
@ -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 */
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
|
@ -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());
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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[];
|
||||
|
@ -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";
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { TokenData } from "./types";
|
||||
import { TokenData } from "./types.js";
|
||||
|
||||
function lex(str: string) {
|
||||
str = str.toLowerCase();
|
||||
|
@ -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) {
|
||||
|
@ -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";
|
||||
|
@ -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');
|
||||
|
@ -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";
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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';
|
||||
|
@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
import Shaca from "./shaca-interface";
|
||||
import Shaca from "./shaca-interface.js";
|
||||
|
||||
const shaca = new Shaca();
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"moduleResolution": "Bundler",
|
||||
"module": "ESNext",
|
||||
"target": "ES2020",
|
||||
"module": "NodeNext",
|
||||
"declaration": false,
|
||||
"sourceMap": true,
|
||||
"outDir": "./build",
|
||||
|
Loading…
x
Reference in New Issue
Block a user