edfcore 0.3.25 → 0.3.26
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/CHANGELOG.md +17 -0
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/header/fields.d.ts.map +1 -1
- package/dist/header/fields.js +36 -5
- package/dist/header/fields.js.map +1 -1
- package/package.json +1 -1
- package/src/constants.ts +1 -1
- package/src/header/fields.ts +37 -5
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,23 @@ 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.3.26
|
|
10
|
+
|
|
11
|
+
- **Fixed** `NON_ASCII_HEADER_FIELD` quoting bytes that contradict its own claim. The evidence
|
|
12
|
+
window was the first 16 bytes of the field, anchored to the start and never moved to the byte
|
|
13
|
+
that triggered the report.
|
|
14
|
+
- `patientId` and `recordingId` are 80 bytes each and `reserved` is 44, and in the EDF+ layouts the
|
|
15
|
+
subfields that realistically carry a non-ASCII byte — the patient NAME, the recording EQUIPMENT —
|
|
16
|
+
begin well past byte 16. So for the exact case this warning exists for, an accented patient name
|
|
17
|
+
or a bare `0xB5` for micro, **every one of the sixteen bytes quoted was printable ASCII** while
|
|
18
|
+
the sentence around them said those bytes were the non-conformant ones. A reader could see they
|
|
19
|
+
were not, and had no way from the message to find the real one.
|
|
20
|
+
- The window is now centred on the first offending byte with a few bytes of lead-in, elided with
|
|
21
|
+
`...` at whichever end it does not reach, and the message names that byte's absolute offset in
|
|
22
|
+
the file. `MCH-0234567 F 02-MAY-1951 José_Álvarez` now shows the `0xe9` and the `0xc1`.
|
|
23
|
+
- `rawBytes` still carries the whole field content, so nothing programmatic changed — this is the
|
|
24
|
+
message and `actual` only.
|
|
25
|
+
|
|
9
26
|
## 0.3.25
|
|
10
27
|
|
|
11
28
|
- **Fixed** a TAL duration that is out of range being reported as a grammar violation. `9223372036855`
|
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.3.
|
|
112
|
+
export declare const VERSION = "0.3.26";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/header/fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,KAAK,cAAc,EAAmC,MAAM,qBAAqB,CAAC;AAE3F,OAAO,EAAwB,aAAa,EAAoB,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAuB,KAAK,cAAc,EAAc,MAAM,6BAA6B,CAAC;AAEnG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,gFAAgF;AAChF,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,aAAa,CAAC;AAuC9D,0DAA0D;AAC1D,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAG3E;AAED,0DAA0D;AAC1D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAGtE;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,UAAU,GAAG,kBAAkB,CAe/E;
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/header/fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,KAAK,cAAc,EAAmC,MAAM,qBAAqB,CAAC;AAE3F,OAAO,EAAwB,aAAa,EAAoB,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAuB,KAAK,cAAc,EAAc,MAAM,6BAA6B,CAAC;AAEnG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,gFAAgF;AAChF,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,aAAa,CAAC;AAuC9D,0DAA0D;AAC1D,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAG3E;AAED,0DAA0D;AAC1D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAGtE;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,UAAU,GAAG,kBAAkB,CAe/E;AA2DD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CA2B9F;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAuED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,cAAc,GACnB,MAAM,CAKR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,cAAc,GACnB,MAAM,CAKR;AAmBD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAsB1E;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,MAAM,EACX,wBAAwB,EAAE,MAAM,EAChC,IAAI,EAAE,cAAc,GACnB,MAAM,CAqBR;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAmE7E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAOlF"}
|
package/dist/header/fields.js
CHANGED
|
@@ -93,12 +93,41 @@ function contentBounds(raw) {
|
|
|
93
93
|
start++;
|
|
94
94
|
return { start, end };
|
|
95
95
|
}
|
|
96
|
-
function hexBytes(bytes) {
|
|
97
|
-
const shown = bytes.subarray(
|
|
96
|
+
function hexBytes(bytes, from = 0) {
|
|
97
|
+
const shown = bytes.subarray(from, from + RAW_EVIDENCE_MAX_BYTES);
|
|
98
98
|
const parts = [];
|
|
99
99
|
for (const byte of shown)
|
|
100
100
|
parts.push(`0x${byte.toString(16).padStart(2, '0')}`);
|
|
101
|
-
|
|
101
|
+
const head = from > 0 ? '... ' : '';
|
|
102
|
+
const tail = from + shown.length < bytes.length ? ' ...' : '';
|
|
103
|
+
return head + parts.join(' ') + tail;
|
|
104
|
+
}
|
|
105
|
+
/** Index of the first byte outside printable ASCII, or 0 when the caller says there is one. */
|
|
106
|
+
function firstNonPrintable(bytes) {
|
|
107
|
+
for (let i = 0; i < bytes.length; i += 1) {
|
|
108
|
+
const byte = bytes[i];
|
|
109
|
+
if (byte < 0x20 || byte > 0x7e)
|
|
110
|
+
return i;
|
|
111
|
+
}
|
|
112
|
+
return 0;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* A window of at most `RAW_EVIDENCE_MAX_BYTES` centred on the OFFENDING byte, not on the start
|
|
116
|
+
* of the field.
|
|
117
|
+
*
|
|
118
|
+
* The old window was `subarray(0, 16)`. `patientId` and `recordingId` are 80 bytes each and
|
|
119
|
+
* `reserved` is 44, and in the EDF+ layouts the subfields that realistically carry a non-ASCII
|
|
120
|
+
* byte — the patient NAME, the recording EQUIPMENT — begin well past byte 16. So for the exact
|
|
121
|
+
* case this warning exists for, an accented name or a bare 0xB5 for micro, the sixteen bytes
|
|
122
|
+
* quoted were all printable ASCII while the sentence around them said those bytes were the
|
|
123
|
+
* non-conformant ones. The reader could see they were not, and had no way to find the real one
|
|
124
|
+
* (fixed in 0.3.26).
|
|
125
|
+
*/
|
|
126
|
+
function evidenceWindow(content) {
|
|
127
|
+
const at = firstNonPrintable(content);
|
|
128
|
+
// A few bytes of lead-in, so the offending byte has context rather than sitting at the edge.
|
|
129
|
+
const from = Math.max(0, Math.min(at - 4, content.length - RAW_EVIDENCE_MAX_BYTES));
|
|
130
|
+
return { hex: hexBytes(content, Math.max(0, from)), at };
|
|
102
131
|
}
|
|
103
132
|
/**
|
|
104
133
|
* Report `NON_ASCII_HEADER_FIELD` for every fixed text field carrying a byte outside ASCII
|
|
@@ -115,10 +144,12 @@ export function reportNonAsciiHeaderFields(headerBytes, sink) {
|
|
|
115
144
|
const content = sliceBytes(headerBytes, offset + start, end - start);
|
|
116
145
|
if (!hasNonPrintableAscii(content))
|
|
117
146
|
continue;
|
|
147
|
+
const evidence = evidenceWindow(content);
|
|
118
148
|
sink.report({
|
|
119
149
|
code: 'NON_ASCII_HEADER_FIELD',
|
|
120
150
|
message: `${describeFixedField(field)} is ${JSON.stringify(raw)} and carries bytes outside ` +
|
|
121
|
-
`printable ASCII 32..126
|
|
151
|
+
`printable ASCII 32..126, the first at byte ${offset + start + evidence.at}: ` +
|
|
152
|
+
`${evidence.hex}. The EDF specification restricts header ` +
|
|
122
153
|
'text to ASCII 32..126. Next: nothing is lost — edfcore decodes header text as ' +
|
|
123
154
|
'ISO-8859-1 (never TextDecoder, whose "latin1" label decodes 0x80 differently in Node ' +
|
|
124
155
|
'and in a browser), so read the field as Latin-1 rather than as UTF-8.',
|
|
@@ -128,7 +159,7 @@ export function reportNonAsciiHeaderFields(headerBytes, sink) {
|
|
|
128
159
|
rawBytes: content,
|
|
129
160
|
raw,
|
|
130
161
|
expected: 'ASCII 32..126',
|
|
131
|
-
actual:
|
|
162
|
+
actual: evidence.hex,
|
|
132
163
|
specReference: fixedFieldSpecReference(field),
|
|
133
164
|
});
|
|
134
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/header/fields.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/header/fields.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
package/src/header/fields.ts
CHANGED
|
@@ -109,11 +109,41 @@ function contentBounds(raw: string): { readonly start: number; readonly end: num
|
|
|
109
109
|
return { start, end };
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
function hexBytes(bytes: Uint8Array): string {
|
|
113
|
-
const shown = bytes.subarray(
|
|
112
|
+
function hexBytes(bytes: Uint8Array, from = 0): string {
|
|
113
|
+
const shown = bytes.subarray(from, from + RAW_EVIDENCE_MAX_BYTES);
|
|
114
114
|
const parts: string[] = [];
|
|
115
115
|
for (const byte of shown) parts.push(`0x${byte.toString(16).padStart(2, '0')}`);
|
|
116
|
-
|
|
116
|
+
const head = from > 0 ? '... ' : '';
|
|
117
|
+
const tail = from + shown.length < bytes.length ? ' ...' : '';
|
|
118
|
+
return head + parts.join(' ') + tail;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/** Index of the first byte outside printable ASCII, or 0 when the caller says there is one. */
|
|
122
|
+
function firstNonPrintable(bytes: Uint8Array): number {
|
|
123
|
+
for (let i = 0; i < bytes.length; i += 1) {
|
|
124
|
+
const byte = bytes[i] as number;
|
|
125
|
+
if (byte < 0x20 || byte > 0x7e) return i;
|
|
126
|
+
}
|
|
127
|
+
return 0;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* A window of at most `RAW_EVIDENCE_MAX_BYTES` centred on the OFFENDING byte, not on the start
|
|
132
|
+
* of the field.
|
|
133
|
+
*
|
|
134
|
+
* The old window was `subarray(0, 16)`. `patientId` and `recordingId` are 80 bytes each and
|
|
135
|
+
* `reserved` is 44, and in the EDF+ layouts the subfields that realistically carry a non-ASCII
|
|
136
|
+
* byte — the patient NAME, the recording EQUIPMENT — begin well past byte 16. So for the exact
|
|
137
|
+
* case this warning exists for, an accented name or a bare 0xB5 for micro, the sixteen bytes
|
|
138
|
+
* quoted were all printable ASCII while the sentence around them said those bytes were the
|
|
139
|
+
* non-conformant ones. The reader could see they were not, and had no way to find the real one
|
|
140
|
+
* (fixed in 0.3.26).
|
|
141
|
+
*/
|
|
142
|
+
function evidenceWindow(content: Uint8Array): { readonly hex: string; readonly at: number } {
|
|
143
|
+
const at = firstNonPrintable(content);
|
|
144
|
+
// A few bytes of lead-in, so the offending byte has context rather than sitting at the edge.
|
|
145
|
+
const from = Math.max(0, Math.min(at - 4, content.length - RAW_EVIDENCE_MAX_BYTES));
|
|
146
|
+
return { hex: hexBytes(content, Math.max(0, from)), at };
|
|
117
147
|
}
|
|
118
148
|
|
|
119
149
|
/**
|
|
@@ -130,11 +160,13 @@ export function reportNonAsciiHeaderFields(headerBytes: Uint8Array, sink: Diagno
|
|
|
130
160
|
const { start, end } = contentBounds(raw);
|
|
131
161
|
const content = sliceBytes(headerBytes, offset + start, end - start);
|
|
132
162
|
if (!hasNonPrintableAscii(content)) continue;
|
|
163
|
+
const evidence = evidenceWindow(content);
|
|
133
164
|
sink.report({
|
|
134
165
|
code: 'NON_ASCII_HEADER_FIELD',
|
|
135
166
|
message:
|
|
136
167
|
`${describeFixedField(field)} is ${JSON.stringify(raw)} and carries bytes outside ` +
|
|
137
|
-
`printable ASCII 32..126
|
|
168
|
+
`printable ASCII 32..126, the first at byte ${offset + start + evidence.at}: ` +
|
|
169
|
+
`${evidence.hex}. The EDF specification restricts header ` +
|
|
138
170
|
'text to ASCII 32..126. Next: nothing is lost — edfcore decodes header text as ' +
|
|
139
171
|
'ISO-8859-1 (never TextDecoder, whose "latin1" label decodes 0x80 differently in Node ' +
|
|
140
172
|
'and in a browser), so read the field as Latin-1 rather than as UTF-8.',
|
|
@@ -144,7 +176,7 @@ export function reportNonAsciiHeaderFields(headerBytes: Uint8Array, sink: Diagno
|
|
|
144
176
|
rawBytes: content,
|
|
145
177
|
raw,
|
|
146
178
|
expected: 'ASCII 32..126',
|
|
147
|
-
actual:
|
|
179
|
+
actual: evidence.hex,
|
|
148
180
|
specReference: fixedFieldSpecReference(field),
|
|
149
181
|
});
|
|
150
182
|
}
|