taglib-wasm 1.2.1 → 1.3.0

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.
Files changed (42) hide show
  1. package/dist/index.browser.js +232 -102
  2. package/dist/simple.browser.js +232 -102
  3. package/dist/src/constants/complex-properties.d.ts +0 -14
  4. package/dist/src/constants/complex-properties.d.ts.map +1 -1
  5. package/dist/src/errors/base.js +5 -2
  6. package/dist/src/errors/classes.js +13 -10
  7. package/dist/src/msgpack/encoder.d.ts +6 -0
  8. package/dist/src/msgpack/encoder.d.ts.map +1 -1
  9. package/dist/src/msgpack/encoder.js +15 -0
  10. package/dist/src/runtime/unified-loader/types.js +4 -1
  11. package/dist/src/runtime/wasi-adapter/file-handle.d.ts +3 -1
  12. package/dist/src/runtime/wasi-adapter/file-handle.d.ts.map +1 -1
  13. package/dist/src/runtime/wasi-adapter/file-handle.js +41 -4
  14. package/dist/src/runtime/wasi-memory.d.ts +0 -5
  15. package/dist/src/runtime/wasi-memory.d.ts.map +1 -1
  16. package/dist/src/runtime/wasi-memory.js +6 -10
  17. package/dist/src/taglib/audio-file-base.d.ts.map +1 -1
  18. package/dist/src/taglib/audio-file-base.js +13 -1
  19. package/dist/src/taglib/audio-file-impl.d.ts.map +1 -1
  20. package/dist/src/taglib/audio-file-impl.js +22 -39
  21. package/dist/src/taglib/embind-adapter.d.ts.map +1 -1
  22. package/dist/src/taglib/embind-adapter.js +18 -0
  23. package/dist/src/taglib/extra-state-registry.d.ts +26 -0
  24. package/dist/src/taglib/extra-state-registry.d.ts.map +1 -0
  25. package/dist/src/taglib/extra-state-registry.js +59 -0
  26. package/dist/src/taglib/mutable-tag.d.ts +7 -0
  27. package/dist/src/taglib/mutable-tag.d.ts.map +1 -1
  28. package/dist/src/taglib/save-reconstruct.d.ts +13 -0
  29. package/dist/src/taglib/save-reconstruct.d.ts.map +1 -0
  30. package/dist/src/taglib/save-reconstruct.js +39 -0
  31. package/dist/src/types/metadata-mappings.d.ts.map +1 -1
  32. package/dist/src/types/metadata-mappings.js +8 -0
  33. package/dist/src/types/tags.d.ts +10 -0
  34. package/dist/src/types/tags.d.ts.map +1 -1
  35. package/dist/src/utils/tag-mapping.d.ts.map +1 -1
  36. package/dist/src/utils/tag-mapping.js +7 -0
  37. package/dist/src/version.d.ts +1 -1
  38. package/dist/src/version.js +1 -1
  39. package/dist/src/wasm.d.ts +14 -0
  40. package/dist/src/wasm.d.ts.map +1 -1
  41. package/dist/taglib-wasi.wasm +0 -0
  42. package/package.json +7 -8
@@ -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,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACxE,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;AA8DhE,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;IA+B5C,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,WAAW,IAAI,UAAU,EAAE;IAK3B,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IASlE,WAAW,IAAI,UAAU,GAAG,SAAS;IAKrC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAS1C,OAAO,IAAI,MAAM,GAAG,SAAS;IAM7B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKlC,UAAU,IAAI;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,OAAO,CAAA;KAAE;IAQ1C,YAAY,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IA+BtD,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"}
1
+ {"version":3,"file":"file-handle.d.ts","sourceRoot":"","sources":["../../../../src/runtime/wasi-adapter/file-handle.ts"],"names":[],"mappings":"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"}
@@ -49,9 +49,12 @@ const CONTAINER_TO_FORMAT = {
49
49
  Matroska: "MATROSKA"
50
50
  };
51
51
  const NUMERIC_FIELD_ALIASES = {
52
- date: "year",
53
52
  trackNumber: "track"
54
53
  };
54
+ function hasValue(v) {
55
+ if (Array.isArray(v)) return v.length > 0;
56
+ return v !== void 0 && v !== null && v !== "";
57
+ }
55
58
  function firstString(v) {
56
59
  if (Array.isArray(v)) return v[0] ?? "";
57
60
  return v || "";
@@ -123,7 +126,12 @@ class WasiFileHandle {
123
126
  }
124
127
  setTagData(data) {
125
128
  this.checkNotDestroyed();
126
- this.tagData = { ...this.tagData, ...data };
129
+ const merged = { ...this.tagData, ...data };
130
+ if (data.year !== void 0) {
131
+ if (data.year > 0) merged.date = String(data.year);
132
+ else delete merged.date;
133
+ }
134
+ this.tagData = merged;
127
135
  }
128
136
  getAudioProperties() {
129
137
  this.checkNotDestroyed();
@@ -195,6 +203,7 @@ class WasiFileHandle {
195
203
  const data = this.tagData ?? {};
196
204
  for (const [key, value] of Object.entries(data)) {
197
205
  if (AUDIO_KEYS.has(key) || INTERNAL_KEYS.has(key)) continue;
206
+ if (key === "year" && hasValue(data.date)) continue;
198
207
  if (value === void 0 || value === null) continue;
199
208
  if (value === 0 || value === "") continue;
200
209
  const propKey = toTagLibKey(key);
@@ -214,9 +223,13 @@ class WasiFileHandle {
214
223
  for (const [key, values] of Object.entries(props)) {
215
224
  const camelKey = fromTagLibKey(key);
216
225
  const storeKey = NUMERIC_FIELD_ALIASES[camelKey] ?? camelKey;
217
- if (storeKey === "year" || storeKey === "track") {
226
+ if (storeKey === "track") {
218
227
  const parsed = Number.parseInt(values[0] ?? "", 10);
219
228
  if (!Number.isNaN(parsed)) mapped[storeKey] = parsed;
229
+ } else if (camelKey === "date") {
230
+ mapped.date = values;
231
+ const year = Number.parseInt(values[0] ?? "", 10);
232
+ if (!Number.isNaN(year)) mapped.year = year;
220
233
  } else {
221
234
  mapped[camelKey] = values;
222
235
  }
@@ -233,11 +246,18 @@ class WasiFileHandle {
233
246
  this.checkNotDestroyed();
234
247
  const mappedKey = fromTagLibKey(key);
235
248
  const storeKey = NUMERIC_FIELD_ALIASES[mappedKey] ?? mappedKey;
236
- if (storeKey === "year" || storeKey === "track") {
249
+ if (storeKey === "track") {
237
250
  const parsed = Number.parseInt(value, 10);
238
251
  if (!Number.isNaN(parsed)) {
239
252
  this.tagData = { ...this.tagData, [storeKey]: parsed };
240
253
  }
254
+ } else if (mappedKey === "date") {
255
+ const year = Number.parseInt(value, 10);
256
+ this.tagData = {
257
+ ...this.tagData,
258
+ date: value,
259
+ ...Number.isNaN(year) ? {} : { year }
260
+ };
241
261
  } else {
242
262
  this.tagData = { ...this.tagData, [mappedKey]: value };
243
263
  }
@@ -351,6 +371,23 @@ class WasiFileHandle {
351
371
  ratings: normalizedRatings
352
372
  };
353
373
  }
374
+ getLyrics() {
375
+ this.checkNotDestroyed();
376
+ const value = this.tagData?.lyrics;
377
+ if (value === void 0 || value === null) return [];
378
+ const entries = Array.isArray(value) ? value : [value];
379
+ return entries.map(
380
+ (entry) => typeof entry === "string" ? { text: entry, description: "", language: "" } : {
381
+ text: entry?.text ?? "",
382
+ description: entry?.description ?? "",
383
+ language: entry?.language ?? ""
384
+ }
385
+ );
386
+ }
387
+ setLyrics(lyrics) {
388
+ this.checkNotDestroyed();
389
+ this.tagData = { ...this.tagData, lyrics };
390
+ }
354
391
  destroy() {
355
392
  this.fileData = null;
356
393
  this.tagData = null;
@@ -106,9 +106,4 @@ export declare class WasmMemoryError extends TagLibError {
106
106
  readonly errorCode?: number | undefined;
107
107
  constructor(message: string, operation: string, errorCode?: number | undefined);
108
108
  }
109
- /**
110
- * Refresh heap views after potential memory growth
111
- * Call this if you suspect the WASM module grew its memory
112
- */
113
- export declare function refreshHeapViews(wasm: WasmExports, currentViews: ReturnType<typeof heapViews>): ReturnType<typeof heapViews>;
114
109
  //# sourceMappingURL=wasi-memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wasi-memory.d.ts","sourceRoot":"","sources":["../../../src/runtime/wasi-memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,KAAK,cAAc;;;;;;;CAO3C,CAAC;AAEH;;;GAGG;AACH,qBAAa,SAAS;;gBAKR,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAW3C,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,SAAI,GAAG,IAAI;IAU1C;;OAEG;IACH,IAAI,CAAC,GAAG,SAAa,EAAE,MAAM,SAAI,GAAG,UAAU;IAU9C;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAc9C;;OAEG;IACH,WAAW,IAAI,MAAM;IASrB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,IAAI;IAU5C;;OAEG;IACH,UAAU,CAAC,MAAM,SAAI,GAAG,MAAM;IAU9B;;OAEG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAMzB;AAED;;;GAGG;AACH,qBAAa,SAAS;;gBAIR,IAAI,EAAE,WAAW;IAI7B;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAM9B;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAOnC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS;IAM1C;;OAEG;IACH,WAAW,CAAC,KAAK,SAAI,GAAG,SAAS;IAMjC;;OAEG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAMzB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;aAG5B,SAAS,EAAE,MAAM;aACjB,SAAS,CAAC,EAAE,MAAM;gBAFlC,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,YAAA;CAWrC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,GACzC,UAAU,CAAC,OAAO,SAAS,CAAC,CAM9B"}
1
+ {"version":3,"file":"wasi-memory.d.ts","sourceRoot":"","sources":["../../../src/runtime/wasi-memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,KAAK,cAAc;;;;;;;CAO3C,CAAC;AAEH;;;GAGG;AACH,qBAAa,SAAS;;gBAKR,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAW3C,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,SAAI,GAAG,IAAI;IAU1C;;OAEG;IACH,IAAI,CAAC,GAAG,SAAa,EAAE,MAAM,SAAI,GAAG,UAAU;IAU9C;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAc9C;;OAEG;IACH,WAAW,IAAI,MAAM;IASrB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,IAAI;IAU5C;;OAEG;IACH,UAAU,CAAC,MAAM,SAAI,GAAG,MAAM;IAU9B;;OAEG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAMzB;AAED;;;GAGG;AACH,qBAAa,SAAS;;gBAIR,IAAI,EAAE,WAAW;IAI7B;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAM9B;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAOnC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS;IAM1C;;OAEG;IACH,WAAW,CAAC,KAAK,SAAI,GAAG,SAAS;IAMjC;;OAEG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAMzB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;aAG5B,SAAS,EAAE,MAAM;aACjB,SAAS,CAAC,EAAE,MAAM;gBAFlC,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,YAAA;CAWrC"}
@@ -1,6 +1,9 @@
1
+ var __defProp = Object.defineProperty;
1
2
  var __typeError = (msg) => {
2
3
  throw TypeError(msg);
3
4
  };
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
7
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
8
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
9
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
@@ -180,22 +183,15 @@ class WasmMemoryError extends TagLibError {
180
183
  "WASM_MEMORY",
181
184
  `${operation}: ${message}${errorCode === void 0 ? "" : ` (code ${errorCode})`}`
182
185
  );
183
- this.operation = operation;
184
- this.errorCode = errorCode;
186
+ __publicField(this, "operation", operation);
187
+ __publicField(this, "errorCode", errorCode);
185
188
  this.name = "WasmMemoryError";
186
189
  Object.setPrototypeOf(this, WasmMemoryError.prototype);
187
190
  }
188
191
  }
189
- function refreshHeapViews(wasm, currentViews) {
190
- if (currentViews.u8.buffer !== wasm.memory.buffer) {
191
- return heapViews(wasm.memory);
192
- }
193
- return currentViews;
194
- }
195
192
  export {
196
193
  WasmAlloc,
197
194
  WasmArena,
198
195
  WasmMemoryError,
199
- heapViews,
200
- refreshHeapViews
196
+ heapViews
201
197
  };
@@ -1 +1 @@
1
- {"version":3,"file":"audio-file-base.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,WAAW,EACX,WAAW,EACZ,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;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"}
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;IA4EjB,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"}
@@ -5,7 +5,7 @@ import { remapKeysFromTagLib, toTagLibKey } from "../constants/properties.js";
5
5
  import { MetadataError, UnsupportedFormatError } from "../errors.js";
6
6
  class BaseAudioFileImpl {
7
7
  constructor(module, fileHandle, sourcePath, originalSource, isPartiallyLoaded = false, partialLoadOptions) {
8
- this.module = module;
8
+ __publicField(this, "module", module);
9
9
  __publicField(this, "fileHandle");
10
10
  __publicField(this, "cachedAudioProperties", null);
11
11
  __publicField(this, "sourcePath");
@@ -55,6 +55,9 @@ class BaseAudioFileImpl {
55
55
  get track() {
56
56
  return data.track;
57
57
  },
58
+ get date() {
59
+ return handle.getProperty("DATE") || void 0;
60
+ },
58
61
  setTitle: (value) => {
59
62
  handle.setTagData({ title: value });
60
63
  data = handle.getTagData();
@@ -89,6 +92,15 @@ class BaseAudioFileImpl {
89
92
  handle.setTagData({ track: value });
90
93
  data = handle.getTagData();
91
94
  return tag;
95
+ },
96
+ setDate: (value) => {
97
+ if (value === "") {
98
+ handle.setTagData({ year: 0 });
99
+ } else {
100
+ handle.setProperty("DATE", value);
101
+ }
102
+ data = handle.getTagData();
103
+ return tag;
92
104
  }
93
105
  };
94
106
  return tag;
@@ -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,EAAc,YAAY,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAQjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAqCzD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,iBAAkB,YAAW,SAAS;IACvE,OAAO,CAAC,cAAc,CAA2B;gBAG/C,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,UAAU,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,EACzD,iBAAiB,GAAE,OAAe,EAClC,kBAAkB,CAAC,EAAE,WAAW;IAYlC,IAAI,IAAI,OAAO;IAYf,aAAa,IAAI,UAAU;IAgBrB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE9C,WAAW,IAAI,OAAO,EAAE;IAUxB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAStC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IASlC,cAAc,IAAI,IAAI;IAItB,WAAW,IAAI,OAAO,EAAE;IAYxB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAkBpE,OAAO,IAAI,uBAAuB,GAAG,SAAS;IAI9C,OAAO,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI;IAI5C,WAAW,IAAI,UAAU,GAAG,SAAS;IAIrC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAI1C,OAAO,IAAI,MAAM,GAAG,SAAS;IAI7B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIlC,UAAU,IAAI,MAAM,EAAE;IAUtB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAQnC,SAAS,IAAI,MAAM,GAAG,SAAS;IAK/B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/C,UAAU,IAAI;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,OAAO,CAAA;KAAE;IAI1C,YAAY,CAAC,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAC;QAAC,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;CAM1D"}
1
+ {"version":3,"file":"audio-file-impl.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAc,YAAY,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAGjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAqCzD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,iBAAkB,YAAW,SAAS;IACvE,OAAO,CAAC,cAAc,CAA2B;gBAG/C,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,UAAU,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,EACzD,iBAAiB,GAAE,OAAe,EAClC,kBAAkB,CAAC,EAAE,WAAW;IAYlC,IAAI,IAAI,OAAO;IAYf,aAAa,IAAI,UAAU;IAgBrB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwD9C,WAAW,IAAI,OAAO,EAAE;IAUxB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAStC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IASlC,cAAc,IAAI,IAAI;IAItB,WAAW,IAAI,OAAO,EAAE;IAYxB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAuBpE,OAAO,IAAI,uBAAuB,GAAG,SAAS;IAI9C,OAAO,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI;IAI5C,WAAW,IAAI,UAAU,GAAG,SAAS;IAIrC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAI1C,OAAO,IAAI,MAAM,GAAG,SAAS;IAI7B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIlC,UAAU,IAAI,MAAM,EAAE;IAUtB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAQnC,SAAS,IAAI,MAAM,GAAG,SAAS;IAK/B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/C,UAAU,IAAI;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,OAAO,CAAA;KAAE;IAI1C,YAAY,CAAC,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAC;QAAC,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;CAM1D"}
@@ -3,15 +3,10 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
  import { PICTURE_TYPE_NAMES, PICTURE_TYPE_VALUES } from "../types.js";
5
5
  import * as bwf from "./audio-file-bwf.js";
6
- import {
7
- FileOperationError,
8
- InvalidFormatError,
9
- UnsupportedFormatError
10
- } from "../errors.js";
11
- import { readFileData } from "../utils/file.js";
6
+ import { FileOperationError, UnsupportedFormatError } from "../errors.js";
12
7
  import { writeFileData } from "../utils/write.js";
13
8
  import { BaseAudioFileImpl } from "./audio-file-base.js";
14
- import { wrapEmbindHandle } from "./embind-adapter.js";
9
+ import { saveViaFreshHandle } from "./save-reconstruct.js";
15
10
  let _nodeFs;
16
11
  function sortChapters(list) {
17
12
  return [...list].sort((a, b) => a.startTimeMs - b.startTimeMs);
@@ -79,38 +74,23 @@ class AudioFileImpl extends BaseAudioFileImpl {
79
74
  );
80
75
  }
81
76
  if (this.isPartiallyLoaded && this.originalSource) {
82
- const rawFullHandle = this.module.createFileHandle();
83
- const fullFileHandle = this.module.isWasi ? rawFullHandle : wrapEmbindHandle(rawFullHandle);
84
- try {
85
- const success = await (async () => {
86
- const data = await readFileData(this.originalSource);
87
- return fullFileHandle.loadFromBuffer(data);
88
- })();
89
- if (!success) {
90
- throw new InvalidFormatError(
91
- "Failed to load full audio file for saving"
92
- );
93
- }
94
- fullFileHandle.setTagData(this.handle.getTagData());
95
- fullFileHandle.setProperties(this.handle.getProperties());
96
- fullFileHandle.setPictures(this.handle.getPictures());
97
- const bextBytes = this.handle.getBextData();
98
- if (bextBytes !== void 0) fullFileHandle.setBextData(bextBytes);
99
- const ixmlStr = this.handle.getIxml();
100
- if (ixmlStr !== void 0) fullFileHandle.setIxml(ixmlStr);
101
- if (!fullFileHandle.save()) {
102
- throw new FileOperationError(
103
- "save",
104
- "Failed to save changes to full file"
105
- );
106
- }
107
- const buffer = fullFileHandle.getBuffer();
108
- await writeFileData(targetPath, buffer);
109
- } finally {
110
- fullFileHandle.destroy();
111
- }
77
+ await saveViaFreshHandle(
78
+ this.module,
79
+ this.handle,
80
+ this.originalSource,
81
+ targetPath,
82
+ false
83
+ );
112
84
  this.isPartiallyLoaded = false;
113
85
  this.originalSource = void 0;
86
+ } else if (this.module.isWasi && this.sourcePath && targetPath !== this.sourcePath) {
87
+ await saveViaFreshHandle(
88
+ this.module,
89
+ this.handle,
90
+ this.sourcePath,
91
+ targetPath,
92
+ true
93
+ );
114
94
  } else {
115
95
  if (!this.save()) {
116
96
  throw new FileOperationError(
@@ -172,13 +152,16 @@ class AudioFileImpl extends BaseAudioFileImpl {
172
152
  }
173
153
  const sorted = sortChapters(chapters);
174
154
  const trackEndMs = this.audioProperties()?.durationMs;
155
+ const style = options?.mp4ChapterStyle ?? "quicktime";
156
+ const source = fmt === "MP4" ? style : "id3";
175
157
  const raw = sorted.map((c, i) => ({
176
158
  id: c.id,
177
159
  startTimeMs: c.startTimeMs,
178
160
  endTimeMs: inferEndTimeMs(sorted, i, trackEndMs) ?? c.startTimeMs,
179
- title: c.title
161
+ title: c.title,
162
+ source
180
163
  }));
181
- this.handle.setChapters(raw, options?.mp4ChapterStyle ?? "quicktime");
164
+ this.handle.setChapters(raw, style);
182
165
  }
183
166
  getBext() {
184
167
  return bwf.getBext(this.handle);
@@ -1 +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;AAc7C,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;IACxB,WAAW,IAAI,MAAM,CAAC;IACtB,YAAY,IAAI,MAAM,CAAC;CACxB;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,CA6FlE"}
1
+ {"version":3,"file":"embind-adapter.d.ts","sourceRoot":"","sources":["../../../src/taglib/embind-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAcxD,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;IACxB,WAAW,IAAI,MAAM,CAAC;IACtB,YAAY,IAAI,MAAM,CAAC;CACxB;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,CAoHlE"}
@@ -43,6 +43,24 @@ function wrapEmbindHandle(raw) {
43
43
  data ?? null
44
44
  );
45
45
  },
46
+ // Emscripten exposes USLT only through the PropertyMap "LYRICS" key (no
47
+ // dedicated Embind binding), so bridge get/setLyrics to get/setProperties.
48
+ // Text only — language/description are not surfaced by the PropertyMap.
49
+ getLyrics() {
50
+ const props = raw.getProperties();
51
+ return (props["LYRICS"] ?? []).map((text) => ({
52
+ text,
53
+ description: "",
54
+ language: ""
55
+ }));
56
+ },
57
+ setLyrics(lyrics) {
58
+ const handle = raw;
59
+ const props = handle.getProperties();
60
+ if (lyrics.length > 0) props["LYRICS"] = lyrics.map((l) => l.text);
61
+ else delete props["LYRICS"];
62
+ handle.setProperties(props);
63
+ },
46
64
  hasId3Tags() {
47
65
  const v = raw.hasId3Tags();
48
66
  if (!v || typeof v !== "object") return { v1: false, v2: false };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Single registry of "extra" editable state (everything beyond basic tags and
3
+ * the text PropertyMap) that must survive a file reconstruct in
4
+ * {@link saveViaFreshHandle}. Adding a new metadata kind is ONE entry here; the
5
+ * `extra-state-registry.test.ts` coverage check fails CI if a passthrough field
6
+ * is added without a registry entry, so a field can no longer be silently
7
+ * dropped on save (the taglib-upg class of bug).
8
+ */
9
+ import type { FileHandle } from "../wasm.js";
10
+ type ExtraField = {
11
+ /** Stable name, used by the test-net coverage check. */
12
+ readonly name: string;
13
+ /**
14
+ * Copy this field from `source` onto `target`. `sourceComplete` is true when
15
+ * `source` holds the file's full state (WASI save-as): empty/absent means
16
+ * "explicitly cleared" and is propagated. It is false for partial loads,
17
+ * where empty may just mean "not read from the truncated middle" — those are
18
+ * skipped so the freshly-reloaded full handle keeps its originals.
19
+ */
20
+ copy(target: FileHandle, source: FileHandle, sourceComplete: boolean): void;
21
+ };
22
+ export declare const EXTRA_FIELDS: readonly ExtraField[];
23
+ /** Copy every registered extra-state field from `source` onto `target`. */
24
+ export declare function copyExtraState(target: FileHandle, source: FileHandle, sourceComplete: boolean): void;
25
+ export {};
26
+ //# sourceMappingURL=extra-state-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extra-state-registry.d.ts","sourceRoot":"","sources":["../../../src/taglib/extra-state-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AAEzD,KAAK,UAAU,GAAG;IAChB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7E,CAAC;AAWF,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EA6C7C,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,cAAc,EAAE,OAAO,GACtB,IAAI,CAIN"}
@@ -0,0 +1,59 @@
1
+ function chapterStyle(chapters) {
2
+ const s = chapters[0]?.source;
3
+ return s === "nero" || s === "both" ? s : "quicktime";
4
+ }
5
+ const EXTRA_FIELDS = [
6
+ {
7
+ name: "pictures",
8
+ copy(target, source, complete) {
9
+ const v = source.getPictures();
10
+ if (complete || v.length > 0) target.setPictures(v);
11
+ }
12
+ },
13
+ {
14
+ name: "ratings",
15
+ copy(target, source, complete) {
16
+ const v = source.getRatings();
17
+ if (complete || v.length > 0) target.setRatings(v);
18
+ }
19
+ },
20
+ {
21
+ name: "lyrics",
22
+ copy(target, source, complete) {
23
+ const v = source.getLyrics();
24
+ if (complete || v.length > 0) target.setLyrics(v);
25
+ }
26
+ },
27
+ {
28
+ name: "chapters",
29
+ copy(target, source, complete) {
30
+ const v = source.getChapters();
31
+ if (complete || v.length > 0) target.setChapters(v, chapterStyle(v));
32
+ }
33
+ },
34
+ {
35
+ name: "bextData",
36
+ copy(target, source, complete) {
37
+ const v = source.getBextData();
38
+ if (v !== void 0) target.setBextData(v);
39
+ else if (complete) target.setBextData(null);
40
+ }
41
+ },
42
+ {
43
+ name: "ixml",
44
+ copy(target, source, complete) {
45
+ const v = source.getIxml();
46
+ if (v !== void 0) target.setIxml(v);
47
+ else if (complete) target.setIxml(null);
48
+ }
49
+ }
50
+ ];
51
+ function copyExtraState(target, source, sourceComplete) {
52
+ for (const field of EXTRA_FIELDS) {
53
+ field.copy(target, source, sourceComplete);
54
+ }
55
+ }
56
+ export {
57
+ EXTRA_FIELDS,
58
+ copyExtraState
59
+ };
@@ -34,6 +34,8 @@ export interface MutableTag {
34
34
  readonly genre?: string;
35
35
  /** Year */
36
36
  readonly year?: number;
37
+ /** Full release date, e.g. "1975-10-31" or "1975". Lossless companion to {@link year}. */
38
+ readonly date?: string;
37
39
  /** Track number */
38
40
  readonly track?: number;
39
41
  /** Set the track title */
@@ -48,6 +50,11 @@ export interface MutableTag {
48
50
  setGenre(value: string): MutableTag;
49
51
  /** Set the release year */
50
52
  setYear(value: number): MutableTag;
53
+ /**
54
+ * Set the full release date at ISO precision (e.g. "1975-10-31"); `year` resyncs to the
55
+ * leading year. `setDate("")` clears the date AND year together.
56
+ */
57
+ setDate(value: string): MutableTag;
51
58
  /** Set the track number */
52
59
  setTrack(value: number): MutableTag;
53
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mutable-tag.d.ts","sourceRoot":"","sources":["../../../src/taglib/mutable-tag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,UAAU;IACzB,kBAAkB;IAClB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB;IAClB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB;IACjB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc;IACd,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY;IACZ,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW;IACX,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACpC,0BAA0B;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACrC,yBAAyB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACpC,sBAAsB;IACtB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACtC,oBAAoB;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACpC,2BAA2B;IAC3B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACnC,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;CACrC"}
1
+ {"version":3,"file":"mutable-tag.d.ts","sourceRoot":"","sources":["../../../src/taglib/mutable-tag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,UAAU;IACzB,kBAAkB;IAClB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB;IAClB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB;IACjB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc;IACd,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY;IACZ,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW;IACX,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACpC,0BAA0B;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACrC,yBAAyB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACpC,sBAAsB;IACtB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACtC,oBAAoB;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACpC,2BAA2B;IAC3B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACnC;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IACnC,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;CACrC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Full-file reconstruct used by `saveToFile` for the two cases where the
3
+ * editing handle does not itself hold the complete file bytes: an Emscripten
4
+ * partial load, and the WASI path-mode "save as". Both must produce a complete
5
+ * file at the target without mutating the editing handle's source in place.
6
+ */
7
+ import type { FileHandle, TagLibModule } from "../wasm.js";
8
+ /**
9
+ * Reload the full file from `source` into a fresh handle, apply the editing
10
+ * handle's state, save, and write the result to `targetPath`.
11
+ */
12
+ export declare function saveViaFreshHandle(module: TagLibModule, editing: FileHandle, source: string | Uint8Array | ArrayBuffer | File, targetPath: string, sourceComplete: boolean): Promise<void>;
13
+ //# sourceMappingURL=save-reconstruct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save-reconstruct.d.ts","sourceRoot":"","sources":["../../../src/taglib/save-reconstruct.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAgC3D;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,EAChD,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
@@ -0,0 +1,39 @@
1
+ import { FileOperationError, InvalidFormatError } from "../errors.js";
2
+ import { readFileData } from "../utils/file.js";
3
+ import { writeFileData } from "../utils/write.js";
4
+ import { wrapEmbindHandle } from "./embind-adapter.js";
5
+ import { copyExtraState } from "./extra-state-registry.js";
6
+ function copyEditedState(target, source, sourceComplete) {
7
+ target.setTagData(source.getTagData());
8
+ target.setProperties(
9
+ sourceComplete ? source.getProperties() : { ...target.getProperties(), ...source.getProperties() }
10
+ );
11
+ copyExtraState(target, source, sourceComplete);
12
+ }
13
+ async function saveViaFreshHandle(module, editing, source, targetPath, sourceComplete) {
14
+ const rawFullHandle = module.createFileHandle();
15
+ const fullFileHandle = module.isWasi ? rawFullHandle : wrapEmbindHandle(rawFullHandle);
16
+ try {
17
+ {
18
+ const data = await readFileData(source);
19
+ if (!fullFileHandle.loadFromBuffer(data)) {
20
+ throw new InvalidFormatError(
21
+ "Failed to load full audio file for saving"
22
+ );
23
+ }
24
+ }
25
+ copyEditedState(fullFileHandle, editing, sourceComplete);
26
+ if (!fullFileHandle.save()) {
27
+ throw new FileOperationError(
28
+ "save",
29
+ "Failed to save changes to full file"
30
+ );
31
+ }
32
+ await writeFileData(targetPath, fullFileHandle.getBuffer());
33
+ } finally {
34
+ fullFileHandle.destroy();
35
+ }
36
+ }
37
+ export {
38
+ saveViaFreshHandle
39
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-mappings.d.ts","sourceRoot":"","sources":["../../../src/types/metadata-mappings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,OAAO,CACL,MAAM,WAAW,EACf,UAAU,GACV,SAAS,GACT,QAAQ,GACR,UAAU,GACV,MAAM,GACN,UAAU,GACV,MAAM,CACT,EACD,YAAY,CAwMb,CAAC"}
1
+ {"version":3,"file":"metadata-mappings.d.ts","sourceRoot":"","sources":["../../../src/types/metadata-mappings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,OAAO,CACL,MAAM,WAAW,EACf,UAAU,GACV,SAAS,GACT,QAAQ,GACR,UAAU,GACV,MAAM,GACN,UAAU,GACV,MAAM,CACT,EACD,YAAY,CAgNb,CAAC"}
@@ -36,6 +36,14 @@ const METADATA_MAPPINGS = {
36
36
  mp4: "\xA9day",
37
37
  wav: "ICRD"
38
38
  },
39
+ // Full release date string — same underlying frames as `year`, but preserves
40
+ // day/month precision instead of collapsing to the integer year.
41
+ date: {
42
+ id3v2: { frame: "TDRC" },
43
+ vorbis: "DATE",
44
+ mp4: "\xA9day",
45
+ wav: "ICRD"
46
+ },
39
47
  track: {
40
48
  id3v2: { frame: "TRCK" },
41
49
  vorbis: "TRACKNUMBER",
@@ -70,6 +70,11 @@ export interface TagInput {
70
70
  readonly genre?: string | string[];
71
71
  /** Year */
72
72
  readonly year?: number;
73
+ /**
74
+ * Full release date (e.g. "1975-10-31" or "1975"). Maps to the same DATE tag
75
+ * as {@link year}; when both are provided, `date` wins (more precise).
76
+ */
77
+ readonly date?: string | string[];
73
78
  /** Track number */
74
79
  readonly track?: number;
75
80
  readonly appleSoundCheck?: string | string[];
@@ -125,6 +130,11 @@ export interface TagInput {
125
130
  * ```
126
131
  */
127
132
  export interface ExtendedTag extends Tag {
133
+ /**
134
+ * Full release date as stored in the DATE tag (e.g. "1975-10-31" or "1975").
135
+ * Preserves day/month precision that the numeric {@link Tag.year} cannot.
136
+ */
137
+ readonly date?: string | string[];
128
138
  /** AcoustID fingerprint (Chromaprint) */
129
139
  readonly acoustidFingerprint?: string[];
130
140
  /** AcoustID UUID */
@@ -1 +1 @@
1
- {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/types/tags.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/types/tags.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tag-mapping.d.ts","sourceRoot":"","sources":["../../../src/utils/tag-mapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAqCtE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CA+B1E;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GACtB,IAAI,CAIN;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvB,WAAW,CAqCb"}
1
+ {"version":3,"file":"tag-mapping.d.ts","sourceRoot":"","sources":["../../../src/utils/tag-mapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAsCtE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAmC1E;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GACtB,IAAI,CAIN;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvB,WAAW,CA0Cb"}
@@ -15,6 +15,7 @@ const BASIC_FIELDS = /* @__PURE__ */ new Set([
15
15
  "comment",
16
16
  "genre",
17
17
  "year",
18
+ "date",
18
19
  "track"
19
20
  ]);
20
21
  const NUMERIC_FIELDS = /* @__PURE__ */ new Set([
@@ -37,6 +38,9 @@ function mapPropertiesToExtendedTag(props) {
37
38
  if (tagField === "year" || tagField === "track") {
38
39
  const num = parseNumeric(values[0]);
39
40
  if (num !== void 0) tag[tagField] = num;
41
+ if (propKey === "date") {
42
+ tag.date = values.length === 1 ? values[0] : values;
43
+ }
40
44
  } else {
41
45
  tag[tagField] = values;
42
46
  }
@@ -77,6 +81,9 @@ function normalizeTagInput(input) {
77
81
  if (input.year !== void 0) {
78
82
  props.date = [String(input.year)];
79
83
  }
84
+ if (input.date !== void 0) {
85
+ props.date = Array.isArray(input.date) ? input.date : [input.date];
86
+ }
80
87
  if (input.track !== void 0) {
81
88
  props.trackNumber = [String(input.track)];
82
89
  }
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.2.1";
1
+ export declare const VERSION = "1.3.0";
2
2
  //# sourceMappingURL=version.d.ts.map