taglib-wasm 1.1.1 → 1.1.2
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 +94 -56
- package/dist/simple.browser.js +94 -56
- package/dist/src/runtime/wasi-adapter/adapter.d.ts +0 -2
- package/dist/src/runtime/wasi-adapter/adapter.d.ts.map +1 -1
- package/dist/src/runtime/wasi-adapter/adapter.js +0 -12
- package/dist/src/runtime/wasi-adapter/file-handle.d.ts +6 -4
- package/dist/src/runtime/wasi-adapter/file-handle.d.ts.map +1 -1
- package/dist/src/runtime/wasi-adapter/file-handle.js +33 -53
- package/dist/src/taglib/audio-file-base.d.ts.map +1 -1
- package/dist/src/taglib/audio-file-base.js +25 -42
- package/dist/src/taglib/audio-file-impl.d.ts.map +1 -1
- package/dist/src/taglib/audio-file-impl.js +4 -12
- package/dist/src/taglib/embind-adapter.d.ts +51 -0
- package/dist/src/taglib/embind-adapter.d.ts.map +1 -0
- package/dist/src/taglib/embind-adapter.js +57 -0
- package/dist/src/taglib/taglib-class.d.ts.map +1 -1
- package/dist/src/taglib/taglib-class.js +3 -1
- package/dist/src/types/audio-formats.d.ts +2 -0
- package/dist/src/types/audio-formats.d.ts.map +1 -1
- package/dist/src/types/tags.d.ts +14 -0
- package/dist/src/types/tags.d.ts.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/wasm.d.ts +3 -37
- package/dist/src/wasm.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.browser.js
CHANGED
|
@@ -1234,61 +1234,63 @@ var init_audio_file_base = __esm({
|
|
|
1234
1234
|
return this.getFormat() === format;
|
|
1235
1235
|
}
|
|
1236
1236
|
tag() {
|
|
1237
|
-
const
|
|
1238
|
-
|
|
1239
|
-
throw new MetadataError(
|
|
1240
|
-
"read",
|
|
1241
|
-
"Tag may be corrupted or format not fully supported"
|
|
1242
|
-
);
|
|
1243
|
-
}
|
|
1237
|
+
const handle = this.handle;
|
|
1238
|
+
let data = handle.getTagData();
|
|
1244
1239
|
const tag = {
|
|
1245
1240
|
get title() {
|
|
1246
|
-
return
|
|
1241
|
+
return data.title;
|
|
1247
1242
|
},
|
|
1248
1243
|
get artist() {
|
|
1249
|
-
return
|
|
1244
|
+
return data.artist;
|
|
1250
1245
|
},
|
|
1251
1246
|
get album() {
|
|
1252
|
-
return
|
|
1247
|
+
return data.album;
|
|
1253
1248
|
},
|
|
1254
1249
|
get comment() {
|
|
1255
|
-
return
|
|
1250
|
+
return data.comment;
|
|
1256
1251
|
},
|
|
1257
1252
|
get genre() {
|
|
1258
|
-
return
|
|
1253
|
+
return data.genre;
|
|
1259
1254
|
},
|
|
1260
1255
|
get year() {
|
|
1261
|
-
return
|
|
1256
|
+
return data.year;
|
|
1262
1257
|
},
|
|
1263
1258
|
get track() {
|
|
1264
|
-
return
|
|
1259
|
+
return data.track;
|
|
1265
1260
|
},
|
|
1266
1261
|
setTitle: (value) => {
|
|
1267
|
-
|
|
1262
|
+
handle.setTagData({ title: value });
|
|
1263
|
+
data = handle.getTagData();
|
|
1268
1264
|
return tag;
|
|
1269
1265
|
},
|
|
1270
1266
|
setArtist: (value) => {
|
|
1271
|
-
|
|
1267
|
+
handle.setTagData({ artist: value });
|
|
1268
|
+
data = handle.getTagData();
|
|
1272
1269
|
return tag;
|
|
1273
1270
|
},
|
|
1274
1271
|
setAlbum: (value) => {
|
|
1275
|
-
|
|
1272
|
+
handle.setTagData({ album: value });
|
|
1273
|
+
data = handle.getTagData();
|
|
1276
1274
|
return tag;
|
|
1277
1275
|
},
|
|
1278
1276
|
setComment: (value) => {
|
|
1279
|
-
|
|
1277
|
+
handle.setTagData({ comment: value });
|
|
1278
|
+
data = handle.getTagData();
|
|
1280
1279
|
return tag;
|
|
1281
1280
|
},
|
|
1282
1281
|
setGenre: (value) => {
|
|
1283
|
-
|
|
1282
|
+
handle.setTagData({ genre: value });
|
|
1283
|
+
data = handle.getTagData();
|
|
1284
1284
|
return tag;
|
|
1285
1285
|
},
|
|
1286
1286
|
setYear: (value) => {
|
|
1287
|
-
|
|
1287
|
+
handle.setTagData({ year: value });
|
|
1288
|
+
data = handle.getTagData();
|
|
1288
1289
|
return tag;
|
|
1289
1290
|
},
|
|
1290
1291
|
setTrack: (value) => {
|
|
1291
|
-
|
|
1292
|
+
handle.setTagData({ track: value });
|
|
1293
|
+
data = handle.getTagData();
|
|
1292
1294
|
return tag;
|
|
1293
1295
|
}
|
|
1294
1296
|
};
|
|
@@ -1296,28 +1298,9 @@ var init_audio_file_base = __esm({
|
|
|
1296
1298
|
}
|
|
1297
1299
|
audioProperties() {
|
|
1298
1300
|
if (!this.cachedAudioProperties) {
|
|
1299
|
-
|
|
1300
|
-
if (!propsWrapper) {
|
|
1301
|
-
return void 0;
|
|
1302
|
-
}
|
|
1303
|
-
const containerFormat = propsWrapper.containerFormat() || "unknown";
|
|
1304
|
-
const mpegVersion = propsWrapper.mpegVersion();
|
|
1305
|
-
const formatVersion = propsWrapper.formatVersion();
|
|
1306
|
-
this.cachedAudioProperties = {
|
|
1307
|
-
duration: propsWrapper.lengthInSeconds(),
|
|
1308
|
-
bitrate: propsWrapper.bitrate(),
|
|
1309
|
-
sampleRate: propsWrapper.sampleRate(),
|
|
1310
|
-
channels: propsWrapper.channels(),
|
|
1311
|
-
bitsPerSample: propsWrapper.bitsPerSample(),
|
|
1312
|
-
codec: propsWrapper.codec() || "unknown",
|
|
1313
|
-
containerFormat,
|
|
1314
|
-
isLossless: propsWrapper.isLossless(),
|
|
1315
|
-
...mpegVersion > 0 ? { mpegVersion, mpegLayer: propsWrapper.mpegLayer() } : {},
|
|
1316
|
-
...containerFormat === "MP4" || containerFormat === "ASF" ? { isEncrypted: propsWrapper.isEncrypted() } : {},
|
|
1317
|
-
...formatVersion > 0 ? { formatVersion } : {}
|
|
1318
|
-
};
|
|
1301
|
+
this.cachedAudioProperties = this.handle.getAudioProperties() ?? null;
|
|
1319
1302
|
}
|
|
1320
|
-
return this.cachedAudioProperties;
|
|
1303
|
+
return this.cachedAudioProperties ?? void 0;
|
|
1321
1304
|
}
|
|
1322
1305
|
properties() {
|
|
1323
1306
|
return remapKeysFromTagLib(this.handle.getProperties());
|
|
@@ -1375,6 +1358,67 @@ var init_audio_file_base = __esm({
|
|
|
1375
1358
|
}
|
|
1376
1359
|
});
|
|
1377
1360
|
|
|
1361
|
+
// src/taglib/embind-adapter.ts
|
|
1362
|
+
function wrapEmbindHandle(raw) {
|
|
1363
|
+
const overrides = {
|
|
1364
|
+
getTagData() {
|
|
1365
|
+
const tw = raw.getTag();
|
|
1366
|
+
return {
|
|
1367
|
+
title: tw.title(),
|
|
1368
|
+
artist: tw.artist(),
|
|
1369
|
+
album: tw.album(),
|
|
1370
|
+
comment: tw.comment(),
|
|
1371
|
+
genre: tw.genre(),
|
|
1372
|
+
year: tw.year(),
|
|
1373
|
+
track: tw.track()
|
|
1374
|
+
};
|
|
1375
|
+
},
|
|
1376
|
+
setTagData(data) {
|
|
1377
|
+
const tw = raw.getTag();
|
|
1378
|
+
if (data.title !== void 0) tw.setTitle(data.title);
|
|
1379
|
+
if (data.artist !== void 0) tw.setArtist(data.artist);
|
|
1380
|
+
if (data.album !== void 0) tw.setAlbum(data.album);
|
|
1381
|
+
if (data.comment !== void 0) tw.setComment(data.comment);
|
|
1382
|
+
if (data.genre !== void 0) tw.setGenre(data.genre);
|
|
1383
|
+
if (data.year !== void 0) tw.setYear(data.year);
|
|
1384
|
+
if (data.track !== void 0) tw.setTrack(data.track);
|
|
1385
|
+
},
|
|
1386
|
+
getAudioProperties() {
|
|
1387
|
+
const pw = raw.getAudioProperties();
|
|
1388
|
+
if (!pw) return null;
|
|
1389
|
+
const containerFormat = pw.containerFormat() || "unknown";
|
|
1390
|
+
const mpegVersion = pw.mpegVersion();
|
|
1391
|
+
const formatVersion = pw.formatVersion();
|
|
1392
|
+
return {
|
|
1393
|
+
duration: pw.lengthInSeconds(),
|
|
1394
|
+
durationMs: pw.lengthInMilliseconds(),
|
|
1395
|
+
bitrate: pw.bitrate(),
|
|
1396
|
+
sampleRate: pw.sampleRate(),
|
|
1397
|
+
channels: pw.channels(),
|
|
1398
|
+
bitsPerSample: pw.bitsPerSample(),
|
|
1399
|
+
codec: pw.codec() || "unknown",
|
|
1400
|
+
containerFormat,
|
|
1401
|
+
isLossless: pw.isLossless(),
|
|
1402
|
+
...mpegVersion > 0 ? { mpegVersion, mpegLayer: pw.mpegLayer() } : {},
|
|
1403
|
+
...containerFormat === "MP4" || containerFormat === "ASF" ? { isEncrypted: pw.isEncrypted() } : {},
|
|
1404
|
+
...formatVersion > 0 ? { formatVersion } : {}
|
|
1405
|
+
};
|
|
1406
|
+
}
|
|
1407
|
+
};
|
|
1408
|
+
return new Proxy(raw, {
|
|
1409
|
+
get(target, prop, receiver) {
|
|
1410
|
+
if (prop in overrides) return overrides[prop];
|
|
1411
|
+
const value = Reflect.get(target, prop, receiver);
|
|
1412
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
1413
|
+
}
|
|
1414
|
+
});
|
|
1415
|
+
}
|
|
1416
|
+
var init_embind_adapter = __esm({
|
|
1417
|
+
"src/taglib/embind-adapter.ts"() {
|
|
1418
|
+
"use strict";
|
|
1419
|
+
}
|
|
1420
|
+
});
|
|
1421
|
+
|
|
1378
1422
|
// src/taglib/audio-file-impl.ts
|
|
1379
1423
|
function readFileSync(path) {
|
|
1380
1424
|
if (typeof Deno !== "undefined") return Deno.readFileSync(path);
|
|
@@ -1397,6 +1441,7 @@ var init_audio_file_impl = __esm({
|
|
|
1397
1441
|
init_file();
|
|
1398
1442
|
init_write();
|
|
1399
1443
|
init_audio_file_base();
|
|
1444
|
+
init_embind_adapter();
|
|
1400
1445
|
AudioFileImpl = class extends BaseAudioFileImpl {
|
|
1401
1446
|
constructor(module, fileHandle, sourcePath, originalSource, isPartiallyLoaded = false, partialLoadOptions) {
|
|
1402
1447
|
super(
|
|
@@ -1442,7 +1487,8 @@ var init_audio_file_impl = __esm({
|
|
|
1442
1487
|
);
|
|
1443
1488
|
}
|
|
1444
1489
|
if (this.isPartiallyLoaded && this.originalSource) {
|
|
1445
|
-
const
|
|
1490
|
+
const rawFullHandle = this.module.createFileHandle();
|
|
1491
|
+
const fullFileHandle = this.module.isWasi ? rawFullHandle : wrapEmbindHandle(rawFullHandle);
|
|
1446
1492
|
try {
|
|
1447
1493
|
const success = await (async () => {
|
|
1448
1494
|
const data = await readFileData(this.originalSource);
|
|
@@ -1453,17 +1499,7 @@ var init_audio_file_impl = __esm({
|
|
|
1453
1499
|
"Failed to load full audio file for saving"
|
|
1454
1500
|
);
|
|
1455
1501
|
}
|
|
1456
|
-
|
|
1457
|
-
const fullTag = fullFileHandle.getTag();
|
|
1458
|
-
if (partialTag && fullTag) {
|
|
1459
|
-
fullTag.setTitle(partialTag.title());
|
|
1460
|
-
fullTag.setArtist(partialTag.artist());
|
|
1461
|
-
fullTag.setAlbum(partialTag.album());
|
|
1462
|
-
fullTag.setComment(partialTag.comment());
|
|
1463
|
-
fullTag.setGenre(partialTag.genre());
|
|
1464
|
-
fullTag.setYear(partialTag.year());
|
|
1465
|
-
fullTag.setTrack(partialTag.track());
|
|
1466
|
-
}
|
|
1502
|
+
fullFileHandle.setTagData(this.handle.getTagData());
|
|
1467
1503
|
fullFileHandle.setProperties(this.handle.getProperties());
|
|
1468
1504
|
fullFileHandle.setPictures(this.handle.getPictures());
|
|
1469
1505
|
if (!fullFileHandle.save()) {
|
|
@@ -1693,7 +1729,7 @@ var VERSION;
|
|
|
1693
1729
|
var init_version = __esm({
|
|
1694
1730
|
"src/version.ts"() {
|
|
1695
1731
|
"use strict";
|
|
1696
|
-
VERSION = "1.1.
|
|
1732
|
+
VERSION = "1.1.2";
|
|
1697
1733
|
}
|
|
1698
1734
|
});
|
|
1699
1735
|
|
|
@@ -1781,6 +1817,7 @@ var init_taglib_class = __esm({
|
|
|
1781
1817
|
init_tag_mapping();
|
|
1782
1818
|
init_errors2();
|
|
1783
1819
|
init_version();
|
|
1820
|
+
init_embind_adapter();
|
|
1784
1821
|
TagLib = class _TagLib {
|
|
1785
1822
|
constructor(module) {
|
|
1786
1823
|
__publicField(this, "module");
|
|
@@ -1856,7 +1893,8 @@ var init_taglib_class = __esm({
|
|
|
1856
1893
|
audioData.byteOffset + audioData.byteLength
|
|
1857
1894
|
)
|
|
1858
1895
|
) : audioData;
|
|
1859
|
-
const
|
|
1896
|
+
const rawHandle = this.module.createFileHandle();
|
|
1897
|
+
const fileHandle = this.module.isWasi ? rawHandle : wrapEmbindHandle(rawHandle);
|
|
1860
1898
|
try {
|
|
1861
1899
|
const success = fileHandle.loadFromBuffer(uint8Array);
|
|
1862
1900
|
if (!success) {
|
package/dist/simple.browser.js
CHANGED
|
@@ -1222,61 +1222,63 @@ var init_audio_file_base = __esm({
|
|
|
1222
1222
|
return this.getFormat() === format;
|
|
1223
1223
|
}
|
|
1224
1224
|
tag() {
|
|
1225
|
-
const
|
|
1226
|
-
|
|
1227
|
-
throw new MetadataError(
|
|
1228
|
-
"read",
|
|
1229
|
-
"Tag may be corrupted or format not fully supported"
|
|
1230
|
-
);
|
|
1231
|
-
}
|
|
1225
|
+
const handle = this.handle;
|
|
1226
|
+
let data = handle.getTagData();
|
|
1232
1227
|
const tag = {
|
|
1233
1228
|
get title() {
|
|
1234
|
-
return
|
|
1229
|
+
return data.title;
|
|
1235
1230
|
},
|
|
1236
1231
|
get artist() {
|
|
1237
|
-
return
|
|
1232
|
+
return data.artist;
|
|
1238
1233
|
},
|
|
1239
1234
|
get album() {
|
|
1240
|
-
return
|
|
1235
|
+
return data.album;
|
|
1241
1236
|
},
|
|
1242
1237
|
get comment() {
|
|
1243
|
-
return
|
|
1238
|
+
return data.comment;
|
|
1244
1239
|
},
|
|
1245
1240
|
get genre() {
|
|
1246
|
-
return
|
|
1241
|
+
return data.genre;
|
|
1247
1242
|
},
|
|
1248
1243
|
get year() {
|
|
1249
|
-
return
|
|
1244
|
+
return data.year;
|
|
1250
1245
|
},
|
|
1251
1246
|
get track() {
|
|
1252
|
-
return
|
|
1247
|
+
return data.track;
|
|
1253
1248
|
},
|
|
1254
1249
|
setTitle: (value) => {
|
|
1255
|
-
|
|
1250
|
+
handle.setTagData({ title: value });
|
|
1251
|
+
data = handle.getTagData();
|
|
1256
1252
|
return tag;
|
|
1257
1253
|
},
|
|
1258
1254
|
setArtist: (value) => {
|
|
1259
|
-
|
|
1255
|
+
handle.setTagData({ artist: value });
|
|
1256
|
+
data = handle.getTagData();
|
|
1260
1257
|
return tag;
|
|
1261
1258
|
},
|
|
1262
1259
|
setAlbum: (value) => {
|
|
1263
|
-
|
|
1260
|
+
handle.setTagData({ album: value });
|
|
1261
|
+
data = handle.getTagData();
|
|
1264
1262
|
return tag;
|
|
1265
1263
|
},
|
|
1266
1264
|
setComment: (value) => {
|
|
1267
|
-
|
|
1265
|
+
handle.setTagData({ comment: value });
|
|
1266
|
+
data = handle.getTagData();
|
|
1268
1267
|
return tag;
|
|
1269
1268
|
},
|
|
1270
1269
|
setGenre: (value) => {
|
|
1271
|
-
|
|
1270
|
+
handle.setTagData({ genre: value });
|
|
1271
|
+
data = handle.getTagData();
|
|
1272
1272
|
return tag;
|
|
1273
1273
|
},
|
|
1274
1274
|
setYear: (value) => {
|
|
1275
|
-
|
|
1275
|
+
handle.setTagData({ year: value });
|
|
1276
|
+
data = handle.getTagData();
|
|
1276
1277
|
return tag;
|
|
1277
1278
|
},
|
|
1278
1279
|
setTrack: (value) => {
|
|
1279
|
-
|
|
1280
|
+
handle.setTagData({ track: value });
|
|
1281
|
+
data = handle.getTagData();
|
|
1280
1282
|
return tag;
|
|
1281
1283
|
}
|
|
1282
1284
|
};
|
|
@@ -1284,28 +1286,9 @@ var init_audio_file_base = __esm({
|
|
|
1284
1286
|
}
|
|
1285
1287
|
audioProperties() {
|
|
1286
1288
|
if (!this.cachedAudioProperties) {
|
|
1287
|
-
|
|
1288
|
-
if (!propsWrapper) {
|
|
1289
|
-
return void 0;
|
|
1290
|
-
}
|
|
1291
|
-
const containerFormat = propsWrapper.containerFormat() || "unknown";
|
|
1292
|
-
const mpegVersion = propsWrapper.mpegVersion();
|
|
1293
|
-
const formatVersion = propsWrapper.formatVersion();
|
|
1294
|
-
this.cachedAudioProperties = {
|
|
1295
|
-
duration: propsWrapper.lengthInSeconds(),
|
|
1296
|
-
bitrate: propsWrapper.bitrate(),
|
|
1297
|
-
sampleRate: propsWrapper.sampleRate(),
|
|
1298
|
-
channels: propsWrapper.channels(),
|
|
1299
|
-
bitsPerSample: propsWrapper.bitsPerSample(),
|
|
1300
|
-
codec: propsWrapper.codec() || "unknown",
|
|
1301
|
-
containerFormat,
|
|
1302
|
-
isLossless: propsWrapper.isLossless(),
|
|
1303
|
-
...mpegVersion > 0 ? { mpegVersion, mpegLayer: propsWrapper.mpegLayer() } : {},
|
|
1304
|
-
...containerFormat === "MP4" || containerFormat === "ASF" ? { isEncrypted: propsWrapper.isEncrypted() } : {},
|
|
1305
|
-
...formatVersion > 0 ? { formatVersion } : {}
|
|
1306
|
-
};
|
|
1289
|
+
this.cachedAudioProperties = this.handle.getAudioProperties() ?? null;
|
|
1307
1290
|
}
|
|
1308
|
-
return this.cachedAudioProperties;
|
|
1291
|
+
return this.cachedAudioProperties ?? void 0;
|
|
1309
1292
|
}
|
|
1310
1293
|
properties() {
|
|
1311
1294
|
return remapKeysFromTagLib(this.handle.getProperties());
|
|
@@ -1363,6 +1346,67 @@ var init_audio_file_base = __esm({
|
|
|
1363
1346
|
}
|
|
1364
1347
|
});
|
|
1365
1348
|
|
|
1349
|
+
// src/taglib/embind-adapter.ts
|
|
1350
|
+
function wrapEmbindHandle(raw) {
|
|
1351
|
+
const overrides = {
|
|
1352
|
+
getTagData() {
|
|
1353
|
+
const tw = raw.getTag();
|
|
1354
|
+
return {
|
|
1355
|
+
title: tw.title(),
|
|
1356
|
+
artist: tw.artist(),
|
|
1357
|
+
album: tw.album(),
|
|
1358
|
+
comment: tw.comment(),
|
|
1359
|
+
genre: tw.genre(),
|
|
1360
|
+
year: tw.year(),
|
|
1361
|
+
track: tw.track()
|
|
1362
|
+
};
|
|
1363
|
+
},
|
|
1364
|
+
setTagData(data) {
|
|
1365
|
+
const tw = raw.getTag();
|
|
1366
|
+
if (data.title !== void 0) tw.setTitle(data.title);
|
|
1367
|
+
if (data.artist !== void 0) tw.setArtist(data.artist);
|
|
1368
|
+
if (data.album !== void 0) tw.setAlbum(data.album);
|
|
1369
|
+
if (data.comment !== void 0) tw.setComment(data.comment);
|
|
1370
|
+
if (data.genre !== void 0) tw.setGenre(data.genre);
|
|
1371
|
+
if (data.year !== void 0) tw.setYear(data.year);
|
|
1372
|
+
if (data.track !== void 0) tw.setTrack(data.track);
|
|
1373
|
+
},
|
|
1374
|
+
getAudioProperties() {
|
|
1375
|
+
const pw = raw.getAudioProperties();
|
|
1376
|
+
if (!pw) return null;
|
|
1377
|
+
const containerFormat = pw.containerFormat() || "unknown";
|
|
1378
|
+
const mpegVersion = pw.mpegVersion();
|
|
1379
|
+
const formatVersion = pw.formatVersion();
|
|
1380
|
+
return {
|
|
1381
|
+
duration: pw.lengthInSeconds(),
|
|
1382
|
+
durationMs: pw.lengthInMilliseconds(),
|
|
1383
|
+
bitrate: pw.bitrate(),
|
|
1384
|
+
sampleRate: pw.sampleRate(),
|
|
1385
|
+
channels: pw.channels(),
|
|
1386
|
+
bitsPerSample: pw.bitsPerSample(),
|
|
1387
|
+
codec: pw.codec() || "unknown",
|
|
1388
|
+
containerFormat,
|
|
1389
|
+
isLossless: pw.isLossless(),
|
|
1390
|
+
...mpegVersion > 0 ? { mpegVersion, mpegLayer: pw.mpegLayer() } : {},
|
|
1391
|
+
...containerFormat === "MP4" || containerFormat === "ASF" ? { isEncrypted: pw.isEncrypted() } : {},
|
|
1392
|
+
...formatVersion > 0 ? { formatVersion } : {}
|
|
1393
|
+
};
|
|
1394
|
+
}
|
|
1395
|
+
};
|
|
1396
|
+
return new Proxy(raw, {
|
|
1397
|
+
get(target, prop, receiver) {
|
|
1398
|
+
if (prop in overrides) return overrides[prop];
|
|
1399
|
+
const value = Reflect.get(target, prop, receiver);
|
|
1400
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
1401
|
+
}
|
|
1402
|
+
});
|
|
1403
|
+
}
|
|
1404
|
+
var init_embind_adapter = __esm({
|
|
1405
|
+
"src/taglib/embind-adapter.ts"() {
|
|
1406
|
+
"use strict";
|
|
1407
|
+
}
|
|
1408
|
+
});
|
|
1409
|
+
|
|
1366
1410
|
// src/taglib/audio-file-impl.ts
|
|
1367
1411
|
function readFileSync(path) {
|
|
1368
1412
|
if (typeof Deno !== "undefined") return Deno.readFileSync(path);
|
|
@@ -1385,6 +1429,7 @@ var init_audio_file_impl = __esm({
|
|
|
1385
1429
|
init_file();
|
|
1386
1430
|
init_write();
|
|
1387
1431
|
init_audio_file_base();
|
|
1432
|
+
init_embind_adapter();
|
|
1388
1433
|
AudioFileImpl = class extends BaseAudioFileImpl {
|
|
1389
1434
|
constructor(module, fileHandle, sourcePath, originalSource, isPartiallyLoaded = false, partialLoadOptions) {
|
|
1390
1435
|
super(
|
|
@@ -1430,7 +1475,8 @@ var init_audio_file_impl = __esm({
|
|
|
1430
1475
|
);
|
|
1431
1476
|
}
|
|
1432
1477
|
if (this.isPartiallyLoaded && this.originalSource) {
|
|
1433
|
-
const
|
|
1478
|
+
const rawFullHandle = this.module.createFileHandle();
|
|
1479
|
+
const fullFileHandle = this.module.isWasi ? rawFullHandle : wrapEmbindHandle(rawFullHandle);
|
|
1434
1480
|
try {
|
|
1435
1481
|
const success = await (async () => {
|
|
1436
1482
|
const data = await readFileData(this.originalSource);
|
|
@@ -1441,17 +1487,7 @@ var init_audio_file_impl = __esm({
|
|
|
1441
1487
|
"Failed to load full audio file for saving"
|
|
1442
1488
|
);
|
|
1443
1489
|
}
|
|
1444
|
-
|
|
1445
|
-
const fullTag = fullFileHandle.getTag();
|
|
1446
|
-
if (partialTag && fullTag) {
|
|
1447
|
-
fullTag.setTitle(partialTag.title());
|
|
1448
|
-
fullTag.setArtist(partialTag.artist());
|
|
1449
|
-
fullTag.setAlbum(partialTag.album());
|
|
1450
|
-
fullTag.setComment(partialTag.comment());
|
|
1451
|
-
fullTag.setGenre(partialTag.genre());
|
|
1452
|
-
fullTag.setYear(partialTag.year());
|
|
1453
|
-
fullTag.setTrack(partialTag.track());
|
|
1454
|
-
}
|
|
1490
|
+
fullFileHandle.setTagData(this.handle.getTagData());
|
|
1455
1491
|
fullFileHandle.setProperties(this.handle.getProperties());
|
|
1456
1492
|
fullFileHandle.setPictures(this.handle.getPictures());
|
|
1457
1493
|
if (!fullFileHandle.save()) {
|
|
@@ -1681,7 +1717,7 @@ var VERSION;
|
|
|
1681
1717
|
var init_version = __esm({
|
|
1682
1718
|
"src/version.ts"() {
|
|
1683
1719
|
"use strict";
|
|
1684
|
-
VERSION = "1.1.
|
|
1720
|
+
VERSION = "1.1.2";
|
|
1685
1721
|
}
|
|
1686
1722
|
});
|
|
1687
1723
|
|
|
@@ -1768,6 +1804,7 @@ var init_taglib_class = __esm({
|
|
|
1768
1804
|
init_tag_mapping();
|
|
1769
1805
|
init_errors2();
|
|
1770
1806
|
init_version();
|
|
1807
|
+
init_embind_adapter();
|
|
1771
1808
|
TagLib = class _TagLib {
|
|
1772
1809
|
constructor(module) {
|
|
1773
1810
|
__publicField(this, "module");
|
|
@@ -1843,7 +1880,8 @@ var init_taglib_class = __esm({
|
|
|
1843
1880
|
audioData.byteOffset + audioData.byteLength
|
|
1844
1881
|
)
|
|
1845
1882
|
) : audioData;
|
|
1846
|
-
const
|
|
1883
|
+
const rawHandle = this.module.createFileHandle();
|
|
1884
|
+
const fileHandle = this.module.isWasi ? rawHandle : wrapEmbindHandle(rawHandle);
|
|
1847
1885
|
try {
|
|
1848
1886
|
const success = fileHandle.loadFromBuffer(uint8Array);
|
|
1849
1887
|
if (!success) {
|
|
@@ -11,8 +11,6 @@ export declare class WasiToTagLibAdapter implements TagLibModule {
|
|
|
11
11
|
private readonly heap;
|
|
12
12
|
constructor(wasiModule: WasiModule);
|
|
13
13
|
FileHandle: new () => FileHandle;
|
|
14
|
-
TagWrapper: new () => import("../../wasm.js").TagWrapper;
|
|
15
|
-
AudioPropertiesWrapper: new () => import("../../wasm.js").AudioPropertiesWrapper;
|
|
16
14
|
get ready(): Promise<this>;
|
|
17
15
|
get HEAP8(): Int8Array;
|
|
18
16
|
get HEAP16(): Int16Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/runtime/wasi-adapter/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAKhE,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,UAAU,EAAE,UAAU;IAKlC,UAAU,EAMM,UAAU,UAAU,CAAC;IAErC,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/runtime/wasi-adapter/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAKhE,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,UAAU,EAAE,UAAU;IAKlC,UAAU,EAMM,UAAU,UAAU,CAAC;IAErC,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzB;IAED,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED,IAAI,OAAO,IAAI,WAAW,CAEzB;IAED,IAAI,OAAO,IAAI,WAAW,CAEzB;IAED,IAAI,OAAO,IAAI,YAAY,CAE1B;IAED,IAAI,OAAO,IAAI,YAAY,CAE1B;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAe9C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAOjC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQhE,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIpC,gBAAgB,IAAI,UAAU;IAI9B,OAAO,IAAI,MAAM;IAIjB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;IAM/B,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMlC,KAAK,CACH,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,SAAS,EAAE,MAAM,EAAE,GAClB,GAAG;IAMN,KAAK,CACH,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,GAAG,EAAE,GACX,GAAG;CAKP"}
|
|
@@ -15,18 +15,6 @@ class WasiToTagLibAdapter {
|
|
|
15
15
|
);
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
-
__publicField(this, "TagWrapper", class {
|
|
19
|
-
constructor() {
|
|
20
|
-
throw new WasmerExecutionError("TagWrapper not directly constructable");
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
__publicField(this, "AudioPropertiesWrapper", class {
|
|
24
|
-
constructor() {
|
|
25
|
-
throw new WasmerExecutionError(
|
|
26
|
-
"AudioPropertiesWrapper not directly constructable"
|
|
27
|
-
);
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
18
|
this.wasi = wasiModule;
|
|
31
19
|
this.heap = new Uint8Array(wasiModule.memory.buffer);
|
|
32
20
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview WASI-based FileHandle implementation
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
4
|
+
import type { FileHandle, RawPicture } from "../../wasm.js";
|
|
5
|
+
import type { BasicTagData } from "../../types/tags.js";
|
|
6
|
+
import type { AudioProperties } from "../../types.js";
|
|
5
7
|
import type { WasiModule } from "../wasmer-sdk-loader/types.js";
|
|
6
8
|
export declare class WasiFileHandle implements FileHandle {
|
|
7
9
|
private readonly wasi;
|
|
@@ -15,9 +17,9 @@ export declare class WasiFileHandle implements FileHandle {
|
|
|
15
17
|
loadFromPath(path: string): boolean;
|
|
16
18
|
isValid(): boolean;
|
|
17
19
|
save(): boolean;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
getAudioProperties():
|
|
20
|
+
getTagData(): BasicTagData;
|
|
21
|
+
setTagData(data: Partial<BasicTagData>): void;
|
|
22
|
+
getAudioProperties(): AudioProperties | null;
|
|
21
23
|
getFormat(): string;
|
|
22
24
|
private detectOggCodec;
|
|
23
25
|
getBuffer(): Uint8Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-handle.d.ts","sourceRoot":"","sources":["../../../../src/runtime/wasi-adapter/file-handle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"file-handle.d.ts","sourceRoot":"","sources":["../../../../src/runtime/wasi-adapter/file-handle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAqDhE,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,SAAS,CAAS;gBAEd,UAAU,EAAE,UAAU;IAIlC,OAAO,CAAC,iBAAiB;IAQzB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAW3C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAWnC,OAAO,IAAI,OAAO;IAMlB,IAAI,IAAI,OAAO;IAqBf,UAAU,IAAI,YAAY;IAc1B,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAK7C,kBAAkB,IAAI,eAAe,GAAG,IAAI;IA4B5C,SAAS,IAAI,MAAM;IA2DnB,OAAO,CAAC,cAAc;IAiBtB,SAAS,IAAI,UAAU;IAKvB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAuBzC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI;IAgBpD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAOhC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAc7C,KAAK,IAAI,OAAO;IAehB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAK/B,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAShC,WAAW,IAAI,UAAU,EAAE;IAK3B,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI;IAKzC,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAOrC,cAAc,IAAI,IAAI;IAKtB,UAAU,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE;IAOlE,UAAU,CACR,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAC9D,IAAI;IAaP,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -43,6 +43,10 @@ const NUMERIC_FIELD_ALIASES = {
|
|
|
43
43
|
date: "year",
|
|
44
44
|
trackNumber: "track"
|
|
45
45
|
};
|
|
46
|
+
function firstString(v) {
|
|
47
|
+
if (Array.isArray(v)) return v[0] ?? "";
|
|
48
|
+
return v || "";
|
|
49
|
+
}
|
|
46
50
|
class WasiFileHandle {
|
|
47
51
|
constructor(wasiModule) {
|
|
48
52
|
__publicField(this, "wasi");
|
|
@@ -95,67 +99,43 @@ class WasiFileHandle {
|
|
|
95
99
|
}
|
|
96
100
|
return false;
|
|
97
101
|
}
|
|
98
|
-
|
|
102
|
+
getTagData() {
|
|
99
103
|
this.checkNotDestroyed();
|
|
100
|
-
|
|
101
|
-
return this.createTagWrapper({});
|
|
102
|
-
}
|
|
103
|
-
return this.createTagWrapper(this.tagData);
|
|
104
|
-
}
|
|
105
|
-
createTagWrapper(data) {
|
|
106
|
-
const firstString = (v) => {
|
|
107
|
-
if (Array.isArray(v)) return v[0] ?? "";
|
|
108
|
-
return v || "";
|
|
109
|
-
};
|
|
104
|
+
const d = this.tagData ?? {};
|
|
110
105
|
return {
|
|
111
|
-
title:
|
|
112
|
-
artist:
|
|
113
|
-
album:
|
|
114
|
-
comment:
|
|
115
|
-
genre:
|
|
116
|
-
year:
|
|
117
|
-
track:
|
|
118
|
-
setTitle: (value) => {
|
|
119
|
-
this.tagData = { ...this.tagData, title: value };
|
|
120
|
-
},
|
|
121
|
-
setArtist: (value) => {
|
|
122
|
-
this.tagData = { ...this.tagData, artist: value };
|
|
123
|
-
},
|
|
124
|
-
setAlbum: (value) => {
|
|
125
|
-
this.tagData = { ...this.tagData, album: value };
|
|
126
|
-
},
|
|
127
|
-
setComment: (value) => {
|
|
128
|
-
this.tagData = { ...this.tagData, comment: value };
|
|
129
|
-
},
|
|
130
|
-
setGenre: (value) => {
|
|
131
|
-
this.tagData = { ...this.tagData, genre: value };
|
|
132
|
-
},
|
|
133
|
-
setYear: (value) => {
|
|
134
|
-
this.tagData = { ...this.tagData, year: value };
|
|
135
|
-
},
|
|
136
|
-
setTrack: (value) => {
|
|
137
|
-
this.tagData = { ...this.tagData, track: value };
|
|
138
|
-
}
|
|
106
|
+
title: firstString(d.title),
|
|
107
|
+
artist: firstString(d.artist),
|
|
108
|
+
album: firstString(d.album),
|
|
109
|
+
comment: firstString(d.comment),
|
|
110
|
+
genre: firstString(d.genre),
|
|
111
|
+
year: d.year || 0,
|
|
112
|
+
track: d.track || 0
|
|
139
113
|
};
|
|
140
114
|
}
|
|
115
|
+
setTagData(data) {
|
|
116
|
+
this.checkNotDestroyed();
|
|
117
|
+
this.tagData = { ...this.tagData, ...data };
|
|
118
|
+
}
|
|
141
119
|
getAudioProperties() {
|
|
142
120
|
this.checkNotDestroyed();
|
|
143
121
|
if (!this.tagData || !("sampleRate" in this.tagData)) return null;
|
|
144
|
-
const
|
|
122
|
+
const d = this.tagData;
|
|
123
|
+
const containerFormat = d.containerFormat || "unknown";
|
|
124
|
+
const mpegVersion = d.mpegVersion ?? 0;
|
|
125
|
+
const formatVersion = d.formatVersion ?? 0;
|
|
145
126
|
return {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
bitrate:
|
|
149
|
-
sampleRate:
|
|
150
|
-
channels:
|
|
151
|
-
bitsPerSample:
|
|
152
|
-
codec:
|
|
153
|
-
containerFormat
|
|
154
|
-
isLossless:
|
|
155
|
-
mpegVersion
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
formatVersion: () => data.formatVersion ?? 0
|
|
127
|
+
duration: d.length ?? 0,
|
|
128
|
+
durationMs: d.lengthMs ?? 0,
|
|
129
|
+
bitrate: d.bitrate ?? 0,
|
|
130
|
+
sampleRate: d.sampleRate ?? 0,
|
|
131
|
+
channels: d.channels ?? 0,
|
|
132
|
+
bitsPerSample: d.bitsPerSample ?? 0,
|
|
133
|
+
codec: d.codec || "unknown",
|
|
134
|
+
containerFormat,
|
|
135
|
+
isLossless: d.isLossless ?? false,
|
|
136
|
+
...mpegVersion > 0 ? { mpegVersion, mpegLayer: d.mpegLayer ?? 0 } : {},
|
|
137
|
+
...containerFormat === "MP4" || containerFormat === "ASF" ? { isEncrypted: d.isEncrypted ?? false } : {},
|
|
138
|
+
...formatVersion > 0 ? { formatVersion } : {}
|
|
159
139
|
};
|
|
160
140
|
}
|
|
161
141
|
getFormat() {
|
|
@@ -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,
|
|
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;AAEhE;;;;;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;IAgEjB,eAAe,IAAI,eAAe,GAAG,SAAS;IAO9C,UAAU,IAAI,WAAW;IAIzB,aAAa,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAQ5C,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"}
|
|
@@ -31,61 +31,63 @@ class BaseAudioFileImpl {
|
|
|
31
31
|
return this.getFormat() === format;
|
|
32
32
|
}
|
|
33
33
|
tag() {
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
throw new MetadataError(
|
|
37
|
-
"read",
|
|
38
|
-
"Tag may be corrupted or format not fully supported"
|
|
39
|
-
);
|
|
40
|
-
}
|
|
34
|
+
const handle = this.handle;
|
|
35
|
+
let data = handle.getTagData();
|
|
41
36
|
const tag = {
|
|
42
37
|
get title() {
|
|
43
|
-
return
|
|
38
|
+
return data.title;
|
|
44
39
|
},
|
|
45
40
|
get artist() {
|
|
46
|
-
return
|
|
41
|
+
return data.artist;
|
|
47
42
|
},
|
|
48
43
|
get album() {
|
|
49
|
-
return
|
|
44
|
+
return data.album;
|
|
50
45
|
},
|
|
51
46
|
get comment() {
|
|
52
|
-
return
|
|
47
|
+
return data.comment;
|
|
53
48
|
},
|
|
54
49
|
get genre() {
|
|
55
|
-
return
|
|
50
|
+
return data.genre;
|
|
56
51
|
},
|
|
57
52
|
get year() {
|
|
58
|
-
return
|
|
53
|
+
return data.year;
|
|
59
54
|
},
|
|
60
55
|
get track() {
|
|
61
|
-
return
|
|
56
|
+
return data.track;
|
|
62
57
|
},
|
|
63
58
|
setTitle: (value) => {
|
|
64
|
-
|
|
59
|
+
handle.setTagData({ title: value });
|
|
60
|
+
data = handle.getTagData();
|
|
65
61
|
return tag;
|
|
66
62
|
},
|
|
67
63
|
setArtist: (value) => {
|
|
68
|
-
|
|
64
|
+
handle.setTagData({ artist: value });
|
|
65
|
+
data = handle.getTagData();
|
|
69
66
|
return tag;
|
|
70
67
|
},
|
|
71
68
|
setAlbum: (value) => {
|
|
72
|
-
|
|
69
|
+
handle.setTagData({ album: value });
|
|
70
|
+
data = handle.getTagData();
|
|
73
71
|
return tag;
|
|
74
72
|
},
|
|
75
73
|
setComment: (value) => {
|
|
76
|
-
|
|
74
|
+
handle.setTagData({ comment: value });
|
|
75
|
+
data = handle.getTagData();
|
|
77
76
|
return tag;
|
|
78
77
|
},
|
|
79
78
|
setGenre: (value) => {
|
|
80
|
-
|
|
79
|
+
handle.setTagData({ genre: value });
|
|
80
|
+
data = handle.getTagData();
|
|
81
81
|
return tag;
|
|
82
82
|
},
|
|
83
83
|
setYear: (value) => {
|
|
84
|
-
|
|
84
|
+
handle.setTagData({ year: value });
|
|
85
|
+
data = handle.getTagData();
|
|
85
86
|
return tag;
|
|
86
87
|
},
|
|
87
88
|
setTrack: (value) => {
|
|
88
|
-
|
|
89
|
+
handle.setTagData({ track: value });
|
|
90
|
+
data = handle.getTagData();
|
|
89
91
|
return tag;
|
|
90
92
|
}
|
|
91
93
|
};
|
|
@@ -93,28 +95,9 @@ class BaseAudioFileImpl {
|
|
|
93
95
|
}
|
|
94
96
|
audioProperties() {
|
|
95
97
|
if (!this.cachedAudioProperties) {
|
|
96
|
-
|
|
97
|
-
if (!propsWrapper) {
|
|
98
|
-
return void 0;
|
|
99
|
-
}
|
|
100
|
-
const containerFormat = propsWrapper.containerFormat() || "unknown";
|
|
101
|
-
const mpegVersion = propsWrapper.mpegVersion();
|
|
102
|
-
const formatVersion = propsWrapper.formatVersion();
|
|
103
|
-
this.cachedAudioProperties = {
|
|
104
|
-
duration: propsWrapper.lengthInSeconds(),
|
|
105
|
-
bitrate: propsWrapper.bitrate(),
|
|
106
|
-
sampleRate: propsWrapper.sampleRate(),
|
|
107
|
-
channels: propsWrapper.channels(),
|
|
108
|
-
bitsPerSample: propsWrapper.bitsPerSample(),
|
|
109
|
-
codec: propsWrapper.codec() || "unknown",
|
|
110
|
-
containerFormat,
|
|
111
|
-
isLossless: propsWrapper.isLossless(),
|
|
112
|
-
...mpegVersion > 0 ? { mpegVersion, mpegLayer: propsWrapper.mpegLayer() } : {},
|
|
113
|
-
...containerFormat === "MP4" || containerFormat === "ASF" ? { isEncrypted: propsWrapper.isEncrypted() } : {},
|
|
114
|
-
...formatVersion > 0 ? { formatVersion } : {}
|
|
115
|
-
};
|
|
98
|
+
this.cachedAudioProperties = this.handle.getAudioProperties() ?? null;
|
|
116
99
|
}
|
|
117
|
-
return this.cachedAudioProperties;
|
|
100
|
+
return this.cachedAudioProperties ?? void 0;
|
|
118
101
|
}
|
|
119
102
|
properties() {
|
|
120
103
|
return remapKeysFromTagLib(this.handle.getProperties());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-file-impl.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAIjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"audio-file-impl.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAIjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAoBzD;;;;;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;IA+D9C,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,UAAU,IAAI,MAAM,EAAE;IAUtB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAQnC,SAAS,IAAI,MAAM,GAAG,SAAS;IAK/B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;CAGhD"}
|
|
@@ -6,6 +6,7 @@ import { FileOperationError, InvalidFormatError } from "../errors.js";
|
|
|
6
6
|
import { readFileData } from "../utils/file.js";
|
|
7
7
|
import { writeFileData } from "../utils/write.js";
|
|
8
8
|
import { BaseAudioFileImpl } from "./audio-file-base.js";
|
|
9
|
+
import { wrapEmbindHandle } from "./embind-adapter.js";
|
|
9
10
|
let _nodeFs;
|
|
10
11
|
function readFileSync(path) {
|
|
11
12
|
if (typeof Deno !== "undefined") return Deno.readFileSync(path);
|
|
@@ -64,7 +65,8 @@ class AudioFileImpl extends BaseAudioFileImpl {
|
|
|
64
65
|
);
|
|
65
66
|
}
|
|
66
67
|
if (this.isPartiallyLoaded && this.originalSource) {
|
|
67
|
-
const
|
|
68
|
+
const rawFullHandle = this.module.createFileHandle();
|
|
69
|
+
const fullFileHandle = this.module.isWasi ? rawFullHandle : wrapEmbindHandle(rawFullHandle);
|
|
68
70
|
try {
|
|
69
71
|
const success = await (async () => {
|
|
70
72
|
const data = await readFileData(this.originalSource);
|
|
@@ -75,17 +77,7 @@ class AudioFileImpl extends BaseAudioFileImpl {
|
|
|
75
77
|
"Failed to load full audio file for saving"
|
|
76
78
|
);
|
|
77
79
|
}
|
|
78
|
-
|
|
79
|
-
const fullTag = fullFileHandle.getTag();
|
|
80
|
-
if (partialTag && fullTag) {
|
|
81
|
-
fullTag.setTitle(partialTag.title());
|
|
82
|
-
fullTag.setArtist(partialTag.artist());
|
|
83
|
-
fullTag.setAlbum(partialTag.album());
|
|
84
|
-
fullTag.setComment(partialTag.comment());
|
|
85
|
-
fullTag.setGenre(partialTag.genre());
|
|
86
|
-
fullTag.setYear(partialTag.year());
|
|
87
|
-
fullTag.setTrack(partialTag.track());
|
|
88
|
-
}
|
|
80
|
+
fullFileHandle.setTagData(this.handle.getTagData());
|
|
89
81
|
fullFileHandle.setProperties(this.handle.getProperties());
|
|
90
82
|
fullFileHandle.setPictures(this.handle.getPictures());
|
|
91
83
|
if (!fullFileHandle.save()) {
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Adapts Embind-generated FileHandle to the data-oriented interface.
|
|
3
|
+
*
|
|
4
|
+
* Embind objects store methods on the prototype, so `{ ...raw }` won't copy them.
|
|
5
|
+
* A Proxy forwards all property access to the raw Embind object by default,
|
|
6
|
+
* overriding only getTagData, setTagData, and getAudioProperties.
|
|
7
|
+
*/
|
|
8
|
+
import type { FileHandle } from "../wasm.js";
|
|
9
|
+
/** @internal Embind-generated TagWrapper — methods on C++ prototype. */
|
|
10
|
+
interface EmbindTagWrapper {
|
|
11
|
+
title(): string;
|
|
12
|
+
artist(): string;
|
|
13
|
+
album(): string;
|
|
14
|
+
comment(): string;
|
|
15
|
+
genre(): string;
|
|
16
|
+
year(): number;
|
|
17
|
+
track(): number;
|
|
18
|
+
setTitle(v: string): void;
|
|
19
|
+
setArtist(v: string): void;
|
|
20
|
+
setAlbum(v: string): void;
|
|
21
|
+
setComment(v: string): void;
|
|
22
|
+
setGenre(v: string): void;
|
|
23
|
+
setYear(v: number): void;
|
|
24
|
+
setTrack(v: number): void;
|
|
25
|
+
}
|
|
26
|
+
/** @internal Embind-generated AudioPropertiesWrapper — methods on C++ prototype. */
|
|
27
|
+
interface EmbindAudioPropertiesWrapper {
|
|
28
|
+
lengthInSeconds(): number;
|
|
29
|
+
lengthInMilliseconds(): number;
|
|
30
|
+
bitrate(): number;
|
|
31
|
+
sampleRate(): number;
|
|
32
|
+
channels(): number;
|
|
33
|
+
bitsPerSample(): number;
|
|
34
|
+
codec(): string;
|
|
35
|
+
containerFormat(): string;
|
|
36
|
+
isLossless(): boolean;
|
|
37
|
+
mpegVersion(): number;
|
|
38
|
+
mpegLayer(): number;
|
|
39
|
+
isEncrypted(): boolean;
|
|
40
|
+
formatVersion(): number;
|
|
41
|
+
}
|
|
42
|
+
/** @internal The raw Embind FileHandle before adaptation. */
|
|
43
|
+
export interface EmbindFileHandle {
|
|
44
|
+
getTag(): EmbindTagWrapper;
|
|
45
|
+
getAudioProperties(): EmbindAudioPropertiesWrapper | null;
|
|
46
|
+
[key: string]: unknown;
|
|
47
|
+
}
|
|
48
|
+
/** @internal Wrap an Embind FileHandle with a Proxy for the data-oriented interface. */
|
|
49
|
+
export declare function wrapEmbindHandle(raw: EmbindFileHandle): FileHandle;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=embind-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embind-adapter.d.ts","sourceRoot":"","sources":["../../../src/taglib/embind-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wEAAwE;AACxE,UAAU,gBAAgB;IACxB,KAAK,IAAI,MAAM,CAAC;IAChB,MAAM,IAAI,MAAM,CAAC;IACjB,KAAK,IAAI,MAAM,CAAC;IAChB,OAAO,IAAI,MAAM,CAAC;IAClB,KAAK,IAAI,MAAM,CAAC;IAChB,IAAI,IAAI,MAAM,CAAC;IACf,KAAK,IAAI,MAAM,CAAC;IAChB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,oFAAoF;AACpF,UAAU,4BAA4B;IACpC,eAAe,IAAI,MAAM,CAAC;IAC1B,oBAAoB,IAAI,MAAM,CAAC;IAC/B,OAAO,IAAI,MAAM,CAAC;IAClB,UAAU,IAAI,MAAM,CAAC;IACrB,QAAQ,IAAI,MAAM,CAAC;IACnB,aAAa,IAAI,MAAM,CAAC;IACxB,KAAK,IAAI,MAAM,CAAC;IAChB,eAAe,IAAI,MAAM,CAAC;IAC1B,UAAU,IAAI,OAAO,CAAC;IACtB,WAAW,IAAI,MAAM,CAAC;IACtB,SAAS,IAAI,MAAM,CAAC;IACpB,WAAW,IAAI,OAAO,CAAC;IACvB,aAAa,IAAI,MAAM,CAAC;CACzB;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,IAAI,gBAAgB,CAAC;IAC3B,kBAAkB,IAAI,4BAA4B,GAAG,IAAI,CAAC;IAC1D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,GAAG,UAAU,CAyDlE"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
function wrapEmbindHandle(raw) {
|
|
2
|
+
const overrides = {
|
|
3
|
+
getTagData() {
|
|
4
|
+
const tw = raw.getTag();
|
|
5
|
+
return {
|
|
6
|
+
title: tw.title(),
|
|
7
|
+
artist: tw.artist(),
|
|
8
|
+
album: tw.album(),
|
|
9
|
+
comment: tw.comment(),
|
|
10
|
+
genre: tw.genre(),
|
|
11
|
+
year: tw.year(),
|
|
12
|
+
track: tw.track()
|
|
13
|
+
};
|
|
14
|
+
},
|
|
15
|
+
setTagData(data) {
|
|
16
|
+
const tw = raw.getTag();
|
|
17
|
+
if (data.title !== void 0) tw.setTitle(data.title);
|
|
18
|
+
if (data.artist !== void 0) tw.setArtist(data.artist);
|
|
19
|
+
if (data.album !== void 0) tw.setAlbum(data.album);
|
|
20
|
+
if (data.comment !== void 0) tw.setComment(data.comment);
|
|
21
|
+
if (data.genre !== void 0) tw.setGenre(data.genre);
|
|
22
|
+
if (data.year !== void 0) tw.setYear(data.year);
|
|
23
|
+
if (data.track !== void 0) tw.setTrack(data.track);
|
|
24
|
+
},
|
|
25
|
+
getAudioProperties() {
|
|
26
|
+
const pw = raw.getAudioProperties();
|
|
27
|
+
if (!pw) return null;
|
|
28
|
+
const containerFormat = pw.containerFormat() || "unknown";
|
|
29
|
+
const mpegVersion = pw.mpegVersion();
|
|
30
|
+
const formatVersion = pw.formatVersion();
|
|
31
|
+
return {
|
|
32
|
+
duration: pw.lengthInSeconds(),
|
|
33
|
+
durationMs: pw.lengthInMilliseconds(),
|
|
34
|
+
bitrate: pw.bitrate(),
|
|
35
|
+
sampleRate: pw.sampleRate(),
|
|
36
|
+
channels: pw.channels(),
|
|
37
|
+
bitsPerSample: pw.bitsPerSample(),
|
|
38
|
+
codec: pw.codec() || "unknown",
|
|
39
|
+
containerFormat,
|
|
40
|
+
isLossless: pw.isLossless(),
|
|
41
|
+
...mpegVersion > 0 ? { mpegVersion, mpegLayer: pw.mpegLayer() } : {},
|
|
42
|
+
...containerFormat === "MP4" || containerFormat === "ASF" ? { isEncrypted: pw.isEncrypted() } : {},
|
|
43
|
+
...formatVersion > 0 ? { formatVersion } : {}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
return new Proxy(raw, {
|
|
48
|
+
get(target, prop, receiver) {
|
|
49
|
+
if (prop in overrides) return overrides[prop];
|
|
50
|
+
const value = Reflect.get(target, prop, receiver);
|
|
51
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export {
|
|
56
|
+
wrapEmbindHandle
|
|
57
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taglib-class.d.ts","sourceRoot":"","sources":["../../../src/taglib/taglib-class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"taglib-class.d.ts","sourceRoot":"","sources":["../../../src/taglib/taglib-class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,UAAU,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA4C3D;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,MAAM,EAAE,UAAU;IAI9B;;;;;OAKG;WACU,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrE;;;;;;;OAOG;IACG,IAAI,CACR,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,CAAC;IAiGrB;;;;;;;;;OASG;IACG,IAAI,CACR,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC;IACV,IAAI,CACR,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,eAAe,EACxD,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC5C,OAAO,CAAC,UAAU,CAAC;IAmBtB;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtE;;;;;;;OAOG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GACtB,OAAO,CAAC,IAAI,CAAC;IAUhB,oEAAoE;IACpE,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,aAAa;CAStB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAEtE"}
|
|
@@ -10,6 +10,7 @@ import { loadAudioData } from "./load-audio-data.js";
|
|
|
10
10
|
import { mergeTagUpdates } from "../utils/tag-mapping.js";
|
|
11
11
|
import { FileOperationError } from "../errors.js";
|
|
12
12
|
import { VERSION } from "../version.js";
|
|
13
|
+
import { wrapEmbindHandle } from "./embind-adapter.js";
|
|
13
14
|
function toWasiPath(osPath) {
|
|
14
15
|
if (osPath.startsWith("\\\\") || osPath.startsWith("//")) {
|
|
15
16
|
throw new FileOperationError(
|
|
@@ -109,7 +110,8 @@ class TagLib {
|
|
|
109
110
|
audioData.byteOffset + audioData.byteLength
|
|
110
111
|
)
|
|
111
112
|
) : audioData;
|
|
112
|
-
const
|
|
113
|
+
const rawHandle = this.module.createFileHandle();
|
|
114
|
+
const fileHandle = this.module.isWasi ? rawHandle : wrapEmbindHandle(rawHandle);
|
|
113
115
|
try {
|
|
114
116
|
const success = fileHandle.loadFromBuffer(uint8Array);
|
|
115
117
|
if (!success) {
|
|
@@ -73,6 +73,8 @@ export type AudioCodec = "AAC" | "ALAC" | "MP3" | "FLAC" | "Vorbis" | "Opus" | "
|
|
|
73
73
|
export interface AudioProperties {
|
|
74
74
|
/** Duration of the audio in seconds */
|
|
75
75
|
readonly duration: number;
|
|
76
|
+
/** Duration of the audio in milliseconds (more precise than `duration`) */
|
|
77
|
+
readonly durationMs?: number;
|
|
76
78
|
/** Bitrate in kb/s */
|
|
77
79
|
readonly bitrate: number;
|
|
78
80
|
/** Sample rate in Hz */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-formats.d.ts","sourceRoot":"","sources":["../../../src/types/audio-formats.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audio-formats.d.ts","sourceRoot":"","sources":["../../../src/types/audio-formats.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types/tags.d.ts
CHANGED
|
@@ -31,6 +31,20 @@ export interface Tag {
|
|
|
31
31
|
/** Track number */
|
|
32
32
|
readonly track?: number;
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Basic tag data as returned by the internal FileHandle interface.
|
|
36
|
+
* Single string values (not arrays) matching TagLib's C++ Tag accessors.
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
export interface BasicTagData {
|
|
40
|
+
title: string;
|
|
41
|
+
artist: string;
|
|
42
|
+
album: string;
|
|
43
|
+
comment: string;
|
|
44
|
+
genre: string;
|
|
45
|
+
year: number;
|
|
46
|
+
track: number;
|
|
47
|
+
}
|
|
34
48
|
/**
|
|
35
49
|
* Input type for writing tags. Accepts both single strings and arrays.
|
|
36
50
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/types/tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,GAAG;IAClB,kBAAkB;IAClB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB;IAClB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB;IACjB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc;IACd,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY;IACZ,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW;IACX,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,QAAQ;IACvB,kBAAkB;IAClB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACnC,kBAAkB;IAClB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACpC,iBAAiB;IACjB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACnC,cAAc;IACd,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACrC,YAAY;IACZ,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACnC,WAAW;IACX,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAGxB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAGjD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAY,SAAQ,GAAG;IACtC,yCAAyC;IACzC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,oBAAoB;IACpB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,2BAA2B;IAC3B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IACvC,6BAA6B;IAC7B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IACzC,4BAA4B;IAC5B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,mCAAmC;IACnC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9C,iDAAiD;IACjD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,eAAe;IACf,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,kBAAkB;IAClB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,4BAA4B;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,6BAA6B;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,6BAA6B;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,qCAAqC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,sCAAsC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,qCAAqC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,wCAAwC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,gBAAgB;IAChB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB;IAChB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB;IACjB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe;IACf,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,mBAAmB;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe;IACf,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,0CAA0C;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,yCAAyC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,4BAA4B;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAGjC,qDAAqD;IACrD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,kCAAkC;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAGxC,sDAAsD;IACtD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,eAAe,EAAE,OAAO,EAAE,CAAC;IACtD,6BAA6B;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;QACxB,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,WAAW,GACnB;KAAG,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE;CAAE,GACjC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;CAAE,CAAC;AAE5C;;GAEG;AACH,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/types/tags.ts"],"names":[],"mappings":"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"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.1.
|
|
1
|
+
export declare const VERSION = "1.1.2";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/src/version.js
CHANGED
package/dist/src/wasm.d.ts
CHANGED
|
@@ -49,8 +49,9 @@ export interface FileHandle {
|
|
|
49
49
|
getMP4Item(key: string): string;
|
|
50
50
|
setMP4Item(key: string, value: string): void;
|
|
51
51
|
removeMP4Item(key: string): void;
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
getTagData(): import("./types/tags.js").BasicTagData;
|
|
53
|
+
setTagData(data: Partial<import("./types/tags.js").BasicTagData>): void;
|
|
54
|
+
getAudioProperties(): import("./types.js").AudioProperties | null;
|
|
54
55
|
getBuffer(): Uint8Array;
|
|
55
56
|
getPictures(): RawPicture[];
|
|
56
57
|
setPictures(pictures: RawPicture[]): void;
|
|
@@ -68,37 +69,6 @@ export interface FileHandle {
|
|
|
68
69
|
}[]): void;
|
|
69
70
|
destroy(): void;
|
|
70
71
|
}
|
|
71
|
-
export interface TagWrapper {
|
|
72
|
-
title(): string;
|
|
73
|
-
artist(): string;
|
|
74
|
-
album(): string;
|
|
75
|
-
comment(): string;
|
|
76
|
-
genre(): string;
|
|
77
|
-
year(): number;
|
|
78
|
-
track(): number;
|
|
79
|
-
setTitle(value: string): void;
|
|
80
|
-
setArtist(value: string): void;
|
|
81
|
-
setAlbum(value: string): void;
|
|
82
|
-
setComment(value: string): void;
|
|
83
|
-
setGenre(value: string): void;
|
|
84
|
-
setYear(value: number): void;
|
|
85
|
-
setTrack(value: number): void;
|
|
86
|
-
}
|
|
87
|
-
export interface AudioPropertiesWrapper {
|
|
88
|
-
lengthInSeconds(): number;
|
|
89
|
-
lengthInMilliseconds(): number;
|
|
90
|
-
bitrate(): number;
|
|
91
|
-
sampleRate(): number;
|
|
92
|
-
channels(): number;
|
|
93
|
-
bitsPerSample(): number;
|
|
94
|
-
codec(): string;
|
|
95
|
-
containerFormat(): string;
|
|
96
|
-
isLossless(): boolean;
|
|
97
|
-
mpegVersion(): number;
|
|
98
|
-
mpegLayer(): number;
|
|
99
|
-
isEncrypted(): boolean;
|
|
100
|
-
formatVersion(): number;
|
|
101
|
-
}
|
|
102
72
|
/**
|
|
103
73
|
* TagLib WebAssembly module interface.
|
|
104
74
|
* Provides access to Embind classes and low-level C-style functions.
|
|
@@ -109,10 +79,6 @@ export interface TagLibModule extends Omit<EmscriptenModule, "then"> {
|
|
|
109
79
|
isWasi?: boolean;
|
|
110
80
|
/** @internal Embind FileHandle class constructor */
|
|
111
81
|
FileHandle: new () => FileHandle;
|
|
112
|
-
/** @internal Embind TagWrapper class constructor */
|
|
113
|
-
TagWrapper: new () => TagWrapper;
|
|
114
|
-
/** @internal Embind AudioPropertiesWrapper class constructor */
|
|
115
|
-
AudioPropertiesWrapper: new () => AudioPropertiesWrapper;
|
|
116
82
|
/** @internal Create a new file handle for audio file operations */
|
|
117
83
|
createFileHandle(): FileHandle;
|
|
118
84
|
/** @internal Embind function: returns TagLib version (e.g. "2.2.1") */
|
package/dist/src/wasm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../src/wasm.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../src/wasm.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "taglib-wasm",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
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",
|