@graphty/graph-io 0.3.27 → 0.3.28

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.
Files changed (52) hide show
  1. package/dist/chunks/export-CHd4tQE2.js.map +1 -1
  2. package/dist/chunks/{exporter-IHv4nkCm.js → exporter-Cl021ZIE.js} +71 -47
  3. package/dist/chunks/exporter-Cl021ZIE.js.map +1 -0
  4. package/dist/chunks/exporter-D23CKNqF.js.map +1 -1
  5. package/dist/chunks/importer-BSALvkui.js.map +1 -1
  6. package/dist/chunks/{importer-B1wmPQjr.js → importer-BZB7iP9r.js} +31 -5
  7. package/dist/chunks/importer-BZB7iP9r.js.map +1 -0
  8. package/dist/chunks/importer-z_FL4VMb.js.map +1 -1
  9. package/dist/csv.js +11 -1
  10. package/dist/csv.js.map +1 -1
  11. package/dist/cx2.js +1 -1
  12. package/dist/dot.js +1 -1
  13. package/dist/gml.js +15 -6
  14. package/dist/gml.js.map +1 -1
  15. package/dist/graph-io.js +4 -4
  16. package/dist/graph-io.js.map +1 -1
  17. package/dist/src/common/declared-types.d.ts.map +1 -1
  18. package/dist/src/common/declared-types.js.map +1 -1
  19. package/dist/src/common/zip.js.map +1 -1
  20. package/dist/src/formats/csv/importer.d.ts.map +1 -1
  21. package/dist/src/formats/csv/importer.js +20 -2
  22. package/dist/src/formats/csv/importer.js.map +1 -1
  23. package/dist/src/formats/cx2/exporter.d.ts.map +1 -1
  24. package/dist/src/formats/cx2/exporter.js +84 -33
  25. package/dist/src/formats/cx2/exporter.js.map +1 -1
  26. package/dist/src/formats/dot/exporter.js +30 -4
  27. package/dist/src/formats/dot/exporter.js.map +1 -1
  28. package/dist/src/formats/dot/importer.js.map +1 -1
  29. package/dist/src/formats/gml/exporter.d.ts.map +1 -1
  30. package/dist/src/formats/gml/exporter.js +23 -6
  31. package/dist/src/formats/gml/exporter.js.map +1 -1
  32. package/dist/src/formats/pajek/importer.js.map +1 -1
  33. package/dist/src/registry.d.ts.map +1 -1
  34. package/dist/src/registry.js.map +1 -1
  35. package/dist/src/sniff.d.ts.map +1 -1
  36. package/dist/src/sniff.js.map +1 -1
  37. package/dist/src/types.d.ts.map +1 -1
  38. package/dist/src/types.js.map +1 -1
  39. package/package.json +2 -2
  40. package/src/common/declared-types.ts +1 -10
  41. package/src/common/zip.ts +1 -1
  42. package/src/formats/csv/importer.ts +21 -2
  43. package/src/formats/cx2/exporter.ts +123 -49
  44. package/src/formats/dot/exporter.ts +37 -4
  45. package/src/formats/dot/importer.ts +1 -1
  46. package/src/formats/gml/exporter.ts +24 -6
  47. package/src/formats/pajek/importer.ts +1 -1
  48. package/src/registry.ts +9 -10
  49. package/src/sniff.ts +2 -21
  50. package/src/types.ts +1 -7
  51. package/dist/chunks/exporter-IHv4nkCm.js.map +0 -1
  52. package/dist/chunks/importer-B1wmPQjr.js.map +0 -1
package/dist/csv.js CHANGED
@@ -1606,7 +1606,7 @@ function sniff(head) {
1606
1606
  label = "utf-16be";
1607
1607
  }
1608
1608
  const body = stripLeadingComments(new TextDecoder(label).decode(head.subarray(0, HEAD_BYTES)), COMMENT_CHARS);
1609
- if (body.trim().length === 0 || OTHER_FORMATS.some((r) => r.test(body))) {
1609
+ if (body.trim().length === 0 || hasControlCharacter(body) || OTHER_FORMATS.some((r) => r.test(body))) {
1610
1610
  return 0;
1611
1611
  }
1612
1612
  const newline = sniffNewline(body);
@@ -1628,6 +1628,16 @@ function sniff(head) {
1628
1628
  }
1629
1629
  return looksLikeProse(body, newline, delimiter) ? 0 : 0.3;
1630
1630
  }
1631
+ function hasControlCharacter(text) {
1632
+ const last = text.length - 1;
1633
+ for (let i = 0; i <= last; i++) {
1634
+ const c = text.codePointAt(i) ?? 0;
1635
+ if (c < 32 && c !== 9 && c !== 10 && c !== 13 && !(c === 26 && i === last)) {
1636
+ return true;
1637
+ }
1638
+ }
1639
+ return false;
1640
+ }
1631
1641
  const SENTENCE = /[A-Za-z]{2}[.!?](?:\s|$)/;
1632
1642
  function looksLikeProse(body, newline, delimiter) {
1633
1643
  const lines2 = body.split(newline).filter((l) => l.trim() !== "");