file-type 17.1.3 → 17.1.6

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/core.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import {Readable as ReadableStream} from 'node:stream';
2
- import {ITokenizer} from 'strtok3/lib/core';
2
+ import {ITokenizer} from 'strtok3';
3
3
 
4
4
  export type FileExtension =
5
5
  | 'jpg'
@@ -364,7 +364,7 @@ export interface StreamOptions {
364
364
  }
365
365
 
366
366
  /**
367
- Returns a `Promise` which resolves to the original readable stream argument, but with an added `fileType` property, which is an object like the one returned from `FileType.fromFile()`.
367
+ Returns a `Promise` which resolves to the original readable stream argument, but with an added `fileType` property, which is an object like the one returned from `fileTypeFromFile()`.
368
368
 
369
369
  This method can be handy to put in between a stream, but it comes with a price.
370
370
  Internally `stream()` builds up a buffer of `sampleSize` bytes, used as a sample, to determine the file type.
@@ -375,7 +375,7 @@ A smaller sample size will result in lower probability of the best file type det
375
375
  **Note:** Requires Node.js 14 or later.
376
376
 
377
377
  @param readableStream - A [readable stream](https://nodejs.org/api/stream.html#stream_class_stream_readable) containing a file to examine.
378
- @returns A `Promise` which resolves to the original readable stream argument, but with an added `fileType` property, which is an object like the one returned from `FileType.fromFile()`.
378
+ @returns A `Promise` which resolves to the original readable stream argument, but with an added `fileType` property, which is an object like the one returned from `fileTypeFromFile()`.
379
379
 
380
380
  @example
381
381
  ```
package/core.js CHANGED
@@ -146,6 +146,12 @@ class FileTypeParser {
146
146
 
147
147
  // -- 3-byte signatures --
148
148
 
149
+ if (this.check([0xEF, 0xBB, 0xBF])) { // UTF-8-BOM
150
+ // Strip off UTF-8-BOM
151
+ this.tokenizer.ignore(3);
152
+ return this.parse(tokenizer);
153
+ }
154
+
149
155
  if (this.check([0x47, 0x49, 0x46])) {
150
156
  return {
151
157
  ext: 'gif',
@@ -1016,13 +1022,6 @@ class FileTypeParser {
1016
1022
  };
1017
1023
  }
1018
1024
 
1019
- if (this.check([0xEF, 0xBB, 0xBF]) && this.checkString('<?xml', {offset: 3})) { // UTF-8-BOM
1020
- return {
1021
- ext: 'xml',
1022
- mime: 'application/xml',
1023
- };
1024
- }
1025
-
1026
1025
  // -- 9-byte signatures --
1027
1026
 
1028
1027
  if (this.check([0x49, 0x49, 0x52, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x18])) {
@@ -1160,14 +1159,15 @@ class FileTypeParser {
1160
1159
  };
1161
1160
  }
1162
1161
 
1163
- if (
1164
- this.check([0xFE, 0xFF, 0, 60, 0, 63, 0, 120, 0, 109, 0, 108]) // UTF-16-BOM-LE
1165
- || this.check([0xFF, 0xFE, 60, 0, 63, 0, 120, 0, 109, 0, 108, 0]) // UTF-16-BOM-LE
1166
- ) {
1167
- return {
1168
- ext: 'xml',
1169
- mime: 'application/xml',
1170
- };
1162
+ if (this.check([0xFE, 0xFF])) { // UTF-16-BOM-LE
1163
+ if (this.check([0, 60, 0, 63, 0, 120, 0, 109, 0, 108], {offset: 2})) {
1164
+ return {
1165
+ ext: 'xml',
1166
+ mime: 'application/xml',
1167
+ };
1168
+ }
1169
+
1170
+ return undefined; // Some unknown text based format
1171
1171
  }
1172
1172
 
1173
1173
  // -- Unsafe signatures --
@@ -1361,11 +1361,22 @@ class FileTypeParser {
1361
1361
  };
1362
1362
  }
1363
1363
 
1364
- if (this.check([0xFF, 0xFE, 0xFF, 0x0E, 0x53, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x74, 0x00, 0x63, 0x00, 0x68, 0x00, 0x55, 0x00, 0x70, 0x00, 0x20, 0x00, 0x4D, 0x00, 0x6F, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6C, 0x00])) {
1365
- return {
1366
- ext: 'skp',
1367
- mime: 'application/vnd.sketchup.skp',
1368
- };
1364
+ if (this.check([0xFF, 0xFE])) { // UTF-16-BOM-BE
1365
+ if (this.check([60, 0, 63, 0, 120, 0, 109, 0, 108, 0], {offset: 2})) {
1366
+ return {
1367
+ ext: 'xml',
1368
+ mime: 'application/xml',
1369
+ };
1370
+ }
1371
+
1372
+ if (this.check([0xFF, 0x0E, 0x53, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x74, 0x00, 0x63, 0x00, 0x68, 0x00, 0x55, 0x00, 0x70, 0x00, 0x20, 0x00, 0x4D, 0x00, 0x6F, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6C, 0x00], {offset: 2})) {
1373
+ return {
1374
+ ext: 'skp',
1375
+ mime: 'application/vnd.sketchup.skp',
1376
+ };
1377
+ }
1378
+
1379
+ return undefined; // Some text based format
1369
1380
  }
1370
1381
 
1371
1382
  if (this.checkString('-----BEGIN PGP MESSAGE-----')) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "file-type",
3
- "version": "17.1.3",
3
+ "version": "17.1.6",
4
4
  "description": "Detect the file type of a Buffer/Uint8Array/ArrayBuffer",
5
5
  "license": "MIT",
6
6
  "repository": "sindresorhus/file-type",
@@ -197,7 +197,7 @@
197
197
  ],
198
198
  "dependencies": {
199
199
  "readable-web-to-node-stream": "^3.0.2",
200
- "strtok3": "^7.0.0-alpha.7",
200
+ "strtok3": "^7.0.0-alpha.9",
201
201
  "token-types": "^5.0.0-alpha.2"
202
202
  },
203
203
  "devDependencies": {
package/readme.md CHANGED
@@ -141,7 +141,7 @@ Detect the file type of a `Buffer`, `Uint8Array`, or `ArrayBuffer`.
141
141
 
142
142
  The file type is detected by checking the [magic number](https://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files) of the buffer.
143
143
 
144
- If file access is available, it is recommended to use `FileType.fromFile()` instead.
144
+ If file access is available, it is recommended to use `fileTypeFromFile()` instead.
145
145
 
146
146
  Returns a `Promise` for an object with the detected file type and MIME type:
147
147
 
@@ -282,7 +282,7 @@ A file source implementing the [tokenizer interface](https://github.com/Borewit/
282
282
 
283
283
  ### fileTypeStream(readableStream, options?)
284
284
 
285
- Returns a `Promise` which resolves to the original readable stream argument, but with an added `fileType` property, which is an object like the one returned from `FileType.fromFile()`.
285
+ Returns a `Promise` which resolves to the original readable stream argument, but with an added `fileType` property, which is an object like the one returned from `fileTypeFromFile()`.
286
286
 
287
287
  This method can be handy to put in between a stream, but it comes with a price.
288
288
  Internally `stream()` builds up a buffer of `sampleSize` bytes, used as a sample, to determine the file type.