taglib-wasm 1.8.3 → 2.1.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/README.md +8 -1
- package/dist/disc-folder.d.ts +19 -0
- package/dist/disc-folder.d.ts.map +1 -0
- package/dist/disc-folder.js +550 -0
- package/dist/index.browser.d.ts +3 -4
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +187 -176
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -12
- package/dist/simple.browser.js +172 -33
- package/dist/src/constants/complex-properties.d.ts +0 -114
- package/dist/src/constants/complex-properties.d.ts.map +1 -1
- package/dist/src/constants/complex-properties.js +0 -55
- package/dist/src/constants/index.d.ts +0 -1
- package/dist/src/constants/index.d.ts.map +1 -1
- package/dist/src/constants/index.js +0 -1
- package/dist/src/constants/utilities.d.ts +13 -0
- package/dist/src/constants/utilities.d.ts.map +1 -1
- package/dist/src/constants/utilities.js +9 -1
- package/dist/src/file-utils/import-operations.d.ts.map +1 -1
- package/dist/src/file-utils/import-operations.js +1 -1
- package/dist/src/folder-api/file-processors.d.ts.map +1 -1
- package/dist/src/folder-api/file-processors.js +6 -5
- package/dist/src/folder-api/scan-for-albums.js +3 -3
- package/dist/src/folder-api/scan-operations.js +2 -2
- package/dist/src/msgpack/decoder.d.ts +2 -2
- package/dist/src/msgpack/decoder.d.ts.map +1 -1
- package/dist/src/msgpack/decoder.js +5 -6
- package/dist/src/msgpack/encoder.d.ts.map +1 -1
- package/dist/src/msgpack/encoder.js +9 -6
- package/dist/src/msgpack/index.d.ts +1 -1
- package/dist/src/msgpack/index.d.ts.map +1 -1
- package/dist/src/msgpack/types.d.ts +10 -0
- package/dist/src/msgpack/types.d.ts.map +1 -1
- package/dist/src/msgpack/utils.d.ts +2 -1
- package/dist/src/msgpack/utils.d.ts.map +1 -1
- package/dist/src/runtime/module-loader-browser.d.ts.map +1 -1
- package/dist/src/runtime/module-loader.d.ts.map +1 -1
- package/dist/src/runtime/module-loader.js +3 -3
- package/dist/src/runtime/platform-io.js +1 -1
- package/dist/src/runtime/unified-loader/module-loading.d.ts.map +1 -1
- package/dist/src/runtime/unified-loader/module-loading.js +1 -1
- package/dist/src/runtime/wasi-adapter/file-handle.d.ts +8 -0
- package/dist/src/runtime/wasi-adapter/file-handle.d.ts.map +1 -1
- package/dist/src/runtime/wasi-adapter/file-handle.js +44 -4
- package/dist/src/runtime/wasi-fs-deno.d.ts.map +1 -1
- package/dist/src/runtime/wasi-fs-deno.js +1 -1
- package/dist/src/simple/batch-operations.d.ts.map +1 -1
- package/dist/src/simple/batch-operations.js +14 -10
- package/dist/src/simple/picture-operations.js +1 -1
- package/dist/src/taglib/audio-file-base.d.ts +15 -9
- package/dist/src/taglib/audio-file-base.d.ts.map +1 -1
- package/dist/src/taglib/audio-file-base.js +35 -4
- package/dist/src/taglib/audio-file-impl.d.ts +2 -2
- package/dist/src/taglib/audio-file-impl.d.ts.map +1 -1
- package/dist/src/taglib/audio-file-impl.js +25 -13
- package/dist/src/taglib/audio-file-interface.d.ts +27 -6
- package/dist/src/taglib/audio-file-interface.d.ts.map +1 -1
- package/dist/src/taglib/auto-dispose.d.ts +6 -0
- package/dist/src/taglib/auto-dispose.d.ts.map +1 -0
- package/dist/src/taglib/auto-dispose.js +13 -0
- package/dist/src/taglib/embind-adapter.d.ts +2 -2
- package/dist/src/taglib/embind-adapter.d.ts.map +1 -1
- package/dist/src/taglib/embind-adapter.js +17 -0
- package/dist/src/taglib/extra-state-registry.d.ts.map +1 -1
- package/dist/src/taglib/extra-state-registry.js +9 -0
- package/dist/src/taglib/metadata-extent.d.ts.map +1 -1
- package/dist/src/taglib/metadata-extent.js +44 -1
- package/dist/src/taglib/mutable-tag.d.ts +15 -15
- package/dist/src/taglib/mutable-tag.d.ts.map +1 -1
- package/dist/src/taglib/save-reconstruct.d.ts.map +1 -1
- package/dist/src/taglib/taglib-class.d.ts.map +1 -1
- package/dist/src/types/tags.d.ts +0 -4
- package/dist/src/types/tags.d.ts.map +1 -1
- package/dist/src/utils/mirror-fields.d.ts +2 -0
- package/dist/src/utils/mirror-fields.d.ts.map +1 -1
- package/dist/src/utils/mirror-fields.js +11 -3
- package/dist/src/utils/node-fs.d.ts +10 -10
- package/dist/src/utils/node-fs.d.ts.map +1 -1
- package/dist/src/utils/node-fs.js +2 -1
- package/dist/src/utils/tag-mapping.d.ts.map +1 -1
- package/dist/src/utils/tag-mapping.js +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/wasm.d.ts +20 -1
- package/dist/src/wasm.d.ts.map +1 -1
- package/dist/src/web-utils/canvas.d.ts.map +1 -1
- package/dist/src/web-utils/canvas.js +6 -1
- package/dist/src/web-utils/data-url.js +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 +23 -15
- package/dist/src/constants/tags.d.ts +0 -81
- package/dist/src/constants/tags.d.ts.map +0 -1
- package/dist/src/constants/tags.js +0 -86
|
@@ -16,10 +16,18 @@ function getPropertiesByFormat(format) {
|
|
|
16
16
|
(key) => PROPERTIES[key].supportedFormats.includes(format)
|
|
17
17
|
);
|
|
18
18
|
}
|
|
19
|
+
function propertyValues(props, key) {
|
|
20
|
+
return props[key] ?? [];
|
|
21
|
+
}
|
|
22
|
+
function propertyValue(props, key) {
|
|
23
|
+
return props[key]?.[0];
|
|
24
|
+
}
|
|
19
25
|
export {
|
|
20
26
|
getAllProperties,
|
|
21
27
|
getAllPropertyKeys,
|
|
22
28
|
getPropertiesByFormat,
|
|
23
29
|
getPropertyMetadata,
|
|
24
|
-
isValidProperty
|
|
30
|
+
isValidProperty,
|
|
31
|
+
propertyValue,
|
|
32
|
+
propertyValues
|
|
25
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-operations.d.ts","sourceRoot":"","sources":["../../../src/file-utils/import-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAOxD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"import-operations.d.ts","sourceRoot":"","sources":["../../../src/file-utils/import-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAOxD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,WAA0B,EAChC,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -16,7 +16,7 @@ async function importPictureWithType(audioPath, imagePath, type, options = {}) {
|
|
|
16
16
|
mimeType,
|
|
17
17
|
data: imageData,
|
|
18
18
|
type,
|
|
19
|
-
description: options.description
|
|
19
|
+
...options.description !== void 0 ? { description: options.description } : {}
|
|
20
20
|
};
|
|
21
21
|
const modifiedBuffer = await replacePictureByType(audioPath, picture);
|
|
22
22
|
await writeFileData(audioPath, modifiedBuffer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-processors.d.ts","sourceRoot":"","sources":["../../../src/folder-api/file-processors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAEV,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAGpB,wBAAsB,YAAY,CAAC,CAAC,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACvC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,EAAE,CAAC,CAYd;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,OAAO,EAC1B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,EAC5E,SAAS,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAC7B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"file-processors.d.ts","sourceRoot":"","sources":["../../../src/folder-api/file-processors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAEV,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAGpB,wBAAsB,YAAY,CAAC,CAAC,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACvC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,EAAE,CAAC,CAYd;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,OAAO,EAC1B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,EAC5E,SAAS,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAC7B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAuD5B"}
|
|
@@ -31,12 +31,12 @@ async function processFileWithTagLib(filePath, taglib, includeProperties, onProg
|
|
|
31
31
|
"replayGainAlbumPeak"
|
|
32
32
|
];
|
|
33
33
|
for (const field of fieldNames) {
|
|
34
|
-
const value = audioFile.getProperty(field);
|
|
35
|
-
if (value) {
|
|
34
|
+
const value = audioFile.getProperty(field)?.[0];
|
|
35
|
+
if (value !== void 0) {
|
|
36
36
|
dynamics[field] = value;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
let appleSoundCheck = audioFile.getProperty("appleSoundCheck");
|
|
39
|
+
let appleSoundCheck = audioFile.getProperty("appleSoundCheck")?.[0];
|
|
40
40
|
if (!appleSoundCheck && audioFile.isMP4()) {
|
|
41
41
|
appleSoundCheck = audioFile.getMP4Item("----:com.apple.iTunes:iTunNORM");
|
|
42
42
|
}
|
|
@@ -45,12 +45,13 @@ async function processFileWithTagLib(filePath, taglib, includeProperties, onProg
|
|
|
45
45
|
const current = ++processed.count;
|
|
46
46
|
onProgress?.(current, totalFound, filePath);
|
|
47
47
|
}
|
|
48
|
+
const withDynamics = Object.keys(dynamics).length > 0 ? dynamics : void 0;
|
|
48
49
|
return {
|
|
49
50
|
path: filePath,
|
|
50
51
|
tags,
|
|
51
|
-
properties,
|
|
52
|
+
...properties !== void 0 ? { properties } : {},
|
|
52
53
|
hasCoverArt,
|
|
53
|
-
|
|
54
|
+
...withDynamics !== void 0 ? { dynamics: withDynamics } : {}
|
|
54
55
|
};
|
|
55
56
|
} finally {
|
|
56
57
|
audioFile.dispose();
|
|
@@ -11,9 +11,9 @@ async function scanForAlbums(folderPath, options = {}) {
|
|
|
11
11
|
} = options;
|
|
12
12
|
const scan = await scanFolder(folderPath, scanOptions);
|
|
13
13
|
return groupAlbums(scan, {
|
|
14
|
-
minFolderConfidence,
|
|
15
|
-
flatDiscPrefixes,
|
|
16
|
-
folderFallback,
|
|
14
|
+
...minFolderConfidence !== void 0 ? { minFolderConfidence } : {},
|
|
15
|
+
...flatDiscPrefixes !== void 0 ? { flatDiscPrefixes } : {},
|
|
16
|
+
...folderFallback !== void 0 ? { folderFallback } : {},
|
|
17
17
|
scanRoot: folderPath
|
|
18
18
|
});
|
|
19
19
|
}
|
|
@@ -62,9 +62,9 @@ async function scanFolder(folderPath, options = {}) {
|
|
|
62
62
|
const processOpts = {
|
|
63
63
|
includeProperties,
|
|
64
64
|
continueOnError,
|
|
65
|
-
onProgress,
|
|
65
|
+
...onProgress !== void 0 ? { onProgress } : {},
|
|
66
66
|
totalFound,
|
|
67
|
-
signal
|
|
67
|
+
...signal !== void 0 ? { signal } : {}
|
|
68
68
|
};
|
|
69
69
|
const items = await scanWithTagLib(taglib, filePaths, processOpts);
|
|
70
70
|
return {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/** MessagePack decoder — converts binary MessagePack from the C API to JS objects. */
|
|
2
2
|
import { type DecoderOptions } from "@msgpack/msgpack";
|
|
3
3
|
import type { AudioProperties, ExtendedTag, Picture, PropertyMap } from "../types.js";
|
|
4
|
-
import type { MessagePackDataType } from "./types.js";
|
|
5
|
-
export declare function decodeTagData(msgpackBuffer: Uint8Array):
|
|
4
|
+
import type { MessagePackDataType, RawTagData } from "./types.js";
|
|
5
|
+
export declare function decodeTagData(msgpackBuffer: Uint8Array): RawTagData;
|
|
6
6
|
export declare function decodeAudioProperties(msgpackBuffer: Uint8Array): AudioProperties;
|
|
7
7
|
export declare function decodePropertyMap(msgpackBuffer: Uint8Array): PropertyMap;
|
|
8
8
|
export declare function decodePicture(msgpackBuffer: Uint8Array): Picture;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../../src/msgpack/decoder.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,OAAO,EAAU,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,OAAO,EACP,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../../src/msgpack/decoder.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,OAAO,EAAU,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,OAAO,EACP,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAYlE,wBAAgB,aAAa,CAAC,aAAa,EAAE,UAAU,GAAG,UAAU,CAanE;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,UAAU,GACxB,eAAe,CAiBjB;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,UAAU,GAAG,WAAW,CASxE;AAED,wBAAgB,aAAa,CAAC,aAAa,EAAE,UAAU,GAAG,OAAO,CAWhE;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,UAAU,GAAG,OAAO,EAAE,CAavE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAC3C,aAAa,EAAE,UAAU,EACzB,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GACpC,CAAC,CAUH;AA2BD,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,UAAU,GACxB,WAAW,GAAG,eAAe,GAAG,OAAO,GAAG,WAAW,CAiCvD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAc9D;AAaD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAuBA;AAED,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,UAAU,GACxB,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAqBpE"}
|
|
@@ -3,7 +3,6 @@ import { errorMessage, MetadataError } from "../errors/classes.js";
|
|
|
3
3
|
import { remapKeysFromTagLib } from "../constants/properties.js";
|
|
4
4
|
const MSGPACK_DECODE_OPTIONS = {
|
|
5
5
|
useBigInt64: false,
|
|
6
|
-
extensionCodec: void 0,
|
|
7
6
|
maxStrLength: 1e6,
|
|
8
7
|
maxBinLength: 5e7,
|
|
9
8
|
maxArrayLength: 1e4,
|
|
@@ -189,11 +188,11 @@ function decodeFastTagData(msgpackBuffer) {
|
|
|
189
188
|
maxMapLength: 50
|
|
190
189
|
});
|
|
191
190
|
return {
|
|
192
|
-
title: decoded.title,
|
|
193
|
-
artist: decoded.artist,
|
|
194
|
-
album: decoded.album,
|
|
195
|
-
year: decoded.year,
|
|
196
|
-
track: decoded.track
|
|
191
|
+
...decoded.title !== void 0 ? { title: decoded.title } : {},
|
|
192
|
+
...decoded.artist !== void 0 ? { artist: decoded.artist } : {},
|
|
193
|
+
...decoded.album !== void 0 ? { album: decoded.album } : {},
|
|
194
|
+
...decoded.year !== void 0 ? { year: decoded.year } : {},
|
|
195
|
+
...decoded.track !== void 0 ? { track: decoded.track } : {}
|
|
197
196
|
};
|
|
198
197
|
} catch (error) {
|
|
199
198
|
throw new MetadataError(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../src/msgpack/encoder.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,EAAU,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,OAAO,EACP,WAAW,EACZ,MAAM,aAAa,CAAC;AAIrB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../src/msgpack/encoder.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,EAAU,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,OAAO,EACP,WAAW,EACZ,MAAM,aAAa,CAAC;AAIrB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,aAe3B,CAAC;AA2BH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CAoC9D;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,eAAe,GAAG,UAAU,CAS7E;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,UAAU,CAStE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAe1D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU,CAelE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,IAAI,EAAE,CAAC,EACP,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GACpC,UAAU,CAUZ;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAe/D;AAqBD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,UAAU,CAc1E;AAED,wBAAiB,uBAAuB,CAAC,CAAC,EACxC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,GACxB,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CActC;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAS7D;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,GAC1E,UAAU,CAeZ;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAW7D;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG;IACxD,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAaA"}
|
|
@@ -14,21 +14,24 @@ const PASSTHROUGH_KEYS = /* @__PURE__ */ new Set([
|
|
|
14
14
|
"id3Tags",
|
|
15
15
|
"_stripId3",
|
|
16
16
|
// Exact MP4 atom names — must reach C++ verbatim, not via toTagLibKey.
|
|
17
|
-
"_mp4ItemNames"
|
|
17
|
+
"_mp4ItemNames",
|
|
18
|
+
// Foreign-mean MP4 atom names to delete at save (taglib-65nm).
|
|
19
|
+
"_mp4ItemRemovals"
|
|
18
20
|
]);
|
|
19
21
|
const MSGPACK_ENCODE_OPTIONS = {
|
|
20
22
|
sortKeys: false,
|
|
21
23
|
forceFloat32: false,
|
|
22
24
|
ignoreUndefined: true,
|
|
23
25
|
initialBufferSize: 2048,
|
|
24
|
-
maxDepth: 32
|
|
25
|
-
extensionCodec: void 0
|
|
26
|
+
maxDepth: 32
|
|
26
27
|
};
|
|
27
28
|
function lyricsTexts(value) {
|
|
28
29
|
const entries = Array.isArray(value) ? value : [value];
|
|
29
|
-
return entries.map(
|
|
30
|
-
(
|
|
31
|
-
|
|
30
|
+
return entries.map((entry) => {
|
|
31
|
+
if (typeof entry === "string") return entry;
|
|
32
|
+
const text = entry?.text;
|
|
33
|
+
return typeof text === "string" ? text : "";
|
|
34
|
+
}).filter((text) => text !== "");
|
|
32
35
|
}
|
|
33
36
|
function encodeTagData(tagData) {
|
|
34
37
|
try {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
export { decodeAudioProperties, decodeFastTagData, decodeMessagePack, decodeMessagePackAuto, decodePicture, decodePictureArray, decodePropertyMap, decodeTagData, getMessagePackInfo, isValidMessagePack, } from "./decoder.js";
|
|
23
23
|
export { canEncodeToMessagePack, compareEncodingEfficiency, encodeAudioProperties, encodeBatchTagData, encodeFastTagData, encodeMessagePack, encodeMessagePackCompact, encodeMessagePackStream, encodePicture, encodePictureArray, encodePropertyMap, encodeTagData, estimateMessagePackSize, } from "./encoder.js";
|
|
24
|
-
export type { AutoDetectionConfig, AutoDetectionResult, BatchProcessingResult, DecodingResult, EncodingResult, FormatComparison, FormatVersion, MessagePackCompatible, MessagePackData, MessagePackDataType, MessagePackError, MessagePackErrorInfo, MessagePackMetrics, MessagePackValue, StreamingConfig, TagLibMessagePackData, TagLibMessagePackMarker, ValidationResult, } from "./types.js";
|
|
24
|
+
export type { AutoDetectionConfig, AutoDetectionResult, BatchProcessingResult, DecodingResult, EncodingResult, FormatComparison, FormatVersion, MessagePackCompatible, MessagePackData, MessagePackDataType, MessagePackError, MessagePackErrorInfo, MessagePackMetrics, MessagePackValue, RawTagData, StreamingConfig, TagLibMessagePackData, TagLibMessagePackMarker, ValidationResult, } from "./types.js";
|
|
25
25
|
export { TAGLIB_MSGPACK_MARKERS } from "./types.js";
|
|
26
26
|
export { MessagePackUtils } from "./utils.js";
|
|
27
27
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/msgpack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/msgpack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -113,4 +113,14 @@ export interface AutoDetectionResult {
|
|
|
113
113
|
}>;
|
|
114
114
|
detectionClues: string[];
|
|
115
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* The raw tag-data shape decoded from the C++ MessagePack snapshot: wire
|
|
118
|
+
* values, not the typed surface. Property values are canonical strings —
|
|
119
|
+
* boolean-typed keys (COMPILATION) decode as "1"/"0" (taglib-c9b), numbers
|
|
120
|
+
* stay verbatim strings ("03", "3/12"). Audio-info booleans and nested maps
|
|
121
|
+
* (id3Tags {v1, v2}) keep their native shapes.
|
|
122
|
+
*/
|
|
123
|
+
export type RawTagData = Record<string, unknown> & {
|
|
124
|
+
compilation?: "1" | "0";
|
|
125
|
+
};
|
|
116
126
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/msgpack/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/msgpack/types.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC;AAEzC,MAAM,MAAM,gBAAgB,GACxB,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,UAAU,GACV,gBAAgB,EAAE,GAClB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAC;AAExC,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,IAAI,EAAE,CAAC,CAAC;IACR,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,mBAAmB,GAC3B,OAAO,GACP,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,OAAO;IAChD,UAAU,EAAE,CAAC,EAAE,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iDAAiD;AACjD,eAAO,MAAM,sBAAsB;;;;;;;;CAQzB,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,OAAO,sBAAsB,CAAC,MAAM,OAAO,sBAAsB,CAAC,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,gBAAgB,GACxB,cAAc,GACd,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,cAAc,CAAC;AAEnB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;KACpC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GACvE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC3B,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,KAAK,GAC9B,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EACR,KAAK,GACL,kBAAkB,GAClB,SAAS,GACT,cAAc,GACd,SAAS,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACjD,WAAW,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;CACzB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview High-level MessagePack utilities for common TagLib-Wasm operations
|
|
3
3
|
*/
|
|
4
|
+
import type { RawTagData } from "./types.js";
|
|
4
5
|
import type { AudioProperties, ExtendedTag, Picture, PropertyMap } from "../types.js";
|
|
5
6
|
/**
|
|
6
7
|
* High-level MessagePack utilities for common TagLib-Wasm operations
|
|
@@ -13,7 +14,7 @@ export declare class MessagePackUtils {
|
|
|
13
14
|
/**
|
|
14
15
|
* Validate and decode tag data with error handling
|
|
15
16
|
*/
|
|
16
|
-
static safeDecodeTagData(buffer: Uint8Array):
|
|
17
|
+
static safeDecodeTagData(buffer: Uint8Array): RawTagData | null;
|
|
17
18
|
/**
|
|
18
19
|
* Validate and decode audio properties with error handling
|
|
19
20
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/msgpack/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,OAAO,EACP,WAAW,EACZ,MAAM,aAAa,CAAC;AAYrB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,UAAU,GACjB,WAAW,GAAG,eAAe,GAAG,OAAO,GAAG,WAAW;IAIxD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/msgpack/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,OAAO,EACP,WAAW,EACZ,MAAM,aAAa,CAAC;AAYrB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,UAAU,GACjB,WAAW,GAAG,eAAe,GAAG,OAAO,GAAG,WAAW;IAIxD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IAW/D;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI;IAW5E;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI;IAW5D;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,WAAW,GAAG;QAClD,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,yBAAyB,EAAE,MAAM,CAAC;KACnC;IAUD;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAYzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU;IAY/C;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAC/C,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,WAAW,GAAG,eAAe,GAAG,OAAO,GAAG,WAAW,CAAC;QAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAcF;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;CAqBlD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-loader-browser.d.ts","sourceRoot":"","sources":["../../../src/runtime/module-loader-browser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"module-loader-browser.d.ts","sourceRoot":"","sources":["../../../src/runtime/module-loader-browser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAwDvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-loader.d.ts","sourceRoot":"","sources":["../../../src/runtime/module-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"module-loader.d.ts","sourceRoot":"","sources":["../../../src/runtime/module-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAkFvB"}
|
|
@@ -46,9 +46,9 @@ async function loadTagLibModule(options) {
|
|
|
46
46
|
try {
|
|
47
47
|
const { loadUnifiedTagLibModule } = await import("./unified-loader/index.js");
|
|
48
48
|
return await loadUnifiedTagLibModule({
|
|
49
|
-
wasmBinary: options
|
|
50
|
-
wasmUrl: options
|
|
51
|
-
forceWasmType: options
|
|
49
|
+
...options?.wasmBinary !== void 0 ? { wasmBinary: options.wasmBinary } : {},
|
|
50
|
+
...options?.wasmUrl !== void 0 ? { wasmUrl: options.wasmUrl } : {},
|
|
51
|
+
...options?.forceWasmType !== void 0 ? { forceWasmType: options.forceWasmType } : {},
|
|
52
52
|
debug: false
|
|
53
53
|
});
|
|
54
54
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-loading.d.ts","sourceRoot":"","sources":["../../../../src/runtime/unified-loader/module-loading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAG7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAiBzE,6EAA6E;AAC7E,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"module-loading.d.ts","sourceRoot":"","sources":["../../../../src/runtime/unified-loader/module-loading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAG7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAiBzE,6EAA6E;AAC7E,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0BpD;AAOD,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,GAAG,YAAY,EAC/B,OAAO,EAAE,sBAAsB,EAC/B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAS3B"}
|
|
@@ -8,7 +8,7 @@ function isWindows() {
|
|
|
8
8
|
}
|
|
9
9
|
function getPreopens() {
|
|
10
10
|
if (!isWindows()) return { "/": "/" };
|
|
11
|
-
const statSync = isDeno() ? Deno.statSync : getNodeFsSync()?.statSync;
|
|
11
|
+
const statSync = isDeno() ? (p) => Deno.statSync(p) : getNodeFsSync()?.statSync;
|
|
12
12
|
if (!statSync) {
|
|
13
13
|
console.warn(
|
|
14
14
|
"[taglib-wasm] Windows drive detection unavailable: node:fs could not be loaded. Only C:\\ is registered as a WASI preopen."
|
|
@@ -32,6 +32,14 @@ export declare class WasiFileHandle implements FileHandle {
|
|
|
32
32
|
setMP4Item(key: string, value: string): void;
|
|
33
33
|
/** Record an exact atom name to be repaired after the PropertyMap write. */
|
|
34
34
|
private registerMp4ItemName;
|
|
35
|
+
/**
|
|
36
|
+
* Record a foreign-mean freeform atom for deletion at save (taglib-65nm).
|
|
37
|
+
* The PropertyMap erase pass cannot express foreign atoms, so the C++ shim
|
|
38
|
+
* consumes this list and calls removeItem on each exact atom name.
|
|
39
|
+
*/
|
|
40
|
+
private registerMp4ItemRemoval;
|
|
41
|
+
getMp4ItemRemovals(): string[] | undefined;
|
|
42
|
+
setMp4ItemRemovals(removals: string[]): void;
|
|
35
43
|
removeMP4Item(key: string): void;
|
|
36
44
|
getPictures(): RawPicture[];
|
|
37
45
|
setPictures(pictures: RawPicture[]): void;
|
|
@@ -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,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,UAAU,EACX,MAAM,eAAe,CAAC;AACvB,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;
|
|
1
|
+
{"version":3,"file":"file-handle.d.ts","sourceRoot":"","sources":["../../../../src/runtime/wasi-adapter/file-handle.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
readNumericMirror,
|
|
17
17
|
stageNumericWrite,
|
|
18
18
|
stageRawWrite,
|
|
19
|
+
stringifyScalar,
|
|
19
20
|
TRACK_MIRROR
|
|
20
21
|
} from "../../utils/mirror-fields.js";
|
|
21
22
|
import {
|
|
@@ -52,7 +53,10 @@ const INTERNAL_KEYS = /* @__PURE__ */ new Set([
|
|
|
52
53
|
"bextData",
|
|
53
54
|
"ixml",
|
|
54
55
|
// Exact MP4 atom names for the write path, not a readable property.
|
|
55
|
-
"_mp4ItemNames"
|
|
56
|
+
"_mp4ItemNames",
|
|
57
|
+
// Foreign-mean MP4 atom names to delete at save (taglib-65nm): a write-time
|
|
58
|
+
// directive, never a property.
|
|
59
|
+
"_mp4ItemRemovals"
|
|
56
60
|
]);
|
|
57
61
|
function preserveEmptyValues(data) {
|
|
58
62
|
for (const [key, value] of Object.entries(data)) {
|
|
@@ -241,7 +245,7 @@ class WasiFileHandle {
|
|
|
241
245
|
result[propKey] = value.map(String);
|
|
242
246
|
} else if (typeof value === "object") {
|
|
243
247
|
continue;
|
|
244
|
-
} else {
|
|
248
|
+
} else if (typeof value === "string" || typeof value === "number" || typeof value === "boolean" || typeof value === "bigint" || typeof value === "symbol") {
|
|
245
249
|
result[propKey] = [String(value)];
|
|
246
250
|
}
|
|
247
251
|
}
|
|
@@ -273,7 +277,11 @@ class WasiFileHandle {
|
|
|
273
277
|
this.checkNotDestroyed();
|
|
274
278
|
const mappedKey = fromTagLibKey(key);
|
|
275
279
|
const stored = this.tagData?.[mappedKey];
|
|
276
|
-
|
|
280
|
+
if (Array.isArray(stored)) {
|
|
281
|
+
const first = stored[0];
|
|
282
|
+
return stringifyScalar(first);
|
|
283
|
+
}
|
|
284
|
+
return stringifyScalar(stored);
|
|
277
285
|
}
|
|
278
286
|
setProperty(key, value) {
|
|
279
287
|
this.checkNotDestroyed();
|
|
@@ -301,7 +309,11 @@ class WasiFileHandle {
|
|
|
301
309
|
if (key.startsWith("----:")) {
|
|
302
310
|
const foreign = this.tagData?.[key];
|
|
303
311
|
if (foreign !== void 0) {
|
|
304
|
-
|
|
312
|
+
if (Array.isArray(foreign)) {
|
|
313
|
+
const first = foreign[0];
|
|
314
|
+
return stringifyScalar(first);
|
|
315
|
+
}
|
|
316
|
+
return stringifyScalar(foreign);
|
|
305
317
|
}
|
|
306
318
|
}
|
|
307
319
|
return this.getProperty(mp4ItemPropertyKey(key));
|
|
@@ -325,9 +337,37 @@ class WasiFileHandle {
|
|
|
325
337
|
_mp4ItemNames: [...existing, name]
|
|
326
338
|
};
|
|
327
339
|
}
|
|
340
|
+
/**
|
|
341
|
+
* Record a foreign-mean freeform atom for deletion at save (taglib-65nm).
|
|
342
|
+
* The PropertyMap erase pass cannot express foreign atoms, so the C++ shim
|
|
343
|
+
* consumes this list and calls removeItem on each exact atom name.
|
|
344
|
+
*/
|
|
345
|
+
registerMp4ItemRemoval(name) {
|
|
346
|
+
const existing = this.tagData?._mp4ItemRemovals ?? [];
|
|
347
|
+
if (existing.includes(name)) return;
|
|
348
|
+
this.tagData = {
|
|
349
|
+
...this.tagData,
|
|
350
|
+
_mp4ItemRemovals: [...existing, name]
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
getMp4ItemRemovals() {
|
|
354
|
+
this.checkNotDestroyed();
|
|
355
|
+
return this.tagData?._mp4ItemRemovals;
|
|
356
|
+
}
|
|
357
|
+
setMp4ItemRemovals(removals) {
|
|
358
|
+
this.checkNotDestroyed();
|
|
359
|
+
this.tagData = {
|
|
360
|
+
...this.tagData,
|
|
361
|
+
_mp4ItemRemovals: [...new Set(removals)]
|
|
362
|
+
};
|
|
363
|
+
}
|
|
328
364
|
removeMP4Item(key) {
|
|
329
365
|
this.checkNotDestroyed();
|
|
330
366
|
if (this.tagData) {
|
|
367
|
+
if (key.startsWith("----:")) {
|
|
368
|
+
delete this.tagData[key];
|
|
369
|
+
this.registerMp4ItemRemoval(key);
|
|
370
|
+
}
|
|
331
371
|
const mappedKey = fromTagLibKey(mp4ItemPropertyKey(key));
|
|
332
372
|
delete this.tagData[mappedKey];
|
|
333
373
|
const mirror = mirrorForRawKey(mappedKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasi-fs-deno.d.ts","sourceRoot":"","sources":["../../../src/runtime/wasi-fs-deno.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"wasi-fs-deno.d.ts","sourceRoot":"","sources":["../../../src/runtime/wasi-fs-deno.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,uBAAuB,CAAC;AAY/B,wBAAgB,oBAAoB,IAAI,kBAAkB,CAazD"}
|
|
@@ -4,7 +4,7 @@ function wrapDenoFile(file) {
|
|
|
4
4
|
writeSync: (data) => file.writeSync(data),
|
|
5
5
|
seekSync: (offset, whence) => file.seekSync(offset, whence),
|
|
6
6
|
truncateSync: (size) => file.truncateSync(size),
|
|
7
|
-
close: () => file.close()
|
|
7
|
+
close: () => void file.close()
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
10
|
function createDenoFsProvider() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-operations.d.ts","sourceRoot":"","sources":["../../../src/simple/batch-operations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAMhF,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7E,gEAAgE;IAChE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,yEAAyE;AACzE,MAAM,MAAM,SAAS,CAAC,CAAC,IACnB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpD,mEAAmE;AACnE,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAyDD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAMnC;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAMnD;AAED,oHAAoH;AACpH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,eAAe,GAAG,SAAS,CAAC;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"batch-operations.d.ts","sourceRoot":"","sources":["../../../src/simple/batch-operations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAMhF,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7E,gEAAgE;IAChE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,yEAAyE;AACzE,MAAM,MAAM,SAAS,CAAC,CAAC,IACnB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpD,mEAAmE;AACnE,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAyDD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAMnC;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAMnD;AAED,oHAAoH;AACpH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,eAAe,GAAG,SAAS,CAAC;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAsBD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,YAAY,CAAC,CA6BvB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAUpC"}
|
|
@@ -67,10 +67,10 @@ function extractDynamics(audioFile) {
|
|
|
67
67
|
"replayGainAlbumPeak"
|
|
68
68
|
];
|
|
69
69
|
for (const field of fields) {
|
|
70
|
-
const val = audioFile.getProperty(field);
|
|
71
|
-
if (val) dynamics[field] = val;
|
|
70
|
+
const val = audioFile.getProperty(field)?.[0];
|
|
71
|
+
if (val !== void 0) dynamics[field] = val;
|
|
72
72
|
}
|
|
73
|
-
let appleSoundCheck = audioFile.getProperty("appleSoundCheck");
|
|
73
|
+
let appleSoundCheck = audioFile.getProperty("appleSoundCheck")?.[0];
|
|
74
74
|
if (!appleSoundCheck && audioFile.isMP4()) {
|
|
75
75
|
appleSoundCheck = audioFile.getMP4Item("----:com.apple.iTunes:iTunNORM");
|
|
76
76
|
}
|
|
@@ -96,23 +96,27 @@ async function readMetadata(file) {
|
|
|
96
96
|
`File may be corrupted or in an unsupported format. File: ${name}`
|
|
97
97
|
);
|
|
98
98
|
}
|
|
99
|
+
const dynamics = extractDynamics(audioFile);
|
|
99
100
|
return {
|
|
100
101
|
tags: readExtendedTag(audioFile),
|
|
101
102
|
properties: audioFile.audioProperties(),
|
|
102
103
|
hasCoverArt: audioFile.getPictures().length > 0,
|
|
103
|
-
dynamics:
|
|
104
|
+
...dynamics !== void 0 ? { dynamics } : {}
|
|
104
105
|
};
|
|
105
106
|
} finally {
|
|
106
107
|
audioFile.dispose();
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
110
|
async function readMetadataBatch(files, options = {}) {
|
|
110
|
-
return executeBatch(files, options, (audioFile) =>
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
111
|
+
return executeBatch(files, options, (audioFile) => {
|
|
112
|
+
const dynamics = extractDynamics(audioFile);
|
|
113
|
+
return {
|
|
114
|
+
tags: readExtendedTag(audioFile),
|
|
115
|
+
properties: audioFile.audioProperties(),
|
|
116
|
+
hasCoverArt: audioFile.getPictures().length > 0,
|
|
117
|
+
...dynamics !== void 0 ? { dynamics } : {}
|
|
118
|
+
};
|
|
119
|
+
});
|
|
116
120
|
}
|
|
117
121
|
export {
|
|
118
122
|
readMetadata,
|
|
@@ -51,7 +51,7 @@ async function readPictureMetadata(file) {
|
|
|
51
51
|
return pictures.map((pic) => ({
|
|
52
52
|
type: pic.type,
|
|
53
53
|
mimeType: pic.mimeType,
|
|
54
|
-
description: pic.description,
|
|
54
|
+
...pic.description !== void 0 ? { description: pic.description } : {},
|
|
55
55
|
size: pic.data.length
|
|
56
56
|
}));
|
|
57
57
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TagLibModule, WasmFileHandle } from "../wasm.js";
|
|
2
2
|
import type { AudioProperties, FileType, OpenOptions, PropertyMap } from "../types.js";
|
|
3
3
|
import type { MutableTag } from "./mutable-tag.js";
|
|
4
4
|
import type { TypedAudioFile } from "./audio-file-interface.js";
|
|
@@ -10,15 +10,15 @@ import type { TypedAudioFile } from "./audio-file-interface.js";
|
|
|
10
10
|
*/
|
|
11
11
|
export declare abstract class BaseAudioFileImpl {
|
|
12
12
|
protected readonly module: TagLibModule;
|
|
13
|
-
protected fileHandle:
|
|
13
|
+
protected fileHandle: WasmFileHandle | null;
|
|
14
14
|
protected cachedAudioProperties: AudioProperties | null;
|
|
15
|
-
protected readonly sourcePath
|
|
16
|
-
protected originalSource
|
|
15
|
+
protected readonly sourcePath: string | undefined;
|
|
16
|
+
protected originalSource: string | Uint8Array | ArrayBuffer | File | undefined;
|
|
17
17
|
protected isPartiallyLoaded: boolean;
|
|
18
|
-
protected readonly partialLoadOptions
|
|
18
|
+
protected readonly partialLoadOptions: OpenOptions | undefined;
|
|
19
19
|
/** Text-property wire keys in the partial header at load; undefined if full. */
|
|
20
|
-
protected readonly partialKeysAtLoad
|
|
21
|
-
constructor(module: TagLibModule, fileHandle:
|
|
20
|
+
protected readonly partialKeysAtLoad: ReadonlySet<string> | undefined;
|
|
21
|
+
constructor(module: TagLibModule, fileHandle: WasmFileHandle, sourcePath?: string, originalSource?: string | Uint8Array | ArrayBuffer | File, isPartiallyLoaded?: boolean, partialLoadOptions?: OpenOptions);
|
|
22
22
|
/**
|
|
23
23
|
* Wire-key text properties present in the partial header at load but now
|
|
24
24
|
* absent — the user deleted them. The partial-load reconstruct subtracts these
|
|
@@ -27,15 +27,21 @@ export declare abstract class BaseAudioFileImpl {
|
|
|
27
27
|
* their own reconstruct path); empty for a full load.
|
|
28
28
|
*/
|
|
29
29
|
protected partialDeletedPropertyKeys(): ReadonlySet<string>;
|
|
30
|
-
protected get handle():
|
|
30
|
+
protected get handle(): WasmFileHandle;
|
|
31
31
|
getFormat(): FileType;
|
|
32
32
|
isFormat<F extends FileType>(format: F): this is TypedAudioFile<F>;
|
|
33
33
|
tag(): MutableTag;
|
|
34
34
|
audioProperties(): AudioProperties | undefined;
|
|
35
35
|
properties(): PropertyMap;
|
|
36
36
|
setProperties(properties: PropertyMap): void;
|
|
37
|
-
getProperty(key: string): string | undefined;
|
|
37
|
+
getProperty(key: string): string[] | undefined;
|
|
38
38
|
setProperty(key: string, value: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* The empty-string clearing contract, named (taglib-qyw2): both backends
|
|
41
|
+
* remove the property when the written value is empty, and setProperty's
|
|
42
|
+
* wire-key normalization + MP4 freeform atom-name handling apply unchanged.
|
|
43
|
+
*/
|
|
44
|
+
removeProperty(key: string): void;
|
|
39
45
|
isMP4(): boolean;
|
|
40
46
|
getMP4Item(key: string): string | undefined;
|
|
41
47
|
setMP4Item(key: string, value: string): void;
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"audio-file-base.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,WAAW,EACX,WAAW,EACZ,MAAM,aAAa,CAAC;AASrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAiBhE;;;;;GAKG;AACH,8BAAsB,iBAAiB;IAgBnC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IAfzC,SAAS,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5C,SAAS,CAAC,qBAAqB,EAAE,eAAe,GAAG,IAAI,CAAQ;IAC/D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,SAAS,CAAC,cAAc,EACpB,MAAM,GACN,UAAU,GACV,WAAW,GACX,IAAI,GACJ,SAAS,CAAC;IACd,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAS;IAC7C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/D,gFAAgF;IAChF,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;gBAGjD,MAAM,EAAE,YAAY,EACvC,UAAU,EAAE,cAAc,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,EACzD,iBAAiB,GAAE,OAAe,EAClC,kBAAkB,CAAC,EAAE,WAAW;IAgBlC;;;;;;OAMG;IACH,SAAS,CAAC,0BAA0B,IAAI,WAAW,CAAC,MAAM,CAAC;IAU3D,SAAS,KAAK,MAAM,IAAI,cAAc,CAKrC;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;IAIjB,eAAe,IAAI,eAAe,GAAG,SAAS;IAO9C,UAAU,IAAI,WAAW;IAMzB,aAAa,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IA4B5C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IA4B9C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAkD7C;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIjC,KAAK,IAAI,OAAO;IAIhB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAe3C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAoB5C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOhC,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,IAAI;IASf,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAGzB"}
|