edfcore 0.6.180 → 0.6.182
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/diagnostics/collector.d.ts.map +1 -1
- package/dist/diagnostics/collector.js +24 -5
- package/dist/diagnostics/collector.js.map +1 -1
- package/dist/io/read.d.ts.map +1 -1
- package/dist/io/read.js +23 -0
- package/dist/io/read.js.map +1 -1
- package/docs/CHANGELOG.md +30 -0
- package/package.json +1 -1
- package/src/constants.ts +1 -1
- package/src/diagnostics/collector.ts +28 -6
- package/src/io/read.ts +29 -0
package/dist/constants.d.ts
CHANGED
|
@@ -109,5 +109,5 @@ export declare const SIGNAL_FIELD_BLOCK_OFFSETS: {
|
|
|
109
109
|
readonly reserved: 224;
|
|
110
110
|
};
|
|
111
111
|
/** Published package version. Kept in sync with package.json by a test. */
|
|
112
|
-
export declare const VERSION = "0.6.
|
|
112
|
+
export declare const VERSION = "0.6.182";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/diagnostics/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAA2B,MAAM,cAAc,CAAC;AAEvE,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,iBAAiB,EAA6B,MAAM,YAAY,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,4FAA4F;IAC5F,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI,CAEjG;AAwBD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAChB,IAAI,CAQN;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAkBpE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,aAAa,EACzB,KAAK,CAAC,EAAE,OAAO,EACf,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,GACnC,cAAc,CAUhB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,cAAc,CAEhF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/diagnostics/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAA2B,MAAM,cAAc,CAAC;AAEvE,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,iBAAiB,EAA6B,MAAM,YAAY,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,4FAA4F;IAC5F,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI,CAEjG;AAwBD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAChB,IAAI,CAQN;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAkBpE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,aAAa,EACzB,KAAK,CAAC,EAAE,OAAO,EACf,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,GACnC,cAAc,CAUhB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,cAAc,CAEhF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6BzD;AAED;;;;GAIG;AACH,qBAAa,cAAc;;IACzB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;gBAIb,OAAO,CAAC,EAAE,YAAY;IAKlC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;;;OASG;IACH;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,cAAc;IAI5D,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IASlC,iGAAiG;IACjG,IAAI,WAAW,IAAI,SAAS,aAAa,EAAE,CAE1C;IAED,oEAAoE;IACpE,KAAK,IAAI,SAAS,aAAa,EAAE;CAKlC"}
|
|
@@ -138,11 +138,30 @@ export function fatalError(init, cause) {
|
|
|
138
138
|
* `null` and `undefined` still mean "no options", which is what they already meant.
|
|
139
139
|
*/
|
|
140
140
|
export function assertParseOptions(options) {
|
|
141
|
-
if (options
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
141
|
+
if (options !== undefined && typeof options !== 'object') {
|
|
142
|
+
throw new RangeError(`the parse options are ${describeValue(options)}, not an object — strict is a field on one, ` +
|
|
143
|
+
'so this parse collected its diagnostics rather than throwing on the first of them. ' +
|
|
144
|
+
'Next: pass strict on an options object.');
|
|
145
|
+
}
|
|
146
|
+
/*
|
|
147
|
+
* And the FIELD, once the object is there. `strict` is read as `options?.strict === true`, which
|
|
148
|
+
* is a coercion-proof test and therefore a silent one: `'true'`, `'1'` and `1` are all not-`true`,
|
|
149
|
+
* so every one of them parsed LENIENTLY.
|
|
150
|
+
*
|
|
151
|
+
* That is the same outcome the guard above exists to stop — the failure it describes as a file
|
|
152
|
+
* with a would-be diagnostic coming back "as a header carrying a list, from a caller who asked to
|
|
153
|
+
* receive no such file at all" — reached through the guard rather than past it. And text is
|
|
154
|
+
* exactly what arrives here: `strict` is the one boolean option in this package, and a flag, a
|
|
155
|
+
* query parameter and a config key all hand over a string, which is the argument `requireItemLimit`
|
|
156
|
+
* makes for its own coercion check.
|
|
157
|
+
*/
|
|
158
|
+
const strict = options?.strict;
|
|
159
|
+
if (strict !== undefined && typeof strict !== 'boolean') {
|
|
160
|
+
throw new RangeError(`options.strict must be true or false, and was ${describeValue(strict)}. It is read as ` +
|
|
161
|
+
'`=== true`, so anything else reads as false and this parse collected its diagnostics ' +
|
|
162
|
+
'rather than throwing on the first of them. Next: pass a boolean — a flag, a query ' +
|
|
163
|
+
'parameter and a config key all arrive as text, so compare with === "true" first.');
|
|
164
|
+
}
|
|
146
165
|
}
|
|
147
166
|
/**
|
|
148
167
|
* The one place `strict` is turned into a decision. Every module that finds a departure reports
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/diagnostics/collector.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/diagnostics/collector.ts"],"names":[],"mappings":"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"}
|
package/dist/io/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/io/read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoBhG;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAuC9F;AAiHD;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/io/read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoBhG;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAuC9F;AAiHD;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CA0CrB"}
|
package/dist/io/read.js
CHANGED
|
@@ -198,6 +198,29 @@ function assertWithinBudget(requiredBytes, records, options) {
|
|
|
198
198
|
*/
|
|
199
199
|
export async function readRecordBytes(source, header, records, options) {
|
|
200
200
|
assertByteSource(source);
|
|
201
|
+
/*
|
|
202
|
+
* The HEADER, before the range is measured against it.
|
|
203
|
+
*
|
|
204
|
+
* `assertRecordRange` reads `header.recordCount` and prints it, so a wrong header put the blame
|
|
205
|
+
* on the argument that was right: `readRecordBytes(source, recording, records)` — the recording
|
|
206
|
+
* being the object the source came off — answered `records { start: 0, count: 1 } is not inside
|
|
207
|
+
* the undefined data records this file contains`, and told the caller to clamp a range that was
|
|
208
|
+
* already inside the file. A chunk gave the same sentence.
|
|
209
|
+
*
|
|
210
|
+
* The timeline is worse and reaches further. It HAS a `recordCount`, so the range check passes
|
|
211
|
+
* and `records.count * header.recordByteLength` is `NaN` — reported as an `EdfBudgetError`,
|
|
212
|
+
* "needs a NaN-byte buffer, above the 268435456-byte maxMaterializeBytes budget", advising a
|
|
213
|
+
* smaller read. An `EdfError`, so `isEdfError` sent a caller mistake down the file-or-budget
|
|
214
|
+
* branch, which is the one distinction `errors.ts` exists to keep.
|
|
215
|
+
*
|
|
216
|
+
* `recordByteLength` is the field to test: it is the one this function multiplies by, and
|
|
217
|
+
* `decode/digital.ts` already names it for the same reason.
|
|
218
|
+
*/
|
|
219
|
+
if (!Number.isInteger(header?.recordByteLength)) {
|
|
220
|
+
throw new RangeError('readRecordBytes(): that is not a header — it has no recordByteLength, which is the record ' +
|
|
221
|
+
'size every offset and length below is measured in. Next: pass recording.header, or what ' +
|
|
222
|
+
'parseHeader(bytes, sourceByteLength) returned.');
|
|
223
|
+
}
|
|
201
224
|
assertRecordRange(header, records);
|
|
202
225
|
const byteLength = records.count * header.recordByteLength;
|
|
203
226
|
if (byteLength === 0)
|
package/dist/io/read.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/io/read.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/io/read.ts"],"names":[],"mappings":"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"}
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,36 @@ alone does not tell you whether you were affected.
|
|
|
6
6
|
edfcore is pre-1.0. Patch releases have carried behaviour changes where the old behaviour was a
|
|
7
7
|
defect; those are called out below.
|
|
8
8
|
|
|
9
|
+
## 0.6.182
|
|
10
|
+
|
|
11
|
+
- **Fixed** `strict` given as text parsing leniently and saying nothing. It is resolved everywhere as
|
|
12
|
+
`options?.strict === true` — the right way to read a boolean, and what makes the mistake silent:
|
|
13
|
+
`'true'`, `'1'` and `1` are each not-`true`.
|
|
14
|
+
- That is the outcome `assertParseOptions` exists for, in its own words — a file with a would-be
|
|
15
|
+
diagnostic coming back "as a header carrying a list, from a caller who asked to receive no such
|
|
16
|
+
file at all". It guarded the options being a bare value; the field inside them, which is the whole
|
|
17
|
+
of `ParseOptions`, was never checked, so the same failure was reachable through the guard.
|
|
18
|
+
- Text is what arrives here: `strict` is the only boolean option in the package, and a flag, a query
|
|
19
|
+
parameter and a config key all hand over a string. `requireItemLimit` makes the same argument for
|
|
20
|
+
its own coercion check.
|
|
21
|
+
- One check covers `parseHeader`, `readHeader`, `openEdf`, `decodeAnnotations`, `buildTimeline` and
|
|
22
|
+
`buildRecordIndex`, because all six reach `DiagnosticSink`.
|
|
23
|
+
|
|
24
|
+
## 0.6.181
|
|
25
|
+
|
|
26
|
+
- **Fixed** `readRecordBytes` blaming the record range for a wrong header. It is the lowest
|
|
27
|
+
published read in the package and it takes `(source, header, records)` — and the source almost
|
|
28
|
+
always comes off a recording, so `readRecordBytes(recording.source, recording, records)` is one
|
|
29
|
+
field short and nothing checked it.
|
|
30
|
+
- `assertRecordRange` reads `header.recordCount` and prints it, so the answer was `records
|
|
31
|
+
{ start: 0, count: 1 } is not inside the undefined data records this file contains`, followed by
|
|
32
|
+
advice to clamp a range that was already inside the file. A chunk gave the same sentence.
|
|
33
|
+
- The timeline reached further, because it HAS a `recordCount`: the range check passed and
|
|
34
|
+
`records.count * header.recordByteLength` was `NaN`, reported as an `EdfBudgetError` about a
|
|
35
|
+
"NaN-byte buffer" above the budget. That one is an `EdfError`, so `isEdfError` sent a caller
|
|
36
|
+
mistake down the file-or-budget branch.
|
|
37
|
+
- The check names `recordByteLength`, which is the field this call multiplies by.
|
|
38
|
+
|
|
9
39
|
## 0.6.180
|
|
10
40
|
|
|
11
41
|
- **Fixed** `toPhysical` and `clampToDigitalRange` accepting raw record bytes as samples. The
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
|
@@ -175,12 +175,34 @@ export function fatalError(init: DiagnosticInit, cause?: unknown): EdfFormatErro
|
|
|
175
175
|
* `null` and `undefined` still mean "no options", which is what they already meant.
|
|
176
176
|
*/
|
|
177
177
|
export function assertParseOptions(options: unknown): void {
|
|
178
|
-
if (options
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
178
|
+
if (options !== undefined && typeof options !== 'object') {
|
|
179
|
+
throw new RangeError(
|
|
180
|
+
`the parse options are ${describeValue(options)}, not an object — strict is a field on one, ` +
|
|
181
|
+
'so this parse collected its diagnostics rather than throwing on the first of them. ' +
|
|
182
|
+
'Next: pass strict on an options object.',
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
/*
|
|
186
|
+
* And the FIELD, once the object is there. `strict` is read as `options?.strict === true`, which
|
|
187
|
+
* is a coercion-proof test and therefore a silent one: `'true'`, `'1'` and `1` are all not-`true`,
|
|
188
|
+
* so every one of them parsed LENIENTLY.
|
|
189
|
+
*
|
|
190
|
+
* That is the same outcome the guard above exists to stop — the failure it describes as a file
|
|
191
|
+
* with a would-be diagnostic coming back "as a header carrying a list, from a caller who asked to
|
|
192
|
+
* receive no such file at all" — reached through the guard rather than past it. And text is
|
|
193
|
+
* exactly what arrives here: `strict` is the one boolean option in this package, and a flag, a
|
|
194
|
+
* query parameter and a config key all hand over a string, which is the argument `requireItemLimit`
|
|
195
|
+
* makes for its own coercion check.
|
|
196
|
+
*/
|
|
197
|
+
const strict = (options as { strict?: unknown } | null | undefined)?.strict;
|
|
198
|
+
if (strict !== undefined && typeof strict !== 'boolean') {
|
|
199
|
+
throw new RangeError(
|
|
200
|
+
`options.strict must be true or false, and was ${describeValue(strict)}. It is read as ` +
|
|
201
|
+
'`=== true`, so anything else reads as false and this parse collected its diagnostics ' +
|
|
202
|
+
'rather than throwing on the first of them. Next: pass a boolean — a flag, a query ' +
|
|
203
|
+
'parameter and a config key all arrive as text, so compare with === "true" first.',
|
|
204
|
+
);
|
|
205
|
+
}
|
|
184
206
|
}
|
|
185
207
|
|
|
186
208
|
/**
|
package/src/io/read.ts
CHANGED
|
@@ -229,6 +229,35 @@ export async function readRecordBytes(
|
|
|
229
229
|
options?: ReadOptions,
|
|
230
230
|
): Promise<Uint8Array> {
|
|
231
231
|
assertByteSource(source);
|
|
232
|
+
/*
|
|
233
|
+
* The HEADER, before the range is measured against it.
|
|
234
|
+
*
|
|
235
|
+
* `assertRecordRange` reads `header.recordCount` and prints it, so a wrong header put the blame
|
|
236
|
+
* on the argument that was right: `readRecordBytes(source, recording, records)` — the recording
|
|
237
|
+
* being the object the source came off — answered `records { start: 0, count: 1 } is not inside
|
|
238
|
+
* the undefined data records this file contains`, and told the caller to clamp a range that was
|
|
239
|
+
* already inside the file. A chunk gave the same sentence.
|
|
240
|
+
*
|
|
241
|
+
* The timeline is worse and reaches further. It HAS a `recordCount`, so the range check passes
|
|
242
|
+
* and `records.count * header.recordByteLength` is `NaN` — reported as an `EdfBudgetError`,
|
|
243
|
+
* "needs a NaN-byte buffer, above the 268435456-byte maxMaterializeBytes budget", advising a
|
|
244
|
+
* smaller read. An `EdfError`, so `isEdfError` sent a caller mistake down the file-or-budget
|
|
245
|
+
* branch, which is the one distinction `errors.ts` exists to keep.
|
|
246
|
+
*
|
|
247
|
+
* `recordByteLength` is the field to test: it is the one this function multiplies by, and
|
|
248
|
+
* `decode/digital.ts` already names it for the same reason.
|
|
249
|
+
*/
|
|
250
|
+
if (
|
|
251
|
+
!Number.isInteger(
|
|
252
|
+
(header as { recordByteLength?: unknown } | null | undefined)?.recordByteLength,
|
|
253
|
+
)
|
|
254
|
+
) {
|
|
255
|
+
throw new RangeError(
|
|
256
|
+
'readRecordBytes(): that is not a header — it has no recordByteLength, which is the record ' +
|
|
257
|
+
'size every offset and length below is measured in. Next: pass recording.header, or what ' +
|
|
258
|
+
'parseHeader(bytes, sourceByteLength) returned.',
|
|
259
|
+
);
|
|
260
|
+
}
|
|
232
261
|
assertRecordRange(header, records);
|
|
233
262
|
const byteLength = records.count * header.recordByteLength;
|
|
234
263
|
if (byteLength === 0) return new Uint8Array(0);
|