@dragon708/docmind-markdown 1.2.5 → 1.2.7
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/node_modules/{music-metadata/node_modules/strtok3/LICENSE.txt → turndown-plugin-gfm/LICENSE} +21 -21
- package/node_modules/turndown-plugin-gfm/README.md +50 -0
- package/node_modules/turndown-plugin-gfm/dist/turndown-plugin-gfm.js +165 -0
- package/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.browser.cjs.js +162 -0
- package/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.browser.es.js +154 -0
- package/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.cjs.js +162 -0
- package/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.js +154 -0
- package/node_modules/turndown-plugin-gfm/package.json +43 -0
- package/package.json +5 -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/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,31 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
NONE: string;
|
|
5
|
-
sowt: string;
|
|
6
|
-
fl32: string;
|
|
7
|
-
fl64: string;
|
|
8
|
-
alaw: string;
|
|
9
|
-
ulaw: string;
|
|
10
|
-
ULAW: string;
|
|
11
|
-
ALAW: string;
|
|
12
|
-
FL32: string;
|
|
13
|
-
};
|
|
14
|
-
export type CompressionTypeCode = keyof typeof compressionTypes;
|
|
15
|
-
declare const AiffContentError_base: {
|
|
16
|
-
new (message: string): {
|
|
17
|
-
readonly fileType: string;
|
|
18
|
-
toString(): string;
|
|
19
|
-
name: "UnexpectedFileContentError";
|
|
20
|
-
message: string;
|
|
21
|
-
stack?: string;
|
|
22
|
-
};
|
|
23
|
-
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
24
|
-
prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
|
|
25
|
-
stackTraceLimit: number;
|
|
26
|
-
};
|
|
27
|
-
export declare class AiffContentError extends AiffContentError_base {
|
|
28
|
-
}
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IGetToken } from 'strtok3';
|
|
3
|
+
import * as iff from '../iff';
|
|
29
4
|
/**
|
|
30
5
|
* The Common Chunk.
|
|
31
6
|
* Describes fundamental parameters of the waveform data such as sample rate, bit resolution, and how many channels of
|
|
@@ -36,13 +11,12 @@ export interface ICommon {
|
|
|
36
11
|
numSampleFrames: number;
|
|
37
12
|
sampleSize: number;
|
|
38
13
|
sampleRate: number;
|
|
39
|
-
compressionType?:
|
|
14
|
+
compressionType?: string;
|
|
40
15
|
compressionName?: string;
|
|
41
16
|
}
|
|
42
17
|
export declare class Common implements IGetToken<ICommon> {
|
|
43
|
-
len: number;
|
|
44
18
|
private isAifc;
|
|
19
|
+
len: number;
|
|
45
20
|
constructor(header: iff.IChunkHeader, isAifc: boolean);
|
|
46
|
-
get(buf:
|
|
21
|
+
get(buf: Buffer, off: number): ICommon;
|
|
47
22
|
}
|
|
48
|
-
export {};
|
|
@@ -1,48 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
fl32: '32-bit floating point IEEE 32-bit float',
|
|
8
|
-
fl64: '64-bit floating point IEEE 64-bit float Apple Computer',
|
|
9
|
-
alaw: 'ALaw 2:1 8-bit ITU-T G.711 A-law',
|
|
10
|
-
ulaw: 'µLaw 2:1 8-bit ITU-T G.711 µ-law Apple Computer',
|
|
11
|
-
ULAW: 'CCITT G.711 u-law 8-bit ITU-T G.711 µ-law',
|
|
12
|
-
ALAW: 'CCITT G.711 A-law 8-bit ITU-T G.711 A-law',
|
|
13
|
-
FL32: 'Float 32 IEEE 32-bit float '
|
|
14
|
-
};
|
|
15
|
-
export class AiffContentError extends makeUnexpectedFileContentError('AIFF') {
|
|
16
|
-
}
|
|
17
|
-
export class Common {
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Common = void 0;
|
|
4
|
+
const Token = require("token-types");
|
|
5
|
+
const FourCC_1 = require("../common/FourCC");
|
|
6
|
+
class Common {
|
|
18
7
|
constructor(header, isAifc) {
|
|
19
8
|
this.isAifc = isAifc;
|
|
20
9
|
const minimumChunkSize = isAifc ? 22 : 18;
|
|
21
10
|
if (header.chunkSize < minimumChunkSize)
|
|
22
|
-
throw new
|
|
11
|
+
throw new Error(`COMMON CHUNK size should always be at least ${minimumChunkSize}`);
|
|
23
12
|
this.len = header.chunkSize;
|
|
24
13
|
}
|
|
25
14
|
get(buf, off) {
|
|
26
15
|
// see: https://cycling74.com/forums/aiffs-80-bit-sample-rate-value
|
|
27
|
-
const shift =
|
|
28
|
-
const baseSampleRate =
|
|
16
|
+
const shift = buf.readUInt16BE(off + 8) - 16398;
|
|
17
|
+
const baseSampleRate = buf.readUInt16BE(off + 8 + 2);
|
|
29
18
|
const res = {
|
|
30
|
-
numChannels:
|
|
31
|
-
numSampleFrames:
|
|
32
|
-
sampleSize:
|
|
19
|
+
numChannels: buf.readUInt16BE(off),
|
|
20
|
+
numSampleFrames: buf.readUInt32BE(off + 2),
|
|
21
|
+
sampleSize: buf.readUInt16BE(off + 6),
|
|
33
22
|
sampleRate: shift < 0 ? baseSampleRate >> Math.abs(shift) : baseSampleRate << shift
|
|
34
23
|
};
|
|
35
24
|
if (this.isAifc) {
|
|
36
|
-
res.compressionType = FourCcToken.get(buf, off + 18);
|
|
25
|
+
res.compressionType = FourCC_1.FourCcToken.get(buf, off + 18);
|
|
37
26
|
if (this.len > 22) {
|
|
38
|
-
const strLen =
|
|
27
|
+
const strLen = buf.readInt8(off + 22);
|
|
39
28
|
if (strLen > 0) {
|
|
40
29
|
const padding = (strLen + 1) % 2;
|
|
41
30
|
if (23 + strLen + padding === this.len) {
|
|
42
|
-
res.compressionName = new Token.StringType(strLen, '
|
|
31
|
+
res.compressionName = new Token.StringType(strLen, 'binary').get(buf, off + 23);
|
|
43
32
|
}
|
|
44
33
|
else {
|
|
45
|
-
throw new
|
|
34
|
+
throw new Error('Illegal pstring length');
|
|
46
35
|
}
|
|
47
36
|
}
|
|
48
37
|
else {
|
|
@@ -56,3 +45,4 @@ export class Common {
|
|
|
56
45
|
return res;
|
|
57
46
|
}
|
|
58
47
|
}
|
|
48
|
+
exports.Common = Common;
|
|
@@ -1,25 +1,10 @@
|
|
|
1
|
-
import * as strtok3 from 'strtok3';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { BasicParser } from '../common/BasicParser
|
|
5
|
-
import {
|
|
6
|
-
import type { IRandomAccessTokenizer } from 'strtok3';
|
|
7
|
-
declare const ApeContentError_base: {
|
|
8
|
-
new (message: string): {
|
|
9
|
-
readonly fileType: string;
|
|
10
|
-
toString(): string;
|
|
11
|
-
name: "UnexpectedFileContentError";
|
|
12
|
-
message: string;
|
|
13
|
-
stack?: string;
|
|
14
|
-
};
|
|
15
|
-
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
16
|
-
prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
|
|
17
|
-
stackTraceLimit: number;
|
|
18
|
-
};
|
|
19
|
-
export declare class ApeContentError extends ApeContentError_base {
|
|
20
|
-
}
|
|
21
|
-
export declare function tryParseApeHeader(metadata: INativeMetadataCollector, tokenizer: strtok3.ITokenizer, options: IOptions): Promise<void>;
|
|
1
|
+
import * as strtok3 from 'strtok3/lib/core';
|
|
2
|
+
import { IOptions, IRandomReader, IApeHeader } from '../type';
|
|
3
|
+
import { INativeMetadataCollector } from '../common/MetadataCollector';
|
|
4
|
+
import { BasicParser } from '../common/BasicParser';
|
|
5
|
+
import { IFooter, IHeader } from './APEv2Token';
|
|
22
6
|
export declare class APEv2Parser extends BasicParser {
|
|
7
|
+
static tryParseApeHeader(metadata: INativeMetadataCollector, tokenizer: strtok3.ITokenizer, options: IOptions): Promise<void>;
|
|
23
8
|
/**
|
|
24
9
|
* Calculate the media file duration
|
|
25
10
|
* @param ah ApeHeader
|
|
@@ -28,10 +13,10 @@ export declare class APEv2Parser extends BasicParser {
|
|
|
28
13
|
static calculateDuration(ah: IHeader): number;
|
|
29
14
|
/**
|
|
30
15
|
* Calculates the APEv1 / APEv2 first field offset
|
|
31
|
-
* @param
|
|
16
|
+
* @param reader
|
|
32
17
|
* @param offset
|
|
33
18
|
*/
|
|
34
|
-
static findApeFooterOffset(
|
|
19
|
+
static findApeFooterOffset(reader: IRandomReader, offset: number): Promise<IApeHeader>;
|
|
35
20
|
private static parseTagFooter;
|
|
36
21
|
private ape;
|
|
37
22
|
/**
|
|
@@ -43,4 +28,3 @@ export declare class APEv2Parser extends BasicParser {
|
|
|
43
28
|
private parseDescriptorExpansion;
|
|
44
29
|
private parseHeader;
|
|
45
30
|
}
|
|
46
|
-
export {};
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.APEv2Parser = void 0;
|
|
4
|
+
const debug_1 = require("debug");
|
|
5
|
+
const strtok3 = require("strtok3/lib/core");
|
|
6
|
+
const token_types_1 = require("token-types");
|
|
7
|
+
const util = require("../common/Util");
|
|
8
|
+
const BasicParser_1 = require("../common/BasicParser");
|
|
9
|
+
const APEv2Token_1 = require("./APEv2Token");
|
|
10
|
+
const debug = (0, debug_1.default)('music-metadata:parser:APEv2');
|
|
10
11
|
const tagFormat = 'APEv2';
|
|
11
12
|
const preamble = 'APETAGEX';
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
export function tryParseApeHeader(metadata, tokenizer, options) {
|
|
15
|
-
const apeParser = new APEv2Parser(metadata, tokenizer, options);
|
|
16
|
-
return apeParser.tryParseApeHeader();
|
|
17
|
-
}
|
|
18
|
-
export class APEv2Parser extends BasicParser {
|
|
13
|
+
class APEv2Parser extends BasicParser_1.BasicParser {
|
|
19
14
|
constructor() {
|
|
20
15
|
super(...arguments);
|
|
21
16
|
this.ape = {};
|
|
22
17
|
}
|
|
18
|
+
static tryParseApeHeader(metadata, tokenizer, options) {
|
|
19
|
+
const apeParser = new APEv2Parser();
|
|
20
|
+
apeParser.init(metadata, tokenizer, options);
|
|
21
|
+
return apeParser.tryParseApeHeader();
|
|
22
|
+
}
|
|
23
23
|
/**
|
|
24
24
|
* Calculate the media file duration
|
|
25
25
|
* @param ah ApeHeader
|
|
@@ -32,119 +32,109 @@ export class APEv2Parser extends BasicParser {
|
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Calculates the APEv1 / APEv2 first field offset
|
|
35
|
-
* @param
|
|
35
|
+
* @param reader
|
|
36
36
|
* @param offset
|
|
37
37
|
*/
|
|
38
|
-
static async findApeFooterOffset(
|
|
38
|
+
static async findApeFooterOffset(reader, offset) {
|
|
39
39
|
// Search for APE footer header at the end of the file
|
|
40
|
-
const apeBuf =
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (offset > TagFooter.len) {
|
|
47
|
-
await tokenizer.readBuffer(apeBuf, { position: offset - TagFooter.len });
|
|
48
|
-
tokenizer.setPosition(position);
|
|
49
|
-
const tagFooter = TagFooter.get(apeBuf, 0);
|
|
50
|
-
if (tagFooter.ID === 'APETAGEX') {
|
|
51
|
-
if (tagFooter.flags.isHeader) {
|
|
52
|
-
debug(`APE Header found at offset=${offset - TagFooter.len}`);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
debug(`APE Footer found at offset=${offset - TagFooter.len}`);
|
|
56
|
-
offset -= tagFooter.size;
|
|
57
|
-
}
|
|
58
|
-
return { footer: tagFooter, offset };
|
|
59
|
-
}
|
|
40
|
+
const apeBuf = Buffer.alloc(APEv2Token_1.TagFooter.len);
|
|
41
|
+
await reader.randomRead(apeBuf, 0, APEv2Token_1.TagFooter.len, offset - APEv2Token_1.TagFooter.len);
|
|
42
|
+
const tagFooter = APEv2Token_1.TagFooter.get(apeBuf, 0);
|
|
43
|
+
if (tagFooter.ID === 'APETAGEX') {
|
|
44
|
+
debug(`APE footer header at offset=${offset}`);
|
|
45
|
+
return { footer: tagFooter, offset: offset - tagFooter.size };
|
|
60
46
|
}
|
|
61
47
|
}
|
|
62
48
|
static parseTagFooter(metadata, buffer, options) {
|
|
63
|
-
const footer = TagFooter.get(buffer, buffer.length - TagFooter.len);
|
|
49
|
+
const footer = APEv2Token_1.TagFooter.get(buffer, buffer.length - APEv2Token_1.TagFooter.len);
|
|
64
50
|
if (footer.ID !== preamble)
|
|
65
|
-
throw new
|
|
51
|
+
throw new Error('Unexpected APEv2 Footer ID preamble value.');
|
|
66
52
|
strtok3.fromBuffer(buffer);
|
|
67
|
-
const apeParser = new APEv2Parser(
|
|
53
|
+
const apeParser = new APEv2Parser();
|
|
54
|
+
apeParser.init(metadata, strtok3.fromBuffer(buffer), options);
|
|
68
55
|
return apeParser.parseTags(footer);
|
|
69
56
|
}
|
|
70
57
|
/**
|
|
71
58
|
* Parse APEv1 / APEv2 header if header signature found
|
|
72
59
|
*/
|
|
73
60
|
async tryParseApeHeader() {
|
|
74
|
-
if (this.tokenizer.fileInfo.size && this.tokenizer.fileInfo.size - this.tokenizer.position < TagFooter.len) {
|
|
75
|
-
debug(
|
|
61
|
+
if (this.tokenizer.fileInfo.size && this.tokenizer.fileInfo.size - this.tokenizer.position < APEv2Token_1.TagFooter.len) {
|
|
62
|
+
debug(`No APEv2 header found, end-of-file reached`);
|
|
76
63
|
return;
|
|
77
64
|
}
|
|
78
|
-
const footer = await this.tokenizer.peekToken(TagFooter);
|
|
65
|
+
const footer = await this.tokenizer.peekToken(APEv2Token_1.TagFooter);
|
|
79
66
|
if (footer.ID === preamble) {
|
|
80
|
-
await this.tokenizer.ignore(TagFooter.len);
|
|
67
|
+
await this.tokenizer.ignore(APEv2Token_1.TagFooter.len);
|
|
81
68
|
return this.parseTags(footer);
|
|
82
69
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
70
|
+
else {
|
|
71
|
+
debug(`APEv2 header not found at offset=${this.tokenizer.position}`);
|
|
72
|
+
if (this.tokenizer.fileInfo.size) {
|
|
73
|
+
// Try to read the APEv2 header using just the footer-header
|
|
74
|
+
const remaining = this.tokenizer.fileInfo.size - this.tokenizer.position; // ToDo: take ID3v1 into account
|
|
75
|
+
const buffer = Buffer.alloc(remaining);
|
|
76
|
+
await this.tokenizer.readBuffer(buffer);
|
|
77
|
+
return APEv2Parser.parseTagFooter(this.metadata, buffer, this.options);
|
|
78
|
+
}
|
|
90
79
|
}
|
|
91
80
|
}
|
|
92
81
|
async parse() {
|
|
93
|
-
const descriptor = await this.tokenizer.readToken(DescriptorParser);
|
|
82
|
+
const descriptor = await this.tokenizer.readToken(APEv2Token_1.DescriptorParser);
|
|
94
83
|
if (descriptor.ID !== 'MAC ')
|
|
95
|
-
throw new
|
|
84
|
+
throw new Error('Unexpected descriptor ID');
|
|
96
85
|
this.ape.descriptor = descriptor;
|
|
97
|
-
const lenExp = descriptor.descriptorBytes - DescriptorParser.len;
|
|
86
|
+
const lenExp = descriptor.descriptorBytes - APEv2Token_1.DescriptorParser.len;
|
|
98
87
|
const header = await (lenExp > 0 ? this.parseDescriptorExpansion(lenExp) : this.parseHeader());
|
|
99
|
-
this.metadata.setAudioOnly();
|
|
100
88
|
await this.tokenizer.ignore(header.forwardBytes);
|
|
101
89
|
return this.tryParseApeHeader();
|
|
102
90
|
}
|
|
103
91
|
async parseTags(footer) {
|
|
104
|
-
const keyBuffer =
|
|
105
|
-
let bytesRemaining = footer.size - TagFooter.len;
|
|
92
|
+
const keyBuffer = Buffer.alloc(256); // maximum tag key length
|
|
93
|
+
let bytesRemaining = footer.size - APEv2Token_1.TagFooter.len;
|
|
106
94
|
debug(`Parse APE tags at offset=${this.tokenizer.position}, size=${bytesRemaining}`);
|
|
107
95
|
for (let i = 0; i < footer.fields; i++) {
|
|
108
|
-
if (bytesRemaining < TagItemHeader.len) {
|
|
96
|
+
if (bytesRemaining < APEv2Token_1.TagItemHeader.len) {
|
|
109
97
|
this.metadata.addWarning(`APEv2 Tag-header: ${footer.fields - i} items remaining, but no more tag data to read.`);
|
|
110
98
|
break;
|
|
111
99
|
}
|
|
112
100
|
// Only APEv2 tag has tag item headers
|
|
113
|
-
const tagItemHeader = await this.tokenizer.readToken(TagItemHeader);
|
|
114
|
-
bytesRemaining -= TagItemHeader.len + tagItemHeader.size;
|
|
101
|
+
const tagItemHeader = await this.tokenizer.readToken(APEv2Token_1.TagItemHeader);
|
|
102
|
+
bytesRemaining -= APEv2Token_1.TagItemHeader.len + tagItemHeader.size;
|
|
115
103
|
await this.tokenizer.peekBuffer(keyBuffer, { length: Math.min(keyBuffer.length, bytesRemaining) });
|
|
116
|
-
let zero = util.findZero(keyBuffer);
|
|
117
|
-
const key = await this.tokenizer.readToken(new StringType(zero, 'ascii'));
|
|
104
|
+
let zero = util.findZero(keyBuffer, 0, keyBuffer.length);
|
|
105
|
+
const key = await this.tokenizer.readToken(new token_types_1.StringType(zero, 'ascii'));
|
|
118
106
|
await this.tokenizer.ignore(1);
|
|
119
107
|
bytesRemaining -= key.length + 1;
|
|
120
108
|
switch (tagItemHeader.flags.dataType) {
|
|
121
|
-
case DataType.text_utf8: { // utf-8 text-string
|
|
122
|
-
const value = await this.tokenizer.readToken(new StringType(tagItemHeader.size, 'utf8'));
|
|
109
|
+
case APEv2Token_1.DataType.text_utf8: { // utf-8 text-string
|
|
110
|
+
const value = await this.tokenizer.readToken(new token_types_1.StringType(tagItemHeader.size, 'utf8'));
|
|
123
111
|
const values = value.split(/\x00/g);
|
|
124
|
-
|
|
112
|
+
for (const val of values) {
|
|
113
|
+
this.metadata.addTag(tagFormat, key, val);
|
|
114
|
+
}
|
|
125
115
|
break;
|
|
126
116
|
}
|
|
127
|
-
case DataType.binary: // binary (probably artwork)
|
|
117
|
+
case APEv2Token_1.DataType.binary: // binary (probably artwork)
|
|
128
118
|
if (this.options.skipCovers) {
|
|
129
119
|
await this.tokenizer.ignore(tagItemHeader.size);
|
|
130
120
|
}
|
|
131
121
|
else {
|
|
132
|
-
const picData =
|
|
122
|
+
const picData = Buffer.alloc(tagItemHeader.size);
|
|
133
123
|
await this.tokenizer.readBuffer(picData);
|
|
134
|
-
zero = util.findZero(picData);
|
|
135
|
-
const description =
|
|
136
|
-
const data = picData.
|
|
137
|
-
|
|
124
|
+
zero = util.findZero(picData, 0, picData.length);
|
|
125
|
+
const description = picData.toString('utf8', 0, zero);
|
|
126
|
+
const data = Buffer.from(picData.slice(zero + 1));
|
|
127
|
+
this.metadata.addTag(tagFormat, key, {
|
|
138
128
|
description,
|
|
139
129
|
data
|
|
140
130
|
});
|
|
141
131
|
}
|
|
142
132
|
break;
|
|
143
|
-
case DataType.external_info:
|
|
133
|
+
case APEv2Token_1.DataType.external_info:
|
|
144
134
|
debug(`Ignore external info ${key}`);
|
|
145
135
|
await this.tokenizer.ignore(tagItemHeader.size);
|
|
146
136
|
break;
|
|
147
|
-
case DataType.reserved:
|
|
137
|
+
case APEv2Token_1.DataType.reserved:
|
|
148
138
|
debug(`Ignore external info ${key}`);
|
|
149
139
|
this.metadata.addWarning(`APEv2 header declares a reserved datatype for "${key}"`);
|
|
150
140
|
await this.tokenizer.ignore(tagItemHeader.size);
|
|
@@ -157,7 +147,7 @@ export class APEv2Parser extends BasicParser {
|
|
|
157
147
|
return this.parseHeader();
|
|
158
148
|
}
|
|
159
149
|
async parseHeader() {
|
|
160
|
-
const header = await this.tokenizer.readToken(Header);
|
|
150
|
+
const header = await this.tokenizer.readToken(APEv2Token_1.Header);
|
|
161
151
|
// ToDo before
|
|
162
152
|
this.metadata.setFormat('lossless', true);
|
|
163
153
|
this.metadata.setFormat('container', 'Monkey\'s Audio');
|
|
@@ -165,12 +155,10 @@ export class APEv2Parser extends BasicParser {
|
|
|
165
155
|
this.metadata.setFormat('sampleRate', header.sampleRate);
|
|
166
156
|
this.metadata.setFormat('numberOfChannels', header.channel);
|
|
167
157
|
this.metadata.setFormat('duration', APEv2Parser.calculateDuration(header));
|
|
168
|
-
if (!this.ape.descriptor) {
|
|
169
|
-
throw new ApeContentError('Missing APE descriptor');
|
|
170
|
-
}
|
|
171
158
|
return {
|
|
172
159
|
forwardBytes: this.ape.descriptor.seekTableBytes + this.ape.descriptor.headerDataBytes +
|
|
173
160
|
this.ape.descriptor.apeFrameDataBytes + this.ape.descriptor.terminatingDataBytes
|
|
174
161
|
};
|
|
175
162
|
}
|
|
176
163
|
}
|
|
164
|
+
exports.APEv2Parser = APEv2Parser;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.APEv2TagMapper = void 0;
|
|
4
|
+
const CaseInsensitiveTagMap_1 = require("../common/CaseInsensitiveTagMap");
|
|
2
5
|
/**
|
|
3
6
|
* ID3v2.2 tag mappings
|
|
4
7
|
*/
|
|
@@ -11,11 +14,10 @@ const apev2TagMap = {
|
|
|
11
14
|
Year: 'date',
|
|
12
15
|
Originalyear: 'originalyear',
|
|
13
16
|
Originaldate: 'originaldate',
|
|
14
|
-
Releasedate: 'releasedate',
|
|
15
17
|
Comment: 'comment',
|
|
16
18
|
Track: 'track',
|
|
17
19
|
Disc: 'disk',
|
|
18
|
-
DISCNUMBER: 'disk',
|
|
20
|
+
DISCNUMBER: 'disk',
|
|
19
21
|
Genre: 'genre',
|
|
20
22
|
'Cover Art (Front)': 'picture',
|
|
21
23
|
'Cover Art (Back)': 'picture',
|
|
@@ -76,8 +78,10 @@ const apev2TagMap = {
|
|
|
76
78
|
MP3GAIN_MINMAX: 'replaygain_track_minmax',
|
|
77
79
|
MP3GAIN_UNDO: 'replaygain_undo'
|
|
78
80
|
};
|
|
79
|
-
|
|
81
|
+
class APEv2TagMapper extends CaseInsensitiveTagMap_1.CaseInsensitiveTagMap {
|
|
80
82
|
constructor() {
|
|
81
83
|
super(['APEv2'], apev2TagMap);
|
|
82
84
|
}
|
|
83
85
|
}
|
|
86
|
+
exports.APEv2TagMapper = APEv2TagMapper;
|
|
87
|
+
//# sourceMappingURL=APEv2TagMapper.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as Token from 'token-types';
|
|
2
|
+
import { IGetToken } from 'strtok3/lib/core';
|
|
2
3
|
/**
|
|
3
4
|
* APETag versionIndex history / supported formats
|
|
4
5
|
*
|
|
@@ -52,13 +53,12 @@ export interface IFooter {
|
|
|
52
53
|
fields: number;
|
|
53
54
|
flags: ITagFlags;
|
|
54
55
|
}
|
|
55
|
-
export declare
|
|
56
|
-
text_utf8
|
|
57
|
-
binary
|
|
58
|
-
external_info
|
|
59
|
-
reserved
|
|
60
|
-
}
|
|
61
|
-
export type DataType = typeof DataType[keyof typeof DataType];
|
|
56
|
+
export declare enum DataType {
|
|
57
|
+
text_utf8 = 0,
|
|
58
|
+
binary = 1,
|
|
59
|
+
external_info = 2,
|
|
60
|
+
reserved = 3
|
|
61
|
+
}
|
|
62
62
|
/**
|
|
63
63
|
* APE_DESCRIPTOR: defines the sizes (and offsets) of all the pieces, as well as the MD5 checksum
|
|
64
64
|
*/
|
|
@@ -83,6 +83,7 @@ export interface ITagItemHeader {
|
|
|
83
83
|
* APE Tag v2.0 Item Header
|
|
84
84
|
*/
|
|
85
85
|
export declare const TagItemHeader: IGetToken<ITagItemHeader>;
|
|
86
|
+
export declare const TagField: (footer: any) => Token.Uint8ArrayType;
|
|
86
87
|
export interface ITagFlags {
|
|
87
88
|
containsHeader: boolean;
|
|
88
89
|
containsFooter: boolean;
|
|
@@ -90,10 +91,10 @@ export interface ITagFlags {
|
|
|
90
91
|
readOnly: boolean;
|
|
91
92
|
dataType: DataType;
|
|
92
93
|
}
|
|
93
|
-
export declare function parseTagFlags(flags:
|
|
94
|
+
export declare function parseTagFlags(flags: any): ITagFlags;
|
|
94
95
|
/**
|
|
95
96
|
* @param num {number}
|
|
96
97
|
* @param bit 0 is least significant bit (LSB)
|
|
97
98
|
* @return {boolean} true if bit is 1; otherwise false
|
|
98
99
|
*/
|
|
99
|
-
export declare function isBitSet(num:
|
|
100
|
+
export declare function isBitSet(num: any, bit: any): boolean;
|
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isBitSet = exports.parseTagFlags = exports.TagField = exports.TagItemHeader = exports.TagFooter = exports.Header = exports.DescriptorParser = exports.DataType = void 0;
|
|
4
|
+
const Token = require("token-types");
|
|
5
|
+
const FourCC_1 = require("../common/FourCC");
|
|
6
|
+
var DataType;
|
|
7
|
+
(function (DataType) {
|
|
8
|
+
DataType[DataType["text_utf8"] = 0] = "text_utf8";
|
|
9
|
+
DataType[DataType["binary"] = 1] = "binary";
|
|
10
|
+
DataType[DataType["external_info"] = 2] = "external_info";
|
|
11
|
+
DataType[DataType["reserved"] = 3] = "reserved";
|
|
12
|
+
})(DataType = exports.DataType || (exports.DataType = {}));
|
|
9
13
|
/**
|
|
10
14
|
* APE_DESCRIPTOR: defines the sizes (and offsets) of all the pieces, as well as the MD5 checksum
|
|
11
15
|
*/
|
|
12
|
-
|
|
16
|
+
exports.DescriptorParser = {
|
|
13
17
|
len: 52,
|
|
14
18
|
get: (buf, off) => {
|
|
15
19
|
return {
|
|
16
20
|
// should equal 'MAC '
|
|
17
|
-
ID: FourCcToken.get(buf, off),
|
|
21
|
+
ID: FourCC_1.FourCcToken.get(buf, off),
|
|
18
22
|
// versionIndex number * 1000 (3.81 = 3810) (remember that 4-byte alignment causes this to take 4-bytes)
|
|
19
23
|
version: Token.UINT32_LE.get(buf, off + 4) / 1000,
|
|
20
24
|
// the number of descriptor bytes (allows later expansion of this header)
|
|
@@ -39,7 +43,7 @@ export const DescriptorParser = {
|
|
|
39
43
|
/**
|
|
40
44
|
* APE_HEADER: describes all of the necessary information about the APE file
|
|
41
45
|
*/
|
|
42
|
-
|
|
46
|
+
exports.Header = {
|
|
43
47
|
len: 24,
|
|
44
48
|
get: (buf, off) => {
|
|
45
49
|
return {
|
|
@@ -66,7 +70,7 @@ export const Header = {
|
|
|
66
70
|
* APE Tag Header/Footer Version 2.0
|
|
67
71
|
* TAG: describes all the properties of the file [optional]
|
|
68
72
|
*/
|
|
69
|
-
|
|
73
|
+
exports.TagFooter = {
|
|
70
74
|
len: 32,
|
|
71
75
|
get: (buf, off) => {
|
|
72
76
|
return {
|
|
@@ -86,7 +90,7 @@ export const TagFooter = {
|
|
|
86
90
|
/**
|
|
87
91
|
* APE Tag v2.0 Item Header
|
|
88
92
|
*/
|
|
89
|
-
|
|
93
|
+
exports.TagItemHeader = {
|
|
90
94
|
len: 8,
|
|
91
95
|
get: (buf, off) => {
|
|
92
96
|
return {
|
|
@@ -97,20 +101,27 @@ export const TagItemHeader = {
|
|
|
97
101
|
};
|
|
98
102
|
}
|
|
99
103
|
};
|
|
100
|
-
|
|
104
|
+
const TagField = footer => {
|
|
105
|
+
return new Token.Uint8ArrayType(footer.size - exports.TagFooter.len);
|
|
106
|
+
};
|
|
107
|
+
exports.TagField = TagField;
|
|
108
|
+
function parseTagFlags(flags) {
|
|
101
109
|
return {
|
|
102
110
|
containsHeader: isBitSet(flags, 31),
|
|
103
111
|
containsFooter: isBitSet(flags, 30),
|
|
104
|
-
isHeader: isBitSet(flags,
|
|
112
|
+
isHeader: isBitSet(flags, 31),
|
|
105
113
|
readOnly: isBitSet(flags, 0),
|
|
106
114
|
dataType: (flags & 6) >> 1
|
|
107
115
|
};
|
|
108
116
|
}
|
|
117
|
+
exports.parseTagFlags = parseTagFlags;
|
|
109
118
|
/**
|
|
110
119
|
* @param num {number}
|
|
111
120
|
* @param bit 0 is least significant bit (LSB)
|
|
112
121
|
* @return {boolean} true if bit is 1; otherwise false
|
|
113
122
|
*/
|
|
114
|
-
|
|
123
|
+
function isBitSet(num, bit) {
|
|
115
124
|
return (num & 1 << bit) !== 0;
|
|
116
125
|
}
|
|
126
|
+
exports.isBitSet = isBitSet;
|
|
127
|
+
//# sourceMappingURL=APEv2Token.js.map
|