create-forgeon 0.3.10 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -479,6 +479,13 @@ function assertFilesImageWiring(projectRoot) {
|
|
|
479
479
|
const filesTypes = fs.readFileSync(path.join(projectRoot, 'packages', 'files', 'src', 'files.types.ts'), 'utf8');
|
|
480
480
|
assert.match(filesTypes, /auditContext\?: \{/);
|
|
481
481
|
|
|
482
|
+
const filesImageService = fs.readFileSync(
|
|
483
|
+
path.join(projectRoot, 'packages', 'files-image', 'src', 'files-image.service.ts'),
|
|
484
|
+
'utf8',
|
|
485
|
+
);
|
|
486
|
+
assert.match(filesImageService, /loadFileTypeModule/);
|
|
487
|
+
assert.match(filesImageService, /new Function\('specifier', 'return import\(specifier\)'\)/);
|
|
488
|
+
|
|
482
489
|
const apiDockerfile = fs.readFileSync(path.join(projectRoot, 'apps', 'api', 'Dockerfile'), 'utf8');
|
|
483
490
|
assert.match(
|
|
484
491
|
apiDockerfile,
|
package/templates/module-presets/files-image/packages/files-image/src/files-image.service.ts
CHANGED
|
@@ -15,6 +15,10 @@ const MIME_TO_ALLOWED_EXTS: Record<string, string[]> = {
|
|
|
15
15
|
'image/webp': ['.webp'],
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
+
interface FileTypeModuleLike {
|
|
19
|
+
fileTypeFromBuffer(buffer: Buffer): Promise<{ mime: string; ext: string } | undefined>;
|
|
20
|
+
}
|
|
21
|
+
|
|
18
22
|
@Injectable()
|
|
19
23
|
export class FilesImageService {
|
|
20
24
|
private readonly logger = new Logger(FilesImageService.name);
|
|
@@ -228,7 +232,7 @@ export class FilesImageService {
|
|
|
228
232
|
}
|
|
229
233
|
|
|
230
234
|
private async detectFileType(buffer: Buffer): Promise<{ mime: string; ext: string } | null> {
|
|
231
|
-
const { fileTypeFromBuffer } = await
|
|
235
|
+
const { fileTypeFromBuffer } = await this.loadFileTypeModule();
|
|
232
236
|
const detected = await fileTypeFromBuffer(buffer);
|
|
233
237
|
if (!detected) {
|
|
234
238
|
return null;
|
|
@@ -302,6 +306,13 @@ export class FilesImageService {
|
|
|
302
306
|
}
|
|
303
307
|
}
|
|
304
308
|
|
|
309
|
+
private async loadFileTypeModule(): Promise<FileTypeModuleLike> {
|
|
310
|
+
const importModule = new Function('specifier', 'return import(specifier)') as (
|
|
311
|
+
specifier: string,
|
|
312
|
+
) => Promise<FileTypeModuleLike>;
|
|
313
|
+
return importModule('file-type');
|
|
314
|
+
}
|
|
315
|
+
|
|
305
316
|
private async validateImageShape(
|
|
306
317
|
buffer: Buffer,
|
|
307
318
|
detectedMimeType: string,
|