mmdb-lib 2.2.0 → 3.0.0
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/lib/decoder.js +13 -19
- package/lib/metadata.js +1 -1
- package/package.json +1 -1
package/lib/decoder.js
CHANGED
|
@@ -99,9 +99,9 @@ class Decoder {
|
|
|
99
99
|
case DataType.Int32:
|
|
100
100
|
return cursor(this.decodeInt32(offset, size), newOffset);
|
|
101
101
|
case DataType.Uint64:
|
|
102
|
-
return cursor(this.
|
|
102
|
+
return cursor(this.decodeBigUint(offset, size), newOffset);
|
|
103
103
|
case DataType.Uint128:
|
|
104
|
-
return cursor(this.
|
|
104
|
+
return cursor(this.decodeBigUint(offset, size), newOffset);
|
|
105
105
|
}
|
|
106
106
|
throw new Error('Unknown type ' + type + ' at offset ' + offset);
|
|
107
107
|
}
|
|
@@ -222,30 +222,24 @@ class Decoder {
|
|
|
222
222
|
if (size === 0) {
|
|
223
223
|
return 0;
|
|
224
224
|
}
|
|
225
|
-
if (size <=
|
|
225
|
+
if (size <= 4) {
|
|
226
226
|
return this.db.readUIntBE(offset, size);
|
|
227
227
|
}
|
|
228
|
-
|
|
229
|
-
return this.db.readBigInt64BE(offset).toString();
|
|
230
|
-
}
|
|
231
|
-
if (size > 16) {
|
|
232
|
-
return 0;
|
|
233
|
-
}
|
|
234
|
-
return this.decodeBigUint(offset, size);
|
|
228
|
+
throw new Error(`Invalid size for unsigned integer: ${size}`);
|
|
235
229
|
}
|
|
236
230
|
decodeString(offset, size) {
|
|
237
231
|
return this.db.toString('utf8', offset, offset + size);
|
|
238
232
|
}
|
|
239
233
|
decodeBigUint(offset, size) {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
for (let i = 0; i <
|
|
245
|
-
integer
|
|
246
|
-
|
|
247
|
-
}
|
|
248
|
-
return integer
|
|
234
|
+
if (size > 16) {
|
|
235
|
+
throw new Error(`Invalid size for big unsigned integer: ${size}`);
|
|
236
|
+
}
|
|
237
|
+
let integer = 0n;
|
|
238
|
+
for (let i = 0; i < size; i++) {
|
|
239
|
+
integer <<= 8n;
|
|
240
|
+
integer |= BigInt(this.db.readUInt8(offset + i));
|
|
241
|
+
}
|
|
242
|
+
return integer;
|
|
249
243
|
}
|
|
250
244
|
}
|
|
251
245
|
exports.default = Decoder;
|
package/lib/metadata.js
CHANGED
|
@@ -20,7 +20,7 @@ const parseMetadata = (db) => {
|
|
|
20
20
|
return {
|
|
21
21
|
binaryFormatMajorVersion: metadata.binary_format_major_version,
|
|
22
22
|
binaryFormatMinorVersion: metadata.binary_format_minor_version,
|
|
23
|
-
buildEpoch: new Date(metadata.build_epoch * 1000),
|
|
23
|
+
buildEpoch: new Date(Number(metadata.build_epoch) * 1000),
|
|
24
24
|
databaseType: metadata.database_type,
|
|
25
25
|
description: metadata.description,
|
|
26
26
|
ipVersion: metadata.ip_version,
|