Loosen filename test
This commit is contained in:
+1
-1
@@ -25,7 +25,7 @@
|
|||||||
{
|
{
|
||||||
"path": "pkg/dist-node/index.js",
|
"path": "pkg/dist-node/index.js",
|
||||||
"webpack": false,
|
"webpack": false,
|
||||||
"limit": "4244 B"
|
"limit": "4293 B"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"@pika/pack": {
|
"@pika/pack": {
|
||||||
|
|||||||
@@ -81,14 +81,17 @@ export const isIterable = (
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check, if given argument is simple string, and presumably is is just file name
|
* Check, if given argument is simple string, and presumably is is just file name
|
||||||
* I hope no one will wants to use filename longer than 50 symbols :)
|
|
||||||
*/
|
*/
|
||||||
const fileNameRE = /^[\p{L}\w\s\(\).,-]+\.[A-Za-z0-9]+$/u // tslint:disable-line no-empty-character-class
|
const filenameRE = /.+\..+/
|
||||||
const MIN_FILE_NAME_LENGTH = 3
|
const filenameReservedRE = /[<>:"/\\|?*\u0000-\u001F]/g
|
||||||
const MAX_FILE_NAME_LENGTH = 50
|
const windowsReservedNameRE = /^(con|prn|aux|nul|com\d|lpt\d)$/i
|
||||||
|
const MAX_FILE_NAME_LENGTH = 255
|
||||||
export const isFileName = (x: Source | undefined | null) =>
|
export const isFileName = (x: Source | undefined | null) =>
|
||||||
isString(x) &&
|
isString(x) &&
|
||||||
!x.startsWith('file:') && // in ideal world there should be `!isFileUri(x)`, but TypeScript sucks here
|
|
||||||
x.length >= MIN_FILE_NAME_LENGTH &&
|
|
||||||
x.length <= MAX_FILE_NAME_LENGTH &&
|
x.length <= MAX_FILE_NAME_LENGTH &&
|
||||||
fileNameRE.test(x)
|
x !== '.' &&
|
||||||
|
x !== '..' &&
|
||||||
|
!x.startsWith('file:') && // in ideal world there should be `!isFileUri(x)`, but TypeScript sucks here
|
||||||
|
!filenameReservedRE.test(x) &&
|
||||||
|
!windowsReservedNameRE.test(x) &&
|
||||||
|
filenameRE.test(x)
|
||||||
|
|||||||
@@ -53,7 +53,8 @@ test('Test `isFileName` function', function () {
|
|||||||
expect(isFileName('Screenshot 2021-12-24 at 09.16.20.png')).toBe(true) // <-
|
expect(isFileName('Screenshot 2021-12-24 at 09.16.20.png')).toBe(true) // <-
|
||||||
expect(isFileName('.test.png')).toBe(true) // <-
|
expect(isFileName('.test.png')).toBe(true) // <-
|
||||||
expect(isFileName('.png')).toBe(false)
|
expect(isFileName('.png')).toBe(false)
|
||||||
expect(isFileName('🙀.png')).toBe(false)
|
expect(isFileName('🙀.png')).toBe(true) // <-
|
||||||
|
expect(isFileName('ces La esencia del cristianismo Dios es persona (jóvenes).docx')).toBe(true) // <-
|
||||||
expect(isFileName(url)).toBe(false)
|
expect(isFileName(url)).toBe(false)
|
||||||
expect(isFileName(array)).toBe(false)
|
expect(isFileName(array)).toBe(false)
|
||||||
expect(isFileName(map)).toBe(false)
|
expect(isFileName(map)).toBe(false)
|
||||||
|
|||||||
Reference in New Issue
Block a user