n3 2.10.6 → 2.10.7

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.
@@ -434,7 +434,11 @@ function literal(value, languageOrDataType) {
434
434
  if (typeof value === 'boolean') datatype = xsd.boolean;
435
435
  // Convert an integer or double
436
436
  else if (typeof value === 'number') {
437
- if (Number.isFinite(value)) datatype = Number.isInteger(value) ? xsd.integer : xsd.double;else {
437
+ if (Number.isFinite(value))
438
+ // From 1e21 upward, a number's string form turns exponential ("1e+21"),
439
+ // which is not a valid xsd:integer lexical, so type it as xsd:double
440
+ // (the same cut-off as JSON-LD 1.1's Object to RDF Conversion)
441
+ datatype = Number.isInteger(value) && Math.abs(value) < 1e21 ? xsd.integer : xsd.double;else {
438
442
  datatype = xsd.double;
439
443
  if (!Number.isNaN(value)) value = value > 0 ? 'INF' : '-INF';
440
444
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n3",
3
- "version": "2.10.6",
3
+ "version": "2.10.7",
4
4
  "description": "Lightning fast, asynchronous, streaming Turtle / N3 / RDF library.",
5
5
  "author": "Ruben Verborgh <ruben.verborgh@gmail.com>",
6
6
  "keywords": [
@@ -448,7 +448,10 @@ function literal(value, languageOrDataType) {
448
448
  // Convert an integer or double
449
449
  else if (typeof value === 'number') {
450
450
  if (Number.isFinite(value))
451
- datatype = Number.isInteger(value) ? xsd.integer : xsd.double;
451
+ // From 1e21 upward, a number's string form turns exponential ("1e+21"),
452
+ // which is not a valid xsd:integer lexical, so type it as xsd:double
453
+ // (the same cut-off as JSON-LD 1.1's Object to RDF Conversion)
454
+ datatype = Number.isInteger(value) && Math.abs(value) < 1e21 ? xsd.integer : xsd.double;
452
455
  else {
453
456
  datatype = xsd.double;
454
457
  if (!Number.isNaN(value))