110 lines
3.1 KiB
TypeScript
110 lines
3.1 KiB
TypeScript
|
|
/**
|
|||
|
|
* Patterns that indicate the user is NOT at a prompt
|
|||
|
|
* (e.g., inside vim, less, man, top, etc.)
|
|||
|
|
*/
|
|||
|
|
export const NON_PROMPT_PATTERNS = [
|
|||
|
|
/^~$/, // vim empty line marker
|
|||
|
|
/^\s*--\s*More\s*--/, // less/more pager
|
|||
|
|
/^\s*\(END\)/, // less end marker
|
|||
|
|
/^:\s*$/, // vim command mode
|
|||
|
|
/^\s*~\s*$/, // vim tilde lines
|
|||
|
|
/^>{1,3}\s/, // Bare > (bash PS2 continuation), >> or >>> (python REPL)
|
|||
|
|
/^\s{4}(?:->|['"`]>)\s/, // mysql / mariadb continuation prompts
|
|||
|
|
/^(?:mysql|sqlite(?:3)?|redis(?:-cli)?|psql|mariadb)>\s/i, // mysql> / sqlite> / redis-cli> prompts
|
|||
|
|
/^SQL>\s/i, // sqlplus SQL> prompts
|
|||
|
|
/^(?:sftp|ftp|lftp|ghci|node|mongo|mongosh|deno|irb|pry|julia|scala|gdb|lldb|cqlsh|hive|spark-sql|jshell|ksql|trino|presto|duckdb)>\s/i,
|
|||
|
|
/^irb\([^)]*\):\d+[:*]?\d*>\s/i,
|
|||
|
|
/^pry\([^)]*\)>\s/i,
|
|||
|
|
/^\[\d+\]\s+pry\([^)]*\)>\s/i,
|
|||
|
|
/^lftp\s+\S+>\s/i,
|
|||
|
|
/^\s{3}\.{3}>\s/,
|
|||
|
|
/^cqlsh(?::[\w.-]+)?>\s/i,
|
|||
|
|
/^(?:hive|spark-sql)\s+\([^)]+\)>\s/i,
|
|||
|
|
/^(?:\d+:\s*)?jdbc:hive2?:\/\/\S+>\s/i,
|
|||
|
|
/^(?:test|admin|local|config)>\s+(?:db(?:\.|\s*$)|rs\.|print\s*\(|(?:const|let|var|await)\b|\d+\s*[-+*/]\s*\d*)/i,
|
|||
|
|
/^[\w.-]+:[A-Z]+>\s+(?:db\.|rs\.|exit\b|(?:const|let|var|await)\b|show\s+(?:dbs?|collections|users|roles)|use\s+\w+|it\b)/i,
|
|||
|
|
/^(?:[\w.-]+\s+){0,5}\[[^\]]+\]\s+[\w.-]+>\s+(?:db\.|rs\.|exit\b|hel(?:p)?\b|print\s*\(|(?:const|let|var|await)\b|\d+\s*[-+*/]\s*\d*|show\s+(?:dbs?|collections|users|roles)|use\s+\w+|it\b)/i,
|
|||
|
|
/^(?:[\w.-]+\s+){1,5}[\w.-]+>\s+(?:db\.|rs\.|exit\b|hel(?:p)?\b|print\s*\(|(?:const|let|var|await)\b|\d+\s*[-+*/]\s*\d*|show\s+(?:dbs?|collections|users|roles)|use\s+\w+|it\b)/i,
|
|||
|
|
/^(?:trino|presto)(?::[\w.-]+){1,2}>\s/i,
|
|||
|
|
/^[\w.-]+@(?:[\w.-]+|\d{1,3}(?:\.\d{1,3}){3}):\d+>\s/i,
|
|||
|
|
/^(?:[\w.-]+|\d{1,3}(?:\.\d{1,3}){3})(?::\d+)(?:\[\d+\])?>\s/, // redis host:port> prompts
|
|||
|
|
/^MariaDB\s+\[[^\]]+\]>\s/i, // MariaDB [(none)]> prompts
|
|||
|
|
/^[\w.-]+=[#>]\s/, // postgres=# / postgres=> REPL prompts
|
|||
|
|
/^[\w.-]+[-'"][#>]\s/, // postgres-# / postgres'# continuation prompts
|
|||
|
|
/^[\w.-]+(?:\([^)]*|\*|!|\^|\$[^$]*\$)[#>]\s/, // postgres multiline prompt states
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
export const COMMON_SHELL_COMMANDS = new Set([
|
|||
|
|
"alias",
|
|||
|
|
"awk",
|
|||
|
|
"az",
|
|||
|
|
"brew",
|
|||
|
|
"bun",
|
|||
|
|
"bundle",
|
|||
|
|
"cargo",
|
|||
|
|
"cat",
|
|||
|
|
"cd",
|
|||
|
|
"chmod",
|
|||
|
|
"chown",
|
|||
|
|
"code",
|
|||
|
|
"composer",
|
|||
|
|
"cp",
|
|||
|
|
"curl",
|
|||
|
|
"docker",
|
|||
|
|
"echo",
|
|||
|
|
"emacs",
|
|||
|
|
"env",
|
|||
|
|
"export",
|
|||
|
|
"find",
|
|||
|
|
"gcloud",
|
|||
|
|
"gh",
|
|||
|
|
"git",
|
|||
|
|
"go",
|
|||
|
|
"gradle",
|
|||
|
|
"grep",
|
|||
|
|
"helm",
|
|||
|
|
"java",
|
|||
|
|
"javac",
|
|||
|
|
"kubectl",
|
|||
|
|
"less",
|
|||
|
|
"ls",
|
|||
|
|
"make",
|
|||
|
|
"mkdir",
|
|||
|
|
"mvn",
|
|||
|
|
"mv",
|
|||
|
|
"nano",
|
|||
|
|
"node",
|
|||
|
|
"npm",
|
|||
|
|
"npx",
|
|||
|
|
"nvim",
|
|||
|
|
"php",
|
|||
|
|
"pip",
|
|||
|
|
"pip3",
|
|||
|
|
"pnpm",
|
|||
|
|
"printf",
|
|||
|
|
"python",
|
|||
|
|
"python3",
|
|||
|
|
"rails",
|
|||
|
|
"rm",
|
|||
|
|
"rsync",
|
|||
|
|
"ruby",
|
|||
|
|
"rustc",
|
|||
|
|
"scp",
|
|||
|
|
"screen",
|
|||
|
|
"sed",
|
|||
|
|
"ssh",
|
|||
|
|
"sudo",
|
|||
|
|
"tail",
|
|||
|
|
"tar",
|
|||
|
|
"terraform",
|
|||
|
|
"tmux",
|
|||
|
|
"touch",
|
|||
|
|
"uv",
|
|||
|
|
"vi",
|
|||
|
|
"vim",
|
|||
|
|
"yarn",
|
|||
|
|
]);
|
|||
|
|
|
|||
|
|
/** Characters that commonly end a shell prompt */
|
|||
|
|
export const PROMPT_CHARS = new Set(["$", "#", "%", ">", "❯", "❮", "→", "➜", "➤", "⟩", "»", "›"]);
|