@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,50 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// ASF Objects
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.WmPictureToken = exports.MetadataLibraryObjectState = exports.MetadataObjectState = exports.ExtendedStreamPropertiesObjectState = exports.ExtendedContentDescriptionObjectState = exports.ContentDescriptionObjectState = exports.readCodecEntries = exports.HeaderExtensionObject = exports.StreamPropertiesObject = exports.FilePropertiesObject = exports.IgnoreObjectState = exports.State = exports.HeaderObjectToken = exports.TopLevelHeaderObjectToken = exports.DataType = void 0;
|
|
5
|
+
const util = require("../common/Util");
|
|
6
|
+
const Token = require("token-types");
|
|
7
|
+
const GUID_1 = require("./GUID");
|
|
8
|
+
const AsfUtil_1 = require("./AsfUtil");
|
|
9
|
+
const ID3v2Token_1 = require("../id3v2/ID3v2Token");
|
|
10
10
|
/**
|
|
11
11
|
* Data Type: Specifies the type of information being stored. The following values are recognized.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
var DataType;
|
|
14
|
+
(function (DataType) {
|
|
14
15
|
/**
|
|
15
16
|
* Unicode string. The data consists of a sequence of Unicode characters.
|
|
16
17
|
*/
|
|
17
|
-
UnicodeString
|
|
18
|
+
DataType[DataType["UnicodeString"] = 0] = "UnicodeString";
|
|
18
19
|
/**
|
|
19
20
|
* BYTE array. The type of data is implementation-specific.
|
|
20
21
|
*/
|
|
21
|
-
ByteArray
|
|
22
|
+
DataType[DataType["ByteArray"] = 1] = "ByteArray";
|
|
22
23
|
/**
|
|
23
24
|
* BOOL. The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer. Only 0x0000 or 0x0001 are permitted values.
|
|
24
25
|
*/
|
|
25
|
-
Bool
|
|
26
|
+
DataType[DataType["Bool"] = 2] = "Bool";
|
|
26
27
|
/**
|
|
27
28
|
* DWORD. The data is 4 bytes long and should be interpreted as a 32-bit unsigned integer.
|
|
28
29
|
*/
|
|
29
|
-
DWord
|
|
30
|
+
DataType[DataType["DWord"] = 3] = "DWord";
|
|
30
31
|
/**
|
|
31
32
|
* QWORD. The data is 8 bytes long and should be interpreted as a 64-bit unsigned integer.
|
|
32
33
|
*/
|
|
33
|
-
QWord
|
|
34
|
+
DataType[DataType["QWord"] = 4] = "QWord";
|
|
34
35
|
/**
|
|
35
36
|
* WORD. The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer.
|
|
36
37
|
*/
|
|
37
|
-
Word
|
|
38
|
-
};
|
|
38
|
+
DataType[DataType["Word"] = 5] = "Word";
|
|
39
|
+
})(DataType = exports.DataType || (exports.DataType = {}));
|
|
39
40
|
/**
|
|
40
41
|
* Token for: 3. ASF top-level Header Object
|
|
41
42
|
* Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3
|
|
42
43
|
*/
|
|
43
|
-
|
|
44
|
+
exports.TopLevelHeaderObjectToken = {
|
|
44
45
|
len: 30,
|
|
45
46
|
get: (buf, off) => {
|
|
46
47
|
return {
|
|
47
|
-
objectId:
|
|
48
|
+
objectId: GUID_1.default.fromBin(new Token.BufferType(16).get(buf, off)),
|
|
48
49
|
objectSize: Number(Token.UINT64_LE.get(buf, off + 16)),
|
|
49
50
|
numberOfHeaderObjects: Token.UINT32_LE.get(buf, off + 24)
|
|
50
51
|
// Reserved: 2 bytes
|
|
@@ -55,46 +56,54 @@ export const TopLevelHeaderObjectToken = {
|
|
|
55
56
|
* Token for: 3.1 Header Object (mandatory, one only)
|
|
56
57
|
* Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_1
|
|
57
58
|
*/
|
|
58
|
-
|
|
59
|
+
exports.HeaderObjectToken = {
|
|
59
60
|
len: 24,
|
|
60
61
|
get: (buf, off) => {
|
|
61
62
|
return {
|
|
62
|
-
objectId:
|
|
63
|
+
objectId: GUID_1.default.fromBin(new Token.BufferType(16).get(buf, off)),
|
|
63
64
|
objectSize: Number(Token.UINT64_LE.get(buf, off + 16))
|
|
64
65
|
};
|
|
65
66
|
}
|
|
66
67
|
};
|
|
67
|
-
|
|
68
|
+
class State {
|
|
68
69
|
constructor(header) {
|
|
69
|
-
this.len = Number(header.objectSize) - HeaderObjectToken.len;
|
|
70
|
+
this.len = Number(header.objectSize) - exports.HeaderObjectToken.len;
|
|
70
71
|
}
|
|
71
72
|
postProcessTag(tags, name, valueType, data) {
|
|
72
73
|
if (name === 'WM/Picture') {
|
|
73
74
|
tags.push({ id: name, value: WmPictureToken.fromBuffer(data) });
|
|
74
75
|
}
|
|
75
76
|
else {
|
|
76
|
-
const parseAttr = getParserForAttr(valueType);
|
|
77
|
+
const parseAttr = AsfUtil_1.AsfUtil.getParserForAttr(valueType);
|
|
77
78
|
if (!parseAttr) {
|
|
78
|
-
throw new
|
|
79
|
+
throw new Error('unexpected value headerType: ' + valueType);
|
|
79
80
|
}
|
|
80
81
|
tags.push({ id: name, value: parseAttr(data) });
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
84
|
}
|
|
85
|
+
exports.State = State;
|
|
84
86
|
// ToDo: use ignore type
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
class IgnoreObjectState extends State {
|
|
88
|
+
constructor(header) {
|
|
89
|
+
super(header);
|
|
90
|
+
}
|
|
91
|
+
get(buf, off) {
|
|
87
92
|
return null;
|
|
88
93
|
}
|
|
89
94
|
}
|
|
95
|
+
exports.IgnoreObjectState = IgnoreObjectState;
|
|
90
96
|
/**
|
|
91
97
|
* Token for: 3.2: File Properties Object (mandatory, one only)
|
|
92
98
|
* Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_2
|
|
93
99
|
*/
|
|
94
|
-
|
|
100
|
+
class FilePropertiesObject extends State {
|
|
101
|
+
constructor(header) {
|
|
102
|
+
super(header);
|
|
103
|
+
}
|
|
95
104
|
get(buf, off) {
|
|
96
105
|
return {
|
|
97
|
-
fileId:
|
|
106
|
+
fileId: GUID_1.default.fromBin(buf, off),
|
|
98
107
|
fileSize: Token.UINT64_LE.get(buf, off + 16),
|
|
99
108
|
creationDate: Token.UINT64_LE.get(buf, off + 24),
|
|
100
109
|
dataPacketsCount: Token.UINT64_LE.get(buf, off + 32),
|
|
@@ -112,39 +121,44 @@ export class FilePropertiesObject extends State {
|
|
|
112
121
|
};
|
|
113
122
|
}
|
|
114
123
|
}
|
|
115
|
-
FilePropertiesObject.guid =
|
|
124
|
+
FilePropertiesObject.guid = GUID_1.default.FilePropertiesObject;
|
|
125
|
+
exports.FilePropertiesObject = FilePropertiesObject;
|
|
116
126
|
/**
|
|
117
127
|
* Token for: 3.3 Stream Properties Object (mandatory, one per stream)
|
|
118
128
|
* Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_3
|
|
119
129
|
*/
|
|
120
|
-
|
|
130
|
+
class StreamPropertiesObject extends State {
|
|
131
|
+
constructor(header) {
|
|
132
|
+
super(header);
|
|
133
|
+
}
|
|
121
134
|
get(buf, off) {
|
|
122
135
|
return {
|
|
123
|
-
streamType:
|
|
124
|
-
errorCorrectionType:
|
|
136
|
+
streamType: GUID_1.default.decodeMediaType(GUID_1.default.fromBin(buf, off)),
|
|
137
|
+
errorCorrectionType: GUID_1.default.fromBin(buf, off + 8)
|
|
125
138
|
// ToDo
|
|
126
139
|
};
|
|
127
140
|
}
|
|
128
141
|
}
|
|
129
|
-
StreamPropertiesObject.guid =
|
|
142
|
+
StreamPropertiesObject.guid = GUID_1.default.StreamPropertiesObject;
|
|
143
|
+
exports.StreamPropertiesObject = StreamPropertiesObject;
|
|
130
144
|
/**
|
|
131
145
|
* 3.4: Header Extension Object (mandatory, one only)
|
|
132
146
|
* Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_4
|
|
133
147
|
*/
|
|
134
|
-
|
|
148
|
+
class HeaderExtensionObject {
|
|
135
149
|
constructor() {
|
|
136
150
|
this.len = 22;
|
|
137
151
|
}
|
|
138
152
|
get(buf, off) {
|
|
139
|
-
const view = new DataView(buf.buffer, off);
|
|
140
153
|
return {
|
|
141
|
-
reserved1:
|
|
142
|
-
reserved2:
|
|
143
|
-
extensionDataSize:
|
|
154
|
+
reserved1: GUID_1.default.fromBin(buf, off),
|
|
155
|
+
reserved2: buf.readUInt16LE(off + 16),
|
|
156
|
+
extensionDataSize: buf.readUInt32LE(off + 18)
|
|
144
157
|
};
|
|
145
158
|
}
|
|
146
159
|
}
|
|
147
|
-
HeaderExtensionObject.guid =
|
|
160
|
+
HeaderExtensionObject.guid = GUID_1.default.HeaderExtensionObject;
|
|
161
|
+
exports.HeaderExtensionObject = HeaderExtensionObject;
|
|
148
162
|
/**
|
|
149
163
|
* 3.5: The Codec List Object provides user-friendly information about the codecs and formats used to encode the content found in the ASF file.
|
|
150
164
|
* Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_5
|
|
@@ -152,21 +166,20 @@ HeaderExtensionObject.guid = AsfGuid.HeaderExtensionObject;
|
|
|
152
166
|
const CodecListObjectHeader = {
|
|
153
167
|
len: 20,
|
|
154
168
|
get: (buf, off) => {
|
|
155
|
-
const view = new DataView(buf.buffer, off);
|
|
156
169
|
return {
|
|
157
|
-
entryCount:
|
|
170
|
+
entryCount: buf.readUInt16LE(off + 16)
|
|
158
171
|
};
|
|
159
172
|
}
|
|
160
173
|
};
|
|
161
174
|
async function readString(tokenizer) {
|
|
162
175
|
const length = await tokenizer.readNumber(Token.UINT16_LE);
|
|
163
|
-
return (await tokenizer.readToken(new Token.StringType(length * 2, '
|
|
176
|
+
return (await tokenizer.readToken(new Token.StringType(length * 2, 'utf16le'))).replace('\0', '');
|
|
164
177
|
}
|
|
165
178
|
/**
|
|
166
179
|
* 3.5: Read the Codec-List-Object, which provides user-friendly information about the codecs and formats used to encode the content found in the ASF file.
|
|
167
180
|
* Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_5
|
|
168
181
|
*/
|
|
169
|
-
|
|
182
|
+
async function readCodecEntries(tokenizer) {
|
|
170
183
|
const codecHeader = await tokenizer.readToken(CodecListObjectHeader);
|
|
171
184
|
const entries = [];
|
|
172
185
|
for (let i = 0; i < codecHeader.entryCount; ++i) {
|
|
@@ -174,9 +187,10 @@ export async function readCodecEntries(tokenizer) {
|
|
|
174
187
|
}
|
|
175
188
|
return entries;
|
|
176
189
|
}
|
|
190
|
+
exports.readCodecEntries = readCodecEntries;
|
|
177
191
|
async function readInformation(tokenizer) {
|
|
178
192
|
const length = await tokenizer.readNumber(Token.UINT16_LE);
|
|
179
|
-
const buf =
|
|
193
|
+
const buf = Buffer.alloc(length);
|
|
180
194
|
await tokenizer.readBuffer(buf);
|
|
181
195
|
return buf;
|
|
182
196
|
}
|
|
@@ -200,122 +214,142 @@ async function readCodecEntry(tokenizer) {
|
|
|
200
214
|
* 3.10 Content Description Object (optional, one only)
|
|
201
215
|
* Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_10
|
|
202
216
|
*/
|
|
203
|
-
|
|
217
|
+
class ContentDescriptionObjectState extends State {
|
|
218
|
+
constructor(header) {
|
|
219
|
+
super(header);
|
|
220
|
+
}
|
|
204
221
|
get(buf, off) {
|
|
205
222
|
const tags = [];
|
|
206
|
-
|
|
207
|
-
let pos = 10;
|
|
223
|
+
let pos = off + 10;
|
|
208
224
|
for (let i = 0; i < ContentDescriptionObjectState.contentDescTags.length; ++i) {
|
|
209
|
-
const length =
|
|
225
|
+
const length = buf.readUInt16LE(off + i * 2);
|
|
210
226
|
if (length > 0) {
|
|
211
227
|
const tagName = ContentDescriptionObjectState.contentDescTags[i];
|
|
212
228
|
const end = pos + length;
|
|
213
|
-
tags.push({ id: tagName, value: parseUnicodeAttr(buf.
|
|
229
|
+
tags.push({ id: tagName, value: AsfUtil_1.AsfUtil.parseUnicodeAttr(buf.slice(pos, end)) });
|
|
214
230
|
pos = end;
|
|
215
231
|
}
|
|
216
232
|
}
|
|
217
233
|
return tags;
|
|
218
234
|
}
|
|
219
235
|
}
|
|
220
|
-
ContentDescriptionObjectState.guid =
|
|
236
|
+
ContentDescriptionObjectState.guid = GUID_1.default.ContentDescriptionObject;
|
|
221
237
|
ContentDescriptionObjectState.contentDescTags = ['Title', 'Author', 'Copyright', 'Description', 'Rating'];
|
|
238
|
+
exports.ContentDescriptionObjectState = ContentDescriptionObjectState;
|
|
222
239
|
/**
|
|
223
240
|
* 3.11 Extended Content Description Object (optional, one only)
|
|
224
241
|
* Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_11
|
|
225
242
|
*/
|
|
226
|
-
|
|
243
|
+
class ExtendedContentDescriptionObjectState extends State {
|
|
244
|
+
constructor(header) {
|
|
245
|
+
super(header);
|
|
246
|
+
}
|
|
227
247
|
get(buf, off) {
|
|
228
248
|
const tags = [];
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
let pos = 2;
|
|
249
|
+
const attrCount = buf.readUInt16LE(off);
|
|
250
|
+
let pos = off + 2;
|
|
232
251
|
for (let i = 0; i < attrCount; i += 1) {
|
|
233
|
-
const nameLen =
|
|
252
|
+
const nameLen = buf.readUInt16LE(pos);
|
|
234
253
|
pos += 2;
|
|
235
|
-
const name = parseUnicodeAttr(buf.
|
|
254
|
+
const name = AsfUtil_1.AsfUtil.parseUnicodeAttr(buf.slice(pos, pos + nameLen));
|
|
236
255
|
pos += nameLen;
|
|
237
|
-
const valueType =
|
|
256
|
+
const valueType = buf.readUInt16LE(pos);
|
|
238
257
|
pos += 2;
|
|
239
|
-
const valueLen =
|
|
258
|
+
const valueLen = buf.readUInt16LE(pos);
|
|
240
259
|
pos += 2;
|
|
241
|
-
const value = buf.
|
|
260
|
+
const value = buf.slice(pos, pos + valueLen);
|
|
242
261
|
pos += valueLen;
|
|
243
262
|
this.postProcessTag(tags, name, valueType, value);
|
|
244
263
|
}
|
|
245
264
|
return tags;
|
|
246
265
|
}
|
|
247
266
|
}
|
|
248
|
-
ExtendedContentDescriptionObjectState.guid =
|
|
267
|
+
ExtendedContentDescriptionObjectState.guid = GUID_1.default.ExtendedContentDescriptionObject;
|
|
268
|
+
exports.ExtendedContentDescriptionObjectState = ExtendedContentDescriptionObjectState;
|
|
249
269
|
/**
|
|
250
270
|
* 4.1 Extended Stream Properties Object (optional, 1 per media stream)
|
|
251
271
|
* Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/04_objects_in_the_asf_header_extension_object.html#4_1
|
|
252
272
|
*/
|
|
253
|
-
|
|
273
|
+
class ExtendedStreamPropertiesObjectState extends State {
|
|
274
|
+
constructor(header) {
|
|
275
|
+
super(header);
|
|
276
|
+
}
|
|
254
277
|
get(buf, off) {
|
|
255
|
-
const view = new DataView(buf.buffer, off);
|
|
256
278
|
return {
|
|
257
279
|
startTime: Token.UINT64_LE.get(buf, off),
|
|
258
280
|
endTime: Token.UINT64_LE.get(buf, off + 8),
|
|
259
|
-
dataBitrate:
|
|
260
|
-
bufferSize:
|
|
261
|
-
initialBufferFullness:
|
|
262
|
-
alternateDataBitrate:
|
|
263
|
-
alternateBufferSize:
|
|
264
|
-
alternateInitialBufferFullness:
|
|
265
|
-
maximumObjectSize:
|
|
281
|
+
dataBitrate: buf.readInt32LE(off + 12),
|
|
282
|
+
bufferSize: buf.readInt32LE(off + 16),
|
|
283
|
+
initialBufferFullness: buf.readInt32LE(off + 20),
|
|
284
|
+
alternateDataBitrate: buf.readInt32LE(off + 24),
|
|
285
|
+
alternateBufferSize: buf.readInt32LE(off + 28),
|
|
286
|
+
alternateInitialBufferFullness: buf.readInt32LE(off + 32),
|
|
287
|
+
maximumObjectSize: buf.readInt32LE(off + 36),
|
|
266
288
|
flags: {
|
|
267
289
|
reliableFlag: util.getBit(buf, off + 40, 0),
|
|
268
290
|
seekableFlag: util.getBit(buf, off + 40, 1),
|
|
269
291
|
resendLiveCleanpointsFlag: util.getBit(buf, off + 40, 2)
|
|
270
292
|
},
|
|
271
293
|
// flagsNumeric: Token.UINT32_LE.get(buf, off + 64),
|
|
272
|
-
streamNumber:
|
|
273
|
-
streamLanguageId:
|
|
274
|
-
averageTimePerFrame:
|
|
275
|
-
streamNameCount:
|
|
276
|
-
payloadExtensionSystems:
|
|
277
|
-
streamNames: [],
|
|
294
|
+
streamNumber: buf.readInt16LE(off + 42),
|
|
295
|
+
streamLanguageId: buf.readInt16LE(off + 44),
|
|
296
|
+
averageTimePerFrame: buf.readInt32LE(off + 52),
|
|
297
|
+
streamNameCount: buf.readInt32LE(off + 54),
|
|
298
|
+
payloadExtensionSystems: buf.readInt32LE(off + 56),
|
|
299
|
+
streamNames: [],
|
|
278
300
|
streamPropertiesObject: null
|
|
279
301
|
};
|
|
280
302
|
}
|
|
281
303
|
}
|
|
282
|
-
ExtendedStreamPropertiesObjectState.guid =
|
|
304
|
+
ExtendedStreamPropertiesObjectState.guid = GUID_1.default.ExtendedStreamPropertiesObject;
|
|
305
|
+
exports.ExtendedStreamPropertiesObjectState = ExtendedStreamPropertiesObjectState;
|
|
283
306
|
/**
|
|
284
307
|
* 4.7 Metadata Object (optional, 0 or 1)
|
|
285
308
|
* Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/04_objects_in_the_asf_header_extension_object.html#4_7
|
|
286
309
|
*/
|
|
287
|
-
|
|
310
|
+
class MetadataObjectState extends State {
|
|
311
|
+
constructor(header) {
|
|
312
|
+
super(header);
|
|
313
|
+
}
|
|
288
314
|
get(uint8Array, off) {
|
|
289
315
|
const tags = [];
|
|
290
|
-
const
|
|
291
|
-
const descriptionRecordsCount =
|
|
292
|
-
let pos = 2;
|
|
316
|
+
const buf = Buffer.from(uint8Array);
|
|
317
|
+
const descriptionRecordsCount = buf.readUInt16LE(off);
|
|
318
|
+
let pos = off + 2;
|
|
293
319
|
for (let i = 0; i < descriptionRecordsCount; i += 1) {
|
|
294
320
|
pos += 4;
|
|
295
|
-
const nameLen =
|
|
321
|
+
const nameLen = buf.readUInt16LE(pos);
|
|
296
322
|
pos += 2;
|
|
297
|
-
const dataType =
|
|
323
|
+
const dataType = buf.readUInt16LE(pos);
|
|
298
324
|
pos += 2;
|
|
299
|
-
const dataLen =
|
|
325
|
+
const dataLen = buf.readUInt32LE(pos);
|
|
300
326
|
pos += 4;
|
|
301
|
-
const name = parseUnicodeAttr(
|
|
327
|
+
const name = AsfUtil_1.AsfUtil.parseUnicodeAttr(buf.slice(pos, pos + nameLen));
|
|
302
328
|
pos += nameLen;
|
|
303
|
-
const data =
|
|
329
|
+
const data = buf.slice(pos, pos + dataLen);
|
|
304
330
|
pos += dataLen;
|
|
305
331
|
this.postProcessTag(tags, name, dataType, data);
|
|
306
332
|
}
|
|
307
333
|
return tags;
|
|
308
334
|
}
|
|
309
335
|
}
|
|
310
|
-
MetadataObjectState.guid =
|
|
336
|
+
MetadataObjectState.guid = GUID_1.default.MetadataObject;
|
|
337
|
+
exports.MetadataObjectState = MetadataObjectState;
|
|
311
338
|
// 4.8 Metadata Library Object (optional, 0 or 1)
|
|
312
|
-
|
|
339
|
+
class MetadataLibraryObjectState extends MetadataObjectState {
|
|
340
|
+
constructor(header) {
|
|
341
|
+
super(header);
|
|
342
|
+
}
|
|
313
343
|
}
|
|
314
|
-
MetadataLibraryObjectState.guid =
|
|
344
|
+
MetadataLibraryObjectState.guid = GUID_1.default.MetadataLibraryObject;
|
|
345
|
+
exports.MetadataLibraryObjectState = MetadataLibraryObjectState;
|
|
315
346
|
/**
|
|
316
347
|
* Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd757977(v=vs.85).aspx
|
|
317
348
|
*/
|
|
318
|
-
|
|
349
|
+
class WmPictureToken {
|
|
350
|
+
static fromBase64(base64str) {
|
|
351
|
+
return this.fromBuffer(Buffer.from(base64str, 'base64'));
|
|
352
|
+
}
|
|
319
353
|
static fromBuffer(buffer) {
|
|
320
354
|
const pic = new WmPictureToken(buffer.length);
|
|
321
355
|
return pic.get(buffer, 0);
|
|
@@ -324,20 +358,19 @@ export class WmPictureToken {
|
|
|
324
358
|
this.len = len;
|
|
325
359
|
}
|
|
326
360
|
get(buffer, offset) {
|
|
327
|
-
const
|
|
328
|
-
const
|
|
329
|
-
const size = view.getInt32(1, true);
|
|
361
|
+
const typeId = buffer.readUInt8(offset++);
|
|
362
|
+
const size = buffer.readInt32LE(offset);
|
|
330
363
|
let index = 5;
|
|
331
|
-
while (
|
|
364
|
+
while (buffer.readUInt16BE(index) !== 0) {
|
|
332
365
|
index += 2;
|
|
333
366
|
}
|
|
334
|
-
const format =
|
|
335
|
-
while (
|
|
367
|
+
const format = buffer.slice(5, index).toString('utf16le');
|
|
368
|
+
while (buffer.readUInt16BE(index) !== 0) {
|
|
336
369
|
index += 2;
|
|
337
370
|
}
|
|
338
|
-
const description =
|
|
371
|
+
const description = buffer.slice(5, index).toString('utf16le');
|
|
339
372
|
return {
|
|
340
|
-
type: AttachedPictureType[typeId],
|
|
373
|
+
type: ID3v2Token_1.AttachedPictureType[typeId],
|
|
341
374
|
format,
|
|
342
375
|
description,
|
|
343
376
|
size,
|
|
@@ -345,3 +378,4 @@ export class WmPictureToken {
|
|
|
345
378
|
};
|
|
346
379
|
}
|
|
347
380
|
}
|
|
381
|
+
exports.WmPictureToken = WmPictureToken;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AsfParser = void 0;
|
|
4
|
+
const debug_1 = require("debug");
|
|
5
|
+
const type_1 = require("../type");
|
|
6
|
+
const GUID_1 = require("./GUID");
|
|
7
|
+
const AsfObject = require("./AsfObject");
|
|
8
|
+
const BasicParser_1 = require("../common/BasicParser");
|
|
9
|
+
const debug = (0, debug_1.default)('music-metadata:parser:ASF');
|
|
8
10
|
const headerType = 'asf';
|
|
9
11
|
/**
|
|
10
12
|
* Windows Media Metadata Usage Guidelines
|
|
@@ -16,13 +18,18 @@ const headerType = 'asf';
|
|
|
16
18
|
* - http://drang.s4.xrea.com/program/tips/id3tag/wmp/index.html
|
|
17
19
|
* - https://msdn.microsoft.com/en-us/library/windows/desktop/ee663575(v=vs.85).aspx
|
|
18
20
|
*/
|
|
19
|
-
|
|
21
|
+
class AsfParser extends BasicParser_1.BasicParser {
|
|
20
22
|
async parse() {
|
|
21
23
|
const header = await this.tokenizer.readToken(AsfObject.TopLevelHeaderObjectToken);
|
|
22
|
-
if (!header.objectId.equals(
|
|
23
|
-
throw new
|
|
24
|
+
if (!header.objectId.equals(GUID_1.default.HeaderObject)) {
|
|
25
|
+
throw new Error('expected asf header; but was not found; got: ' + header.objectId.str);
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
await this.parseObjectHeader(header.numberOfHeaderObjects);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
debug('Error while parsing ASF: %s', err);
|
|
24
32
|
}
|
|
25
|
-
await this.parseObjectHeader(header.numberOfHeaderObjects);
|
|
26
33
|
}
|
|
27
34
|
async parseObjectHeader(numberOfObjectHeaders) {
|
|
28
35
|
let tags;
|
|
@@ -32,98 +39,91 @@ export class AsfParser extends BasicParser {
|
|
|
32
39
|
// Parse data part of the ASF Object
|
|
33
40
|
debug('header GUID=%s', header.objectId.str);
|
|
34
41
|
switch (header.objectId.str) {
|
|
35
|
-
case AsfObject.FilePropertiesObject.guid.str:
|
|
42
|
+
case AsfObject.FilePropertiesObject.guid.str: // 3.2
|
|
36
43
|
const fpo = await this.tokenizer.readToken(new AsfObject.FilePropertiesObject(header));
|
|
37
44
|
this.metadata.setFormat('duration', Number(fpo.playDuration / BigInt(1000)) / 10000 - Number(fpo.preroll) / 1000);
|
|
38
45
|
this.metadata.setFormat('bitrate', fpo.maximumBitrate);
|
|
39
46
|
break;
|
|
40
|
-
|
|
41
|
-
case AsfObject.StreamPropertiesObject.guid.str: { // 3.3
|
|
47
|
+
case AsfObject.StreamPropertiesObject.guid.str: // 3.3
|
|
42
48
|
const spo = await this.tokenizer.readToken(new AsfObject.StreamPropertiesObject(header));
|
|
43
|
-
this.metadata.setFormat('container',
|
|
49
|
+
this.metadata.setFormat('container', 'ASF/' + spo.streamType);
|
|
44
50
|
break;
|
|
45
|
-
|
|
46
|
-
case AsfObject.HeaderExtensionObject.guid.str: { // 3.4
|
|
51
|
+
case AsfObject.HeaderExtensionObject.guid.str: // 3.4
|
|
47
52
|
const extHeader = await this.tokenizer.readToken(new AsfObject.HeaderExtensionObject());
|
|
48
53
|
await this.parseExtensionObject(extHeader.extensionDataSize);
|
|
49
54
|
break;
|
|
50
|
-
}
|
|
51
55
|
case AsfObject.ContentDescriptionObjectState.guid.str: // 3.10
|
|
52
56
|
tags = await this.tokenizer.readToken(new AsfObject.ContentDescriptionObjectState(header));
|
|
53
|
-
|
|
57
|
+
this.addTags(tags);
|
|
54
58
|
break;
|
|
55
59
|
case AsfObject.ExtendedContentDescriptionObjectState.guid.str: // 3.11
|
|
56
60
|
tags = await this.tokenizer.readToken(new AsfObject.ExtendedContentDescriptionObjectState(header));
|
|
57
|
-
|
|
61
|
+
this.addTags(tags);
|
|
58
62
|
break;
|
|
59
|
-
case
|
|
63
|
+
case GUID_1.default.CodecListObject.str:
|
|
60
64
|
const codecs = await AsfObject.readCodecEntries(this.tokenizer);
|
|
61
65
|
codecs.forEach(codec => {
|
|
62
66
|
this.metadata.addStreamInfo({
|
|
63
|
-
type: codec.type.videoCodec ? TrackType.video : TrackType.audio,
|
|
67
|
+
type: codec.type.videoCodec ? type_1.TrackType.video : type_1.TrackType.audio,
|
|
64
68
|
codecName: codec.codecName
|
|
65
69
|
});
|
|
66
70
|
});
|
|
67
71
|
const audioCodecs = codecs.filter(codec => codec.type.audioCodec).map(codec => codec.codecName).join('/');
|
|
68
72
|
this.metadata.setFormat('codec', audioCodecs);
|
|
69
73
|
break;
|
|
70
|
-
|
|
71
|
-
case AsfGuid.StreamBitratePropertiesObject.str:
|
|
74
|
+
case GUID_1.default.StreamBitratePropertiesObject.str:
|
|
72
75
|
// ToDo?
|
|
73
76
|
await this.tokenizer.ignore(header.objectSize - AsfObject.HeaderObjectToken.len);
|
|
74
77
|
break;
|
|
75
|
-
case
|
|
78
|
+
case GUID_1.default.PaddingObject.str:
|
|
76
79
|
// ToDo: register bytes pad
|
|
77
80
|
debug('Padding: %s bytes', header.objectSize - AsfObject.HeaderObjectToken.len);
|
|
78
81
|
await this.tokenizer.ignore(header.objectSize - AsfObject.HeaderObjectToken.len);
|
|
79
82
|
break;
|
|
80
83
|
default:
|
|
81
|
-
this.metadata.addWarning(
|
|
84
|
+
this.metadata.addWarning('Ignore ASF-Object-GUID: ' + header.objectId.str);
|
|
82
85
|
debug('Ignore ASF-Object-GUID: %s', header.objectId.str);
|
|
83
86
|
await this.tokenizer.readToken(new AsfObject.IgnoreObjectState(header));
|
|
84
87
|
}
|
|
85
88
|
} while (--numberOfObjectHeaders);
|
|
86
89
|
// done
|
|
87
90
|
}
|
|
88
|
-
|
|
89
|
-
|
|
91
|
+
addTags(tags) {
|
|
92
|
+
tags.forEach(tag => {
|
|
93
|
+
this.metadata.addTag(headerType, tag.id, tag.value);
|
|
94
|
+
});
|
|
90
95
|
}
|
|
91
96
|
async parseExtensionObject(extensionSize) {
|
|
92
97
|
do {
|
|
93
98
|
// Parse common header of the ASF Object (3.1)
|
|
94
99
|
const header = await this.tokenizer.readToken(AsfObject.HeaderObjectToken);
|
|
95
100
|
const remaining = header.objectSize - AsfObject.HeaderObjectToken.len;
|
|
96
|
-
if (remaining < 0) {
|
|
97
|
-
throw new AsfContentParseError(`Invalid ASF header object size: ${header.objectSize}`);
|
|
98
|
-
}
|
|
99
101
|
// Parse data part of the ASF Object
|
|
100
102
|
switch (header.objectId.str) {
|
|
101
103
|
case AsfObject.ExtendedStreamPropertiesObjectState.guid.str: // 4.1
|
|
102
104
|
// ToDo: extended stream header properties are ignored
|
|
103
105
|
await this.tokenizer.readToken(new AsfObject.ExtendedStreamPropertiesObjectState(header));
|
|
104
106
|
break;
|
|
105
|
-
case AsfObject.MetadataObjectState.guid.str:
|
|
107
|
+
case AsfObject.MetadataObjectState.guid.str: // 4.7
|
|
106
108
|
const moTags = await this.tokenizer.readToken(new AsfObject.MetadataObjectState(header));
|
|
107
|
-
|
|
109
|
+
this.addTags(moTags);
|
|
108
110
|
break;
|
|
109
|
-
|
|
110
|
-
case AsfObject.MetadataLibraryObjectState.guid.str: { // 4.8
|
|
111
|
+
case AsfObject.MetadataLibraryObjectState.guid.str: // 4.8
|
|
111
112
|
const mlTags = await this.tokenizer.readToken(new AsfObject.MetadataLibraryObjectState(header));
|
|
112
|
-
|
|
113
|
+
this.addTags(mlTags);
|
|
113
114
|
break;
|
|
114
|
-
|
|
115
|
-
case AsfGuid.PaddingObject.str:
|
|
115
|
+
case GUID_1.default.PaddingObject.str:
|
|
116
116
|
// ToDo: register bytes pad
|
|
117
117
|
await this.tokenizer.ignore(remaining);
|
|
118
118
|
break;
|
|
119
|
-
case
|
|
120
|
-
|
|
119
|
+
case GUID_1.default.CompatibilityObject.str:
|
|
120
|
+
this.tokenizer.ignore(remaining);
|
|
121
121
|
break;
|
|
122
|
-
case
|
|
122
|
+
case GUID_1.default.ASF_Index_Placeholder_Object.str:
|
|
123
123
|
await this.tokenizer.ignore(remaining);
|
|
124
124
|
break;
|
|
125
125
|
default:
|
|
126
|
-
this.metadata.addWarning(
|
|
126
|
+
this.metadata.addWarning('Ignore ASF-Object-GUID: ' + header.objectId.str);
|
|
127
127
|
// console.log("Ignore ASF-Object-GUID: %s", header.objectId.str);
|
|
128
128
|
await this.tokenizer.readToken(new AsfObject.IgnoreObjectState(header));
|
|
129
129
|
break;
|
|
@@ -132,3 +132,4 @@ export class AsfParser extends BasicParser {
|
|
|
132
132
|
} while (extensionSize > 0);
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
|
+
exports.AsfParser = AsfParser;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CommonTagMapper } from '../common/GenericTagMapper
|
|
2
|
-
import
|
|
1
|
+
import { CommonTagMapper } from '../common/GenericTagMapper';
|
|
2
|
+
import { IRating, ITag } from '../type';
|
|
3
3
|
export declare class AsfTagMapper extends CommonTagMapper {
|
|
4
4
|
static toRating(rating: string): IRating;
|
|
5
5
|
constructor();
|