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.
Files changed (97) hide show
  1. package/README.md +8 -1
  2. package/dist/disc-folder.d.ts +19 -0
  3. package/dist/disc-folder.d.ts.map +1 -0
  4. package/dist/disc-folder.js +550 -0
  5. package/dist/index.browser.d.ts +3 -4
  6. package/dist/index.browser.d.ts.map +1 -1
  7. package/dist/index.browser.js +187 -176
  8. package/dist/index.d.ts +3 -4
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +4 -12
  11. package/dist/simple.browser.js +172 -33
  12. package/dist/src/constants/complex-properties.d.ts +0 -114
  13. package/dist/src/constants/complex-properties.d.ts.map +1 -1
  14. package/dist/src/constants/complex-properties.js +0 -55
  15. package/dist/src/constants/index.d.ts +0 -1
  16. package/dist/src/constants/index.d.ts.map +1 -1
  17. package/dist/src/constants/index.js +0 -1
  18. package/dist/src/constants/utilities.d.ts +13 -0
  19. package/dist/src/constants/utilities.d.ts.map +1 -1
  20. package/dist/src/constants/utilities.js +9 -1
  21. package/dist/src/file-utils/import-operations.d.ts.map +1 -1
  22. package/dist/src/file-utils/import-operations.js +1 -1
  23. package/dist/src/folder-api/file-processors.d.ts.map +1 -1
  24. package/dist/src/folder-api/file-processors.js +6 -5
  25. package/dist/src/folder-api/scan-for-albums.js +3 -3
  26. package/dist/src/folder-api/scan-operations.js +2 -2
  27. package/dist/src/msgpack/decoder.d.ts +2 -2
  28. package/dist/src/msgpack/decoder.d.ts.map +1 -1
  29. package/dist/src/msgpack/decoder.js +5 -6
  30. package/dist/src/msgpack/encoder.d.ts.map +1 -1
  31. package/dist/src/msgpack/encoder.js +9 -6
  32. package/dist/src/msgpack/index.d.ts +1 -1
  33. package/dist/src/msgpack/index.d.ts.map +1 -1
  34. package/dist/src/msgpack/types.d.ts +10 -0
  35. package/dist/src/msgpack/types.d.ts.map +1 -1
  36. package/dist/src/msgpack/utils.d.ts +2 -1
  37. package/dist/src/msgpack/utils.d.ts.map +1 -1
  38. package/dist/src/runtime/module-loader-browser.d.ts.map +1 -1
  39. package/dist/src/runtime/module-loader.d.ts.map +1 -1
  40. package/dist/src/runtime/module-loader.js +3 -3
  41. package/dist/src/runtime/platform-io.js +1 -1
  42. package/dist/src/runtime/unified-loader/module-loading.d.ts.map +1 -1
  43. package/dist/src/runtime/unified-loader/module-loading.js +1 -1
  44. package/dist/src/runtime/wasi-adapter/file-handle.d.ts +8 -0
  45. package/dist/src/runtime/wasi-adapter/file-handle.d.ts.map +1 -1
  46. package/dist/src/runtime/wasi-adapter/file-handle.js +44 -4
  47. package/dist/src/runtime/wasi-fs-deno.d.ts.map +1 -1
  48. package/dist/src/runtime/wasi-fs-deno.js +1 -1
  49. package/dist/src/simple/batch-operations.d.ts.map +1 -1
  50. package/dist/src/simple/batch-operations.js +14 -10
  51. package/dist/src/simple/picture-operations.js +1 -1
  52. package/dist/src/taglib/audio-file-base.d.ts +15 -9
  53. package/dist/src/taglib/audio-file-base.d.ts.map +1 -1
  54. package/dist/src/taglib/audio-file-base.js +35 -4
  55. package/dist/src/taglib/audio-file-impl.d.ts +2 -2
  56. package/dist/src/taglib/audio-file-impl.d.ts.map +1 -1
  57. package/dist/src/taglib/audio-file-impl.js +25 -13
  58. package/dist/src/taglib/audio-file-interface.d.ts +27 -6
  59. package/dist/src/taglib/audio-file-interface.d.ts.map +1 -1
  60. package/dist/src/taglib/auto-dispose.d.ts +6 -0
  61. package/dist/src/taglib/auto-dispose.d.ts.map +1 -0
  62. package/dist/src/taglib/auto-dispose.js +13 -0
  63. package/dist/src/taglib/embind-adapter.d.ts +2 -2
  64. package/dist/src/taglib/embind-adapter.d.ts.map +1 -1
  65. package/dist/src/taglib/embind-adapter.js +17 -0
  66. package/dist/src/taglib/extra-state-registry.d.ts.map +1 -1
  67. package/dist/src/taglib/extra-state-registry.js +9 -0
  68. package/dist/src/taglib/metadata-extent.d.ts.map +1 -1
  69. package/dist/src/taglib/metadata-extent.js +44 -1
  70. package/dist/src/taglib/mutable-tag.d.ts +15 -15
  71. package/dist/src/taglib/mutable-tag.d.ts.map +1 -1
  72. package/dist/src/taglib/save-reconstruct.d.ts.map +1 -1
  73. package/dist/src/taglib/taglib-class.d.ts.map +1 -1
  74. package/dist/src/types/tags.d.ts +0 -4
  75. package/dist/src/types/tags.d.ts.map +1 -1
  76. package/dist/src/utils/mirror-fields.d.ts +2 -0
  77. package/dist/src/utils/mirror-fields.d.ts.map +1 -1
  78. package/dist/src/utils/mirror-fields.js +11 -3
  79. package/dist/src/utils/node-fs.d.ts +10 -10
  80. package/dist/src/utils/node-fs.d.ts.map +1 -1
  81. package/dist/src/utils/node-fs.js +2 -1
  82. package/dist/src/utils/tag-mapping.d.ts.map +1 -1
  83. package/dist/src/utils/tag-mapping.js +1 -1
  84. package/dist/src/version.d.ts +1 -1
  85. package/dist/src/version.js +1 -1
  86. package/dist/src/wasm.d.ts +20 -1
  87. package/dist/src/wasm.d.ts.map +1 -1
  88. package/dist/src/web-utils/canvas.d.ts.map +1 -1
  89. package/dist/src/web-utils/canvas.js +6 -1
  90. package/dist/src/web-utils/data-url.js +1 -1
  91. package/dist/taglib-wasi.wasm +0 -0
  92. package/dist/taglib-web.wasm +0 -0
  93. package/dist/taglib-wrapper.js +1 -1
  94. package/package.json +23 -15
  95. package/dist/src/constants/tags.d.ts +0 -81
  96. package/dist/src/constants/tags.d.ts.map +0 -1
  97. 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,CAaf;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"}
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,CAoD5B"}
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
- dynamics: Object.keys(dynamics).length > 0 ? dynamics : void 0
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): ExtendedTag;
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;AAatD,wBAAgB,aAAa,CAAC,aAAa,EAAE,UAAU,GAAG,WAAW,CAapE;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"}
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,aAa3B,CAAC;AA4BH,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"}
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
- (entry) => typeof entry === "string" ? entry : String(entry?.text ?? "")
31
- ).filter((text) => text !== "");
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":"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"}
@@ -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): ExtendedTag | null;
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,WAAW,GAAG,IAAI;IAWhE;;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
+ {"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,CA0CvB"}
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,CA8EvB"}
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?.wasmBinary,
50
- wasmUrl: options?.wasmUrl,
51
- forceWasmType: options?.forceWasmType,
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) {
@@ -51,7 +51,7 @@ function createDenoIO() {
51
51
  combined.set(footer, actualHeader);
52
52
  return combined;
53
53
  } finally {
54
- file.close();
54
+ void file.close();
55
55
  }
56
56
  }
57
57
  };
@@ -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,CAwBpD;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"}
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":"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"}
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
- return Array.isArray(stored) ? stored[0]?.toString() ?? "" : stored?.toString() ?? "";
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
- return Array.isArray(foreign) ? foreign[0]?.toString() ?? "" : String(foreign);
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;AAa/B,wBAAgB,oBAAoB,IAAI,kBAAkB,CAazD"}
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;AAwBD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,YAAY,CAAC,CA4BvB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAOpC"}
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: extractDynamics(audioFile)
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
- tags: readExtendedTag(audioFile),
112
- properties: audioFile.audioProperties(),
113
- hasCoverArt: audioFile.getPictures().length > 0,
114
- dynamics: extractDynamics(audioFile)
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 { FileHandle, TagLibModule } from "../wasm.js";
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: FileHandle | null;
13
+ protected fileHandle: WasmFileHandle | null;
14
14
  protected cachedAudioProperties: AudioProperties | null;
15
- protected readonly sourcePath?: string;
16
- protected originalSource?: string | Uint8Array | ArrayBuffer | File;
15
+ protected readonly sourcePath: string | undefined;
16
+ protected originalSource: string | Uint8Array | ArrayBuffer | File | undefined;
17
17
  protected isPartiallyLoaded: boolean;
18
- protected readonly partialLoadOptions?: OpenOptions;
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?: ReadonlySet<string>;
21
- constructor(module: TagLibModule, fileHandle: FileHandle, sourcePath?: string, originalSource?: string | Uint8Array | ArrayBuffer | File, isPartiallyLoaded?: boolean, partialLoadOptions?: OpenOptions);
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(): FileHandle;
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,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3D,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;AAgBhE;;;;;GAKG;AACH,8BAAsB,iBAAiB;IAWnC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IAVzC,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;IACpD,gFAAgF;IAChF,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;gBAGtC,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;IAYlC;;;;;;OAMG;IACH,SAAS,CAAC,0BAA0B,IAAI,WAAW,CAAC,MAAM,CAAC;IAU3D,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;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,GAAG,SAAS;IAmB5C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAoB7C,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;IAQf,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAGzB"}
1
+ {"version":3,"file":"audio-file-base.d.ts","sourceRoot":"","sources":["../../../src/taglib/audio-file-base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,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"}