@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
@@ -0,0 +1,167 @@
1
+ /**
2
+ * What the two ontology exporters share (the OBO flat file and the JSON exporter's `obographs`
3
+ * dialect): the snapshot columns that fill the OBO slots (the label as `name`, the edge kind as
4
+ * `relation`), the placeholder nodes a re-import makes again by itself, the order a re-import gives
5
+ * the nodes, and the text of a cell. Both read the snapshot through the column vocabulary of
6
+ * ontology.ts, so a column means the same thing in both files.
7
+ */
8
+ import { type Column, GraphFormatError, type GraphSnapshot } from "@graphty/graph-format";
9
+ import { type ExportCapabilities } from "../types.js";
10
+ import { type ResolvedExportOptions } from "./options.js";
11
+ /**
12
+ * A note recorder.
13
+ * @category Plugin helpers
14
+ */
15
+ export type NoteFn = (code: string, message: string, column?: string | null, count?: number | null) => void;
16
+ /**
17
+ * The roles whose columns are never written as values (their loss notes come from checkCapabilities()).
18
+ * @category Plugin helpers
19
+ */
20
+ export declare const UNWRITTEN_ROLES: ReadonlySet<string>;
21
+ /**
22
+ * The OBO frame types.
23
+ * @category Plugin helpers
24
+ */
25
+ export type FrameKind = "Term" | "Instance" | "Typedef";
26
+ /**
27
+ * The frame types as a set, for checking a `type` cell.
28
+ * @category Plugin helpers
29
+ */
30
+ export declare const FRAME_KINDS: ReadonlySet<string>;
31
+ /**
32
+ * The value of a set cell (a multi-component value as a plain array), or undefined when unset; a
33
+ * declared default is not a value here (the formats have no defaults and say so).
34
+ * @param column - the column
35
+ * @param row - the row
36
+ * @returns the value or undefined
37
+ * @category Plugin helpers
38
+ */
39
+ export declare function cellOf(column: Column, row: number): unknown;
40
+ /**
41
+ * The text of a scalar value: a number by its dtype's shortest round-tripping form (`-0` kept), a
42
+ * boolean as `true` / `false`, a string as it is, anything else as its JSON text.
43
+ * @param value - the value
44
+ * @param dtype - the dtype it came from (the item dtype for a list item)
45
+ * @returns the text
46
+ * @category Plugin helpers
47
+ */
48
+ export declare function textOf(value: unknown, dtype: string): string;
49
+ /**
50
+ * Whether a column has the dtype of a vocabulary column (string and dict both fit a text column;
51
+ * the other text dtype is reported, not refused).
52
+ * @param want - the vocabulary dtype
53
+ * @param column - the column
54
+ * @returns true when the column can be written into the vocabulary slot
55
+ * @category Plugin helpers
56
+ */
57
+ export declare function fitsVocabulary(want: string, column: Column): boolean;
58
+ /**
59
+ * The values of a cell that may hold one value or a list of them.
60
+ * @param value - the cell value, or undefined
61
+ * @returns the values
62
+ * @category Plugin helpers
63
+ */
64
+ export declare function valuesOf(value: unknown): readonly unknown[];
65
+ /** A column chosen for an OBO slot. */
66
+ interface Slot {
67
+ /** The column, or null when the snapshot has none for the slot. */
68
+ readonly column: Column | null;
69
+ /** Whether a role-less column was chosen by its name; it reads back with the role (W_ROLE_ASSUMED). */
70
+ readonly assumed: boolean;
71
+ }
72
+ /**
73
+ * The column of a slot: the column with the role when it holds text, else a role-less text column
74
+ * of the slot's name (which the importer reads back with the role).
75
+ * @param table - the node or edge table
76
+ * @param role - the role (`label` for `name`, `kind` for `relation`)
77
+ * @param name - the name the importer gives the slot
78
+ * @returns the column and whether its role is assumed
79
+ * @category Plugin helpers
80
+ */
81
+ export declare function slotColumn(table: GraphSnapshot["nodes"], role: "label" | "kind", name: string): Slot;
82
+ /**
83
+ * The nodes written without a frame (OBO) or a node record (OBO Graphs) because the re-import makes
84
+ * them again as placeholders: a `graphty.placeholder` true cell, no other set cell, an id written
85
+ * as it is, an edge that references it, and (in the flat file, where an edge is written on its
86
+ * source's frame) no edge of its own.
87
+ * @param snapshot - the snapshot
88
+ * @param written - the logical edges written
89
+ * @param options - `outgoingAllowed`: whether a placeholder may be an edge's source; `changed`: whether a node's id is rewritten
90
+ * @param options.outgoingAllowed - whether a placeholder may be an edge's source
91
+ * @param options.changed - whether a node's id is rewritten
92
+ * @returns one flag per node, 1 for a node written without a frame
93
+ * @category Plugin helpers
94
+ */
95
+ export declare function framelessNodes(snapshot: GraphSnapshot, written: readonly number[], options: {
96
+ readonly outgoingAllowed: boolean;
97
+ readonly changed: (i: number) => boolean;
98
+ }): Uint8Array;
99
+ /**
100
+ * How many nodes a re-import puts at another index: the written nodes keep their order and the
101
+ * placeholders follow in the order the edges first reference them.
102
+ * @param frameless - the framelessNodes() flags
103
+ * @param references - the node indices in the order the written edges reference them
104
+ * @returns the number of nodes whose index changes
105
+ * @category Plugin helpers
106
+ */
107
+ export declare function movedNodes(frameless: Uint8Array, references: Iterable<number>): number;
108
+ /**
109
+ * Whether a value is a qualifier record as the importers make it: a non-empty object of names to a
110
+ * text or a list of two or more texts (a name given once reads back as a text, never as a
111
+ * one-item list), every name passing `nameOk`.
112
+ * @param value - the value
113
+ * @param nameOk - the name rule
114
+ * @returns true when the record is written and read back unchanged
115
+ * @category Plugin helpers
116
+ */
117
+ export declare function isQualifierRecord(value: unknown, nameOk: (name: string) => boolean): boolean;
118
+ /** What capabilityNotes() needs to know about the export. */
119
+ interface CapabilityNoteSpec {
120
+ /** The format's capabilities. */
121
+ readonly caps: ExportCapabilities;
122
+ /** The label column written as the name, or null. */
123
+ readonly label: Column | null;
124
+ /** Whether the label is a role-less `name` column. */
125
+ readonly labelAssumed: boolean;
126
+ /** Where an edge column without a slot goes, for messages ("a qualifier"). */
127
+ readonly edgeSlot: string;
128
+ /** Records a note. */
129
+ readonly note: NoteFn;
130
+ }
131
+ /**
132
+ * The generic notes of checkCapabilities() as the ontology formats see them. No column of the
133
+ * snapshot's own survives as a column (the formats keep only the OBO vocabulary), so the generic
134
+ * dtype, list, json, strides and graph-attribute notes give way to the formats' own, which say
135
+ * where each column goes (a vocabulary column written into its slot needs no note; any other
136
+ * becomes property values, edge qualifiers or metadata). The name-change notes stand only for the
137
+ * label and kind columns actually written into their slot. Added: the roles without a slot (a
138
+ * node kind, an edge label) and a role-less `name` column taking the label role.
139
+ * @param snapshot - the snapshot
140
+ * @param common - the common options
141
+ * @param spec - the export's facts
142
+ * @returns the fatal error of a mixed graph under onMixedDirection "error", or null
143
+ * @category Plugin helpers
144
+ */
145
+ export declare function capabilityNotes(snapshot: GraphSnapshot, common: ResolvedExportOptions, spec: CapabilityNoteSpec): GraphFormatError | null;
146
+ /**
147
+ * Record the columns that read back absent: a node or edge column without a set cell on a written
148
+ * element (the importers declare a column when a value needs it).
149
+ * @param snapshot - the snapshot
150
+ * @param rows - the written nodes
151
+ * @param frameless - the frameless flags (a placeholder column set only there reads back)
152
+ * @param written - the written edges
153
+ * @param note - records a note
154
+ * @category Plugin helpers
155
+ */
156
+ export declare function emptyColumnNotes(snapshot: GraphSnapshot, rows: readonly number[], frameless: Uint8Array, written: readonly number[], note: NoteFn): void;
157
+ /**
158
+ * Record the note of a node column written as property values.
159
+ * @param note - the recorder
160
+ * @param column - the column
161
+ * @param rows - the written nodes
162
+ * @param how - how the values are written, for the message
163
+ * @category Plugin helpers
164
+ */
165
+ export declare function notePropertyColumn(note: NoteFn, column: Column, rows: readonly number[], how: string): void;
166
+ export {};
167
+ //# sourceMappingURL=ontology-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ontology-export.d.ts","sourceRoot":"","sources":["../../../src/common/ontology-export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,359 @@
1
+ /**
2
+ * What the two ontology exporters share (the OBO flat file and the JSON exporter's `obographs`
3
+ * dialect): the snapshot columns that fill the OBO slots (the label as `name`, the edge kind as
4
+ * `relation`), the placeholder nodes a re-import makes again by itself, the order a re-import gives
5
+ * the nodes, and the text of a cell. Both read the snapshot through the column vocabulary of
6
+ * ontology.ts, so a column means the same thing in both files.
7
+ */
8
+ import { GraphFormatError } from "@graphty/graph-format";
9
+ import { COLUMN_AS_PROPERTY_VALUE_CODE, ROLE_ASSUMED_CODE } from "./codes.js";
10
+ import { checkCapabilities, LOSS } from "./export.js";
11
+ import { formatNumber } from "./format.js";
12
+ import { PLACEHOLDER_COLUMN } from "./ontology.js";
13
+ /** The generic notes the ontology formats replace with their own (see capabilityNotes()). */
14
+ const SUPERSEDED = new Set([
15
+ LOSS.DTYPE,
16
+ LOSS.LIST,
17
+ LOSS.JSON,
18
+ LOSS.COMPONENTS,
19
+ LOSS.GRAPH_ATTRIBUTES,
20
+ ]);
21
+ /** The roles the ontology formats have a slot for, and the column names their importers give them. */
22
+ const SLOT_ROLES = new Set(["label", "kind"]);
23
+ const ROLE_NAMES = Object.freeze({ label: "name", kind: "relation" });
24
+ /**
25
+ * The roles whose columns are never written as values (their loss notes come from checkCapabilities()).
26
+ * @category Plugin helpers
27
+ */
28
+ export const UNWRITTEN_ROLES = new Set([
29
+ "directed",
30
+ "pair",
31
+ "mutual",
32
+ "weight",
33
+ "timeText",
34
+ "originalId",
35
+ "parent",
36
+ "parents",
37
+ "start",
38
+ "end",
39
+ "timestamp",
40
+ "timestamps",
41
+ "spells",
42
+ "open",
43
+ "spellsOpen",
44
+ "position",
45
+ "color",
46
+ "size",
47
+ "shape",
48
+ "thickness",
49
+ ]);
50
+ /**
51
+ * The frame types as a set, for checking a `type` cell.
52
+ * @category Plugin helpers
53
+ */
54
+ export const FRAME_KINDS = new Set(["Term", "Instance", "Typedef"]);
55
+ /**
56
+ * The value of a set cell (a multi-component value as a plain array), or undefined when unset; a
57
+ * declared default is not a value here (the formats have no defaults and say so).
58
+ * @param column - the column
59
+ * @param row - the row
60
+ * @returns the value or undefined
61
+ * @category Plugin helpers
62
+ */
63
+ export function cellOf(column, row) {
64
+ if (!column.isSet(row)) {
65
+ return undefined;
66
+ }
67
+ const value = column.value(row);
68
+ return ArrayBuffer.isView(value) ? Array.from(value) : value;
69
+ }
70
+ /**
71
+ * The text of a scalar value: a number by its dtype's shortest round-tripping form (`-0` kept), a
72
+ * boolean as `true` / `false`, a string as it is, anything else as its JSON text.
73
+ * @param value - the value
74
+ * @param dtype - the dtype it came from (the item dtype for a list item)
75
+ * @returns the text
76
+ * @category Plugin helpers
77
+ */
78
+ export function textOf(value, dtype) {
79
+ switch (typeof value) {
80
+ case "string":
81
+ return value;
82
+ case "boolean":
83
+ return value ? "true" : "false";
84
+ case "number":
85
+ return formatNumber(value, dtype === "f32" || dtype === "i32" || dtype === "u32" || dtype === "u8" ? dtype : "f64");
86
+ default:
87
+ return JSON.stringify(value) ?? "null";
88
+ }
89
+ }
90
+ /**
91
+ * Whether a column has the dtype of a vocabulary column (string and dict both fit a text column;
92
+ * the other text dtype is reported, not refused).
93
+ * @param want - the vocabulary dtype
94
+ * @param column - the column
95
+ * @returns true when the column can be written into the vocabulary slot
96
+ * @category Plugin helpers
97
+ */
98
+ export function fitsVocabulary(want, column) {
99
+ switch (want) {
100
+ case "list":
101
+ case "bool":
102
+ case "json":
103
+ return column.dtype === want;
104
+ default:
105
+ return isText(column);
106
+ }
107
+ }
108
+ /**
109
+ * The values of a cell that may hold one value or a list of them.
110
+ * @param value - the cell value, or undefined
111
+ * @returns the values
112
+ * @category Plugin helpers
113
+ */
114
+ export function valuesOf(value) {
115
+ if (value === undefined) {
116
+ return [];
117
+ }
118
+ return Array.isArray(value) ? value : [value];
119
+ }
120
+ /**
121
+ * The column of a slot: the column with the role when it holds text, else a role-less text column
122
+ * of the slot's name (which the importer reads back with the role).
123
+ * @param table - the node or edge table
124
+ * @param role - the role (`label` for `name`, `kind` for `relation`)
125
+ * @param name - the name the importer gives the slot
126
+ * @returns the column and whether its role is assumed
127
+ * @category Plugin helpers
128
+ */
129
+ export function slotColumn(table, role, name) {
130
+ const byRole = table.byRole(role);
131
+ if (byRole !== null) {
132
+ return { column: isText(byRole) ? byRole : null, assumed: false };
133
+ }
134
+ const byName = table.get(name);
135
+ if (byName !== null && byName.meta.role === null && isText(byName)) {
136
+ return { column: byName, assumed: true };
137
+ }
138
+ return { column: null, assumed: false };
139
+ }
140
+ /**
141
+ * Whether a column holds text (string or dict).
142
+ * @param column - the column
143
+ * @returns true for string and dict
144
+ */
145
+ function isText(column) {
146
+ return column.dtype === "string" || column.dtype === "dict";
147
+ }
148
+ /**
149
+ * The placeholder column (`graphty.placeholder`, a bool), or null.
150
+ * @param snapshot - the snapshot
151
+ * @returns the column
152
+ */
153
+ function placeholderColumn(snapshot) {
154
+ const column = snapshot.nodes.get(PLACEHOLDER_COLUMN);
155
+ return column !== null && column.dtype === "bool" ? column : null;
156
+ }
157
+ /**
158
+ * The nodes written without a frame (OBO) or a node record (OBO Graphs) because the re-import makes
159
+ * them again as placeholders: a `graphty.placeholder` true cell, no other set cell, an id written
160
+ * as it is, an edge that references it, and (in the flat file, where an edge is written on its
161
+ * source's frame) no edge of its own.
162
+ * @param snapshot - the snapshot
163
+ * @param written - the logical edges written
164
+ * @param options - `outgoingAllowed`: whether a placeholder may be an edge's source; `changed`: whether a node's id is rewritten
165
+ * @param options.outgoingAllowed - whether a placeholder may be an edge's source
166
+ * @param options.changed - whether a node's id is rewritten
167
+ * @returns one flag per node, 1 for a node written without a frame
168
+ * @category Plugin helpers
169
+ */
170
+ export function framelessNodes(snapshot, written, options) {
171
+ const flags = new Uint8Array(snapshot.nodeCount);
172
+ const placeholder = placeholderColumn(snapshot);
173
+ if (placeholder === null) {
174
+ return flags;
175
+ }
176
+ const { src, dst } = snapshot.edgeList();
177
+ const referenced = new Uint8Array(snapshot.nodeCount);
178
+ const sources = new Uint8Array(snapshot.nodeCount);
179
+ for (const e of written) {
180
+ referenced[dst[e]] = 1;
181
+ if (options.outgoingAllowed) {
182
+ referenced[src[e]] = 1;
183
+ }
184
+ else {
185
+ sources[src[e]] = 1;
186
+ }
187
+ }
188
+ const others = [...snapshot.nodes].filter((c) => c !== placeholder);
189
+ for (let i = 0; i < snapshot.nodeCount; i++) {
190
+ if (placeholder.isSet(i) &&
191
+ placeholder.value(i) === true &&
192
+ referenced[i] === 1 &&
193
+ sources[i] === 0 &&
194
+ !options.changed(i) &&
195
+ others.every((c) => !c.isSet(i))) {
196
+ flags[i] = 1;
197
+ }
198
+ }
199
+ return flags;
200
+ }
201
+ /**
202
+ * How many nodes a re-import puts at another index: the written nodes keep their order and the
203
+ * placeholders follow in the order the edges first reference them.
204
+ * @param frameless - the framelessNodes() flags
205
+ * @param references - the node indices in the order the written edges reference them
206
+ * @returns the number of nodes whose index changes
207
+ * @category Plugin helpers
208
+ */
209
+ export function movedNodes(frameless, references) {
210
+ const order = [];
211
+ for (let i = 0; i < frameless.length; i++) {
212
+ if (frameless[i] === 0) {
213
+ order.push(i);
214
+ }
215
+ }
216
+ const seen = new Uint8Array(frameless.length);
217
+ for (const i of references) {
218
+ if (frameless[i] === 1 && seen[i] === 0) {
219
+ seen[i] = 1;
220
+ order.push(i);
221
+ }
222
+ }
223
+ let moved = 0;
224
+ for (let k = 0; k < order.length; k++) {
225
+ if (order[k] !== k) {
226
+ moved++;
227
+ }
228
+ }
229
+ return moved;
230
+ }
231
+ /**
232
+ * Whether a value is a qualifier record as the importers make it: a non-empty object of names to a
233
+ * text or a list of two or more texts (a name given once reads back as a text, never as a
234
+ * one-item list), every name passing `nameOk`.
235
+ * @param value - the value
236
+ * @param nameOk - the name rule
237
+ * @returns true when the record is written and read back unchanged
238
+ * @category Plugin helpers
239
+ */
240
+ export function isQualifierRecord(value, nameOk) {
241
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
242
+ return false;
243
+ }
244
+ const entries = Object.entries(value);
245
+ return (entries.length > 0 &&
246
+ entries.every(([name, v]) => nameOk(name) &&
247
+ (typeof v === "string" ||
248
+ (Array.isArray(v) && v.length >= 2 && v.every((item) => typeof item === "string")))));
249
+ }
250
+ /**
251
+ * The generic notes of checkCapabilities() as the ontology formats see them. No column of the
252
+ * snapshot's own survives as a column (the formats keep only the OBO vocabulary), so the generic
253
+ * dtype, list, json, strides and graph-attribute notes give way to the formats' own, which say
254
+ * where each column goes (a vocabulary column written into its slot needs no note; any other
255
+ * becomes property values, edge qualifiers or metadata). The name-change notes stand only for the
256
+ * label and kind columns actually written into their slot. Added: the roles without a slot (a
257
+ * node kind, an edge label) and a role-less `name` column taking the label role.
258
+ * @param snapshot - the snapshot
259
+ * @param common - the common options
260
+ * @param spec - the export's facts
261
+ * @returns the fatal error of a mixed graph under onMixedDirection "error", or null
262
+ * @category Plugin helpers
263
+ */
264
+ export function capabilityNotes(snapshot, common, spec) {
265
+ const { label, note } = spec;
266
+ let fatal = null;
267
+ const kind = snapshot.edges.byRole("kind");
268
+ for (const gen of checkCapabilities(snapshot, spec.caps, common, { roles: SLOT_ROLES, roleNames: ROLE_NAMES })) {
269
+ if (SUPERSEDED.has(gen.code) || (gen.code === LOSS.COLUMN_NAME_CHANGED && !isSlotRename(gen, label, kind))) {
270
+ continue;
271
+ }
272
+ if (gen.code === LOSS.MIXED_DIRECTION_ERROR && fatal === null) {
273
+ fatal = new GraphFormatError("E_DIRECTED", gen.message, { reason: "mixed direction" });
274
+ }
275
+ note(gen.code, gen.message, gen.column, gen.count);
276
+ }
277
+ slotlessRoleNotes(snapshot, spec);
278
+ return fatal;
279
+ }
280
+ /**
281
+ * Note the roles the ontology formats have no slot for (a node kind, an edge label), and a
282
+ * role-less `name` column taking the label role.
283
+ * @param snapshot - the snapshot
284
+ * @param spec - the export's facts
285
+ */
286
+ function slotlessRoleNotes(snapshot, spec) {
287
+ const { label, note } = spec;
288
+ const nodeKind = snapshot.nodes.byRole("kind");
289
+ if (nodeKind !== null) {
290
+ note(LOSS.ROLE, `node column "${nodeKind.meta.name}" (kind) is written as property values; the format has no node kind slot`, nodeKind.meta.name, nodeKind.length - nodeKind.nullCount);
291
+ }
292
+ const edgeLabel = snapshot.edges.byRole("label");
293
+ if (edgeLabel !== null) {
294
+ note(LOSS.ROLE, `edge column "${edgeLabel.meta.name}" (label) is written as ${spec.edgeSlot}; the format has no edge label slot`, edgeLabel.meta.name, edgeLabel.length - edgeLabel.nullCount);
295
+ }
296
+ if (label !== null && spec.labelAssumed) {
297
+ note(ROLE_ASSUMED_CODE, `node column "name" is written as each node's name and reads back as the label`, "name", label.length - label.nullCount);
298
+ }
299
+ }
300
+ /**
301
+ * Whether a name-change note is about a column written into its slot: the node label, or a text
302
+ * edge kind column.
303
+ * @param gen - the note
304
+ * @param label - the node label column, or null
305
+ * @param kind - the edge kind column, or null
306
+ * @returns true when it is
307
+ */
308
+ function isSlotRename(gen, label, kind) {
309
+ const isLabel = label !== null && gen.column === label.meta.name;
310
+ return isLabel || (kind !== null && gen.column === kind.meta.name && isText(kind));
311
+ }
312
+ /**
313
+ * Record the columns that read back absent: a node or edge column without a set cell on a written
314
+ * element (the importers declare a column when a value needs it).
315
+ * @param snapshot - the snapshot
316
+ * @param rows - the written nodes
317
+ * @param frameless - the frameless flags (a placeholder column set only there reads back)
318
+ * @param written - the written edges
319
+ * @param note - records a note
320
+ * @category Plugin helpers
321
+ */
322
+ export function emptyColumnNotes(snapshot, rows, frameless, written, note) {
323
+ const tables = [
324
+ [
325
+ "node",
326
+ snapshot.nodes,
327
+ (c) => rows.some((i) => c.isSet(i)) ||
328
+ (c.meta.name === PLACEHOLDER_COLUMN && frameless.some((f, i) => f === 1 && c.isSet(i))),
329
+ ],
330
+ ["edge", snapshot.edges, (c) => written.some((e) => c.isSet(e))],
331
+ ];
332
+ for (const [domain, table, used] of tables) {
333
+ for (const column of table) {
334
+ const { role, name } = column.meta;
335
+ if ((role !== null && (UNWRITTEN_ROLES.has(role) || (domain === "edge" && role === "id"))) ||
336
+ used(column)) {
337
+ continue;
338
+ }
339
+ note(LOSS.EMPTY_COLUMN, `${domain} column "${name}" has no value to write; it reads back absent`, name, 0);
340
+ }
341
+ }
342
+ }
343
+ /**
344
+ * Record the note of a node column written as property values.
345
+ * @param note - the recorder
346
+ * @param column - the column
347
+ * @param rows - the written nodes
348
+ * @param how - how the values are written, for the message
349
+ * @category Plugin helpers
350
+ */
351
+ export function notePropertyColumn(note, column, rows, how) {
352
+ const count = rows.filter((i) => column.isSet(i)).length;
353
+ if (count === 0) {
354
+ return;
355
+ }
356
+ const role = column.meta.role === null ? "" : ` (its ${column.meta.role} role is lost)`;
357
+ note(COLUMN_AS_PROPERTY_VALUE_CODE, `node column "${column.meta.name}" is written as ${how} and reads back inside the property_value column, not as its own column${role}`, column.meta.name, count);
358
+ }
359
+ //# sourceMappingURL=ontology-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ontology-export.js","sourceRoot":"","sources":["../../../src/common/ontology-export.ts"],"names":[],"mappings":"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"}
@@ -18,34 +18,55 @@ interface OboColumnSpec {
18
18
  * The node columns of the OBO vocabulary, keyed by column name (design section 4.2). The names are
19
19
  * the OBO tag names, so a Gene Ontology user finds `namespace`, `def` and `is_obsolete` under the
20
20
  * names the GO documentation uses.
21
+ * @category Plugin helpers
21
22
  */
22
23
  export declare const OBO_NODE_COLUMNS: Readonly<Record<string, OboColumnSpec>>;
23
- /** The node column that marks a node made for an undeclared reference (design section 4.2). */
24
+ /**
25
+ * The node column that marks a node made for an undeclared reference (design section 4.2).
26
+ * @category Plugin helpers
27
+ */
24
28
  export declare const PLACEHOLDER_COLUMN = "graphty.placeholder";
25
29
  /**
26
30
  * The declaration of an OBO vocabulary column.
27
31
  * @param domain - node or edge
28
32
  * @param name - the column name (a key of OBO_NODE_COLUMNS / OBO_EDGE_COLUMNS, or the placeholder column)
29
33
  * @returns the declaration, nullable, with origin `{ format: "obo", id: name }`
34
+ * @category Plugin helpers
30
35
  */
31
36
  export declare function oboColumnDecl(domain: "node" | "edge", name: string): ColumnDecl;
37
+ /**
38
+ * The OBO PURL base every OBO Foundry IRI starts with.
39
+ * @category Plugin helpers
40
+ */
41
+ export declare const OBO_PURL = "http://purl.obolibrary.org/obo/";
42
+ /**
43
+ * The oboInOwl namespace of the OBO-to-OWL mapping's annotation properties.
44
+ * @category Plugin helpers
45
+ */
46
+ export declare const OBO_IN_OWL = "http://www.geneontology.org/formats/oboInOwl#";
32
47
  /**
33
48
  * An IRI as the identifier the `.obo` file writes (the OBO 1.4 mapping, section 5.9, read
34
49
  * backwards): `http://purl.obolibrary.org/obo/GO_0008150` is `GO:0008150` (the prefix is the text
35
50
  * before the first underscore), and `http://purl.obolibrary.org/obo/go#regulates` (how the OWL
36
- * translation writes an unprefixed OBO id: subsets, relations, synonym types) is `regulates`.
51
+ * translation writes an unprefixed OBO id: subsets, relations, synonym types) is `regulates`; the
52
+ * same under `https://purl.obolibrary.org/obo/`.
37
53
  * Every other IRI, and an OBO PURL that fits neither form (`.../obo/T/Female`), is kept.
38
54
  * @param iri - the IRI
39
55
  * @returns the CURIE or local id, or the IRI unchanged
56
+ * @category Plugin helpers
40
57
  */
41
58
  export declare function compactOboIri(iri: string): string;
42
- /** The OBO synonym scopes. */
59
+ /**
60
+ * The OBO synonym scopes.
61
+ * @category Plugin helpers
62
+ */
43
63
  export declare const SYNONYM_SCOPES: ReadonlySet<string>;
44
64
  /**
45
65
  * The OBO synonym scope of an OBO Graphs synonym predicate (`hasExactSynonym`, with or without the
46
66
  * oboInOwl namespace).
47
67
  * @param pred - the predicate
48
68
  * @returns the scope, or null for a predicate that is not one of the four
69
+ * @category Plugin helpers
49
70
  */
50
71
  export declare function synonymScopeOf(pred: string): string | null;
51
72
  /**
@@ -53,6 +74,7 @@ export declare function synonymScopeOf(pred: string): string | null;
53
74
  * the tags that are annotations), so the `.json` of an ontology fills the same columns as its
54
75
  * `.obo`. `shorthand` is the relation's short name; every predicate not listed is a
55
76
  * `property_value`.
77
+ * @category Plugin helpers
56
78
  */
57
79
  export declare const OBOGRAPHS_PREDICATE_TAGS: ReadonlyMap<string, string>;
58
80
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ontology.d.ts","sourceRoot":"","sources":["../../../src/common/ontology.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,0CAA0C;AAC1C,KAAK,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D,wCAAwC;AACxC,UAAU,aAAa;IACnB,iBAAiB;IACjB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CAChD;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAiDnE,CAAC;AASH,+FAA+F;AAC/F,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAExD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAa/E;AAQD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAejD;AAED,8BAA8B;AAC9B,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAAoD,CAAC;AAEpG;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI1D;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAQ/D,CAAC"}
1
+ {"version":3,"file":"ontology.d.ts","sourceRoot":"","sources":["../../../src/common/ontology.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,0CAA0C;AAC1C,KAAK,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D,wCAAwC;AACxC,UAAU,aAAa;IACnB,iBAAiB;IACjB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CAChD;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAiDnE,CAAC;AASH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAExD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAa/E;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,oCAAoC,CAAC;AAK1D;;;GAGG;AACH,eAAO,MAAM,UAAU,kDAAkD,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBjD;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAAoD,CAAC;AAEpG;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI1D;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAQ/D,CAAC"}