1- import * as gif from './utils/gif' ;
2- import * as webp from './utils/webp' ;
3- import * as png from './utils/png' ;
4- import type { NodeBufferOrArrayBuffer , StandardisedBuffer } from './types' ;
1+ import * as gif from './utils/gif.mjs' ;
2+ import * as webp from './utils/webp.mjs' ;
3+ import * as png from './utils/png.mjs' ;
54
6- const toStandardisedBuffer = (
7- buffer : NodeBufferOrArrayBuffer ,
8- ) : StandardisedBuffer => {
5+ /** @typedef {import('./types.mjs').NodeBufferOrArrayBuffer } NodeBufferOrArrayBuffer */
6+ /** @typedef {import('./types.mjs').StandardisedBuffer } StandardisedBuffer */
7+
8+ /**
9+ * Converts Node.js/Web buffer into an unified one with a standardized API
10+ * @param {NodeBufferOrArrayBuffer } buffer
11+ * @returns {StandardisedBuffer }
12+ */
13+ const toStandardisedBuffer = ( buffer ) => {
914 if ( 'subarray' in buffer ) {
1015 return {
1116 read : ( begin , end , { encoding = 'utf8' } = { } ) =>
@@ -17,18 +22,21 @@ const toStandardisedBuffer = (
1722 }
1823
1924 const decoder = new TextDecoder ( ) ;
20- const array = new Uint8Array ( buffer as ArrayBuffer ) ;
25+ const array = new Uint8Array ( /** @type { ArrayBuffer } */ ( buffer ) ) ;
2126 return {
2227 read : ( begin , end , { encoding = 'utf8' } = { } ) => {
2328 if ( encoding === 'utf8' )
24- return decoder . decode ( buffer . slice ( begin , end ) as ArrayBuffer ) ;
25- return [ ...array . slice ( begin , end ) ]
29+ return decoder . decode (
30+ /** @type {ArrayBuffer } */ ( buffer . slice ( begin , end ) ) ,
31+ ) ;
32+ return Array . from ( array . slice ( begin , end ) )
2633 . map ( ( x ) => x . toString ( 16 ) . padStart ( 2 , '0' ) )
2734 . join ( '' ) ;
2835 } ,
2936 readUInt32BE : ( offset ) =>
3037 new DataView (
31- buffer as ArrayBuffer ,
38+ /** @type {ArrayBuffer } */
39+ ( buffer ) ,
3240 array . byteOffset ,
3341 array . byteLength ,
3442 ) . getUint32 ( offset ) ,
@@ -39,8 +47,9 @@ const toStandardisedBuffer = (
3947
4048/**
4149 * Checks if buffer contains animated image
50+ * @param {NodeBufferOrArrayBuffer } buffer
4251 */
43- export default function isAnimated ( buffer : NodeBufferOrArrayBuffer ) {
52+ export default function isAnimated ( buffer ) {
4453 const standardisedBuffer = toStandardisedBuffer ( buffer ) ;
4554 if ( gif . isGIF ( standardisedBuffer ) ) return gif . isAnimated ( standardisedBuffer ) ;
4655 if ( png . isPNG ( standardisedBuffer ) ) return png . isAnimated ( standardisedBuffer ) ;
0 commit comments