@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,6 +1,5 @@
1
1
  /**
2
- * The issue and loss codes shared by more than one format (design section 8.6: "a stable code
3
- * such as E_UNKNOWN_NODE or W_WIDENED"): one constant per condition, aliased by every format's
2
+ * The issue and loss codes shared by more than one format: one constant per condition, aliased by every format's
4
3
  * `<FMT>_ISSUE` / `<FMT>_LOSS` table, so a consumer can switch on a condition without knowing the
5
4
  * format and two importers never spell the same condition differently. A condition specific to one
6
5
  * format keeps that format's own `E_<FMT>_` / `W_<FMT>_` code next to its importer or exporter.
@@ -10,110 +9,266 @@
10
9
  * format prefix.
11
10
  */
12
11
 
12
+ import type { GraphFormatErrorCode } from "@graphty/graph-format";
13
+
13
14
  // ============================================================ importer issues
14
15
 
15
- /** The element (node, attribute, key, ...) has no id where the format requires one. */
16
+ /**
17
+ * The URL could not be fetched (network failure, CORS refusal or a non-2xx status).
18
+ * @category Issue and loss codes
19
+ */
20
+ export const FETCH_CODE = "E_FETCH";
21
+
22
+ /**
23
+ * The element (node, attribute, key, ...) has no id where the format requires one.
24
+ * @category Issue and loss codes
25
+ */
16
26
  export const MISSING_ID_CODE = "E_MISSING_ID";
17
27
 
18
- /** An edge has no source or no target. */
28
+ /**
29
+ * An edge has no source or no target.
30
+ * @category Issue and loss codes
31
+ */
19
32
  export const MISSING_ENDPOINT_CODE = "E_MISSING_ENDPOINT";
20
33
 
21
- /** A node id declared twice; the second declaration merges into the first. */
34
+ /**
35
+ * A node id declared twice; the second declaration merges into the first.
36
+ * @category Issue and loss codes
37
+ */
22
38
  export const DUPLICATE_NODE_CODE = "W_DUPLICATE_NODE";
23
39
 
24
- /** The document declares no graph at all (fatal). */
40
+ /**
41
+ * The file declares no graph at all. The import stops.
42
+ * @category Issue and loss codes
43
+ */
25
44
  export const NO_GRAPH_CODE = "E_NO_GRAPH";
26
45
 
27
- /** A second graph in one document is merged into the first. */
46
+ /**
47
+ * The file holds several graphs and only the first was read (GraphML and GEXF merge them into one graph instead). It is not added when `graphIndex` or `graphName` chose the graph.
48
+ * `importAllGraphs()` reads every one.
49
+ * @category Issue and loss codes
50
+ */
28
51
  export const MULTIPLE_GRAPHS_CODE = "W_MULTIPLE_GRAPHS";
29
52
 
30
- /** The input is empty (fatal). */
53
+ /**
54
+ * The input is empty. The import stops.
55
+ * @category Issue and loss codes
56
+ */
31
57
  export const EMPTY_INPUT_CODE = "E_EMPTY_INPUT";
32
58
 
33
- /** The text grammar of the format is violated (fatal; the message carries the detail). */
59
+ /**
60
+ * The text breaks the format's syntax; the message says where and how. The import stops.
61
+ * @category Issue and loss codes
62
+ */
34
63
  export const SYNTAX_CODE = "E_SYNTAX";
35
64
 
36
- /** The XML is not well-formed (fatal; the message carries the detail and the line). */
65
+ /**
66
+ * The XML is not well-formed; the message says where. The import stops.
67
+ * @category Issue and loss codes
68
+ */
37
69
  export const XML_SYNTAX_CODE = "E_XML_SYNTAX";
38
70
 
39
- /** An element the format does not define at that place was skipped. */
71
+ /**
72
+ * An element the format does not define at that place was skipped.
73
+ * @category Issue and loss codes
74
+ */
40
75
  export const UNKNOWN_ELEMENT_CODE = "W_UNKNOWN_ELEMENT";
41
76
 
42
- /** Text where the format allows only elements was ignored. */
77
+ /**
78
+ * Text where the format allows only elements was ignored.
79
+ * @category Issue and loss codes
80
+ */
43
81
  export const STRAY_TEXT_CODE = "W_STRAY_TEXT";
44
82
 
45
- /** A `pid` / parent reference names a node the document never declares. */
83
+ /**
84
+ * A `pid` / parent reference names a node the document never declares.
85
+ * @category Issue and loss codes
86
+ */
46
87
  export const UNKNOWN_PARENT_CODE = "E_UNKNOWN_PARENT";
47
88
 
48
- /** A hyperedge under the `hyperedges: "error"` policy (fatal). */
89
+ /**
90
+ * A hyperedge (an edge with more than two ends) while `hyperedges` is "error". The import stops.
91
+ * @category Issue and loss codes
92
+ */
49
93
  export const HYPEREDGE_CODE = "E_HYPEREDGE";
50
94
 
51
- /** A declaration's key / attribute id is declared twice. */
95
+ /**
96
+ * A declaration's key / attribute id is declared twice.
97
+ * @category Issue and loss codes
98
+ */
52
99
  export const DUPLICATE_KEY_CODE = "E_DUPLICATE_KEY";
53
100
 
54
101
  /**
55
- * A column was renamed `<name>#<origin.id>` because the name was taken in the sink's table
56
- * (design section 5.6).
102
+ * An attribute was renamed `<name>#<suffix>` because another attribute already has its name, for example a repeated
103
+ * column header.
104
+ * @category Issue and loss codes
57
105
  */
58
106
  export const COLUMN_RENAMED_CODE = "W_COLUMN_RENAMED";
59
107
 
60
- /** A column's role was dropped because another column of the table already holds it (design section 5.5). */
108
+ /**
109
+ * A node or edge attribute is not written, because the format has nowhere to put it.
110
+ * @category Issue and loss codes
111
+ */
112
+ export const COLUMN_DROPPED_CODE = "W_COLUMN_DROPPED";
113
+
114
+ /**
115
+ * You read into a graph builder that already has an id, label or position attribute, so this file's one is kept as a
116
+ * plain attribute.
117
+ * @category Issue and loss codes
118
+ */
61
119
  export const ROLE_TAKEN_CODE = "W_ROLE_TAKEN";
62
120
 
63
- /** A long value beyond 2^53 was stored as the nearest f64 (design section 5.1). */
121
+ /**
122
+ * An integer beyond 2^53 was stored as the nearest 64-bit float; pass `long: "string"` to keep every digit.
123
+ * @category Issue and loss codes
124
+ */
64
125
  export const PRECISION_CODE = "W_PRECISION";
65
126
 
66
- /** Two distinct id texts became one number under ids "number" (design section 4.1). */
127
+ /**
128
+ * Two different id texts became the same number because `ids` is "number" (for example, "042" and "42"), so their nodes were
129
+ * merged.
130
+ * @category Issue and loss codes
131
+ */
67
132
  export const ID_MERGED_CODE = "W_ID_MERGED";
68
133
 
69
- /** A builder-policy option the caller asked for that the sink does not honour (design section 8.4). */
134
+ /**
135
+ * You read into your own graph builder, which was created with a different `addMissingNodes`, `duplicateEdges`,
136
+ * `selfLoops` or `weightDtype` than the option you passed; the builder's setting applies.
137
+ * @category Issue and loss codes
138
+ */
70
139
  export const SINK_OPTION_CODE = "W_SINK_OPTION";
71
140
 
72
- /** A common option the format has no use for (or cannot honour) was given a non-default value (design section 8.4). */
141
+ /**
142
+ * You set an option this format does not use; it had no effect. The message names the option.
143
+ * @category Issue and loss codes
144
+ */
73
145
  export const OPTION_IGNORED_CODE = "W_OPTION_IGNORED";
74
146
 
75
- /** An invalid UTF-8 sequence in the input (fatal). */
147
+ /**
148
+ * The input is not valid UTF-8. The import stops.
149
+ * @category Issue and loss codes
150
+ */
76
151
  export const INVALID_UTF8_CODE = "E_INVALID_UTF8";
77
152
 
78
- /** Bytes that are not valid in the encoding a BOM, a declaration or the `encoding` option chose (fatal). */
153
+ /**
154
+ * Some bytes are not valid in the encoding that was chosen (by a byte order mark, the file's own declaration or the
155
+ * `encoding` option). The import stops.
156
+ * @category Issue and loss codes
157
+ */
79
158
  export const INVALID_ENCODING_CODE = "E_INVALID_ENCODING";
80
159
 
81
- /** Bytes that are not valid UTF-8 (and declare no other encoding) were read as windows-1252. */
160
+ /**
161
+ * Bytes that are not valid UTF-8 (and declare no other encoding) were read as windows-1252.
162
+ * @category Issue and loss codes
163
+ */
82
164
  export const ENCODING_FALLBACK_CODE = "W_ENCODING_FALLBACK";
83
165
 
84
- /** The file declares an encoding the platform's TextDecoder does not know; the declaration is ignored. */
166
+ /**
167
+ * The file declares an encoding the platform's TextDecoder does not know; the declaration is ignored.
168
+ * @category Issue and loss codes
169
+ */
85
170
  export const UNKNOWN_ENCODING_CODE = "W_UNKNOWN_ENCODING";
86
171
 
87
- /** The sink refused the file's direction (locked or non-empty); the file is read as the sink's. */
172
+ /**
173
+ * A byte order mark, the `encoding` option and the encoding the file declares disagree, or the file
174
+ * declares UTF-16 over bytes that are not UTF-16; the message names which one applied (a BOM wins
175
+ * over the option and the declaration, the option over the declaration).
176
+ * @category Issue and loss codes
177
+ */
178
+ export const ENCODING_CONFLICT_CODE = "W_ENCODING_CONFLICT";
179
+
180
+ /**
181
+ * The text holds a control character, such as a NUL byte or an escape character, which is kept in the id or value it
182
+ * is part of; or it ends with a Ctrl-Z end-of-file marker, which was ignored. Reported once per import.
183
+ * @category Issue and loss codes
184
+ */
185
+ export const CONTROL_CHARACTER_CODE = "W_CONTROL_CHARACTER";
186
+
187
+ /**
188
+ * The input is a known kind of file that is not a graph: an HTML page, a PDF, compressed or zip data, or an image. The
189
+ * import stops.
190
+ * @category Issue and loss codes
191
+ */
192
+ export const FOREIGN_FORMAT_CODE = "E_FOREIGN_FORMAT";
193
+
194
+ /**
195
+ * More warnings of one code than a report keeps: the first ones are kept and this one warning (the
196
+ * suppressed code as its element) counts the rest.
197
+ * @category Issue and loss codes
198
+ */
199
+ export const ISSUES_SUPPRESSED_CODE = "W_ISSUES_SUPPRESSED";
200
+
201
+ /**
202
+ * An XML attribute the format does not define (or does not keep) on that element; it is not kept.
203
+ * @category Issue and loss codes
204
+ */
205
+ export const UNKNOWN_XML_ATTRIBUTE_CODE = "W_UNKNOWN_XML_ATTRIBUTE";
206
+
207
+ /**
208
+ * You read into a graph builder that already holds edges (or whose direction is locked), and its direction differs
209
+ * from the file's, so the file is read with the builder's direction. A builder without edges takes the file's
210
+ * direction.
211
+ * @category Issue and loss codes
212
+ */
88
213
  export const DIRECTION_REFUSED_CODE = "W_DIRECTION_REFUSED";
89
214
 
90
- /** Edges of the other direction were forced to the policy's direction. */
215
+ /**
216
+ * `onMixedDirection` ("directed" or "undirected") made edges take a direction the file did not give them. It can
217
+ * appear twice in one report: once for the direction the file declares and once for the edges that declared
218
+ * their own.
219
+ * @category Issue and loss codes
220
+ */
91
221
  export const DIRECTION_FORCED_CODE = "W_DIRECTION_FORCED";
92
222
 
93
- /** A mixed-direction file under onMixedDirection "error" (import), or a mixed snapshot under the same export policy. */
223
+ /**
224
+ * The graph has both directed and undirected edges and `onMixedDirection` is "error". An import stops; a save to a
225
+ * format that holds one direction per file fails with E_DIRECTED. Pass "directed" or "undirected" to read or write it
226
+ * anyway.
227
+ * @category Issue and loss codes
228
+ */
94
229
  export const MIXED_DIRECTION_CODE = "E_MIXED_DIRECTION";
95
230
 
96
- /** A `count` / `parse.nodes` hint the sink cannot reserve (ignored). */
231
+ /**
232
+ * A node or edge count the file announces is too large to reserve room for; it is ignored and the elements are read as
233
+ * they come.
234
+ * @category Issue and loss codes
235
+ */
97
236
  export const COUNT_HINT_CODE = "W_COUNT_HINT";
98
237
 
99
- /** The declared type is not one the format defines; the column is kept as string. */
238
+ /**
239
+ * The declared type is not one the format defines; the column is kept as string.
240
+ * @category Issue and loss codes
241
+ */
100
242
  export const UNKNOWN_ATTR_TYPE_CODE = "W_UNKNOWN_ATTR_TYPE";
101
243
 
102
- /** The declared default does not parse as the declared type; the column has no default. */
244
+ /**
245
+ * The declared default does not parse as the declared type; the column has no default.
246
+ * @category Issue and loss codes
247
+ */
103
248
  export const BAD_DEFAULT_CODE = "W_BAD_DEFAULT";
104
249
 
105
- /** A declared option does not parse as the declared type; the options are dropped. */
250
+ /**
251
+ * A declared option does not parse as the declared type; the options are dropped.
252
+ * @category Issue and loss codes
253
+ */
106
254
  export const BAD_OPTIONS_CODE = "W_BAD_OPTIONS";
107
255
 
108
- /** A repeated edge id in a format whose edge ids are unique; the second edge is skipped. */
256
+ /**
257
+ * A repeated edge id in a format whose edge ids are unique; the second edge is skipped.
258
+ * @category Issue and loss codes
259
+ */
109
260
  export const DUPLICATE_EDGE_ID_CODE = "E_DUPLICATE_EDGE_ID";
110
261
 
111
- /** A value does not parse as its declared type; the cell is left unset. */
262
+ /**
263
+ * A value does not parse as its declared type; the cell is left unset.
264
+ * @category Issue and loss codes
265
+ */
112
266
  export const BAD_VALUE_CODE = "E_BAD_VALUE";
113
267
 
114
268
  /**
115
- * A column's dtype was widened (design section 5.1) because a later value did not fit: an i32
116
- * column meeting a value above 2^31, two declared types for one attribute.
269
+ * An attribute's type was widened because a later value did not fit: an integer above 2^31 in an integer column, or
270
+ * two declared types for one attribute.
271
+ * @category Issue and loss codes
117
272
  */
118
273
  export const WIDENED_CODE = "W_WIDENED";
119
274
 
@@ -121,100 +276,369 @@ export const WIDENED_CODE = "W_WIDENED";
121
276
  * A reference that is not a containment link (an attribute's element id, a layout or bypass
122
277
  * entry, a subnetwork member, a view's network, an undeclared target) names nothing; reported
123
278
  * once per kind with the count.
279
+ * @category Issue and loss codes
124
280
  */
125
281
  export const DANGLING_REFERENCE_CODE = "W_DANGLING_REFERENCE";
126
282
 
127
- /** The same attribute twice on one element; one value is kept (the later, unless the format's specification says the first). */
283
+ /**
284
+ * The same attribute twice on one element; one value is kept (the later, unless the format's specification says the first).
285
+ * @category Issue and loss codes
286
+ */
128
287
  export const DUPLICATE_ATTRIBUTE_CODE = "W_DUPLICATE_ATTRIBUTE";
129
288
 
130
- /** A containment link would close a parent cycle; that one link is dropped. */
289
+ /**
290
+ * A containment link would close a parent cycle; that one link is dropped.
291
+ * @category Issue and loss codes
292
+ */
131
293
  export const PARENT_CYCLE_CODE = "E_PARENT_CYCLE";
132
294
 
133
- /** A formula (Cytoscape's `=ABS($x)`) is kept as its text; it is never evaluated. */
295
+ /**
296
+ * A formula (Cytoscape's `=ABS($x)`) is kept as its text; it is never evaluated.
297
+ * @category Issue and loss codes
298
+ */
134
299
  export const EQUATION_AS_TEXT_CODE = "W_EQUATION_AS_TEXT";
135
300
 
136
301
  /**
137
- * The file's style rules (defaults, mappings, dependencies, visual property aspects) are not
138
- * applied to the snapshot; recorded once per import, the message names what was not applied.
302
+ * The file's style rules (default styles, mappings, visual properties) are not applied to the graph. Reported once per
303
+ * import; the message names what was not applied.
304
+ * @category Issue and loss codes
139
305
  */
140
306
  export const STYLES_NOT_IMPORTED_CODE = "W_STYLES_NOT_IMPORTED";
141
307
 
142
- /** A CX array member that is not a one-key object holding an array or an object; the block is skipped. */
308
+ /**
309
+ * A CX file is an array of blocks, each an object with one key (`{"nodes": [...]}`). A member of that array
310
+ * that is not such a block cannot be read and is skipped; the rest of the file is read.
311
+ * @category Issue and loss codes
312
+ */
143
313
  export const BAD_ASPECT_BLOCK_CODE = "E_BAD_ASPECT_BLOCK";
144
314
 
145
- /** A CX aspect out of its place (after the post-metadata, a status that is not last, a block buffered for what it depends on). */
315
+ /**
316
+ * A CX array member holding several aspects (`{"nodes": [...], "edges": [...]}`); each array-valued key is read as its own fragment.
317
+ * @category Issue and loss codes
318
+ */
319
+ export const MULTI_ASPECT_FRAGMENT_CODE = "W_MULTI_ASPECT_FRAGMENT";
320
+
321
+ /**
322
+ * A CX aspect, an array of elements, written as one object (`{"nodes": {"@id": 1}}`); read as one element.
323
+ * @category Issue and loss codes
324
+ */
325
+ export const SINGLE_OBJECT_ASPECT_CODE = "W_SINGLE_OBJECT_ASPECT";
326
+
327
+ /**
328
+ * The document uses the bare tokens NaN, Infinity or -Infinity (Python's json writes them), which
329
+ * strict JSON does not allow; read as the numbers.
330
+ * @category Issue and loss codes
331
+ */
332
+ export const JSON_NONSTANDARD_NUMBER_CODE = "W_JSON_NONSTANDARD_NUMBER";
333
+
334
+ /**
335
+ * A CX aspect out of its place (after the post-metadata, a status that is not last, a block buffered for what it depends on).
336
+ * @category Issue and loss codes
337
+ */
146
338
  export const ASPECT_ORDER_CODE = "W_ASPECT_ORDER";
147
339
 
148
- /** A declared element count disagrees with what was read. */
340
+ /**
341
+ * A declared element count disagrees with what was read.
342
+ * @category Issue and loss codes
343
+ */
149
344
  export const COUNT_MISMATCH_CODE = "W_COUNT_MISMATCH";
150
345
 
151
- /** The producer marked the document as failed (CX `status.success: false`): it is incomplete (fatal). */
346
+ /**
347
+ * The program that wrote the file marked it as failed (CX `status.success: false`), so it is incomplete. The import
348
+ * stops.
349
+ * @category Issue and loss codes
350
+ */
152
351
  export const STATUS_FAILED_CODE = "E_STATUS_FAILED";
153
352
 
154
- /** The producer marked the document as successful but attached an error text. */
353
+ /**
354
+ * The producer marked the document as successful but attached an error text.
355
+ * @category Issue and loss codes
356
+ */
155
357
  export const STATUS_WARNING_CODE = "W_STATUS_WARNING";
156
358
 
157
359
  /**
158
360
  * The input is beyond a size limit (a zip's uncompressed total or ratio, a document longer than
159
361
  * one string); the same string as graph-format's E_TOO_LARGE, recorded with category "unsupported".
362
+ * @category Issue and loss codes
160
363
  */
161
364
  export const TOO_LARGE_CODE = "E_TOO_LARGE";
162
365
 
163
- /** `graphIndex` is beyond the graphs of the input, or `graphName` names none of them (fatal). */
366
+ /**
367
+ * A value that does not fit its attribute's type. An import records it for a value that does not parse as the
368
+ * type the file declares for it ("x" in an integer attribute): GraphML and GEXF leave that value unset, Neo4j CSV
369
+ * skips the row. A save throws it when an attribute value cannot be written in the format; `checkExport()` returns
370
+ * the `E_` note that names the attribute.
371
+ * @category Issue and loss codes
372
+ */
373
+ export const COLUMN_TYPE_CODE = "E_COLUMN_TYPE";
374
+
375
+ /**
376
+ * `graphIndex` is past the last graph in the file, or `graphName` matches none of them. The import stops, and
377
+ * the message lists the index and name of each graph the file holds.
378
+ * @category Issue and loss codes
379
+ */
164
380
  export const GRAPH_NOT_FOUND_CODE = "E_GRAPH_NOT_FOUND";
165
381
 
166
- /** `graphName` names more than one graph of the input; the message lists their indexes (fatal). */
382
+ /**
383
+ * `graphName` matches more than one graph; the message lists their positions. The import stops.
384
+ * @category Issue and loss codes
385
+ */
167
386
  export const AMBIGUOUS_GRAPH_NAME_CODE = "E_AMBIGUOUS_GRAPH_NAME";
168
387
 
388
+ /**
389
+ * A second edge between the same two nodes under `duplicateEdges: "error"`; the import stops.
390
+ * @category Issue and loss codes
391
+ */
392
+ export const DUPLICATE_EDGE_CODE = "E_DUPLICATE_EDGE" satisfies GraphFormatErrorCode;
393
+
394
+ /**
395
+ * An edge from a node to itself under `selfLoops: "error"`; the import stops.
396
+ * @category Issue and loss codes
397
+ */
398
+ export const SELF_LOOP_CODE = "E_SELF_LOOP" satisfies GraphFormatErrorCode;
399
+
400
+ /**
401
+ * The `duplicateEdges` option merged parallel edges into one edge per pair, so whatever told them apart (an OBO
402
+ * relation, a label) is lost. Recorded once, with the number merged.
403
+ * @category Issue and loss codes
404
+ */
405
+ export const EDGES_MERGED_CODE = "W_EDGES_MERGED";
406
+
407
+ /**
408
+ * Self-loops were removed by the `selfLoops: "drop"` option. Recorded once by importGraph() with the
409
+ * number removed.
410
+ * @category Issue and loss codes
411
+ */
412
+ export const SELF_LOOPS_DROPPED_CODE = "W_SELF_LOOPS_DROPPED";
413
+
414
+ /**
415
+ * An option name that no format and no load or save function takes, most often a misspelling (`delimeter`). The
416
+ * option has no effect. A load records it as a warning, and `checkExport()` returns it as a note. Reported only while
417
+ * every registered format lists its options, as the built-in formats do.
418
+ * @category Issue and loss codes
419
+ */
420
+ export const UNKNOWN_OPTION_CODE = "W_UNKNOWN_OPTION";
421
+
422
+ /**
423
+ * A line the `parseLine` function of a format made with defineLineFormat() could not read (it threw). The line is
424
+ * skipped; the message is the one the function threw with.
425
+ * @category Issue and loss codes
426
+ */
427
+ export const BAD_LINE_CODE = "E_BAD_LINE";
428
+
429
+ /**
430
+ * The `weightFrom` option names an attribute no edge has a value for, so the graph has no weights. The usual cause
431
+ * is one options object shared between formats: GML and Pajek keep their weights in `value`, not `weight`. Recorded
432
+ * once by importGraph().
433
+ * @category Issue and loss codes
434
+ */
435
+ export const WEIGHT_NOT_FOUND_CODE = "W_WEIGHT_NOT_FOUND";
436
+
169
437
  // ============================================================ exporter loss notes
170
438
 
171
- /** A role column the format has no slot for is written as a plain attribute (the role is lost). */
439
+ /**
440
+ * An attribute with a role the format has no place for is written as a plain attribute; the role is lost.
441
+ * @category Issue and loss codes
442
+ */
172
443
  export const ROLE_DROPPED_CODE = "W_ROLE_DROPPED";
173
444
 
174
- /** A parents (multi-parent) column in a format with single containment only. */
445
+ /**
446
+ * A parents (multi-parent) column in a format with single containment only.
447
+ * @category Issue and loss codes
448
+ */
175
449
  export const PARENTS_DROPPED_CODE = "W_PARENTS_DROPPED";
176
450
 
177
- /** A start / end / timestamp column in a format without temporal support. */
451
+ /**
452
+ * A start / end / timestamp column in a format without temporal support.
453
+ * @category Issue and loss codes
454
+ */
178
455
  export const TEMPORAL_DROPPED_CODE = "W_TEMPORAL_DROPPED";
179
456
 
180
- /** A mutual pair is written as two directed edges without the mutual mark. */
457
+ /**
458
+ * A mutual pair is written as two directed edges without the mutual mark.
459
+ * @category Issue and loss codes
460
+ */
181
461
  export const MUTUAL_EXPANDED_CODE = "W_MUTUAL_EXPANDED";
182
462
 
183
- /** A mutual pair is written as one undirected edge; the pair reads back undirected, the mark is lost. */
463
+ /**
464
+ * A mutual pair is written as one undirected edge; the pair reads back undirected, the mark is lost.
465
+ * @category Issue and loss codes
466
+ */
184
467
  export const MUTUAL_AS_UNDIRECTED_CODE = "W_MUTUAL_AS_UNDIRECTED";
185
468
 
186
- /** Node ids whose written text reads back as the other type under the importer's id rule. */
469
+ /**
470
+ * Node ids whose written text reads back as the other type under the importer's id rule.
471
+ * @category Issue and loss codes
472
+ */
187
473
  export const ID_TEXT_TYPE_CODE = "W_ID_TEXT_TYPE";
188
474
 
189
- /** Two node ids share one written text; export() throws E_INVALID_ID. */
475
+ /**
476
+ * Two node ids would be written as the same text (the number 5 and the text "5"); the save fails with E_INVALID_ID.
477
+ * @category Issue and loss codes
478
+ */
190
479
  export const ID_TEXT_COLLISION_CODE = "E_ID_TEXT_COLLISION";
191
480
 
192
- /** A `<column>.text` companion (design section 5.1) the format cannot carry. */
481
+ /**
482
+ * A `<column>.text` companion the format cannot carry.
483
+ * @category Issue and loss codes
484
+ */
193
485
  export const TEMPORAL_TEXT_DROPPED_CODE = "W_TEMPORAL_TEXT_DROPPED";
194
486
 
195
- /** A plain column named like the importer's weight key reads back as THE weight. */
487
+ /**
488
+ * The graph has edge weights and the file does not keep them: every edge reads back with the default weight 1.
489
+ * @category Issue and loss codes
490
+ */
491
+ export const WEIGHTS_DROPPED_CODE = "W_WEIGHTS_DROPPED";
492
+
493
+ /**
494
+ * An attribute without the weight role is named like the attribute graph-io reads weights from (for example, `weight`), so it
495
+ * reads back as the edge weight.
496
+ * @category Issue and loss codes
497
+ */
196
498
  export const WEIGHT_KEY_CLASH_CODE = "W_WEIGHT_KEY_CLASH";
197
499
 
198
- /** A role-less column whose written name the importer maps to a role. */
500
+ /**
501
+ * An attribute without a role is written where the format keeps a role (for example, a `name` column as the label), and reads
502
+ * back with that role.
503
+ * @category Issue and loss codes
504
+ */
199
505
  export const ROLE_ASSUMED_CODE = "W_ROLE_ASSUMED";
200
506
 
201
- /** A role column written into the format's slot reads back under the importer's fixed name. */
507
+ /**
508
+ * An attribute with a role (for example, the label) is written where the format keeps that role, and reads back under the name
509
+ * the format's importer gives it.
510
+ * @category Issue and loss codes
511
+ */
202
512
  export const COLUMN_RENAMED_LOSS_CODE = "W_COLUMN_NAME_CHANGED";
203
513
 
204
- /** A declared column whose every row is unset is not written by a format without declarations. */
514
+ /**
515
+ * A declared column whose every row is unset is not written by a format without declarations.
516
+ * @category Issue and loss codes
517
+ */
205
518
  export const EMPTY_COLUMN_DROPPED_CODE = "W_EMPTY_COLUMN_DROPPED";
206
519
 
207
- /** A string / dict column whose cardinality makes the importer read it back as the other storage class. */
520
+ /**
521
+ * A text attribute reads back as a dictionary attribute, or the reverse, because the importer chooses by how often its
522
+ * values repeat. The values are the same.
523
+ * @category Issue and loss codes
524
+ */
208
525
  export const STORAGE_CLASS_CODE = "W_STORAGE_CLASS_CHANGED";
209
526
 
210
- /** An f64 column whose set values are all integral reads back as i32 through an untyped format. */
527
+ /**
528
+ * A number attribute whose values are all whole numbers reads back as integers, because the format does not record the
529
+ * type.
530
+ * @category Issue and loss codes
531
+ */
211
532
  export const INTEGRAL_F64_CODE = "W_INTEGRAL_F64_AS_I32";
212
533
 
213
- /** A text cell that reads back as a number or boolean under the 5.1 grammar (its lexical form may change). */
534
+ /**
535
+ * A text value that reads back as a number or a boolean, because the format does not record that it was text (the text
536
+ * "42" reads back as the number 42).
537
+ * @category Issue and loss codes
538
+ */
214
539
  export const TEXT_INFERRED_CODE = "W_TEXT_INFERRED";
215
540
 
216
- /** A string cell holding a character XML 1.0 forbids; export() throws E_COLUMN_TYPE. */
541
+ /**
542
+ * A text value holds a character XML 1.0 forbids (most control characters); the save fails with E_COLUMN_TYPE.
543
+ * @category Issue and loss codes
544
+ */
217
545
  export const XML_ILLEGAL_CHAR_CODE = "E_XML_ILLEGAL_CHAR";
218
546
 
219
- /** A dict column without declared options gains one from its dictionary on re-import. */
547
+ /**
548
+ * An ontology exporter (OBO, OBO Graphs) writes a node column outside its vocabulary as property values; it reads back inside the `property_value` column.
549
+ * @category Issue and loss codes
550
+ */
551
+ export const COLUMN_AS_PROPERTY_VALUE_CODE = "W_COLUMN_AS_PROPERTY_VALUE";
552
+
553
+ /**
554
+ * An ontology exporter writes an edge without a relation as `is_a` (or the relation the caller chose).
555
+ * @category Issue and loss codes
556
+ */
557
+ export const RELATION_ASSUMED_CODE = "W_RELATION_ASSUMED";
558
+
559
+ /**
560
+ * An ontology exporter writes Typedef (property) nodes; they read back as nodes only under the importer's `typedefs: "nodes"`.
561
+ * @category Issue and loss codes
562
+ */
563
+ export const TYPEDEF_NODES_CODE = "W_TYPEDEF_NODES";
564
+
565
+ /**
566
+ * A graph attribute is written into the file's metadata and reads back in `snapshot.meta.extra`, not as a graph
567
+ * attribute.
568
+ * @category Issue and loss codes
569
+ */
570
+ export const GRAPH_COLUMN_AS_METADATA_CODE = "W_GRAPH_COLUMN_AS_METADATA";
571
+
572
+ /**
573
+ * The file cannot record direction: an undirected graph's edges read back as directed, or the whole graph reads back
574
+ * with the importer's default direction.
575
+ * @category Issue and loss codes
576
+ */
577
+ export const DIRECTION_DROPPED_CODE = "W_DIRECTION_DROPPED";
578
+
579
+ /**
580
+ * NaN and the infinities cannot be written; they are written as null and read back unset.
581
+ * @category Issue and loss codes
582
+ */
583
+ export const NONFINITE_AS_NULL_CODE = "W_NONFINITE_AS_NULL";
584
+
585
+ /**
586
+ * The nodes read back in a different order.
587
+ * @category Issue and loss codes
588
+ */
589
+ export const NODE_ORDER_CODE = "W_NODE_ORDER";
590
+
591
+ /**
592
+ * A text attribute stored as a dictionary, without a declared list of allowed values, reads back with its distinct
593
+ * values as that list.
594
+ * @category Issue and loss codes
595
+ */
220
596
  export const OPTIONS_GAINED_CODE = "W_OPTIONS_GAINED";
597
+
598
+ // ============================================================ the graph builder
599
+
600
+ /**
601
+ * The issue codes every importer can record when the graph refuses an element, by name; every
602
+ * format's `<FMT>_ISSUE` table includes them. Each one skips that element and counts toward
603
+ * `errorLimit`.
604
+ * @category Issue and loss codes
605
+ */
606
+ export const ELEMENT_ISSUE = Object.freeze({
607
+ /** A node id of a type the graph cannot hold (an empty id, a non-finite number, an object). The node is skipped. */
608
+ INVALID_ID: "E_INVALID_ID",
609
+ /** An edge names a node the file never declares, while `addMissingNodes` is false. The edge is skipped. */
610
+ UNKNOWN_NODE: "E_UNKNOWN_NODE",
611
+ /**
612
+ * An edge weight that is not a number (text such as "2,5" with a decimal comma, NaN, a boolean). The whole edge is
613
+ * skipped, not only its weight.
614
+ */
615
+ INVALID_WEIGHT: "E_INVALID_WEIGHT",
616
+ /** A second edge between the same two nodes, while `duplicateEdges` is "error". The edge is skipped. */
617
+ DUPLICATE_EDGE: DUPLICATE_EDGE_CODE,
618
+ /** An edge from a node to itself, while `selfLoops` is "error". The edge is skipped. */
619
+ SELF_LOOP: SELF_LOOP_CODE,
620
+ /** An edge id declared twice. The second edge is skipped. */
621
+ DUPLICATE_EDGE_ID: DUPLICATE_EDGE_ID_CODE,
622
+ });
623
+
624
+ // ============================================================ the input layer
625
+
626
+ /**
627
+ * The issue codes every importer can record for input it cannot read (empty, too large, invalid
628
+ * bytes, not a graph file), by name; every format's `<FMT>_ISSUE` table includes them.
629
+ * @category Issue and loss codes
630
+ */
631
+ export const INPUT_ISSUE = Object.freeze({
632
+ /** The input is empty or holds only whitespace. The import stops. */
633
+ EMPTY_INPUT: EMPTY_INPUT_CODE,
634
+ /** The input, or one of its lines, is longer than a JavaScript string can hold. The import stops. */
635
+ TOO_LARGE: TOO_LARGE_CODE,
636
+ /** A byte order mark, the encoding option and the declared encoding disagree. */
637
+ ENCODING_CONFLICT: ENCODING_CONFLICT_CODE,
638
+ /** A control character or a stray U+FEFF in the text, or an ignored trailing Ctrl-Z. */
639
+ CONTROL_CHARACTER: CONTROL_CHARACTER_CODE,
640
+ /** The input is an HTML page, a PDF, compressed or zip data, or an image. The import stops. */
641
+ FOREIGN_FORMAT: FOREIGN_FORMAT_CODE,
642
+ /** Warnings of one code beyond the number a report keeps, counted in one warning. */
643
+ ISSUES_SUPPRESSED: ISSUES_SUPPRESSED_CODE,
644
+ });