Refactor/svelte 5 (#379)

* feat: upgrade typescript and svelte

* refactor: remove unnecessary svelte tsconfig change in pipeline

* refactor: change to type-only import

* fix: resolve compiler errors
This commit is contained in:
DecafDev 2025-03-30 08:30:34 -06:00 committed by GitHub
parent 20b61f54bd
commit dcb24cba4d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
81 changed files with 1418 additions and 1074 deletions

View file

@ -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

BIN
bun.lockb

Binary file not shown.

View file

@ -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"
}
}

View file

@ -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";

View file

@ -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;

View file

@ -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<string, unknown>;
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 };
}
}
};

View file

@ -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;

View file

@ -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[] = [
{

View file

@ -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<string, unknown>) {
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<string, unknown>;
}
}

View file

@ -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<string, unknown>) {
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<string, unknown>;
}
}

View file

@ -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<string, unknown>) {
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) {

View file

@ -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<string, unknown>) {
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<string, unknown>;
}
}

View file

@ -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<string, unknown>) {
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<string, unknown>;
}

View file

@ -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<string, unknown>) {
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<string, unknown>;
}
}

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {
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<string, unknown>;
}
}

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {
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<string, unknown>;
}
}

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {
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<string, unknown>;
}
}

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {

View file

@ -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<string, unknown>) {
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<string, unknown>;
}
}

View file

@ -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<string, unknown>) {
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<string, unknown>;
}

View file

@ -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<string, unknown>) {
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;

View file

@ -1,5 +1,5 @@
import { App } from "obsidian";
import { ObsidianProperty, ObsidianPropertyType } from "./types";
import type { ObsidianProperty, ObsidianPropertyType } from "./types";
/**
* Gets all Obsidian properties

View file

@ -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;

View file

@ -1,11 +1,19 @@
<script lang="ts">
import { onMount } from "svelte";
import { CollapseStyle } from "src/types";
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 store from "src/svelte/shared/services/store";
import { formatAsBearTimeString } from "../services/time-string";
import Icon from "src/svelte/shared/components/icon.svelte";
import Spacer from "src/svelte/shared/components/spacer.svelte";
import Stack from "src/svelte/shared/components/stack.svelte";
import store from "src/svelte/shared/services/store";
import type { CollapseStyle } from "src/types";
import { onMount } from "svelte";
import { SCREEN_SIZE_LG, SCREEN_SIZE_MD } from "../constants";
import { openContextMenu } from "../services/context-menu";
import { getIconIdForFile } from "../services/file-icon";
import { openInCurrentTab } from "../services/open-file";
import { formatAsBearTimeString } from "../services/time-string";
import {
removeBoldMarkdown,
removeCodeBlocks,
@ -20,14 +28,6 @@
removeNewLines,
removeWikiLinks,
} from "../services/utils/content-utils";
import Icon from "src/svelte/shared/components/icon.svelte";
import { getIconIdForFile } from "../services/file-icon";
import { PluginEvent } from "src/event/types";
import { openInCurrentTab } from "../services/open-file";
import { openContextMenu } from "../services/context-menu";
import { HOVER_LINK_SOURCE_ID } from "src/constants";
import { SCREEN_SIZE_LG, SCREEN_SIZE_MD } from "../constants";
import Spacer from "src/svelte/shared/components/spacer.svelte";
export let displayName: string;
export let baseName: string;
@ -295,6 +295,7 @@
white-space: pre-wrap;
text-overflow: ellipsis;
-webkit-line-clamp: unset;
line-clamp: unset;
}
.vault-explorer-feed-card__title-text {

View file

@ -1,5 +1,5 @@
<script lang="ts">
import { FileRenderData } from "../types";
import type { FileRenderData } from "../types";
import FeedCard from "./feed-card.svelte";
export let data: FileRenderData[] = [];

View file

@ -1,10 +1,9 @@
<script lang="ts">
import { TFilterGroup } from "src/types";
import _ from "lodash";
import VaultExplorerPlugin from "src/main";
import store from "src/svelte/shared/services/store";
import FilterGroup from "./filter-group.svelte";
import Stack from "src/svelte/shared/components/stack.svelte";
import store from "src/svelte/shared/services/store";
import type { TFilterGroup } from "src/types";
import FilterGroup from "./filter-group.svelte";
export let groups: TFilterGroup[] = [];

View file

@ -1,29 +1,29 @@
<script lang="ts">
import Tag from "../../shared/components/tag.svelte";
import Property from "../../shared/components/property.svelte";
import VaultExplorerPlugin from "src/main";
import store from "../../shared/services/store";
import Wrap from "src/svelte/shared/components/wrap.svelte";
import Stack from "src/svelte/shared/components/stack.svelte";
import { createEventDispatcher, onMount } from "svelte";
import Logger from "js-logger";
import { HOVER_LINK_SOURCE_ID } from "src/constants";
import EventManager from "src/event/event-manager";
import Icon from "src/svelte/shared/components/icon.svelte";
import { getIconIdForFile } from "../services/file-icon";
import { PluginEvent } from "src/event/types";
import { openContextMenu } from "../services/context-menu";
import { openInCurrentTab } from "../services/open-file";
import { getDomainFromUrl } from "../services/utils/url-utils";
import Spacer from "src/svelte/shared/components/spacer.svelte";
import VaultExplorerPlugin from "src/main";
import Divider from "src/svelte/shared/components/divider.svelte";
import Icon from "src/svelte/shared/components/icon.svelte";
import Spacer from "src/svelte/shared/components/spacer.svelte";
import Stack from "src/svelte/shared/components/stack.svelte";
import Wrap from "src/svelte/shared/components/wrap.svelte";
import type { CoverImageFit } from "src/types";
import { createEventDispatcher, onMount } from "svelte";
import Property from "../../shared/components/property.svelte";
import Tag from "../../shared/components/tag.svelte";
import store from "../../shared/services/store";
import { openContextMenu } from "../services/context-menu";
import { fetchSocialMediaImage } from "../services/fetch-social-media-image";
import { getIconIdForFile } from "../services/file-icon";
import { openInCurrentTab } from "../services/open-file";
import {
getSMICacheEntry,
isSMICacheEntryExpired,
putSMICacheEntry,
} from "../services/smi-cache";
import { CoverImageFit } from "src/types";
import Logger from "js-logger";
import { getDomainFromUrl } from "../services/utils/url-utils";
type SocialMediaImageResult = {
status: "SUCCESS" | "NOT_FOUND" | "EXPIRED" | "NO_IMAGE";

View file

@ -1,5 +1,5 @@
<script lang="ts">
import { FileRenderData } from "../types";
import type { FileRenderData } from "../types";
import GridCard from "./grid-card.svelte";
export let data: FileRenderData[];

View file

@ -1,7 +1,7 @@
<script lang="ts">
import ListItem from "./list-item.svelte";
import { FileRenderData } from "../types";
import type { FileRenderData } from "../types";
export let data: FileRenderData[];
export let startIndex: number;

View file

@ -48,7 +48,7 @@
handleClearClick();
}
}}
/>
></div>
{/if}
</div>
<IconButton

View file

@ -1,7 +1,7 @@
<script lang="ts">
import { Menu } from "obsidian";
import IconButton from "src/svelte/shared/components/icon-button.svelte";
import { SortFilterOption } from "src/types";
import type { SortFilterOption } from "src/types";
import { createEventDispatcher } from "svelte";
export let value: SortFilterOption;

View file

@ -1,18 +1,18 @@
<script lang="ts">
import { onMount } from "svelte";
import { openContextMenu } from "../services/context-menu";
import { FileRenderData } from "../types";
import store from "src/svelte/shared/services/store";
import VaultExplorerPlugin from "src/main";
import Tag from "src/svelte/shared/components/tag.svelte";
import Wrap from "src/svelte/shared/components/wrap.svelte";
import { openInCurrentTab } from "../services/open-file";
import { HOVER_LINK_SOURCE_ID } from "src/constants";
import Stack from "src/svelte/shared/components/stack.svelte";
import { getIconIdForFile } from "../services/file-icon";
import Icon from "src/svelte/shared/components/icon.svelte";
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 store from "src/svelte/shared/services/store";
import { onMount } from "svelte";
import { openContextMenu } from "../services/context-menu";
import { getIconIdForFile } from "../services/file-icon";
import { openInCurrentTab } from "../services/open-file";
import type { FileRenderData } from "../types";
interface TColumn {
key: string;

View file

@ -2,66 +2,67 @@
// ============================================
// Imports
// ============================================
import Stack from "../shared/components/stack.svelte";
import Flex from "../shared/components/flex.svelte";
import TabList from "../shared/components/tab-list.svelte";
import Tab from "../shared/components/tab.svelte";
import Logger from "js-logger";
import _ from "lodash";
import { TFile } from "obsidian";
import {
import EventManager from "src/event/event-manager";
import { PluginEvent } from "src/event/types";
import VaultExplorerPlugin from "src/main";
import CustomFilterModal from "src/obsidian/custom-filter-modal";
import type {
CoverImageFit,
TCustomFilter,
TFeedView,
TGridView,
TListView,
TSearchFilter,
TSortFilter,
TExplorerView,
CoverImageFit,
TGridView,
TFeedView,
TTableView,
TListView,
} from "src/types";
import store from "../shared/services/store";
import VaultExplorerPlugin from "src/main";
import GridView from "./components/grid-view.svelte";
import ListView from "./components/list-view.svelte";
import { filterBySearch } from "./services/filters/search-filter";
import { filterByGroups } from "./services/filters/custom/filter-by-groups";
import { formatFileDataForRender } from "./services/render-data";
import _ from "lodash";
import { TExplorerView, } from "src/types";
import { onMount } from "svelte";
import EventManager from "src/event/event-manager";
import { getDisplayNameForView } from "./services/display-name";
import Flex from "../shared/components/flex.svelte";
import IconButton from "../shared/components/icon-button.svelte";
import Spacer from "../shared/components/spacer.svelte";
import Stack from "../shared/components/stack.svelte";
import TabList from "../shared/components/tab-list.svelte";
import Tab from "../shared/components/tab.svelte";
import Wrap from "../shared/components/wrap.svelte";
import License from "../shared/services/license";
import store from "../shared/services/store";
import {
getStartOfLastWeekMillis,
getStartOfTodayMillis,
getStartOfThisWeekMillis,
getStartOfTodayMillis,
} from "../shared/services/time-utils";
import { FileRenderData } from "./types";
import Logger from "js-logger";
import FeedView from "./components/feed-view.svelte";
import FilterGroupList from "./components/filter-group-list.svelte";
import GridView from "./components/grid-view.svelte";
import ListView from "./components/list-view.svelte";
import PaginationIndicator from "./components/pagination-indicator.svelte";
import SearchFilter from "./components/search-filter.svelte";
import SortFilter from "./components/sort-filter.svelte";
import TableView from "./components/table-view.svelte";
import { DEBOUNCE_INPUT_TIME, SCREEN_SIZE_MD } from "./constants";
import FeedView from "./components/feed-view.svelte";
import PaginationIndicator from "./components/pagination-indicator.svelte";
import Wrap from "../shared/components/wrap.svelte";
import {
RandomFileSortCache,
randomFileSortStore,
} from "./services/random-file-sort-store";
import {
FileContentCache,
fileContentStore,
} from "./services/file-content-store";
import { fileStore, LoadedFile } from "./services/file-store";
import IconButton from "../shared/components/icon-button.svelte";
import CustomFilterModal from "src/obsidian/custom-filter-modal";
import FilterGroupList from "./components/filter-group-list.svelte";
import { PluginEvent } from "src/event/types";
import { getDisplayNameForView } from "./services/display-name";
import {
favoritesStore,
TFavoritesCache,
type TFavoritesCache,
} from "./services/favorites-store";
import TableView from "./components/table-view.svelte";
import Spacer from "../shared/components/spacer.svelte";
import License from "../shared/services/license";
import {
type FileContentCache,
fileContentStore,
} from "./services/file-content-store";
import { fileStore, type LoadedFile } from "./services/file-store";
import { filterByGroups } from "./services/filters/custom/filter-by-groups";
import { filterBySearch } from "./services/filters/search-filter";
import {
type RandomFileSortCache,
randomFileSortStore,
} from "./services/random-file-sort-store";
import { formatFileDataForRender } from "./services/render-data";
import type { FileRenderData } from "./types";
// ============================================
// Variables

View file

@ -1,5 +1,5 @@
import { App, Menu, Notice } from "obsidian";
import { CoverImageFit, VaultExplorerPluginSettings } from "src/types";
import type { CoverImageFit, VaultExplorerPluginSettings } from "src/types";
export const openContextMenu = (
e: MouseEvent,

View file

@ -1,8 +1,8 @@
import Logger from "js-logger";
import _ from "lodash";
import { App, normalizePath, Notice } from "obsidian";
import { VaultExplorerPluginSettings } from "src/types";
import { Writable, writable } from "svelte/store";
import type { VaultExplorerPluginSettings } from "src/types";
import { type Writable, writable } from "svelte/store";
import { parseItems, stringifyItems } from "./utils/json-utils";
interface FavoritesItem {

View file

@ -1,28 +1,28 @@
import { FrontMatterCache } from "obsidian";
import {
TFilterRule,
TFilterGroup,
DatePropertyFilterValue,
PropertyFilterRule,
FilterRuleType,
import type { FrontMatterCache } from "obsidian";
import type {
ContentFilterRule,
FileNameFilterRule,
FolderFilterRule,
ContentFilterRule,
PropertyFilterRule,
TFilterGroup,
TFilterRule,
} from "src/types";
import { loadPropertyValue } from "src/svelte/shared/services/load-property-value";
import { matchTextPropertyFilter } from "./match-text-property-filter";
import { matchCheckboxPropertyFilter } from "./match-checkbox-property-filter";
import { matchListPropertyFilter } from "./match-list-property-filter";
import { matchDatePropertyFilter } from "./match-date-property-filter";
import { matchNumberPropertyFilter } from "./match-number-property-filter";
import {
getDateDaysAgo,
getDateDaysAhead,
} from "src/svelte/shared/services/time-utils";
import { matchFileNameFilter } from "./match-file-name-filter";
import { matchContentFilter } from "./match-content-filter";
import { matchFolderFilter } from "./match-folder-filter";
import { DatePropertyFilterValue, FilterRuleType } from "src/types";
import { removeFrontmatter } from "../../utils/content-utils";
import { matchCheckboxPropertyFilter } from "./match-checkbox-property-filter";
import { matchContentFilter } from "./match-content-filter";
import { matchDatePropertyFilter } from "./match-date-property-filter";
import { matchFileNameFilter } from "./match-file-name-filter";
import { matchFolderFilter } from "./match-folder-filter";
import { matchListPropertyFilter } from "./match-list-property-filter";
import { matchNumberPropertyFilter } from "./match-number-property-filter";
import { matchTextPropertyFilter } from "./match-text-property-filter";
export const filterByGroups = (
fileName: string,

View file

@ -1,4 +1,4 @@
import { FileRenderData } from "../../types";
import type { FileRenderData } from "../../types";
//TODO add tests
export const filterBySearch = (file: FileRenderData, value: string) => {

View file

@ -1,5 +1,5 @@
import Logger from "js-logger";
import { App } from "obsidian";
import type { App } from "obsidian";
import { writable } from "svelte/store";
export type RandomFileSortCache = Map<string, number>;

View file

@ -1,33 +1,33 @@
import { App, FrontMatterCache, TFile } from "obsidian";
import {
CoverImageFit,
PropertyType,
VaultExplorerPluginSettings,
} from "src/types";
import { FileRenderData } from "../types";
import Logger from "js-logger";
import { App, type FrontMatterCache, TFile } from "obsidian";
import {
FileTextProperties,
type FileTextProperties,
loadPropertyValue,
loadTextProperties,
} from "src/svelte/shared/services/load-property-value";
import {
isDateSupported,
getTimeMillis,
isDateSupported,
} from "src/svelte/shared/services/time-utils";
import { isImageExtension } from "./utils/image-utils";
import { removeFrontmatter } from "./utils/content-utils";
import { getURIForWikiLinkTarget } from "./utils/wiki-link-utils";
import { isUrl, isWikiLink } from "./link-utils/link-validators";
import {
type CoverImageFit,
PropertyType,
type VaultExplorerPluginSettings,
} from "src/types";
import type { FileRenderData } from "../types";
import {
getFirstExternalEmbed,
getFirstInternalEmbed,
} from "./link-utils/link-getters";
import {
getExternalEmbedTarget,
getInternalEmbedTarget,
getWikiLinkTarget,
} from "./link-utils/link-target-getters";
import {
getFirstExternalEmbed,
getFirstInternalEmbed,
} from "./link-utils/link-getters";
import { isUrl, isWikiLink } from "./link-utils/link-validators";
import { removeFrontmatter } from "./utils/content-utils";
import { isImageExtension } from "./utils/image-utils";
import { getURIForWikiLinkTarget } from "./utils/wiki-link-utils";
/**
* Formats the file's data for rendering

View file

@ -1,4 +1,4 @@
import { DBSchema, openDB } from "idb";
import { type DBSchema, openDB } from "idb";
import Logger from "js-logger";
import { Notice } from "obsidian";

View file

@ -1,8 +1,8 @@
import { moment } from "obsidian";
export const formatAsBearTimeString = (milliseconds: number) => {
const now = moment();
const time = moment(milliseconds);
const now = moment.default();
const time = moment.default(milliseconds);
const diffInSeconds = now.diff(time, "seconds");
const diffInMinutes = now.diff(time, "minutes");

View file

@ -1,4 +1,4 @@
import { CoverImageFit } from "src/types";
import type { CoverImageFit } from "src/types";
export interface FileRenderData {
id: string;

View file

@ -1,8 +1,8 @@
<script lang="ts">
import {
ContentFilterCondition,
FilterCondition,
FilterOperator,
type FilterCondition,
type FilterOperator,
FilterRuleType,
} from "src/types";
import FilterRule from "./filter-rule.svelte";
@ -15,10 +15,10 @@
export let condition: FilterCondition;
export let isEnabled: boolean;
import { createEventDispatcher } from "svelte";
import License from "src/svelte/shared/services/license";
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;

View file

@ -1,5 +1,5 @@
<script lang="ts">
import { FilterCondition, FilterOperator, FilterRuleType } from "src/types";
import { type FilterCondition, type FilterOperator, FilterRuleType } from "src/types";
import FilterRule from "./filter-rule.svelte";
export let index: number;

View file

@ -1,10 +1,10 @@
<script lang="ts">
import Stack from "src/svelte/shared/components/stack.svelte";
import PropertyFilter from "./property-filter.svelte";
import { TFilterRule, FilterRuleType, PropertyType } from "src/types";
import { type TFilterRule, FilterRuleType, PropertyType } from "src/types";
import ContentFilter from "./content-filter.svelte";
import FolderFilter from "./folder-filter.svelte";
import FileNameFilter from "./file-name-filter.svelte";
import FolderFilter from "./folder-filter.svelte";
import PropertyFilter from "./property-filter.svelte";
export let rules: TFilterRule[] = [];
</script>

View file

@ -1,25 +1,25 @@
<script lang="ts">
import { Menu } from "obsidian";
import IconButton from "src/svelte/shared/components/icon-button.svelte";
import Stack from "src/svelte/shared/components/stack.svelte";
import Switch from "src/svelte/shared/components/switch.svelte";
import {
CheckboxFilterCondition,
DateFilterCondition,
FilterCondition,
FilterOperator,
ListFilterCondition,
NumberFilterCondition,
TextFilterCondition,
PropertyType,
FilterRuleType,
FolderFilterCondition,
FileNameFilterCondition,
ContentFilterCondition,
} from "src/types";
import { createEventDispatcher } from "svelte";
import Wrap from "src/svelte/shared/components/wrap.svelte";
import License from "src/svelte/shared/services/license";
import { Menu } from "obsidian";
import {
CheckboxFilterCondition,
ContentFilterCondition,
DateFilterCondition,
FileNameFilterCondition,
type FilterCondition,
type FilterOperator,
FilterRuleType,
FolderFilterCondition,
ListFilterCondition,
NumberFilterCondition,
PropertyType,
TextFilterCondition,
} from "src/types";
import { createEventDispatcher } from "svelte";
import {
getDisplayNameForFilterCondition,
getDisplayNameForFilterRuleType,

View file

@ -1,13 +1,13 @@
<script lang="ts">
import { FilterCondition, FilterOperator, FilterRuleType } from "src/types";
import FilterRule from "./filter-rule.svelte";
import { createEventDispatcher, onMount } from "svelte";
import store from "src/svelte/shared/services/store";
import { TFolder } from "obsidian";
import VaultExplorerPlugin from "src/main";
import EventManager from "src/event/event-manager";
import { PluginEvent } from "src/event/types";
import VaultExplorerPlugin from "src/main";
import SearchSelect from "src/svelte/shared/components/search-select.svelte";
import store from "src/svelte/shared/services/store";
import { type FilterCondition, type FilterOperator, FilterRuleType } from "src/types";
import { createEventDispatcher, onMount } from "svelte";
import FilterRule from "./filter-rule.svelte";
export let index: number;
export let id: string;

View file

@ -1,8 +1,6 @@
<script lang="ts">
import Stack from "src/svelte/shared/components/stack.svelte";
import { TFilterGroup } from "src/types";
import { tick } from "svelte";
import Flex from "src/svelte/shared/components/flex.svelte";
import type { TFilterGroup } from "src/types";
import GroupListItem from "./group-list-item.svelte";
export let groups: TFilterGroup[];

View file

@ -1,15 +1,15 @@
<script lang="ts">
import { getAllObsidianProperties } from "src/obsidian/utils";
import {
CheckboxFilterCondition,
DateFilterCondition,
FilterCondition,
FilterOperator,
TextFilterCondition,
DatePropertyFilterValue,
PropertyType,
type FilterCondition,
type FilterOperator,
FilterRuleType,
PropertyType,
TextFilterCondition,
} from "src/types";
import { getAllObsidianProperties } from "src/obsidian/utils";
export let index: number;
export let id: string;
@ -31,12 +31,12 @@
obsidianProperties = getAllObsidianProperties(plugin.app);
});
import { createEventDispatcher } from "svelte";
import store from "src/svelte/shared/services/store";
import VaultExplorerPlugin from "src/main";
import { ObsidianProperty } from "src/obsidian/types";
import FilterRule from "./filter-rule.svelte";
import type { ObsidianProperty } from "src/obsidian/types";
import store from "src/svelte/shared/services/store";
import { createEventDispatcher } from "svelte";
import { getDisplayNameForDatePropertyFilterValue } from "../services/display-name-utils";
import FilterRule from "./filter-rule.svelte";
const dispatch = createEventDispatcher();

View file

@ -1,33 +1,32 @@
<script lang="ts">
import Logger from "js-logger";
import EventManager from "src/event/event-manager";
import { onMount } from "svelte";
import store from "../shared/services/store";
import { PluginEvent } from "src/event/types";
import VaultExplorerPlugin from "src/main";
import {
CheckboxFilterCondition,
ContentFilterCondition,
DateFilterCondition,
DatePropertyFilterValue,
FileNameFilterCondition,
FilterRuleType,
FolderFilterCondition,
ListFilterCondition,
NumberFilterCondition,
TextFilterCondition,
DatePropertyFilterValue,
PropertyType,
FilterRuleType,
ContentFilterCondition,
FolderFilterCondition,
FileNameFilterCondition,
TFilterRule,
TFilterGroup,
TextFilterCondition,
type TFilterGroup,
type TFilterRule,
} from "src/types";
import { generateRandomId } from "../shared/services/random";
import { createPropertyFilter } from "./services/utils";
import GroupList from "./components/group-list.svelte";
import { onMount } from "svelte";
import Divider from "../shared/components/divider.svelte";
import Logger from "js-logger";
import { PluginEvent } from "src/event/types";
import IconButton from "../shared/components/icon-button.svelte";
import Stack from "../shared/components/stack.svelte";
import Spacer from "../shared/components/spacer.svelte";
import Stack from "../shared/components/stack.svelte";
import { generateRandomId } from "../shared/services/random";
import store from "../shared/services/store";
import FilterRuleList from "./components/filter-rule-list.svelte";
import { createPropertyFilter } from "./services/utils";
let selectedGroupId: string = "";
let groups: TFilterGroup[] = [];

View file

@ -1,4 +1,16 @@
import { CheckboxFilterCondition, ContentFilterCondition, DateFilterCondition, DatePropertyFilterValue, FileNameFilterCondition, FilterCondition, FilterRuleType, FolderFilterCondition, ListFilterCondition, NumberFilterCondition, TextFilterCondition } from "src/types";
import {
CheckboxFilterCondition,
ContentFilterCondition,
DateFilterCondition,
DatePropertyFilterValue,
FileNameFilterCondition,
type FilterCondition,
FilterRuleType,
FolderFilterCondition,
ListFilterCondition,
NumberFilterCondition,
TextFilterCondition,
} from "src/types";
export const getDisplayNameForFilterRuleType = (type: FilterRuleType) => {
switch (type) {
@ -13,9 +25,11 @@ export const getDisplayNameForFilterRuleType = (type: FilterRuleType) => {
default:
return "";
}
}
};
export const getDisplayNameForDatePropertyFilterValue = (value: DatePropertyFilterValue) => {
export const getDisplayNameForDatePropertyFilterValue = (
value: DatePropertyFilterValue
) => {
switch (value) {
case DatePropertyFilterValue.TODAY:
return "today";
@ -36,7 +50,7 @@ export const getDisplayNameForDatePropertyFilterValue = (value: DatePropertyFilt
default:
return "";
}
}
};
export const getDisplayNameForFilterCondition = (type: FilterCondition) => {
switch (type) {

View file

@ -2,7 +2,7 @@ import {
FilterRuleType,
PropertyType,
TextFilterCondition,
TextPropertyFilterRule,
type TextPropertyFilterRule,
} from "src/types";
import { generateRandomId } from "../../shared/services/random";

View file

@ -1,4 +1,4 @@
import { CoverImageSourceType } from "src/types";
import type { CoverImageSourceType } from "src/types";
export const getDisplayNameForImageSource = (type: CoverImageSourceType) => {
switch (type) {

View file

@ -1,11 +1,11 @@
<script lang="ts">
import store from "../shared/services/store";
import VaultExplorerPlugin from "src/main";
import { CoverImageSource, CoverImageSourceType } from "src/types";
import { getDisplayNameForImageSource } from "./display-name";
import Icon from "../shared/components/icon.svelte";
import { PluginEvent } from "src/event/types";
import EventManager from "src/event/event-manager";
import { PluginEvent } from "src/event/types";
import VaultExplorerPlugin from "src/main";
import type { CoverImageSource, CoverImageSourceType } from "src/types";
import Icon from "../shared/components/icon.svelte";
import store from "../shared/services/store";
import { getDisplayNameForImageSource } from "./display-name";
let plugin: VaultExplorerPlugin | null = null;
let coverImageSources: CoverImageSource[] = [];

View file

@ -5,7 +5,7 @@
$: className = `vault-explorer-divider vault-explorer-divider--${direction}`;
</script>
<div class={className} style="border-width: {borderWidth}" />
<div class={className} style="border-width: {borderWidth}"></div>
<style>
.vault-explorer-divider--horizontal {

View file

@ -1,7 +1,6 @@
<script lang="ts">
import { createEventDispatcher, getContext } from "svelte";
import { onMount } from "svelte";
import { Writable } from "svelte/store";
import { createEventDispatcher, getContext, onMount } from "svelte";
import type { Writable } from "svelte/store";
import { generateRandomId } from "../services/random";
const dispatch = createEventDispatcher();
@ -105,3 +104,4 @@
background-color: var(--background-modifier-hover);
}
</style>
``

View file

@ -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<string, string>[];

View file

@ -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();
}
};

File diff suppressed because it is too large Load diff

View file

@ -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", () => {

View file

@ -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", () => {