SYMBOL INDEX (669 symbols across 108 files) FILE: scripts/api-generate.js function generateApi (line 9) | async function generateApi() { FILE: scripts/bench-load-test.js function getErrorMessage (line 6) | function getErrorMessage(error) { function parseArgs (line 22) | function parseArgs(argv) { function requestJson (line 75) | async function requestJson(baseUrl, pathname, options) { function measure (line 107) | async function measure(name, callback) { function formatDuration (line 118) | function formatDuration(duration) { function printMetrics (line 122) | function printMetrics(metrics) { function createSnippet (line 136) | async function createSnippet(baseUrl, name) { function createSnippetContent (line 148) | async function createSnippetContent(baseUrl, snippetId, label, value) { function deleteSnippet (line 162) | async function deleteSnippet(baseUrl, snippetId) { function getSnippets (line 173) | async function getSnippets(baseUrl, query) { function resetStorageCache (line 193) | async function resetStorageCache(baseUrl) { function main (line 199) | async function main() { FILE: scripts/bench-seed.js constant ALLOWED_SNIPPETS (line 6) | const ALLOWED_SNIPPETS = [1000, 5000, 10000] constant ALLOWED_FRAGMENTS (line 7) | const ALLOWED_FRAGMENTS = [3, 4] constant DEFAULT_BASE_URL (line 8) | const DEFAULT_BASE_URL constant DEFAULT_CONCURRENCY (line 10) | const DEFAULT_CONCURRENCY = 6 constant DEFAULT_PREFIX (line 11) | const DEFAULT_PREFIX = 'seed' function getErrorMessage (line 13) | function getErrorMessage(error) { function parseInteger (line 29) | function parseInteger(value, fallback) { function parseArgs (line 40) | function parseArgs(argv) { function printHelp (line 116) | function printHelp() { function validateProfile (line 136) | function validateProfile(profile) { function parseProfile (line 150) | function parseProfile(value) { function resolveProfiles (line 167) | function resolveProfiles(options) { function normalizeBaseUrl (line 202) | function normalizeBaseUrl(value) { function requestJson (line 206) | async function requestJson(baseUrl, pathname, options) { function createSnippet (line 233) | async function createSnippet(baseUrl, name) { function createSnippetContent (line 245) | async function createSnippetContent(baseUrl, snippetId, label, value) { function formatDuration (line 259) | function formatDuration(durationMs) { function buildSnippetName (line 272) | function buildSnippetName(options, profile, snippetIndex) { function buildFragmentBody (line 282) | function buildFragmentBody(options, profile, snippetIndex, fragmentIndex) { function runProfile (line 301) | async function runProfile(baseUrl, options, profile) { function main (line 386) | async function main() { FILE: scripts/copy-locales.js function copyDirRecursive (line 8) | function copyDirRecursive(sourceDir, targetDir) { FILE: src/main/api/dto/folders.ts type FoldersAdd (line 46) | type FoldersAdd = typeof foldersAdd.static type FoldersResponse (line 47) | type FoldersResponse = typeof foldersResponse.static type FoldersTree (line 48) | type FoldersTree = typeof foldersTreeResponse.static type FoldersItem (line 49) | type FoldersItem = typeof foldersItem.static FILE: src/main/api/dto/snippet-contents.ts type SnippetContentsAdd (line 14) | type SnippetContentsAdd = typeof snippetContentsAdd.static FILE: src/main/api/dto/snippets.ts type SnippetsAdd (line 83) | type SnippetsAdd = typeof snippetsAdd.static type SnippetsResponse (line 84) | type SnippetsResponse = typeof snippetsResponse.static type SnippetsCountsResponse (line 85) | type SnippetsCountsResponse = typeof snippetsCountsResponse.static FILE: src/main/api/dto/tags.ts type TagsAdd (line 23) | type TagsAdd = typeof tagsAdd.static type TagsResponse (line 24) | type TagsResponse = typeof tagsResponse.static FILE: src/main/api/index.ts function initApi (line 12) | async function initApi() { FILE: src/main/api/routes/folders.ts function parseStorageError (line 9) | function parseStorageError( function mapStorageError (line 27) | function mapStorageError(status: unknown, error: unknown): never { FILE: src/main/api/routes/snippets.ts function parseStorageError (line 9) | function parseStorageError( function mapStorageError (line 27) | function mapStorageError(status: unknown, error: unknown): never { FILE: src/main/currencyRates.ts constant CACHE_TTL (line 3) | const CACHE_TTL = 1000 * 60 * 60 type CurrencyRatesApiResponse (line 5) | interface CurrencyRatesApiResponse { type CurrencyRatesPayload (line 11) | interface CurrencyRatesPayload { function normalizeRates (line 17) | function normalizeRates(rates: Record) { function getCurrencyRates (line 31) | async function getCurrencyRates(): Promise { FILE: src/main/db/index.ts constant DB_NAME (line 10) | const DB_NAME = 'massCode.db' function isSqliteStorageEngine (line 16) | function isSqliteStorageEngine(): boolean { function isSqliteFile (line 20) | function isSqliteFile(dbPath: string): boolean { function tableExists (line 33) | function tableExists(db: Database.Database, table: string): boolean { function useDB (line 46) | function useDB() { function reloadDB (line 154) | function reloadDB() { function clearDB (line 185) | function clearDB() { function moveDB (line 219) | async function moveDB(path: string) { function createBackup (line 246) | async function createBackup(manual = false) { function cleanupOldBackups (line 278) | async function cleanupOldBackups() { function deleteBackup (line 307) | async function deleteBackup(backupPath: string) { function shouldCreateBackup (line 311) | function shouldCreateBackup() { function startAutoBackup (line 334) | async function startAutoBackup() { function stopAutoBackup (line 373) | function stopAutoBackup() { function restoreFromBackup (line 380) | async function restoreFromBackup(backupFilePath: string) { function getBackupList (line 408) | async function getBackupList() { function moveBackupStorage (line 446) | async function moveBackupStorage(newPath: string) { FILE: src/main/db/migrate.ts function migrateJsonToSqlite (line 5) | function migrateJsonToSqlite(jsonData: JSONDB) { FILE: src/main/db/types/index.ts type Folder (line 1) | interface Folder { type SnippetContent (line 14) | interface SnippetContent { type Snippet (line 20) | interface Snippet { type Tag (line 33) | interface Tag { type JSONDB (line 40) | interface JSONDB { type Backup (line 46) | interface Backup { FILE: src/main/index.ts constant SQLITE_SUNSET_VERSION (line 25) | const SQLITE_SUNSET_VERSION = '5.0.0' function shouldShowFeatureNotice (line 27) | function shouldShowFeatureNotice(): boolean { function showFeatureNotice (line 42) | function showFeatureNotice() { function createWindow (line 65) | function createWindow() { FILE: src/main/ipc/handlers/db.ts function assertSqliteEngine (line 24) | function assertSqliteEngine(action: string): void { function registerDBHandlers (line 32) | function registerDBHandlers() { FILE: src/main/ipc/handlers/dialog.ts function registerDialogHandlers (line 4) | function registerDialogHandlers() { FILE: src/main/ipc/handlers/fs.ts constant ASSETS_DIR (line 9) | const ASSETS_DIR = 'assets' function registerFsHandlers (line 11) | function registerFsHandlers() { FILE: src/main/ipc/handlers/prettier.ts function format (line 6) | async function format(source: string, parser: string) { function registerPrettierHandlers (line 18) | function registerPrettierHandlers() { FILE: src/main/ipc/handlers/spaces.ts function getVaultPath (line 13) | function getVaultPath(): string | null { function isMarkdownEngine (line 17) | function isMarkdownEngine(): boolean { function registerSpacesHandlers (line 21) | function registerSpacesHandlers() { FILE: src/main/ipc/handlers/system.ts function registerSystemHandlers (line 4) | function registerSystemHandlers() { FILE: src/main/ipc/handlers/theme.ts constant THEMES_ROOT_DIR (line 20) | const THEMES_ROOT_DIR = path.join(homedir(), '.massCode') constant THEMES_DIR (line 21) | const THEMES_DIR = path.join(THEMES_ROOT_DIR, 'themes') constant THEME_FILE_EXT (line 22) | const THEME_FILE_EXT = '.json' constant THEME_CHANGED_DEBOUNCE_MS (line 23) | const THEME_CHANGED_DEBOUNCE_MS = 250 constant THEME_TEMPLATE_BASE_NAME (line 24) | const THEME_TEMPLATE_BASE_NAME = 'new-theme' constant THEME_TEMPLATE (line 25) | const THEME_TEMPLATE: ThemeFile = { constant TOKEN_MIGRATION_MAP (line 61) | const TOKEN_MIGRATION_MAP: Record = { constant DROPPED_TOKENS (line 74) | const DROPPED_TOKENS = new Set(['color-button-hover']) type ChokidarWatch (line 83) | type ChokidarWatch = ( function getChokidarWatch (line 88) | async function getChokidarWatch(): Promise { function ensureThemesDir (line 117) | function ensureThemesDir(): string { function reportThemeIssue (line 122) | function reportThemeIssue( function isThemeType (line 143) | function isThemeType(value: unknown): value is ThemeType { function isStringRecord (line 147) | function isStringRecord(value: unknown): value is Record { function parseThemeFile (line 155) | function parseThemeFile(raw: unknown, fileName: string): ThemeFile | null { function normalizeThemeId (line 205) | function normalizeThemeId(id: string): string | null { function resolveThemeFilePath (line 227) | function resolveThemeFilePath(id: string): string | null { function migrateThemeColors (line 245) | function migrateThemeColors(colors: Record): { function readThemeFromFile (line 272) | function readThemeFromFile( function listThemes (line 314) | function listThemes(): ThemeListItem[] { function getTheme (line 354) | function getTheme(id: string): ThemeFile | null { function openThemesDir (line 364) | async function openThemesDir(): Promise { function resolveThemeTemplatePath (line 373) | function resolveThemeTemplatePath(): string { function createThemeTemplate (line 392) | function createThemeTemplate(): string { function scheduleThemeChanged (line 401) | function scheduleThemeChanged(): void { function stopThemeWatcher (line 414) | function stopThemeWatcher(): void { function startThemeWatcher (line 430) | function startThemeWatcher(): void { function registerThemeHandlers (line 483) | function registerThemeHandlers() { FILE: src/main/ipc/index.ts function send (line 11) | function send(channel: Channel, payload?: unknown) { function registerIPC (line 15) | function registerIPC() { FILE: src/main/menu/main.ts function aboutApp (line 22) | function aboutApp() { FILE: src/main/menu/utils/index.ts type Platform (line 5) | type Platform = 'darwin' | 'win32' type MenuConfig (line 7) | interface MenuConfig extends MenuItemConstructorOptions { function createPlatformMenuItems (line 11) | function createPlatformMenuItems( function createMenu (line 25) | function createMenu(template: MenuItemConstructorOptions[]) { FILE: src/main/storage/contracts.ts type TagRecord (line 1) | interface TagRecord { type FolderRecord (line 6) | interface FolderRecord { type FolderTreeRecord (line 18) | interface FolderTreeRecord extends FolderRecord { type FolderCreateInput (line 22) | interface FolderCreateInput { type FolderUpdateInput (line 27) | interface FolderUpdateInput { type FolderUpdateResult (line 36) | interface FolderUpdateResult { type FoldersStorage (line 41) | interface FoldersStorage { type SnippetTagRecord (line 49) | interface SnippetTagRecord { type SnippetFolderRecord (line 54) | interface SnippetFolderRecord { type SnippetContentRecord (line 59) | interface SnippetContentRecord { type SnippetRecord (line 66) | interface SnippetRecord { type SnippetsQueryInput (line 79) | interface SnippetsQueryInput { type SnippetCreateInput (line 89) | interface SnippetCreateInput { type SnippetUpdateInput (line 94) | interface SnippetUpdateInput { type SnippetContentCreateInput (line 102) | interface SnippetContentCreateInput { type SnippetContentUpdateInput (line 108) | interface SnippetContentUpdateInput { type SnippetUpdateResult (line 114) | interface SnippetUpdateResult { type SnippetContentUpdateResult (line 119) | interface SnippetContentUpdateResult { type SnippetTagRelationResult (line 125) | interface SnippetTagRelationResult { type SnippetTagDeleteRelationResult (line 131) | interface SnippetTagDeleteRelationResult { type SnippetsCount (line 138) | interface SnippetsCount { type SnippetsStorage (line 143) | interface SnippetsStorage { type TagsStorage (line 170) | interface TagsStorage { type StorageProvider (line 176) | interface StorageProvider { FILE: src/main/storage/index.ts function resolveProvider (line 14) | function resolveProvider(engine: string): StorageProvider { function useStorage (line 36) | function useStorage(): StorageProvider { FILE: src/main/storage/providers/markdown/migrations.ts function clearVaultForMigration (line 36) | function clearVaultForMigration(paths: Paths): void { constant RESERVED_ROOT_FOLDER_NAMES (line 54) | const RESERVED_ROOT_FOLDER_NAMES = new Set(['.masscode', 'inbox', 'trash']) function removeControlChars (line 56) | function removeControlChars(value: string): string { function sanitizeEntryNameForMigration (line 60) | function sanitizeEntryNameForMigration( function getUniqueFolderName (line 88) | function getUniqueFolderName( function normalizeFoldersForMigration (line 127) | function normalizeFoldersForMigration(folders: FolderRecord[]): FolderRe... function appendSnippetNameSuffix (line 162) | function appendSnippetNameSuffix(name: string, suffix: number): string { function resolveUniqueSnippetPathForMigration (line 172) | function resolveUniqueSnippetPathForMigration( function migrateSqliteToMarkdownStorage (line 212) | function migrateSqliteToMarkdownStorage(): { function migrateMarkdownToSqliteStorage (line 383) | function migrateMarkdownToSqliteStorage(): { FILE: src/main/storage/providers/markdown/runtime/constants.ts constant META_DIR_NAME (line 3) | const META_DIR_NAME = '.masscode' constant STATE_FILE_NAME (line 4) | const STATE_FILE_NAME = 'state.json' constant INBOX_DIR_NAME (line 5) | const INBOX_DIR_NAME = 'inbox' constant TRASH_DIR_NAME (line 6) | const TRASH_DIR_NAME = 'trash' constant SPACES_DIR_NAME (line 7) | const SPACES_DIR_NAME = '__spaces__' constant META_FILE_NAME (line 8) | const META_FILE_NAME = '.meta.yaml' constant SPACE_STATE_FILE_NAME (line 9) | const SPACE_STATE_FILE_NAME = '.state.yaml' constant LEGACY_FOLDER_META_FILE_NAME (line 10) | const LEGACY_FOLDER_META_FILE_NAME = '.masscode-folder.yml' constant INBOX_RELATIVE_PATH (line 12) | const INBOX_RELATIVE_PATH = `${META_DIR_NAME}/${INBOX_DIR_NAME}` constant TRASH_RELATIVE_PATH (line 13) | const TRASH_RELATIVE_PATH = `${META_DIR_NAME}/${TRASH_DIR_NAME}` constant LEGACY_INBOX_RELATIVE_PATH (line 14) | const LEGACY_INBOX_RELATIVE_PATH = INBOX_DIR_NAME constant LEGACY_TRASH_RELATIVE_PATH (line 15) | const LEGACY_TRASH_RELATIVE_PATH = TRASH_DIR_NAME constant RESERVED_ROOT_NAMES (line 17) | const RESERVED_ROOT_NAMES = new Set([ constant NEW_LINE_SPLIT_RE (line 22) | const NEW_LINE_SPLIT_RE = /\r?\n/ constant SEARCH_DIACRITICS_RE (line 23) | const SEARCH_DIACRITICS_RE = /[\u0300-\u036F]/g constant SEARCH_WORD_RE (line 24) | const SEARCH_WORD_RE = /[\p{L}\p{N}_]+/gu constant STATE_WRITE_DEBOUNCE_MS (line 25) | const STATE_WRITE_DEBOUNCE_MS = 100 constant INVALID_NAME_CHARS_RE (line 26) | const INVALID_NAME_CHARS_RE = /[<>:"/\\|?*]/g constant INVALID_NAME_CHARS (line 27) | const INVALID_NAME_CHARS = new Set([ constant WINDOWS_RESERVED_NAME_RE (line 38) | const WINDOWS_RESERVED_NAME_RE function peekRuntimeCache (line 50) | function peekRuntimeCache(): MarkdownRuntimeCache | null { FILE: src/main/storage/providers/markdown/runtime/normalizers.ts function normalizeNumber (line 4) | function normalizeNumber(value: unknown, fallback = 0): number { function normalizeFlag (line 9) | function normalizeFlag(value: unknown, fallback = 0): number { function normalizePositiveInteger (line 13) | function normalizePositiveInteger(value: unknown): number | null { function normalizeNullableNumber (line 23) | function normalizeNullableNumber(value: unknown): number | null { function normalizeErrorMessage (line 32) | function normalizeErrorMessage(error: unknown): string { function normalizeFolderUiState (line 40) | function normalizeFolderUiState( function normalizeFolderOrderIndices (line 65) | function normalizeFolderOrderIndices(folders: FolderRecord[]): void { FILE: src/main/storage/providers/markdown/runtime/parser.ts function readYamlObjectFile (line 18) | function readYamlObjectFile(filePath: string): T | null { function writeYamlObjectFile (line 38) | function writeYamlObjectFile( function readFolderMetadata (line 54) | function readFolderMetadata( function serializeFolderMetadata (line 92) | function serializeFolderMetadata( function writeFolderMetadataFile (line 106) | function writeFolderMetadataFile( function splitFrontmatter (line 147) | function splitFrontmatter(source: string): { function parseBodyFragments (line 168) | function parseBodyFragments(body: string): MarkdownBodyFragment[] { function serializeSnippet (line 219) | function serializeSnippet(snippet: MarkdownSnippet): string { FILE: src/main/storage/providers/markdown/runtime/paths.ts function getVaultPath (line 12) | function getVaultPath(): string { function getPaths (line 26) | function getPaths(vaultPath: string): Paths { function toPosixPath (line 38) | function toPosixPath(filePath: string): string { function depthOfRelativePath (line 42) | function depthOfRelativePath(relativePath: string): number { function normalizeDirectoryPath (line 50) | function normalizeDirectoryPath(relativePath: string): string { function buildFolderPathMap (line 58) | function buildFolderPathMap(state: MarkdownState): Map { function buildPathToFolderIdMap (line 99) | function buildPathToFolderIdMap( function findFolderById (line 112) | function findFolderById( function getFolderPathById (line 140) | function getFolderPathById( function getFolderSiblings (line 148) | function getFolderSiblings( function getNextFolderOrder (line 166) | function getNextFolderOrder( FILE: src/main/storage/providers/markdown/runtime/search.ts function normalizeSearchValue (line 4) | function normalizeSearchValue(value: string | null | undefined): string { function splitSearchWords (line 15) | function splitSearchWords(value: string): string[] { function createWordTrigrams (line 19) | function createWordTrigrams(value: string): string[] { function buildSearchTokens (line 32) | function buildSearchTokens(normalizedText: string): string[] { function getSnippetSearchText (line 46) | function getSnippetSearchText(snippet: MarkdownSnippet): string { function buildSearchIndex (line 56) | function buildSearchIndex(snippets: MarkdownSnippet[]): { function invalidateRuntimeSearchIndex (line 87) | function invalidateRuntimeSearchIndex(state: { version: number }): void { function ensureRuntimeSearchIndex (line 97) | function ensureRuntimeSearchIndex( function intersectSnippetIdSets (line 126) | function intersectSnippetIdSets( function getSnippetIdsBySearchQuery (line 145) | function getSnippetIdsBySearchQuery( FILE: src/main/storage/providers/markdown/runtime/snippets.ts function isInboxSnippetDirectory (line 38) | function isInboxSnippetDirectory(directoryPath: string): boolean { function isTrashSnippetDirectory (line 46) | function isTrashSnippetDirectory(directoryPath: string): boolean { function listMarkdownFiles (line 53) | function listMarkdownFiles( function readFrontmatterIdFromSnippetFile (line 99) | function readFrontmatterIdFromSnippetFile( function readSnippetFromFile (line 113) | function readSnippetFromFile( function loadSnippets (line 196) | function loadSnippets( function writeSnippetToFile (line 207) | function writeSnippetToFile( function upsertSnippetIndex (line 226) | function upsertSnippetIndex( function getSnippetTargetDirectory (line 243) | function getSnippetTargetDirectory( function buildSnippetTargetPath (line 259) | function buildSnippetTargetPath( function getCachedDirectoryEntries (line 269) | function getCachedDirectoryEntries( function removeDirectoryEntryFromCache (line 287) | function removeDirectoryEntryFromCache( function upsertDirectoryEntryInCache (line 309) | function upsertDirectoryEntryInCache( function assertSnippetPathAvailable (line 329) | function assertSnippetPathAvailable( function getUniqueSnippetPath (line 364) | function getUniqueSnippetPath( function persistSnippet (line 422) | function persistSnippet( function createSnippetRecord (line 482) | function createSnippetRecord( function findSnippetById (line 525) | function findSnippetById( function findSnippetByContentId (line 553) | function findSnippetByContentId( function getStateSnippetIndexByFilePath (line 599) | function getStateSnippetIndexByFilePath( FILE: src/main/storage/providers/markdown/runtime/spaceState.ts function readSpaceState (line 11) | function readSpaceState(statePath: string): T | null { function serializeToYaml (line 49) | function serializeToYaml(data: unknown): string { function flushSpaceStateWrite (line 57) | function flushSpaceStateWrite(statePath: string): void { function scheduleSpaceStateFlush (line 79) | function scheduleSpaceStateFlush(statePath: string): void { function writeSpaceState (line 92) | function writeSpaceState(statePath: string, data: unknown): void { function writeSpaceStateImmediate (line 98) | function writeSpaceStateImmediate( FILE: src/main/storage/providers/markdown/runtime/spaces.ts function getSpaceDirPath (line 5) | function getSpaceDirPath(vaultPath: string, spaceId: string): string { function ensureSpaceDirectory (line 9) | function ensureSpaceDirectory( function getSpaceStatePath (line 18) | function getSpaceStatePath(vaultPath: string, spaceId: string): string { FILE: src/main/storage/providers/markdown/runtime/state.ts function createDefaultState (line 22) | function createDefaultState(): MarkdownState { function syncFolderUiWithFolders (line 38) | function syncFolderUiWithFolders(state: MarkdownState): void { function getPersistedStateContent (line 51) | function getPersistedStateContent(statePath: string): string { function flushPendingStateWriteByPath (line 65) | function flushPendingStateWriteByPath(statePath: string): void { function scheduleStateFlush (line 87) | function scheduleStateFlush(statePath: string): void { function flushPendingStateWrite (line 100) | function flushPendingStateWrite(paths: Paths): void { function flushPendingStateWrites (line 104) | function flushPendingStateWrites(): void { function registerStateWriteHooks (line 111) | function registerStateWriteHooks(): void { function ensureStateFile (line 121) | function ensureStateFile(paths: Paths): void { function loadState (line 136) | function loadState(paths: Paths): MarkdownState { function saveState (line 168) | function saveState( FILE: src/main/storage/providers/markdown/runtime/sync.ts function isTechnicalRootFolder (line 51) | function isTechnicalRootFolder(name: string): boolean { function listUserFolders (line 60) | function listUserFolders( function syncFoldersWithDisk (line 95) | function syncFoldersWithDisk(paths: Paths, state: MarkdownState): void { function syncFolderMetadataFiles (line 213) | function syncFolderMetadataFiles( function syncCounters (line 229) | function syncCounters( function syncStateWithDisk (line 260) | function syncStateWithDisk(paths: Paths): MarkdownState { function setRuntimeCache (line 300) | function setRuntimeCache( function resetRuntimeCache (line 351) | function resetRuntimeCache(): void { function syncRuntimeWithDisk (line 356) | function syncRuntimeWithDisk(paths: Paths): MarkdownRuntimeCache { function getRuntimeCache (line 363) | function getRuntimeCache(paths: Paths): MarkdownRuntimeCache { function syncSnippetFileWithDisk (line 374) | function syncSnippetFileWithDisk( FILE: src/main/storage/providers/markdown/runtime/types.ts type MarkdownTagState (line 3) | interface MarkdownTagState extends TagRecord { type MarkdownSnippetIndexItem (line 8) | interface MarkdownSnippetIndexItem { type MarkdownFolderMetadataFile (line 13) | interface MarkdownFolderMetadataFile { type MarkdownFolderDiskEntry (line 25) | interface MarkdownFolderDiskEntry { type MarkdownFolderUIState (line 30) | interface MarkdownFolderUIState { type MarkdownStateFile (line 34) | interface MarkdownStateFile { type MarkdownState (line 48) | interface MarkdownState { type MarkdownFrontmatterContent (line 62) | interface MarkdownFrontmatterContent { type MarkdownSnippetFrontmatter (line 68) | interface MarkdownSnippetFrontmatter { type MarkdownBodyFragment (line 81) | interface MarkdownBodyFragment { type MarkdownSnippet (line 87) | interface MarkdownSnippet { type MarkdownRuntimeCache (line 106) | interface MarkdownRuntimeCache { type SaveStateOptions (line 126) | interface SaveStateOptions { type SqliteSnippetRow (line 130) | interface SqliteSnippetRow { type SqliteSnippetContentRow (line 141) | interface SqliteSnippetContentRow { type SqliteSnippetTagRow (line 149) | interface SqliteSnippetTagRow { type Paths (line 154) | interface Paths { type MarkdownErrorCode (line 162) | type MarkdownErrorCode = type DirectoryEntriesCache (line 169) | type DirectoryEntriesCache = Map type PersistSnippetOptions (line 171) | interface PersistSnippetOptions { FILE: src/main/storage/providers/markdown/runtime/validation.ts function throwStorageError (line 14) | function throwStorageError( function getMarkdownStorageErrorMessage (line 21) | function getMarkdownStorageErrorMessage(error: unknown): string { function normalizeName (line 25) | function normalizeName(name: string): string { function hasInvalidNameChars (line 29) | function hasInvalidNameChars(name: string): boolean { function validateEntryName (line 43) | function validateEntryName( function toSnippetFileName (line 74) | function toSnippetFileName(name: string): string { function assertNotReservedRootFolderName (line 84) | function assertNotReservedRootFolderName( function assertUniqueSiblingFolderName (line 102) | function assertUniqueSiblingFolderName( function resolveUniqueSiblingFolderName (line 122) | function resolveUniqueSiblingFolderName( function assertDirectoryNameAvailable (line 151) | function assertDirectoryNameAvailable( FILE: src/main/storage/providers/markdown/storages/folders.ts function createFolderTree (line 32) | function createFolderTree(folders: FolderRecord[]): FolderTreeRecord[] { function sortFoldersForTree (line 58) | function sortFoldersForTree(folders: FolderRecord[]): FolderRecord[] { function findFolderDescendants (line 114) | function findFolderDescendants( function createFoldersStorage (line 131) | function createFoldersStorage(): FoldersStorage { FILE: src/main/storage/providers/markdown/storages/index.ts function createMarkdownStorageProvider (line 6) | function createMarkdownStorageProvider(): StorageProvider { FILE: src/main/storage/providers/markdown/storages/snippets.ts function createSnippetsStorage (line 32) | function createSnippetsStorage(): SnippetsStorage { FILE: src/main/storage/providers/markdown/storages/tags.ts function createTagsStorage (line 10) | function createTagsStorage(): TagsStorage { FILE: src/main/storage/providers/markdown/watcher.ts type ChokidarWatch (line 28) | type ChokidarWatch = ( function getChokidarWatch (line 33) | async function getChokidarWatch(): Promise { function toPosixPath (line 62) | function toPosixPath(filePath: string): string { function normalizeRelativeWatchPath (line 66) | function normalizeRelativeWatchPath( function shouldIgnoreWatchPath (line 89) | function shouldIgnoreWatchPath(paths: Paths, watchPath: string): boolean { function scheduleStateSync (line 135) | function scheduleStateSync( function stopMarkdownWatcher (line 180) | function stopMarkdownWatcher(): void { function startMarkdownWatcher (line 199) | function startMarkdownWatcher(): void { FILE: src/main/storage/providers/sqlite/folders.ts type FolderOrderSnapshot (line 11) | interface FolderOrderSnapshot { function createSqliteFoldersStorage (line 16) | function createSqliteFoldersStorage(): FoldersStorage { FILE: src/main/storage/providers/sqlite/snippets.ts type SnippetRow (line 16) | interface SnippetRow { function createSqliteSnippetsStorage (line 29) | function createSqliteSnippetsStorage(): SnippetsStorage { FILE: src/main/storage/providers/sqlite/tags.ts function createSqliteTagsStorage (line 4) | function createSqliteTagsStorage(): TagsStorage { FILE: src/main/store/constants.ts constant APP_DEFAULTS (line 3) | const APP_DEFAULTS = { constant EDITOR_DEFAULTS (line 11) | const EDITOR_DEFAULTS: EditorSettings = { FILE: src/main/store/module/preferences.ts function detectDefaultEngine (line 18) | function detectDefaultEngine(): 'sqlite' | 'markdown' { FILE: src/main/store/types/index.ts type AppStore (line 3) | interface AppStore { type EditorSettings (line 24) | interface EditorSettings { type MarkdownSettings (line 36) | interface MarkdownSettings { type StorageSettings (line 40) | interface StorageSettings { type BackupSettings (line 45) | interface BackupSettings { type PreferencesStore (line 53) | interface PreferencesStore { type MathSheet (line 64) | interface MathSheet { type MathNotebookStore (line 72) | interface MathNotebookStore { type CurrencyRatesCache (line 77) | interface CurrencyRatesCache { type CurrencyRatesStore (line 82) | interface CurrencyRatesStore { type Store (line 86) | interface Store { FILE: src/main/store/types/theme.ts type ThemeType (line 1) | type ThemeType = 'light' | 'dark' type ThemeColors (line 3) | type ThemeColors = Record type ThemeEditorColors (line 5) | type ThemeEditorColors = Record type ThemeFile (line 7) | interface ThemeFile { type ThemeListItem (line 15) | interface ThemeListItem { FILE: src/main/types/index.ts type EventCallback (line 5) | interface EventCallback { type DBQueryArgs (line 9) | interface DBQueryArgs { type Window (line 15) | interface Window { type IpcMain (line 36) | interface IpcMain { FILE: src/main/types/ipc.ts type CombineWith (line 3) | type CombineWith = `${U}:${T}` type MainMenuAction (line 5) | type MainMenuAction = type DBAction (line 27) | type DBAction = type SystemAction (line 42) | type SystemAction = type PrettierAction (line 52) | type PrettierAction = 'format' type FsAction (line 53) | type FsAction = 'assets' type ThemeAction (line 54) | type ThemeAction = 'list' | 'get' | 'open-dir' | 'create-template' | 'ch... type SpacesAction (line 55) | type SpacesAction = 'math:read' | 'math:write' type MainMenuChannel (line 57) | type MainMenuChannel = CombineWith type DBChannel (line 58) | type DBChannel = CombineWith type SystemChannel (line 59) | type SystemChannel = CombineWith type PrettierChannel (line 60) | type PrettierChannel = CombineWith type FsChannel (line 61) | type FsChannel = CombineWith type ThemeChannel (line 62) | type ThemeChannel = CombineWith type SpacesChannel (line 63) | type SpacesChannel = CombineWith type Channel (line 65) | type Channel = type DialogOptions (line 74) | interface DialogOptions { type PrettierOptions (line 79) | interface PrettierOptions { type FsAssetsOptions (line 84) | interface FsAssetsOptions { FILE: src/main/updates/index.ts type GitHubRelease (line 6) | interface GitHubRelease { constant INTERVAL (line 10) | const INTERVAL = 1000 * 60 * 60 * 3 // 3 часа function parseVersion (line 15) | function parseVersion(rawVersion: string): [number, number, number] | nu... function compareVersions (line 30) | function compareVersions( function getLatestReleaseVersion (line 45) | function getLatestReleaseVersion(releases: GitHubRelease[]) { function isNewerVersion (line 65) | function isNewerVersion(versionToCompare: string) { function fetchUpdates (line 74) | async function fetchUpdates() { function notifyAboutUpdate (line 102) | async function notifyAboutUpdate() { function checkForUpdates (line 117) | function checkForUpdates() { FILE: src/main/utils/index.ts function log (line 3) | function log(context: string, error: unknown): void { function importEsm (line 16) | function importEsm(specifier: string) { FILE: src/renderer/components/editor/grammars/index.ts function loadGrammars (line 6) | async function loadGrammars() { FILE: src/renderer/components/editor/json-visualizer/composables/useLayout.ts function useLayout (line 12) | function useLayout() { FILE: src/renderer/components/editor/json-visualizer/types/index.ts type NodeData (line 3) | interface NodeData { type GraphData (line 11) | interface GraphData { type NodeType (line 16) | type NodeType = 'object' | 'array' | 'primitive' type ValueType (line 17) | type ValueType = type LayoutDirection (line 25) | type LayoutDirection = 'TB' | 'LR' FILE: src/renderer/components/editor/json-visualizer/utils/json-parser.ts function generateNodeId (line 6) | function generateNodeId(): string { function getValueType (line 10) | function getValueType(value: any): ValueType { function createNode (line 20) | function createNode( function createEdge (line 34) | function createEdge(sourceId: string, targetId: string): Edge { function parseValue (line 44) | function parseValue( function parseJsonToGraph (line 107) | function parseJsonToGraph(jsonData: any): GraphData { FILE: src/renderer/components/editor/markdown/composables/useMarkdown.ts function onZoom (line 10) | function onZoom(type: 'in' | 'out') { function useMarkdown (line 32) | function useMarkdown() { FILE: src/renderer/components/editor/types/index.ts type Language (line 1) | type Language = type LanguageOption (line 193) | interface LanguageOption { type GrammarOption (line 200) | interface GrammarOption { FILE: src/renderer/components/math-notebook/math-editor-highlight.ts function escapeHtml (line 47) | function escapeHtml(text: string) { function collectAssignedVariables (line 56) | function collectAssignedVariables(source: string) { function resolveTokenClass (line 71) | function resolveTokenClass(token: string, assignedVariables: Set) { function highlightLine (line 97) | function highlightLine(line: string, assignedVariables: Set) { function renderMathEditorHighlight (line 126) | function renderMathEditorHighlight(source: string) { FILE: src/renderer/components/preferences/keys.ts type PreferencesInjection (line 3) | interface PreferencesInjection { FILE: src/renderer/components/sidebar/folders/types/index.ts type Position (line 3) | type Position = 'after' | 'before' | 'center' type Node (line 5) | interface Node extends FoldersItem { type Store (line 9) | interface Store { FILE: src/renderer/components/ui/folder-icon/variants.ts type Variants (line 16) | type Variants = VariantProps FILE: src/renderer/components/ui/input-tags/types/index.ts type TagItem (line 1) | interface TagItem { FILE: src/renderer/components/ui/input/variants.ts type Variants (line 19) | type Variants = VariantProps FILE: src/renderer/components/ui/shadcn/button/index.ts type ButtonVariants (line 36) | type ButtonVariants = VariantProps FILE: src/renderer/components/ui/shadcn/input/index.ts type InputVariants (line 23) | type InputVariants = VariantProps FILE: src/renderer/components/ui/shadcn/textarea/index.ts type TextareaVariants (line 23) | type TextareaVariants = VariantProps FILE: src/renderer/components/ui/sonner/types.ts type Props (line 1) | interface Props { FILE: src/renderer/components/ui/text/index.ts type TextVariants (line 44) | type TextVariants = VariantProps FILE: src/renderer/components/ui/textarea/variants.ts type Variants (line 21) | type Variants = VariantProps FILE: src/renderer/components/ui/tree/composables.ts constant TREE_DND_TYPE (line 4) | const TREE_DND_TYPE = 'application/x-tree-node-ids' function flattenTree (line 49) | function flattenTree(nodes: TreeNode[] | undefined): TreeNode[] { FILE: src/renderer/components/ui/tree/keys.ts type TreeInjection (line 4) | interface TreeInjection { FILE: src/renderer/components/ui/tree/types.ts type TreeNode (line 1) | interface TreeNode { type DropPosition (line 8) | type DropPosition = 'after' | 'before' | 'center' type DragStore (line 10) | interface DragStore { FILE: src/renderer/composables/__tests__/useMathEngine.test.ts constant TEST_CURRENCY_RATES (line 5) | const TEST_CURRENCY_RATES = { function evalLine (line 15) | function evalLine(expr: string) { function evalLines (line 19) | function evalLines(text: string) { function expectValue (line 23) | function expectValue(expr: string, expected: string) { function expectNumericClose (line 28) | function expectNumericClose(expr: string, expected: number, precision = ... function expectDateWithYear (line 34) | function expectDateWithYear(expr: string, year: string) { function expectCloseInResults (line 869) | function expectCloseInResults( FILE: src/renderer/composables/math-notebook/math-engine/constants.ts constant SUPPORTED_CURRENCY_CODES (line 22) | const SUPPORTED_CURRENCY_CODES = [ constant DEFAULT_EM_IN_PX (line 224) | const DEFAULT_EM_IN_PX = 16 constant DEFAULT_PPI (line 225) | const DEFAULT_PPI = 96 constant MATH_UNARY_FUNCTIONS (line 226) | const MATH_UNARY_FUNCTIONS = [ constant TIME_UNIT_TOKEN_MAP (line 246) | const TIME_UNIT_TOKEN_MAP: Record = { constant HUMANIZED_UNIT_NAMES (line 263) | const HUMANIZED_UNIT_NAMES: Record< constant MONTH_NAME_TO_INDEX (line 286) | const MONTH_NAME_TO_INDEX: Record = { FILE: src/renderer/composables/math-notebook/math-engine/css.ts function normalizeCssUnit (line 5) | function normalizeCssUnit(unit: string) { function parseCssQuantity (line 20) | function parseCssQuantity(text: string) { function toPx (line 34) | function toPx( function fromPx (line 52) | function fromPx(pxValue: number, targetUnit: string, cssContext: CssCont... function formatNumberValue (line 65) | function formatNumberValue(value: number) { function formatUnitValue (line 71) | function formatUnitValue(value: number, unit: string) { function evaluateCssLine (line 75) | function evaluateCssLine( FILE: src/renderer/composables/math-notebook/math-engine/mathInstance.ts function createUnitSafe (line 3) | function createUnitSafe( function createMathInstance (line 16) | function createMathInstance(currencyRates: Record) { FILE: src/renderer/composables/math-notebook/math-engine/preprocess.ts function preprocessLabels (line 11) | function preprocessLabels(line: string): string { function preprocessQuotedText (line 18) | function preprocessQuotedText(line: string): string { function sanitizeForCurrencyDetection (line 42) | function sanitizeForCurrencyDetection(line: string) { function preprocessGroupedNumbers (line 46) | function preprocessGroupedNumbers(line: string): string { function preprocessDegreeSigns (line 51) | function preprocessDegreeSigns(line: string): string { function preprocessTimeUnits (line 55) | function preprocessTimeUnits(line: string): string { function normalizePowerUnit (line 62) | function normalizePowerUnit(unit: string) { function preprocessUnitAliases (line 98) | function preprocessUnitAliases(line: string): string { function preprocessAreaVolumeAliases (line 105) | function preprocessAreaVolumeAliases(line: string): string { function preprocessFunctionExpression (line 133) | function preprocessFunctionExpression(expression: string): string { function preprocessFunctionSyntax (line 167) | function preprocessFunctionSyntax(line: string): string { function preprocessFunctionConversions (line 181) | function preprocessFunctionConversions(line: string): string { function preprocessCurrencySymbols (line 195) | function preprocessCurrencySymbols(line: string): string { function preprocessCurrencyWords (line 215) | function preprocessCurrencyWords(line: string): string { function preprocessScales (line 240) | function preprocessScales(line: string): string { function preprocessStackedUnits (line 249) | function preprocessStackedUnits(line: string): string { function preprocessImplicitMultiplication (line 274) | function preprocessImplicitMultiplication(line: string): string { function preprocessWordOperators (line 278) | function preprocessWordOperators(line: string): string { function preprocessPercentages (line 295) | function preprocessPercentages(line: string): string { function preprocessConversions (line 332) | function preprocessConversions(line: string): string { function splitByKeyword (line 336) | function splitByKeyword(line: string, keywords: string[]) { function hasCurrencyExpression (line 352) | function hasCurrencyExpression(line: string) { function preprocessMathExpression (line 389) | function preprocessMathExpression(line: string) { FILE: src/renderer/composables/math-notebook/math-engine/timeZones.ts type ParsedTemporalExpression (line 5) | interface ParsedTemporalExpression { type TimeZoneDifferenceOptions (line 10) | interface TimeZoneDifferenceOptions { function getLocalTimeZone (line 15) | function getLocalTimeZone() { function getSupportedTimeZones (line 19) | function getSupportedTimeZones() { function normalizeTimeZoneInput (line 26) | function normalizeTimeZoneInput(value: string) { function resolveTimeZone (line 30) | function resolveTimeZone(value: string) { function getTimeZoneParts (line 49) | function getTimeZoneParts(date: Date, timeZone: string) { function zonedDateToUtc (line 75) | function zonedDateToUtc( function formatTimeZoneDate (line 119) | function formatTimeZoneDate(date: Date, timeZone: string, includeYear = ... function getTimeZoneOffsetMinutes (line 131) | function getTimeZoneOffsetMinutes(date: Date, timeZone: string) { function parseClockParts (line 145) | function parseClockParts(value: string) { function splitTemporalExpressionWithLeadingTime (line 171) | function splitTemporalExpressionWithLeadingTime(value: string) { function getCurrentDatePartsInTimeZone (line 192) | function getCurrentDatePartsInTimeZone(now: Date, timeZone: string) { function shiftDateParts (line 201) | function shiftDateParts( function parseDateParts (line 215) | function parseDateParts(value: string, now: Date, timeZone: string) { function resolveTrailingTimeZone (line 281) | function resolveTrailingTimeZone(value: string) { function parseTemporalBody (line 300) | function parseTemporalBody( function parseZonedTemporalExpression (line 385) | function parseZonedTemporalExpression(value: string, now: Date) { function parseExplicitLocalTemporalExpression (line 394) | function parseExplicitLocalTemporalExpression(value: string, now: Date) { function resolveCurrentTimeZoneExpression (line 452) | function resolveCurrentTimeZoneExpression(line: string) { function evaluateTimeZoneDifferenceLine (line 483) | function evaluateTimeZoneDifferenceLine( function evaluateTimeZoneLine (line 519) | function evaluateTimeZoneLine( FILE: src/renderer/composables/math-notebook/math-engine/types.ts type LineResult (line 1) | interface LineResult { type CurrencyServiceState (line 16) | type CurrencyServiceState = 'loading' | 'ready' | 'unavailable' type CssContext (line 18) | interface CssContext { type SpecialLineResult (line 23) | interface SpecialLineResult { FILE: src/renderer/composables/math-notebook/useMathEngine.ts type FormatDirective (line 26) | interface FormatDirective { function detectFormatDirective (line 36) | function detectFormatDirective(line: string): FormatDirective { function applyFormat (line 58) | function applyFormat( function humanizeFormattedUnits (line 101) | function humanizeFormattedUnits(value: string) { function formatResult (line 121) | function formatResult(result: any): LineResult { function getNumericValue (line 170) | function getNumericValue(result: any): number | null { function splitTopLevelAddSub (line 190) | function splitTopLevelAddSub(expression: string) { function evaluateDateLikeExpression (line 249) | function evaluateDateLikeExpression( function evaluateDurationMilliseconds (line 276) | function evaluateDurationMilliseconds( function evaluateDateArithmeticLine (line 298) | function evaluateDateArithmeticLine( function evaluateDateAssignmentLine (line 370) | function evaluateDateAssignmentLine( function useMathEngine (line 407) | function useMathEngine() { FILE: src/renderer/composables/math-notebook/useMathNotebook.ts function escapeRegExp (line 7) | function escapeRegExp(value: string): string { function getNextIndexedName (line 11) | function getNextIndexedName(baseName: string, existingNames: string[]): ... function persist (line 43) | function persist() { function loadFromDisk (line 53) | async function loadFromDisk() { function useMathNotebook (line 59) | function useMathNotebook() { FILE: src/renderer/composables/types/index.ts type StateAction (line 13) | type StateAction = 'beforeSearch' type SavedState (line 15) | interface SavedState { FILE: src/renderer/composables/useApp.ts function saveStateSnapshot (line 38) | function saveStateSnapshot(action: StateAction): void { function restoreStateSnapshot (line 49) | function restoreStateSnapshot(action: StateAction): void { function useApp (line 79) | function useApp() { FILE: src/renderer/composables/useCopyToClipboard.ts function useCopyToClipboard (line 5) | function useCopyToClipboard() { FILE: src/renderer/composables/useDialog.ts type DialogOptions (line 14) | interface DialogOptions { function useDialog (line 22) | function useDialog() { FILE: src/renderer/composables/useEditor.ts function useEditor (line 18) | function useEditor() { FILE: src/renderer/composables/useFolders.ts function escapeRegExp (line 20) | function escapeRegExp(value: string): string { function getNextIndexedName (line 24) | function getNextIndexedName(baseName: string, existingNames: string[]): ... function getNextUntitledFolderName (line 48) | function getNextUntitledFolderName(parentId?: number): string { function flattenFolderTree (line 57) | function flattenFolderTree( function sortFolderIdsByTreeOrder (line 88) | function sortFolderIdsByTreeOrder(ids: number[]) { function syncSelectedFoldersWithTree (line 107) | function syncSelectedFoldersWithTree() { function clearFolderSelection (line 162) | function clearFolderSelection() { function setFolderSelection (line 169) | function setFolderSelection(ids: number[]) { function applySingleFolderSelection (line 181) | function applySingleFolderSelection(folderId: number) { function applyRangeFolderSelection (line 187) | function applyRangeFolderSelection(folderId: number) { function applyToggleFolderSelection (line 207) | function applyToggleFolderSelection(folderId: number) { function findParentFolderIds (line 230) | function findParentFolderIds(folderId: number, allFolders: any[]): numbe... function ensureSelectedFolderIsVisible (line 245) | async function ensureSelectedFolderIsVisible() { function getFolderByIdFromTree (line 293) | function getFolderByIdFromTree( function getFolders (line 313) | async function getFolders(shouldEnsureVisibility = true) { function createFolder (line 328) | async function createFolder(parentId?: number) { function createFolderAndSelect (line 351) | async function createFolderAndSelect(parentId?: number) { function updateFolder (line 363) | async function updateFolder(folderId: number, data: FoldersUpdate) { function deleteFolder (line 379) | async function deleteFolder(folderId: number, shouldRefresh = true) { type SelectFolderOptions (line 392) | interface SelectFolderOptions { function selectFolder (line 397) | async function selectFolder( function useFolders (line 422) | function useFolders() { FILE: src/renderer/composables/useSnippetScroller.ts type SnippetScroller (line 1) | interface SnippetScroller { function setSnippetScrollerRef (line 8) | function setSnippetScrollerRef(value: SnippetScroller | null) { function scrollToSnippetIndex (line 18) | function scrollToSnippetIndex(index: number) { FILE: src/renderer/composables/useSnippetUpdate.ts type UpdateQueueItem (line 9) | interface UpdateQueueItem { type UpdateContentQueueItem (line 14) | interface UpdateContentQueueItem { constant UPDATE_DEBOUNCE_TIME (line 20) | const UPDATE_DEBOUNCE_TIME = 500 function getContentUpdateKey (line 41) | function getContentUpdateKey(snippetId: number, contentId: number) { function flushContentUpdate (line 45) | async function flushContentUpdate(key: string) { function scheduleContentUpdate (line 69) | function scheduleContentUpdate(key: string) { function addToUpdateQueue (line 83) | function addToUpdateQueue(snippetId: number, data: SnippetsUpdate) { function addToUpdateContentQueue (line 90) | function addToUpdateContentQueue( function getPendingContentUpdate (line 106) | function getPendingContentUpdate(snippetId: number, contentId: number) { function isContentUpdateBusy (line 111) | function isContentUpdateBusy(snippetId: number, contentId: number) { function hasBusyContentUpdates (line 118) | function hasBusyContentUpdates() { function useSnippetUpdate (line 124) | function useSnippetUpdate() { FILE: src/renderer/composables/useSnippets.ts function escapeRegExp (line 32) | function escapeRegExp(value: string): string { function getNextIndexedName (line 36) | function getNextIndexedName(baseName: string, existingNames: string[]): ... function getSnippetNamesForCreate (line 60) | async function getSnippetNamesForCreate( function getSnippets (line 142) | async function getSnippets(query?: SnippetsQuery) { function createSnippet (line 155) | async function createSnippet() { function createSnippetAndSelect (line 191) | async function createSnippetAndSelect() { function duplicateSnippet (line 197) | async function duplicateSnippet(snippetId: number) { function createSnippetContent (line 232) | async function createSnippetContent(snippetId: number) { function addFragment (line 255) | async function addFragment() { function updateSnippet (line 267) | async function updateSnippet(snippetId: number, data: SnippetsUpdate) { function updateSnippets (line 273) | async function updateSnippets(snippetIds: number[], data: SnippetsUpdate... function updateSnippetContent (line 280) | async function updateSnippetContent( function deleteSnippet (line 294) | async function deleteSnippet(snippetId: number) { function deleteSnippets (line 300) | async function deleteSnippets(snippetIds: number[]) { function deleteSnippetContent (line 307) | async function deleteSnippetContent(snippetId: number, contentId: number) { function addTagToSnippet (line 321) | async function addTagToSnippet(tagId: number, snippetId: number) { function deleteTagFromSnippet (line 334) | async function deleteTagFromSnippet(tagId: number, snippetId: number) { function emptyTrash (line 347) | async function emptyTrash() { function selectSnippet (line 361) | function selectSnippet(snippetId: number, withShift = false) { function selectFirstSnippet (line 395) | function selectFirstSnippet() { function clearSnippets (line 417) | function clearSnippets() { function clearSnippetsState (line 422) | function clearSnippetsState() { function search (line 429) | async function search() { function selectSearchSnippet (line 449) | function selectSearchSnippet(index: number) { function clearSearch (line 464) | function clearSearch(restoreState = false) { function useSnippets (line 474) | function useSnippets() { FILE: src/renderer/composables/useSonner.ts function useSonner (line 5) | function useSonner() { FILE: src/renderer/composables/useStorageMutation.ts constant MUTATION_COOLDOWN_MS (line 1) | const MUTATION_COOLDOWN_MS = 1500 constant EDIT_DEBOUNCE_MS (line 2) | const EDIT_DEBOUNCE_MS = 1000 function markPersistedStorageMutation (line 7) | function markPersistedStorageMutation(): void { function markUserEdit (line 11) | function markUserEdit(): void { function shouldSkipStorageSyncRefresh (line 15) | function shouldSkipStorageSyncRefresh(): boolean { function useStorageMutation (line 29) | function useStorageMutation() { FILE: src/renderer/composables/useTags.ts function getTags (line 7) | async function getTags() { function addTag (line 21) | async function addTag(tagName: string) { function deleteTag (line 27) | async function deleteTag(tagId: number) { function useTags (line 37) | function useTags() { FILE: src/renderer/composables/useTheme.ts type BuiltInThemeId (line 10) | type BuiltInThemeId = 'light' | 'dark' | 'auto' constant BUILT_IN_THEMES (line 12) | const BUILT_IN_THEMES = new Set(['light', 'dark', 'auto']) constant CUSTOM_STYLE_ID (line 13) | const CUSTOM_STYLE_ID = 'masscode-custom-theme' constant LIGHT_EDITOR_THEME (line 14) | const LIGHT_EDITOR_THEME = 'neo' constant DARK_EDITOR_THEME (line 15) | const DARK_EDITOR_THEME = 'oceanic-next' constant TOKEN_MIGRATION_MAP (line 17) | const TOKEN_MIGRATION_MAP: Record = { constant DROPPED_TOKENS (line 30) | const DROPPED_TOKENS = new Set(['color-button-hover']) function persistThemePreference (line 47) | function persistThemePreference(id: string): void { function isBuiltInTheme (line 55) | function isBuiltInTheme(id: string): id is BuiltInThemeId { function getBuiltInThemeType (line 59) | function getBuiltInThemeType(id: BuiltInThemeId): ThemeType { function removeCustomThemeStyle (line 71) | function removeCustomThemeStyle(): void { function isValidCssToken (line 79) | function isValidCssToken(token: string): boolean { function hasCustomEditorColors (line 83) | function hasCustomEditorColors(editorColors?: ThemeEditorColors): boolean { function buildThemeCss (line 97) | function buildThemeCss(theme: ThemeFile): string { function applyCustomThemeStyle (line 147) | function applyCustomThemeStyle(theme: ThemeFile): void { function applyBuiltInTheme (line 163) | function applyBuiltInTheme(id: BuiltInThemeId): void { function applyCustomTheme (line 174) | async function applyCustomTheme(id: string): Promise { function fallbackToAuto (line 192) | function fallbackToAuto(): void { function setTheme (line 196) | async function setTheme(id: string): Promise { function loadCustomThemes (line 209) | async function loadCustomThemes(): Promise { function handleThemesChanged (line 222) | async function handleThemesChanged(): Promise { function processThemeReloadQueue (line 241) | async function processThemeReloadQueue(): Promise { function initTheme (line 278) | async function initTheme(): Promise { function onThemeChanged (line 283) | function onThemeChanged() { function useTheme (line 296) | function useTheme() { FILE: src/renderer/ipc/index.ts function registerIPCListeners (line 4) | function registerIPCListeners() { FILE: src/renderer/ipc/listeners/main-menu.ts function registerMainMenuListeners (line 16) | function registerMainMenuListeners() { FILE: src/renderer/ipc/listeners/system.ts type ReleaseNoticePayload (line 31) | interface ReleaseNoticePayload { function refreshCodeSpace (line 35) | async function refreshCodeSpace() { function refreshAfterStorageSync (line 54) | async function refreshAfterStorageSync() { function scheduleStorageSyncRefresh (line 70) | function scheduleStorageSyncRefresh() { function registerSystemListeners (line 88) | function registerSystemListeners() { FILE: src/renderer/services/api/generated/index.ts type SnippetContentsAdd (line 12) | interface SnippetContentsAdd { type SnippetContentsUpdate (line 18) | interface SnippetContentsUpdate { type SnippetsAdd (line 24) | interface SnippetsAdd { type SnippetsUpdate (line 29) | interface SnippetsUpdate { type SnippetsCountsResponse (line 45) | interface SnippetsCountsResponse { type SnippetsQuery (line 50) | interface SnippetsQuery { type SnippetsResponse (line 73) | type SnippetsResponse = { type FoldersAdd (line 97) | interface FoldersAdd { type FoldersResponse (line 102) | type FoldersResponse = { type FoldersUpdate (line 114) | interface FoldersUpdate { type FoldersTreeResponse (line 127) | type FoldersTreeResponse = { type TagsAdd (line 140) | interface TagsAdd { type TagsResponse (line 144) | type TagsResponse = { type TagsAddResponse (line 149) | interface TagsAddResponse { type QueryParamsType (line 153) | type QueryParamsType = Record; type ResponseFormat (line 154) | type ResponseFormat = keyof Omit; type FullRequestParams (line 156) | interface FullRequestParams extends Omit { type RequestParams (line 175) | type RequestParams = Omit< type ApiConfig (line 180) | interface ApiConfig { type HttpResponse (line 189) | interface HttpResponse type CancelToken (line 195) | type CancelToken = Symbol | string | number; type ContentType (line 197) | enum ContentType { class HttpClient (line 204) | class HttpClient { method constructor (line 219) | constructor(apiConfig: ApiConfig = {}) { method encodeQueryParam (line 227) | protected encodeQueryParam(key: string, value: any) { method addQueryParam (line 232) | protected addQueryParam(query: QueryParamsType, key: string) { method addArrayQueryParam (line 236) | protected addArrayQueryParam(query: QueryParamsType, key: string) { method toQueryString (line 241) | protected toQueryString(rawQuery?: QueryParamsType): string { method addQueryParams (line 255) | protected addQueryParams(rawQuery?: QueryParamsType): string { method mergeRequestParams (line 285) | protected mergeRequestParams( class Api (line 403) | class Api< FILE: src/renderer/services/notifications/donate.ts constant INTERVAL (line 6) | const INTERVAL = 1000 * 60 * 60 * 3 // 3 часа function setNextDonateNotification (line 13) | function setNextDonateNotification() { function initFirstDonateNotification (line 18) | function initFirstDonateNotification() { function showDonateNotification (line 26) | function showDonateNotification() { function startNotificationCheck (line 55) | function startNotificationCheck() { function donateNotification (line 65) | function donateNotification() { FILE: src/renderer/services/notifications/index.ts function notifications (line 3) | function notifications() { FILE: src/renderer/spaceDefinitions.ts type SpaceId (line 7) | type SpaceId = 'code' | 'tools' | 'math' type SpaceDefinition (line 9) | interface SpaceDefinition { function isRouteNameInSpace (line 18) | function isRouteNameInSpace( function getSpaceDefinitions (line 28) | function getSpaceDefinitions(): SpaceDefinition[] { function isSpaceRouteName (line 58) | function isSpaceRouteName( function getActiveSpaceId (line 64) | function getActiveSpaceId(): SpaceId | null { FILE: src/renderer/utils/index.ts function cn (line 6) | function cn(...inputs: ClassValue[]) { function scrollToElement (line 10) | function scrollToElement(selector: string) { function getContiguousSelection (line 17) | function getContiguousSelection(