@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,19 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.joinArtists = exports.MetadataCollector = void 0;
|
|
4
|
+
const type_1 = require("../type");
|
|
5
|
+
const debug_1 = require("debug");
|
|
6
|
+
const GenericTagTypes_1 = require("./GenericTagTypes");
|
|
7
|
+
const CombinedTagMapper_1 = require("./CombinedTagMapper");
|
|
8
|
+
const GenericTagMapper_1 = require("./GenericTagMapper");
|
|
9
|
+
const Util_1 = require("./Util");
|
|
10
|
+
const FileType = require("file-type/core");
|
|
11
|
+
const debug = (0, debug_1.default)('music-metadata:collector');
|
|
10
12
|
const TagPriority = ['matroska', 'APEv2', 'vorbis', 'ID3v2.4', 'ID3v2.3', 'ID3v2.2', 'exif', 'asf', 'iTunes', 'AIFF', 'ID3v1'];
|
|
11
13
|
/**
|
|
12
14
|
* Provided to the parser to uodate the metadata result.
|
|
13
15
|
* Responsible for triggering async updates
|
|
14
16
|
*/
|
|
15
|
-
|
|
17
|
+
class MetadataCollector {
|
|
16
18
|
constructor(opts) {
|
|
19
|
+
this.opts = opts;
|
|
17
20
|
this.format = {
|
|
18
21
|
tagTypes: [],
|
|
19
22
|
trackInfo: []
|
|
@@ -22,7 +25,7 @@ export class MetadataCollector {
|
|
|
22
25
|
this.common = {
|
|
23
26
|
track: { no: null, of: null },
|
|
24
27
|
disk: { no: null, of: null },
|
|
25
|
-
movementIndex: {
|
|
28
|
+
movementIndex: {}
|
|
26
29
|
};
|
|
27
30
|
this.quality = {
|
|
28
31
|
warnings: []
|
|
@@ -35,8 +38,7 @@ export class MetadataCollector {
|
|
|
35
38
|
* Maps a tag type to a priority
|
|
36
39
|
*/
|
|
37
40
|
this.originPriority = {};
|
|
38
|
-
this.tagMapper = new CombinedTagMapper();
|
|
39
|
-
this.opts = opts;
|
|
41
|
+
this.tagMapper = new CombinedTagMapper_1.CombinedTagMapper();
|
|
40
42
|
let priority = 1;
|
|
41
43
|
for (const tagType of TagPriority) {
|
|
42
44
|
this.originPriority[tagType] = priority++;
|
|
@@ -51,132 +53,124 @@ export class MetadataCollector {
|
|
|
51
53
|
return Object.keys(this.native).length > 0;
|
|
52
54
|
}
|
|
53
55
|
addStreamInfo(streamInfo) {
|
|
54
|
-
debug(`streamInfo: type=${
|
|
56
|
+
debug(`streamInfo: type=${type_1.TrackType[streamInfo.type]}, codec=${streamInfo.codecName}`);
|
|
55
57
|
this.format.trackInfo.push(streamInfo);
|
|
56
58
|
}
|
|
57
59
|
setFormat(key, value) {
|
|
58
60
|
debug(`format: ${key} = ${value}`);
|
|
59
61
|
this.format[key] = value; // as any to override readonly
|
|
60
|
-
if (this.opts
|
|
62
|
+
if (this.opts.observer) {
|
|
61
63
|
this.opts.observer({ metadata: this, tag: { type: 'format', id: key, value } });
|
|
62
64
|
}
|
|
63
65
|
}
|
|
64
|
-
|
|
65
|
-
this.setFormat('hasAudio', true);
|
|
66
|
-
this.setFormat('hasVideo', false);
|
|
67
|
-
}
|
|
68
|
-
async addTag(tagType, tagId, value) {
|
|
66
|
+
addTag(tagType, tagId, value) {
|
|
69
67
|
debug(`tag ${tagType}.${tagId} = ${value}`);
|
|
70
68
|
if (!this.native[tagType]) {
|
|
71
69
|
this.format.tagTypes.push(tagType);
|
|
72
70
|
this.native[tagType] = [];
|
|
73
71
|
}
|
|
74
72
|
this.native[tagType].push({ id: tagId, value });
|
|
75
|
-
|
|
73
|
+
this.toCommon(tagType, tagId, value);
|
|
76
74
|
}
|
|
77
75
|
addWarning(warning) {
|
|
78
76
|
this.quality.warnings.push({ message: warning });
|
|
79
77
|
}
|
|
80
|
-
|
|
78
|
+
postMap(tagType, tag) {
|
|
81
79
|
// Common tag (alias) found
|
|
82
80
|
// check if we need to do something special with common tag
|
|
83
81
|
// if the event has been aliased then we need to clean it before
|
|
84
82
|
// it is emitted to the user. e.g. genre (20) -> Electronic
|
|
85
83
|
switch (tag.id) {
|
|
86
84
|
case 'artist':
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
if (this.commonOrigin.artist === this.originPriority[tagType]) {
|
|
86
|
+
// Assume the artist field is used as artists
|
|
87
|
+
return this.postMap('artificial', { id: 'artists', value: tag.value });
|
|
88
|
+
}
|
|
89
|
+
if (!this.common.artists) {
|
|
90
|
+
// Fill artists using artist source
|
|
91
|
+
this.setGenericTag('artificial', { id: 'artists', value: tag.value });
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
90
94
|
case 'artists':
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
95
|
+
if (!this.common.artist || this.commonOrigin.artist === this.originPriority.artificial) {
|
|
96
|
+
if (!this.common.artists || this.common.artists.indexOf(tag.value) === -1) {
|
|
97
|
+
// Fill artist using artists source
|
|
98
|
+
const artists = (this.common.artists || []).concat([tag.value]);
|
|
99
|
+
const value = joinArtists(artists);
|
|
100
|
+
const artistTag = { id: 'artist', value };
|
|
101
|
+
this.setGenericTag('artificial', artistTag);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
94
105
|
case 'picture':
|
|
95
|
-
|
|
106
|
+
this.postFixPicture(tag.value).then(picture => {
|
|
96
107
|
if (picture !== null) {
|
|
97
108
|
tag.value = picture;
|
|
98
109
|
this.setGenericTag(tagType, tag);
|
|
99
110
|
}
|
|
100
111
|
});
|
|
112
|
+
return;
|
|
101
113
|
case 'totaltracks':
|
|
102
|
-
this.common.track.of = CommonTagMapper.toIntOrNull(tag.value);
|
|
114
|
+
this.common.track.of = GenericTagMapper_1.CommonTagMapper.toIntOrNull(tag.value);
|
|
103
115
|
return;
|
|
104
116
|
case 'totaldiscs':
|
|
105
|
-
this.common.disk.of = CommonTagMapper.toIntOrNull(tag.value);
|
|
117
|
+
this.common.disk.of = GenericTagMapper_1.CommonTagMapper.toIntOrNull(tag.value);
|
|
106
118
|
return;
|
|
107
119
|
case 'movementTotal':
|
|
108
|
-
this.common.movementIndex.of = CommonTagMapper.toIntOrNull(tag.value);
|
|
120
|
+
this.common.movementIndex.of = GenericTagMapper_1.CommonTagMapper.toIntOrNull(tag.value);
|
|
109
121
|
return;
|
|
110
122
|
case 'track':
|
|
111
123
|
case 'disk':
|
|
112
|
-
case 'movementIndex':
|
|
124
|
+
case 'movementIndex':
|
|
113
125
|
const of = this.common[tag.id].of; // store of value, maybe maybe overwritten
|
|
114
|
-
this.common[tag.id] = CommonTagMapper.normalizeTrack(tag.value);
|
|
126
|
+
this.common[tag.id] = GenericTagMapper_1.CommonTagMapper.normalizeTrack(tag.value);
|
|
115
127
|
this.common[tag.id].of = of != null ? of : this.common[tag.id].of;
|
|
116
128
|
return;
|
|
117
|
-
}
|
|
118
129
|
case 'bpm':
|
|
119
130
|
case 'year':
|
|
120
131
|
case 'originalyear':
|
|
121
|
-
tag.value =
|
|
132
|
+
tag.value = parseInt(tag.value, 10);
|
|
122
133
|
break;
|
|
123
|
-
case 'date':
|
|
134
|
+
case 'date':
|
|
124
135
|
// ToDo: be more strict on 'YYYY...'
|
|
125
|
-
const year =
|
|
126
|
-
if (!
|
|
136
|
+
const year = parseInt(tag.value.substr(0, 4), 10);
|
|
137
|
+
if (!isNaN(year)) {
|
|
127
138
|
this.common.year = year;
|
|
128
139
|
}
|
|
129
140
|
break;
|
|
130
|
-
}
|
|
131
141
|
case 'discogs_label_id':
|
|
132
142
|
case 'discogs_release_id':
|
|
133
143
|
case 'discogs_master_release_id':
|
|
134
144
|
case 'discogs_artist_id':
|
|
135
145
|
case 'discogs_votes':
|
|
136
|
-
tag.value = typeof tag.value === 'string' ?
|
|
146
|
+
tag.value = typeof tag.value === 'string' ? parseInt(tag.value, 10) : tag.value;
|
|
137
147
|
break;
|
|
138
148
|
case 'replaygain_track_gain':
|
|
139
149
|
case 'replaygain_track_peak':
|
|
140
150
|
case 'replaygain_album_gain':
|
|
141
151
|
case 'replaygain_album_peak':
|
|
142
|
-
tag.value = toRatio(tag.value);
|
|
152
|
+
tag.value = (0, Util_1.toRatio)(tag.value);
|
|
143
153
|
break;
|
|
144
154
|
case 'replaygain_track_minmax':
|
|
145
|
-
tag.value = tag.value.split(',').map(v =>
|
|
155
|
+
tag.value = tag.value.split(',').map(v => parseInt(v, 10));
|
|
146
156
|
break;
|
|
147
|
-
case 'replaygain_undo':
|
|
148
|
-
const minMix = tag.value.split(',').map(v =>
|
|
157
|
+
case 'replaygain_undo':
|
|
158
|
+
const minMix = tag.value.split(',').map(v => parseInt(v, 10));
|
|
149
159
|
tag.value = {
|
|
150
160
|
leftChannel: minMix[0],
|
|
151
161
|
rightChannel: minMix[1]
|
|
152
162
|
};
|
|
153
163
|
break;
|
|
154
|
-
}
|
|
155
164
|
case 'gapless': // iTunes gap-less flag
|
|
156
165
|
case 'compilation':
|
|
157
166
|
case 'podcast':
|
|
158
167
|
case 'showMovement':
|
|
159
168
|
tag.value = tag.value === '1' || tag.value === 1; // boolean
|
|
160
169
|
break;
|
|
161
|
-
case 'isrc':
|
|
162
|
-
|
|
163
|
-
if (commonTag && commonTag.indexOf(tag.value) !== -1)
|
|
170
|
+
case 'isrc': // Only keep unique values
|
|
171
|
+
if (this.common[tag.id] && this.common[tag.id].indexOf(tag.value) !== -1)
|
|
164
172
|
return;
|
|
165
173
|
break;
|
|
166
|
-
}
|
|
167
|
-
case 'comment':
|
|
168
|
-
if (typeof tag.value === 'string') {
|
|
169
|
-
tag.value = { text: tag.value };
|
|
170
|
-
}
|
|
171
|
-
if (tag.value.descriptor === 'iTunPGAP') {
|
|
172
|
-
this.setGenericTag(tagType, { id: 'gapless', value: tag.value.text === '1' });
|
|
173
|
-
}
|
|
174
|
-
break;
|
|
175
|
-
case 'lyrics':
|
|
176
|
-
if (typeof tag.value === 'string') {
|
|
177
|
-
tag.value = parseLyrics(tag.value);
|
|
178
|
-
}
|
|
179
|
-
break;
|
|
180
174
|
default:
|
|
181
175
|
// nothing to do
|
|
182
176
|
}
|
|
@@ -196,34 +190,6 @@ export class MetadataCollector {
|
|
|
196
190
|
common: this.common
|
|
197
191
|
};
|
|
198
192
|
}
|
|
199
|
-
/**
|
|
200
|
-
* Handle singular artist tags (artist, albumartist) and cross-populate to plural form
|
|
201
|
-
*/
|
|
202
|
-
handleSingularArtistTag(tagType, tag, singularId, pluralId) {
|
|
203
|
-
if (this.commonOrigin[singularId] === this.originPriority[tagType]) {
|
|
204
|
-
// Assume the singular field is used as plural (multiple values from same source)
|
|
205
|
-
return this.postMap('artificial', { id: pluralId, value: tag.value });
|
|
206
|
-
}
|
|
207
|
-
if (!this.common[pluralId]) {
|
|
208
|
-
// Fill plural using singular source
|
|
209
|
-
this.setGenericTag('artificial', { id: pluralId, value: tag.value });
|
|
210
|
-
}
|
|
211
|
-
this.setGenericTag(tagType, tag);
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Handle plural artist tags (artists, albumartists) and cross-populate to singular form
|
|
215
|
-
*/
|
|
216
|
-
handlePluralArtistTag(tagType, tag, singularId, pluralId) {
|
|
217
|
-
if (!this.common[singularId] || this.commonOrigin[singularId] === this.originPriority.artificial) {
|
|
218
|
-
if (!this.common[pluralId] || this.common[pluralId].indexOf(tag.value) === -1) {
|
|
219
|
-
// Fill singular using plural source
|
|
220
|
-
const values = (this.common[pluralId] || []).concat([tag.value]);
|
|
221
|
-
const value = joinArtists(values);
|
|
222
|
-
this.setGenericTag('artificial', { id: singularId, value });
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
this.setGenericTag(tagType, tag);
|
|
226
|
-
}
|
|
227
193
|
/**
|
|
228
194
|
* Fix some common issues with picture object
|
|
229
195
|
* @param picture Picture
|
|
@@ -231,7 +197,7 @@ export class MetadataCollector {
|
|
|
231
197
|
async postFixPicture(picture) {
|
|
232
198
|
if (picture.data && picture.data.length > 0) {
|
|
233
199
|
if (!picture.format) {
|
|
234
|
-
const fileType = await
|
|
200
|
+
const fileType = await FileType.fromBuffer(picture.data);
|
|
235
201
|
if (fileType) {
|
|
236
202
|
picture.format = fileType.mime;
|
|
237
203
|
}
|
|
@@ -246,17 +212,17 @@ export class MetadataCollector {
|
|
|
246
212
|
}
|
|
247
213
|
return picture;
|
|
248
214
|
}
|
|
249
|
-
this.addWarning(
|
|
215
|
+
this.addWarning(`Empty picture tag found`);
|
|
250
216
|
return null;
|
|
251
217
|
}
|
|
252
218
|
/**
|
|
253
219
|
* Convert native tag to common tags
|
|
254
220
|
*/
|
|
255
|
-
|
|
221
|
+
toCommon(tagType, tagId, value) {
|
|
256
222
|
const tag = { id: tagId, value };
|
|
257
223
|
const genericTag = this.tagMapper.mapTag(tagType, tag, this);
|
|
258
224
|
if (genericTag) {
|
|
259
|
-
|
|
225
|
+
this.postMap(tagType, genericTag);
|
|
260
226
|
}
|
|
261
227
|
}
|
|
262
228
|
/**
|
|
@@ -266,7 +232,7 @@ export class MetadataCollector {
|
|
|
266
232
|
debug(`common.${tag.id} = ${tag.value}`);
|
|
267
233
|
const prio0 = this.commonOrigin[tag.id] || 1000;
|
|
268
234
|
const prio1 = this.originPriority[tagType];
|
|
269
|
-
if (isSingleton(tag.id)) {
|
|
235
|
+
if ((0, GenericTagTypes_1.isSingleton)(tag.id)) {
|
|
270
236
|
if (prio1 <= prio0) {
|
|
271
237
|
this.common[tag.id] = tag.value;
|
|
272
238
|
this.commonOrigin[tag.id] = prio1;
|
|
@@ -277,7 +243,7 @@ export class MetadataCollector {
|
|
|
277
243
|
}
|
|
278
244
|
else {
|
|
279
245
|
if (prio1 === prio0) {
|
|
280
|
-
if (!isUnique(tag.id) || this.common[tag.id].indexOf(tag.value) === -1) {
|
|
246
|
+
if (!(0, GenericTagTypes_1.isUnique)(tag.id) || this.common[tag.id].indexOf(tag.value) === -1) {
|
|
281
247
|
this.common[tag.id].push(tag.value);
|
|
282
248
|
}
|
|
283
249
|
else {
|
|
@@ -293,15 +259,18 @@ export class MetadataCollector {
|
|
|
293
259
|
return debug(`Ignore native tag (list): ${tagType}.${tag.id} = ${tag.value}`);
|
|
294
260
|
}
|
|
295
261
|
}
|
|
296
|
-
if (this.opts
|
|
262
|
+
if (this.opts.observer) {
|
|
297
263
|
this.opts.observer({ metadata: this, tag: { type: 'common', id: tag.id, value: tag.value } });
|
|
298
264
|
}
|
|
299
265
|
// ToDo: trigger metadata event
|
|
300
266
|
}
|
|
301
267
|
}
|
|
302
|
-
|
|
268
|
+
exports.MetadataCollector = MetadataCollector;
|
|
269
|
+
function joinArtists(artists) {
|
|
303
270
|
if (artists.length > 2) {
|
|
304
|
-
return
|
|
271
|
+
return artists.slice(0, artists.length - 1).join(', ') + ' & ' + artists[artists.length - 1];
|
|
305
272
|
}
|
|
306
273
|
return artists.join(' & ');
|
|
307
274
|
}
|
|
275
|
+
exports.joinArtists = joinArtists;
|
|
276
|
+
//# sourceMappingURL=MetadataCollector.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IRandomReader } from '../type';
|
|
3
|
+
/**
|
|
4
|
+
* Provides abstract file access via the IRandomRead interface
|
|
5
|
+
*/
|
|
6
|
+
export declare class RandomFileReader implements IRandomReader {
|
|
7
|
+
private readonly fileHandle;
|
|
8
|
+
filePath: string;
|
|
9
|
+
fileSize: number;
|
|
10
|
+
private constructor();
|
|
11
|
+
/**
|
|
12
|
+
* Read from a given position of an abstracted file or buffer.
|
|
13
|
+
* @param buffer {Buffer} is the buffer that the data will be written to.
|
|
14
|
+
* @param offset {number} is the offset in the buffer to start writing at.
|
|
15
|
+
* @param length {number}is an integer specifying the number of bytes to read.
|
|
16
|
+
* @param position {number} is an argument specifying where to begin reading from in the file.
|
|
17
|
+
* @return {Promise<number>} bytes read
|
|
18
|
+
*/
|
|
19
|
+
randomRead(buffer: Buffer, offset: number, length: number, position: number): Promise<number>;
|
|
20
|
+
close(): Promise<void>;
|
|
21
|
+
static init(filePath: string, fileSize: number): Promise<RandomFileReader>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RandomFileReader = void 0;
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
/**
|
|
6
|
+
* Provides abstract file access via the IRandomRead interface
|
|
7
|
+
*/
|
|
8
|
+
class RandomFileReader {
|
|
9
|
+
constructor(fileHandle, filePath, fileSize) {
|
|
10
|
+
this.fileHandle = fileHandle;
|
|
11
|
+
this.filePath = filePath;
|
|
12
|
+
this.fileSize = fileSize;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Read from a given position of an abstracted file or buffer.
|
|
16
|
+
* @param buffer {Buffer} is the buffer that the data will be written to.
|
|
17
|
+
* @param offset {number} is the offset in the buffer to start writing at.
|
|
18
|
+
* @param length {number}is an integer specifying the number of bytes to read.
|
|
19
|
+
* @param position {number} is an argument specifying where to begin reading from in the file.
|
|
20
|
+
* @return {Promise<number>} bytes read
|
|
21
|
+
*/
|
|
22
|
+
async randomRead(buffer, offset, length, position) {
|
|
23
|
+
const result = await this.fileHandle.read(buffer, offset, length, position);
|
|
24
|
+
return result.bytesRead;
|
|
25
|
+
}
|
|
26
|
+
async close() {
|
|
27
|
+
return this.fileHandle.close();
|
|
28
|
+
}
|
|
29
|
+
static async init(filePath, fileSize) {
|
|
30
|
+
const fileHandle = await fs.promises.open(filePath, 'r');
|
|
31
|
+
return new RandomFileReader(fileHandle, filePath, fileSize);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.RandomFileReader = RandomFileReader;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IRandomReader } from '../type';
|
|
2
|
+
/**
|
|
3
|
+
* Provides abstract Uint8Array access via the IRandomRead interface
|
|
4
|
+
*/
|
|
5
|
+
export declare class RandomUint8ArrayReader implements IRandomReader {
|
|
6
|
+
private readonly uint8Array;
|
|
7
|
+
readonly fileSize: number;
|
|
8
|
+
constructor(uint8Array: Uint8Array);
|
|
9
|
+
/**
|
|
10
|
+
* Read from a given position of an abstracted file or buffer.
|
|
11
|
+
* @param uint8Array - Uint8Array that the data will be written to.
|
|
12
|
+
* @param offset - Offset in the buffer to start writing at.
|
|
13
|
+
* @param length - Integer specifying the number of bytes to read.
|
|
14
|
+
* @param position - Specifies where to begin reading from in the file.
|
|
15
|
+
* @return Promise providing bytes read
|
|
16
|
+
*/
|
|
17
|
+
randomRead(uint8Array: Uint8Array, offset: number, length: number, position: number): Promise<number>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RandomUint8ArrayReader = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Provides abstract Uint8Array access via the IRandomRead interface
|
|
6
|
+
*/
|
|
7
|
+
class RandomUint8ArrayReader {
|
|
8
|
+
constructor(uint8Array) {
|
|
9
|
+
this.uint8Array = uint8Array;
|
|
10
|
+
this.fileSize = uint8Array.length;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Read from a given position of an abstracted file or buffer.
|
|
14
|
+
* @param uint8Array - Uint8Array that the data will be written to.
|
|
15
|
+
* @param offset - Offset in the buffer to start writing at.
|
|
16
|
+
* @param length - Integer specifying the number of bytes to read.
|
|
17
|
+
* @param position - Specifies where to begin reading from in the file.
|
|
18
|
+
* @return Promise providing bytes read
|
|
19
|
+
*/
|
|
20
|
+
async randomRead(uint8Array, offset, length, position) {
|
|
21
|
+
uint8Array.set(this.uint8Array.subarray(position, position + length), offset);
|
|
22
|
+
return length;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.RandomUint8ArrayReader = RandomUint8ArrayReader;
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
export type StringEncoding = 'ascii' | 'utf8' | '
|
|
1
|
+
import { IRatio } from '../type';
|
|
2
|
+
export type StringEncoding = 'ascii' | 'utf8' | 'utf16le' | 'ucs2' | 'base64url' | 'latin1' | 'hex';
|
|
3
|
+
export interface ITextEncoding {
|
|
4
|
+
encoding: StringEncoding;
|
|
5
|
+
bom?: boolean;
|
|
6
|
+
}
|
|
3
7
|
export declare function getBit(buf: Uint8Array, off: number, bit: number): boolean;
|
|
4
8
|
/**
|
|
5
|
-
*
|
|
9
|
+
* Found delimiting zero in uint8Array
|
|
6
10
|
* @param uint8Array Uint8Array to find the zero delimiter in
|
|
11
|
+
* @param start Offset in uint8Array
|
|
12
|
+
* @param end Last position to parse in uint8Array
|
|
7
13
|
* @param encoding The string encoding used
|
|
8
|
-
* @return position
|
|
14
|
+
* @return Absolute position on uint8Array where zero found
|
|
9
15
|
*/
|
|
10
|
-
export declare function findZero(uint8Array: Uint8Array, encoding?: StringEncoding): number;
|
|
16
|
+
export declare function findZero(uint8Array: Uint8Array, start: number, end: number, encoding?: StringEncoding): number;
|
|
11
17
|
export declare function trimRightNull(x: string): string;
|
|
12
18
|
/**
|
|
13
19
|
* Decode string
|
|
@@ -48,9 +54,4 @@ export declare function dbToRatio(dB: number): number;
|
|
|
48
54
|
* Convert replay gain to ratio and Decibel
|
|
49
55
|
* @param value string holding a ratio like '0.034' or '-7.54 dB'
|
|
50
56
|
*/
|
|
51
|
-
export declare function toRatio(value: string): IRatio
|
|
52
|
-
/**
|
|
53
|
-
* Decode a big-endian unsigned integer from a Uint8Array.
|
|
54
|
-
* Supports dynamic length (1–8 bytes).
|
|
55
|
-
*/
|
|
56
|
-
export declare function decodeUintBE(uint8Array: Uint8Array): number;
|
|
57
|
+
export declare function toRatio(value: string): IRatio;
|
|
@@ -1,40 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toRatio = exports.dbToRatio = exports.ratioToDb = exports.a2hex = exports.isBitSet = exports.getBitAllignedNumber = exports.stripNulls = exports.decodeString = exports.trimRightNull = exports.findZero = exports.getBit = void 0;
|
|
4
|
+
function getBit(buf, off, bit) {
|
|
5
5
|
return (buf[off] & (1 << bit)) !== 0;
|
|
6
6
|
}
|
|
7
|
+
exports.getBit = getBit;
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
+
* Found delimiting zero in uint8Array
|
|
9
10
|
* @param uint8Array Uint8Array to find the zero delimiter in
|
|
11
|
+
* @param start Offset in uint8Array
|
|
12
|
+
* @param end Last position to parse in uint8Array
|
|
10
13
|
* @param encoding The string encoding used
|
|
11
|
-
* @return position
|
|
14
|
+
* @return Absolute position on uint8Array where zero found
|
|
12
15
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (encoding === '
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
function findZero(uint8Array, start, end, encoding) {
|
|
17
|
+
let i = start;
|
|
18
|
+
if (encoding === 'utf16le') {
|
|
19
|
+
while (uint8Array[i] !== 0 || uint8Array[i + 1] !== 0) {
|
|
20
|
+
if (i >= end)
|
|
21
|
+
return end;
|
|
22
|
+
i += 2;
|
|
20
23
|
}
|
|
21
|
-
return
|
|
24
|
+
return i;
|
|
22
25
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
else {
|
|
27
|
+
while (uint8Array[i] !== 0) {
|
|
28
|
+
if (i >= end)
|
|
29
|
+
return end;
|
|
30
|
+
i++;
|
|
31
|
+
}
|
|
32
|
+
return i;
|
|
27
33
|
}
|
|
28
|
-
return len;
|
|
29
34
|
}
|
|
30
|
-
|
|
35
|
+
exports.findZero = findZero;
|
|
36
|
+
function trimRightNull(x) {
|
|
31
37
|
const pos0 = x.indexOf('\0');
|
|
32
|
-
return pos0 === -1 ? x : x.
|
|
38
|
+
return pos0 === -1 ? x : x.substr(0, pos0);
|
|
33
39
|
}
|
|
40
|
+
exports.trimRightNull = trimRightNull;
|
|
34
41
|
function swapBytes(uint8Array) {
|
|
35
42
|
const l = uint8Array.length;
|
|
36
43
|
if ((l & 1) !== 0)
|
|
37
|
-
throw new
|
|
44
|
+
throw new Error('Buffer length must be even');
|
|
38
45
|
for (let i = 0; i < l; i += 2) {
|
|
39
46
|
const a = uint8Array[i];
|
|
40
47
|
uint8Array[i] = uint8Array[i + 1];
|
|
@@ -45,25 +52,27 @@ function swapBytes(uint8Array) {
|
|
|
45
52
|
/**
|
|
46
53
|
* Decode string
|
|
47
54
|
*/
|
|
48
|
-
|
|
55
|
+
function decodeString(uint8Array, encoding) {
|
|
49
56
|
// annoying workaround for a double BOM issue
|
|
50
57
|
// https://github.com/leetreveil/musicmetadata/issues/84
|
|
51
58
|
if (uint8Array[0] === 0xFF && uint8Array[1] === 0xFE) { // little endian
|
|
52
59
|
return decodeString(uint8Array.subarray(2), encoding);
|
|
53
60
|
}
|
|
54
|
-
if (encoding === '
|
|
61
|
+
else if (encoding === 'utf16le' && uint8Array[0] === 0xFE && uint8Array[1] === 0xFF) {
|
|
55
62
|
// BOM, indicating big endian decoding
|
|
56
63
|
if ((uint8Array.length & 1) !== 0)
|
|
57
|
-
throw new
|
|
64
|
+
throw new Error('Expected even number of octets for 16-bit unicode string');
|
|
58
65
|
return decodeString(swapBytes(uint8Array), encoding);
|
|
59
66
|
}
|
|
60
|
-
return
|
|
67
|
+
return Buffer.from(uint8Array).toString(encoding);
|
|
61
68
|
}
|
|
62
|
-
|
|
69
|
+
exports.decodeString = decodeString;
|
|
70
|
+
function stripNulls(str) {
|
|
63
71
|
str = str.replace(/^\x00+/g, '');
|
|
64
72
|
str = str.replace(/\x00+$/g, '');
|
|
65
73
|
return str;
|
|
66
74
|
}
|
|
75
|
+
exports.stripNulls = stripNulls;
|
|
67
76
|
/**
|
|
68
77
|
* Read bit-aligned number start from buffer
|
|
69
78
|
* Total offset in bits = byteOffset * 8 + bitOffset
|
|
@@ -73,7 +82,7 @@ export function stripNulls(str) {
|
|
|
73
82
|
* @param len Length of number in bits
|
|
74
83
|
* @return Decoded bit aligned number
|
|
75
84
|
*/
|
|
76
|
-
|
|
85
|
+
function getBitAllignedNumber(source, byteOffset, bitOffset, len) {
|
|
77
86
|
const byteOff = byteOffset + ~~(bitOffset / 8);
|
|
78
87
|
const bitOff = bitOffset % 8;
|
|
79
88
|
let value = source[byteOff];
|
|
@@ -89,6 +98,7 @@ export function getBitAllignedNumber(source, byteOffset, bitOffset, len) {
|
|
|
89
98
|
}
|
|
90
99
|
return value;
|
|
91
100
|
}
|
|
101
|
+
exports.getBitAllignedNumber = getBitAllignedNumber;
|
|
92
102
|
/**
|
|
93
103
|
* Read bit-aligned number start from buffer
|
|
94
104
|
* Total offset in bits = byteOffset * 8 + bitOffset
|
|
@@ -97,39 +107,44 @@ export function getBitAllignedNumber(source, byteOffset, bitOffset, len) {
|
|
|
97
107
|
* @param bitOffset Starting offset in bits: 0 = most significant bit, 7 is the least significant bit
|
|
98
108
|
* @return True if bit is set
|
|
99
109
|
*/
|
|
100
|
-
|
|
110
|
+
function isBitSet(source, byteOffset, bitOffset) {
|
|
101
111
|
return getBitAllignedNumber(source, byteOffset, bitOffset, 1) === 1;
|
|
102
112
|
}
|
|
103
|
-
|
|
113
|
+
exports.isBitSet = isBitSet;
|
|
114
|
+
function a2hex(str) {
|
|
104
115
|
const arr = [];
|
|
105
116
|
for (let i = 0, l = str.length; i < l; i++) {
|
|
106
117
|
const hex = Number(str.charCodeAt(i)).toString(16);
|
|
107
|
-
arr.push(hex.length === 1 ?
|
|
118
|
+
arr.push(hex.length === 1 ? '0' + hex : hex);
|
|
108
119
|
}
|
|
109
120
|
return arr.join(' ');
|
|
110
121
|
}
|
|
122
|
+
exports.a2hex = a2hex;
|
|
111
123
|
/**
|
|
112
124
|
* Convert power ratio to DB
|
|
113
125
|
* ratio: [0..1]
|
|
114
126
|
*/
|
|
115
|
-
|
|
127
|
+
function ratioToDb(ratio) {
|
|
116
128
|
return 10 * Math.log10(ratio);
|
|
117
129
|
}
|
|
130
|
+
exports.ratioToDb = ratioToDb;
|
|
118
131
|
/**
|
|
119
132
|
* Convert dB to ratio
|
|
120
133
|
* db Decibels
|
|
121
134
|
*/
|
|
122
|
-
|
|
123
|
-
return 10
|
|
135
|
+
function dbToRatio(dB) {
|
|
136
|
+
return Math.pow(10, dB / 10);
|
|
124
137
|
}
|
|
138
|
+
exports.dbToRatio = dbToRatio;
|
|
125
139
|
/**
|
|
126
140
|
* Convert replay gain to ratio and Decibel
|
|
127
141
|
* @param value string holding a ratio like '0.034' or '-7.54 dB'
|
|
128
142
|
*/
|
|
129
|
-
|
|
143
|
+
function toRatio(value) {
|
|
130
144
|
const ps = value.split(' ').map(p => p.trim().toLowerCase());
|
|
145
|
+
// @ts-ignore
|
|
131
146
|
if (ps.length >= 1) {
|
|
132
|
-
const v =
|
|
147
|
+
const v = parseFloat(ps[0]);
|
|
133
148
|
return ps.length === 2 && ps[1] === 'db' ? {
|
|
134
149
|
dB: v,
|
|
135
150
|
ratio: dbToRatio(v)
|
|
@@ -139,14 +154,5 @@ export function toRatio(value) {
|
|
|
139
154
|
};
|
|
140
155
|
}
|
|
141
156
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
* Supports dynamic length (1–8 bytes).
|
|
145
|
-
*/
|
|
146
|
-
export function decodeUintBE(uint8Array) {
|
|
147
|
-
if (uint8Array.length === 0) {
|
|
148
|
-
throw new Error("decodeUintBE: empty Uint8Array");
|
|
149
|
-
}
|
|
150
|
-
const view = new DataView(uint8Array.buffer, uint8Array.byteOffset, uint8Array.byteLength);
|
|
151
|
-
return getUintBE(view);
|
|
152
|
-
}
|
|
157
|
+
exports.toRatio = toRatio;
|
|
158
|
+
//# sourceMappingURL=Util.js.map
|