Skip to content

Commit 3ff9024

Browse files
committed
fix(common): used eval import
1 parent 63d28bf commit 3ff9024

File tree

6 files changed

+176
-44
lines changed

6 files changed

+176
-44
lines changed

package-lock.json

Lines changed: 130 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"express": "5.1.0",
6868
"fast-json-stringify": "6.0.1",
6969
"fast-safe-stringify": "2.1.1",
70-
"file-type-checker": "1.1.4",
70+
"file-type": "20.4.1",
7171
"iterare": "1.2.1",
7272
"object-hash": "3.0.0",
7373
"path-to-regexp": "8.2.0",

packages/common/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
},
1919
"license": "MIT",
2020
"dependencies": {
21-
"file-type-checker": "1.1.4",
21+
"file-type": "20.4.1",
2222
"iterare": "1.2.1",
2323
"tslib": "2.8.1",
2424
"uid": "2.0.2"

packages/common/pipes/file/file-type.validator.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1-
import * as fileTypeChecker from 'file-type-checker';
21
import { FileValidator } from './file-validator.interface';
32
import { FileTypeValidatorOptions, IFile } from './interfaces';
43

4+
const importEsmPackage = async (
5+
packageName: string,
6+
): Promise<typeof import('file-type')> =>
7+
// eslint-disable-next-line @typescript-eslint/no-implied-eval
8+
new Function(`return import('${packageName}')`)().then(
9+
(loadedModule: any) => loadedModule['default'] ?? loadedModule,
10+
);
11+
512
/**
613
* Defines the built-in FileTypeValidator. It validates incoming files by examining
714
* their magic numbers using the file-type package, providing more reliable file type validation
@@ -22,7 +29,7 @@ export class FileTypeValidator extends FileValidator<
2229
return `Validation failed (expected type is ${this.validationOptions.fileType})`;
2330
}
2431

25-
isValid(file?: IFile): boolean {
32+
async isValid(file?: IFile): Promise<boolean> {
2633
if (!this.validationOptions) {
2734
return true;
2835
}
@@ -40,10 +47,12 @@ export class FileTypeValidator extends FileValidator<
4047
}
4148

4249
try {
43-
const fileType = fileTypeChecker.detectFile(file.buffer);
50+
const { fileTypeFromBuffer } = await importEsmPackage('file-type');
51+
52+
const fileType = await fileTypeFromBuffer(file.buffer);
4453

4554
return (
46-
!!fileType && !!fileType.mimeType.match(this.validationOptions.fileType)
55+
!!fileType && !!fileType.mime.match(this.validationOptions.fileType)
4756
);
4857
} catch {
4958
return false;

0 commit comments

Comments
 (0)