@graphty/graph-io 0.3.24 → 0.3.26

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 (581) hide show
  1. package/README.md +49 -414
  2. package/dist/chunks/children-CL3Cy0ez.js.map +1 -1
  3. package/dist/chunks/choose-BbJI55dx.js +56 -0
  4. package/dist/chunks/choose-BbJI55dx.js.map +1 -0
  5. package/dist/chunks/constants-BCsFsMj4.js +231 -0
  6. package/dist/chunks/constants-BCsFsMj4.js.map +1 -0
  7. package/dist/chunks/{escape-B-tkk_Cl.js → escape-D0g6NNUy.js} +382 -92
  8. package/dist/chunks/escape-D0g6NNUy.js.map +1 -0
  9. package/dist/chunks/export-BTI4yQgy.js +4333 -0
  10. package/dist/chunks/export-BTI4yQgy.js.map +1 -0
  11. package/dist/chunks/exporter-BMqk5oxW.js +3465 -0
  12. package/dist/chunks/exporter-BMqk5oxW.js.map +1 -0
  13. package/dist/chunks/{importer-eUREhBGj.js → exporter-Cra2GYcN.js} +4969 -3201
  14. package/dist/chunks/exporter-Cra2GYcN.js.map +1 -0
  15. package/dist/chunks/{exporter-BGrsWamJ.js → exporter-Dxh231ZF.js} +38 -229
  16. package/dist/chunks/exporter-Dxh231ZF.js.map +1 -0
  17. package/dist/chunks/{exporter-DIeGJXAZ.js → exporter-tne475KK.js} +22 -20
  18. package/dist/chunks/exporter-tne475KK.js.map +1 -0
  19. package/dist/chunks/importer-90YWhJoF.js +2811 -0
  20. package/dist/chunks/importer-90YWhJoF.js.map +1 -0
  21. package/dist/chunks/{importer-D_e7e7LX.js → importer-Bcl1d4xH.js} +398 -145
  22. package/dist/chunks/importer-Bcl1d4xH.js.map +1 -0
  23. package/dist/chunks/{importer-BWY2FFc5.js → importer-BfIsp1f9.js} +255 -77
  24. package/dist/chunks/importer-BfIsp1f9.js.map +1 -0
  25. package/dist/chunks/{importer-zGLo8Dg_.js → importer-C_TEA1zJ.js} +484 -157
  26. package/dist/chunks/importer-C_TEA1zJ.js.map +1 -0
  27. package/dist/chunks/{importer-DET1tg6s.js → importer-DCjOvO7U.js} +1687 -310
  28. package/dist/chunks/importer-DCjOvO7U.js.map +1 -0
  29. package/dist/chunks/{importer-vi3bSdtw.js → importer-DfVu6j59.js} +509 -76
  30. package/dist/chunks/importer-DfVu6j59.js.map +1 -0
  31. package/dist/chunks/{importer-DIrbbnAf.js → importer-Dku_VAIY.js} +585 -226
  32. package/dist/chunks/importer-Dku_VAIY.js.map +1 -0
  33. package/dist/chunks/json-elements-3tnyt5uZ.js +1225 -0
  34. package/dist/chunks/json-elements-3tnyt5uZ.js.map +1 -0
  35. package/dist/chunks/ontology-export-B9Tcf37D.js +357 -0
  36. package/dist/chunks/ontology-export-B9Tcf37D.js.map +1 -0
  37. package/dist/chunks/{records-dbRkxwaq.js → records-CQXT__mY.js} +298 -114
  38. package/dist/chunks/records-CQXT__mY.js.map +1 -0
  39. package/dist/chunks/{text-Dr0Ifpag.js → text-DmcUs5_Q.js} +29 -11
  40. package/dist/chunks/text-DmcUs5_Q.js.map +1 -0
  41. package/dist/chunks/{writer-C7flM-Ih.js → writer-DxjgHwSe.js} +19 -1
  42. package/dist/chunks/writer-DxjgHwSe.js.map +1 -0
  43. package/dist/csv.js +951 -261
  44. package/dist/csv.js.map +1 -1
  45. package/dist/cx.js +6 -3
  46. package/dist/cx2.js +2 -2
  47. package/dist/cys.js +6 -3
  48. package/dist/dot.js +1 -1
  49. package/dist/gexf.js +554 -122
  50. package/dist/gexf.js.map +1 -1
  51. package/dist/gml.js +342 -85
  52. package/dist/gml.js.map +1 -1
  53. package/dist/graph-io.js +1105 -213
  54. package/dist/graph-io.js.map +1 -1
  55. package/dist/graphml.js +3 -2
  56. package/dist/graphml.js.map +1 -1
  57. package/dist/json.js +3 -2
  58. package/dist/neo4j.js +564 -157
  59. package/dist/neo4j.js.map +1 -1
  60. package/dist/obo.js +6 -3
  61. package/dist/pajek.js +1 -1
  62. package/dist/src/children.d.ts +18 -6
  63. package/dist/src/children.d.ts.map +1 -1
  64. package/dist/src/children.js +6 -3
  65. package/dist/src/children.js.map +1 -1
  66. package/dist/src/common/attributes.d.ts +29 -11
  67. package/dist/src/common/attributes.d.ts.map +1 -1
  68. package/dist/src/common/attributes.js +25 -7
  69. package/dist/src/common/attributes.js.map +1 -1
  70. package/dist/src/common/cell-budget.d.ts +9 -2
  71. package/dist/src/common/cell-budget.d.ts.map +1 -1
  72. package/dist/src/common/cell-budget.js +11 -3
  73. package/dist/src/common/cell-budget.js.map +1 -1
  74. package/dist/src/common/choose.d.ts +19 -0
  75. package/dist/src/common/choose.d.ts.map +1 -0
  76. package/dist/src/common/choose.js +72 -0
  77. package/dist/src/common/choose.js.map +1 -0
  78. package/dist/src/common/codes.d.ts +456 -66
  79. package/dist/src/common/codes.d.ts.map +1 -1
  80. package/dist/src/common/codes.js +458 -66
  81. package/dist/src/common/codes.js.map +1 -1
  82. package/dist/src/common/compare.d.ts +81 -0
  83. package/dist/src/common/compare.d.ts.map +1 -0
  84. package/dist/src/common/compare.js +394 -0
  85. package/dist/src/common/compare.js.map +1 -0
  86. package/dist/src/common/cx-export.d.ts +123 -0
  87. package/dist/src/common/cx-export.d.ts.map +1 -0
  88. package/dist/src/common/cx-export.js +334 -0
  89. package/dist/src/common/cx-export.js.map +1 -0
  90. package/dist/src/common/declared-types.d.ts +22 -2
  91. package/dist/src/common/declared-types.d.ts.map +1 -1
  92. package/dist/src/common/declared-types.js +19 -1
  93. package/dist/src/common/declared-types.js.map +1 -1
  94. package/dist/src/common/direction.d.ts +74 -50
  95. package/dist/src/common/direction.d.ts.map +1 -1
  96. package/dist/src/common/direction.js +47 -27
  97. package/dist/src/common/direction.js.map +1 -1
  98. package/dist/src/common/escape.d.ts +21 -9
  99. package/dist/src/common/escape.d.ts.map +1 -1
  100. package/dist/src/common/escape.js +33 -17
  101. package/dist/src/common/escape.js.map +1 -1
  102. package/dist/src/common/export.d.ts +144 -32
  103. package/dist/src/common/export.d.ts.map +1 -1
  104. package/dist/src/common/export.js +216 -42
  105. package/dist/src/common/export.js.map +1 -1
  106. package/dist/src/common/format.d.ts +23 -1
  107. package/dist/src/common/format.d.ts.map +1 -1
  108. package/dist/src/common/format.js +26 -1
  109. package/dist/src/common/format.js.map +1 -1
  110. package/dist/src/common/ids.d.ts +9 -2
  111. package/dist/src/common/ids.d.ts.map +1 -1
  112. package/dist/src/common/ids.js +6 -2
  113. package/dist/src/common/ids.js.map +1 -1
  114. package/dist/src/common/input.d.ts +122 -28
  115. package/dist/src/common/input.d.ts.map +1 -1
  116. package/dist/src/common/input.js +890 -124
  117. package/dist/src/common/input.js.map +1 -1
  118. package/dist/src/common/json-elements.d.ts +144 -20
  119. package/dist/src/common/json-elements.d.ts.map +1 -1
  120. package/dist/src/common/json-elements.js +868 -188
  121. package/dist/src/common/json-elements.js.map +1 -1
  122. package/dist/src/common/line-format.d.ts +90 -0
  123. package/dist/src/common/line-format.d.ts.map +1 -0
  124. package/dist/src/common/line-format.js +185 -0
  125. package/dist/src/common/line-format.js.map +1 -0
  126. package/dist/src/common/lists.d.ts +6 -1
  127. package/dist/src/common/lists.d.ts.map +1 -1
  128. package/dist/src/common/lists.js +2 -0
  129. package/dist/src/common/lists.js.map +1 -1
  130. package/dist/src/common/ontology-export.d.ts +167 -0
  131. package/dist/src/common/ontology-export.d.ts.map +1 -0
  132. package/dist/src/common/ontology-export.js +359 -0
  133. package/dist/src/common/ontology-export.js.map +1 -0
  134. package/dist/src/common/ontology.d.ts +25 -3
  135. package/dist/src/common/ontology.d.ts.map +1 -1
  136. package/dist/src/common/ontology.js +30 -9
  137. package/dist/src/common/ontology.js.map +1 -1
  138. package/dist/src/common/options.d.ts +62 -12
  139. package/dist/src/common/options.d.ts.map +1 -1
  140. package/dist/src/common/options.js +89 -11
  141. package/dist/src/common/options.js.map +1 -1
  142. package/dist/src/common/plural.d.ts +31 -0
  143. package/dist/src/common/plural.d.ts.map +1 -0
  144. package/dist/src/common/plural.js +46 -0
  145. package/dist/src/common/plural.js.map +1 -0
  146. package/dist/src/common/report.d.ts +72 -14
  147. package/dist/src/common/report.d.ts.map +1 -1
  148. package/dist/src/common/report.js +146 -22
  149. package/dist/src/common/report.js.map +1 -1
  150. package/dist/src/common/temporal.d.ts +22 -5
  151. package/dist/src/common/temporal.d.ts.map +1 -1
  152. package/dist/src/common/temporal.js +13 -2
  153. package/dist/src/common/temporal.js.map +1 -1
  154. package/dist/src/common/text.d.ts +39 -23
  155. package/dist/src/common/text.d.ts.map +1 -1
  156. package/dist/src/common/text.js +51 -21
  157. package/dist/src/common/text.js.map +1 -1
  158. package/dist/src/common/weights.d.ts +37 -4
  159. package/dist/src/common/weights.d.ts.map +1 -1
  160. package/dist/src/common/weights.js +61 -2
  161. package/dist/src/common/weights.js.map +1 -1
  162. package/dist/src/common/writer.d.ts +19 -3
  163. package/dist/src/common/writer.d.ts.map +1 -1
  164. package/dist/src/common/writer.js +30 -2
  165. package/dist/src/common/writer.js.map +1 -1
  166. package/dist/src/common/xml.d.ts +125 -9
  167. package/dist/src/common/xml.d.ts.map +1 -1
  168. package/dist/src/common/xml.js +400 -83
  169. package/dist/src/common/xml.js.map +1 -1
  170. package/dist/src/common/zip.d.ts +44 -4
  171. package/dist/src/common/zip.d.ts.map +1 -1
  172. package/dist/src/common/zip.js +134 -5
  173. package/dist/src/common/zip.js.map +1 -1
  174. package/dist/src/formats/csv/exporter.d.ts +80 -24
  175. package/dist/src/formats/csv/exporter.d.ts.map +1 -1
  176. package/dist/src/formats/csv/exporter.js +145 -32
  177. package/dist/src/formats/csv/exporter.js.map +1 -1
  178. package/dist/src/formats/csv/header.d.ts +38 -9
  179. package/dist/src/formats/csv/header.d.ts.map +1 -1
  180. package/dist/src/formats/csv/header.js +46 -10
  181. package/dist/src/formats/csv/header.js.map +1 -1
  182. package/dist/src/formats/csv/importer.d.ts +187 -37
  183. package/dist/src/formats/csv/importer.d.ts.map +1 -1
  184. package/dist/src/formats/csv/importer.js +835 -204
  185. package/dist/src/formats/csv/importer.js.map +1 -1
  186. package/dist/src/formats/csv/index.d.ts +100 -19
  187. package/dist/src/formats/csv/index.d.ts.map +1 -1
  188. package/dist/src/formats/csv/index.js +94 -21
  189. package/dist/src/formats/csv/index.js.map +1 -1
  190. package/dist/src/formats/csv/records.d.ts +95 -10
  191. package/dist/src/formats/csv/records.d.ts.map +1 -1
  192. package/dist/src/formats/csv/records.js +333 -122
  193. package/dist/src/formats/csv/records.js.map +1 -1
  194. package/dist/src/formats/csv/values.d.ts +1 -0
  195. package/dist/src/formats/csv/values.d.ts.map +1 -1
  196. package/dist/src/formats/csv/values.js +1 -0
  197. package/dist/src/formats/csv/values.js.map +1 -1
  198. package/dist/src/formats/cx/exporter.d.ts +102 -0
  199. package/dist/src/formats/cx/exporter.d.ts.map +1 -0
  200. package/dist/src/formats/cx/exporter.js +1217 -0
  201. package/dist/src/formats/cx/exporter.js.map +1 -0
  202. package/dist/src/formats/cx/importer.d.ts +79 -32
  203. package/dist/src/formats/cx/importer.d.ts.map +1 -1
  204. package/dist/src/formats/cx/importer.js +680 -285
  205. package/dist/src/formats/cx/importer.js.map +1 -1
  206. package/dist/src/formats/cx/index.d.ts +4 -3
  207. package/dist/src/formats/cx/index.d.ts.map +1 -1
  208. package/dist/src/formats/cx/index.js +4 -3
  209. package/dist/src/formats/cx/index.js.map +1 -1
  210. package/dist/src/formats/cx2/exporter.d.ts +29 -11
  211. package/dist/src/formats/cx2/exporter.d.ts.map +1 -1
  212. package/dist/src/formats/cx2/exporter.js +39 -268
  213. package/dist/src/formats/cx2/exporter.js.map +1 -1
  214. package/dist/src/formats/cx2/importer.d.ts +78 -28
  215. package/dist/src/formats/cx2/importer.d.ts.map +1 -1
  216. package/dist/src/formats/cx2/importer.js +226 -79
  217. package/dist/src/formats/cx2/importer.js.map +1 -1
  218. package/dist/src/formats/cx2/index.d.ts +2 -1
  219. package/dist/src/formats/cx2/index.d.ts.map +1 -1
  220. package/dist/src/formats/cx2/index.js +2 -1
  221. package/dist/src/formats/cx2/index.js.map +1 -1
  222. package/dist/src/formats/cys/constants.d.ts +66 -17
  223. package/dist/src/formats/cys/constants.d.ts.map +1 -1
  224. package/dist/src/formats/cys/constants.js +59 -18
  225. package/dist/src/formats/cys/constants.js.map +1 -1
  226. package/dist/src/formats/cys/exporter.d.ts +118 -0
  227. package/dist/src/formats/cys/exporter.d.ts.map +1 -0
  228. package/dist/src/formats/cys/exporter.js +1072 -0
  229. package/dist/src/formats/cys/exporter.js.map +1 -0
  230. package/dist/src/formats/cys/importer.d.ts +22 -8
  231. package/dist/src/formats/cys/importer.d.ts.map +1 -1
  232. package/dist/src/formats/cys/importer.js +510 -149
  233. package/dist/src/formats/cys/importer.js.map +1 -1
  234. package/dist/src/formats/cys/index.d.ts +4 -2
  235. package/dist/src/formats/cys/index.d.ts.map +1 -1
  236. package/dist/src/formats/cys/index.js +4 -2
  237. package/dist/src/formats/cys/index.js.map +1 -1
  238. package/dist/src/formats/cys/session.d.ts +46 -7
  239. package/dist/src/formats/cys/session.d.ts.map +1 -1
  240. package/dist/src/formats/cys/session.js +98 -24
  241. package/dist/src/formats/cys/session.js.map +1 -1
  242. package/dist/src/formats/cys/tables.d.ts +9 -2
  243. package/dist/src/formats/cys/tables.d.ts.map +1 -1
  244. package/dist/src/formats/cys/tables.js +29 -7
  245. package/dist/src/formats/cys/tables.js.map +1 -1
  246. package/dist/src/formats/dot/exporter.d.ts +42 -14
  247. package/dist/src/formats/dot/exporter.d.ts.map +1 -1
  248. package/dist/src/formats/dot/exporter.js +56 -29
  249. package/dist/src/formats/dot/exporter.js.map +1 -1
  250. package/dist/src/formats/dot/importer.d.ts +91 -29
  251. package/dist/src/formats/dot/importer.d.ts.map +1 -1
  252. package/dist/src/formats/dot/importer.js +190 -39
  253. package/dist/src/formats/dot/importer.js.map +1 -1
  254. package/dist/src/formats/dot/index.d.ts +2 -1
  255. package/dist/src/formats/dot/index.d.ts.map +1 -1
  256. package/dist/src/formats/dot/index.js +2 -1
  257. package/dist/src/formats/dot/index.js.map +1 -1
  258. package/dist/src/formats/dot/names.d.ts +44 -11
  259. package/dist/src/formats/dot/names.d.ts.map +1 -1
  260. package/dist/src/formats/dot/names.js +44 -11
  261. package/dist/src/formats/dot/names.js.map +1 -1
  262. package/dist/src/formats/dot/tokenizer.d.ts +9 -2
  263. package/dist/src/formats/dot/tokenizer.d.ts.map +1 -1
  264. package/dist/src/formats/dot/tokenizer.js +20 -5
  265. package/dist/src/formats/dot/tokenizer.js.map +1 -1
  266. package/dist/src/formats/gexf/exporter.d.ts +46 -15
  267. package/dist/src/formats/gexf/exporter.d.ts.map +1 -1
  268. package/dist/src/formats/gexf/exporter.js +45 -15
  269. package/dist/src/formats/gexf/exporter.js.map +1 -1
  270. package/dist/src/formats/gexf/importer.d.ts +87 -23
  271. package/dist/src/formats/gexf/importer.d.ts.map +1 -1
  272. package/dist/src/formats/gexf/importer.js +471 -90
  273. package/dist/src/formats/gexf/importer.js.map +1 -1
  274. package/dist/src/formats/gexf/index.d.ts +84 -21
  275. package/dist/src/formats/gexf/index.d.ts.map +1 -1
  276. package/dist/src/formats/gexf/index.js +80 -23
  277. package/dist/src/formats/gexf/index.js.map +1 -1
  278. package/dist/src/formats/gexf/schema.d.ts +67 -15
  279. package/dist/src/formats/gexf/schema.d.ts.map +1 -1
  280. package/dist/src/formats/gexf/schema.js +59 -13
  281. package/dist/src/formats/gexf/schema.js.map +1 -1
  282. package/dist/src/formats/gml/exporter.d.ts +69 -21
  283. package/dist/src/formats/gml/exporter.d.ts.map +1 -1
  284. package/dist/src/formats/gml/exporter.js +74 -29
  285. package/dist/src/formats/gml/exporter.js.map +1 -1
  286. package/dist/src/formats/gml/importer.d.ts +116 -25
  287. package/dist/src/formats/gml/importer.d.ts.map +1 -1
  288. package/dist/src/formats/gml/importer.js +290 -61
  289. package/dist/src/formats/gml/importer.js.map +1 -1
  290. package/dist/src/formats/gml/index.d.ts +87 -24
  291. package/dist/src/formats/gml/index.d.ts.map +1 -1
  292. package/dist/src/formats/gml/index.js +79 -26
  293. package/dist/src/formats/gml/index.js.map +1 -1
  294. package/dist/src/formats/gml/syntax.d.ts +67 -18
  295. package/dist/src/formats/gml/syntax.d.ts.map +1 -1
  296. package/dist/src/formats/gml/syntax.js +108 -26
  297. package/dist/src/formats/gml/syntax.js.map +1 -1
  298. package/dist/src/formats/graphml/constants.d.ts +174 -44
  299. package/dist/src/formats/graphml/constants.d.ts.map +1 -1
  300. package/dist/src/formats/graphml/constants.js +165 -44
  301. package/dist/src/formats/graphml/constants.js.map +1 -1
  302. package/dist/src/formats/graphml/exporter.d.ts +17 -9
  303. package/dist/src/formats/graphml/exporter.d.ts.map +1 -1
  304. package/dist/src/formats/graphml/exporter.js +33 -12
  305. package/dist/src/formats/graphml/exporter.js.map +1 -1
  306. package/dist/src/formats/graphml/importer.d.ts +19 -7
  307. package/dist/src/formats/graphml/importer.d.ts.map +1 -1
  308. package/dist/src/formats/graphml/importer.js +466 -39
  309. package/dist/src/formats/graphml/importer.js.map +1 -1
  310. package/dist/src/formats/graphml/index.d.ts +2 -1
  311. package/dist/src/formats/graphml/index.d.ts.map +1 -1
  312. package/dist/src/formats/graphml/index.js +2 -1
  313. package/dist/src/formats/graphml/index.js.map +1 -1
  314. package/dist/src/formats/graphml/tree.d.ts +6 -2
  315. package/dist/src/formats/graphml/tree.d.ts.map +1 -1
  316. package/dist/src/formats/graphml/tree.js +6 -2
  317. package/dist/src/formats/graphml/tree.js.map +1 -1
  318. package/dist/src/formats/graphml/yfiles.d.ts +8 -3
  319. package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
  320. package/dist/src/formats/graphml/yfiles.js +36 -15
  321. package/dist/src/formats/graphml/yfiles.js.map +1 -1
  322. package/dist/src/formats/json/dialect.d.ts +88 -24
  323. package/dist/src/formats/json/dialect.d.ts.map +1 -1
  324. package/dist/src/formats/json/dialect.js +109 -19
  325. package/dist/src/formats/json/dialect.js.map +1 -1
  326. package/dist/src/formats/json/exporter.d.ts +134 -22
  327. package/dist/src/formats/json/exporter.d.ts.map +1 -1
  328. package/dist/src/formats/json/exporter.js +135 -54
  329. package/dist/src/formats/json/exporter.js.map +1 -1
  330. package/dist/src/formats/json/importer.d.ts +173 -52
  331. package/dist/src/formats/json/importer.d.ts.map +1 -1
  332. package/dist/src/formats/json/importer.js +899 -220
  333. package/dist/src/formats/json/importer.js.map +1 -1
  334. package/dist/src/formats/json/index.d.ts +3 -2
  335. package/dist/src/formats/json/index.d.ts.map +1 -1
  336. package/dist/src/formats/json/index.js +3 -2
  337. package/dist/src/formats/json/index.js.map +1 -1
  338. package/dist/src/formats/json/obographs-export.d.ts +68 -0
  339. package/dist/src/formats/json/obographs-export.d.ts.map +1 -0
  340. package/dist/src/formats/json/obographs-export.js +941 -0
  341. package/dist/src/formats/json/obographs-export.js.map +1 -0
  342. package/dist/src/formats/json/obographs.d.ts +26 -0
  343. package/dist/src/formats/json/obographs.d.ts.map +1 -1
  344. package/dist/src/formats/json/obographs.js +297 -80
  345. package/dist/src/formats/json/obographs.js.map +1 -1
  346. package/dist/src/formats/neo4j/exporter.d.ts +109 -21
  347. package/dist/src/formats/neo4j/exporter.d.ts.map +1 -1
  348. package/dist/src/formats/neo4j/exporter.js +238 -85
  349. package/dist/src/formats/neo4j/exporter.js.map +1 -1
  350. package/dist/src/formats/neo4j/header.d.ts +17 -4
  351. package/dist/src/formats/neo4j/header.d.ts.map +1 -1
  352. package/dist/src/formats/neo4j/header.js +36 -4
  353. package/dist/src/formats/neo4j/header.js.map +1 -1
  354. package/dist/src/formats/neo4j/importer.d.ts +107 -27
  355. package/dist/src/formats/neo4j/importer.d.ts.map +1 -1
  356. package/dist/src/formats/neo4j/importer.js +415 -63
  357. package/dist/src/formats/neo4j/importer.js.map +1 -1
  358. package/dist/src/formats/neo4j/index.d.ts +73 -23
  359. package/dist/src/formats/neo4j/index.d.ts.map +1 -1
  360. package/dist/src/formats/neo4j/index.js +65 -25
  361. package/dist/src/formats/neo4j/index.js.map +1 -1
  362. package/dist/src/formats/obo/exporter.d.ts +150 -0
  363. package/dist/src/formats/obo/exporter.d.ts.map +1 -0
  364. package/dist/src/formats/obo/exporter.js +1736 -0
  365. package/dist/src/formats/obo/exporter.js.map +1 -0
  366. package/dist/src/formats/obo/importer.d.ts +95 -19
  367. package/dist/src/formats/obo/importer.d.ts.map +1 -1
  368. package/dist/src/formats/obo/importer.js +475 -104
  369. package/dist/src/formats/obo/importer.js.map +1 -1
  370. package/dist/src/formats/obo/index.d.ts +6 -3
  371. package/dist/src/formats/obo/index.d.ts.map +1 -1
  372. package/dist/src/formats/obo/index.js +6 -3
  373. package/dist/src/formats/obo/index.js.map +1 -1
  374. package/dist/src/formats/obo/syntax.d.ts +108 -4
  375. package/dist/src/formats/obo/syntax.d.ts.map +1 -1
  376. package/dist/src/formats/obo/syntax.js +211 -34
  377. package/dist/src/formats/obo/syntax.js.map +1 -1
  378. package/dist/src/formats/pajek/exporter.d.ts +54 -16
  379. package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
  380. package/dist/src/formats/pajek/exporter.js +66 -34
  381. package/dist/src/formats/pajek/exporter.js.map +1 -1
  382. package/dist/src/formats/pajek/importer.d.ts +84 -22
  383. package/dist/src/formats/pajek/importer.d.ts.map +1 -1
  384. package/dist/src/formats/pajek/importer.js +303 -83
  385. package/dist/src/formats/pajek/importer.js.map +1 -1
  386. package/dist/src/formats/pajek/index.d.ts +2 -1
  387. package/dist/src/formats/pajek/index.d.ts.map +1 -1
  388. package/dist/src/formats/pajek/index.js +2 -1
  389. package/dist/src/formats/pajek/index.js.map +1 -1
  390. package/dist/src/formats/pajek/syntax.d.ts +77 -14
  391. package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
  392. package/dist/src/formats/pajek/syntax.js +183 -51
  393. package/dist/src/formats/pajek/syntax.js.map +1 -1
  394. package/dist/src/formats/xgmml/columns.d.ts +1 -0
  395. package/dist/src/formats/xgmml/columns.d.ts.map +1 -1
  396. package/dist/src/formats/xgmml/columns.js +4 -0
  397. package/dist/src/formats/xgmml/columns.js.map +1 -1
  398. package/dist/src/formats/xgmml/constants.d.ts +186 -56
  399. package/dist/src/formats/xgmml/constants.d.ts.map +1 -1
  400. package/dist/src/formats/xgmml/constants.js +181 -57
  401. package/dist/src/formats/xgmml/constants.js.map +1 -1
  402. package/dist/src/formats/xgmml/document.d.ts +65 -11
  403. package/dist/src/formats/xgmml/document.d.ts.map +1 -1
  404. package/dist/src/formats/xgmml/document.js +157 -28
  405. package/dist/src/formats/xgmml/document.js.map +1 -1
  406. package/dist/src/formats/xgmml/emit.d.ts +61 -3
  407. package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
  408. package/dist/src/formats/xgmml/emit.js +129 -26
  409. package/dist/src/formats/xgmml/emit.js.map +1 -1
  410. package/dist/src/formats/xgmml/exporter.d.ts +13 -6
  411. package/dist/src/formats/xgmml/exporter.d.ts.map +1 -1
  412. package/dist/src/formats/xgmml/exporter.js +20 -21
  413. package/dist/src/formats/xgmml/exporter.js.map +1 -1
  414. package/dist/src/formats/xgmml/importer.d.ts +33 -12
  415. package/dist/src/formats/xgmml/importer.d.ts.map +1 -1
  416. package/dist/src/formats/xgmml/importer.js +35 -72
  417. package/dist/src/formats/xgmml/importer.js.map +1 -1
  418. package/dist/src/formats/xgmml/index.d.ts +1 -0
  419. package/dist/src/formats/xgmml/index.d.ts.map +1 -1
  420. package/dist/src/formats/xgmml/index.js +1 -0
  421. package/dist/src/formats/xgmml/index.js.map +1 -1
  422. package/dist/src/formats/xgmml/values.d.ts +8 -1
  423. package/dist/src/formats/xgmml/values.d.ts.map +1 -1
  424. package/dist/src/formats/xgmml/values.js +7 -2
  425. package/dist/src/formats/xgmml/values.js.map +1 -1
  426. package/dist/src/index.d.ts +23 -18
  427. package/dist/src/index.d.ts.map +1 -1
  428. package/dist/src/index.js +28 -16
  429. package/dist/src/index.js.map +1 -1
  430. package/dist/src/registry.d.ts +478 -92
  431. package/dist/src/registry.d.ts.map +1 -1
  432. package/dist/src/registry.js +807 -88
  433. package/dist/src/registry.js.map +1 -1
  434. package/dist/src/sniff.d.ts +61 -19
  435. package/dist/src/sniff.d.ts.map +1 -1
  436. package/dist/src/sniff.js +121 -29
  437. package/dist/src/sniff.js.map +1 -1
  438. package/dist/src/types.d.ts +362 -112
  439. package/dist/src/types.d.ts.map +1 -1
  440. package/dist/src/types.js +28 -7
  441. package/dist/src/types.js.map +1 -1
  442. package/dist/xgmml.js +2 -2
  443. package/docs/samples/README.md +25 -0
  444. package/docs/samples/got-edges.csv +353 -0
  445. package/docs/samples/got-network.graphml +1384 -0
  446. package/docs/samples/got-nodes.csv +108 -0
  447. package/docs/samples/got.cx +930 -0
  448. package/docs/samples/got.cx2 +465 -0
  449. package/docs/samples/got.gexf +471 -0
  450. package/docs/samples/got.gml +2650 -0
  451. package/docs/samples/got.json +2546 -0
  452. package/docs/samples/got.net +461 -0
  453. package/docs/samples/movies-nodes.csv +9 -0
  454. package/docs/samples/movies-rels.csv +8 -0
  455. package/docs/samples/networks.cys +0 -0
  456. package/docs/samples/proteins.xgmml +9 -0
  457. package/docs/samples/teams.gv +24 -0
  458. package/docs/samples/vehicles.obo +25 -0
  459. package/package.json +9 -4
  460. package/src/children.ts +18 -6
  461. package/src/common/attributes.ts +29 -11
  462. package/src/common/cell-budget.ts +11 -3
  463. package/src/common/choose.ts +89 -0
  464. package/src/common/codes.ts +490 -66
  465. package/src/common/compare.ts +472 -0
  466. package/src/common/cx-export.ts +432 -0
  467. package/src/common/declared-types.ts +38 -4
  468. package/src/common/direction.ts +78 -51
  469. package/src/common/escape.ts +33 -17
  470. package/src/common/export.ts +284 -47
  471. package/src/common/format.ts +30 -1
  472. package/src/common/ids.ts +14 -3
  473. package/src/common/input.ts +1057 -134
  474. package/src/common/json-elements.ts +1034 -198
  475. package/src/common/line-format.ts +249 -0
  476. package/src/common/lists.ts +6 -1
  477. package/src/common/ontology-export.ts +461 -0
  478. package/src/common/ontology.ts +31 -9
  479. package/src/common/options.ts +110 -15
  480. package/src/common/plural.ts +49 -0
  481. package/src/common/report.ts +168 -25
  482. package/src/common/temporal.ts +22 -5
  483. package/src/common/text.ts +62 -23
  484. package/src/common/weights.ts +74 -4
  485. package/src/common/writer.ts +37 -3
  486. package/src/common/xml.ts +477 -88
  487. package/src/common/zip.ts +169 -7
  488. package/src/formats/csv/exporter.ts +201 -46
  489. package/src/formats/csv/header.ts +50 -11
  490. package/src/formats/csv/importer.ts +1133 -245
  491. package/src/formats/csv/index.ts +106 -19
  492. package/src/formats/csv/records.ts +396 -122
  493. package/src/formats/csv/values.ts +1 -0
  494. package/src/formats/cx/exporter.ts +1483 -0
  495. package/src/formats/cx/importer.ts +888 -300
  496. package/src/formats/cx/index.ts +4 -3
  497. package/src/formats/cx2/exporter.ts +61 -338
  498. package/src/formats/cx2/importer.ts +317 -86
  499. package/src/formats/cx2/index.ts +2 -1
  500. package/src/formats/cys/constants.ts +62 -17
  501. package/src/formats/cys/exporter.ts +1368 -0
  502. package/src/formats/cys/importer.ts +659 -157
  503. package/src/formats/cys/index.ts +4 -2
  504. package/src/formats/cys/session.ts +139 -31
  505. package/src/formats/cys/tables.ts +47 -9
  506. package/src/formats/dot/exporter.ts +83 -37
  507. package/src/formats/dot/importer.ts +248 -54
  508. package/src/formats/dot/index.ts +2 -1
  509. package/src/formats/dot/names.ts +44 -11
  510. package/src/formats/dot/tokenizer.ts +25 -6
  511. package/src/formats/gexf/exporter.ts +57 -18
  512. package/src/formats/gexf/importer.ts +636 -105
  513. package/src/formats/gexf/index.ts +90 -21
  514. package/src/formats/gexf/schema.ts +67 -15
  515. package/src/formats/gml/exporter.ts +90 -36
  516. package/src/formats/gml/importer.ts +388 -67
  517. package/src/formats/gml/index.ts +85 -24
  518. package/src/formats/gml/syntax.ts +111 -26
  519. package/src/formats/graphml/constants.ts +178 -44
  520. package/src/formats/graphml/exporter.ts +52 -18
  521. package/src/formats/graphml/importer.ts +640 -60
  522. package/src/formats/graphml/index.ts +2 -1
  523. package/src/formats/graphml/tree.ts +6 -2
  524. package/src/formats/graphml/yfiles.ts +37 -15
  525. package/src/formats/json/dialect.ts +128 -29
  526. package/src/formats/json/exporter.ts +205 -68
  527. package/src/formats/json/importer.ts +1163 -253
  528. package/src/formats/json/index.ts +3 -1
  529. package/src/formats/json/obographs-export.ts +1197 -0
  530. package/src/formats/json/obographs.ts +353 -92
  531. package/src/formats/neo4j/exporter.ts +320 -101
  532. package/src/formats/neo4j/header.ts +44 -6
  533. package/src/formats/neo4j/importer.ts +512 -73
  534. package/src/formats/neo4j/index.ts +75 -23
  535. package/src/formats/obo/exporter.ts +2210 -0
  536. package/src/formats/obo/importer.ts +622 -109
  537. package/src/formats/obo/index.ts +6 -3
  538. package/src/formats/obo/syntax.ts +232 -37
  539. package/src/formats/pajek/exporter.ts +89 -41
  540. package/src/formats/pajek/importer.ts +407 -93
  541. package/src/formats/pajek/index.ts +2 -1
  542. package/src/formats/pajek/syntax.ts +213 -52
  543. package/src/formats/xgmml/columns.ts +10 -0
  544. package/src/formats/xgmml/constants.ts +183 -56
  545. package/src/formats/xgmml/document.ts +212 -34
  546. package/src/formats/xgmml/emit.ts +175 -34
  547. package/src/formats/xgmml/exporter.ts +35 -27
  548. package/src/formats/xgmml/importer.ts +64 -86
  549. package/src/formats/xgmml/index.ts +1 -0
  550. package/src/formats/xgmml/values.ts +11 -3
  551. package/src/index.ts +81 -11
  552. package/src/registry.ts +1121 -135
  553. package/src/sniff.ts +163 -32
  554. package/src/types.ts +385 -114
  555. package/dist/chunks/escape-B-tkk_Cl.js.map +0 -1
  556. package/dist/chunks/export-Bh60Dv-n.js +0 -582
  557. package/dist/chunks/export-Bh60Dv-n.js.map +0 -1
  558. package/dist/chunks/exporter-BGrsWamJ.js.map +0 -1
  559. package/dist/chunks/exporter-DIeGJXAZ.js.map +0 -1
  560. package/dist/chunks/importer-BWY2FFc5.js.map +0 -1
  561. package/dist/chunks/importer-DD-xv9_Y.js +0 -1471
  562. package/dist/chunks/importer-DD-xv9_Y.js.map +0 -1
  563. package/dist/chunks/importer-DET1tg6s.js.map +0 -1
  564. package/dist/chunks/importer-DEcKhsmQ.js +0 -1614
  565. package/dist/chunks/importer-DEcKhsmQ.js.map +0 -1
  566. package/dist/chunks/importer-DIrbbnAf.js.map +0 -1
  567. package/dist/chunks/importer-D_e7e7LX.js.map +0 -1
  568. package/dist/chunks/importer-eUREhBGj.js.map +0 -1
  569. package/dist/chunks/importer-vi3bSdtw.js.map +0 -1
  570. package/dist/chunks/importer-zGLo8Dg_.js.map +0 -1
  571. package/dist/chunks/json-elements-DDS8N2Dd.js +0 -779
  572. package/dist/chunks/json-elements-DDS8N2Dd.js.map +0 -1
  573. package/dist/chunks/ontology-BnrJ4I98.js +0 -113
  574. package/dist/chunks/ontology-BnrJ4I98.js.map +0 -1
  575. package/dist/chunks/records-dbRkxwaq.js.map +0 -1
  576. package/dist/chunks/report-B1z4WT9e.js +0 -2372
  577. package/dist/chunks/report-B1z4WT9e.js.map +0 -1
  578. package/dist/chunks/text-Dr0Ifpag.js.map +0 -1
  579. package/dist/chunks/weights-Dzba96G3.js +0 -176
  580. package/dist/chunks/weights-Dzba96G3.js.map +0 -1
  581. package/dist/chunks/writer-C7flM-Ih.js.map +0 -1
@@ -1,68 +1,139 @@
1
1
  /**
2
2
  * What the GraphML importer and exporter share: the namespace, the format facts, the reserved
3
- * column names of the XML-attribute-derived columns (design section 5.6), the `meta.extra`
3
+ * column names of the XML-attribute-derived columns, the `meta.extra`
4
4
  * keys the importer records for the exporter, and the issue and loss codes.
5
5
  */
6
- import { BAD_DEFAULT_CODE, COLUMN_RENAMED_CODE, COUNT_HINT_CODE, DIRECTION_FORCED_CODE, DIRECTION_REFUSED_CODE, DUPLICATE_EDGE_ID_CODE, DUPLICATE_KEY_CODE, DUPLICATE_NODE_CODE, ENCODING_FALLBACK_CODE, HYPEREDGE_CODE, ID_MERGED_CODE, ID_TEXT_TYPE_CODE, INVALID_ENCODING_CODE, INVALID_UTF8_CODE, MISSING_ENDPOINT_CODE, MISSING_ID_CODE, MIXED_DIRECTION_CODE, MULTIPLE_GRAPHS_CODE, MUTUAL_AS_UNDIRECTED_CODE, NO_GRAPH_CODE, OPTION_IGNORED_CODE, PARENTS_DROPPED_CODE, PRECISION_CODE, ROLE_DROPPED_CODE, ROLE_TAKEN_CODE, SINK_OPTION_CODE, STRAY_TEXT_CODE, UNKNOWN_ATTR_TYPE_CODE, UNKNOWN_ELEMENT_CODE, UNKNOWN_ENCODING_CODE, XML_SYNTAX_CODE, } from "../../common/codes.js";
7
- /** The GraphML namespace. */
6
+ import { BAD_DEFAULT_CODE, COLUMN_RENAMED_CODE, COLUMN_TYPE_CODE, COUNT_HINT_CODE, COUNT_MISMATCH_CODE, DANGLING_REFERENCE_CODE, DIRECTION_FORCED_CODE, DIRECTION_REFUSED_CODE, DUPLICATE_ATTRIBUTE_CODE, DUPLICATE_EDGE_ID_CODE, DUPLICATE_KEY_CODE, DUPLICATE_NODE_CODE, ELEMENT_ISSUE, EMPTY_INPUT_CODE, ENCODING_CONFLICT_CODE, ENCODING_FALLBACK_CODE, HYPEREDGE_CODE, ID_MERGED_CODE, ID_TEXT_TYPE_CODE, INPUT_ISSUE, INVALID_ENCODING_CODE, INVALID_UTF8_CODE, MISSING_ENDPOINT_CODE, MISSING_ID_CODE, MIXED_DIRECTION_CODE, MULTIPLE_GRAPHS_CODE, MUTUAL_AS_UNDIRECTED_CODE, NO_GRAPH_CODE, OPTION_IGNORED_CODE, PARENTS_DROPPED_CODE, PRECISION_CODE, ROLE_DROPPED_CODE, ROLE_TAKEN_CODE, SINK_OPTION_CODE, STRAY_TEXT_CODE, UNKNOWN_ATTR_TYPE_CODE, UNKNOWN_ELEMENT_CODE, UNKNOWN_ENCODING_CODE, UNKNOWN_PARENT_CODE, UNKNOWN_XML_ATTRIBUTE_CODE, XML_SYNTAX_CODE, } from "../../common/codes.js";
7
+ /**
8
+ * The GraphML namespace.
9
+ * @category Plugin helpers
10
+ */
8
11
  export const GRAPHML_NAMESPACE = "http://graphml.graphdrawing.org/xmlns";
9
- /** The yFiles extension namespace, declared as `xmlns:y` when a yfiles column is written. */
12
+ /**
13
+ * The yFiles extension namespace, declared as `xmlns:y` when a yfiles column is written.
14
+ * @category Plugin helpers
15
+ */
10
16
  export const YFILES_NAMESPACE = "http://www.yworks.com/xml/graphml";
11
- /** The XML Schema instance namespace and the schema location the exporter writes. */
17
+ /**
18
+ * The XML Schema instance namespace and the schema location the exporter writes.
19
+ * @category Plugin helpers
20
+ */
12
21
  export const XSI_NAMESPACE = "http://www.w3.org/2001/XMLSchema-instance";
13
- /** The GraphML schema location written by the exporter. */
22
+ /**
23
+ * The GraphML schema location written by the exporter.
24
+ * @category Plugin helpers
25
+ */
14
26
  export const SCHEMA_LOCATION = "http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd";
15
- /** The format name. */
27
+ /**
28
+ * The format name.
29
+ * @category Plugin helpers
30
+ */
16
31
  export const FORMAT = "graphml";
17
- /** File extensions. */
32
+ /**
33
+ * File extensions.
34
+ * @category Plugin helpers
35
+ */
18
36
  export const EXTENSIONS = Object.freeze([".graphml", ".xml"]);
19
- /** MIME types. */
37
+ /**
38
+ * MIME types.
39
+ * @category Plugin helpers
40
+ */
20
41
  export const MIME_TYPES = Object.freeze(["application/graphml+xml", "application/xml", "text/xml"]);
21
- /** The `attr.name` of the node key that carries ids rewritten by `sanitizeIds: "mangle"` (design section 8.5). */
42
+ /**
43
+ * The `attr.name` of the node key that carries ids rewritten by `sanitizeIds: "mangle"`.
44
+ * @category Plugin helpers
45
+ */
22
46
  export const ORIGINAL_ID_ATTRIBUTE = "graphty:originalId";
23
- /** The node column that keeps original ids when `restoreMangledIds` is off (design section 5.6). */
47
+ /**
48
+ * The node column that keeps original ids when `restoreMangledIds` is off.
49
+ * @category Plugin helpers
50
+ */
24
51
  export const ORIGINAL_ID_COLUMN = "graphty.originalId";
25
- /** The edge column of the `id` XML attribute (role id, unique). */
52
+ /**
53
+ * The edge column of the `id` XML attribute (role id, unique).
54
+ * @category Plugin helpers
55
+ */
26
56
  export const EDGE_ID_COLUMN = "id";
27
- /** The edge columns of the `sourceport` / `targetport` XML attributes (roles sourcePort / targetPort). */
57
+ /**
58
+ * The edge columns of the `sourceport` / `targetport` XML attributes (roles sourcePort / targetPort).
59
+ * @category Plugin helpers
60
+ */
28
61
  export const SOURCE_PORT_COLUMN = "sourceport";
29
- /** The edge column of the `targetport` XML attribute. */
62
+ /**
63
+ * The edge column of the `targetport` XML attribute.
64
+ * @category Plugin helpers
65
+ */
30
66
  export const TARGET_PORT_COLUMN = "targetport";
31
- /** The node column of the containing node of a nested graph (u32, role parent, refersTo node). */
67
+ /**
68
+ * The node column of the containing node of a nested graph (u32, role parent, refersTo node).
69
+ * @category Plugin helpers
70
+ */
32
71
  export const PARENT_COLUMN = "parent";
33
- /** The bool node column marking the hub nodes synthesised for hyperedges under `hyperedges: "star"`. */
72
+ /**
73
+ * The bool node column marking the hub nodes synthesized for hyperedges under `hyperedges: "star"`.
74
+ * @category Plugin helpers
75
+ */
34
76
  export const HYPEREDGE_HUB_COLUMN = "graphty.hyperedge";
35
- /** The column name a node key titled `label` receives the `label` role under. */
77
+ /**
78
+ * The column name a node key titled `label` receives the `label` role under.
79
+ * @category Plugin helpers
80
+ */
36
81
  export const LABEL_COLUMN = "label";
37
- /** Edge column names reserved for the XML-attribute-derived columns; a key titled like one is renamed `<name>#<id>`. */
82
+ /**
83
+ * Edge column names reserved for the XML-attribute-derived columns; a key titled like one is renamed `<name>#<id>`.
84
+ * @category Plugin helpers
85
+ */
38
86
  export const RESERVED_EDGE_NAMES = new Set([
39
87
  EDGE_ID_COLUMN,
40
88
  SOURCE_PORT_COLUMN,
41
89
  TARGET_PORT_COLUMN,
42
90
  ]);
43
- /** Node column names reserved for the XML-derived columns. */
91
+ /**
92
+ * Node column names reserved for the XML-derived columns.
93
+ * @category Plugin helpers
94
+ */
44
95
  export const RESERVED_NODE_NAMES = new Set([PARENT_COLUMN]);
45
- /** The `meta.extra` key under which the importer records what the exporter needs. */
96
+ /**
97
+ * The `meta.extra` key under which the importer records what the exporter needs.
98
+ * @category Plugin helpers
99
+ */
46
100
  export const META_KEY = "graphml";
47
101
  /**
48
- * The issue codes the GraphML importer records (design section 8.6), by name: the codes shared
49
- * with the other importers (src/common/codes.ts) and the GraphML-specific ones. A key is the code
102
+ * The issue codes the GraphML importer records, by name: the codes shared
103
+ * with the other importers and the GraphML-specific ones. A key is the code
50
104
  * without its severity and format prefixes.
105
+ * @category Built-in formats
51
106
  */
52
107
  export const GRAPHML_ISSUE = Object.freeze({
53
- /** Fatal: the input is not well-formed XML. */
108
+ ...INPUT_ISSUE,
109
+ ...ELEMENT_ISSUE,
110
+ /**
111
+ * A value that does not parse as the type its attribute declares ("x" in an integer attribute). The value is
112
+ * left unset; the node or edge is kept.
113
+ */
114
+ COLUMN_TYPE: COLUMN_TYPE_CODE,
115
+ /** The input is not well-formed XML. The import stops. */
54
116
  XML_SYNTAX: XML_SYNTAX_CODE,
55
- /** Fatal: the input holds invalid UTF-8. */
117
+ /** The input is not valid UTF-8. The import stops. */
56
118
  INVALID_UTF8: INVALID_UTF8_CODE,
57
- /** Invalid bytes in the encoding a BOM, a declaration or the encoding option chose (fatal). */
119
+ /**
120
+ * Some bytes are not valid in the encoding that was chosen (by a byte order mark, the file's declaration or the
121
+ * `encoding` option). The import stops.
122
+ */
58
123
  INVALID_ENCODING: INVALID_ENCODING_CODE,
59
124
  /** Bytes that are not UTF-8 and declare no encoding were read as windows-1252. */
60
125
  ENCODING_FALLBACK: ENCODING_FALLBACK_CODE,
61
126
  /** A declared encoding the platform cannot decode was ignored. */
62
127
  UNKNOWN_ENCODING: UNKNOWN_ENCODING_CODE,
63
- /** Fatal: the root element is not `<graphml>`. */
128
+ /** A declared encoding the byte order mark contradicts (the mark wins). */
129
+ ENCODING_CONFLICT: ENCODING_CONFLICT_CODE,
130
+ /** The input holds no XML at all: it is empty, whitespace or a byte order mark only. The import stops. */
131
+ EMPTY_INPUT: EMPTY_INPUT_CODE,
132
+ /** The root element is not `<graphml>`. The import stops. */
64
133
  NOT_GRAPHML: "E_NOT_GRAPHML",
65
- /** Fatal: the document has no `<graph>`. */
134
+ /** The `<graphml>` root is in a namespace other than GraphML's; it is read as GraphML. */
135
+ NAMESPACE: "W_GRAPHML_NAMESPACE",
136
+ /** The document has no `<graph>`. The import stops. */
66
137
  NO_GRAPH: NO_GRAPH_CODE,
67
138
  /** A `<key>` without an id. */
68
139
  KEY_MISSING_ID: "E_GRAPHML_KEY_MISSING_ID",
@@ -74,8 +145,18 @@ export const GRAPHML_ISSUE = Object.freeze({
74
145
  MISSING_ID: MISSING_ID_CODE,
75
146
  /** An `<edge>` without a source or a target. */
76
147
  MISSING_ENDPOINT: MISSING_ENDPOINT_CODE,
148
+ /** An edge endpoint that names no declared node under `addMissingNodes: false`; the edge is skipped. */
149
+ UNKNOWN_NODE: "E_UNKNOWN_NODE",
150
+ /** An edge endpoint that names a nested `<graph>`, not a node; a node of that id is created. */
151
+ GRAPH_ENDPOINT: "W_GRAPHML_GRAPH_ENDPOINT",
152
+ /** The nodes of a nested graph whose container node was skipped lose their parent. */
153
+ UNKNOWN_PARENT: UNKNOWN_PARENT_CODE,
154
+ /** Two `<data>` of one key on one element, two `<default>` in one key, or two weight keys; one is kept. */
155
+ DUPLICATE_ATTRIBUTE: DUPLICATE_ATTRIBUTE_CODE,
77
156
  /** A `<data>` whose key was never declared. */
78
157
  UNKNOWN_KEY: "E_GRAPHML_UNKNOWN_KEY",
158
+ /** A `<key>` declared after `<data>` that used it; those values were already reported and dropped. */
159
+ KEY_DECLARED_LATE: "W_GRAPHML_KEY_DECLARED_LATE",
79
160
  /** A `<data>` whose key is declared for another domain. */
80
161
  KEY_DOMAIN: "W_GRAPHML_KEY_DOMAIN",
81
162
  /** A `<data>` without a key attribute. */
@@ -98,10 +179,20 @@ export const GRAPHML_ISSUE = Object.freeze({
98
179
  INVALID_EDGEDEFAULT: "E_GRAPHML_INVALID_EDGEDEFAULT",
99
180
  /** A `<graph>` without edgedefault; the `defaultDirected` option applies. */
100
181
  EDGEDEFAULT_MISSING: "W_GRAPHML_EDGEDEFAULT_MISSING",
101
- /** A second top-level `<graph>`; its nodes and edges are merged into the first. */
182
+ /**
183
+ * The file holds more than one top-level `<graph>`; their nodes and edges are merged into one graph.
184
+ * `importAllGraphs()` reads every one.
185
+ */
102
186
  MULTIPLE_GRAPHS: MULTIPLE_GRAPHS_CODE,
103
- /** A `parse.nodes` / `parse.edges` hint the sink cannot reserve (ignored). */
187
+ /**
188
+ * A node or edge count the file announces is too large to reserve room for; it is ignored and the elements are
189
+ * read as they come.
190
+ */
104
191
  COUNT_HINT: COUNT_HINT_CODE,
192
+ /**
193
+ * A `parse.nodes` or `parse.edges` count disagrees with what the graph holds. The elements are read as they are.
194
+ */
195
+ COUNT_MISMATCH: COUNT_MISMATCH_CODE,
105
196
  /** A hyperedge under `hyperedges: "error"`. */
106
197
  HYPEREDGE: HYPEREDGE_CODE,
107
198
  /** Hyperedges skipped under `hyperedges: "skip"`. */
@@ -110,10 +201,23 @@ export const GRAPHML_ISSUE = Object.freeze({
110
201
  HYPEREDGE_ENDPOINT: "E_GRAPHML_HYPEREDGE_ENDPOINT",
111
202
  /** `<port>` declarations (and their data) are not kept; sourceport / targetport edge attributes are. */
112
203
  PORT_DECLARATION: "W_GRAPHML_PORT_DECLARATION",
113
- /** A GraphML `parse.*` hint on `<graph>`, `<node>` or `<edge>` the importer does not act on (parse.nodeids, parse.order, ...). */
204
+ /** A `sourceport` / `targetport` naming a port its node does not declare (once, with the count). */
205
+ DANGLING_REFERENCE: DANGLING_REFERENCE_CODE,
206
+ /** A `<graph>` inside an `<edge>` (legal GraphML): it and the nodes and edges it holds are dropped. */
207
+ EDGE_GRAPH_DROPPED: "W_GRAPHML_EDGE_GRAPH_DROPPED",
208
+ /** A `<node>` whose id is that of a hub `hyperedges: "star"` created; the node is merged into the hub. */
209
+ HUB_ID_CLASH: "W_GRAPHML_HUB_ID_CLASH",
210
+ /** A `graphty:originalId` value that is not text, or arrives after the node was added (after its nested graph). */
211
+ ORIGINAL_ID_IGNORED: "W_GRAPHML_ORIGINAL_ID_IGNORED",
212
+ /** A yFiles graphics value (a geometry coordinate, a width) that is not a number; it is not mapped. */
213
+ YFILES_VALUE: "W_GRAPHML_YFILES_VALUE",
214
+ /**
215
+ * A GraphML `parse.*` attribute (`parse.nodeids`, `parse.order`, ...) that graph-io does not act on; the file is
216
+ * read normally.
217
+ */
114
218
  PARSE_HINT_IGNORED: "W_GRAPHML_PARSE_HINT_IGNORED",
115
- /** An XML attribute GraphML does not define on `<graph>`, `<node>` or `<edge>`; it is not kept. */
116
- UNKNOWN_XML_ATTRIBUTE: "W_GRAPHML_UNKNOWN_XML_ATTRIBUTE",
219
+ /** An XML attribute GraphML does not define (or the importer does not keep) on an element; it is not kept. */
220
+ UNKNOWN_XML_ATTRIBUTE: UNKNOWN_XML_ATTRIBUTE_CODE,
117
221
  /** A `<locator>` element. */
118
222
  LOCATOR_DROPPED: "W_GRAPHML_LOCATOR_DROPPED",
119
223
  /** A `<desc>` of a node, an edge or a hyperedge. */
@@ -124,54 +228,71 @@ export const GRAPHML_ISSUE = Object.freeze({
124
228
  STRAY_TEXT: STRAY_TEXT_CODE,
125
229
  /** Two distinct id texts merged into one number under `ids: "number"`. */
126
230
  ID_MERGED: ID_MERGED_CODE,
127
- /** An option GraphML has no use for (`nodeIdFrom`: nodes are identified by their id attribute). */
231
+ /** You set an option this format does not use; it had no effect. The message names the option. */
128
232
  OPTION_IGNORED: OPTION_IGNORED_CODE,
129
233
  /** A yFiles key under `yfiles: "skip"`. */
130
234
  YFILES_SKIPPED: "W_GRAPHML_YFILES_SKIPPED",
131
- /** A key renamed `<name>#<id>` because the name was taken (design section 5.6). */
235
+ /**
236
+ * An attribute was renamed `<name>#<suffix>` because another attribute already has its name, for example
237
+ * two attributes declared with the same name.
238
+ */
132
239
  COLUMN_RENAMED: COLUMN_RENAMED_CODE,
133
- /** A key declared without its role because the table already holds it. */
240
+ /**
241
+ * You read into a graph builder that already has an id, label or position attribute, so this file's one is kept as
242
+ * a plain attribute.
243
+ */
134
244
  ROLE_TAKEN: ROLE_TAKEN_CODE,
135
245
  /** A declared type the format does not define (kept as string). */
136
246
  UNKNOWN_ATTR_TYPE: UNKNOWN_ATTR_TYPE_CODE,
137
247
  /** A default that does not parse as the declared type. */
138
248
  BAD_DEFAULT: BAD_DEFAULT_CODE,
139
- /** A long value beyond 2^53 rounded. */
249
+ /** An integer beyond 2^53 was stored as the nearest 64-bit float; pass `long: "string"` to keep every digit. */
140
250
  PRECISION: PRECISION_CODE,
141
- /** A builder-policy option the sink does not honour. */
251
+ /**
252
+ * You read into your own graph builder, which was created with a different `addMissingNodes`, `duplicateEdges`,
253
+ * `selfLoops` or `weightDtype` than the option you passed; the builder's setting applies.
254
+ */
142
255
  SINK_OPTION: SINK_OPTION_CODE,
143
- /** The sink refused the file's direction. */
256
+ /**
257
+ * You read into a graph builder whose direction is already set, or which already holds edges, so the file is read
258
+ * with the builder's direction instead of its own.
259
+ */
144
260
  DIRECTION_REFUSED: DIRECTION_REFUSED_CODE,
145
- /** Edges forced to the policy's direction. */
261
+ /** Edges of the other direction were read with the direction `onMixedDirection` chose. */
146
262
  DIRECTION_FORCED: DIRECTION_FORCED_CODE,
147
- /** A mixed file under onMixedDirection "error" (fatal). */
263
+ /**
264
+ * The graph has both directed and undirected edges and `onMixedDirection` is "error". An import stops; a save to a
265
+ * format that holds one direction per file fails with E_DIRECTED. Pass "directed" or "undirected" to read or write
266
+ * it anyway.
267
+ */
148
268
  MIXED_DIRECTION: MIXED_DIRECTION_CODE,
149
269
  });
150
270
  /**
151
271
  * Loss note codes of the GraphML importer (report.lossy) and exporter (check()): the GraphML
152
272
  * ones; the generic ones (dtypes, lists, json text, positions, visual and temporal roles,
153
273
  * extension tables, id charsets, the weight key clash, name changes) are those of `LOSS`.
274
+ * @category Built-in formats
154
275
  */
155
276
  export const GRAPHML_LOSS = Object.freeze({
156
- /** yFiles nested XML kept as a JSON tree: structure preserved, not byte-exact. */
277
+ /** YFiles nested XML kept as a JSON tree: structure preserved, not byte-exact. */
157
278
  YFILES_JSON: "W_GRAPHML_YFILES_JSON",
158
279
  /** A mutual pair written as one undirected edge; the mark is lost. */
159
280
  MUTUAL_AS_UNDIRECTED: MUTUAL_AS_UNDIRECTED_CODE,
160
281
  /** A `parents` (multi-parent) column cannot be written as nested graphs. */
161
282
  PARENTS_DROPPED: PARENTS_DROPPED_CODE,
162
- /** A role column GraphML has no slot for (kind, node ids, ...) written as a plain attribute. */
283
+ /** An attribute with a role the format has no place for is written as a plain attribute; the role is lost. */
163
284
  ROLE_DROPPED: ROLE_DROPPED_CODE,
164
285
  /** Containment order differs from index order; node indices change after a round trip. */
165
286
  HIERARCHY_REORDERED: "W_GRAPHML_HIERARCHY_REORDERED",
166
287
  /** Nodes whose parent chain never reaches a root are written at the top level. */
167
288
  PARENT_CYCLE: "W_GRAPHML_PARENT_CYCLE",
168
- /** Node ids that change type after a round trip under the canonical rule (design section 4.1). */
289
+ /** Node ids that read back as a different type, such as the text "7" as the number 7. */
169
290
  ID_TEXT_TYPE: ID_TEXT_TYPE_CODE,
170
291
  /** A numeric edge id column reads back as string. */
171
292
  EDGE_ID_TEXT: "W_GRAPHML_EDGE_ID_TEXT",
172
293
  /** A `yfiles.*` graphics column that no longer matches its yFiles tree: only the tree is written. */
173
294
  YFILES_GRAPHICS_STALE: "W_GRAPHML_YFILES_GRAPHICS_STALE",
174
- /** A yfiles json value that is not a serialisable tree: export() will throw E_COLUMN_TYPE. */
295
+ /** A yEd graphics value that is not valid XML; the save fails with E_COLUMN_TYPE. */
175
296
  YFILES_TREE: "E_GRAPHML_YFILES_TREE",
176
297
  });
177
298
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/formats/graphml/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/formats/graphml/constants.ts"],"names":[],"mappings":"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"}
@@ -13,22 +13,30 @@
13
13
  * temporal roles, extension tables) plus the GraphML-specific ones (mutual edges written as
14
14
  * undirected, json columns without a yfiles origin written as JSON text, multi-parent columns,
15
15
  * containment order, ids that change type under the canonical rule, edge ids that read back as
16
- * strings, roles GraphML cannot express, yfiles values that are not serialisable trees).
16
+ * strings, roles GraphML cannot express, yfiles values that are not serializable trees).
17
17
  */
18
- import { type GraphExporter } from "../../types.js";
19
- /** The format-specific options of the GraphML exporter. */
20
- export interface GraphmlExportOptions {
21
- /** Indent nested elements (default true); false writes one element per line without indentation. */
18
+ import { type CommonExportOptions, type GraphExporter } from "../../types.js";
19
+ /**
20
+ * The format-specific options of the GraphML exporter.
21
+ * @category Built-in formats
22
+ */
23
+ export interface GraphmlExportOptions extends CommonExportOptions {
24
+ /**
25
+ * Indent nested elements; false writes one element per line without indentation.
26
+ * @defaultValue true
27
+ */
22
28
  pretty?: boolean | undefined;
23
29
  /**
24
- * The top-level `edgedefault`. By default the one the importer recorded in
25
- * `meta.extra.graphml` (so a mixed file re-imports with the same edge layout), else the
26
- * snapshot's direction, with the majority direction for a mixed snapshot.
30
+ * The `edgedefault` of the graph element. The default is the one a GraphML import read, so a
31
+ * file with both directions reads back with the same edges marked, else the graph's direction
32
+ * (for a graph with both, the direction most edges have).
33
+ * @defaultValue as read
27
34
  */
28
35
  edgedefault?: "directed" | "undirected" | undefined;
29
36
  }
30
37
  /**
31
- * The GraphML exporter (design section 8.5).
38
+ * The GraphML exporter.
39
+ * @category Built-in formats
32
40
  */
33
41
  export declare const graphmlExporter: GraphExporter<GraphmlExportOptions>;
34
42
  //# sourceMappingURL=exporter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../../../src/formats/graphml/exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAsBH,OAAO,EAAqD,KAAK,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAsBtH,2DAA2D;AAC3D,MAAM,WAAW,oBAAoB;IACjC,oGAAoG;IACpG,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B;;;;OAIG;IACH,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;CACvD;AA01CD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,oBAAoB,CAiC9D,CAAC"}
1
+ {"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../../../src/formats/graphml/exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAuBH,OAAO,EAAE,KAAK,mBAAmB,EAA2B,KAAK,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAsBtH;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC7D;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;CACvD;AAk3CD;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,oBAAoB,CAkC9D,CAAC"}
@@ -13,7 +13,7 @@
13
13
  * temporal roles, extension tables) plus the GraphML-specific ones (mutual edges written as
14
14
  * undirected, json columns without a yfiles origin written as JSON text, multi-parent columns,
15
15
  * containment order, ids that change type under the canonical rule, edge ids that read back as
16
- * strings, roles GraphML cannot express, yfiles values that are not serialisable trees).
16
+ * strings, roles GraphML cannot express, yfiles values that are not serializable trees).
17
17
  */
18
18
  import { GraphFormatError, INVALID_INDEX } from "@graphty/graph-format";
19
19
  import { childrenCsr } from "../../children.js";
@@ -23,6 +23,7 @@ import { capabilities, checkCapabilities, isNmtoken, LOSS, mangleNmtoken, saniti
23
23
  import { formatF32, formatF64, formatInteger } from "../../common/format.js";
24
24
  import { isCanonicalIntegerText } from "../../common/ids.js";
25
25
  import { resolveExportOptions } from "../../common/options.js";
26
+ import { agree, plural } from "../../common/plural.js";
26
27
  import { explicitWeights } from "../../common/weights.js";
27
28
  import { encodeChunks, joinText } from "../../common/writer.js";
28
29
  import { xmlIllegalTextNotes } from "../../common/xml.js";
@@ -183,7 +184,7 @@ function planExport(snapshot, options, format) {
183
184
  // ids
184
185
  const idTypeChanges = countIdTypeChanges(snapshot);
185
186
  if (idTypeChanges > 0) {
186
- note(GRAPHML_LOSS.ID_TEXT_TYPE, `${idTypeChanges} node id(s) change type when read back under ids: "canonical" (string ids that are integer text, non-integer numbers)`, null, idTypeChanges);
187
+ note(GRAPHML_LOSS.ID_TEXT_TYPE, `${idTypeChanges} node id${plural(idTypeChanges)} ${agree(idTypeChanges, "changes", "change")} type when read back under ids: "canonical" (string ids that are integer text, non-integer numbers)`, null, idTypeChanges);
187
188
  }
188
189
  const edgeIdColumn = snapshot.edges.byRole("id");
189
190
  if (edgeIdColumn !== null) {
@@ -195,7 +196,7 @@ function planExport(snapshot, options, format) {
195
196
  // direction: an undirected pair folds to one undirected edge, a mutual pair too (the mark is lost)
196
197
  const folding = pairFolding(snapshot, { foldMutual: true });
197
198
  if (folding.mutualCount > 0) {
198
- note(GRAPHML_LOSS.MUTUAL_AS_UNDIRECTED, `${folding.mutualCount} mutual pair(s) are written as undirected edges; the mutual mark is lost`, null, folding.mutualCount);
199
+ note(GRAPHML_LOSS.MUTUAL_AS_UNDIRECTED, `${folding.mutualCount} mutual pair${plural(folding.mutualCount)} ${agree(folding.mutualCount, "is", "are")} written as undirected edges; the mutual mark is lost`, null, folding.mutualCount);
199
200
  }
200
201
  const edgedefault = planEdgedefault(snapshot, folding, format, meta);
201
202
  // containment
@@ -204,7 +205,7 @@ function planExport(snapshot, options, format) {
204
205
  note(GRAPHML_LOSS.HIERARCHY_REORDERED, "nodes are written in containment order (children nested under their parent); node indices change after a round trip", hierarchy.parent?.meta.name ?? null);
205
206
  }
206
207
  if (hierarchy.unreachable > 0) {
207
- note(GRAPHML_LOSS.PARENT_CYCLE, `${hierarchy.unreachable} node(s) whose parent chain never reaches a root are written at the top level`, hierarchy.parent?.meta.name ?? null, hierarchy.unreachable);
208
+ note(GRAPHML_LOSS.PARENT_CYCLE, `${hierarchy.unreachable} node${plural(hierarchy.unreachable)} whose parent chain never reaches a root ${agree(hierarchy.unreachable, "is", "are")} written at the top level`, hierarchy.parent?.meta.name ?? null, hierarchy.unreachable);
208
209
  }
209
210
  return {
210
211
  options,
@@ -340,7 +341,7 @@ function planWeight(snapshot, edgeColumns, keyIds, keys, note) {
340
341
  const attrName = fromGraphml && origin.title !== null ? origin.title : DEFAULT_WEIGHT_NAME;
341
342
  for (const plan of edgeColumns) {
342
343
  if (plan.attrName === attrName) {
343
- note(LOSS.WEIGHT_KEY_CLASH, `edge column "${plan.column.meta.name}" is written as a key titled "${attrName}", which the importer reads as THE weight (weightFrom); it reads back as the weight, not as a column`, plan.column.meta.name, plan.column.length - plan.column.nullCount);
344
+ note(LOSS.WEIGHT_KEY_CLASH, `edge column "${plan.column.meta.name}" is written as a key titled "${attrName}", which the importer reads as the edge weight (weightFrom); it reads back as the weight, not as a column`, plan.column.meta.name, plan.column.length - plan.column.nullCount);
344
345
  }
345
346
  }
346
347
  if (!weights.weighted) {
@@ -378,10 +379,10 @@ function planEdgeIds(snapshot, column, options, note) {
378
379
  return;
379
380
  }
380
381
  if (options.sanitizeIds === "mangle") {
381
- note(LOSS.ID_MANGLED, `${bad} edge id(s) outside the nmtoken charset are rewritten`, column.meta.name, bad);
382
+ note(LOSS.ID_MANGLED, `${bad} edge id${plural(bad)} outside the nmtoken charset ${agree(bad, "is", "are")} rewritten`, column.meta.name, bad);
382
383
  }
383
384
  else {
384
- note(LOSS.ID_CHARSET, `${bad} edge id(s) outside the nmtoken charset; export() will throw unless sanitizeIds is "mangle"`, column.meta.name, bad);
385
+ note(LOSS.ID_CHARSET, `${bad} edge id${plural(bad)} outside the nmtoken charset; the save fails unless sanitizeIds is "mangle"`, column.meta.name, bad);
385
386
  }
386
387
  }
387
388
  /**
@@ -457,7 +458,7 @@ function planTable(table, domain, notes, note) {
457
458
  if (isGraphicsColumn(meta)) {
458
459
  const stale = domain === "graph" ? 0 : staleGraphicsRows(column, columns, domain);
459
460
  if (stale > 0) {
460
- note(GRAPHML_LOSS.YFILES_GRAPHICS_STALE, `${stale} value(s) of ${domain} column "${name}" differ from the yFiles tree it was read from; only the tree is written, so they are lost`, name, stale);
461
+ note(GRAPHML_LOSS.YFILES_GRAPHICS_STALE, `${stale} value${plural(stale)} of ${domain} column "${name}" differ from the yFiles tree it was read from; only the tree is written, so they are lost`, name, stale);
461
462
  }
462
463
  continue;
463
464
  }
@@ -481,7 +482,7 @@ function planTable(table, domain, notes, note) {
481
482
  if (yfiles) {
482
483
  const bad = countBadTrees(column);
483
484
  if (bad > 0) {
484
- note(GRAPHML_LOSS.YFILES_TREE, `${bad} value(s) of yfiles column "${name}" are not XML trees; export() will throw E_COLUMN_TYPE`, name, bad);
485
+ note(GRAPHML_LOSS.YFILES_TREE, `${bad} value${plural(bad)} of yfiles column "${name}" ${agree(bad, "is", "are")} not XML trees; the save fails with E_COLUMN_TYPE`, name, bad);
485
486
  }
486
487
  }
487
488
  const { origin } = meta;
@@ -572,6 +573,10 @@ function attrTypeFor(column) {
572
573
  case "u32":
573
574
  return columnMax(column) <= I32_MAX ? "int" : "long";
574
575
  case "string":
576
+ if (declared !== null && declared.trim().toLowerCase() === "long" && columnIntegerText(column)) {
577
+ // a long column read with long: "string" keeps its declared type, for other readers
578
+ return "long";
579
+ }
575
580
  if (declared !== null && TYPE_DTYPES[declared.trim().toLowerCase()] === undefined) {
576
581
  // an unknown declared type kept as text (W_UNKNOWN_ATTR_TYPE on import) is restored as declared
577
582
  return declared;
@@ -587,6 +592,20 @@ function attrTypeFor(column) {
587
592
  }
588
593
  }
589
594
  }
595
+ /**
596
+ * Whether every set value of a string column is integer text, as a long column read with
597
+ * `long: "string"` holds.
598
+ * @param column - a string column
599
+ * @returns true when all set values are integer text
600
+ */
601
+ function columnIntegerText(column) {
602
+ for (let r = 0; r < column.length; r++) {
603
+ if (column.isSet(r) && !/^[+-]?\d+$/.test(String(column.value(r)))) {
604
+ return false;
605
+ }
606
+ }
607
+ return true;
608
+ }
590
609
  /**
591
610
  * Whether every set value of a numeric column is an integer.
592
611
  * @param column - an f64 column
@@ -637,7 +656,7 @@ function weightsIntegral(snapshot, weights) {
637
656
  return true;
638
657
  }
639
658
  /**
640
- * How many values of a yfiles column are not serialisable trees.
659
+ * How many values of a yfiles column are not serializable trees.
641
660
  * @param column - a json column
642
661
  * @returns the count
643
662
  */
@@ -936,7 +955,7 @@ function sanitizeEdgeIds(column, mode, edgeCount) {
936
955
  }
937
956
  }
938
957
  if (bad.length > 0 && mode === "error") {
939
- throw new GraphFormatError("E_INVALID_ID", `${bad.length} edge id(s) cannot be written as nmtoken (first: ${JSON.stringify(edgeIdText(column, bad[0]))} at edge ${bad[0]}); pass sanitizeIds: "mangle" to rewrite them`, { reason: "charset", charset: "nmtoken", count: bad.length, edge: bad[0] });
958
+ throw new GraphFormatError("E_INVALID_ID", `${bad.length} edge id${plural(bad.length)} ${agree(bad.length, "is", "are")} not XML name tokens (first: ${JSON.stringify(edgeIdText(column, bad[0]))} at edge ${bad[0]}); pass sanitizeIds: "mangle" to rewrite them`, { reason: "charset", charset: "nmtoken", count: bad.length, edge: bad[0] });
940
959
  }
941
960
  for (const e of bad) {
942
961
  const base = mangleNmtoken(edgeIdText(column, e));
@@ -1149,10 +1168,12 @@ function* writeNodeSubtree(root, plan, ids, indent, step, stackNode, stackCursor
1149
1168
  }
1150
1169
  }
1151
1170
  /**
1152
- * The GraphML exporter (design section 8.5).
1171
+ * The GraphML exporter.
1172
+ * @category Built-in formats
1153
1173
  */
1154
1174
  export const graphmlExporter = Object.freeze({
1155
1175
  format: FORMAT,
1176
+ options: Object.freeze(["edgedefault", "pretty"]),
1156
1177
  capabilities: CAPABILITIES,
1157
1178
  /**
1158
1179
  * Pre-flight: every loss the export would incur.