mirror of
https://github.com/zadam/trilium.git
synced 2025-11-04 20:36:13 +01:00
chore(monorepo/client): set up commons package
This commit is contained in:
24
packages/commons/package.json
Normal file
24
packages/commons/package.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "@triliumnext/commons",
|
||||
"version": "0.0.1",
|
||||
"description": "Shared library between the clients (e.g. browser, Electron) and the server, mostly for type definitions and utility methods.",
|
||||
"homepage": "https://github.com/TriliumNext/Notes#readme",
|
||||
"bugs": {
|
||||
"url": "https://github.com/TriliumNext/Notes/issues"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/TriliumNext/Notes.git"
|
||||
},
|
||||
"license": "AGPL-3.0-only",
|
||||
"author": {
|
||||
"name": "TriliumNext Notes Team",
|
||||
"email": "contact@eliandoran.me",
|
||||
"url": "https://github.com/TriliumNext/Notes"
|
||||
},
|
||||
"type": "module",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
}
|
||||
}
|
||||
119
packages/commons/src/keyboard_actions_interface.ts
Normal file
119
packages/commons/src/keyboard_actions_interface.ts
Normal file
@@ -0,0 +1,119 @@
|
||||
const enum KeyboardActionNamesEnum {
|
||||
backInNoteHistory,
|
||||
forwardInNoteHistory,
|
||||
jumpToNote,
|
||||
scrollToActiveNote,
|
||||
quickSearch,
|
||||
searchInSubtree,
|
||||
expandSubtree,
|
||||
collapseTree,
|
||||
collapseSubtree,
|
||||
sortChildNotes,
|
||||
createNoteAfter,
|
||||
createNoteInto,
|
||||
createNoteIntoInbox,
|
||||
deleteNotes,
|
||||
moveNoteUp,
|
||||
moveNoteDown,
|
||||
moveNoteUpInHierarchy,
|
||||
moveNoteDownInHierarchy,
|
||||
editNoteTitle,
|
||||
editBranchPrefix,
|
||||
cloneNotesTo,
|
||||
moveNotesTo,
|
||||
copyNotesToClipboard,
|
||||
pasteNotesFromClipboard,
|
||||
cutNotesToClipboard,
|
||||
selectAllNotesInParent,
|
||||
addNoteAboveToSelection,
|
||||
addNoteBelowToSelection,
|
||||
duplicateSubtree,
|
||||
openNewTab,
|
||||
closeActiveTab,
|
||||
reopenLastTab,
|
||||
activateNextTab,
|
||||
activatePreviousTab,
|
||||
openNewWindow,
|
||||
toggleTray,
|
||||
toggleZenMode,
|
||||
firstTab,
|
||||
secondTab,
|
||||
thirdTab,
|
||||
fourthTab,
|
||||
fifthTab,
|
||||
sixthTab,
|
||||
seventhTab,
|
||||
eigthTab,
|
||||
ninthTab,
|
||||
lastTab,
|
||||
showNoteSource,
|
||||
showOptions,
|
||||
showRevisions,
|
||||
showRecentChanges,
|
||||
showSQLConsole,
|
||||
showBackendLog,
|
||||
showCheatsheet,
|
||||
showHelp,
|
||||
addLinkToText,
|
||||
followLinkUnderCursor,
|
||||
insertDateTimeToText,
|
||||
pasteMarkdownIntoText,
|
||||
cutIntoNote,
|
||||
addIncludeNoteToText,
|
||||
editReadOnlyNote,
|
||||
addNewLabel,
|
||||
addNewRelation,
|
||||
toggleRibbonTabClassicEditor,
|
||||
toggleRibbonTabBasicProperties,
|
||||
toggleRibbonTabBookProperties,
|
||||
toggleRibbonTabFileProperties,
|
||||
toggleRibbonTabImageProperties,
|
||||
toggleRibbonTabOwnedAttributes,
|
||||
toggleRibbonTabInheritedAttributes,
|
||||
toggleRibbonTabPromotedAttributes,
|
||||
toggleRibbonTabNoteMap,
|
||||
toggleRibbonTabNoteInfo,
|
||||
toggleRibbonTabNotePaths,
|
||||
toggleRibbonTabSimilarNotes,
|
||||
toggleRightPane,
|
||||
printActiveNote,
|
||||
exportAsPdf,
|
||||
openNoteExternally,
|
||||
renderActiveNote,
|
||||
runActiveNote,
|
||||
toggleNoteHoisting,
|
||||
unhoist,
|
||||
reloadFrontendApp,
|
||||
openDevTools,
|
||||
findInText,
|
||||
toggleLeftPane,
|
||||
toggleFullscreen,
|
||||
zoomOut,
|
||||
zoomIn,
|
||||
zoomReset,
|
||||
copyWithoutFormatting,
|
||||
forceSaveRevision
|
||||
}
|
||||
|
||||
export type KeyboardActionNames = keyof typeof KeyboardActionNamesEnum;
|
||||
|
||||
export interface KeyboardShortcut {
|
||||
separator?: string;
|
||||
actionName?: KeyboardActionNames;
|
||||
description?: string;
|
||||
defaultShortcuts?: string[];
|
||||
effectiveShortcuts?: string[];
|
||||
/**
|
||||
* Scope here means on which element the keyboard shortcuts are attached - this means that for the shortcut to work,
|
||||
* the focus has to be inside the element.
|
||||
*
|
||||
* So e.g. shortcuts with "note-tree" scope work only when the focus is in note tree.
|
||||
* This allows to have the same shortcut have different actions attached based on the context
|
||||
* e.g. CTRL-C in note tree does something a bit different from CTRL-C in the text editor.
|
||||
*/
|
||||
scope?: "window" | "note-tree" | "text-detail" | "code-detail";
|
||||
}
|
||||
|
||||
export interface KeyboardShortcutWithRequiredActionName extends KeyboardShortcut {
|
||||
actionName: KeyboardActionNames;
|
||||
}
|
||||
164
packages/commons/src/options_interface.ts
Normal file
164
packages/commons/src/options_interface.ts
Normal file
@@ -0,0 +1,164 @@
|
||||
import type { KeyboardActionNames } from "./keyboard_actions_interface.js";
|
||||
|
||||
/**
|
||||
* A dictionary where the keys are the option keys (e.g. `theme`) and their corresponding values.
|
||||
*/
|
||||
export type OptionMap = Record<OptionNames, string>;
|
||||
|
||||
/**
|
||||
* For each keyboard action, there is a corresponding option which identifies the key combination defined by the user.
|
||||
*/
|
||||
type KeyboardShortcutsOptions<T extends KeyboardActionNames> = {
|
||||
[key in T as `keyboardShortcuts${Capitalize<key>}`]: string;
|
||||
};
|
||||
|
||||
export type FontFamily = "theme" | "serif" | "sans-serif" | "monospace" | string;
|
||||
|
||||
export interface OptionDefinitions extends KeyboardShortcutsOptions<KeyboardActionNames> {
|
||||
openNoteContexts: string;
|
||||
lastDailyBackupDate: string;
|
||||
lastWeeklyBackupDate: string;
|
||||
lastMonthlyBackupDate: string;
|
||||
dbVersion: string;
|
||||
theme: string;
|
||||
syncServerHost: string;
|
||||
syncServerTimeout: string;
|
||||
syncProxy: string;
|
||||
mainFontFamily: FontFamily;
|
||||
treeFontFamily: FontFamily;
|
||||
detailFontFamily: FontFamily;
|
||||
monospaceFontFamily: FontFamily;
|
||||
spellCheckLanguageCode: string;
|
||||
codeNotesMimeTypes: string;
|
||||
headingStyle: string;
|
||||
highlightsList: string;
|
||||
customSearchEngineName: string;
|
||||
customSearchEngineUrl: string;
|
||||
locale: string;
|
||||
formattingLocale: string;
|
||||
codeBlockTheme: string;
|
||||
textNoteEditorType: string;
|
||||
layoutOrientation: string;
|
||||
allowedHtmlTags: string;
|
||||
documentId: string;
|
||||
documentSecret: string;
|
||||
passwordVerificationHash: string;
|
||||
passwordVerificationSalt: string;
|
||||
passwordDerivedKeySalt: string;
|
||||
encryptedDataKey: string;
|
||||
hoistedNoteId: string;
|
||||
|
||||
// Multi-Factor Authentication
|
||||
mfaEnabled: boolean;
|
||||
mfaMethod: string;
|
||||
totpEncryptionSalt: string;
|
||||
totpEncryptedSecret: string;
|
||||
totpVerificationHash: string;
|
||||
encryptedRecoveryCodes: boolean;
|
||||
userSubjectIdentifierSaved: boolean;
|
||||
recoveryCodeInitialVector: string;
|
||||
recoveryCodeSecurityKey: string;
|
||||
recoveryCodesEncrypted: string;
|
||||
|
||||
lastSyncedPull: number;
|
||||
lastSyncedPush: number;
|
||||
revisionSnapshotTimeInterval: number;
|
||||
revisionSnapshotTimeIntervalTimeScale: number;
|
||||
revisionSnapshotNumberLimit: number;
|
||||
protectedSessionTimeout: number;
|
||||
protectedSessionTimeoutTimeScale: number;
|
||||
zoomFactor: number;
|
||||
mainFontSize: number;
|
||||
treeFontSize: number;
|
||||
detailFontSize: number;
|
||||
monospaceFontSize: number;
|
||||
imageMaxWidthHeight: number;
|
||||
imageJpegQuality: number;
|
||||
leftPaneWidth: number;
|
||||
rightPaneWidth: number;
|
||||
eraseEntitiesAfterTimeInSeconds: number;
|
||||
eraseEntitiesAfterTimeScale: number;
|
||||
autoReadonlySizeText: number;
|
||||
autoReadonlySizeCode: number;
|
||||
maxContentWidth: number;
|
||||
minTocHeadings: number;
|
||||
eraseUnusedAttachmentsAfterSeconds: number;
|
||||
eraseUnusedAttachmentsAfterTimeScale: number;
|
||||
firstDayOfWeek: number;
|
||||
firstWeekOfYear: number;
|
||||
minDaysInFirstWeek: number;
|
||||
languages: string;
|
||||
|
||||
// Appearance
|
||||
splitEditorOrientation: "horziontal" | "vertical";
|
||||
|
||||
initialized: boolean;
|
||||
isPasswordSet: boolean;
|
||||
overrideThemeFonts: boolean;
|
||||
spellCheckEnabled: boolean;
|
||||
autoFixConsistencyIssues: boolean;
|
||||
vimKeymapEnabled: boolean;
|
||||
codeLineWrapEnabled: boolean;
|
||||
leftPaneVisible: boolean;
|
||||
rightPaneVisible: boolean;
|
||||
nativeTitleBarVisible: boolean;
|
||||
hideArchivedNotes_main: boolean;
|
||||
debugModeEnabled: boolean;
|
||||
autoCollapseNoteTree: boolean;
|
||||
dailyBackupEnabled: boolean;
|
||||
weeklyBackupEnabled: boolean;
|
||||
monthlyBackupEnabled: boolean;
|
||||
compressImages: boolean;
|
||||
downloadImagesAutomatically: boolean;
|
||||
checkForUpdates: boolean;
|
||||
disableTray: boolean;
|
||||
promotedAttributesOpenInRibbon: boolean;
|
||||
editedNotesOpenInRibbon: boolean;
|
||||
codeBlockWordWrap: boolean;
|
||||
textNoteEditorMultilineToolbar: boolean;
|
||||
backgroundEffects: boolean;
|
||||
|
||||
// Share settings
|
||||
redirectBareDomain: boolean;
|
||||
showLoginInShareTheme: boolean;
|
||||
|
||||
// AI/LLM integration options
|
||||
aiEnabled: boolean;
|
||||
aiProvider: string;
|
||||
aiSystemPrompt: string;
|
||||
aiTemperature: string;
|
||||
openaiApiKey: string;
|
||||
openaiDefaultModel: string;
|
||||
openaiEmbeddingModel: string;
|
||||
openaiBaseUrl: string;
|
||||
anthropicApiKey: string;
|
||||
anthropicDefaultModel: string;
|
||||
voyageEmbeddingModel: string;
|
||||
voyageApiKey: string;
|
||||
anthropicBaseUrl: string;
|
||||
ollamaEnabled: boolean;
|
||||
ollamaBaseUrl: string;
|
||||
ollamaDefaultModel: string;
|
||||
ollamaEmbeddingModel: string;
|
||||
codeOpenAiModel: string;
|
||||
aiProviderPrecedence: string;
|
||||
|
||||
// Embedding-related options
|
||||
embeddingAutoUpdateEnabled: boolean;
|
||||
embeddingUpdateInterval: number;
|
||||
embeddingBatchSize: number;
|
||||
embeddingDefaultDimension: number;
|
||||
embeddingsDefaultProvider: string;
|
||||
embeddingProviderPrecedence: string;
|
||||
enableAutomaticIndexing: boolean;
|
||||
embeddingGenerationLocation: string;
|
||||
embeddingDimensionStrategy: string;
|
||||
embeddingSimilarityThreshold: number;
|
||||
maxNotesPerLlmQuery: number;
|
||||
}
|
||||
|
||||
export type OptionNames = keyof OptionDefinitions;
|
||||
|
||||
export type FilterOptionsByType<U> = {
|
||||
[K in keyof OptionDefinitions]: OptionDefinitions[K] extends U ? K : never;
|
||||
}[keyof OptionDefinitions];
|
||||
Reference in New Issue
Block a user