taglib-wasm 1.4.3 → 1.5.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 +37 -1
- package/dist/index.browser.js +228 -80
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/simple.browser.js +171 -18
- package/dist/src/constants/complex-properties.d.ts +19 -0
- package/dist/src/constants/complex-properties.d.ts.map +1 -1
- package/dist/src/msgpack/encoder.d.ts.map +1 -1
- package/dist/src/msgpack/encoder.js +1 -0
- package/dist/src/runtime/detector.d.ts +2 -0
- package/dist/src/runtime/detector.d.ts.map +1 -1
- package/dist/src/runtime/detector.js +1 -0
- package/dist/src/runtime/loader-types.d.ts +5 -2
- package/dist/src/runtime/loader-types.d.ts.map +1 -1
- package/dist/src/runtime/module-loader.d.ts +3 -2
- package/dist/src/runtime/module-loader.d.ts.map +1 -1
- package/dist/src/runtime/module-loader.js +12 -0
- package/dist/src/runtime/unified-loader/loader.d.ts.map +1 -1
- package/dist/src/runtime/unified-loader/loader.js +7 -0
- package/dist/src/runtime/unified-loader/module-loading.d.ts +2 -0
- package/dist/src/runtime/unified-loader/module-loading.d.ts.map +1 -1
- package/dist/src/runtime/unified-loader/module-loading.js +19 -8
- package/dist/src/runtime/unified-loader/module-selection.d.ts.map +1 -1
- package/dist/src/runtime/unified-loader/module-selection.js +3 -0
- package/dist/src/runtime/unified-loader/types.d.ts +4 -1
- package/dist/src/runtime/unified-loader/types.d.ts.map +1 -1
- package/dist/src/runtime/wasi-adapter/file-handle.d.ts +5 -1
- package/dist/src/runtime/wasi-adapter/file-handle.d.ts.map +1 -1
- package/dist/src/runtime/wasi-adapter/file-handle.js +34 -0
- package/dist/src/runtime/wasi-adapter/wasm-io.d.ts +2 -0
- package/dist/src/runtime/wasi-adapter/wasm-io.d.ts.map +1 -1
- package/dist/src/runtime/wasi-adapter/wasm-io.js +56 -1
- package/dist/src/runtime/wasi-host-loader.d.ts.map +1 -1
- package/dist/src/runtime/wasi-host-loader.js +3 -1
- package/dist/src/runtime/wasmer-sdk-loader/types.d.ts +1 -0
- package/dist/src/runtime/wasmer-sdk-loader/types.d.ts.map +1 -1
- package/dist/src/taglib/audio-file-impl.d.ts +8 -2
- package/dist/src/taglib/audio-file-impl.d.ts.map +1 -1
- package/dist/src/taglib/audio-file-impl.js +55 -17
- package/dist/src/taglib/audio-file-interface.d.ts +24 -4
- package/dist/src/taglib/audio-file-interface.d.ts.map +1 -1
- package/dist/src/taglib/embind-adapter.d.ts.map +1 -1
- package/dist/src/taglib/embind-adapter.js +12 -0
- package/dist/src/taglib/extra-state-registry.d.ts.map +1 -1
- package/dist/src/taglib/extra-state-registry.js +10 -0
- package/dist/src/taglib/id3v2-frames.d.ts +12 -0
- package/dist/src/taglib/id3v2-frames.d.ts.map +1 -0
- package/dist/src/taglib/id3v2-frames.js +42 -0
- package/dist/src/taglib/taglib-class.d.ts.map +1 -1
- package/dist/src/taglib/taglib-class.js +2 -1
- package/dist/src/types/metadata-mappings.d.ts +1 -1
- package/dist/src/types/metadata-mappings.d.ts.map +1 -1
- package/dist/src/types/tags.d.ts +2 -0
- package/dist/src/types/tags.d.ts.map +1 -1
- package/dist/src/utils/node-fs.d.ts +27 -0
- package/dist/src/utils/node-fs.d.ts.map +1 -0
- package/dist/src/utils/node-fs.js +21 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/wasm.d.ts +20 -0
- package/dist/src/wasm.d.ts.map +1 -1
- package/dist/taglib-wasi.wasm +0 -0
- package/dist/taglib-web.wasm +0 -0
- package/dist/taglib-wrapper.js +1 -1
- package/package.json +1 -1
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { WasiModule } from "../wasmer-sdk-loader/types.js";
|
|
8
8
|
import type { ExtendedTag } from "../../types.js";
|
|
9
|
+
import type { RawId3v2Frame } from "../../wasm.js";
|
|
9
10
|
export declare function readTagsFromWasm(wasi: WasiModule, buffer: Uint8Array): Uint8Array;
|
|
10
11
|
export declare function readTagsFromWasmPath(wasi: WasiModule, path: string): Uint8Array;
|
|
12
|
+
export declare function readId3v2FramesFromWasm(wasi: WasiModule, source: Uint8Array | string, id?: string): RawId3v2Frame[];
|
|
11
13
|
export declare function writeTagsToWasmPath(wasi: WasiModule, path: string, tagData: ExtendedTag): boolean;
|
|
12
14
|
export declare function writeTagsToWasm(wasi: WasiModule, fileData: Uint8Array, tagData: ExtendedTag): Uint8Array | null;
|
|
13
15
|
//# sourceMappingURL=wasm-io.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm-io.d.ts","sourceRoot":"","sources":["../../../../src/runtime/wasi-adapter/wasm-io.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"wasm-io.d.ts","sourceRoot":"","sources":["../../../../src/runtime/wasi-adapter/wasm-io.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAYhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKnD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,UAAU,GACjB,UAAU,CAoCZ;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,GACX,UAAU,CA8BZ;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,EAAE,CAAC,EAAE,MAAM,GACV,aAAa,EAAE,CA8CjB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,GACnB,OAAO,CA2BT;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,WAAW,GACnB,UAAU,GAAG,IAAI,CA8BnB"}
|
|
@@ -47,8 +47,12 @@ import {
|
|
|
47
47
|
WasmArena,
|
|
48
48
|
WasmMemoryError
|
|
49
49
|
} from "../wasi-memory.js";
|
|
50
|
-
import {
|
|
50
|
+
import {
|
|
51
|
+
InvalidFormatError,
|
|
52
|
+
UnsupportedFormatError
|
|
53
|
+
} from "../../errors/classes.js";
|
|
51
54
|
import { encodeTagData } from "../../msgpack/encoder.js";
|
|
55
|
+
import { decodeMessagePack } from "../../msgpack/decoder.js";
|
|
52
56
|
const TL_ERROR_UNSUPPORTED_FORMAT = -2;
|
|
53
57
|
const TL_ERROR_PARSE_FAILED = -6;
|
|
54
58
|
function readTagsFromWasm(wasi, buffer) {
|
|
@@ -119,6 +123,56 @@ function readTagsFromWasmPath(wasi, path) {
|
|
|
119
123
|
__callDispose(_stack, _error, _hasError);
|
|
120
124
|
}
|
|
121
125
|
}
|
|
126
|
+
function readId3v2FramesFromWasm(wasi, source, id) {
|
|
127
|
+
var _stack = [];
|
|
128
|
+
try {
|
|
129
|
+
const arena = __using(_stack, new WasmArena(wasi));
|
|
130
|
+
const idAlloc = id ? arena.allocString(id) : null;
|
|
131
|
+
const outSizePtr = arena.allocUint32();
|
|
132
|
+
let resultPtr;
|
|
133
|
+
if (typeof source === "string") {
|
|
134
|
+
const pathAlloc = arena.allocString(source);
|
|
135
|
+
resultPtr = wasi.tl_read_id3v2_frames(
|
|
136
|
+
pathAlloc.ptr,
|
|
137
|
+
0,
|
|
138
|
+
0,
|
|
139
|
+
idAlloc?.ptr ?? 0,
|
|
140
|
+
outSizePtr.ptr
|
|
141
|
+
);
|
|
142
|
+
} else {
|
|
143
|
+
const inputBuf = arena.allocBuffer(source);
|
|
144
|
+
resultPtr = wasi.tl_read_id3v2_frames(
|
|
145
|
+
0,
|
|
146
|
+
inputBuf.ptr,
|
|
147
|
+
inputBuf.size,
|
|
148
|
+
idAlloc?.ptr ?? 0,
|
|
149
|
+
outSizePtr.ptr
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
if (resultPtr === 0) {
|
|
153
|
+
const errorCode = wasi.tl_get_last_error_code();
|
|
154
|
+
if (errorCode === TL_ERROR_UNSUPPORTED_FORMAT) {
|
|
155
|
+
throw new UnsupportedFormatError("non-MP3", ["MP3"], {
|
|
156
|
+
operation: "readId3v2Frames"
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
throw new WasmMemoryError(
|
|
160
|
+
`error code ${errorCode}`,
|
|
161
|
+
"read ID3v2 frames",
|
|
162
|
+
errorCode
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
const outSize = outSizePtr.readUint32();
|
|
166
|
+
const u8 = new Uint8Array(wasi.memory.buffer);
|
|
167
|
+
const bytes = new Uint8Array(u8.slice(resultPtr, resultPtr + outSize));
|
|
168
|
+
wasi.free(resultPtr);
|
|
169
|
+
return decodeMessagePack(bytes);
|
|
170
|
+
} catch (_) {
|
|
171
|
+
var _error = _, _hasError = true;
|
|
172
|
+
} finally {
|
|
173
|
+
__callDispose(_stack, _error, _hasError);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
122
176
|
function writeTagsToWasmPath(wasi, path, tagData) {
|
|
123
177
|
var _stack = [];
|
|
124
178
|
try {
|
|
@@ -187,6 +241,7 @@ function writeTagsToWasm(wasi, fileData, tagData) {
|
|
|
187
241
|
}
|
|
188
242
|
}
|
|
189
243
|
export {
|
|
244
|
+
readId3v2FramesFromWasm,
|
|
190
245
|
readTagsFromWasm,
|
|
191
246
|
readTagsFromWasmPath,
|
|
192
247
|
writeTagsToWasm,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasi-host-loader.d.ts","sourceRoot":"","sources":["../../../src/runtime/wasi-host-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"wasi-host-loader.d.ts","sourceRoot":"","sources":["../../../src/runtime/wasi-host-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,EAAE,CAAC,EAAE,kBAAkB,CAAC;CACzB;AAED,qBAAa,iBAAkB,SAAQ,WAAW;gBACpC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM7C;AAcD,wBAAsB,YAAY,CAChC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,CAmDlC"}
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
} from "./wasi-host.js";
|
|
4
4
|
import { TagLibError } from "../errors/base.js";
|
|
5
5
|
import { fileUrlToPath } from "../utils/path.js";
|
|
6
|
+
import { isDeno } from "./detector.js";
|
|
6
7
|
class WasiHostLoadError extends TagLibError {
|
|
7
8
|
constructor(message, cause) {
|
|
8
9
|
super("WASI_HOST", message, cause ? { cause } : void 0);
|
|
@@ -13,7 +14,7 @@ class WasiHostLoadError extends TagLibError {
|
|
|
13
14
|
}
|
|
14
15
|
async function resolveFs(provided) {
|
|
15
16
|
if (provided) return provided;
|
|
16
|
-
if (
|
|
17
|
+
if (isDeno()) {
|
|
17
18
|
const { createDenoFsProvider } = await import("./wasi-fs-deno.js");
|
|
18
19
|
return createDenoFsProvider();
|
|
19
20
|
}
|
|
@@ -93,6 +94,7 @@ function createWasiModuleFromInstance(instance, memory, wasiImports) {
|
|
|
93
94
|
malloc: (size) => exports.tl_malloc(size),
|
|
94
95
|
free: (ptr) => exports.tl_free(ptr),
|
|
95
96
|
tl_read_tags: (pathPtr, bufPtr, len, outSizePtr) => exports.tl_read_tags(pathPtr, bufPtr, len, outSizePtr),
|
|
97
|
+
tl_read_id3v2_frames: (pathPtr, bufPtr, len, idPtr, outSizePtr) => exports.tl_read_id3v2_frames(pathPtr, bufPtr, len, idPtr, outSizePtr),
|
|
96
98
|
tl_write_tags: (pathPtr, bufPtr, len, tagsPtr, tagsSz, outPtr, outSzPtr) => exports.tl_write_tags(pathPtr, bufPtr, len, tagsPtr, tagsSz, outPtr, outSzPtr),
|
|
97
99
|
tl_get_last_error: () => exports.tl_get_last_error(),
|
|
98
100
|
tl_get_last_error_code: () => exports.tl_get_last_error_code(),
|
|
@@ -14,6 +14,7 @@ export interface WasiModule {
|
|
|
14
14
|
malloc(size: number): number;
|
|
15
15
|
free(ptr: number): void;
|
|
16
16
|
tl_read_tags(pathPtr: number, bufPtr: number, len: number, outSizePtr: number): number;
|
|
17
|
+
tl_read_id3v2_frames(pathPtr: number, bufPtr: number, len: number, idPtr: number, outSizePtr: number): number;
|
|
17
18
|
tl_write_tags(pathPtr: number, bufPtr: number, len: number, tagsPtr: number, tagsSize: number, outBufPtr: number, outSizePtr: number): number;
|
|
18
19
|
tl_get_last_error(): number;
|
|
19
20
|
tl_get_last_error_code(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/runtime/wasmer-sdk-loader/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM7C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAEzB,UAAU,IAAI,MAAM,CAAC;IACrB,cAAc,IAAI,MAAM,CAAC;IAGzB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAGxB,YAAY,CACV,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC;IACV,aAAa,CACX,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC;IAGV,iBAAiB,IAAI,MAAM,CAAC;IAC5B,sBAAsB,IAAI,MAAM,CAAC;IACjC,cAAc,IAAI,IAAI,CAAC;IAGvB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;CAC5B"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/runtime/wasmer-sdk-loader/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM7C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAEzB,UAAU,IAAI,MAAM,CAAC;IACrB,cAAc,IAAI,MAAM,CAAC;IAGzB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAGxB,YAAY,CACV,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC;IACV,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC;IACV,aAAa,CACX,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC;IAGV,iBAAiB,IAAI,MAAM,CAAC;IAC5B,sBAAsB,IAAI,MAAM,CAAC;IACjC,cAAc,IAAI,IAAI,CAAC;IAGvB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;CAC5B"}
|
|
@@ -2,9 +2,12 @@ import type { FileHandle, TagLibModule } from "../wasm.js";
|
|
|
2
2
|
import type { OpenOptions, Picture } from "../types.js";
|
|
3
3
|
import type { Chapter, SetChaptersOptions } from "../types/chapters.js";
|
|
4
4
|
import type { BroadcastAudioExtension } from "../types/bwf.js";
|
|
5
|
-
import type { Rating, UnsyncedLyrics } from "../constants/complex-properties.js";
|
|
5
|
+
import type { Id3v2Frame, Rating, UnsyncedLyrics } from "../constants/complex-properties.js";
|
|
6
|
+
import { type NormalizedRating } from "../utils/rating.js";
|
|
6
7
|
import type { AudioFile } from "./audio-file-interface.js";
|
|
7
8
|
import { BaseAudioFileImpl } from "./audio-file-base.js";
|
|
9
|
+
/** @internal Exported for unit tests (tests/node-fs-acquisition.test.ts). */
|
|
10
|
+
export declare function readFileSync(path: string): Uint8Array;
|
|
8
11
|
/**
|
|
9
12
|
* Implementation of AudioFile interface using Embind API.
|
|
10
13
|
*
|
|
@@ -33,8 +36,11 @@ export declare class AudioFileImpl extends BaseAudioFileImpl implements AudioFil
|
|
|
33
36
|
setRatings(ratings: Rating[]): void;
|
|
34
37
|
getLyrics(): UnsyncedLyrics[];
|
|
35
38
|
setLyrics(lyrics: UnsyncedLyrics[]): void;
|
|
36
|
-
getRating():
|
|
39
|
+
getRating(): NormalizedRating | undefined;
|
|
37
40
|
setRating(rating: number, email?: string): void;
|
|
41
|
+
getId3v2Frames(id?: string): Id3v2Frame[];
|
|
42
|
+
setId3v2Frames(id: string, data: Uint8Array[]): void;
|
|
43
|
+
removeId3v2Frames(id: string): void;
|
|
38
44
|
hasId3Tags(): {
|
|
39
45
|
v1: boolean;
|
|
40
46
|
v2: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-file-impl.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAGV,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,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,EACV,MAAM,EACN,cAAc,EACf,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,EACV,UAAU,EAGV,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,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,EACV,UAAU,EACV,MAAM,EACN,cAAc,EACf,MAAM,oCAAoC,CAAC;AAc5C,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAoBzD,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CASrD;AAED;;;;;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;IAef,aAAa,IAAI,UAAU;IA2BrB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4D9C,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,cAAc,EAAE;IAS7B,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAQzC,SAAS,IAAI,gBAAgB,GAAG,SAAS;IAKzC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/C,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAMzC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI;IAOpD,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMnC,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,11 +3,23 @@ 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 {
|
|
6
|
+
import {
|
|
7
|
+
assertFrameBodies,
|
|
8
|
+
assertFrameId,
|
|
9
|
+
assertMp3,
|
|
10
|
+
toPublicFrame
|
|
11
|
+
} from "./id3v2-frames.js";
|
|
12
|
+
import {
|
|
13
|
+
errorMessage,
|
|
14
|
+
FileOperationError,
|
|
15
|
+
UnsupportedFormatError
|
|
16
|
+
} from "../errors.js";
|
|
7
17
|
import { writeFileData } from "../utils/write.js";
|
|
18
|
+
import { getNodeFsSync } from "../utils/node-fs.js";
|
|
19
|
+
import { normalized } from "../utils/rating.js";
|
|
20
|
+
import { isDeno } from "../runtime/detector.js";
|
|
8
21
|
import { BaseAudioFileImpl } from "./audio-file-base.js";
|
|
9
22
|
import { saveViaFreshHandle } from "./save-reconstruct.js";
|
|
10
|
-
let _nodeFs;
|
|
11
23
|
function sortChapters(list) {
|
|
12
24
|
return [...list].sort((a, b) => a.startTimeMs - b.startTimeMs);
|
|
13
25
|
}
|
|
@@ -18,16 +30,14 @@ function inferEndTimeMs(sorted, index, trackEndMs) {
|
|
|
18
30
|
return next ? next.startTimeMs : trackEndMs;
|
|
19
31
|
}
|
|
20
32
|
function readFileSync(path) {
|
|
21
|
-
if (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (_nodeFs) return new Uint8Array(_nodeFs.readFileSync(path));
|
|
30
|
-
return new Uint8Array(0);
|
|
33
|
+
if (isDeno()) return Deno.readFileSync(path);
|
|
34
|
+
const fs = getNodeFsSync();
|
|
35
|
+
if (fs) return new Uint8Array(fs.readFileSync(path));
|
|
36
|
+
throw new FileOperationError(
|
|
37
|
+
"read",
|
|
38
|
+
"node:fs is unavailable in this runtime: cannot read file data from disk",
|
|
39
|
+
path
|
|
40
|
+
);
|
|
31
41
|
}
|
|
32
42
|
class AudioFileImpl extends BaseAudioFileImpl {
|
|
33
43
|
constructor(module, fileHandle, sourcePath, originalSource, isPartiallyLoaded = false, partialLoadOptions) {
|
|
@@ -49,6 +59,7 @@ class AudioFileImpl extends BaseAudioFileImpl {
|
|
|
49
59
|
);
|
|
50
60
|
}
|
|
51
61
|
this.cachedAudioProperties = null;
|
|
62
|
+
this.pathModeBuffer = null;
|
|
52
63
|
return this.handle.save();
|
|
53
64
|
}
|
|
54
65
|
getFileBuffer() {
|
|
@@ -59,11 +70,20 @@ class AudioFileImpl extends BaseAudioFileImpl {
|
|
|
59
70
|
try {
|
|
60
71
|
this.pathModeBuffer = readFileSync(this.sourcePath);
|
|
61
72
|
return this.pathModeBuffer;
|
|
62
|
-
} catch {
|
|
63
|
-
|
|
73
|
+
} catch (error) {
|
|
74
|
+
if (error instanceof FileOperationError) throw error;
|
|
75
|
+
throw new FileOperationError(
|
|
76
|
+
"read",
|
|
77
|
+
`Cannot return file data: ${errorMessage(error)}`,
|
|
78
|
+
this.sourcePath,
|
|
79
|
+
{ cause: error }
|
|
80
|
+
);
|
|
64
81
|
}
|
|
65
82
|
}
|
|
66
|
-
|
|
83
|
+
throw new FileOperationError(
|
|
84
|
+
"read",
|
|
85
|
+
"No file data available: in-memory buffer is empty and no source path is set"
|
|
86
|
+
);
|
|
67
87
|
}
|
|
68
88
|
async saveToFile(path) {
|
|
69
89
|
const targetPath = path ?? this.sourcePath;
|
|
@@ -104,6 +124,7 @@ class AudioFileImpl extends BaseAudioFileImpl {
|
|
|
104
124
|
await writeFileData(targetPath, buffer);
|
|
105
125
|
}
|
|
106
126
|
}
|
|
127
|
+
this.pathModeBuffer = null;
|
|
107
128
|
}
|
|
108
129
|
getPictures() {
|
|
109
130
|
const picturesArray = this.handle.getPictures();
|
|
@@ -215,11 +236,27 @@ class AudioFileImpl extends BaseAudioFileImpl {
|
|
|
215
236
|
}
|
|
216
237
|
getRating() {
|
|
217
238
|
const ratings = this.getRatings();
|
|
218
|
-
return ratings.length > 0 ? ratings[0].rating : void 0;
|
|
239
|
+
return ratings.length > 0 ? normalized(ratings[0].rating) : void 0;
|
|
219
240
|
}
|
|
220
241
|
setRating(rating, email) {
|
|
221
242
|
this.setRatings([{ rating, email, counter: 0 }]);
|
|
222
243
|
}
|
|
244
|
+
getId3v2Frames(id) {
|
|
245
|
+
assertMp3(this.getFormat());
|
|
246
|
+
if (id !== void 0) assertFrameId(id, "read");
|
|
247
|
+
return this.handle.getId3v2Frames(id ?? "").map(toPublicFrame);
|
|
248
|
+
}
|
|
249
|
+
setId3v2Frames(id, data) {
|
|
250
|
+
assertMp3(this.getFormat());
|
|
251
|
+
assertFrameId(id, "write");
|
|
252
|
+
assertFrameBodies(id, data);
|
|
253
|
+
this.handle.setId3v2Frames(id, data);
|
|
254
|
+
}
|
|
255
|
+
removeId3v2Frames(id) {
|
|
256
|
+
assertMp3(this.getFormat());
|
|
257
|
+
assertFrameId(id, "write");
|
|
258
|
+
this.handle.removeId3v2Frames(id);
|
|
259
|
+
}
|
|
223
260
|
hasId3Tags() {
|
|
224
261
|
return this.handle.hasId3Tags();
|
|
225
262
|
}
|
|
@@ -231,5 +268,6 @@ class AudioFileImpl extends BaseAudioFileImpl {
|
|
|
231
268
|
}
|
|
232
269
|
}
|
|
233
270
|
export {
|
|
234
|
-
AudioFileImpl
|
|
271
|
+
AudioFileImpl,
|
|
272
|
+
readFileSync
|
|
235
273
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { AudioProperties, FileType, Picture, PropertyMap } from "../types.js";
|
|
2
2
|
import type { TypedAudioProperties } from "../types/audio-formats.js";
|
|
3
|
-
import type { Rating, UnsyncedLyrics } from "../constants/complex-properties.js";
|
|
3
|
+
import type { Id3v2Frame, Rating, UnsyncedLyrics } from "../constants/complex-properties.js";
|
|
4
4
|
import type { MutableTag } from "./mutable-tag.js";
|
|
5
5
|
import type { FormatPropertyKey } from "../types/format-property-keys.js";
|
|
6
|
+
import type { NormalizedRating } from "../utils/rating.js";
|
|
6
7
|
/**
|
|
7
8
|
* Represents an audio file with metadata and audio properties.
|
|
8
9
|
* Provides methods for reading and writing metadata, accessing audio properties,
|
|
@@ -39,7 +40,11 @@ export interface AudioFile {
|
|
|
39
40
|
removeMP4Item(key: string): void;
|
|
40
41
|
/** Save all changes to the in-memory buffer. */
|
|
41
42
|
save(): boolean;
|
|
42
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Get the current file data as a buffer, including any modifications.
|
|
45
|
+
* @throws {FileOperationError} If the data lives on disk (WASI path mode)
|
|
46
|
+
* and cannot be read back — never returns an empty buffer on failure.
|
|
47
|
+
*/
|
|
43
48
|
getFileBuffer(): Uint8Array;
|
|
44
49
|
/**
|
|
45
50
|
* Save all changes to a file on disk.
|
|
@@ -87,10 +92,25 @@ export interface AudioFile {
|
|
|
87
92
|
getRatings(): Rating[];
|
|
88
93
|
/** Set ratings in the audio file (replaces all existing). */
|
|
89
94
|
setRatings(ratings: Rating[]): void;
|
|
90
|
-
/** Get the primary rating (first one found), or undefined. */
|
|
91
|
-
getRating():
|
|
95
|
+
/** Get the primary rating (first one found, normalized 0.0-1.0), or undefined. */
|
|
96
|
+
getRating(): NormalizedRating | undefined;
|
|
92
97
|
/** Set the primary rating (normalized 0.0-1.0). */
|
|
93
98
|
setRating(rating: number, email?: string): void;
|
|
99
|
+
/**
|
|
100
|
+
* Raw ID3v2 frame bodies by frame ID (MP3 only) — the escape hatch for
|
|
101
|
+
* vendor/unmodeled frames (RGAD, NCON, SYTC, custom TXXX...). Reads reflect
|
|
102
|
+
* persisted file state plus staged raw-frame changes; pending typed edits
|
|
103
|
+
* may not be visible until save (backend-dependent for modeled IDs).
|
|
104
|
+
*/
|
|
105
|
+
getId3v2Frames(id?: string): Id3v2Frame[];
|
|
106
|
+
/**
|
|
107
|
+
* Replace ALL frames carrying `id` with the given bodies (per-ID list
|
|
108
|
+
* replace; empty array removes them all). Bytes round-trip verbatim for
|
|
109
|
+
* IDs TagLib does not model. MP3 only.
|
|
110
|
+
*/
|
|
111
|
+
setId3v2Frames(id: string, data: Uint8Array[]): void;
|
|
112
|
+
/** Remove every frame with this ID. Equivalent to setId3v2Frames(id, []). */
|
|
113
|
+
removeId3v2Frames(id: string): void;
|
|
94
114
|
/**
|
|
95
115
|
* Get unsynchronized lyrics (ID3v2 USLT / Vorbis LYRICS). Returned identically
|
|
96
116
|
* on both backends; `description`/`language` are not round-tripped (text-only).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-file-interface.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,OAAO,EACP,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"audio-file-interface.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,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,
|
|
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,CA6IlE"}
|
|
@@ -2,6 +2,7 @@ function isValidBitrateMode(value) {
|
|
|
2
2
|
return value === "CBR" || value === "VBR" || value === "ABR";
|
|
3
3
|
}
|
|
4
4
|
function wrapEmbindHandle(raw) {
|
|
5
|
+
const stagedId3v2Frames = {};
|
|
5
6
|
const overrides = {
|
|
6
7
|
getTagData() {
|
|
7
8
|
const tw = raw.getTag();
|
|
@@ -61,6 +62,17 @@ function wrapEmbindHandle(raw) {
|
|
|
61
62
|
else delete props["LYRICS"];
|
|
62
63
|
handle.setProperties(props);
|
|
63
64
|
},
|
|
65
|
+
setId3v2Frames(id, data) {
|
|
66
|
+
stagedId3v2Frames[id] = data.map((d) => new Uint8Array(d));
|
|
67
|
+
raw.setId3v2Frames(id, data);
|
|
68
|
+
},
|
|
69
|
+
removeId3v2Frames(id) {
|
|
70
|
+
stagedId3v2Frames[id] = [];
|
|
71
|
+
raw.removeId3v2Frames(id);
|
|
72
|
+
},
|
|
73
|
+
getStagedId3v2Frames() {
|
|
74
|
+
return Object.keys(stagedId3v2Frames).length > 0 ? { ...stagedId3v2Frames } : void 0;
|
|
75
|
+
},
|
|
64
76
|
hasId3Tags() {
|
|
65
77
|
const v = raw.hasId3Tags();
|
|
66
78
|
if (!v || typeof v !== "object") return { v1: false, v2: false };
|
|
@@ -1 +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,
|
|
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,EAyD7C,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,cAAc,EAAE,OAAO,GACtB,IAAI,CAIN"}
|
|
@@ -46,6 +46,16 @@ const EXTRA_FIELDS = [
|
|
|
46
46
|
if (v !== void 0) target.setIxml(v);
|
|
47
47
|
else if (complete) target.setIxml(null);
|
|
48
48
|
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "id3v2Frames",
|
|
52
|
+
copy(target, source) {
|
|
53
|
+
const staged = source.getStagedId3v2Frames?.();
|
|
54
|
+
if (!staged) return;
|
|
55
|
+
for (const [id, bodies] of Object.entries(staged)) {
|
|
56
|
+
target.setId3v2Frames(id, bodies);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
49
59
|
}
|
|
50
60
|
];
|
|
51
61
|
function copyExtraState(target, source, sourceComplete) {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation and mapping helpers for the raw ID3v2 frame API (taglib-b67).
|
|
3
|
+
* See docs/superpowers/specs/2026-07-09-raw-id3v2-frames-design.md.
|
|
4
|
+
*/
|
|
5
|
+
import type { RawId3v2Frame } from "../wasm.js";
|
|
6
|
+
import type { Id3v2Frame } from "../constants/complex-properties.js";
|
|
7
|
+
export declare function assertMp3(format: string): void;
|
|
8
|
+
export declare function assertFrameId(id: string, operation: "read" | "write"): void;
|
|
9
|
+
export declare function assertFrameBodies(id: string, data: Uint8Array[]): void;
|
|
10
|
+
/** Normalize a handle-level frame for the public API (zero flags → absent). */
|
|
11
|
+
export declare function toPublicFrame(frame: RawId3v2Frame): Id3v2Frame;
|
|
12
|
+
//# sourceMappingURL=id3v2-frames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id3v2-frames.d.ts","sourceRoot":"","sources":["../../../src/taglib/id3v2-frames.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAIrE,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAM9C;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAQ3E;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAUtE;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,CAM9D"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { MetadataError, UnsupportedFormatError } from "../errors/classes.js";
|
|
2
|
+
const FRAME_ID_PATTERN = /^[A-Z0-9]{4}$/;
|
|
3
|
+
function assertMp3(format) {
|
|
4
|
+
if (format !== "MP3") {
|
|
5
|
+
throw new UnsupportedFormatError(format, ["MP3"], {
|
|
6
|
+
operation: "id3v2Frames"
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function assertFrameId(id, operation) {
|
|
11
|
+
if (!FRAME_ID_PATTERN.test(id)) {
|
|
12
|
+
throw new MetadataError(
|
|
13
|
+
operation,
|
|
14
|
+
`Invalid ID3v2 frame ID: "${id}". Frame IDs must match [A-Z0-9]{4}`,
|
|
15
|
+
id
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function assertFrameBodies(id, data) {
|
|
20
|
+
for (const body of data) {
|
|
21
|
+
if (body.length === 0) {
|
|
22
|
+
throw new MetadataError(
|
|
23
|
+
"write",
|
|
24
|
+
"Frame data must not be empty: zero-size ID3v2 frames are invalid",
|
|
25
|
+
id
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function toPublicFrame(frame) {
|
|
31
|
+
return {
|
|
32
|
+
id: frame.id,
|
|
33
|
+
data: frame.data,
|
|
34
|
+
...frame.flags ? { flags: frame.flags } : {}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
assertFrameBodies,
|
|
39
|
+
assertFrameId,
|
|
40
|
+
assertMp3,
|
|
41
|
+
toPublicFrame
|
|
42
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taglib-class.d.ts","sourceRoot":"","sources":["../../../src/taglib/taglib-class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,UAAU,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"taglib-class.d.ts","sourceRoot":"","sources":["../../../src/taglib/taglib-class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,UAAU,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA4C3D;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,MAAM,EAAE,UAAU;IAI9B;;;;;OAKG;WACU,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrE;;;;;;;OAOG;IACG,IAAI,CACR,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,CAAC;IAiGrB;;;;;;;;;OASG;IACG,IAAI,CACR,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC;IACV,IAAI,CACR,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,eAAe,EACxD,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC5C,OAAO,CAAC,UAAU,CAAC;IAmBtB;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtE;;;;;;;OAOG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GACtB,OAAO,CAAC,IAAI,CAAC;IAUhB,oEAAoE;IACpE,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,aAAa;CAStB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAEtE"}
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
isNamedAudioInput
|
|
6
6
|
} from "../types/audio-formats.js";
|
|
7
7
|
import { InvalidFormatError, TagLibInitializationError } from "../errors.js";
|
|
8
|
+
import { isDeno } from "../runtime/detector.js";
|
|
8
9
|
import { AudioFileImpl } from "./audio-file-impl.js";
|
|
9
10
|
import { loadAudioData } from "./load-audio-data.js";
|
|
10
11
|
import { mergeTagUpdates } from "../utils/tag-mapping.js";
|
|
@@ -21,7 +22,7 @@ function toWasiPath(osPath) {
|
|
|
21
22
|
let p = osPath;
|
|
22
23
|
if (!p.startsWith("/") && !/^[A-Za-z]:/.test(p)) {
|
|
23
24
|
const g = globalThis;
|
|
24
|
-
const cwd =
|
|
25
|
+
const cwd = isDeno() ? Deno.cwd() : g.process?.cwd?.();
|
|
25
26
|
if (cwd) {
|
|
26
27
|
p = cwd.replace(/[/\\]+$/, "") + "/" + p;
|
|
27
28
|
}
|
|
@@ -42,5 +42,5 @@ export interface FieldMapping {
|
|
|
42
42
|
* const vorbisField = METADATA_MAPPINGS.albumArtist.vorbis; // "ALBUMARTIST"
|
|
43
43
|
* ```
|
|
44
44
|
*/
|
|
45
|
-
export declare const METADATA_MAPPINGS: Record<Exclude<keyof ExtendedTag, "pictures" | "ratings" | "lyrics" | "chapters" | "bext" | "bextData" | "ixml">, FieldMapping>;
|
|
45
|
+
export declare const METADATA_MAPPINGS: Record<Exclude<keyof ExtendedTag, "pictures" | "ratings" | "lyrics" | "chapters" | "bext" | "bextData" | "ixml" | "id3v2Frames">, FieldMapping>;
|
|
46
46
|
//# sourceMappingURL=metadata-mappings.d.ts.map
|
|
@@ -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,
|
|
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,GACN,aAAa,CAChB,EACD,YAAY,CAgNb,CAAC"}
|
package/dist/src/types/tags.d.ts
CHANGED
|
@@ -220,6 +220,8 @@ export interface ExtendedTag extends Tag {
|
|
|
220
220
|
readonly bextData?: Uint8Array;
|
|
221
221
|
/** Raw iXML chunk as a string. WAV and FLAC only. */
|
|
222
222
|
readonly ixml?: string;
|
|
223
|
+
/** Staged raw ID3v2 frame replacements: frame ID → list of body byte arrays. */
|
|
224
|
+
id3v2Frames?: Record<string, Uint8Array[]>;
|
|
223
225
|
}
|
|
224
226
|
/**
|
|
225
227
|
* Extended metadata properties map with known-key autocomplete.
|
|
@@ -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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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synchronous node:fs acquisition that works in every module context
|
|
3
|
+
* (ESM and CJS), including Electron main processes. See taglib-0b5 / GH #24.
|
|
4
|
+
*/
|
|
5
|
+
/** Structural subset of node:fs used by taglib-wasm's sync call sites. */
|
|
6
|
+
export type NodeFsLike = {
|
|
7
|
+
statSync(path: string): unknown;
|
|
8
|
+
readFileSync(path: string): Uint8Array;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Acquire node:fs synchronously without tripping bundlers.
|
|
12
|
+
*
|
|
13
|
+
* `process.getBuiltinModule("node:fs")` is the primary strategy: it is
|
|
14
|
+
* synchronous, works in both ESM and CJS, and exists on every supported
|
|
15
|
+
* runtime (added in Node 22.3.0, backported to 20.16.0; the package's
|
|
16
|
+
* `engines` floor of node >= 22.6.0 gates installs, while Electron's
|
|
17
|
+
* embedded Node has shipped it since Electron 32). The legacy
|
|
18
|
+
* `new Function("return require(...)")` hack evaluates in the GLOBAL scope,
|
|
19
|
+
* where `require` never exists in standard module files — it is kept only as
|
|
20
|
+
* a fallback for contexts that expose `require` globally (Electron renderers
|
|
21
|
+
* with nodeIntegration, node -e, the REPL) on runtimes predating
|
|
22
|
+
* getBuiltinModule. Results are shape-checked so a polyfilled `process`
|
|
23
|
+
* serving junk modules escalates to the next strategy instead of leaking a
|
|
24
|
+
* non-fs object to callers.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getNodeFsSync(): NodeFsLike | null;
|
|
27
|
+
//# sourceMappingURL=node-fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-fs.d.ts","sourceRoot":"","sources":["../../../src/utils/node-fs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CACxC,CAAC;AAYF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAiBjD"}
|