2025-12-16 20:50:28 +00:00
|
|
|
export enum FileType {
|
|
|
|
|
// ----- Types officially supported by Obsidian -----
|
|
|
|
|
MD = "md",
|
|
|
|
|
BASE = "base",
|
|
|
|
|
CANVAS = "canvas",
|
|
|
|
|
// images
|
|
|
|
|
AVIF = "avif",
|
|
|
|
|
BMP = "bmp",
|
|
|
|
|
GIF = "gif",
|
|
|
|
|
JPEG = "jpeg",
|
|
|
|
|
JPG = "jpg",
|
|
|
|
|
PNG = "png",
|
|
|
|
|
SVG = "svg",
|
|
|
|
|
WEBP = "webp",
|
|
|
|
|
WEBM = "webm",
|
|
|
|
|
// audio
|
|
|
|
|
FLAC = "flac",
|
|
|
|
|
M4A = "m4a",
|
|
|
|
|
MP3 = "mp3",
|
|
|
|
|
OGG = "ogg",
|
|
|
|
|
WAV = "wav",
|
|
|
|
|
WEBM_AUDIO = WEBM,
|
|
|
|
|
THREE_GP = "3gp",
|
|
|
|
|
// video
|
|
|
|
|
MKV = "mkv",
|
|
|
|
|
MOV = "mov",
|
|
|
|
|
MP4 = "mp4",
|
|
|
|
|
OGV = "ogv",
|
|
|
|
|
WEBM_VIDEO = WEBM,
|
|
|
|
|
// pdf
|
|
|
|
|
PDF = "pdf",
|
2025-12-22 20:02:02 +00:00
|
|
|
|
2025-12-16 20:50:28 +00:00
|
|
|
// ----- Types not officially supported by Obsidian -----
|
2025-12-22 20:02:02 +00:00
|
|
|
// Plain text
|
2025-12-16 20:50:28 +00:00
|
|
|
TXT = "txt",
|
2025-12-22 20:02:02 +00:00
|
|
|
TEXT = "text",
|
|
|
|
|
|
|
|
|
|
// Data formats
|
2025-12-16 20:50:28 +00:00
|
|
|
JSON = "json",
|
|
|
|
|
XML = "xml",
|
|
|
|
|
CSV = "csv",
|
2025-12-22 20:02:02 +00:00
|
|
|
TSV = "tsv",
|
2025-12-16 20:50:28 +00:00
|
|
|
YAML = "yaml",
|
|
|
|
|
YML = "yml",
|
2025-12-22 20:02:02 +00:00
|
|
|
TOML = "toml",
|
|
|
|
|
|
|
|
|
|
// Web languages
|
|
|
|
|
HTML = "html",
|
2025-12-16 20:50:28 +00:00
|
|
|
CSS = "css",
|
2025-12-22 20:02:02 +00:00
|
|
|
SASS = "sass",
|
|
|
|
|
SCSS = "scss",
|
|
|
|
|
|
|
|
|
|
// JavaScript/TypeScript ecosystem
|
2025-12-16 20:50:28 +00:00
|
|
|
JS = "js",
|
2025-12-22 20:02:02 +00:00
|
|
|
MJS = "mjs",
|
|
|
|
|
CJS = "cjs",
|
2025-12-16 20:50:28 +00:00
|
|
|
TS = "ts",
|
|
|
|
|
JSX = "jsx",
|
|
|
|
|
TSX = "tsx",
|
2025-12-22 20:02:02 +00:00
|
|
|
VUE = "vue",
|
|
|
|
|
SVELTE = "svelte",
|
|
|
|
|
ASTRO = "astro",
|
|
|
|
|
|
|
|
|
|
// Shell/Scripting
|
|
|
|
|
SH = "sh",
|
|
|
|
|
BASH = "bash",
|
|
|
|
|
ZSH = "zsh",
|
|
|
|
|
FISH = "fish",
|
|
|
|
|
BAT = "bat",
|
|
|
|
|
CMD = "cmd",
|
|
|
|
|
PS1 = "ps1",
|
|
|
|
|
|
|
|
|
|
// Programming languages
|
|
|
|
|
PY = "py",
|
|
|
|
|
RB = "rb",
|
|
|
|
|
PHP = "php",
|
|
|
|
|
JAVA = "java",
|
|
|
|
|
C = "c",
|
|
|
|
|
CPP = "cpp",
|
|
|
|
|
CC = "cc",
|
|
|
|
|
CXX = "cxx",
|
|
|
|
|
H = "h",
|
|
|
|
|
HPP = "hpp",
|
|
|
|
|
HXX = "hxx",
|
|
|
|
|
CS = "cs",
|
|
|
|
|
GO = "go",
|
|
|
|
|
RS = "rs",
|
|
|
|
|
SWIFT = "swift",
|
|
|
|
|
KT = "kt",
|
|
|
|
|
KTS = "kts",
|
|
|
|
|
SCALA = "scala",
|
|
|
|
|
M = "m",
|
|
|
|
|
R = "r",
|
|
|
|
|
R_UPPER = "R",
|
|
|
|
|
JL = "jl",
|
|
|
|
|
LUA = "lua",
|
|
|
|
|
PL = "pl",
|
|
|
|
|
PM = "pm",
|
|
|
|
|
DART = "dart",
|
|
|
|
|
|
|
|
|
|
// Markup & Documentation
|
2025-12-16 20:50:28 +00:00
|
|
|
TEX = "tex",
|
2025-12-22 20:02:02 +00:00
|
|
|
LATEX = "latex",
|
|
|
|
|
RST = "rst",
|
|
|
|
|
ADOC = "adoc",
|
|
|
|
|
ASCIIDOC = "asciidoc",
|
|
|
|
|
ORG = "org",
|
|
|
|
|
TEXTILE = "textile",
|
|
|
|
|
RTF = "rtf",
|
|
|
|
|
|
|
|
|
|
// Configuration files
|
2025-12-16 20:50:28 +00:00
|
|
|
INI = "ini",
|
|
|
|
|
CFG = "cfg",
|
|
|
|
|
CONF = "conf",
|
2025-12-22 20:02:02 +00:00
|
|
|
ENV = "env",
|
|
|
|
|
PROPERTIES = "properties",
|
|
|
|
|
GITIGNORE = "gitignore",
|
|
|
|
|
GITATTRIBUTES = "gitattributes",
|
|
|
|
|
EDITORCONFIG = "editorconfig",
|
|
|
|
|
PRETTIERRC = "prettierrc",
|
|
|
|
|
ESLINTRC = "eslintrc",
|
|
|
|
|
BABELRC = "babelrc",
|
|
|
|
|
NPMRC = "npmrc",
|
|
|
|
|
YARNRC = "yarnrc",
|
|
|
|
|
DOCKERFILE = "dockerfile",
|
|
|
|
|
|
|
|
|
|
// Query languages
|
|
|
|
|
SQL = "sql",
|
|
|
|
|
GRAPHQL = "graphql",
|
|
|
|
|
GQL = "gql",
|
|
|
|
|
|
|
|
|
|
// Build & Development
|
|
|
|
|
MAKEFILE = "makefile",
|
|
|
|
|
MK = "mk",
|
|
|
|
|
GRADLE = "gradle",
|
|
|
|
|
DIFF = "diff",
|
|
|
|
|
PATCH = "patch",
|
|
|
|
|
|
2026-03-15 19:48:28 +00:00
|
|
|
// Document formats
|
|
|
|
|
DOCX = "docx",
|
|
|
|
|
PPTX = "pptx",
|
|
|
|
|
XLSX = "xlsx",
|
|
|
|
|
ODT = "odt",
|
|
|
|
|
ODP = "odp",
|
|
|
|
|
ODS = "ods",
|
|
|
|
|
|
2025-12-22 20:02:02 +00:00
|
|
|
// Logs
|
2025-12-16 20:50:28 +00:00
|
|
|
LOG = "log",
|
2025-12-22 20:02:02 +00:00
|
|
|
|
|
|
|
|
UNKNOWN = "unknown"
|
2025-12-16 20:50:28 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-22 20:02:02 +00:00
|
|
|
export function toFileType(fileType: string): FileType {
|
|
|
|
|
if (isKnownFileType(fileType)) {
|
|
|
|
|
return fileType;
|
2025-12-16 20:50:28 +00:00
|
|
|
}
|
2025-12-22 20:02:02 +00:00
|
|
|
return FileType.UNKNOWN;
|
2025-12-16 20:50:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isKnownFileType(value: string): value is FileType {
|
2025-12-22 20:02:02 +00:00
|
|
|
return Object.values(FileType).includes(value as FileType) && value !== FileType.UNKNOWN.toString();
|
2025-12-16 20:50:28 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-30 19:07:00 +00:00
|
|
|
export function isFileType(value: unknown, fileType: FileType): value is FileType {
|
2025-12-16 20:50:28 +00:00
|
|
|
return value === fileType.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isBinaryFile(extension: string) {
|
2026-03-15 19:48:28 +00:00
|
|
|
return isKnownFileType(extension) && !isTextFile(extension) && !isDocumentFile(extension);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isDocumentFile(extension: string) {
|
|
|
|
|
return isFileType(extension, FileType.DOCX)
|
|
|
|
|
|| isFileType(extension, FileType.PPTX)
|
|
|
|
|
|| isFileType(extension, FileType.XLSX)
|
|
|
|
|
|| isFileType(extension, FileType.ODT)
|
|
|
|
|
|| isFileType(extension, FileType.ODP)
|
|
|
|
|
|| isFileType(extension, FileType.ODS);
|
2025-12-16 20:50:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isTextFile(extension: string) {
|
|
|
|
|
return isFileType(extension, FileType.MD)
|
|
|
|
|
|| isFileType(extension, FileType.BASE)
|
|
|
|
|
|| isFileType(extension, FileType.CANVAS)
|
|
|
|
|
|| isFileType(extension, FileType.TXT)
|
2025-12-22 20:02:02 +00:00
|
|
|
|| isFileType(extension, FileType.TEXT)
|
2025-12-16 20:50:28 +00:00
|
|
|
|| isFileType(extension, FileType.JSON)
|
|
|
|
|
|| isFileType(extension, FileType.XML)
|
|
|
|
|
|| isFileType(extension, FileType.CSV)
|
2025-12-22 20:02:02 +00:00
|
|
|
|| isFileType(extension, FileType.TSV)
|
2025-12-16 20:50:28 +00:00
|
|
|
|| isFileType(extension, FileType.YAML)
|
|
|
|
|
|| isFileType(extension, FileType.YML)
|
2025-12-22 20:02:02 +00:00
|
|
|
|| isFileType(extension, FileType.TOML)
|
|
|
|
|
|| isFileType(extension, FileType.HTML)
|
2025-12-16 20:50:28 +00:00
|
|
|
|| isFileType(extension, FileType.CSS)
|
2025-12-22 20:02:02 +00:00
|
|
|
|| isFileType(extension, FileType.SASS)
|
|
|
|
|
|| isFileType(extension, FileType.SCSS)
|
2025-12-16 20:50:28 +00:00
|
|
|
|| isFileType(extension, FileType.JS)
|
2025-12-22 20:02:02 +00:00
|
|
|
|| isFileType(extension, FileType.MJS)
|
|
|
|
|
|| isFileType(extension, FileType.CJS)
|
2025-12-16 20:50:28 +00:00
|
|
|
|| isFileType(extension, FileType.TS)
|
|
|
|
|
|| isFileType(extension, FileType.JSX)
|
|
|
|
|
|| isFileType(extension, FileType.TSX)
|
2025-12-22 20:02:02 +00:00
|
|
|
|| isFileType(extension, FileType.VUE)
|
|
|
|
|
|| isFileType(extension, FileType.SVELTE)
|
|
|
|
|
|| isFileType(extension, FileType.ASTRO)
|
|
|
|
|
|| isFileType(extension, FileType.SH)
|
|
|
|
|
|| isFileType(extension, FileType.BASH)
|
|
|
|
|
|| isFileType(extension, FileType.ZSH)
|
|
|
|
|
|| isFileType(extension, FileType.FISH)
|
|
|
|
|
|| isFileType(extension, FileType.BAT)
|
|
|
|
|
|| isFileType(extension, FileType.CMD)
|
|
|
|
|
|| isFileType(extension, FileType.PS1)
|
|
|
|
|
|| isFileType(extension, FileType.PY)
|
|
|
|
|
|| isFileType(extension, FileType.RB)
|
|
|
|
|
|| isFileType(extension, FileType.PHP)
|
|
|
|
|
|| isFileType(extension, FileType.JAVA)
|
|
|
|
|
|| isFileType(extension, FileType.C)
|
|
|
|
|
|| isFileType(extension, FileType.CPP)
|
|
|
|
|
|| isFileType(extension, FileType.CC)
|
|
|
|
|
|| isFileType(extension, FileType.CXX)
|
|
|
|
|
|| isFileType(extension, FileType.H)
|
|
|
|
|
|| isFileType(extension, FileType.HPP)
|
|
|
|
|
|| isFileType(extension, FileType.HXX)
|
|
|
|
|
|| isFileType(extension, FileType.CS)
|
|
|
|
|
|| isFileType(extension, FileType.GO)
|
|
|
|
|
|| isFileType(extension, FileType.RS)
|
|
|
|
|
|| isFileType(extension, FileType.SWIFT)
|
|
|
|
|
|| isFileType(extension, FileType.KT)
|
|
|
|
|
|| isFileType(extension, FileType.KTS)
|
|
|
|
|
|| isFileType(extension, FileType.SCALA)
|
|
|
|
|
|| isFileType(extension, FileType.M)
|
|
|
|
|
|| isFileType(extension, FileType.R)
|
|
|
|
|
|| isFileType(extension, FileType.R_UPPER)
|
|
|
|
|
|| isFileType(extension, FileType.JL)
|
|
|
|
|
|| isFileType(extension, FileType.LUA)
|
|
|
|
|
|| isFileType(extension, FileType.PL)
|
|
|
|
|
|| isFileType(extension, FileType.PM)
|
|
|
|
|
|| isFileType(extension, FileType.DART)
|
2025-12-16 20:50:28 +00:00
|
|
|
|| isFileType(extension, FileType.TEX)
|
2025-12-22 20:02:02 +00:00
|
|
|
|| isFileType(extension, FileType.LATEX)
|
|
|
|
|
|| isFileType(extension, FileType.RST)
|
|
|
|
|
|| isFileType(extension, FileType.ADOC)
|
|
|
|
|
|| isFileType(extension, FileType.ASCIIDOC)
|
|
|
|
|
|| isFileType(extension, FileType.ORG)
|
|
|
|
|
|| isFileType(extension, FileType.TEXTILE)
|
|
|
|
|
|| isFileType(extension, FileType.RTF)
|
2025-12-16 20:50:28 +00:00
|
|
|
|| isFileType(extension, FileType.INI)
|
|
|
|
|
|| isFileType(extension, FileType.CFG)
|
|
|
|
|
|| isFileType(extension, FileType.CONF)
|
2025-12-22 20:02:02 +00:00
|
|
|
|| isFileType(extension, FileType.ENV)
|
|
|
|
|
|| isFileType(extension, FileType.PROPERTIES)
|
|
|
|
|
|| isFileType(extension, FileType.GITIGNORE)
|
|
|
|
|
|| isFileType(extension, FileType.GITATTRIBUTES)
|
|
|
|
|
|| isFileType(extension, FileType.EDITORCONFIG)
|
|
|
|
|
|| isFileType(extension, FileType.PRETTIERRC)
|
|
|
|
|
|| isFileType(extension, FileType.ESLINTRC)
|
|
|
|
|
|| isFileType(extension, FileType.BABELRC)
|
|
|
|
|
|| isFileType(extension, FileType.NPMRC)
|
|
|
|
|
|| isFileType(extension, FileType.YARNRC)
|
|
|
|
|
|| isFileType(extension, FileType.DOCKERFILE)
|
|
|
|
|
|| isFileType(extension, FileType.SQL)
|
|
|
|
|
|| isFileType(extension, FileType.GRAPHQL)
|
|
|
|
|
|| isFileType(extension, FileType.GQL)
|
|
|
|
|
|| isFileType(extension, FileType.MAKEFILE)
|
|
|
|
|
|| isFileType(extension, FileType.MK)
|
|
|
|
|
|| isFileType(extension, FileType.GRADLE)
|
|
|
|
|
|| isFileType(extension, FileType.DIFF)
|
|
|
|
|
|| isFileType(extension, FileType.PATCH)
|
|
|
|
|
|| isFileType(extension, FileType.LOG);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isImageFile(extension: string) {
|
|
|
|
|
return isFileType(extension, FileType.AVIF)
|
|
|
|
|
|| isFileType(extension, FileType.BMP)
|
|
|
|
|
|| isFileType(extension, FileType.GIF)
|
|
|
|
|
|| isFileType(extension, FileType.JPEG)
|
|
|
|
|
|| isFileType(extension, FileType.JPG)
|
|
|
|
|
|| isFileType(extension, FileType.PNG)
|
|
|
|
|
|| isFileType(extension, FileType.SVG)
|
|
|
|
|
|| isFileType(extension, FileType.WEBP);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isAudioFile(extension: string) {
|
|
|
|
|
return isFileType(extension, FileType.FLAC)
|
|
|
|
|
|| isFileType(extension, FileType.M4A)
|
|
|
|
|
|| isFileType(extension, FileType.MP3)
|
|
|
|
|
|| isFileType(extension, FileType.OGG)
|
|
|
|
|
|| isFileType(extension, FileType.WAV)
|
|
|
|
|
|| isFileType(extension, FileType.WEBM_AUDIO)
|
|
|
|
|
|| isFileType(extension, FileType.THREE_GP);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isVideoFile(extension: string) {
|
|
|
|
|
return isFileType(extension, FileType.MKV)
|
|
|
|
|
|| isFileType(extension, FileType.MOV)
|
|
|
|
|
|| isFileType(extension, FileType.MP4)
|
|
|
|
|
|| isFileType(extension, FileType.OGV)
|
|
|
|
|
|| isFileType(extension, FileType.WEBM_VIDEO);
|
2025-12-23 12:04:29 +00:00
|
|
|
}
|