Skip to content

Commit

Permalink
Loosen filename test
Browse files Browse the repository at this point in the history
  • Loading branch information
victordidenko committed Jun 6, 2023
1 parent c299b63 commit d1d7bbb
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 9 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
{
"path": "pkg/dist-node/index.js",
"webpack": false,
"limit": "4244 B"
"limit": "4293 B"
}
],
"@pika/pack": {
Expand Down
17 changes: 10 additions & 7 deletions src/internal/source-checkers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,17 @@ export const isIterable = (

/**
* 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 MIN_FILE_NAME_LENGTH = 3
const MAX_FILE_NAME_LENGTH = 50
const filenameRE = /.+\..+/
const filenameReservedRE = /[<>:"/\\|?*\u0000-\u001F]/g
const windowsReservedNameRE = /^(con|prn|aux|nul|com\d|lpt\d)$/i
const MAX_FILE_NAME_LENGTH = 255
export const isFileName = (x: Source | undefined | null) =>
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 &&
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)
3 changes: 2 additions & 1 deletion test/internal/source-checkers.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ test('Test `isFileName` function', function () {
expect(isFileName('Screenshot 2021-12-24 at 09.16.20.png')).toBe(true) // <-
expect(isFileName('.test.png')).toBe(true) // <-
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(array)).toBe(false)
expect(isFileName(map)).toBe(false)
Expand Down

0 comments on commit d1d7bbb

Please sign in to comment.