1
0
mirror of synced 2026-05-22 14:43:19 +00:00

Migrate from CommonJS to ES Modules

This commit is contained in:
Borewit
2022-01-27 15:40:10 +01:00
parent 1e1bd78dc5
commit 7cdebd1ca6
131 changed files with 1140 additions and 1825 deletions
+6
View File
@@ -0,0 +1,6 @@
{
"reporter": [
"lcov",
"text"
]
}
+2 -2
View File
@@ -1,7 +1,7 @@
{
"env": {
"browser": true,
"es6": true,
"es2021": true,
"node": true
},
"extends": [
@@ -191,7 +191,7 @@
"no-unused-labels": "error",
"no-use-before-define": "off",
"no-var": "error",
"node/file-extension-in-import": ["off"],
"node/file-extension-in-import": ["error", "always"],
"node/no-extraneous-import": "error",
"object-shorthand": "error",
"one-var": [
+1 -1
View File
@@ -47,7 +47,7 @@ jobs:
strategy:
matrix:
node-version: [10.x, 12.x, 14.x, 16.x]
node-version: [12.x, 14.x, 16.x, 17.x]
steps:
+7
View File
@@ -0,0 +1,7 @@
{
"extension": ["ts", "tsx"],
"watch-files": ["lib/**/*.ts", "test/**/*.ts"],
"spec": ["test/test-*.ts"],
"loader": ["ts-node/esm"],
"extensions": ["ts", "tsx"]
}
+10 -7
View File
@@ -1,16 +1,19 @@
import * as path from 'path';
import * as fs from 'fs';
import * as path from 'node:path';
import * as fs from 'node:fs';
import { fileURLToPath } from 'node:url';
import { commonTags } from '../lib/common/GenericTagTypes';
import { CombinedTagMapper } from '../lib/common/CombinedTagMapper';
import { commonTags } from '../lib/common/GenericTagTypes.js';
import { CombinedTagMapper } from '../lib/common/CombinedTagMapper.js';
import * as markDown from './MarkDown';
import * as markDown from './MarkDown.js';
interface ITagInfoDict {
[key: string]: { description: string };
}
const combinedTagMapper = new CombinedTagMapper();
const filename = fileURLToPath(import.meta.url);
const dirname = path.dirname(filename);
function getNativeSourceTags(nativeType: string, commonTag: string): string[] {
@@ -27,7 +30,7 @@ function getNativeSourceTags(nativeType: string, commonTag: string): string[] {
function write(out: fs.WriteStream) {
const json = fs.readFileSync(path.join(__dirname, 'common.json'));
const json = fs.readFileSync(path.join(dirname, 'common.json'));
const commonDescriptionDict: ITagInfoDict = JSON.parse(json as any);
const table = new markDown.Table();
@@ -55,7 +58,7 @@ function write(out: fs.WriteStream) {
table.writeTo(out);
}
const txt = fs.createWriteStream(path.join(__dirname, '..', 'doc', 'common_metadata.md'));
const txt = fs.createWriteStream(path.join(dirname, '..', 'doc', 'common_metadata.md'));
txt.write('# Common Metadata\n\n');
txt.write('Common tags, and _native_ to _common_ tag mappings. _n_ indicates the multiplicity.\n');
+1 -1
View File
@@ -1,4 +1,4 @@
import * as mm from '../../lib';
import * as mm from '../../lib.js';
import * as util from 'util';
(async () => {
+23 -21
View File
@@ -1,24 +1,26 @@
import { IOptions, IAudioMetadata, ParserType } from './type';
import { ITokenizer } from 'strtok3/lib/core';
import * as FileType from 'file-type/core';
import * as ContentType from 'content-type';
import * as MimeType from 'media-typer';
import { fileTypeFromBuffer } from 'file-type';
import ContentType from 'content-type';
import MimeType from 'media-typer';
import initDebug from 'debug';
import { INativeMetadataCollector, MetadataCollector } from './common/MetadataCollector';
import { AIFFParser } from './aiff/AiffParser';
import { APEv2Parser } from './apev2/APEv2Parser';
import { AsfParser } from './asf/AsfParser';
import { FlacParser } from './flac/FlacParser';
import { MP4Parser } from './mp4/MP4Parser';
import { MpegParser } from './mpeg/MpegParser';
import MusepackParser from './musepack';
import { OggParser } from './ogg/OggParser';
import { WaveParser } from './wav/WaveParser';
import { WavPackParser } from './wavpack/WavPackParser';
import { DsfParser } from './dsf/DsfParser';
import { DsdiffParser } from './dsdiff/DsdiffParser';
import { MatroskaParser } from './matroska/MatroskaParser';
import { Buffer } from 'node:buffer';
import { INativeMetadataCollector, MetadataCollector } from './common/MetadataCollector.js';
import { AIFFParser } from './aiff/AiffParser.js';
import { APEv2Parser } from './apev2/APEv2Parser.js';
import { AsfParser } from './asf/AsfParser.js';
import { FlacParser } from './flac/FlacParser.js';
import { MP4Parser } from './mp4/MP4Parser.js';
import { MpegParser } from './mpeg/MpegParser.js';
import MusepackParser from './musepack/index.js';
import { OggParser } from './ogg/OggParser.js';
import { WaveParser } from './wav/WaveParser.js';
import { WavPackParser } from './wavpack/WavPackParser.js';
import { DsfParser } from './dsf/DsfParser.js';
import { DsdiffParser } from './dsdiff/DsdiffParser.js';
import { MatroskaParser } from './matroska/MatroskaParser.js';
import { IOptions, IAudioMetadata, ParserType } from './type.js';
import { ITokenizer } from 'strtok3/core';
const debug = initDebug('music-metadata:parser:factory');
@@ -93,7 +95,7 @@ export class ParserFactory {
parserId = this.getParserIdForExtension(tokenizer.fileInfo.path);
}
if (!parserId) {
const guessedType = await FileType.fromBuffer(buf);
const guessedType = await fileTypeFromBuffer(buf);
if (!guessedType) {
throw new Error('Failed to determine audio format');
}
+6 -6
View File
@@ -1,13 +1,13 @@
import * as Token from 'token-types';
import initDebug from 'debug';
import * as strtok3 from 'strtok3/lib/core';
import * as strtok3 from 'strtok3/core';
import { ID3v2Parser } from '../id3v2/ID3v2Parser';
import { FourCcToken } from '../common/FourCC';
import { BasicParser } from '../common/BasicParser';
import { ID3v2Parser } from '../id3v2/ID3v2Parser.js';
import { FourCcToken } from '../common/FourCC.js';
import { BasicParser } from '../common/BasicParser.js';
import * as AiffToken from './AiffToken';
import * as iff from '../iff';
import * as AiffToken from './AiffToken.js';
import * as iff from '../iff/index.js';
const debug = initDebug('music-metadata:parser:aiff');
+5 -3
View File
@@ -1,8 +1,10 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3';
import { Buffer } from 'node:buffer';
import {FourCcToken} from '../common/FourCC';
import * as iff from '../iff';
import { FourCcToken } from '../common/FourCC.js';
import * as iff from '../iff/index.js';
import { IGetToken } from 'strtok3';
/**
* The Common Chunk.
+7 -6
View File
@@ -1,11 +1,12 @@
import initDebug from 'debug';
import * as strtok3 from 'strtok3/lib/core';
import * as strtok3 from 'strtok3/core';
import { StringType } from 'token-types';
import { Buffer } from 'node:buffer';
import * as util from '../common/Util';
import { IOptions, IRandomReader, IApeHeader } from '../type';
import { INativeMetadataCollector } from '../common/MetadataCollector';
import { BasicParser } from '../common/BasicParser';
import * as util from '../common/Util.js';
import { IOptions, IRandomReader, IApeHeader } from '../type.js';
import { INativeMetadataCollector } from '../common/MetadataCollector.js';
import { BasicParser } from '../common/BasicParser.js';
import {
DataType,
DescriptorParser,
@@ -15,7 +16,7 @@ import {
IHeader, ITagItemHeader,
TagFooter,
TagItemHeader
} from './APEv2Token';
} from './APEv2Token.js';
const debug = initDebug('music-metadata:parser:APEv2');
+2 -2
View File
@@ -1,5 +1,5 @@
import {INativeTagMap} from '../common/GenericTagTypes';
import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap';
import {INativeTagMap} from '../common/GenericTagTypes.js';
import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';
/**
* ID3v2.2 tag mappings
+3 -2
View File
@@ -1,7 +1,8 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/core';
import { Buffer } from 'node:buffer';
import { FourCcToken } from '../common/FourCC';
import { FourCcToken } from '../common/FourCC.js';
/**
* APETag versionIndex history / supported formats
+8 -7
View File
@@ -1,13 +1,14 @@
// ASF Objects
import { IGetToken, ITokenizer } from 'strtok3/lib/core';
import * as util from '../common/Util';
import { IPicture, ITag } from '../type';
import * as Token from 'token-types';
import GUID from './GUID';
import { AsfUtil } from './AsfUtil';
import { AttachedPictureType } from '../id3v2/ID3v2Token';
import { IGetToken, ITokenizer } from 'strtok3/core';
import { Buffer } from 'node:buffer';
import * as util from '../common/Util.js';
import { IPicture, ITag } from '../type.js';
import GUID from './GUID.js';
import { AsfUtil } from './AsfUtil.js';
import { AttachedPictureType } from '../id3v2/ID3v2Token.js';
/**
* Data Type: Specifies the type of information being stored. The following values are recognized.
+4 -4
View File
@@ -1,9 +1,9 @@
import initDebug from 'debug';
import { ITag, TrackType } from '../type';
import GUID from './GUID';
import * as AsfObject from './AsfObject';
import { BasicParser } from '../common/BasicParser';
import { ITag, TrackType } from '../type.js';
import GUID from './GUID.js';
import * as AsfObject from './AsfObject.js';
import { BasicParser } from '../common/BasicParser.js';
const debug = initDebug('music-metadata:parser:ASF');
const headerType = 'asf';
+3 -3
View File
@@ -1,6 +1,6 @@
import {INativeTagMap} from '../common/GenericTagTypes';
import {CommonTagMapper} from '../common/GenericTagMapper';
import {IRating, ITag} from '../type';
import {INativeTagMap} from '../common/GenericTagTypes.js';
import {CommonTagMapper} from '../common/GenericTagMapper.js';
import {IRating, ITag} from '../type.js';
/**
* ASF Metadata tag mappings.
+3 -2
View File
@@ -1,7 +1,8 @@
import * as Token from 'token-types';
import { Buffer } from 'node:buffer';
import * as util from '../common/Util';
import { DataType } from './AsfObject';
import * as util from '../common/Util.js';
import { DataType } from './AsfObject.js';
export type AttributeParser = (buf: Buffer) => boolean | string | number | bigint | Buffer;
+4 -4
View File
@@ -1,8 +1,8 @@
import { ITokenizer } from 'strtok3/lib/core';
import { ITokenizer } from 'strtok3/core';
import { ITokenParser } from '../ParserFactory';
import { IOptions, IPrivateOptions } from '../type';
import { INativeMetadataCollector } from './MetadataCollector';
import { ITokenParser } from '../ParserFactory.js';
import { IOptions, IPrivateOptions } from '../type.js';
import { INativeMetadataCollector } from './MetadataCollector.js';
export abstract class BasicParser implements ITokenParser {
+2 -2
View File
@@ -1,5 +1,5 @@
import { INativeTagMap, TagType } from './GenericTagTypes';
import { CommonTagMapper } from './GenericTagMapper';
import { INativeTagMap, TagType } from './GenericTagTypes.js';
import { CommonTagMapper } from './GenericTagMapper.js';
export class CaseInsensitiveTagMap extends CommonTagMapper {
+13 -13
View File
@@ -1,16 +1,16 @@
import { ID3v1TagMapper } from '../id3v1/ID3v1TagMap';
import { ID3v24TagMapper } from '../id3v2/ID3v24TagMapper';
import { AsfTagMapper } from '../asf/AsfTagMapper';
import { IGenericTag, TagType } from './GenericTagTypes';
import { ID3v22TagMapper } from '../id3v2/ID3v22TagMapper';
import { APEv2TagMapper } from '../apev2/APEv2TagMapper';
import { IGenericTagMapper } from './GenericTagMapper';
import { MP4TagMapper } from '../mp4/MP4TagMapper';
import { VorbisTagMapper } from '../ogg/vorbis/VorbisTagMapper';
import { RiffInfoTagMapper } from '../riff/RiffInfoTagMap';
import { ITag } from '../type';
import { INativeMetadataCollector } from './MetadataCollector';
import { MatroskaTagMapper } from '../matroska/MatroskaTagMapper';
import { ID3v1TagMapper } from '../id3v1/ID3v1TagMap.js';
import { ID3v24TagMapper } from '../id3v2/ID3v24TagMapper.js';
import { AsfTagMapper } from '../asf/AsfTagMapper.js';
import { IGenericTag, TagType } from './GenericTagTypes.js';
import { ID3v22TagMapper } from '../id3v2/ID3v22TagMapper.js';
import { APEv2TagMapper } from '../apev2/APEv2TagMapper.js';
import { IGenericTagMapper } from './GenericTagMapper.js';
import { MP4TagMapper } from '../mp4/MP4TagMapper.js';
import { VorbisTagMapper } from '../ogg/vorbis/VorbisTagMapper.js';
import { RiffInfoTagMapper } from '../riff/RiffInfoTagMap.js';
import { ITag } from '../type.js';
import { INativeMetadataCollector } from './MetadataCollector.js';
import { MatroskaTagMapper } from '../matroska/MatroskaTagMapper.js';
export class CombinedTagMapper {
+3 -2
View File
@@ -1,5 +1,6 @@
import * as util from './Util';
import { IToken } from 'strtok3/lib/core';
import { IToken } from 'strtok3/core';
import * as util from './Util.js';
const validFourCC = /^[\x21-\x7e©][\x20-\x7e\x00()]{3}/;
+4 -4
View File
@@ -1,6 +1,6 @@
import * as generic from './GenericTagTypes';
import { ITag } from '../type';
import { INativeMetadataCollector, IWarningCollector } from './MetadataCollector';
import * as generic from './GenericTagTypes.js';
import {ITag} from '../type.js';
import { INativeMetadataCollector, IWarningCollector } from './MetadataCollector.js';
export interface IGenericTagMapper {
@@ -66,7 +66,7 @@ export class CommonTagMapper implements IGenericTagMapper {
/**
* Convert native tag key to common tag key
* @tag Native header tag
* @param tag Native header tag
* @return common tag name (alias)
*/
protected getCommonName(tag: string): generic.GenericTagId {
+7 -7
View File
@@ -3,14 +3,14 @@ import {
IAudioMetadata, ICommonTagsResult,
IFormat,
INativeTags, IOptions, IQualityInformation, IPicture, ITrackInfo, TrackType
} from '../type';
} from '../type.js';
import initDebug from 'debug';
import { IGenericTag, TagType, isSingleton, isUnique } from './GenericTagTypes';
import { CombinedTagMapper } from './CombinedTagMapper';
import { CommonTagMapper } from './GenericTagMapper';
import { toRatio } from './Util';
import * as FileType from 'file-type/core';
import { IGenericTag, TagType, isSingleton, isUnique } from './GenericTagTypes.js';
import { CombinedTagMapper } from './CombinedTagMapper.js';
import { CommonTagMapper } from './GenericTagMapper.js';
import { toRatio } from './Util.js';
import { fileTypeFromBuffer } from 'file-type';
const debug = initDebug('music-metadata:collector');
@@ -281,7 +281,7 @@ export class MetadataCollector implements INativeMetadataCollector {
private async postFixPicture(picture: IPicture): Promise<IPicture> {
if (picture.data && picture.data.length > 0) {
if (!picture.format) {
const fileType = await FileType.fromBuffer(picture.data);
const fileType = await fileTypeFromBuffer(picture.data);
if (fileType) {
picture.format = fileType.mime;
} else {
+1 -1
View File
@@ -1,6 +1,6 @@
import * as fs from 'fs';
import { IRandomReader } from '../type';
import { IRandomReader } from '../type.js';
/**
* Provides abstract file access via the IRandomRead interface
+1 -1
View File
@@ -1,4 +1,4 @@
import { IRandomReader } from '../type';
import { IRandomReader } from '../type.js';
/**
* Provides abstract Uint8Array access via the IRandomRead interface
+1 -1
View File
@@ -1,4 +1,4 @@
import { IRatio } from '../type';
import { IRatio } from '../type.js';
export type StringEncoding =
'ascii' // Use 'utf-8' or latin1 instead
+9 -8
View File
@@ -1,14 +1,15 @@
import { Readable } from 'stream';
import * as strtok3 from 'strtok3/lib/core';
import * as strtok3 from 'strtok3/core';
import { ParserFactory } from './ParserFactory';
import { IAudioMetadata, INativeTagDict, IOptions, IPicture, IPrivateOptions, IRandomReader, ITag } from './type';
import { RandomUint8ArrayReader } from './common/RandomUint8ArrayReader';
import { APEv2Parser } from './apev2/APEv2Parser';
import { hasID3v1Header } from './id3v1/ID3v1Parser';
import { getLyricsHeaderLength } from './lyrics3/Lyrics3';
import { ParserFactory } from './ParserFactory.js';
import { RandomUint8ArrayReader } from './common/RandomUint8ArrayReader.js';
import { APEv2Parser } from './apev2/APEv2Parser.js';
import { hasID3v1Header } from './id3v1/ID3v1Parser.js';
import { getLyricsHeaderLength } from './lyrics3/Lyrics3.js';
export { IFileInfo } from 'strtok3/lib/core';
import { IAudioMetadata, INativeTagDict, IOptions, IPicture, IPrivateOptions, IRandomReader, ITag } from './type.js';
export { IFileInfo } from 'strtok3/core';
/**
* Parse audio from Node Stream.Readable
+5 -5
View File
@@ -1,12 +1,12 @@
import * as Token from 'token-types';
import initDebug from 'debug';
import * as strtok3 from 'strtok3/lib/core';
import * as strtok3 from 'strtok3/core';
import { FourCcToken } from '../common/FourCC';
import { BasicParser } from '../common/BasicParser';
import { ID3v2Parser } from '../id3v2/ID3v2Parser';
import { FourCcToken } from '../common/FourCC.js';
import { BasicParser } from '../common/BasicParser.js';
import { ID3v2Parser } from '../id3v2/ID3v2Parser.js';
import { ChunkHeader64, IChunkHeader64 } from './DsdiffToken';
import { ChunkHeader64, IChunkHeader64 } from './DsdiffToken.js';
const debug = initDebug('music-metadata:parser:aiff');
+4 -4
View File
@@ -1,9 +1,9 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/core';
import { FourCcToken } from '../common/FourCC';
import { IChunkHeader64 } from '../iff';
export { IChunkHeader64 } from '../iff';
import { FourCcToken } from '../common/FourCC.js';
import { IChunkHeader64 } from '../iff/index.js';
export { IChunkHeader64 } from '../iff/index.js';
/**
* DSDIFF chunk header
+2 -2
View File
@@ -1,7 +1,7 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/core';
import { FourCcToken } from '../common/FourCC';
import { FourCcToken } from '../common/FourCC.js';
/**
* Common interface for the common chunk DSD header
+3 -3
View File
@@ -1,8 +1,8 @@
import initDebug from 'debug';
import { AbstractID3Parser } from '../id3v2/AbstractID3Parser';
import { ChunkHeader, DsdChunk, FormatChunk, IChunkHeader, IDsdChunk, IFormatChunk } from './DsfChunk';
import { ID3v2Parser } from "../id3v2/ID3v2Parser";
import { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';
import { ChunkHeader, DsdChunk, FormatChunk, IChunkHeader, IDsdChunk, IFormatChunk } from './DsfChunk.js';
import { ID3v2Parser } from "../id3v2/ID3v2Parser.js";
const debug = initDebug('music-metadata:parser:DSF');
+10 -10
View File
@@ -1,16 +1,16 @@
import { UINT16_BE, UINT24_BE, Uint8ArrayType } from 'token-types';
import initDebug from 'debug';
import { ITokenizer, IGetToken } from 'strtok3/lib/core';
import { ITokenizer, IGetToken } from 'strtok3/core';
import * as util from '../common/Util';
import { IVorbisPicture, VorbisPictureToken } from '../ogg/vorbis/Vorbis';
import { AbstractID3Parser } from '../id3v2/AbstractID3Parser';
import { FourCcToken } from '../common/FourCC';
import { VorbisParser } from '../ogg/vorbis/VorbisParser';
import { INativeMetadataCollector } from '../common/MetadataCollector';
import { IOptions } from '../type';
import { ITokenParser } from '../ParserFactory';
import { VorbisDecoder } from '../ogg/vorbis/VorbisDecoder';
import * as util from '../common/Util.js';
import { IVorbisPicture, VorbisPictureToken } from '../ogg/vorbis/Vorbis.js';
import { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';
import { FourCcToken } from '../common/FourCC.js';
import { VorbisParser } from '../ogg/vorbis/VorbisParser.js';
import { INativeMetadataCollector } from '../common/MetadataCollector.js';
import { IOptions } from '../type.js';
import { ITokenParser } from '../ParserFactory.js';
import { VorbisDecoder } from '../ogg/vorbis/VorbisDecoder.js';
const debug = initDebug('music-metadata:parser:FLAC');
+6 -5
View File
@@ -1,11 +1,12 @@
import initDebug from 'debug';
import { StringType, UINT8 } from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import * as util from '../common/Util';
import { BasicParser } from '../common/BasicParser';
import { APEv2Parser } from '../apev2/APEv2Parser';
import { IRandomReader } from '../type';
import * as util from '../common/Util.js';
import { IGetToken } from 'strtok3/core';
import { BasicParser } from '../common/BasicParser.js';
import { APEv2Parser } from '../apev2/APEv2Parser.js';
import { IRandomReader } from '../type.js';
const debug = initDebug('music-metadata:parser:ID3v1');
+2 -2
View File
@@ -1,5 +1,5 @@
import { INativeTagMap } from '../common/GenericTagTypes';
import { CommonTagMapper } from '../common/GenericTagMapper';
import { INativeTagMap } from '../common/GenericTagTypes.js';
import { CommonTagMapper } from '../common/GenericTagMapper.js';
/**
* ID3v1 tag mappings
+5 -5
View File
@@ -1,10 +1,10 @@
import { EndOfStreamError, ITokenizer } from 'strtok3/lib/core';
import { EndOfStreamError, ITokenizer } from 'strtok3/core';
import initDebug from 'debug';
import { ID3v2Header } from './ID3v2Token';
import { ID3v2Parser } from './ID3v2Parser';
import { ID3v1Parser } from '../id3v1/ID3v1Parser';
import { BasicParser } from '../common/BasicParser';
import { ID3v2Header } from './ID3v2Token.js';
import { ID3v2Parser } from './ID3v2Parser.js';
import { ID3v1Parser } from '../id3v1/ID3v1Parser.js';
import { BasicParser } from '../common/BasicParser.js';
const debug = initDebug('music-metadata:parser:ID3');
+5 -4
View File
@@ -1,10 +1,11 @@
import initDebug from 'debug';
import * as Token from 'token-types';
import * as util from '../common/Util';
import { AttachedPictureType, ID3v2MajorVersion, TextEncodingToken } from './ID3v2Token';
import { IWarningCollector } from '../common/MetadataCollector';
import { Genres } from '../id3v1/ID3v1Parser';
import * as util from '../common/Util.js';
import { AttachedPictureType, ID3v2MajorVersion, TextEncodingToken } from './ID3v2Token.js';
import { Genres } from '../id3v1/ID3v1Parser.js';
import { IWarningCollector } from '../common/MetadataCollector.js';
const debug = initDebug('music-metadata:id3v2:frame-parser');
+2 -2
View File
@@ -1,5 +1,5 @@
import {INativeTagMap} from '../common/GenericTagTypes';
import {CaseInsensitiveTagMap} from '../common/CaseInsensitiveTagMap';
import {INativeTagMap} from '../common/GenericTagTypes.js';
import {CaseInsensitiveTagMap} from '../common/CaseInsensitiveTagMap.js';
/**
* ID3v2.2 tag mappings
+6 -6
View File
@@ -1,10 +1,10 @@
import { INativeTagMap } from '../common/GenericTagTypes';
import { CommonTagMapper } from '../common/GenericTagMapper';
import { INativeMetadataCollector } from '../common/MetadataCollector';
import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap';
import * as util from '../common/Util';
import { INativeTagMap } from '../common/GenericTagTypes.js';
import { CommonTagMapper } from '../common/GenericTagMapper.js';
import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';
import * as util from '../common/Util.js';
import { IRating, ITag } from '../type';
import { INativeMetadataCollector } from '../common/MetadataCollector.js';
import { IRating, ITag } from '../type.js';
/**
* ID3v2.3/ID3v2.4 tag mappings
+8 -7
View File
@@ -1,12 +1,13 @@
import { ITokenizer } from 'strtok3/lib/core';
import { ITokenizer } from 'strtok3/core';
import * as Token from 'token-types';
import * as util from '../common/Util';
import { TagType } from '../common/GenericTagTypes';
import { ITag, IOptions } from '../type';
import { FrameParser } from './FrameParser';
import { ExtendedHeader, ID3v2Header, ID3v2MajorVersion, IID3v2header, UINT32SYNCSAFE } from './ID3v2Token';
import { INativeMetadataCollector, IWarningCollector } from '../common/MetadataCollector';
import * as util from '../common/Util.js';
import { TagType } from '../common/GenericTagTypes.js';
import { FrameParser } from './FrameParser.js';
import { ExtendedHeader, ID3v2Header, ID3v2MajorVersion, IID3v2header, UINT32SYNCSAFE } from './ID3v2Token.js';
import { ITag, IOptions } from '../type.js';
import { INativeMetadataCollector, IWarningCollector } from '../common/MetadataCollector.js';
interface IFrameFlags {
status: {
+2 -2
View File
@@ -1,7 +1,7 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/core';
import * as util from '../common/Util';
import * as util from '../common/Util.js';
/**
* The picture type according to the ID3v2 APIC frame
+2 -2
View File
@@ -1,7 +1,7 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/core';
import { FourCcToken } from '../common/FourCC';
import { FourCcToken } from '../common/FourCC.js';
/**
* "EA IFF 85" Standard for Interchange Format Files
+9 -35
View File
@@ -1,17 +1,16 @@
import * as Stream from 'stream';
import * as strtok3 from 'strtok3';
import * as Core from './core';
import { ParserFactory } from './ParserFactory';
import { IAudioMetadata, IOptions } from './type';
import initDebug from 'debug';
import { RandomFileReader } from './common/RandomFileReader';
export { IAudioMetadata, IOptions, ITag, INativeTagDict, ICommonTagsResult, IFormat, IPicture, IRatio, IChapter } from './type';
import { parseFromTokenizer, scanAppendingHeaders } from './core.js';
import { ParserFactory } from './ParserFactory.js';
import { IAudioMetadata, IOptions } from './type.js';
import { RandomFileReader } from './common/RandomFileReader.js';
const debug = initDebug("music-metadata:parser");
export { IAudioMetadata, IOptions, ITag, INativeTagDict, ICommonTagsResult, IFormat, IPicture, IRatio, IChapter } from './type.js';
export { parseFromTokenizer, parseBuffer, selectCover, orderTags, ratingToStars, IFileInfo } from './core.js';
export { parseFromTokenizer, parseBuffer, IFileInfo, selectCover } from './core';
const debug = initDebug('music-metadata:parser');
/**
* Parse audio from Node Stream.Readable
@@ -22,7 +21,7 @@ export { parseFromTokenizer, parseBuffer, IFileInfo, selectCover } from './core'
*/
export async function parseStream(stream: Stream.Readable, fileInfo?: strtok3.IFileInfo | string, options: IOptions = {}): Promise<IAudioMetadata> {
const tokenizer = await strtok3.fromStream(stream, typeof fileInfo === 'string' ? {mimeType: fileInfo} : fileInfo);
return Core.parseFromTokenizer(tokenizer, options);
return parseFromTokenizer(tokenizer, options);
}
/**
@@ -39,7 +38,7 @@ export async function parseFile(filePath: string, options: IOptions = {}): Promi
const fileReader = await RandomFileReader.init(filePath, fileTokenizer.fileInfo.size);
try {
await Core.scanAppendingHeaders(fileReader, options);
await scanAppendingHeaders(fileReader, options);
} finally {
await fileReader.close();
}
@@ -54,28 +53,3 @@ export async function parseFile(filePath: string, options: IOptions = {}): Promi
await fileTokenizer.close();
}
}
/**
* Create a dictionary ordered by their tag id (key)
* @param nativeTags - List of tags
* @returns Tags indexed by id
*/
export const orderTags = Core.orderTags;
/**
* Convert rating to 1-5 star rating
* @param rating - Normalized rating [0..1] (common.rating[n].rating)
* @returns Number of stars: 1, 2, 3, 4 or 5 stars
*/
export const ratingToStars = Core.ratingToStars;
/**
* Define default module exports
*/
export default {
parseStream,
parseFile,
parseFromTokenizer: Core.parseFromTokenizer,
parseBuffer: Core.parseBuffer,
selectCover: Core.selectCover
};
+1 -1
View File
@@ -1,4 +1,4 @@
import { IRandomReader } from '../type';
import { IRandomReader } from '../type.js';
export const endTag2 = 'LYRICS200';
+1 -1
View File
@@ -1,4 +1,4 @@
import { DataType, IContainerType } from './types';
import { DataType, IContainerType } from './types.js';
/**
* Elements of document type description
+7 -7
View File
@@ -1,14 +1,14 @@
import { Float32_BE, Float64_BE, StringType, UINT8 } from 'token-types';
import initDebug from 'debug';
import { ITokenizer } from 'strtok3/lib/core';
import { ITokenizer } from 'strtok3/core';
import { INativeMetadataCollector } from '../common/MetadataCollector';
import { IOptions, ITrackInfo } from '../type';
import { ITokenParser } from '../ParserFactory';
import { BasicParser } from '../common/BasicParser';
import { INativeMetadataCollector } from '../common/MetadataCollector.js';
import { BasicParser } from '../common/BasicParser.js';
import * as matroskaDtd from './MatroskaDtd.js';
import { DataType, IContainerType, IHeader, IMatroskaDoc, ITree, TargetType, TrackType } from './types.js';
import { DataType, IContainerType, IHeader, IMatroskaDoc, ITree, TargetType, TrackType } from './types';
import * as matroskaDtd from './MatroskaDtd';
import { IOptions, ITrackInfo } from '../type.js';
import { ITokenParser } from '../ParserFactory.js';
const debug = initDebug('music-metadata:parser:matroska');
+2 -2
View File
@@ -1,5 +1,5 @@
import { INativeTagMap } from '../common/GenericTagTypes';
import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap';
import {INativeTagMap} from '../common/GenericTagTypes.js';
import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';
/**
* EBML Tag map
+2 -2
View File
@@ -1,7 +1,7 @@
import { ITokenizer } from 'strtok3/lib/core';
import initDebug from 'debug';
import * as AtomToken from './AtomToken.js';
import * as AtomToken from './AtomToken';
import { ITokenizer } from 'strtok3/core';
export type AtomDataHandler = (atom: Atom, remaining: number) => Promise<void>;
+3 -2
View File
@@ -1,8 +1,9 @@
import * as Token from 'token-types';
import initDebug from 'debug';
import { IToken, IGetToken } from 'strtok3/lib/core';
import { FourCcToken } from '../common/FourCC';
import { FourCcToken } from '../common/FourCC.js';
import { IToken, IGetToken } from 'strtok3/core';
const debug = initDebug('music-metadata:parser:MP4:atom');
+7 -7
View File
@@ -1,14 +1,14 @@
import initDebug from 'debug';
import * as Token from 'token-types';
import { BasicParser } from '../common/BasicParser.js';
import { Genres } from '../id3v1/ID3v1Parser.js';
import { Atom } from './Atom.js';
import * as AtomToken from './AtomToken.js';
import { IChapter, ITrackInfo, TrackType } from '../type.js';
import { IGetToken } from '@tokenizer/token';
import { BasicParser } from '../common/BasicParser';
import { Genres } from '../id3v1/ID3v1Parser';
import { IChapter, ITrackInfo, TrackType } from '../type';
import { Atom } from './Atom';
import * as AtomToken from './AtomToken';
const debug = initDebug('music-metadata:parser:MP4');
const tagFormat = 'iTunes';
+3 -3
View File
@@ -1,5 +1,5 @@
import {INativeTagMap} from '../common/GenericTagTypes';
import {CaseInsensitiveTagMap} from '../common/CaseInsensitiveTagMap';
import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';
import { INativeTagMap } from '../common/GenericTagTypes.js';
/**
* Ref: https://github.com/sergiomb2/libmp4v2/wiki/iTunesMetadata
@@ -112,7 +112,7 @@ export const tagType = 'iTunes';
export class MP4TagMapper extends CaseInsensitiveTagMap {
public constructor() {
super([tagType], mp4TagMap);
super([tagType], mp4TagMap);
}
}
+4 -3
View File
@@ -2,10 +2,11 @@
* Extended Lame Header
*/
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/core';
import * as Token from 'token-types';
import * as common from '../common/Util';
import { ReplayGain, IReplayGain } from './ReplayGainDataFormat';
import * as common from '../common/Util.js';
import { ReplayGain, IReplayGain } from './ReplayGainDataFormat.js';
/**
* LAME Tag, extends the Xing header format
+4 -4
View File
@@ -1,10 +1,10 @@
import * as Token from 'token-types';
import { EndOfStreamError } from 'strtok3/lib/core';
import { EndOfStreamError } from 'strtok3/core';
import initDebug from 'debug';
import * as common from '../common/Util';
import { AbstractID3Parser } from '../id3v2/AbstractID3Parser';
import { InfoTagHeaderTag, IXingInfoTag, LameEncoderVersion, readXingHeader } from './XingTag';
import * as common from '../common/Util.js';
import { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';
import { InfoTagHeaderTag, IXingInfoTag, LameEncoderVersion, readXingHeader } from './XingTag.js';
const debug = initDebug('music-metadata:parser:mpeg');
+2 -2
View File
@@ -1,5 +1,5 @@
import { IGetToken } from 'strtok3/lib/core';
import * as common from '../common/Util';
import { IGetToken } from 'strtok3/core';
import * as common from '../common/Util.js';
export interface IReplayGain {
type: NameCode;
+4 -3
View File
@@ -1,7 +1,8 @@
import * as Token from 'token-types';
import { IGetToken, ITokenizer } from 'strtok3/lib/core';
import * as util from '../common/Util';
import { ExtendedLameHeader, IExtendedLameHeader } from './ExtendedLameHeader';
import { IGetToken, ITokenizer } from 'strtok3/core';
import * as util from '../common/Util.js';
import { ExtendedLameHeader, IExtendedLameHeader } from './ExtendedLameHeader.js';
export interface IXingHeaderFlags {
frames: boolean;
+4 -4
View File
@@ -1,11 +1,11 @@
import initDebug from 'debug';
import * as Token from 'token-types';
import { ITokenParser } from '../ParserFactory';
import { AbstractID3Parser } from '../id3v2/AbstractID3Parser';
import { ITokenParser } from '../ParserFactory.js';
import { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';
import { MpcSv8Parser } from './sv8/MpcSv8Parser';
import { MpcSv7Parser } from './sv7/MpcSv7Parser';
import { MpcSv8Parser } from './sv8/MpcSv8Parser.js';
import { MpcSv7Parser } from './sv7/MpcSv7Parser.js';
const debug = initDebug('music-metadata:parser:musepack');
+1 -1
View File
@@ -1,4 +1,4 @@
import { ITokenizer } from 'strtok3/lib/core';
import { ITokenizer } from 'strtok3/core';
import * as Token from 'token-types';
export class BitReader {
+4 -5
View File
@@ -1,10 +1,9 @@
import initDebug from 'debug';
import { BasicParser } from '../../common/BasicParser';
import { APEv2Parser } from '../../apev2/APEv2Parser';
import { BitReader } from './BitReader';
import * as SV7 from './StreamVersion7';
import { BasicParser } from '../../common/BasicParser.js';
import { APEv2Parser } from '../../apev2/APEv2Parser.js';
import { BitReader } from './BitReader.js';
import * as SV7 from './StreamVersion7.js';
const debug = initDebug('music-metadata:parser:musepack');
+2 -2
View File
@@ -1,7 +1,7 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/core';
import * as util from '../../common/Util';
import * as util from '../../common/Util.js';
/**
* MusePack stream version 7 format specification
+4 -5
View File
@@ -1,10 +1,9 @@
import initDebug from 'debug';
import { BasicParser } from '../../common/BasicParser';
import { APEv2Parser } from '../../apev2/APEv2Parser';
import { FourCcToken } from '../../common/FourCC';
import * as SV8 from './StreamVersion8';
import { BasicParser } from '../../common/BasicParser.js';
import { APEv2Parser } from '../../apev2/APEv2Parser.js';
import { FourCcToken } from '../../common/FourCC.js';
import * as SV8 from './StreamVersion8.js';
const debug = initDebug('music-metadata:parser:musepack');
+2 -2
View File
@@ -1,8 +1,8 @@
import * as Token from 'token-types';
import { ITokenizer, IGetToken } from 'strtok3/lib/core';
import { ITokenizer, IGetToken } from 'strtok3/core';
import initDebug from 'debug';
import * as util from '../../common/Util';
import * as util from '../../common/Util.js';
const debug = initDebug('music-metadata:parser:musepack:sv8');
+9 -9
View File
@@ -1,17 +1,17 @@
import * as Token from 'token-types';
import { IGetToken, EndOfStreamError } from 'strtok3/lib/core';
import { IGetToken, EndOfStreamError } from 'strtok3/core';
import initDebug from 'debug';
import * as util from '../common/Util';
import { FourCcToken } from '../common/FourCC';
import { BasicParser } from '../common/BasicParser';
import * as util from '../common/Util.js';
import { FourCcToken } from '../common/FourCC.js';
import { BasicParser } from '../common/BasicParser.js';
import { VorbisParser } from './vorbis/VorbisParser';
import { OpusParser } from './opus/OpusParser';
import { SpeexParser } from './speex/SpeexParser';
import { TheoraParser } from './theora/TheoraParser';
import { VorbisParser } from './vorbis/VorbisParser.js';
import { OpusParser } from './opus/OpusParser.js';
import { SpeexParser } from './speex/SpeexParser.js';
import { TheoraParser } from './theora/TheoraParser.js';
import * as Ogg from './Ogg';
import * as Ogg from './Ogg.js';
const debug = initDebug('music-metadata:parser:ogg');
+1 -1
View File
@@ -1,5 +1,5 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/core';
/**
* Opus ID Header interface
+6 -6
View File
@@ -1,12 +1,12 @@
import * as Token from 'token-types';
import {ITokenizer} from 'strtok3/lib/core';
import {ITokenizer} from 'strtok3/core';
import {IPageHeader} from '../Ogg';
import {VorbisParser} from '../vorbis/VorbisParser';
import {IOptions} from '../../type';
import {INativeMetadataCollector} from '../../common/MetadataCollector';
import {IPageHeader} from '../Ogg.js';
import {VorbisParser} from '../vorbis/VorbisParser.js';
import {IOptions} from '../../type.js';
import {INativeMetadataCollector} from '../../common/MetadataCollector.js';
import * as Opus from './Opus';
import * as Opus from './Opus.js';
/**
* Opus parser
+2 -2
View File
@@ -1,7 +1,7 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/core';
import * as util from '../../common/Util';
import * as util from '../../common/Util.js';
/**
* Speex Header Packet
+6 -6
View File
@@ -1,12 +1,12 @@
import {ITokenizer} from 'strtok3/lib/core';
import { ITokenizer } from 'strtok3/core';
import initDebug from 'debug';
import {IPageHeader} from '../Ogg';
import {VorbisParser} from '../vorbis/VorbisParser';
import {IOptions} from '../../type';
import {INativeMetadataCollector} from '../../common/MetadataCollector';
import { IPageHeader } from '../Ogg.js';
import { VorbisParser } from '../vorbis/VorbisParser.js';
import * as Speex from './Speex.js';
import * as Speex from './Speex';
import { IOptions } from '../../type.js';
import { INativeMetadataCollector } from '../../common/MetadataCollector.js';
const debug = initDebug('music-metadata:parser:ogg:speex');
+1 -1
View File
@@ -1,5 +1,5 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/core';
/**
* 6.2 Identification Header
+5 -6
View File
@@ -1,11 +1,10 @@
import { ITokenizer } from 'strtok3/lib/core';
import { ITokenizer } from 'strtok3/core';
import initDebug from 'debug';
import { IOptions } from '../../type';
import { INativeMetadataCollector } from '../../common/MetadataCollector';
import * as Ogg from '../Ogg';
import { IdentificationHeader } from './Theora';
import * as Ogg from '../Ogg.js';
import { IOptions } from '../../type.js';
import { INativeMetadataCollector } from '../../common/MetadataCollector.js';
import { IdentificationHeader } from './Theora.js';
const debug = initDebug('music-metadata:parser:ogg:theora');
+5 -3
View File
@@ -1,8 +1,9 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import {AttachedPictureType} from '../../id3v2/ID3v2Token';
import {IPicture} from '../../type';
import { AttachedPictureType } from '../../id3v2/ID3v2Token.js';
import { IPicture } from '../../type.js';
import { IGetToken } from 'strtok3/core';
/**
* Interface to parsed result of METADATA_BLOCK_PICTURE
@@ -40,6 +41,7 @@ export class VorbisPictureToken implements IGetToken<IVorbisPicture> {
const pic = new VorbisPictureToken(buffer.length);
return pic.get(buffer, 0);
}
constructor(public len) {
}
+18 -18
View File
@@ -1,20 +1,20 @@
import * as Token from 'token-types';
import initDebug from 'debug';
import debugInit from 'debug';
import {IOptions} from '../../type';
import {INativeMetadataCollector} from '../../common/MetadataCollector';
import * as Ogg from '../Ogg';
import { VorbisDecoder } from './VorbisDecoder.js';
import { CommonHeader, IdentificationHeader, IVorbisPicture, VorbisPictureToken } from './Vorbis.js';
import { VorbisDecoder } from './VorbisDecoder';
import { CommonHeader, IdentificationHeader, IVorbisPicture, VorbisPictureToken } from './Vorbis';
import { IPageConsumer, IPageHeader } from '../Ogg.js';
import { IOptions } from '../../type.js';
import { INativeMetadataCollector } from '../../common/MetadataCollector.js';
const debug = initDebug('music-metadata:parser:ogg:vorbis1');
const debug = debugInit('music-metadata:parser:ogg:vorbis1');
/**
* Vorbis 1 Parser.
* Used by OggParser
*/
export class VorbisParser implements Ogg.IPageConsumer {
export class VorbisParser implements IPageConsumer {
private pageSegments: Buffer[] = [];
@@ -26,13 +26,13 @@ export class VorbisParser implements Ogg.IPageConsumer {
* @param header Ogg Page Header
* @param pageData Page data
*/
public parsePage(header: Ogg.IPageHeader, pageData: Buffer) {
public parsePage(header: IPageHeader, pageData: Buffer) {
if (header.headerType.firstPage) {
this.parseFirstPage(header, pageData);
} else {
if (header.headerType.continued) {
if (this.pageSegments.length === 0) {
throw new Error("Cannot continue on previous page");
throw new Error('Cannot continue on previous page');
}
this.pageSegments.push(pageData);
}
@@ -79,22 +79,22 @@ export class VorbisParser implements Ogg.IPageConsumer {
this.metadata.addTag('vorbis', id, value);
}
public calculateDuration(header: Ogg.IPageHeader) {
public calculateDuration(header: IPageHeader) {
if (this.metadata.format.sampleRate && header.absoluteGranulePosition >= 0) {
// Calculate duration
this.metadata.setFormat('numberOfSamples', header.absoluteGranulePosition);
this.metadata.setFormat('duration', this.metadata.format.numberOfSamples / this.metadata.format.sampleRate);
this.metadata.setFormat('duration', this.metadata.format.numberOfSamples / this.metadata.format.sampleRate);
}
}
/**
* Parse first Ogg/Vorbis page
* @param {IPageHeader} header
* @param {Buffer} pageData
* @param header
* @param pageData
*/
protected parseFirstPage(header: Ogg.IPageHeader, pageData: Buffer) {
protected parseFirstPage(header: IPageHeader, pageData: Buffer) {
this.metadata.setFormat('codec', 'Vorbis I');
debug("Parse first page");
debug('Parse first page');
// Parse Vorbis common header
const commonHeader = CommonHeader.get(pageData, 0);
if (commonHeader.vorbis !== 'vorbis')
@@ -105,14 +105,14 @@ export class VorbisParser implements Ogg.IPageConsumer {
this.metadata.setFormat('sampleRate', idHeader.sampleRate);
this.metadata.setFormat('bitrate', idHeader.bitrateNominal);
this.metadata.setFormat('numberOfChannels', idHeader.channelMode);
debug("sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s", idHeader.sampleRate, idHeader.bitrateNominal, idHeader.channelMode);
debug('sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s', idHeader.sampleRate, idHeader.bitrateNominal, idHeader.channelMode);
} else throw new Error('First Ogg page should be type 1: the identification header');
}
protected parseFullPage(pageData: Buffer) {
// New page
const commonHeader = CommonHeader.get(pageData, 0);
debug("Parse full page: type=%s, byteLength=%s", commonHeader.packetType, pageData.byteLength);
debug('Parse full page: type=%s, byteLength=%s', commonHeader.packetType, pageData.byteLength);
switch (commonHeader.packetType) {
case 3: // type 3: comment header
+4 -3
View File
@@ -1,6 +1,7 @@
import { INativeTagMap } from '../../common/GenericTagTypes';
import { CommonTagMapper } from '../../common/GenericTagMapper';
import { IRating, ITag } from '../../type';
import { INativeTagMap } from '../../common/GenericTagTypes.js';
import { CommonTagMapper } from '../../common/GenericTagMapper.js';
import { IRating, ITag } from '../../type.js';
/**
* Vorbis tag mappings
+3 -3
View File
@@ -1,8 +1,8 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/core';
import { IChunkHeader } from '../iff/index.js';
import {IChunkHeader} from '../iff';
export {IChunkHeader} from '../iff';
export { IChunkHeader } from '../iff/index.js';
/**
* Common RIFF chunk header
+2 -2
View File
@@ -1,5 +1,5 @@
import {INativeTagMap} from '../common/GenericTagTypes';
import {CommonTagMapper} from '../common/GenericTagMapper';
import {INativeTagMap} from '../common/GenericTagTypes.js';
import {CommonTagMapper} from '../common/GenericTagMapper.js';
/**
* RIFF Info Tags; part of the EXIF 2.3
+1 -1
View File
@@ -1,7 +1,7 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"declaration": true
}
}
+6 -4
View File
@@ -1,8 +1,10 @@
import { GenericTagId, TagType } from './common/GenericTagTypes';
import { IFooter } from './apev2/APEv2Token';
import { TrackType } from './matroska/types';
import { Buffer } from 'node:buffer';
export { TrackType } from './matroska/types';
import { GenericTagId, TagType } from './common/GenericTagTypes.js';
import { IFooter } from './apev2/APEv2Token.js';
import { TrackType } from './matroska/types.js';
export { TrackType } from './matroska/types.js';
/**
* Attached picture, typically used for cover art
+1 -1
View File
@@ -1,4 +1,4 @@
import { IGetToken } from 'strtok3/lib/core';
import { IGetToken } from 'strtok3/lib/core.js';
import * as Token from 'token-types';
export interface IBroadcastAudioExtensionChunk {
+2 -3
View File
@@ -1,6 +1,5 @@
import { IGetToken } from 'strtok3/lib/core';
import { IChunkHeader } from '../iff';
import { IGetToken } from 'strtok3/core';
import { IChunkHeader } from '../iff/index.js';
/**
* Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx
+8 -8
View File
@@ -1,14 +1,14 @@
import * as strtok3 from 'strtok3/lib/core';
import * as strtok3 from 'strtok3/core';
import * as Token from 'token-types';
import initDebug from 'debug';
import * as riff from '../riff/RiffChunk';
import * as WaveChunk from './../wav/WaveChunk';
import { ID3v2Parser } from '../id3v2/ID3v2Parser';
import * as util from '../common/Util';
import { FourCcToken } from '../common/FourCC';
import { BasicParser } from '../common/BasicParser';
import { BroadcastAudioExtensionChunk } from '../wav/BwfChunk';
import * as riff from '../riff/RiffChunk.js';
import * as WaveChunk from './../wav/WaveChunk.js';
import { ID3v2Parser } from '../id3v2/ID3v2Parser.js';
import * as util from '../common/Util.js';
import { FourCcToken } from '../common/FourCC.js';
import { BasicParser } from '../common/BasicParser.js';
import { BroadcastAudioExtensionChunk } from '../wav/BwfChunk.js';
const debug = initDebug('music-metadata:parser:RIFF');
+4 -5
View File
@@ -1,10 +1,9 @@
import * as Token from 'token-types';
import { APEv2Parser } from '../apev2/APEv2Parser';
import { FourCcToken } from '../common/FourCC';
import { BasicParser } from '../common/BasicParser';
import { IBlockHeader, IMetadataId, WavPack } from './WavPackToken';
import { APEv2Parser } from '../apev2/APEv2Parser.js';
import { FourCcToken } from '../common/FourCC.js';
import { BasicParser } from '../common/BasicParser.js';
import { IBlockHeader, IMetadataId, WavPack } from './WavPackToken.js';
import initDebug from 'debug';
+3 -2
View File
@@ -1,7 +1,8 @@
import * as Token from 'token-types';
import { IGetToken } from 'strtok3/lib/core';
import { FourCcToken } from '../common/FourCC';
import { FourCcToken } from '../common/FourCC.js';
import { IGetToken } from 'strtok3/core';
/**
* WavPack Block Header
+23 -33
View File
@@ -1,7 +1,7 @@
{
"name": "music-metadata",
"description": "Music metadata parser for Node.js, supporting virtual any audio and tag format.",
"version": "7.12.1",
"version": "8.0.0-alpha.0",
"author": {
"name": "Borewit",
"url": "https://github.com/Borewit"
@@ -10,6 +10,18 @@
"type": "github",
"url": "https://github.com/sponsors/Borewit"
},
"type": "module",
"exports": {
".": {
"node": "./lib/index.js",
"default": "./lib/core.js"
}
},
"types": "lib/index.d.ts",
"files": [
"lib/**/*.js",
"lib/**/*.d.ts"
],
"keywords": [
"music",
"metadata",
@@ -60,12 +72,6 @@
"parser",
"bwf"
],
"main": "lib/index.js",
"types": "lib/index.d.ts",
"files": [
"lib/**/*.js",
"lib/**/*.d.ts"
],
"scripts": {
"clean": "del-cli lib/**/*.js lib/**/*.js.map lib/**/*.d.ts src/**/*.d.ts test/**/*.js test/**/*.js.map test/**/*.js test/**/*.js.map doc-gen/**/*.js doc-gen/**/*.js.map",
"compile-src": "tsc -p lib",
@@ -75,22 +81,22 @@
"eslint": "eslint lib/**/*.ts --ignore-pattern lib/**/*.d.ts example/typescript/**/*.ts test/**/*.ts doc-gen/**/*.ts",
"lint-md": "remark -u preset-lint-recommended .",
"lint": "npm run lint-md && npm run eslint",
"test": "mocha --require ts-node/register --require source-map-support/register --full-trace test/test-*.ts",
"test": "mocha",
"build": "npm run clean && npm run compile && npm run doc-gen",
"start": "npm-run-all compile lint cover-test",
"test-coverage": "nyc npm run test",
"send-coveralls": "nyc report --reporter=text-lcov | coveralls",
"send-codacy": "nyc report --reporter=text-lcov | codacy-coverage",
"test-coverage": "c8 npm run test",
"send-coveralls": "c8 report --reporter=text-lcov | coveralls",
"send-codacy": "c8 report --reporter=text-lcov | codacy-coverage",
"doc-gen": "node doc-gen/gen.js"
},
"dependencies": {
"@tokenizer/token": "^0.3.0",
"content-type": "^1.0.4",
"debug": "^4.3.3",
"file-type": "16.5.3",
"file-type": "^17.1.1",
"media-typer": "^1.1.0",
"strtok3": "^6.2.4",
"token-types": "^4.2.0"
"strtok3": "^7.0.0-alpha.8",
"token-types": "^5.0.0-alpha.2"
},
"devDependencies": {
"@types/chai": "^4.3.0",
@@ -100,6 +106,7 @@
"@types/node": "^17.0.21",
"@typescript-eslint/eslint-plugin": "^5.12.1",
"@typescript-eslint/parser": "^5.12.1",
"c8": "^7.10.0",
"chai": "^4.3.6",
"coveralls": "^3.1.1",
"del-cli": "4.0.1",
@@ -113,15 +120,14 @@
"mime": "^3.0.0",
"mocha": "^9.2.1",
"npm-run-all": "^4.1.5",
"nyc": "^15.1.0",
"prettier": "^2.5.1",
"remark-cli": "^10.0.1",
"remark-preset-lint-recommended": "^6.1.2",
"source-map-support": "^0.5.21",
"ts-node": "^10.5.0",
"typescript": "^4.5.5"
},
"engines": {
"node": ">=10"
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"repository": {
"type": "git",
@@ -130,21 +136,5 @@
"license": "MIT",
"bugs": {
"url": "https://github.com/Borewit/music-metadata/issues"
},
"nyc": {
"exclude": [
"test/**/*.ts",
"src/**/*.js"
],
"extension": [
".ts"
],
"sourceMap": true,
"instrument": true,
"reporter": [
"lcov",
"text"
],
"report-dir": "coverage"
}
}
+3 -3
View File
@@ -1,7 +1,7 @@
import * as fs from 'fs';
import fs from 'node:fs';
import * as mm from '../lib';
import { IAudioMetadata, IOptions } from '../lib/type';
import * as mm from '../lib/index.js';
import { IAudioMetadata, IOptions } from '../lib/index.js';
type ParseFileMethod = (filePath: string, mimeType?: string, options?: IOptions) => Promise<IAudioMetadata>;
+3 -3
View File
@@ -1,8 +1,8 @@
import { assert } from 'chai';
import * as path from 'path';
import path from 'node:path';
import * as mm from '../lib';
import { samplePath } from './util';
import * as mm from '../lib/index.js';
import { samplePath } from './util.js';
describe('Asynchronous observer updates', () => {
+3 -3
View File
@@ -1,8 +1,8 @@
import { assert } from 'chai';
import * as path from 'path';
import path from 'node:path';
import { samplePath } from './util';
import * as mm from '../lib';
import { samplePath } from './util.js';
import * as mm from '../lib/index.js';
const t = assert;
+8 -8
View File
@@ -1,13 +1,13 @@
import { assert } from 'chai';
import * as path from 'path';
import path from 'node:path';
import { commonTags, isSingleton } from '../lib/common/GenericTagTypes';
import * as mm from '../lib';
import { CombinedTagMapper } from '../lib/common/CombinedTagMapper';
import { joinArtists } from '../lib/common/MetadataCollector';
import { parseHttpContentType } from '../lib/ParserFactory';
import { commonTags, isSingleton } from '../lib/common/GenericTagTypes.js';
import * as mm from '../lib/index.js';
import { CombinedTagMapper } from '../lib/common/CombinedTagMapper.js';
import { joinArtists } from '../lib/common/MetadataCollector.js';
import { parseHttpContentType } from '../lib/ParserFactory.js';
import { samplePath } from './util';
import { samplePath } from './util.js';
describe('GenericTagMap', () => {
@@ -45,7 +45,7 @@ describe('GenericTagMap', () => {
it('parse RIFF tags', async () => {
const filePath = path.join(__dirname, 'samples', 'issue-89 no-artist.aiff');
const filePath = path.join(samplePath, 'issue-89 no-artist.aiff');
const metadata = await mm.parseFile(filePath, {duration: true});
assert.deepEqual(metadata.common.artists, ['Beth Hart', 'Joe Bonamassa'], 'common.artists directly via WM/ARTISTS');
+5 -5
View File
@@ -1,14 +1,14 @@
import {assert} from 'chai';
import * as mm from '../lib';
import * as fs from 'fs';
import * as path from 'path';
import { samplePath } from './util';
import * as mm from '../lib/index.js';
import fs from 'node:fs';
import path from 'node:path';
import { samplePath } from './util.js';
const t = assert;
it("should handle concurrent parsing of pictures", () => {
const files = [path.join(samplePath, 'flac.flac'), path.join(__dirname, 'samples', 'flac-bug.flac')];
const files = [path.join(samplePath, 'flac.flac'), path.join(samplePath, 'flac-bug.flac')];
return Promise.all<any>(files.map(file => {
return mm.parseFile(file).then(result => {
+5 -5
View File
@@ -1,10 +1,10 @@
import { assert } from 'chai';
import * as path from 'path';
import path from 'node:path';
import * as mm from '../lib';
import { ID3v24TagMapper } from '../lib/id3v2/ID3v24TagMapper';
import { VorbisTagMapper } from '../lib/ogg/vorbis/VorbisTagMapper';
import { samplePath } from './util';
import * as mm from '../lib/index.js';
import { ID3v24TagMapper } from '../lib/id3v2/ID3v24TagMapper.js';
import { VorbisTagMapper } from '../lib/ogg/vorbis/VorbisTagMapper.js';
import { samplePath } from './util.js';
describe('Discogs mappings', () => {
+4 -3
View File
@@ -1,8 +1,9 @@
import {assert} from 'chai';
import * as path from 'path';
import * as mm from '../lib';
import { samplePath } from './util';
import path from 'node:path';
import * as mm from '../lib/index.js';
import { samplePath } from './util.js';
describe('Parse Philips DSDIFF', () => {
+6 -4
View File
@@ -1,8 +1,10 @@
import { assert } from 'chai';
import * as path from 'path';
import { Parsers } from './metadata-parsers';
import { IFormat } from '../lib';
import { samplePath } from './util';
import path from 'node:path';
import { Parsers } from './metadata-parsers.js';
import { IFormat } from '../lib/index.js';
import { samplePath } from './util.js';
const aacSamplePath = path.join(samplePath, 'aac');
+4 -4
View File
@@ -1,8 +1,8 @@
import * as path from 'path';
import { Parsers } from './metadata-parsers';
import path from 'node:path';
import { Parsers } from './metadata-parsers.js';
import { assert } from 'chai';
import * as mm from '../lib';
import { samplePath } from './util';
import * as mm from '../lib/index.js';
import { samplePath} from './util.js';
describe('Parse AIFF (Audio Interchange File Format)', () => {
+4 -4
View File
@@ -1,9 +1,9 @@
import { assert } from 'chai';
import * as path from 'path';
import path from 'node:path';
import * as mm from '../lib';
import { Parsers } from './metadata-parsers';
import { samplePath } from './util';
import * as mm from '../lib/index.js';
import { Parsers } from './metadata-parsers.js';
import { samplePath } from './util.js';
describe('Parse APE (Monkey\'s Audio)', () => {
+8 -7
View File
@@ -1,11 +1,12 @@
import { assert } from 'chai';
import * as mm from '../lib';
import * as path from 'path';
import GUID from '../lib/asf/GUID';
import { AsfUtil } from '../lib/asf/AsfUtil';
import { DataType } from '../lib/asf/AsfObject';
import { Parsers } from './metadata-parsers';
import { samplePath } from './util';
import * as mm from '../lib/index.js';
import path from 'node:path';
import GUID from '../lib/asf/GUID.js';
import { AsfUtil } from '../lib/asf/AsfUtil.js';
import { DataType } from '../lib/asf/AsfObject.js';
import { Parsers } from './metadata-parsers.js';
import { samplePath } from './util.js';
describe('Parse ASF', () => {
+3 -3
View File
@@ -1,8 +1,8 @@
import {assert} from 'chai';
import * as path from 'path';
import path from 'node:path';
import * as mm from '../lib';
import { samplePath } from './util';
import * as mm from '../lib/index.js';
import { samplePath } from './util.js';
describe('Parse Sony DSF (DSD Stream File)', () => {
+6 -5
View File
@@ -1,9 +1,10 @@
import { assert } from 'chai';
import * as mm from '../lib';
import * as fs from 'fs';
import * as path from 'path';
import { Parsers } from './metadata-parsers';
import { samplePath } from './util';
import fs from 'node:fs';
import * as path from 'node:path';
import * as mm from '../lib/index.js';
import { Parsers } from './metadata-parsers.js';
import { samplePath } from './util.js';
const t = assert;
+4 -3
View File
@@ -1,7 +1,8 @@
import * as path from 'path';
import * as mm from '../lib';
import path from 'node:path';
import { assert } from 'chai';
import { samplePath } from './util';
import * as mm from '../lib/index.js';
import { samplePath } from './util.js';
describe('Matroska formats', () => {
+4 -4
View File
@@ -1,9 +1,9 @@
import { assert } from 'chai';
import * as path from 'path';
import path from 'node:path';
import * as mm from '../lib';
import { Parsers } from './metadata-parsers';
import { samplePath } from './util';
import * as mm from '../lib/index.js';
import { Parsers } from './metadata-parsers.js';
import { samplePath } from './util.js';
describe('Parse MP3 files', () => {
+5 -5
View File
@@ -1,10 +1,10 @@
import { assert } from 'chai';
import * as path from 'path';
import * as fs from 'fs';
import path from 'node:path';
import fs from 'node:fs';
import * as mm from '../lib';
import { Parsers } from './metadata-parsers';
import { samplePath } from './util';
import * as mm from '../lib/index.js';
import { Parsers } from './metadata-parsers.js';
import { samplePath } from './util.js';
const t = assert;
+6 -6
View File
@@ -1,11 +1,11 @@
import { assert } from 'chai';
import * as fs from 'fs';
import * as path from 'path';
import fs from 'node:fs';
import path from 'node:path';
import { samplePath, SourceStream } from './util';
import { ID3v24TagMapper } from '../lib/id3v2/ID3v24TagMapper';
import { Parsers } from './metadata-parsers';
import * as mm from '../lib';
import { samplePath, SourceStream } from './util.js';
import { ID3v24TagMapper } from '../lib/id3v2/ID3v24TagMapper.js';
import { Parsers } from './metadata-parsers.js';
import * as mm from '../lib/index.js';
const t = assert;
+3 -3
View File
@@ -1,8 +1,8 @@
import { assert } from 'chai';
import * as path from 'path';
import path from 'node:path';
import { Parsers } from './metadata-parsers';
import { samplePath } from './util';
import { Parsers } from './metadata-parsers.js';
import { samplePath } from './util.js';
describe('Parse Musepack (.mpc)', () => {
+5 -5
View File
@@ -1,10 +1,10 @@
import { assert, expect } from 'chai';
import * as path from 'path';
import path from 'node:path';
import { Parsers } from './metadata-parsers';
import * as mm from '../lib';
import { samplePath } from './util';
import { IdHeader } from '../lib/ogg/opus/Opus';
import { Parsers } from './metadata-parsers.js';
import * as mm from '../lib/index.js';
import { samplePath } from './util.js';
import { IdHeader } from '../lib/ogg/opus/Opus.js';
const oggSamplePath = path.join(samplePath, 'ogg');
+5 -5
View File
@@ -1,10 +1,10 @@
import { assert } from 'chai';
import * as path from 'path';
import path from 'node:path';
import * as mm from '../lib';
import { samplePath } from './util';
import * as mm from '../lib/index.js';
import { samplePath } from './util.js';
import { IFormat, INativeTagDict } from '../lib/type';
import { IFormat, INativeTagDict } from '../lib/index.js';
const wavSamples = path.join(samplePath, 'wav');
@@ -61,7 +61,7 @@ describe('Parse RIFF/WAVE audio format', () => {
it('should map RIFF tags to common', async () => {
// Metadata edited with Adobe Audition CC 2018.1
const filePath = path.join(__dirname, 'samples', 'riff_adobe_audition.wav');
const filePath = path.join(samplePath, 'riff_adobe_audition.wav');
const metadata = await mm.parseFile(filePath);
const format = metadata.format;
+3 -3
View File
@@ -1,8 +1,8 @@
import { assert } from 'chai';
import * as path from 'path';
import path from 'node:path';
import { Parsers } from './metadata-parsers';
import { samplePath } from './util';
import { Parsers } from './metadata-parsers.js';
import { samplePath } from './util.js';
const t = assert;

Some files were not shown because too many files have changed in this diff Show More