From e592e25fec3da0c420be024d2e78378b382ad009 Mon Sep 17 00:00:00 2001 From: DecafDev <40307803+decaf-dev@users.noreply.github.com> Date: Sat, 11 Jan 2025 18:44:31 -0700 Subject: [PATCH 01/10] feat: upgrade typescript and svelte --- bun.lockb | Bin 192325 -> 193333 bytes package.json | 14 +++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bun.lockb b/bun.lockb index 939b3dfd78bccd045832d6382421d6f79e63d2c8..4f69bbc99a015045bb609b8cf1da4178960bf82d 100755 GIT binary patch delta 41626 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 J{w0la{x5h!iroMJ delta 41353 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 diff --git a/package.json b/package.json index 62041df..5b5ff31 100644 --- a/package.json +++ b/package.json @@ -23,17 +23,17 @@ "@types/node": "^16.11.6", "@typescript-eslint/eslint-plugin": "5.29.0", "@typescript-eslint/parser": "5.29.0", - "builtin-modules": "3.3.0", - "esbuild": "0.17.3", - "esbuild-svelte": "^0.8.0", + "builtin-modules": "^3.0.0", + "esbuild": "^0.24.2", + "esbuild-svelte": "^0.9.0", "jest": "^29.7.0", "obsidian": "latest", - "svelte-check": "^3.8.4", - "svelte-preprocess": "^5.1.4", + "svelte-check": "^4.1.3", + "svelte-preprocess": "^6.0.3", "ts-auto-guard": "^5.0.0", "ts-jest": "^29.1.4", "tslib": "2.4.0", - "typescript": "4.7.4" + "typescript": "^5.7.3" }, "dependencies": { "crypto": "^1.0.1", @@ -41,6 +41,6 @@ "js-logger": "^1.6.1", "lodash": "^4.17.21", "nanoid": "^5.0.7", - "svelte": "^4.2.15" + "svelte": "^5.17.3" } } From 2099586ffac9e7920debae9f5ab84dfd458f8313 Mon Sep 17 00:00:00 2001 From: DecafDev <40307803+decaf-dev@users.noreply.github.com> Date: Sat, 11 Jan 2025 18:44:42 -0700 Subject: [PATCH 02/10] refactor: remove unnecessary svelte tsconfig change in pipeline --- .github/workflows/release.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 49faf43..ecf9b0c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,12 +23,6 @@ jobs: - name: Install dependencies run: bun install - - name: Fix tsconfig.json - run: | - sed -i '/"esModuleInterop"/d' node_modules/@tsconfig/svelte/tsconfig.json - sed -i '/"verbatimModuleSyntax"/d' node_modules/@tsconfig/svelte/tsconfig.json - sed -i '/"moduleResolution"/c\ "moduleResolution": "node",' node_modules/@tsconfig/svelte/tsconfig.json - - name: Build id: build run: bun run build From bba710b495db0f0f9e1e3501274f38a6b5a50fe7 Mon Sep 17 00:00:00 2001 From: DecafDev <40307803+decaf-dev@users.noreply.github.com> Date: Sat, 11 Jan 2025 18:45:57 -0700 Subject: [PATCH 03/10] refactor: change to type-only import --- src/constants.ts | 2 +- src/event/event-manager.ts | 2 +- src/logger/index.ts | 29 +- src/main.ts | 21 +- src/migrations/index.ts | 18 +- src/migrations/migrate_0_4_0.ts | 12 +- src/migrations/migrate_1_0_0.ts | 22 +- src/migrations/migrate_1_10_0.ts | 27 +- src/migrations/migrate_1_13_0.ts | 22 +- src/migrations/migrate_1_14_0.ts | 18 +- src/migrations/migrate_1_15_0.ts | 13 +- src/migrations/migrate_1_17_0.ts | 4 +- src/migrations/migrate_1_1_0.ts | 15 +- src/migrations/migrate_1_21_0.ts | 4 +- src/migrations/migrate_1_22_0.ts | 4 +- src/migrations/migrate_1_23_0.ts | 4 +- src/migrations/migrate_1_23_1.ts | 4 +- src/migrations/migrate_1_24_0.ts | 4 +- src/migrations/migrate_1_25_0.ts | 4 +- src/migrations/migrate_1_26_0.ts | 4 +- src/migrations/migrate_1_27_0.ts | 4 +- src/migrations/migrate_1_29_0.ts | 5 +- src/migrations/migrate_1_2_1.ts | 12 +- src/migrations/migrate_1_30_5.ts | 4 +- src/migrations/migrate_1_31_0.ts | 4 +- src/migrations/migrate_1_33_0.ts | 4 +- src/migrations/migrate_1_37_0.ts | 4 +- src/migrations/migrate_1_38_0.ts | 4 +- src/migrations/migrate_1_39_0.ts | 6 +- src/migrations/migrate_1_3_0.ts | 41 +- src/migrations/migrate_1_40_0.ts | 4 +- src/migrations/migrate_1_41_0.ts | 4 +- src/migrations/migrate_1_42_0.ts | 4 +- src/migrations/migrate_1_45_0.ts | 6 +- src/migrations/migrate_1_46_0.ts | 4 +- src/migrations/migrate_1_6_0.ts | 12 +- src/migrations/migrate_1_6_1.ts | 12 +- src/migrations/migrate_1_9_0.ts | 29 +- src/obsidian/utils.ts | 2 +- src/obsidian/vault-explorer-settings-tab.ts | 29 +- src/svelte/app/components/feed-card.svelte | 24 +- src/svelte/app/components/feed-view.svelte | 2 +- .../app/components/filter-group-list.svelte | 7 +- src/svelte/app/components/grid-card.svelte | 30 +- src/svelte/app/components/grid-view.svelte | 2 +- src/svelte/app/components/list-view.svelte | 2 +- src/svelte/app/components/sort-filter.svelte | 2 +- src/svelte/app/components/table-view.svelte | 22 +- src/svelte/app/index.svelte | 87 +- src/svelte/app/services/context-menu.ts | 2 +- src/svelte/app/services/favorites-store.ts | 4 +- .../filters/custom/filter-by-groups.ts | 32 +- .../app/services/filters/search-filter.ts | 2 +- .../app/services/random-file-sort-store.ts | 2 +- src/svelte/app/services/render-data.ts | 34 +- src/svelte/app/services/smi-cache.ts | 2 +- src/svelte/app/types.ts | 2 +- .../components/content-filter.svelte | 8 +- .../components/file-name-filter.svelte | 2 +- .../components/filter-rule-list.svelte | 6 +- .../components/filter-rule.svelte | 32 +- .../components/folder-filter.svelte | 10 +- .../components/group-list.svelte | 4 +- .../components/property-filter.svelte | 18 +- src/svelte/custom-filter-app/index.svelte | 31 +- .../services/display-name-utils.ts | 22 +- .../custom-filter-app/services/utils.ts | 2 +- src/svelte/image-source-app/display-name.ts | 2 +- src/svelte/image-source-app/index.svelte | 12 +- src/svelte/shared/components/tab.svelte | 6 +- .../shared/services/load-property-value.ts | 4 +- src/types/index.guard.ts | 1572 ++++++++++------- tests/integration/preform-migration.test.ts | 4 +- tests/unit/load-property-value.test.ts | 4 +- 74 files changed, 1388 insertions(+), 1036 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index 3a0efdc..9792323 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,5 +1,5 @@ import { LOG_LEVEL_WARN } from "./logger/constants"; -import { VaultExplorerPluginSettings, TExplorerView } from "./types"; +import { type VaultExplorerPluginSettings, TExplorerView } from "./types"; export const VAULT_EXPLORER_VIEW = "vault-explorer"; diff --git a/src/event/event-manager.ts b/src/event/event-manager.ts index 1123197..ae9db78 100644 --- a/src/event/event-manager.ts +++ b/src/event/event-manager.ts @@ -1,5 +1,5 @@ import Logger from "js-logger"; -import { PluginEvent, EventCallback } from "./types"; +import { PluginEvent, type EventCallback } from "./types"; export default class EventManager { private static instance: EventManager; diff --git a/src/logger/index.ts b/src/logger/index.ts index f821c1a..d9320d2 100644 --- a/src/logger/index.ts +++ b/src/logger/index.ts @@ -1,7 +1,13 @@ -import Logger, { ILogLevel } from "js-logger"; -import { LOG_LEVEL_OFF, LOG_LEVEL_ERROR, LOG_LEVEL_WARN, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_TRACE } from "./constants"; -import { FormattedLogMessage, LogMessageHeader } from "./types"; - +import Logger, { type ILogLevel } from "js-logger"; +import { + LOG_LEVEL_DEBUG, + LOG_LEVEL_ERROR, + LOG_LEVEL_INFO, + LOG_LEVEL_OFF, + LOG_LEVEL_TRACE, + LOG_LEVEL_WARN, +} from "./constants"; +import type { FormattedLogMessage, LogMessageHeader } from "./types"; export const logLevelToString = (level: ILogLevel) => { switch (level) { @@ -20,7 +26,7 @@ export const logLevelToString = (level: ILogLevel) => { default: throw new Error("Unhandled log level"); } -} +}; export const stringToLogLevel = (value: string) => { switch (value) { @@ -39,16 +45,21 @@ export const stringToLogLevel = (value: string) => { default: throw new Error(`Unhandled log level: ${value}`); } -} +}; -export const formatMessageForLogger = (...args: unknown[]): FormattedLogMessage => { +export const formatMessageForLogger = ( + ...args: unknown[] +): FormattedLogMessage => { const head: unknown = args[0]; const body = args[1] as unknown as Record; if (typeof args[0] == "object") { const headers = head as LogMessageHeader; const { fileName, functionName, message } = headers; - return { message: `[${fileName}:${functionName}] ${message}`, data: body }; + return { + message: `[${fileName}:${functionName}] ${message}`, + data: body, + }; } else { return { message: String(head), data: body }; } -} +}; diff --git a/src/main.ts b/src/main.ts index b4c6034..9443970 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,26 +1,25 @@ import { Plugin, TAbstractFile, TFile, TFolder } from "obsidian"; -import VaultExplorerView from "./obsidian/vault-explorer-view"; import VaultExplorerSettingsTab from "./obsidian/vault-explorer-settings-tab"; +import VaultExplorerView from "./obsidian/vault-explorer-view"; -import { VaultExplorerPluginSettings } from "./types"; +import Logger from "js-logger"; import { DEFAULT_SETTINGS, HOVER_LINK_SOURCE_ID, VAULT_EXPLORER_VIEW, } from "./constants"; -import _ from "lodash"; import EventManager from "./event/event-manager"; -import { preformMigrations } from "./migrations"; -import Logger from "js-logger"; -import { formatMessageForLogger, stringToLogLevel } from "./logger"; -import { moveFocus } from "./focus-utils"; import { PluginEvent } from "./event/types"; -import { isVersionLessThan } from "./utils"; -import License from "./svelte/shared/services/license"; -import { clearSMICache } from "./svelte/app/services/smi-cache"; -import store from "./svelte/shared/services/store"; +import { moveFocus } from "./focus-utils"; +import { formatMessageForLogger, stringToLogLevel } from "./logger"; +import { preformMigrations } from "./migrations"; import "./styles.css"; +import { clearSMICache } from "./svelte/app/services/smi-cache"; +import License from "./svelte/shared/services/license"; +import store from "./svelte/shared/services/store"; +import type { VaultExplorerPluginSettings } from "./types"; +import { isVersionLessThan } from "./utils"; export default class VaultExplorerPlugin extends Plugin { settings: VaultExplorerPluginSettings = DEFAULT_SETTINGS; diff --git a/src/migrations/index.ts b/src/migrations/index.ts index f830627..848a4f0 100644 --- a/src/migrations/index.ts +++ b/src/migrations/index.ts @@ -1,16 +1,11 @@ import Migrate_0_4_0 from "./migrate_0_4_0"; -import Migrate_1_1_0 from "./migrate_1_1_0"; import Migrate_1_0_0 from "./migrate_1_0_0"; -import Migrate_1_2_1 from "./migrate_1_2_1"; -import Migrate_1_3_0 from "./migrate_1_3_0"; -import Migrate_1_6_0 from "./migrate_1_6_0"; -import Migrate_1_6_1 from "./migrate_1_6_1"; -import Migrate_1_9_0 from "./migrate_1_9_0"; +import Migrate_1_10_0 from "./migrate_1_10_0"; +import Migrate_1_13_0 from "./migrate_1_13_0"; import Migrate_1_14_0 from "./migrate_1_14_0"; import Migrate_1_15_0 from "./migrate_1_15_0"; import Migrate_1_17_0 from "./migrate_1_17_0"; -import Migrate_1_13_0 from "./migrate_1_13_0"; -import Migrate_1_10_0 from "./migrate_1_10_0"; +import Migrate_1_1_0 from "./migrate_1_1_0"; import Migrate_1_21_0 from "./migrate_1_21_0"; import Migrate_1_22_0 from "./migrate_1_22_0"; import Migrate_1_23_0 from "./migrate_1_23_0"; @@ -18,8 +13,12 @@ import Migrate_1_23_1 from "./migrate_1_23_1"; import Migrate_1_24_0 from "./migrate_1_24_0"; import Migrate_1_25_0 from "./migrate_1_25_0"; import Migrate_1_26_0 from "./migrate_1_26_0"; +import Migrate_1_2_1 from "./migrate_1_2_1"; +import Migrate_1_3_0 from "./migrate_1_3_0"; +import Migrate_1_6_0 from "./migrate_1_6_0"; +import Migrate_1_6_1 from "./migrate_1_6_1"; +import Migrate_1_9_0 from "./migrate_1_9_0"; -import { TMigration } from "./types"; import { isVersionLessThan } from "src/utils"; import Migrate_1_27_0 from "./migrate_1_27_0"; import Migrate_1_29_0 from "./migrate_1_29_0"; @@ -34,6 +33,7 @@ import Migrate_1_41_0 from "./migrate_1_41_0"; import Migrate_1_42_0 from "./migrate_1_42_0"; import Migrate_1_45_0 from "./migrate_1_45_0"; import Migrate_1_46_0 from "./migrate_1_46_0"; +import type { TMigration } from "./types"; const migrations: TMigration[] = [ { diff --git a/src/migrations/migrate_0_4_0.ts b/src/migrations/migrate_0_4_0.ts index 81960af..f653920 100644 --- a/src/migrations/migrate_0_4_0.ts +++ b/src/migrations/migrate_0_4_0.ts @@ -1,20 +1,20 @@ -import { VaultExplorerPluginSettings_0_5_5 } from "src/types/types-0.5.5"; -import { VaultExplorerPluginSettings_0_3_3 } from "src/types/types-0.3.3"; +import type { VaultExplorerPluginSettings_0_3_3 } from "src/types/types-0.3.3"; +import type { VaultExplorerPluginSettings_0_5_5 } from "src/types/types-0.5.5"; import MigrationInterface from "./migration_interface"; export default class Migrate_0_4_0 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_0_3_3; + const typedData = data as unknown as VaultExplorerPluginSettings_0_3_3; const newData: VaultExplorerPluginSettings_0_5_5 = { ...typedData, filters: { ...typedData.filters, properties: { ...typedData.filters.properties, - groups: [] - } + groups: [], + }, }, - } + }; return newData as unknown as Record; } } diff --git a/src/migrations/migrate_1_0_0.ts b/src/migrations/migrate_1_0_0.ts index 94b7b2e..6719244 100644 --- a/src/migrations/migrate_1_0_0.ts +++ b/src/migrations/migrate_1_0_0.ts @@ -1,11 +1,11 @@ -import { VaultExplorerPluginSettings_0_5_5 } from "src/types/types-0.5.5"; -import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_0_1 } from "src/types/types-1.0.1"; import { LOG_LEVEL_WARN } from "src/logger/constants"; +import type { VaultExplorerPluginSettings_0_5_5 } from "src/types/types-0.5.5"; +import type { VaultExplorerPluginSettings_1_0_1 } from "src/types/types-1.0.1"; +import MigrationInterface from "./migration_interface"; export default class Migrate_1_0_0 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_0_5_5; + const typedData = data as unknown as VaultExplorerPluginSettings_0_5_5; const newData: VaultExplorerPluginSettings_1_0_1 = { ...typedData, logLevel: LOG_LEVEL_WARN, @@ -13,18 +13,18 @@ export default class Migrate_1_0_0 implements MigrationInterface { ...typedData.filters, properties: { ...typedData.filters.properties, - groups: typedData.filters.properties.groups.map(group => { + groups: typedData.filters.properties.groups.map((group) => { const { id, name, filters, isEnabled } = group; return { id, name, filters, - isEnabled - } - }) - } - } - } + isEnabled, + }; + }), + }, + }, + }; return newData as unknown as Record; } } diff --git a/src/migrations/migrate_1_10_0.ts b/src/migrations/migrate_1_10_0.ts index 3c33707..944324f 100644 --- a/src/migrations/migrate_1_10_0.ts +++ b/src/migrations/migrate_1_10_0.ts @@ -1,32 +1,35 @@ -import { FilterRuleType_1_12_1, VaultExplorerPluginSettings_1_12_1 } from "src/types/types-1.12.1"; +import { + FilterRuleType_1_12_1, + type VaultExplorerPluginSettings_1_12_1, +} from "src/types/types-1.12.1"; +import type { VaultExplorerPluginSettings_1_9_1 } from "src/types/types-1.9.1"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_9_1 } from "src/types/types-1.9.1"; export default class Migrate_1_10_0 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_1_9_1; + const typedData = data as unknown as VaultExplorerPluginSettings_1_9_1; const newData: VaultExplorerPluginSettings_1_12_1 = { ...typedData, filters: { ...typedData.filters, custom: { ...typedData.filters.custom, - groups: typedData.filters.custom.groups.map(group => { - const rules = group.rules.map(rule => { + groups: typedData.filters.custom.groups.map((group) => { + const rules = group.rules.map((rule) => { return { ...rule, type: FilterRuleType_1_12_1.PROPERTY as any, propertyType: rule.type as any, - } + }; }); return { ...group, - rules - } - }) - } - } - } + rules, + }; + }), + }, + }, + }; delete (newData.filters as any).folder; delete (newData.filters as any).properties; for (const group of newData.filters.custom.groups as any) { diff --git a/src/migrations/migrate_1_13_0.ts b/src/migrations/migrate_1_13_0.ts index 80d503a..98fce64 100644 --- a/src/migrations/migrate_1_13_0.ts +++ b/src/migrations/migrate_1_13_0.ts @@ -1,29 +1,29 @@ -import { VaultExplorerPluginSettings_1_13_1 } from "src/types/types-1.13.1"; +import type { VaultExplorerPluginSettings_1_12_1 } from "src/types/types-1.12.1"; +import type { VaultExplorerPluginSettings_1_13_1 } from "src/types/types-1.13.1"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_12_1 } from "src/types/types-1.12.1"; export default class Migrate_1_13_0 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_1_12_1; + const typedData = data as unknown as VaultExplorerPluginSettings_1_12_1; const newData: VaultExplorerPluginSettings_1_13_1 = { ...typedData, views: { ...typedData.views, - enableClockUpdates: true + enableClockUpdates: true, }, filters: { ...typedData.filters, custom: { ...typedData.filters.custom, - groups: typedData.filters.custom.groups.map(group => { + groups: typedData.filters.custom.groups.map((group) => { return { ...group, - isSticky: false - } - }) - } - } - } + isSticky: false, + }; + }), + }, + }, + }; return newData as unknown as Record; } } diff --git a/src/migrations/migrate_1_14_0.ts b/src/migrations/migrate_1_14_0.ts index b5f313f..8645c82 100644 --- a/src/migrations/migrate_1_14_0.ts +++ b/src/migrations/migrate_1_14_0.ts @@ -1,37 +1,37 @@ -import { VaultExplorerPluginSettings_1_14_2 } from "src/types/types-1.14.2"; +import type { VaultExplorerPluginSettings_1_13_1 } from "src/types/types-1.13.1"; +import type { VaultExplorerPluginSettings_1_14_2 } from "src/types/types-1.14.2"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_13_1 } from "src/types/types-1.13.1"; export default class Migrate_1_14_0 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_1_13_1; + const typedData = data as unknown as VaultExplorerPluginSettings_1_13_1; const newData: VaultExplorerPluginSettings_1_14_2 = { ...typedData, filters: { ...typedData.filters, search: { isEnabled: true, - value: typedData.filters.search + value: typedData.filters.search, }, favorites: { isEnabled: true, - value: typedData.filters.onlyFavorites + value: typedData.filters.onlyFavorites, }, timestamp: { isEnabled: true, - value: typedData.filters.timestamp + value: typedData.filters.timestamp, }, sort: { isEnabled: true, - value: typedData.filters.sort + value: typedData.filters.sort, }, custom: { isEnabled: true, - ...typedData.filters.custom + ...typedData.filters.custom, }, }, enableScrollButtons: true, - } + }; delete (newData.filters as any).onlyFavorites; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_15_0.ts b/src/migrations/migrate_1_15_0.ts index 6af05e0..6b7bb2b 100644 --- a/src/migrations/migrate_1_15_0.ts +++ b/src/migrations/migrate_1_15_0.ts @@ -1,17 +1,20 @@ -import { VaultExplorerPluginSettings_1_16_0, ViewType_1_16_0 } from "src/types/types-1.16.0"; +import type { VaultExplorerPluginSettings_1_14_2 } from "src/types/types-1.14.2"; +import { + type VaultExplorerPluginSettings_1_16_0, + ViewType_1_16_0, +} from "src/types/types-1.16.0"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_14_2 } from "src/types/types-1.14.2"; export default class Migrate_1_15_0 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_1_14_2; + const typedData = data as unknown as VaultExplorerPluginSettings_1_14_2; const newData: VaultExplorerPluginSettings_1_16_0 = { ...typedData, views: { ...typedData.views, order: [...typedData.views.order, ViewType_1_16_0.FEED], - } - } + }, + }; return newData as unknown as Record; } } diff --git a/src/migrations/migrate_1_17_0.ts b/src/migrations/migrate_1_17_0.ts index d11fa7a..e1a18a7 100644 --- a/src/migrations/migrate_1_17_0.ts +++ b/src/migrations/migrate_1_17_0.ts @@ -1,7 +1,7 @@ import { TExplorerView } from "src/types"; +import type { VaultExplorerPluginSettings_1_16_0 } from "src/types/types-1.16.0"; +import type { VaultExplorerPluginSettings_1_20_0 } from "src/types/types-1.20.0"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_16_0 } from "src/types/types-1.16.0"; -import { VaultExplorerPluginSettings_1_20_0 } from "src/types/types-1.20.0"; export default class Migrate_1_17_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_1_0.ts b/src/migrations/migrate_1_1_0.ts index e8c541d..a9270ca 100644 --- a/src/migrations/migrate_1_1_0.ts +++ b/src/migrations/migrate_1_1_0.ts @@ -1,17 +1,20 @@ +import type { VaultExplorerPluginSettings_1_0_1 } from "src/types/types-1.0.1"; +import { + type VaultExplorerPluginSettings_1_2_0, + ViewType_1_2_0, +} from "src/types/types-1.2.0"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_0_1 } from "src/types/types-1.0.1"; -import { VaultExplorerPluginSettings_1_2_0, ViewType_1_2_0 } from "src/types/types-1.2.0"; export default class Migrate_1_1_0 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_1_0_1; + const typedData = data as unknown as VaultExplorerPluginSettings_1_0_1; const newData: VaultExplorerPluginSettings_1_2_0 = { ...typedData, views: { currentView: typedData.currentView as unknown as ViewType_1_2_0, - order: [ViewType_1_2_0.GRID, ViewType_1_2_0.LIST] - } - } + order: [ViewType_1_2_0.GRID, ViewType_1_2_0.LIST], + }, + }; return newData as unknown as Record; } } diff --git a/src/migrations/migrate_1_21_0.ts b/src/migrations/migrate_1_21_0.ts index a040093..d1d82a3 100644 --- a/src/migrations/migrate_1_21_0.ts +++ b/src/migrations/migrate_1_21_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_20_0 } from "src/types/types-1.20.0"; +import type { VaultExplorerPluginSettings_1_21_2 } from "src/types/types-1.21.2"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_20_0 } from "src/types/types-1.20.0"; -import { VaultExplorerPluginSettings_1_21_2 } from "src/types/types-1.21.2"; export default class Migrate_1_21_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_22_0.ts b/src/migrations/migrate_1_22_0.ts index 26a36eb..0b55214 100644 --- a/src/migrations/migrate_1_22_0.ts +++ b/src/migrations/migrate_1_22_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_21_2 } from "src/types/types-1.21.2"; +import type { VaultExplorerPluginSettings_1_22_0 } from "src/types/types-1.22.0"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_21_2 } from "src/types/types-1.21.2"; -import { VaultExplorerPluginSettings_1_22_0 } from "src/types/types-1.22.0"; export default class Migrate_1_22_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_23_0.ts b/src/migrations/migrate_1_23_0.ts index 37378b9..2c59417 100644 --- a/src/migrations/migrate_1_23_0.ts +++ b/src/migrations/migrate_1_23_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_22_0 } from "src/types/types-1.22.0"; +import type { VaultExplorerPluginSettings_1_23_0 } from "src/types/types-1.23.0"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_22_0 } from "src/types/types-1.22.0"; -import { VaultExplorerPluginSettings_1_23_0 } from "src/types/types-1.23.0"; export default class Migrate_1_23_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_23_1.ts b/src/migrations/migrate_1_23_1.ts index 5f37405..23416bd 100644 --- a/src/migrations/migrate_1_23_1.ts +++ b/src/migrations/migrate_1_23_1.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_23_0 } from "src/types/types-1.23.0"; +import type { VaultExplorerPluginSettings_1_23_2 } from "src/types/types-1.23.2"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_23_0 } from "src/types/types-1.23.0"; -import { VaultExplorerPluginSettings_1_23_2 } from "src/types/types-1.23.2"; export default class Migrate_1_23_1 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_24_0.ts b/src/migrations/migrate_1_24_0.ts index 8c0f929..7457463 100644 --- a/src/migrations/migrate_1_24_0.ts +++ b/src/migrations/migrate_1_24_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_23_2 } from "src/types/types-1.23.2"; +import type { VaultExplorerPluginSettings_1_24_2 } from "src/types/types-1.24.2"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_23_2 } from "src/types/types-1.23.2"; -import { VaultExplorerPluginSettings_1_24_2 } from "src/types/types-1.24.2"; export default class Migrate_1_24_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_25_0.ts b/src/migrations/migrate_1_25_0.ts index 8bf7c23..139ca6d 100644 --- a/src/migrations/migrate_1_25_0.ts +++ b/src/migrations/migrate_1_25_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_24_2 } from "src/types/types-1.24.2"; +import type { VaultExplorerPluginSettings_1_25_2 } from "src/types/types-1.25.2"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_24_2 } from "src/types/types-1.24.2"; -import { VaultExplorerPluginSettings_1_25_2 } from "src/types/types-1.25.2"; export default class Migrate_1_25_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_26_0.ts b/src/migrations/migrate_1_26_0.ts index 3e6250e..e57f95c 100644 --- a/src/migrations/migrate_1_26_0.ts +++ b/src/migrations/migrate_1_26_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_25_2 } from "src/types/types-1.25.2"; +import type { VaultExplorerPluginSettings_1_26_3 } from "src/types/types-1.26.3"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_25_2 } from "src/types/types-1.25.2"; -import { VaultExplorerPluginSettings_1_26_3 } from "src/types/types-1.26.3"; export default class Migrate_1_26_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_27_0.ts b/src/migrations/migrate_1_27_0.ts index 830a76d..29dafc8 100644 --- a/src/migrations/migrate_1_27_0.ts +++ b/src/migrations/migrate_1_27_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_26_3 } from "src/types/types-1.26.3"; +import type { VaultExplorerPluginSettings_1_28_0 } from "src/types/types-1.28.0"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_26_3 } from "src/types/types-1.26.3"; -import { VaultExplorerPluginSettings_1_28_0 } from "src/types/types-1.28.0"; export default class Migrate_1_27_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_29_0.ts b/src/migrations/migrate_1_29_0.ts index 7859e18..039304e 100644 --- a/src/migrations/migrate_1_29_0.ts +++ b/src/migrations/migrate_1_29_0.ts @@ -1,7 +1,6 @@ -import { VaultExplorerPluginSettings } from "src/types"; +import type { VaultExplorerPluginSettings_1_28_0 } from "src/types/types-1.28.0"; +import type { VaultExplorerPluginSettings_1_29_0 } from "src/types/types-1.29.0"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_28_0 } from "src/types/types-1.28.0"; -import { VaultExplorerPluginSettings_1_29_0 } from "src/types/types-1.29.0"; export default class Migrate_1_29_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_2_1.ts b/src/migrations/migrate_1_2_1.ts index a4c5aa2..590940e 100644 --- a/src/migrations/migrate_1_2_1.ts +++ b/src/migrations/migrate_1_2_1.ts @@ -1,17 +1,17 @@ +import type { VaultExplorerPluginSettings_1_2_0 } from "src/types/types-1.2.0"; +import type { VaultExplorerPluginSettings_1_2_1 } from "src/types/types-1.2.1"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_2_0 } from "src/types/types-1.2.0"; -import { VaultExplorerPluginSettings_1_2_1 } from "src/types/types-1.2.1"; export default class Migrate_1_2_1 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_1_2_0; + const typedData = data as unknown as VaultExplorerPluginSettings_1_2_0; const newData: VaultExplorerPluginSettings_1_2_1 = { ...typedData, views: { ...typedData.views, - titleWrapping: "normal" - } - } + titleWrapping: "normal", + }, + }; return newData as unknown as Record; } } diff --git a/src/migrations/migrate_1_30_5.ts b/src/migrations/migrate_1_30_5.ts index 455c9e0..0cd16b2 100644 --- a/src/migrations/migrate_1_30_5.ts +++ b/src/migrations/migrate_1_30_5.ts @@ -1,6 +1,6 @@ -import { VaultExplorerPluginSettings_1_30_5 } from "src/types/types-1.30.5"; +import type { VaultExplorerPluginSettings_1_29_0 } from "src/types/types-1.29.0"; +import type { VaultExplorerPluginSettings_1_30_5 } from "src/types/types-1.30.5"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_29_0 } from "src/types/types-1.29.0"; export default class Migrate_1_30_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_31_0.ts b/src/migrations/migrate_1_31_0.ts index 01e1f9f..cf564bc 100644 --- a/src/migrations/migrate_1_31_0.ts +++ b/src/migrations/migrate_1_31_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_30_5 } from "src/types/types-1.30.5"; +import type { VaultExplorerPluginSettings_1_32_2 } from "src/types/types-1.32.2"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_30_5 } from "src/types/types-1.30.5"; -import { VaultExplorerPluginSettings_1_32_2 } from "src/types/types-1.32.2"; export default class Migrate_1_31_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_33_0.ts b/src/migrations/migrate_1_33_0.ts index 9d26f04..617050b 100644 --- a/src/migrations/migrate_1_33_0.ts +++ b/src/migrations/migrate_1_33_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_32_2 } from "src/types/types-1.32.2"; +import type { VaultExplorerPluginSettings_1_36_3 } from "src/types/types-1.36.3"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_32_2 } from "src/types/types-1.32.2"; -import { VaultExplorerPluginSettings_1_36_3 } from "src/types/types-1.36.3"; export default class Migrate_1_33_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_37_0.ts b/src/migrations/migrate_1_37_0.ts index 9106c6d..0d7bc9d 100644 --- a/src/migrations/migrate_1_37_0.ts +++ b/src/migrations/migrate_1_37_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_37_2 } from "src/types/types-1-37-0"; +import type { VaultExplorerPluginSettings_1_36_3 } from "src/types/types-1.36.3"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_36_3 } from "src/types/types-1.36.3"; -import { VaultExplorerPluginSettings_1_37_2 } from "src/types/types-1-37-0"; export default class Migrate_1_37_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_38_0.ts b/src/migrations/migrate_1_38_0.ts index aded8fe..20b04ff 100644 --- a/src/migrations/migrate_1_38_0.ts +++ b/src/migrations/migrate_1_38_0.ts @@ -1,6 +1,6 @@ -import { VaultExplorerPluginSettings_1_37_2 } from "src/types/types-1-37-0"; +import type { VaultExplorerPluginSettings_1_37_2 } from "src/types/types-1-37-0"; +import type { VaultExplorerPluginSettings_1_38_0 } from "src/types/types-1.38.0"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_38_0 } from "src/types/types-1.38.0"; export default class Migrate_1_38_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_39_0.ts b/src/migrations/migrate_1_39_0.ts index 63b76e1..f5cd491 100644 --- a/src/migrations/migrate_1_39_0.ts +++ b/src/migrations/migrate_1_39_0.ts @@ -1,9 +1,9 @@ -import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_38_0 } from "src/types/types-1.38.0"; +import type { VaultExplorerPluginSettings_1_38_0 } from "src/types/types-1.38.0"; import { TExplorerView_1_39_0, - VaultExplorerPluginSettings_1_39_0, + type VaultExplorerPluginSettings_1_39_0, } from "src/types/types-1.39.0"; +import MigrationInterface from "./migration_interface"; export default class Migrate_1_39_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_3_0.ts b/src/migrations/migrate_1_3_0.ts index c1c4b23..8fc3ab8 100644 --- a/src/migrations/migrate_1_3_0.ts +++ b/src/migrations/migrate_1_3_0.ts @@ -1,25 +1,32 @@ +import type { VaultExplorerPluginSettings_1_2_1 } from "src/types/types-1.2.1"; +import type { + PropertyFilterGroup_1_5_0, + PropertyFilter_1_5_0, + VaultExplorerPluginSettings_1_5_0, +} from "src/types/types-1.5.0"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_2_1 } from "src/types/types-1.2.1"; -import { PropertyFilterGroup_1_5_0, PropertyFilter_1_5_0, VaultExplorerPluginSettings_1_5_0 } from "src/types/types-1.5.0"; export default class Migrate_1_3_0 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_1_2_1; + const typedData = data as unknown as VaultExplorerPluginSettings_1_2_1; const groups = typedData.filters.properties.groups; - const updatedGroups: PropertyFilterGroup_1_5_0[] = groups.map(group => { - const updatedFilters: PropertyFilter_1_5_0[] = group.filters.map(filter => { + const updatedGroups: PropertyFilterGroup_1_5_0[] = groups.map( + (group) => { + const updatedFilters: PropertyFilter_1_5_0[] = + group.filters.map((filter) => { + return { + ...filter, + type: filter.type as any, + matchWhenPropertyDNE: false, + }; + }); return { - ...filter, - type: filter.type as any, - matchWhenPropertyDNE: false - } - }); - return { - ...group, - filters: updatedFilters + ...group, + filters: updatedFilters, + }; } - }); + ); const newData: VaultExplorerPluginSettings_1_5_0 = { ...typedData, @@ -28,9 +35,9 @@ export default class Migrate_1_3_0 implements MigrationInterface { properties: { ...typedData.filters.properties, groups: updatedGroups, - } - } - } + }, + }, + }; return newData as unknown as Record; } } diff --git a/src/migrations/migrate_1_40_0.ts b/src/migrations/migrate_1_40_0.ts index 1c4c26e..2d01bd5 100644 --- a/src/migrations/migrate_1_40_0.ts +++ b/src/migrations/migrate_1_40_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_39_0 } from "src/types/types-1.39.0"; +import type { VaultExplorerPluginSettings_1_40_2 } from "src/types/types-1.40.2"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_39_0 } from "src/types/types-1.39.0"; -import { VaultExplorerPluginSettings_1_40_2 } from "src/types/types-1.40.2"; export default class Migrate_1_40_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_41_0.ts b/src/migrations/migrate_1_41_0.ts index 6fd0cc0..c6ded59 100644 --- a/src/migrations/migrate_1_41_0.ts +++ b/src/migrations/migrate_1_41_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_40_2 } from "src/types/types-1.40.2"; +import type { VaultExplorerPluginSettings_1_41_1 } from "src/types/types-1.41.1"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_40_2 } from "src/types/types-1.40.2"; -import { VaultExplorerPluginSettings_1_41_1 } from "src/types/types-1.41.1"; export default class Migrate_1_41_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_42_0.ts b/src/migrations/migrate_1_42_0.ts index c013eaa..3abc3ad 100644 --- a/src/migrations/migrate_1_42_0.ts +++ b/src/migrations/migrate_1_42_0.ts @@ -1,6 +1,6 @@ +import type { VaultExplorerPluginSettings_1_41_1 } from "src/types/types-1.41.1"; +import type { VaultExplorerPluginSettings_1_44_6 } from "src/types/types-1.44.6"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_41_1 } from "src/types/types-1.41.1"; -import { VaultExplorerPluginSettings_1_44_6 } from "src/types/types-1.44.6"; export default class Migrate_1_42_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_45_0.ts b/src/migrations/migrate_1_45_0.ts index 03977a9..da2b95f 100644 --- a/src/migrations/migrate_1_45_0.ts +++ b/src/migrations/migrate_1_45_0.ts @@ -1,7 +1,7 @@ -import { VaultExplorerPluginSettings_1_44_6 } from "src/types/types-1.44.6"; -import MigrationInterface from "./migration_interface"; import { TExplorerView } from "src/types"; -import { VaultExplorerPluginSettings_1_45_0 } from "src/types/types-1.45.0"; +import type { VaultExplorerPluginSettings_1_44_6 } from "src/types/types-1.44.6"; +import type { VaultExplorerPluginSettings_1_45_0 } from "src/types/types-1.45.0"; +import MigrationInterface from "./migration_interface"; export default class Migrate_1_45_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_46_0.ts b/src/migrations/migrate_1_46_0.ts index 823e6d4..7023dd4 100644 --- a/src/migrations/migrate_1_46_0.ts +++ b/src/migrations/migrate_1_46_0.ts @@ -1,6 +1,6 @@ +import { TExplorerView, type VaultExplorerPluginSettings } from "src/types"; +import type { VaultExplorerPluginSettings_1_45_0 } from "src/types/types-1.45.0"; import MigrationInterface from "./migration_interface"; -import { TExplorerView, VaultExplorerPluginSettings } from "src/types"; -import { VaultExplorerPluginSettings_1_45_0 } from "src/types/types-1.45.0"; export default class Migrate_1_46_0 implements MigrationInterface { migrate(data: Record) { diff --git a/src/migrations/migrate_1_6_0.ts b/src/migrations/migrate_1_6_0.ts index ff59330..08201bb 100644 --- a/src/migrations/migrate_1_6_0.ts +++ b/src/migrations/migrate_1_6_0.ts @@ -1,18 +1,18 @@ +import type { VaultExplorerPluginSettings_1_5_0 } from "src/types/types-1.5.0"; +import type { VaultExplorerPluginSettings_1_6_0 } from "src/types/types-1.6.0"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_5_0 } from "src/types/types-1.5.0"; -import { VaultExplorerPluginSettings_1_6_0 } from "src/types/types-1.6.0"; export default class Migrate_1_6_0 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_1_5_0; + const typedData = data as unknown as VaultExplorerPluginSettings_1_5_0; const newData: VaultExplorerPluginSettings_1_6_0 = { ...typedData, properties: { ...typedData.properties, creationDate: "", - modifiedDate: "" - } - } + modifiedDate: "", + }, + }; return newData as unknown as Record; } } diff --git a/src/migrations/migrate_1_6_1.ts b/src/migrations/migrate_1_6_1.ts index e97092a..5a4f4d3 100644 --- a/src/migrations/migrate_1_6_1.ts +++ b/src/migrations/migrate_1_6_1.ts @@ -1,18 +1,18 @@ +import type { VaultExplorerPluginSettings_1_6_0 } from "src/types/types-1.6.0"; +import type { VaultExplorerPluginSettings_1_8_1 } from "src/types/types-1.8.1"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_6_0 } from "src/types/types-1.6.0"; -import { VaultExplorerPluginSettings_1_8_1 } from "src/types/types-1.8.1"; export default class Migrate_1_6_1 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_1_6_0; + const typedData = data as unknown as VaultExplorerPluginSettings_1_6_0; const newData: VaultExplorerPluginSettings_1_8_1 = { ...typedData, properties: { ...typedData.properties, createdDate: "", - modifiedDate: "" - } - } + modifiedDate: "", + }, + }; delete (newData.properties as any).creationDate; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_9_0.ts b/src/migrations/migrate_1_9_0.ts index 55f5baa..2be3b8b 100644 --- a/src/migrations/migrate_1_9_0.ts +++ b/src/migrations/migrate_1_9_0.ts @@ -1,32 +1,33 @@ +import type { VaultExplorerPluginSettings_1_8_1 } from "src/types/types-1.8.1"; +import type { VaultExplorerPluginSettings_1_9_1 } from "src/types/types-1.9.1"; import MigrationInterface from "./migration_interface"; -import { VaultExplorerPluginSettings_1_8_1 } from "src/types/types-1.8.1"; -import { VaultExplorerPluginSettings_1_9_1 } from "src/types/types-1.9.1"; export default class Migrate_1_9_0 implements MigrationInterface { migrate(data: Record) { - const typedData = (data as unknown) as VaultExplorerPluginSettings_1_8_1; + const typedData = data as unknown as VaultExplorerPluginSettings_1_8_1; const newData: VaultExplorerPluginSettings_1_9_1 = { ...typedData, filters: { ...typedData.filters, custom: { - selectedGroupId: typedData.filters.properties.selectedGroupId, - groups: typedData.filters.properties.groups.map(group => { - const rules = group.filters.map(filter => { + selectedGroupId: + typedData.filters.properties.selectedGroupId, + groups: typedData.filters.properties.groups.map((group) => { + const rules = group.filters.map((filter) => { return { ...filter, valueData: "", - type: filter.type as any - } + type: filter.type as any, + }; }); return { ...group, - rules - } - }) - } - } - } + rules, + }; + }), + }, + }, + }; delete (newData.filters as any).properties; for (const group of newData.filters.custom.groups as any) { delete group.filters; diff --git a/src/obsidian/utils.ts b/src/obsidian/utils.ts index 07f1dfc..3794653 100644 --- a/src/obsidian/utils.ts +++ b/src/obsidian/utils.ts @@ -1,5 +1,5 @@ import { App } from "obsidian"; -import { ObsidianProperty, ObsidianPropertyType } from "./types"; +import type { ObsidianProperty, ObsidianPropertyType } from "./types"; /** * Gets all Obsidian properties diff --git a/src/obsidian/vault-explorer-settings-tab.ts b/src/obsidian/vault-explorer-settings-tab.ts index db62ab2..fcadee1 100644 --- a/src/obsidian/vault-explorer-settings-tab.ts +++ b/src/obsidian/vault-explorer-settings-tab.ts @@ -1,9 +1,6 @@ +import Logger from "js-logger"; import { App, PluginSettingTab, Setting, SliderComponent } from "obsidian"; -import VaultExplorerPlugin from "src/main"; -import { - getDropdownOptionsForProperties, - getObsidianPropertiesByType, -} from "./utils"; +import { stringToLogLevel } from "src/logger"; import { LOG_LEVEL_DEBUG, LOG_LEVEL_ERROR, @@ -12,21 +9,25 @@ import { LOG_LEVEL_TRACE, LOG_LEVEL_WARN, } from "src/logger/constants"; -import Logger from "js-logger"; -import { stringToLogLevel } from "src/logger"; -import { +import VaultExplorerPlugin from "src/main"; +import type { CollapseStyle, CoverImageFit, - TExplorerView, VaultExplorerPluginSettings, } from "src/types"; -import EventManager from "src/event/event-manager"; -import LicenseKeyApp from "../svelte/license-key-app/index.svelte"; -import ImageSourceApp from "../svelte/image-source-app/index.svelte"; -import { PluginEvent } from "src/event/types"; +import { + getDropdownOptionsForProperties, + getObsidianPropertiesByType, +} from "./utils"; + +import EventManager from "src/event/event-manager"; +import { PluginEvent } from "src/event/types"; +import { TExplorerView } from "src/types"; +import ImageSourceApp from "../svelte/image-source-app/index.svelte"; +import LicenseKeyApp from "../svelte/license-key-app/index.svelte"; -import "./styles.css"; import { clearSMICache } from "src/svelte/app/services/smi-cache"; +import "./styles.css"; export default class VaultExplorerSettingsTab extends PluginSettingTab { plugin: VaultExplorerPlugin; diff --git a/src/svelte/app/components/feed-card.svelte b/src/svelte/app/components/feed-card.svelte index d496e55..1009e2f 100644 --- a/src/svelte/app/components/feed-card.svelte +++ b/src/svelte/app/components/feed-card.svelte @@ -1,11 +1,19 @@ diff --git a/src/svelte/custom-filter-app/components/filter-rule.svelte b/src/svelte/custom-filter-app/components/filter-rule.svelte index 74b3041..dad0684 100644 --- a/src/svelte/custom-filter-app/components/filter-rule.svelte +++ b/src/svelte/custom-filter-app/components/filter-rule.svelte @@ -1,25 +1,25 @@ diff --git a/src/svelte/custom-filter-app/components/filter-rule.svelte b/src/svelte/custom-filter-app/components/filter-rule.svelte index 74b3041..dad0684 100644 --- a/src/svelte/custom-filter-app/components/filter-rule.svelte +++ b/src/svelte/custom-filter-app/components/filter-rule.svelte @@ -1,25 +1,25 @@ -
+
+`` diff --git a/src/svelte/shared/services/load-property-value.ts b/src/svelte/shared/services/load-property-value.ts index 41894b9..d2bcafd 100644 --- a/src/svelte/shared/services/load-property-value.ts +++ b/src/svelte/shared/services/load-property-value.ts @@ -1,8 +1,8 @@ import Logger from "js-logger"; -import { App, FrontMatterCache } from "obsidian"; +import { App, type FrontMatterCache } from "obsidian"; +import { getObsidianPropertiesByType } from "src/obsidian/utils"; import { PropertyType } from "src/types"; import { isDateSupported } from "./time-utils"; -import { getObsidianPropertiesByType } from "src/obsidian/utils"; export type FileTextProperties = Record[]; diff --git a/src/svelte/shared/services/time-utils.ts b/src/svelte/shared/services/time-utils.ts index 03ba976..22c48fd 100644 --- a/src/svelte/shared/services/time-utils.ts +++ b/src/svelte/shared/services/time-utils.ts @@ -7,7 +7,7 @@ const DATE_FORMATS = ["YYYY-MM-DDTHH:mm:ss", "YYYY-MM-DDTHH:mm", "YYYY-MM-DD"]; * @returns - The current time in milliseconds */ export const getStartOfTodayMillis = () => { - return moment().startOf("day").valueOf(); + return moment.default().startOf("day").valueOf(); }; /** @@ -16,28 +16,28 @@ export const getStartOfTodayMillis = () => { * @returns - The start of the day in milliseconds */ export const getStartOfDayMillis = (date: string) => { - return moment(date).startOf("day").valueOf(); -} + return moment.default(date).startOf("day").valueOf(); +}; /** * Gets 12:00 AM of the current week in milliseconds. The week starts on Sunday. * @returns - The start of the week in milliseconds */ export const getStartOfThisWeekMillis = () => { - return moment().startOf("week").valueOf(); + return moment.default().startOf("week").valueOf(); }; export const getMomentDate = (date: string) => { - return moment(date, DATE_FORMATS, true); -} + return moment.default(date, DATE_FORMATS, true); +}; export const getDateDaysAgo = (daysAgo: number) => { - return moment().subtract(daysAgo, "days").format("YYYY-MM-DD"); -} + return moment.default().subtract(daysAgo, "days").format("YYYY-MM-DD"); +}; export const getDateDaysAhead = (daysAgo: number) => { - return moment().add(daysAgo, "days").format("YYYY-MM-DD"); -} + return moment.default().add(daysAgo, "days").format("YYYY-MM-DD"); +}; /** * Gets 12:00 AM of the previous week in milliseconds. The week starts on Sunday. @@ -45,10 +45,7 @@ export const getDateDaysAhead = (daysAgo: number) => { */ export const getStartOfLastWeekMillis = () => { //This is the Sunday the previous week - return moment() - .subtract(1, "weeks") - .startOf("week") - .valueOf(); + return moment.default().subtract(1, "weeks").startOf("week").valueOf(); }; /** @@ -57,13 +54,13 @@ export const getStartOfLastWeekMillis = () => { * @returns - The date in milliseconds */ export const getTimeMillis = (date: string) => { - const momentDate = moment(date, DATE_FORMATS, true); + const momentDate = moment.default(date, DATE_FORMATS, true); if (!momentDate.isValid()) { throw new Error(`Date format not handled: ${date}`); } return momentDate.valueOf(); -} +}; /** * Checks if the date is supported @@ -71,9 +68,9 @@ export const getTimeMillis = (date: string) => { * @returns - True if the date is supported, false otherwise */ export const isDateSupported = (date: string) => { - const momentDate = moment(date, DATE_FORMATS, true); + const momentDate = moment.default(date, DATE_FORMATS, true); return momentDate.isValid(); -} +}; /** * Gets 11:59 PM of the current day in milliseconds @@ -81,12 +78,12 @@ export const isDateSupported = (date: string) => { * @returns - The end of the day in milliseconds */ export const getEndOfDayMillis = (date: string) => { - const day = moment(date); + const day = moment.default(date); day.set({ hour: 23, minute: 59, second: 59, - millisecond: 999 + millisecond: 999, }); return day.valueOf(); -} +}; diff --git a/src/types/index.guard.ts b/src/types/index.guard.ts index 3f3cd43..ec648f3 100644 --- a/src/types/index.guard.ts +++ b/src/types/index.guard.ts @@ -2,634 +2,948 @@ * Generated type guards for "index.ts". * WARNING: Do not manually change this file. */ -import { FilterRuleType, TextFilterCondition, NumberFilterCondition, DateFilterCondition, CheckboxFilterCondition, ListFilterCondition, ContentFilterCondition, FolderFilterCondition, FileNameFilterCondition, PropertyType, TExplorerView, VaultExplorerPluginSettings } from "./index"; +import { + CheckboxFilterCondition, + ContentFilterCondition, + DateFilterCondition, + FileNameFilterCondition, + FilterRuleType, + FolderFilterCondition, + ListFilterCondition, + NumberFilterCondition, + PropertyType, + TExplorerView, + TextFilterCondition, + type VaultExplorerPluginSettings, +} from "./index"; -export function isVaultExplorerPluginSettings(obj: unknown): obj is VaultExplorerPluginSettings { - const typedObj = obj as VaultExplorerPluginSettings - return ( - (typedObj !== null && - typeof typedObj === "object" || - typeof typedObj === "function") && - (typedObj["properties"] !== null && - typeof typedObj["properties"] === "object" || - typeof typedObj["properties"] === "function") && - typeof typedObj["properties"]["url"] === "string" && - typeof typedObj["properties"]["image"] === "string" && - typeof typedObj["properties"]["coverImageFit"] === "string" && - typeof typedObj["properties"]["createdDate"] === "string" && - typeof typedObj["properties"]["modifiedDate"] === "string" && - typeof typedObj["properties"]["custom1"] === "string" && - typeof typedObj["properties"]["custom2"] === "string" && - typeof typedObj["properties"]["custom3"] === "string" && - (typedObj["filters"] !== null && - typeof typedObj["filters"] === "object" || - typeof typedObj["filters"] === "function") && - (typedObj["filters"]["search"] !== null && - typeof typedObj["filters"]["search"] === "object" || - typeof typedObj["filters"]["search"] === "function") && - typeof typedObj["filters"]["search"]["isEnabled"] === "boolean" && - typeof typedObj["filters"]["search"]["value"] === "string" && - (typedObj["filters"]["sort"] !== null && - typeof typedObj["filters"]["sort"] === "object" || - typeof typedObj["filters"]["sort"] === "function") && - typeof typedObj["filters"]["sort"]["isEnabled"] === "boolean" && - (typedObj["filters"]["sort"]["value"] === "file-name-asc" || - typedObj["filters"]["sort"]["value"] === "file-name-desc" || - typedObj["filters"]["sort"]["value"] === "modified-asc" || - typedObj["filters"]["sort"]["value"] === "modified-desc" || - typedObj["filters"]["sort"]["value"] === "created-asc" || - typedObj["filters"]["sort"]["value"] === "created-desc" || - typedObj["filters"]["sort"]["value"] === "random") && - (typedObj["filters"]["custom"] !== null && - typeof typedObj["filters"]["custom"] === "object" || - typeof typedObj["filters"]["custom"] === "function") && - typeof typedObj["filters"]["custom"]["isEnabled"] === "boolean" && - typeof typedObj["filters"]["custom"]["selectedGroupId"] === "string" && - Array.isArray(typedObj["filters"]["custom"]["groups"]) && - typedObj["filters"]["custom"]["groups"].every((e: any) => - (e !== null && - typeof e === "object" || - typeof e === "function") && - typeof e["id"] === "string" && - typeof e["name"] === "string" && - Array.isArray(e["rules"]) && - e["rules"].every((e: any) => - ((e !== null && - typeof e === "object" || - typeof e === "function") && - typeof e["id"] === "string" && - (e["operator"] === "and" || - e["operator"] === "or") && - (e["type"] === FilterRuleType.PROPERTY || - e["type"] === FilterRuleType.FOLDER || - e["type"] === FilterRuleType.FILE_NAME || - e["type"] === FilterRuleType.CONTENT) && - (e["condition"] === TextFilterCondition.IS || - e["condition"] === TextFilterCondition.IS_NOT || - e["condition"] === TextFilterCondition.CONTAINS || - e["condition"] === TextFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === TextFilterCondition.STARTS_WITH || - e["condition"] === TextFilterCondition.ENDS_WITH || - e["condition"] === TextFilterCondition.EXISTS || - e["condition"] === TextFilterCondition.DOES_NOT_EXIST || - e["condition"] === NumberFilterCondition.IS_EQUAL || - e["condition"] === NumberFilterCondition.IS_NOT_EQUAL || - e["condition"] === NumberFilterCondition.IS_GREATER || - e["condition"] === NumberFilterCondition.IS_LESS || - e["condition"] === NumberFilterCondition.IS_GREATER_OR_EQUAL || - e["condition"] === NumberFilterCondition.IS_LESS_OR_EQUAL || - e["condition"] === NumberFilterCondition.EXISTS || - e["condition"] === NumberFilterCondition.DOES_NOT_EXIST || - e["condition"] === DateFilterCondition.IS || - e["condition"] === DateFilterCondition.IS_BEFORE || - e["condition"] === DateFilterCondition.IS_AFTER || - e["condition"] === DateFilterCondition.IS_ON_OR_BEFORE || - e["condition"] === DateFilterCondition.IS_ON_OR_AFTER || - e["condition"] === DateFilterCondition.EXISTS || - e["condition"] === DateFilterCondition.DOES_NOT_EXIST || - e["condition"] === CheckboxFilterCondition.IS || - e["condition"] === CheckboxFilterCondition.IS_NOT || - e["condition"] === CheckboxFilterCondition.EXISTS || - e["condition"] === CheckboxFilterCondition.DOES_NOT_EXIST || - e["condition"] === ListFilterCondition.CONTAINS || - e["condition"] === ListFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ListFilterCondition.EXISTS || - e["condition"] === ListFilterCondition.DOES_NOT_EXIST || - e["condition"] === ContentFilterCondition.CONTAINS || - e["condition"] === ContentFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ContentFilterCondition.IS_EMPTY || - e["condition"] === ContentFilterCondition.IS_NOT_EMPTY || - e["condition"] === FolderFilterCondition.IS || - e["condition"] === FolderFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.IS || - e["condition"] === FileNameFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.CONTAINS || - e["condition"] === FileNameFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === FileNameFilterCondition.STARTS_WITH || - e["condition"] === FileNameFilterCondition.ENDS_WITH) && - typeof e["isEnabled"] === "boolean" && - typeof e["value"] === "string" && - typeof e["matchWhenPropertyDNE"] === "boolean" && - e["type"] === FilterRuleType.PROPERTY && - e["propertyType"] === PropertyType.TEXT && - typeof e["propertyName"] === "string" && - (e["condition"] === TextFilterCondition.IS || - e["condition"] === TextFilterCondition.IS_NOT || - e["condition"] === TextFilterCondition.CONTAINS || - e["condition"] === TextFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === TextFilterCondition.STARTS_WITH || - e["condition"] === TextFilterCondition.ENDS_WITH || - e["condition"] === TextFilterCondition.EXISTS || - e["condition"] === TextFilterCondition.DOES_NOT_EXIST) || - (e !== null && - typeof e === "object" || - typeof e === "function") && - typeof e["id"] === "string" && - (e["operator"] === "and" || - e["operator"] === "or") && - (e["type"] === FilterRuleType.PROPERTY || - e["type"] === FilterRuleType.FOLDER || - e["type"] === FilterRuleType.FILE_NAME || - e["type"] === FilterRuleType.CONTENT) && - (e["condition"] === TextFilterCondition.IS || - e["condition"] === TextFilterCondition.IS_NOT || - e["condition"] === TextFilterCondition.CONTAINS || - e["condition"] === TextFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === TextFilterCondition.STARTS_WITH || - e["condition"] === TextFilterCondition.ENDS_WITH || - e["condition"] === TextFilterCondition.EXISTS || - e["condition"] === TextFilterCondition.DOES_NOT_EXIST || - e["condition"] === NumberFilterCondition.IS_EQUAL || - e["condition"] === NumberFilterCondition.IS_NOT_EQUAL || - e["condition"] === NumberFilterCondition.IS_GREATER || - e["condition"] === NumberFilterCondition.IS_LESS || - e["condition"] === NumberFilterCondition.IS_GREATER_OR_EQUAL || - e["condition"] === NumberFilterCondition.IS_LESS_OR_EQUAL || - e["condition"] === NumberFilterCondition.EXISTS || - e["condition"] === NumberFilterCondition.DOES_NOT_EXIST || - e["condition"] === DateFilterCondition.IS || - e["condition"] === DateFilterCondition.IS_BEFORE || - e["condition"] === DateFilterCondition.IS_AFTER || - e["condition"] === DateFilterCondition.IS_ON_OR_BEFORE || - e["condition"] === DateFilterCondition.IS_ON_OR_AFTER || - e["condition"] === DateFilterCondition.EXISTS || - e["condition"] === DateFilterCondition.DOES_NOT_EXIST || - e["condition"] === CheckboxFilterCondition.IS || - e["condition"] === CheckboxFilterCondition.IS_NOT || - e["condition"] === CheckboxFilterCondition.EXISTS || - e["condition"] === CheckboxFilterCondition.DOES_NOT_EXIST || - e["condition"] === ListFilterCondition.CONTAINS || - e["condition"] === ListFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ListFilterCondition.EXISTS || - e["condition"] === ListFilterCondition.DOES_NOT_EXIST || - e["condition"] === ContentFilterCondition.CONTAINS || - e["condition"] === ContentFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ContentFilterCondition.IS_EMPTY || - e["condition"] === ContentFilterCondition.IS_NOT_EMPTY || - e["condition"] === FolderFilterCondition.IS || - e["condition"] === FolderFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.IS || - e["condition"] === FileNameFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.CONTAINS || - e["condition"] === FileNameFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === FileNameFilterCondition.STARTS_WITH || - e["condition"] === FileNameFilterCondition.ENDS_WITH) && - typeof e["isEnabled"] === "boolean" && - typeof e["value"] === "string" && - typeof e["matchWhenPropertyDNE"] === "boolean" && - e["type"] === FilterRuleType.PROPERTY && - e["propertyType"] === PropertyType.NUMBER && - typeof e["propertyName"] === "string" && - (e["condition"] === NumberFilterCondition.IS_EQUAL || - e["condition"] === NumberFilterCondition.IS_NOT_EQUAL || - e["condition"] === NumberFilterCondition.IS_GREATER || - e["condition"] === NumberFilterCondition.IS_LESS || - e["condition"] === NumberFilterCondition.IS_GREATER_OR_EQUAL || - e["condition"] === NumberFilterCondition.IS_LESS_OR_EQUAL || - e["condition"] === NumberFilterCondition.EXISTS || - e["condition"] === NumberFilterCondition.DOES_NOT_EXIST) || - (e !== null && - typeof e === "object" || - typeof e === "function") && - typeof e["id"] === "string" && - (e["operator"] === "and" || - e["operator"] === "or") && - (e["type"] === FilterRuleType.PROPERTY || - e["type"] === FilterRuleType.FOLDER || - e["type"] === FilterRuleType.FILE_NAME || - e["type"] === FilterRuleType.CONTENT) && - (e["condition"] === TextFilterCondition.IS || - e["condition"] === TextFilterCondition.IS_NOT || - e["condition"] === TextFilterCondition.CONTAINS || - e["condition"] === TextFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === TextFilterCondition.STARTS_WITH || - e["condition"] === TextFilterCondition.ENDS_WITH || - e["condition"] === TextFilterCondition.EXISTS || - e["condition"] === TextFilterCondition.DOES_NOT_EXIST || - e["condition"] === NumberFilterCondition.IS_EQUAL || - e["condition"] === NumberFilterCondition.IS_NOT_EQUAL || - e["condition"] === NumberFilterCondition.IS_GREATER || - e["condition"] === NumberFilterCondition.IS_LESS || - e["condition"] === NumberFilterCondition.IS_GREATER_OR_EQUAL || - e["condition"] === NumberFilterCondition.IS_LESS_OR_EQUAL || - e["condition"] === NumberFilterCondition.EXISTS || - e["condition"] === NumberFilterCondition.DOES_NOT_EXIST || - e["condition"] === DateFilterCondition.IS || - e["condition"] === DateFilterCondition.IS_BEFORE || - e["condition"] === DateFilterCondition.IS_AFTER || - e["condition"] === DateFilterCondition.IS_ON_OR_BEFORE || - e["condition"] === DateFilterCondition.IS_ON_OR_AFTER || - e["condition"] === DateFilterCondition.EXISTS || - e["condition"] === DateFilterCondition.DOES_NOT_EXIST || - e["condition"] === CheckboxFilterCondition.IS || - e["condition"] === CheckboxFilterCondition.IS_NOT || - e["condition"] === CheckboxFilterCondition.EXISTS || - e["condition"] === CheckboxFilterCondition.DOES_NOT_EXIST || - e["condition"] === ListFilterCondition.CONTAINS || - e["condition"] === ListFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ListFilterCondition.EXISTS || - e["condition"] === ListFilterCondition.DOES_NOT_EXIST || - e["condition"] === ContentFilterCondition.CONTAINS || - e["condition"] === ContentFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ContentFilterCondition.IS_EMPTY || - e["condition"] === ContentFilterCondition.IS_NOT_EMPTY || - e["condition"] === FolderFilterCondition.IS || - e["condition"] === FolderFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.IS || - e["condition"] === FileNameFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.CONTAINS || - e["condition"] === FileNameFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === FileNameFilterCondition.STARTS_WITH || - e["condition"] === FileNameFilterCondition.ENDS_WITH) && - typeof e["isEnabled"] === "boolean" && - typeof e["value"] === "string" && - typeof e["matchWhenPropertyDNE"] === "boolean" && - e["type"] === FilterRuleType.PROPERTY && - e["propertyType"] === PropertyType.LIST && - typeof e["propertyName"] === "string" && - (e["condition"] === ListFilterCondition.CONTAINS || - e["condition"] === ListFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ListFilterCondition.EXISTS || - e["condition"] === ListFilterCondition.DOES_NOT_EXIST) || - (e !== null && - typeof e === "object" || - typeof e === "function") && - typeof e["id"] === "string" && - (e["operator"] === "and" || - e["operator"] === "or") && - (e["type"] === FilterRuleType.PROPERTY || - e["type"] === FilterRuleType.FOLDER || - e["type"] === FilterRuleType.FILE_NAME || - e["type"] === FilterRuleType.CONTENT) && - (e["condition"] === TextFilterCondition.IS || - e["condition"] === TextFilterCondition.IS_NOT || - e["condition"] === TextFilterCondition.CONTAINS || - e["condition"] === TextFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === TextFilterCondition.STARTS_WITH || - e["condition"] === TextFilterCondition.ENDS_WITH || - e["condition"] === TextFilterCondition.EXISTS || - e["condition"] === TextFilterCondition.DOES_NOT_EXIST || - e["condition"] === NumberFilterCondition.IS_EQUAL || - e["condition"] === NumberFilterCondition.IS_NOT_EQUAL || - e["condition"] === NumberFilterCondition.IS_GREATER || - e["condition"] === NumberFilterCondition.IS_LESS || - e["condition"] === NumberFilterCondition.IS_GREATER_OR_EQUAL || - e["condition"] === NumberFilterCondition.IS_LESS_OR_EQUAL || - e["condition"] === NumberFilterCondition.EXISTS || - e["condition"] === NumberFilterCondition.DOES_NOT_EXIST || - e["condition"] === DateFilterCondition.IS || - e["condition"] === DateFilterCondition.IS_BEFORE || - e["condition"] === DateFilterCondition.IS_AFTER || - e["condition"] === DateFilterCondition.IS_ON_OR_BEFORE || - e["condition"] === DateFilterCondition.IS_ON_OR_AFTER || - e["condition"] === DateFilterCondition.EXISTS || - e["condition"] === DateFilterCondition.DOES_NOT_EXIST || - e["condition"] === CheckboxFilterCondition.IS || - e["condition"] === CheckboxFilterCondition.IS_NOT || - e["condition"] === CheckboxFilterCondition.EXISTS || - e["condition"] === CheckboxFilterCondition.DOES_NOT_EXIST || - e["condition"] === ListFilterCondition.CONTAINS || - e["condition"] === ListFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ListFilterCondition.EXISTS || - e["condition"] === ListFilterCondition.DOES_NOT_EXIST || - e["condition"] === ContentFilterCondition.CONTAINS || - e["condition"] === ContentFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ContentFilterCondition.IS_EMPTY || - e["condition"] === ContentFilterCondition.IS_NOT_EMPTY || - e["condition"] === FolderFilterCondition.IS || - e["condition"] === FolderFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.IS || - e["condition"] === FileNameFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.CONTAINS || - e["condition"] === FileNameFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === FileNameFilterCondition.STARTS_WITH || - e["condition"] === FileNameFilterCondition.ENDS_WITH) && - typeof e["isEnabled"] === "boolean" && - typeof e["value"] === "string" && - typeof e["matchWhenPropertyDNE"] === "boolean" && - e["type"] === FilterRuleType.PROPERTY && - e["propertyType"] === PropertyType.CHECKBOX && - typeof e["propertyName"] === "string" && - (e["condition"] === CheckboxFilterCondition.IS || - e["condition"] === CheckboxFilterCondition.IS_NOT || - e["condition"] === CheckboxFilterCondition.EXISTS || - e["condition"] === CheckboxFilterCondition.DOES_NOT_EXIST) || - (e !== null && - typeof e === "object" || - typeof e === "function") && - typeof e["id"] === "string" && - (e["operator"] === "and" || - e["operator"] === "or") && - (e["type"] === FilterRuleType.PROPERTY || - e["type"] === FilterRuleType.FOLDER || - e["type"] === FilterRuleType.FILE_NAME || - e["type"] === FilterRuleType.CONTENT) && - (e["condition"] === TextFilterCondition.IS || - e["condition"] === TextFilterCondition.IS_NOT || - e["condition"] === TextFilterCondition.CONTAINS || - e["condition"] === TextFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === TextFilterCondition.STARTS_WITH || - e["condition"] === TextFilterCondition.ENDS_WITH || - e["condition"] === TextFilterCondition.EXISTS || - e["condition"] === TextFilterCondition.DOES_NOT_EXIST || - e["condition"] === NumberFilterCondition.IS_EQUAL || - e["condition"] === NumberFilterCondition.IS_NOT_EQUAL || - e["condition"] === NumberFilterCondition.IS_GREATER || - e["condition"] === NumberFilterCondition.IS_LESS || - e["condition"] === NumberFilterCondition.IS_GREATER_OR_EQUAL || - e["condition"] === NumberFilterCondition.IS_LESS_OR_EQUAL || - e["condition"] === NumberFilterCondition.EXISTS || - e["condition"] === NumberFilterCondition.DOES_NOT_EXIST || - e["condition"] === DateFilterCondition.IS || - e["condition"] === DateFilterCondition.IS_BEFORE || - e["condition"] === DateFilterCondition.IS_AFTER || - e["condition"] === DateFilterCondition.IS_ON_OR_BEFORE || - e["condition"] === DateFilterCondition.IS_ON_OR_AFTER || - e["condition"] === DateFilterCondition.EXISTS || - e["condition"] === DateFilterCondition.DOES_NOT_EXIST || - e["condition"] === CheckboxFilterCondition.IS || - e["condition"] === CheckboxFilterCondition.IS_NOT || - e["condition"] === CheckboxFilterCondition.EXISTS || - e["condition"] === CheckboxFilterCondition.DOES_NOT_EXIST || - e["condition"] === ListFilterCondition.CONTAINS || - e["condition"] === ListFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ListFilterCondition.EXISTS || - e["condition"] === ListFilterCondition.DOES_NOT_EXIST || - e["condition"] === ContentFilterCondition.CONTAINS || - e["condition"] === ContentFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ContentFilterCondition.IS_EMPTY || - e["condition"] === ContentFilterCondition.IS_NOT_EMPTY || - e["condition"] === FolderFilterCondition.IS || - e["condition"] === FolderFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.IS || - e["condition"] === FileNameFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.CONTAINS || - e["condition"] === FileNameFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === FileNameFilterCondition.STARTS_WITH || - e["condition"] === FileNameFilterCondition.ENDS_WITH) && - typeof e["isEnabled"] === "boolean" && - typeof e["value"] === "string" && - typeof e["matchWhenPropertyDNE"] === "boolean" && - e["type"] === FilterRuleType.PROPERTY && - (e["propertyType"] === PropertyType.DATE || - e["propertyType"] === PropertyType.DATETIME) && - typeof e["propertyName"] === "string" && - (e["condition"] === DateFilterCondition.IS || - e["condition"] === DateFilterCondition.IS_BEFORE || - e["condition"] === DateFilterCondition.IS_AFTER || - e["condition"] === DateFilterCondition.IS_ON_OR_BEFORE || - e["condition"] === DateFilterCondition.IS_ON_OR_AFTER || - e["condition"] === DateFilterCondition.EXISTS || - e["condition"] === DateFilterCondition.DOES_NOT_EXIST) && - typeof e["valueData"] === "string" || - (e !== null && - typeof e === "object" || - typeof e === "function") && - typeof e["id"] === "string" && - (e["operator"] === "and" || - e["operator"] === "or") && - (e["type"] === FilterRuleType.PROPERTY || - e["type"] === FilterRuleType.FOLDER || - e["type"] === FilterRuleType.FILE_NAME || - e["type"] === FilterRuleType.CONTENT) && - (e["condition"] === TextFilterCondition.IS || - e["condition"] === TextFilterCondition.IS_NOT || - e["condition"] === TextFilterCondition.CONTAINS || - e["condition"] === TextFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === TextFilterCondition.STARTS_WITH || - e["condition"] === TextFilterCondition.ENDS_WITH || - e["condition"] === TextFilterCondition.EXISTS || - e["condition"] === TextFilterCondition.DOES_NOT_EXIST || - e["condition"] === NumberFilterCondition.IS_EQUAL || - e["condition"] === NumberFilterCondition.IS_NOT_EQUAL || - e["condition"] === NumberFilterCondition.IS_GREATER || - e["condition"] === NumberFilterCondition.IS_LESS || - e["condition"] === NumberFilterCondition.IS_GREATER_OR_EQUAL || - e["condition"] === NumberFilterCondition.IS_LESS_OR_EQUAL || - e["condition"] === NumberFilterCondition.EXISTS || - e["condition"] === NumberFilterCondition.DOES_NOT_EXIST || - e["condition"] === DateFilterCondition.IS || - e["condition"] === DateFilterCondition.IS_BEFORE || - e["condition"] === DateFilterCondition.IS_AFTER || - e["condition"] === DateFilterCondition.IS_ON_OR_BEFORE || - e["condition"] === DateFilterCondition.IS_ON_OR_AFTER || - e["condition"] === DateFilterCondition.EXISTS || - e["condition"] === DateFilterCondition.DOES_NOT_EXIST || - e["condition"] === CheckboxFilterCondition.IS || - e["condition"] === CheckboxFilterCondition.IS_NOT || - e["condition"] === CheckboxFilterCondition.EXISTS || - e["condition"] === CheckboxFilterCondition.DOES_NOT_EXIST || - e["condition"] === ListFilterCondition.CONTAINS || - e["condition"] === ListFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ListFilterCondition.EXISTS || - e["condition"] === ListFilterCondition.DOES_NOT_EXIST || - e["condition"] === ContentFilterCondition.CONTAINS || - e["condition"] === ContentFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ContentFilterCondition.IS_EMPTY || - e["condition"] === ContentFilterCondition.IS_NOT_EMPTY || - e["condition"] === FolderFilterCondition.IS || - e["condition"] === FolderFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.IS || - e["condition"] === FileNameFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.CONTAINS || - e["condition"] === FileNameFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === FileNameFilterCondition.STARTS_WITH || - e["condition"] === FileNameFilterCondition.ENDS_WITH) && - typeof e["isEnabled"] === "boolean" && - typeof e["value"] === "string" && - typeof e["matchWhenPropertyDNE"] === "boolean" && - e["type"] === FilterRuleType.FOLDER && - (e["condition"] === FolderFilterCondition.IS || - e["condition"] === FolderFilterCondition.IS_NOT) && - typeof e["includeSubfolders"] === "boolean" || - (e !== null && - typeof e === "object" || - typeof e === "function") && - typeof e["id"] === "string" && - (e["operator"] === "and" || - e["operator"] === "or") && - (e["type"] === FilterRuleType.PROPERTY || - e["type"] === FilterRuleType.FOLDER || - e["type"] === FilterRuleType.FILE_NAME || - e["type"] === FilterRuleType.CONTENT) && - (e["condition"] === TextFilterCondition.IS || - e["condition"] === TextFilterCondition.IS_NOT || - e["condition"] === TextFilterCondition.CONTAINS || - e["condition"] === TextFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === TextFilterCondition.STARTS_WITH || - e["condition"] === TextFilterCondition.ENDS_WITH || - e["condition"] === TextFilterCondition.EXISTS || - e["condition"] === TextFilterCondition.DOES_NOT_EXIST || - e["condition"] === NumberFilterCondition.IS_EQUAL || - e["condition"] === NumberFilterCondition.IS_NOT_EQUAL || - e["condition"] === NumberFilterCondition.IS_GREATER || - e["condition"] === NumberFilterCondition.IS_LESS || - e["condition"] === NumberFilterCondition.IS_GREATER_OR_EQUAL || - e["condition"] === NumberFilterCondition.IS_LESS_OR_EQUAL || - e["condition"] === NumberFilterCondition.EXISTS || - e["condition"] === NumberFilterCondition.DOES_NOT_EXIST || - e["condition"] === DateFilterCondition.IS || - e["condition"] === DateFilterCondition.IS_BEFORE || - e["condition"] === DateFilterCondition.IS_AFTER || - e["condition"] === DateFilterCondition.IS_ON_OR_BEFORE || - e["condition"] === DateFilterCondition.IS_ON_OR_AFTER || - e["condition"] === DateFilterCondition.EXISTS || - e["condition"] === DateFilterCondition.DOES_NOT_EXIST || - e["condition"] === CheckboxFilterCondition.IS || - e["condition"] === CheckboxFilterCondition.IS_NOT || - e["condition"] === CheckboxFilterCondition.EXISTS || - e["condition"] === CheckboxFilterCondition.DOES_NOT_EXIST || - e["condition"] === ListFilterCondition.CONTAINS || - e["condition"] === ListFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ListFilterCondition.EXISTS || - e["condition"] === ListFilterCondition.DOES_NOT_EXIST || - e["condition"] === ContentFilterCondition.CONTAINS || - e["condition"] === ContentFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ContentFilterCondition.IS_EMPTY || - e["condition"] === ContentFilterCondition.IS_NOT_EMPTY || - e["condition"] === FolderFilterCondition.IS || - e["condition"] === FolderFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.IS || - e["condition"] === FileNameFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.CONTAINS || - e["condition"] === FileNameFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === FileNameFilterCondition.STARTS_WITH || - e["condition"] === FileNameFilterCondition.ENDS_WITH) && - typeof e["isEnabled"] === "boolean" && - typeof e["value"] === "string" && - typeof e["matchWhenPropertyDNE"] === "boolean" && - e["type"] === FilterRuleType.FILE_NAME && - (e["condition"] === FileNameFilterCondition.IS || - e["condition"] === FileNameFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.CONTAINS || - e["condition"] === FileNameFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === FileNameFilterCondition.STARTS_WITH || - e["condition"] === FileNameFilterCondition.ENDS_WITH) || - (e !== null && - typeof e === "object" || - typeof e === "function") && - typeof e["id"] === "string" && - (e["operator"] === "and" || - e["operator"] === "or") && - (e["type"] === FilterRuleType.PROPERTY || - e["type"] === FilterRuleType.FOLDER || - e["type"] === FilterRuleType.FILE_NAME || - e["type"] === FilterRuleType.CONTENT) && - (e["condition"] === TextFilterCondition.IS || - e["condition"] === TextFilterCondition.IS_NOT || - e["condition"] === TextFilterCondition.CONTAINS || - e["condition"] === TextFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === TextFilterCondition.STARTS_WITH || - e["condition"] === TextFilterCondition.ENDS_WITH || - e["condition"] === TextFilterCondition.EXISTS || - e["condition"] === TextFilterCondition.DOES_NOT_EXIST || - e["condition"] === NumberFilterCondition.IS_EQUAL || - e["condition"] === NumberFilterCondition.IS_NOT_EQUAL || - e["condition"] === NumberFilterCondition.IS_GREATER || - e["condition"] === NumberFilterCondition.IS_LESS || - e["condition"] === NumberFilterCondition.IS_GREATER_OR_EQUAL || - e["condition"] === NumberFilterCondition.IS_LESS_OR_EQUAL || - e["condition"] === NumberFilterCondition.EXISTS || - e["condition"] === NumberFilterCondition.DOES_NOT_EXIST || - e["condition"] === DateFilterCondition.IS || - e["condition"] === DateFilterCondition.IS_BEFORE || - e["condition"] === DateFilterCondition.IS_AFTER || - e["condition"] === DateFilterCondition.IS_ON_OR_BEFORE || - e["condition"] === DateFilterCondition.IS_ON_OR_AFTER || - e["condition"] === DateFilterCondition.EXISTS || - e["condition"] === DateFilterCondition.DOES_NOT_EXIST || - e["condition"] === CheckboxFilterCondition.IS || - e["condition"] === CheckboxFilterCondition.IS_NOT || - e["condition"] === CheckboxFilterCondition.EXISTS || - e["condition"] === CheckboxFilterCondition.DOES_NOT_EXIST || - e["condition"] === ListFilterCondition.CONTAINS || - e["condition"] === ListFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ListFilterCondition.EXISTS || - e["condition"] === ListFilterCondition.DOES_NOT_EXIST || - e["condition"] === ContentFilterCondition.CONTAINS || - e["condition"] === ContentFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ContentFilterCondition.IS_EMPTY || - e["condition"] === ContentFilterCondition.IS_NOT_EMPTY || - e["condition"] === FolderFilterCondition.IS || - e["condition"] === FolderFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.IS || - e["condition"] === FileNameFilterCondition.IS_NOT || - e["condition"] === FileNameFilterCondition.CONTAINS || - e["condition"] === FileNameFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === FileNameFilterCondition.STARTS_WITH || - e["condition"] === FileNameFilterCondition.ENDS_WITH) && - typeof e["isEnabled"] === "boolean" && - typeof e["value"] === "string" && - typeof e["matchWhenPropertyDNE"] === "boolean" && - e["type"] === FilterRuleType.CONTENT && - (e["condition"] === ContentFilterCondition.CONTAINS || - e["condition"] === ContentFilterCondition.DOES_NOT_CONTAIN || - e["condition"] === ContentFilterCondition.IS_EMPTY || - e["condition"] === ContentFilterCondition.IS_NOT_EMPTY)) - ) && - typeof e["isEnabled"] === "boolean" && - typeof e["isSticky"] === "boolean" - ) && - (typedObj["views"] !== null && - typeof typedObj["views"] === "object" || - typeof typedObj["views"] === "function") && - (typedObj["views"]["grid"] !== null && - typeof typedObj["views"]["grid"] === "object" || - typeof typedObj["views"]["grid"] === "function") && - typeof typedObj["views"]["grid"]["isEnabled"] === "boolean" && - typeof typedObj["views"]["grid"]["order"] === "number" && - Array.isArray(typedObj["views"]["grid"]["coverImageSources"]) && - typedObj["views"]["grid"]["coverImageSources"].every((e: any) => - (e !== null && - typeof e === "object" || - typeof e === "function") && - (e["type"] === "image-property" || - e["type"] === "url-property" || - e["type"] === "frontmatter" || - e["type"] === "body") && - typeof e["isEnabled"] === "boolean" - ) && - (typedObj["views"]["grid"]["coverImageFit"] === "cover" || - typedObj["views"]["grid"]["coverImageFit"] === "contain") && - typeof typedObj["views"]["grid"]["loadSocialMediaImage"] === "boolean" && - (typedObj["views"]["list"] !== null && - typeof typedObj["views"]["list"] === "object" || - typeof typedObj["views"]["list"] === "function") && - typeof typedObj["views"]["list"]["isEnabled"] === "boolean" && - typeof typedObj["views"]["list"]["order"] === "number" && - typeof typedObj["views"]["list"]["showTags"] === "boolean" && - (typedObj["views"]["feed"] !== null && - typeof typedObj["views"]["feed"] === "object" || - typeof typedObj["views"]["feed"] === "function") && - typeof typedObj["views"]["feed"]["isEnabled"] === "boolean" && - typeof typedObj["views"]["feed"]["order"] === "number" && - (typedObj["views"]["feed"]["collapseStyle"] === "no-new-lines" || - typedObj["views"]["feed"]["collapseStyle"] === "no-extra-new-lines") && - typeof typedObj["views"]["feed"]["removeH1"] === "boolean" && - typeof typedObj["views"]["feed"]["lineClampSmall"] === "number" && - typeof typedObj["views"]["feed"]["lineClampMedium"] === "number" && - typeof typedObj["views"]["feed"]["lineClampLarge"] === "number" && - (typedObj["views"]["table"] !== null && - typeof typedObj["views"]["table"] === "object" || - typeof typedObj["views"]["table"] === "function") && - typeof typedObj["views"]["table"]["isEnabled"] === "boolean" && - typeof typedObj["views"]["table"]["order"] === "number" && - typeof typedObj["confirmBeforeDelete"] === "boolean" && - (typedObj["titleWrapping"] === "normal" || - typedObj["titleWrapping"] === "break-word") && - typeof typedObj["enableClockUpdates"] === "boolean" && - typeof typedObj["enableFileIcons"] === "boolean" && - typeof typedObj["loadBodyTags"] === "boolean" && - (typedObj["currentView"] === null || - typedObj["currentView"] === TExplorerView.GRID || - typedObj["currentView"] === TExplorerView.LIST || - typedObj["currentView"] === TExplorerView.FEED || - typedObj["currentView"] === TExplorerView.TABLE) && - typeof typedObj["pageSize"] === "number" && - typeof typedObj["shouldCollapseFilters"] === "boolean" && - typeof typedObj["configDir"] === "string" && - (typedObj["pluginVersion"] === null || - typeof typedObj["pluginVersion"] === "string") && - typeof typedObj["logLevel"] === "string" - ) +export function isVaultExplorerPluginSettings( + obj: unknown +): obj is VaultExplorerPluginSettings { + const typedObj = obj as VaultExplorerPluginSettings; + return ( + ((typedObj !== null && typeof typedObj === "object") || + typeof typedObj === "function") && + ((typedObj["properties"] !== null && + typeof typedObj["properties"] === "object") || + typeof typedObj["properties"] === "function") && + typeof typedObj["properties"]["url"] === "string" && + typeof typedObj["properties"]["image"] === "string" && + typeof typedObj["properties"]["coverImageFit"] === "string" && + typeof typedObj["properties"]["createdDate"] === "string" && + typeof typedObj["properties"]["modifiedDate"] === "string" && + typeof typedObj["properties"]["custom1"] === "string" && + typeof typedObj["properties"]["custom2"] === "string" && + typeof typedObj["properties"]["custom3"] === "string" && + ((typedObj["filters"] !== null && + typeof typedObj["filters"] === "object") || + typeof typedObj["filters"] === "function") && + ((typedObj["filters"]["search"] !== null && + typeof typedObj["filters"]["search"] === "object") || + typeof typedObj["filters"]["search"] === "function") && + typeof typedObj["filters"]["search"]["isEnabled"] === "boolean" && + typeof typedObj["filters"]["search"]["value"] === "string" && + ((typedObj["filters"]["sort"] !== null && + typeof typedObj["filters"]["sort"] === "object") || + typeof typedObj["filters"]["sort"] === "function") && + typeof typedObj["filters"]["sort"]["isEnabled"] === "boolean" && + (typedObj["filters"]["sort"]["value"] === "file-name-asc" || + typedObj["filters"]["sort"]["value"] === "file-name-desc" || + typedObj["filters"]["sort"]["value"] === "modified-asc" || + typedObj["filters"]["sort"]["value"] === "modified-desc" || + typedObj["filters"]["sort"]["value"] === "created-asc" || + typedObj["filters"]["sort"]["value"] === "created-desc" || + typedObj["filters"]["sort"]["value"] === "random") && + ((typedObj["filters"]["custom"] !== null && + typeof typedObj["filters"]["custom"] === "object") || + typeof typedObj["filters"]["custom"] === "function") && + typeof typedObj["filters"]["custom"]["isEnabled"] === "boolean" && + typeof typedObj["filters"]["custom"]["selectedGroupId"] === "string" && + Array.isArray(typedObj["filters"]["custom"]["groups"]) && + typedObj["filters"]["custom"]["groups"].every( + (e: any) => + ((e !== null && typeof e === "object") || + typeof e === "function") && + typeof e["id"] === "string" && + typeof e["name"] === "string" && + Array.isArray(e["rules"]) && + e["rules"].every( + (e: any) => + (((e !== null && typeof e === "object") || + typeof e === "function") && + typeof e["id"] === "string" && + (e["operator"] === "and" || + e["operator"] === "or") && + (e["type"] === FilterRuleType.PROPERTY || + e["type"] === FilterRuleType.FOLDER || + e["type"] === FilterRuleType.FILE_NAME || + e["type"] === FilterRuleType.CONTENT) && + (e["condition"] === TextFilterCondition.IS || + e["condition"] === TextFilterCondition.IS_NOT || + e["condition"] === + TextFilterCondition.CONTAINS || + e["condition"] === + TextFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + TextFilterCondition.STARTS_WITH || + e["condition"] === + TextFilterCondition.ENDS_WITH || + e["condition"] === TextFilterCondition.EXISTS || + e["condition"] === + TextFilterCondition.DOES_NOT_EXIST || + e["condition"] === + NumberFilterCondition.IS_EQUAL || + e["condition"] === + NumberFilterCondition.IS_NOT_EQUAL || + e["condition"] === + NumberFilterCondition.IS_GREATER || + e["condition"] === + NumberFilterCondition.IS_LESS || + e["condition"] === + NumberFilterCondition.IS_GREATER_OR_EQUAL || + e["condition"] === + NumberFilterCondition.IS_LESS_OR_EQUAL || + e["condition"] === + NumberFilterCondition.EXISTS || + e["condition"] === + NumberFilterCondition.DOES_NOT_EXIST || + e["condition"] === DateFilterCondition.IS || + e["condition"] === + DateFilterCondition.IS_BEFORE || + e["condition"] === + DateFilterCondition.IS_AFTER || + e["condition"] === + DateFilterCondition.IS_ON_OR_BEFORE || + e["condition"] === + DateFilterCondition.IS_ON_OR_AFTER || + e["condition"] === DateFilterCondition.EXISTS || + e["condition"] === + DateFilterCondition.DOES_NOT_EXIST || + e["condition"] === CheckboxFilterCondition.IS || + e["condition"] === + CheckboxFilterCondition.IS_NOT || + e["condition"] === + CheckboxFilterCondition.EXISTS || + e["condition"] === + CheckboxFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ListFilterCondition.CONTAINS || + e["condition"] === + ListFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === ListFilterCondition.EXISTS || + e["condition"] === + ListFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ContentFilterCondition.CONTAINS || + e["condition"] === + ContentFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + ContentFilterCondition.IS_EMPTY || + e["condition"] === + ContentFilterCondition.IS_NOT_EMPTY || + e["condition"] === FolderFilterCondition.IS || + e["condition"] === + FolderFilterCondition.IS_NOT || + e["condition"] === FileNameFilterCondition.IS || + e["condition"] === + FileNameFilterCondition.IS_NOT || + e["condition"] === + FileNameFilterCondition.CONTAINS || + e["condition"] === + FileNameFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + FileNameFilterCondition.STARTS_WITH || + e["condition"] === + FileNameFilterCondition.ENDS_WITH) && + typeof e["isEnabled"] === "boolean" && + typeof e["value"] === "string" && + typeof e["matchWhenPropertyDNE"] === "boolean" && + e["type"] === FilterRuleType.PROPERTY && + e["propertyType"] === PropertyType.TEXT && + typeof e["propertyName"] === "string" && + (e["condition"] === TextFilterCondition.IS || + e["condition"] === TextFilterCondition.IS_NOT || + e["condition"] === + TextFilterCondition.CONTAINS || + e["condition"] === + TextFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + TextFilterCondition.STARTS_WITH || + e["condition"] === + TextFilterCondition.ENDS_WITH || + e["condition"] === TextFilterCondition.EXISTS || + e["condition"] === + TextFilterCondition.DOES_NOT_EXIST)) || + (((e !== null && typeof e === "object") || + typeof e === "function") && + typeof e["id"] === "string" && + (e["operator"] === "and" || + e["operator"] === "or") && + (e["type"] === FilterRuleType.PROPERTY || + e["type"] === FilterRuleType.FOLDER || + e["type"] === FilterRuleType.FILE_NAME || + e["type"] === FilterRuleType.CONTENT) && + (e["condition"] === TextFilterCondition.IS || + e["condition"] === TextFilterCondition.IS_NOT || + e["condition"] === + TextFilterCondition.CONTAINS || + e["condition"] === + TextFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + TextFilterCondition.STARTS_WITH || + e["condition"] === + TextFilterCondition.ENDS_WITH || + e["condition"] === TextFilterCondition.EXISTS || + e["condition"] === + TextFilterCondition.DOES_NOT_EXIST || + e["condition"] === + NumberFilterCondition.IS_EQUAL || + e["condition"] === + NumberFilterCondition.IS_NOT_EQUAL || + e["condition"] === + NumberFilterCondition.IS_GREATER || + e["condition"] === + NumberFilterCondition.IS_LESS || + e["condition"] === + NumberFilterCondition.IS_GREATER_OR_EQUAL || + e["condition"] === + NumberFilterCondition.IS_LESS_OR_EQUAL || + e["condition"] === + NumberFilterCondition.EXISTS || + e["condition"] === + NumberFilterCondition.DOES_NOT_EXIST || + e["condition"] === DateFilterCondition.IS || + e["condition"] === + DateFilterCondition.IS_BEFORE || + e["condition"] === + DateFilterCondition.IS_AFTER || + e["condition"] === + DateFilterCondition.IS_ON_OR_BEFORE || + e["condition"] === + DateFilterCondition.IS_ON_OR_AFTER || + e["condition"] === DateFilterCondition.EXISTS || + e["condition"] === + DateFilterCondition.DOES_NOT_EXIST || + e["condition"] === CheckboxFilterCondition.IS || + e["condition"] === + CheckboxFilterCondition.IS_NOT || + e["condition"] === + CheckboxFilterCondition.EXISTS || + e["condition"] === + CheckboxFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ListFilterCondition.CONTAINS || + e["condition"] === + ListFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === ListFilterCondition.EXISTS || + e["condition"] === + ListFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ContentFilterCondition.CONTAINS || + e["condition"] === + ContentFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + ContentFilterCondition.IS_EMPTY || + e["condition"] === + ContentFilterCondition.IS_NOT_EMPTY || + e["condition"] === FolderFilterCondition.IS || + e["condition"] === + FolderFilterCondition.IS_NOT || + e["condition"] === FileNameFilterCondition.IS || + e["condition"] === + FileNameFilterCondition.IS_NOT || + e["condition"] === + FileNameFilterCondition.CONTAINS || + e["condition"] === + FileNameFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + FileNameFilterCondition.STARTS_WITH || + e["condition"] === + FileNameFilterCondition.ENDS_WITH) && + typeof e["isEnabled"] === "boolean" && + typeof e["value"] === "string" && + typeof e["matchWhenPropertyDNE"] === "boolean" && + e["type"] === FilterRuleType.PROPERTY && + e["propertyType"] === PropertyType.NUMBER && + typeof e["propertyName"] === "string" && + (e["condition"] === + NumberFilterCondition.IS_EQUAL || + e["condition"] === + NumberFilterCondition.IS_NOT_EQUAL || + e["condition"] === + NumberFilterCondition.IS_GREATER || + e["condition"] === + NumberFilterCondition.IS_LESS || + e["condition"] === + NumberFilterCondition.IS_GREATER_OR_EQUAL || + e["condition"] === + NumberFilterCondition.IS_LESS_OR_EQUAL || + e["condition"] === + NumberFilterCondition.EXISTS || + e["condition"] === + NumberFilterCondition.DOES_NOT_EXIST)) || + (((e !== null && typeof e === "object") || + typeof e === "function") && + typeof e["id"] === "string" && + (e["operator"] === "and" || + e["operator"] === "or") && + (e["type"] === FilterRuleType.PROPERTY || + e["type"] === FilterRuleType.FOLDER || + e["type"] === FilterRuleType.FILE_NAME || + e["type"] === FilterRuleType.CONTENT) && + (e["condition"] === TextFilterCondition.IS || + e["condition"] === TextFilterCondition.IS_NOT || + e["condition"] === + TextFilterCondition.CONTAINS || + e["condition"] === + TextFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + TextFilterCondition.STARTS_WITH || + e["condition"] === + TextFilterCondition.ENDS_WITH || + e["condition"] === TextFilterCondition.EXISTS || + e["condition"] === + TextFilterCondition.DOES_NOT_EXIST || + e["condition"] === + NumberFilterCondition.IS_EQUAL || + e["condition"] === + NumberFilterCondition.IS_NOT_EQUAL || + e["condition"] === + NumberFilterCondition.IS_GREATER || + e["condition"] === + NumberFilterCondition.IS_LESS || + e["condition"] === + NumberFilterCondition.IS_GREATER_OR_EQUAL || + e["condition"] === + NumberFilterCondition.IS_LESS_OR_EQUAL || + e["condition"] === + NumberFilterCondition.EXISTS || + e["condition"] === + NumberFilterCondition.DOES_NOT_EXIST || + e["condition"] === DateFilterCondition.IS || + e["condition"] === + DateFilterCondition.IS_BEFORE || + e["condition"] === + DateFilterCondition.IS_AFTER || + e["condition"] === + DateFilterCondition.IS_ON_OR_BEFORE || + e["condition"] === + DateFilterCondition.IS_ON_OR_AFTER || + e["condition"] === DateFilterCondition.EXISTS || + e["condition"] === + DateFilterCondition.DOES_NOT_EXIST || + e["condition"] === CheckboxFilterCondition.IS || + e["condition"] === + CheckboxFilterCondition.IS_NOT || + e["condition"] === + CheckboxFilterCondition.EXISTS || + e["condition"] === + CheckboxFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ListFilterCondition.CONTAINS || + e["condition"] === + ListFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === ListFilterCondition.EXISTS || + e["condition"] === + ListFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ContentFilterCondition.CONTAINS || + e["condition"] === + ContentFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + ContentFilterCondition.IS_EMPTY || + e["condition"] === + ContentFilterCondition.IS_NOT_EMPTY || + e["condition"] === FolderFilterCondition.IS || + e["condition"] === + FolderFilterCondition.IS_NOT || + e["condition"] === FileNameFilterCondition.IS || + e["condition"] === + FileNameFilterCondition.IS_NOT || + e["condition"] === + FileNameFilterCondition.CONTAINS || + e["condition"] === + FileNameFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + FileNameFilterCondition.STARTS_WITH || + e["condition"] === + FileNameFilterCondition.ENDS_WITH) && + typeof e["isEnabled"] === "boolean" && + typeof e["value"] === "string" && + typeof e["matchWhenPropertyDNE"] === "boolean" && + e["type"] === FilterRuleType.PROPERTY && + e["propertyType"] === PropertyType.LIST && + typeof e["propertyName"] === "string" && + (e["condition"] === ListFilterCondition.CONTAINS || + e["condition"] === + ListFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === ListFilterCondition.EXISTS || + e["condition"] === + ListFilterCondition.DOES_NOT_EXIST)) || + (((e !== null && typeof e === "object") || + typeof e === "function") && + typeof e["id"] === "string" && + (e["operator"] === "and" || + e["operator"] === "or") && + (e["type"] === FilterRuleType.PROPERTY || + e["type"] === FilterRuleType.FOLDER || + e["type"] === FilterRuleType.FILE_NAME || + e["type"] === FilterRuleType.CONTENT) && + (e["condition"] === TextFilterCondition.IS || + e["condition"] === TextFilterCondition.IS_NOT || + e["condition"] === + TextFilterCondition.CONTAINS || + e["condition"] === + TextFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + TextFilterCondition.STARTS_WITH || + e["condition"] === + TextFilterCondition.ENDS_WITH || + e["condition"] === TextFilterCondition.EXISTS || + e["condition"] === + TextFilterCondition.DOES_NOT_EXIST || + e["condition"] === + NumberFilterCondition.IS_EQUAL || + e["condition"] === + NumberFilterCondition.IS_NOT_EQUAL || + e["condition"] === + NumberFilterCondition.IS_GREATER || + e["condition"] === + NumberFilterCondition.IS_LESS || + e["condition"] === + NumberFilterCondition.IS_GREATER_OR_EQUAL || + e["condition"] === + NumberFilterCondition.IS_LESS_OR_EQUAL || + e["condition"] === + NumberFilterCondition.EXISTS || + e["condition"] === + NumberFilterCondition.DOES_NOT_EXIST || + e["condition"] === DateFilterCondition.IS || + e["condition"] === + DateFilterCondition.IS_BEFORE || + e["condition"] === + DateFilterCondition.IS_AFTER || + e["condition"] === + DateFilterCondition.IS_ON_OR_BEFORE || + e["condition"] === + DateFilterCondition.IS_ON_OR_AFTER || + e["condition"] === DateFilterCondition.EXISTS || + e["condition"] === + DateFilterCondition.DOES_NOT_EXIST || + e["condition"] === CheckboxFilterCondition.IS || + e["condition"] === + CheckboxFilterCondition.IS_NOT || + e["condition"] === + CheckboxFilterCondition.EXISTS || + e["condition"] === + CheckboxFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ListFilterCondition.CONTAINS || + e["condition"] === + ListFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === ListFilterCondition.EXISTS || + e["condition"] === + ListFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ContentFilterCondition.CONTAINS || + e["condition"] === + ContentFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + ContentFilterCondition.IS_EMPTY || + e["condition"] === + ContentFilterCondition.IS_NOT_EMPTY || + e["condition"] === FolderFilterCondition.IS || + e["condition"] === + FolderFilterCondition.IS_NOT || + e["condition"] === FileNameFilterCondition.IS || + e["condition"] === + FileNameFilterCondition.IS_NOT || + e["condition"] === + FileNameFilterCondition.CONTAINS || + e["condition"] === + FileNameFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + FileNameFilterCondition.STARTS_WITH || + e["condition"] === + FileNameFilterCondition.ENDS_WITH) && + typeof e["isEnabled"] === "boolean" && + typeof e["value"] === "string" && + typeof e["matchWhenPropertyDNE"] === "boolean" && + e["type"] === FilterRuleType.PROPERTY && + e["propertyType"] === PropertyType.CHECKBOX && + typeof e["propertyName"] === "string" && + (e["condition"] === CheckboxFilterCondition.IS || + e["condition"] === + CheckboxFilterCondition.IS_NOT || + e["condition"] === + CheckboxFilterCondition.EXISTS || + e["condition"] === + CheckboxFilterCondition.DOES_NOT_EXIST)) || + (((e !== null && typeof e === "object") || + typeof e === "function") && + typeof e["id"] === "string" && + (e["operator"] === "and" || + e["operator"] === "or") && + (e["type"] === FilterRuleType.PROPERTY || + e["type"] === FilterRuleType.FOLDER || + e["type"] === FilterRuleType.FILE_NAME || + e["type"] === FilterRuleType.CONTENT) && + (e["condition"] === TextFilterCondition.IS || + e["condition"] === TextFilterCondition.IS_NOT || + e["condition"] === + TextFilterCondition.CONTAINS || + e["condition"] === + TextFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + TextFilterCondition.STARTS_WITH || + e["condition"] === + TextFilterCondition.ENDS_WITH || + e["condition"] === TextFilterCondition.EXISTS || + e["condition"] === + TextFilterCondition.DOES_NOT_EXIST || + e["condition"] === + NumberFilterCondition.IS_EQUAL || + e["condition"] === + NumberFilterCondition.IS_NOT_EQUAL || + e["condition"] === + NumberFilterCondition.IS_GREATER || + e["condition"] === + NumberFilterCondition.IS_LESS || + e["condition"] === + NumberFilterCondition.IS_GREATER_OR_EQUAL || + e["condition"] === + NumberFilterCondition.IS_LESS_OR_EQUAL || + e["condition"] === + NumberFilterCondition.EXISTS || + e["condition"] === + NumberFilterCondition.DOES_NOT_EXIST || + e["condition"] === DateFilterCondition.IS || + e["condition"] === + DateFilterCondition.IS_BEFORE || + e["condition"] === + DateFilterCondition.IS_AFTER || + e["condition"] === + DateFilterCondition.IS_ON_OR_BEFORE || + e["condition"] === + DateFilterCondition.IS_ON_OR_AFTER || + e["condition"] === DateFilterCondition.EXISTS || + e["condition"] === + DateFilterCondition.DOES_NOT_EXIST || + e["condition"] === CheckboxFilterCondition.IS || + e["condition"] === + CheckboxFilterCondition.IS_NOT || + e["condition"] === + CheckboxFilterCondition.EXISTS || + e["condition"] === + CheckboxFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ListFilterCondition.CONTAINS || + e["condition"] === + ListFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === ListFilterCondition.EXISTS || + e["condition"] === + ListFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ContentFilterCondition.CONTAINS || + e["condition"] === + ContentFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + ContentFilterCondition.IS_EMPTY || + e["condition"] === + ContentFilterCondition.IS_NOT_EMPTY || + e["condition"] === FolderFilterCondition.IS || + e["condition"] === + FolderFilterCondition.IS_NOT || + e["condition"] === FileNameFilterCondition.IS || + e["condition"] === + FileNameFilterCondition.IS_NOT || + e["condition"] === + FileNameFilterCondition.CONTAINS || + e["condition"] === + FileNameFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + FileNameFilterCondition.STARTS_WITH || + e["condition"] === + FileNameFilterCondition.ENDS_WITH) && + typeof e["isEnabled"] === "boolean" && + typeof e["value"] === "string" && + typeof e["matchWhenPropertyDNE"] === "boolean" && + e["type"] === FilterRuleType.PROPERTY && + (e["propertyType"] === PropertyType.DATE || + e["propertyType"] === PropertyType.DATETIME) && + typeof e["propertyName"] === "string" && + (e["condition"] === DateFilterCondition.IS || + e["condition"] === + DateFilterCondition.IS_BEFORE || + e["condition"] === + DateFilterCondition.IS_AFTER || + e["condition"] === + DateFilterCondition.IS_ON_OR_BEFORE || + e["condition"] === + DateFilterCondition.IS_ON_OR_AFTER || + e["condition"] === DateFilterCondition.EXISTS || + e["condition"] === + DateFilterCondition.DOES_NOT_EXIST) && + typeof e["valueData"] === "string") || + (((e !== null && typeof e === "object") || + typeof e === "function") && + typeof e["id"] === "string" && + (e["operator"] === "and" || + e["operator"] === "or") && + (e["type"] === FilterRuleType.PROPERTY || + e["type"] === FilterRuleType.FOLDER || + e["type"] === FilterRuleType.FILE_NAME || + e["type"] === FilterRuleType.CONTENT) && + (e["condition"] === TextFilterCondition.IS || + e["condition"] === TextFilterCondition.IS_NOT || + e["condition"] === + TextFilterCondition.CONTAINS || + e["condition"] === + TextFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + TextFilterCondition.STARTS_WITH || + e["condition"] === + TextFilterCondition.ENDS_WITH || + e["condition"] === TextFilterCondition.EXISTS || + e["condition"] === + TextFilterCondition.DOES_NOT_EXIST || + e["condition"] === + NumberFilterCondition.IS_EQUAL || + e["condition"] === + NumberFilterCondition.IS_NOT_EQUAL || + e["condition"] === + NumberFilterCondition.IS_GREATER || + e["condition"] === + NumberFilterCondition.IS_LESS || + e["condition"] === + NumberFilterCondition.IS_GREATER_OR_EQUAL || + e["condition"] === + NumberFilterCondition.IS_LESS_OR_EQUAL || + e["condition"] === + NumberFilterCondition.EXISTS || + e["condition"] === + NumberFilterCondition.DOES_NOT_EXIST || + e["condition"] === DateFilterCondition.IS || + e["condition"] === + DateFilterCondition.IS_BEFORE || + e["condition"] === + DateFilterCondition.IS_AFTER || + e["condition"] === + DateFilterCondition.IS_ON_OR_BEFORE || + e["condition"] === + DateFilterCondition.IS_ON_OR_AFTER || + e["condition"] === DateFilterCondition.EXISTS || + e["condition"] === + DateFilterCondition.DOES_NOT_EXIST || + e["condition"] === CheckboxFilterCondition.IS || + e["condition"] === + CheckboxFilterCondition.IS_NOT || + e["condition"] === + CheckboxFilterCondition.EXISTS || + e["condition"] === + CheckboxFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ListFilterCondition.CONTAINS || + e["condition"] === + ListFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === ListFilterCondition.EXISTS || + e["condition"] === + ListFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ContentFilterCondition.CONTAINS || + e["condition"] === + ContentFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + ContentFilterCondition.IS_EMPTY || + e["condition"] === + ContentFilterCondition.IS_NOT_EMPTY || + e["condition"] === FolderFilterCondition.IS || + e["condition"] === + FolderFilterCondition.IS_NOT || + e["condition"] === FileNameFilterCondition.IS || + e["condition"] === + FileNameFilterCondition.IS_NOT || + e["condition"] === + FileNameFilterCondition.CONTAINS || + e["condition"] === + FileNameFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + FileNameFilterCondition.STARTS_WITH || + e["condition"] === + FileNameFilterCondition.ENDS_WITH) && + typeof e["isEnabled"] === "boolean" && + typeof e["value"] === "string" && + typeof e["matchWhenPropertyDNE"] === "boolean" && + e["type"] === FilterRuleType.FOLDER && + (e["condition"] === FolderFilterCondition.IS || + e["condition"] === + FolderFilterCondition.IS_NOT) && + typeof e["includeSubfolders"] === "boolean") || + (((e !== null && typeof e === "object") || + typeof e === "function") && + typeof e["id"] === "string" && + (e["operator"] === "and" || + e["operator"] === "or") && + (e["type"] === FilterRuleType.PROPERTY || + e["type"] === FilterRuleType.FOLDER || + e["type"] === FilterRuleType.FILE_NAME || + e["type"] === FilterRuleType.CONTENT) && + (e["condition"] === TextFilterCondition.IS || + e["condition"] === TextFilterCondition.IS_NOT || + e["condition"] === + TextFilterCondition.CONTAINS || + e["condition"] === + TextFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + TextFilterCondition.STARTS_WITH || + e["condition"] === + TextFilterCondition.ENDS_WITH || + e["condition"] === TextFilterCondition.EXISTS || + e["condition"] === + TextFilterCondition.DOES_NOT_EXIST || + e["condition"] === + NumberFilterCondition.IS_EQUAL || + e["condition"] === + NumberFilterCondition.IS_NOT_EQUAL || + e["condition"] === + NumberFilterCondition.IS_GREATER || + e["condition"] === + NumberFilterCondition.IS_LESS || + e["condition"] === + NumberFilterCondition.IS_GREATER_OR_EQUAL || + e["condition"] === + NumberFilterCondition.IS_LESS_OR_EQUAL || + e["condition"] === + NumberFilterCondition.EXISTS || + e["condition"] === + NumberFilterCondition.DOES_NOT_EXIST || + e["condition"] === DateFilterCondition.IS || + e["condition"] === + DateFilterCondition.IS_BEFORE || + e["condition"] === + DateFilterCondition.IS_AFTER || + e["condition"] === + DateFilterCondition.IS_ON_OR_BEFORE || + e["condition"] === + DateFilterCondition.IS_ON_OR_AFTER || + e["condition"] === DateFilterCondition.EXISTS || + e["condition"] === + DateFilterCondition.DOES_NOT_EXIST || + e["condition"] === CheckboxFilterCondition.IS || + e["condition"] === + CheckboxFilterCondition.IS_NOT || + e["condition"] === + CheckboxFilterCondition.EXISTS || + e["condition"] === + CheckboxFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ListFilterCondition.CONTAINS || + e["condition"] === + ListFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === ListFilterCondition.EXISTS || + e["condition"] === + ListFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ContentFilterCondition.CONTAINS || + e["condition"] === + ContentFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + ContentFilterCondition.IS_EMPTY || + e["condition"] === + ContentFilterCondition.IS_NOT_EMPTY || + e["condition"] === FolderFilterCondition.IS || + e["condition"] === + FolderFilterCondition.IS_NOT || + e["condition"] === FileNameFilterCondition.IS || + e["condition"] === + FileNameFilterCondition.IS_NOT || + e["condition"] === + FileNameFilterCondition.CONTAINS || + e["condition"] === + FileNameFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + FileNameFilterCondition.STARTS_WITH || + e["condition"] === + FileNameFilterCondition.ENDS_WITH) && + typeof e["isEnabled"] === "boolean" && + typeof e["value"] === "string" && + typeof e["matchWhenPropertyDNE"] === "boolean" && + e["type"] === FilterRuleType.FILE_NAME && + (e["condition"] === FileNameFilterCondition.IS || + e["condition"] === + FileNameFilterCondition.IS_NOT || + e["condition"] === + FileNameFilterCondition.CONTAINS || + e["condition"] === + FileNameFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + FileNameFilterCondition.STARTS_WITH || + e["condition"] === + FileNameFilterCondition.ENDS_WITH)) || + (((e !== null && typeof e === "object") || + typeof e === "function") && + typeof e["id"] === "string" && + (e["operator"] === "and" || + e["operator"] === "or") && + (e["type"] === FilterRuleType.PROPERTY || + e["type"] === FilterRuleType.FOLDER || + e["type"] === FilterRuleType.FILE_NAME || + e["type"] === FilterRuleType.CONTENT) && + (e["condition"] === TextFilterCondition.IS || + e["condition"] === TextFilterCondition.IS_NOT || + e["condition"] === + TextFilterCondition.CONTAINS || + e["condition"] === + TextFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + TextFilterCondition.STARTS_WITH || + e["condition"] === + TextFilterCondition.ENDS_WITH || + e["condition"] === TextFilterCondition.EXISTS || + e["condition"] === + TextFilterCondition.DOES_NOT_EXIST || + e["condition"] === + NumberFilterCondition.IS_EQUAL || + e["condition"] === + NumberFilterCondition.IS_NOT_EQUAL || + e["condition"] === + NumberFilterCondition.IS_GREATER || + e["condition"] === + NumberFilterCondition.IS_LESS || + e["condition"] === + NumberFilterCondition.IS_GREATER_OR_EQUAL || + e["condition"] === + NumberFilterCondition.IS_LESS_OR_EQUAL || + e["condition"] === + NumberFilterCondition.EXISTS || + e["condition"] === + NumberFilterCondition.DOES_NOT_EXIST || + e["condition"] === DateFilterCondition.IS || + e["condition"] === + DateFilterCondition.IS_BEFORE || + e["condition"] === + DateFilterCondition.IS_AFTER || + e["condition"] === + DateFilterCondition.IS_ON_OR_BEFORE || + e["condition"] === + DateFilterCondition.IS_ON_OR_AFTER || + e["condition"] === DateFilterCondition.EXISTS || + e["condition"] === + DateFilterCondition.DOES_NOT_EXIST || + e["condition"] === CheckboxFilterCondition.IS || + e["condition"] === + CheckboxFilterCondition.IS_NOT || + e["condition"] === + CheckboxFilterCondition.EXISTS || + e["condition"] === + CheckboxFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ListFilterCondition.CONTAINS || + e["condition"] === + ListFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === ListFilterCondition.EXISTS || + e["condition"] === + ListFilterCondition.DOES_NOT_EXIST || + e["condition"] === + ContentFilterCondition.CONTAINS || + e["condition"] === + ContentFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + ContentFilterCondition.IS_EMPTY || + e["condition"] === + ContentFilterCondition.IS_NOT_EMPTY || + e["condition"] === FolderFilterCondition.IS || + e["condition"] === + FolderFilterCondition.IS_NOT || + e["condition"] === FileNameFilterCondition.IS || + e["condition"] === + FileNameFilterCondition.IS_NOT || + e["condition"] === + FileNameFilterCondition.CONTAINS || + e["condition"] === + FileNameFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + FileNameFilterCondition.STARTS_WITH || + e["condition"] === + FileNameFilterCondition.ENDS_WITH) && + typeof e["isEnabled"] === "boolean" && + typeof e["value"] === "string" && + typeof e["matchWhenPropertyDNE"] === "boolean" && + e["type"] === FilterRuleType.CONTENT && + (e["condition"] === + ContentFilterCondition.CONTAINS || + e["condition"] === + ContentFilterCondition.DOES_NOT_CONTAIN || + e["condition"] === + ContentFilterCondition.IS_EMPTY || + e["condition"] === + ContentFilterCondition.IS_NOT_EMPTY)) + ) && + typeof e["isEnabled"] === "boolean" && + typeof e["isSticky"] === "boolean" + ) && + ((typedObj["views"] !== null && + typeof typedObj["views"] === "object") || + typeof typedObj["views"] === "function") && + ((typedObj["views"]["grid"] !== null && + typeof typedObj["views"]["grid"] === "object") || + typeof typedObj["views"]["grid"] === "function") && + typeof typedObj["views"]["grid"]["isEnabled"] === "boolean" && + typeof typedObj["views"]["grid"]["order"] === "number" && + Array.isArray(typedObj["views"]["grid"]["coverImageSources"]) && + typedObj["views"]["grid"]["coverImageSources"].every( + (e: any) => + ((e !== null && typeof e === "object") || + typeof e === "function") && + (e["type"] === "image-property" || + e["type"] === "url-property" || + e["type"] === "frontmatter" || + e["type"] === "body") && + typeof e["isEnabled"] === "boolean" + ) && + (typedObj["views"]["grid"]["coverImageFit"] === "cover" || + typedObj["views"]["grid"]["coverImageFit"] === "contain") && + typeof typedObj["views"]["grid"]["loadSocialMediaImage"] === + "boolean" && + ((typedObj["views"]["list"] !== null && + typeof typedObj["views"]["list"] === "object") || + typeof typedObj["views"]["list"] === "function") && + typeof typedObj["views"]["list"]["isEnabled"] === "boolean" && + typeof typedObj["views"]["list"]["order"] === "number" && + typeof typedObj["views"]["list"]["showTags"] === "boolean" && + ((typedObj["views"]["feed"] !== null && + typeof typedObj["views"]["feed"] === "object") || + typeof typedObj["views"]["feed"] === "function") && + typeof typedObj["views"]["feed"]["isEnabled"] === "boolean" && + typeof typedObj["views"]["feed"]["order"] === "number" && + (typedObj["views"]["feed"]["collapseStyle"] === "no-new-lines" || + typedObj["views"]["feed"]["collapseStyle"] === + "no-extra-new-lines") && + typeof typedObj["views"]["feed"]["removeH1"] === "boolean" && + typeof typedObj["views"]["feed"]["lineClampSmall"] === "number" && + typeof typedObj["views"]["feed"]["lineClampMedium"] === "number" && + typeof typedObj["views"]["feed"]["lineClampLarge"] === "number" && + ((typedObj["views"]["table"] !== null && + typeof typedObj["views"]["table"] === "object") || + typeof typedObj["views"]["table"] === "function") && + typeof typedObj["views"]["table"]["isEnabled"] === "boolean" && + typeof typedObj["views"]["table"]["order"] === "number" && + typeof typedObj["confirmBeforeDelete"] === "boolean" && + (typedObj["titleWrapping"] === "normal" || + typedObj["titleWrapping"] === "break-word") && + typeof typedObj["enableClockUpdates"] === "boolean" && + typeof typedObj["enableFileIcons"] === "boolean" && + typeof typedObj["loadBodyTags"] === "boolean" && + (typedObj["currentView"] === null || + typedObj["currentView"] === TExplorerView.GRID || + typedObj["currentView"] === TExplorerView.LIST || + typedObj["currentView"] === TExplorerView.FEED || + typedObj["currentView"] === TExplorerView.TABLE) && + typeof typedObj["pageSize"] === "number" && + typeof typedObj["shouldCollapseFilters"] === "boolean" && + typeof typedObj["configDir"] === "string" && + (typedObj["pluginVersion"] === null || + typeof typedObj["pluginVersion"] === "string") && + typeof typedObj["logLevel"] === "string" + ); } diff --git a/tests/integration/preform-migration.test.ts b/tests/integration/preform-migration.test.ts index 4969363..4e05a84 100644 --- a/tests/integration/preform-migration.test.ts +++ b/tests/integration/preform-migration.test.ts @@ -2,7 +2,7 @@ import { preformMigrations } from "src/migrations"; import { isVaultExplorerPluginSettings } from "src/types/index.guard"; import { TextFilterCondition_0_3_3, - VaultExplorerPluginSettings_0_3_3, + type VaultExplorerPluginSettings_0_3_3, } from "src/types/types-0.3.3"; import { CheckboxFilterCondition_0_5_5, @@ -11,7 +11,7 @@ import { NumberFilterCondition_0_5_5, PropertyFilterType_0_5_5, TextFilterCondition_0_5_5, - VaultExplorerPluginSettings_0_5_5, + type VaultExplorerPluginSettings_0_5_5, } from "src/types/types-0.5.5"; describe("preformMigrations", () => { diff --git a/tests/unit/load-property-value.test.ts b/tests/unit/load-property-value.test.ts index 28f6950..7b5a169 100644 --- a/tests/unit/load-property-value.test.ts +++ b/tests/unit/load-property-value.test.ts @@ -1,6 +1,6 @@ -import { FrontMatterCache } from "obsidian"; -import { PropertyType } from "src/types"; +import type { FrontMatterCache } from "obsidian"; import { loadPropertyValue } from "src/svelte/shared/services/load-property-value"; +import { PropertyType } from "src/types"; describe("loadPropertyValue", () => { it("returns null if frontmatter is undefined", () => { From c79f52e900023e5c63e313c2db21a4a264ae3fd7 Mon Sep 17 00:00:00 2001 From: DecafDev <40307803+decaf-dev@users.noreply.github.com> Date: Sun, 30 Mar 2025 08:42:12 -0600 Subject: [PATCH 05/10] feat: remove premium features (#380) --- README.md | 7 - src/event/types.ts | 1 - src/main.ts | 8 - src/obsidian/styles.css | 3 - src/obsidian/vault-explorer-settings-tab.ts | 11 -- src/svelte/app/components/feed-card.svelte | 10 +- src/svelte/app/components/feed-view.svelte | 2 - src/svelte/app/components/grid-card.svelte | 22 +-- src/svelte/app/components/grid-view.svelte | 2 - src/svelte/app/components/list-item.svelte | 28 ++-- src/svelte/app/components/list-view.svelte | 2 - src/svelte/app/components/table-view.svelte | 10 +- src/svelte/app/index.svelte | 26 +--- src/svelte/app/services/context-menu.ts | 9 +- .../components/content-filter.svelte | 20 --- .../components/filter-rule.svelte | 15 +- src/svelte/license-key-app/index.svelte | 129 ---------------- .../shared/components/premium-link.svelte | 3 - .../shared/components/premium-message.svelte | 9 -- src/svelte/shared/services/license.ts | 142 ------------------ 20 files changed, 23 insertions(+), 436 deletions(-) delete mode 100644 src/obsidian/styles.css delete mode 100644 src/svelte/license-key-app/index.svelte delete mode 100644 src/svelte/shared/components/premium-link.svelte delete mode 100644 src/svelte/shared/components/premium-message.svelte delete mode 100644 src/svelte/shared/services/license.ts diff --git a/README.md b/README.md index 9f5bf59..6c35010 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,6 @@ Vault Explorer is a work in progress. Please check the GitHub repository and doc - [Screenshots](#screenshots) - [Installation](#installation) - [Usage](#usage) -- [Premium](#premium) - [Features](#features) - [Network use](#network-use) - [Contributing](#contributing) @@ -79,12 +78,6 @@ Vault Explorer is a work in progress. Please check the GitHub repository and doc Click the compass button on the left-hand sidebar to open the vault explorer view. -## Premium - -Premium features are available to users who purchase a [Vault Explorer license](https://vaultexplorer.com/docs/premium/). - -Please do not share your license key with anyone. Shared license keys will be deactivated. - ## Features | Name | Categories | Documented | diff --git a/src/event/types.ts b/src/event/types.ts index 5d92567..737858b 100644 --- a/src/event/types.ts +++ b/src/event/types.ts @@ -14,7 +14,6 @@ export enum PluginEvent { FEED_CONTENT_SETTING_CHANGE = "feed-content-setting-change", COVER_IMAGE_SOURCE_SETTING_CHANGE = "cover-image-source-setting-change", PROPERTY_SETTING_CHANGE = "property-setting-change", - LICENSE_KEY_VALIDATION_CHANGE = "license-key-validation-change", CLOCK_UPDATES_SETTING_CHANGE = "clock-updates-setting-change", FILTER_TOGGLE_SETTING_CHANGE = "filter-toggle-setting-change", SCROLL_BUTTONS_SETTING_CHANGE = "scroll-buttons-setting-change", diff --git a/src/main.ts b/src/main.ts index 9443970..d880aba 100644 --- a/src/main.ts +++ b/src/main.ts @@ -16,7 +16,6 @@ import { formatMessageForLogger, stringToLogLevel } from "./logger"; import { preformMigrations } from "./migrations"; import "./styles.css"; import { clearSMICache } from "./svelte/app/services/smi-cache"; -import License from "./svelte/shared/services/license"; import store from "./svelte/shared/services/store"; import type { VaultExplorerPluginSettings } from "./types"; import { isVersionLessThan } from "./utils"; @@ -31,8 +30,6 @@ export default class VaultExplorerPlugin extends Plugin { store.plugin.set(this); - await License.getInstance().loadStoredKey(); - this.registerView( VAULT_EXPLORER_VIEW, (leaf) => new VaultExplorerView(leaf, this) @@ -202,11 +199,6 @@ export default class VaultExplorerPlugin extends Plugin { //Clean up the old device id from the versioning system const LOCAL_STORAGE_ID = "vault-explorer-id"; localStorage.removeItem(LOCAL_STORAGE_ID); - - //Clean up the old device id from the versioning system - const LOCAL_STORAGE_LICENSE_KEY = - "vault-explorer-license-key"; - localStorage.removeItem(LOCAL_STORAGE_LICENSE_KEY); } if (isVersionLessThan(loadedVersion, "1.37.1")) { console.log("Clearing image cache"); diff --git a/src/obsidian/styles.css b/src/obsidian/styles.css deleted file mode 100644 index 95b4876..0000000 --- a/src/obsidian/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -.vault-explorer-premium-setting { - color: var(--text-accent); -} diff --git a/src/obsidian/vault-explorer-settings-tab.ts b/src/obsidian/vault-explorer-settings-tab.ts index fcadee1..35e2846 100644 --- a/src/obsidian/vault-explorer-settings-tab.ts +++ b/src/obsidian/vault-explorer-settings-tab.ts @@ -24,21 +24,17 @@ import EventManager from "src/event/event-manager"; import { PluginEvent } from "src/event/types"; import { TExplorerView } from "src/types"; import ImageSourceApp from "../svelte/image-source-app/index.svelte"; -import LicenseKeyApp from "../svelte/license-key-app/index.svelte"; import { clearSMICache } from "src/svelte/app/services/smi-cache"; -import "./styles.css"; export default class VaultExplorerSettingsTab extends PluginSettingTab { plugin: VaultExplorerPlugin; - licenseKeyApp: LicenseKeyApp | null; imageSourceApp: ImageSourceApp | null; constructor(app: App, plugin: VaultExplorerPlugin) { super(app, plugin); this.plugin = plugin; - this.licenseKeyApp = null; this.imageSourceApp = null; } @@ -629,12 +625,6 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { }) ); - new Setting(containerEl).setName("Premium").setHeading(); - - this.licenseKeyApp = new LicenseKeyApp({ - target: containerEl, - }); - new Setting(containerEl).setName("Debugging").setHeading(); new Setting(containerEl) .setName("Log level") @@ -693,7 +683,6 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { } onClose() { - this.licenseKeyApp?.$destroy(); this.imageSourceApp?.$destroy(); } diff --git a/src/svelte/app/components/feed-card.svelte b/src/svelte/app/components/feed-card.svelte index 6f8a0e9..18f9303 100644 --- a/src/svelte/app/components/feed-card.svelte +++ b/src/svelte/app/components/feed-card.svelte @@ -35,7 +35,6 @@ export let path: string; export let createdMillis: number; export let content: string | null; - export let enablePremiumFeatures: boolean; let ref: HTMLElement | null = null; let enableFileIcons = false; @@ -147,14 +146,7 @@ function handleCardContextMenu(e: Event) { const nativeEvent = e as MouseEvent; const { app, settings } = plugin; - openContextMenu( - nativeEvent, - path, - app, - settings, - enablePremiumFeatures, - {}, - ); + openContextMenu(nativeEvent, path, app, settings, {}); } function handleCardMouseOver(e: MouseEvent) { diff --git a/src/svelte/app/components/feed-view.svelte b/src/svelte/app/components/feed-view.svelte index 586af68..b610739 100644 --- a/src/svelte/app/components/feed-view.svelte +++ b/src/svelte/app/components/feed-view.svelte @@ -5,7 +5,6 @@ export let data: FileRenderData[] = []; export let startIndex; export let pageLength; - export let enablePremiumFeatures: boolean; let filteredItems: FileRenderData[] = []; @@ -24,7 +23,6 @@
{#each filteredItems as fileRenderData (fileRenderData.id)} {#each filteredItems as fileRenderData (fileRenderData.id)} - import VaultExplorerPlugin from "src/main"; - import store from "../../shared/services/store"; - import Tag from "src/svelte/shared/components/tag.svelte"; - import Wrap from "src/svelte/shared/components/wrap.svelte"; - import Icon from "src/svelte/shared/components/icon.svelte"; - import Stack from "src/svelte/shared/components/stack.svelte"; - import { getIconIdForFile } from "../services/file-icon"; - import { onMount } from "svelte"; + import { HOVER_LINK_SOURCE_ID } from "src/constants"; import EventManager from "src/event/event-manager"; import { PluginEvent } from "src/event/types"; + import VaultExplorerPlugin from "src/main"; + import Icon from "src/svelte/shared/components/icon.svelte"; + import Stack from "src/svelte/shared/components/stack.svelte"; + import Tag from "src/svelte/shared/components/tag.svelte"; + import Wrap from "src/svelte/shared/components/wrap.svelte"; + import { onMount } from "svelte"; + import store from "../../shared/services/store"; import { openContextMenu } from "../services/context-menu"; + import { getIconIdForFile } from "../services/file-icon"; import { openInCurrentTab } from "../services/open-file"; - import { HOVER_LINK_SOURCE_ID } from "src/constants"; export let displayName: string; export let baseName: string; @@ -21,7 +21,6 @@ let showTags: boolean; export let isSmallScreenSize: boolean; - export let enablePremiumFeatures: boolean; let enableFileIcons: boolean = false; let ref: HTMLElement | null = null; @@ -78,14 +77,7 @@ function handleItemContextMenu(e: Event) { const nativeEvent = e as MouseEvent; const { app, settings } = plugin; - openContextMenu( - nativeEvent, - path, - app, - settings, - enablePremiumFeatures, - {}, - ); + openContextMenu(nativeEvent, path, app, settings, {}); } function handleItemMouseOver(e: MouseEvent) { diff --git a/src/svelte/app/components/list-view.svelte b/src/svelte/app/components/list-view.svelte index a778e27..a1b21a9 100644 --- a/src/svelte/app/components/list-view.svelte +++ b/src/svelte/app/components/list-view.svelte @@ -7,7 +7,6 @@ export let startIndex: number; export let pageLength: number; export let isSmallScreenSize: boolean; - export let enablePremiumFeatures: boolean; let filteredItems: FileRenderData[] = []; @@ -26,7 +25,6 @@
{#each filteredItems as fileRenderData (fileRenderData.id)} { - enablePremiumFeatures = hasValidKey; - }); - randomFileSortStore.subscribe((value) => { randomSortCache = value; }); @@ -1046,7 +1038,6 @@ data={renderData} {startIndex} {pageLength} - {enablePremiumFeatures} on:coverImageFitChange={handleCoverImageFitChange} /> {:else if currentView === "list"} @@ -1055,22 +1046,11 @@ {isSmallScreenSize} {startIndex} {pageLength} - {enablePremiumFeatures} /> {:else if currentView === "table"} - + {:else if currentView === "feed"} - + {/if} { item.setTitle("Delete"); item.onClick(async () => { - if (!enablePremiumFeatures) { - new Notice( - "This feature requires a premium Vault Explorer license." - ); - return; - } if (confirmBeforeDelete) { if (confirm("Are you sure you want to delete this file?")) { await deleteFile(app, filePath); diff --git a/src/svelte/custom-filter-app/components/content-filter.svelte b/src/svelte/custom-filter-app/components/content-filter.svelte index e8c36d0..33a27c8 100644 --- a/src/svelte/custom-filter-app/components/content-filter.svelte +++ b/src/svelte/custom-filter-app/components/content-filter.svelte @@ -15,20 +15,9 @@ export let condition: FilterCondition; export let isEnabled: boolean; - import PremiumLink from "src/svelte/shared/components/premium-link.svelte"; - import PremiumMessage from "src/svelte/shared/components/premium-message.svelte"; - import License from "src/svelte/shared/services/license"; import { createEventDispatcher } from "svelte"; const dispatch = createEventDispatcher(); - let hasValidLicenseKey = false; - - License.getInstance() - .getHasValidKeyStore() - .subscribe((hasValidKey) => { - hasValidLicenseKey = hasValidKey; - }); - function handleValueChange(e: Event) { const value = (e.target as HTMLInputElement).value; dispatch("ruleValueChange", { id, value }); @@ -54,21 +43,12 @@ {#if condition !== ContentFilterCondition.IS_EMPTY && condition !== ContentFilterCondition.IS_NOT_EMPTY} {/if} - - {#if type === FilterRuleType.CONTENT && !hasValidLicenseKey} -
- - -
- {/if} -
diff --git a/src/svelte/shared/components/premium-link.svelte b/src/svelte/shared/components/premium-link.svelte deleted file mode 100644 index 4eb6f55..0000000 --- a/src/svelte/shared/components/premium-link.svelte +++ /dev/null @@ -1,3 +0,0 @@ -Learn more diff --git a/src/svelte/shared/components/premium-message.svelte b/src/svelte/shared/components/premium-message.svelte deleted file mode 100644 index b62a802..0000000 --- a/src/svelte/shared/components/premium-message.svelte +++ /dev/null @@ -1,9 +0,0 @@ -
- This feature requires a premium license -
- - diff --git a/src/svelte/shared/services/license.ts b/src/svelte/shared/services/license.ts deleted file mode 100644 index cf3156c..0000000 --- a/src/svelte/shared/services/license.ts +++ /dev/null @@ -1,142 +0,0 @@ -import Logger from "js-logger"; -import { writable } from "svelte/store"; -import crypto from "crypto"; - -const LOCAL_STORAGE_LICENSE_KEY = "vault-explorer-license"; - -const PUBLIC_KEY_PEM = ` ------BEGIN PUBLIC KEY----- -MCowBQYDK2VwAyEAO539qAsgBzbukUNDuOtPZKXNj8MSXvt3zS1ci4plDBA= ------END PUBLIC KEY----- -`; - -export default class License { - private licenseKey: string; - private hasValidKey: boolean; - private hasValidKeyStore = writable(); - - private static instance: License; - - constructor() { - this.licenseKey = ""; - this.hasValidKey = false; - this.hasValidKeyStore.set(false); - } - - async loadStoredKey() { - const storedKey = this.getStoredLicenseKey(); - if (storedKey) { - const isValid = await this.validateKey(storedKey); - - this.licenseKey = storedKey; - this.hasValidKey = isValid; - this.hasValidKeyStore.set(isValid); - } - } - - async addKey(licenseKey: string) { - Logger.trace({ - fileName: "license.ts", - functionName: "addKey", - message: "called", - }); - - const result = await this.validateKey(licenseKey); - if (result) { - this.setStoredKey(licenseKey); - this.hasValidKeyStore.set(true); - this.hasValidKey = true; - } - return result; - } - - /** - * Verify the licenseKey using the public key. - * @param signature- The licenseKey to verify. This is created by signing a file with the private key. - */ - async validateKey(licenseKey: string) { - Logger.trace({ - fileName: "license.ts", - functionName: "validateKey", - message: "called", - }); - - try { - // Decode Base64 to buffer - const decodedBuffer = Buffer.from(licenseKey, "base64"); - const decodedString = decodedBuffer.toString("utf-8"); - const split = decodedString.split("|"); - - const signatureBase64 = split[0]; - const data = split[1].trim(); - - const signatureBuffer = Buffer.from(signatureBase64, "base64"); - const dataBuffer = Buffer.from(data); - - const verify = crypto.createVerify("SHA256"); - verify.update(data); - verify.end(); - - return crypto.verify( - null, - dataBuffer, - { - key: PUBLIC_KEY_PEM, - format: "pem", - type: "spki", - }, - signatureBuffer - ); - } catch (err) { - return false; - } - } - - removeKey() { - Logger.trace({ - fileName: "license.ts", - functionName: "removeKey", - message: "called", - }); - - this.setStoredKey(null); - this.hasValidKeyStore.set(false); - this.hasValidKey = false; - } - - private setStoredKey(value: string | null) { - Logger.trace({ - fileName: "license.ts", - functionName: "setStoredKey", - message: "called", - }); - if (value !== null) { - localStorage.setItem(LOCAL_STORAGE_LICENSE_KEY, value); - } else { - localStorage.removeItem(LOCAL_STORAGE_LICENSE_KEY); - } - } - - private getStoredLicenseKey() { - return localStorage.getItem(LOCAL_STORAGE_LICENSE_KEY); - } - - getHasValidKey() { - return this.hasValidKey; - } - - getHasValidKeyStore() { - return this.hasValidKeyStore; - } - - getLicenseKey() { - return this.licenseKey; - } - - static getInstance() { - if (!this.instance) { - this.instance = new License(); - } - return this.instance; - } -} From 2bd9b85c1c16ea7f860f5b675ba2c4bf8419ce46 Mon Sep 17 00:00:00 2001 From: DecafDev <40307803+decaf-dev@users.noreply.github.com> Date: Fri, 2 May 2025 19:42:49 -0600 Subject: [PATCH 06/10] chore: bump version --- manifest.json | 2 +- package.json | 2 +- versions.json | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index d5a079c..abb4490 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "vault-explorer", "name": "Vault Explorer", - "version": "1.46.0", + "version": "1.47.0", "minAppVersion": "1.4.13", "description": "Explore your vault in visual format", "author": "DecafDev", diff --git a/package.json b/package.json index 5b5ff31..63df4c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-vault-explorer", - "version": "1.46.0", + "version": "1.47.0", "description": "Explore your vault in visual format", "main": "main.js", "scripts": { diff --git a/versions.json b/versions.json index e637b8e..8a6b7a5 100644 --- a/versions.json +++ b/versions.json @@ -149,5 +149,6 @@ "1.44.5": "1.4.13", "1.44.6": "1.4.13", "1.45.0": "1.4.13", - "1.46.0": "1.4.13" + "1.46.0": "1.4.13", + "1.47.0": "1.4.13" } From 6e68f4e905d3c7f3c293cf2dbbed59e7fb22df0a Mon Sep 17 00:00:00 2001 From: DecafDev <40307803+decaf-dev@users.noreply.github.com> Date: Fri, 2 May 2025 19:52:49 -0600 Subject: [PATCH 07/10] chore: disable trailing commas --- .prettierignore | 8 ++++++++ .prettierrc | 13 ++++++------- bun.lockb | Bin 193333 -> 193685 bytes package.json | 4 +++- 4 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 .prettierignore diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..778a606 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,8 @@ +# Ignore markdown files +*.md +**/*.md + +# Other common files to ignore +node_modules/ +dist/ +.git/ diff --git a/.prettierrc b/.prettierrc index 1d33228..165637e 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,9 +1,8 @@ { - "tabWidth": 4, - "useTabs": true, - "endOfLine": "lf", - "charset": "utf-8", - "insertFinalNewline": false, - "semi": true, - "quotes": "double" + "tabWidth": 4, + "useTabs": true, + "endOfLine": "lf", + "semi": true, + "singleQuote": false, + "trailingComma": "none" } diff --git a/bun.lockb b/bun.lockb index 4f69bbc99a015045bb609b8cf1da4178960bf82d..ad748532ee3866b88e467908b346860686dfbf68 100755 GIT binary patch delta 15286 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 Date: Fri, 2 May 2025 19:53:09 -0600 Subject: [PATCH 08/10] chore: format with prettier --- __mocks__/js-logger.ts | 2 +- __mocks__/obsidian.ts | 100 +++++----- esbuild.config.mjs | 12 +- jest.config.js | 4 +- src/constants.ts | 32 ++-- src/event/event-manager.ts | 6 +- src/event/types.ts | 2 +- src/focus-utils.ts | 18 +- src/logger/index.ts | 4 +- src/main.ts | 12 +- src/migrations/index.ts | 68 +++---- src/migrations/migrate_0_4_0.ts | 6 +- src/migrations/migrate_1_0_0.ts | 8 +- src/migrations/migrate_1_10_0.ts | 12 +- src/migrations/migrate_1_13_0.ts | 10 +- src/migrations/migrate_1_14_0.ts | 14 +- src/migrations/migrate_1_15_0.ts | 6 +- src/migrations/migrate_1_17_0.ts | 18 +- src/migrations/migrate_1_1_0.ts | 6 +- src/migrations/migrate_1_21_0.ts | 2 +- src/migrations/migrate_1_22_0.ts | 4 +- src/migrations/migrate_1_23_0.ts | 6 +- src/migrations/migrate_1_23_1.ts | 2 +- src/migrations/migrate_1_24_0.ts | 8 +- src/migrations/migrate_1_25_0.ts | 2 +- src/migrations/migrate_1_26_0.ts | 2 +- src/migrations/migrate_1_27_0.ts | 6 +- src/migrations/migrate_1_29_0.ts | 8 +- src/migrations/migrate_1_2_1.ts | 4 +- src/migrations/migrate_1_30_5.ts | 6 +- src/migrations/migrate_1_31_0.ts | 2 +- src/migrations/migrate_1_33_0.ts | 2 +- src/migrations/migrate_1_37_0.ts | 18 +- src/migrations/migrate_1_38_0.ts | 2 +- src/migrations/migrate_1_39_0.ts | 10 +- src/migrations/migrate_1_3_0.ts | 12 +- src/migrations/migrate_1_40_0.ts | 2 +- src/migrations/migrate_1_41_0.ts | 8 +- src/migrations/migrate_1_42_0.ts | 4 +- src/migrations/migrate_1_45_0.ts | 2 +- src/migrations/migrate_1_46_0.ts | 12 +- src/migrations/migrate_1_6_0.ts | 4 +- src/migrations/migrate_1_6_1.ts | 4 +- src/migrations/migrate_1_9_0.ts | 10 +- src/migrations/migration_interface.ts | 4 +- src/obsidian/custom-filter-modal.ts | 2 +- src/obsidian/types.ts | 10 +- src/obsidian/vault-explorer-settings-tab.ts | 40 ++-- src/obsidian/vault-explorer-view.ts | 2 +- src/svelte/app/services/context-menu.ts | 8 +- src/svelte/app/services/favorites-store.ts | 26 +-- .../app/services/fetch-social-media-image.ts | 12 +- src/svelte/app/services/file-content-store.ts | 6 +- src/svelte/app/services/file-store.ts | 8 +- .../filters/custom/filter-by-groups.ts | 8 +- .../custom/match-checkbox-property-filter.ts | 6 +- .../filters/custom/match-content-filter.ts | 26 ++- .../custom/match-date-property-filter.ts | 28 ++- .../filters/custom/match-file-name-filter.ts | 26 ++- .../filters/custom/match-folder-filter.ts | 24 ++- .../custom/match-list-property-filter.ts | 37 +++- .../custom/match-number-property-filter.ts | 4 +- .../custom/match-text-property-filter.ts | 30 ++- .../app/services/link-utils/link-getters.ts | 2 +- .../link-utils/link-target-getters.ts | 2 +- .../services/link-utils/link-validators.ts | 2 +- src/svelte/app/services/open-file.ts | 2 +- .../app/services/random-file-sort-store.ts | 4 +- src/svelte/app/services/render-data.ts | 16 +- src/svelte/app/services/smi-cache.ts | 20 +- src/svelte/app/services/utils/image-utils.ts | 2 +- src/svelte/app/services/utils/json-utils.ts | 2 +- .../services/display-name-utils.ts | 2 +- .../custom-filter-app/services/utils.ts | 4 +- .../shared/services/load-property-value.ts | 2 +- src/svelte/shared/services/time-utils.ts | 2 +- src/types/index.guard.ts | 2 +- src/types/index.ts | 24 +-- src/types/types-0.3.3.ts | 2 +- src/types/types-0.5.5.ts | 14 +- src/types/types-1-37-0.ts | 24 +-- src/types/types-1.0.1.ts | 12 +- src/types/types-1.12.1.ts | 68 +++++-- src/types/types-1.13.1.ts | 68 +++++-- src/types/types-1.14.2.ts | 70 ++++--- src/types/types-1.16.0.ts | 24 +-- src/types/types-1.2.0.ts | 56 ++++-- src/types/types-1.2.1.ts | 55 ++++-- src/types/types-1.20.0.ts | 24 +-- src/types/types-1.21.2.ts | 24 +-- src/types/types-1.22.0.ts | 24 +-- src/types/types-1.23.0.ts | 24 +-- src/types/types-1.23.2.ts | 24 +-- src/types/types-1.24.2.ts | 24 +-- src/types/types-1.25.2.ts | 24 +-- src/types/types-1.26.3.ts | 24 +-- src/types/types-1.28.0.ts | 24 +-- src/types/types-1.29.0.ts | 24 +-- src/types/types-1.30.5.ts | 24 +-- src/types/types-1.32.2.ts | 24 +-- src/types/types-1.36.3.ts | 24 +-- src/types/types-1.38.0.ts | 24 +-- src/types/types-1.39.0.ts | 24 +-- src/types/types-1.40.2.ts | 24 +-- src/types/types-1.41.1.ts | 24 +-- src/types/types-1.44.6.ts | 24 +-- src/types/types-1.45.0.ts | 24 +-- src/types/types-1.5.0.ts | 55 ++++-- src/types/types-1.6.0.ts | 55 ++++-- src/types/types-1.8.1.ts | 55 ++++-- src/types/types-1.9.1.ts | 53 ++++-- test-vault/.obsidian/app.json | 6 +- test-vault/.obsidian/appearance.json | 2 +- test-vault/.obsidian/community-plugins.json | 4 +- .../.obsidian/core-plugins-migration.json | 58 +++--- test-vault/.obsidian/core-plugins.json | 36 ++-- test-vault/.obsidian/graph.json | 42 ++--- .../plugins/vault-explorer/data.json | 178 +++++++++--------- test-vault/.obsidian/types.json | 18 +- test-vault/.vaultexplorer/favorites.json | 4 +- tests/integration/preform-migration.test.ts | 58 +++--- tests/unit/link-target-getters.test.ts | 2 +- tests/unit/link-validators.test.ts | 2 +- tests/unit/load-property-value.test.ts | 4 +- .../match-checkbox-property-filter.test.ts | 131 +++++++++---- tests/unit/match-date-property-filter.test.ts | 101 ++++++++-- tests/unit/match-list-property-filter.test.ts | 134 ++++++++++--- .../unit/match-number-property-filter.test.ts | 110 ++++++++--- tests/unit/match-text-property-filter.test.ts | 127 ++++++++++--- tsconfig.json | 42 ++--- 130 files changed, 1847 insertions(+), 1156 deletions(-) diff --git a/__mocks__/js-logger.ts b/__mocks__/js-logger.ts index 9c3d567..94f4371 100644 --- a/__mocks__/js-logger.ts +++ b/__mocks__/js-logger.ts @@ -3,5 +3,5 @@ export default { info: jest.fn(), warn: jest.fn(), error: jest.fn(), - debug: jest.fn(), + debug: jest.fn() }; diff --git a/__mocks__/obsidian.ts b/__mocks__/obsidian.ts index 1e89f45..cd134ba 100644 --- a/__mocks__/obsidian.ts +++ b/__mocks__/obsidian.ts @@ -13,46 +13,60 @@ const DATE_TIME_SHORT_REGEX = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/; */ const DATE_TIME_FULL_REGEX = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/; -export const moment = jest.fn((date: string, _formats: string[], _strict?: boolean) => { - const parsedDate = new Date(date); - const mockMoment: unknown = { - isValid: jest.fn(() => DATE_REGEX.test(date) || DATE_TIME_SHORT_REGEX.test(date) || DATE_TIME_FULL_REGEX.test(date)), - startOf: jest.fn((unit) => { - if (unit === "day") { - parsedDate.setUTCHours(0, 0, 0, 0); - } - return mockMoment; - }), - set: jest.fn(({ hour, minute, second }) => { - parsedDate.setUTCHours(hour, minute, second); - return mockMoment; - }), - valueOf: jest.fn(() => parsedDate.getTime()), - isSame: jest.fn((other, unit) => { - if (unit === 'day') { - const otherDate = new Date(other); - return ( - parsedDate.getUTCFullYear() === otherDate.getUTCFullYear() && - parsedDate.getUTCMonth() === otherDate.getUTCMonth() && - parsedDate.getUTCDate() === otherDate.getUTCDate() - ); - } - return parsedDate.getTime() === new Date(other).getTime(); - }), - isBefore: jest.fn((other, unit) => { - if (unit === 'day') { - const otherDate = new Date(other); - return parsedDate < otherDate && parsedDate.getUTCDate() !== otherDate.getUTCDate(); - } - return parsedDate.getTime() < new Date(other).getTime(); - }), - isAfter: jest.fn((other, unit) => { - if (unit === 'day') { - const otherDate = new Date(other); - return parsedDate > otherDate && parsedDate.getUTCDate() !== otherDate.getUTCDate(); - } - return parsedDate.getTime() > new Date(other).getTime(); - }), - }; - return mockMoment; -}); +export const moment = jest.fn( + (date: string, _formats: string[], _strict?: boolean) => { + const parsedDate = new Date(date); + const mockMoment: unknown = { + isValid: jest.fn( + () => + DATE_REGEX.test(date) || + DATE_TIME_SHORT_REGEX.test(date) || + DATE_TIME_FULL_REGEX.test(date) + ), + startOf: jest.fn((unit) => { + if (unit === "day") { + parsedDate.setUTCHours(0, 0, 0, 0); + } + return mockMoment; + }), + set: jest.fn(({ hour, minute, second }) => { + parsedDate.setUTCHours(hour, minute, second); + return mockMoment; + }), + valueOf: jest.fn(() => parsedDate.getTime()), + isSame: jest.fn((other, unit) => { + if (unit === "day") { + const otherDate = new Date(other); + return ( + parsedDate.getUTCFullYear() === + otherDate.getUTCFullYear() && + parsedDate.getUTCMonth() === otherDate.getUTCMonth() && + parsedDate.getUTCDate() === otherDate.getUTCDate() + ); + } + return parsedDate.getTime() === new Date(other).getTime(); + }), + isBefore: jest.fn((other, unit) => { + if (unit === "day") { + const otherDate = new Date(other); + return ( + parsedDate < otherDate && + parsedDate.getUTCDate() !== otherDate.getUTCDate() + ); + } + return parsedDate.getTime() < new Date(other).getTime(); + }), + isAfter: jest.fn((other, unit) => { + if (unit === "day") { + const otherDate = new Date(other); + return ( + parsedDate > otherDate && + parsedDate.getUTCDate() !== otherDate.getUTCDate() + ); + } + return parsedDate.getTime() > new Date(other).getTime(); + }) + }; + return mockMoment; + } +); diff --git a/esbuild.config.mjs b/esbuild.config.mjs index f5a3337..2f98cc5 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -29,12 +29,12 @@ const rebuildPlugin = { ); } catch (err) {} }); - }, + } }; const context = await esbuild.context({ banner: { - js: banner, + js: banner }, entryPoints: ["src/main.ts"], bundle: true, @@ -52,7 +52,7 @@ const context = await esbuild.context({ "@lezer/common", "@lezer/highlight", "@lezer/lr", - ...builtins, + ...builtins ], format: "cjs", target: "es2018", @@ -64,9 +64,9 @@ const context = await esbuild.context({ rebuildPlugin, esbuildSvelte({ compilerOptions: { css: "external" }, - preprocess: sveltePreprocess(), - }), - ], + preprocess: sveltePreprocess() + }) + ] }); if (prod) { diff --git a/jest.config.js b/jest.config.js index 74f4614..d11d6ac 100644 --- a/jest.config.js +++ b/jest.config.js @@ -3,6 +3,6 @@ module.exports = { preset: "ts-jest", testEnvironment: "node", moduleNameMapper: { - "^src/(.*)$": "/src/$1", - }, + "^src/(.*)$": "/src/$1" + } }; diff --git a/src/constants.ts b/src/constants.ts index 9792323..93be7a9 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -14,22 +14,22 @@ export const DEFAULT_SETTINGS: VaultExplorerPluginSettings = { modifiedDate: "", custom1: "", custom2: "", - custom3: "", + custom3: "" }, filters: { search: { isEnabled: true, - value: "", + value: "" }, sort: { isEnabled: true, - value: "file-name-asc", + value: "file-name-asc" }, custom: { isEnabled: true, selectedGroupId: "", - groups: [], - }, + groups: [] + } }, views: { grid: { @@ -39,27 +39,27 @@ export const DEFAULT_SETTINGS: VaultExplorerPluginSettings = { coverImageSources: [ { type: "image-property", - isEnabled: true, + isEnabled: true }, { type: "url-property", - isEnabled: true, + isEnabled: true }, { type: "frontmatter", - isEnabled: true, + isEnabled: true }, { type: "body", - isEnabled: true, - }, + isEnabled: true + } ], - loadSocialMediaImage: true, + loadSocialMediaImage: true }, list: { isEnabled: true, order: 1, - showTags: true, + showTags: true }, feed: { isEnabled: true, @@ -68,12 +68,12 @@ export const DEFAULT_SETTINGS: VaultExplorerPluginSettings = { collapseStyle: "no-new-lines", lineClampLarge: 5, lineClampMedium: 3, - lineClampSmall: 2, + lineClampSmall: 2 }, table: { isEnabled: false, - order: 3, - }, + order: 3 + } }, confirmBeforeDelete: true, currentView: TExplorerView.GRID, @@ -85,5 +85,5 @@ export const DEFAULT_SETTINGS: VaultExplorerPluginSettings = { pageSize: 25, configDir: ".vaultexplorer", pluginVersion: null, - logLevel: LOG_LEVEL_WARN, + logLevel: LOG_LEVEL_WARN }; diff --git a/src/event/event-manager.ts b/src/event/event-manager.ts index ae9db78..06514b0 100644 --- a/src/event/event-manager.ts +++ b/src/event/event-manager.ts @@ -40,7 +40,7 @@ export default class EventManager { Logger.trace({ fileName: "event-manager.ts", functionName: "emit", - message: "called", + message: "called" }); if (!this.eventListeners[eventName]) { @@ -48,7 +48,7 @@ export default class EventManager { { fileName: "event-manager.ts", functionName: "emit", - message: "no event listeners found for event. returning...", + message: "no event listeners found for event. returning..." }, { eventName } ); @@ -59,7 +59,7 @@ export default class EventManager { { fileName: "event-manager.ts", functionName: "emit", - message: "emiting event", + message: "emiting event" }, { eventName } ); diff --git a/src/event/types.ts b/src/event/types.ts index 737858b..f6e100e 100644 --- a/src/event/types.ts +++ b/src/event/types.ts @@ -21,7 +21,7 @@ export enum PluginEvent { FILE_ICONS_SETTING_CHANGE = "file-icons-setting-change", LOAD_BODY_TAGS_SETTING_CHANGE = "load-body-tags-setting-change", LOAD_SOCIAL_MEDIA_IMAGE_SETTING_CHANGE = "load-social-media-image-setting-change", - SHOW_TAGS_SETTING_CHANGE = "show-tags-setting-change", + SHOW_TAGS_SETTING_CHANGE = "show-tags-setting-change" } export type EventCallback = (...data: unknown[]) => void; diff --git a/src/focus-utils.ts b/src/focus-utils.ts index ce8648d..1a9bc1d 100644 --- a/src/focus-utils.ts +++ b/src/focus-utils.ts @@ -1,14 +1,19 @@ export const moveFocus = (direction: "previous" | "next") => { const focusedEl = document.activeElement; if (focusedEl instanceof HTMLElement) { - const rootEl = focusedEl.closest('.vault-explorer, .vault-explorer-property-filter-app'); + const rootEl = focusedEl.closest( + ".vault-explorer, .vault-explorer-property-filter-app" + ); if (!rootEl) return; - const inputEls = rootEl.querySelectorAll('a, button, input, select, textarea, [role="button"], [role="link"]') + const inputEls = rootEl.querySelectorAll( + 'a, button, input, select, textarea, [role="button"], [role="link"]' + ); const focusableEls = Array.from(inputEls).filter(isElementTabble); const currentIndex = focusableEls.indexOf(focusedEl); - const newIndex = direction === "previous" ? currentIndex - 1 : currentIndex + 1; + const newIndex = + direction === "previous" ? currentIndex - 1 : currentIndex + 1; if (newIndex >= 0 && newIndex < focusableEls.length) { (focusableEls[newIndex] as HTMLElement).focus(); } else if (newIndex > focusableEls.length - 1) { @@ -19,6 +24,9 @@ export const moveFocus = (direction: "previous" | "next") => { } function isElementTabble(element: Element) { - return element.getAttribute('disabled') == null && element.getAttribute('tabindex') !== '-1'; + return ( + element.getAttribute("disabled") == null && + element.getAttribute("tabindex") !== "-1" + ); } -} +}; diff --git a/src/logger/index.ts b/src/logger/index.ts index d9320d2..1a773a4 100644 --- a/src/logger/index.ts +++ b/src/logger/index.ts @@ -5,7 +5,7 @@ import { LOG_LEVEL_INFO, LOG_LEVEL_OFF, LOG_LEVEL_TRACE, - LOG_LEVEL_WARN, + LOG_LEVEL_WARN } from "./constants"; import type { FormattedLogMessage, LogMessageHeader } from "./types"; @@ -57,7 +57,7 @@ export const formatMessageForLogger = ( const { fileName, functionName, message } = headers; return { message: `[${fileName}:${functionName}] ${message}`, - data: body, + data: body }; } else { return { message: String(head), data: body }; diff --git a/src/main.ts b/src/main.ts index d880aba..e2c2b6a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -7,7 +7,7 @@ import Logger from "js-logger"; import { DEFAULT_SETTINGS, HOVER_LINK_SOURCE_ID, - VAULT_EXPLORER_VIEW, + VAULT_EXPLORER_VIEW } from "./constants"; import EventManager from "./event/event-manager"; import { PluginEvent } from "./event/types"; @@ -44,13 +44,13 @@ export default class VaultExplorerPlugin extends Plugin { name: "Open vault explorer view", callback: async () => { this.openVaultExplorerView(); - }, + } }); this.registerEvents(); this.registerHoverLinkSource(HOVER_LINK_SOURCE_ID, { display: this.manifest.name, - defaultMod: true, + defaultMod: true }); this.addSettingTab(new VaultExplorerSettingsTab(this.app, this)); @@ -223,13 +223,13 @@ export default class VaultExplorerPlugin extends Plugin { Logger.trace({ fileName: "main.ts", functionName: "saveSettings", - message: "called", + message: "called" }); Logger.debug( { fileName: "main.ts", functionName: "saveSettings", - message: "saving settings", + message: "saving settings" }, this.settings ); @@ -244,7 +244,7 @@ export default class VaultExplorerPlugin extends Plugin { } else { this.app.workspace.getLeaf("tab").setViewState({ type: VAULT_EXPLORER_VIEW, - active: true, + active: true }); } } diff --git a/src/migrations/index.ts b/src/migrations/index.ts index 848a4f0..fa3a583 100644 --- a/src/migrations/index.ts +++ b/src/migrations/index.ts @@ -39,168 +39,168 @@ const migrations: TMigration[] = [ { from: "0.3.3", to: "0.4.0", - migrate: Migrate_0_4_0, + migrate: Migrate_0_4_0 }, { from: "0.5.5", to: "1.0.0", - migrate: Migrate_1_0_0, + migrate: Migrate_1_0_0 }, { from: "1.0.1", to: "1.1.0", - migrate: Migrate_1_1_0, + migrate: Migrate_1_1_0 }, { from: "1.2.0", to: "1.2.1", - migrate: Migrate_1_2_1, + migrate: Migrate_1_2_1 }, { from: "1.2.1", to: "1.3.0", - migrate: Migrate_1_3_0, + migrate: Migrate_1_3_0 }, { from: "1.5.0", to: "1.6.0", - migrate: Migrate_1_6_0, + migrate: Migrate_1_6_0 }, { from: "1.6.0", to: "1.6.1", - migrate: Migrate_1_6_1, + migrate: Migrate_1_6_1 }, { from: "1.8.1", to: "1.9.0", - migrate: Migrate_1_9_0, + migrate: Migrate_1_9_0 }, { from: "1.9.1", to: "1.10.0", - migrate: Migrate_1_10_0, + migrate: Migrate_1_10_0 }, { from: "1.12.1", to: "1.13.0", - migrate: Migrate_1_13_0, + migrate: Migrate_1_13_0 }, { from: "1.13.1", to: "1.14.0", - migrate: Migrate_1_14_0, + migrate: Migrate_1_14_0 }, { from: "1.14.2", to: "1.15.0", - migrate: Migrate_1_15_0, + migrate: Migrate_1_15_0 }, { from: "1.16.0", to: "1.17.0", - migrate: Migrate_1_17_0, + migrate: Migrate_1_17_0 }, { from: "1.20.0", to: "1.21.0", - migrate: Migrate_1_21_0, + migrate: Migrate_1_21_0 }, { from: "1.21.2", to: "1.22.0", - migrate: Migrate_1_22_0, + migrate: Migrate_1_22_0 }, { from: "1.22.0", to: "1.23.0", - migrate: Migrate_1_23_0, + migrate: Migrate_1_23_0 }, { from: "1.23.0", to: "1.23.1", - migrate: Migrate_1_23_1, + migrate: Migrate_1_23_1 }, { from: "1.23.2", to: "1.24.0", - migrate: Migrate_1_24_0, + migrate: Migrate_1_24_0 }, { from: "1.24.2", to: "1.25.0", - migrate: Migrate_1_25_0, + migrate: Migrate_1_25_0 }, { from: "1.25.2", to: "1.26.0", - migrate: Migrate_1_26_0, + migrate: Migrate_1_26_0 }, { from: "1.26.3", to: "1.27.0", - migrate: Migrate_1_27_0, + migrate: Migrate_1_27_0 }, { from: "1.28.0", to: "1.29.0", - migrate: Migrate_1_29_0, + migrate: Migrate_1_29_0 }, { from: "1.29.0", to: "1.30.0", - migrate: Migrate_1_30_0, + migrate: Migrate_1_30_0 }, { from: "1.30.5", to: "1.31.0", - migrate: Migrate_1_31_0, + migrate: Migrate_1_31_0 }, { from: "1.32.2", to: "1.33.0", - migrate: Migrate_1_33_0, + migrate: Migrate_1_33_0 }, { from: "1.36.3", to: "1.37.0", - migrate: Migrate_1_37_0, + migrate: Migrate_1_37_0 }, { from: "1.37.2", to: "1.38.0", - migrate: Migrate_1_38_0, + migrate: Migrate_1_38_0 }, { from: "1.38.0", to: "1.39.0", - migrate: Migrate_1_39_0, + migrate: Migrate_1_39_0 }, { from: "1.39.0", to: "1.40.0", - migrate: Migrate_1_40_0, + migrate: Migrate_1_40_0 }, { from: "1.40.2", to: "1.41.0", - migrate: Migrate_1_41_0, + migrate: Migrate_1_41_0 }, { from: "1.41.1", to: "1.42.0", - migrate: Migrate_1_42_0, + migrate: Migrate_1_42_0 }, { from: "1.44.6", to: "1.45.0", - migrate: Migrate_1_45_0, + migrate: Migrate_1_45_0 }, { from: "1.45.0", to: "1.46.0", - migrate: Migrate_1_46_0, - }, + migrate: Migrate_1_46_0 + } ]; export const preformMigrations = ( diff --git a/src/migrations/migrate_0_4_0.ts b/src/migrations/migrate_0_4_0.ts index f653920..15186dc 100644 --- a/src/migrations/migrate_0_4_0.ts +++ b/src/migrations/migrate_0_4_0.ts @@ -11,9 +11,9 @@ export default class Migrate_0_4_0 implements MigrationInterface { ...typedData.filters, properties: { ...typedData.filters.properties, - groups: [], - }, - }, + groups: [] + } + } }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_0_0.ts b/src/migrations/migrate_1_0_0.ts index 6719244..d7539f2 100644 --- a/src/migrations/migrate_1_0_0.ts +++ b/src/migrations/migrate_1_0_0.ts @@ -19,11 +19,11 @@ export default class Migrate_1_0_0 implements MigrationInterface { id, name, filters, - isEnabled, + isEnabled }; - }), - }, - }, + }) + } + } }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_10_0.ts b/src/migrations/migrate_1_10_0.ts index 944324f..215d123 100644 --- a/src/migrations/migrate_1_10_0.ts +++ b/src/migrations/migrate_1_10_0.ts @@ -1,6 +1,6 @@ import { FilterRuleType_1_12_1, - type VaultExplorerPluginSettings_1_12_1, + type VaultExplorerPluginSettings_1_12_1 } from "src/types/types-1.12.1"; import type { VaultExplorerPluginSettings_1_9_1 } from "src/types/types-1.9.1"; import MigrationInterface from "./migration_interface"; @@ -19,16 +19,16 @@ export default class Migrate_1_10_0 implements MigrationInterface { return { ...rule, type: FilterRuleType_1_12_1.PROPERTY as any, - propertyType: rule.type as any, + propertyType: rule.type as any }; }); return { ...group, - rules, + rules }; - }), - }, - }, + }) + } + } }; delete (newData.filters as any).folder; delete (newData.filters as any).properties; diff --git a/src/migrations/migrate_1_13_0.ts b/src/migrations/migrate_1_13_0.ts index 98fce64..63d216e 100644 --- a/src/migrations/migrate_1_13_0.ts +++ b/src/migrations/migrate_1_13_0.ts @@ -9,7 +9,7 @@ export default class Migrate_1_13_0 implements MigrationInterface { ...typedData, views: { ...typedData.views, - enableClockUpdates: true, + enableClockUpdates: true }, filters: { ...typedData.filters, @@ -18,11 +18,11 @@ export default class Migrate_1_13_0 implements MigrationInterface { groups: typedData.filters.custom.groups.map((group) => { return { ...group, - isSticky: false, + isSticky: false }; - }), - }, - }, + }) + } + } }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_14_0.ts b/src/migrations/migrate_1_14_0.ts index 8645c82..2e4984b 100644 --- a/src/migrations/migrate_1_14_0.ts +++ b/src/migrations/migrate_1_14_0.ts @@ -11,26 +11,26 @@ export default class Migrate_1_14_0 implements MigrationInterface { ...typedData.filters, search: { isEnabled: true, - value: typedData.filters.search, + value: typedData.filters.search }, favorites: { isEnabled: true, - value: typedData.filters.onlyFavorites, + value: typedData.filters.onlyFavorites }, timestamp: { isEnabled: true, - value: typedData.filters.timestamp, + value: typedData.filters.timestamp }, sort: { isEnabled: true, - value: typedData.filters.sort, + value: typedData.filters.sort }, custom: { isEnabled: true, - ...typedData.filters.custom, - }, + ...typedData.filters.custom + } }, - enableScrollButtons: true, + enableScrollButtons: true }; delete (newData.filters as any).onlyFavorites; return newData as unknown as Record; diff --git a/src/migrations/migrate_1_15_0.ts b/src/migrations/migrate_1_15_0.ts index 6b7bb2b..bc91135 100644 --- a/src/migrations/migrate_1_15_0.ts +++ b/src/migrations/migrate_1_15_0.ts @@ -1,7 +1,7 @@ import type { VaultExplorerPluginSettings_1_14_2 } from "src/types/types-1.14.2"; import { type VaultExplorerPluginSettings_1_16_0, - ViewType_1_16_0, + ViewType_1_16_0 } from "src/types/types-1.16.0"; import MigrationInterface from "./migration_interface"; @@ -12,8 +12,8 @@ export default class Migrate_1_15_0 implements MigrationInterface { ...typedData, views: { ...typedData.views, - order: [...typedData.views.order, ViewType_1_16_0.FEED], - }, + order: [...typedData.views.order, ViewType_1_16_0.FEED] + } }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_17_0.ts b/src/migrations/migrate_1_17_0.ts index e1a18a7..cd7f4de 100644 --- a/src/migrations/migrate_1_17_0.ts +++ b/src/migrations/migrate_1_17_0.ts @@ -10,32 +10,32 @@ export default class Migrate_1_17_0 implements MigrationInterface { ...typedData, views: { dashboard: { - isEnabled: false, + isEnabled: false }, grid: { - isEnabled: true, + isEnabled: true }, list: { - isEnabled: true, + isEnabled: true }, table: { - isEnabled: false, + isEnabled: false }, feed: { - isEnabled: true, + isEnabled: true }, recommended: { - isEnabled: false, + isEnabled: false }, related: { - isEnabled: false, - }, + isEnabled: false + } }, viewOrder: typedData.views.order as unknown as TExplorerView[], enableClockUpdates: typedData.views.enableClockUpdates, currentView: typedData.views .currentView as unknown as TExplorerView, - titleWrapping: typedData.views.titleWrapping, + titleWrapping: typedData.views.titleWrapping }; delete (newData as any).views.order; delete (newData as any).views.currentView; diff --git a/src/migrations/migrate_1_1_0.ts b/src/migrations/migrate_1_1_0.ts index a9270ca..29516db 100644 --- a/src/migrations/migrate_1_1_0.ts +++ b/src/migrations/migrate_1_1_0.ts @@ -1,7 +1,7 @@ import type { VaultExplorerPluginSettings_1_0_1 } from "src/types/types-1.0.1"; import { type VaultExplorerPluginSettings_1_2_0, - ViewType_1_2_0, + ViewType_1_2_0 } from "src/types/types-1.2.0"; import MigrationInterface from "./migration_interface"; @@ -12,8 +12,8 @@ export default class Migrate_1_1_0 implements MigrationInterface { ...typedData, views: { currentView: typedData.currentView as unknown as ViewType_1_2_0, - order: [ViewType_1_2_0.GRID, ViewType_1_2_0.LIST], - }, + order: [ViewType_1_2_0.GRID, ViewType_1_2_0.LIST] + } }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_21_0.ts b/src/migrations/migrate_1_21_0.ts index d1d82a3..be73cff 100644 --- a/src/migrations/migrate_1_21_0.ts +++ b/src/migrations/migrate_1_21_0.ts @@ -7,7 +7,7 @@ export default class Migrate_1_21_0 implements MigrationInterface { const typedData = data as unknown as VaultExplorerPluginSettings_1_20_0; const newData: VaultExplorerPluginSettings_1_21_2 = { ...typedData, - enableFileIcons: true, + enableFileIcons: true }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_22_0.ts b/src/migrations/migrate_1_22_0.ts index 0b55214..a5ba463 100644 --- a/src/migrations/migrate_1_22_0.ts +++ b/src/migrations/migrate_1_22_0.ts @@ -9,10 +9,10 @@ export default class Migrate_1_22_0 implements MigrationInterface { ...typedData, properties: { ...typedData.properties, - imageUrl: "", + imageUrl: "" }, filterGroupsWidth: 300, - filterGroupsWrapping: "nowrap", + filterGroupsWrapping: "nowrap" }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_23_0.ts b/src/migrations/migrate_1_23_0.ts index 2c59417..cdeb104 100644 --- a/src/migrations/migrate_1_23_0.ts +++ b/src/migrations/migrate_1_23_0.ts @@ -11,9 +11,9 @@ export default class Migrate_1_23_0 implements MigrationInterface { ...typedData.views, grid: { ...typedData.views.grid, - fetchSocialMediaImage: false, - }, - }, + fetchSocialMediaImage: false + } + } }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_23_1.ts b/src/migrations/migrate_1_23_1.ts index 23416bd..aea86fd 100644 --- a/src/migrations/migrate_1_23_1.ts +++ b/src/migrations/migrate_1_23_1.ts @@ -7,7 +7,7 @@ export default class Migrate_1_23_1 implements MigrationInterface { const typedData = data as unknown as VaultExplorerPluginSettings_1_23_0; const newData: VaultExplorerPluginSettings_1_23_2 = { ...typedData, - filterGroupsWidth: "100%", + filterGroupsWidth: "100%" }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_24_0.ts b/src/migrations/migrate_1_24_0.ts index 7457463..38337a6 100644 --- a/src/migrations/migrate_1_24_0.ts +++ b/src/migrations/migrate_1_24_0.ts @@ -12,13 +12,13 @@ export default class Migrate_1_24_0 implements MigrationInterface { grid: { ...typedData.views.grid, loadSocialMediaImage: - typedData.views.grid.fetchSocialMediaImage, + typedData.views.grid.fetchSocialMediaImage }, feed: { ...typedData.views.feed, - collapseContent: true, - }, - }, + collapseContent: true + } + } }; delete (newData as any).views.grid.fetchSocialMediaImage; diff --git a/src/migrations/migrate_1_25_0.ts b/src/migrations/migrate_1_25_0.ts index 139ca6d..839a8a9 100644 --- a/src/migrations/migrate_1_25_0.ts +++ b/src/migrations/migrate_1_25_0.ts @@ -7,7 +7,7 @@ export default class Migrate_1_25_0 implements MigrationInterface { const typedData = data as unknown as VaultExplorerPluginSettings_1_24_2; const newData: VaultExplorerPluginSettings_1_25_2 = { ...typedData, - fileInteractionStyle: "content", + fileInteractionStyle: "content" }; return newData as unknown as Record; diff --git a/src/migrations/migrate_1_26_0.ts b/src/migrations/migrate_1_26_0.ts index e57f95c..20fd9c6 100644 --- a/src/migrations/migrate_1_26_0.ts +++ b/src/migrations/migrate_1_26_0.ts @@ -7,7 +7,7 @@ export default class Migrate_1_26_0 implements MigrationInterface { const typedData = data as unknown as VaultExplorerPluginSettings_1_25_2; const newData: VaultExplorerPluginSettings_1_26_3 = { ...typedData, - configDir: ".vaultexplorer", + configDir: ".vaultexplorer" }; return newData as unknown as Record; diff --git a/src/migrations/migrate_1_27_0.ts b/src/migrations/migrate_1_27_0.ts index 29dafc8..2bd771d 100644 --- a/src/migrations/migrate_1_27_0.ts +++ b/src/migrations/migrate_1_27_0.ts @@ -15,9 +15,9 @@ export default class Migrate_1_27_0 implements MigrationInterface { collapseStyle: "no-new-lines", lineClampLarge: 5, lineClampMedium: 3, - lineClampSmall: 2, - }, - }, + lineClampSmall: 2 + } + } }; delete (newData as any).views.feed.collapseContent; diff --git a/src/migrations/migrate_1_29_0.ts b/src/migrations/migrate_1_29_0.ts index 039304e..f8cb1c4 100644 --- a/src/migrations/migrate_1_29_0.ts +++ b/src/migrations/migrate_1_29_0.ts @@ -11,13 +11,13 @@ export default class Migrate_1_29_0 implements MigrationInterface { ...typedData.views, list: { ...typedData.views.list, - showTags: true, + showTags: true }, grid: { ...typedData.views.grid, - loadSocialMediaImage: true, - }, - }, + loadSocialMediaImage: true + } + } }; return newData as unknown as Record; diff --git a/src/migrations/migrate_1_2_1.ts b/src/migrations/migrate_1_2_1.ts index 590940e..fd97f21 100644 --- a/src/migrations/migrate_1_2_1.ts +++ b/src/migrations/migrate_1_2_1.ts @@ -9,8 +9,8 @@ export default class Migrate_1_2_1 implements MigrationInterface { ...typedData, views: { ...typedData.views, - titleWrapping: "normal", - }, + titleWrapping: "normal" + } }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_30_5.ts b/src/migrations/migrate_1_30_5.ts index 0cd16b2..f3c748c 100644 --- a/src/migrations/migrate_1_30_5.ts +++ b/src/migrations/migrate_1_30_5.ts @@ -11,9 +11,9 @@ export default class Migrate_1_30_0 implements MigrationInterface { ...typedData.views, grid: { ...typedData.views.grid, - coverImageSource: "frontmatter-and-body", - }, - }, + coverImageSource: "frontmatter-and-body" + } + } }; return newData as unknown as Record; diff --git a/src/migrations/migrate_1_31_0.ts b/src/migrations/migrate_1_31_0.ts index cf564bc..c98b746 100644 --- a/src/migrations/migrate_1_31_0.ts +++ b/src/migrations/migrate_1_31_0.ts @@ -7,7 +7,7 @@ export default class Migrate_1_31_0 implements MigrationInterface { const typedData = data as unknown as VaultExplorerPluginSettings_1_30_5; const newData: VaultExplorerPluginSettings_1_32_2 = { ...typedData, - shouldWrapFilterGroups: typedData.filterGroupsWrapping === "wrap", + shouldWrapFilterGroups: typedData.filterGroupsWrapping === "wrap" }; delete (newData as any).filterGroupsWrapping; diff --git a/src/migrations/migrate_1_33_0.ts b/src/migrations/migrate_1_33_0.ts index 617050b..d63e223 100644 --- a/src/migrations/migrate_1_33_0.ts +++ b/src/migrations/migrate_1_33_0.ts @@ -6,7 +6,7 @@ export default class Migrate_1_33_0 implements MigrationInterface { migrate(data: Record) { const typedData = data as unknown as VaultExplorerPluginSettings_1_32_2; const newData: VaultExplorerPluginSettings_1_36_3 = { - ...typedData, + ...typedData }; delete (newData as any).fileInteractionStyle; diff --git a/src/migrations/migrate_1_37_0.ts b/src/migrations/migrate_1_37_0.ts index 0d7bc9d..8b714b6 100644 --- a/src/migrations/migrate_1_37_0.ts +++ b/src/migrations/migrate_1_37_0.ts @@ -14,27 +14,27 @@ export default class Migrate_1_37_0 implements MigrationInterface { coverImageSources: [ { type: "image-property", - isEnabled: true, + isEnabled: true }, { type: "url-property", - isEnabled: true, + isEnabled: true }, { type: "frontmatter", - isEnabled: true, + isEnabled: true }, { type: "body", - isEnabled: true, - }, - ], - }, + isEnabled: true + } + ] + } }, properties: { ...typedData.properties, - image: typedData.properties.imageUrl, - }, + image: typedData.properties.imageUrl + } }; delete (newData as any).enableScrollButtons; diff --git a/src/migrations/migrate_1_38_0.ts b/src/migrations/migrate_1_38_0.ts index 20b04ff..f43101e 100644 --- a/src/migrations/migrate_1_38_0.ts +++ b/src/migrations/migrate_1_38_0.ts @@ -7,7 +7,7 @@ export default class Migrate_1_38_0 implements MigrationInterface { const typedData = data as unknown as VaultExplorerPluginSettings_1_37_2; const newData: VaultExplorerPluginSettings_1_38_0 = { ...typedData, - loadBodyTags: true, + loadBodyTags: true }; return newData as unknown as Record; diff --git a/src/migrations/migrate_1_39_0.ts b/src/migrations/migrate_1_39_0.ts index f5cd491..11d052e 100644 --- a/src/migrations/migrate_1_39_0.ts +++ b/src/migrations/migrate_1_39_0.ts @@ -1,7 +1,7 @@ import type { VaultExplorerPluginSettings_1_38_0 } from "src/types/types-1.38.0"; import { TExplorerView_1_39_0, - type VaultExplorerPluginSettings_1_39_0, + type VaultExplorerPluginSettings_1_39_0 } from "src/types/types-1.39.0"; import MigrationInterface from "./migration_interface"; @@ -14,14 +14,14 @@ export default class Migrate_1_39_0 implements MigrationInterface { TExplorerView_1_39_0.GRID, TExplorerView_1_39_0.LIST, TExplorerView_1_39_0.TABLE, - TExplorerView_1_39_0.FEED, + TExplorerView_1_39_0.FEED ], views: { ...typedData.views, table: { - isEnabled: true, - }, - }, + isEnabled: true + } + } }; return newData as unknown as Record; diff --git a/src/migrations/migrate_1_3_0.ts b/src/migrations/migrate_1_3_0.ts index 8fc3ab8..8f8ddfe 100644 --- a/src/migrations/migrate_1_3_0.ts +++ b/src/migrations/migrate_1_3_0.ts @@ -2,7 +2,7 @@ import type { VaultExplorerPluginSettings_1_2_1 } from "src/types/types-1.2.1"; import type { PropertyFilterGroup_1_5_0, PropertyFilter_1_5_0, - VaultExplorerPluginSettings_1_5_0, + VaultExplorerPluginSettings_1_5_0 } from "src/types/types-1.5.0"; import MigrationInterface from "./migration_interface"; @@ -18,12 +18,12 @@ export default class Migrate_1_3_0 implements MigrationInterface { return { ...filter, type: filter.type as any, - matchWhenPropertyDNE: false, + matchWhenPropertyDNE: false }; }); return { ...group, - filters: updatedFilters, + filters: updatedFilters }; } ); @@ -34,9 +34,9 @@ export default class Migrate_1_3_0 implements MigrationInterface { ...typedData.filters, properties: { ...typedData.filters.properties, - groups: updatedGroups, - }, - }, + groups: updatedGroups + } + } }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_40_0.ts b/src/migrations/migrate_1_40_0.ts index 2d01bd5..093af8e 100644 --- a/src/migrations/migrate_1_40_0.ts +++ b/src/migrations/migrate_1_40_0.ts @@ -7,7 +7,7 @@ export default class Migrate_1_40_0 implements MigrationInterface { const typedData = data as unknown as VaultExplorerPluginSettings_1_39_0; const newData: VaultExplorerPluginSettings_1_40_2 = { ...typedData, - shouldCollapseFilters: false, + shouldCollapseFilters: false }; return newData as unknown as Record; diff --git a/src/migrations/migrate_1_41_0.ts b/src/migrations/migrate_1_41_0.ts index c6ded59..de064d5 100644 --- a/src/migrations/migrate_1_41_0.ts +++ b/src/migrations/migrate_1_41_0.ts @@ -9,15 +9,15 @@ export default class Migrate_1_41_0 implements MigrationInterface { ...typedData, properties: { ...typedData.properties, - coverImageFit: "", + coverImageFit: "" }, views: { ...typedData.views, grid: { ...typedData.views.grid, - coverImageFit: "cover", - }, - }, + coverImageFit: "cover" + } + } }; return newData as unknown as Record; diff --git a/src/migrations/migrate_1_42_0.ts b/src/migrations/migrate_1_42_0.ts index 3abc3ad..848e360 100644 --- a/src/migrations/migrate_1_42_0.ts +++ b/src/migrations/migrate_1_42_0.ts @@ -12,8 +12,8 @@ export default class Migrate_1_42_0 implements MigrationInterface { image: typedData.properties.image || "image", coverImageFit: typedData.properties.coverImageFit || "image-fit", - url: typedData.properties.url || "url", - }, + url: typedData.properties.url || "url" + } }; delete (newData as any).filterGroupsWidth; delete (newData as any).shouldWrapFilterGroups; diff --git a/src/migrations/migrate_1_45_0.ts b/src/migrations/migrate_1_45_0.ts index da2b95f..0f6b11f 100644 --- a/src/migrations/migrate_1_45_0.ts +++ b/src/migrations/migrate_1_45_0.ts @@ -24,7 +24,7 @@ export default class Migrate_1_45_0 implements MigrationInterface { const newData: VaultExplorerPluginSettings_1_45_0 = { ...typedData, confirmBeforeDelete: true, - viewOrder, + viewOrder }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_46_0.ts b/src/migrations/migrate_1_46_0.ts index 7023dd4..2fc59f4 100644 --- a/src/migrations/migrate_1_46_0.ts +++ b/src/migrations/migrate_1_46_0.ts @@ -13,25 +13,25 @@ export default class Migrate_1_46_0 implements MigrationInterface { grid: { ...typedData.views.grid, isEnabled: true, - order: 0, + order: 0 }, list: { ...typedData.views.list, isEnabled: true, - order: 1, + order: 1 }, feed: { ...typedData.views.feed, isEnabled: true, - order: 2, + order: 2 }, table: { ...typedData.views.table, isEnabled: true, - order: 3, - }, + order: 3 + } }, - currentView: TExplorerView.GRID, + currentView: TExplorerView.GRID }; delete (newData as any).views.recommended; delete (newData as any).views.related; diff --git a/src/migrations/migrate_1_6_0.ts b/src/migrations/migrate_1_6_0.ts index 08201bb..6aad440 100644 --- a/src/migrations/migrate_1_6_0.ts +++ b/src/migrations/migrate_1_6_0.ts @@ -10,8 +10,8 @@ export default class Migrate_1_6_0 implements MigrationInterface { properties: { ...typedData.properties, creationDate: "", - modifiedDate: "", - }, + modifiedDate: "" + } }; return newData as unknown as Record; } diff --git a/src/migrations/migrate_1_6_1.ts b/src/migrations/migrate_1_6_1.ts index 5a4f4d3..ec3ac51 100644 --- a/src/migrations/migrate_1_6_1.ts +++ b/src/migrations/migrate_1_6_1.ts @@ -10,8 +10,8 @@ export default class Migrate_1_6_1 implements MigrationInterface { properties: { ...typedData.properties, createdDate: "", - modifiedDate: "", - }, + modifiedDate: "" + } }; delete (newData.properties as any).creationDate; return newData as unknown as Record; diff --git a/src/migrations/migrate_1_9_0.ts b/src/migrations/migrate_1_9_0.ts index 2be3b8b..503c24b 100644 --- a/src/migrations/migrate_1_9_0.ts +++ b/src/migrations/migrate_1_9_0.ts @@ -17,16 +17,16 @@ export default class Migrate_1_9_0 implements MigrationInterface { return { ...filter, valueData: "", - type: filter.type as any, + type: filter.type as any }; }); return { ...group, - rules, + rules }; - }), - }, - }, + }) + } + } }; delete (newData.filters as any).properties; for (const group of newData.filters.custom.groups as any) { diff --git a/src/migrations/migration_interface.ts b/src/migrations/migration_interface.ts index eeb6362..64a68c8 100644 --- a/src/migrations/migration_interface.ts +++ b/src/migrations/migration_interface.ts @@ -1,3 +1,5 @@ export default abstract class MigrationInterface { - abstract migrate(previous: Record): Record; + abstract migrate( + previous: Record + ): Record; } diff --git a/src/obsidian/custom-filter-modal.ts b/src/obsidian/custom-filter-modal.ts index aecface..7e4a22a 100644 --- a/src/obsidian/custom-filter-modal.ts +++ b/src/obsidian/custom-filter-modal.ts @@ -16,7 +16,7 @@ export default class CustomFilterModal extends Modal { const { contentEl } = this; this.component = new CustomFilterApp({ - target: contentEl, + target: contentEl }); } diff --git a/src/obsidian/types.ts b/src/obsidian/types.ts index 00fa73a..1e5e0be 100644 --- a/src/obsidian/types.ts +++ b/src/obsidian/types.ts @@ -4,4 +4,12 @@ export interface ObsidianProperty { count: number; } -export type ObsidianPropertyType = "text" | "multitext" | "date" | "datetime" | "checkbox" | "tags" | "aliases" | "number"; +export type ObsidianPropertyType = + | "text" + | "multitext" + | "date" + | "datetime" + | "checkbox" + | "tags" + | "aliases" + | "number"; diff --git a/src/obsidian/vault-explorer-settings-tab.ts b/src/obsidian/vault-explorer-settings-tab.ts index 35e2846..146771a 100644 --- a/src/obsidian/vault-explorer-settings-tab.ts +++ b/src/obsidian/vault-explorer-settings-tab.ts @@ -7,17 +7,17 @@ import { LOG_LEVEL_INFO, LOG_LEVEL_OFF, LOG_LEVEL_TRACE, - LOG_LEVEL_WARN, + LOG_LEVEL_WARN } from "src/logger/constants"; import VaultExplorerPlugin from "src/main"; import type { CollapseStyle, CoverImageFit, - VaultExplorerPluginSettings, + VaultExplorerPluginSettings } from "src/types"; import { getDropdownOptionsForProperties, - getObsidianPropertiesByType, + getObsidianPropertiesByType } from "./utils"; import EventManager from "src/event/event-manager"; @@ -94,7 +94,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { "50": "50", "100": "100", "250": "250", - "500": "500", + "500": "500" }) .setValue(this.plugin.settings.pageSize.toString()) .onChange(async (value) => { @@ -231,7 +231,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { new Setting(containerEl).setName("Grid view").setHeading(); this.imageSourceApp = new ImageSourceApp({ - target: containerEl, + target: containerEl }); new Setting(containerEl) @@ -261,7 +261,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { cb .addOptions({ cover: "Cover", - contain: "Contain", + contain: "Contain" }) .setValue(this.plugin.settings.views.grid.coverImageFit) .onChange(async (value) => { @@ -315,7 +315,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { cb .addOptions({ "no-new-lines": "No new lines", - "no-extra-new-lines": "No extra new lines", + "no-extra-new-lines": "No extra new lines" }) .setValue(this.plugin.settings.views.feed.collapseStyle) .onChange(async (value) => { @@ -441,7 +441,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { dropdown .addOptions( getDropdownOptionsForProperties(textProperties, { - image: "image", + image: "image" }) ) .setValue(this.plugin.settings.properties.image) @@ -463,7 +463,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { dropdown .addOptions( getDropdownOptionsForProperties(textProperties, { - "image-fit": "image-fit", + "image-fit": "image-fit" }) ) .setValue(this.plugin.settings.properties.coverImageFit) @@ -485,7 +485,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { dropdown .addOptions( getDropdownOptionsForProperties(textProperties, { - url: "url", + url: "url" }) ) .setValue(this.plugin.settings.properties.url) @@ -500,10 +500,10 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { const creationDateDesc = new DocumentFragment(); creationDateDesc.createDiv({ - text: "Property used to store a creation date. This must be a date or datetime property.", + text: "Property used to store a creation date. This must be a date or datetime property." }); creationDateDesc.createDiv({ - text: "If set, the property will be preferred over the file's creation date.", + text: "If set, the property will be preferred over the file's creation date." }); new Setting(containerEl) @@ -514,7 +514,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { .addOptions( getDropdownOptionsForProperties([ ...dateProperties, - ...dateTimeProperties, + ...dateTimeProperties ]) ) .setValue(this.plugin.settings.properties.createdDate) @@ -529,10 +529,10 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { const modificationDateDesc = new DocumentFragment(); modificationDateDesc.createDiv({ - text: "Property used to store a modification date. This must be a date or datetime property.", + text: "Property used to store a modification date. This must be a date or datetime property." }); modificationDateDesc.createDiv({ - text: "If set, the property will be preferred over the file's modification date.", + text: "If set, the property will be preferred over the file's modification date." }); new Setting(containerEl) @@ -543,7 +543,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { .addOptions( getDropdownOptionsForProperties([ ...dateProperties, - ...dateTimeProperties, + ...dateTimeProperties ]) ) .setValue(this.plugin.settings.properties.modifiedDate) @@ -638,7 +638,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { [LOG_LEVEL_WARN]: "Warn", [LOG_LEVEL_INFO]: "Info", [LOG_LEVEL_DEBUG]: "Debug", - [LOG_LEVEL_TRACE]: "Trace", + [LOG_LEVEL_TRACE]: "Trace" }); cb.setValue(this.plugin.settings.logLevel).onChange( async (value) => { @@ -653,11 +653,11 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { const configFolderDesc = new DocumentFragment(); configFolderDesc.createDiv({ - text: "Set the plugin configuration folder.", + text: "Set the plugin configuration folder." }); configFolderDesc.createDiv({ text: "Restart Obsidian after changing this setting.", - cls: "mod-warning", + cls: "mod-warning" }); new Setting(containerEl) @@ -695,7 +695,7 @@ export default class VaultExplorerSettingsTab extends PluginSettingTab { [TExplorerView.GRID]: { ...settings.views.grid }, [TExplorerView.LIST]: { ...settings.views.list }, [TExplorerView.FEED]: { ...settings.views.feed }, - [TExplorerView.TABLE]: { ...settings.views.table }, + [TExplorerView.TABLE]: { ...settings.views.table } }; const maxOrder = Math.max( diff --git a/src/obsidian/vault-explorer-view.ts b/src/obsidian/vault-explorer-view.ts index 6d73a53..2aeeed1 100644 --- a/src/obsidian/vault-explorer-view.ts +++ b/src/obsidian/vault-explorer-view.ts @@ -44,7 +44,7 @@ export default class VaultExplorerView extends ItemView { const containerEl = this.containerEl.children[1]; this.component = new VaultExplorerApp({ - target: containerEl, + target: containerEl }); } diff --git a/src/svelte/app/services/context-menu.ts b/src/svelte/app/services/context-menu.ts index 69238ef..f2e7ad9 100644 --- a/src/svelte/app/services/context-menu.ts +++ b/src/svelte/app/services/context-menu.ts @@ -8,7 +8,7 @@ export const openContextMenu = ( settings: VaultExplorerPluginSettings, { coverImageFit, - onCoverImageFitChange, + onCoverImageFitChange }: { coverImageFit?: CoverImageFit; onCoverImageFitChange?: ( @@ -71,7 +71,7 @@ const deleteFile = async (app: App, filePath: string) => { const openToTheRight = (app: App, filePath: string) => { app.workspace.openLinkText("", filePath, "split", { - active: false, + active: false }); }; @@ -80,8 +80,8 @@ const openInNewTab = (app: App, filePath: string) => { type: "markdown", active: false, state: { - file: filePath, - }, + file: filePath + } }); }; diff --git a/src/svelte/app/services/favorites-store.ts b/src/svelte/app/services/favorites-store.ts index 4c8e25f..cdffdfa 100644 --- a/src/svelte/app/services/favorites-store.ts +++ b/src/svelte/app/services/favorites-store.ts @@ -43,7 +43,7 @@ class FavoritesStore { Logger.trace({ fileName: "favorites-store.ts", functionName: "load", - message: "called", + message: "called" }); const directoryExists = await app.vault.adapter.exists( @@ -80,7 +80,7 @@ class FavoritesStore { { fileName: "favorites-store.ts", functionName: "load", - message: "loaded favorites cache", + message: "loaded favorites cache" }, { cache } ); @@ -90,7 +90,7 @@ class FavoritesStore { { fileName: "favorites-store.ts", functionName: "load", - message: "error loading favorites cache", + message: "error loading favorites cache" }, error.message ); @@ -102,7 +102,7 @@ class FavoritesStore { Logger.trace({ fileName: "favorites-store.ts", functionName: "update", - message: "called", + message: "called" }); this.store.update((currentCache) => { @@ -117,7 +117,7 @@ class FavoritesStore { Logger.trace({ fileName: "favorites-store.ts", functionName: "onFileRename", - message: "called", + message: "called" }); this.store.update((currentCache) => { @@ -136,7 +136,7 @@ class FavoritesStore { Logger.trace({ fileName: "favorites-store.ts", functionName: "onFileDelete", - message: "called", + message: "called" }); this.store.update((currentCache) => { @@ -151,7 +151,7 @@ class FavoritesStore { Logger.trace({ fileName: "favorites-store.ts", functionName: "save", - message: "called", + message: "called" }); if (!this.app) { @@ -166,7 +166,7 @@ class FavoritesStore { const items = Array.from(cache.entries()).map( ([filePath, isFavorite]) => ({ filePath, - isFavorite, + isFavorite }) ); @@ -178,7 +178,7 @@ class FavoritesStore { { fileName: "favorites-store.ts", functionName: "save", - message: "error saving favorites cache", + message: "error saving favorites cache" }, error.message ); @@ -190,7 +190,7 @@ class FavoritesStore { Logger.debug({ fileName: "favorites-store.ts", functionName: "createConfigDir", - message: "called", + message: "called" }); try { @@ -202,7 +202,7 @@ class FavoritesStore { { fileName: "favorites-store.ts", functionName: "load", - message: "error creating config directory", + message: "error creating config directory" }, error.message ); @@ -216,7 +216,7 @@ class FavoritesStore { Logger.debug({ fileName: "favorites-store.ts", functionName: "load", - message: "creating new file...", + message: "creating new file..." }); const rawData = stringifyItems([]); await app.vault.create(filePath, rawData); @@ -227,7 +227,7 @@ class FavoritesStore { { fileName: "favorites-store.ts", functionName: "load", - message: "error creating favorites file", + message: "error creating favorites file" }, error.message ); diff --git a/src/svelte/app/services/fetch-social-media-image.ts b/src/svelte/app/services/fetch-social-media-image.ts index 6b15a9b..d43a7d2 100644 --- a/src/svelte/app/services/fetch-social-media-image.ts +++ b/src/svelte/app/services/fetch-social-media-image.ts @@ -5,7 +5,7 @@ export const fetchSocialMediaImage = async (url: string) => { Logger.trace({ fileName: "fetch-social-media-image.ts", functionName: "fetchSocialMediaImage", - message: "called", + message: "called" }); try { @@ -13,8 +13,8 @@ export const fetchSocialMediaImage = async (url: string) => { url, method: "GET", headers: { - Cookie: "", // Clear any cookies - }, + Cookie: "" // Clear any cookies + } }); const html = response.text; @@ -52,7 +52,7 @@ export const fetchSocialMediaImage = async (url: string) => { { fileName: "social-media-image.ts", functionName: "fetchSocialMediaImage", - message: "found image", + message: "found image" }, { imageUrl } ); @@ -61,7 +61,7 @@ export const fetchSocialMediaImage = async (url: string) => { { fileName: "social-media-image.ts", functionName: "fetchSocialMediaImage", - message: "no image found", + message: "no image found" }, { url } ); @@ -73,7 +73,7 @@ export const fetchSocialMediaImage = async (url: string) => { { fileName: "social-media-image.ts", functionName: "fetchSocialMediaImage", - message: "failed to fetch", + message: "failed to fetch" }, error ); diff --git a/src/svelte/app/services/file-content-store.ts b/src/svelte/app/services/file-content-store.ts index 152df19..8a60409 100644 --- a/src/svelte/app/services/file-content-store.ts +++ b/src/svelte/app/services/file-content-store.ts @@ -26,12 +26,12 @@ function createFileContentStore() { const content = await app.vault.cachedRead(file); return { path: file.path, - content, + content }; } return { path: file.path, - content: null, + content: null }; })() ); @@ -93,7 +93,7 @@ function createFileContentStore() { onFileCreate: handleFileCreate, onFileModify: handleFileModify, onFileRename: handleFileRename, - onFileDelete: handleFileDelete, + onFileDelete: handleFileDelete }; } diff --git a/src/svelte/app/services/file-store.ts b/src/svelte/app/services/file-store.ts index 268718a..44782a5 100644 --- a/src/svelte/app/services/file-store.ts +++ b/src/svelte/app/services/file-store.ts @@ -16,7 +16,7 @@ function createFileStore() { const files = app.vault.getFiles(); const loadedFiles: LoadedFile[] = files.map((file) => ({ id: generateRandomId(), - file, + file })); set(loadedFiles); } @@ -24,7 +24,7 @@ function createFileStore() { async function handleFileCreate(file: TFile) { const newLoadedFile: LoadedFile = { id: generateRandomId(), - file, + file }; update((loadedFiles) => { @@ -39,7 +39,7 @@ function createFileStore() { if (loadedFile.file.path === oldPath) { return { ...loadedFile, - file: updatedFile, + file: updatedFile }; } return loadedFile; @@ -60,7 +60,7 @@ function createFileStore() { subscribe, onFileCreate: handleFileCreate, onFileRename: handleFileRename, - onFileDelete: handleFileDelete, + onFileDelete: handleFileDelete }; } diff --git a/src/svelte/app/services/filters/custom/filter-by-groups.ts b/src/svelte/app/services/filters/custom/filter-by-groups.ts index cb51755..0ea0e7d 100644 --- a/src/svelte/app/services/filters/custom/filter-by-groups.ts +++ b/src/svelte/app/services/filters/custom/filter-by-groups.ts @@ -5,13 +5,13 @@ import type { FolderFilterRule, PropertyFilterRule, TFilterGroup, - TFilterRule, + TFilterRule } from "src/types"; import { loadPropertyValue } from "src/svelte/shared/services/load-property-value"; import { getDateDaysAgo, - getDateDaysAhead, + getDateDaysAhead } from "src/svelte/shared/services/time-utils"; import { DatePropertyFilterValue, FilterRuleType } from "src/types"; import { removeFrontmatter } from "../../utils/content-utils"; @@ -108,7 +108,7 @@ const filterByPropertyType = ( type, matchWhenPropertyDNE, propertyType, - propertyName, + propertyName } = filter; ///The property is empty when the user has not chosen a property. @@ -260,7 +260,7 @@ const filterByFolder = ( const compare = filter.value.toLowerCase().trim(); const doesMatch = matchFolderFilter(value, compare, condition, { - includeSubfolders, + includeSubfolders }); return doesMatch; }; diff --git a/src/svelte/app/services/filters/custom/match-checkbox-property-filter.ts b/src/svelte/app/services/filters/custom/match-checkbox-property-filter.ts index 91e1904..46ef051 100644 --- a/src/svelte/app/services/filters/custom/match-checkbox-property-filter.ts +++ b/src/svelte/app/services/filters/custom/match-checkbox-property-filter.ts @@ -24,6 +24,8 @@ export const matchCheckboxPropertyFilter = ( return propertyValue === null; default: - throw new Error(`CheckboxFilterCondition not supported: ${condition}`); + throw new Error( + `CheckboxFilterCondition not supported: ${condition}` + ); } -} +}; diff --git a/src/svelte/app/services/filters/custom/match-content-filter.ts b/src/svelte/app/services/filters/custom/match-content-filter.ts index 6eac387..9644a1e 100644 --- a/src/svelte/app/services/filters/custom/match-content-filter.ts +++ b/src/svelte/app/services/filters/custom/match-content-filter.ts @@ -3,12 +3,24 @@ import { ContentFilterCondition } from "src/types"; export const matchContentFilter = ( content: string, compare: string, - condition: ContentFilterCondition, + condition: ContentFilterCondition ): boolean => { - console.assert(content === content.toLowerCase(), `ContentFilter content "${content}" must be lowercase`); - console.assert(/^\s/.test(content) === false, `ContentFilter content "${content}" must not contain whitespace`); - console.assert(compare === compare.toLowerCase(), `ContentFilter compare "${compare}" must be lowercase`); - console.assert(/\s$/.test(compare) === false, `ContentFilter compare "${compare}" must not contain whitespace`); + console.assert( + content === content.toLowerCase(), + `ContentFilter content "${content}" must be lowercase` + ); + console.assert( + /^\s/.test(content) === false, + `ContentFilter content "${content}" must not contain whitespace` + ); + console.assert( + compare === compare.toLowerCase(), + `ContentFilter compare "${compare}" must be lowercase` + ); + console.assert( + /\s$/.test(compare) === false, + `ContentFilter compare "${compare}" must not contain whitespace` + ); switch (condition) { case ContentFilterCondition.CONTAINS: @@ -24,6 +36,8 @@ export const matchContentFilter = ( return content !== ""; default: - throw new Error(`ContentFilterCondition not supported: ${condition}`); + throw new Error( + `ContentFilterCondition not supported: ${condition}` + ); } }; diff --git a/src/svelte/app/services/filters/custom/match-date-property-filter.ts b/src/svelte/app/services/filters/custom/match-date-property-filter.ts index bff1744..a1b080e 100644 --- a/src/svelte/app/services/filters/custom/match-date-property-filter.ts +++ b/src/svelte/app/services/filters/custom/match-date-property-filter.ts @@ -1,4 +1,7 @@ -import { getMomentDate, isDateSupported } from "src/svelte/shared/services/time-utils"; +import { + getMomentDate, + isDateSupported +} from "src/svelte/shared/services/time-utils"; import { DateFilterCondition } from "src/types"; export const matchDatePropertyFilter = ( @@ -8,9 +11,15 @@ export const matchDatePropertyFilter = ( matchIfNull: boolean ) => { if (propertyValue) { - console.assert(isDateSupported(propertyValue), `DatePropertyFilter propertyValue "${propertyValue}" must be supported date format`); + console.assert( + isDateSupported(propertyValue), + `DatePropertyFilter propertyValue "${propertyValue}" must be supported date format` + ); } - console.assert(isDateSupported(compare), `DatePropertyFilter compare "${compare}" must be supported date format`); + console.assert( + isDateSupported(compare), + `DatePropertyFilter compare "${compare}" must be supported date format` + ); switch (condition) { case DateFilterCondition.IS: { @@ -34,10 +43,12 @@ export const matchDatePropertyFilter = ( const propertyValueDate = getMomentDate(propertyValue); const compareDate = getMomentDate(compare); - return propertyValueDate.isAfter(compareDate, "day") || propertyValueDate.isSame(compareDate, "day"); + return ( + propertyValueDate.isAfter(compareDate, "day") || + propertyValueDate.isSame(compareDate, "day") + ); } - case DateFilterCondition.IS_BEFORE: { if (propertyValue === null) return matchIfNull; @@ -51,7 +62,10 @@ export const matchDatePropertyFilter = ( const propertyValueDate = getMomentDate(propertyValue); const compareDate = getMomentDate(compare); - return propertyValueDate.isBefore(compareDate, "day") || propertyValueDate.isSame(compareDate, "day"); + return ( + propertyValueDate.isBefore(compareDate, "day") || + propertyValueDate.isSame(compareDate, "day") + ); } case DateFilterCondition.EXISTS: @@ -63,4 +77,4 @@ export const matchDatePropertyFilter = ( default: throw new Error(`DateFilterCondition not supported: ${condition}`); } -} +}; diff --git a/src/svelte/app/services/filters/custom/match-file-name-filter.ts b/src/svelte/app/services/filters/custom/match-file-name-filter.ts index af7c31d..001d6c3 100644 --- a/src/svelte/app/services/filters/custom/match-file-name-filter.ts +++ b/src/svelte/app/services/filters/custom/match-file-name-filter.ts @@ -3,13 +3,25 @@ import { FileNameFilterCondition } from "src/types"; export const matchFileNameFilter = ( fileName: string, compare: string, - condition: FileNameFilterCondition, + condition: FileNameFilterCondition ): boolean => { - console.assert(fileName === fileName.toLowerCase(), `FileNameFilter fileName "${fileName}" must be lowercase`); - console.assert(/^\s/.test(fileName) === false, `FileNameFilter fileName "${fileName}" must not contain whitespace`); + console.assert( + fileName === fileName.toLowerCase(), + `FileNameFilter fileName "${fileName}" must be lowercase` + ); + console.assert( + /^\s/.test(fileName) === false, + `FileNameFilter fileName "${fileName}" must not contain whitespace` + ); - console.assert(compare === compare.toLowerCase(), `FileNameFilter compare "${compare}" must be lowercase`); - console.assert(/\s$/.test(compare) === false, `FileNameFilter compare "${compare}" must not contain whitespace`); + console.assert( + compare === compare.toLowerCase(), + `FileNameFilter compare "${compare}" must be lowercase` + ); + console.assert( + /\s$/.test(compare) === false, + `FileNameFilter compare "${compare}" must not contain whitespace` + ); switch (condition) { case FileNameFilterCondition.IS: @@ -33,6 +45,8 @@ export const matchFileNameFilter = ( return fileName.endsWith(compare); default: - throw new Error(`FileNameFilterCondition not supported: ${condition}`); + throw new Error( + `FileNameFilterCondition not supported: ${condition}` + ); } }; diff --git a/src/svelte/app/services/filters/custom/match-folder-filter.ts b/src/svelte/app/services/filters/custom/match-folder-filter.ts index 77746ce..6bcbb94 100644 --- a/src/svelte/app/services/filters/custom/match-folder-filter.ts +++ b/src/svelte/app/services/filters/custom/match-folder-filter.ts @@ -8,10 +8,22 @@ export const matchFolderFilter = ( includeSubfolders: boolean; } ): boolean => { - console.assert(filePath === filePath.toLowerCase(), `FolderFilter filePath "${filePath}" must be lowercase`); - console.assert(/^\s/.test(filePath) === false, `FolderFilter filePath "${filePath}" must not contain whitespace`); - console.assert(compare === compare.toLowerCase(), `FolderFilter compare "${compare}" must be lowercase`); - console.assert(/\s$/.test(compare) === false, `FolderFilter compare "${compare}" must not contain whitespace`); + console.assert( + filePath === filePath.toLowerCase(), + `FolderFilter filePath "${filePath}" must be lowercase` + ); + console.assert( + /^\s/.test(filePath) === false, + `FolderFilter filePath "${filePath}" must not contain whitespace` + ); + console.assert( + compare === compare.toLowerCase(), + `FolderFilter compare "${compare}" must be lowercase` + ); + console.assert( + /\s$/.test(compare) === false, + `FolderFilter compare "${compare}" must not contain whitespace` + ); if (compare === "/") { return true; @@ -31,6 +43,8 @@ export const matchFolderFilter = ( return filePath !== compare; default: - throw new Error(`FolderFilterCondition not supported: ${condition}`); + throw new Error( + `FolderFilterCondition not supported: ${condition}` + ); } }; diff --git a/src/svelte/app/services/filters/custom/match-list-property-filter.ts b/src/svelte/app/services/filters/custom/match-list-property-filter.ts index ee36ad0..a77a738 100644 --- a/src/svelte/app/services/filters/custom/match-list-property-filter.ts +++ b/src/svelte/app/services/filters/custom/match-list-property-filter.ts @@ -7,14 +7,35 @@ export const matchListPropertyFilter = ( matchIfNull: boolean ) => { if (propertyValue) { - console.assert(propertyValue.every(value => value.length > 0), `ListPropertyFilter propertyValue "${propertyValue}" must not contain empty strings`); - console.assert(propertyValue.every(value => value === value.toLowerCase()), `ListPropertyFilter propertyValue "${propertyValue}" must be lowercase`); - console.assert(propertyValue.every(value => /^\s/.test(value) === false), `ListPropertyFilter propertyValue "${propertyValue}" must not contain whitespace`); - console.assert(propertyValue.every(value => /\s$/.test(value) === false), `ListPropertyFilter propertyValue "${propertyValue}" must not contain whitespace`); + console.assert( + propertyValue.every((value) => value.length > 0), + `ListPropertyFilter propertyValue "${propertyValue}" must not contain empty strings` + ); + console.assert( + propertyValue.every((value) => value === value.toLowerCase()), + `ListPropertyFilter propertyValue "${propertyValue}" must be lowercase` + ); + console.assert( + propertyValue.every((value) => /^\s/.test(value) === false), + `ListPropertyFilter propertyValue "${propertyValue}" must not contain whitespace` + ); + console.assert( + propertyValue.every((value) => /\s$/.test(value) === false), + `ListPropertyFilter propertyValue "${propertyValue}" must not contain whitespace` + ); } - console.assert(compare.every(value => value === value.toLowerCase()), `ListPropertyFilter compare "${compare}" must be lowercase`); - console.assert(compare.every(value => /^\s/.test(value) === false), `ListPropertyFilter compare "${compare}" must not contain whitespace`); - console.assert(compare.every(value => /\s$/.test(value) === false), `ListPropertyFilter compare "${compare}" must not contain whitespace`); + console.assert( + compare.every((value) => value === value.toLowerCase()), + `ListPropertyFilter compare "${compare}" must be lowercase` + ); + console.assert( + compare.every((value) => /^\s/.test(value) === false), + `ListPropertyFilter compare "${compare}" must not contain whitespace` + ); + console.assert( + compare.every((value) => /\s$/.test(value) === false), + `ListPropertyFilter compare "${compare}" must not contain whitespace` + ); switch (condition) { case ListFilterCondition.CONTAINS: @@ -38,4 +59,4 @@ export const matchListPropertyFilter = ( default: throw new Error(`ListFilterCondition not supported: ${condition}`); } -} +}; diff --git a/src/svelte/app/services/filters/custom/match-number-property-filter.ts b/src/svelte/app/services/filters/custom/match-number-property-filter.ts index 334ebb5..be31dbd 100644 --- a/src/svelte/app/services/filters/custom/match-number-property-filter.ts +++ b/src/svelte/app/services/filters/custom/match-number-property-filter.ts @@ -44,6 +44,8 @@ export const matchNumberPropertyFilter = ( return propertyValue === null; default: - throw new Error(`NumberFilterCondition not supported: ${condition}`); + throw new Error( + `NumberFilterCondition not supported: ${condition}` + ); } }; diff --git a/src/svelte/app/services/filters/custom/match-text-property-filter.ts b/src/svelte/app/services/filters/custom/match-text-property-filter.ts index 95b93b9..566b926 100644 --- a/src/svelte/app/services/filters/custom/match-text-property-filter.ts +++ b/src/svelte/app/services/filters/custom/match-text-property-filter.ts @@ -7,13 +7,31 @@ export const matchTextPropertyFilter = ( matchIfNull: boolean ): boolean => { if (propertyValue) { - console.assert(propertyValue === propertyValue.toLowerCase(), `TextFilter propertyValue "${propertyValue}" must be lowercase`); - console.assert(/^\s/.test(propertyValue) === false, `TextFilter propertyValue "${propertyValue}" must not contain whitespace`); - console.assert(/\s$/.test(propertyValue) === false, `TextFilter propertyValue "${propertyValue}" must not contain whitespace`); + console.assert( + propertyValue === propertyValue.toLowerCase(), + `TextFilter propertyValue "${propertyValue}" must be lowercase` + ); + console.assert( + /^\s/.test(propertyValue) === false, + `TextFilter propertyValue "${propertyValue}" must not contain whitespace` + ); + console.assert( + /\s$/.test(propertyValue) === false, + `TextFilter propertyValue "${propertyValue}" must not contain whitespace` + ); } - console.assert(compare === compare.toLowerCase(), `TextFilter compare "${compare}" must be lowercase`); - console.assert(/^\s/.test(compare) === false, `TextFilter compare "${compare}" must not contain whitespace`); - console.assert(/\s$/.test(compare) === false, `TextFilter compare "${compare}" must not contain whitespace`); + console.assert( + compare === compare.toLowerCase(), + `TextFilter compare "${compare}" must be lowercase` + ); + console.assert( + /^\s/.test(compare) === false, + `TextFilter compare "${compare}" must not contain whitespace` + ); + console.assert( + /\s$/.test(compare) === false, + `TextFilter compare "${compare}" must not contain whitespace` + ); switch (condition) { case TextFilterCondition.IS: diff --git a/src/svelte/app/services/link-utils/link-getters.ts b/src/svelte/app/services/link-utils/link-getters.ts index 21d689c..6309e0a 100644 --- a/src/svelte/app/services/link-utils/link-getters.ts +++ b/src/svelte/app/services/link-utils/link-getters.ts @@ -1,6 +1,6 @@ import { EXTERNAL_EMBED_REGEX as EXTERNAL_EMBED_REGEX, - INTERNAL_EMBED_REGEX, + INTERNAL_EMBED_REGEX } from "./constants"; export const getFirstInternalEmbed = (content: string) => { diff --git a/src/svelte/app/services/link-utils/link-target-getters.ts b/src/svelte/app/services/link-utils/link-target-getters.ts index 1cfc089..1a8ee6d 100644 --- a/src/svelte/app/services/link-utils/link-target-getters.ts +++ b/src/svelte/app/services/link-utils/link-target-getters.ts @@ -1,7 +1,7 @@ import { WIKI_LINK_REGEX, INTERNAL_EMBED_REGEX, - EXTERNAL_EMBED_REGEX, + EXTERNAL_EMBED_REGEX } from "./constants"; export const getWikiLinkTarget = (value: string) => { diff --git a/src/svelte/app/services/link-utils/link-validators.ts b/src/svelte/app/services/link-utils/link-validators.ts index a7cf1d7..e838e7b 100644 --- a/src/svelte/app/services/link-utils/link-validators.ts +++ b/src/svelte/app/services/link-utils/link-validators.ts @@ -2,7 +2,7 @@ import { INTERNAL_EMBED_REGEX, EXTERNAL_EMBED_REGEX, URL_REGEX, - WIKI_LINK_REGEX, + WIKI_LINK_REGEX } from "./constants"; export const isInternalEmbed = (value: string) => { diff --git a/src/svelte/app/services/open-file.ts b/src/svelte/app/services/open-file.ts index bb9679f..0dd6a79 100644 --- a/src/svelte/app/services/open-file.ts +++ b/src/svelte/app/services/open-file.ts @@ -14,7 +14,7 @@ export const openInCurrentTab = ( plugin.app.workspace.setActiveLeaf(leaf); } else { plugin.app.workspace.openLinkText("", filePath, "tab", { - active: true, + active: true }); } }; diff --git a/src/svelte/app/services/random-file-sort-store.ts b/src/svelte/app/services/random-file-sort-store.ts index 0edccbc..ef09eda 100644 --- a/src/svelte/app/services/random-file-sort-store.ts +++ b/src/svelte/app/services/random-file-sort-store.ts @@ -11,7 +11,7 @@ function createRandomFileSortStore() { Logger.trace({ fileName: "random-file-sort-store.ts", functionName: "load", - message: "called", + message: "called" }); const files = app.vault.getFiles(); @@ -59,7 +59,7 @@ function createRandomFileSortStore() { subscribe, onFileCreate: handleFileCreate, onFileRename: handleFileRename, - onFileDelete: handleFileDelete, + onFileDelete: handleFileDelete }; } diff --git a/src/svelte/app/services/render-data.ts b/src/svelte/app/services/render-data.ts index 55d1ebb..a50ed27 100644 --- a/src/svelte/app/services/render-data.ts +++ b/src/svelte/app/services/render-data.ts @@ -3,26 +3,26 @@ import { App, type FrontMatterCache, TFile } from "obsidian"; import { type FileTextProperties, loadPropertyValue, - loadTextProperties, + loadTextProperties } from "src/svelte/shared/services/load-property-value"; import { getTimeMillis, - isDateSupported, + isDateSupported } from "src/svelte/shared/services/time-utils"; import { type CoverImageFit, PropertyType, - type VaultExplorerPluginSettings, + type VaultExplorerPluginSettings } from "src/types"; import type { FileRenderData } from "../types"; import { getFirstExternalEmbed, - getFirstInternalEmbed, + getFirstInternalEmbed } from "./link-utils/link-getters"; import { getExternalEmbedTarget, getInternalEmbedTarget, - getWikiLinkTarget, + getWikiLinkTarget } from "./link-utils/link-target-getters"; import { isUrl, isWikiLink } from "./link-utils/link-validators"; import { removeFrontmatter } from "./utils/content-utils"; @@ -45,7 +45,7 @@ export const formatFileDataForRender = ({ settings, file, fileId, - fileContent, + fileContent }: { app: App; settings: VaultExplorerPluginSettings; @@ -67,7 +67,7 @@ export const formatFileDataForRender = ({ coverImageFit: coverImageFitProp, custom1: custom1Prop, custom2: custom2Prop, - custom3: custom3Prop, + custom3: custom3Prop } = settings.properties; let tags: string[] | null = loadPropertyValue( @@ -240,7 +240,7 @@ export const formatFileDataForRender = ({ modifiedMillis, custom1, custom2, - custom3, + custom3 }; }; diff --git a/src/svelte/app/services/smi-cache.ts b/src/svelte/app/services/smi-cache.ts index 7fb5a94..495f57b 100644 --- a/src/svelte/app/services/smi-cache.ts +++ b/src/svelte/app/services/smi-cache.ts @@ -31,17 +31,17 @@ export const getSMICacheEntry = async (websiteUrl: string) => { Logger.trace({ fileName: "smi-cache.ts", functionName: "getSMICacheEntry", - message: "called", + message: "called" }); Logger.debug( { fileName: "grid-card.svelte", functionName: "getCachedSocialMediaUrl", - message: "getting cached entry", + message: "getting cached entry" }, { - websiteUrl, + websiteUrl } ); const db = await openDatabase(); @@ -58,18 +58,18 @@ export const putSMICacheEntry = async (url: string, smiUrl: string | null) => { Logger.trace({ fileName: "smi-cache.ts", functionName: "putSMICacheEntry", - message: "called", + message: "called" }); Logger.debug( { fileName: "smi-cache.ts", functionName: "putSMICacheEntry", - message: "putting entry", + message: "putting entry" }, { url, - smiUrl, + smiUrl } ); @@ -77,7 +77,7 @@ export const putSMICacheEntry = async (url: string, smiUrl: string | null) => { await db.put(STORE_NAME, { url, smiUrl, - timestamp: Date.now(), + timestamp: Date.now() }); }; @@ -85,7 +85,7 @@ export const clearSMICache = async () => { Logger.trace({ fileName: "smi-cache.ts", functionName: "clearSMICache", - message: "called", + message: "called" }); try { const db = await openDatabase(); @@ -98,7 +98,7 @@ export const clearSMICache = async () => { { fileName: "smi-cache.ts", functionName: "clearSMICache", - message: "failed to clear cache", + message: "failed to clear cache" }, error.message ); @@ -109,6 +109,6 @@ const openDatabase = () => { return openDB(DATABASE_NAME, 1, { upgrade(db) { db.createObjectStore(STORE_NAME, { keyPath: "url" }); - }, + } }); }; diff --git a/src/svelte/app/services/utils/image-utils.ts b/src/svelte/app/services/utils/image-utils.ts index 6e21b45..cdb8053 100644 --- a/src/svelte/app/services/utils/image-utils.ts +++ b/src/svelte/app/services/utils/image-utils.ts @@ -6,7 +6,7 @@ const IMAGE_EXTENSIONS = [ "webp", "svg", "avif", - "bmp", + "bmp" ]; export const isImageExtension = (extension: string) => { diff --git a/src/svelte/app/services/utils/json-utils.ts b/src/svelte/app/services/utils/json-utils.ts index 3e0c46c..d44717d 100644 --- a/src/svelte/app/services/utils/json-utils.ts +++ b/src/svelte/app/services/utils/json-utils.ts @@ -7,7 +7,7 @@ export const parseItems = (rawData: string): T[] => { export const stringifyItems = (items: unknown[]) => { return JSON.stringify( { - items, + items }, null, 2 diff --git a/src/svelte/custom-filter-app/services/display-name-utils.ts b/src/svelte/custom-filter-app/services/display-name-utils.ts index fd38880..176392b 100644 --- a/src/svelte/custom-filter-app/services/display-name-utils.ts +++ b/src/svelte/custom-filter-app/services/display-name-utils.ts @@ -9,7 +9,7 @@ import { FolderFilterCondition, ListFilterCondition, NumberFilterCondition, - TextFilterCondition, + TextFilterCondition } from "src/types"; export const getDisplayNameForFilterRuleType = (type: FilterRuleType) => { diff --git a/src/svelte/custom-filter-app/services/utils.ts b/src/svelte/custom-filter-app/services/utils.ts index b84662e..88fca6d 100644 --- a/src/svelte/custom-filter-app/services/utils.ts +++ b/src/svelte/custom-filter-app/services/utils.ts @@ -2,7 +2,7 @@ import { FilterRuleType, PropertyType, TextFilterCondition, - type TextPropertyFilterRule, + type TextPropertyFilterRule } from "src/types"; import { generateRandomId } from "../../shared/services/random"; @@ -16,6 +16,6 @@ export const createPropertyFilter = (): TextPropertyFilterRule => { isEnabled: true, condition: TextFilterCondition.IS, value: "", - matchWhenPropertyDNE: false, + matchWhenPropertyDNE: false }; }; diff --git a/src/svelte/shared/services/load-property-value.ts b/src/svelte/shared/services/load-property-value.ts index d2bcafd..e62dd5b 100644 --- a/src/svelte/shared/services/load-property-value.ts +++ b/src/svelte/shared/services/load-property-value.ts @@ -36,7 +36,7 @@ export const loadTextProperties = ( textProperties.push({ name: key, - value: value as string, + value: value as string }); } } diff --git a/src/svelte/shared/services/time-utils.ts b/src/svelte/shared/services/time-utils.ts index 22c48fd..315a6a5 100644 --- a/src/svelte/shared/services/time-utils.ts +++ b/src/svelte/shared/services/time-utils.ts @@ -83,7 +83,7 @@ export const getEndOfDayMillis = (date: string) => { hour: 23, minute: 59, second: 59, - millisecond: 999, + millisecond: 999 }); return day.valueOf(); }; diff --git a/src/types/index.guard.ts b/src/types/index.guard.ts index ec648f3..1e1d2d8 100644 --- a/src/types/index.guard.ts +++ b/src/types/index.guard.ts @@ -14,7 +14,7 @@ import { PropertyType, TExplorerView, TextFilterCondition, - type VaultExplorerPluginSettings, + type VaultExplorerPluginSettings } from "./index"; export function isVaultExplorerPluginSettings( diff --git a/src/types/index.ts b/src/types/index.ts index 6c5d598..bec50b4 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -106,7 +106,7 @@ export enum TExplorerView { GRID = "grid", LIST = "list", FEED = "feed", - TABLE = "table", + TABLE = "table" } export type FilterOperator = "and" | "or"; @@ -119,14 +119,14 @@ export enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } export enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } export enum NumberFilterCondition { @@ -137,14 +137,14 @@ export enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } export enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } export enum DateFilterCondition { @@ -154,19 +154,19 @@ export enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } export enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } export enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } export enum FileNameFilterCondition { @@ -175,7 +175,7 @@ export enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } export type FilterCondition = @@ -195,14 +195,14 @@ export enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } export enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } export enum DatePropertyFilterValue { @@ -213,7 +213,7 @@ export enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-0.3.3.ts b/src/types/types-0.3.3.ts index a7e70d7..c12b84a 100644 --- a/src/types/types-0.3.3.ts +++ b/src/types/types-0.3.3.ts @@ -54,7 +54,7 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } type FilterOperator = "and" | "or"; diff --git a/src/types/types-0.5.5.ts b/src/types/types-0.5.5.ts index 0619607..b5af3ed 100644 --- a/src/types/types-0.5.5.ts +++ b/src/types/types-0.5.5.ts @@ -28,7 +28,7 @@ export { NumberFilterCondition as NumberFilterCondition_0_5_5, ListFilterCondition as ListFilterCondition_0_5_5, CheckboxFilterCondition as CheckboxFilterCondition_0_5_5, - DateFilterCondition as DateFilterCondition_0_5_5, + DateFilterCondition as DateFilterCondition_0_5_5 }; type FilterOperator = "and" | "or"; @@ -41,14 +41,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -59,14 +59,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -74,7 +74,7 @@ enum DateFilterCondition { IS_BEFORE = "is-before", IS_AFTER = "is-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } type FilterCondition = @@ -99,7 +99,7 @@ enum PropertyFilterType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } interface TextPropertyFilter extends BasePropertyFilter { diff --git a/src/types/types-1-37-0.ts b/src/types/types-1-37-0.ts index 62da279..a0fc848 100644 --- a/src/types/types-1-37-0.ts +++ b/src/types/types-1-37-0.ts @@ -132,7 +132,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -145,14 +145,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -163,14 +163,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -180,19 +180,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -201,7 +201,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -221,14 +221,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -239,7 +239,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.0.1.ts b/src/types/types-1.0.1.ts index 8c171a9..b6d9150 100644 --- a/src/types/types-1.0.1.ts +++ b/src/types/types-1.0.1.ts @@ -33,14 +33,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -51,14 +51,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -66,7 +66,7 @@ enum DateFilterCondition { IS_BEFORE = "is-before", IS_AFTER = "is-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } type FilterCondition = @@ -91,7 +91,7 @@ enum PropertyFilterType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } interface TextPropertyFilter extends BasePropertyFilter { diff --git a/src/types/types-1.12.1.ts b/src/types/types-1.12.1.ts index 682c1eb..1fe1f4d 100644 --- a/src/types/types-1.12.1.ts +++ b/src/types/types-1.12.1.ts @@ -8,7 +8,7 @@ export interface VaultExplorerPluginSettings_1_12_1 { custom1: string; custom2: string; custom3: string; - }, + }; filters: { search: string; onlyFavorites: boolean; @@ -17,13 +17,13 @@ export interface VaultExplorerPluginSettings_1_12_1 { custom: { selectedGroupId: string; groups: FilterGroup[]; - } - }, + }; + }; views: { currentView: ViewType; order: ViewType[]; titleWrapping: WordBreak; - } + }; pageSize: number; pluginVersion: string | null; } @@ -34,7 +34,7 @@ type WordBreak = "normal" | "break-word"; enum ViewType { GRID = "grid", - LIST = "list", + LIST = "list" } type FilterOperator = "and" | "or"; @@ -47,14 +47,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -65,14 +65,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -82,19 +82,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -103,10 +103,18 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } -type FilterCondition = TextFilterCondition | NumberFilterCondition | DateFilterCondition | CheckboxFilterCondition | ListFilterCondition | ContentFilterCondition | FolderFilterCondition | FileNameFilterCondition; +type FilterCondition = + | TextFilterCondition + | NumberFilterCondition + | DateFilterCondition + | CheckboxFilterCondition + | ListFilterCondition + | ContentFilterCondition + | FolderFilterCondition + | FileNameFilterCondition; //This matches the Obsidian property types enum PropertyType { @@ -115,14 +123,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -198,8 +206,17 @@ interface ContentFilterRule extends BaseFilterRule { condition: ContentFilterCondition; } -type FilterRule = PropertyFilterRule | FolderFilterRule | FileNameFilterRule | ContentFilterRule; -type PropertyFilterRule = TextPropertyFilterRule | NumberPropertyFilterRule | ListPropertyFilterRule | CheckboxPropertyFilterRule | DatePropertyFilterRule; +type FilterRule = + | PropertyFilterRule + | FolderFilterRule + | FileNameFilterRule + | ContentFilterRule; +type PropertyFilterRule = + | TextPropertyFilterRule + | NumberPropertyFilterRule + | ListPropertyFilterRule + | CheckboxPropertyFilterRule + | DatePropertyFilterRule; interface FilterGroup { id: string; @@ -208,6 +225,17 @@ interface FilterGroup { isEnabled: boolean; } -type SortFilter = "file-name-asc" | "file-name-desc" | "modified-asc" | "modified-desc"; +type SortFilter = + | "file-name-asc" + | "file-name-desc" + | "modified-asc" + | "modified-desc"; -type TimestampFilter = "created-today" | "modified-today" | "created-this-week" | "modified-this-week" | "created-2-weeks" | "modified-2-weeks" | "all"; +type TimestampFilter = + | "created-today" + | "modified-today" + | "created-this-week" + | "modified-this-week" + | "created-2-weeks" + | "modified-2-weeks" + | "all"; diff --git a/src/types/types-1.13.1.ts b/src/types/types-1.13.1.ts index bf6339b..da14e8c 100644 --- a/src/types/types-1.13.1.ts +++ b/src/types/types-1.13.1.ts @@ -8,7 +8,7 @@ export interface VaultExplorerPluginSettings_1_13_1 { custom1: string; custom2: string; custom3: string; - }, + }; filters: { search: string; onlyFavorites: boolean; @@ -17,14 +17,14 @@ export interface VaultExplorerPluginSettings_1_13_1 { custom: { selectedGroupId: string; groups: FilterGroup[]; - } - }, + }; + }; views: { currentView: ViewType; order: ViewType[]; titleWrapping: WordBreak; enableClockUpdates: boolean; - } + }; pageSize: number; pluginVersion: string | null; } @@ -33,7 +33,7 @@ type WordBreak = "normal" | "break-word"; enum ViewType { GRID = "grid", - LIST = "list", + LIST = "list" } type FilterOperator = "and" | "or"; @@ -46,14 +46,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -64,14 +64,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -81,19 +81,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -102,10 +102,18 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } -type FilterCondition = TextFilterCondition | NumberFilterCondition | DateFilterCondition | CheckboxFilterCondition | ListFilterCondition | ContentFilterCondition | FolderFilterCondition | FileNameFilterCondition; +type FilterCondition = + | TextFilterCondition + | NumberFilterCondition + | DateFilterCondition + | CheckboxFilterCondition + | ListFilterCondition + | ContentFilterCondition + | FolderFilterCondition + | FileNameFilterCondition; //This matches the Obsidian property types enum PropertyType { @@ -114,14 +122,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -197,8 +205,17 @@ interface ContentFilterRule extends BaseFilterRule { condition: ContentFilterCondition; } -type FilterRule = PropertyFilterRule | FolderFilterRule | FileNameFilterRule | ContentFilterRule; -type PropertyFilterRule = TextPropertyFilterRule | NumberPropertyFilterRule | ListPropertyFilterRule | CheckboxPropertyFilterRule | DatePropertyFilterRule; +type FilterRule = + | PropertyFilterRule + | FolderFilterRule + | FileNameFilterRule + | ContentFilterRule; +type PropertyFilterRule = + | TextPropertyFilterRule + | NumberPropertyFilterRule + | ListPropertyFilterRule + | CheckboxPropertyFilterRule + | DatePropertyFilterRule; interface FilterGroup { id: string; @@ -208,6 +225,17 @@ interface FilterGroup { isSticky: boolean; } -type SortFilter = "file-name-asc" | "file-name-desc" | "modified-asc" | "modified-desc"; +type SortFilter = + | "file-name-asc" + | "file-name-desc" + | "modified-asc" + | "modified-desc"; -type TimestampFilter = "created-today" | "modified-today" | "created-this-week" | "modified-this-week" | "created-2-weeks" | "modified-2-weeks" | "all"; +type TimestampFilter = + | "created-today" + | "modified-today" + | "created-this-week" + | "modified-this-week" + | "created-2-weeks" + | "modified-2-weeks" + | "all"; diff --git a/src/types/types-1.14.2.ts b/src/types/types-1.14.2.ts index 22bb619..2dff9bc 100644 --- a/src/types/types-1.14.2.ts +++ b/src/types/types-1.14.2.ts @@ -8,20 +8,20 @@ export interface VaultExplorerPluginSettings_1_14_2 { custom1: string; custom2: string; custom3: string; - }, + }; filters: { search: SearchFilter; favorites: FavoritesFilter; sort: SortFilter; timestamp: TimestampFilter; custom: CustomFilter; - }, + }; views: { currentView: ViewType; order: ViewType[]; titleWrapping: WordBreak; enableClockUpdates: boolean; - } + }; enableScrollButtons: boolean; pageSize: number; pluginVersion: string | null; @@ -35,12 +35,12 @@ interface SearchFilter { interface FavoritesFilter { isEnabled: boolean; value: boolean; -}; +} interface SortFilter { isEnabled: boolean; value: SortFilterOption; -}; +} interface TimestampFilter { isEnabled: boolean; @@ -53,15 +53,26 @@ interface CustomFilter { groups: FilterGroup[]; } -type TimestampFilterOption = "created-today" | "modified-today" | "created-this-week" | "modified-this-week" | "created-2-weeks" | "modified-2-weeks" | "all"; +type TimestampFilterOption = + | "created-today" + | "modified-today" + | "created-this-week" + | "modified-this-week" + | "created-2-weeks" + | "modified-2-weeks" + | "all"; -type SortFilterOption = "file-name-asc" | "file-name-desc" | "modified-asc" | "modified-desc"; +type SortFilterOption = + | "file-name-asc" + | "file-name-desc" + | "modified-asc" + | "modified-desc"; type WordBreak = "normal" | "break-word"; enum ViewType { GRID = "grid", - LIST = "list", + LIST = "list" } type FilterOperator = "and" | "or"; @@ -74,14 +85,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -92,14 +103,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -109,19 +120,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -130,10 +141,18 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } -type FilterCondition = TextFilterCondition | NumberFilterCondition | DateFilterCondition | CheckboxFilterCondition | ListFilterCondition | ContentFilterCondition | FolderFilterCondition | FileNameFilterCondition; +type FilterCondition = + | TextFilterCondition + | NumberFilterCondition + | DateFilterCondition + | CheckboxFilterCondition + | ListFilterCondition + | ContentFilterCondition + | FolderFilterCondition + | FileNameFilterCondition; //This matches the Obsidian property types enum PropertyType { @@ -142,14 +161,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -225,8 +244,17 @@ interface ContentFilterRule extends BaseFilterRule { condition: ContentFilterCondition; } -type FilterRule = PropertyFilterRule | FolderFilterRule | FileNameFilterRule | ContentFilterRule; -type PropertyFilterRule = TextPropertyFilterRule | NumberPropertyFilterRule | ListPropertyFilterRule | CheckboxPropertyFilterRule | DatePropertyFilterRule; +type FilterRule = + | PropertyFilterRule + | FolderFilterRule + | FileNameFilterRule + | ContentFilterRule; +type PropertyFilterRule = + | TextPropertyFilterRule + | NumberPropertyFilterRule + | ListPropertyFilterRule + | CheckboxPropertyFilterRule + | DatePropertyFilterRule; interface FilterGroup { id: string; diff --git a/src/types/types-1.16.0.ts b/src/types/types-1.16.0.ts index f01cbe8..fb55f91 100644 --- a/src/types/types-1.16.0.ts +++ b/src/types/types-1.16.0.ts @@ -75,7 +75,7 @@ type WordBreak = "normal" | "break-word"; enum ViewType { GRID = "grid", LIST = "list", - FEED = "feed", + FEED = "feed" } type FilterOperator = "and" | "or"; @@ -88,14 +88,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -106,14 +106,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -123,19 +123,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -144,7 +144,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -164,14 +164,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -182,7 +182,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.2.0.ts b/src/types/types-1.2.0.ts index 73c57a0..949a12e 100644 --- a/src/types/types-1.2.0.ts +++ b/src/types/types-1.2.0.ts @@ -6,7 +6,7 @@ export interface VaultExplorerPluginSettings_1_2_0 { custom1: string; custom2: string; custom3: string; - }, + }; filters: { folder: string; search: string; @@ -16,12 +16,12 @@ export interface VaultExplorerPluginSettings_1_2_0 { properties: { selectedGroupId: string; groups: PropertyFilterGroup[]; - } - }, + }; + }; views: { currentView: ViewType; order: ViewType[]; - } + }; pageSize: number; pluginVersion: string | null; } @@ -29,10 +29,9 @@ export interface VaultExplorerPluginSettings_1_2_0 { export { ViewType as ViewType_1_2_0 }; enum ViewType { GRID = "grid", - LIST = "list", + LIST = "list" } - type FilterOperator = "and" | "or"; enum TextFilterCondition { @@ -43,14 +42,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -61,14 +60,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -76,10 +75,15 @@ enum DateFilterCondition { IS_BEFORE = "is-before", IS_AFTER = "is-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } -type FilterCondition = TextFilterCondition | NumberFilterCondition | DateFilterCondition | CheckboxFilterCondition | ListFilterCondition; +type FilterCondition = + | TextFilterCondition + | NumberFilterCondition + | DateFilterCondition + | CheckboxFilterCondition + | ListFilterCondition; interface BasePropertyFilter { id: string; @@ -96,7 +100,7 @@ enum PropertyFilterType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } interface TextPropertyFilter extends BasePropertyFilter { @@ -110,12 +114,12 @@ interface NumberPropertyFilter extends BasePropertyFilter { } interface ListPropertyFilter extends BasePropertyFilter { - type: PropertyFilterType.LIST + type: PropertyFilterType.LIST; condition: ListFilterCondition; } interface CheckboxPropertyFilter extends BasePropertyFilter { - type: PropertyFilterType.CHECKBOX + type: PropertyFilterType.CHECKBOX; condition: CheckboxFilterCondition; } @@ -124,7 +128,12 @@ interface DatePropertyFilter extends BasePropertyFilter { condition: DateFilterCondition; } -type PropertyFilter = TextPropertyFilter | NumberPropertyFilter | ListPropertyFilter | CheckboxPropertyFilter | DatePropertyFilter; +type PropertyFilter = + | TextPropertyFilter + | NumberPropertyFilter + | ListPropertyFilter + | CheckboxPropertyFilter + | DatePropertyFilter; interface PropertyFilterGroup { id: string; @@ -133,6 +142,17 @@ interface PropertyFilterGroup { isEnabled: boolean; } -type SortFilter = "file-name-asc" | "file-name-desc" | "modified-asc" | "modified-desc"; +type SortFilter = + | "file-name-asc" + | "file-name-desc" + | "modified-asc" + | "modified-desc"; -type TimestampFilter = "created-today" | "modified-today" | "created-this-week" | "modified-this-week" | "created-2-weeks" | "modified-2-weeks" | "all"; +type TimestampFilter = + | "created-today" + | "modified-today" + | "created-this-week" + | "modified-this-week" + | "created-2-weeks" + | "modified-2-weeks" + | "all"; diff --git a/src/types/types-1.2.1.ts b/src/types/types-1.2.1.ts index b247a7d..7fa0cf6 100644 --- a/src/types/types-1.2.1.ts +++ b/src/types/types-1.2.1.ts @@ -6,7 +6,7 @@ export interface VaultExplorerPluginSettings_1_2_1 { custom1: string; custom2: string; custom3: string; - }, + }; filters: { folder: string; search: string; @@ -16,13 +16,13 @@ export interface VaultExplorerPluginSettings_1_2_1 { properties: { selectedGroupId: string; groups: PropertyFilterGroup[]; - } - }, + }; + }; views: { currentView: ViewType; order: ViewType[]; titleWrapping: WordBreak; - } + }; pageSize: number; pluginVersion: string | null; } @@ -31,7 +31,7 @@ type WordBreak = "normal" | "break-word"; enum ViewType { GRID = "grid", - LIST = "list", + LIST = "list" } type FilterOperator = "and" | "or"; @@ -44,14 +44,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -62,14 +62,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -77,10 +77,15 @@ enum DateFilterCondition { IS_BEFORE = "is-before", IS_AFTER = "is-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } -type FilterCondition = TextFilterCondition | NumberFilterCondition | DateFilterCondition | CheckboxFilterCondition | ListFilterCondition; +type FilterCondition = + | TextFilterCondition + | NumberFilterCondition + | DateFilterCondition + | CheckboxFilterCondition + | ListFilterCondition; interface BasePropertyFilter { id: string; @@ -97,7 +102,7 @@ enum PropertyFilterType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } interface TextPropertyFilter extends BasePropertyFilter { @@ -111,12 +116,12 @@ interface NumberPropertyFilter extends BasePropertyFilter { } interface ListPropertyFilter extends BasePropertyFilter { - type: PropertyFilterType.LIST + type: PropertyFilterType.LIST; condition: ListFilterCondition; } interface CheckboxPropertyFilter extends BasePropertyFilter { - type: PropertyFilterType.CHECKBOX + type: PropertyFilterType.CHECKBOX; condition: CheckboxFilterCondition; } @@ -125,7 +130,12 @@ interface DatePropertyFilter extends BasePropertyFilter { condition: DateFilterCondition; } -type PropertyFilter = TextPropertyFilter | NumberPropertyFilter | ListPropertyFilter | CheckboxPropertyFilter | DatePropertyFilter; +type PropertyFilter = + | TextPropertyFilter + | NumberPropertyFilter + | ListPropertyFilter + | CheckboxPropertyFilter + | DatePropertyFilter; interface PropertyFilterGroup { id: string; @@ -134,6 +144,17 @@ interface PropertyFilterGroup { isEnabled: boolean; } -type SortFilter = "file-name-asc" | "file-name-desc" | "modified-asc" | "modified-desc"; +type SortFilter = + | "file-name-asc" + | "file-name-desc" + | "modified-asc" + | "modified-desc"; -type TimestampFilter = "created-today" | "modified-today" | "created-this-week" | "modified-this-week" | "created-2-weeks" | "modified-2-weeks" | "all"; +type TimestampFilter = + | "created-today" + | "modified-today" + | "created-this-week" + | "modified-this-week" + | "created-2-weeks" + | "modified-2-weeks" + | "all"; diff --git a/src/types/types-1.20.0.ts b/src/types/types-1.20.0.ts index 94504d3..a97218b 100644 --- a/src/types/types-1.20.0.ts +++ b/src/types/types-1.20.0.ts @@ -102,7 +102,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -115,14 +115,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -133,14 +133,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -150,19 +150,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -171,7 +171,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -191,14 +191,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -209,7 +209,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.21.2.ts b/src/types/types-1.21.2.ts index e02cb33..0a2a811 100644 --- a/src/types/types-1.21.2.ts +++ b/src/types/types-1.21.2.ts @@ -103,7 +103,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -116,14 +116,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -134,14 +134,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -151,19 +151,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -172,7 +172,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -192,14 +192,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -210,7 +210,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.22.0.ts b/src/types/types-1.22.0.ts index c09ea79..3713281 100644 --- a/src/types/types-1.22.0.ts +++ b/src/types/types-1.22.0.ts @@ -108,7 +108,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -121,14 +121,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -139,14 +139,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -156,19 +156,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -177,7 +177,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -197,14 +197,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -215,7 +215,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.23.0.ts b/src/types/types-1.23.0.ts index 3ea8af6..2aed1cf 100644 --- a/src/types/types-1.23.0.ts +++ b/src/types/types-1.23.0.ts @@ -110,7 +110,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -123,14 +123,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -141,14 +141,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -158,19 +158,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -179,7 +179,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -199,14 +199,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -217,7 +217,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.23.2.ts b/src/types/types-1.23.2.ts index 02c21ff..ef90d13 100644 --- a/src/types/types-1.23.2.ts +++ b/src/types/types-1.23.2.ts @@ -110,7 +110,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -123,14 +123,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -141,14 +141,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -158,19 +158,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -179,7 +179,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -199,14 +199,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -217,7 +217,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.24.2.ts b/src/types/types-1.24.2.ts index 6651c88..5661030 100644 --- a/src/types/types-1.24.2.ts +++ b/src/types/types-1.24.2.ts @@ -112,7 +112,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -125,14 +125,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -143,14 +143,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -160,19 +160,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -181,7 +181,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -201,14 +201,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -219,7 +219,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.25.2.ts b/src/types/types-1.25.2.ts index ad3b15e..a8aee7a 100644 --- a/src/types/types-1.25.2.ts +++ b/src/types/types-1.25.2.ts @@ -115,7 +115,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -128,14 +128,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -146,14 +146,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -163,19 +163,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -184,7 +184,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -204,14 +204,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -222,7 +222,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.26.3.ts b/src/types/types-1.26.3.ts index 5deb4ea..c5ba47b 100644 --- a/src/types/types-1.26.3.ts +++ b/src/types/types-1.26.3.ts @@ -116,7 +116,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -129,14 +129,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -147,14 +147,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -164,19 +164,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -185,7 +185,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -205,14 +205,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -223,7 +223,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.28.0.ts b/src/types/types-1.28.0.ts index a9246b1..ff5e06b 100644 --- a/src/types/types-1.28.0.ts +++ b/src/types/types-1.28.0.ts @@ -122,7 +122,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -135,14 +135,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -153,14 +153,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -170,19 +170,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -191,7 +191,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -211,14 +211,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -229,7 +229,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.29.0.ts b/src/types/types-1.29.0.ts index 0ab4d81..b3a0aac 100644 --- a/src/types/types-1.29.0.ts +++ b/src/types/types-1.29.0.ts @@ -124,7 +124,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -137,14 +137,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -155,14 +155,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -172,19 +172,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -193,7 +193,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -213,14 +213,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -231,7 +231,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.30.5.ts b/src/types/types-1.30.5.ts index ad2bf6b..72e6858 100644 --- a/src/types/types-1.30.5.ts +++ b/src/types/types-1.30.5.ts @@ -127,7 +127,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -140,14 +140,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -158,14 +158,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -175,19 +175,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -196,7 +196,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -216,14 +216,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -234,7 +234,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.32.2.ts b/src/types/types-1.32.2.ts index 95e9539..a2d2209 100644 --- a/src/types/types-1.32.2.ts +++ b/src/types/types-1.32.2.ts @@ -125,7 +125,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -138,14 +138,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -156,14 +156,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -173,19 +173,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -194,7 +194,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -214,14 +214,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -232,7 +232,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.36.3.ts b/src/types/types-1.36.3.ts index 243a8b8..5ee74ce 100644 --- a/src/types/types-1.36.3.ts +++ b/src/types/types-1.36.3.ts @@ -122,7 +122,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -135,14 +135,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -153,14 +153,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -170,19 +170,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -191,7 +191,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -211,14 +211,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -229,7 +229,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.38.0.ts b/src/types/types-1.38.0.ts index 8a1d48c..fa5257b 100644 --- a/src/types/types-1.38.0.ts +++ b/src/types/types-1.38.0.ts @@ -131,7 +131,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -144,14 +144,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -162,14 +162,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -179,19 +179,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -200,7 +200,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -220,14 +220,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -238,7 +238,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.39.0.ts b/src/types/types-1.39.0.ts index 26cbad9..e44f237 100644 --- a/src/types/types-1.39.0.ts +++ b/src/types/types-1.39.0.ts @@ -133,7 +133,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -146,14 +146,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -164,14 +164,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -181,19 +181,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -202,7 +202,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -222,14 +222,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -240,7 +240,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.40.2.ts b/src/types/types-1.40.2.ts index bbad4f7..f6f6c87 100644 --- a/src/types/types-1.40.2.ts +++ b/src/types/types-1.40.2.ts @@ -132,7 +132,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -145,14 +145,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -163,14 +163,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -180,19 +180,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -201,7 +201,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -221,14 +221,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -239,7 +239,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.41.1.ts b/src/types/types-1.41.1.ts index 0ae4e8d..904b810 100644 --- a/src/types/types-1.41.1.ts +++ b/src/types/types-1.41.1.ts @@ -136,7 +136,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -149,14 +149,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -167,14 +167,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -184,19 +184,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -205,7 +205,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -225,14 +225,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -243,7 +243,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.44.6.ts b/src/types/types-1.44.6.ts index ddf3eff..ecfcdf0 100644 --- a/src/types/types-1.44.6.ts +++ b/src/types/types-1.44.6.ts @@ -116,7 +116,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -129,14 +129,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -147,14 +147,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -164,19 +164,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -185,7 +185,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -205,14 +205,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -223,7 +223,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.45.0.ts b/src/types/types-1.45.0.ts index 9c0fe33..f1e4af1 100644 --- a/src/types/types-1.45.0.ts +++ b/src/types/types-1.45.0.ts @@ -117,7 +117,7 @@ enum TExplorerView { FEED = "feed", TABLE = "table", RECOMMENDED = "recommended", - RELATED = "related", + RELATED = "related" } type FilterOperator = "and" | "or"; @@ -130,14 +130,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -148,14 +148,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -165,19 +165,19 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ContentFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", IS_EMPTY = "is-empty", - IS_NOT_EMPTY = "is-not-empty", + IS_NOT_EMPTY = "is-not-empty" } enum FolderFilterCondition { IS = "is", - IS_NOT = "is-not", + IS_NOT = "is-not" } enum FileNameFilterCondition { @@ -186,7 +186,7 @@ enum FileNameFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", STARTS_WITH = "starts-with", - ENDS_WITH = "ends-with", + ENDS_WITH = "ends-with" } type FilterCondition = @@ -206,14 +206,14 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum FilterRuleType { PROPERTY = "property", FOLDER = "folder", FILE_NAME = "file-name", - CONTENT = "content", + CONTENT = "content" } enum DatePropertyFilterValue { @@ -224,7 +224,7 @@ enum DatePropertyFilterValue { ONE_WEEK_AGO = "one-week-ago", ONE_MONTH_FROM_NOW = "one-month-from-now", ONE_MONTH_AGO = "one-month-ago", - CUSTOM = "custom", + CUSTOM = "custom" } interface BaseFilterRule { diff --git a/src/types/types-1.5.0.ts b/src/types/types-1.5.0.ts index 2f58b0c..b367c80 100644 --- a/src/types/types-1.5.0.ts +++ b/src/types/types-1.5.0.ts @@ -6,7 +6,7 @@ export interface VaultExplorerPluginSettings_1_5_0 { custom1: string; custom2: string; custom3: string; - }, + }; filters: { folder: string; search: string; @@ -16,13 +16,13 @@ export interface VaultExplorerPluginSettings_1_5_0 { properties: { selectedGroupId: string; groups: PropertyFilterGroup[]; - } - }, + }; + }; views: { currentView: ViewType; order: ViewType[]; titleWrapping: WordBreak; - } + }; pageSize: number; pluginVersion: string | null; } @@ -35,7 +35,7 @@ type WordBreak = "normal" | "break-word"; enum ViewType { GRID = "grid", - LIST = "list", + LIST = "list" } type FilterOperator = "and" | "or"; @@ -48,14 +48,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -66,14 +66,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -81,10 +81,15 @@ enum DateFilterCondition { IS_BEFORE = "is-before", IS_AFTER = "is-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } -type FilterCondition = TextFilterCondition | NumberFilterCondition | DateFilterCondition | CheckboxFilterCondition | ListFilterCondition; +type FilterCondition = + | TextFilterCondition + | NumberFilterCondition + | DateFilterCondition + | CheckboxFilterCondition + | ListFilterCondition; interface BasePropertyFilter { id: string; @@ -102,7 +107,7 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } interface TextPropertyFilter extends BasePropertyFilter { @@ -116,12 +121,12 @@ interface NumberPropertyFilter extends BasePropertyFilter { } interface ListPropertyFilter extends BasePropertyFilter { - type: PropertyType.LIST + type: PropertyType.LIST; condition: ListFilterCondition; } interface CheckboxPropertyFilter extends BasePropertyFilter { - type: PropertyType.CHECKBOX + type: PropertyType.CHECKBOX; condition: CheckboxFilterCondition; } @@ -130,7 +135,12 @@ interface DatePropertyFilter extends BasePropertyFilter { condition: DateFilterCondition; } -type PropertyFilter = TextPropertyFilter | NumberPropertyFilter | ListPropertyFilter | CheckboxPropertyFilter | DatePropertyFilter; +type PropertyFilter = + | TextPropertyFilter + | NumberPropertyFilter + | ListPropertyFilter + | CheckboxPropertyFilter + | DatePropertyFilter; interface PropertyFilterGroup { id: string; @@ -139,6 +149,17 @@ interface PropertyFilterGroup { isEnabled: boolean; } -type SortFilter = "file-name-asc" | "file-name-desc" | "modified-asc" | "modified-desc"; +type SortFilter = + | "file-name-asc" + | "file-name-desc" + | "modified-asc" + | "modified-desc"; -type TimestampFilter = "created-today" | "modified-today" | "created-this-week" | "modified-this-week" | "created-2-weeks" | "modified-2-weeks" | "all"; +type TimestampFilter = + | "created-today" + | "modified-today" + | "created-this-week" + | "modified-this-week" + | "created-2-weeks" + | "modified-2-weeks" + | "all"; diff --git a/src/types/types-1.6.0.ts b/src/types/types-1.6.0.ts index 5e1c741..51709f6 100644 --- a/src/types/types-1.6.0.ts +++ b/src/types/types-1.6.0.ts @@ -8,7 +8,7 @@ export interface VaultExplorerPluginSettings_1_6_0 { custom1: string; custom2: string; custom3: string; - }, + }; filters: { folder: string; search: string; @@ -18,13 +18,13 @@ export interface VaultExplorerPluginSettings_1_6_0 { properties: { selectedGroupId: string; groups: PropertyFilterGroup[]; - } - }, + }; + }; views: { currentView: ViewType; order: ViewType[]; titleWrapping: WordBreak; - } + }; pageSize: number; pluginVersion: string | null; } @@ -33,7 +33,7 @@ type WordBreak = "normal" | "break-word"; enum ViewType { GRID = "grid", - LIST = "list", + LIST = "list" } type FilterOperator = "and" | "or"; @@ -46,14 +46,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -64,14 +64,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -79,10 +79,15 @@ enum DateFilterCondition { IS_BEFORE = "is-before", IS_AFTER = "is-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } -type FilterCondition = TextFilterCondition | NumberFilterCondition | DateFilterCondition | CheckboxFilterCondition | ListFilterCondition; +type FilterCondition = + | TextFilterCondition + | NumberFilterCondition + | DateFilterCondition + | CheckboxFilterCondition + | ListFilterCondition; interface BasePropertyFilter { id: string; @@ -101,7 +106,7 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } interface TextPropertyFilter extends BasePropertyFilter { @@ -115,12 +120,12 @@ interface NumberPropertyFilter extends BasePropertyFilter { } interface ListPropertyFilter extends BasePropertyFilter { - type: PropertyType.LIST + type: PropertyType.LIST; condition: ListFilterCondition; } interface CheckboxPropertyFilter extends BasePropertyFilter { - type: PropertyType.CHECKBOX + type: PropertyType.CHECKBOX; condition: CheckboxFilterCondition; } @@ -129,7 +134,12 @@ interface DatePropertyFilter extends BasePropertyFilter { condition: DateFilterCondition; } -type PropertyFilter = TextPropertyFilter | NumberPropertyFilter | ListPropertyFilter | CheckboxPropertyFilter | DatePropertyFilter; +type PropertyFilter = + | TextPropertyFilter + | NumberPropertyFilter + | ListPropertyFilter + | CheckboxPropertyFilter + | DatePropertyFilter; interface PropertyFilterGroup { id: string; @@ -138,6 +148,17 @@ interface PropertyFilterGroup { isEnabled: boolean; } -type SortFilter = "file-name-asc" | "file-name-desc" | "modified-asc" | "modified-desc"; +type SortFilter = + | "file-name-asc" + | "file-name-desc" + | "modified-asc" + | "modified-desc"; -type TimestampFilter = "created-today" | "modified-today" | "created-this-week" | "modified-this-week" | "created-2-weeks" | "modified-2-weeks" | "all"; +type TimestampFilter = + | "created-today" + | "modified-today" + | "created-this-week" + | "modified-this-week" + | "created-2-weeks" + | "modified-2-weeks" + | "all"; diff --git a/src/types/types-1.8.1.ts b/src/types/types-1.8.1.ts index 1f9223a..6bf4960 100644 --- a/src/types/types-1.8.1.ts +++ b/src/types/types-1.8.1.ts @@ -8,7 +8,7 @@ export interface VaultExplorerPluginSettings_1_8_1 { custom1: string; custom2: string; custom3: string; - }, + }; filters: { folder: string; search: string; @@ -18,13 +18,13 @@ export interface VaultExplorerPluginSettings_1_8_1 { properties: { selectedGroupId: string; groups: PropertyFilterGroup[]; - } - }, + }; + }; views: { currentView: ViewType; order: ViewType[]; titleWrapping: WordBreak; - } + }; pageSize: number; pluginVersion: string | null; } @@ -33,7 +33,7 @@ type WordBreak = "normal" | "break-word"; enum ViewType { GRID = "grid", - LIST = "list", + LIST = "list" } type FilterOperator = "and" | "or"; @@ -46,14 +46,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -64,14 +64,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -79,10 +79,15 @@ enum DateFilterCondition { IS_BEFORE = "is-before", IS_AFTER = "is-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } -type FilterCondition = TextFilterCondition | NumberFilterCondition | DateFilterCondition | CheckboxFilterCondition | ListFilterCondition; +type FilterCondition = + | TextFilterCondition + | NumberFilterCondition + | DateFilterCondition + | CheckboxFilterCondition + | ListFilterCondition; interface BasePropertyFilter { id: string; @@ -101,7 +106,7 @@ enum PropertyType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } interface TextPropertyFilter extends BasePropertyFilter { @@ -115,12 +120,12 @@ interface NumberPropertyFilter extends BasePropertyFilter { } interface ListPropertyFilter extends BasePropertyFilter { - type: PropertyType.LIST + type: PropertyType.LIST; condition: ListFilterCondition; } interface CheckboxPropertyFilter extends BasePropertyFilter { - type: PropertyType.CHECKBOX + type: PropertyType.CHECKBOX; condition: CheckboxFilterCondition; } @@ -129,7 +134,12 @@ interface DatePropertyFilter extends BasePropertyFilter { condition: DateFilterCondition; } -type PropertyFilter = TextPropertyFilter | NumberPropertyFilter | ListPropertyFilter | CheckboxPropertyFilter | DatePropertyFilter; +type PropertyFilter = + | TextPropertyFilter + | NumberPropertyFilter + | ListPropertyFilter + | CheckboxPropertyFilter + | DatePropertyFilter; interface PropertyFilterGroup { id: string; @@ -138,6 +148,17 @@ interface PropertyFilterGroup { isEnabled: boolean; } -type SortFilter = "file-name-asc" | "file-name-desc" | "modified-asc" | "modified-desc"; +type SortFilter = + | "file-name-asc" + | "file-name-desc" + | "modified-asc" + | "modified-desc"; -type TimestampFilter = "created-today" | "modified-today" | "created-this-week" | "modified-this-week" | "created-2-weeks" | "modified-2-weeks" | "all"; +type TimestampFilter = + | "created-today" + | "modified-today" + | "created-this-week" + | "modified-this-week" + | "created-2-weeks" + | "modified-2-weeks" + | "all"; diff --git a/src/types/types-1.9.1.ts b/src/types/types-1.9.1.ts index f7363ac..e7fe9c9 100644 --- a/src/types/types-1.9.1.ts +++ b/src/types/types-1.9.1.ts @@ -8,7 +8,7 @@ export interface VaultExplorerPluginSettings_1_9_1 { custom1: string; custom2: string; custom3: string; - }, + }; filters: { folder: string; search: string; @@ -18,13 +18,13 @@ export interface VaultExplorerPluginSettings_1_9_1 { custom: { selectedGroupId: string; groups: FilterGroup[]; - } - }, + }; + }; views: { currentView: ViewType; order: ViewType[]; titleWrapping: WordBreak; - } + }; pageSize: number; pluginVersion: string | null; } @@ -33,7 +33,7 @@ type WordBreak = "normal" | "break-word"; enum ViewType { GRID = "grid", - LIST = "list", + LIST = "list" } type FilterOperator = "and" | "or"; @@ -46,14 +46,14 @@ enum TextFilterCondition { STARTS_WITH = "starts-with", ENDS_WITH = "ends-with", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum ListFilterCondition { CONTAINS = "contains", DOES_NOT_CONTAIN = "does-not-contain", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum NumberFilterCondition { @@ -64,14 +64,14 @@ enum NumberFilterCondition { IS_GREATER_OR_EQUAL = "is-greater-or-equal", IS_LESS_OR_EQUAL = "is-less-or-equal", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum CheckboxFilterCondition { IS = "is", IS_NOT = "is-not", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } enum DateFilterCondition { @@ -81,10 +81,15 @@ enum DateFilterCondition { IS_ON_OR_BEFORE = "is-on-or-before", IS_ON_OR_AFTER = "is-on-or-after", EXISTS = "exists", - DOES_NOT_EXIST = "does-not-exist", + DOES_NOT_EXIST = "does-not-exist" } -type FilterCondition = TextFilterCondition | NumberFilterCondition | DateFilterCondition | CheckboxFilterCondition | ListFilterCondition; +type FilterCondition = + | TextFilterCondition + | NumberFilterCondition + | DateFilterCondition + | CheckboxFilterCondition + | ListFilterCondition; enum FilterRuleType { TEXT = "text", @@ -92,7 +97,7 @@ enum FilterRuleType { LIST = "list", CHECKBOX = "checkbox", DATE = "date", - DATETIME = "datetime", + DATETIME = "datetime" } enum DatePropertyFilterValue { @@ -128,7 +133,7 @@ interface NumberPropertyFilter extends BaseFilterRule { } interface ListPropertyFilter extends BaseFilterRule { - type: FilterRuleType.LIST + type: FilterRuleType.LIST; propertyName: string; condition: ListFilterCondition; } @@ -146,7 +151,12 @@ interface DatePropertyFilter extends BaseFilterRule { valueData: string; } -type FilterRule = TextPropertyFilter | NumberPropertyFilter | ListPropertyFilter | CheckboxPropertyFilter | DatePropertyFilter; +type FilterRule = + | TextPropertyFilter + | NumberPropertyFilter + | ListPropertyFilter + | CheckboxPropertyFilter + | DatePropertyFilter; interface FilterGroup { id: string; @@ -155,6 +165,17 @@ interface FilterGroup { isEnabled: boolean; } -type SortFilter = "file-name-asc" | "file-name-desc" | "modified-asc" | "modified-desc"; +type SortFilter = + | "file-name-asc" + | "file-name-desc" + | "modified-asc" + | "modified-desc"; -type TimestampFilter = "created-today" | "modified-today" | "created-this-week" | "modified-this-week" | "created-2-weeks" | "modified-2-weeks" | "all"; +type TimestampFilter = + | "created-today" + | "modified-today" + | "created-this-week" + | "modified-this-week" + | "created-2-weeks" + | "modified-2-weeks" + | "all"; diff --git a/test-vault/.obsidian/app.json b/test-vault/.obsidian/app.json index 8d8e51b..6ef8074 100644 --- a/test-vault/.obsidian/app.json +++ b/test-vault/.obsidian/app.json @@ -1,4 +1,4 @@ { - "promptDelete": false, - "showUnsupportedFiles": true -} \ No newline at end of file + "promptDelete": false, + "showUnsupportedFiles": true +} diff --git a/test-vault/.obsidian/appearance.json b/test-vault/.obsidian/appearance.json index 9e26dfe..0967ef4 100644 --- a/test-vault/.obsidian/appearance.json +++ b/test-vault/.obsidian/appearance.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/test-vault/.obsidian/community-plugins.json b/test-vault/.obsidian/community-plugins.json index 9d33ac0..47b4aab 100644 --- a/test-vault/.obsidian/community-plugins.json +++ b/test-vault/.obsidian/community-plugins.json @@ -1,3 +1 @@ -[ - "vault-explorer" -] \ No newline at end of file +["vault-explorer"] diff --git a/test-vault/.obsidian/core-plugins-migration.json b/test-vault/.obsidian/core-plugins-migration.json index 32ca11c..4be86cf 100644 --- a/test-vault/.obsidian/core-plugins-migration.json +++ b/test-vault/.obsidian/core-plugins-migration.json @@ -1,30 +1,30 @@ { - "file-explorer": true, - "global-search": true, - "switcher": true, - "graph": true, - "backlink": true, - "canvas": true, - "outgoing-link": true, - "tag-pane": true, - "properties": true, - "page-preview": true, - "daily-notes": false, - "templates": false, - "note-composer": true, - "command-palette": true, - "slash-command": false, - "editor-status": true, - "bookmarks": true, - "markdown-importer": false, - "zk-prefixer": false, - "random-note": false, - "outline": true, - "word-count": true, - "slides": false, - "audio-recorder": false, - "workspaces": false, - "file-recovery": true, - "publish": false, - "sync": false -} \ No newline at end of file + "file-explorer": true, + "global-search": true, + "switcher": true, + "graph": true, + "backlink": true, + "canvas": true, + "outgoing-link": true, + "tag-pane": true, + "properties": true, + "page-preview": true, + "daily-notes": false, + "templates": false, + "note-composer": true, + "command-palette": true, + "slash-command": false, + "editor-status": true, + "bookmarks": true, + "markdown-importer": false, + "zk-prefixer": false, + "random-note": false, + "outline": true, + "word-count": true, + "slides": false, + "audio-recorder": false, + "workspaces": false, + "file-recovery": true, + "publish": false, + "sync": false +} diff --git a/test-vault/.obsidian/core-plugins.json b/test-vault/.obsidian/core-plugins.json index cc7214c..5b4873e 100644 --- a/test-vault/.obsidian/core-plugins.json +++ b/test-vault/.obsidian/core-plugins.json @@ -1,19 +1,19 @@ [ - "file-explorer", - "global-search", - "switcher", - "graph", - "backlink", - "canvas", - "outgoing-link", - "tag-pane", - "properties", - "page-preview", - "note-composer", - "command-palette", - "editor-status", - "bookmarks", - "outline", - "word-count", - "file-recovery" -] \ No newline at end of file + "file-explorer", + "global-search", + "switcher", + "graph", + "backlink", + "canvas", + "outgoing-link", + "tag-pane", + "properties", + "page-preview", + "note-composer", + "command-palette", + "editor-status", + "bookmarks", + "outline", + "word-count", + "file-recovery" +] diff --git a/test-vault/.obsidian/graph.json b/test-vault/.obsidian/graph.json index 42a46ec..24da055 100644 --- a/test-vault/.obsidian/graph.json +++ b/test-vault/.obsidian/graph.json @@ -1,22 +1,22 @@ { - "collapse-filter": true, - "search": "", - "showTags": false, - "showAttachments": false, - "hideUnresolved": false, - "showOrphans": true, - "collapse-color-groups": true, - "colorGroups": [], - "collapse-display": true, - "showArrow": false, - "textFadeMultiplier": 0, - "nodeSizeMultiplier": 1, - "lineSizeMultiplier": 1, - "collapse-forces": true, - "centerStrength": 0.518713248970312, - "repelStrength": 10, - "linkStrength": 1, - "linkDistance": 250, - "scale": 1, - "close": true -} \ No newline at end of file + "collapse-filter": true, + "search": "", + "showTags": false, + "showAttachments": false, + "hideUnresolved": false, + "showOrphans": true, + "collapse-color-groups": true, + "colorGroups": [], + "collapse-display": true, + "showArrow": false, + "textFadeMultiplier": 0, + "nodeSizeMultiplier": 1, + "lineSizeMultiplier": 1, + "collapse-forces": true, + "centerStrength": 0.518713248970312, + "repelStrength": 10, + "linkStrength": 1, + "linkDistance": 250, + "scale": 1, + "close": true +} diff --git a/test-vault/.obsidian/plugins/vault-explorer/data.json b/test-vault/.obsidian/plugins/vault-explorer/data.json index f406c9b..296e771 100644 --- a/test-vault/.obsidian/plugins/vault-explorer/data.json +++ b/test-vault/.obsidian/plugins/vault-explorer/data.json @@ -1,90 +1,90 @@ { - "properties": { - "favorite": "favorite", - "url": "url", - "custom1": "category", - "custom2": "color", - "custom3": "size", - "creationDate": "creation", - "modifiedDate": "modification", - "createdDate": "creation", - "image": "image", - "coverImageFit": "image-fit" - }, - "filters": { - "search": { - "isEnabled": true, - "value": "" - }, - "sort": { - "isEnabled": true, - "value": "modified-desc" - }, - "custom": { - "isEnabled": true, - "selectedGroupId": "", - "groups": [] - }, - "properties": { - "groups": [] - } - }, - "views": { - "grid": { - "isEnabled": true, - "loadSocialMediaImage": true, - "coverImageSources": [ - { - "type": "image-property", - "isEnabled": true - }, - { - "type": "url-property", - "isEnabled": true - }, - { - "type": "frontmatter", - "isEnabled": true - }, - { - "type": "body", - "isEnabled": true - } - ], - "coverImageFit": "cover", - "order": 0 - }, - "list": { - "isEnabled": true, - "showTags": true, - "order": 1 - }, - "table": { - "isEnabled": true, - "order": 3 - }, - "feed": { - "isEnabled": true, - "renderNewLineCharacters": false, - "collapseContent": true, - "removeLevel1Headers": true, - "collapseStyle": "no-new-lines", - "lineClampLarge": 5, - "lineClampMedium": 3, - "lineClampSmall": 2, - "removeH1": true, - "order": 2 - } - }, - "confirmBeforeDelete": true, - "currentView": "list", - "titleWrapping": "normal", - "enableClockUpdates": true, - "enableFileIcons": true, - "loadBodyTags": true, - "shouldCollapseFilters": false, - "pageSize": 25, - "configDir": ".vaultexplorer", - "pluginVersion": "1.46.0", - "logLevel": "warn" -} \ No newline at end of file + "properties": { + "favorite": "favorite", + "url": "url", + "custom1": "category", + "custom2": "color", + "custom3": "size", + "creationDate": "creation", + "modifiedDate": "modification", + "createdDate": "creation", + "image": "image", + "coverImageFit": "image-fit" + }, + "filters": { + "search": { + "isEnabled": true, + "value": "" + }, + "sort": { + "isEnabled": true, + "value": "modified-desc" + }, + "custom": { + "isEnabled": true, + "selectedGroupId": "", + "groups": [] + }, + "properties": { + "groups": [] + } + }, + "views": { + "grid": { + "isEnabled": true, + "loadSocialMediaImage": true, + "coverImageSources": [ + { + "type": "image-property", + "isEnabled": true + }, + { + "type": "url-property", + "isEnabled": true + }, + { + "type": "frontmatter", + "isEnabled": true + }, + { + "type": "body", + "isEnabled": true + } + ], + "coverImageFit": "cover", + "order": 0 + }, + "list": { + "isEnabled": true, + "showTags": true, + "order": 1 + }, + "table": { + "isEnabled": true, + "order": 3 + }, + "feed": { + "isEnabled": true, + "renderNewLineCharacters": false, + "collapseContent": true, + "removeLevel1Headers": true, + "collapseStyle": "no-new-lines", + "lineClampLarge": 5, + "lineClampMedium": 3, + "lineClampSmall": 2, + "removeH1": true, + "order": 2 + } + }, + "confirmBeforeDelete": true, + "currentView": "list", + "titleWrapping": "normal", + "enableClockUpdates": true, + "enableFileIcons": true, + "loadBodyTags": true, + "shouldCollapseFilters": false, + "pageSize": 25, + "configDir": ".vaultexplorer", + "pluginVersion": "1.46.0", + "logLevel": "warn" +} diff --git a/test-vault/.obsidian/types.json b/test-vault/.obsidian/types.json index 1b1791f..d6d93f2 100644 --- a/test-vault/.obsidian/types.json +++ b/test-vault/.obsidian/types.json @@ -1,10 +1,10 @@ { - "types": { - "aliases": "aliases", - "cssclasses": "multitext", - "tags": "tags", - "favorite": "checkbox", - "creation": "date", - "modification": "date" - } -} \ No newline at end of file + "types": { + "aliases": "aliases", + "cssclasses": "multitext", + "tags": "tags", + "favorite": "checkbox", + "creation": "date", + "modification": "date" + } +} diff --git a/test-vault/.vaultexplorer/favorites.json b/test-vault/.vaultexplorer/favorites.json index fc69ce2..9076bb4 100644 --- a/test-vault/.vaultexplorer/favorites.json +++ b/test-vault/.vaultexplorer/favorites.json @@ -1,3 +1,3 @@ { - "items": [] -} \ No newline at end of file + "items": [] +} diff --git a/tests/integration/preform-migration.test.ts b/tests/integration/preform-migration.test.ts index 4e05a84..2e09ac7 100644 --- a/tests/integration/preform-migration.test.ts +++ b/tests/integration/preform-migration.test.ts @@ -2,7 +2,7 @@ import { preformMigrations } from "src/migrations"; import { isVaultExplorerPluginSettings } from "src/types/index.guard"; import { TextFilterCondition_0_3_3, - type VaultExplorerPluginSettings_0_3_3, + type VaultExplorerPluginSettings_0_3_3 } from "src/types/types-0.3.3"; import { CheckboxFilterCondition_0_5_5, @@ -11,7 +11,7 @@ import { NumberFilterCondition_0_5_5, PropertyFilterType_0_5_5, TextFilterCondition_0_5_5, - type VaultExplorerPluginSettings_0_5_5, + type VaultExplorerPluginSettings_0_5_5 } from "src/types/types-0.5.5"; describe("preformMigrations", () => { @@ -23,7 +23,7 @@ describe("preformMigrations", () => { url: "https://example.com", custom1: "custom-value-1", custom2: "custom-value-2", - custom3: "custom-value-3", + custom3: "custom-value-3" }, filters: { folder: "MyNotes", @@ -44,7 +44,7 @@ describe("preformMigrations", () => { operator: "and", isEnabled: true, condition: TextFilterCondition_0_3_3.IS, - value: "active", + value: "active" }, { id: "filter-2", @@ -53,11 +53,11 @@ describe("preformMigrations", () => { isEnabled: false, condition: TextFilterCondition_0_3_3.CONTAINS, - value: "high", - }, + value: "high" + } ], position: 0, - isEnabled: true, + isEnabled: true }, { id: "group-2", @@ -70,7 +70,7 @@ describe("preformMigrations", () => { isEnabled: true, condition: TextFilterCondition_0_3_3.STARTS_WITH, - value: "work", + value: "work" }, { id: "filter-4", @@ -79,18 +79,18 @@ describe("preformMigrations", () => { isEnabled: true, condition: TextFilterCondition_0_3_3.IS_NOT_EMPTY, - value: "", - }, + value: "" + } ], position: 1, - isEnabled: false, - }, - ], - }, + isEnabled: false + } + ] + } }, currentView: "grid", pageSize: 20, - pluginVersion: "0.3.3", + pluginVersion: "0.3.3" }; //Same guard clause as in main.js @@ -114,7 +114,7 @@ describe("preformMigrations", () => { url: "https://example.com", custom1: "customValue1", custom2: "customValue2", - custom3: "customValue3", + custom3: "customValue3" }, filters: { folder: "root", @@ -137,7 +137,7 @@ describe("preformMigrations", () => { isEnabled: true, value: "example", condition: - TextFilterCondition_0_5_5.CONTAINS, + TextFilterCondition_0_5_5.CONTAINS }, { id: "filter2", @@ -147,11 +147,11 @@ describe("preformMigrations", () => { isEnabled: true, value: "100", condition: - NumberFilterCondition_0_5_5.IS_GREATER, - }, + NumberFilterCondition_0_5_5.IS_GREATER + } ], position: 1, - isEnabled: true, + isEnabled: true }, { id: "group2", @@ -165,7 +165,7 @@ describe("preformMigrations", () => { isEnabled: true, value: "important", condition: - ListFilterCondition_0_5_5.CONTAINS, + ListFilterCondition_0_5_5.CONTAINS }, { id: "filter4", @@ -174,7 +174,7 @@ describe("preformMigrations", () => { type: PropertyFilterType_0_5_5.CHECKBOX, isEnabled: true, value: "true", - condition: CheckboxFilterCondition_0_5_5.IS, + condition: CheckboxFilterCondition_0_5_5.IS }, { id: "filter5", @@ -184,18 +184,18 @@ describe("preformMigrations", () => { isEnabled: true, value: "2023-01-01", condition: - DateFilterCondition_0_5_5.IS_AFTER, - }, + DateFilterCondition_0_5_5.IS_AFTER + } ], position: 2, - isEnabled: true, - }, - ], - }, + isEnabled: true + } + ] + } }, currentView: "list", pageSize: 20, - pluginVersion: "0.4.0", + pluginVersion: "0.4.0" }; //This the same guard clause as in main.js diff --git a/tests/unit/link-target-getters.test.ts b/tests/unit/link-target-getters.test.ts index 3b84189..0e18962 100644 --- a/tests/unit/link-target-getters.test.ts +++ b/tests/unit/link-target-getters.test.ts @@ -1,7 +1,7 @@ import { getExternalEmbedTarget, getInternalEmbedTarget, - getWikiLinkTarget, + getWikiLinkTarget } from "src/svelte/app/services/link-utils/link-target-getters"; describe("getWikiLinkTarget", () => { diff --git a/tests/unit/link-validators.test.ts b/tests/unit/link-validators.test.ts index 789c4cf..e709117 100644 --- a/tests/unit/link-validators.test.ts +++ b/tests/unit/link-validators.test.ts @@ -1,7 +1,7 @@ import { isExternalEmbed, isInternalEmbed, - isWikiLink, + isWikiLink } from "src/svelte/app/services/link-utils/link-validators"; describe("isWikiLink", () => { diff --git a/tests/unit/load-property-value.test.ts b/tests/unit/load-property-value.test.ts index 7b5a169..d687927 100644 --- a/tests/unit/load-property-value.test.ts +++ b/tests/unit/load-property-value.test.ts @@ -245,7 +245,7 @@ describe("loadPropertyValue", () => { it("returns null if expectedType is PropertyType.DATETIME and value is not a supported format", () => { //Arrange const frontmatter: FrontMatterCache = { - test: "<% tp.file.creation_date() %>", + test: "<% tp.file.creation_date() %>" }; const propertyName = "test"; @@ -295,7 +295,7 @@ describe("loadPropertyValue", () => { it("returns null if expectedType is PropertyType.DATETIME and value is not a supported format", () => { //Arrange const frontmatter: FrontMatterCache = { - test: '<% tp.file.last_modified_date("dddd Do MMMM YYYY HH: mm: ss") %>', + test: '<% tp.file.last_modified_date("dddd Do MMMM YYYY HH: mm: ss") %>' }; const propertyName = "test"; diff --git a/tests/unit/match-checkbox-property-filter.test.ts b/tests/unit/match-checkbox-property-filter.test.ts index 45a5087..ee2a5f5 100644 --- a/tests/unit/match-checkbox-property-filter.test.ts +++ b/tests/unit/match-checkbox-property-filter.test.ts @@ -1,10 +1,9 @@ import { matchCheckboxPropertyFilter } from "src/svelte/app/services/filters/custom/match-checkbox-property-filter"; import { CheckboxFilterCondition } from "src/types"; -describe('matchCheckboxPropertyFilter', () => { - - describe('Normal Cases', () => { - it('should return true for matchCheckboxPropertyFilter(true, true, CheckboxFilterCondition.IS, false)', () => { +describe("matchCheckboxPropertyFilter", () => { + describe("Normal Cases", () => { + it("should return true for matchCheckboxPropertyFilter(true, true, CheckboxFilterCondition.IS, false)", () => { // Arrange const propertyValue = true; const compare = true; @@ -12,13 +11,18 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for matchCheckboxPropertyFilter(false, false, CheckboxFilterCondition.IS, false)', () => { + it("should return true for matchCheckboxPropertyFilter(false, false, CheckboxFilterCondition.IS, false)", () => { // Arrange const propertyValue = false; const compare = false; @@ -26,13 +30,18 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for matchCheckboxPropertyFilter(true, false, CheckboxFilterCondition.IS_NOT, false)', () => { + it("should return true for matchCheckboxPropertyFilter(true, false, CheckboxFilterCondition.IS_NOT, false)", () => { // Arrange const propertyValue = true; const compare = false; @@ -40,13 +49,18 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for matchCheckboxPropertyFilter(false, true, CheckboxFilterCondition.IS_NOT, false)', () => { + it("should return true for matchCheckboxPropertyFilter(false, true, CheckboxFilterCondition.IS_NOT, false)", () => { // Arrange const propertyValue = false; const compare = true; @@ -54,13 +68,18 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for matchCheckboxPropertyFilter(true, true, CheckboxFilterCondition.EXISTS, false)', () => { + it("should return true for matchCheckboxPropertyFilter(true, true, CheckboxFilterCondition.EXISTS, false)", () => { // Arrange const propertyValue = true; const compare = true; @@ -68,13 +87,18 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for matchCheckboxPropertyFilter(false, true, CheckboxFilterCondition.EXISTS, false)', () => { + it("should return true for matchCheckboxPropertyFilter(false, true, CheckboxFilterCondition.EXISTS, false)", () => { // Arrange const propertyValue = false; const compare = true; @@ -82,15 +106,20 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); }); - describe('Invalid Cases', () => { - it('should return false for matchCheckboxPropertyFilter(null, true, CheckboxFilterCondition.IS, false)', () => { + describe("Invalid Cases", () => { + it("should return false for matchCheckboxPropertyFilter(null, true, CheckboxFilterCondition.IS, false)", () => { // Arrange const propertyValue = null; const compare = true; @@ -98,13 +127,18 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); }); - it('should return false for matchCheckboxPropertyFilter(null, false, CheckboxFilterCondition.IS_NOT, false)', () => { + it("should return false for matchCheckboxPropertyFilter(null, false, CheckboxFilterCondition.IS_NOT, false)", () => { // Arrange const propertyValue = null; const compare = false; @@ -112,15 +146,20 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); }); }); - describe('Edge Cases', () => { - it('should return false for matchCheckboxPropertyFilter(null, true, CheckboxFilterCondition.EXISTS, false)', () => { + describe("Edge Cases", () => { + it("should return false for matchCheckboxPropertyFilter(null, true, CheckboxFilterCondition.EXISTS, false)", () => { // Arrange const propertyValue = null; const compare = true; @@ -128,13 +167,18 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); }); - it('should return true for matchCheckboxPropertyFilter(null, true, CheckboxFilterCondition.DOES_NOT_EXIST, false)', () => { + it("should return true for matchCheckboxPropertyFilter(null, true, CheckboxFilterCondition.DOES_NOT_EXIST, false)", () => { // Arrange const propertyValue = null; const compare = true; @@ -142,13 +186,18 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for matchCheckboxPropertyFilter(null, true, CheckboxFilterCondition.IS, true)', () => { + it("should return true for matchCheckboxPropertyFilter(null, true, CheckboxFilterCondition.IS, true)", () => { // Arrange const propertyValue = null; const compare = true; @@ -156,13 +205,18 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = true; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for matchCheckboxPropertyFilter(null, false, CheckboxFilterCondition.IS_NOT, true)', () => { + it("should return true for matchCheckboxPropertyFilter(null, false, CheckboxFilterCondition.IS_NOT, true)", () => { // Arrange const propertyValue = null; const compare = false; @@ -170,23 +224,36 @@ describe('matchCheckboxPropertyFilter', () => { const matchIfNull = true; // Act - const result = matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); }); - describe('Error Cases', () => { + describe("Error Cases", () => { it('should throw an error for matchCheckboxPropertyFilter(true, true, "unsupported-condition", false)', () => { // Arrange const propertyValue = true; const compare = true; - const condition = "unsupported-condition" as CheckboxFilterCondition; + const condition = + "unsupported-condition" as CheckboxFilterCondition; const matchIfNull = false; // Act & Assert - expect(() => matchCheckboxPropertyFilter(propertyValue, compare, condition, matchIfNull)).toThrow(); + expect(() => + matchCheckboxPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ) + ).toThrow(); }); }); }); diff --git a/tests/unit/match-date-property-filter.test.ts b/tests/unit/match-date-property-filter.test.ts index ef84806..ee8700a 100644 --- a/tests/unit/match-date-property-filter.test.ts +++ b/tests/unit/match-date-property-filter.test.ts @@ -2,7 +2,6 @@ import { matchDatePropertyFilter } from "src/svelte/app/services/filters/custom/ import { DateFilterCondition } from "src/types"; describe("matchDatePropertyFilter", () => { - describe("Normal Cases", () => { it("should return true for matchDatePropertyFilter(YYYY-MM-DDTHH:mm:ss, YYYY-MM-DD, IS, false)", () => { // Arrange @@ -12,7 +11,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = false; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -26,7 +30,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = false; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -40,7 +49,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = false; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -54,7 +68,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = false; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -68,7 +87,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = false; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -82,7 +106,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = false; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -98,7 +127,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = true; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -112,7 +146,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = true; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -126,7 +165,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = true; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -142,7 +186,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = false; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -156,7 +205,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = false; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); @@ -170,7 +224,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = false; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -184,7 +243,12 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = false; // Act - const result = matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); @@ -200,7 +264,14 @@ describe("matchDatePropertyFilter", () => { const matchIfNull = false; // Act & Assert - expect(() => matchDatePropertyFilter(propertyValue, compare, condition, matchIfNull)).toThrow(); + expect(() => + matchDatePropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ) + ).toThrow(); }); }); }); diff --git a/tests/unit/match-list-property-filter.test.ts b/tests/unit/match-list-property-filter.test.ts index ffb9439..91360df 100644 --- a/tests/unit/match-list-property-filter.test.ts +++ b/tests/unit/match-list-property-filter.test.ts @@ -1,9 +1,8 @@ import { matchListPropertyFilter } from "src/svelte/app/services/filters/custom/match-list-property-filter"; import { ListFilterCondition } from "src/types"; -describe('matchListPropertyFilter', () => { - - describe('Normal Cases', () => { +describe("matchListPropertyFilter", () => { + describe("Normal Cases", () => { it('should return true for matchListPropertyFilter(["apple", "banana", "cherry"], ["banana"], ListFilterCondition.CONTAINS, false)', () => { // Arrange const propertyValue = ["apple", "banana", "cherry"]; @@ -12,7 +11,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -26,7 +30,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -40,7 +49,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -54,7 +68,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -68,7 +87,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -82,7 +106,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); @@ -96,7 +125,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -110,7 +144,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -124,7 +163,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -138,14 +182,19 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); }); - describe('Invalid Cases', () => { + describe("Invalid Cases", () => { it('should return false for matchListPropertyFilter(null, ["apple"], ListFilterCondition.CONTAINS, false)', () => { // Arrange const propertyValue = null; @@ -154,7 +203,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); @@ -168,14 +222,19 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); }); }); - describe('Edge Cases', () => { + describe("Edge Cases", () => { it('should return false for matchListPropertyFilter(null, ["apple"], ListFilterCondition.EXISTS, false)', () => { // Arrange const propertyValue = null; @@ -184,7 +243,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); @@ -198,7 +262,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -212,7 +281,12 @@ describe('matchListPropertyFilter', () => { const matchIfNull = true; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -226,23 +300,35 @@ describe('matchListPropertyFilter', () => { const matchIfNull = true; // Act - const result = matchListPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); }); - describe('Error Cases', () => { + describe("Error Cases", () => { it('should throw an error for matchListPropertyFilter(["apple"], ["apple"], "unsupported-condition", false)', () => { // Arrange const propertyValue = ["apple"]; const compare = ["apple"]; - const condition = 'unsupported-condition' as ListFilterCondition; + const condition = "unsupported-condition" as ListFilterCondition; const matchIfNull = false; // Act & Assert - expect(() => matchListPropertyFilter(propertyValue, compare, condition, matchIfNull)).toThrow(); + expect(() => + matchListPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ) + ).toThrow(); }); }); }); diff --git a/tests/unit/match-number-property-filter.test.ts b/tests/unit/match-number-property-filter.test.ts index 51c6738..b893848 100644 --- a/tests/unit/match-number-property-filter.test.ts +++ b/tests/unit/match-number-property-filter.test.ts @@ -1,10 +1,9 @@ import { matchNumberPropertyFilter } from "src/svelte/app/services/filters/custom/match-number-property-filter"; import { NumberFilterCondition } from "src/types"; -describe('matchNumberPropertyFilter', () => { - - describe('Normal Cases', () => { - it('should return true for IS_EQUAL when values are equal', () => { +describe("matchNumberPropertyFilter", () => { + describe("Normal Cases", () => { + it("should return true for IS_EQUAL when values are equal", () => { // Arrange const propertyValue = 5; const compare = 5; @@ -12,13 +11,18 @@ describe('matchNumberPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchNumberPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchNumberPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for IS_GREATER when propertyValue is greater than compare', () => { + it("should return true for IS_GREATER when propertyValue is greater than compare", () => { // Arrange const propertyValue = 10; const compare = 5; @@ -26,13 +30,18 @@ describe('matchNumberPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchNumberPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchNumberPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for IS_LESS when propertyValue is less than compare', () => { + it("should return true for IS_LESS when propertyValue is less than compare", () => { // Arrange const propertyValue = 3; const compare = 5; @@ -40,13 +49,18 @@ describe('matchNumberPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchNumberPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchNumberPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for IS_GREATER_OR_EQUAL when propertyValue is equal to compare', () => { + it("should return true for IS_GREATER_OR_EQUAL when propertyValue is equal to compare", () => { // Arrange const propertyValue = 5; const compare = 5; @@ -54,13 +68,18 @@ describe('matchNumberPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchNumberPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchNumberPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for IS_LESS_OR_EQUAL when propertyValue is less than compare', () => { + it("should return true for IS_LESS_OR_EQUAL when propertyValue is less than compare", () => { // Arrange const propertyValue = 4; const compare = 5; @@ -68,13 +87,18 @@ describe('matchNumberPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchNumberPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchNumberPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return true for IS_NOT_EQUAL when propertyValue is not equal to compare', () => { + it("should return true for IS_NOT_EQUAL when propertyValue is not equal to compare", () => { // Arrange const propertyValue = 6; const compare = 5; @@ -82,15 +106,20 @@ describe('matchNumberPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchNumberPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchNumberPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); }); - describe('Edge Cases', () => { - it('should return true for IS_EQUAL when propertyValue is null and matchIfNull is true', () => { + describe("Edge Cases", () => { + it("should return true for IS_EQUAL when propertyValue is null and matchIfNull is true", () => { // Arrange const propertyValue = null; const compare = 5; @@ -98,13 +127,18 @@ describe('matchNumberPropertyFilter', () => { const matchIfNull = true; // Act - const result = matchNumberPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchNumberPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); - it('should return false for IS_EQUAL when propertyValue is null and matchIfNull is false', () => { + it("should return false for IS_EQUAL when propertyValue is null and matchIfNull is false", () => { // Arrange const propertyValue = null; const compare = 5; @@ -112,13 +146,18 @@ describe('matchNumberPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchNumberPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchNumberPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); }); - it('should return false for EXISTS when propertyValue is null', () => { + it("should return false for EXISTS when propertyValue is null", () => { // Arrange const propertyValue = null; const compare = 5; @@ -126,13 +165,18 @@ describe('matchNumberPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchNumberPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchNumberPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); }); - it('should return true for DOES_NOT_EXIST when propertyValue is null', () => { + it("should return true for DOES_NOT_EXIST when propertyValue is null", () => { // Arrange const propertyValue = null; const compare = 5; @@ -140,15 +184,20 @@ describe('matchNumberPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchNumberPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchNumberPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); }); - describe('Error Cases', () => { - it('should throw an error for unsupported condition', () => { + describe("Error Cases", () => { + it("should throw an error for unsupported condition", () => { // Arrange const propertyValue = 5; const compare = 5; @@ -156,7 +205,14 @@ describe('matchNumberPropertyFilter', () => { const matchIfNull = false; // Act & Assert - expect(() => matchNumberPropertyFilter(propertyValue, compare, condition, matchIfNull)).toThrow() + expect(() => + matchNumberPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ) + ).toThrow(); }); }); }); diff --git a/tests/unit/match-text-property-filter.test.ts b/tests/unit/match-text-property-filter.test.ts index 39672b2..1b64110 100644 --- a/tests/unit/match-text-property-filter.test.ts +++ b/tests/unit/match-text-property-filter.test.ts @@ -1,9 +1,8 @@ import { matchTextPropertyFilter } from "src/svelte/app/services/filters/custom/match-text-property-filter"; import { TextFilterCondition } from "src/types"; -describe('matchTextPropertyFilter', () => { - - describe('Normal Cases', () => { +describe("matchTextPropertyFilter", () => { + describe("Normal Cases", () => { it('should return true for matchTextPropertyFilter("hello", "hello", TextFilterCondition.IS, false)', () => { // Arrange const propertyValue = "hello"; @@ -12,7 +11,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -26,7 +30,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -40,7 +49,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -54,7 +68,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -68,7 +87,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -82,7 +106,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -96,7 +125,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -110,7 +144,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -124,14 +163,19 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); }); - describe('Invalid Cases', () => { + describe("Invalid Cases", () => { it('should return false for matchTextPropertyFilter(null, "hello", TextFilterCondition.IS, false)', () => { // Arrange const propertyValue = null; @@ -140,7 +184,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); @@ -154,14 +203,19 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); }); }); - describe('Edge Cases', () => { + describe("Edge Cases", () => { it('should return false for matchTextPropertyFilter(null, "hello", TextFilterCondition.EXISTS, false)', () => { // Arrange const propertyValue = null; @@ -170,7 +224,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(false); @@ -184,7 +243,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = false; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -198,7 +262,12 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = true; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); @@ -212,23 +281,35 @@ describe('matchTextPropertyFilter', () => { const matchIfNull = true; // Act - const result = matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull); + const result = matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ); // Assert expect(result).toEqual(true); }); }); - describe('Error Cases', () => { + describe("Error Cases", () => { it('should throw an error for matchTextPropertyFilter("hello", "hello", "unsupported-condition", false)', () => { // Arrange const propertyValue = "hello"; const compare = "hello"; - const condition = 'unsupported-condition' as TextFilterCondition; + const condition = "unsupported-condition" as TextFilterCondition; const matchIfNull = false; // Act & Assert - expect(() => matchTextPropertyFilter(propertyValue, compare, condition, matchIfNull)).toThrow(); + expect(() => + matchTextPropertyFilter( + propertyValue, + compare, + condition, + matchIfNull + ) + ).toThrow(); }); }); }); diff --git a/tsconfig.json b/tsconfig.json index 10ea99f..4493dcd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,27 +1,19 @@ { - "extends": "@tsconfig/svelte/tsconfig.json", - "compilerOptions": { - "types": ["svelte", "node", "jest"], - "baseUrl": ".", - "inlineSources": false, - "module": "ESNext", - "target": "ES6", - "allowJs": true, - "allowSyntheticDefaultImports": true, - "noImplicitAny": true, - "moduleResolution": "node", - "importHelpers": true, - "isolatedModules": true, - "strictNullChecks": true, - "lib": [ - "DOM", - "ES5", - "ES6", - "ES7" - ] - }, - "include": [ - "**/*.ts", - "**/*.svelte", - ] + "extends": "@tsconfig/svelte/tsconfig.json", + "compilerOptions": { + "types": ["svelte", "node", "jest"], + "baseUrl": ".", + "inlineSources": false, + "module": "ESNext", + "target": "ES6", + "allowJs": true, + "allowSyntheticDefaultImports": true, + "noImplicitAny": true, + "moduleResolution": "node", + "importHelpers": true, + "isolatedModules": true, + "strictNullChecks": true, + "lib": ["DOM", "ES5", "ES6", "ES7"] + }, + "include": ["**/*.ts", "**/*.svelte"] } From f5920d28022ac6c1277bd371ca6d426b8dead9c5 Mon Sep 17 00:00:00 2001 From: DecafDev <40307803+decaf-dev@users.noreply.github.com> Date: Fri, 2 May 2025 19:54:45 -0600 Subject: [PATCH 09/10] chore: update to latest packages --- bun.lockb | Bin 193685 -> 190798 bytes package.json | 36 ++++++++++++++++++------------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/bun.lockb b/bun.lockb index ad748532ee3866b88e467908b346860686dfbf68..de4fc48f7b2b8e7acacd5e701186e306b87bf949 100755 GIT binary patch delta 44359 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 delta 45118 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 L8q!?)1FQTm*u-CH diff --git a/package.json b/package.json index 8ec2384..b8d97cf 100644 --- a/package.json +++ b/package.json @@ -18,31 +18,31 @@ "license": "MIT", "devDependencies": { "@tsconfig/svelte": "^5.0.4", - "@types/bun": "latest", - "@types/jest": "^29.5.12", - "@types/lodash": "^4.17.0", - "@types/node": "^16.11.6", - "@typescript-eslint/eslint-plugin": "5.29.0", - "@typescript-eslint/parser": "5.29.0", - "builtin-modules": "^3.0.0", - "esbuild": "^0.24.2", - "esbuild-svelte": "^0.9.0", + "@types/bun": "^1.2.11", + "@types/jest": "^29.5.14", + "@types/lodash": "^4.17.16", + "@types/node": "^22.15.3", + "@typescript-eslint/eslint-plugin": "8.31.1", + "@typescript-eslint/parser": "8.31.1", + "builtin-modules": "^5.0.0", + "esbuild": "^0.25.3", + "esbuild-svelte": "^0.9.2", "jest": "^29.7.0", - "obsidian": "latest", + "obsidian": "^1.8.7", "prettier": "^3.5.3", - "svelte-check": "^4.1.3", + "svelte-check": "^4.1.7", "svelte-preprocess": "^6.0.3", - "ts-auto-guard": "^5.0.0", - "ts-jest": "^29.1.4", - "tslib": "2.4.0", - "typescript": "^5.7.3" + "ts-auto-guard": "^5.0.1", + "ts-jest": "^29.3.2", + "tslib": "2.8.1", + "typescript": "^5.8.3" }, "dependencies": { "crypto": "^1.0.1", - "idb": "^8.0.0", + "idb": "^8.0.2", "js-logger": "^1.6.1", "lodash": "^4.17.21", - "nanoid": "^5.0.7", - "svelte": "^5.17.3" + "nanoid": "^5.1.5", + "svelte": "^5.28.2" } } From 8b118bd6757ae2438193d3747df63d7f302abf9d Mon Sep 17 00:00:00 2001 From: DecafDev <40307803+decaf-dev@users.noreply.github.com> Date: Fri, 2 May 2025 19:54:57 -0600 Subject: [PATCH 10/10] ci: use node 18 --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ecf9b0c..3801325 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v1 with: - node-version: "16.x" + node-version: "18" - uses: oven-sh/setup-bun@v1 with: