mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 18:36:30 +01:00 
			
		
		
		
	Merge pull request #268 from TriliumNext/feature/server_esm_part4
Server ESM port: Fix Electron build
This commit is contained in:
		| @@ -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", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user