taglib-wasm 0.3.13 → 0.3.15
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 +22 -35
- package/dist/index.d.ts +10 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +117 -134
- package/dist/index.js.map +1 -0
- package/dist/src/constants.js +211 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/errors.js +180 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/file-utils.d.ts +2 -2
- package/dist/src/file-utils.d.ts.map +1 -1
- package/dist/src/file-utils.js +394 -0
- package/dist/src/file-utils.js.map +1 -0
- package/dist/src/mod.d.ts +4 -4
- package/dist/src/mod.d.ts.map +1 -1
- package/dist/src/mod.js +7 -0
- package/dist/src/mod.js.map +1 -0
- package/dist/src/simple.d.ts +4 -4
- package/dist/src/simple.d.ts.map +1 -1
- package/dist/src/{simple.ts → simple.js} +193 -311
- package/dist/src/simple.js.map +1 -0
- package/dist/src/taglib.d.ts +3 -3
- package/dist/src/taglib.d.ts.map +1 -1
- package/dist/src/taglib.js +516 -0
- package/dist/src/taglib.js.map +1 -0
- package/dist/src/types.d.ts +2 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +239 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/file.js +65 -0
- package/dist/src/utils/file.js.map +1 -0
- package/dist/src/utils/write.js +49 -0
- package/dist/src/utils/write.js.map +1 -0
- package/dist/src/wasm-workers.d.ts +1 -1
- package/dist/src/wasm-workers.d.ts.map +1 -1
- package/dist/src/wasm-workers.js +148 -0
- package/dist/src/wasm-workers.js.map +1 -0
- package/dist/src/wasm.js +6 -0
- package/dist/src/wasm.js.map +1 -0
- package/dist/src/web-utils.d.ts +2 -2
- package/dist/src/web-utils.d.ts.map +1 -1
- package/{src/web-utils.ts → dist/src/web-utils.js} +102 -184
- package/dist/src/web-utils.js.map +1 -0
- package/dist/src/workers.d.ts +2 -2
- package/dist/src/workers.d.ts.map +1 -1
- package/dist/src/workers.js +389 -0
- package/dist/src/workers.js.map +1 -0
- package/dist/taglib-wrapper.js +8 -2528
- package/package.json +7 -10
- package/dist/index.ts +0 -221
- package/dist/src/constants.ts +0 -227
- package/dist/src/errors.ts +0 -254
- package/dist/src/file-utils.ts +0 -483
- package/dist/src/file.js +0 -52
- package/dist/src/global.d.ts +0 -12
- package/dist/src/mod.ts +0 -19
- package/dist/src/taglib.ts +0 -961
- package/dist/src/types.ts +0 -538
- package/dist/src/utils/file.ts +0 -86
- package/dist/src/utils/write.ts +0 -66
- package/dist/src/wasm-workers.ts +0 -176
- package/dist/src/wasm.ts +0 -133
- package/dist/src/web-utils.ts +0 -347
- package/dist/src/workers.ts +0 -461
- package/dist/src/write.js +0 -33
- package/index.ts +0 -221
- package/lib/taglib/COPYING.LGPL +0 -502
- package/lib/taglib/COPYING.MPL +0 -470
- package/lib/taglib/README.md +0 -24
- package/src/constants.ts +0 -227
- package/src/errors.ts +0 -254
- package/src/file-utils.ts +0 -483
- package/src/global.d.ts +0 -12
- package/src/mod.ts +0 -19
- package/src/simple.ts +0 -667
- package/src/taglib.ts +0 -961
- package/src/types.ts +0 -538
- package/src/utils/file.ts +0 -86
- package/src/utils/write.ts +0 -66
- package/src/wasm-workers.ts +0 -176
- package/src/wasm.ts +0 -133
- package/src/workers.ts +0 -461
package/dist/src/taglib.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TagLibModule, WasmModule } from "./wasm
|
|
2
|
-
import type { AudioProperties, FileType, Picture, PropertyMap, Tag as BasicTag } from "./types
|
|
1
|
+
import type { TagLibModule, WasmModule } from "./wasm";
|
|
2
|
+
import type { AudioProperties, FileType, Picture, PropertyMap, Tag as BasicTag } from "./types";
|
|
3
3
|
/**
|
|
4
4
|
* Extended Tag interface with read/write capabilities for audio metadata.
|
|
5
5
|
* Extends the basic Tag interface with setter methods for modifying metadata.
|
|
@@ -498,5 +498,5 @@ export declare function createTagLib(module: WasmModule): Promise<TagLib>;
|
|
|
498
498
|
/**
|
|
499
499
|
* Re-export error types for convenient error handling
|
|
500
500
|
*/
|
|
501
|
-
export { EnvironmentError, FileOperationError, InvalidFormatError, isEnvironmentError, isFileOperationError, isInvalidFormatError, isMemoryError, isMetadataError, isTagLibError, isUnsupportedFormatError, MemoryError, MetadataError, SUPPORTED_FORMATS, TagLibError, TagLibErrorCode, TagLibInitializationError, UnsupportedFormatError, } from "./errors
|
|
501
|
+
export { EnvironmentError, FileOperationError, InvalidFormatError, isEnvironmentError, isFileOperationError, isInvalidFormatError, isMemoryError, isMetadataError, isTagLibError, isUnsupportedFormatError, MemoryError, MetadataError, SUPPORTED_FORMATS, TagLibError, TagLibErrorCode, TagLibInitializationError, UnsupportedFormatError, } from "./errors";
|
|
502
502
|
//# sourceMappingURL=taglib.d.ts.map
|
package/dist/src/taglib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taglib.d.ts","sourceRoot":"","sources":["../../src/taglib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"taglib.d.ts","sourceRoot":"","sources":["../../src/taglib.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
import { InvalidFormatError, MetadataError, TagLibInitializationError, UnsupportedFormatError, } from "./errors.js";
|
|
2
|
+
import { readFileData } from "./utils/file.js";
|
|
3
|
+
import { writeFileData } from "./utils/write.js";
|
|
4
|
+
/**
|
|
5
|
+
* Implementation of AudioFile interface using Embind API.
|
|
6
|
+
* Wraps the native TagLib C++ FileHandle object.
|
|
7
|
+
*
|
|
8
|
+
* @internal This class is not meant to be instantiated directly.
|
|
9
|
+
* Use TagLib.open() to create instances.
|
|
10
|
+
*/
|
|
11
|
+
export class AudioFileImpl {
|
|
12
|
+
constructor(module, fileHandle, sourcePath) {
|
|
13
|
+
this.module = module;
|
|
14
|
+
this.cachedTag = null;
|
|
15
|
+
this.cachedAudioProperties = null;
|
|
16
|
+
this.fileHandle = fileHandle;
|
|
17
|
+
this.sourcePath = sourcePath;
|
|
18
|
+
}
|
|
19
|
+
/** @inheritdoc */
|
|
20
|
+
getFormat() {
|
|
21
|
+
return this.fileHandle.getFormat();
|
|
22
|
+
}
|
|
23
|
+
/** @inheritdoc */
|
|
24
|
+
tag() {
|
|
25
|
+
const tagWrapper = this.fileHandle.getTag();
|
|
26
|
+
if (!tagWrapper) {
|
|
27
|
+
throw new MetadataError("read", "Tag may be corrupted or format not fully supported");
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
title: tagWrapper.title(),
|
|
31
|
+
artist: tagWrapper.artist(),
|
|
32
|
+
album: tagWrapper.album(),
|
|
33
|
+
comment: tagWrapper.comment(),
|
|
34
|
+
genre: tagWrapper.genre(),
|
|
35
|
+
year: tagWrapper.year(),
|
|
36
|
+
track: tagWrapper.track(),
|
|
37
|
+
setTitle: (value) => tagWrapper.setTitle(value),
|
|
38
|
+
setArtist: (value) => tagWrapper.setArtist(value),
|
|
39
|
+
setAlbum: (value) => tagWrapper.setAlbum(value),
|
|
40
|
+
setComment: (value) => tagWrapper.setComment(value),
|
|
41
|
+
setGenre: (value) => tagWrapper.setGenre(value),
|
|
42
|
+
setYear: (value) => tagWrapper.setYear(value),
|
|
43
|
+
setTrack: (value) => tagWrapper.setTrack(value),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** @inheritdoc */
|
|
47
|
+
audioProperties() {
|
|
48
|
+
if (!this.cachedAudioProperties) {
|
|
49
|
+
const propsWrapper = this.fileHandle.getAudioProperties();
|
|
50
|
+
if (!propsWrapper) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
this.cachedAudioProperties = {
|
|
54
|
+
length: propsWrapper.lengthInSeconds(),
|
|
55
|
+
bitrate: propsWrapper.bitrate(),
|
|
56
|
+
sampleRate: propsWrapper.sampleRate(),
|
|
57
|
+
channels: propsWrapper.channels(),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return this.cachedAudioProperties;
|
|
61
|
+
}
|
|
62
|
+
/** @inheritdoc */
|
|
63
|
+
properties() {
|
|
64
|
+
const jsObj = this.fileHandle.getProperties();
|
|
65
|
+
const result = {};
|
|
66
|
+
// Convert from Emscripten val to plain object
|
|
67
|
+
const keys = Object.keys(jsObj);
|
|
68
|
+
for (const key of keys) {
|
|
69
|
+
result[key] = jsObj[key];
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
/** @inheritdoc */
|
|
74
|
+
setProperties(properties) {
|
|
75
|
+
this.fileHandle.setProperties(properties);
|
|
76
|
+
}
|
|
77
|
+
/** @inheritdoc */
|
|
78
|
+
getProperty(key) {
|
|
79
|
+
const value = this.fileHandle.getProperty(key);
|
|
80
|
+
return value === "" ? undefined : value;
|
|
81
|
+
}
|
|
82
|
+
/** @inheritdoc */
|
|
83
|
+
setProperty(key, value) {
|
|
84
|
+
this.fileHandle.setProperty(key, value);
|
|
85
|
+
}
|
|
86
|
+
/** @inheritdoc */
|
|
87
|
+
isMP4() {
|
|
88
|
+
return this.fileHandle.isMP4();
|
|
89
|
+
}
|
|
90
|
+
/** @inheritdoc */
|
|
91
|
+
getMP4Item(key) {
|
|
92
|
+
if (!this.isMP4()) {
|
|
93
|
+
const format = this.getFormat();
|
|
94
|
+
throw new UnsupportedFormatError(format, ["MP4", "M4A"]);
|
|
95
|
+
}
|
|
96
|
+
const value = this.fileHandle.getMP4Item(key);
|
|
97
|
+
return value === "" ? undefined : value;
|
|
98
|
+
}
|
|
99
|
+
/** @inheritdoc */
|
|
100
|
+
setMP4Item(key, value) {
|
|
101
|
+
if (!this.isMP4()) {
|
|
102
|
+
const format = this.getFormat();
|
|
103
|
+
throw new UnsupportedFormatError(format, ["MP4", "M4A"]);
|
|
104
|
+
}
|
|
105
|
+
this.fileHandle.setMP4Item(key, value);
|
|
106
|
+
}
|
|
107
|
+
/** @inheritdoc */
|
|
108
|
+
removeMP4Item(key) {
|
|
109
|
+
if (!this.isMP4()) {
|
|
110
|
+
const format = this.getFormat();
|
|
111
|
+
throw new UnsupportedFormatError(format, ["MP4", "M4A"]);
|
|
112
|
+
}
|
|
113
|
+
this.fileHandle.removeMP4Item(key);
|
|
114
|
+
}
|
|
115
|
+
/** @inheritdoc */
|
|
116
|
+
save() {
|
|
117
|
+
// Clear caches since values may have changed
|
|
118
|
+
this.cachedTag = null;
|
|
119
|
+
this.cachedAudioProperties = null;
|
|
120
|
+
return this.fileHandle.save();
|
|
121
|
+
}
|
|
122
|
+
/** @inheritdoc */
|
|
123
|
+
getFileBuffer() {
|
|
124
|
+
const buffer = this.fileHandle.getBuffer();
|
|
125
|
+
if (!buffer) {
|
|
126
|
+
return new Uint8Array(0);
|
|
127
|
+
}
|
|
128
|
+
// The buffer is already a Uint8Array from the C++ side
|
|
129
|
+
return buffer;
|
|
130
|
+
}
|
|
131
|
+
/** @inheritdoc */
|
|
132
|
+
async saveToFile(path) {
|
|
133
|
+
// Determine the target path
|
|
134
|
+
const targetPath = path || this.sourcePath;
|
|
135
|
+
if (!targetPath) {
|
|
136
|
+
throw new Error("No file path available. Either provide a path or open the file from a path.");
|
|
137
|
+
}
|
|
138
|
+
// First save to in-memory buffer
|
|
139
|
+
if (!this.save()) {
|
|
140
|
+
throw new Error("Failed to save changes to in-memory buffer");
|
|
141
|
+
}
|
|
142
|
+
// Get the updated buffer and write to file
|
|
143
|
+
const buffer = this.getFileBuffer();
|
|
144
|
+
await writeFileData(targetPath, buffer);
|
|
145
|
+
}
|
|
146
|
+
/** @inheritdoc */
|
|
147
|
+
isValid() {
|
|
148
|
+
return this.fileHandle.isValid();
|
|
149
|
+
}
|
|
150
|
+
/** @inheritdoc */
|
|
151
|
+
getPictures() {
|
|
152
|
+
const picturesArray = this.fileHandle.getPictures();
|
|
153
|
+
const pictures = [];
|
|
154
|
+
// Convert from Emscripten array to TypeScript array
|
|
155
|
+
for (let i = 0; i < picturesArray.length; i++) {
|
|
156
|
+
const pic = picturesArray[i];
|
|
157
|
+
pictures.push({
|
|
158
|
+
mimeType: pic.mimeType,
|
|
159
|
+
data: pic.data,
|
|
160
|
+
type: pic.type,
|
|
161
|
+
description: pic.description,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return pictures;
|
|
165
|
+
}
|
|
166
|
+
/** @inheritdoc */
|
|
167
|
+
setPictures(pictures) {
|
|
168
|
+
// Convert TypeScript array to format expected by C++
|
|
169
|
+
const picturesArray = pictures.map((pic) => ({
|
|
170
|
+
mimeType: pic.mimeType,
|
|
171
|
+
data: pic.data,
|
|
172
|
+
type: pic.type,
|
|
173
|
+
description: pic.description || "",
|
|
174
|
+
}));
|
|
175
|
+
this.fileHandle.setPictures(picturesArray);
|
|
176
|
+
}
|
|
177
|
+
/** @inheritdoc */
|
|
178
|
+
addPicture(picture) {
|
|
179
|
+
const pic = {
|
|
180
|
+
mimeType: picture.mimeType,
|
|
181
|
+
data: picture.data,
|
|
182
|
+
type: picture.type,
|
|
183
|
+
description: picture.description || "",
|
|
184
|
+
};
|
|
185
|
+
this.fileHandle.addPicture(pic);
|
|
186
|
+
}
|
|
187
|
+
/** @inheritdoc */
|
|
188
|
+
removePictures() {
|
|
189
|
+
this.fileHandle.removePictures();
|
|
190
|
+
}
|
|
191
|
+
/** @inheritdoc */
|
|
192
|
+
dispose() {
|
|
193
|
+
if (this.fileHandle) {
|
|
194
|
+
// Explicitly destroy the C++ object to free memory immediately
|
|
195
|
+
if (typeof this.fileHandle.destroy === "function") {
|
|
196
|
+
this.fileHandle.destroy();
|
|
197
|
+
}
|
|
198
|
+
// Clear all references
|
|
199
|
+
this.fileHandle = null;
|
|
200
|
+
this.cachedTag = null;
|
|
201
|
+
this.cachedAudioProperties = null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Extended metadata implementations
|
|
205
|
+
/** @inheritdoc */
|
|
206
|
+
getMusicBrainzTrackId() {
|
|
207
|
+
const value = this.getProperty("MUSICBRAINZ_TRACKID");
|
|
208
|
+
return value || undefined;
|
|
209
|
+
}
|
|
210
|
+
/** @inheritdoc */
|
|
211
|
+
setMusicBrainzTrackId(id) {
|
|
212
|
+
this.setProperty("MUSICBRAINZ_TRACKID", id);
|
|
213
|
+
}
|
|
214
|
+
/** @inheritdoc */
|
|
215
|
+
getMusicBrainzReleaseId() {
|
|
216
|
+
const value = this.getProperty("MUSICBRAINZ_ALBUMID");
|
|
217
|
+
return value || undefined;
|
|
218
|
+
}
|
|
219
|
+
/** @inheritdoc */
|
|
220
|
+
setMusicBrainzReleaseId(id) {
|
|
221
|
+
this.setProperty("MUSICBRAINZ_ALBUMID", id);
|
|
222
|
+
}
|
|
223
|
+
/** @inheritdoc */
|
|
224
|
+
getMusicBrainzArtistId() {
|
|
225
|
+
const value = this.getProperty("MUSICBRAINZ_ARTISTID");
|
|
226
|
+
return value || undefined;
|
|
227
|
+
}
|
|
228
|
+
/** @inheritdoc */
|
|
229
|
+
setMusicBrainzArtistId(id) {
|
|
230
|
+
this.setProperty("MUSICBRAINZ_ARTISTID", id);
|
|
231
|
+
}
|
|
232
|
+
/** @inheritdoc */
|
|
233
|
+
getAcoustIdFingerprint() {
|
|
234
|
+
const value = this.getProperty("ACOUSTID_FINGERPRINT");
|
|
235
|
+
return value || undefined;
|
|
236
|
+
}
|
|
237
|
+
/** @inheritdoc */
|
|
238
|
+
setAcoustIdFingerprint(fingerprint) {
|
|
239
|
+
this.setProperty("ACOUSTID_FINGERPRINT", fingerprint);
|
|
240
|
+
}
|
|
241
|
+
/** @inheritdoc */
|
|
242
|
+
getAcoustIdId() {
|
|
243
|
+
const value = this.getProperty("ACOUSTID_ID");
|
|
244
|
+
return value || undefined;
|
|
245
|
+
}
|
|
246
|
+
/** @inheritdoc */
|
|
247
|
+
setAcoustIdId(id) {
|
|
248
|
+
this.setProperty("ACOUSTID_ID", id);
|
|
249
|
+
}
|
|
250
|
+
/** @inheritdoc */
|
|
251
|
+
getReplayGainTrackGain() {
|
|
252
|
+
const value = this.getProperty("REPLAYGAIN_TRACK_GAIN");
|
|
253
|
+
return value || undefined;
|
|
254
|
+
}
|
|
255
|
+
/** @inheritdoc */
|
|
256
|
+
setReplayGainTrackGain(gain) {
|
|
257
|
+
this.setProperty("REPLAYGAIN_TRACK_GAIN", gain);
|
|
258
|
+
}
|
|
259
|
+
/** @inheritdoc */
|
|
260
|
+
getReplayGainTrackPeak() {
|
|
261
|
+
const value = this.getProperty("REPLAYGAIN_TRACK_PEAK");
|
|
262
|
+
return value || undefined;
|
|
263
|
+
}
|
|
264
|
+
/** @inheritdoc */
|
|
265
|
+
setReplayGainTrackPeak(peak) {
|
|
266
|
+
this.setProperty("REPLAYGAIN_TRACK_PEAK", peak);
|
|
267
|
+
}
|
|
268
|
+
/** @inheritdoc */
|
|
269
|
+
getReplayGainAlbumGain() {
|
|
270
|
+
const value = this.getProperty("REPLAYGAIN_ALBUM_GAIN");
|
|
271
|
+
return value || undefined;
|
|
272
|
+
}
|
|
273
|
+
/** @inheritdoc */
|
|
274
|
+
setReplayGainAlbumGain(gain) {
|
|
275
|
+
this.setProperty("REPLAYGAIN_ALBUM_GAIN", gain);
|
|
276
|
+
}
|
|
277
|
+
/** @inheritdoc */
|
|
278
|
+
getReplayGainAlbumPeak() {
|
|
279
|
+
const value = this.getProperty("REPLAYGAIN_ALBUM_PEAK");
|
|
280
|
+
return value || undefined;
|
|
281
|
+
}
|
|
282
|
+
/** @inheritdoc */
|
|
283
|
+
setReplayGainAlbumPeak(peak) {
|
|
284
|
+
this.setProperty("REPLAYGAIN_ALBUM_PEAK", peak);
|
|
285
|
+
}
|
|
286
|
+
/** @inheritdoc */
|
|
287
|
+
getAppleSoundCheck() {
|
|
288
|
+
// Apple Sound Check is stored differently in MP4 files
|
|
289
|
+
if (this.isMP4()) {
|
|
290
|
+
return this.getMP4Item("iTunNORM");
|
|
291
|
+
}
|
|
292
|
+
// For other formats, it might be in properties
|
|
293
|
+
const value = this.getProperty("ITUNESOUNDCHECK");
|
|
294
|
+
return value || undefined;
|
|
295
|
+
}
|
|
296
|
+
/** @inheritdoc */
|
|
297
|
+
setAppleSoundCheck(data) {
|
|
298
|
+
// Apple Sound Check is stored differently in MP4 files
|
|
299
|
+
if (this.isMP4()) {
|
|
300
|
+
this.setMP4Item("iTunNORM", data);
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
// For other formats, store in properties
|
|
304
|
+
this.setProperty("ITUNESOUNDCHECK", data);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Main TagLib interface for audio metadata operations.
|
|
310
|
+
* Provides methods to open audio files and access TagLib functionality.
|
|
311
|
+
*
|
|
312
|
+
* @example
|
|
313
|
+
* ```typescript
|
|
314
|
+
* // Option 1: Auto-initialize
|
|
315
|
+
* const taglib = await TagLib.initialize();
|
|
316
|
+
*
|
|
317
|
+
* // Option 2: Manual initialization
|
|
318
|
+
* import { loadTagLibModule } from "taglib-wasm";
|
|
319
|
+
* const module = await loadTagLibModule();
|
|
320
|
+
* const taglib = new TagLib(module);
|
|
321
|
+
*
|
|
322
|
+
* // Open and process a file
|
|
323
|
+
* const file = await taglib.open("song.mp3");
|
|
324
|
+
* const tag = file.tag();
|
|
325
|
+
* console.log(`Title: ${tag.title}`);
|
|
326
|
+
* file.dispose();
|
|
327
|
+
* ```
|
|
328
|
+
*/
|
|
329
|
+
export class TagLib {
|
|
330
|
+
constructor(module) {
|
|
331
|
+
this.module = module;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Initialize TagLib with default configuration.
|
|
335
|
+
* This is the recommended way to create a TagLib instance.
|
|
336
|
+
*
|
|
337
|
+
* @returns Promise resolving to initialized TagLib instance
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* ```typescript
|
|
341
|
+
* const taglib = await TagLib.initialize();
|
|
342
|
+
* const file = await taglib.open("song.mp3");
|
|
343
|
+
* ```
|
|
344
|
+
*/
|
|
345
|
+
static async initialize() {
|
|
346
|
+
// Use the loadTagLibModule function
|
|
347
|
+
const { loadTagLibModule } = await import("../index.js");
|
|
348
|
+
const module = await loadTagLibModule();
|
|
349
|
+
return new TagLib(module);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Open an audio file from various sources.
|
|
353
|
+
* Automatically detects the file format based on content.
|
|
354
|
+
*
|
|
355
|
+
* @param input - File path (string), ArrayBuffer, Uint8Array, or File object
|
|
356
|
+
* @returns Promise resolving to AudioFile instance
|
|
357
|
+
* @throws {Error} If the file format is invalid or unsupported
|
|
358
|
+
* @throws {Error} If the module is not properly initialized
|
|
359
|
+
*
|
|
360
|
+
* @example
|
|
361
|
+
* ```typescript
|
|
362
|
+
* // From file path
|
|
363
|
+
* const file = await taglib.open("song.mp3");
|
|
364
|
+
*
|
|
365
|
+
* // From ArrayBuffer
|
|
366
|
+
* const file = await taglib.open(arrayBuffer);
|
|
367
|
+
*
|
|
368
|
+
* // From Uint8Array
|
|
369
|
+
* const file = await taglib.open(uint8Array);
|
|
370
|
+
*
|
|
371
|
+
* // From File object (browser)
|
|
372
|
+
* const file = await taglib.open(fileObject);
|
|
373
|
+
*
|
|
374
|
+
* // Remember to dispose when done
|
|
375
|
+
* file.dispose();
|
|
376
|
+
* ```
|
|
377
|
+
*/
|
|
378
|
+
async open(input) {
|
|
379
|
+
// Check if Embind is available
|
|
380
|
+
if (!this.module.createFileHandle) {
|
|
381
|
+
throw new TagLibInitializationError("TagLib module not properly initialized: createFileHandle not found. " +
|
|
382
|
+
"Make sure the module is fully loaded before calling open.");
|
|
383
|
+
}
|
|
384
|
+
// Track the source path if input is a string
|
|
385
|
+
const sourcePath = typeof input === "string" ? input : undefined;
|
|
386
|
+
// Read file data if input is a path or File object
|
|
387
|
+
const audioData = await readFileData(input);
|
|
388
|
+
// Ensure we pass the correct slice of the buffer
|
|
389
|
+
const buffer = audioData.buffer.slice(audioData.byteOffset, audioData.byteOffset + audioData.byteLength);
|
|
390
|
+
// Convert ArrayBuffer to Uint8Array for Embind
|
|
391
|
+
const uint8Array = new Uint8Array(buffer);
|
|
392
|
+
// Create a new FileHandle
|
|
393
|
+
const fileHandle = this.module.createFileHandle();
|
|
394
|
+
// Load the buffer - Embind should handle Uint8Array conversion
|
|
395
|
+
const success = fileHandle.loadFromBuffer(uint8Array);
|
|
396
|
+
if (!success) {
|
|
397
|
+
throw new InvalidFormatError("Failed to load audio file. File may be corrupted or in an unsupported format", buffer.byteLength);
|
|
398
|
+
}
|
|
399
|
+
return new AudioFileImpl(this.module, fileHandle, sourcePath);
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Update tags in a file and save changes to disk in one operation.
|
|
403
|
+
* This is a convenience method that opens, modifies, saves, and closes the file.
|
|
404
|
+
*
|
|
405
|
+
* @param path - File path to update
|
|
406
|
+
* @param tags - Object containing tags to update
|
|
407
|
+
* @throws {Error} If file operations fail
|
|
408
|
+
*
|
|
409
|
+
* @example
|
|
410
|
+
* ```typescript
|
|
411
|
+
* await taglib.updateFile("song.mp3", {
|
|
412
|
+
* title: "New Title",
|
|
413
|
+
* artist: "New Artist"
|
|
414
|
+
* });
|
|
415
|
+
* ```
|
|
416
|
+
*/
|
|
417
|
+
async updateFile(path, tags) {
|
|
418
|
+
const file = await this.open(path);
|
|
419
|
+
try {
|
|
420
|
+
const tag = file.tag();
|
|
421
|
+
// Apply tag updates
|
|
422
|
+
if (tags.title !== undefined)
|
|
423
|
+
tag.setTitle(tags.title);
|
|
424
|
+
if (tags.artist !== undefined)
|
|
425
|
+
tag.setArtist(tags.artist);
|
|
426
|
+
if (tags.album !== undefined)
|
|
427
|
+
tag.setAlbum(tags.album);
|
|
428
|
+
if (tags.year !== undefined)
|
|
429
|
+
tag.setYear(tags.year);
|
|
430
|
+
if (tags.track !== undefined)
|
|
431
|
+
tag.setTrack(tags.track);
|
|
432
|
+
if (tags.genre !== undefined)
|
|
433
|
+
tag.setGenre(tags.genre);
|
|
434
|
+
if (tags.comment !== undefined)
|
|
435
|
+
tag.setComment(tags.comment);
|
|
436
|
+
// Save to file
|
|
437
|
+
await file.saveToFile();
|
|
438
|
+
}
|
|
439
|
+
finally {
|
|
440
|
+
file.dispose();
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Copy a file with new tags.
|
|
445
|
+
* Opens the source file, applies new tags, and saves to a new location.
|
|
446
|
+
*
|
|
447
|
+
* @param sourcePath - Source file path
|
|
448
|
+
* @param destPath - Destination file path
|
|
449
|
+
* @param tags - Object containing tags to apply
|
|
450
|
+
* @throws {Error} If file operations fail
|
|
451
|
+
*
|
|
452
|
+
* @example
|
|
453
|
+
* ```typescript
|
|
454
|
+
* await taglib.copyWithTags("original.mp3", "copy.mp3", {
|
|
455
|
+
* title: "Copy of Song",
|
|
456
|
+
* comment: "This is a copy"
|
|
457
|
+
* });
|
|
458
|
+
* ```
|
|
459
|
+
*/
|
|
460
|
+
async copyWithTags(sourcePath, destPath, tags) {
|
|
461
|
+
const file = await this.open(sourcePath);
|
|
462
|
+
try {
|
|
463
|
+
const tag = file.tag();
|
|
464
|
+
// Apply tag updates
|
|
465
|
+
if (tags.title !== undefined)
|
|
466
|
+
tag.setTitle(tags.title);
|
|
467
|
+
if (tags.artist !== undefined)
|
|
468
|
+
tag.setArtist(tags.artist);
|
|
469
|
+
if (tags.album !== undefined)
|
|
470
|
+
tag.setAlbum(tags.album);
|
|
471
|
+
if (tags.year !== undefined)
|
|
472
|
+
tag.setYear(tags.year);
|
|
473
|
+
if (tags.track !== undefined)
|
|
474
|
+
tag.setTrack(tags.track);
|
|
475
|
+
if (tags.genre !== undefined)
|
|
476
|
+
tag.setGenre(tags.genre);
|
|
477
|
+
if (tags.comment !== undefined)
|
|
478
|
+
tag.setComment(tags.comment);
|
|
479
|
+
// Save to new location
|
|
480
|
+
await file.saveToFile(destPath);
|
|
481
|
+
}
|
|
482
|
+
finally {
|
|
483
|
+
file.dispose();
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Get the TagLib version.
|
|
488
|
+
* @returns Version string (e.g., "2.1.0")
|
|
489
|
+
*/
|
|
490
|
+
version() {
|
|
491
|
+
return "2.1.0"; // TagLib version we're using
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Create a TagLib instance from a pre-loaded Wasm module.
|
|
496
|
+
* For advanced users who need custom module configuration.
|
|
497
|
+
*
|
|
498
|
+
* @param module - Pre-loaded Wasm module from loadTagLibModule()
|
|
499
|
+
* @returns Promise resolving to TagLib instance
|
|
500
|
+
*
|
|
501
|
+
* @example
|
|
502
|
+
* ```typescript
|
|
503
|
+
* import { loadTagLibModule, createTagLib } from "taglib-wasm";
|
|
504
|
+
*
|
|
505
|
+
* const module = await loadTagLibModule();
|
|
506
|
+
* const taglib = await createTagLib(module);
|
|
507
|
+
* ```
|
|
508
|
+
*/
|
|
509
|
+
export async function createTagLib(module) {
|
|
510
|
+
return new TagLib(module);
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Re-export error types for convenient error handling
|
|
514
|
+
*/
|
|
515
|
+
export { EnvironmentError, FileOperationError, InvalidFormatError, isEnvironmentError, isFileOperationError, isInvalidFormatError, isMemoryError, isMetadataError, isTagLibError, isUnsupportedFormatError, MemoryError, MetadataError, SUPPORTED_FORMATS, TagLibError, TagLibErrorCode, TagLibInitializationError, UnsupportedFormatError, } from "./errors.js";
|
|
516
|
+
//# sourceMappingURL=taglib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taglib.js","sourceRoot":"","sources":["../../src/taglib.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module taglib-wasm/types
|
|
9
9
|
*/
|
|
10
|
-
export type { TagLibModule } from "./wasm
|
|
10
|
+
export type { TagLibModule } from "./wasm";
|
|
11
11
|
/**
|
|
12
12
|
* Supported file types detected by TagLib.
|
|
13
13
|
* "UNKNOWN" indicates the format could not be determined.
|
|
@@ -207,7 +207,7 @@ export interface PropertyMap {
|
|
|
207
207
|
/**
|
|
208
208
|
* Re-export TagName type from constants
|
|
209
209
|
*/
|
|
210
|
-
export type { TagName } from "./constants
|
|
210
|
+
export type { TagName } from "./constants";
|
|
211
211
|
/**
|
|
212
212
|
* Picture/artwork data embedded in audio files.
|
|
213
213
|
* Represents album art, artist photos, or other images.
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|