taglib-wasm 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -443
- package/dist/index.browser.d.ts +2 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +49 -101
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/simple.browser.js +47 -101
- package/dist/src/errors/base.d.ts +1 -1
- package/dist/src/errors/base.d.ts.map +1 -1
- package/dist/src/errors/base.js +2 -1
- package/dist/src/folder-api/folder-operations.d.ts +2 -1
- package/dist/src/folder-api/folder-operations.d.ts.map +1 -1
- package/dist/src/folder-api/types.d.ts.map +1 -1
- package/dist/src/folder-api/types.js +4 -1
- package/dist/src/runtime/wasi-adapter/file-handle.d.ts.map +1 -1
- package/dist/src/runtime/wasi-adapter/file-handle.js +3 -1
- package/dist/src/runtime/wasi-adapter/wasm-io.d.ts.map +1 -1
- package/dist/src/runtime/wasi-adapter/wasm-io.js +9 -0
- package/dist/src/runtime/wasi-host.d.ts.map +1 -1
- package/dist/src/runtime/wasi-host.js +5 -0
- package/dist/src/simple/batch-operations.d.ts +4 -4
- package/dist/src/simple/batch-operations.d.ts.map +1 -1
- package/dist/src/simple/batch-operations.js +4 -1
- package/dist/src/simple/picture-operations.d.ts.map +1 -1
- package/dist/src/simple/picture-operations.js +6 -50
- package/dist/src/simple/tag-operations.d.ts.map +1 -1
- package/dist/src/simple/tag-operations.js +12 -65
- package/dist/src/simple/with-audio-file.d.ts +5 -0
- package/dist/src/simple/with-audio-file.d.ts.map +1 -0
- package/dist/src/simple/with-audio-file.js +32 -0
- package/dist/src/taglib/audio-file-base.d.ts +3 -3
- package/dist/src/taglib/audio-file-base.d.ts.map +1 -1
- package/dist/src/taglib/audio-file-impl.d.ts +2 -2
- package/dist/src/taglib/audio-file-impl.d.ts.map +1 -1
- package/dist/src/taglib/taglib-class.d.ts +3 -2
- package/dist/src/taglib/taglib-class.d.ts.map +1 -1
- package/dist/src/taglib/taglib-class.js +9 -5
- package/dist/src/types/audio-formats.d.ts +12 -3
- package/dist/src/types/audio-formats.d.ts.map +1 -1
- package/dist/src/types/audio-formats.js +6 -0
- package/dist/src/types/format-property-keys.d.ts +1 -1
- package/dist/src/types/format-property-keys.d.ts.map +1 -1
- package/dist/taglib-web.wasm +0 -0
- package/dist/taglib-wrapper.js +1 -1
- package/package.json +1 -1
package/dist/index.browser.js
CHANGED
|
@@ -11,6 +11,9 @@ var __export = (target, all) => {
|
|
|
11
11
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
12
12
|
|
|
13
13
|
// src/types/audio-formats.ts
|
|
14
|
+
function isNamedAudioInput(input) {
|
|
15
|
+
return typeof input === "object" && input !== null && "name" in input && "data" in input && !(input instanceof File) && !(input instanceof Uint8Array) && !(input instanceof ArrayBuffer);
|
|
16
|
+
}
|
|
14
17
|
var init_audio_formats = __esm({
|
|
15
18
|
"src/types/audio-formats.ts"() {
|
|
16
19
|
"use strict";
|
|
@@ -143,7 +146,8 @@ var init_base = __esm({
|
|
|
143
146
|
"M4A",
|
|
144
147
|
"FLAC",
|
|
145
148
|
"OGG",
|
|
146
|
-
"WAV"
|
|
149
|
+
"WAV",
|
|
150
|
+
"MKA"
|
|
147
151
|
];
|
|
148
152
|
TagLibError = class _TagLibError extends Error {
|
|
149
153
|
/**
|
|
@@ -1491,6 +1495,7 @@ var TagLib;
|
|
|
1491
1495
|
var init_taglib_class = __esm({
|
|
1492
1496
|
"src/taglib/taglib-class.ts"() {
|
|
1493
1497
|
"use strict";
|
|
1498
|
+
init_audio_formats();
|
|
1494
1499
|
init_errors2();
|
|
1495
1500
|
init_audio_file_impl();
|
|
1496
1501
|
init_load_audio_data();
|
|
@@ -1513,7 +1518,7 @@ var init_taglib_class = __esm({
|
|
|
1513
1518
|
}
|
|
1514
1519
|
/**
|
|
1515
1520
|
* Open an audio file for reading and writing metadata.
|
|
1516
|
-
* @param input - File path, Uint8Array, ArrayBuffer,
|
|
1521
|
+
* @param input - File path, Uint8Array, ArrayBuffer, File object, or NamedAudioInput.
|
|
1517
1522
|
* @param options - Partial-loading options for large files.
|
|
1518
1523
|
* @returns An AudioFile instance (use `using` for automatic cleanup).
|
|
1519
1524
|
* @throws {TagLibInitializationError} If the module is not properly initialized.
|
|
@@ -1525,7 +1530,8 @@ var init_taglib_class = __esm({
|
|
|
1525
1530
|
"TagLib module not properly initialized: createFileHandle not found. Make sure the module is fully loaded before calling open."
|
|
1526
1531
|
);
|
|
1527
1532
|
}
|
|
1528
|
-
const
|
|
1533
|
+
const actualInput = isNamedAudioInput(input) ? input.data : input;
|
|
1534
|
+
const sourcePath = typeof actualInput === "string" ? actualInput : void 0;
|
|
1529
1535
|
const opts = {
|
|
1530
1536
|
partial: false,
|
|
1531
1537
|
maxHeaderSize: 1024 * 1024,
|
|
@@ -1533,7 +1539,7 @@ var init_taglib_class = __esm({
|
|
|
1533
1539
|
...options
|
|
1534
1540
|
};
|
|
1535
1541
|
const { data: audioData, isPartiallyLoaded } = await loadAudioData(
|
|
1536
|
-
|
|
1542
|
+
actualInput,
|
|
1537
1543
|
opts
|
|
1538
1544
|
);
|
|
1539
1545
|
const buffer = audioData.buffer.slice(
|
|
@@ -1554,7 +1560,7 @@ var init_taglib_class = __esm({
|
|
|
1554
1560
|
this.module,
|
|
1555
1561
|
fileHandle,
|
|
1556
1562
|
sourcePath,
|
|
1557
|
-
|
|
1563
|
+
actualInput,
|
|
1558
1564
|
isPartiallyLoaded,
|
|
1559
1565
|
opts
|
|
1560
1566
|
);
|
|
@@ -1614,7 +1620,7 @@ var init_taglib_class = __esm({
|
|
|
1614
1620
|
}
|
|
1615
1621
|
/** Returns the taglib-wasm version with embedded TagLib version. */
|
|
1616
1622
|
version() {
|
|
1617
|
-
return "1.0.
|
|
1623
|
+
return "1.0.6 (TagLib 2.2.1)";
|
|
1618
1624
|
}
|
|
1619
1625
|
};
|
|
1620
1626
|
}
|
|
@@ -1662,6 +1668,7 @@ var init_taglib2 = __esm({
|
|
|
1662
1668
|
|
|
1663
1669
|
// index.browser.ts
|
|
1664
1670
|
init_taglib2();
|
|
1671
|
+
init_audio_formats();
|
|
1665
1672
|
init_errors2();
|
|
1666
1673
|
|
|
1667
1674
|
// src/simple/config.ts
|
|
@@ -1684,7 +1691,10 @@ async function getTagLib() {
|
|
|
1684
1691
|
init_errors2();
|
|
1685
1692
|
init_write();
|
|
1686
1693
|
init_tag_mapping();
|
|
1687
|
-
|
|
1694
|
+
|
|
1695
|
+
// src/simple/with-audio-file.ts
|
|
1696
|
+
init_errors2();
|
|
1697
|
+
async function withAudioFile(file, fn) {
|
|
1688
1698
|
const taglib = await getTagLib();
|
|
1689
1699
|
const audioFile = await taglib.open(file);
|
|
1690
1700
|
try {
|
|
@@ -1693,22 +1703,14 @@ async function readTags(file) {
|
|
|
1693
1703
|
"File may be corrupted or in an unsupported format"
|
|
1694
1704
|
);
|
|
1695
1705
|
}
|
|
1696
|
-
|
|
1697
|
-
return mapPropertiesToExtendedTag(props);
|
|
1706
|
+
return fn(audioFile);
|
|
1698
1707
|
} finally {
|
|
1699
1708
|
audioFile.dispose();
|
|
1700
1709
|
}
|
|
1701
1710
|
}
|
|
1702
|
-
async function
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
try {
|
|
1706
|
-
if (!audioFile.isValid()) {
|
|
1707
|
-
throw new InvalidFormatError(
|
|
1708
|
-
"File may be corrupted or in an unsupported format"
|
|
1709
|
-
);
|
|
1710
|
-
}
|
|
1711
|
-
mergeTagUpdates(audioFile, tags);
|
|
1711
|
+
async function withAudioFileSave(file, fn) {
|
|
1712
|
+
return withAudioFile(file, (audioFile) => {
|
|
1713
|
+
fn(audioFile);
|
|
1712
1714
|
if (!audioFile.save()) {
|
|
1713
1715
|
throw new FileOperationError(
|
|
1714
1716
|
"save",
|
|
@@ -1716,9 +1718,20 @@ async function applyTags(file, tags) {
|
|
|
1716
1718
|
);
|
|
1717
1719
|
}
|
|
1718
1720
|
return audioFile.getFileBuffer();
|
|
1719
|
-
}
|
|
1720
|
-
|
|
1721
|
-
|
|
1721
|
+
});
|
|
1722
|
+
}
|
|
1723
|
+
|
|
1724
|
+
// src/simple/tag-operations.ts
|
|
1725
|
+
async function readTags(file) {
|
|
1726
|
+
return withAudioFile(
|
|
1727
|
+
file,
|
|
1728
|
+
(audioFile) => mapPropertiesToExtendedTag(audioFile.properties())
|
|
1729
|
+
);
|
|
1730
|
+
}
|
|
1731
|
+
async function applyTags(file, tags) {
|
|
1732
|
+
return withAudioFileSave(file, (audioFile) => {
|
|
1733
|
+
mergeTagUpdates(audioFile, tags);
|
|
1734
|
+
});
|
|
1722
1735
|
}
|
|
1723
1736
|
async function applyTagsToFile(file, tags) {
|
|
1724
1737
|
if (typeof file !== "string") {
|
|
@@ -1731,14 +1744,7 @@ async function applyTagsToFile(file, tags) {
|
|
|
1731
1744
|
await writeFileData(file, modifiedBuffer);
|
|
1732
1745
|
}
|
|
1733
1746
|
async function readProperties(file) {
|
|
1734
|
-
|
|
1735
|
-
const audioFile = await taglib.open(file);
|
|
1736
|
-
try {
|
|
1737
|
-
if (!audioFile.isValid()) {
|
|
1738
|
-
throw new InvalidFormatError(
|
|
1739
|
-
"File may be corrupted or in an unsupported format"
|
|
1740
|
-
);
|
|
1741
|
-
}
|
|
1747
|
+
return withAudioFile(file, (audioFile) => {
|
|
1742
1748
|
const props = audioFile.audioProperties();
|
|
1743
1749
|
if (!props) {
|
|
1744
1750
|
throw new MetadataError(
|
|
@@ -1748,9 +1754,7 @@ async function readProperties(file) {
|
|
|
1748
1754
|
);
|
|
1749
1755
|
}
|
|
1750
1756
|
return props;
|
|
1751
|
-
}
|
|
1752
|
-
audioFile.dispose();
|
|
1753
|
-
}
|
|
1757
|
+
});
|
|
1754
1758
|
}
|
|
1755
1759
|
async function isValidAudioFile(file) {
|
|
1756
1760
|
try {
|
|
@@ -1778,85 +1782,25 @@ async function readFormat(file) {
|
|
|
1778
1782
|
}
|
|
1779
1783
|
}
|
|
1780
1784
|
async function clearTags(file) {
|
|
1781
|
-
|
|
1782
|
-
const audioFile = await taglib.open(file);
|
|
1783
|
-
try {
|
|
1784
|
-
if (!audioFile.isValid()) {
|
|
1785
|
-
throw new InvalidFormatError(
|
|
1786
|
-
"File may be corrupted or in an unsupported format"
|
|
1787
|
-
);
|
|
1788
|
-
}
|
|
1785
|
+
return withAudioFileSave(file, (audioFile) => {
|
|
1789
1786
|
audioFile.setProperties({});
|
|
1790
1787
|
audioFile.removePictures();
|
|
1791
|
-
|
|
1792
|
-
throw new FileOperationError(
|
|
1793
|
-
"save",
|
|
1794
|
-
"Failed to save metadata changes. The file may be read-only or corrupted."
|
|
1795
|
-
);
|
|
1796
|
-
}
|
|
1797
|
-
return audioFile.getFileBuffer();
|
|
1798
|
-
} finally {
|
|
1799
|
-
audioFile.dispose();
|
|
1800
|
-
}
|
|
1788
|
+
});
|
|
1801
1789
|
}
|
|
1802
1790
|
|
|
1803
1791
|
// src/simple/picture-operations.ts
|
|
1804
|
-
init_errors2();
|
|
1805
1792
|
async function readPictures(file) {
|
|
1806
|
-
|
|
1807
|
-
const audioFile = await taglib.open(file);
|
|
1808
|
-
try {
|
|
1809
|
-
if (!audioFile.isValid()) {
|
|
1810
|
-
throw new InvalidFormatError(
|
|
1811
|
-
"File may be corrupted or in an unsupported format"
|
|
1812
|
-
);
|
|
1813
|
-
}
|
|
1814
|
-
return audioFile.getPictures();
|
|
1815
|
-
} finally {
|
|
1816
|
-
audioFile.dispose();
|
|
1817
|
-
}
|
|
1793
|
+
return withAudioFile(file, (audioFile) => audioFile.getPictures());
|
|
1818
1794
|
}
|
|
1819
1795
|
async function applyPictures(file, pictures) {
|
|
1820
|
-
|
|
1821
|
-
const audioFile = await taglib.open(file);
|
|
1822
|
-
try {
|
|
1823
|
-
if (!audioFile.isValid()) {
|
|
1824
|
-
throw new InvalidFormatError(
|
|
1825
|
-
"File may be corrupted or in an unsupported format"
|
|
1826
|
-
);
|
|
1827
|
-
}
|
|
1796
|
+
return withAudioFileSave(file, (audioFile) => {
|
|
1828
1797
|
audioFile.setPictures(pictures);
|
|
1829
|
-
|
|
1830
|
-
throw new FileOperationError(
|
|
1831
|
-
"save",
|
|
1832
|
-
"Failed to save picture changes. The file may be read-only or corrupted."
|
|
1833
|
-
);
|
|
1834
|
-
}
|
|
1835
|
-
return audioFile.getFileBuffer();
|
|
1836
|
-
} finally {
|
|
1837
|
-
audioFile.dispose();
|
|
1838
|
-
}
|
|
1798
|
+
});
|
|
1839
1799
|
}
|
|
1840
1800
|
async function addPicture(file, picture) {
|
|
1841
|
-
|
|
1842
|
-
const audioFile = await taglib.open(file);
|
|
1843
|
-
try {
|
|
1844
|
-
if (!audioFile.isValid()) {
|
|
1845
|
-
throw new InvalidFormatError(
|
|
1846
|
-
"File may be corrupted or in an unsupported format"
|
|
1847
|
-
);
|
|
1848
|
-
}
|
|
1801
|
+
return withAudioFileSave(file, (audioFile) => {
|
|
1849
1802
|
audioFile.addPicture(picture);
|
|
1850
|
-
|
|
1851
|
-
throw new FileOperationError(
|
|
1852
|
-
"save",
|
|
1853
|
-
"Failed to save picture changes. The file may be read-only or corrupted."
|
|
1854
|
-
);
|
|
1855
|
-
}
|
|
1856
|
-
return audioFile.getFileBuffer();
|
|
1857
|
-
} finally {
|
|
1858
|
-
audioFile.dispose();
|
|
1859
|
-
}
|
|
1803
|
+
});
|
|
1860
1804
|
}
|
|
1861
1805
|
async function clearPictures(file) {
|
|
1862
1806
|
return applyPictures(file, []);
|
|
@@ -1903,6 +1847,7 @@ async function readPictureMetadata(file) {
|
|
|
1903
1847
|
}
|
|
1904
1848
|
|
|
1905
1849
|
// src/simple/batch-operations.ts
|
|
1850
|
+
init_audio_formats();
|
|
1906
1851
|
init_errors2();
|
|
1907
1852
|
init_tag_mapping();
|
|
1908
1853
|
async function executeBatch(files, options, processor) {
|
|
@@ -1918,7 +1863,7 @@ async function executeBatch(files, options, processor) {
|
|
|
1918
1863
|
const chunk = files.slice(i, i + concurrency);
|
|
1919
1864
|
const chunkPromises = chunk.map(async (file, idx) => {
|
|
1920
1865
|
const index = i + idx;
|
|
1921
|
-
const fileName = typeof file === "string" ? file : `
|
|
1866
|
+
const fileName = typeof file === "string" ? file : file instanceof File ? file.name : isNamedAudioInput(file) ? file.name : `buffer-${index}`;
|
|
1922
1867
|
try {
|
|
1923
1868
|
const audioFile = await taglib.open(file);
|
|
1924
1869
|
try {
|
|
@@ -1990,6 +1935,8 @@ async function readMetadata(file) {
|
|
|
1990
1935
|
name = file;
|
|
1991
1936
|
} else if (file instanceof File) {
|
|
1992
1937
|
name = file.name;
|
|
1938
|
+
} else if (isNamedAudioInput(file)) {
|
|
1939
|
+
name = file.name;
|
|
1993
1940
|
} else {
|
|
1994
1941
|
name = `buffer (${file.byteLength} bytes)`;
|
|
1995
1942
|
}
|
|
@@ -2472,6 +2419,7 @@ export {
|
|
|
2472
2419
|
isInvalidFormatError,
|
|
2473
2420
|
isMemoryError,
|
|
2474
2421
|
isMetadataError,
|
|
2422
|
+
isNamedAudioInput,
|
|
2475
2423
|
isTagLibError,
|
|
2476
2424
|
isUnsupportedFormatError,
|
|
2477
2425
|
isValidAudioFile,
|
package/dist/index.d.ts
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
export type { AudioFile, TypedAudioFile, } from "./src/taglib/audio-file-interface.js";
|
|
36
36
|
export { AudioFileImpl, createTagLib, TagLib } from "./src/taglib.js";
|
|
37
37
|
export type { MutableTag } from "./src/taglib.js";
|
|
38
|
+
export { isNamedAudioInput } from "./src/types/audio-formats.js";
|
|
38
39
|
export { EnvironmentError, FileOperationError, InvalidFormatError, isEnvironmentError, isFileOperationError, isInvalidFormatError, isMemoryError, isMetadataError, isTagLibError, isUnsupportedFormatError, MemoryError, MetadataError, SUPPORTED_FORMATS, TagLibError, TagLibInitializationError, UnsupportedFormatError, } from "./src/errors.js";
|
|
39
40
|
export type { TagLibErrorCode } from "./src/errors.js";
|
|
40
41
|
export { initializeForDenoCompile, isDenoCompiled, prepareWasmForEmbedding, } from "./src/deno-compile.js";
|
|
@@ -44,7 +45,7 @@ export type { PropertyMetadata } from "./src/constants/property-types.js";
|
|
|
44
45
|
export { copyCoverArt, exportAllPictures, exportCoverArt, exportPictureByType, findCoverArtFiles, importCoverArt, importPictureWithType, loadPictureFromFile, savePictureToFile, } from "./src/file-utils/index.js";
|
|
45
46
|
export { type AudioDynamics, type AudioFileMetadata, type DuplicateGroup, exportFolderMetadata, findDuplicates, type FolderScanItem, type FolderScanOptions, type FolderScanResult, type FolderUpdateItem, type FolderUpdateResult, scanFolder, updateFolderTags, } from "./src/folder-api/index.js";
|
|
46
47
|
export { canvasToPicture, createPictureDownloadURL, createPictureGallery, dataURLToPicture, displayPicture, imageFileToPicture, pictureToDataURL, setCoverArtFromCanvas, } from "./src/web-utils/index.js";
|
|
47
|
-
export type { AudioCodec, AudioFileInput, AudioProperties, BitrateControlMode, ContainerFormat, ExtendedTag, FieldMapping, FileType, OpenOptions, Picture, PictureType, PropertyMap, Tag, TagInput, TagName, } from "./src/types.js";
|
|
48
|
+
export type { AudioCodec, AudioFileInput, AudioProperties, BitrateControlMode, ContainerFormat, ExtendedTag, FieldMapping, FileType, NamedAudioInput, OpenOptions, Picture, PictureType, PropertyMap, Tag, TagInput, TagName, } from "./src/types.js";
|
|
48
49
|
export { BITRATE_CONTROL_MODE_NAMES, BITRATE_CONTROL_MODE_VALUES, PICTURE_TYPE_NAMES, PICTURE_TYPE_VALUES, } from "./src/types.js";
|
|
49
50
|
export type { PropertyKey, PropertyValue } from "./src/constants.js";
|
|
50
51
|
export type { FormatPropertyKey, TagFormat, } from "./src/types/format-property-keys.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,YAAY,EACV,SAAS,EACT,cAAc,GACf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// index.ts
|
|
2
2
|
import { AudioFileImpl, createTagLib, TagLib } from "./src/taglib.js";
|
|
3
|
+
import { isNamedAudioInput } from "./src/types/audio-formats.js";
|
|
3
4
|
import {
|
|
4
5
|
EnvironmentError,
|
|
5
6
|
FileOperationError,
|
|
@@ -155,6 +156,7 @@ export {
|
|
|
155
156
|
isInvalidFormatError,
|
|
156
157
|
isMemoryError,
|
|
157
158
|
isMetadataError,
|
|
159
|
+
isNamedAudioInput,
|
|
158
160
|
isTagLibError,
|
|
159
161
|
isUnsupportedFormatError,
|
|
160
162
|
isValidAudioFile,
|
package/dist/simple.browser.js
CHANGED
|
@@ -11,6 +11,9 @@ var __export = (target, all) => {
|
|
|
11
11
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
12
12
|
|
|
13
13
|
// src/types/audio-formats.ts
|
|
14
|
+
function isNamedAudioInput(input) {
|
|
15
|
+
return typeof input === "object" && input !== null && "name" in input && "data" in input && !(input instanceof File) && !(input instanceof Uint8Array) && !(input instanceof ArrayBuffer);
|
|
16
|
+
}
|
|
14
17
|
var init_audio_formats = __esm({
|
|
15
18
|
"src/types/audio-formats.ts"() {
|
|
16
19
|
"use strict";
|
|
@@ -131,7 +134,8 @@ var init_base = __esm({
|
|
|
131
134
|
"M4A",
|
|
132
135
|
"FLAC",
|
|
133
136
|
"OGG",
|
|
134
|
-
"WAV"
|
|
137
|
+
"WAV",
|
|
138
|
+
"MKA"
|
|
135
139
|
];
|
|
136
140
|
TagLibError = class _TagLibError extends Error {
|
|
137
141
|
/**
|
|
@@ -1478,6 +1482,7 @@ var TagLib;
|
|
|
1478
1482
|
var init_taglib_class = __esm({
|
|
1479
1483
|
"src/taglib/taglib-class.ts"() {
|
|
1480
1484
|
"use strict";
|
|
1485
|
+
init_audio_formats();
|
|
1481
1486
|
init_errors2();
|
|
1482
1487
|
init_audio_file_impl();
|
|
1483
1488
|
init_load_audio_data();
|
|
@@ -1500,7 +1505,7 @@ var init_taglib_class = __esm({
|
|
|
1500
1505
|
}
|
|
1501
1506
|
/**
|
|
1502
1507
|
* Open an audio file for reading and writing metadata.
|
|
1503
|
-
* @param input - File path, Uint8Array, ArrayBuffer,
|
|
1508
|
+
* @param input - File path, Uint8Array, ArrayBuffer, File object, or NamedAudioInput.
|
|
1504
1509
|
* @param options - Partial-loading options for large files.
|
|
1505
1510
|
* @returns An AudioFile instance (use `using` for automatic cleanup).
|
|
1506
1511
|
* @throws {TagLibInitializationError} If the module is not properly initialized.
|
|
@@ -1512,7 +1517,8 @@ var init_taglib_class = __esm({
|
|
|
1512
1517
|
"TagLib module not properly initialized: createFileHandle not found. Make sure the module is fully loaded before calling open."
|
|
1513
1518
|
);
|
|
1514
1519
|
}
|
|
1515
|
-
const
|
|
1520
|
+
const actualInput = isNamedAudioInput(input) ? input.data : input;
|
|
1521
|
+
const sourcePath = typeof actualInput === "string" ? actualInput : void 0;
|
|
1516
1522
|
const opts = {
|
|
1517
1523
|
partial: false,
|
|
1518
1524
|
maxHeaderSize: 1024 * 1024,
|
|
@@ -1520,7 +1526,7 @@ var init_taglib_class = __esm({
|
|
|
1520
1526
|
...options
|
|
1521
1527
|
};
|
|
1522
1528
|
const { data: audioData, isPartiallyLoaded } = await loadAudioData(
|
|
1523
|
-
|
|
1529
|
+
actualInput,
|
|
1524
1530
|
opts
|
|
1525
1531
|
);
|
|
1526
1532
|
const buffer = audioData.buffer.slice(
|
|
@@ -1541,7 +1547,7 @@ var init_taglib_class = __esm({
|
|
|
1541
1547
|
this.module,
|
|
1542
1548
|
fileHandle,
|
|
1543
1549
|
sourcePath,
|
|
1544
|
-
|
|
1550
|
+
actualInput,
|
|
1545
1551
|
isPartiallyLoaded,
|
|
1546
1552
|
opts
|
|
1547
1553
|
);
|
|
@@ -1601,7 +1607,7 @@ var init_taglib_class = __esm({
|
|
|
1601
1607
|
}
|
|
1602
1608
|
/** Returns the taglib-wasm version with embedded TagLib version. */
|
|
1603
1609
|
version() {
|
|
1604
|
-
return "1.0.
|
|
1610
|
+
return "1.0.6 (TagLib 2.2.1)";
|
|
1605
1611
|
}
|
|
1606
1612
|
};
|
|
1607
1613
|
}
|
|
@@ -1667,7 +1673,10 @@ async function getTagLib() {
|
|
|
1667
1673
|
init_errors2();
|
|
1668
1674
|
init_write();
|
|
1669
1675
|
init_tag_mapping();
|
|
1670
|
-
|
|
1676
|
+
|
|
1677
|
+
// src/simple/with-audio-file.ts
|
|
1678
|
+
init_errors2();
|
|
1679
|
+
async function withAudioFile(file, fn) {
|
|
1671
1680
|
const taglib = await getTagLib();
|
|
1672
1681
|
const audioFile = await taglib.open(file);
|
|
1673
1682
|
try {
|
|
@@ -1676,22 +1685,14 @@ async function readTags(file) {
|
|
|
1676
1685
|
"File may be corrupted or in an unsupported format"
|
|
1677
1686
|
);
|
|
1678
1687
|
}
|
|
1679
|
-
|
|
1680
|
-
return mapPropertiesToExtendedTag(props);
|
|
1688
|
+
return fn(audioFile);
|
|
1681
1689
|
} finally {
|
|
1682
1690
|
audioFile.dispose();
|
|
1683
1691
|
}
|
|
1684
1692
|
}
|
|
1685
|
-
async function
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
try {
|
|
1689
|
-
if (!audioFile.isValid()) {
|
|
1690
|
-
throw new InvalidFormatError(
|
|
1691
|
-
"File may be corrupted or in an unsupported format"
|
|
1692
|
-
);
|
|
1693
|
-
}
|
|
1694
|
-
mergeTagUpdates(audioFile, tags);
|
|
1693
|
+
async function withAudioFileSave(file, fn) {
|
|
1694
|
+
return withAudioFile(file, (audioFile) => {
|
|
1695
|
+
fn(audioFile);
|
|
1695
1696
|
if (!audioFile.save()) {
|
|
1696
1697
|
throw new FileOperationError(
|
|
1697
1698
|
"save",
|
|
@@ -1699,9 +1700,20 @@ async function applyTags(file, tags) {
|
|
|
1699
1700
|
);
|
|
1700
1701
|
}
|
|
1701
1702
|
return audioFile.getFileBuffer();
|
|
1702
|
-
}
|
|
1703
|
-
|
|
1704
|
-
|
|
1703
|
+
});
|
|
1704
|
+
}
|
|
1705
|
+
|
|
1706
|
+
// src/simple/tag-operations.ts
|
|
1707
|
+
async function readTags(file) {
|
|
1708
|
+
return withAudioFile(
|
|
1709
|
+
file,
|
|
1710
|
+
(audioFile) => mapPropertiesToExtendedTag(audioFile.properties())
|
|
1711
|
+
);
|
|
1712
|
+
}
|
|
1713
|
+
async function applyTags(file, tags) {
|
|
1714
|
+
return withAudioFileSave(file, (audioFile) => {
|
|
1715
|
+
mergeTagUpdates(audioFile, tags);
|
|
1716
|
+
});
|
|
1705
1717
|
}
|
|
1706
1718
|
async function applyTagsToFile(file, tags) {
|
|
1707
1719
|
if (typeof file !== "string") {
|
|
@@ -1714,14 +1726,7 @@ async function applyTagsToFile(file, tags) {
|
|
|
1714
1726
|
await writeFileData(file, modifiedBuffer);
|
|
1715
1727
|
}
|
|
1716
1728
|
async function readProperties(file) {
|
|
1717
|
-
|
|
1718
|
-
const audioFile = await taglib.open(file);
|
|
1719
|
-
try {
|
|
1720
|
-
if (!audioFile.isValid()) {
|
|
1721
|
-
throw new InvalidFormatError(
|
|
1722
|
-
"File may be corrupted or in an unsupported format"
|
|
1723
|
-
);
|
|
1724
|
-
}
|
|
1729
|
+
return withAudioFile(file, (audioFile) => {
|
|
1725
1730
|
const props = audioFile.audioProperties();
|
|
1726
1731
|
if (!props) {
|
|
1727
1732
|
throw new MetadataError(
|
|
@@ -1731,9 +1736,7 @@ async function readProperties(file) {
|
|
|
1731
1736
|
);
|
|
1732
1737
|
}
|
|
1733
1738
|
return props;
|
|
1734
|
-
}
|
|
1735
|
-
audioFile.dispose();
|
|
1736
|
-
}
|
|
1739
|
+
});
|
|
1737
1740
|
}
|
|
1738
1741
|
async function isValidAudioFile(file) {
|
|
1739
1742
|
try {
|
|
@@ -1761,85 +1764,25 @@ async function readFormat(file) {
|
|
|
1761
1764
|
}
|
|
1762
1765
|
}
|
|
1763
1766
|
async function clearTags(file) {
|
|
1764
|
-
|
|
1765
|
-
const audioFile = await taglib.open(file);
|
|
1766
|
-
try {
|
|
1767
|
-
if (!audioFile.isValid()) {
|
|
1768
|
-
throw new InvalidFormatError(
|
|
1769
|
-
"File may be corrupted or in an unsupported format"
|
|
1770
|
-
);
|
|
1771
|
-
}
|
|
1767
|
+
return withAudioFileSave(file, (audioFile) => {
|
|
1772
1768
|
audioFile.setProperties({});
|
|
1773
1769
|
audioFile.removePictures();
|
|
1774
|
-
|
|
1775
|
-
throw new FileOperationError(
|
|
1776
|
-
"save",
|
|
1777
|
-
"Failed to save metadata changes. The file may be read-only or corrupted."
|
|
1778
|
-
);
|
|
1779
|
-
}
|
|
1780
|
-
return audioFile.getFileBuffer();
|
|
1781
|
-
} finally {
|
|
1782
|
-
audioFile.dispose();
|
|
1783
|
-
}
|
|
1770
|
+
});
|
|
1784
1771
|
}
|
|
1785
1772
|
|
|
1786
1773
|
// src/simple/picture-operations.ts
|
|
1787
|
-
init_errors2();
|
|
1788
1774
|
async function readPictures(file) {
|
|
1789
|
-
|
|
1790
|
-
const audioFile = await taglib.open(file);
|
|
1791
|
-
try {
|
|
1792
|
-
if (!audioFile.isValid()) {
|
|
1793
|
-
throw new InvalidFormatError(
|
|
1794
|
-
"File may be corrupted or in an unsupported format"
|
|
1795
|
-
);
|
|
1796
|
-
}
|
|
1797
|
-
return audioFile.getPictures();
|
|
1798
|
-
} finally {
|
|
1799
|
-
audioFile.dispose();
|
|
1800
|
-
}
|
|
1775
|
+
return withAudioFile(file, (audioFile) => audioFile.getPictures());
|
|
1801
1776
|
}
|
|
1802
1777
|
async function applyPictures(file, pictures) {
|
|
1803
|
-
|
|
1804
|
-
const audioFile = await taglib.open(file);
|
|
1805
|
-
try {
|
|
1806
|
-
if (!audioFile.isValid()) {
|
|
1807
|
-
throw new InvalidFormatError(
|
|
1808
|
-
"File may be corrupted or in an unsupported format"
|
|
1809
|
-
);
|
|
1810
|
-
}
|
|
1778
|
+
return withAudioFileSave(file, (audioFile) => {
|
|
1811
1779
|
audioFile.setPictures(pictures);
|
|
1812
|
-
|
|
1813
|
-
throw new FileOperationError(
|
|
1814
|
-
"save",
|
|
1815
|
-
"Failed to save picture changes. The file may be read-only or corrupted."
|
|
1816
|
-
);
|
|
1817
|
-
}
|
|
1818
|
-
return audioFile.getFileBuffer();
|
|
1819
|
-
} finally {
|
|
1820
|
-
audioFile.dispose();
|
|
1821
|
-
}
|
|
1780
|
+
});
|
|
1822
1781
|
}
|
|
1823
1782
|
async function addPicture(file, picture) {
|
|
1824
|
-
|
|
1825
|
-
const audioFile = await taglib.open(file);
|
|
1826
|
-
try {
|
|
1827
|
-
if (!audioFile.isValid()) {
|
|
1828
|
-
throw new InvalidFormatError(
|
|
1829
|
-
"File may be corrupted or in an unsupported format"
|
|
1830
|
-
);
|
|
1831
|
-
}
|
|
1783
|
+
return withAudioFileSave(file, (audioFile) => {
|
|
1832
1784
|
audioFile.addPicture(picture);
|
|
1833
|
-
|
|
1834
|
-
throw new FileOperationError(
|
|
1835
|
-
"save",
|
|
1836
|
-
"Failed to save picture changes. The file may be read-only or corrupted."
|
|
1837
|
-
);
|
|
1838
|
-
}
|
|
1839
|
-
return audioFile.getFileBuffer();
|
|
1840
|
-
} finally {
|
|
1841
|
-
audioFile.dispose();
|
|
1842
|
-
}
|
|
1785
|
+
});
|
|
1843
1786
|
}
|
|
1844
1787
|
async function clearPictures(file) {
|
|
1845
1788
|
return applyPictures(file, []);
|
|
@@ -1886,6 +1829,7 @@ async function readPictureMetadata(file) {
|
|
|
1886
1829
|
}
|
|
1887
1830
|
|
|
1888
1831
|
// src/simple/batch-operations.ts
|
|
1832
|
+
init_audio_formats();
|
|
1889
1833
|
init_errors2();
|
|
1890
1834
|
init_tag_mapping();
|
|
1891
1835
|
async function executeBatch(files, options, processor) {
|
|
@@ -1901,7 +1845,7 @@ async function executeBatch(files, options, processor) {
|
|
|
1901
1845
|
const chunk = files.slice(i, i + concurrency);
|
|
1902
1846
|
const chunkPromises = chunk.map(async (file, idx) => {
|
|
1903
1847
|
const index = i + idx;
|
|
1904
|
-
const fileName = typeof file === "string" ? file : `
|
|
1848
|
+
const fileName = typeof file === "string" ? file : file instanceof File ? file.name : isNamedAudioInput(file) ? file.name : `buffer-${index}`;
|
|
1905
1849
|
try {
|
|
1906
1850
|
const audioFile = await taglib.open(file);
|
|
1907
1851
|
try {
|
|
@@ -1973,6 +1917,8 @@ async function readMetadata(file) {
|
|
|
1973
1917
|
name = file;
|
|
1974
1918
|
} else if (file instanceof File) {
|
|
1975
1919
|
name = file.name;
|
|
1920
|
+
} else if (isNamedAudioInput(file)) {
|
|
1921
|
+
name = file.name;
|
|
1976
1922
|
} else {
|
|
1977
1923
|
name = `buffer (${file.byteLength} bytes)`;
|
|
1978
1924
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* List of audio formats supported by TagLib-Wasm
|
|
3
3
|
*/
|
|
4
|
-
export declare const SUPPORTED_FORMATS: readonly ["MP3", "MP4", "M4A", "FLAC", "OGG", "WAV"];
|
|
4
|
+
export declare const SUPPORTED_FORMATS: readonly ["MP3", "MP4", "M4A", "FLAC", "OGG", "WAV", "MKA"];
|
|
5
5
|
/**
|
|
6
6
|
* Error codes for programmatic error handling
|
|
7
7
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/errors/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/errors/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,iBAAiB,6DAQpB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,gBAAgB,GAChB,gBAAgB,GAChB,oBAAoB,GACpB,gBAAgB,GAChB,UAAU,GACV,QAAQ,GACR,aAAa,GACb,aAAa,GACb,aAAa,GACb,WAAW,CAAC;AAEhB;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;aAQlB,IAAI,EAAE,eAAe;aAErB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IATnD;;;;;OAKG;gBAEe,IAAI,EAAE,eAAe,EACrC,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAMpD"}
|
package/dist/src/errors/base.js
CHANGED
|
@@ -18,7 +18,8 @@ import type { DuplicateGroup, FolderScanOptions, FolderUpdateResult } from "./ty
|
|
|
18
18
|
* ];
|
|
19
19
|
*
|
|
20
20
|
* const result = await updateFolderTags(updates);
|
|
21
|
-
*
|
|
21
|
+
* const updated = result.items.filter((i) => i.status === "ok").length;
|
|
22
|
+
* console.log(`Updated ${updated} files`);
|
|
22
23
|
* ```
|
|
23
24
|
*/
|
|
24
25
|
export declare function updateFolderTags(updates: Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder-operations.d.ts","sourceRoot":"","sources":["../../../src/folder-api/folder-operations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAO,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAKxD,OAAO,KAAK,EAEV,cAAc,EACd,iBAAiB,EAEjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAGpB
|
|
1
|
+
{"version":3,"file":"folder-operations.d.ts","sourceRoot":"","sources":["../../../src/folder-api/folder-operations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAO,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAKxD,OAAO,KAAK,EAEV,cAAc,EACd,iBAAiB,EAEjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAGpB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC,EACzD,OAAO,GAAE;IACP,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;CACjB,GACL,OAAO,CAAC,kBAAkB,CAAC,CAgC7B;AAiBD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,cAAc,EAAE,CAAC,CAuB3B;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/folder-api/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAE5D,eAAO,MAAM,SAAS;;;;;;;;EAUrB,CAAC;AAEF,eAAO,MAAM,wBAAwB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/folder-api/types.ts"],"names":[],"mappings":"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"}
|