@dragon708/docmind-markdown 1.2.5 → 1.2.6
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/node_modules/music-metadata/LICENSE.txt +3 -3
- package/node_modules/music-metadata/README.md +246 -690
- package/node_modules/music-metadata/lib/ParserFactory.d.ts +31 -27
- package/node_modules/music-metadata/lib/ParserFactory.js +219 -108
- package/node_modules/music-metadata/lib/aiff/AiffParser.d.ts +2 -2
- package/node_modules/music-metadata/lib/aiff/AiffParser.js +38 -34
- package/node_modules/music-metadata/lib/aiff/AiffTagMap.d.ts +1 -1
- package/node_modules/music-metadata/lib/aiff/AiffTagMap.js +7 -2
- package/node_modules/music-metadata/lib/aiff/AiffToken.d.ts +6 -32
- package/node_modules/music-metadata/lib/aiff/AiffToken.js +17 -27
- package/node_modules/music-metadata/lib/apev2/APEv2Parser.d.ts +8 -24
- package/node_modules/music-metadata/lib/apev2/APEv2Parser.js +66 -78
- package/node_modules/music-metadata/lib/apev2/APEv2TagMapper.d.ts +1 -1
- package/node_modules/music-metadata/lib/apev2/APEv2TagMapper.js +8 -4
- package/node_modules/music-metadata/lib/apev2/APEv2Token.d.ts +11 -10
- package/node_modules/music-metadata/lib/apev2/APEv2Token.js +27 -16
- package/node_modules/music-metadata/lib/asf/AsfObject.d.ts +53 -59
- package/node_modules/music-metadata/lib/asf/AsfObject.js +131 -97
- package/node_modules/music-metadata/lib/asf/AsfParser.d.ts +1 -1
- package/node_modules/music-metadata/lib/asf/AsfParser.js +43 -42
- package/node_modules/music-metadata/lib/asf/AsfTagMapper.d.ts +2 -2
- package/node_modules/music-metadata/lib/asf/AsfTagMapper.js +10 -6
- package/node_modules/music-metadata/lib/asf/AsfUtil.d.ts +13 -4
- package/node_modules/music-metadata/lib/asf/AsfUtil.js +36 -30
- package/node_modules/music-metadata/lib/asf/GUID.d.ts +84 -0
- package/node_modules/music-metadata/lib/asf/GUID.js +121 -0
- package/node_modules/music-metadata/lib/common/BasicParser.d.ts +9 -9
- package/node_modules/music-metadata/lib/common/BasicParser.js +7 -2
- package/node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.d.ts +3 -3
- package/node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.js +7 -2
- package/node_modules/music-metadata/lib/common/CombinedTagMapper.d.ts +5 -5
- package/node_modules/music-metadata/lib/common/CombinedTagMapper.js +28 -24
- package/node_modules/music-metadata/lib/common/FourCC.d.ts +1 -1
- package/node_modules/music-metadata/lib/common/FourCC.js +11 -10
- package/node_modules/music-metadata/lib/common/GenericTagMapper.d.ts +13 -13
- package/node_modules/music-metadata/lib/common/GenericTagMapper.js +12 -7
- package/node_modules/music-metadata/lib/common/GenericTagTypes.d.ts +6 -7
- package/node_modules/music-metadata/lib/common/GenericTagTypes.js +85 -86
- package/node_modules/music-metadata/lib/common/MetadataCollector.d.ts +10 -20
- package/node_modules/music-metadata/lib/common/MetadataCollector.js +69 -100
- package/node_modules/music-metadata/lib/common/RandomFileReader.d.ts +22 -0
- package/node_modules/music-metadata/lib/common/RandomFileReader.js +34 -0
- package/node_modules/music-metadata/lib/common/RandomUint8ArrayReader.d.ts +18 -0
- package/node_modules/music-metadata/lib/common/RandomUint8ArrayReader.js +25 -0
- package/node_modules/music-metadata/lib/common/Util.d.ts +12 -11
- package/node_modules/music-metadata/lib/common/Util.js +53 -47
- package/node_modules/music-metadata/lib/core.d.ts +15 -42
- package/node_modules/music-metadata/lib/core.js +38 -74
- package/node_modules/music-metadata/lib/dsdiff/DsdiffParser.d.ts +1 -16
- package/node_modules/music-metadata/lib/dsdiff/DsdiffParser.js +44 -55
- package/node_modules/music-metadata/lib/dsdiff/DsdiffToken.d.ts +3 -3
- package/node_modules/music-metadata/lib/dsdiff/DsdiffToken.js +7 -4
- package/node_modules/music-metadata/lib/dsf/DsfChunk.d.ts +10 -11
- package/node_modules/music-metadata/lib/dsf/DsfChunk.js +19 -15
- package/node_modules/music-metadata/lib/dsf/DsfParser.d.ts +1 -16
- package/node_modules/music-metadata/lib/dsf/DsfParser.js +20 -21
- package/node_modules/music-metadata/lib/flac/FlacParser.d.ts +15 -16
- package/node_modules/music-metadata/lib/flac/FlacParser.js +119 -69
- package/node_modules/music-metadata/lib/id3v1/ID3v1Parser.d.ts +3 -7
- package/node_modules/music-metadata/lib/id3v1/ID3v1Parser.js +36 -39
- package/node_modules/music-metadata/lib/id3v1/ID3v1TagMap.d.ts +1 -1
- package/node_modules/music-metadata/lib/id3v1/ID3v1TagMap.js +7 -2
- package/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.d.ts +2 -2
- package/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.js +19 -15
- package/node_modules/music-metadata/lib/id3v2/FrameParser.d.ts +3 -64
- package/node_modules/music-metadata/lib/id3v2/FrameParser.js +103 -244
- package/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.d.ts +2 -2
- package/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.js +16 -6
- package/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.d.ts +5 -5
- package/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js +35 -36
- package/node_modules/music-metadata/lib/id3v2/ID3v2Parser.d.ts +6 -11
- package/node_modules/music-metadata/lib/id3v2/ID3v2Parser.js +104 -91
- package/node_modules/music-metadata/lib/id3v2/ID3v2Token.d.ts +29 -67
- package/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +36 -76
- package/node_modules/music-metadata/lib/iff/index.d.ts +1 -1
- package/node_modules/music-metadata/lib/iff/index.js +7 -4
- package/node_modules/music-metadata/lib/index.d.ts +31 -8
- package/node_modules/music-metadata/lib/index.js +53 -32
- package/node_modules/music-metadata/lib/lyrics3/Lyrics3.d.ts +2 -2
- package/node_modules/music-metadata/lib/lyrics3/Lyrics3.js +13 -13
- package/node_modules/music-metadata/lib/matroska/MatroskaDtd.d.ts +2 -2
- package/node_modules/music-metadata/lib/matroska/MatroskaDtd.js +242 -246
- package/node_modules/music-metadata/lib/matroska/MatroskaParser.d.ts +24 -6
- package/node_modules/music-metadata/lib/matroska/MatroskaParser.js +218 -124
- package/node_modules/music-metadata/lib/matroska/MatroskaTagMapper.d.ts +1 -1
- package/node_modules/music-metadata/lib/matroska/MatroskaTagMapper.js +7 -3
- package/node_modules/music-metadata/lib/matroska/types.d.ts +76 -43
- package/node_modules/music-metadata/lib/matroska/types.js +33 -27
- package/node_modules/music-metadata/lib/mp4/Atom.d.ts +7 -7
- package/node_modules/music-metadata/lib/mp4/Atom.js +22 -15
- package/node_modules/music-metadata/lib/mp4/AtomToken.d.ts +18 -110
- package/node_modules/music-metadata/lib/mp4/AtomToken.js +66 -184
- package/node_modules/music-metadata/lib/mp4/MP4Parser.d.ts +4 -6
- package/node_modules/music-metadata/lib/mp4/MP4Parser.js +128 -255
- package/node_modules/music-metadata/lib/mp4/MP4TagMapper.d.ts +4 -4
- package/node_modules/music-metadata/lib/mp4/MP4TagMapper.js +12 -8
- package/node_modules/music-metadata/lib/mpeg/ExtendedLameHeader.d.ts +5 -5
- package/node_modules/music-metadata/lib/mpeg/ExtendedLameHeader.js +10 -7
- package/node_modules/music-metadata/lib/mpeg/MpegParser.d.ts +4 -17
- package/node_modules/music-metadata/lib/mpeg/MpegParser.js +131 -176
- package/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.d.ts +14 -16
- package/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.js +19 -14
- package/node_modules/music-metadata/lib/mpeg/XingTag.d.ts +7 -6
- package/node_modules/music-metadata/lib/mpeg/XingTag.js +18 -14
- package/node_modules/music-metadata/lib/musepack/index.d.ts +5 -0
- package/node_modules/music-metadata/lib/musepack/index.js +32 -0
- package/node_modules/music-metadata/lib/musepack/sv7/BitReader.d.ts +2 -2
- package/node_modules/music-metadata/lib/musepack/sv7/BitReader.js +24 -16
- package/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.d.ts +1 -1
- package/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js +15 -16
- package/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.d.ts +1 -1
- package/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.js +7 -5
- package/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.d.ts +1 -1
- package/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js +17 -18
- package/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.d.ts +3 -5
- package/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.js +12 -14
- package/node_modules/music-metadata/lib/ogg/{OggToken.d.ts → Ogg.d.ts} +6 -17
- package/node_modules/music-metadata/lib/ogg/Ogg.js +2 -0
- package/node_modules/music-metadata/lib/ogg/OggParser.d.ts +12 -16
- package/node_modules/music-metadata/lib/ogg/OggParser.js +102 -101
- package/node_modules/music-metadata/lib/ogg/opus/Opus.d.ts +2 -17
- package/node_modules/music-metadata/lib/ogg/opus/Opus.js +14 -13
- package/node_modules/music-metadata/lib/ogg/opus/OpusParser.d.ts +25 -0
- package/node_modules/music-metadata/lib/ogg/opus/{OpusStream.js → OpusParser.js} +18 -18
- package/node_modules/music-metadata/lib/ogg/speex/Speex.d.ts +1 -1
- package/node_modules/music-metadata/lib/ogg/speex/Speex.js +19 -16
- package/node_modules/music-metadata/lib/ogg/speex/SpeexParser.d.ts +22 -0
- package/node_modules/music-metadata/lib/ogg/speex/{SpeexStream.js → SpeexParser.js} +13 -9
- package/node_modules/music-metadata/lib/ogg/theora/Theora.d.ts +1 -1
- package/node_modules/music-metadata/lib/ogg/theora/Theora.js +11 -8
- package/node_modules/music-metadata/lib/ogg/theora/TheoraParser.d.ts +28 -0
- package/node_modules/music-metadata/lib/ogg/theora/TheoraParser.js +44 -0
- package/node_modules/music-metadata/lib/ogg/vorbis/Vorbis.d.ts +7 -6
- package/node_modules/music-metadata/lib/ogg/vorbis/Vorbis.js +29 -34
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.d.ts +1 -1
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.js +9 -6
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisParser.d.ts +36 -0
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisParser.js +128 -0
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.d.ts +3 -3
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.js +9 -5
- package/node_modules/music-metadata/lib/riff/RiffChunk.d.ts +5 -5
- package/node_modules/music-metadata/lib/riff/RiffChunk.js +9 -5
- package/node_modules/music-metadata/lib/riff/RiffInfoTagMap.d.ts +2 -2
- package/node_modules/music-metadata/lib/riff/RiffInfoTagMap.js +25 -20
- package/node_modules/music-metadata/lib/type.d.ts +52 -121
- package/node_modules/music-metadata/lib/type.js +6 -2
- package/node_modules/music-metadata/lib/wav/BwfChunk.d.ts +1 -1
- package/node_modules/music-metadata/lib/wav/BwfChunk.js +11 -8
- package/node_modules/music-metadata/lib/wav/WaveChunk.d.ts +20 -50
- package/node_modules/music-metadata/lib/wav/WaveChunk.js +32 -45
- package/node_modules/music-metadata/lib/wav/WaveParser.d.ts +2 -2
- package/node_modules/music-metadata/lib/wav/WaveParser.js +39 -46
- package/node_modules/music-metadata/lib/wavpack/WavPackParser.d.ts +2 -18
- package/node_modules/music-metadata/lib/wavpack/WavPackParser.js +32 -42
- package/node_modules/music-metadata/lib/wavpack/WavPackToken.d.ts +18 -14
- package/node_modules/music-metadata/lib/wavpack/WavPackToken.js +30 -24
- package/node_modules/music-metadata/package.json +74 -81
- package/package.json +1 -5
- package/node_modules/@borewit/text-codec/LICENSE.txt +0 -9
- package/node_modules/@borewit/text-codec/README.md +0 -87
- package/node_modules/@borewit/text-codec/lib/index.d.ts +0 -6
- package/node_modules/@borewit/text-codec/lib/index.js +0 -380
- package/node_modules/@borewit/text-codec/package.json +0 -70
- package/node_modules/music-metadata/lib/ParseError.d.ts +0 -87
- package/node_modules/music-metadata/lib/ParseError.js +0 -38
- package/node_modules/music-metadata/lib/aiff/AiffLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/aiff/AiffLoader.js +0 -8
- package/node_modules/music-metadata/lib/apev2/Apev2Loader.d.ts +0 -2
- package/node_modules/music-metadata/lib/apev2/Apev2Loader.js +0 -8
- package/node_modules/music-metadata/lib/asf/AsfGuid.d.ts +0 -83
- package/node_modules/music-metadata/lib/asf/AsfGuid.js +0 -109
- package/node_modules/music-metadata/lib/asf/AsfLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/asf/AsfLoader.js +0 -8
- package/node_modules/music-metadata/lib/dsdiff/DsdiffLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/dsdiff/DsdiffLoader.js +0 -8
- package/node_modules/music-metadata/lib/dsf/DsfLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/dsf/DsfLoader.js +0 -8
- package/node_modules/music-metadata/lib/ebml/EbmlIterator.d.ts +0 -67
- package/node_modules/music-metadata/lib/ebml/EbmlIterator.js +0 -218
- package/node_modules/music-metadata/lib/ebml/types.d.ts +0 -37
- package/node_modules/music-metadata/lib/ebml/types.js +0 -8
- package/node_modules/music-metadata/lib/flac/FlacLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/flac/FlacLoader.js +0 -8
- package/node_modules/music-metadata/lib/flac/FlacToken.d.ts +0 -45
- package/node_modules/music-metadata/lib/flac/FlacToken.js +0 -63
- package/node_modules/music-metadata/lib/id3v2/FrameHeader.d.ts +0 -31
- package/node_modules/music-metadata/lib/id3v2/FrameHeader.js +0 -73
- package/node_modules/music-metadata/lib/id3v2/ID3v2ChapterToken.d.ts +0 -11
- package/node_modules/music-metadata/lib/id3v2/ID3v2ChapterToken.js +0 -17
- package/node_modules/music-metadata/lib/lrc/LyricsParser.d.ts +0 -9
- package/node_modules/music-metadata/lib/lrc/LyricsParser.js +0 -45
- package/node_modules/music-metadata/lib/matroska/MatroskaLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/matroska/MatroskaLoader.js +0 -8
- package/node_modules/music-metadata/lib/mp4/Mp4Loader.d.ts +0 -2
- package/node_modules/music-metadata/lib/mp4/Mp4Loader.js +0 -8
- package/node_modules/music-metadata/lib/mpeg/MpegLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/mpeg/MpegLoader.js +0 -8
- package/node_modules/music-metadata/lib/musepack/MusepackConentError.d.ts +0 -15
- package/node_modules/music-metadata/lib/musepack/MusepackConentError.js +0 -3
- package/node_modules/music-metadata/lib/musepack/MusepackLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/musepack/MusepackLoader.js +0 -8
- package/node_modules/music-metadata/lib/musepack/MusepackParser.d.ts +0 -4
- package/node_modules/music-metadata/lib/musepack/MusepackParser.js +0 -30
- package/node_modules/music-metadata/lib/ogg/OggLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/ogg/OggLoader.js +0 -8
- package/node_modules/music-metadata/lib/ogg/OggToken.js +0 -41
- package/node_modules/music-metadata/lib/ogg/flac/FlacStream.d.ts +0 -29
- package/node_modules/music-metadata/lib/ogg/flac/FlacStream.js +0 -74
- package/node_modules/music-metadata/lib/ogg/opus/OpusStream.d.ts +0 -24
- package/node_modules/music-metadata/lib/ogg/speex/SpeexStream.d.ts +0 -20
- package/node_modules/music-metadata/lib/ogg/theora/TheoraStream.d.ts +0 -25
- package/node_modules/music-metadata/lib/ogg/theora/TheoraStream.js +0 -39
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.d.ts +0 -53
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.js +0 -136
- package/node_modules/music-metadata/lib/wav/WaveLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/wav/WaveLoader.js +0 -8
- package/node_modules/music-metadata/lib/wavpack/WavPackLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/wavpack/WavPackLoader.js +0 -8
- package/node_modules/music-metadata/node_modules/file-type/core.d.ts +0 -253
- package/node_modules/music-metadata/node_modules/file-type/core.js +0 -2899
- package/node_modules/music-metadata/node_modules/file-type/index.d.ts +0 -98
- package/node_modules/music-metadata/node_modules/file-type/index.js +0 -163
- package/node_modules/music-metadata/node_modules/file-type/license +0 -9
- package/node_modules/music-metadata/node_modules/file-type/package.json +0 -290
- package/node_modules/music-metadata/node_modules/file-type/readme.md +0 -667
- package/node_modules/music-metadata/node_modules/file-type/supported.js +0 -360
- package/node_modules/music-metadata/node_modules/file-type/util.js +0 -60
- package/node_modules/music-metadata/node_modules/strtok3/LICENSE.txt +0 -21
- package/node_modules/music-metadata/node_modules/strtok3/README.md +0 -399
- package/node_modules/music-metadata/node_modules/strtok3/lib/AbstractTokenizer.d.ts +0 -76
- package/node_modules/music-metadata/node_modules/strtok3/lib/AbstractTokenizer.js +0 -111
- package/node_modules/music-metadata/node_modules/strtok3/lib/BlobTokenizer.d.ts +0 -29
- package/node_modules/music-metadata/node_modules/strtok3/lib/BlobTokenizer.js +0 -53
- package/node_modules/music-metadata/node_modules/strtok3/lib/BufferTokenizer.d.ts +0 -29
- package/node_modules/music-metadata/node_modules/strtok3/lib/BufferTokenizer.js +0 -52
- package/node_modules/music-metadata/node_modules/strtok3/lib/FileTokenizer.d.ts +0 -37
- package/node_modules/music-metadata/node_modules/strtok3/lib/FileTokenizer.js +0 -61
- package/node_modules/music-metadata/node_modules/strtok3/lib/ReadStreamTokenizer.d.ts +0 -34
- package/node_modules/music-metadata/node_modules/strtok3/lib/ReadStreamTokenizer.js +0 -107
- package/node_modules/music-metadata/node_modules/strtok3/lib/core.d.ts +0 -40
- package/node_modules/music-metadata/node_modules/strtok3/lib/core.js +0 -62
- package/node_modules/music-metadata/node_modules/strtok3/lib/index.d.ts +0 -16
- package/node_modules/music-metadata/node_modules/strtok3/lib/index.js +0 -22
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/AbstractStreamReader.d.ts +0 -54
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/AbstractStreamReader.js +0 -71
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/Deferred.d.ts +0 -6
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/Deferred.js +0 -10
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/Errors.d.ts +0 -10
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/Errors.js +0 -16
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/StreamReader.d.ts +0 -29
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/StreamReader.js +0 -83
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamByobReader.d.ts +0 -14
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamByobReader.js +0 -27
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamDefaultReader.d.ts +0 -19
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamDefaultReader.js +0 -62
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamReader.d.ts +0 -14
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamReader.js +0 -13
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamReaderFactory.d.ts +0 -5
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamReaderFactory.js +0 -19
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/index.d.ts +0 -6
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/index.js +0 -5
- package/node_modules/music-metadata/node_modules/strtok3/lib/types.d.ts +0 -139
- package/node_modules/music-metadata/node_modules/strtok3/lib/types.js +0 -1
- package/node_modules/music-metadata/node_modules/strtok3/package.json +0 -94
- package/node_modules/music-metadata/node_modules/token-types/LICENSE.txt +0 -9
- package/node_modules/music-metadata/node_modules/token-types/README.md +0 -120
- package/node_modules/music-metadata/node_modules/token-types/lib/index.d.ts +0 -135
- package/node_modules/music-metadata/node_modules/token-types/lib/index.js +0 -401
- package/node_modules/music-metadata/node_modules/token-types/package.json +0 -81
- package/node_modules/sprintf-js/.npmignore +0 -1
- package/node_modules/sprintf-js/LICENSE +0 -24
- package/node_modules/sprintf-js/README.md +0 -88
- package/node_modules/sprintf-js/bower.json +0 -14
- package/node_modules/sprintf-js/demo/angular.html +0 -20
- package/node_modules/sprintf-js/dist/angular-sprintf.min.js +0 -4
- package/node_modules/sprintf-js/dist/angular-sprintf.min.js.map +0 -1
- package/node_modules/sprintf-js/dist/angular-sprintf.min.map +0 -1
- package/node_modules/sprintf-js/dist/sprintf.min.js +0 -4
- package/node_modules/sprintf-js/dist/sprintf.min.js.map +0 -1
- package/node_modules/sprintf-js/dist/sprintf.min.map +0 -1
- package/node_modules/sprintf-js/gruntfile.js +0 -36
- package/node_modules/sprintf-js/package.json +0 -22
- package/node_modules/sprintf-js/src/angular-sprintf.js +0 -18
- package/node_modules/sprintf-js/src/sprintf.js +0 -208
- package/node_modules/sprintf-js/test/test.js +0 -82
- package/node_modules/uint8array-extras/index.d.ts +0 -331
- package/node_modules/uint8array-extras/index.js +0 -318
- package/node_modules/uint8array-extras/license +0 -9
- package/node_modules/uint8array-extras/package.json +0 -54
- package/node_modules/uint8array-extras/readme.md +0 -318
- package/node_modules/win-guid/LICENSE.txt +0 -9
- package/node_modules/win-guid/README.md +0 -113
- package/node_modules/win-guid/lib/guid.d.ts +0 -20
- package/node_modules/win-guid/lib/guid.js +0 -107
- package/node_modules/win-guid/package.json +0 -55
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/LICENSE +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/README.md +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/index.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/append/constant.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/append.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/count.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/help.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/store/constant.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/store/false.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/store/true.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/store.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/subparsers.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/version.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action_container.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/argparse.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/argument/error.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/argument/exclusive.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/argument/group.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/argument_parser.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/const.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/help/added_formatters.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/help/formatter.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/namespace.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/utils.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/package.json +0 -0
|
@@ -1,20 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export interface IParserLoader {
|
|
6
|
-
/**
|
|
7
|
-
* Returns a list of supported file extensions
|
|
8
|
-
*/
|
|
9
|
-
extensions: string[];
|
|
10
|
-
mimeTypes: string[];
|
|
11
|
-
parserType: ParserType;
|
|
1
|
+
import { IOptions, IAudioMetadata, ParserType } from './type';
|
|
2
|
+
import { ITokenizer } from 'strtok3/lib/core';
|
|
3
|
+
import { INativeMetadataCollector } from './common/MetadataCollector';
|
|
4
|
+
export interface ITokenParser {
|
|
12
5
|
/**
|
|
13
|
-
*
|
|
6
|
+
* Initialize parser with output (metadata), input (tokenizer) & parsing options (options).
|
|
7
|
+
* @param metadata - Output
|
|
8
|
+
* @param tokenizer - Input
|
|
9
|
+
* @param options - Parsing options
|
|
14
10
|
*/
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
export interface ITokenParser {
|
|
11
|
+
init(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): ITokenParser;
|
|
18
12
|
/**
|
|
19
13
|
* Parse audio track.
|
|
20
14
|
* Called after init(...).
|
|
@@ -22,23 +16,33 @@ export interface ITokenParser {
|
|
|
22
16
|
*/
|
|
23
17
|
parse(): Promise<void>;
|
|
24
18
|
}
|
|
25
|
-
|
|
19
|
+
export declare function parseHttpContentType(contentType: string): {
|
|
20
|
+
type: string;
|
|
21
|
+
subtype: string;
|
|
22
|
+
suffix?: string;
|
|
26
23
|
parameters: {
|
|
27
24
|
[id: string]: string;
|
|
28
25
|
};
|
|
29
|
-
}
|
|
30
|
-
export declare function parseHttpContentType(contentType: string): IContentType;
|
|
26
|
+
};
|
|
31
27
|
export declare class ParserFactory {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Parse metadata from tokenizer
|
|
30
|
+
* @param tokenizer - Tokenizer
|
|
31
|
+
* @param opts - Options
|
|
32
|
+
* @returns Native metadata
|
|
33
|
+
*/
|
|
34
|
+
static parseOnContentType(tokenizer: ITokenizer, opts: IOptions): Promise<IAudioMetadata>;
|
|
35
|
+
static parse(tokenizer: ITokenizer, parserId: ParserType, opts: IOptions): Promise<IAudioMetadata>;
|
|
36
36
|
/**
|
|
37
37
|
* @param filePath - Path, filename or extension to audio file
|
|
38
|
-
* @return Parser
|
|
38
|
+
* @return Parser sub-module name
|
|
39
|
+
*/
|
|
40
|
+
static getParserIdForExtension(filePath: string): ParserType;
|
|
41
|
+
static loadParser(moduleName: ParserType): Promise<ITokenParser>;
|
|
42
|
+
private static getExtension;
|
|
43
|
+
/**
|
|
44
|
+
* @param httpContentType - HTTP Content-Type, extension, path or filename
|
|
45
|
+
* @returns Parser sub-module name
|
|
39
46
|
*/
|
|
40
|
-
|
|
41
|
-
findLoaderForContentType(httpContentType: string): IParserLoader | undefined;
|
|
42
|
-
getSupportedMimeTypes(): string[];
|
|
47
|
+
private static getParserIdForMimeType;
|
|
43
48
|
}
|
|
44
|
-
export {};
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const debug =
|
|
23
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParserFactory = exports.parseHttpContentType = void 0;
|
|
4
|
+
const FileType = require("file-type/core");
|
|
5
|
+
const ContentType = require("content-type");
|
|
6
|
+
const MimeType = require("media-typer");
|
|
7
|
+
const debug_1 = require("debug");
|
|
8
|
+
const MetadataCollector_1 = require("./common/MetadataCollector");
|
|
9
|
+
const AiffParser_1 = require("./aiff/AiffParser");
|
|
10
|
+
const APEv2Parser_1 = require("./apev2/APEv2Parser");
|
|
11
|
+
const AsfParser_1 = require("./asf/AsfParser");
|
|
12
|
+
const FlacParser_1 = require("./flac/FlacParser");
|
|
13
|
+
const MP4Parser_1 = require("./mp4/MP4Parser");
|
|
14
|
+
const MpegParser_1 = require("./mpeg/MpegParser");
|
|
15
|
+
const musepack_1 = require("./musepack");
|
|
16
|
+
const OggParser_1 = require("./ogg/OggParser");
|
|
17
|
+
const WaveParser_1 = require("./wav/WaveParser");
|
|
18
|
+
const WavPackParser_1 = require("./wavpack/WavPackParser");
|
|
19
|
+
const DsfParser_1 = require("./dsf/DsfParser");
|
|
20
|
+
const DsdiffParser_1 = require("./dsdiff/DsdiffParser");
|
|
21
|
+
const MatroskaParser_1 = require("./matroska/MatroskaParser");
|
|
22
|
+
const debug = (0, debug_1.default)('music-metadata:parser:factory');
|
|
23
|
+
function parseHttpContentType(contentType) {
|
|
24
24
|
const type = ContentType.parse(contentType);
|
|
25
|
-
const mime =
|
|
25
|
+
const mime = MimeType.parse(type.type);
|
|
26
26
|
return {
|
|
27
27
|
type: mime.type,
|
|
28
28
|
subtype: mime.subtype,
|
|
@@ -30,112 +30,223 @@ export function parseHttpContentType(contentType) {
|
|
|
30
30
|
parameters: type.parameters
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
async parse(tokenizer, parserLoader, opts) {
|
|
56
|
-
if (tokenizer.supportsRandomAccess()) {
|
|
57
|
-
debug('tokenizer supports random-access, scanning for appending headers');
|
|
58
|
-
await scanAppendingHeaders(tokenizer, opts);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
debug('tokenizer does not support random-access, cannot scan for appending headers');
|
|
33
|
+
exports.parseHttpContentType = parseHttpContentType;
|
|
34
|
+
async function parse(tokenizer, parserId, opts = {}) {
|
|
35
|
+
// Parser found, execute parser
|
|
36
|
+
const parser = await ParserFactory.loadParser(parserId);
|
|
37
|
+
const metadata = new MetadataCollector_1.MetadataCollector(opts);
|
|
38
|
+
await parser.init(metadata, tokenizer, opts).parse();
|
|
39
|
+
return metadata.toCommonMetadata();
|
|
40
|
+
}
|
|
41
|
+
class ParserFactory {
|
|
42
|
+
/**
|
|
43
|
+
* Parse metadata from tokenizer
|
|
44
|
+
* @param tokenizer - Tokenizer
|
|
45
|
+
* @param opts - Options
|
|
46
|
+
* @returns Native metadata
|
|
47
|
+
*/
|
|
48
|
+
static async parseOnContentType(tokenizer, opts) {
|
|
49
|
+
const { mimeType, path, url } = await tokenizer.fileInfo;
|
|
50
|
+
// Resolve parser based on MIME-type or file extension
|
|
51
|
+
const parserId = ParserFactory.getParserIdForMimeType(mimeType) || ParserFactory.getParserIdForExtension(path) || ParserFactory.getParserIdForExtension(url);
|
|
52
|
+
if (!parserId) {
|
|
53
|
+
debug('No parser found for MIME-type / extension: ' + mimeType);
|
|
62
54
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
55
|
+
return this.parse(tokenizer, parserId, opts);
|
|
56
|
+
}
|
|
57
|
+
static async parse(tokenizer, parserId, opts) {
|
|
58
|
+
if (!parserId) {
|
|
59
|
+
// Parser could not be determined on MIME-type or extension
|
|
60
|
+
debug('Guess parser on content...');
|
|
61
|
+
const buf = Buffer.alloc(4100);
|
|
62
|
+
await tokenizer.peekBuffer(buf, { mayBeLess: true });
|
|
63
|
+
if (tokenizer.fileInfo.path) {
|
|
64
|
+
parserId = this.getParserIdForExtension(tokenizer.fileInfo.path);
|
|
70
65
|
}
|
|
71
|
-
if (!
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const guessedType = await fileTypeFromBuffer(buf, { mpegOffsetTolerance: 10 });
|
|
76
|
-
if (!guessedType || !guessedType.mime) {
|
|
77
|
-
throw new CouldNotDetermineFileTypeError('Failed to determine audio format');
|
|
66
|
+
if (!parserId) {
|
|
67
|
+
const guessedType = await FileType.fromBuffer(buf);
|
|
68
|
+
if (!guessedType) {
|
|
69
|
+
throw new Error('Failed to determine audio format');
|
|
78
70
|
}
|
|
79
71
|
debug(`Guessed file type is mime=${guessedType.mime}, extension=${guessedType.ext}`);
|
|
80
|
-
|
|
81
|
-
if (!
|
|
82
|
-
throw new
|
|
72
|
+
parserId = ParserFactory.getParserIdForMimeType(guessedType.mime);
|
|
73
|
+
if (!parserId) {
|
|
74
|
+
throw new Error('Guessed MIME-type not supported: ' + guessedType.mime);
|
|
83
75
|
}
|
|
84
76
|
}
|
|
85
77
|
}
|
|
86
78
|
// Parser found, execute parser
|
|
87
|
-
|
|
88
|
-
const metadata = new MetadataCollector(opts);
|
|
89
|
-
const ParserImpl = await parserLoader.load();
|
|
90
|
-
const parser = new ParserImpl(metadata, tokenizer, opts ?? {});
|
|
91
|
-
debug(`Parser ${parserLoader.parserType} loaded`);
|
|
92
|
-
await parser.parse();
|
|
93
|
-
if (metadata.format.trackInfo) {
|
|
94
|
-
if (metadata.format.hasAudio === undefined) {
|
|
95
|
-
metadata.setFormat('hasAudio', !!metadata.format.trackInfo.find(track => track.type === TrackType.audio));
|
|
96
|
-
}
|
|
97
|
-
if (metadata.format.hasVideo === undefined) {
|
|
98
|
-
metadata.setFormat('hasVideo', !!metadata.format.trackInfo.find(track => track.type === TrackType.video));
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return metadata.toCommonMetadata();
|
|
79
|
+
return parse(tokenizer, parserId, opts);
|
|
102
80
|
}
|
|
103
81
|
/**
|
|
104
82
|
* @param filePath - Path, filename or extension to audio file
|
|
105
|
-
* @return Parser
|
|
83
|
+
* @return Parser sub-module name
|
|
106
84
|
*/
|
|
107
|
-
|
|
85
|
+
static getParserIdForExtension(filePath) {
|
|
108
86
|
if (!filePath)
|
|
109
87
|
return;
|
|
110
|
-
const extension = getExtension(filePath).toLocaleLowerCase() || filePath;
|
|
111
|
-
|
|
88
|
+
const extension = this.getExtension(filePath).toLocaleLowerCase() || filePath;
|
|
89
|
+
switch (extension) {
|
|
90
|
+
case '.mp2':
|
|
91
|
+
case '.mp3':
|
|
92
|
+
case '.m2a':
|
|
93
|
+
case '.aac': // Assume it is ADTS-container
|
|
94
|
+
return 'mpeg';
|
|
95
|
+
case '.ape':
|
|
96
|
+
return 'apev2';
|
|
97
|
+
case '.mp4':
|
|
98
|
+
case '.m4a':
|
|
99
|
+
case '.m4b':
|
|
100
|
+
case '.m4pa':
|
|
101
|
+
case '.m4v':
|
|
102
|
+
case '.m4r':
|
|
103
|
+
case '.3gp':
|
|
104
|
+
return 'mp4';
|
|
105
|
+
case '.wma':
|
|
106
|
+
case '.wmv':
|
|
107
|
+
case '.asf':
|
|
108
|
+
return 'asf';
|
|
109
|
+
case '.flac':
|
|
110
|
+
return 'flac';
|
|
111
|
+
case '.ogg':
|
|
112
|
+
case '.ogv':
|
|
113
|
+
case '.oga':
|
|
114
|
+
case '.ogm':
|
|
115
|
+
case '.ogx':
|
|
116
|
+
case '.opus': // recommended filename extension for Ogg Opus
|
|
117
|
+
case '.spx': // recommended filename extension for Ogg Speex
|
|
118
|
+
return 'ogg';
|
|
119
|
+
case '.aif':
|
|
120
|
+
case '.aiff':
|
|
121
|
+
case '.aifc':
|
|
122
|
+
return 'aiff';
|
|
123
|
+
case '.wav':
|
|
124
|
+
case '.bwf': // Broadcast Wave Format
|
|
125
|
+
return 'riff';
|
|
126
|
+
case '.wv':
|
|
127
|
+
case '.wvp':
|
|
128
|
+
return 'wavpack';
|
|
129
|
+
case '.mpc':
|
|
130
|
+
return 'musepack';
|
|
131
|
+
case '.dsf':
|
|
132
|
+
return 'dsf';
|
|
133
|
+
case '.dff':
|
|
134
|
+
return 'dsdiff';
|
|
135
|
+
case '.mka':
|
|
136
|
+
case '.mkv':
|
|
137
|
+
case '.mk3d':
|
|
138
|
+
case '.mks':
|
|
139
|
+
case '.webm':
|
|
140
|
+
return 'matroska';
|
|
141
|
+
}
|
|
112
142
|
}
|
|
113
|
-
|
|
143
|
+
static async loadParser(moduleName) {
|
|
144
|
+
switch (moduleName) {
|
|
145
|
+
case 'aiff': return new AiffParser_1.AIFFParser();
|
|
146
|
+
case 'adts':
|
|
147
|
+
case 'mpeg':
|
|
148
|
+
return new MpegParser_1.MpegParser();
|
|
149
|
+
case 'apev2': return new APEv2Parser_1.APEv2Parser();
|
|
150
|
+
case 'asf': return new AsfParser_1.AsfParser();
|
|
151
|
+
case 'dsf': return new DsfParser_1.DsfParser();
|
|
152
|
+
case 'dsdiff': return new DsdiffParser_1.DsdiffParser();
|
|
153
|
+
case 'flac': return new FlacParser_1.FlacParser();
|
|
154
|
+
case 'mp4': return new MP4Parser_1.MP4Parser();
|
|
155
|
+
case 'musepack': return new musepack_1.default();
|
|
156
|
+
case 'ogg': return new OggParser_1.OggParser();
|
|
157
|
+
case 'riff': return new WaveParser_1.WaveParser();
|
|
158
|
+
case 'wavpack': return new WavPackParser_1.WavPackParser();
|
|
159
|
+
case 'matroska': return new MatroskaParser_1.MatroskaParser();
|
|
160
|
+
default:
|
|
161
|
+
throw new Error(`Unknown parser type: ${moduleName}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
static getExtension(fname) {
|
|
165
|
+
const i = fname.lastIndexOf('.');
|
|
166
|
+
return i === -1 ? '' : fname.slice(i);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* @param httpContentType - HTTP Content-Type, extension, path or filename
|
|
170
|
+
* @returns Parser sub-module name
|
|
171
|
+
*/
|
|
172
|
+
static getParserIdForMimeType(httpContentType) {
|
|
114
173
|
let mime;
|
|
115
|
-
if (!httpContentType)
|
|
116
|
-
return;
|
|
117
174
|
try {
|
|
118
175
|
mime = parseHttpContentType(httpContentType);
|
|
119
176
|
}
|
|
120
|
-
catch (
|
|
177
|
+
catch (err) {
|
|
121
178
|
debug(`Invalid HTTP Content-Type header value: ${httpContentType}`);
|
|
122
179
|
return;
|
|
123
180
|
}
|
|
124
181
|
const subType = mime.subtype.indexOf('x-') === 0 ? mime.subtype.substring(2) : mime.subtype;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
182
|
+
switch (mime.type) {
|
|
183
|
+
case 'audio':
|
|
184
|
+
switch (subType) {
|
|
185
|
+
case 'mp3': // Incorrect MIME-type, Chrome, in Web API File object
|
|
186
|
+
case 'mpeg':
|
|
187
|
+
return 'mpeg';
|
|
188
|
+
case 'aac':
|
|
189
|
+
case 'aacp':
|
|
190
|
+
return 'adts';
|
|
191
|
+
case 'flac':
|
|
192
|
+
return 'flac';
|
|
193
|
+
case 'ape':
|
|
194
|
+
case 'monkeys-audio':
|
|
195
|
+
return 'apev2';
|
|
196
|
+
case 'mp4':
|
|
197
|
+
case 'm4a':
|
|
198
|
+
return 'mp4';
|
|
199
|
+
case 'ogg': // RFC 7845
|
|
200
|
+
case 'opus': // RFC 6716
|
|
201
|
+
case 'speex': // RFC 5574
|
|
202
|
+
return 'ogg';
|
|
203
|
+
case 'ms-wma':
|
|
204
|
+
case 'ms-wmv':
|
|
205
|
+
case 'ms-asf':
|
|
206
|
+
return 'asf';
|
|
207
|
+
case 'aiff':
|
|
208
|
+
case 'aif':
|
|
209
|
+
case 'aifc':
|
|
210
|
+
return 'aiff';
|
|
211
|
+
case 'vnd.wave':
|
|
212
|
+
case 'wav':
|
|
213
|
+
case 'wave':
|
|
214
|
+
return 'riff';
|
|
215
|
+
case 'wavpack':
|
|
216
|
+
return 'wavpack';
|
|
217
|
+
case 'musepack':
|
|
218
|
+
return 'musepack';
|
|
219
|
+
case 'matroska':
|
|
220
|
+
case 'webm':
|
|
221
|
+
return 'matroska';
|
|
222
|
+
case 'dsf':
|
|
223
|
+
return 'dsf';
|
|
224
|
+
}
|
|
225
|
+
break;
|
|
226
|
+
case 'video':
|
|
227
|
+
switch (subType) {
|
|
228
|
+
case 'ms-asf':
|
|
229
|
+
case 'ms-wmv':
|
|
230
|
+
return 'asf';
|
|
231
|
+
case 'm4v':
|
|
232
|
+
case 'mp4':
|
|
233
|
+
return 'mp4';
|
|
234
|
+
case 'ogg':
|
|
235
|
+
return 'ogg';
|
|
236
|
+
case 'matroska':
|
|
237
|
+
case 'webm':
|
|
238
|
+
return 'matroska';
|
|
239
|
+
}
|
|
240
|
+
break;
|
|
241
|
+
case 'application':
|
|
242
|
+
switch (subType) {
|
|
243
|
+
case 'vnd.ms-asf':
|
|
244
|
+
return 'asf';
|
|
245
|
+
case 'ogg':
|
|
246
|
+
return 'ogg';
|
|
247
|
+
}
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
136
250
|
}
|
|
137
251
|
}
|
|
138
|
-
|
|
139
|
-
const i = fname.lastIndexOf('.');
|
|
140
|
-
return i === -1 ? '' : fname.substring(i);
|
|
141
|
-
}
|
|
252
|
+
exports.ParserFactory = ParserFactory;
|
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AIFFParser = void 0;
|
|
4
|
+
const Token = require("token-types");
|
|
5
|
+
const debug_1 = require("debug");
|
|
6
|
+
const strtok3 = require("strtok3/lib/core");
|
|
7
|
+
const ID3v2Parser_1 = require("../id3v2/ID3v2Parser");
|
|
8
|
+
const FourCC_1 = require("../common/FourCC");
|
|
9
|
+
const BasicParser_1 = require("../common/BasicParser");
|
|
10
|
+
const AiffToken = require("./AiffToken");
|
|
11
|
+
const iff = require("../iff");
|
|
12
|
+
const debug = (0, debug_1.default)('music-metadata:parser:aiff');
|
|
13
|
+
const compressionTypes = {
|
|
14
|
+
NONE: 'not compressed PCM Apple Computer',
|
|
15
|
+
sowt: 'PCM (byte swapped)',
|
|
16
|
+
fl32: '32-bit floating point IEEE 32-bit float',
|
|
17
|
+
fl64: '64-bit floating point IEEE 64-bit float Apple Computer',
|
|
18
|
+
alaw: 'ALaw 2:1 8-bit ITU-T G.711 A-law',
|
|
19
|
+
ulaw: 'µLaw 2:1 8-bit ITU-T G.711 µ-law Apple Computer',
|
|
20
|
+
ULAW: 'CCITT G.711 u-law 8-bit ITU-T G.711 µ-law',
|
|
21
|
+
ALAW: 'CCITT G.711 A-law 8-bit ITU-T G.711 A-law',
|
|
22
|
+
FL32: 'Float 32 IEEE 32-bit float '
|
|
23
|
+
};
|
|
11
24
|
/**
|
|
12
25
|
* AIFF - Audio Interchange File Format
|
|
13
26
|
*
|
|
@@ -15,16 +28,12 @@ const debug = initDebug('music-metadata:parser:aiff');
|
|
|
15
28
|
* - http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/AIFF.html
|
|
16
29
|
* - http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/Docs/AIFF-1.3.pdf
|
|
17
30
|
*/
|
|
18
|
-
|
|
19
|
-
constructor() {
|
|
20
|
-
super(...arguments);
|
|
21
|
-
this.isCompressed = null;
|
|
22
|
-
}
|
|
31
|
+
class AIFFParser extends BasicParser_1.BasicParser {
|
|
23
32
|
async parse() {
|
|
24
33
|
const header = await this.tokenizer.readToken(iff.Header);
|
|
25
34
|
if (header.chunkID !== 'FORM')
|
|
26
|
-
throw new
|
|
27
|
-
const type = await this.tokenizer.readToken(FourCcToken);
|
|
35
|
+
throw new Error('Invalid Chunk-ID, expected \'FORM\''); // Not AIFF format
|
|
36
|
+
const type = await this.tokenizer.readToken(FourCC_1.FourCcToken);
|
|
28
37
|
switch (type) {
|
|
29
38
|
case 'AIFF':
|
|
30
39
|
this.metadata.setFormat('container', type);
|
|
@@ -35,13 +44,12 @@ export class AIFFParser extends BasicParser {
|
|
|
35
44
|
this.isCompressed = true;
|
|
36
45
|
break;
|
|
37
46
|
default:
|
|
38
|
-
throw
|
|
47
|
+
throw Error('Unsupported AIFF type: ' + type);
|
|
39
48
|
}
|
|
40
49
|
this.metadata.setFormat('lossless', !this.isCompressed);
|
|
41
|
-
this.metadata.setAudioOnly();
|
|
42
50
|
try {
|
|
43
51
|
while (!this.tokenizer.fileInfo.size || this.tokenizer.fileInfo.size - this.tokenizer.position >= iff.Header.len) {
|
|
44
|
-
debug(
|
|
52
|
+
debug('Reading AIFF chunk at offset=' + this.tokenizer.position);
|
|
45
53
|
const chunkHeader = await this.tokenizer.readToken(iff.Header);
|
|
46
54
|
const nextChunk = 2 * Math.round(chunkHeader.chunkSize / 2);
|
|
47
55
|
const bytesRead = await this.readData(chunkHeader);
|
|
@@ -50,7 +58,7 @@ export class AIFFParser extends BasicParser {
|
|
|
50
58
|
}
|
|
51
59
|
catch (err) {
|
|
52
60
|
if (err instanceof strtok3.EndOfStreamError) {
|
|
53
|
-
debug(
|
|
61
|
+
debug(`End-of-stream`);
|
|
54
62
|
}
|
|
55
63
|
else {
|
|
56
64
|
throw err;
|
|
@@ -58,28 +66,22 @@ export class AIFFParser extends BasicParser {
|
|
|
58
66
|
}
|
|
59
67
|
}
|
|
60
68
|
async readData(header) {
|
|
69
|
+
var _a;
|
|
61
70
|
switch (header.chunkID) {
|
|
62
|
-
case 'COMM':
|
|
63
|
-
if (this.isCompressed === null) {
|
|
64
|
-
throw new AiffContentError('Failed to parse AIFF.COMM chunk when compression type is unknown');
|
|
65
|
-
}
|
|
71
|
+
case 'COMM': // The Common Chunk
|
|
66
72
|
const common = await this.tokenizer.readToken(new AiffToken.Common(header, this.isCompressed));
|
|
67
73
|
this.metadata.setFormat('bitsPerSample', common.sampleSize);
|
|
68
74
|
this.metadata.setFormat('sampleRate', common.sampleRate);
|
|
69
75
|
this.metadata.setFormat('numberOfChannels', common.numChannels);
|
|
70
76
|
this.metadata.setFormat('numberOfSamples', common.numSampleFrames);
|
|
71
77
|
this.metadata.setFormat('duration', common.numSampleFrames / common.sampleRate);
|
|
72
|
-
|
|
73
|
-
this.metadata.setFormat('codec', common.compressionName ?? compressionTypes[common.compressionType]);
|
|
74
|
-
}
|
|
78
|
+
this.metadata.setFormat('codec', (_a = common.compressionName) !== null && _a !== void 0 ? _a : compressionTypes[common.compressionType]);
|
|
75
79
|
return header.chunkSize;
|
|
76
|
-
|
|
77
|
-
case 'ID3 ': { // ID3-meta-data
|
|
80
|
+
case 'ID3 ': // ID3-meta-data
|
|
78
81
|
const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(header.chunkSize));
|
|
79
82
|
const rst = strtok3.fromBuffer(id3_data);
|
|
80
|
-
await new ID3v2Parser().parse(this.metadata, rst, this.options);
|
|
83
|
+
await new ID3v2Parser_1.ID3v2Parser().parse(this.metadata, rst, this.options);
|
|
81
84
|
return header.chunkSize;
|
|
82
|
-
}
|
|
83
85
|
case 'SSND': // Sound Data Chunk
|
|
84
86
|
if (this.metadata.format.duration) {
|
|
85
87
|
this.metadata.setFormat('bitrate', 8 * header.chunkSize / this.metadata.format.duration);
|
|
@@ -97,8 +99,10 @@ export class AIFFParser extends BasicParser {
|
|
|
97
99
|
}
|
|
98
100
|
async readTextChunk(header) {
|
|
99
101
|
const value = await this.tokenizer.readToken(new Token.StringType(header.chunkSize, 'ascii'));
|
|
100
|
-
|
|
101
|
-
|
|
102
|
+
value.split('\0').map(v => v.trim()).filter(v => v && v.length > 0).forEach(v => {
|
|
103
|
+
this.metadata.addTag('AIFF', header.chunkID, v.trim());
|
|
104
|
+
});
|
|
102
105
|
return header.chunkSize;
|
|
103
106
|
}
|
|
104
107
|
}
|
|
108
|
+
exports.AIFFParser = AIFFParser;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AiffTagMapper = void 0;
|
|
4
|
+
const GenericTagMapper_1 = require("../common/GenericTagMapper");
|
|
2
5
|
/**
|
|
3
6
|
* ID3v1 tag mappings
|
|
4
7
|
*/
|
|
@@ -8,8 +11,10 @@ const tagMap = {
|
|
|
8
11
|
'(c) ': 'copyright',
|
|
9
12
|
ANNO: 'comment'
|
|
10
13
|
};
|
|
11
|
-
|
|
14
|
+
class AiffTagMapper extends GenericTagMapper_1.CommonTagMapper {
|
|
12
15
|
constructor() {
|
|
13
16
|
super(['AIFF'], tagMap);
|
|
14
17
|
}
|
|
15
18
|
}
|
|
19
|
+
exports.AiffTagMapper = AiffTagMapper;
|
|
20
|
+
//# sourceMappingURL=AiffTagMap.js.map
|