pub const SHELLS: &[&str] = &["sh", "bash", "zsh", "dash", "ksh", "fish"];
pub const WRAPPERS: &[&str] = &[
"sudo",
"doas",
"env",
"nohup",
"time",
"nice",
"ionice",
"xargs",
"command",
"exec",
"builtin",
"timeout",
"watch",
"caffeinate",
"stdbuf",
"chroot",
"unbuffer",
"npx",
"bunx",
];
pub const WRAPPERS_WITH_VALUE: &[&str] = &["timeout", "chroot"];
pub const WRAPPER_SUBCOMMANDS: &[(&str, &[&str])] = &[
("pnpm", &["exec", "dlx"]),
("yarn", &["exec", "dlx"]),
("npm", &["exec", "x"]),
("bun", &["x"]),
];
pub const PACKAGE_RUNNERS: &[&str] = &["npx", "bunx", "npm", "pnpm", "yarn", "bun"];
pub const WRAPPER_OPTIONS_WITH_VALUE: &[(&str, &[&str])] = &[
(
"sudo",
&["-u", "-g", "-C", "-h", "-p", "-U", "-r", "-t", "-D"],
),
("doas", &["-u", "-C"]),
("env", &["-u", "-C", "-S", "--unset", "--chdir"]),
("nice", &["-n"]),
("npx", &["-p", "--package"]),
("bunx", &["-p", "--package"]),
("ionice", &["-c", "-n", "-p"]),
("xargs", &["-I", "-L", "-n", "-P", "-s", "-d", "-E", "-a"]),
("timeout", &["-s", "-k", "--signal", "--kill-after"]),
("watch", &["-n", "-d"]),
("stdbuf", &["-i", "-o", "-e"]),
("exec", &["-a"]),
];
pub const ENV_BUILTINS: &[&str] = &["export", "declare", "typeset", "local", "readonly", "set"];
pub const MAKES: &[&str] = &["make", "gmake"];
pub const SOURCE_BUILTINS: &[&str] = &["source", "."];
pub const INLINE_INTERPRETERS: &[(&str, &[&str])] = &[
("python", &["-c"]),
("python3", &["-c"]),
("node", &["-e", "--eval", "-p", "--print"]),
("deno", &["eval"]),
("bun", &["-e"]),
("perl", &["-e", "-E"]),
("ruby", &["-e"]),
("php", &["-r"]),
("osascript", &["-e"]),
("pwsh", &["-c", "-Command"]),
("powershell", &["-c", "-Command"]),
];
pub const WRITE_ALL_PATHS: &[&str] = &[
"rm", "rmdir", "touch", "mkdir", "chmod", "chown", "chgrp", "truncate", "unlink", "shred",
"tee", "install", "mkfifo", "mknod", "mv",
];
pub const WRITE_LAST_PATH: &[&str] = &["cp", "ln", "rsync", "scp"];
pub const FILE_OPERANDS: &[&str] = &[
"cat",
"tac",
"head",
"tail",
"less",
"more",
"bat",
"nl",
"od",
"xxd",
"hexdump",
"strings",
"grep",
"egrep",
"fgrep",
"rg",
"ag",
"ack",
"wc",
"diff",
"cmp",
"sort",
"uniq",
"cut",
"paste",
"column",
"base64",
"base32",
"md5",
"md5sum",
"shasum",
"sha1sum",
"sha256sum",
"sha512sum",
"cksum",
"file",
"stat",
"ls",
"tree",
"find",
"du",
"tar",
"zip",
"unzip",
"gzip",
"gunzip",
"zcat",
"bzip2",
"xz",
"jq",
"yq",
"openssl",
"ssh-keygen",
"split",
"fold",
"fmt",
"iconv",
"awk",
"sed",
"vi",
"vim",
"nvim",
"nano",
"emacs",
"code",
"open",
];
pub const NO_FILE_OPERANDS: &[&str] = &["echo", "printf"];
pub const CWD_PREFIXES: &[&str] = &[
"builtin", "command", "time", "{", "!", "if", "then", "else", "elif", "while", "until", "do",
];
pub const MAY_CHANGE_CWD: &[&str] = &["eval", "source", ".", "popd"];
pub const SPECIAL_PARAMS: &[char] = &['?', '$', '!', '#', '@', '*', '-', '0'];
pub const IGNORED_VARS: &[&str] = &["HOME", "PWD", "OLDPWD", "USER", "SHELL", "TERM", "project"];
pub const KNOWN_TLDS: &[&str] = &[
"com", "org", "net", "io", "dev", "ai", "co", "app", "sh", "me", "us", "uk", "de", "fr", "jp",
"cn", "in", "ru", "br", "edu", "gov", "mil", "int", "info", "biz", "xyz", "cloud", "tech",
"so", "to", "ly", "gg", "tv", "fm", "am", "is", "it", "nl", "se", "no", "fi", "dk", "ch", "at",
"be", "es", "pt", "pl", "cz", "au", "nz", "ca", "mx", "ar", "cl", "kr", "tw", "hk", "sg", "id",
"ph", "vn", "th", "il", "za", "ng", "ke", "eg", "ie", "eu", "asia", "online", "site", "store",
"space", "live", "run", "page", "zone", "link", "click", "top", "pro", "name", "mobi",
"network", "systems", "services", "digital", "email", "host", "cc", "ws", "nu", "la", "im",
"pw", "tk", "ml", "ga", "cf", "gq", "onion", "local", "internal", "lan", "arpa", "ee", "lv",
"lt", "ua", "by", "kz", "tr", "gr", "hu", "ro", "bg", "rs", "hr", "si", "sk", "pk", "bd", "lk",
"np", "ir", "iq", "sa", "ae", "qa", "my", "pe", "ve", "uy", "ec",
];
pub const FILE_EXTENSIONS: &[&str] = &[
"rs", "js", "ts", "tsx", "jsx", "mjs", "cjs", "py", "rb", "php", "go", "java", "kt", "swift",
"c", "h", "cpp", "hpp", "cs", "md", "txt", "json", "yaml", "yml", "toml", "lock", "sh", "bash",
"zsh", "html", "css", "scss", "vue", "svelte", "png", "jpg", "jpeg", "gif", "svg", "pdf",
"zip", "tar", "gz", "tgz", "bz2", "xz", "log", "env", "cfg", "ini", "xml", "csv", "sql", "db",
"sqlite", "wasm", "so", "dylib", "dll", "exe", "bin", "o", "a", "class", "jar", "war", "plist",
"conf", "pem", "key", "crt",
];