taglib-wasm 0.3.27 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -102,6 +102,10 @@ const taglib = await initializeForDenoCompile();
102
102
  // deno compile --allow-read --include taglib.wasm myapp.ts
103
103
  ```
104
104
 
105
+ See the
106
+ [complete Deno compile guide](https://charleswiltgen.github.io/taglib-wasm/guide/deno-compile.html)
107
+ for more options including CDN loading.
108
+
105
109
  For manual control:
106
110
 
107
111
  ```typescript
@@ -139,8 +143,8 @@ await updateTags("song.mp3", {
139
143
 
140
144
  ### Full API
141
145
 
142
- The Full API might be a better choice for apps and utilities focused on
143
- advanced metadata management.
146
+ The Full API might be a better choice for apps and utilities focused on advanced
147
+ metadata management.
144
148
 
145
149
  ```typescript
146
150
  import { TagLib } from "taglib-wasm";
@@ -216,17 +220,17 @@ Supported codec detection:
216
220
 
217
221
  ### Guides
218
222
 
219
- - [API Reference](https://charleswiltgen.github.io/taglib-wasm/API.html)
223
+ - [API Reference](https://charleswiltgen.github.io/taglib-wasm/api/)
220
224
  - [Platform Examples](https://charleswiltgen.github.io/taglib-wasm/guide/platform-examples.html)
221
225
  - [Working with Cover Art](https://charleswiltgen.github.io/taglib-wasm/guide/cover-art.html)
222
226
  - [Cloudflare Workers Setup](https://charleswiltgen.github.io/taglib-wasm/guide/workers-setup.html)
223
- - [Error Handling](https://charleswiltgen.github.io/taglib-wasm/Error-Handling.html)
227
+ - [Error Handling](https://charleswiltgen.github.io/taglib-wasm/concepts/error-handling.html)
224
228
 
225
229
  ### Development
226
230
 
227
231
  - [Testing Guide](https://charleswiltgen.github.io/taglib-wasm/development/testing.html)
228
232
  - [Future Improvements](https://charleswiltgen.github.io/taglib-wasm/development/improvements.html)
229
- - [Contributing](https://charleswiltgen.github.io/taglib-wasm/CONTRIBUTING.html)
233
+ - [Contributing](CONTRIBUTING.md)
230
234
 
231
235
  ## 📋 Supported Formats
232
236
 
@@ -266,7 +270,41 @@ file.setProperty(Tags.TrackGain, "-6.54 dB");
266
270
  file.setProperty(Tags.TrackPeak, "0.987654");
267
271
  ```
268
272
 
269
- [View all supported tag constants →](https://charleswiltgen.github.io/taglib-wasm/Tag-Name-Constants.html)
273
+ [View all supported tag constants →](https://charleswiltgen.github.io/taglib-wasm/api/tag-name-constants.html)
274
+
275
+ ## ⚡ Performance & Smart Partial Loading
276
+
277
+ `taglib-wasm` now supports Smart Partial Loading, dramatically improving
278
+ performance for large audio files:
279
+
280
+ ```typescript
281
+ // Enable partial loading for large files (>50MB)
282
+ const file = await taglib.open("large-concert.flac", {
283
+ partial: true,
284
+ maxHeaderSize: 2 * 1024 * 1024, // 2MB header
285
+ maxFooterSize: 256 * 1024, // 256KB footer
286
+ });
287
+
288
+ // Read operations work normally
289
+ const tags = file.tag();
290
+ console.log(tags.title, tags.artist);
291
+
292
+ // Make multiple changes efficiently
293
+ tags.setTitle("Live at Madison Square Garden");
294
+ tags.setArtist("The Beatles");
295
+ tags.setAlbum("Greatest Live Performances");
296
+
297
+ // Smart save - automatically loads full file when needed
298
+ await file.saveToFile(); // Full file loaded only here
299
+ ```
300
+
301
+ **Performance gains:**
302
+
303
+ - **500MB file**: ~450x less memory usage (1.1MB vs 500MB)
304
+ - **Initial load**: 50x faster (50ms vs 2500ms)
305
+ - **Memory peak**: 3.3MB instead of 1.5GB
306
+
307
+ [View performance guide →](https://charleswiltgen.github.io/taglib-wasm/concepts/performance.html)
270
308
 
271
309
  ## 🏗️ Development
272
310
 
@@ -50,9 +50,9 @@ export declare class UnsupportedFormatError extends TagLibError {
50
50
  * Error thrown during file operations (read, write, save)
51
51
  */
52
52
  export declare class FileOperationError extends TagLibError {
53
- readonly operation: "read" | "write" | "save";
53
+ readonly operation: "read" | "write" | "save" | "stat";
54
54
  readonly path?: string | undefined;
55
- constructor(operation: "read" | "write" | "save", message: string, path?: string | undefined, context?: Record<string, unknown>);
55
+ constructor(operation: "read" | "write" | "save" | "stat", message: string, path?: string | undefined, context?: Record<string, unknown>);
56
56
  }
57
57
  /**
58
58
  * Error thrown when metadata operations fail
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { TagLibModule, WasmModule } from "./wasm.ts";
2
- import type { AudioProperties, FileType, Picture, PropertyMap, Tag as BasicTag } from "./types.ts";
2
+ import type { AudioProperties, FileType, OpenOptions, Picture, PropertyMap, Tag as BasicTag } from "./types.ts";
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.
@@ -291,7 +291,10 @@ export declare class AudioFileImpl implements AudioFile {
291
291
  private cachedTag;
292
292
  private cachedAudioProperties;
293
293
  private sourcePath?;
294
- constructor(module: TagLibModule, fileHandle: any, sourcePath?: string);
294
+ private originalSource?;
295
+ private isPartiallyLoaded;
296
+ private partialLoadOptions?;
297
+ constructor(module: TagLibModule, fileHandle: any, sourcePath?: string, originalSource?: string | File | ArrayBuffer | Uint8Array, isPartiallyLoaded?: boolean, partialLoadOptions?: OpenOptions);
295
298
  /** @inheritdoc */
296
299
  getFormat(): FileType;
297
300
  /** @inheritdoc */
@@ -448,7 +451,7 @@ export declare class TagLib {
448
451
  * file.dispose();
449
452
  * ```
450
453
  */
451
- open(input: string | ArrayBuffer | Uint8Array | File): Promise<AudioFile>;
454
+ open(input: string | ArrayBuffer | Uint8Array | File, options?: OpenOptions): Promise<AudioFile>;
452
455
  /**
453
456
  * Update tags in a file and save changes to disk in one operation.
454
457
  * This is a convenience method that opens, modifies, saves, and closes the file.
@@ -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,WAAW,CAAC;AAC1D,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,OAAO,EACP,WAAW,EACX,GAAG,IAAI,QAAQ,EAChB,MAAM,YAAY,CAAC;AAUpB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,GAAI,SAAQ,QAAQ;IACnC,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,0BAA0B;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,yBAAyB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,sBAAsB;IACtB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,oBAAoB;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2BAA2B;IAC3B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,SAAS,IAAI,QAAQ,CAAC;IAEtB;;;;OAIG;IACH,GAAG,IAAI,GAAG,CAAC;IAEX;;;OAGG;IACH,eAAe,IAAI,eAAe,GAAG,IAAI,CAAC;IAE1C;;;;OAIG;IACH,UAAU,IAAI,WAAW,CAAC;IAE1B;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;IAE7C;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAE7C;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9C;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC;IAEjB;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAE5C;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7C;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC;;;;;OAKG;IACH,IAAI,IAAI,OAAO,CAAC;IAEhB;;;;OAIG;IACH,aAAa,IAAI,UAAU,CAAC;IAE5B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC;IAEnB;;;OAGG;IACH,WAAW,IAAI,OAAO,EAAE,CAAC;IAEzB;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEvC;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAEnC;;OAEG;IACH,cAAc,IAAI,IAAI,CAAC;IAEvB;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAC;IAIhB;;;OAGG;IACH,qBAAqB,IAAI,MAAM,GAAG,SAAS,CAAC;IAE5C;;;OAGG;IACH,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC;;;OAGG;IACH,uBAAuB,IAAI,MAAM,GAAG,SAAS,CAAC;IAE9C;;;OAGG;IACH,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1C;;;OAGG;IACH,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAAC;IAE7C;;;OAGG;IACH,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzC;;;OAGG;IACH,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAAC;IAE7C;;;OAGG;IACH,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAElD;;;OAGG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;IAEpC;;;OAGG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;;OAGG;IACH,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAAC;IAE7C;;;OAGG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3C;;;OAGG;IACH,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAAC;IAE7C;;;OAGG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3C;;;OAGG;IACH,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAAC;IAE7C;;;OAGG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3C;;;OAGG;IACH,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAAC;IAE7C;;;OAGG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3C;;;OAGG;IACH,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAAC;IAEzC;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,SAAS;IAO3C,OAAO,CAAC,MAAM;IANhB,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,qBAAqB,CAAgC;IAC7D,OAAO,CAAC,UAAU,CAAC,CAAS;gBAGlB,MAAM,EAAE,YAAY,EAC5B,UAAU,EAAE,GAAG,EACf,UAAU,CAAC,EAAE,MAAM;IAMrB,kBAAkB;IAClB,SAAS,IAAI,QAAQ;IAIrB,kBAAkB;IAClB,GAAG,IAAI,GAAG;IA4BV,kBAAkB;IAClB,eAAe,IAAI,eAAe,GAAG,IAAI;IAqBzC,kBAAkB;IAClB,UAAU,IAAI,WAAW;IAazB,kBAAkB;IAClB,aAAa,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAI5C,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK5C,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7C,kBAAkB;IAClB,KAAK,IAAI,OAAO;IAIhB,kBAAkB;IAClB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAY3C,kBAAkB;IAClB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAW5C,kBAAkB;IAClB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAWhC,kBAAkB;IAClB,IAAI,IAAI,OAAO;IAQf,kBAAkB;IAClB,aAAa,IAAI,UAAU;IAU3B,kBAAkB;IACZ,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB9C,kBAAkB;IAClB,OAAO,IAAI,OAAO;IAIlB,kBAAkB;IAClB,WAAW,IAAI,OAAO,EAAE;IAkBxB,kBAAkB;IAClB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAYtC,kBAAkB;IAClB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAWlC,kBAAkB;IAClB,cAAc,IAAI,IAAI;IAItB,kBAAkB;IAClB,OAAO,IAAI,IAAI;IAef,kBAAkB;IAClB,qBAAqB,IAAI,MAAM,GAAG,SAAS;IAK3C,kBAAkB;IAClB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIvC,kBAAkB;IAClB,uBAAuB,IAAI,MAAM,GAAG,SAAS;IAK7C,kBAAkB;IAClB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIzC,kBAAkB;IAClB,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAK5C,kBAAkB;IAClB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxC,kBAAkB;IAClB,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAK5C,kBAAkB;IAClB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIjD,kBAAkB;IAClB,aAAa,IAAI,MAAM,GAAG,SAAS;IAKnC,kBAAkB;IAClB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI/B,kBAAkB;IAClB,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAK5C,kBAAkB;IAClB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI1C,kBAAkB;IAClB,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAK5C,kBAAkB;IAClB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI1C,kBAAkB;IAClB,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAK5C,kBAAkB;IAClB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI1C,kBAAkB;IAClB,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAK5C,kBAAkB;IAClB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI1C,kBAAkB;IAClB,kBAAkB,IAAI,MAAM,GAAG,SAAS;IAUxC,kBAAkB;IAClB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CASvC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,UAAU;IAI9B;;;;;;;;;;;;;;;;;;;OAmBG;WACU,UAAU,CAAC,OAAO,CAAC,EAAE;QAChC,UAAU,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC;IAOnB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,IAAI,CACR,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,GAC9C,OAAO,CAAC,SAAS,CAAC;IAuCrB;;;;;;;;;;;;;;;OAeG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBtE;;;;;;;;;;;;;;;;OAgBG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GACtB,OAAO,CAAC,IAAI,CAAC;IAqBhB;;;OAGG;IACH,OAAO,IAAI,MAAM;CAGlB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAEtE;AAED;;GAEG;AACH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,aAAa,EACb,wBAAwB,EACxB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"taglib.d.ts","sourceRoot":"","sources":["../../src/taglib.ts"],"names":[],"mappings":"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"}
@@ -4,15 +4,23 @@ import {
4
4
  TagLibInitializationError,
5
5
  UnsupportedFormatError
6
6
  } from "./errors.js";
7
- import { readFileData } from "./utils/file.js";
7
+ import {
8
+ getFileSize,
9
+ readFileData,
10
+ readPartialFileData
11
+ } from "./utils/file.js";
8
12
  import { writeFileData } from "./utils/write.js";
9
13
  class AudioFileImpl {
10
- constructor(module, fileHandle, sourcePath) {
14
+ constructor(module, fileHandle, sourcePath, originalSource, isPartiallyLoaded = false, partialLoadOptions) {
11
15
  this.module = module;
12
16
  this.cachedTag = null;
13
17
  this.cachedAudioProperties = null;
18
+ this.isPartiallyLoaded = false;
14
19
  this.fileHandle = fileHandle;
15
20
  this.sourcePath = sourcePath;
21
+ this.originalSource = originalSource;
22
+ this.isPartiallyLoaded = isPartiallyLoaded;
23
+ this.partialLoadOptions = partialLoadOptions;
16
24
  }
17
25
  /** @inheritdoc */
18
26
  getFormat() {
@@ -126,6 +134,11 @@ class AudioFileImpl {
126
134
  }
127
135
  /** @inheritdoc */
128
136
  save() {
137
+ if (this.isPartiallyLoaded && this.originalSource) {
138
+ throw new Error(
139
+ "Cannot save partially loaded file directly. Use saveToFile() instead, which will automatically load the full file."
140
+ );
141
+ }
129
142
  this.cachedTag = null;
130
143
  this.cachedAudioProperties = null;
131
144
  return this.fileHandle.save();
@@ -146,11 +159,47 @@ class AudioFileImpl {
146
159
  "No file path available. Either provide a path or open the file from a path."
147
160
  );
148
161
  }
149
- if (!this.save()) {
150
- throw new Error("Failed to save changes to in-memory buffer");
162
+ if (this.isPartiallyLoaded && this.originalSource) {
163
+ const fullData = await readFileData(this.originalSource);
164
+ const fullFileHandle = this.module.createFileHandle();
165
+ const success = fullFileHandle.loadFromBuffer(fullData);
166
+ if (!success) {
167
+ throw new InvalidFormatError(
168
+ "Failed to load full audio file for saving",
169
+ fullData.byteLength
170
+ );
171
+ }
172
+ const partialTag = this.fileHandle.getTag();
173
+ const fullTag = fullFileHandle.getTag();
174
+ if (partialTag && fullTag) {
175
+ fullTag.setTitle(partialTag.title());
176
+ fullTag.setArtist(partialTag.artist());
177
+ fullTag.setAlbum(partialTag.album());
178
+ fullTag.setComment(partialTag.comment());
179
+ fullTag.setGenre(partialTag.genre());
180
+ fullTag.setYear(partialTag.year());
181
+ fullTag.setTrack(partialTag.track());
182
+ }
183
+ const properties = this.fileHandle.getProperties();
184
+ fullFileHandle.setProperties(properties);
185
+ const pictures = this.fileHandle.getPictures();
186
+ fullFileHandle.setPictures(pictures);
187
+ if (!fullFileHandle.save()) {
188
+ fullFileHandle.destroy();
189
+ throw new Error("Failed to save changes to full file");
190
+ }
191
+ const buffer = fullFileHandle.getBuffer();
192
+ fullFileHandle.destroy();
193
+ await writeFileData(targetPath, buffer);
194
+ this.isPartiallyLoaded = false;
195
+ this.originalSource = void 0;
196
+ } else {
197
+ if (!this.save()) {
198
+ throw new Error("Failed to save changes to in-memory buffer");
199
+ }
200
+ const buffer = this.getFileBuffer();
201
+ await writeFileData(targetPath, buffer);
151
202
  }
152
- const buffer = this.getFileBuffer();
153
- await writeFileData(targetPath, buffer);
154
203
  }
155
204
  /** @inheritdoc */
156
205
  isValid() {
@@ -361,14 +410,53 @@ class TagLib {
361
410
  * file.dispose();
362
411
  * ```
363
412
  */
364
- async open(input) {
413
+ async open(input, options) {
365
414
  if (!this.module.createFileHandle) {
366
415
  throw new TagLibInitializationError(
367
416
  "TagLib module not properly initialized: createFileHandle not found. Make sure the module is fully loaded before calling open."
368
417
  );
369
418
  }
370
419
  const sourcePath = typeof input === "string" ? input : void 0;
371
- const audioData = await readFileData(input);
420
+ const opts = {
421
+ partial: false,
422
+ maxHeaderSize: 1024 * 1024,
423
+ // 1MB
424
+ maxFooterSize: 128 * 1024,
425
+ // 128KB
426
+ ...options
427
+ };
428
+ let audioData;
429
+ let isPartiallyLoaded = false;
430
+ if (opts.partial && typeof File !== "undefined" && input instanceof File) {
431
+ const headerSize = Math.min(opts.maxHeaderSize, input.size);
432
+ const footerSize = Math.min(opts.maxFooterSize, input.size);
433
+ if (input.size <= headerSize + footerSize) {
434
+ audioData = await readFileData(input);
435
+ } else {
436
+ const header = await input.slice(0, headerSize).arrayBuffer();
437
+ const footerStart = Math.max(0, input.size - footerSize);
438
+ const footer = await input.slice(footerStart).arrayBuffer();
439
+ const combined = new Uint8Array(header.byteLength + footer.byteLength);
440
+ combined.set(new Uint8Array(header), 0);
441
+ combined.set(new Uint8Array(footer), header.byteLength);
442
+ audioData = combined;
443
+ isPartiallyLoaded = true;
444
+ }
445
+ } else if (opts.partial && typeof input === "string") {
446
+ const fileSize = await getFileSize(input);
447
+ if (fileSize > opts.maxHeaderSize + opts.maxFooterSize) {
448
+ audioData = await readPartialFileData(
449
+ input,
450
+ opts.maxHeaderSize,
451
+ opts.maxFooterSize
452
+ );
453
+ isPartiallyLoaded = true;
454
+ } else {
455
+ audioData = await readFileData(input);
456
+ }
457
+ } else {
458
+ audioData = await readFileData(input);
459
+ }
372
460
  const buffer = audioData.buffer.slice(
373
461
  audioData.byteOffset,
374
462
  audioData.byteOffset + audioData.byteLength
@@ -382,7 +470,15 @@ class TagLib {
382
470
  buffer.byteLength
383
471
  );
384
472
  }
385
- return new AudioFileImpl(this.module, fileHandle, sourcePath);
473
+ return new AudioFileImpl(
474
+ this.module,
475
+ fileHandle,
476
+ sourcePath,
477
+ input,
478
+ // Store original source for lazy loading
479
+ isPartiallyLoaded,
480
+ opts
481
+ );
386
482
  }
387
483
  /**
388
484
  * Update tags in a file and save changes to disk in one operation.
@@ -328,4 +328,41 @@ export interface TagLibWorkersConfig {
328
328
  /** Enable debug output */
329
329
  debug?: boolean;
330
330
  }
331
+ /**
332
+ * Options for opening audio files with partial loading support.
333
+ *
334
+ * @example
335
+ * ```typescript
336
+ * // Enable partial loading for large files
337
+ * const file = await taglib.open(largeFile, {
338
+ * partial: true,
339
+ * maxHeaderSize: 2 * 1024 * 1024, // 2MB
340
+ * maxFooterSize: 256 * 1024 // 256KB
341
+ * });
342
+ * ```
343
+ */
344
+ export interface OpenOptions {
345
+ /**
346
+ * Enable partial file loading for better performance with large files.
347
+ * When enabled, only the header and footer sections are loaded initially.
348
+ * The full file is loaded automatically when save() is called.
349
+ *
350
+ * @default false
351
+ */
352
+ partial?: boolean;
353
+ /**
354
+ * Maximum size of the header section to load (in bytes).
355
+ * This should be large enough to contain all metadata at the beginning of the file.
356
+ *
357
+ * @default 1048576 (1MB)
358
+ */
359
+ maxHeaderSize?: number;
360
+ /**
361
+ * Maximum size of the footer section to load (in bytes).
362
+ * This should be large enough to contain metadata at the end of the file (e.g., ID3v1 tags).
363
+ *
364
+ * @default 131072 (128KB)
365
+ */
366
+ maxFooterSize?: number;
367
+ }
331
368
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -12,4 +12,24 @@
12
12
  * @throws {EnvironmentError} If environment doesn't support file paths
13
13
  */
14
14
  export declare function readFileData(file: string | Uint8Array | ArrayBuffer | File): Promise<Uint8Array>;
15
+ /**
16
+ * Get the size of a file without reading its contents.
17
+ *
18
+ * @param path - File path
19
+ * @returns Promise resolving to file size in bytes
20
+ * @throws {FileOperationError} If file stat fails
21
+ * @throws {EnvironmentError} If environment doesn't support file paths
22
+ */
23
+ export declare function getFileSize(path: string): Promise<number>;
24
+ /**
25
+ * Read partial file data (header and footer sections).
26
+ *
27
+ * @param path - File path
28
+ * @param headerSize - Size of header section to read
29
+ * @param footerSize - Size of footer section to read
30
+ * @returns Promise resolving to combined header and footer data
31
+ * @throws {FileOperationError} If file read fails
32
+ * @throws {EnvironmentError} If environment doesn't support file paths
33
+ */
34
+ export declare function readPartialFileData(path: string, headerSize: number, footerSize: number): Promise<Uint8Array>;
15
35
  //# sourceMappingURL=file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/utils/file.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,GAC7C,OAAO,CAAC,UAAU,CAAC,CAmErB"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/utils/file.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,GAC7C,OAAO,CAAC,UAAU,CAAC,CAmErB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgD/D;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,CAAC,CA4GrB"}
@@ -47,6 +47,125 @@ async function readFileData(file) {
47
47
  `Invalid file input type: ${inputType}. Expected string path, Uint8Array, ArrayBuffer, or File object.`
48
48
  );
49
49
  }
50
+ async function getFileSize(path) {
51
+ const hasDeno = typeof globalThis.Deno !== "undefined";
52
+ const hasNode = typeof globalThis.process !== "undefined" && globalThis.process.versions && globalThis.process.versions.node;
53
+ const hasBun = typeof globalThis.Bun !== "undefined";
54
+ if (!hasDeno && !hasNode && !hasBun) {
55
+ throw new EnvironmentError(
56
+ "Browser",
57
+ "does not support file path operations",
58
+ "filesystem access"
59
+ );
60
+ }
61
+ try {
62
+ if (hasDeno) {
63
+ const stat = await globalThis.Deno.stat(path);
64
+ return stat.size;
65
+ }
66
+ if (hasNode) {
67
+ const { stat } = await import("fs/promises");
68
+ const stats = await stat(path);
69
+ return stats.size;
70
+ }
71
+ if (hasBun) {
72
+ const bunFile = globalThis.Bun.file(path);
73
+ return bunFile.size;
74
+ }
75
+ } catch (error) {
76
+ throw new FileOperationError(
77
+ "stat",
78
+ error.message,
79
+ path
80
+ );
81
+ }
82
+ throw new EnvironmentError(
83
+ "Unknown",
84
+ "No runtime detected",
85
+ "filesystem access"
86
+ );
87
+ }
88
+ async function readPartialFileData(path, headerSize, footerSize) {
89
+ const hasDeno = typeof globalThis.Deno !== "undefined";
90
+ const hasNode = typeof globalThis.process !== "undefined" && globalThis.process.versions && globalThis.process.versions.node;
91
+ if (!hasDeno && !hasNode) {
92
+ throw new EnvironmentError(
93
+ "Browser/Bun",
94
+ "does not support partial file reading",
95
+ "filesystem access with seek support"
96
+ );
97
+ }
98
+ try {
99
+ if (hasDeno) {
100
+ const file = await globalThis.Deno.open(path, { read: true });
101
+ try {
102
+ const stat = await file.stat();
103
+ const fileSize = stat.size;
104
+ const actualHeaderSize = Math.min(headerSize, fileSize);
105
+ const header = new Uint8Array(actualHeaderSize);
106
+ await file.read(header);
107
+ const actualFooterSize = Math.min(footerSize, fileSize);
108
+ const footerStart = Math.max(0, fileSize - actualFooterSize);
109
+ if (footerStart <= actualHeaderSize) {
110
+ return header.slice(0, fileSize);
111
+ }
112
+ await file.seek(footerStart, globalThis.Deno.SeekMode.Start);
113
+ const footer = new Uint8Array(actualFooterSize);
114
+ await file.read(footer);
115
+ const combined = new Uint8Array(actualHeaderSize + actualFooterSize);
116
+ combined.set(header, 0);
117
+ combined.set(footer, actualHeaderSize);
118
+ return combined;
119
+ } finally {
120
+ file.close();
121
+ }
122
+ }
123
+ if (hasNode) {
124
+ const { open } = await import("fs/promises");
125
+ const file = await open(path, "r");
126
+ try {
127
+ const stats = await file.stat();
128
+ const fileSize = stats.size;
129
+ const actualHeaderSize = Math.min(headerSize, fileSize);
130
+ const { Buffer } = await import("buffer");
131
+ const header = Buffer.alloc(actualHeaderSize);
132
+ await file.read(header, 0, actualHeaderSize, 0);
133
+ const actualFooterSize = Math.min(footerSize, fileSize);
134
+ const footerStart = Math.max(0, fileSize - actualFooterSize);
135
+ if (footerStart <= actualHeaderSize) {
136
+ return new Uint8Array(header.buffer, 0, fileSize);
137
+ }
138
+ const footer = Buffer.alloc(actualFooterSize);
139
+ await file.read(footer, 0, actualFooterSize, footerStart);
140
+ const combined = new Uint8Array(actualHeaderSize + actualFooterSize);
141
+ combined.set(
142
+ new Uint8Array(header.buffer, header.byteOffset, header.byteLength),
143
+ 0
144
+ );
145
+ combined.set(
146
+ new Uint8Array(footer.buffer, footer.byteOffset, footer.byteLength),
147
+ actualHeaderSize
148
+ );
149
+ return combined;
150
+ } finally {
151
+ await file.close();
152
+ }
153
+ }
154
+ } catch (error) {
155
+ throw new FileOperationError(
156
+ "read",
157
+ error.message,
158
+ path
159
+ );
160
+ }
161
+ throw new EnvironmentError(
162
+ "Unknown",
163
+ "No runtime detected",
164
+ "filesystem access"
165
+ );
166
+ }
50
167
  export {
51
- readFileData
168
+ getFileSize,
169
+ readFileData,
170
+ readPartialFileData
52
171
  };
@@ -35,6 +35,12 @@ export interface FileHandle {
35
35
  removeMP4Item(key: string): void;
36
36
  getTag(): TagWrapper;
37
37
  getAudioProperties(): AudioPropertiesWrapper;
38
+ getBuffer(): Uint8Array;
39
+ getPictures(): any[];
40
+ setPictures(pictures: any[]): void;
41
+ addPicture(picture: any): void;
42
+ removePictures(): void;
43
+ destroy(): void;
38
44
  }
39
45
  export interface TagWrapper {
40
46
  title(): string;
@@ -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": "0.3.27",
3
+ "version": "0.4.1",
4
4
  "description": "TagLib for TypeScript platforms: Deno, Node.js, Bun, Electron, browsers, and Cloudflare Workers",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",