edfcore 0.4.411 → 0.4.413
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/docs/CHANGELOG.md +35 -0
- package/package.json +1 -1
- package/src/constants.ts +1 -1
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.4.
|
|
112
|
+
export declare const VERSION = "0.4.413";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
package/docs/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,41 @@ 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.4.413
|
|
10
|
+
|
|
11
|
+
- **Added** tests for the calendar edfcore validates against. `isValidCalendarDate` exists because
|
|
12
|
+
a `Date` is the wrong tool: real files carry 31 April and 29 February in common years, and
|
|
13
|
+
`new Date(1997, 3, 31)` rolls both forward into a neighbouring month rather than rejecting them.
|
|
14
|
+
A recording silently dated a day later than it was made is the kind of error nobody finds,
|
|
15
|
+
because the wrong answer is a perfectly ordinary date.
|
|
16
|
+
- `date-ban.test.ts` proves no `Date` is constructed anywhere. That left the arithmetic which
|
|
17
|
+
replaced it, exercised only through the parser, where a rejected date is indistinguishable from a
|
|
18
|
+
rejected field.
|
|
19
|
+
- The month lengths are not restated — restating a table checks a transcription, and the
|
|
20
|
+
transcription is what would already be wrong. The properties it must satisfy are checked instead,
|
|
21
|
+
from the Gregorian calendar rather than from this file: the twelve months sum to 365 or 366 for
|
|
22
|
+
every year from 1 to 9999; four hundred consecutive years hold exactly 97 leap years and 146,097
|
|
23
|
+
days, which is a whole number of weeks; and a century not divisible by 400 holds 24, not 25.
|
|
24
|
+
- A table with a month a day short fails the first for every year, and a leap rule missing its
|
|
25
|
+
century exception fails the second by three days a cycle.
|
|
26
|
+
|
|
27
|
+
## 0.4.412
|
|
28
|
+
|
|
29
|
+
- **Added** tests for four header fields that are all finite and imply a gain that is not. An EDF
|
|
30
|
+
physical bound is eight bytes of ASCII, which is room for an exponent, so a physical range can
|
|
31
|
+
underflow against the digital range — `0` to `5E-324` over -1..1 puts `bitValue` at zero and
|
|
32
|
+
`offset` at infinity — or overflow it, where `-9.9E307` to `9.9E307` exceeds float64 before the
|
|
33
|
+
division happens.
|
|
34
|
+
- Nothing about such a file looks wrong. The header parses, every field is in range for its width,
|
|
35
|
+
and a reader who does not check `signal.scale` gets a column of `NaN` where microvolts should be
|
|
36
|
+
— which plots as an empty panel, or silently poisons a mean. The scale is refused exactly as the
|
|
37
|
+
obvious degeneracies are, and `decodeDigital` keeps working, which is the whole reason
|
|
38
|
+
`toPhysical` is a separate call.
|
|
39
|
+
- A signal declaring a negative `samplesPerRecord` is the other shape of "parses and cannot be
|
|
40
|
+
used", and it is fatal rather than diagnosed: every later signal's byte offset inside a record is
|
|
41
|
+
a running sum of that field, so a negative one does not make one signal wrong, it makes every
|
|
42
|
+
signal after it point at the wrong bytes.
|
|
43
|
+
|
|
9
44
|
## 0.4.411
|
|
10
45
|
|
|
11
46
|
- **Added** tests for the envelope of the files and selections a viewer produces by accident.
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED