@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,46 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { type IChapterInfo } from './ID3v2ChapterToken.js';
|
|
4
|
-
interface ICustomTag {
|
|
5
|
-
owner_identifier: string;
|
|
6
|
-
}
|
|
7
|
-
export interface ICustomDataTag extends ICustomTag {
|
|
8
|
-
data: Uint8Array;
|
|
9
|
-
}
|
|
10
|
-
export interface IIdentifierTag extends ICustomTag {
|
|
11
|
-
identifier: Uint8Array;
|
|
12
|
-
}
|
|
13
|
-
export interface ITextTag {
|
|
14
|
-
description: string;
|
|
15
|
-
text: string[];
|
|
16
|
-
}
|
|
17
|
-
export interface IPopularimeter {
|
|
18
|
-
email: string;
|
|
19
|
-
rating: number;
|
|
20
|
-
counter: number;
|
|
21
|
-
}
|
|
22
|
-
export interface IGeneralEncapsulatedObject {
|
|
23
|
-
type: string;
|
|
24
|
-
filename: string;
|
|
25
|
-
description: string;
|
|
26
|
-
data: Uint8Array;
|
|
27
|
-
}
|
|
28
|
-
export type Chapter = {
|
|
29
|
-
label: string;
|
|
30
|
-
info: IChapterInfo;
|
|
31
|
-
frames: Map<string, unknown>;
|
|
32
|
-
};
|
|
33
|
-
export type TableOfContents = {
|
|
34
|
-
label: string;
|
|
35
|
-
flags: {
|
|
36
|
-
/** If set, this is the top-level table of contents */
|
|
37
|
-
topLevel: boolean;
|
|
38
|
-
/** If set, the child element IDs are in a defined order */
|
|
39
|
-
ordered: boolean;
|
|
40
|
-
};
|
|
41
|
-
childElementIds: string[];
|
|
42
|
-
frames: Map<string, unknown>;
|
|
43
|
-
};
|
|
1
|
+
import { ID3v2MajorVersion } from './ID3v2Token';
|
|
2
|
+
import { IWarningCollector } from '../common/MetadataCollector';
|
|
44
3
|
export declare function parseGenre(origVal: string): string[];
|
|
45
4
|
export declare class FrameParser {
|
|
46
5
|
private major;
|
|
@@ -51,11 +10,7 @@ export declare class FrameParser {
|
|
|
51
10
|
* @param warningCollector - Used to collect decode issue
|
|
52
11
|
*/
|
|
53
12
|
constructor(major: ID3v2MajorVersion, warningCollector: IWarningCollector);
|
|
54
|
-
readData(uint8Array: Uint8Array, type: string, includeCovers: boolean):
|
|
55
|
-
protected static readNullTerminatedString(uint8Array: Uint8Array, encoding: ITextEncoding): {
|
|
56
|
-
text: string;
|
|
57
|
-
len: number;
|
|
58
|
-
};
|
|
13
|
+
readData(uint8Array: Uint8Array, type: string, includeCovers: boolean): any;
|
|
59
14
|
protected static fixPictureMimeType(pictureType: string): string;
|
|
60
15
|
/**
|
|
61
16
|
* Converts TMCL (Musician credits list) or TIPL (Involved people list)
|
|
@@ -71,22 +26,6 @@ export declare class FrameParser {
|
|
|
71
26
|
*/
|
|
72
27
|
private splitValue;
|
|
73
28
|
private static trimArray;
|
|
74
|
-
private static trimNullPadding;
|
|
75
29
|
private static readIdentifierAndData;
|
|
76
30
|
private static getNullTerminatorLength;
|
|
77
31
|
}
|
|
78
|
-
declare const Id3v2ContentError_base: {
|
|
79
|
-
new (message: string): {
|
|
80
|
-
readonly fileType: string;
|
|
81
|
-
toString(): string;
|
|
82
|
-
name: "UnexpectedFileContentError";
|
|
83
|
-
message: string;
|
|
84
|
-
stack?: string;
|
|
85
|
-
};
|
|
86
|
-
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
87
|
-
prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
|
|
88
|
-
stackTraceLimit: number;
|
|
89
|
-
};
|
|
90
|
-
export declare class Id3v2ContentError extends Id3v2ContentError_base {
|
|
91
|
-
}
|
|
92
|
-
export {};
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const debug = initDebug('music-metadata:id3v2:frame-parser');
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FrameParser = exports.parseGenre = void 0;
|
|
4
|
+
const debug_1 = require("debug");
|
|
5
|
+
const Token = require("token-types");
|
|
6
|
+
const util = require("../common/Util");
|
|
7
|
+
const ID3v2Token_1 = require("./ID3v2Token");
|
|
8
|
+
const ID3v1Parser_1 = require("../id3v1/ID3v1Parser");
|
|
9
|
+
const debug = (0, debug_1.default)('music-metadata:id3v2:frame-parser');
|
|
11
10
|
const defaultEnc = 'latin1'; // latin1 == iso-8859-1;
|
|
12
|
-
|
|
13
|
-
export function parseGenre(origVal) {
|
|
11
|
+
function parseGenre(origVal) {
|
|
14
12
|
// match everything inside parentheses
|
|
15
13
|
const genres = [];
|
|
16
14
|
let code;
|
|
@@ -44,24 +42,23 @@ export function parseGenre(origVal) {
|
|
|
44
42
|
}
|
|
45
43
|
if (word) {
|
|
46
44
|
if (genres.length === 0 && word.match(/^\d*$/)) {
|
|
47
|
-
word =
|
|
48
|
-
}
|
|
49
|
-
if (word) {
|
|
50
|
-
genres.push(word);
|
|
45
|
+
word = ID3v1Parser_1.Genres[word];
|
|
51
46
|
}
|
|
47
|
+
genres.push(word);
|
|
52
48
|
}
|
|
53
49
|
return genres;
|
|
54
50
|
}
|
|
51
|
+
exports.parseGenre = parseGenre;
|
|
55
52
|
function parseGenreCode(code) {
|
|
56
53
|
if (code === 'RX')
|
|
57
54
|
return 'Remix';
|
|
58
55
|
if (code === 'CR')
|
|
59
56
|
return 'Cover';
|
|
60
57
|
if (code.match(/^\d*$/)) {
|
|
61
|
-
return Genres[
|
|
58
|
+
return ID3v1Parser_1.Genres[code];
|
|
62
59
|
}
|
|
63
60
|
}
|
|
64
|
-
|
|
61
|
+
class FrameParser {
|
|
65
62
|
/**
|
|
66
63
|
* Create id3v2 frame parser
|
|
67
64
|
* @param major - Major version, e.g. (4) for id3v2.4
|
|
@@ -76,45 +73,38 @@ export class FrameParser {
|
|
|
76
73
|
this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${type}`);
|
|
77
74
|
return;
|
|
78
75
|
}
|
|
79
|
-
const { encoding, bom } = TextEncodingToken.get(uint8Array, 0);
|
|
76
|
+
const { encoding, bom } = ID3v2Token_1.TextEncodingToken.get(uint8Array, 0);
|
|
80
77
|
const length = uint8Array.length;
|
|
81
78
|
let offset = 0;
|
|
82
79
|
let output = []; // ToDo
|
|
83
80
|
const nullTerminatorLength = FrameParser.getNullTerminatorLength(encoding);
|
|
84
81
|
let fzero;
|
|
82
|
+
const out = {};
|
|
85
83
|
debug(`Parsing tag type=${type}, encoding=${encoding}, bom=${bom}`);
|
|
86
84
|
switch (type !== 'TXXX' && type[0] === 'T' ? 'T*' : type) {
|
|
87
85
|
case 'T*': // 4.2.1. Text information frames - details
|
|
88
|
-
case 'GRP1': // iTunes-specific ID3v2 grouping field
|
|
89
|
-
case 'GP1': // iTunes-specific ID3v2.2 grouping field
|
|
90
86
|
case 'IPLS': // v2.3: Involved people list
|
|
91
87
|
case 'MVIN':
|
|
92
88
|
case 'MVNM':
|
|
93
89
|
case 'PCS':
|
|
94
|
-
case 'PCST':
|
|
90
|
+
case 'PCST':
|
|
95
91
|
let text;
|
|
96
92
|
try {
|
|
97
|
-
text =
|
|
93
|
+
text = util.decodeString(uint8Array.slice(1), encoding).replace(/\x00+$/, '');
|
|
98
94
|
}
|
|
99
95
|
catch (error) {
|
|
100
|
-
|
|
101
|
-
this.warningCollector.addWarning(`id3v2.${this.major} type=${type} header has invalid string value: ${error.message}`);
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
throw error;
|
|
96
|
+
this.warningCollector.addWarning(`id3v2.${this.major} type=${type} header has invalid string value: ${error.message}`);
|
|
105
97
|
}
|
|
106
98
|
switch (type) {
|
|
107
99
|
case 'TMCL': // Musician credits list
|
|
108
100
|
case 'TIPL': // Involved people list
|
|
109
101
|
case 'IPLS': // Involved people list
|
|
110
|
-
output =
|
|
102
|
+
output = this.splitValue(type, text);
|
|
103
|
+
output = FrameParser.functionList(output);
|
|
111
104
|
break;
|
|
112
105
|
case 'TRK':
|
|
113
106
|
case 'TRCK':
|
|
114
107
|
case 'TPOS':
|
|
115
|
-
case 'TIT1':
|
|
116
|
-
case 'TIT2':
|
|
117
|
-
case 'TIT3':
|
|
118
108
|
output = text;
|
|
119
109
|
break;
|
|
120
110
|
case 'TCOM':
|
|
@@ -140,144 +130,107 @@ export class FrameParser {
|
|
|
140
130
|
output = this.major >= 4 ? this.splitValue(type, text) : [text];
|
|
141
131
|
}
|
|
142
132
|
break;
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const idAndData = FrameParser.readIdentifierAndData(uint8Array.subarray(1), encoding);
|
|
133
|
+
case 'TXXX':
|
|
134
|
+
output = FrameParser.readIdentifierAndData(uint8Array, offset + 1, length, encoding);
|
|
146
135
|
output = {
|
|
147
|
-
description:
|
|
148
|
-
text: this.splitValue(type, util.decodeString(
|
|
136
|
+
description: output.id,
|
|
137
|
+
text: this.splitValue(type, util.decodeString(output.data, encoding).replace(/\x00+$/, ''))
|
|
149
138
|
};
|
|
150
139
|
break;
|
|
151
|
-
}
|
|
152
140
|
case 'PIC':
|
|
153
141
|
case 'APIC':
|
|
154
142
|
if (includeCovers) {
|
|
155
143
|
const pic = {};
|
|
156
|
-
|
|
144
|
+
offset += 1;
|
|
157
145
|
switch (this.major) {
|
|
158
146
|
case 2:
|
|
159
|
-
pic.format = util.decodeString(uint8Array.
|
|
160
|
-
|
|
147
|
+
pic.format = util.decodeString(uint8Array.slice(offset, offset + 3), 'latin1'); // 'latin1'; // latin1 == iso-8859-1;
|
|
148
|
+
offset += 3;
|
|
161
149
|
break;
|
|
162
150
|
case 3:
|
|
163
151
|
case 4:
|
|
164
|
-
fzero = util.findZero(uint8Array, defaultEnc);
|
|
165
|
-
pic.format = util.decodeString(uint8Array.
|
|
166
|
-
|
|
152
|
+
fzero = util.findZero(uint8Array, offset, length, defaultEnc);
|
|
153
|
+
pic.format = util.decodeString(uint8Array.slice(offset, fzero), defaultEnc);
|
|
154
|
+
offset = fzero + 1;
|
|
167
155
|
break;
|
|
168
156
|
default:
|
|
169
|
-
throw
|
|
157
|
+
throw new Error('Warning: unexpected major versionIndex: ' + this.major);
|
|
170
158
|
}
|
|
171
159
|
pic.format = FrameParser.fixPictureMimeType(pic.format);
|
|
172
|
-
pic.type = AttachedPictureType[uint8Array[
|
|
173
|
-
|
|
174
|
-
fzero = util.findZero(uint8Array, encoding);
|
|
175
|
-
pic.description = util.decodeString(uint8Array.
|
|
176
|
-
|
|
177
|
-
pic.data = uint8Array;
|
|
160
|
+
pic.type = ID3v2Token_1.AttachedPictureType[uint8Array[offset]];
|
|
161
|
+
offset += 1;
|
|
162
|
+
fzero = util.findZero(uint8Array, offset, length, encoding);
|
|
163
|
+
pic.description = util.decodeString(uint8Array.slice(offset, fzero), encoding);
|
|
164
|
+
offset = fzero + nullTerminatorLength;
|
|
165
|
+
pic.data = Buffer.from(uint8Array.slice(offset, length));
|
|
178
166
|
output = pic;
|
|
179
167
|
}
|
|
180
168
|
break;
|
|
181
169
|
case 'CNT':
|
|
182
170
|
case 'PCNT':
|
|
183
|
-
output =
|
|
171
|
+
output = Token.UINT32_BE.get(uint8Array, 0);
|
|
184
172
|
break;
|
|
185
|
-
case 'SYLT':
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
const nullStr = FrameParser.readNullTerminatedString(uint8Array, syltHeader.encoding);
|
|
198
|
-
uint8Array = uint8Array.subarray(nullStr.len);
|
|
199
|
-
if (readSyllables) {
|
|
200
|
-
const timestamp = Token.UINT32_BE.get(uint8Array, 0);
|
|
201
|
-
uint8Array = uint8Array.subarray(Token.UINT32_BE.len);
|
|
202
|
-
result.syncText.push({
|
|
203
|
-
text: nullStr.text,
|
|
204
|
-
timestamp
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
result.descriptor = nullStr.text;
|
|
209
|
-
readSyllables = true;
|
|
210
|
-
}
|
|
173
|
+
case 'SYLT':
|
|
174
|
+
// skip text encoding (1 byte),
|
|
175
|
+
// language (3 bytes),
|
|
176
|
+
// time stamp format (1 byte),
|
|
177
|
+
// content tagTypes (1 byte),
|
|
178
|
+
// content descriptor (1 byte)
|
|
179
|
+
offset += 7;
|
|
180
|
+
output = [];
|
|
181
|
+
while (offset < length) {
|
|
182
|
+
const txt = uint8Array.slice(offset, offset = util.findZero(uint8Array, offset, length, encoding));
|
|
183
|
+
offset += 5; // push offset forward one + 4 byte timestamp
|
|
184
|
+
output.push(util.decodeString(txt, encoding));
|
|
211
185
|
}
|
|
212
|
-
output = result;
|
|
213
186
|
break;
|
|
214
|
-
}
|
|
215
187
|
case 'ULT':
|
|
216
188
|
case 'USLT':
|
|
217
189
|
case 'COM':
|
|
218
|
-
case 'COMM':
|
|
219
|
-
|
|
220
|
-
offset
|
|
221
|
-
|
|
222
|
-
offset
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
text: textStr.text
|
|
228
|
-
};
|
|
229
|
-
output = comment;
|
|
190
|
+
case 'COMM':
|
|
191
|
+
offset += 1;
|
|
192
|
+
out.language = util.decodeString(uint8Array.slice(offset, offset + 3), defaultEnc);
|
|
193
|
+
offset += 3;
|
|
194
|
+
fzero = util.findZero(uint8Array, offset, length, encoding);
|
|
195
|
+
out.description = util.decodeString(uint8Array.slice(offset, fzero), encoding);
|
|
196
|
+
offset = fzero + nullTerminatorLength;
|
|
197
|
+
out.text = util.decodeString(uint8Array.slice(offset, length), encoding).replace(/\x00+$/, '');
|
|
198
|
+
output = [out];
|
|
230
199
|
break;
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
output = { owner_identifier: ufid.id, identifier: ufid.data };
|
|
200
|
+
case 'UFID':
|
|
201
|
+
output = FrameParser.readIdentifierAndData(uint8Array, offset, length, defaultEnc);
|
|
202
|
+
output = { owner_identifier: output.id, identifier: output.data };
|
|
235
203
|
break;
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
output = { owner_identifier: priv.id, data: priv.data };
|
|
204
|
+
case 'PRIV': // private frame
|
|
205
|
+
output = FrameParser.readIdentifierAndData(uint8Array, offset, length, defaultEnc);
|
|
206
|
+
output = { owner_identifier: output.id, data: output.data };
|
|
240
207
|
break;
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
const
|
|
246
|
-
uint8Array = uint8Array.subarray(emailStr.len);
|
|
247
|
-
if (uint8Array.length === 0) {
|
|
248
|
-
this.warningCollector.addWarning(`id3v2.${this.major} type=${type} POPM frame missing rating byte`);
|
|
249
|
-
output = { email, rating: 0, counter: undefined };
|
|
250
|
-
break;
|
|
251
|
-
}
|
|
252
|
-
const rating = Token.UINT8.get(uint8Array, 0);
|
|
253
|
-
const counterBytes = uint8Array.subarray(Token.UINT8.len);
|
|
208
|
+
case 'POPM': // Popularimeter
|
|
209
|
+
fzero = util.findZero(uint8Array, offset, length, defaultEnc);
|
|
210
|
+
const email = util.decodeString(uint8Array.slice(offset, fzero), defaultEnc);
|
|
211
|
+
offset = fzero + 1;
|
|
212
|
+
const dataLen = length - offset;
|
|
254
213
|
output = {
|
|
255
214
|
email,
|
|
256
|
-
rating,
|
|
257
|
-
counter:
|
|
215
|
+
rating: Token.UINT8.get(uint8Array, offset),
|
|
216
|
+
counter: dataLen >= 5 ? Token.UINT32_BE.get(uint8Array, offset + 1) : undefined
|
|
258
217
|
};
|
|
259
218
|
break;
|
|
260
|
-
}
|
|
261
219
|
case 'GEOB': { // General encapsulated object
|
|
262
|
-
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
const
|
|
270
|
-
|
|
271
|
-
const descriptionStr = FrameParser.readNullTerminatedString(uint8Array, encoding);
|
|
272
|
-
const description = descriptionStr.text;
|
|
273
|
-
uint8Array = uint8Array.subarray(descriptionStr.len);
|
|
274
|
-
const geob = {
|
|
220
|
+
fzero = util.findZero(uint8Array, offset + 1, length, encoding);
|
|
221
|
+
const mimeType = util.decodeString(uint8Array.slice(offset + 1, fzero), defaultEnc);
|
|
222
|
+
offset = fzero + 1;
|
|
223
|
+
fzero = util.findZero(uint8Array, offset, length - offset, encoding);
|
|
224
|
+
const filename = util.decodeString(uint8Array.slice(offset, fzero), defaultEnc);
|
|
225
|
+
offset = fzero + 1;
|
|
226
|
+
fzero = util.findZero(uint8Array, offset, length - offset, encoding);
|
|
227
|
+
const description = util.decodeString(uint8Array.slice(offset, fzero), defaultEnc);
|
|
228
|
+
output = {
|
|
275
229
|
type: mimeType,
|
|
276
230
|
filename,
|
|
277
231
|
description,
|
|
278
|
-
data: uint8Array
|
|
232
|
+
data: uint8Array.slice(offset + 1, length)
|
|
279
233
|
};
|
|
280
|
-
output = geob;
|
|
281
234
|
break;
|
|
282
235
|
}
|
|
283
236
|
// W-Frames:
|
|
@@ -290,116 +243,31 @@ export class FrameParser {
|
|
|
290
243
|
case 'WPAY':
|
|
291
244
|
case 'WPUB':
|
|
292
245
|
// Decode URL
|
|
293
|
-
output =
|
|
246
|
+
output = util.decodeString(uint8Array.slice(offset, fzero), defaultEnc);
|
|
294
247
|
break;
|
|
295
248
|
case 'WXXX': {
|
|
296
|
-
//
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
uint8Array = uint8Array.subarray(descriptionStr.len);
|
|
302
|
-
// URL is always ISO-8859-1
|
|
303
|
-
output = { description, url: FrameParser.trimNullPadding(util.decodeString(uint8Array, defaultEnc)) };
|
|
249
|
+
// Decode URL
|
|
250
|
+
fzero = util.findZero(uint8Array, offset + 1, length, encoding);
|
|
251
|
+
const description = util.decodeString(uint8Array.slice(offset + 1, fzero), encoding);
|
|
252
|
+
offset = fzero + (encoding === 'utf16le' ? 2 : 1);
|
|
253
|
+
output = { description, url: util.decodeString(uint8Array.slice(offset, length), defaultEnc) };
|
|
304
254
|
break;
|
|
305
255
|
}
|
|
306
256
|
case 'WFD':
|
|
307
|
-
case 'WFED':
|
|
308
|
-
|
|
309
|
-
uint8Array = uint8Array.subarray(1);
|
|
310
|
-
output = FrameParser.readNullTerminatedString(uint8Array, encoding).text;
|
|
257
|
+
case 'WFED':
|
|
258
|
+
output = util.decodeString(uint8Array.slice(offset + 1, util.findZero(uint8Array, offset + 1, length, encoding)), encoding);
|
|
311
259
|
break;
|
|
312
|
-
}
|
|
313
260
|
case 'MCDI': {
|
|
314
261
|
// Music CD identifier
|
|
315
|
-
output = uint8Array.
|
|
316
|
-
break;
|
|
317
|
-
}
|
|
318
|
-
// ID3v2 Chapters 1.0
|
|
319
|
-
// https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2-chapters-1.0.html#chapter-frame
|
|
320
|
-
case 'CHAP': { // // Chapter frame
|
|
321
|
-
debug("Reading CHAP");
|
|
322
|
-
fzero = util.findZero(uint8Array, defaultEnc);
|
|
323
|
-
const chapter = {
|
|
324
|
-
label: util.decodeString(uint8Array.subarray(0, fzero), defaultEnc),
|
|
325
|
-
info: ChapterInfo.get(uint8Array, fzero + 1),
|
|
326
|
-
frames: new Map()
|
|
327
|
-
};
|
|
328
|
-
offset += fzero + 1 + ChapterInfo.len;
|
|
329
|
-
while (offset < length) {
|
|
330
|
-
const subFrame = readFrameHeader(uint8Array.subarray(offset), this.major, this.warningCollector);
|
|
331
|
-
const headerSize = getFrameHeaderLength(this.major);
|
|
332
|
-
offset += headerSize;
|
|
333
|
-
const subOutput = this.readData(uint8Array.subarray(offset, offset + subFrame.length), subFrame.id, includeCovers);
|
|
334
|
-
offset += subFrame.length;
|
|
335
|
-
chapter.frames.set(subFrame.id, subOutput);
|
|
336
|
-
}
|
|
337
|
-
output = chapter;
|
|
338
|
-
break;
|
|
339
|
-
}
|
|
340
|
-
// ID3v2 Chapters 1.0
|
|
341
|
-
// https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2-chapters-1.0.html#table-of-contents-frame
|
|
342
|
-
case 'CTOC': { // Table of contents frame
|
|
343
|
-
debug('Reading CTOC');
|
|
344
|
-
// Element ID (null-terminated latin1)
|
|
345
|
-
const idEnd = util.findZero(uint8Array, defaultEnc);
|
|
346
|
-
const label = util.decodeString(uint8Array.subarray(0, idEnd), defaultEnc);
|
|
347
|
-
offset = idEnd + 1;
|
|
348
|
-
// Flags
|
|
349
|
-
const flags = uint8Array[offset++];
|
|
350
|
-
const topLevel = (flags & 0x02) !== 0;
|
|
351
|
-
const ordered = (flags & 0x01) !== 0;
|
|
352
|
-
// Child element IDs
|
|
353
|
-
const entryCount = uint8Array[offset++];
|
|
354
|
-
const childElementIds = [];
|
|
355
|
-
for (let i = 0; i < entryCount && offset < length; i++) {
|
|
356
|
-
const end = util.findZero(uint8Array.subarray(offset), defaultEnc);
|
|
357
|
-
const childId = util.decodeString(uint8Array.subarray(offset, offset + end), defaultEnc);
|
|
358
|
-
childElementIds.push(childId);
|
|
359
|
-
offset += end + 1;
|
|
360
|
-
}
|
|
361
|
-
const toc = {
|
|
362
|
-
label,
|
|
363
|
-
flags: { topLevel, ordered },
|
|
364
|
-
childElementIds,
|
|
365
|
-
frames: new Map()
|
|
366
|
-
};
|
|
367
|
-
// Optional embedded sub-frames (e.g. TIT2) follow after the child list
|
|
368
|
-
while (offset < length) {
|
|
369
|
-
const subFrame = readFrameHeader(uint8Array.subarray(offset), this.major, this.warningCollector);
|
|
370
|
-
const headerSize = getFrameHeaderLength(this.major);
|
|
371
|
-
offset += headerSize;
|
|
372
|
-
const subOutput = this.readData(uint8Array.subarray(offset, offset + subFrame.length), subFrame.id, includeCovers);
|
|
373
|
-
offset += subFrame.length;
|
|
374
|
-
toc.frames.set(subFrame.id, subOutput);
|
|
375
|
-
}
|
|
376
|
-
output = toc;
|
|
262
|
+
output = uint8Array.slice(0, length);
|
|
377
263
|
break;
|
|
378
264
|
}
|
|
379
265
|
default:
|
|
380
|
-
debug(
|
|
266
|
+
debug('Warning: unsupported id3v2-tag-type: ' + type);
|
|
381
267
|
break;
|
|
382
268
|
}
|
|
383
269
|
return output;
|
|
384
270
|
}
|
|
385
|
-
static readNullTerminatedString(uint8Array, encoding) {
|
|
386
|
-
const bomSize = encoding.bom ? 2 : 0;
|
|
387
|
-
const originalLen = uint8Array.length;
|
|
388
|
-
const valueArray = uint8Array.subarray(bomSize);
|
|
389
|
-
const zeroIndex = util.findZero(valueArray, encoding.encoding);
|
|
390
|
-
if (zeroIndex >= valueArray.length) {
|
|
391
|
-
// No terminator found, decode full buffer remainder
|
|
392
|
-
return {
|
|
393
|
-
text: util.decodeString(valueArray, encoding.encoding),
|
|
394
|
-
len: originalLen
|
|
395
|
-
};
|
|
396
|
-
}
|
|
397
|
-
const txt = valueArray.subarray(0, zeroIndex);
|
|
398
|
-
return {
|
|
399
|
-
text: util.decodeString(txt, encoding.encoding),
|
|
400
|
-
len: bomSize + zeroIndex + FrameParser.getNullTerminatorLength(encoding.encoding)
|
|
401
|
-
};
|
|
402
|
-
}
|
|
403
271
|
static fixPictureMimeType(pictureType) {
|
|
404
272
|
pictureType = pictureType.toLocaleLowerCase();
|
|
405
273
|
switch (pictureType) {
|
|
@@ -418,7 +286,7 @@ export class FrameParser {
|
|
|
418
286
|
const res = {};
|
|
419
287
|
for (let i = 0; i + 1 < entries.length; i += 2) {
|
|
420
288
|
const names = entries[i + 1].split(',');
|
|
421
|
-
res[entries[i]] = res
|
|
289
|
+
res[entries[i]] = res.hasOwnProperty(entries[i]) ? res[entries[i]].concat(names) : names;
|
|
422
290
|
}
|
|
423
291
|
return res;
|
|
424
292
|
}
|
|
@@ -446,25 +314,16 @@ export class FrameParser {
|
|
|
446
314
|
return FrameParser.trimArray(values);
|
|
447
315
|
}
|
|
448
316
|
static trimArray(values) {
|
|
449
|
-
return values.map(value =>
|
|
317
|
+
return values.map(value => value.replace(/\x00+$/, '').trim());
|
|
450
318
|
}
|
|
451
|
-
static
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
}
|
|
456
|
-
return end === value.length ? value : value.slice(0, end);
|
|
457
|
-
}
|
|
458
|
-
static readIdentifierAndData(uint8Array, encoding) {
|
|
459
|
-
const idStr = FrameParser.readNullTerminatedString(uint8Array, { encoding, bom: false });
|
|
460
|
-
return { id: idStr.text, data: uint8Array.subarray(idStr.len) };
|
|
319
|
+
static readIdentifierAndData(uint8Array, offset, length, encoding) {
|
|
320
|
+
const fzero = util.findZero(uint8Array, offset, length, encoding);
|
|
321
|
+
const id = util.decodeString(uint8Array.slice(offset, fzero), encoding);
|
|
322
|
+
offset = fzero + FrameParser.getNullTerminatorLength(encoding);
|
|
323
|
+
return { id, data: uint8Array.slice(offset, length) };
|
|
461
324
|
}
|
|
462
325
|
static getNullTerminatorLength(enc) {
|
|
463
|
-
return enc
|
|
326
|
+
return enc === 'utf16le' ? 2 : 1;
|
|
464
327
|
}
|
|
465
328
|
}
|
|
466
|
-
|
|
467
|
-
}
|
|
468
|
-
function makeUnexpectedMajorVersionError(majorVer) {
|
|
469
|
-
throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);
|
|
470
|
-
}
|
|
329
|
+
exports.FrameParser = FrameParser;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap
|
|
1
|
+
import { INativeTagMap } from '../common/GenericTagTypes';
|
|
2
|
+
import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap';
|
|
3
3
|
/**
|
|
4
4
|
* ID3v2.2 tag mappings
|
|
5
5
|
*/
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ID3v22TagMapper = exports.id3v22TagMap = void 0;
|
|
4
|
+
const CaseInsensitiveTagMap_1 = require("../common/CaseInsensitiveTagMap");
|
|
2
5
|
/**
|
|
3
6
|
* ID3v2.2 tag mappings
|
|
4
7
|
*/
|
|
5
|
-
|
|
8
|
+
exports.id3v22TagMap = {
|
|
6
9
|
TT2: 'title',
|
|
7
10
|
TP1: 'artist',
|
|
8
11
|
TP2: 'albumartist',
|
|
@@ -27,6 +30,12 @@ export const id3v22TagMap = {
|
|
|
27
30
|
TEN: 'encodedby',
|
|
28
31
|
TSS: 'encodersettings',
|
|
29
32
|
WAR: 'website',
|
|
33
|
+
'COM:iTunPGAP': 'gapless'
|
|
34
|
+
/* ToDo: iTunes tags:
|
|
35
|
+
'COM:iTunNORM': ,
|
|
36
|
+
'COM:iTunSMPB': 'encoder delay',
|
|
37
|
+
'COM:iTunes_CDDB_IDs'
|
|
38
|
+
*/ ,
|
|
30
39
|
PCS: 'podcast',
|
|
31
40
|
TCP: "compilation",
|
|
32
41
|
TDR: 'date',
|
|
@@ -36,11 +45,12 @@ export const id3v22TagMap = {
|
|
|
36
45
|
TSP: 'artistsort',
|
|
37
46
|
TST: 'titlesort',
|
|
38
47
|
WFD: 'podcasturl',
|
|
39
|
-
TBP: 'bpm'
|
|
40
|
-
GP1: 'grouping'
|
|
48
|
+
TBP: 'bpm'
|
|
41
49
|
};
|
|
42
|
-
|
|
50
|
+
class ID3v22TagMapper extends CaseInsensitiveTagMap_1.CaseInsensitiveTagMap {
|
|
43
51
|
constructor() {
|
|
44
|
-
super(['ID3v2.2'], id3v22TagMap);
|
|
52
|
+
super(['ID3v2.2'], exports.id3v22TagMap);
|
|
45
53
|
}
|
|
46
54
|
}
|
|
55
|
+
exports.ID3v22TagMapper = ID3v22TagMapper;
|
|
56
|
+
//# sourceMappingURL=ID3v22TagMapper.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import type { IPopularimeter } from './FrameParser.js';
|
|
1
|
+
import { INativeMetadataCollector } from '../common/MetadataCollector';
|
|
2
|
+
import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap';
|
|
3
|
+
import { IRating, ITag } from '../type';
|
|
5
4
|
export declare class ID3v24TagMapper extends CaseInsensitiveTagMap {
|
|
6
|
-
static toRating(popm:
|
|
5
|
+
static toRating(popm: any): IRating;
|
|
7
6
|
constructor();
|
|
8
7
|
/**
|
|
9
8
|
* Handle post mapping exceptions / correction
|
|
10
9
|
* @param tag to post map
|
|
11
10
|
* @param warnings Wil be used to register (collect) warnings
|
|
11
|
+
* @return Common value e.g. "Buena Vista Social Club"
|
|
12
12
|
*/
|
|
13
13
|
protected postMap(tag: ITag, warnings: INativeMetadataCollector): void;
|
|
14
14
|
}
|