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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-forgeon",
3
- "version": "0.3.10",
3
+ "version": "0.3.11",
4
4
  "description": "Forgeon project generator CLI",
5
5
  "license": "MIT",
6
6
  "author": "Forgeon",
@@ -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,
@@ -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 import('file-type');
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,