music-metadata 8.2.0 → 9.0.0
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/README.md +152 -132
- package/lib/ParserFactory.d.ts +1 -1
- package/lib/ParserFactory.js +1 -2
- package/lib/aiff/AiffParser.js +3 -4
- package/lib/aiff/AiffToken.d.ts +2 -4
- package/lib/aiff/AiffToken.js +7 -7
- package/lib/apev2/APEv2Parser.d.ts +1 -1
- package/lib/apev2/APEv2Parser.js +10 -12
- package/lib/apev2/APEv2TagMapper.js +1 -1
- package/lib/apev2/APEv2Token.d.ts +1 -1
- package/lib/asf/AsfObject.d.ts +15 -17
- package/lib/asf/AsfObject.js +52 -46
- package/lib/asf/AsfParser.js +6 -8
- package/lib/asf/AsfTagMapper.js +1 -1
- package/lib/asf/AsfUtil.d.ts +1 -3
- package/lib/asf/AsfUtil.js +4 -5
- package/lib/asf/GUID.d.ts +4 -5
- package/lib/asf/GUID.js +14 -11
- package/lib/common/BasicParser.d.ts +1 -1
- package/lib/common/FourCC.d.ts +1 -1
- package/lib/common/FourCC.js +5 -3
- package/lib/common/MetadataCollector.d.ts +3 -3
- package/lib/common/MetadataCollector.js +7 -8
- package/lib/common/RandomFileReader.d.ts +0 -1
- package/lib/common/Util.d.ts +1 -1
- package/lib/common/Util.js +4 -3
- package/lib/core.d.ts +16 -8
- package/lib/core.js +19 -5
- package/lib/dsdiff/DsdiffParser.js +1 -1
- package/lib/dsdiff/DsdiffToken.d.ts +1 -1
- package/lib/dsf/DsfChunk.d.ts +1 -1
- package/lib/flac/FlacParser.d.ts +1 -1
- package/lib/flac/FlacParser.js +6 -4
- package/lib/id3v1/ID3v1Parser.js +6 -6
- package/lib/id3v2/AbstractID3Parser.d.ts +1 -1
- package/lib/id3v2/AbstractID3Parser.js +1 -1
- package/lib/id3v2/FrameParser.js +4 -3
- package/lib/id3v2/ID3v24TagMapper.d.ts +2 -3
- package/lib/id3v2/ID3v24TagMapper.js +14 -9
- package/lib/id3v2/ID3v2Parser.d.ts +1 -1
- package/lib/id3v2/ID3v2Parser.js +10 -17
- package/lib/id3v2/ID3v2Token.d.ts +1 -1
- package/lib/id3v2/ID3v2Token.js +2 -2
- package/lib/iff/index.d.ts +1 -1
- package/lib/index.d.ts +1 -2
- package/lib/index.js +1 -1
- package/lib/lyrics3/Lyrics3.js +1 -1
- package/lib/matroska/MatroskaDtd.js +12 -12
- package/lib/matroska/MatroskaParser.d.ts +1 -1
- package/lib/matroska/MatroskaParser.js +16 -20
- package/lib/matroska/types.d.ts +0 -1
- package/lib/mp4/Atom.d.ts +1 -1
- package/lib/mp4/AtomToken.d.ts +2 -3
- package/lib/mp4/AtomToken.js +2 -2
- package/lib/mp4/MP4Parser.js +20 -19
- package/lib/mp4/MP4TagMapper.js +1 -1
- package/lib/mpeg/ExtendedLameHeader.d.ts +1 -1
- package/lib/mpeg/MpegParser.js +4 -4
- package/lib/mpeg/ReplayGainDataFormat.d.ts +1 -1
- package/lib/mpeg/XingTag.d.ts +1 -2
- package/lib/musepack/index.js +1 -1
- package/lib/musepack/sv7/BitReader.d.ts +1 -1
- package/lib/musepack/sv7/StreamVersion7.d.ts +1 -1
- package/lib/musepack/sv7/StreamVersion7.js +1 -1
- package/lib/musepack/sv8/StreamVersion8.d.ts +1 -1
- package/lib/musepack/sv8/StreamVersion8.js +1 -1
- package/lib/ogg/Ogg.d.ts +2 -2
- package/lib/ogg/OggParser.d.ts +1 -1
- package/lib/ogg/OggParser.js +5 -5
- package/lib/ogg/opus/Opus.d.ts +1 -1
- package/lib/ogg/opus/Opus.js +6 -6
- package/lib/ogg/opus/OpusParser.d.ts +2 -3
- package/lib/ogg/opus/OpusParser.js +2 -2
- package/lib/ogg/speex/Speex.d.ts +1 -1
- package/lib/ogg/speex/Speex.js +13 -13
- package/lib/ogg/speex/SpeexParser.d.ts +1 -2
- package/lib/ogg/theora/Theora.d.ts +1 -1
- package/lib/ogg/theora/Theora.js +6 -6
- package/lib/ogg/theora/TheoraParser.d.ts +4 -5
- package/lib/ogg/theora/TheoraParser.js +4 -4
- package/lib/ogg/vorbis/Vorbis.d.ts +3 -4
- package/lib/ogg/vorbis/Vorbis.js +11 -12
- package/lib/ogg/vorbis/VorbisDecoder.js +1 -1
- package/lib/ogg/vorbis/VorbisParser.d.ts +6 -7
- package/lib/ogg/vorbis/VorbisParser.js +11 -11
- package/lib/riff/RiffChunk.d.ts +1 -1
- package/lib/riff/RiffChunk.js +2 -2
- package/lib/riff/RiffInfoTagMap.js +16 -16
- package/lib/type.d.ts +9 -11
- package/lib/wav/BwfChunk.d.ts +1 -1
- package/lib/wav/WaveChunk.d.ts +2 -3
- package/lib/wav/WaveChunk.js +8 -7
- package/lib/wav/WaveParser.js +2 -2
- package/lib/wavpack/WavPackParser.js +1 -1
- package/lib/wavpack/WavPackToken.d.ts +1 -1
- package/lib/wavpack/WavPackToken.js +1 -1
- package/package.json +29 -28
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import { IVorbisPicture } from './Vorbis.js';
|
|
3
2
|
import { IPageConsumer, IPageHeader } from '../Ogg.js';
|
|
4
3
|
import { IOptions } from '../../type.js';
|
|
@@ -17,10 +16,10 @@ export declare class VorbisParser implements IPageConsumer {
|
|
|
17
16
|
* @param header Ogg Page Header
|
|
18
17
|
* @param pageData Page data
|
|
19
18
|
*/
|
|
20
|
-
parsePage(header: IPageHeader, pageData: Buffer): void
|
|
21
|
-
flush(): void
|
|
22
|
-
parseUserComment(pageData: Buffer, offset: number): number
|
|
23
|
-
addTag(id: string, value: string | IVorbisPicture): void
|
|
19
|
+
parsePage(header: IPageHeader, pageData: Buffer): Promise<void>;
|
|
20
|
+
flush(): Promise<void>;
|
|
21
|
+
parseUserComment(pageData: Buffer, offset: number): Promise<number>;
|
|
22
|
+
addTag(id: string, value: string | IVorbisPicture): Promise<void>;
|
|
24
23
|
calculateDuration(header: IPageHeader): void;
|
|
25
24
|
/**
|
|
26
25
|
* Parse first Ogg/Vorbis page
|
|
@@ -28,9 +27,9 @@ export declare class VorbisParser implements IPageConsumer {
|
|
|
28
27
|
* @param pageData
|
|
29
28
|
*/
|
|
30
29
|
protected parseFirstPage(header: IPageHeader, pageData: Buffer): void;
|
|
31
|
-
protected parseFullPage(pageData: Buffer): void
|
|
30
|
+
protected parseFullPage(pageData: Buffer): Promise<void>;
|
|
32
31
|
/**
|
|
33
32
|
* Ref: https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-840005.2
|
|
34
33
|
*/
|
|
35
|
-
protected parseUserCommentList(pageData: Buffer, offset: number): void
|
|
34
|
+
protected parseUserCommentList(pageData: Buffer, offset: number): Promise<void>;
|
|
36
35
|
}
|
|
@@ -18,7 +18,7 @@ export class VorbisParser {
|
|
|
18
18
|
* @param header Ogg Page Header
|
|
19
19
|
* @param pageData Page data
|
|
20
20
|
*/
|
|
21
|
-
parsePage(header, pageData) {
|
|
21
|
+
async parsePage(header, pageData) {
|
|
22
22
|
if (header.headerType.firstPage) {
|
|
23
23
|
this.parseFirstPage(header, pageData);
|
|
24
24
|
}
|
|
@@ -33,7 +33,7 @@ export class VorbisParser {
|
|
|
33
33
|
// Flush page segments
|
|
34
34
|
if (this.pageSegments.length > 0) {
|
|
35
35
|
const fullPage = Buffer.concat(this.pageSegments);
|
|
36
|
-
this.parseFullPage(fullPage);
|
|
36
|
+
await this.parseFullPage(fullPage);
|
|
37
37
|
}
|
|
38
38
|
// Reset page segments
|
|
39
39
|
this.pageSegments = header.headerType.lastPage ? [] : [pageData];
|
|
@@ -43,16 +43,16 @@ export class VorbisParser {
|
|
|
43
43
|
this.calculateDuration(header);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
flush() {
|
|
47
|
-
this.parseFullPage(Buffer.concat(this.pageSegments));
|
|
46
|
+
async flush() {
|
|
47
|
+
await this.parseFullPage(Buffer.concat(this.pageSegments));
|
|
48
48
|
}
|
|
49
|
-
parseUserComment(pageData, offset) {
|
|
49
|
+
async parseUserComment(pageData, offset) {
|
|
50
50
|
const decoder = new VorbisDecoder(pageData, offset);
|
|
51
51
|
const tag = decoder.parseUserComment();
|
|
52
|
-
this.addTag(tag.key, tag.value);
|
|
52
|
+
await this.addTag(tag.key, tag.value);
|
|
53
53
|
return tag.len;
|
|
54
54
|
}
|
|
55
|
-
addTag(id, value) {
|
|
55
|
+
async addTag(id, value) {
|
|
56
56
|
if (id === 'METADATA_BLOCK_PICTURE' && (typeof value === 'string')) {
|
|
57
57
|
if (this.options.skipCovers) {
|
|
58
58
|
debug(`Ignore picture`);
|
|
@@ -64,7 +64,7 @@ export class VorbisParser {
|
|
|
64
64
|
else {
|
|
65
65
|
debug(`Push tag: id=${id}, value=${value}`);
|
|
66
66
|
}
|
|
67
|
-
this.metadata.addTag('vorbis', id, value);
|
|
67
|
+
await this.metadata.addTag('vorbis', id, value);
|
|
68
68
|
}
|
|
69
69
|
calculateDuration(header) {
|
|
70
70
|
if (this.metadata.format.sampleRate && header.absoluteGranulePosition >= 0) {
|
|
@@ -95,7 +95,7 @@ export class VorbisParser {
|
|
|
95
95
|
else
|
|
96
96
|
throw new Error('First Ogg page should be type 1: the identification header');
|
|
97
97
|
}
|
|
98
|
-
parseFullPage(pageData) {
|
|
98
|
+
async parseFullPage(pageData) {
|
|
99
99
|
// New page
|
|
100
100
|
const commonHeader = CommonHeader.get(pageData, 0);
|
|
101
101
|
debug('Parse full page: type=%s, byteLength=%s', commonHeader.packetType, pageData.byteLength);
|
|
@@ -110,7 +110,7 @@ export class VorbisParser {
|
|
|
110
110
|
/**
|
|
111
111
|
* Ref: https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-840005.2
|
|
112
112
|
*/
|
|
113
|
-
parseUserCommentList(pageData, offset) {
|
|
113
|
+
async parseUserCommentList(pageData, offset) {
|
|
114
114
|
const strLen = Token.UINT32_LE.get(pageData, offset);
|
|
115
115
|
offset += 4;
|
|
116
116
|
// const vendorString = new Token.StringType(strLen, 'utf-8').get(pageData, offset);
|
|
@@ -118,7 +118,7 @@ export class VorbisParser {
|
|
|
118
118
|
let userCommentListLength = Token.UINT32_LE.get(pageData, offset);
|
|
119
119
|
offset += 4;
|
|
120
120
|
while (userCommentListLength-- > 0) {
|
|
121
|
-
offset += this.parseUserComment(pageData, offset);
|
|
121
|
+
offset += (await this.parseUserComment(pageData, offset));
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
}
|
package/lib/riff/RiffChunk.d.ts
CHANGED
package/lib/riff/RiffChunk.js
CHANGED
|
@@ -7,9 +7,9 @@ export const Header = {
|
|
|
7
7
|
get: (buf, off) => {
|
|
8
8
|
return {
|
|
9
9
|
// Group-ID
|
|
10
|
-
chunkID:
|
|
10
|
+
chunkID: new Token.StringType(4, 'latin1').get(buf, off),
|
|
11
11
|
// Size
|
|
12
|
-
chunkSize: Token.UINT32_LE.get(buf, 4)
|
|
12
|
+
chunkSize: Token.UINT32_LE.get(buf, off + 4)
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
};
|
|
@@ -4,27 +4,27 @@ import { CommonTagMapper } from '../common/GenericTagMapper.js';
|
|
|
4
4
|
* Ref: http://owl.phy.queensu.ca/~phil/exiftool/TagNames/RIFF.html#Info
|
|
5
5
|
*/
|
|
6
6
|
export const riffInfoTagMap = {
|
|
7
|
-
IART: 'artist',
|
|
8
|
-
ICRD: 'date',
|
|
9
|
-
INAM: 'title',
|
|
7
|
+
IART: 'artist', // Artist
|
|
8
|
+
ICRD: 'date', // DateCreated
|
|
9
|
+
INAM: 'title', // Title
|
|
10
10
|
TITL: 'title',
|
|
11
|
-
IPRD: 'album',
|
|
11
|
+
IPRD: 'album', // Product
|
|
12
12
|
ITRK: 'track',
|
|
13
|
-
IPRT: 'track',
|
|
14
|
-
COMM: 'comment',
|
|
15
|
-
ICMT: 'comment',
|
|
13
|
+
IPRT: 'track', // Additional tag for track index
|
|
14
|
+
COMM: 'comment', // Comments
|
|
15
|
+
ICMT: 'comment', // Country
|
|
16
16
|
ICNT: 'releasecountry',
|
|
17
|
-
GNRE: 'genre',
|
|
18
|
-
IWRI: 'writer',
|
|
17
|
+
GNRE: 'genre', // Genre
|
|
18
|
+
IWRI: 'writer', // WrittenBy
|
|
19
19
|
RATE: 'rating',
|
|
20
20
|
YEAR: 'year',
|
|
21
|
-
ISFT: 'encodedby',
|
|
22
|
-
CODE: 'encodedby',
|
|
23
|
-
TURL: 'website',
|
|
24
|
-
IGNR: 'genre',
|
|
25
|
-
IENG: 'engineer',
|
|
26
|
-
ITCH: 'technician',
|
|
27
|
-
IMED: 'media',
|
|
21
|
+
ISFT: 'encodedby', // Software
|
|
22
|
+
CODE: 'encodedby', // EncodedBy
|
|
23
|
+
TURL: 'website', // URL,
|
|
24
|
+
IGNR: 'genre', // Genre
|
|
25
|
+
IENG: 'engineer', // Engineer
|
|
26
|
+
ITCH: 'technician', // Technician
|
|
27
|
+
IMED: 'media', // Original Media
|
|
28
28
|
IRPD: 'album' // Product, where the file was intended for
|
|
29
29
|
};
|
|
30
30
|
export class RiffInfoTagMapper extends CommonTagMapper {
|
package/lib/type.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { Buffer } from 'node:buffer';
|
|
3
1
|
import { GenericTagId, TagType } from './common/GenericTagTypes.js';
|
|
4
2
|
import { IFooter } from './apev2/APEv2Token.js';
|
|
5
3
|
import { TrackType } from './matroska/types.js';
|
|
@@ -15,7 +13,7 @@ export interface IPicture {
|
|
|
15
13
|
/**
|
|
16
14
|
* Image data
|
|
17
15
|
*/
|
|
18
|
-
data:
|
|
16
|
+
data: Uint8Array;
|
|
19
17
|
/**
|
|
20
18
|
* Optional description
|
|
21
19
|
*/
|
|
@@ -366,7 +364,7 @@ export interface IAudioTrack {
|
|
|
366
364
|
samplingFrequency?: number;
|
|
367
365
|
outputSamplingFrequency?: number;
|
|
368
366
|
channels?: number;
|
|
369
|
-
channelPositions?:
|
|
367
|
+
channelPositions?: Uint8Array;
|
|
370
368
|
bitDepth?: number;
|
|
371
369
|
}
|
|
372
370
|
export interface IVideoTrack {
|
|
@@ -378,7 +376,7 @@ export interface IVideoTrack {
|
|
|
378
376
|
displayHeight?: number;
|
|
379
377
|
displayUnit?: number;
|
|
380
378
|
aspectRatioType?: number;
|
|
381
|
-
colourSpace?:
|
|
379
|
+
colourSpace?: Uint8Array;
|
|
382
380
|
gammaValue?: number;
|
|
383
381
|
}
|
|
384
382
|
export interface ITrackInfo {
|
|
@@ -445,7 +443,7 @@ export interface IFormat {
|
|
|
445
443
|
/**
|
|
446
444
|
* 16-byte MD5 of raw audio
|
|
447
445
|
*/
|
|
448
|
-
readonly audioMD5?:
|
|
446
|
+
readonly audioMD5?: Uint8Array;
|
|
449
447
|
/**
|
|
450
448
|
* Chapters in audio stream
|
|
451
449
|
*/
|
|
@@ -587,11 +585,11 @@ export interface IRandomReader {
|
|
|
587
585
|
fileSize: number;
|
|
588
586
|
/**
|
|
589
587
|
* Read from a given position of an abstracted file or buffer.
|
|
590
|
-
* @param
|
|
591
|
-
* @param
|
|
592
|
-
* @param
|
|
593
|
-
* @param
|
|
588
|
+
* @param {Uint8Array} buffer the buffer that the data will be written to.
|
|
589
|
+
* @param {number} offset the offset in the buffer to start writing at.
|
|
590
|
+
* @param {number} length an integer specifying the number of bytes to read.
|
|
591
|
+
* @param {number} position an argument specifying where to begin reading from in the file.
|
|
594
592
|
* @return {Promise<number>} bytes read
|
|
595
593
|
*/
|
|
596
|
-
randomRead(buffer:
|
|
594
|
+
randomRead(buffer: Uint8Array, offset: number, length: number, position: number): Promise<number>;
|
|
597
595
|
}
|
package/lib/wav/BwfChunk.d.ts
CHANGED
package/lib/wav/WaveChunk.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { IGetToken } from 'strtok3/core';
|
|
1
|
+
import type { IGetToken } from 'strtok3';
|
|
3
2
|
import { IChunkHeader } from '../iff/index.js';
|
|
4
3
|
/**
|
|
5
4
|
* Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx
|
|
@@ -47,7 +46,7 @@ export interface IWaveFormat {
|
|
|
47
46
|
export declare class Format implements IGetToken<IWaveFormat> {
|
|
48
47
|
len: number;
|
|
49
48
|
constructor(header: IChunkHeader);
|
|
50
|
-
get(buf:
|
|
49
|
+
get(buf: Uint8Array, off: number): IWaveFormat;
|
|
51
50
|
}
|
|
52
51
|
export interface IFactChunk {
|
|
53
52
|
dwSampleLength: number;
|
package/lib/wav/WaveChunk.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as Token from 'token-types';
|
|
1
2
|
/**
|
|
2
3
|
* Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx
|
|
3
4
|
*/
|
|
@@ -31,12 +32,12 @@ export class Format {
|
|
|
31
32
|
}
|
|
32
33
|
get(buf, off) {
|
|
33
34
|
return {
|
|
34
|
-
wFormatTag:
|
|
35
|
-
nChannels:
|
|
36
|
-
nSamplesPerSec:
|
|
37
|
-
nAvgBytesPerSec:
|
|
38
|
-
nBlockAlign:
|
|
39
|
-
wBitsPerSample:
|
|
35
|
+
wFormatTag: Token.UINT16_LE.get(buf, off),
|
|
36
|
+
nChannels: Token.UINT16_LE.get(buf, off + 2),
|
|
37
|
+
nSamplesPerSec: Token.UINT32_LE.get(buf, off + 4),
|
|
38
|
+
nAvgBytesPerSec: Token.UINT32_LE.get(buf, off + 8),
|
|
39
|
+
nBlockAlign: Token.UINT16_LE.get(buf, off + 12),
|
|
40
|
+
wBitsPerSample: Token.UINT16_LE.get(buf, off + 14)
|
|
40
41
|
};
|
|
41
42
|
}
|
|
42
43
|
}
|
|
@@ -54,7 +55,7 @@ export class FactChunk {
|
|
|
54
55
|
}
|
|
55
56
|
get(buf, off) {
|
|
56
57
|
return {
|
|
57
|
-
dwSampleLength:
|
|
58
|
+
dwSampleLength: Token.UINT32_LE.get(buf, off)
|
|
58
59
|
};
|
|
59
60
|
}
|
|
60
61
|
}
|
package/lib/wav/WaveParser.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as strtok3 from 'strtok3
|
|
1
|
+
import * as strtok3 from 'strtok3';
|
|
2
2
|
import * as Token from 'token-types';
|
|
3
3
|
import initDebug from 'debug';
|
|
4
4
|
import * as riff from '../riff/RiffChunk.js';
|
|
@@ -129,7 +129,7 @@ export class WaveParser extends BasicParser {
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
async parseListTag(listHeader) {
|
|
132
|
-
const listType = await this.tokenizer.readToken(new Token.StringType(4, '
|
|
132
|
+
const listType = await this.tokenizer.readToken(new Token.StringType(4, 'latin1'));
|
|
133
133
|
debug('pos=%s, parseListTag: chunkID=RIFF/WAVE/LIST/%s', this.tokenizer.position, listType);
|
|
134
134
|
switch (listType) {
|
|
135
135
|
case 'INFO':
|
|
@@ -64,7 +64,7 @@ export class WavPackParser extends BasicParser {
|
|
|
64
64
|
case 0xe: // ID_DSD_BLOCK
|
|
65
65
|
debug('ID_DSD_BLOCK');
|
|
66
66
|
// https://github.com/dbry/WavPack/issues/71#issuecomment-483094813
|
|
67
|
-
const mp = 1 <<
|
|
67
|
+
const mp = 1 << Token.UINT8.get(data, 0);
|
|
68
68
|
const samplingRate = header.flags.samplingRate * mp * 8; // ToDo: second factor should be read from DSD-metadata block https://github.com/dbry/WavPack/issues/71#issuecomment-483094813
|
|
69
69
|
if (!header.flags.isDSD)
|
|
70
70
|
throw new Error('Only expect DSD block if DSD-flag is set');
|
|
@@ -63,7 +63,7 @@ WavPack.MetadataIdToken = {
|
|
|
63
63
|
len: 1,
|
|
64
64
|
get: (buf, off) => {
|
|
65
65
|
return {
|
|
66
|
-
functionId: WavPack.getBitAllignedNumber(buf[off], 0, 6),
|
|
66
|
+
functionId: WavPack.getBitAllignedNumber(buf[off], 0, 6), // functionId overlaps with isOptional flag
|
|
67
67
|
isOptional: WavPack.isBitSet(buf[off], 5),
|
|
68
68
|
isOddSize: WavPack.isBitSet(buf[off], 6),
|
|
69
69
|
largeBlock: WavPack.isBitSet(buf[off], 7)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "music-metadata",
|
|
3
3
|
"description": "Music metadata parser for Node.js, supporting virtual any audio and tag format.",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "9.0.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Borewit",
|
|
7
7
|
"url": "https://github.com/Borewit"
|
|
@@ -92,42 +92,43 @@
|
|
|
92
92
|
"@tokenizer/token": "^0.3.0",
|
|
93
93
|
"content-type": "^1.0.5",
|
|
94
94
|
"debug": "^4.3.4",
|
|
95
|
-
"file-type": "^
|
|
95
|
+
"file-type": "^19.1.0",
|
|
96
96
|
"media-typer": "^1.1.0",
|
|
97
|
-
"strtok3": "^7.
|
|
98
|
-
"token-types": "^
|
|
97
|
+
"strtok3": "^7.1.0",
|
|
98
|
+
"token-types": "^6.0.0",
|
|
99
|
+
"uint8array-extras": "^1.3.0"
|
|
99
100
|
},
|
|
100
101
|
"devDependencies": {
|
|
101
|
-
"@types/chai": "^4.3.
|
|
102
|
-
"@types/chai-as-promised": "^7.1.
|
|
103
|
-
"@types/debug": "^4.1.
|
|
102
|
+
"@types/chai": "^4.3.16",
|
|
103
|
+
"@types/chai-as-promised": "^7.1.8",
|
|
104
|
+
"@types/debug": "^4.1.12",
|
|
104
105
|
"@types/file-type": "^10.9.1",
|
|
105
|
-
"@types/mocha": "^10.0.
|
|
106
|
-
"@types/node": "^20.
|
|
107
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
108
|
-
"@typescript-eslint/parser": "^
|
|
109
|
-
"c8": "^
|
|
110
|
-
"chai": "^
|
|
111
|
-
"chai-as-promised": "^
|
|
112
|
-
"del-cli": "5.1.0",
|
|
113
|
-
"eslint": "^8.
|
|
114
|
-
"eslint-config-prettier": "^9.
|
|
106
|
+
"@types/mocha": "^10.0.7",
|
|
107
|
+
"@types/node": "^20.14.10",
|
|
108
|
+
"@typescript-eslint/eslint-plugin": "^7.14.1",
|
|
109
|
+
"@typescript-eslint/parser": "^7.16.0",
|
|
110
|
+
"c8": "^10.1.2",
|
|
111
|
+
"chai": "^5.1.1",
|
|
112
|
+
"chai-as-promised": "^8.0.0",
|
|
113
|
+
"del-cli": "^5.1.0",
|
|
114
|
+
"eslint": "^8.57.0",
|
|
115
|
+
"eslint-config-prettier": "^9.1.0",
|
|
115
116
|
"eslint-import-resolver-typescript": "^3.6.1",
|
|
116
|
-
"eslint-plugin-import": "^2.29.
|
|
117
|
-
"eslint-plugin-jsdoc": "^
|
|
117
|
+
"eslint-plugin-import": "^2.29.1",
|
|
118
|
+
"eslint-plugin-jsdoc": "^48.5.0",
|
|
118
119
|
"eslint-plugin-node": "^11.1.0",
|
|
119
|
-
"eslint-plugin-unicorn": "^
|
|
120
|
-
"mime": "^
|
|
121
|
-
"mocha": "^10.
|
|
120
|
+
"eslint-plugin-unicorn": "^54.0.0",
|
|
121
|
+
"mime": "^4.0.4",
|
|
122
|
+
"mocha": "^10.6.0",
|
|
122
123
|
"npm-run-all": "^4.1.5",
|
|
123
|
-
"prettier": "^3.
|
|
124
|
-
"remark-cli": "^12.0.
|
|
125
|
-
"remark-preset-lint-markdown-style-guide": "^
|
|
126
|
-
"ts-node": "^10.9.
|
|
127
|
-
"typescript": "^5.
|
|
124
|
+
"prettier": "^3.3.2",
|
|
125
|
+
"remark-cli": "^12.0.1",
|
|
126
|
+
"remark-preset-lint-markdown-style-guide": "^6.0.0",
|
|
127
|
+
"ts-node": "^10.9.2",
|
|
128
|
+
"typescript": "^5.5.3"
|
|
128
129
|
},
|
|
129
130
|
"engines": {
|
|
130
|
-
"node": "
|
|
131
|
+
"node": ">=16.0.0"
|
|
131
132
|
},
|
|
132
133
|
"repository": {
|
|
133
134
|
"type": "git",
|