@agentdocumentformat/cli 0.7.2

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 (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +45 -0
  3. package/dist/adf.mjs +162 -0
  4. package/dist/chunks/APEv2Parser-2CNNHMXV.mjs +22 -0
  5. package/dist/chunks/AiffParser-7BR4RL6G.mjs +162 -0
  6. package/dist/chunks/App-L5L37JI5.mjs +16747 -0
  7. package/dist/chunks/AsfParser-VVRSLFOM.mjs +538 -0
  8. package/dist/chunks/DsdiffParser-CMD4AX7A.mjs +156 -0
  9. package/dist/chunks/DsfParser-UOGZDS2M.mjs +94 -0
  10. package/dist/chunks/FlacParser-HB3T3CD4.mjs +23 -0
  11. package/dist/chunks/MP4Parser-66HBRUSX.mjs +973 -0
  12. package/dist/chunks/MatroskaParser-J3HUIMEW.mjs +579 -0
  13. package/dist/chunks/MpegParser-YW6LIUEW.mjs +442 -0
  14. package/dist/chunks/MusepackParser-PAUSXP7D.mjs +252 -0
  15. package/dist/chunks/OggParser-NUBV3GWC.mjs +359 -0
  16. package/dist/chunks/WavPackParser-WQAGT7TC.mjs +171 -0
  17. package/dist/chunks/WaveParser-EWLQVDX4.mjs +238 -0
  18. package/dist/chunks/adf-schema-JRU2BTOG.mjs +62 -0
  19. package/dist/chunks/build-QF5W473T.mjs +60 -0
  20. package/dist/chunks/chatgpt-subscription-BQGWYZXE.mjs +23 -0
  21. package/dist/chunks/chunk-2DIECGFL.mjs +6 -0
  22. package/dist/chunks/chunk-2NAP2ZF7.mjs +60 -0
  23. package/dist/chunks/chunk-3AT7IIP7.mjs +25696 -0
  24. package/dist/chunks/chunk-3GNIDM53.mjs +35 -0
  25. package/dist/chunks/chunk-3M4ZPOA3.mjs +1477 -0
  26. package/dist/chunks/chunk-4MQPTCXY.mjs +510 -0
  27. package/dist/chunks/chunk-5PO5PKRV.mjs +366 -0
  28. package/dist/chunks/chunk-5QU5VY7N.mjs +52 -0
  29. package/dist/chunks/chunk-5W7KES6P.mjs +436 -0
  30. package/dist/chunks/chunk-62NE4LG4.mjs +61 -0
  31. package/dist/chunks/chunk-64OKE4X3.mjs +45 -0
  32. package/dist/chunks/chunk-6GJ4QHRI.mjs +1278 -0
  33. package/dist/chunks/chunk-6VQEXLE2.mjs +144 -0
  34. package/dist/chunks/chunk-6XUV6EK6.mjs +41 -0
  35. package/dist/chunks/chunk-776TSXEP.mjs +43 -0
  36. package/dist/chunks/chunk-7CV2SA3H.mjs +285 -0
  37. package/dist/chunks/chunk-7MTRVW2U.mjs +3103 -0
  38. package/dist/chunks/chunk-7N2R2VCG.mjs +1434 -0
  39. package/dist/chunks/chunk-7T2YMTWL.mjs +374 -0
  40. package/dist/chunks/chunk-7XYNI52E.mjs +149 -0
  41. package/dist/chunks/chunk-APHX6HSV.mjs +7731 -0
  42. package/dist/chunks/chunk-APRU6PHC.mjs +40 -0
  43. package/dist/chunks/chunk-AUYKRQPJ.mjs +499 -0
  44. package/dist/chunks/chunk-DXWDD5XJ.mjs +136 -0
  45. package/dist/chunks/chunk-EWL5FG4I.mjs +39 -0
  46. package/dist/chunks/chunk-EYX2YLJW.mjs +117 -0
  47. package/dist/chunks/chunk-F5ELW46V.mjs +27 -0
  48. package/dist/chunks/chunk-G426FACA.mjs +49 -0
  49. package/dist/chunks/chunk-GEKSJHIV.mjs +2472 -0
  50. package/dist/chunks/chunk-HBUENVQL.mjs +570 -0
  51. package/dist/chunks/chunk-HPVFJYXR.mjs +112 -0
  52. package/dist/chunks/chunk-HWLWPXQ7.mjs +721 -0
  53. package/dist/chunks/chunk-I2HJYHFT.mjs +665 -0
  54. package/dist/chunks/chunk-I3UYSITV.mjs +68 -0
  55. package/dist/chunks/chunk-IC4JDZCI.mjs +3864 -0
  56. package/dist/chunks/chunk-IHDDCZBS.mjs +112 -0
  57. package/dist/chunks/chunk-IIGMZHQQ.mjs +10416 -0
  58. package/dist/chunks/chunk-KWFOS5WC.mjs +41 -0
  59. package/dist/chunks/chunk-LAZIXV2F.mjs +5290 -0
  60. package/dist/chunks/chunk-LFMB4PAA.mjs +10814 -0
  61. package/dist/chunks/chunk-M2RX3S2T.mjs +49 -0
  62. package/dist/chunks/chunk-M3WPIJYM.mjs +65 -0
  63. package/dist/chunks/chunk-NBTUWMGP.mjs +263 -0
  64. package/dist/chunks/chunk-NGK6PVSF.mjs +2676 -0
  65. package/dist/chunks/chunk-NZ7JTHEO.mjs +85 -0
  66. package/dist/chunks/chunk-OQN33RGQ.mjs +52 -0
  67. package/dist/chunks/chunk-RIX34QHC.mjs +2935 -0
  68. package/dist/chunks/chunk-SGUTYISF.mjs +16 -0
  69. package/dist/chunks/chunk-SLJ5L7PY.mjs +1473 -0
  70. package/dist/chunks/chunk-SLUKGXKH.mjs +68 -0
  71. package/dist/chunks/chunk-TMT32MXT.mjs +419 -0
  72. package/dist/chunks/chunk-UYY5M2PB.mjs +151 -0
  73. package/dist/chunks/chunk-VAUOM3IN.mjs +298 -0
  74. package/dist/chunks/chunk-VMHTYDH4.mjs +172 -0
  75. package/dist/chunks/chunk-VZS54AA5.mjs +200 -0
  76. package/dist/chunks/chunk-WFQUVXML.mjs +295 -0
  77. package/dist/chunks/chunk-X34PDRUH.mjs +809 -0
  78. package/dist/chunks/chunk-XNPZBLYL.mjs +33 -0
  79. package/dist/chunks/chunk-XX7OSWTO.mjs +157 -0
  80. package/dist/chunks/chunk-XYTWGHFS.mjs +600 -0
  81. package/dist/chunks/chunk-XYV3VCIX.mjs +336 -0
  82. package/dist/chunks/chunk-Y5ZLKFLE.mjs +1469 -0
  83. package/dist/chunks/chunk-ZJKXHM4Q.mjs +230 -0
  84. package/dist/chunks/cli-TCMBNZF6.mjs +1030 -0
  85. package/dist/chunks/commands-DTEKM4ZL.mjs +20 -0
  86. package/dist/chunks/daemon-ZC3FZ2P4.mjs +112449 -0
  87. package/dist/chunks/daemon-control-WDX7PMTC.mjs +300 -0
  88. package/dist/chunks/daemon-token-WRSULP7G.mjs +23 -0
  89. package/dist/chunks/devtools-H7CI2ZVG.mjs +85 -0
  90. package/dist/chunks/discord-IWDQJA7A.mjs +70588 -0
  91. package/dist/chunks/dist-C57KYFS2.mjs +4952 -0
  92. package/dist/chunks/dist-I3XBAGDL.mjs +11 -0
  93. package/dist/chunks/email-V4Q4VJON.mjs +58679 -0
  94. package/dist/chunks/environment-NX277MQG.mjs +15 -0
  95. package/dist/chunks/grok-subscription-4PYX7TBF.mjs +19 -0
  96. package/dist/chunks/layout-EPJQNFAI.mjs +22 -0
  97. package/dist/chunks/lib-N7FCZWKH.mjs +4038 -0
  98. package/dist/chunks/open-OTQDGDH5.mjs +36 -0
  99. package/dist/chunks/parser-JVY2PWSM.mjs +19 -0
  100. package/dist/chunks/pipeline-executor-BHBSJX2K.mjs +19 -0
  101. package/dist/chunks/react-IUIDQ5LX.mjs +11 -0
  102. package/dist/chunks/screen-54BUTYCW.mjs +27 -0
  103. package/dist/chunks/slack-3L5QTDZX.mjs +8113 -0
  104. package/dist/chunks/store-WR7TZJZS.mjs +32 -0
  105. package/dist/chunks/telegram-5ISVFBV3.mjs +14918 -0
  106. package/dist/chunks/terminal-O5WO7C5U.mjs +48 -0
  107. package/dist/chunks/theme-NORU4J74.mjs +20 -0
  108. package/dist/chunks/themes-F2FKU7CP.mjs +23 -0
  109. package/dist/chunks/token-6G3HCMNX.mjs +54 -0
  110. package/dist/chunks/token-util-UXYSDQIW.mjs +12 -0
  111. package/dist/chunks/tui-ODVYUIMT.mjs +197 -0
  112. package/dist/chunks/welcome-XHXFV7SH.mjs +32 -0
  113. package/dist/chunks/whatsapp-XSAMNGPJ.mjs +85412 -0
  114. package/dist/chunks/xterm-headless-YF53XWXE.mjs +3353 -0
  115. package/package.json +53 -0
  116. package/resources/wasm/coreutils.LICENSE +18 -0
  117. package/resources/wasm/coreutils.wasm +0 -0
@@ -0,0 +1,538 @@
1
+ import { createRequire as __adfCreateRequire } from 'node:module';
2
+ import { fileURLToPath as __adfFileURLToPath } from 'node:url';
3
+ import { dirname as __adfDirname } from 'node:path';
4
+ const require = __adfCreateRequire(import.meta.url);
5
+ const __filename = __adfFileURLToPath(import.meta.url);
6
+ const __dirname = __adfDirname(__filename);
7
+ import "./chunk-2DIECGFL.mjs";
8
+ import {
9
+ TrackType
10
+ } from "./chunk-EWL5FG4I.mjs";
11
+ import {
12
+ AttachedPictureType
13
+ } from "./chunk-DXWDD5XJ.mjs";
14
+ import {
15
+ decodeString,
16
+ getBit,
17
+ stripNulls
18
+ } from "./chunk-XX7OSWTO.mjs";
19
+ import {
20
+ BasicParser,
21
+ StringType,
22
+ UINT16_LE,
23
+ UINT32_LE,
24
+ UINT64_LE,
25
+ makeUnexpectedFileContentError
26
+ } from "./chunk-I2HJYHFT.mjs";
27
+ import {
28
+ require_src
29
+ } from "./chunk-AUYKRQPJ.mjs";
30
+ import "./chunk-NZ7JTHEO.mjs";
31
+ import {
32
+ __toESM
33
+ } from "./chunk-M2RX3S2T.mjs";
34
+
35
+ // node_modules/music-metadata/lib/asf/AsfParser.js
36
+ var import_debug = __toESM(require_src(), 1);
37
+
38
+ // node_modules/win-guid/lib/guid.js
39
+ function parseWindowsGuid(guid) {
40
+ let s = guid.trim();
41
+ if (s.length !== 36 || s[8] !== "-" || s[13] !== "-" || s[18] !== "-" || s[23] !== "-")
42
+ throw new Error(`Invalid GUID format: ${guid}`);
43
+ let v, out = new Uint8Array(16);
44
+ v = parseInt(s.slice(0, 8), 16), out[0] = v & 255, out[1] = v >>> 8 & 255, out[2] = v >>> 16 & 255, out[3] = v >>> 24 & 255, v = parseInt(s.slice(9, 13), 16), out[4] = v & 255, out[5] = v >>> 8 & 255, v = parseInt(s.slice(14, 18), 16), out[6] = v & 255, out[7] = v >>> 8 & 255, v = parseInt(s.slice(19, 23), 16), out[8] = v >>> 8 & 255, out[9] = v & 255, v = parseInt(s.slice(24, 32), 16), out[10] = v >>> 24 & 255, out[11] = v >>> 16 & 255, out[12] = v >>> 8 & 255, out[13] = v & 255, v = parseInt(s.slice(32, 36), 16), out[14] = v >>> 8 & 255, out[15] = v & 255;
45
+ for (let i = 0; i < 16; i++)
46
+ if (!Number.isFinite(out[i]))
47
+ throw new Error(`Invalid GUID format: ${guid}`);
48
+ if (!/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(s))
49
+ throw new Error(`Invalid GUID format: ${guid}`);
50
+ return out;
51
+ }
52
+ var Guid = class _Guid {
53
+ constructor(bytes) {
54
+ if (bytes.length !== 16)
55
+ throw new Error("GUID must be exactly 16 bytes");
56
+ this.bytes = bytes;
57
+ }
58
+ static fromString(guid) {
59
+ return new _Guid(parseWindowsGuid(guid));
60
+ }
61
+ /**
62
+ * Convert Windows / CFBF byte order into canonical GUID string:
63
+ * xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
64
+ */
65
+ toString() {
66
+ let b = this.bytes, hx = (n) => n.toString(16).padStart(2, "0"), g1 = hx(b[3]) + hx(b[2]) + hx(b[1]) + hx(b[0]), g2 = hx(b[5]) + hx(b[4]), g3 = hx(b[7]) + hx(b[6]), g4 = hx(b[8]) + hx(b[9]), g5 = hx(b[10]) + hx(b[11]) + hx(b[12]) + hx(b[13]) + hx(b[14]) + hx(b[15]);
67
+ return `${g1}-${g2}-${g3}-${g4}-${g5}`.toUpperCase();
68
+ }
69
+ /**
70
+ * Compare against a Uint8Array containing GUID bytes
71
+ * in Windows / CFBF layout.
72
+ */
73
+ equals(buf, offset = 0) {
74
+ if (offset < 0 || buf.length - offset < 16)
75
+ return !1;
76
+ let a = this.bytes;
77
+ for (let i = 0; i < 16; i++)
78
+ if (buf[offset + i] !== a[i])
79
+ return !1;
80
+ return !0;
81
+ }
82
+ };
83
+
84
+ // node_modules/music-metadata/lib/asf/AsfGuid.js
85
+ var AsfGuid = class _AsfGuid {
86
+ static fromBin(bin, offset = 0) {
87
+ return new _AsfGuid(_AsfGuid.decode(bin, offset));
88
+ }
89
+ /**
90
+ * Decode GUID in format like "B503BF5F-2EA9-CF11-8EE3-00C00C205365"
91
+ * @param objectId Binary GUID
92
+ * @param offset Read offset in bytes, default 0
93
+ * @returns GUID as dashed hexadecimal representation
94
+ */
95
+ static decode(objectId, offset = 0) {
96
+ return new Guid(objectId.subarray(offset, offset + 16)).toString();
97
+ }
98
+ /**
99
+ * Decode stream type
100
+ * @param mediaType Media type GUID
101
+ * @returns Media type
102
+ */
103
+ static decodeMediaType(mediaType) {
104
+ switch (mediaType.str) {
105
+ case _AsfGuid.AudioMedia.str:
106
+ return "audio";
107
+ case _AsfGuid.VideoMedia.str:
108
+ return "video";
109
+ case _AsfGuid.CommandMedia.str:
110
+ return "command";
111
+ case _AsfGuid.Degradable_JPEG_Media.str:
112
+ return "degradable-jpeg";
113
+ case _AsfGuid.FileTransferMedia.str:
114
+ return "file-transfer";
115
+ case _AsfGuid.BinaryMedia.str:
116
+ return "binary";
117
+ }
118
+ }
119
+ /**
120
+ * Encode GUID
121
+ * @param guid GUID like: "B503BF5F-2EA9-CF11-8EE3-00C00C205365"
122
+ * @returns Encoded Binary GUID
123
+ */
124
+ static encode(guid) {
125
+ return parseWindowsGuid(guid);
126
+ }
127
+ constructor(str) {
128
+ this.str = str;
129
+ }
130
+ equals(guid) {
131
+ return this.str === guid.str;
132
+ }
133
+ toBin() {
134
+ return _AsfGuid.encode(this.str);
135
+ }
136
+ };
137
+ AsfGuid.HeaderObject = new AsfGuid("75B22630-668E-11CF-A6D9-00AA0062CE6C");
138
+ AsfGuid.DataObject = new AsfGuid("75B22636-668E-11CF-A6D9-00AA0062CE6C");
139
+ AsfGuid.SimpleIndexObject = new AsfGuid("33000890-E5B1-11CF-89F4-00A0C90349CB");
140
+ AsfGuid.IndexObject = new AsfGuid("D6E229D3-35DA-11D1-9034-00A0C90349BE");
141
+ AsfGuid.MediaObjectIndexObject = new AsfGuid("FEB103F8-12AD-4C64-840F-2A1D2F7AD48C");
142
+ AsfGuid.TimecodeIndexObject = new AsfGuid("3CB73FD0-0C4A-4803-953D-EDF7B6228F0C");
143
+ AsfGuid.FilePropertiesObject = new AsfGuid("8CABDCA1-A947-11CF-8EE4-00C00C205365");
144
+ AsfGuid.StreamPropertiesObject = new AsfGuid("B7DC0791-A9B7-11CF-8EE6-00C00C205365");
145
+ AsfGuid.HeaderExtensionObject = new AsfGuid("5FBF03B5-A92E-11CF-8EE3-00C00C205365");
146
+ AsfGuid.CodecListObject = new AsfGuid("86D15240-311D-11D0-A3A4-00A0C90348F6");
147
+ AsfGuid.ScriptCommandObject = new AsfGuid("1EFB1A30-0B62-11D0-A39B-00A0C90348F6");
148
+ AsfGuid.MarkerObject = new AsfGuid("F487CD01-A951-11CF-8EE6-00C00C205365");
149
+ AsfGuid.BitrateMutualExclusionObject = new AsfGuid("D6E229DC-35DA-11D1-9034-00A0C90349BE");
150
+ AsfGuid.ErrorCorrectionObject = new AsfGuid("75B22635-668E-11CF-A6D9-00AA0062CE6C");
151
+ AsfGuid.ContentDescriptionObject = new AsfGuid("75B22633-668E-11CF-A6D9-00AA0062CE6C");
152
+ AsfGuid.ExtendedContentDescriptionObject = new AsfGuid("D2D0A440-E307-11D2-97F0-00A0C95EA850");
153
+ AsfGuid.ContentBrandingObject = new AsfGuid("2211B3FA-BD23-11D2-B4B7-00A0C955FC6E");
154
+ AsfGuid.StreamBitratePropertiesObject = new AsfGuid("7BF875CE-468D-11D1-8D82-006097C9A2B2");
155
+ AsfGuid.ContentEncryptionObject = new AsfGuid("2211B3FB-BD23-11D2-B4B7-00A0C955FC6E");
156
+ AsfGuid.ExtendedContentEncryptionObject = new AsfGuid("298AE614-2622-4C17-B935-DAE07EE9289C");
157
+ AsfGuid.DigitalSignatureObject = new AsfGuid("2211B3FC-BD23-11D2-B4B7-00A0C955FC6E");
158
+ AsfGuid.PaddingObject = new AsfGuid("1806D474-CADF-4509-A4BA-9AABCB96AAE8");
159
+ AsfGuid.ExtendedStreamPropertiesObject = new AsfGuid("14E6A5CB-C672-4332-8399-A96952065B5A");
160
+ AsfGuid.AdvancedMutualExclusionObject = new AsfGuid("A08649CF-4775-4670-8A16-6E35357566CD");
161
+ AsfGuid.GroupMutualExclusionObject = new AsfGuid("D1465A40-5A79-4338-B71B-E36B8FD6C249");
162
+ AsfGuid.StreamPrioritizationObject = new AsfGuid("D4FED15B-88D3-454F-81F0-ED5C45999E24");
163
+ AsfGuid.BandwidthSharingObject = new AsfGuid("A69609E6-517B-11D2-B6AF-00C04FD908E9");
164
+ AsfGuid.LanguageListObject = new AsfGuid("7C4346A9-EFE0-4BFC-B229-393EDE415C85");
165
+ AsfGuid.MetadataObject = new AsfGuid("C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA");
166
+ AsfGuid.MetadataLibraryObject = new AsfGuid("44231C94-9498-49D1-A141-1D134E457054");
167
+ AsfGuid.IndexParametersObject = new AsfGuid("D6E229DF-35DA-11D1-9034-00A0C90349BE");
168
+ AsfGuid.MediaObjectIndexParametersObject = new AsfGuid("6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7");
169
+ AsfGuid.TimecodeIndexParametersObject = new AsfGuid("F55E496D-9797-4B5D-8C8B-604DFE9BFB24");
170
+ AsfGuid.CompatibilityObject = new AsfGuid("26F18B5D-4584-47EC-9F5F-0E651F0452C9");
171
+ AsfGuid.AdvancedContentEncryptionObject = new AsfGuid("43058533-6981-49E6-9B74-AD12CB86D58C");
172
+ AsfGuid.AudioMedia = new AsfGuid("F8699E40-5B4D-11CF-A8FD-00805F5C442B");
173
+ AsfGuid.VideoMedia = new AsfGuid("BC19EFC0-5B4D-11CF-A8FD-00805F5C442B");
174
+ AsfGuid.CommandMedia = new AsfGuid("59DACFC0-59E6-11D0-A3AC-00A0C90348F6");
175
+ AsfGuid.JFIF_Media = new AsfGuid("B61BE100-5B4E-11CF-A8FD-00805F5C442B");
176
+ AsfGuid.Degradable_JPEG_Media = new AsfGuid("35907DE0-E415-11CF-A917-00805F5C442B");
177
+ AsfGuid.FileTransferMedia = new AsfGuid("91BD222C-F21C-497A-8B6D-5AA86BFC0185");
178
+ AsfGuid.BinaryMedia = new AsfGuid("3AFB65E2-47EF-40F2-AC2C-70A90D71D343");
179
+ AsfGuid.ASF_Index_Placeholder_Object = new AsfGuid("D9AADE20-7C17-4F9C-BC28-8555DD98E2A2");
180
+ var AsfGuid_default = AsfGuid;
181
+
182
+ // node_modules/music-metadata/lib/asf/AsfUtil.js
183
+ function getParserForAttr(i) {
184
+ return attributeParsers[i];
185
+ }
186
+ function parseUnicodeAttr(uint8Array) {
187
+ return stripNulls(decodeString(uint8Array, "utf-16le"));
188
+ }
189
+ var attributeParsers = [
190
+ parseUnicodeAttr,
191
+ parseByteArrayAttr,
192
+ parseBoolAttr,
193
+ parseDWordAttr,
194
+ parseQWordAttr,
195
+ parseWordAttr,
196
+ parseByteArrayAttr
197
+ ];
198
+ function parseByteArrayAttr(buf) {
199
+ return new Uint8Array(buf);
200
+ }
201
+ function parseBoolAttr(buf, offset = 0) {
202
+ return parseWordAttr(buf, offset) === 1;
203
+ }
204
+ function parseDWordAttr(buf, offset = 0) {
205
+ return UINT32_LE.get(buf, offset);
206
+ }
207
+ function parseQWordAttr(buf, offset = 0) {
208
+ return UINT64_LE.get(buf, offset);
209
+ }
210
+ function parseWordAttr(buf, offset = 0) {
211
+ return UINT16_LE.get(buf, offset);
212
+ }
213
+
214
+ // node_modules/music-metadata/lib/asf/AsfObject.js
215
+ var AsfContentParseError = class extends makeUnexpectedFileContentError("ASF") {
216
+ };
217
+ var TopLevelHeaderObjectToken = {
218
+ len: 30,
219
+ get: (buf, off) => ({
220
+ objectId: AsfGuid_default.fromBin(buf, off),
221
+ objectSize: Number(UINT64_LE.get(buf, off + 16)),
222
+ numberOfHeaderObjects: UINT32_LE.get(buf, off + 24)
223
+ // Reserved: 2 bytes
224
+ })
225
+ }, HeaderObjectToken = {
226
+ len: 24,
227
+ get: (buf, off) => ({
228
+ objectId: AsfGuid_default.fromBin(buf, off),
229
+ objectSize: Number(UINT64_LE.get(buf, off + 16))
230
+ })
231
+ }, State = class {
232
+ constructor(header) {
233
+ this.len = Number(header.objectSize) - HeaderObjectToken.len;
234
+ }
235
+ postProcessTag(tags, name, valueType, data) {
236
+ if (name === "WM/Picture")
237
+ tags.push({ id: name, value: WmPictureToken.fromBuffer(data) });
238
+ else {
239
+ let parseAttr = getParserForAttr(valueType);
240
+ if (!parseAttr)
241
+ throw new AsfContentParseError(`unexpected value headerType: ${valueType}`);
242
+ tags.push({ id: name, value: parseAttr(data) });
243
+ }
244
+ }
245
+ }, IgnoreObjectState = class extends State {
246
+ get(_buf, _off) {
247
+ return null;
248
+ }
249
+ }, FilePropertiesObject = class extends State {
250
+ get(buf, off) {
251
+ return {
252
+ fileId: AsfGuid_default.fromBin(buf, off),
253
+ fileSize: UINT64_LE.get(buf, off + 16),
254
+ creationDate: UINT64_LE.get(buf, off + 24),
255
+ dataPacketsCount: UINT64_LE.get(buf, off + 32),
256
+ playDuration: UINT64_LE.get(buf, off + 40),
257
+ sendDuration: UINT64_LE.get(buf, off + 48),
258
+ preroll: UINT64_LE.get(buf, off + 56),
259
+ flags: {
260
+ broadcast: getBit(buf, off + 64, 24),
261
+ seekable: getBit(buf, off + 64, 25)
262
+ },
263
+ // flagsNumeric: Token.UINT32_LE.get(buf, off + 64),
264
+ minimumDataPacketSize: UINT32_LE.get(buf, off + 68),
265
+ maximumDataPacketSize: UINT32_LE.get(buf, off + 72),
266
+ maximumBitrate: UINT32_LE.get(buf, off + 76)
267
+ };
268
+ }
269
+ };
270
+ FilePropertiesObject.guid = AsfGuid_default.FilePropertiesObject;
271
+ var StreamPropertiesObject = class extends State {
272
+ get(buf, off) {
273
+ return {
274
+ streamType: AsfGuid_default.decodeMediaType(AsfGuid_default.fromBin(buf, off)),
275
+ errorCorrectionType: AsfGuid_default.fromBin(buf, off + 8)
276
+ // ToDo
277
+ };
278
+ }
279
+ };
280
+ StreamPropertiesObject.guid = AsfGuid_default.StreamPropertiesObject;
281
+ var HeaderExtensionObject = class {
282
+ constructor() {
283
+ this.len = 22;
284
+ }
285
+ get(buf, off) {
286
+ let view = new DataView(buf.buffer, off);
287
+ return {
288
+ reserved1: AsfGuid_default.fromBin(buf, off),
289
+ reserved2: view.getUint16(16, !0),
290
+ extensionDataSize: view.getUint16(18, !0)
291
+ };
292
+ }
293
+ };
294
+ HeaderExtensionObject.guid = AsfGuid_default.HeaderExtensionObject;
295
+ var CodecListObjectHeader = {
296
+ len: 20,
297
+ get: (buf, off) => ({
298
+ entryCount: new DataView(buf.buffer, off).getUint16(16, !0)
299
+ })
300
+ };
301
+ async function readString(tokenizer) {
302
+ let length = await tokenizer.readNumber(UINT16_LE);
303
+ return (await tokenizer.readToken(new StringType(length * 2, "utf-16le"))).replace("\0", "");
304
+ }
305
+ async function readCodecEntries(tokenizer) {
306
+ let codecHeader = await tokenizer.readToken(CodecListObjectHeader), entries = [];
307
+ for (let i = 0; i < codecHeader.entryCount; ++i)
308
+ entries.push(await readCodecEntry(tokenizer));
309
+ return entries;
310
+ }
311
+ async function readInformation(tokenizer) {
312
+ let length = await tokenizer.readNumber(UINT16_LE), buf = new Uint8Array(length);
313
+ return await tokenizer.readBuffer(buf), buf;
314
+ }
315
+ async function readCodecEntry(tokenizer) {
316
+ let type = await tokenizer.readNumber(UINT16_LE);
317
+ return {
318
+ type: {
319
+ videoCodec: (type & 1) === 1,
320
+ audioCodec: (type & 2) === 2
321
+ },
322
+ codecName: await readString(tokenizer),
323
+ description: await readString(tokenizer),
324
+ information: await readInformation(tokenizer)
325
+ };
326
+ }
327
+ var ContentDescriptionObjectState = class _ContentDescriptionObjectState extends State {
328
+ get(buf, off) {
329
+ let tags = [], view = new DataView(buf.buffer, off), pos = 10;
330
+ for (let i = 0; i < _ContentDescriptionObjectState.contentDescTags.length; ++i) {
331
+ let length = view.getUint16(i * 2, !0);
332
+ if (length > 0) {
333
+ let tagName = _ContentDescriptionObjectState.contentDescTags[i], end = pos + length;
334
+ tags.push({ id: tagName, value: parseUnicodeAttr(buf.subarray(off + pos, off + end)) }), pos = end;
335
+ }
336
+ }
337
+ return tags;
338
+ }
339
+ };
340
+ ContentDescriptionObjectState.guid = AsfGuid_default.ContentDescriptionObject;
341
+ ContentDescriptionObjectState.contentDescTags = ["Title", "Author", "Copyright", "Description", "Rating"];
342
+ var ExtendedContentDescriptionObjectState = class extends State {
343
+ get(buf, off) {
344
+ let tags = [], view = new DataView(buf.buffer, off), attrCount = view.getUint16(0, !0), pos = 2;
345
+ for (let i = 0; i < attrCount; i += 1) {
346
+ let nameLen = view.getUint16(pos, !0);
347
+ pos += 2;
348
+ let name = parseUnicodeAttr(buf.subarray(off + pos, off + pos + nameLen));
349
+ pos += nameLen;
350
+ let valueType = view.getUint16(pos, !0);
351
+ pos += 2;
352
+ let valueLen = view.getUint16(pos, !0);
353
+ pos += 2;
354
+ let value = buf.subarray(off + pos, off + pos + valueLen);
355
+ pos += valueLen, this.postProcessTag(tags, name, valueType, value);
356
+ }
357
+ return tags;
358
+ }
359
+ };
360
+ ExtendedContentDescriptionObjectState.guid = AsfGuid_default.ExtendedContentDescriptionObject;
361
+ var ExtendedStreamPropertiesObjectState = class extends State {
362
+ get(buf, off) {
363
+ let view = new DataView(buf.buffer, off);
364
+ return {
365
+ startTime: UINT64_LE.get(buf, off),
366
+ endTime: UINT64_LE.get(buf, off + 8),
367
+ dataBitrate: view.getInt32(12, !0),
368
+ bufferSize: view.getInt32(16, !0),
369
+ initialBufferFullness: view.getInt32(20, !0),
370
+ alternateDataBitrate: view.getInt32(24, !0),
371
+ alternateBufferSize: view.getInt32(28, !0),
372
+ alternateInitialBufferFullness: view.getInt32(32, !0),
373
+ maximumObjectSize: view.getInt32(36, !0),
374
+ flags: {
375
+ reliableFlag: getBit(buf, off + 40, 0),
376
+ seekableFlag: getBit(buf, off + 40, 1),
377
+ resendLiveCleanpointsFlag: getBit(buf, off + 40, 2)
378
+ },
379
+ // flagsNumeric: Token.UINT32_LE.get(buf, off + 64),
380
+ streamNumber: view.getInt16(42, !0),
381
+ streamLanguageId: view.getInt16(44, !0),
382
+ averageTimePerFrame: view.getInt32(52, !0),
383
+ streamNameCount: view.getInt32(54, !0),
384
+ payloadExtensionSystems: view.getInt32(56, !0),
385
+ streamNames: [],
386
+ // ToDo
387
+ streamPropertiesObject: null
388
+ };
389
+ }
390
+ };
391
+ ExtendedStreamPropertiesObjectState.guid = AsfGuid_default.ExtendedStreamPropertiesObject;
392
+ var MetadataObjectState = class extends State {
393
+ get(uint8Array, off) {
394
+ let tags = [], view = new DataView(uint8Array.buffer, off), descriptionRecordsCount = view.getUint16(0, !0), pos = 2;
395
+ for (let i = 0; i < descriptionRecordsCount; i += 1) {
396
+ pos += 4;
397
+ let nameLen = view.getUint16(pos, !0);
398
+ pos += 2;
399
+ let dataType = view.getUint16(pos, !0);
400
+ pos += 2;
401
+ let dataLen = view.getUint32(pos, !0);
402
+ pos += 4;
403
+ let name = parseUnicodeAttr(uint8Array.subarray(off + pos, off + pos + nameLen));
404
+ pos += nameLen;
405
+ let data = uint8Array.subarray(off + pos, off + pos + dataLen);
406
+ pos += dataLen, this.postProcessTag(tags, name, dataType, data);
407
+ }
408
+ return tags;
409
+ }
410
+ };
411
+ MetadataObjectState.guid = AsfGuid_default.MetadataObject;
412
+ var MetadataLibraryObjectState = class extends MetadataObjectState {
413
+ };
414
+ MetadataLibraryObjectState.guid = AsfGuid_default.MetadataLibraryObject;
415
+ var WmPictureToken = class _WmPictureToken {
416
+ static fromBuffer(buffer) {
417
+ return new _WmPictureToken(buffer.length).get(buffer, 0);
418
+ }
419
+ constructor(len) {
420
+ this.len = len;
421
+ }
422
+ get(buffer, offset) {
423
+ let view = new DataView(buffer.buffer, offset), typeId = view.getUint8(0), size = view.getInt32(1, !0), index = 5;
424
+ for (; view.getUint16(index) !== 0; )
425
+ index += 2;
426
+ let format = new StringType(index - 5, "utf-16le").get(buffer, 5);
427
+ for (; view.getUint16(index) !== 0; )
428
+ index += 2;
429
+ let description = new StringType(index - 5, "utf-16le").get(buffer, 5);
430
+ return {
431
+ type: AttachedPictureType[typeId],
432
+ format,
433
+ description,
434
+ size,
435
+ data: buffer.slice(index + 4)
436
+ };
437
+ }
438
+ };
439
+
440
+ // node_modules/music-metadata/lib/asf/AsfParser.js
441
+ var debug = (0, import_debug.default)("music-metadata:parser:ASF"), headerType = "asf", AsfParser = class extends BasicParser {
442
+ async parse() {
443
+ let header = await this.tokenizer.readToken(TopLevelHeaderObjectToken);
444
+ if (!header.objectId.equals(AsfGuid_default.HeaderObject))
445
+ throw new AsfContentParseError(`expected asf header; but was not found; got: ${header.objectId.str}`);
446
+ await this.parseObjectHeader(header.numberOfHeaderObjects);
447
+ }
448
+ async parseObjectHeader(numberOfObjectHeaders) {
449
+ let tags;
450
+ do {
451
+ let header = await this.tokenizer.readToken(HeaderObjectToken);
452
+ switch (debug("header GUID=%s", header.objectId.str), header.objectId.str) {
453
+ case FilePropertiesObject.guid.str: {
454
+ let fpo = await this.tokenizer.readToken(new FilePropertiesObject(header));
455
+ this.metadata.setFormat("duration", Number(fpo.playDuration / BigInt(1e3)) / 1e4 - Number(fpo.preroll) / 1e3), this.metadata.setFormat("bitrate", fpo.maximumBitrate);
456
+ break;
457
+ }
458
+ case StreamPropertiesObject.guid.str: {
459
+ let spo = await this.tokenizer.readToken(new StreamPropertiesObject(header));
460
+ this.metadata.setFormat("container", `ASF/${spo.streamType}`);
461
+ break;
462
+ }
463
+ case HeaderExtensionObject.guid.str: {
464
+ let extHeader = await this.tokenizer.readToken(new HeaderExtensionObject());
465
+ await this.parseExtensionObject(extHeader.extensionDataSize);
466
+ break;
467
+ }
468
+ case ContentDescriptionObjectState.guid.str:
469
+ tags = await this.tokenizer.readToken(new ContentDescriptionObjectState(header)), await this.addTags(tags);
470
+ break;
471
+ case ExtendedContentDescriptionObjectState.guid.str:
472
+ tags = await this.tokenizer.readToken(new ExtendedContentDescriptionObjectState(header)), await this.addTags(tags);
473
+ break;
474
+ case AsfGuid_default.CodecListObject.str: {
475
+ let codecs = await readCodecEntries(this.tokenizer);
476
+ codecs.forEach((codec) => {
477
+ this.metadata.addStreamInfo({
478
+ type: codec.type.videoCodec ? TrackType.video : TrackType.audio,
479
+ codecName: codec.codecName
480
+ });
481
+ });
482
+ let audioCodecs = codecs.filter((codec) => codec.type.audioCodec).map((codec) => codec.codecName).join("/");
483
+ this.metadata.setFormat("codec", audioCodecs);
484
+ break;
485
+ }
486
+ case AsfGuid_default.StreamBitratePropertiesObject.str:
487
+ await this.tokenizer.ignore(header.objectSize - HeaderObjectToken.len);
488
+ break;
489
+ case AsfGuid_default.PaddingObject.str:
490
+ debug("Padding: %s bytes", header.objectSize - HeaderObjectToken.len), await this.tokenizer.ignore(header.objectSize - HeaderObjectToken.len);
491
+ break;
492
+ default:
493
+ this.metadata.addWarning(`Ignore ASF-Object-GUID: ${header.objectId.str}`), debug("Ignore ASF-Object-GUID: %s", header.objectId.str), await this.tokenizer.readToken(new IgnoreObjectState(header));
494
+ }
495
+ } while (--numberOfObjectHeaders);
496
+ }
497
+ async addTags(tags) {
498
+ await Promise.all(tags.map(({ id, value }) => this.metadata.addTag(headerType, id, value)));
499
+ }
500
+ async parseExtensionObject(extensionSize) {
501
+ do {
502
+ let header = await this.tokenizer.readToken(HeaderObjectToken), remaining = header.objectSize - HeaderObjectToken.len;
503
+ if (remaining < 0)
504
+ throw new AsfContentParseError(`Invalid ASF header object size: ${header.objectSize}`);
505
+ switch (header.objectId.str) {
506
+ case ExtendedStreamPropertiesObjectState.guid.str:
507
+ await this.tokenizer.readToken(new ExtendedStreamPropertiesObjectState(header));
508
+ break;
509
+ case MetadataObjectState.guid.str: {
510
+ let moTags = await this.tokenizer.readToken(new MetadataObjectState(header));
511
+ await this.addTags(moTags);
512
+ break;
513
+ }
514
+ case MetadataLibraryObjectState.guid.str: {
515
+ let mlTags = await this.tokenizer.readToken(new MetadataLibraryObjectState(header));
516
+ await this.addTags(mlTags);
517
+ break;
518
+ }
519
+ case AsfGuid_default.PaddingObject.str:
520
+ await this.tokenizer.ignore(remaining);
521
+ break;
522
+ case AsfGuid_default.CompatibilityObject.str:
523
+ await this.tokenizer.ignore(remaining);
524
+ break;
525
+ case AsfGuid_default.ASF_Index_Placeholder_Object.str:
526
+ await this.tokenizer.ignore(remaining);
527
+ break;
528
+ default:
529
+ this.metadata.addWarning(`Ignore ASF-Object-GUID: ${header.objectId.str}`), await this.tokenizer.readToken(new IgnoreObjectState(header));
530
+ break;
531
+ }
532
+ extensionSize -= header.objectSize;
533
+ } while (extensionSize > 0);
534
+ }
535
+ };
536
+ export {
537
+ AsfParser
538
+ };
@@ -0,0 +1,156 @@
1
+ import { createRequire as __adfCreateRequire } from 'node:module';
2
+ import { fileURLToPath as __adfFileURLToPath } from 'node:url';
3
+ import { dirname as __adfDirname } from 'node:path';
4
+ const require = __adfCreateRequire(import.meta.url);
5
+ const __filename = __adfFileURLToPath(import.meta.url);
6
+ const __dirname = __adfDirname(__filename);
7
+ import {
8
+ ID3v2Parser
9
+ } from "./chunk-XYTWGHFS.mjs";
10
+ import "./chunk-VAUOM3IN.mjs";
11
+ import "./chunk-DXWDD5XJ.mjs";
12
+ import {
13
+ FourCcToken
14
+ } from "./chunk-NBTUWMGP.mjs";
15
+ import "./chunk-XX7OSWTO.mjs";
16
+ import {
17
+ fromBuffer
18
+ } from "./chunk-HBUENVQL.mjs";
19
+ import {
20
+ BasicParser,
21
+ INT64_BE,
22
+ StringType,
23
+ UINT16_BE,
24
+ UINT32_BE,
25
+ UINT32_LE,
26
+ UINT8,
27
+ Uint8ArrayType,
28
+ makeUnexpectedFileContentError
29
+ } from "./chunk-I2HJYHFT.mjs";
30
+ import {
31
+ require_src
32
+ } from "./chunk-AUYKRQPJ.mjs";
33
+ import "./chunk-NZ7JTHEO.mjs";
34
+ import {
35
+ __toESM
36
+ } from "./chunk-M2RX3S2T.mjs";
37
+
38
+ // node_modules/music-metadata/lib/dsdiff/DsdiffParser.js
39
+ var import_debug = __toESM(require_src(), 1);
40
+
41
+ // node_modules/music-metadata/lib/dsdiff/DsdiffToken.js
42
+ var ChunkHeader64 = {
43
+ len: 12,
44
+ get: (buf, off) => ({
45
+ // Group-ID
46
+ chunkID: FourCcToken.get(buf, off),
47
+ // Size
48
+ chunkSize: INT64_BE.get(buf, off + 4)
49
+ })
50
+ };
51
+
52
+ // node_modules/music-metadata/lib/dsdiff/DsdiffParser.js
53
+ var debug = (0, import_debug.default)("music-metadata:parser:aiff"), DsdiffContentParseError = class extends makeUnexpectedFileContentError("DSDIFF") {
54
+ }, DsdiffParser = class extends BasicParser {
55
+ async parse() {
56
+ let header = await this.tokenizer.readToken(ChunkHeader64);
57
+ if (header.chunkID !== "FRM8")
58
+ throw new DsdiffContentParseError("Unexpected chunk-ID");
59
+ this.metadata.setAudioOnly();
60
+ let type = (await this.tokenizer.readToken(FourCcToken)).trim();
61
+ if (type === "DSD")
62
+ return this.metadata.setFormat("container", `DSDIFF/${type}`), this.metadata.setFormat("lossless", !0), this.readFmt8Chunks(header.chunkSize - BigInt(FourCcToken.len));
63
+ throw new DsdiffContentParseError(`Unsupported DSDIFF type: ${type}`);
64
+ }
65
+ async readFmt8Chunks(remainingSize) {
66
+ for (; remainingSize >= ChunkHeader64.len; ) {
67
+ let chunkHeader = await this.tokenizer.readToken(ChunkHeader64);
68
+ debug(`Chunk id=${chunkHeader.chunkID}`), await this.readData(chunkHeader), remainingSize -= BigInt(ChunkHeader64.len) + chunkHeader.chunkSize;
69
+ }
70
+ }
71
+ async readData(header) {
72
+ debug(`Reading data of chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);
73
+ let p0 = this.tokenizer.position;
74
+ switch (header.chunkID.trim()) {
75
+ case "FVER": {
76
+ let version = await this.tokenizer.readToken(UINT32_LE);
77
+ debug(`DSDIFF version=${version}`);
78
+ break;
79
+ }
80
+ case "PROP": {
81
+ if (await this.tokenizer.readToken(FourCcToken) !== "SND ")
82
+ throw new DsdiffContentParseError("Unexpected PROP-chunk ID");
83
+ await this.handleSoundPropertyChunks(header.chunkSize - BigInt(FourCcToken.len));
84
+ break;
85
+ }
86
+ case "ID3": {
87
+ let id3_data = await this.tokenizer.readToken(new Uint8ArrayType(Number(header.chunkSize))), rst = fromBuffer(id3_data);
88
+ await new ID3v2Parser().parse(this.metadata, rst, this.options);
89
+ break;
90
+ }
91
+ case "DSD":
92
+ this.metadata.format.numberOfChannels && this.metadata.setFormat("numberOfSamples", Number(header.chunkSize * BigInt(8) / BigInt(this.metadata.format.numberOfChannels))), this.metadata.format.numberOfSamples && this.metadata.format.sampleRate && this.metadata.setFormat("duration", this.metadata.format.numberOfSamples / this.metadata.format.sampleRate);
93
+ break;
94
+ default:
95
+ debug(`Ignore chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);
96
+ break;
97
+ }
98
+ let remaining = header.chunkSize - BigInt(this.tokenizer.position - p0);
99
+ remaining > 0 && (debug(`After Parsing chunk, remaining ${remaining} bytes`), await this.tokenizer.ignore(Number(remaining)));
100
+ }
101
+ async handleSoundPropertyChunks(remainingSize) {
102
+ for (debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`); remainingSize > 0; ) {
103
+ let sndPropHeader = await this.tokenizer.readToken(ChunkHeader64);
104
+ debug(`Sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`);
105
+ let p0 = this.tokenizer.position;
106
+ switch (sndPropHeader.chunkID.trim()) {
107
+ case "FS": {
108
+ let sampleRate = await this.tokenizer.readToken(UINT32_BE);
109
+ this.metadata.setFormat("sampleRate", sampleRate);
110
+ break;
111
+ }
112
+ case "CHNL": {
113
+ let numChannels = await this.tokenizer.readToken(UINT16_BE);
114
+ this.metadata.setFormat("numberOfChannels", numChannels), await this.handleChannelChunks(sndPropHeader.chunkSize - BigInt(UINT16_BE.len));
115
+ break;
116
+ }
117
+ case "CMPR": {
118
+ let compressionIdCode = (await this.tokenizer.readToken(FourCcToken)).trim(), count = await this.tokenizer.readToken(UINT8), compressionName = await this.tokenizer.readToken(new StringType(count, "ascii"));
119
+ compressionIdCode === "DSD" && (this.metadata.setFormat("lossless", !0), this.metadata.setFormat("bitsPerSample", 1)), this.metadata.setFormat("codec", `${compressionIdCode} (${compressionName})`);
120
+ break;
121
+ }
122
+ case "ABSS": {
123
+ let hours = await this.tokenizer.readToken(UINT16_BE), minutes = await this.tokenizer.readToken(UINT8), seconds = await this.tokenizer.readToken(UINT8), samples = await this.tokenizer.readToken(UINT32_BE);
124
+ debug(`ABSS ${hours}:${minutes}:${seconds}.${samples}`);
125
+ break;
126
+ }
127
+ case "LSCO": {
128
+ let lsConfig = await this.tokenizer.readToken(UINT16_BE);
129
+ debug(`LSCO lsConfig=${lsConfig}`);
130
+ break;
131
+ }
132
+ default:
133
+ debug(`Unknown sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`), await this.tokenizer.ignore(Number(sndPropHeader.chunkSize));
134
+ }
135
+ let remaining = sndPropHeader.chunkSize - BigInt(this.tokenizer.position - p0);
136
+ remaining > 0 && (debug(`After Parsing sound-property-chunk ${sndPropHeader.chunkSize}, remaining ${remaining} bytes`), await this.tokenizer.ignore(Number(remaining))), remainingSize -= BigInt(ChunkHeader64.len) + sndPropHeader.chunkSize, debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`);
137
+ }
138
+ if (this.metadata.format.lossless && this.metadata.format.sampleRate && this.metadata.format.numberOfChannels && this.metadata.format.bitsPerSample) {
139
+ let bitrate = this.metadata.format.sampleRate * this.metadata.format.numberOfChannels * this.metadata.format.bitsPerSample;
140
+ this.metadata.setFormat("bitrate", bitrate);
141
+ }
142
+ }
143
+ async handleChannelChunks(remainingSize) {
144
+ debug(`Parsing channel-chunks, remainingSize=${remainingSize}`);
145
+ let channels = [];
146
+ for (; remainingSize >= FourCcToken.len; ) {
147
+ let channelId = await this.tokenizer.readToken(FourCcToken);
148
+ debug(`Channel[ID=${channelId}]`), channels.push(channelId), remainingSize -= BigInt(FourCcToken.len);
149
+ }
150
+ return debug(`Channels: ${channels.join(", ")}`), channels;
151
+ }
152
+ };
153
+ export {
154
+ DsdiffContentParseError,
155
+ DsdiffParser
156
+ };