@graphty/graph-io 0.3.37 → 0.3.39

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 (141) hide show
  1. package/dist/chunks/{choose-CsO24U-5.js → choose-CS3fvGT1.js} +2 -2
  2. package/dist/chunks/{choose-CsO24U-5.js.map → choose-CS3fvGT1.js.map} +1 -1
  3. package/dist/chunks/{constants-BPRiVyBu.js → constants-DqKZT6cH.js} +2 -2
  4. package/dist/chunks/{constants-BPRiVyBu.js.map → constants-DqKZT6cH.js.map} +1 -1
  5. package/dist/chunks/{escape-BRcyzD77.js → escape-BpYMQZVa.js} +2 -2
  6. package/dist/chunks/{escape-BRcyzD77.js.map → escape-BpYMQZVa.js.map} +1 -1
  7. package/dist/chunks/{export-CTUlibzr.js → export-B-aVCwyG.js} +103 -92
  8. package/dist/chunks/export-B-aVCwyG.js.map +1 -0
  9. package/dist/chunks/{exporter-flsHFoER.js → exporter-BqKs1Q12.js} +5 -5
  10. package/dist/chunks/exporter-BqKs1Q12.js.map +1 -0
  11. package/dist/chunks/{exporter-B_YFZ4ix.js → exporter-CNJZF_BN.js} +7 -7
  12. package/dist/chunks/exporter-CNJZF_BN.js.map +1 -0
  13. package/dist/chunks/{exporter-Bn4jdYfd.js → exporter-DXqCPNrI.js} +4 -4
  14. package/dist/chunks/exporter-DXqCPNrI.js.map +1 -0
  15. package/dist/chunks/{exporter-2UNIxzcu.js → exporter-SFYkDzD0.js} +6 -5
  16. package/dist/chunks/exporter-SFYkDzD0.js.map +1 -0
  17. package/dist/chunks/{importer-oIUx9u_g.js → importer--tQQsY4W.js} +40 -18
  18. package/dist/chunks/importer--tQQsY4W.js.map +1 -0
  19. package/dist/chunks/{importer-yWUPR_nU.js → importer-B7Ir269L.js} +4 -4
  20. package/dist/chunks/{importer-yWUPR_nU.js.map → importer-B7Ir269L.js.map} +1 -1
  21. package/dist/chunks/{importer-Dwqepe_B.js → importer-BfJ1jnNr.js} +10 -4
  22. package/dist/chunks/importer-BfJ1jnNr.js.map +1 -0
  23. package/dist/chunks/{importer-CEuUmyPe.js → importer-CSt-gaYE.js} +6 -6
  24. package/dist/chunks/{importer-CEuUmyPe.js.map → importer-CSt-gaYE.js.map} +1 -1
  25. package/dist/chunks/{importer-Bgb9sgZZ.js → importer-CqgYq4Ld.js} +6 -8
  26. package/dist/chunks/importer-CqgYq4Ld.js.map +1 -0
  27. package/dist/chunks/{importer-BD3mi2QH.js → importer-DvFznt5-.js} +5 -5
  28. package/dist/chunks/importer-DvFznt5-.js.map +1 -0
  29. package/dist/chunks/{importer-DqMtyYLX.js → importer-PVXkeoaS.js} +6 -8
  30. package/dist/chunks/importer-PVXkeoaS.js.map +1 -0
  31. package/dist/chunks/{json-elements-AkglPS3m.js → json-elements-CXs4z1iL.js} +3 -3
  32. package/dist/chunks/{json-elements-AkglPS3m.js.map → json-elements-CXs4z1iL.js.map} +1 -1
  33. package/dist/chunks/{ontology-export-DDoG3egY.js → ontology-export-50L9DOV4.js} +2 -2
  34. package/dist/chunks/{ontology-export-DDoG3egY.js.map → ontology-export-50L9DOV4.js.map} +1 -1
  35. package/dist/chunks/{records-ChmWZGuz.js → records-C9jd7yLD.js} +2 -2
  36. package/dist/chunks/{records-ChmWZGuz.js.map → records-C9jd7yLD.js.map} +1 -1
  37. package/dist/chunks/{text-Btw3sBe_.js → text-Bjfa1xYL.js} +2 -2
  38. package/dist/chunks/{text-Btw3sBe_.js.map → text-Bjfa1xYL.js.map} +1 -1
  39. package/dist/csv.js +4 -4
  40. package/dist/csv.js.map +1 -1
  41. package/dist/cx.js +1 -1
  42. package/dist/cx2.js +2 -2
  43. package/dist/cys.js +1 -1
  44. package/dist/dot.js +1 -1
  45. package/dist/gexf.js +2 -2
  46. package/dist/gml.js +9 -7
  47. package/dist/gml.js.map +1 -1
  48. package/dist/graph-io.js +26 -26
  49. package/dist/graphml.js +2 -2
  50. package/dist/json.js +1 -1
  51. package/dist/neo4j.js +5 -5
  52. package/dist/neo4j.js.map +1 -1
  53. package/dist/obo.js +1 -1
  54. package/dist/pajek.js +1 -1
  55. package/dist/src/common/cx-export.d.ts +5 -2
  56. package/dist/src/common/cx-export.d.ts.map +1 -1
  57. package/dist/src/common/cx-export.js +11 -2
  58. package/dist/src/common/cx-export.js.map +1 -1
  59. package/dist/src/common/direction.js +1 -1
  60. package/dist/src/common/direction.js.map +1 -1
  61. package/dist/src/common/export.d.ts.map +1 -1
  62. package/dist/src/common/export.js +136 -71
  63. package/dist/src/common/export.js.map +1 -1
  64. package/dist/src/common/input.js +1 -1
  65. package/dist/src/common/input.js.map +1 -1
  66. package/dist/src/formats/cx/exporter.js +1 -1
  67. package/dist/src/formats/cx/exporter.js.map +1 -1
  68. package/dist/src/formats/cx2/exporter.js +1 -1
  69. package/dist/src/formats/cx2/exporter.js.map +1 -1
  70. package/dist/src/formats/dot/importer.d.ts +6 -0
  71. package/dist/src/formats/dot/importer.d.ts.map +1 -1
  72. package/dist/src/formats/dot/importer.js +11 -6
  73. package/dist/src/formats/dot/importer.js.map +1 -1
  74. package/dist/src/formats/dot/names.d.ts +5 -0
  75. package/dist/src/formats/dot/names.d.ts.map +1 -1
  76. package/dist/src/formats/dot/names.js +5 -0
  77. package/dist/src/formats/dot/names.js.map +1 -1
  78. package/dist/src/formats/dot/tokenizer.js +9 -9
  79. package/dist/src/formats/dot/tokenizer.js.map +1 -1
  80. package/dist/src/formats/gml/importer.d.ts +6 -0
  81. package/dist/src/formats/gml/importer.d.ts.map +1 -1
  82. package/dist/src/formats/gml/importer.js +6 -3
  83. package/dist/src/formats/gml/importer.js.map +1 -1
  84. package/dist/src/formats/gml/syntax.js +1 -1
  85. package/dist/src/formats/gml/syntax.js.map +1 -1
  86. package/dist/src/formats/graphml/importer.d.ts.map +1 -1
  87. package/dist/src/formats/graphml/importer.js +2 -4
  88. package/dist/src/formats/graphml/importer.js.map +1 -1
  89. package/dist/src/formats/json/dialect.js +1 -1
  90. package/dist/src/formats/json/dialect.js.map +1 -1
  91. package/dist/src/formats/neo4j/exporter.d.ts.map +1 -1
  92. package/dist/src/formats/neo4j/exporter.js +1 -4
  93. package/dist/src/formats/neo4j/exporter.js.map +1 -1
  94. package/dist/src/formats/neo4j/header.js +2 -2
  95. package/dist/src/formats/neo4j/header.js.map +1 -1
  96. package/dist/src/formats/obo/importer.d.ts.map +1 -1
  97. package/dist/src/formats/obo/importer.js +2 -1
  98. package/dist/src/formats/obo/importer.js.map +1 -1
  99. package/dist/src/formats/obo/syntax.js +1 -1
  100. package/dist/src/formats/obo/syntax.js.map +1 -1
  101. package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
  102. package/dist/src/formats/pajek/exporter.js +4 -5
  103. package/dist/src/formats/pajek/exporter.js.map +1 -1
  104. package/dist/src/formats/xgmml/exporter.d.ts.map +1 -1
  105. package/dist/src/formats/xgmml/exporter.js.map +1 -1
  106. package/dist/src/sniff.js +1 -1
  107. package/dist/src/sniff.js.map +1 -1
  108. package/dist/xgmml.js +2 -2
  109. package/package.json +2 -2
  110. package/src/common/cx-export.ts +11 -2
  111. package/src/common/direction.ts +1 -1
  112. package/src/common/export.ts +190 -97
  113. package/src/common/input.ts +1 -1
  114. package/src/formats/csv/importer.ts +1 -1
  115. package/src/formats/cx/exporter.ts +1 -1
  116. package/src/formats/cx2/exporter.ts +1 -1
  117. package/src/formats/dot/importer.ts +36 -5
  118. package/src/formats/dot/names.ts +6 -0
  119. package/src/formats/dot/tokenizer.ts +9 -9
  120. package/src/formats/gml/importer.ts +15 -4
  121. package/src/formats/gml/syntax.ts +1 -1
  122. package/src/formats/graphml/importer.ts +2 -4
  123. package/src/formats/json/dialect.ts +1 -1
  124. package/src/formats/neo4j/exporter.ts +1 -4
  125. package/src/formats/neo4j/header.ts +2 -2
  126. package/src/formats/obo/importer.ts +2 -1
  127. package/src/formats/obo/syntax.ts +1 -1
  128. package/src/formats/pajek/exporter.ts +6 -4
  129. package/src/formats/pajek/importer.ts +1 -1
  130. package/src/formats/xgmml/exporter.ts +4 -1
  131. package/src/sniff.ts +1 -1
  132. package/dist/chunks/export-CTUlibzr.js.map +0 -1
  133. package/dist/chunks/exporter-2UNIxzcu.js.map +0 -1
  134. package/dist/chunks/exporter-B_YFZ4ix.js.map +0 -1
  135. package/dist/chunks/exporter-Bn4jdYfd.js.map +0 -1
  136. package/dist/chunks/exporter-flsHFoER.js.map +0 -1
  137. package/dist/chunks/importer-BD3mi2QH.js.map +0 -1
  138. package/dist/chunks/importer-Bgb9sgZZ.js.map +0 -1
  139. package/dist/chunks/importer-DqMtyYLX.js.map +0 -1
  140. package/dist/chunks/importer-Dwqepe_B.js.map +0 -1
  141. package/dist/chunks/importer-oIUx9u_g.js.map +0 -1
package/dist/cx.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C, a, b, c, d } from "./chunks/importer-BD3mi2QH.js";
1
+ import { C, a, b, c, d } from "./chunks/importer-DvFznt5-.js";
2
2
  export {
3
3
  C as CX_CAPABILITIES,
4
4
  a as CX_ISSUE,
package/dist/cx2.js CHANGED
@@ -1,5 +1,5 @@
1
- import { C, a, c } from "./chunks/exporter-flsHFoER.js";
2
- import { C as C2, c as c2 } from "./chunks/importer-Dwqepe_B.js";
1
+ import { C, a, c } from "./chunks/exporter-BqKs1Q12.js";
2
+ import { C as C2, c as c2 } from "./chunks/importer-BfJ1jnNr.js";
3
3
  export {
4
4
  C as CX2_CAPABILITIES,
5
5
  C2 as CX2_ISSUE,
package/dist/cys.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C, a, b, c, d } from "./chunks/importer-CEuUmyPe.js";
1
+ import { C, a, b, c, d } from "./chunks/importer-CSt-gaYE.js";
2
2
  export {
3
3
  C as CYS_CAPABILITIES,
4
4
  a as CYS_ISSUE,
package/dist/dot.js CHANGED
@@ -1,4 +1,4 @@
1
- import { D, a, d, b } from "./chunks/importer-oIUx9u_g.js";
1
+ import { D, a, d, b } from "./chunks/importer--tQQsY4W.js";
2
2
  export {
3
3
  D as DOT_ISSUE,
4
4
  a as DOT_LOSS,
package/dist/gexf.js CHANGED
@@ -1,6 +1,6 @@
1
- import { bF as TIME_TEXT_ROLE, bG as TIME_TEXT_SUFFIX, al as resolveImportOptions, a8 as ImportReportBuilder, ao as reportSinkOptions, an as reportUnusedOptions, a4 as textChunks, E as EMPTY_INPUT_CODE, X as XML_SYNTAX_CODE, am as throwIfAborted, ar as IdCoercer, aq as DirectionResolver, f as STRAY_TEXT_CODE, N as NO_GRAPH_CODE, h as UNKNOWN_XML_ATTRIBUTE_CODE, l as MULTIPLE_GRAPHS_CODE, j as COUNT_MISMATCH_CODE, k as COUNT_HINT_CODE, o as DUPLICATE_ATTRIBUTE_CODE, aJ as isWeightField, bH as declareAttribute, a1 as declareResolved, t as MISSING_ID_CODE, n as DUPLICATE_NODE_CODE, q as UNKNOWN_PARENT_CODE, ai as PARENT_CYCLE_CODE, s as MISSING_ENDPOINT_CODE, m as DUPLICATE_EDGE_ID_CODE, aK as parseWeightText, bI as overflowsToInfinity, P as PRECISION_CODE, bJ as parseDeclaredTemporal, br as declareCompanion, bK as parseDeclaredValue, bL as losesPrecision, bM as parseTimeText, a3 as BAD_VALUE_CODE, bN as splitListText, g as UNKNOWN_ELEMENT_CODE, I as ID_MERGED_CODE, bO as timeTextCompanion, bP as parseDecimalText, c as capabilities, L as LOSS, aE as sanitizeIds, p as pairFolding, e as explicitWeights, r as resolveExportOptions, a as checkCapabilities, bQ as formatTimeValue, aa as formatF32, ab as formatF64, bR as mapDeclaredType, bS as joinListText, bT as formatTemporal, aG as formatInteger, b as plural, $ as agree, bx as isCanonicalIntegerText, M as MIXED_DIRECTION_CODE, D as DIRECTION_FORCED_CODE, d as DIRECTION_REFUSED_CODE, S as SINK_OPTION_CODE, O as OPTION_IGNORED_CODE, R as ROLE_TAKEN_CODE, C as COLUMN_RENAMED_CODE, aZ as BAD_OPTIONS_CODE, B as BAD_DEFAULT_CODE, U as UNKNOWN_ATTR_TYPE_CODE, v as ENCODING_CONFLICT_CODE, w as UNKNOWN_ENCODING_CODE, x as ENCODING_FALLBACK_CODE, y as INVALID_ENCODING_CODE, z as INVALID_UTF8_CODE, A as COLUMN_TYPE_CODE, F as ELEMENT_ISSUE, G as INPUT_ISSUE } from "./chunks/export-CTUlibzr.js";
1
+ import { bF as TIME_TEXT_ROLE, bG as TIME_TEXT_SUFFIX, al as resolveImportOptions, a8 as ImportReportBuilder, ao as reportSinkOptions, an as reportUnusedOptions, a4 as textChunks, E as EMPTY_INPUT_CODE, X as XML_SYNTAX_CODE, am as throwIfAborted, ar as IdCoercer, aq as DirectionResolver, f as STRAY_TEXT_CODE, N as NO_GRAPH_CODE, h as UNKNOWN_XML_ATTRIBUTE_CODE, l as MULTIPLE_GRAPHS_CODE, j as COUNT_MISMATCH_CODE, k as COUNT_HINT_CODE, o as DUPLICATE_ATTRIBUTE_CODE, aJ as isWeightField, bH as declareAttribute, a1 as declareResolved, t as MISSING_ID_CODE, n as DUPLICATE_NODE_CODE, q as UNKNOWN_PARENT_CODE, ai as PARENT_CYCLE_CODE, s as MISSING_ENDPOINT_CODE, m as DUPLICATE_EDGE_ID_CODE, aK as parseWeightText, bI as overflowsToInfinity, P as PRECISION_CODE, bJ as parseDeclaredTemporal, br as declareCompanion, bK as parseDeclaredValue, bL as losesPrecision, bM as parseTimeText, a3 as BAD_VALUE_CODE, bN as splitListText, g as UNKNOWN_ELEMENT_CODE, I as ID_MERGED_CODE, bO as timeTextCompanion, bP as parseDecimalText, c as capabilities, L as LOSS, aE as sanitizeIds, p as pairFolding, e as explicitWeights, r as resolveExportOptions, a as checkCapabilities, bQ as formatTimeValue, aa as formatF32, ab as formatF64, bR as mapDeclaredType, bS as joinListText, bT as formatTemporal, aG as formatInteger, b as plural, $ as agree, bx as isCanonicalIntegerText, M as MIXED_DIRECTION_CODE, D as DIRECTION_FORCED_CODE, d as DIRECTION_REFUSED_CODE, S as SINK_OPTION_CODE, O as OPTION_IGNORED_CODE, R as ROLE_TAKEN_CODE, C as COLUMN_RENAMED_CODE, aZ as BAD_OPTIONS_CODE, B as BAD_DEFAULT_CODE, U as UNKNOWN_ATTR_TYPE_CODE, v as ENCODING_CONFLICT_CODE, w as UNKNOWN_ENCODING_CODE, x as ENCODING_FALLBACK_CODE, y as INVALID_ENCODING_CODE, z as INVALID_UTF8_CODE, A as COLUMN_TYPE_CODE, F as ELEMENT_ISSUE, G as INPUT_ISSUE } from "./chunks/export-B-aVCwyG.js";
2
2
  import { GraphFormatError, INVALID_INDEX, MAX_COUNT } from "@graphty/graph-format";
3
- import { t as tokenizeXml, f as xmlDeclaredEncoding, g as XmlEmptyInputError, X as XmlSyntaxError, s as sniffXmlText, l as localName, j as isWhitespace, x as xmlIllegalTextNotes, a as escapeXmlText, e as escapeXmlAttribute } from "./chunks/escape-BRcyzD77.js";
3
+ import { t as tokenizeXml, f as xmlDeclaredEncoding, g as XmlEmptyInputError, X as XmlSyntaxError, s as sniffXmlText, l as localName, j as isWhitespace, x as xmlIllegalTextNotes, a as escapeXmlText, e as escapeXmlAttribute } from "./chunks/escape-BpYMQZVa.js";
4
4
  import { j as joinText, e as encodeChunks } from "./chunks/writer-DxjgHwSe.js";
5
5
  const GEXF_FORMAT = "gexf";
6
6
  const GEXF_NAMESPACES = {
package/dist/gml.js CHANGED
@@ -1,8 +1,8 @@
1
- import { ak as SYNTAX_CODE, b as plural, a as checkCapabilities, L as LOSS, p as pairFolding, $ as agree, c as capabilities, r as resolveExportOptions, ac as DictHeuristic, aG as formatInteger, bv as formatGmlReal, aE as sanitizeIds, bD as countMixedEdges, e as explicitWeights, bU as DICT_SAMPLE_ROWS, R as ROLE_TAKEN_CODE$1, aj as WIDENED_CODE$1, P as PRECISION_CODE$1, n as DUPLICATE_NODE_CODE$1, s as MISSING_ENDPOINT_CODE$1, t as MISSING_ID_CODE$1, l as MULTIPLE_GRAPHS_CODE, N as NO_GRAPH_CODE$1, al as resolveImportOptions, a8 as ImportReportBuilder, an as reportUnusedOptions, bB as readText, am as throwIfAborted, ao as reportSinkOptions, ap as graphChosen, ar as IdCoercer, aq as DirectionResolver, a0 as uniqueColumnName, C as COLUMN_RENAMED_CODE, as as weightFromValue, bV as reportWeightPrecision, aK as parseWeightText, a1 as declareResolved, M as MIXED_DIRECTION_CODE, D as DIRECTION_FORCED_CODE, d as DIRECTION_REFUSED_CODE, S as SINK_OPTION_CODE, O as OPTION_IGNORED_CODE, I as ID_MERGED_CODE, ae as AMBIGUOUS_GRAPH_NAME_CODE, af as GRAPH_NOT_FOUND_CODE, w as UNKNOWN_ENCODING_CODE, x as ENCODING_FALLBACK_CODE, y as INVALID_ENCODING_CODE, z as INVALID_UTF8_CODE, F as ELEMENT_ISSUE, G as INPUT_ISSUE } from "./chunks/export-CTUlibzr.js";
1
+ import { ak as SYNTAX_CODE, b as plural, a as checkCapabilities, L as LOSS, p as pairFolding, $ as agree, c as capabilities, r as resolveExportOptions, ac as DictHeuristic, aG as formatInteger, bv as formatGmlReal, aE as sanitizeIds, bD as countMixedEdges, e as explicitWeights, bU as DICT_SAMPLE_ROWS, R as ROLE_TAKEN_CODE$1, aj as WIDENED_CODE$1, P as PRECISION_CODE$1, n as DUPLICATE_NODE_CODE$1, s as MISSING_ENDPOINT_CODE$1, t as MISSING_ID_CODE$1, l as MULTIPLE_GRAPHS_CODE, N as NO_GRAPH_CODE$1, al as resolveImportOptions, a8 as ImportReportBuilder, an as reportUnusedOptions, bB as readText, am as throwIfAborted, ao as reportSinkOptions, ap as graphChosen, ar as IdCoercer, aq as DirectionResolver, a0 as uniqueColumnName, C as COLUMN_RENAMED_CODE, as as weightFromValue, bV as reportWeightPrecision, aK as parseWeightText, a1 as declareResolved, M as MIXED_DIRECTION_CODE, D as DIRECTION_FORCED_CODE, d as DIRECTION_REFUSED_CODE, S as SINK_OPTION_CODE, O as OPTION_IGNORED_CODE, I as ID_MERGED_CODE, ae as AMBIGUOUS_GRAPH_NAME_CODE, af as GRAPH_NOT_FOUND_CODE, w as UNKNOWN_ENCODING_CODE, x as ENCODING_FALLBACK_CODE, y as INVALID_ENCODING_CODE, z as INVALID_UTF8_CODE, F as ELEMENT_ISSUE, G as INPUT_ISSUE } from "./chunks/export-B-aVCwyG.js";
2
2
  import { GraphFormatError, INVALID_INDEX } from "@graphty/graph-format";
3
- import { k as decodeGmlString, m as quoteGmlString } from "./chunks/escape-BRcyzD77.js";
3
+ import { k as decodeGmlString, m as quoteGmlString } from "./chunks/escape-BpYMQZVa.js";
4
4
  import { j as joinText, e as encodeChunks } from "./chunks/writer-DxjgHwSe.js";
5
- import { i as importChosenGraph } from "./chunks/choose-CsO24U-5.js";
5
+ import { i as importChosenGraph } from "./chunks/choose-CS3fvGT1.js";
6
6
  const TOKEN_WORD = 0;
7
7
  const TOKEN_INT = 1;
8
8
  const TOKEN_REAL = 2;
@@ -88,7 +88,7 @@ class GmlTokens {
88
88
  if (text.includes("\r")) {
89
89
  text = text.replaceAll(/\r\n?/g, "\n");
90
90
  }
91
- if (text.indexOf("&") < 0) {
91
+ if (!text.includes("&")) {
92
92
  return text;
93
93
  }
94
94
  const report = this.onUnknownEntity;
@@ -1493,6 +1493,7 @@ class GmlImport {
1493
1493
  this.report = report;
1494
1494
  this.options = options;
1495
1495
  this.positions = format?.positions ?? true;
1496
+ this.keepPositionSource = format?.keepPositionSource ?? false;
1496
1497
  this.dictionaries = format?.dictionaries ?? true;
1497
1498
  this.coercer = new IdCoercer(options.ids);
1498
1499
  }
@@ -1759,7 +1760,7 @@ class GmlImport {
1759
1760
  }
1760
1761
  const positioned = x && y;
1761
1762
  entry.position ||= positioned;
1762
- entry.rest ||= positioned ? other : true;
1763
+ entry.rest ||= positioned ? other || this.keepPositionSource : true;
1763
1764
  }
1764
1765
  // ============================================================ pass 2: the push
1765
1766
  /** Declare what the schema needs, set the header and push every element. */
@@ -2489,7 +2490,8 @@ class GmlImport {
2489
2490
  const positionPlan = plan.position;
2490
2491
  let rest = first;
2491
2492
  if (isRecord(first) && positionPlan !== null) {
2492
- rest = this.writePosition(positionPlan, index, first, where);
2493
+ const left = this.writePosition(positionPlan, index, this.keepPositionSource ? { ...first } : first, where);
2494
+ rest = this.keepPositionSource ? first : left;
2493
2495
  } else if (!isRecord(first)) {
2494
2496
  this.graphicsWarning("scalar", `node ${where.element}'s graphics is not a record`, where);
2495
2497
  }
@@ -2800,7 +2802,7 @@ function sniffGml(head) {
2800
2802
  }
2801
2803
  const gmlImporter = Object.freeze({
2802
2804
  format: "gml",
2803
- options: Object.freeze(["dictionaries", "positions"]),
2805
+ options: Object.freeze(["dictionaries", "keepPositionSource", "positions"]),
2804
2806
  extensions: Object.freeze([".gml"]),
2805
2807
  mimeTypes: Object.freeze(["text/x-gml", "text/plain"]),
2806
2808
  sniff: sniffGml,