@graphty/graph-io 0.3.25 → 0.3.27

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-DrXtu_96.js +56 -0
  4. package/dist/chunks/choose-DrXtu_96.js.map +1 -0
  5. package/dist/chunks/constants-ikG85dT8.js +231 -0
  6. package/dist/chunks/constants-ikG85dT8.js.map +1 -0
  7. package/dist/chunks/{escape-B-tkk_Cl.js → escape-D1HPTUrP.js} +390 -99
  8. package/dist/chunks/escape-D1HPTUrP.js.map +1 -0
  9. package/dist/chunks/export-CHd4tQE2.js +4333 -0
  10. package/dist/chunks/export-CHd4tQE2.js.map +1 -0
  11. package/dist/chunks/{importer-eUREhBGj.js → exporter-D23CKNqF.js} +4969 -3201
  12. package/dist/chunks/exporter-D23CKNqF.js.map +1 -0
  13. package/dist/chunks/{exporter-DIeGJXAZ.js → exporter-DfWTgrti.js} +23 -21
  14. package/dist/chunks/exporter-DfWTgrti.js.map +1 -0
  15. package/dist/chunks/exporter-DhtW6FxK.js +3465 -0
  16. package/dist/chunks/exporter-DhtW6FxK.js.map +1 -0
  17. package/dist/chunks/{exporter-BGrsWamJ.js → exporter-IHv4nkCm.js} +38 -229
  18. package/dist/chunks/exporter-IHv4nkCm.js.map +1 -0
  19. package/dist/chunks/{importer-BWY2FFc5.js → importer-B1wmPQjr.js} +255 -77
  20. package/dist/chunks/importer-B1wmPQjr.js.map +1 -0
  21. package/dist/chunks/{importer-D_e7e7LX.js → importer-B2W_58pz.js} +399 -146
  22. package/dist/chunks/importer-B2W_58pz.js.map +1 -0
  23. package/dist/chunks/importer-BSALvkui.js +2811 -0
  24. package/dist/chunks/importer-BSALvkui.js.map +1 -0
  25. package/dist/chunks/{importer-vi3bSdtw.js → importer-BVRE--Un.js} +510 -77
  26. package/dist/chunks/importer-BVRE--Un.js.map +1 -0
  27. package/dist/chunks/{importer-DET1tg6s.js → importer-CIAzt-wo.js} +1689 -312
  28. package/dist/chunks/importer-CIAzt-wo.js.map +1 -0
  29. package/dist/chunks/{importer-DIrbbnAf.js → importer-DpEW5zeG.js} +585 -226
  30. package/dist/chunks/importer-DpEW5zeG.js.map +1 -0
  31. package/dist/chunks/{importer-zGLo8Dg_.js → importer-z_FL4VMb.js} +488 -161
  32. package/dist/chunks/importer-z_FL4VMb.js.map +1 -0
  33. package/dist/chunks/json-elements-BAmNBZok.js +1225 -0
  34. package/dist/chunks/json-elements-BAmNBZok.js.map +1 -0
  35. package/dist/chunks/ontology-export-Bab4eUA8.js +357 -0
  36. package/dist/chunks/ontology-export-Bab4eUA8.js.map +1 -0
  37. package/dist/chunks/{records-dbRkxwaq.js → records-CdlvL4RO.js} +298 -114
  38. package/dist/chunks/records-CdlvL4RO.js.map +1 -0
  39. package/dist/chunks/{text-Dr0Ifpag.js → text-DzXjAiTl.js} +29 -11
  40. package/dist/chunks/text-DzXjAiTl.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 +952 -262
  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 +344 -87
  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 +565 -158
  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 +21 -3
  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 +39 -22
  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 +869 -189
  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 +3 -1
  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 +402 -85
  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 +146 -33
  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 +682 -287
  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 +227 -80
  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 +101 -27
  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 +110 -28
  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 +239 -86
  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 +67 -35
  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 +186 -54
  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 +21 -22
  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 +8 -3
  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 +40 -6
  468. package/src/common/direction.ts +78 -51
  469. package/src/common/escape.ts +39 -22
  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 +1035 -199
  475. package/src/common/line-format.ts +249 -0
  476. package/src/common/lists.ts +7 -2
  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 +479 -90
  487. package/src/common/zip.ts +169 -7
  488. package/src/formats/csv/exporter.ts +202 -47
  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 +890 -302
  496. package/src/formats/cx/index.ts +4 -3
  497. package/src/formats/cx2/exporter.ts +62 -339
  498. package/src/formats/cx2/importer.ts +318 -87
  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 +142 -34
  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 +113 -28
  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 +321 -102
  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 +90 -42
  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 +216 -55
  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 +36 -28
  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 +12 -4
  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
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Compare two snapshots node by node, edge by edge and value by value, for testing a format plugin:
3
+ * read a file, save it, read the saved file back, and compare. Every difference should be one that
4
+ * the save's checkExport() notes announced.
5
+ */
6
+ import { type GraphSnapshot } from "@graphty/graph-format";
7
+ /**
8
+ * One difference between two snapshots.
9
+ * @category Plugin helpers
10
+ */
11
+ export interface SnapshotDiff {
12
+ /** Where: "directed", "ids[3]", "nodes.label[4]", "edges.weight[0]", "extensions.temporal:node:price.rowCount"... */
13
+ readonly path: string;
14
+ /** The value in the expected snapshot. */
15
+ readonly expected: unknown;
16
+ /** The value in the actual snapshot. */
17
+ readonly actual: unknown;
18
+ /** A one-line description. */
19
+ readonly message: string;
20
+ }
21
+ /**
22
+ * What compareSnapshots() compares.
23
+ * @category Plugin helpers
24
+ */
25
+ export interface CompareOptions {
26
+ /** Column names to skip in every table (format-owned helpers an exporter adds, for instance). */
27
+ readonly ignoreColumns?: readonly string[] | undefined;
28
+ /** Column roles to skip in every table. */
29
+ readonly ignoreRoles?: readonly string[] | undefined;
30
+ /** Whether the actual snapshot may hold columns the expected one lacks (default true). */
31
+ readonly allowExtraColumns?: boolean | undefined;
32
+ /** Whether dtypes must match (default true); false compares values only. */
33
+ readonly dtypes?: boolean | undefined;
34
+ /** Whether roles must match (default true). */
35
+ readonly roles?: boolean | undefined;
36
+ /** Whether origin.type must match (default false). */
37
+ readonly originType?: boolean | undefined;
38
+ /** Absolute tolerance for numeric cell and weight comparisons (default 0: Object.is). */
39
+ readonly tolerance?: number | undefined;
40
+ /** Whether the explicit / defaulted status of weights must match (default true). */
41
+ readonly weightExplicitness?: boolean | undefined;
42
+ /** Whether extension tables are compared (default true). */
43
+ readonly extensions?: boolean | undefined;
44
+ /** Stop after this many differences (default 50). */
45
+ readonly limit?: number | undefined;
46
+ }
47
+ /**
48
+ * Compare two snapshots: the direction, the node ids, the edges, the weights and every attribute
49
+ * value. Use it to test a format plugin: read a file, save it in your format, read the saved file
50
+ * back, and compare the two graphs. Each difference has a `path` ("ids[3]", "nodes.label[4]",
51
+ * "edges.weight[0]") and a one-line `message`; every one should match a note that `checkExport()`
52
+ * returned for the save.
53
+ * @example
54
+ * ```ts
55
+ * const notes = checkExport(original, "pairs");
56
+ * const readBack = (await importGraph(await exportGraphToString(original, "pairs"), { format: "pairs" })).snapshot;
57
+ * console.log(describeDiffs(compareSnapshots(original, readBack)));
58
+ * ```
59
+ * @param expected - the graph you saved
60
+ * @param actual - the graph read back from the saved file
61
+ * @param options - what to compare
62
+ * @returns the differences, empty when the graphs are the same
63
+ * @category Plugin helpers
64
+ */
65
+ export declare function compareSnapshots(expected: GraphSnapshot, actual: GraphSnapshot, options?: CompareOptions): SnapshotDiff[];
66
+ /**
67
+ * Deep equality with a numeric tolerance (for the tests).
68
+ * @param e - expected
69
+ * @param a - actual
70
+ * @param tolerance - absolute tolerance for numbers
71
+ * @returns true when equal
72
+ */
73
+ export declare function valuesEqual(e: unknown, a: unknown, tolerance: number): boolean;
74
+ /**
75
+ * The differences compareSnapshots() found, one per line, for printing.
76
+ * @param diffs - the differences
77
+ * @returns one line per difference, "no differences" when empty
78
+ * @category Plugin helpers
79
+ */
80
+ export declare function describeDiffs(diffs: readonly SnapshotDiff[]): string;
81
+ //# sourceMappingURL=compare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/common/compare.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB,qHAAqH;IACrH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,8BAA8B;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,iGAAiG;IACjG,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACvD,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,0FAA0F;IAC1F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjD,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,yFAAyF;IACzF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,oFAAoF;IACpF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClD,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,qDAAqD;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,cAAmB,GAC7B,YAAY,EAAE,CA2BhB;AAsSD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAyB9E;AAsCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAEpE"}
@@ -0,0 +1,394 @@
1
+ /**
2
+ * Compare two snapshots node by node, edge by edge and value by value, for testing a format plugin:
3
+ * read a file, save it, read the saved file back, and compare. Every difference should be one that
4
+ * the save's checkExport() notes announced.
5
+ */
6
+ /**
7
+ * Compare two snapshots: the direction, the node ids, the edges, the weights and every attribute
8
+ * value. Use it to test a format plugin: read a file, save it in your format, read the saved file
9
+ * back, and compare the two graphs. Each difference has a `path` ("ids[3]", "nodes.label[4]",
10
+ * "edges.weight[0]") and a one-line `message`; every one should match a note that `checkExport()`
11
+ * returned for the save.
12
+ * @example
13
+ * ```ts
14
+ * const notes = checkExport(original, "pairs");
15
+ * const readBack = (await importGraph(await exportGraphToString(original, "pairs"), { format: "pairs" })).snapshot;
16
+ * console.log(describeDiffs(compareSnapshots(original, readBack)));
17
+ * ```
18
+ * @param expected - the graph you saved
19
+ * @param actual - the graph read back from the saved file
20
+ * @param options - what to compare
21
+ * @returns the differences, empty when the graphs are the same
22
+ * @category Plugin helpers
23
+ */
24
+ export function compareSnapshots(expected, actual, options = {}) {
25
+ const diffs = [];
26
+ const limit = options.limit ?? 50;
27
+ const tolerance = options.tolerance ?? 0;
28
+ const ctx = {
29
+ options,
30
+ diff: (path, e, a, message) => {
31
+ diffs.push({
32
+ path,
33
+ expected: e,
34
+ actual: a,
35
+ message: message ?? `${path}: expected ${show(e)}, got ${show(a)}`,
36
+ });
37
+ if (diffs.length >= limit) {
38
+ throw new LimitReached();
39
+ }
40
+ },
41
+ same: (e, a) => valuesEqual(e, a, tolerance),
42
+ };
43
+ try {
44
+ compareGraphs(expected, actual, ctx);
45
+ }
46
+ catch (err) {
47
+ if (!(err instanceof LimitReached)) {
48
+ throw err;
49
+ }
50
+ }
51
+ return diffs;
52
+ }
53
+ /** Thrown by the recorder once the limit of differences is reached, to end the walk. */
54
+ class LimitReached extends Error {
55
+ }
56
+ /**
57
+ * Compare two snapshots step by step: the counts, the ids, the topology, the weights, the tables.
58
+ * @param expected - the reference
59
+ * @param actual - the snapshot under test
60
+ * @param ctx - the comparison context
61
+ */
62
+ function compareGraphs(expected, actual, ctx) {
63
+ const { diff } = ctx;
64
+ if (expected.directed !== actual.directed) {
65
+ diff("directed", expected.directed, actual.directed);
66
+ }
67
+ if (expected.nodeCount !== actual.nodeCount) {
68
+ diff("nodeCount", expected.nodeCount, actual.nodeCount);
69
+ }
70
+ if (expected.edgeCount !== actual.edgeCount) {
71
+ diff("edgeCount", expected.edgeCount, actual.edgeCount);
72
+ }
73
+ compareIds(expected, actual, diff);
74
+ if (expected.nodeCount !== actual.nodeCount || expected.edgeCount !== actual.edgeCount) {
75
+ return;
76
+ }
77
+ compareTopology(expected, actual, diff);
78
+ compareWeights(expected, actual, ctx);
79
+ compareTables("nodes", expected.nodes, actual.nodes, ctx);
80
+ compareTables("edges", expected.edges, actual.edges, ctx);
81
+ compareTables("graph", expected.graph, actual.graph, ctx);
82
+ if (ctx.options.extensions !== false) {
83
+ compareExtensions(expected, actual, ctx);
84
+ }
85
+ }
86
+ /**
87
+ * Compare the node ids in index order.
88
+ * @param expected - the reference
89
+ * @param actual - the snapshot under test
90
+ * @param diff - the recorder
91
+ */
92
+ function compareIds(expected, actual, diff) {
93
+ const expectedIds = expected.ids.toArray();
94
+ const actualIds = actual.ids.toArray();
95
+ const n = Math.min(expectedIds.length, actualIds.length);
96
+ for (let i = 0; i < n; i++) {
97
+ if (!Object.is(expectedIds[i], actualIds[i])) {
98
+ diff(`ids[${i}]`, expectedIds[i], actualIds[i]);
99
+ }
100
+ }
101
+ }
102
+ /**
103
+ * Compare the topology: the CSR arrays (identical when node order and edge order survived), then the
104
+ * orientation of every logical edge.
105
+ * @param expected - the reference
106
+ * @param actual - the snapshot under test, with as many nodes and edges
107
+ * @param diff - the recorder
108
+ */
109
+ function compareTopology(expected, actual, diff) {
110
+ if (!typedEqual(expected.rowPtr, actual.rowPtr)) {
111
+ diff("rowPtr", expected.rowPtr, actual.rowPtr, "rowPtr differs");
112
+ }
113
+ if (!typedEqual(expected.colIdx, actual.colIdx)) {
114
+ diff("colIdx", expected.colIdx, actual.colIdx, "colIdx differs");
115
+ }
116
+ const el = expected.edgeList();
117
+ const al = actual.edgeList();
118
+ for (let e = 0; e < expected.edgeCount; e++) {
119
+ if (el.src[e] !== al.src[e] || el.dst[e] !== al.dst[e]) {
120
+ diff(`edge[${e}]`, `${el.src[e]}->${el.dst[e]}`, `${al.src[e]}->${al.dst[e]}`);
121
+ }
122
+ }
123
+ }
124
+ /**
125
+ * Compare the weights of two snapshots: the exact weight column when both have one, the 32-bit
126
+ * weights otherwise.
127
+ * @param expected - the reference
128
+ * @param actual - the snapshot under test
129
+ * @param ctx - the comparison context
130
+ */
131
+ function compareWeights(expected, actual, ctx) {
132
+ if (expected.flags.weighted !== actual.flags.weighted) {
133
+ ctx.diff("flags.weighted", expected.flags.weighted, actual.flags.weighted);
134
+ return;
135
+ }
136
+ if (!expected.flags.weighted) {
137
+ return;
138
+ }
139
+ const eShadow = expected.edges.byRole("weight");
140
+ const aShadow = actual.edges.byRole("weight");
141
+ if (eShadow !== null && aShadow !== null) {
142
+ compareExactWeights(expected.edgeCount, eShadow, aShadow, ctx);
143
+ return;
144
+ }
145
+ if (ctx.options.weightExplicitness !== false && (eShadow === null) !== (aShadow === null)) {
146
+ ctx.diff("weightColumn", eShadow !== null, aShadow !== null, "one snapshot has a role-weight column, the other does not");
147
+ }
148
+ const ew = expected.edgeList().weights;
149
+ const aw = actual.edgeList().weights;
150
+ for (let e = 0; e < expected.edgeCount; e++) {
151
+ const ev = ew === null ? 1 : ew[e];
152
+ const av = aw === null ? 1 : aw[e];
153
+ if (!ctx.same(ev, av)) {
154
+ ctx.diff(`weight[${e}]`, ev, av);
155
+ }
156
+ }
157
+ }
158
+ /**
159
+ * Compare the exact weight columns of two snapshots: which edges have an explicit weight, and its value.
160
+ * @param edgeCount - the number of edges
161
+ * @param expected - the reference's weight column
162
+ * @param actual - the weight column under test
163
+ * @param ctx - the comparison context
164
+ */
165
+ function compareExactWeights(edgeCount, expected, actual, ctx) {
166
+ for (let e = 0; e < edgeCount; e++) {
167
+ const eSet = expected.isSet(e);
168
+ const aSet = actual.isSet(e);
169
+ if (ctx.options.weightExplicitness !== false && eSet !== aSet) {
170
+ ctx.diff(`weightExplicit[${e}]`, eSet, aSet);
171
+ }
172
+ else if (eSet && aSet && !ctx.same(expected.value(e), actual.value(e))) {
173
+ ctx.diff(`weight[${e}]`, expected.value(e), actual.value(e));
174
+ }
175
+ }
176
+ }
177
+ /**
178
+ * Compare the extension tables: which exist, their row counts and their columns.
179
+ * @param expected - the reference
180
+ * @param actual - the snapshot under test
181
+ * @param ctx - the comparison context
182
+ */
183
+ function compareExtensions(expected, actual, ctx) {
184
+ for (const [name, table] of expected.extensions) {
185
+ const other = actual.extensions.get(name);
186
+ if (other === undefined) {
187
+ ctx.diff(`extensions.${name}`, "present", "absent");
188
+ }
189
+ else if (table.rowCount === other.rowCount) {
190
+ compareTables(`extensions.${name}`, table, other, ctx);
191
+ }
192
+ else {
193
+ ctx.diff(`extensions.${name}.rowCount`, table.rowCount, other.rowCount);
194
+ }
195
+ }
196
+ if (ctx.options.allowExtraColumns === false) {
197
+ for (const name of actual.extensions.keys()) {
198
+ if (!expected.extensions.has(name)) {
199
+ ctx.diff(`extensions.${name}`, "absent", "present");
200
+ }
201
+ }
202
+ }
203
+ }
204
+ /**
205
+ * Compare the columns of one table.
206
+ * @param label - the table name for paths
207
+ * @param expected - the reference table
208
+ * @param actual - the table under test
209
+ * @param ctx - the comparison context
210
+ */
211
+ function compareTables(label, expected, actual, ctx) {
212
+ const ignoreNames = new Set(ctx.options.ignoreColumns ?? []);
213
+ const ignoreRoles = new Set(ctx.options.ignoreRoles ?? []);
214
+ // the role-weight shadow column is compared by the weights step, not as a declared column
215
+ const skip = (column) => {
216
+ const { name, role } = column.meta;
217
+ return (ignoreNames.has(name) ||
218
+ (role !== null && (ignoreRoles.has(role) || (label === "edges" && role === "weight"))));
219
+ };
220
+ for (const column of expected) {
221
+ if (skip(column)) {
222
+ continue;
223
+ }
224
+ const path = `${label}.${column.meta.name}`;
225
+ const other = actual.get(column.meta.name);
226
+ if (other === null) {
227
+ ctx.diff(path, "present", "absent", `${path}: column missing after round trip`);
228
+ }
229
+ else {
230
+ compareColumn(path, column, other, ctx);
231
+ }
232
+ }
233
+ if (ctx.options.allowExtraColumns === false) {
234
+ for (const column of actual) {
235
+ if (!skip(column) && expected.get(column.meta.name) === null) {
236
+ const path = `${label}.${column.meta.name}`;
237
+ ctx.diff(path, "absent", "present", `${path}: extra column after round trip`);
238
+ }
239
+ }
240
+ }
241
+ }
242
+ /**
243
+ * Compare one column: its declaration, then every cell.
244
+ * @param path - the column's path for messages
245
+ * @param column - the reference column
246
+ * @param other - the column under test
247
+ * @param ctx - the comparison context
248
+ */
249
+ function compareColumn(path, column, other, ctx) {
250
+ compareDeclaration(path, column, other, ctx);
251
+ if (column.length !== other.length) {
252
+ ctx.diff(`${path}.length`, column.length, other.length);
253
+ return;
254
+ }
255
+ for (let r = 0; r < column.length; r++) {
256
+ const eSet = column.isSet(r);
257
+ const aSet = other.isSet(r);
258
+ if (eSet !== aSet) {
259
+ ctx.diff(`${path}[${r}]`, eSet ? column.value(r) : undefined, aSet ? other.value(r) : undefined);
260
+ }
261
+ else if (eSet) {
262
+ const ev = cellValue(column, r);
263
+ const av = cellValue(other, r);
264
+ if (!ctx.same(ev, av)) {
265
+ ctx.diff(`${path}[${r}]`, ev, av);
266
+ }
267
+ }
268
+ }
269
+ }
270
+ /**
271
+ * Compare what two columns declare: dtype, item dtype, components, role and origin type, as the
272
+ * options ask.
273
+ * @param path - the column's path for messages
274
+ * @param column - the reference column
275
+ * @param other - the column under test
276
+ * @param ctx - the comparison context
277
+ */
278
+ function compareDeclaration(path, column, other, ctx) {
279
+ const { options, diff } = ctx;
280
+ const e = column.meta;
281
+ const a = other.meta;
282
+ if (options.dtypes !== false) {
283
+ for (const key of ["dtype", "itemDtype", "components"]) {
284
+ if (e[key] !== a[key]) {
285
+ diff(`${path}.${key}`, e[key], a[key]);
286
+ }
287
+ }
288
+ }
289
+ if (options.roles !== false && e.role !== a.role) {
290
+ diff(`${path}.role`, e.role, a.role);
291
+ }
292
+ const eType = e.origin?.type ?? null;
293
+ const aType = a.origin?.type ?? null;
294
+ if (options.originType === true && eType !== aType) {
295
+ diff(`${path}.origin.type`, eType, aType);
296
+ }
297
+ }
298
+ /**
299
+ * The comparable value of a set cell: list rows through sliceOf, json rows through values, the
300
+ * typed accessor otherwise (a components > 1 subarray becomes a plain array).
301
+ * @param column - the column
302
+ * @param row - the row
303
+ * @returns the value
304
+ */
305
+ function cellValue(column, row) {
306
+ switch (column.dtype) {
307
+ case "list":
308
+ return [...column.sliceOf(row)];
309
+ case "json":
310
+ return column.values[row];
311
+ default: {
312
+ const value = column.value(row);
313
+ return ArrayBuffer.isView(value) ? Array.from(value) : value;
314
+ }
315
+ }
316
+ }
317
+ /**
318
+ * Deep equality with a numeric tolerance (for the tests).
319
+ * @param e - expected
320
+ * @param a - actual
321
+ * @param tolerance - absolute tolerance for numbers
322
+ * @returns true when equal
323
+ */
324
+ export function valuesEqual(e, a, tolerance) {
325
+ if (typeof e === "number" && typeof a === "number") {
326
+ if (Object.is(e, a)) {
327
+ return true;
328
+ }
329
+ return Number.isFinite(e) && Number.isFinite(a) && Math.abs(e - a) <= tolerance;
330
+ }
331
+ if (Array.isArray(e) || ArrayBuffer.isView(e)) {
332
+ const ea = Array.from(e);
333
+ if (!(Array.isArray(a) || ArrayBuffer.isView(a))) {
334
+ return false;
335
+ }
336
+ const aa = Array.from(a);
337
+ return ea.length === aa.length && ea.every((v, i) => valuesEqual(v, aa[i], tolerance));
338
+ }
339
+ if (typeof e === "object" && e !== null && typeof a === "object" && a !== null) {
340
+ const eo = e;
341
+ const ao = a;
342
+ const keys = Object.keys(eo);
343
+ if (keys.length !== Object.keys(ao).length) {
344
+ return false;
345
+ }
346
+ return keys.every((k) => Object.hasOwn(ao, k) && valuesEqual(eo[k], ao[k], tolerance));
347
+ }
348
+ return Object.is(e, a);
349
+ }
350
+ /**
351
+ * Element-wise equality of two typed arrays.
352
+ * @param a - one array
353
+ * @param b - the other
354
+ * @returns true when same length and contents
355
+ */
356
+ function typedEqual(a, b) {
357
+ if (a.length !== b.length) {
358
+ return false;
359
+ }
360
+ for (let i = 0; i < a.length; i++) {
361
+ if (a[i] !== b[i]) {
362
+ return false;
363
+ }
364
+ }
365
+ return true;
366
+ }
367
+ /**
368
+ * A short text of a value for messages.
369
+ * @param v - the value
370
+ * @returns JSON when possible, else String()
371
+ */
372
+ function show(v) {
373
+ if (ArrayBuffer.isView(v)) {
374
+ const items = Array.from(v);
375
+ return `[${items.slice(0, 8).join(", ")}${items.length > 8 ? ", ..." : ""}]`;
376
+ }
377
+ try {
378
+ const text = JSON.stringify(v);
379
+ return text ?? String(v);
380
+ }
381
+ catch {
382
+ return String(v);
383
+ }
384
+ }
385
+ /**
386
+ * The differences compareSnapshots() found, one per line, for printing.
387
+ * @param diffs - the differences
388
+ * @returns one line per difference, "no differences" when empty
389
+ * @category Plugin helpers
390
+ */
391
+ export function describeDiffs(diffs) {
392
+ return diffs.length === 0 ? "no differences" : diffs.map((d) => ` - ${d.message}`).join("\n");
393
+ }
394
+ //# sourceMappingURL=compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/common/compare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * The exporter machinery CX version 1 and CX2 share (design/graph-io/cytoscape-and-obo/design.md
3
+ * sections 1.2 and 1.3): integer node ids (safe integers, or the digits of an integer beyond 2^53
4
+ * written raw), sanitizeIds "mangle" renumbering, edge ids from the id role column, the declared
5
+ * type of a column, the direction notes (every CX edge is directed) and the JSON writer that keeps
6
+ * -0 and raw big integers.
7
+ */
8
+ import { type Column, GraphFormatError, type GraphSnapshot, type NodeId } from "@graphty/graph-format";
9
+ import { type LossNote } from "../types.js";
10
+ import { type PairFolding } from "./direction.js";
11
+ import { type ResolvedExportOptions } from "./options.js";
12
+ /**
13
+ * Records a loss note.
14
+ * @category Plugin helpers
15
+ */
16
+ export type CxNoteFn = (code: string, message: string, column?: string | null, count?: number | null) => void;
17
+ /**
18
+ * The node ids as written: the original, a renumbered one, or a raw big integer.
19
+ * @category Plugin helpers
20
+ */
21
+ export interface WrittenIds {
22
+ /** How many ids were renumbered (sanitizeIds "mangle"). */
23
+ readonly changed: number;
24
+ /**
25
+ * The written id of a node.
26
+ * @param i - the node index
27
+ * @returns a number, or a raw string for a big integer
28
+ */
29
+ idAt(i: number): NodeId;
30
+ /**
31
+ * Whether a node was renumbered.
32
+ * @param i - the node index
33
+ * @returns true when its original goes into graphty:originalId
34
+ */
35
+ isChanged(i: number): boolean;
36
+ /**
37
+ * The original id of a node.
38
+ * @param i - the node index
39
+ * @returns the snapshot's id
40
+ */
41
+ originalAt(i: number): NodeId;
42
+ }
43
+ /**
44
+ * The `idCounter` of the node ids as written (the largest id plus one, NDEx's next free id).
45
+ * @param ids - the written ids
46
+ * @param count - the node count
47
+ * @returns the counter: a number, or a raw big integer for stringify()
48
+ * @category Plugin helpers
49
+ */
50
+ export declare function nextNodeId(ids: WrittenIds, count: number): NodeId;
51
+ /**
52
+ * The id notes and the written ids of a CX export: E_ID_CHARSET (export() throws) or
53
+ * W_ID_MANGLED for the ids that are not integers.
54
+ * @param snapshot - the snapshot
55
+ * @param common - the resolved common options
56
+ * @param format - the format's display name
57
+ * @param attribute - the attribute the originals are kept in
58
+ * @param note - records a note
59
+ * @returns the ids, or the error export() throws
60
+ * @category Plugin helpers
61
+ */
62
+ export declare function planNodeIds(snapshot: GraphSnapshot, common: ResolvedExportOptions, format: string, attribute: string, note: CxNoteFn): WrittenIds | GraphFormatError;
63
+ /**
64
+ * The declared CX type of a column: string / double / long / integer / boolean or a list of one;
65
+ * a json column (and a list of json items) is a string holding JSON text.
66
+ * @param column - the column
67
+ * @returns the type text
68
+ * @category Plugin helpers
69
+ */
70
+ export declare function declaredType(column: Column): string;
71
+ /**
72
+ * Count the positions with a non-finite x or y.
73
+ * @param position - the position column
74
+ * @returns the count
75
+ * @category Plugin helpers
76
+ */
77
+ export declare function nonFinitePositions(position: Column): number;
78
+ /**
79
+ * The edge ids to write: the id role column's values when they are distinct safe integers, next
80
+ * unused integers for edges without one (W_EDGE_IDS_GENERATED).
81
+ * @param snapshot - the snapshot
82
+ * @param note - records a note
83
+ * @returns one id per edge
84
+ * @category Plugin helpers
85
+ */
86
+ export declare function planEdgeIds(snapshot: GraphSnapshot, note: CxNoteFn): number[];
87
+ /**
88
+ * The direction notes: every CX edge is directed, so an undirected snapshot (or the undirected
89
+ * pairs of a mixed one, folded under onMixedDirection) is written directed, and a mutual pair as
90
+ * two edges without its mark.
91
+ * @param snapshot - the snapshot
92
+ * @param folding - the pair folding
93
+ * @param common - the resolved common options
94
+ * @param undirectedCode - the format's "undirected written as directed" code
95
+ * @param note - records a note
96
+ * @category Plugin helpers
97
+ */
98
+ export declare function directionNotes(snapshot: GraphSnapshot, folding: PairFolding, common: ResolvedExportOptions, undirectedCode: string, note: CxNoteFn): void;
99
+ /**
100
+ * The note recorder of a plan and its notes.
101
+ * @returns the notes and the recorder
102
+ * @category Plugin helpers
103
+ */
104
+ export declare function noteList(): {
105
+ notes: LossNote[];
106
+ note: CxNoteFn;
107
+ };
108
+ /**
109
+ * The JSON text of a value, keeping -0 and writing the raw big-integer ids of idAt() as numbers.
110
+ * @param value - the value
111
+ * @returns the text
112
+ * @category Plugin helpers
113
+ */
114
+ export declare function stringify(value: unknown): string;
115
+ /**
116
+ * The text of one aspect block, element by element.
117
+ * @param aspect - the aspect name
118
+ * @param elements - the JSON texts of its elements
119
+ * @yields the block's text
120
+ * @returns nothing
121
+ */
122
+ export declare function aspectBlock(aspect: string, elements: Iterable<string>): Generator<string, void, undefined>;
123
+ //# sourceMappingURL=cx-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cx-export.d.ts","sourceRoot":"","sources":["../../../src/common/cx-export.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEvG,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG1D;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AAc9G;;;GAGG;AACH,MAAM,WAAW,UAAU;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AA8DD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAWjE;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACvB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,GACf,UAAU,GAAG,gBAAgB,CAoB/B;AAwCD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWnD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW3D;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAoC7E;AAyBD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC1B,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,qBAAqB,EAC7B,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,QAAQ,GACf,IAAI,CAgCN;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAMhE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGhD;AAED;;;;;;GAMG;AACH,wBAAiB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAQ3G"}