taglib-wasm 1.3.0 → 1.3.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.
- package/dist/index.browser.js +27 -3
- package/dist/simple.browser.js +27 -3
- package/dist/src/simple/tag-operations.d.ts.map +1 -1
- package/dist/src/simple/tag-operations.js +1 -0
- package/dist/src/taglib/audio-file-base.d.ts.map +1 -1
- package/dist/src/taglib/audio-file-base.js +9 -1
- package/dist/src/taglib/audio-file-impl.d.ts +3 -1
- package/dist/src/taglib/audio-file-impl.d.ts.map +1 -1
- package/dist/src/taglib/audio-file-impl.js +15 -0
- package/dist/src/taglib/audio-file-interface.d.ts +8 -1
- package/dist/src/taglib/audio-file-interface.d.ts.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +1 -1
package/dist/index.browser.js
CHANGED
|
@@ -1333,12 +1333,14 @@ var init_properties = __esm({
|
|
|
1333
1333
|
});
|
|
1334
1334
|
|
|
1335
1335
|
// src/taglib/audio-file-base.ts
|
|
1336
|
-
var BaseAudioFileImpl;
|
|
1336
|
+
var LYRICS_PROPERTY_KEY, LYRICS_WIRE_KEY, BaseAudioFileImpl;
|
|
1337
1337
|
var init_audio_file_base = __esm({
|
|
1338
1338
|
"src/taglib/audio-file-base.ts"() {
|
|
1339
1339
|
"use strict";
|
|
1340
1340
|
init_properties();
|
|
1341
1341
|
init_errors2();
|
|
1342
|
+
LYRICS_PROPERTY_KEY = "lyrics";
|
|
1343
|
+
LYRICS_WIRE_KEY = toTagLibKey(LYRICS_PROPERTY_KEY);
|
|
1342
1344
|
BaseAudioFileImpl = class {
|
|
1343
1345
|
constructor(module, fileHandle, sourcePath, originalSource, isPartiallyLoaded = false, partialLoadOptions) {
|
|
1344
1346
|
__publicField(this, "module", module);
|
|
@@ -1448,13 +1450,19 @@ var init_audio_file_base = __esm({
|
|
|
1448
1450
|
return this.cachedAudioProperties ?? void 0;
|
|
1449
1451
|
}
|
|
1450
1452
|
properties() {
|
|
1451
|
-
|
|
1453
|
+
const remapped = remapKeysFromTagLib(this.handle.getProperties());
|
|
1454
|
+
delete remapped[LYRICS_PROPERTY_KEY];
|
|
1455
|
+
return remapped;
|
|
1452
1456
|
}
|
|
1453
1457
|
setProperties(properties) {
|
|
1454
1458
|
const translated = {};
|
|
1455
1459
|
for (const [key, values] of Object.entries(properties)) {
|
|
1456
1460
|
if (values !== void 0) translated[toTagLibKey(key)] = values;
|
|
1457
1461
|
}
|
|
1462
|
+
if (!(LYRICS_WIRE_KEY in translated)) {
|
|
1463
|
+
const existing = this.handle.getProperties()[LYRICS_WIRE_KEY];
|
|
1464
|
+
if (existing !== void 0) translated[LYRICS_WIRE_KEY] = existing;
|
|
1465
|
+
}
|
|
1458
1466
|
this.handle.setProperties(translated);
|
|
1459
1467
|
}
|
|
1460
1468
|
getProperty(key) {
|
|
@@ -1976,6 +1984,21 @@ var init_audio_file_impl = __esm({
|
|
|
1976
1984
|
counter: r.counter ?? 0
|
|
1977
1985
|
})));
|
|
1978
1986
|
}
|
|
1987
|
+
getLyrics() {
|
|
1988
|
+
return this.handle.getLyrics().map((l) => {
|
|
1989
|
+
const out = { text: l.text };
|
|
1990
|
+
if (l.description) out.description = l.description;
|
|
1991
|
+
if (l.language) out.language = l.language;
|
|
1992
|
+
return out;
|
|
1993
|
+
});
|
|
1994
|
+
}
|
|
1995
|
+
setLyrics(lyrics) {
|
|
1996
|
+
this.handle.setLyrics(lyrics.map((l) => ({
|
|
1997
|
+
text: l.text,
|
|
1998
|
+
description: l.description ?? "",
|
|
1999
|
+
language: l.language ?? ""
|
|
2000
|
+
})));
|
|
2001
|
+
}
|
|
1979
2002
|
getRating() {
|
|
1980
2003
|
const ratings = this.getRatings();
|
|
1981
2004
|
return ratings.length > 0 ? ratings[0].rating : void 0;
|
|
@@ -2149,7 +2172,7 @@ var VERSION;
|
|
|
2149
2172
|
var init_version = __esm({
|
|
2150
2173
|
"src/version.ts"() {
|
|
2151
2174
|
"use strict";
|
|
2152
|
-
VERSION = "1.3.
|
|
2175
|
+
VERSION = "1.3.1";
|
|
2153
2176
|
}
|
|
2154
2177
|
});
|
|
2155
2178
|
|
|
@@ -2567,6 +2590,7 @@ async function clearTags(file) {
|
|
|
2567
2590
|
return withAudioFileSave(file, (audioFile) => {
|
|
2568
2591
|
audioFile.setProperties({});
|
|
2569
2592
|
audioFile.removePictures();
|
|
2593
|
+
audioFile.setLyrics([]);
|
|
2570
2594
|
});
|
|
2571
2595
|
}
|
|
2572
2596
|
|
package/dist/simple.browser.js
CHANGED
|
@@ -1321,12 +1321,14 @@ var init_properties = __esm({
|
|
|
1321
1321
|
});
|
|
1322
1322
|
|
|
1323
1323
|
// src/taglib/audio-file-base.ts
|
|
1324
|
-
var BaseAudioFileImpl;
|
|
1324
|
+
var LYRICS_PROPERTY_KEY, LYRICS_WIRE_KEY, BaseAudioFileImpl;
|
|
1325
1325
|
var init_audio_file_base = __esm({
|
|
1326
1326
|
"src/taglib/audio-file-base.ts"() {
|
|
1327
1327
|
"use strict";
|
|
1328
1328
|
init_properties();
|
|
1329
1329
|
init_errors2();
|
|
1330
|
+
LYRICS_PROPERTY_KEY = "lyrics";
|
|
1331
|
+
LYRICS_WIRE_KEY = toTagLibKey(LYRICS_PROPERTY_KEY);
|
|
1330
1332
|
BaseAudioFileImpl = class {
|
|
1331
1333
|
constructor(module, fileHandle, sourcePath, originalSource, isPartiallyLoaded = false, partialLoadOptions) {
|
|
1332
1334
|
__publicField(this, "module", module);
|
|
@@ -1436,13 +1438,19 @@ var init_audio_file_base = __esm({
|
|
|
1436
1438
|
return this.cachedAudioProperties ?? void 0;
|
|
1437
1439
|
}
|
|
1438
1440
|
properties() {
|
|
1439
|
-
|
|
1441
|
+
const remapped = remapKeysFromTagLib(this.handle.getProperties());
|
|
1442
|
+
delete remapped[LYRICS_PROPERTY_KEY];
|
|
1443
|
+
return remapped;
|
|
1440
1444
|
}
|
|
1441
1445
|
setProperties(properties) {
|
|
1442
1446
|
const translated = {};
|
|
1443
1447
|
for (const [key, values] of Object.entries(properties)) {
|
|
1444
1448
|
if (values !== void 0) translated[toTagLibKey(key)] = values;
|
|
1445
1449
|
}
|
|
1450
|
+
if (!(LYRICS_WIRE_KEY in translated)) {
|
|
1451
|
+
const existing = this.handle.getProperties()[LYRICS_WIRE_KEY];
|
|
1452
|
+
if (existing !== void 0) translated[LYRICS_WIRE_KEY] = existing;
|
|
1453
|
+
}
|
|
1446
1454
|
this.handle.setProperties(translated);
|
|
1447
1455
|
}
|
|
1448
1456
|
getProperty(key) {
|
|
@@ -1964,6 +1972,21 @@ var init_audio_file_impl = __esm({
|
|
|
1964
1972
|
counter: r.counter ?? 0
|
|
1965
1973
|
})));
|
|
1966
1974
|
}
|
|
1975
|
+
getLyrics() {
|
|
1976
|
+
return this.handle.getLyrics().map((l) => {
|
|
1977
|
+
const out = { text: l.text };
|
|
1978
|
+
if (l.description) out.description = l.description;
|
|
1979
|
+
if (l.language) out.language = l.language;
|
|
1980
|
+
return out;
|
|
1981
|
+
});
|
|
1982
|
+
}
|
|
1983
|
+
setLyrics(lyrics) {
|
|
1984
|
+
this.handle.setLyrics(lyrics.map((l) => ({
|
|
1985
|
+
text: l.text,
|
|
1986
|
+
description: l.description ?? "",
|
|
1987
|
+
language: l.language ?? ""
|
|
1988
|
+
})));
|
|
1989
|
+
}
|
|
1967
1990
|
getRating() {
|
|
1968
1991
|
const ratings = this.getRatings();
|
|
1969
1992
|
return ratings.length > 0 ? ratings[0].rating : void 0;
|
|
@@ -2137,7 +2160,7 @@ var VERSION;
|
|
|
2137
2160
|
var init_version = __esm({
|
|
2138
2161
|
"src/version.ts"() {
|
|
2139
2162
|
"use strict";
|
|
2140
|
-
VERSION = "1.3.
|
|
2163
|
+
VERSION = "1.3.1";
|
|
2141
2164
|
}
|
|
2142
2165
|
});
|
|
2143
2166
|
|
|
@@ -2549,6 +2572,7 @@ async function clearTags(file) {
|
|
|
2549
2572
|
return withAudioFileSave(file, (audioFile) => {
|
|
2550
2573
|
audioFile.setProperties({});
|
|
2551
2574
|
audioFile.removePictures();
|
|
2575
|
+
audioFile.setLyrics([]);
|
|
2552
2576
|
});
|
|
2553
2577
|
}
|
|
2554
2578
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag-operations.d.ts","sourceRoot":"","sources":["../../../src/simple/tag-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,WAAW,EACX,QAAQ,EACR,QAAQ,EACT,MAAM,aAAa,CAAC;AAcrB;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,WAAW,CAAC,CAKtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GACtB,OAAO,CAAC,UAAU,CAAC,CAIrB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GACtB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,eAAe,CAAC,CAY1B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAW/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"tag-operations.d.ts","sourceRoot":"","sources":["../../../src/simple/tag-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,WAAW,EACX,QAAQ,EACR,QAAQ,EACT,MAAM,aAAa,CAAC;AAcrB;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,WAAW,CAAC,CAKtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GACtB,OAAO,CAAC,UAAU,CAAC,CAIrB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GACtB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,eAAe,CAAC,CAY1B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAW/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,UAAU,CAAC,CAWrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-file-base.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,WAAW,EACX,WAAW,EACZ,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"audio-file-base.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,WAAW,EACX,WAAW,EACZ,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAYhE;;;;;GAKG;AACH,8BAAsB,iBAAiB;IASnC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IARzC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACxC,SAAS,CAAC,qBAAqB,EAAE,eAAe,GAAG,IAAI,CAAQ;IAC/D,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IACvC,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;IACpE,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAS;IAC7C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC;gBAG/B,MAAM,EAAE,YAAY,EACvC,UAAU,EAAE,UAAU,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,EACzD,iBAAiB,GAAE,OAAe,EAClC,kBAAkB,CAAC,EAAE,WAAW;IASlC,SAAS,KAAK,MAAM,IAAI,UAAU,CAKjC;IAED,SAAS,IAAI,QAAQ;IAIrB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,IAAI,cAAc,CAAC,CAAC,CAAC;IAIlE,GAAG,IAAI,UAAU;IA4EjB,eAAe,IAAI,eAAe,GAAG,SAAS;IAO9C,UAAU,IAAI,WAAW;IAMzB,aAAa,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAiB5C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK5C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7C,KAAK,IAAI,OAAO;IAIhB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQ3C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAO5C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOhC,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,IAAI;IAQf,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAGzB"}
|
|
@@ -3,6 +3,8 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
|
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
import { remapKeysFromTagLib, toTagLibKey } from "../constants/properties.js";
|
|
5
5
|
import { MetadataError, UnsupportedFormatError } from "../errors.js";
|
|
6
|
+
const LYRICS_PROPERTY_KEY = "lyrics";
|
|
7
|
+
const LYRICS_WIRE_KEY = toTagLibKey(LYRICS_PROPERTY_KEY);
|
|
6
8
|
class BaseAudioFileImpl {
|
|
7
9
|
constructor(module, fileHandle, sourcePath, originalSource, isPartiallyLoaded = false, partialLoadOptions) {
|
|
8
10
|
__publicField(this, "module", module);
|
|
@@ -112,13 +114,19 @@ class BaseAudioFileImpl {
|
|
|
112
114
|
return this.cachedAudioProperties ?? void 0;
|
|
113
115
|
}
|
|
114
116
|
properties() {
|
|
115
|
-
|
|
117
|
+
const remapped = remapKeysFromTagLib(this.handle.getProperties());
|
|
118
|
+
delete remapped[LYRICS_PROPERTY_KEY];
|
|
119
|
+
return remapped;
|
|
116
120
|
}
|
|
117
121
|
setProperties(properties) {
|
|
118
122
|
const translated = {};
|
|
119
123
|
for (const [key, values] of Object.entries(properties)) {
|
|
120
124
|
if (values !== void 0) translated[toTagLibKey(key)] = values;
|
|
121
125
|
}
|
|
126
|
+
if (!(LYRICS_WIRE_KEY in translated)) {
|
|
127
|
+
const existing = this.handle.getProperties()[LYRICS_WIRE_KEY];
|
|
128
|
+
if (existing !== void 0) translated[LYRICS_WIRE_KEY] = existing;
|
|
129
|
+
}
|
|
122
130
|
this.handle.setProperties(translated);
|
|
123
131
|
}
|
|
124
132
|
getProperty(key) {
|
|
@@ -2,7 +2,7 @@ import type { FileHandle, TagLibModule } from "../wasm.js";
|
|
|
2
2
|
import type { OpenOptions, Picture } from "../types.js";
|
|
3
3
|
import type { Chapter, SetChaptersOptions } from "../types/chapters.js";
|
|
4
4
|
import type { BroadcastAudioExtension } from "../types/bwf.js";
|
|
5
|
-
import type { Rating } from "../constants/complex-properties.js";
|
|
5
|
+
import type { Rating, UnsyncedLyrics } from "../constants/complex-properties.js";
|
|
6
6
|
import type { AudioFile } from "./audio-file-interface.js";
|
|
7
7
|
import { BaseAudioFileImpl } from "./audio-file-base.js";
|
|
8
8
|
/**
|
|
@@ -31,6 +31,8 @@ export declare class AudioFileImpl extends BaseAudioFileImpl implements AudioFil
|
|
|
31
31
|
setIxml(data: string | null): void;
|
|
32
32
|
getRatings(): Rating[];
|
|
33
33
|
setRatings(ratings: Rating[]): void;
|
|
34
|
+
getLyrics(): UnsyncedLyrics[];
|
|
35
|
+
setLyrics(lyrics: UnsyncedLyrics[]): void;
|
|
34
36
|
getRating(): number | undefined;
|
|
35
37
|
setRating(rating: number, email?: string): void;
|
|
36
38
|
hasId3Tags(): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-file-impl.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"audio-file-impl.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAGV,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACf,MAAM,oCAAoC,CAAC;AAG5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAqCzD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,iBAAkB,YAAW,SAAS;IACvE,OAAO,CAAC,cAAc,CAA2B;gBAG/C,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,UAAU,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,EACzD,iBAAiB,GAAE,OAAe,EAClC,kBAAkB,CAAC,EAAE,WAAW;IAYlC,IAAI,IAAI,OAAO;IAYf,aAAa,IAAI,UAAU;IAgBrB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwD9C,WAAW,IAAI,OAAO,EAAE;IAUxB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAStC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IASlC,cAAc,IAAI,IAAI;IAItB,WAAW,IAAI,OAAO,EAAE;IAYxB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAuBpE,OAAO,IAAI,uBAAuB,GAAG,SAAS;IAI9C,OAAO,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI;IAI5C,WAAW,IAAI,UAAU,GAAG,SAAS;IAIrC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAI1C,OAAO,IAAI,MAAM,GAAG,SAAS;IAI7B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIlC,UAAU,IAAI,MAAM,EAAE;IAUtB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAQnC,SAAS,IAAI,cAAc,EAAE;IAS7B,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAQzC,SAAS,IAAI,MAAM,GAAG,SAAS;IAK/B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/C,UAAU,IAAI;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,OAAO,CAAA;KAAE;IAI1C,YAAY,CAAC,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAC;QAAC,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;CAM1D"}
|
|
@@ -197,6 +197,21 @@ class AudioFileImpl extends BaseAudioFileImpl {
|
|
|
197
197
|
counter: r.counter ?? 0
|
|
198
198
|
})));
|
|
199
199
|
}
|
|
200
|
+
getLyrics() {
|
|
201
|
+
return this.handle.getLyrics().map((l) => {
|
|
202
|
+
const out = { text: l.text };
|
|
203
|
+
if (l.description) out.description = l.description;
|
|
204
|
+
if (l.language) out.language = l.language;
|
|
205
|
+
return out;
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
setLyrics(lyrics) {
|
|
209
|
+
this.handle.setLyrics(lyrics.map((l) => ({
|
|
210
|
+
text: l.text,
|
|
211
|
+
description: l.description ?? "",
|
|
212
|
+
language: l.language ?? ""
|
|
213
|
+
})));
|
|
214
|
+
}
|
|
200
215
|
getRating() {
|
|
201
216
|
const ratings = this.getRatings();
|
|
202
217
|
return ratings.length > 0 ? ratings[0].rating : void 0;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AudioProperties, FileType, Picture, PropertyMap } from "../types.js";
|
|
2
2
|
import type { TypedAudioProperties } from "../types/audio-formats.js";
|
|
3
|
-
import type { Rating } from "../constants/complex-properties.js";
|
|
3
|
+
import type { Rating, UnsyncedLyrics } from "../constants/complex-properties.js";
|
|
4
4
|
import type { MutableTag } from "./mutable-tag.js";
|
|
5
5
|
import type { FormatPropertyKey } from "../types/format-property-keys.js";
|
|
6
6
|
/**
|
|
@@ -91,6 +91,13 @@ export interface AudioFile {
|
|
|
91
91
|
getRating(): number | undefined;
|
|
92
92
|
/** Set the primary rating (normalized 0.0-1.0). */
|
|
93
93
|
setRating(rating: number, email?: string): void;
|
|
94
|
+
/**
|
|
95
|
+
* Get unsynchronized lyrics (ID3v2 USLT / Vorbis LYRICS). Returned identically
|
|
96
|
+
* on both backends; `description`/`language` are not round-tripped (text-only).
|
|
97
|
+
*/
|
|
98
|
+
getLyrics(): UnsyncedLyrics[];
|
|
99
|
+
/** Set unsynchronized lyrics (replaces all existing). Pass `[]` to clear. */
|
|
100
|
+
setLyrics(lyrics: UnsyncedLyrics[]): void;
|
|
94
101
|
/**
|
|
95
102
|
* Detect spurious ID3v1/ID3v2 tags on a FLAC file. Returns
|
|
96
103
|
* `{ v1: false, v2: false }` for non-FLAC files (their ID3 tags, if any,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-file-interface.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,OAAO,EACP,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"audio-file-interface.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-interface.ts"],"names":[],"mappings":"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"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.3.
|
|
1
|
+
export declare const VERSION = "1.3.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/src/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "taglib-wasm",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "TagLib-Wasm is the universal tagging library for TypeScript/JavaScript platforms: Browsers, Node.js, Deno, Bun, Cloudflare Workers, and Electron apps",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|