2025-10-15 10:12:44 +03:00

72 lines
2.0 KiB
Go

package tsbaseline
import (
"regexp"
"strings"
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/tspath"
)
var (
lineDelimiter = regexp.MustCompile("\r?\n")
nonWhitespace = regexp.MustCompile(`\S`)
tsExtension = regexp.MustCompile(`\.tsx?$`)
testPathCharacters = regexp.MustCompile(`[\^<>:"|?*%]`)
testPathDotDot = regexp.MustCompile(`\.\.\/`)
)
var (
libFolder = "built/local/"
builtFolder = "/.ts"
)
var (
testPathPrefixReplacer = strings.NewReplacer(
"/.ts/", "",
"/.lib/", "",
"/.src/", "",
"bundled:///libs/", "",
"file:///./ts/", "file:///",
"file:///./lib/", "file:///",
"file:///./src/", "file:///",
)
testPathTrailingReplacerTrailingSeparator = strings.NewReplacer(
"/.ts/", "/",
"/.lib/", "/",
"/.src/", "/",
"bundled:///libs/", "/",
"file:///./ts/", "file:///",
"file:///./lib/", "file:///",
"file:///./src/", "file:///",
)
)
func removeTestPathPrefixes(text string, retainTrailingDirectorySeparator bool) string {
if retainTrailingDirectorySeparator {
return testPathTrailingReplacerTrailingSeparator.Replace(text)
}
return testPathPrefixReplacer.Replace(text)
}
func isDefaultLibraryFile(filePath string) bool {
fileName := tspath.GetBaseFileName(filePath)
return strings.HasPrefix(fileName, "lib.") && strings.HasSuffix(fileName, tspath.ExtensionDts)
}
func isBuiltFile(filePath string) bool {
return strings.HasPrefix(filePath, libFolder) || strings.HasPrefix(filePath, tspath.EnsureTrailingDirectorySeparator(builtFolder))
}
func isTsConfigFile(path string) bool {
// !!! fix to check for just prefixes/suffixes
return strings.Contains(path, "tsconfig") && strings.Contains(path, "json")
}
func sanitizeTestFilePath(name string) string {
path := testPathCharacters.ReplaceAllString(name, "_")
path = tspath.NormalizeSlashes(path)
path = testPathDotDot.ReplaceAllString(path, "__dotdot/")
path = string(tspath.ToPath(path, "", false /*useCaseSensitiveFileNames*/))
return strings.TrimPrefix(path, "/")
}