refactor(ts): enable verbatim module syntax

This commit is contained in:
Elian Doran
2025-01-09 18:36:24 +02:00
parent 4cbb529fd4
commit 324696bc54
161 changed files with 244 additions and 250 deletions

View File

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

View File

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

View File

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

View File

@@ -31,10 +31,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 } from "../becca/entities/rows.js";
import type { 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";
import type { NoteParams } from "./note-interface.js";
import type { ApiParams } from "./backend_script_api_interface.js";
/**
* A whole number

View File

@@ -1,4 +1,4 @@
import { Request, Response } from "express";
import type { Request, Response } from "express";
import AbstractBeccaEntity from "../becca/entities/abstract_becca_entity.js";
import BNote from "../becca/entities/bnote.js";

View File

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

View File

@@ -14,8 +14,8 @@ import { hash as getHash, hashedBlobId, randomString } from "../services/utils.j
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.js";
import { EntityChange } from "./entity_changes_interface.js";
import type { BranchRow } from "../becca/entities/rows.js";
import type { EntityChange } from "./entity_changes_interface.js";
import becca_loader from "../becca/becca_loader.js";
const noteTypes = noteTypesService.getNoteTypeNames();

View File

@@ -6,7 +6,7 @@ import { randomString } 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.js";
import type { EntityChange } from "./entity_changes_interface.js";
import type { Blob } from "./blob-interface.js";
import eventService from "./events.js";

View File

@@ -5,7 +5,7 @@ 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.js";
import type { EntityChange } from "./entity_changes_interface.js";
function eraseNotes(noteIdsToErase: string[]) {
if (noteIdsToErase.length === 0) {

View File

@@ -4,7 +4,7 @@ import { getContentDisposition, stripTags } from "../utils.js";
import becca from "../../becca/becca.js";
import TaskContext from "../task_context.js";
import BBranch from "../../becca/entities/bbranch.js";
import { Response } from "express";
import type { Response } from "express";
function exportToOpml(taskContext: TaskContext, branch: BBranch, version: string, res: Response) {
if (!["1.0", "2.0"].includes(version)) {

View File

@@ -7,7 +7,7 @@ import mdService from "./md.js";
import becca from "../../becca/becca.js";
import TaskContext from "../task_context.js";
import BBranch from "../../becca/entities/bbranch.js";
import { Response } from "express";
import type { Response } from "express";
function exportSingleNote(taskContext: TaskContext, branch: BBranch, format: "html" | "markdown", res: Response) {
const note = branch.getNote();

View File

@@ -15,11 +15,11 @@ import archiver from "archiver";
import log from "../log.js";
import TaskContext from "../task_context.js";
import ValidationError from "../../errors/validation_error.js";
import NoteMeta from "../meta/note_meta.js";
import AttachmentMeta from "../meta/attachment_meta.js";
import AttributeMeta from "../meta/attribute_meta.js";
import type NoteMeta from "../meta/note_meta.js";
import type AttachmentMeta from "../meta/attachment_meta.js";
import type AttributeMeta from "../meta/attribute_meta.js";
import BBranch from "../../becca/entities/bbranch.js";
import { Response } from "express";
import type { Response } from "express";
import { RESOURCE_DIR } from "../resource_dir.js";
async function exportToZip(taskContext: TaskContext, branch: BBranch, format: "html" | "markdown", res: Response | fs.WriteStream, setHeaders = true) {

View File

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

View File

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

View File

@@ -11,8 +11,8 @@ 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.js";
import { AttributeType } from "../../becca/entities/rows.js";
import type { File } from "./common.js";
import type { AttributeType } from "../../becca/entities/rows.js";
/**
* date format is e.g. 20181121T193703Z or 2013-04-14T16:19:00.000Z (Mac evernote, see #3496)

View File

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

View File

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

View File

@@ -17,10 +17,10 @@ import BAttachment from "../../becca/entities/battachment.js";
import markdownService from "./markdown.js";
import TaskContext from "../task_context.js";
import BNote from "../../becca/entities/bnote.js";
import NoteMeta from "../meta/note_meta.js";
import AttributeMeta from "../meta/attribute_meta.js";
import type NoteMeta from "../meta/note_meta.js";
import type AttributeMeta from "../meta/attribute_meta.js";
import { Stream } from "stream";
import { ALLOWED_NOTE_TYPES, NoteType } from "../../becca/entities/rows.js";
import { ALLOWED_NOTE_TYPES, type NoteType } from "../../becca/entities/rows.js";
interface MetaFile {
files: NoteMeta[];

View File

@@ -3,7 +3,7 @@
import optionService from "./options.js";
import log from "./log.js";
import { isElectron as getIsElectron, isMac as getIsMac } from "./utils.js";
import { KeyboardShortcut } from "./keyboard_actions_interface.js";
import type { KeyboardShortcut } from "./keyboard_actions_interface.js";
import { t } from "i18next";
const isMac = getIsMac();

View File

@@ -1,6 +1,6 @@
"use strict";
import { Request, Response } from "express";
import type { Request, Response } from "express";
import fs from "fs";
import dataDir from "./data_dir.js";
import cls from "./cls.js";

View File

@@ -1,4 +1,4 @@
interface AttachmentMeta {
export default interface AttachmentMeta {
attachmentId?: string;
title: string;
role: string;
@@ -6,5 +6,3 @@ interface AttachmentMeta {
position?: number;
dataFileName: string;
}
export default AttachmentMeta;

View File

@@ -1,6 +1,6 @@
import { AttributeType } from "../../becca/entities/rows.js";
import type { AttributeType } from "../../becca/entities/rows.js";
interface AttributeMeta {
export default interface AttributeMeta {
noteId?: string;
type: AttributeType;
name: string;
@@ -8,5 +8,3 @@ interface AttributeMeta {
isInheritable?: boolean;
position?: number;
}
export default AttributeMeta;

View File

@@ -1,7 +1,7 @@
import AttachmentMeta from "./attachment_meta.js";
import AttributeMeta from "./attribute_meta.js";
import type AttachmentMeta from "./attachment_meta.js";
import type AttributeMeta from "./attribute_meta.js";
interface NoteMeta {
export default interface NoteMeta {
noteId?: string;
notePath?: string[];
isClone?: boolean;
@@ -22,5 +22,3 @@ interface NoteMeta {
attachments?: AttachmentMeta[];
children?: NoteMeta[];
}
export default NoteMeta;

View File

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

View File

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

View File

@@ -14,8 +14,8 @@
import becca from "../becca/becca.js";
import BOption from "../becca/entities/boption.js";
import { OptionRow } from "../becca/entities/rows.js";
import { FilterOptionsByType, OptionDefinitions, OptionMap, OptionNames } from "./options_interface.js";
import type { OptionRow } from "../becca/entities/rows.js";
import type { FilterOptionsByType, OptionDefinitions, OptionMap, OptionNames } from "./options_interface.js";
import sql from "./sql.js";
function getOptionOrNull(name: OptionNames): string | null {

View File

@@ -5,7 +5,7 @@ import { randomSecureToken, isWindows } 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.js";
import type { KeyboardShortcutWithRequiredActionName } from "./keyboard_actions_interface.js";
function initDocumentOptions() {
optionService.createOption("documentId", randomSecureToken(16), false);

View File

@@ -1,4 +1,4 @@
import { KeyboardActionNames } from "./keyboard_actions_interface.js";
import type { KeyboardActionNames } from "./keyboard_actions_interface.js";
/**
* A dictionary where the keys are the option keys (e.g. `theme`) and their corresponding values.

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
"use strict";
import { NoteRow } from "../../../becca/entities/rows.js";
import type { NoteRow } from "../../../becca/entities/rows.js";
import SearchContext from "../search_context.js";
import Expression from "./expression.js";
@@ -58,7 +58,7 @@ class NoteContentFulltextExp extends Expression {
for (const row of sql.iterateRows<SearchRow>(`
SELECT noteId, type, mime, content, isProtected
FROM notes JOIN blobs USING (blobId)
FROM notes JOIN blobs USING (blobId)
WHERE type IN ('text', 'code', 'mermaid', 'canvas', 'mindMap') AND isDeleted = 0`)) {
this.findInText(row, inputNoteSet, resultNoteSet);
}

View File

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

View File

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

View File

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

View File

@@ -21,7 +21,7 @@ import { removeDiacritic } 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.js";
import type { TokenData, TokenStructure } from "./types.js";
import Expression from "../expressions/expression.js";
function getFulltext(_tokens: TokenData[], searchContext: SearchContext) {

View File

@@ -13,7 +13,7 @@ import log from "../../log.js";
import hoistedNoteService from "../../hoisted_note.js";
import BNote from "../../../becca/entities/bnote.js";
import BAttribute from "../../../becca/entities/battribute.js";
import { SearchParams, TokenStructure } from "./types.js";
import type { SearchParams, TokenStructure } from "./types.js";
import Expression from "../expressions/expression.js";
import sql from "../../sql.js";
import scriptService from "../../script.js";
@@ -122,12 +122,12 @@ function loadNeededInfoFromDatabase() {
length: number;
};
const noteContentLengths = sql.getRows<NoteContentLengthsRow>(`
SELECT
noteId,
SELECT
noteId,
blobId,
LENGTH(content) AS length
LENGTH(content) AS length
FROM notes
JOIN blobs USING(blobId)
JOIN blobs USING(blobId)
WHERE notes.isDeleted = 0`);
for (const { noteId, blobId, length } of noteContentLengths) {
@@ -155,7 +155,7 @@ function loadNeededInfoFromDatabase() {
FROM attachments
JOIN notes ON attachments.ownerId = notes.noteId
JOIN blobs ON attachments.blobId = blobs.blobId
WHERE attachments.isDeleted = 0
WHERE attachments.isDeleted = 0
AND notes.isDeleted = 0`);
for (const { noteId, blobId, length } of attachmentContentLengths) {
@@ -183,13 +183,13 @@ function loadNeededInfoFromDatabase() {
isNoteRevision: true;
};
const revisionContentLengths = sql.getRows<RevisionRow>(`
SELECT
noteId,
SELECT
noteId,
revisions.blobId,
LENGTH(content) AS length,
1 AS isNoteRevision
FROM notes
JOIN revisions USING(noteId)
JOIN revisions USING(noteId)
JOIN blobs ON revisions.blobId = blobs.blobId
WHERE notes.isDeleted = 0
UNION ALL

View File

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

View File

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

View File

@@ -17,8 +17,8 @@ import ws from "./ws.js";
import entityChangesService from "./entity_changes.js";
import entityConstructor from "../becca/entity_constructor.js";
import becca from "../becca/becca.js";
import { EntityChange, EntityChangeRecord, EntityRow } from "./entity_changes_interface.js";
import { CookieJar, ExecOpts } from "./request_interface.js";
import type { EntityChange, EntityChangeRecord, EntityRow } from "./entity_changes_interface.js";
import type { CookieJar, ExecOpts } from "./request_interface.js";
import setupService from "./setup.js";
import consistency_checks from "./consistency_checks.js";
import becca_loader from "../becca/becca_loader.js";

View File

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

View File

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

View File

@@ -8,7 +8,8 @@ import sqlInit from "./sql_init.js";
import cls from "./cls.js";
import keyboardActionsService from "./keyboard_actions.js";
import remoteMain from "@electron/remote/main/index.js";
import { App, BrowserWindow, BrowserWindowConstructorOptions, WebContents, ipcMain } from "electron";
import type { App, BrowserWindow, BrowserWindowConstructorOptions, WebContents } from "electron";
import { ipcMain } from "electron";
import { isMac, isWindows } from "./utils.js";
import { fileURLToPath } from "url";

View File

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