( value: unknown, fallbackPrimary: PrimaryNotesLocation = DEFAULT_VAULT_SETTINGS.primaryNotesLocation )
| 861 | } |
| 862 | |
| 863 | function normalizeVaultSettings( |
| 864 | value: unknown, |
| 865 | fallbackPrimary: PrimaryNotesLocation = DEFAULT_VAULT_SETTINGS.primaryNotesLocation |
| 866 | ): VaultSettings { |
| 867 | if (!value || typeof value !== 'object') { |
| 868 | return { |
| 869 | primaryNotesLocation: fallbackPrimary, |
| 870 | dailyNotes: { |
| 871 | enabled: DEFAULT_VAULT_SETTINGS.dailyNotes.enabled, |
| 872 | directory: DEFAULT_DAILY_NOTES_DIRECTORY, |
| 873 | titlePattern: DEFAULT_DAILY_NOTE_TITLE_PATTERN, |
| 874 | locale: DEFAULT_DAILY_NOTE_LOCALE, |
| 875 | tasksDueOnNoteDate: DEFAULT_VAULT_SETTINGS.dailyNotes.tasksDueOnNoteDate, |
| 876 | rolloverUnfinishedTasks: DEFAULT_VAULT_SETTINGS.dailyNotes.rolloverUnfinishedTasks |
| 877 | }, |
| 878 | weeklyNotes: { |
| 879 | enabled: DEFAULT_VAULT_SETTINGS.weeklyNotes.enabled, |
| 880 | directory: DEFAULT_WEEKLY_NOTES_DIRECTORY, |
| 881 | titlePattern: DEFAULT_WEEKLY_NOTE_TITLE_PATTERN, |
| 882 | locale: DEFAULT_WEEKLY_NOTE_LOCALE |
| 883 | }, |
| 884 | folderIcons: {}, |
| 885 | folderColors: {}, |
| 886 | favorites: [] |
| 887 | } |
| 888 | } |
| 889 | const candidate = value as { |
| 890 | primaryNotesLocation?: unknown |
| 891 | dailyNotes?: { |
| 892 | enabled?: unknown |
| 893 | directory?: unknown |
| 894 | titlePattern?: unknown |
| 895 | locale?: unknown |
| 896 | legacyPatterns?: unknown |
| 897 | templateId?: unknown |
| 898 | tasksDueOnNoteDate?: unknown |
| 899 | rolloverUnfinishedTasks?: unknown |
| 900 | } | null |
| 901 | weeklyNotes?: { |
| 902 | enabled?: unknown |
| 903 | directory?: unknown |
| 904 | titlePattern?: unknown |
| 905 | locale?: unknown |
| 906 | legacyPatterns?: unknown |
| 907 | templateId?: unknown |
| 908 | } | null |
| 909 | folderIcons?: Record<string, unknown> | null |
| 910 | folderColors?: Record<string, unknown> | null |
| 911 | favorites?: unknown |
| 912 | view?: unknown |
| 913 | } |
| 914 | const folderIcons: Record<string, FolderIconId> = {} |
| 915 | if (candidate.folderIcons && typeof candidate.folderIcons === 'object') { |
| 916 | for (const [key, iconId] of Object.entries(candidate.folderIcons)) { |
| 917 | if (!key || !isFolderIconId(iconId)) continue |
| 918 | folderIcons[key] = iconId |
| 919 | } |
| 920 | } |
no test coverage detected