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.
- package/dist/index.browser.js +232 -102
- package/dist/simple.browser.js +232 -102
- package/dist/src/constants/complex-properties.d.ts +0 -14
- package/dist/src/constants/complex-properties.d.ts.map +1 -1
- package/dist/src/errors/base.js +5 -2
- package/dist/src/errors/classes.js +13 -10
- package/dist/src/msgpack/encoder.d.ts +6 -0
- package/dist/src/msgpack/encoder.d.ts.map +1 -1
- package/dist/src/msgpack/encoder.js +15 -0
- package/dist/src/runtime/unified-loader/types.js +4 -1
- package/dist/src/runtime/wasi-adapter/file-handle.d.ts +3 -1
- package/dist/src/runtime/wasi-adapter/file-handle.d.ts.map +1 -1
- package/dist/src/runtime/wasi-adapter/file-handle.js +41 -4
- package/dist/src/runtime/wasi-memory.d.ts +0 -5
- package/dist/src/runtime/wasi-memory.d.ts.map +1 -1
- package/dist/src/runtime/wasi-memory.js +6 -10
- package/dist/src/taglib/audio-file-base.d.ts.map +1 -1
- package/dist/src/taglib/audio-file-base.js +13 -1
- package/dist/src/taglib/audio-file-impl.d.ts.map +1 -1
- package/dist/src/taglib/audio-file-impl.js +22 -39
- package/dist/src/taglib/embind-adapter.d.ts.map +1 -1
- package/dist/src/taglib/embind-adapter.js +18 -0
- package/dist/src/taglib/extra-state-registry.d.ts +26 -0
- package/dist/src/taglib/extra-state-registry.d.ts.map +1 -0
- package/dist/src/taglib/extra-state-registry.js +59 -0
- package/dist/src/taglib/mutable-tag.d.ts +7 -0
- package/dist/src/taglib/mutable-tag.d.ts.map +1 -1
- package/dist/src/taglib/save-reconstruct.d.ts +13 -0
- package/dist/src/taglib/save-reconstruct.d.ts.map +1 -0
- package/dist/src/taglib/save-reconstruct.js +39 -0
- package/dist/src/types/metadata-mappings.d.ts.map +1 -1
- package/dist/src/types/metadata-mappings.js +8 -0
- package/dist/src/types/tags.d.ts +10 -0
- package/dist/src/types/tags.d.ts.map +1 -1
- package/dist/src/utils/tag-mapping.d.ts.map +1 -1
- package/dist/src/utils/tag-mapping.js +7 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/wasm.d.ts +14 -0
- package/dist/src/wasm.d.ts.map +1 -1
- package/dist/taglib-wasi.wasm +0 -0
- 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,
|
|
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
|
-
|
|
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 === "
|
|
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 === "
|
|
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
|
|
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
|
|
184
|
-
this
|
|
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;
|
|
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
|
|
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;
|
|
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 {
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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",
|
package/dist/src/types/tags.d.ts
CHANGED
|
@@ -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;
|
|
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
|
}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.3.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|