| getOsAndObsidianUnsafePathCharsRegExp | Returns a regexp matching all unsafe characters in file names/paths. Includes both OS-specific restrictions and Obsidian-specific ones. |
| getOsUnsafePathCharsRegExp | Returns a regexp matching characters that are not safe to use in file names/paths at the OS level. |
| hasWindowsTrailingChars | Checks whether a name ends with the dots or spaces Windows refuses. Answers for Windows regardless of the platform in use: a vault is synced, so the rules that matter are not necessarily those of the machine asking. |
| isValidationMessageHolder | Type guard to check if a value is a validation message holder. |
| isWindowsReservedName | Checks whether a name is one of the MS-DOS device names Windows refuses. Two steps the caller would otherwise have to know about happen here: trailing dots and spaces are trimmed BEFORE the test, because Windows strips them before deciding and CON is therefore as reserved as CON; and the extension is dropped, because CON.md is reserved too. CONIN$ / CONOUT$ and the superscript COM² forms are deliberately NOT reserved: they are accepted by every Windows version that runs Obsidian, and matching them would rename files that work. Answers for Windows regardless of the platform in use: a vault is synced, so the rules that matter are not necessarily those of the machine asking. |
| trimWindowsTrailingChars | Removes the trailing dots and spaces Windows refuses from the end of a name. Trim before testing for a reserved name, never after: trimming afterwards turns an accepted CON into a rejected CON. isWindowsReservedName already does this internally. |