export const disallowDotName = /^\.{1,2}$/;
export const disallowSlash = /\//;
-
-const ERROR_MESSAGE = "Name cannot be '.' or '..' or contain '/' characters";
+export const disallowLeadingWhitespaces = /^\s+/;
+export const disallowTrailingWhitespaces = /\s+$/;
export const validName = (value: string) => {
return [disallowDotName, disallowSlash].find(aRule => value.match(aRule) !== null)
- ? ERROR_MESSAGE
+ ? "Name cannot be '.' or '..' or contain '/' characters"
: undefined;
};
? "Name cannot be '.' or '..'"
: undefined;
};
+
+export const validFileName = (value: string) => {
+ return [
+ disallowLeadingWhitespaces,
+ disallowTrailingWhitespaces
+ ].find(aRule => value.match(aRule) !== null)
+ ? `Leading/trailing whitespaces not allowed on '${value}'`
+ : undefined;
+};
+
+export const validFilePath = (filePath: string) => {
+ const errors = filePath.split('/').map(pathPart => {
+ if (pathPart === "") { return "Empty dir name not allowed"; }
+ return validNameAllowSlash(pathPart) || validFileName(pathPart);
+ });
+ return errors.filter(e => e !== undefined)[0];
+};
\ No newline at end of file