Skip to content

Commit

Permalink
Require Node.js 12.20 and move to ESM (#472)
Browse files Browse the repository at this point in the history
  • Loading branch information
sindresorhus committed Jul 24, 2021
1 parent dcd7c80 commit 826b4ad
Show file tree
Hide file tree
Showing 14 changed files with 1,198 additions and 1,257 deletions.
3 changes: 1 addition & 2 deletions .github/workflows/main.yml
Expand Up @@ -13,10 +13,9 @@ jobs:
- 16
- 14
- 12
- 10
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
- uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- run: npm install
Expand Down
50 changes: 22 additions & 28 deletions browser.d.ts
@@ -1,50 +1,44 @@
/// <reference lib="dom"/>
import * as core from './core';

export type FileTypeResult = core.FileTypeResult;
export type FileExtension = core.FileExtension;
export type MimeType = core.MimeType;
import {FileTypeResult} from './core.js';

/**
Determine file type from a [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream).
```
import FileType = require('file-type/browser');
import {fileTypeFromStream} from 'file-type/browser';
const url = 'https://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg';
(async () => {
const response = await fetch(url);
const fileType = await FileType.fromStream(response.body);
const response = await fetch(url);
const fileType = await fileTypeFromStream(response.body);
console.log(fileType);
//=> {ext: 'jpg', mime: 'image/jpeg'}
})();
console.log(fileType);
//=> {ext: 'jpg', mime: 'image/jpeg'}
```
*/
export declare function fromStream(stream: ReadableStream): Promise<core.FileTypeResult | undefined>;
export declare function fileTypeFromStream(stream: ReadableStream): Promise<FileTypeResult | undefined>;

/**
Determine file type from a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob).
```
import FileType = require('file-type/browser');
import {fileTypeFromBlob} from 'file-type/browser';
(async () => {
const blob = new Blob(['<?xml version="1.0" encoding="ISO-8859-1" ?>'], {
type: 'plain/text',
endings: 'native'
});
const blob = new Blob(['<?xml version="1.0" encoding="ISO-8859-1" ?>'], {
type: 'plain/text',
endings: 'native'
});
console.log(await FileType.fromBlob(blob));
//=> {ext: 'txt', mime: 'plain/text'}
})();
console.log(await fileTypeFromBlob(blob));
//=> {ext: 'txt', mime: 'plain/text'}
```
*/
export declare function fromBlob(blob: Blob): Promise<core.FileTypeResult | undefined>;
export declare function fileTypeFromBlob(blob: Blob): Promise<FileTypeResult | undefined>;

export {
fromBuffer,
extensions,
mimeTypes
} from './core';
fileTypeFromBuffer,
supportedExtensions,
supportedMimeTypes,
FileTypeResult,
FileExtension,
MimeType,
} from './core.js';
39 changes: 20 additions & 19 deletions browser.js
@@ -1,21 +1,9 @@
'use strict';
const {ReadableWebToNodeStream} = require('readable-web-to-node-stream');
const core = require('./core');

async function fromStream(stream) {
const readableWebToNodeStream = new ReadableWebToNodeStream(stream);
const fileType = await core.fromStream(readableWebToNodeStream);
await readableWebToNodeStream.close();
return fileType;
}

async function fromBlob(blob) {
const buffer = await blobToArrayBuffer(blob);
return core.fromBuffer(Buffer.from(buffer));
}
import {ReadableWebToNodeStream} from 'readable-web-to-node-stream';
import {fileTypeFromBuffer, fileTypeFromStream as coreFileTypeFromStream} from './core.js';

/**
Convert Blobs to ArrayBuffer.
@param {Blob} blob - Web API Blob.
@returns {Promise<ArrayBuffer>}
*/
Expand Down Expand Up @@ -43,7 +31,20 @@ function blobToArrayBuffer(blob) {
});
}

Object.assign(module.exports, core, {
fromStream,
fromBlob
});
export async function fileTypeFromStream(stream) {
const readableWebToNodeStream = new ReadableWebToNodeStream(stream);
const fileType = await coreFileTypeFromStream(readableWebToNodeStream);
await readableWebToNodeStream.close();
return fileType;
}

export async function fileTypeFromBlob(blob) {
const buffer = await blobToArrayBuffer(blob);
return fileTypeFromBuffer(Buffer.from(buffer));
}

export {
fileTypeFromTokenizer,
fileTypeFromBuffer,
fileTypeStream,
} from './core.js';

0 comments on commit 826b4ad

Please sign in to comment.