Skip to content

Commit ef0d757

Browse files
Update dependencies (#721)
Co-authored-by: Sindre Sorhus <[email protected]>
1 parent 7fe5667 commit ef0d757

File tree

5 files changed

+62
-51
lines changed

5 files changed

+62
-51
lines changed

core.js

+8-9
Original file line numberDiff line numberDiff line change
@@ -535,16 +535,16 @@ export class FileTypeParser {
535535
// Use TextDecoder to decode the UTF-8 encoded data
536536
let xmlContent = new TextDecoder('utf-8').decode(fileData);
537537
const endPos = xmlContent.indexOf('.main+xml"');
538-
if (endPos >= 0) {
539-
xmlContent = xmlContent.slice(0, Math.max(0, endPos));
540-
const firstPos = xmlContent.lastIndexOf('"');
541-
const mimeType = xmlContent.slice(Math.max(0, firstPos + 1));
542-
fileType = getFileTypeFromMimeType(mimeType);
543-
} else {
538+
if (endPos === -1) {
544539
const mimeType = 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml';
545540
if (xmlContent.includes(`ContentType="${mimeType}"`)) {
546541
fileType = getFileTypeFromMimeType(mimeType);
547542
}
543+
} else {
544+
xmlContent = xmlContent.slice(0, Math.max(0, endPos));
545+
const firstPos = xmlContent.lastIndexOf('"');
546+
const mimeType = xmlContent.slice(Math.max(0, firstPos + 1));
547+
fileType = getFileTypeFromMimeType(mimeType);
548548
}
549549
},
550550
stop: true,
@@ -821,9 +821,9 @@ export class FileTypeParser {
821821
}
822822

823823
const re = await readElement();
824-
const docType = await readChildren(re.len);
824+
const documentType = await readChildren(re.len);
825825

826-
switch (docType) {
826+
switch (documentType) {
827827
case 'webm':
828828
return {
829829
ext: 'webm',
@@ -1640,7 +1640,6 @@ export class FileTypeParser {
16401640
};
16411641
}
16421642
};
1643-
16441643
// Detections with limited supporting data, resulting in a higher likelihood of false positives
16451644
detectImprecise = async tokenizer => {
16461645
this.buffer = new Uint8Array(reasonableDetectionSizeInBytes);

index.d.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,14 @@ Typings for Node.js specific entry point.
44

55
import type {Readable as NodeReadableStream} from 'node:stream';
66
import type {AnyWebByteStream} from 'strtok3';
7-
import type {FileTypeResult, StreamOptions, AnyWebReadableStream, Detector, AnyWebReadableByteStreamWithFileType} from './core.js';
8-
import {FileTypeParser as DefaultFileTypeParser} from './core.js';
7+
import {
8+
type FileTypeResult,
9+
type StreamOptions,
10+
type AnyWebReadableStream,
11+
type Detector,
12+
type AnyWebReadableByteStreamWithFileType,
13+
FileTypeParser as DefaultFileTypeParser,
14+
} from './core.js';
915

1016
export type ReadableStreamWithFileType = NodeReadableStream & {
1117
readonly fileType?: FileTypeResult;

index.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,10 @@ export async function fileTypeStream(readableStream, options = {}) {
7777
return new FileTypeParser(options).toDetectionStream(readableStream, options);
7878
}
7979

80-
export {fileTypeFromTokenizer, fileTypeFromBuffer, fileTypeFromBlob, supportedMimeTypes, supportedExtensions} from './core.js';
80+
export {
81+
fileTypeFromTokenizer,
82+
fileTypeFromBuffer,
83+
fileTypeFromBlob,
84+
supportedMimeTypes,
85+
supportedExtensions,
86+
} from './core.js';

package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -239,17 +239,17 @@
239239
"@tokenizer/inflate": "^0.2.6",
240240
"strtok3": "^10.0.1",
241241
"token-types": "^6.0.0",
242-
"uint8array-extras": "^1.3.0"
242+
"uint8array-extras": "^1.4.0"
243243
},
244244
"devDependencies": {
245245
"@tokenizer/token": "^0.3.0",
246-
"@types/node": "^20.10.7",
246+
"@types/node": "^22.10.5",
247247
"ava": "^6.0.1",
248-
"commonmark": "^0.30.0",
248+
"commonmark": "^0.31.2",
249249
"get-stream": "^9.0.1",
250250
"noop-stream": "^1.0.0",
251-
"tsd": "^0.30.3",
252-
"xo": "^0.56.0"
251+
"tsd": "^0.31.2",
252+
"xo": "^0.60.0"
253253
},
254254
"xo": {
255255
"envs": [

test.js

+34-34
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const missingTests = new Set([
3030
const [nodeMajorVersion] = process.versions.node.split('.').map(Number);
3131
const nodeVersionSupportingByteBlobStream = 20;
3232

33-
const types = [...supportedExtensions].filter(ext => !missingTests.has(ext));
33+
const types = [...supportedExtensions].filter(extension => !missingTests.has(extension));
3434

3535
// Define an entry here only if the fixture has a different
3636
// name than `fixture` or if you want multiple fixtures
@@ -307,31 +307,31 @@ async function checkFile(t, type, filePath) {
307307
t.is(typeof mime, 'string');
308308
}
309309

310-
async function testFromFile(t, ext, name) {
311-
const file = path.join(__dirname, 'fixture', `${(name ?? 'fixture')}.${ext}`);
312-
return checkFile(t, ext, file);
310+
async function testFromFile(t, extension, name) {
311+
const file = path.join(__dirname, 'fixture', `${(name ?? 'fixture')}.${extension}`);
312+
return checkFile(t, extension, file);
313313
}
314314

315-
async function testFromBuffer(t, ext, name) {
316-
const fixtureName = `${(name ?? 'fixture')}.${ext}`;
315+
async function testFromBuffer(t, extension, name) {
316+
const fixtureName = `${(name ?? 'fixture')}.${extension}`;
317317

318318
const file = path.join(__dirname, 'fixture', fixtureName);
319319
const chunk = fs.readFileSync(file);
320-
await checkBufferLike(t, ext, chunk);
321-
await checkBufferLike(t, ext, new Uint8Array(chunk));
322-
await checkBufferLike(t, ext, chunk.buffer.slice(chunk.byteOffset, chunk.byteOffset + chunk.byteLength));
320+
await checkBufferLike(t, extension, chunk);
321+
await checkBufferLike(t, extension, new Uint8Array(chunk));
322+
await checkBufferLike(t, extension, chunk.buffer.slice(chunk.byteOffset, chunk.byteOffset + chunk.byteLength));
323323
}
324324

325-
async function testFromBlob(t, ext, name) {
326-
const fixtureName = `${(name ?? 'fixture')}.${ext}`;
325+
async function testFromBlob(t, extension, name) {
326+
const fixtureName = `${(name ?? 'fixture')}.${extension}`;
327327

328328
const file = path.join(__dirname, 'fixture', fixtureName);
329329
const chunk = fs.readFileSync(file);
330-
await checkBlobLike(t, ext, chunk);
330+
await checkBlobLike(t, extension, chunk);
331331
}
332332

333-
async function testFalsePositive(t, ext, name) {
334-
const file = path.join(__dirname, 'fixture', `${name}.${ext}`);
333+
async function testFalsePositive(t, extension, name) {
334+
const file = path.join(__dirname, 'fixture', `${name}.${extension}`);
335335

336336
await t.is(await fileTypeFromFile(file), undefined);
337337

@@ -341,22 +341,22 @@ async function testFalsePositive(t, ext, name) {
341341
t.is(await fileTypeFromBuffer(chunk.buffer), undefined);
342342
}
343343

344-
async function testFileNodeFromStream(t, ext, name) {
345-
const filename = `${(name ?? 'fixture')}.${ext}`;
344+
async function testFileNodeFromStream(t, extension, name) {
345+
const filename = `${(name ?? 'fixture')}.${extension}`;
346346
const file = path.join(__dirname, 'fixture', filename);
347347
const fileType = await fileTypeNodeFromStream(fs.createReadStream(file));
348348

349349
t.truthy(fileType, `identify ${filename}`);
350-
t.is(fileType.ext, ext, 'fileType.ext');
350+
t.is(fileType.ext, extension, 'fileType.ext');
351351
t.is(typeof fileType.mime, 'string', 'fileType.mime');
352352
}
353353

354354
async function getStreamAsUint8Array(stream) {
355355
return new Uint8Array(await getStreamAsArrayBuffer(stream));
356356
}
357357

358-
async function testStreamWithNodeStream(t, ext, name) {
359-
const fixtureName = `${(name ?? 'fixture')}.${ext}`;
358+
async function testStreamWithNodeStream(t, extension, name) {
359+
const fixtureName = `${(name ?? 'fixture')}.${extension}`;
360360
const file = path.join(__dirname, 'fixture', fixtureName);
361361

362362
const readableStream = await fileTypeStream(fs.createReadStream(file));
@@ -367,8 +367,8 @@ async function testStreamWithNodeStream(t, ext, name) {
367367
t.true(areUint8ArraysEqual(bufferA, bufferB));
368368
}
369369

370-
async function testStreamWithWebStream(t, ext, name) {
371-
const fixtureName = `${(name ?? 'fixture')}.${ext}`;
370+
async function testStreamWithWebStream(t, extension, name) {
371+
const fixtureName = `${(name ?? 'fixture')}.${extension}`;
372372
const file = path.join(__dirname, 'fixture', fixtureName);
373373
// Read the file into a buffer
374374
const fileBuffer = await readFile(file);
@@ -387,7 +387,7 @@ test('Test suite must be able to detect Node.js major version', t => {
387387

388388
let i = 0;
389389
for (const type of types) {
390-
if (Object.prototype.hasOwnProperty.call(names, type)) {
390+
if (Object.hasOwn(names, type)) {
391391
for (const name of names[type]) {
392392
const fixtureName = `${name}.${type}`;
393393
const _test = failingFixture.has(fixtureName) ? test.failing : test;
@@ -413,7 +413,7 @@ for (const type of types) {
413413
test(`${type} ${i++} .fileTypeStream() - identical streams`, testStreamWithNodeStream, type);
414414
}
415415

416-
if (Object.prototype.hasOwnProperty.call(falsePositives, type)) {
416+
if (Object.hasOwn(falsePositives, type)) {
417417
for (const falsePositiveFile of falsePositives[type]) {
418418
test(`false positive - ${type} ${i++}`, testFalsePositive, type, falsePositiveFile);
419419
}
@@ -518,13 +518,13 @@ test('validate the repo has all extensions and mimes in sync', t => {
518518
// File: core.js (base truth)
519519
function readIndexJS() {
520520
const core = fs.readFileSync('core.js', {encoding: 'utf8'});
521-
const extArray = core.match(/(?<=ext:\s')(.*)(?=',)/g);
521+
const extensionArray = core.match(/(?<=ext:\s')(.*)(?=',)/g);
522522
const mimeArray = core.match(/(?<=mime:\s')(.*)(?=')/g);
523-
const exts = new Set(extArray);
523+
const extensions = new Set(extensionArray);
524524
const mimes = new Set(mimeArray);
525525

526526
return {
527-
exts,
527+
exts: extensions,
528528
mimes,
529529
};
530530
}
@@ -557,15 +557,15 @@ test('validate the repo has all extensions and mimes in sync', t => {
557557
'webassembly',
558558
]);
559559

560-
const extArray = keywords.filter(keyword => !allowedExtras.has(keyword));
561-
return extArray;
560+
const extensionArray = keywords.filter(keyword => !allowedExtras.has(keyword));
561+
return extensionArray;
562562
}
563563

564564
// File: readme.md
565565
function readReadmeMD() {
566566
const index = fs.readFileSync('readme.md', {encoding: 'utf8'});
567-
const extArray = index.match(/(?<=-\s\[`)(.*)(?=`)/g);
568-
return extArray;
567+
const extensionArray = index.match(/(?<=-\s\[`)(.*)(?=`)/g);
568+
return extensionArray;
569569
}
570570

571571
// Helpers
@@ -601,13 +601,13 @@ test('validate the repo has all extensions and mimes in sync', t => {
601601
}
602602

603603
// Test runner
604-
function validate(found, baseTruth, fileName, extOrMime) {
604+
function validate(found, baseTruth, fileName, extensionOrMime) {
605605
const duplicates = findDuplicates(found);
606606
const extras = findExtras(found, baseTruth);
607607
const missing = findMissing(found, baseTruth);
608-
t.is(duplicates.length, 0, `Found duplicate ${extOrMime}: ${duplicates} in ${fileName}.`);
609-
t.is(extras.length, 0, `Extra ${extOrMime}: ${extras} in ${fileName}.`);
610-
t.is(missing.length, 0, `Missing ${extOrMime}: ${missing} in ${fileName}.`);
608+
t.is(duplicates.length, 0, `Found duplicate ${extensionOrMime}: ${duplicates} in ${fileName}.`);
609+
t.is(extras.length, 0, `Extra ${extensionOrMime}: ${extras} in ${fileName}.`);
610+
t.is(missing.length, 0, `Missing ${extensionOrMime}: ${missing} in ${fileName}.`);
611611
}
612612

613613
// Get the base truth of extensions and mimes supported from core.js

0 commit comments

Comments
 (0)