music-metadata 8.3.0 → 9.0.1

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.
Files changed (96) hide show
  1. package/LICENSE.txt +9 -9
  2. package/README.md +519 -488
  3. package/lib/ParserFactory.d.ts +1 -1
  4. package/lib/ParserFactory.js +1 -2
  5. package/lib/aiff/AiffParser.js +3 -4
  6. package/lib/aiff/AiffToken.d.ts +2 -4
  7. package/lib/aiff/AiffToken.js +7 -7
  8. package/lib/apev2/APEv2Parser.d.ts +1 -1
  9. package/lib/apev2/APEv2Parser.js +10 -12
  10. package/lib/apev2/APEv2Token.d.ts +1 -1
  11. package/lib/asf/AsfObject.d.ts +15 -17
  12. package/lib/asf/AsfObject.js +51 -45
  13. package/lib/asf/AsfParser.js +6 -8
  14. package/lib/asf/AsfUtil.d.ts +1 -3
  15. package/lib/asf/AsfUtil.js +4 -5
  16. package/lib/asf/GUID.d.ts +4 -5
  17. package/lib/asf/GUID.js +14 -11
  18. package/lib/common/BasicParser.d.ts +1 -1
  19. package/lib/common/FourCC.d.ts +1 -1
  20. package/lib/common/FourCC.js +5 -3
  21. package/lib/common/MetadataCollector.d.ts +3 -3
  22. package/lib/common/MetadataCollector.js +7 -8
  23. package/lib/common/RandomFileReader.d.ts +2 -3
  24. package/lib/common/RandomFileReader.js +1 -1
  25. package/lib/common/Util.d.ts +1 -1
  26. package/lib/common/Util.js +4 -3
  27. package/lib/core.d.ts +16 -8
  28. package/lib/core.js +19 -5
  29. package/lib/dsdiff/DsdiffParser.js +1 -1
  30. package/lib/dsdiff/DsdiffToken.d.ts +1 -1
  31. package/lib/dsf/DsfChunk.d.ts +1 -1
  32. package/lib/flac/FlacParser.d.ts +1 -1
  33. package/lib/flac/FlacParser.js +6 -4
  34. package/lib/id3v1/ID3v1Parser.js +7 -7
  35. package/lib/id3v2/AbstractID3Parser.d.ts +1 -1
  36. package/lib/id3v2/AbstractID3Parser.js +1 -1
  37. package/lib/id3v2/FrameParser.js +3 -3
  38. package/lib/id3v2/ID3v24TagMapper.d.ts +2 -3
  39. package/lib/id3v2/ID3v24TagMapper.js +4 -4
  40. package/lib/id3v2/ID3v2Parser.d.ts +1 -1
  41. package/lib/id3v2/ID3v2Parser.js +10 -17
  42. package/lib/id3v2/ID3v2Token.d.ts +1 -1
  43. package/lib/id3v2/ID3v2Token.js +2 -2
  44. package/lib/iff/index.d.ts +1 -1
  45. package/lib/index.d.ts +1 -2
  46. package/lib/index.js +1 -1
  47. package/lib/lyrics3/Lyrics3.js +4 -4
  48. package/lib/matroska/MatroskaParser.d.ts +9 -2
  49. package/lib/matroska/MatroskaParser.js +44 -39
  50. package/lib/matroska/types.d.ts +13 -14
  51. package/lib/mp4/Atom.d.ts +1 -1
  52. package/lib/mp4/AtomToken.d.ts +11 -11
  53. package/lib/mp4/AtomToken.js +3 -2
  54. package/lib/mp4/MP4Parser.js +20 -19
  55. package/lib/mpeg/ExtendedLameHeader.d.ts +1 -1
  56. package/lib/mpeg/MpegParser.js +4 -4
  57. package/lib/mpeg/ReplayGainDataFormat.d.ts +1 -1
  58. package/lib/mpeg/XingTag.d.ts +2 -3
  59. package/lib/mpeg/XingTag.js +1 -1
  60. package/lib/musepack/index.js +1 -1
  61. package/lib/musepack/sv7/BitReader.d.ts +1 -1
  62. package/lib/musepack/sv7/StreamVersion7.d.ts +1 -1
  63. package/lib/musepack/sv7/StreamVersion7.js +1 -1
  64. package/lib/musepack/sv8/StreamVersion8.d.ts +1 -1
  65. package/lib/musepack/sv8/StreamVersion8.js +1 -1
  66. package/lib/ogg/Ogg.d.ts +2 -2
  67. package/lib/ogg/OggParser.d.ts +1 -1
  68. package/lib/ogg/OggParser.js +5 -5
  69. package/lib/ogg/opus/Opus.d.ts +1 -1
  70. package/lib/ogg/opus/Opus.js +6 -6
  71. package/lib/ogg/opus/OpusParser.d.ts +4 -5
  72. package/lib/ogg/opus/OpusParser.js +3 -3
  73. package/lib/ogg/speex/Speex.d.ts +1 -1
  74. package/lib/ogg/speex/Speex.js +13 -13
  75. package/lib/ogg/speex/SpeexParser.d.ts +3 -4
  76. package/lib/ogg/speex/SpeexParser.js +1 -1
  77. package/lib/ogg/theora/Theora.d.ts +1 -1
  78. package/lib/ogg/theora/Theora.js +6 -6
  79. package/lib/ogg/theora/TheoraParser.d.ts +4 -5
  80. package/lib/ogg/theora/TheoraParser.js +4 -4
  81. package/lib/ogg/vorbis/Vorbis.d.ts +3 -4
  82. package/lib/ogg/vorbis/Vorbis.js +11 -12
  83. package/lib/ogg/vorbis/VorbisDecoder.js +1 -1
  84. package/lib/ogg/vorbis/VorbisParser.d.ts +8 -8
  85. package/lib/ogg/vorbis/VorbisParser.js +21 -12
  86. package/lib/riff/RiffChunk.d.ts +1 -1
  87. package/lib/riff/RiffChunk.js +2 -2
  88. package/lib/type.d.ts +9 -11
  89. package/lib/wav/BwfChunk.d.ts +1 -1
  90. package/lib/wav/WaveChunk.d.ts +3 -4
  91. package/lib/wav/WaveChunk.js +8 -7
  92. package/lib/wav/WaveParser.js +2 -2
  93. package/lib/wavpack/WavPackParser.d.ts +1 -0
  94. package/lib/wavpack/WavPackParser.js +5 -3
  95. package/lib/wavpack/WavPackToken.d.ts +1 -1
  96. package/package.json +141 -140
@@ -8,6 +8,7 @@ export declare class WavPackParser extends BasicParser {
8
8
  parseWavPackBlocks(): Promise<void>;
9
9
  /**
10
10
  * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf, 3.0 Metadata Sub-blocks
11
+ * @param header Header
11
12
  * @param remainingLength
12
13
  */
13
14
  private parseMetadataSubBlock;
@@ -4,6 +4,7 @@ import { FourCcToken } from '../common/FourCC.js';
4
4
  import { BasicParser } from '../common/BasicParser.js';
5
5
  import { WavPack } from './WavPackToken.js';
6
6
  import initDebug from 'debug';
7
+ import { uint8ArrayToHex } from 'uint8array-extras';
7
8
  const debug = initDebug('music-metadata:parser:WavPack');
8
9
  /**
9
10
  * WavPack Parser
@@ -49,13 +50,14 @@ export class WavPackParser extends BasicParser {
49
50
  }
50
51
  /**
51
52
  * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf, 3.0 Metadata Sub-blocks
53
+ * @param header Header
52
54
  * @param remainingLength
53
55
  */
54
56
  async parseMetadataSubBlock(header, remainingLength) {
55
57
  while (remainingLength > WavPack.MetadataIdToken.len) {
56
58
  const id = await this.tokenizer.readToken(WavPack.MetadataIdToken);
57
59
  const dataSizeInWords = await this.tokenizer.readNumber(id.largeBlock ? Token.UINT24_LE : Token.UINT8);
58
- const data = Buffer.alloc(dataSizeInWords * 2 - (id.isOddSize ? 1 : 0));
60
+ const data = new Uint8Array(dataSizeInWords * 2 - (id.isOddSize ? 1 : 0));
59
61
  await this.tokenizer.readBuffer(data);
60
62
  debug(`Metadata Sub-Blocks functionId=0x${id.functionId.toString(16)}, id.largeBlock=${id.largeBlock},data-size=${data.length}`);
61
63
  switch (id.functionId) {
@@ -64,7 +66,7 @@ export class WavPackParser extends BasicParser {
64
66
  case 0xe: // ID_DSD_BLOCK
65
67
  debug('ID_DSD_BLOCK');
66
68
  // https://github.com/dbry/WavPack/issues/71#issuecomment-483094813
67
- const mp = 1 << data.readUInt8(0);
69
+ const mp = 1 << Token.UINT8.get(data, 0);
68
70
  const samplingRate = header.flags.samplingRate * mp * 8; // ToDo: second factor should be read from DSD-metadata block https://github.com/dbry/WavPack/issues/71#issuecomment-483094813
69
71
  if (!header.flags.isDSD)
70
72
  throw new Error('Only expect DSD block if DSD-flag is set');
@@ -78,7 +80,7 @@ export class WavPackParser extends BasicParser {
78
80
  this.metadata.setFormat('audioMD5', data);
79
81
  break;
80
82
  case 0x2f: // ID_BLOCK_CHECKSUM
81
- debug(`ID_BLOCK_CHECKSUM: checksum=${data.toString('hex')}`);
83
+ debug(`ID_BLOCK_CHECKSUM: checksum=${uint8ArrayToHex(data)}`);
82
84
  break;
83
85
  default:
84
86
  debug(`Ignore unsupported meta-sub-block-id functionId=0x${id.functionId.toString(16)}`);
@@ -1,4 +1,4 @@
1
- import { IGetToken } from 'strtok3/core';
1
+ import type { IGetToken } from 'strtok3';
2
2
  /**
3
3
  * WavPack Block Header
4
4
  *
package/package.json CHANGED
@@ -1,140 +1,141 @@
1
- {
2
- "name": "music-metadata",
3
- "description": "Music metadata parser for Node.js, supporting virtual any audio and tag format.",
4
- "version": "8.3.0",
5
- "author": {
6
- "name": "Borewit",
7
- "url": "https://github.com/Borewit"
8
- },
9
- "funding": {
10
- "type": "github",
11
- "url": "https://github.com/sponsors/Borewit"
12
- },
13
- "type": "module",
14
- "exports": {
15
- ".": {
16
- "node": "./lib/index.js",
17
- "default": "./lib/core.js"
18
- }
19
- },
20
- "types": "lib/index.d.ts",
21
- "files": [
22
- "lib/**/*.js",
23
- "lib/**/*.d.ts"
24
- ],
25
- "keywords": [
26
- "music",
27
- "metadata",
28
- "meta",
29
- "audio",
30
- "tag",
31
- "tags",
32
- "duration",
33
- "MusicBrainz",
34
- "Discogs",
35
- "Picard",
36
- "ID3",
37
- "ID3v1",
38
- "ID3v2",
39
- "m4a",
40
- "m4b",
41
- "mp3",
42
- "mp4",
43
- "Vorbis",
44
- "ogg",
45
- "flac",
46
- "Matroska",
47
- "WebM",
48
- "EBML",
49
- "asf",
50
- "wma",
51
- "wmv",
52
- "ape",
53
- "MonkeyAudio",
54
- "aiff",
55
- "wav",
56
- "WavPack",
57
- "Opus",
58
- "speex",
59
- "musepack",
60
- "mpc",
61
- "dsd",
62
- "dsf",
63
- "mpc",
64
- "dff",
65
- "dsdiff",
66
- "aac",
67
- "adts",
68
- "length",
69
- "chapter",
70
- "info",
71
- "parse",
72
- "parser",
73
- "bwf"
74
- ],
75
- "scripts": {
76
- "clean": "del-cli lib/**/*.js lib/**/*.js.map lib/**/*.d.ts src/**/*.d.ts test/**/*.js test/**/*.js.map test/**/*.js test/**/*.js.map doc-gen/**/*.js doc-gen/**/*.js.map",
77
- "compile-src": "tsc -p lib",
78
- "compile-test": "tsc -p test",
79
- "compile-doc": "tsc -p doc-gen",
80
- "compile": "npm run compile-src && npm run compile-test && npm run compile-doc",
81
- "eslint": "eslint lib/**/*.ts --ignore-pattern lib/**/*.d.ts example/typescript/**/*.ts test/**/*.ts doc-gen/**/*.ts",
82
- "lint-md": "remark -u preset-lint-markdown-style-guide .",
83
- "lint": "npm run lint-md && npm run eslint",
84
- "test": "mocha",
85
- "build": "npm run clean && npm run compile && npm run doc-gen",
86
- "start": "npm-run-all compile lint cover-test",
87
- "test-coverage": "c8 npm run test",
88
- "send-codacy": "c8 report --reporter=text-lcov | codacy-coverage",
89
- "doc-gen": "node doc-gen/gen.js"
90
- },
91
- "dependencies": {
92
- "@tokenizer/token": "^0.3.0",
93
- "content-type": "^1.0.5",
94
- "debug": "^4.3.4",
95
- "file-type": "^18.6.0",
96
- "media-typer": "^1.1.0",
97
- "strtok3": "^7.0.0",
98
- "token-types": "^5.0.1"
99
- },
100
- "devDependencies": {
101
- "@types/chai": "^4.3.9",
102
- "@types/chai-as-promised": "^7.1.8",
103
- "@types/debug": "^4.1.12",
104
- "@types/file-type": "^10.9.1",
105
- "@types/mocha": "^10.0.3",
106
- "@types/node": "^20.12.12",
107
- "@typescript-eslint/eslint-plugin": "^5.62.0",
108
- "@typescript-eslint/parser": "^5.62.0",
109
- "c8": "^9.1.0",
110
- "chai": "^4.3.10",
111
- "chai-as-promised": "^7.1.1",
112
- "del-cli": "5.1.0",
113
- "eslint": "^8.57.0",
114
- "eslint-config-prettier": "^9.0.0",
115
- "eslint-import-resolver-typescript": "^3.6.1",
116
- "eslint-plugin-import": "^2.29.0",
117
- "eslint-plugin-jsdoc": "^46.8.2",
118
- "eslint-plugin-node": "^11.1.0",
119
- "eslint-plugin-unicorn": "^49.0.0",
120
- "mime": "^4.0.3",
121
- "mocha": "^10.2.0",
122
- "npm-run-all": "^4.1.5",
123
- "prettier": "^3.2.5",
124
- "remark-cli": "^12.0.0",
125
- "remark-preset-lint-markdown-style-guide": "^5.1.3",
126
- "ts-node": "^10.9.1",
127
- "typescript": "^5.4.5"
128
- },
129
- "engines": {
130
- "node": "^14.13.1 || >=16.0.0"
131
- },
132
- "repository": {
133
- "type": "git",
134
- "url": "git+https://github.com/borewit/music-metadata.git"
135
- },
136
- "license": "MIT",
137
- "bugs": {
138
- "url": "https://github.com/Borewit/music-metadata/issues"
139
- }
140
- }
1
+ {
2
+ "name": "music-metadata",
3
+ "description": "Music metadata parser for Node.js, supporting virtual any audio and tag format.",
4
+ "version": "9.0.1",
5
+ "author": {
6
+ "name": "Borewit",
7
+ "url": "https://github.com/Borewit"
8
+ },
9
+ "funding": {
10
+ "type": "github",
11
+ "url": "https://github.com/sponsors/Borewit"
12
+ },
13
+ "type": "module",
14
+ "exports": {
15
+ ".": {
16
+ "node": "./lib/index.js",
17
+ "default": "./lib/core.js"
18
+ }
19
+ },
20
+ "types": "lib/index.d.ts",
21
+ "files": [
22
+ "lib/**/*.js",
23
+ "lib/**/*.d.ts"
24
+ ],
25
+ "keywords": [
26
+ "music",
27
+ "metadata",
28
+ "meta",
29
+ "audio",
30
+ "tag",
31
+ "tags",
32
+ "duration",
33
+ "MusicBrainz",
34
+ "Discogs",
35
+ "Picard",
36
+ "ID3",
37
+ "ID3v1",
38
+ "ID3v2",
39
+ "m4a",
40
+ "m4b",
41
+ "mp3",
42
+ "mp4",
43
+ "Vorbis",
44
+ "ogg",
45
+ "flac",
46
+ "Matroska",
47
+ "WebM",
48
+ "EBML",
49
+ "asf",
50
+ "wma",
51
+ "wmv",
52
+ "ape",
53
+ "MonkeyAudio",
54
+ "aiff",
55
+ "wav",
56
+ "WavPack",
57
+ "Opus",
58
+ "speex",
59
+ "musepack",
60
+ "mpc",
61
+ "dsd",
62
+ "dsf",
63
+ "mpc",
64
+ "dff",
65
+ "dsdiff",
66
+ "aac",
67
+ "adts",
68
+ "length",
69
+ "chapter",
70
+ "info",
71
+ "parse",
72
+ "parser",
73
+ "bwf"
74
+ ],
75
+ "scripts": {
76
+ "clean": "del-cli lib/**/*.js lib/**/*.js.map lib/**/*.d.ts src/**/*.d.ts test/**/*.js test/**/*.js.map test/**/*.js test/**/*.js.map doc-gen/**/*.js doc-gen/**/*.js.map",
77
+ "compile-src": "tsc -p lib",
78
+ "compile-test": "tsc -p test",
79
+ "compile-doc": "tsc -p doc-gen",
80
+ "compile": "npm run compile-src && npm run compile-test && npm run compile-doc",
81
+ "eslint": "npx eslint lib/**/*.ts --ignore-pattern lib/**/*.d.ts example/typescript/**/*.ts test/**/*.ts doc-gen/**/*.ts",
82
+ "lint-md": "remark -u preset-lint-markdown-style-guide .",
83
+ "lint": "npm run lint-md && npm run eslint",
84
+ "test": "mocha",
85
+ "build": "npm run clean && npm run compile && npm run doc-gen",
86
+ "start": "npm-run-all compile lint cover-test",
87
+ "test-coverage": "c8 npm run test",
88
+ "send-codacy": "c8 report --reporter=text-lcov | codacy-coverage",
89
+ "doc-gen": "node doc-gen/gen.js"
90
+ },
91
+ "dependencies": {
92
+ "@tokenizer/token": "^0.3.0",
93
+ "content-type": "^1.0.5",
94
+ "debug": "^4.3.4",
95
+ "file-type": "^19.1.1",
96
+ "media-typer": "^1.1.0",
97
+ "strtok3": "^7.1.0",
98
+ "token-types": "^6.0.0",
99
+ "uint8array-extras": "^1.3.0"
100
+ },
101
+ "devDependencies": {
102
+ "@types/chai": "^4.3.16",
103
+ "@types/chai-as-promised": "^7.1.8",
104
+ "@types/debug": "^4.1.12",
105
+ "@types/file-type": "^10.9.1",
106
+ "@types/mocha": "^10.0.7",
107
+ "@types/node": "^20.14.10",
108
+ "@typescript-eslint/eslint-plugin": "^7.16.0",
109
+ "@typescript-eslint/parser": "^7.16.0",
110
+ "c8": "^10.1.2",
111
+ "chai": "^5.1.1",
112
+ "chai-as-promised": "^8.0.0",
113
+ "del-cli": "^5.1.0",
114
+ "eslint": "^8.57.0",
115
+ "eslint-config-prettier": "^9.1.0",
116
+ "eslint-import-resolver-typescript": "^3.6.1",
117
+ "eslint-plugin-import": "^2.29.1",
118
+ "eslint-plugin-jsdoc": "^48.7.0",
119
+ "eslint-plugin-node": "^11.1.0",
120
+ "eslint-plugin-unicorn": "^54.0.0",
121
+ "mime": "^4.0.4",
122
+ "mocha": "^10.6.0",
123
+ "npm-run-all": "^4.1.5",
124
+ "prettier": "^3.3.2",
125
+ "remark-cli": "^12.0.1",
126
+ "remark-preset-lint-markdown-style-guide": "^6.0.0",
127
+ "ts-node": "^10.9.2",
128
+ "typescript": "^5.5.3"
129
+ },
130
+ "engines": {
131
+ "node": ">=16.0.0"
132
+ },
133
+ "repository": {
134
+ "type": "git",
135
+ "url": "git+https://github.com/borewit/music-metadata.git"
136
+ },
137
+ "license": "MIT",
138
+ "bugs": {
139
+ "url": "https://github.com/Borewit/music-metadata/issues"
140
+ }
141
+ }