@@ -12,7 +12,7 @@ const version_id = 'dev',
12
12
13
13
/** @summary version date
14
14
* @desc Release date in format day/month/year like '14/04/2022' */
15
- version_date = '18 /06/2025',
15
+ version_date = '26 /06/2025',
16
16
17
17
/** @summary version id and date
18
18
* @desc Produced by concatenation of {@link version_id} and {@link version_date}
@@ -166007,7 +166007,7 @@ class HierarchyPainter extends BasePainter {
166007
166007
}
166008
166008
}
166009
166009
166010
- if (!req && getTypeForKind(item._kind))
166010
+ if (!req && ! getTypeForKind(item._kind))
166011
166011
req = 'item.json.gz?compact=3';
166012
166012
}
166013
166013
@@ -175367,12 +175367,20 @@ class RNTupleDescriptorBuilder {
175367
175367
deserializeHeader(header_blob) {
175368
175368
if (!header_blob) return;
175369
175369
175370
- const reader = new RBufferReader(header_blob);
175370
+ const reader = new RBufferReader(header_blob),
175371
+
175372
+ payloadStart = reader.offset,
175371
175373
// Read the envelope metadata
175372
- this._readEnvelopeMetadata(reader);
175374
+ { envelopeLength } = this._readEnvelopeMetadata(reader),
175373
175375
175374
- // TODO: Validate the envelope checksum at the end of deserialization
175375
- // const payloadStart = reader.offset;
175376
+ // Seek to end of envelope to get checksum
175377
+ checksumPos = payloadStart + envelopeLength - 8,
175378
+ currentPos = reader.offset;
175379
+
175380
+ reader.seek(checksumPos);
175381
+ this.headerEnvelopeChecksum = reader.readU64();
175382
+
175383
+ reader.seek(currentPos);
175376
175384
175377
175385
// Read feature flags list (may span multiple 64-bit words)
175378
175386
this._readFeatureFlags(reader);
@@ -175382,15 +175390,8 @@ deserializeHeader(header_blob) {
175382
175390
this.description = reader.readString();
175383
175391
this.writer = reader.readString();
175384
175392
175385
- // List frame: list of field record frames
175386
- this._readFieldDescriptors(reader);
175387
-
175388
- // List frame: list of column record frames
175389
- this._readColumnDescriptors(reader);
175390
- // Read alias column descriptors
175391
- this._readAliasColumn(reader);
175392
- // Read Extra Type Information
175393
- this._readExtraTypeInformation(reader);
175393
+ // 4 list frames inside the header envelope
175394
+ this._readSchemaDescription(reader);
175394
175395
}
175395
175396
175396
175397
deserializeFooter(footer_blob) {
@@ -175405,7 +175406,9 @@ deserializeFooter(footer_blob) {
175405
175406
// Feature flag(32 bits)
175406
175407
this._readFeatureFlags(reader);
175407
175408
// Header checksum (64-bit xxhash3)
175408
- this.headerChecksum = reader.readU64();
175409
+ const headerChecksumFromFooter = reader.readU64();
175410
+ if (headerChecksumFromFooter !== this.headerEnvelopeChecksum)
175411
+ throw new Error('RNTuple corrupted: header checksum does not match footer checksum.');
175409
175412
175410
175413
const schemaExtensionSize = reader.readS64();
175411
175414
@@ -175414,10 +175417,7 @@ deserializeFooter(footer_blob) {
175414
175417
throw new Error('Schema extension frame is not a record frame, which is unexpected.');
175415
175418
175416
175419
// Schema extension record frame (4 list frames inside)
175417
- this._readFieldDescriptors(reader);
175418
- this._readColumnDescriptors(reader);
175419
- this._readAliasColumn(reader);
175420
- this._readExtraTypeInformation(reader);
175420
+ this._readSchemaDescription(reader);
175421
175421
175422
175422
// Cluster Group record frame
175423
175423
this._readClusterGroups(reader);
@@ -175437,6 +175437,21 @@ _readEnvelopeMetadata(reader) {
175437
175437
return { envelopeType, envelopeLength };
175438
175438
}
175439
175439
175440
+ _readSchemaDescription(reader) {
175441
+ // Reading new descriptor arrays from the input
175442
+ const newFields = this._readFieldDescriptors(reader),
175443
+ newColumns = this._readColumnDescriptors(reader),
175444
+ newAliases = this._readAliasColumn(reader),
175445
+ newExtra = this._readExtraTypeInformation(reader);
175446
+
175447
+ // Merging these new arrays into existing arrays
175448
+ this.fieldDescriptors = (this.fieldDescriptors || []).concat(newFields);
175449
+ this.columnDescriptors = (this.columnDescriptors || []).concat(newColumns);
175450
+ this.aliasColumns = (this.aliasColumns || []).concat(newAliases);
175451
+ this.extraTypeInfo = (this.extraTypeInfo || []).concat(newExtra);
175452
+ }
175453
+
175454
+
175440
175455
_readFeatureFlags(reader) {
175441
175456
this.featureFlags = [];
175442
175457
while (true) {
@@ -175498,7 +175513,7 @@ fieldListIsList = fieldListSize < 0;
175498
175513
checksum
175499
175514
});
175500
175515
}
175501
- this.fieldDescriptors = fieldDescriptors;
175516
+ return fieldDescriptors;
175502
175517
}
175503
175518
175504
175519
_readColumnDescriptors(reader) {
@@ -175544,7 +175559,7 @@ _readColumnDescriptors(reader) {
175544
175559
175545
175560
columnDescriptors.push(column);
175546
175561
}
175547
- this.columnDescriptors = columnDescriptors;
175562
+ return columnDescriptors;
175548
175563
}
175549
175564
_readAliasColumn(reader){
175550
175565
const aliasColumnListSize = reader.readS64(),
@@ -175564,7 +175579,7 @@ _readAliasColumn(reader){
175564
175579
fieldId
175565
175580
});
175566
175581
}
175567
- this.aliasColumns = aliasColumns;
175582
+ return aliasColumns;
175568
175583
}
175569
175584
_readExtraTypeInformation(reader) {
175570
175585
const extraTypeInfoListSize = reader.readS64(),
@@ -175587,7 +175602,7 @@ _readExtraTypeInformation(reader) {
175587
175602
typeVersion
175588
175603
});
175589
175604
}
175590
- this.extraTypeInfo = extraTypeInfo;
175605
+ return extraTypeInfo;
175591
175606
}
175592
175607
_readClusterGroups(reader) {
175593
175608
const clusterGroupListSize = reader.readS64(),
0 commit comments