@remotion/media-parser 4.0.209 → 4.0.210

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 (213) hide show
  1. package/buffer.js +2 -0
  2. package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +1 -1
  3. package/dist/boxes/iso-base-media/make-track.js +14 -2
  4. package/dist/boxes/iso-base-media/mdat/mdat.d.ts +2 -1
  5. package/dist/boxes/iso-base-media/mdat/mdat.js +8 -3
  6. package/dist/boxes/iso-base-media/moov/moov.d.ts +2 -1
  7. package/dist/boxes/iso-base-media/moov/moov.js +2 -1
  8. package/dist/boxes/iso-base-media/process-box.d.ts +6 -3
  9. package/dist/boxes/iso-base-media/process-box.js +20 -5
  10. package/dist/boxes/iso-base-media/stsd/avcc.d.ts +1 -1
  11. package/dist/boxes/iso-base-media/stsd/avcc.js +2 -2
  12. package/dist/boxes/iso-base-media/stsd/ctts.js +2 -5
  13. package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +1 -1
  14. package/dist/boxes/iso-base-media/stsd/hvcc.js +2 -2
  15. package/dist/boxes/iso-base-media/stsd/mebx.d.ts +2 -1
  16. package/dist/boxes/iso-base-media/stsd/mebx.js +2 -1
  17. package/dist/boxes/iso-base-media/stsd/samples.d.ts +4 -2
  18. package/dist/boxes/iso-base-media/stsd/samples.js +69 -11
  19. package/dist/boxes/iso-base-media/stsd/stsd.d.ts +2 -1
  20. package/dist/boxes/iso-base-media/stsd/stsd.js +2 -1
  21. package/dist/boxes/iso-base-media/trak/trak.d.ts +2 -1
  22. package/dist/boxes/iso-base-media/trak/trak.js +2 -1
  23. package/dist/boxes/iso-base-media/traversal.d.ts +44 -0
  24. package/dist/boxes/iso-base-media/traversal.js +211 -0
  25. package/dist/boxes/webm/color.d.ts +4 -0
  26. package/dist/boxes/webm/color.js +120 -0
  27. package/dist/boxes/webm/description.js +1 -1
  28. package/dist/boxes/webm/get-ready-tracks.js +3 -3
  29. package/dist/boxes/webm/get-sample-from-block.js +1 -1
  30. package/dist/boxes/webm/get-track.js +16 -1
  31. package/dist/boxes/webm/make-track.d.ts +9 -0
  32. package/dist/boxes/webm/make-track.js +260 -0
  33. package/dist/boxes/webm/parse-ebml.js +2 -2
  34. package/dist/boxes/webm/segments/all-segments.d.ts +36 -3
  35. package/dist/boxes/webm/segments/all-segments.js +34 -6
  36. package/dist/boxes/webm/traversal.d.ts +26 -1
  37. package/dist/boxes/webm/traversal.js +214 -1
  38. package/dist/create/cluster-segment.js +0 -2
  39. package/dist/create/cluster.d.ts +10 -2
  40. package/dist/create/cluster.js +16 -10
  41. package/dist/create/create-media.d.ts +4 -2
  42. package/dist/create/create-media.js +76 -14
  43. package/dist/create/cues.d.ts +0 -0
  44. package/dist/create/cues.js +1 -0
  45. package/dist/create/make-duration-with-padding.d.ts +1 -1
  46. package/dist/create/make-duration-with-padding.js +3 -3
  47. package/dist/create/matroska-cues.d.ts +6 -0
  48. package/dist/create/matroska-cues.js +50 -0
  49. package/dist/create/matroska-info.js +1 -1
  50. package/dist/create/matroska-seek.d.ts +6 -0
  51. package/dist/create/matroska-seek.js +32 -0
  52. package/dist/create/matroska-segment.d.ts +1 -0
  53. package/dist/create/matroska-segment.js +3 -2
  54. package/dist/create/matroska-trackentry.d.ts +9 -14
  55. package/dist/create/matroska-trackentry.js +79 -94
  56. package/dist/emit-available-info.d.ts +12 -0
  57. package/dist/emit-available-info.js +133 -0
  58. package/dist/esm/buffer.mjs +57 -0
  59. package/dist/esm/from-fetch.mjs +72 -0
  60. package/dist/esm/from-node.mjs +48 -0
  61. package/dist/esm/from-web-file.mjs +48 -0
  62. package/dist/esm/index.mjs +6689 -0
  63. package/dist/esm/web-fs.mjs +67 -0
  64. package/dist/get-audio-codec.d.ts +5 -5
  65. package/dist/get-audio-codec.js +41 -57
  66. package/dist/get-container.d.ts +4 -0
  67. package/dist/get-container.js +26 -0
  68. package/dist/get-duration.js +1 -1
  69. package/dist/get-fps.js +1 -1
  70. package/dist/get-sample-aspect-ratio.d.ts +1 -1
  71. package/dist/get-sample-aspect-ratio.js +19 -19
  72. package/dist/get-tracks.d.ts +13 -0
  73. package/dist/get-tracks.js +8 -8
  74. package/dist/get-video-codec.d.ts +5 -2
  75. package/dist/get-video-codec.js +111 -21
  76. package/dist/has-all-info.d.ts +2 -2
  77. package/dist/has-all-info.js +23 -9
  78. package/dist/index.d.ts +3 -1
  79. package/dist/options.d.ts +97 -30
  80. package/dist/parse-media.js +43 -62
  81. package/dist/parse-video.d.ts +2 -1
  82. package/dist/parse-video.js +3 -1
  83. package/dist/parser-state.js +1 -2
  84. package/dist/readers/from-fetch.js +24 -4
  85. package/dist/readers/from-node.js +13 -3
  86. package/dist/readers/from-web-file.js +14 -2
  87. package/dist/readers/reader.d.ts +6 -1
  88. package/dist/samples-from-moof.js +1 -1
  89. package/dist/traversal.d.ts +0 -21
  90. package/dist/traversal.js +1 -158
  91. package/dist/truthy.d.ts +3 -0
  92. package/dist/truthy.js +7 -0
  93. package/dist/writers/buffer.d.ts +2 -0
  94. package/dist/writers/buffer.js +58 -0
  95. package/dist/writers/web-fs.d.ts +1 -0
  96. package/dist/writers/web-fs.js +42 -18
  97. package/dist/writers/writer.d.ts +4 -2
  98. package/fetch.js +2 -0
  99. package/node.js +2 -0
  100. package/package.json +43 -8
  101. package/web-file.js +2 -0
  102. package/web-fs.js +2 -0
  103. package/.eslintrc +0 -8
  104. package/input.webm +0 -0
  105. package/src/add-new-matroska-tracks.ts +0 -23
  106. package/src/boxes/iso-base-media/base-type.ts +0 -4
  107. package/src/boxes/iso-base-media/esds/decoder-specific-config.ts +0 -68
  108. package/src/boxes/iso-base-media/esds/esds-descriptors.ts +0 -135
  109. package/src/boxes/iso-base-media/esds/esds.ts +0 -49
  110. package/src/boxes/iso-base-media/ftyp.ts +0 -39
  111. package/src/boxes/iso-base-media/get-sample-positions-from-track.ts +0 -69
  112. package/src/boxes/iso-base-media/make-track.ts +0 -116
  113. package/src/boxes/iso-base-media/mdat/mdat.ts +0 -140
  114. package/src/boxes/iso-base-media/mdhd.ts +0 -59
  115. package/src/boxes/iso-base-media/moov/moov.ts +0 -43
  116. package/src/boxes/iso-base-media/mvhd.ts +0 -114
  117. package/src/boxes/iso-base-media/process-box.ts +0 -748
  118. package/src/boxes/iso-base-media/stsd/av1c.ts +0 -19
  119. package/src/boxes/iso-base-media/stsd/avcc.ts +0 -36
  120. package/src/boxes/iso-base-media/stsd/colr.ts +0 -49
  121. package/src/boxes/iso-base-media/stsd/ctts.ts +0 -64
  122. package/src/boxes/iso-base-media/stsd/hvcc.ts +0 -32
  123. package/src/boxes/iso-base-media/stsd/keys.ts +0 -27
  124. package/src/boxes/iso-base-media/stsd/mebx.ts +0 -54
  125. package/src/boxes/iso-base-media/stsd/pasp.ts +0 -32
  126. package/src/boxes/iso-base-media/stsd/samples.ts +0 -359
  127. package/src/boxes/iso-base-media/stsd/stco.ts +0 -52
  128. package/src/boxes/iso-base-media/stsd/stsc.ts +0 -61
  129. package/src/boxes/iso-base-media/stsd/stsd.ts +0 -55
  130. package/src/boxes/iso-base-media/stsd/stss.ts +0 -47
  131. package/src/boxes/iso-base-media/stsd/stsz.ts +0 -75
  132. package/src/boxes/iso-base-media/stsd/stts.ts +0 -62
  133. package/src/boxes/iso-base-media/tfdt.ts +0 -37
  134. package/src/boxes/iso-base-media/tfhd.ts +0 -66
  135. package/src/boxes/iso-base-media/tkhd.ts +0 -150
  136. package/src/boxes/iso-base-media/to-date.ts +0 -9
  137. package/src/boxes/iso-base-media/trak/trak.ts +0 -43
  138. package/src/boxes/iso-base-media/trun.ts +0 -74
  139. package/src/boxes/iso-base-media/void-box.ts +0 -4
  140. package/src/boxes/webm/allowed-partial-segments.ts +0 -1
  141. package/src/boxes/webm/av1-codec-private.ts +0 -113
  142. package/src/boxes/webm/description.ts +0 -104
  143. package/src/boxes/webm/ebml.ts +0 -98
  144. package/src/boxes/webm/get-ready-tracks.ts +0 -36
  145. package/src/boxes/webm/get-sample-from-block.ts +0 -125
  146. package/src/boxes/webm/get-track.ts +0 -257
  147. package/src/boxes/webm/make-header.ts +0 -253
  148. package/src/boxes/webm/parse-ebml.ts +0 -259
  149. package/src/boxes/webm/parse-webm-header.ts +0 -18
  150. package/src/boxes/webm/segments/all-segments.ts +0 -888
  151. package/src/boxes/webm/segments/block-simple-block-flags.ts +0 -52
  152. package/src/boxes/webm/segments/parse-children.ts +0 -144
  153. package/src/boxes/webm/segments/track-entry.ts +0 -38
  154. package/src/boxes/webm/segments.ts +0 -147
  155. package/src/boxes/webm/traversal.ts +0 -45
  156. package/src/buffer-iterator.ts +0 -555
  157. package/src/create/cluster-segment.ts +0 -62
  158. package/src/create/cluster.ts +0 -64
  159. package/src/create/create-media.ts +0 -136
  160. package/src/create/make-duration-with-padding.ts +0 -15
  161. package/src/create/matroska-header.ts +0 -63
  162. package/src/create/matroska-info.ts +0 -30
  163. package/src/create/matroska-segment.ts +0 -10
  164. package/src/create/matroska-trackentry.ts +0 -325
  165. package/src/create/timescale.ts +0 -1
  166. package/src/get-audio-codec.ts +0 -270
  167. package/src/get-dimensions.ts +0 -47
  168. package/src/get-duration.ts +0 -103
  169. package/src/get-fps.ts +0 -113
  170. package/src/get-sample-aspect-ratio.ts +0 -204
  171. package/src/get-sample-positions.ts +0 -93
  172. package/src/get-tracks.ts +0 -147
  173. package/src/get-video-codec.ts +0 -117
  174. package/src/has-all-info.ts +0 -81
  175. package/src/index.ts +0 -18
  176. package/src/make-hvc1-codec-strings.ts +0 -55
  177. package/src/options.ts +0 -118
  178. package/src/parse-media.ts +0 -183
  179. package/src/parse-result.ts +0 -79
  180. package/src/parse-video.ts +0 -83
  181. package/src/parser-context.ts +0 -10
  182. package/src/parser-state.ts +0 -178
  183. package/src/readers/from-fetch.ts +0 -90
  184. package/src/readers/from-node.ts +0 -51
  185. package/src/readers/from-web-file.ts +0 -49
  186. package/src/readers/reader.ts +0 -15
  187. package/src/samples-from-moof.ts +0 -102
  188. package/src/test/aspect-ratio.test.ts +0 -42
  189. package/src/test/av1.test.ts +0 -108
  190. package/src/test/create-matroska.test.ts +0 -287
  191. package/src/test/duration.test.ts +0 -18
  192. package/src/test/keys.test.ts +0 -47
  193. package/src/test/matroska.test.ts +0 -463
  194. package/src/test/mvhd.test.ts +0 -94
  195. package/src/test/parse-esds.test.ts +0 -98
  196. package/src/test/parse-stco.test.ts +0 -61
  197. package/src/test/parse-stsc.test.ts +0 -104
  198. package/src/test/parse-stsz.test.ts +0 -57
  199. package/src/test/parse-stts.test.ts +0 -38
  200. package/src/test/parse-video.test.ts +0 -101
  201. package/src/test/parse-webm.test.ts +0 -17
  202. package/src/test/samples-from-moof.test.ts +0 -2496
  203. package/src/test/stream-local.test.ts +0 -743
  204. package/src/test/stream-remote.test.ts +0 -59
  205. package/src/test/stream-samples.test.ts +0 -181
  206. package/src/test/stsd.test.ts +0 -265
  207. package/src/test/tkhd.test.ts +0 -87
  208. package/src/traversal.ts +0 -528
  209. package/src/webcodec-sample-types.ts +0 -29
  210. package/src/writers/web-fs.ts +0 -50
  211. package/src/writers/writer.ts +0 -12
  212. package/tsconfig.json +0 -14
  213. package/tsconfig.tsbuildinfo +0 -1
@@ -1,287 +0,0 @@
1
- /* eslint-disable padding-line-between-statements */
2
- /* eslint-disable max-depth */
3
- import {expect, test} from 'bun:test';
4
- import {combineUint8Arrays, makeMatroskaBytes} from '../boxes/webm/make-header';
5
- import {parseEbml} from '../boxes/webm/parse-ebml';
6
- import type {MatroskaSegment} from '../boxes/webm/segments';
7
- import type {
8
- MainSegment,
9
- TrackEntry,
10
- } from '../boxes/webm/segments/all-segments';
11
- import {getArrayBufferIterator} from '../buffer-iterator';
12
- import {parseMedia} from '../parse-media';
13
- import type {AnySegment} from '../parse-result';
14
- import type {ParserContext} from '../parser-context';
15
- import {makeParserState} from '../parser-state';
16
- import {nodeReader} from '../readers/from-node';
17
-
18
- const state = makeParserState({
19
- hasAudioCallbacks: false,
20
- hasVideoCallbacks: false,
21
- signal: undefined,
22
- });
23
-
24
- const options: ParserContext = {
25
- canSkipVideoData: true,
26
- onAudioTrack: null,
27
- onVideoTrack: null,
28
- parserState: state,
29
- nullifySamples: false,
30
- };
31
-
32
- test('Should make Matroska header that is same as input', async () => {
33
- const headerOutput = makeMatroskaBytes({
34
- type: 'Header',
35
- minVintWidth: 1,
36
- value: [
37
- {
38
- type: 'EBMLVersion',
39
- value: {value: 1, byteLength: 1},
40
- minVintWidth: 1,
41
- },
42
- {
43
- type: 'EBMLReadVersion',
44
- value: {value: 1, byteLength: 1},
45
- minVintWidth: 1,
46
- },
47
- {
48
- type: 'EBMLMaxIDLength',
49
- value: {value: 4, byteLength: 1},
50
- minVintWidth: 1,
51
- },
52
- {
53
- type: 'EBMLMaxSizeLength',
54
- value: {value: 8, byteLength: 1},
55
- minVintWidth: 1,
56
- },
57
- {
58
- type: 'DocType',
59
- value: 'webm',
60
- minVintWidth: 1,
61
- },
62
- {
63
- type: 'DocTypeVersion',
64
- value: {value: 4, byteLength: 1},
65
- minVintWidth: 1,
66
- },
67
- {
68
- type: 'DocTypeReadVersion',
69
- value: {value: 2, byteLength: 1},
70
- minVintWidth: 1,
71
- },
72
- ],
73
- });
74
-
75
- const iterator = getArrayBufferIterator(
76
- headerOutput.bytes,
77
- headerOutput.bytes.length,
78
- );
79
- const parsed = await parseEbml(iterator, options);
80
-
81
- expect(parsed).toEqual({
82
- type: 'Header',
83
- minVintWidth: 1,
84
- value: [
85
- {
86
- type: 'EBMLVersion',
87
- value: {value: 1, byteLength: 1},
88
- minVintWidth: 1,
89
- },
90
- {
91
- type: 'EBMLReadVersion',
92
- value: {value: 1, byteLength: 1},
93
- minVintWidth: 1,
94
- },
95
- {
96
- type: 'EBMLMaxIDLength',
97
- value: {value: 4, byteLength: 1},
98
- minVintWidth: 1,
99
- },
100
- {
101
- type: 'EBMLMaxSizeLength',
102
- value: {value: 8, byteLength: 1},
103
- minVintWidth: 1,
104
- },
105
- {
106
- type: 'DocType',
107
- value: 'webm',
108
- minVintWidth: 1,
109
- },
110
- {
111
- type: 'DocTypeVersion',
112
- value: {value: 4, byteLength: 1},
113
- minVintWidth: 1,
114
- },
115
- {
116
- type: 'DocTypeReadVersion',
117
- value: {value: 2, byteLength: 1},
118
- minVintWidth: 1,
119
- },
120
- ],
121
- });
122
- });
123
-
124
- test('Should be able to create SeekIdBox', async () => {
125
- const file = new Uint8Array(
126
- await Bun.file('vp8-segments/56-0x53ab').arrayBuffer(),
127
- );
128
-
129
- const custom = makeMatroskaBytes({
130
- type: 'SeekID',
131
- value: '0x1549a966',
132
- minVintWidth: 1,
133
- });
134
- expect(custom.bytes).toEqual(file);
135
- });
136
-
137
- test('Should be able to create Seek', async () => {
138
- const file = new Uint8Array(
139
- await Bun.file('vp8-segments/53-0x4dbb').arrayBuffer(),
140
- );
141
- const parsed = await parseEbml(getArrayBufferIterator(file, null), options);
142
- expect(parsed).toEqual({
143
- type: 'Seek',
144
- value: [
145
- {
146
- type: 'SeekID',
147
- value: '0x1549a966',
148
- minVintWidth: 1,
149
- },
150
- {
151
- type: 'SeekPosition',
152
- value: {value: 0x40, byteLength: 1},
153
- minVintWidth: 1,
154
- },
155
- ],
156
- minVintWidth: 1,
157
- });
158
-
159
- const custom = makeMatroskaBytes(parsed);
160
- expect(custom.bytes).toEqual(file);
161
- });
162
-
163
- test('Should parse seekHead', async () => {
164
- const file = new Uint8Array(
165
- await Bun.file('vp8-segments/2165155-0x114d9b74').arrayBuffer(),
166
- );
167
-
168
- const seekPosition = makeMatroskaBytes({
169
- type: 'SeekPosition',
170
- value: {value: 3911, byteLength: 2},
171
- minVintWidth: 1,
172
- });
173
-
174
- const custom = makeMatroskaBytes({
175
- type: 'SeekHead',
176
- value: [
177
- {
178
- type: 'Seek',
179
- value: [
180
- {
181
- type: 'SeekID',
182
- value: '0x1f43b675',
183
- minVintWidth: 1,
184
- },
185
- seekPosition,
186
- ],
187
- minVintWidth: 1,
188
- },
189
- ],
190
- minVintWidth: 1,
191
- });
192
- expect(custom.offsets).toEqual({
193
- offset: 0,
194
- children: [
195
- {
196
- offset: 5,
197
- children: [
198
- {
199
- offset: 8,
200
- children: [],
201
- field: 'SeekID',
202
- },
203
- {
204
- offset: 15,
205
- children: [],
206
- field: 'SeekPosition',
207
- },
208
- ],
209
- field: 'Seek',
210
- },
211
- ],
212
- field: 'SeekHead',
213
- });
214
- expect(custom.bytes).toEqual(file);
215
-
216
- const iterator = getArrayBufferIterator(file, file.length);
217
- const parsed = await parseEbml(iterator, options);
218
-
219
- expect(parsed).toEqual({
220
- minVintWidth: 1,
221
- type: 'SeekHead',
222
- value: [
223
- {
224
- minVintWidth: 1,
225
- type: 'Seek',
226
- value: [
227
- {minVintWidth: 1, type: 'SeekID', value: '0x1f43b675'},
228
- {
229
- minVintWidth: 1,
230
- type: 'SeekPosition',
231
- value: {value: 3911, byteLength: 2},
232
- },
233
- ],
234
- },
235
- ],
236
- });
237
- });
238
-
239
- const parseWebm = async (str: string) => {
240
- const {boxes} = await parseMedia({
241
- src: str,
242
- fields: {
243
- boxes: true,
244
- },
245
- reader: nodeReader,
246
- });
247
- return boxes;
248
- };
249
-
250
- const stringifyWebm = (boxes: AnySegment[]) => {
251
- const buffers: Uint8Array[] = [];
252
- for (const box of boxes) {
253
- const {bytes} = makeMatroskaBytes(box as MatroskaSegment);
254
- buffers.push(bytes);
255
- }
256
-
257
- const combined = combineUint8Arrays(buffers);
258
- return combined;
259
- };
260
-
261
- test('Can we disassemble a Matroska file and assembled it again', async () => {
262
- process.env.KEEP_SAMPLES = 'true';
263
-
264
- const parsed = await parseWebm('input.webm');
265
-
266
- const segment = parsed.find((s) => s.type === 'Segment') as MainSegment;
267
- const tracks = segment.value.flatMap((s) =>
268
- s.type === 'Tracks' ? s.value.filter((a) => a.type === 'TrackEntry') : [],
269
- );
270
- for (const track of tracks as TrackEntry[]) {
271
- for (const child of track.value) {
272
- if (child.type === 'Video') {
273
- for (const attribute of child.value) {
274
- if (attribute.type === 'DisplayHeight') {
275
- attribute.value.value *= 2;
276
- }
277
- }
278
- }
279
- }
280
- }
281
-
282
- const bytes = await Bun.file('input.webm').arrayBuffer();
283
- expect(stringifyWebm(parsed).byteLength).toEqual(
284
- new Uint8Array(bytes).byteLength,
285
- );
286
- process.env.KEEP_SAMPLES = 'false';
287
- });
@@ -1,18 +0,0 @@
1
- import {RenderInternals} from '@remotion/renderer';
2
- import {expect, test} from 'bun:test';
3
- import {parseMedia} from '../parse-media';
4
- import {nodeReader} from '../readers/from-node';
5
-
6
- test('Should get duration of video', async () => {
7
- const parsed = await parseMedia({
8
- src: RenderInternals.exampleVideos.framer24fps,
9
- fields: {
10
- durationInSeconds: true,
11
- dimensions: true,
12
- },
13
- reader: nodeReader,
14
- });
15
-
16
- expect(parsed.durationInSeconds).toBe(4.167);
17
- expect(parsed.dimensions).toEqual({width: 1080, height: 1080});
18
- });
@@ -1,47 +0,0 @@
1
- import {expect, test} from 'bun:test';
2
- import {parseKeys} from '../boxes/iso-base-media/stsd/keys';
3
-
4
- test('Should parse keyd box', () => {
5
- const buffer = Uint8Array.from([
6
- 0, 0, 2, 60, 107, 101, 121, 115, 0, 0, 2, 52, 0, 0, 0, 1, 0, 0, 0, 47, 107,
7
- 101, 121, 100, 109, 100, 116, 97, 99, 111, 109, 46, 97, 112, 112, 108, 101,
8
- 46, 113, 117, 105, 99, 107, 116, 105, 109, 101, 46, 108, 105, 118, 101, 45,
9
- 112, 104, 111, 116, 111, 45, 105, 110, 102, 111, 0, 0, 0, 67, 100, 116, 121,
10
- 112, 0, 0, 0, 1, 99, 111, 109, 46, 97, 112, 112, 108, 101, 46, 113, 117,
11
- 105, 99, 107, 116, 105, 109, 101, 46, 99, 111, 109, 46, 97, 112, 112, 108,
12
- 101, 46, 113, 117, 105, 99, 107, 116, 105, 109, 101, 46, 108, 105, 118, 101,
13
- 45, 112, 104, 111, 116, 111, 45, 105, 110, 102, 111, 0, 0, 0, 20, 115, 100,
14
- 112, 100, 0, 0, 0, 12, 115, 100, 112, 105, 0, 0, 0, 0, 0, 0, 1, 142, 115,
15
- 101, 116, 117, 0, 0, 1, 118, 99, 102, 103, 118, 98, 112, 108, 105, 115, 116,
16
- 48, 48, 211, 1, 2, 3, 4, 5, 12, 95, 16, 33, 76, 105, 118, 101, 80, 104, 111,
17
- 116, 111, 77, 101, 116, 97, 100, 97, 116, 97, 83, 101, 116, 117, 112, 68,
18
- 97, 116, 97, 86, 101, 114, 115, 105, 111, 110, 93, 83, 121, 115, 116, 101,
19
- 109, 86, 101, 114, 115, 105, 111, 110, 95, 16, 17, 70, 114, 97, 109, 101,
20
- 119, 111, 114, 107, 86, 101, 114, 115, 105, 111, 110, 115, 16, 1, 211, 6, 7,
21
- 8, 9, 10, 11, 95, 16, 19, 80, 114, 111, 100, 117, 99, 116, 66, 117, 105,
22
- 108, 100, 86, 101, 114, 115, 105, 111, 110, 91, 80, 114, 111, 100, 117, 99,
23
- 116, 78, 97, 109, 101, 94, 80, 114, 111, 100, 117, 99, 116, 86, 101, 114,
24
- 115, 105, 111, 110, 88, 50, 49, 70, 53, 48, 52, 56, 102, 89, 105, 80, 104,
25
- 111, 110, 101, 32, 79, 83, 84, 49, 55, 46, 53, 213, 13, 14, 15, 16, 17, 18,
26
- 19, 20, 21, 22, 94, 72, 49, 51, 73, 83, 80, 83, 101, 114, 118, 105, 99, 101,
27
- 115, 90, 67, 111, 114, 101, 77, 111, 116, 105, 111, 110, 93, 67, 77, 67, 97,
28
- 112, 116, 117, 114, 101, 67, 111, 114, 101, 94, 72, 49, 48, 73, 83, 80, 83,
29
- 101, 114, 118, 105, 99, 101, 115, 89, 67, 111, 114, 101, 77, 101, 100, 105,
30
- 97, 85, 56, 46, 53, 48, 50, 94, 50, 56, 57, 48, 46, 49, 54, 46, 49, 51, 46,
31
- 48, 46, 49, 87, 52, 55, 55, 46, 50, 46, 49, 86, 50, 48, 46, 53, 48, 48, 88,
32
- 51, 49, 49, 48, 46, 52, 46, 49, 0, 8, 0, 15, 0, 51, 0, 65, 0, 85, 0, 87, 0,
33
- 94, 0, 116, 0, 128, 0, 143, 0, 152, 0, 162, 0, 167, 0, 178, 0, 193, 0, 204,
34
- 0, 218, 0, 233, 0, 243, 0, 249, 1, 8, 1, 16, 1, 23, 0, 0, 0, 0, 0, 0, 2, 1,
35
- 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32, 0,
36
- 0, 0, 16, 100, 105, 109, 115, 0, 0, 7, 128, 0, 0, 4, 56, 0, 0, 0, 24, 99,
37
- 116, 112, 115, 0, 0, 0, 16, 100, 116, 121, 112, 0, 0, 0, 0, 0, 0, 0, 0,
38
- ]);
39
-
40
- const data = parseKeys(buffer, 0);
41
-
42
- expect(data).toEqual({
43
- type: 'keys-box',
44
- boxSize: 572,
45
- offset: 0,
46
- });
47
- });