gitlab_monitor/utils/pathTools.ts
zhaoyingbo 92fa30ef3d
All checks were successful
CI Monitor MIflow / build-image (push) Successful in 2m42s
feat: 支持初步的CR
2024-08-12 12:24:45 +00:00

52 lines
1.8 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 创建一个路径检查工具,用于精确匹配和前缀匹配路径。
* @param {string} url - 要检查的基础 URL。
* @param {string} [prefix] - 可选的路径前缀。
* @returns {object} 包含路径检查方法的对象。
*/
export const makeCheckPathTool = (url: string, prefix?: string) => {
const { pathname } = new URL(url)
const makePath = (path: string) => `${prefix || ""}${path}`
return {
/**
* 检查路径是否与基础 URL 的路径精确匹配。
* @param {string} path - 要检查的路径。
* @returns {boolean} 如果路径精确匹配则返回 true否则返回 false。
*/
exactCheck: (path: string) => {
return pathname === makePath(path)
},
/**
* 检查路径是否以基础 URL 的路径为前缀。
* @param {string} path - 要检查的路径。
* @returns {boolean} 如果路径以基础 URL 的路径为前缀则返回 true否则返回 false。
*/
startsWithCheck: (path: string) => pathname.startsWith(makePath(path)),
/**
* 检查完整路径是否与基础 URL 的路径精确匹配。
* @param {string} path - 要检查的路径。
* @returns {boolean} 如果完整路径与基础 URL 的路径精确匹配则返回 true否则返回 false。
*/
fullCheck: (path: string) => pathname === path,
}
}
/**
* 裁剪路径字符串如果路径长度超过20个字符则只保留最后两级目录。
*
* @param {string} path - 要处理的路径字符串。
* @returns {string} - 裁剪后的路径字符串如果长度不超过20个字符则返回原路径。
*/
export const shortenPath = (path: string): string => {
if (path.length <= 20) {
return path
}
const parts = path.split("/")
if (parts.length <= 2) {
return path
}
return `.../${parts[parts.length - 2]}/${parts[parts.length - 1]}`
}