@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
@@ -10,10 +10,16 @@
10
10
  * (an ImportError, an abort reason, a programming error) unchanged.
11
11
  */
12
12
  import { ImportError, type ImportIssue, type ImportReport, type IssueCategory, type LossNote } from "../types.js";
13
+ /**
14
+ * The most warnings of one code a report keeps; later ones are counted in one W_ISSUES_SUPPRESSED
15
+ * warning, so a per-row warning on a large file cannot grow the report without bound.
16
+ * @category Issue and loss codes
17
+ */
18
+ export declare const MAX_WARNINGS_PER_CODE = 1000;
13
19
  /**
14
20
  * Where an issue was found: the 1-based line and the element (id or attribute name) when known.
15
- * Consumed by the per-format importers and exporters under src/formats.
16
21
  * @public
22
+ * @category Writing a format
17
23
  */
18
24
  export interface IssueLocation {
19
25
  /** The 1-based source line, when known. */
@@ -23,8 +29,8 @@ export interface IssueLocation {
23
29
  }
24
30
  /**
25
31
  * The mutable element counters of a report in progress; importers increment them directly in hot loops.
26
- * Consumed by the per-format importers and exporters under src/formats.
27
32
  * @public
33
+ * @category Plugin helpers
28
34
  */
29
35
  export interface MutableCounts {
30
36
  /** Nodes pushed. */
@@ -35,21 +41,19 @@ export interface MutableCounts {
35
41
  skippedNodes: number;
36
42
  /** Edges skipped after an error. */
37
43
  skippedEdges: number;
38
- /** Source edges expanded into two logical edges (design section 3.6). */
44
+ /** Source edges expanded into two logical edges. */
39
45
  expandedMixed: number;
40
46
  }
41
47
  /**
42
- * The code a report used to give a thrown value that was not a GraphFormatError. Since audit round
43
- * 1 such a value (a TypeError, a RangeError: a bug in an importer or a sink, never a defect of the
44
- * input) propagates out of import() untouched, so no importer records this code any more; the
45
- * constant stays for consumers that switch on the codes of earlier reports.
48
+ * No longer recorded; kept so code that switches on older reports still compiles.
49
+ * @category Issue and loss codes
46
50
  */
47
51
  export declare const PARSE_ERROR_CODE = "E_PARSE";
48
52
  /**
49
53
  * Accumulates an ImportReport while an importer runs. Errors count toward the error limit; the
50
54
  * error that takes the count beyond the limit is still recorded, `truncated` is set, and an
51
- * ImportError carrying the report so far is thrown (design section 8.4: "beyond it the importer
52
- * aborts with E_IMPORT"). Warnings never abort.
55
+ * ImportError carrying the report so far is thrown. Warnings never abort.
56
+ * @category Writing a format
53
57
  */
54
58
  export declare class ImportReportBuilder {
55
59
  /** The importer's format name. */
@@ -61,6 +65,8 @@ export declare class ImportReportBuilder {
61
65
  private readonly issueList;
62
66
  private readonly lossList;
63
67
  private readonly onceCodes;
68
+ /** Warnings recorded per code, kept or not. */
69
+ private readonly warningsByCode;
64
70
  private errors;
65
71
  private warnings;
66
72
  private truncatedFlag;
@@ -107,7 +113,9 @@ export declare class ImportReportBuilder {
107
113
  */
108
114
  error(category: IssueCategory, code: string, message: string, where?: IssueLocation): ImportIssue;
109
115
  /**
110
- * Record a warning; warnings never count toward the limit.
116
+ * Record a warning; warnings never count toward the limit. Beyond MAX_WARNINGS_PER_CODE
117
+ * warnings of one code the warning is counted, not kept: finish() adds one W_ISSUES_SUPPRESSED
118
+ * warning per such code with the number dropped.
111
119
  * @param category - the issue category
112
120
  * @param code - a stable code such as "W_WIDENED"
113
121
  * @param message - a plain-ASCII message
@@ -137,7 +145,7 @@ export declare class ImportReportBuilder {
137
145
  */
138
146
  loss(code: string, message: string, column?: string | null, count?: number | null): LossNote;
139
147
  /**
140
- * The per-element catch of design section 8.6: record a thrown GraphFormatError as an error
148
+ * The per-element catch: record a thrown GraphFormatError as an error
141
149
  * issue with its code and the category the code implies. Anything else is re-thrown unchanged:
142
150
  * an ImportError (the import already aborted), an abort reason, and any other thrown value (a
143
151
  * TypeError or RangeError is a programming error in the importer or the sink, never a defect of
@@ -147,6 +155,13 @@ export declare class ImportReportBuilder {
147
155
  * @returns the recorded issue
148
156
  */
149
157
  recordError(err: unknown, where?: IssueLocation): ImportIssue;
158
+ /**
159
+ * A builder that starts from everything this one recorded so far: issues, counts, loss notes,
160
+ * the warnOnce keys, the error and warning counts and the truncation flag. For an importer that
161
+ * reads its input once and emits several graphs, each with its own report.
162
+ * @returns the copy; later records to either builder do not reach the other
163
+ */
164
+ fork(): ImportReportBuilder;
150
165
  /**
151
166
  * Build the ImportError that aborts the import, carrying the report so far. The caller throws
152
167
  * it; this method only constructs it so it can be used in expression position.
@@ -164,6 +179,34 @@ export declare class ImportReportBuilder {
164
179
  * @param details - optional machine-readable context for the ImportError
165
180
  */
166
181
  fail(code: string, message: string, where?: IssueLocation, details?: Readonly<Record<string, unknown>>): never;
182
+ /**
183
+ * Record a fatal error of any category and abort, as fail() does for a parse error: a size
184
+ * limit (E_TOO_LARGE, category "unsupported") stops an import without being a defect of the
185
+ * syntax. A fatal error is not the error limit: `truncated` stays as it was.
186
+ * @param category - the issue category
187
+ * @param code - a stable code
188
+ * @param message - a plain-ASCII message
189
+ * @param where - the line and element, when known
190
+ * @param details - optional machine-readable context for the ImportError
191
+ */
192
+ failWith(category: IssueCategory, code: string, message: string, where?: IssueLocation, details?: Readonly<Record<string, unknown>>): never;
193
+ /**
194
+ * Add a finished report to this one: its issues after the ones recorded so far, its counts, its
195
+ * loss notes and its truncated flag. Use it when an importer hands part of the work to another
196
+ * importer (for example, a wrapper around the CSV importer) and returns one report for both. The issues
197
+ * keep their codes; errors added this way do not count toward this report's error limit, since
198
+ * the other importer applied its own.
199
+ * @param report - the report the other importer returned
200
+ * @returns this builder
201
+ * @example
202
+ * ```ts
203
+ * const report = new ImportReportBuilder("netscope", opts.errorLimit);
204
+ * const text = await readText(input, report, opts);
205
+ * report.include(await csvImporter.import(text, sink, options));
206
+ * return report.finish();
207
+ * ```
208
+ */
209
+ include(report: ImportReport): this;
167
210
  /**
168
211
  * The report as it stands: a frozen snapshot with the parse duration so far. Can be called more
169
212
  * than once; each call reflects everything recorded up to that point.
@@ -172,16 +215,31 @@ export declare class ImportReportBuilder {
172
215
  finish(): ImportReport;
173
216
  }
174
217
  /**
175
- * Whether a thrown value is an abort reason (the DOMException or Error named "AbortError" that
176
- * AbortSignal.reason holds), which an importer must let through untouched.
218
+ * Whether a thrown value means the load was cancelled rather than failed: the DOMException or Error
219
+ * named "AbortError" that an aborted signal throws, or the "TimeoutError" of AbortSignal.timeout().
220
+ * Use it in a `catch` block to say nothing to the user when they cancelled. A custom reason passed
221
+ * to `abort(reason)` is not recognized: compare it with `signal.reason`. A format plugin uses it to
222
+ * let a cancellation through untouched.
177
223
  * @param err - the thrown value
178
- * @returns true for an AbortError
224
+ * @returns true for an AbortError or a TimeoutError
225
+ * @example
226
+ * ```ts
227
+ * try {
228
+ * await loadFromUrl(url, { signal });
229
+ * } catch (err) {
230
+ * if (!isAbortError(err)) {
231
+ * showError(err);
232
+ * }
233
+ * }
234
+ * ```
235
+ * @category Reports and errors
179
236
  */
180
237
  export declare function isAbortError(err: unknown): boolean;
181
238
  /**
182
239
  * The message of a thrown value: an Error's message, a string as is, anything else described by type.
183
240
  * @param err - the thrown value
184
241
  * @returns a plain message
242
+ * @category Plugin helpers
185
243
  */
186
244
  export declare function messageOf(err: unknown): string;
187
245
  //# sourceMappingURL=report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/common/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/common/report.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,14 @@
11
11
  */
12
12
  import { GraphFormatError } from "@graphty/graph-format";
13
13
  import { ImportError } from "../types.js";
14
+ import { ISSUES_SUPPRESSED_CODE } from "./codes.js";
15
+ import { agree, plural } from "./plural.js";
16
+ /**
17
+ * The most warnings of one code a report keeps; later ones are counted in one W_ISSUES_SUPPRESSED
18
+ * warning, so a per-row warning on a large file cannot grow the report without bound.
19
+ * @category Issue and loss codes
20
+ */
21
+ export const MAX_WARNINGS_PER_CODE = 1000;
14
22
  /**
15
23
  * The category a thrown GraphFormatError maps to when an importer catches it per element: the codes
16
24
  * that mean "the file referenced something it never declared" are missing values, a refused
@@ -26,17 +34,28 @@ const CATEGORY_BY_CODE = {
26
34
  E_GPU_INELIGIBLE: "unsupported",
27
35
  };
28
36
  /**
29
- * The code a report used to give a thrown value that was not a GraphFormatError. Since audit round
30
- * 1 such a value (a TypeError, a RangeError: a bug in an importer or a sink, never a defect of the
31
- * input) propagates out of import() untouched, so no importer records this code any more; the
32
- * constant stays for consumers that switch on the codes of earlier reports.
37
+ * No longer recorded; kept so code that switches on older reports still compiles.
38
+ * @category Issue and loss codes
33
39
  */
34
40
  export const PARSE_ERROR_CODE = "E_PARSE";
41
+ /**
42
+ * An issue message as the ImportError shows it: prefixed with its line when the issue has one and the
43
+ * message does not already name it.
44
+ * @param message - the issue message
45
+ * @param where - the issue location
46
+ * @returns the message for the error
47
+ */
48
+ function withLine(message, where) {
49
+ const line = where?.line;
50
+ return line === undefined || line === null || message.includes(`line ${line}`)
51
+ ? message
52
+ : `line ${line}: ${message}`;
53
+ }
35
54
  /**
36
55
  * Accumulates an ImportReport while an importer runs. Errors count toward the error limit; the
37
56
  * error that takes the count beyond the limit is still recorded, `truncated` is set, and an
38
- * ImportError carrying the report so far is thrown (design section 8.4: "beyond it the importer
39
- * aborts with E_IMPORT"). Warnings never abort.
57
+ * ImportError carrying the report so far is thrown. Warnings never abort.
58
+ * @category Writing a format
40
59
  */
41
60
  export class ImportReportBuilder {
42
61
  /**
@@ -50,6 +69,8 @@ export class ImportReportBuilder {
50
69
  this.issueList = [];
51
70
  this.lossList = [];
52
71
  this.onceCodes = new Set();
72
+ /** Warnings recorded per code, kept or not. */
73
+ this.warningsByCode = new Map();
53
74
  this.errors = 0;
54
75
  this.warnings = 0;
55
76
  this.truncatedFlag = false;
@@ -107,7 +128,7 @@ export class ImportReportBuilder {
107
128
  this.errors++;
108
129
  if (this.errors > this.errorLimit) {
109
130
  this.truncatedFlag = true;
110
- throw this.abort(`error limit of ${this.errorLimit} exceeded: ${message}`, {
131
+ throw this.abort(`error limit of ${this.errorLimit} exceeded: ${withLine(message, where)}`, {
111
132
  code,
112
133
  limit: this.errorLimit,
113
134
  });
@@ -115,7 +136,9 @@ export class ImportReportBuilder {
115
136
  return issue;
116
137
  }
117
138
  /**
118
- * Record a warning; warnings never count toward the limit.
139
+ * Record a warning; warnings never count toward the limit. Beyond MAX_WARNINGS_PER_CODE
140
+ * warnings of one code the warning is counted, not kept: finish() adds one W_ISSUES_SUPPRESSED
141
+ * warning per such code with the number dropped.
119
142
  * @param category - the issue category
120
143
  * @param code - a stable code such as "W_WIDENED"
121
144
  * @param message - a plain-ASCII message
@@ -124,8 +147,12 @@ export class ImportReportBuilder {
124
147
  */
125
148
  warning(category, code, message, where) {
126
149
  const issue = makeIssue(category, "warning", code, message, where);
127
- this.issueList.push(issue);
128
- this.warnings++;
150
+ const seen = (this.warningsByCode.get(code) ?? 0) + 1;
151
+ this.warningsByCode.set(code, seen);
152
+ if (seen <= MAX_WARNINGS_PER_CODE) {
153
+ this.issueList.push(issue);
154
+ this.warnings++;
155
+ }
129
156
  return issue;
130
157
  }
131
158
  /**
@@ -160,7 +187,7 @@ export class ImportReportBuilder {
160
187
  return note;
161
188
  }
162
189
  /**
163
- * The per-element catch of design section 8.6: record a thrown GraphFormatError as an error
190
+ * The per-element catch: record a thrown GraphFormatError as an error
164
191
  * issue with its code and the category the code implies. Anything else is re-thrown unchanged:
165
192
  * an ImportError (the import already aborted), an abort reason, and any other thrown value (a
166
193
  * TypeError or RangeError is a programming error in the importer or the sink, never a defect of
@@ -172,10 +199,36 @@ export class ImportReportBuilder {
172
199
  recordError(err, where) {
173
200
  if (err instanceof GraphFormatError && !(err instanceof ImportError)) {
174
201
  const category = CATEGORY_BY_CODE[err.code] ?? "validation-error";
202
+ if (err.code === "E_TOO_LARGE") {
203
+ // the sink is full: every later element would fail the same way, so the import stops
204
+ return this.failWith(category, err.code, err.message, where);
205
+ }
175
206
  return this.error(category, err.code, err.message, where);
176
207
  }
177
208
  throw err;
178
209
  }
210
+ /**
211
+ * A builder that starts from everything this one recorded so far: issues, counts, loss notes,
212
+ * the warnOnce keys, the error and warning counts and the truncation flag. For an importer that
213
+ * reads its input once and emits several graphs, each with its own report.
214
+ * @returns the copy; later records to either builder do not reach the other
215
+ */
216
+ fork() {
217
+ const copy = new ImportReportBuilder(this.format, this.errorLimit);
218
+ Object.assign(copy.counts, this.counts);
219
+ copy.issueList.push(...this.issueList);
220
+ copy.lossList.push(...this.lossList);
221
+ for (const key of this.onceCodes) {
222
+ copy.onceCodes.add(key);
223
+ }
224
+ for (const [code, count] of this.warningsByCode) {
225
+ copy.warningsByCode.set(code, count);
226
+ }
227
+ copy.errors = this.errors;
228
+ copy.warnings = this.warnings;
229
+ copy.truncatedFlag = this.truncatedFlag;
230
+ return copy;
231
+ }
179
232
  /**
180
233
  * Build the ImportError that aborts the import, carrying the report so far. The caller throws
181
234
  * it; this method only constructs it so it can be used in expression position.
@@ -195,13 +248,58 @@ export class ImportReportBuilder {
195
248
  * @param details - optional machine-readable context for the ImportError
196
249
  */
197
250
  fail(code, message, where, details) {
198
- const issue = makeIssue("parse-error", "error", code, message, where);
199
- this.issueList.push(issue);
251
+ this.failWith("parse-error", code, message, where, details);
252
+ }
253
+ /**
254
+ * Record a fatal error of any category and abort, as fail() does for a parse error: a size
255
+ * limit (E_TOO_LARGE, category "unsupported") stops an import without being a defect of the
256
+ * syntax. A fatal error is not the error limit: `truncated` stays as it was.
257
+ * @param category - the issue category
258
+ * @param code - a stable code
259
+ * @param message - a plain-ASCII message
260
+ * @param where - the line and element, when known
261
+ * @param details - optional machine-readable context for the ImportError
262
+ */
263
+ failWith(category, code, message, where, details) {
264
+ this.issueList.push(makeIssue(category, "error", code, message, where));
200
265
  this.errors++;
201
- if (this.errors > this.errorLimit) {
202
- this.truncatedFlag = true;
266
+ throw this.abort(withLine(message, where), { code, ...details });
267
+ }
268
+ /**
269
+ * Add a finished report to this one: its issues after the ones recorded so far, its counts, its
270
+ * loss notes and its truncated flag. Use it when an importer hands part of the work to another
271
+ * importer (for example, a wrapper around the CSV importer) and returns one report for both. The issues
272
+ * keep their codes; errors added this way do not count toward this report's error limit, since
273
+ * the other importer applied its own.
274
+ * @param report - the report the other importer returned
275
+ * @returns this builder
276
+ * @example
277
+ * ```ts
278
+ * const report = new ImportReportBuilder("netscope", opts.errorLimit);
279
+ * const text = await readText(input, report, opts);
280
+ * report.include(await csvImporter.import(text, sink, options));
281
+ * return report.finish();
282
+ * ```
283
+ */
284
+ include(report) {
285
+ for (const issue of report.issues) {
286
+ this.issueList.push(issue);
287
+ if (issue.severity === "error") {
288
+ this.errors++;
289
+ }
290
+ else {
291
+ this.warnings++;
292
+ }
203
293
  }
204
- throw this.abort(message, { code, ...details });
294
+ const { counts } = report;
295
+ this.counts.nodes += counts.nodes;
296
+ this.counts.edges += counts.edges;
297
+ this.counts.skippedNodes += counts.skippedNodes;
298
+ this.counts.skippedEdges += counts.skippedEdges;
299
+ this.counts.expandedMixed += counts.expandedMixed;
300
+ this.lossList.push(...report.lossy);
301
+ this.truncatedFlag || (this.truncatedFlag = report.truncated);
302
+ return this;
205
303
  }
206
304
  /**
207
305
  * The report as it stands: a frozen snapshot with the parse duration so far. Can be called more
@@ -210,12 +308,19 @@ export class ImportReportBuilder {
210
308
  */
211
309
  finish() {
212
310
  const { nodes, edges, skippedNodes, skippedEdges, expandedMixed } = this.counts;
311
+ const suppressed = [];
312
+ for (const [code, seen] of this.warningsByCode) {
313
+ if (seen > MAX_WARNINGS_PER_CODE) {
314
+ const more = seen - MAX_WARNINGS_PER_CODE;
315
+ suppressed.push(makeIssue("unsupported", "warning", ISSUES_SUPPRESSED_CODE, `${more} more ${code} warning${plural(more)} ${agree(more, "was", "were")} not kept (the report keeps the first ${MAX_WARNINGS_PER_CODE})`, { element: code }));
316
+ }
317
+ }
213
318
  return Object.freeze({
214
319
  format: this.format,
215
320
  counts: Object.freeze({ nodes, edges, skippedNodes, skippedEdges, expandedMixed }),
216
- issues: Object.freeze([...this.issueList]),
321
+ issues: Object.freeze([...this.issueList, ...suppressed]),
217
322
  errorCount: this.errors,
218
- warningCount: this.warnings,
323
+ warningCount: this.warnings + suppressed.length,
219
324
  truncated: this.truncatedFlag,
220
325
  lossy: Object.freeze([...this.lossList]),
221
326
  durationMs: now() - this.startedAt,
@@ -242,18 +347,37 @@ function makeIssue(category, severity, code, message, where) {
242
347
  });
243
348
  }
244
349
  /**
245
- * Whether a thrown value is an abort reason (the DOMException or Error named "AbortError" that
246
- * AbortSignal.reason holds), which an importer must let through untouched.
350
+ * Whether a thrown value means the load was cancelled rather than failed: the DOMException or Error
351
+ * named "AbortError" that an aborted signal throws, or the "TimeoutError" of AbortSignal.timeout().
352
+ * Use it in a `catch` block to say nothing to the user when they cancelled. A custom reason passed
353
+ * to `abort(reason)` is not recognized: compare it with `signal.reason`. A format plugin uses it to
354
+ * let a cancellation through untouched.
247
355
  * @param err - the thrown value
248
- * @returns true for an AbortError
356
+ * @returns true for an AbortError or a TimeoutError
357
+ * @example
358
+ * ```ts
359
+ * try {
360
+ * await loadFromUrl(url, { signal });
361
+ * } catch (err) {
362
+ * if (!isAbortError(err)) {
363
+ * showError(err);
364
+ * }
365
+ * }
366
+ * ```
367
+ * @category Reports and errors
249
368
  */
250
369
  export function isAbortError(err) {
251
- return typeof err === "object" && err !== null && err.name === "AbortError";
370
+ if (typeof err !== "object" || err === null) {
371
+ return false;
372
+ }
373
+ const { name } = err;
374
+ return name === "AbortError" || name === "TimeoutError";
252
375
  }
253
376
  /**
254
377
  * The message of a thrown value: an Error's message, a string as is, anything else described by type.
255
378
  * @param err - the thrown value
256
379
  * @returns a plain message
380
+ * @category Plugin helpers
257
381
  */
258
382
  export function messageOf(err) {
259
383
  if (err instanceof Error) {
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/common/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/common/report.ts"],"names":[],"mappings":"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"}
@@ -10,30 +10,43 @@
10
10
  * grammar rather than Date.parse, so two hosts agree on every value.
11
11
  */
12
12
  import { type ColumnDecl, type ColumnRole } from "@graphty/graph-format";
13
- /** The temporal kinds a declared type can map to; each fixes the parse grammar and the canonical text. */
13
+ /**
14
+ * The temporal kinds a declared type can map to; each fixes the parse grammar and the canonical text.
15
+ * @category Plugin helpers
16
+ */
14
17
  export type TemporalKind = "date" | "dateTime" | "localDateTime" | "time" | "localTime";
15
18
  /**
16
19
  * The GEXF `timeformat` values (design section 5.9).
17
- * Consumed by the per-format importers and exporters under src/formats.
18
20
  * @public
21
+ * @category Plugin helpers
19
22
  */
20
23
  export type TimeFormat = "integer" | "double" | "date" | "dateTime";
21
- /** A parsed temporal value: the number stored in the column and the source text when it must be kept. */
24
+ /**
25
+ * A parsed temporal value: the number stored in the column and the source text when it must be kept.
26
+ * @category Plugin helpers
27
+ */
22
28
  export interface TemporalValue {
23
29
  /** Epoch milliseconds (date, dateTime, localDateTime), milliseconds since midnight (time, localTime), or the raw number. */
24
30
  readonly value: number;
25
31
  /** The source text when formatTemporal(value) would not reproduce it; null otherwise. */
26
32
  readonly text: string | null;
27
33
  }
28
- /** The role of a companion text column. */
34
+ /**
35
+ * The role of a companion text column.
36
+ * @category Plugin helpers
37
+ */
29
38
  export declare const TIME_TEXT_ROLE: ColumnRole;
30
- /** The suffix of a companion text column's name. */
39
+ /**
40
+ * The suffix of a companion text column's name.
41
+ * @category Plugin helpers
42
+ */
31
43
  export declare const TIME_TEXT_SUFFIX = ".text";
32
44
  /**
33
45
  * Parse an ISO-8601 temporal text of one kind.
34
46
  * @param text - the source text (already trimmed)
35
47
  * @param kind - the temporal kind
36
48
  * @returns the value and, when the canonical form differs, the source text; E_COLUMN_TYPE when the text is not of the kind
49
+ * @category Plugin helpers
37
50
  */
38
51
  export declare function parseTemporal(text: string, kind: TemporalKind): TemporalValue;
39
52
  /**
@@ -44,6 +57,7 @@ export declare function parseTemporal(text: string, kind: TemporalKind): Tempora
44
57
  * @param text - the source text
45
58
  * @param timeFormat - the graph's timeformat, or null when the file declares none
46
59
  * @returns the value and the source text when it must be kept
60
+ * @category Plugin helpers
47
61
  */
48
62
  export declare function parseTimeText(text: string, timeFormat: TimeFormat | null): TemporalValue;
49
63
  /**
@@ -52,6 +66,7 @@ export declare function parseTimeText(text: string, timeFormat: TimeFormat | nul
52
66
  * @param kind - the temporal kind
53
67
  * @returns the canonical text: `YYYY-MM-DD`, `YYYY-MM-DDTHH:MM:SS[.mmm]Z`, `YYYY-MM-DDTHH:MM:SS[.mmm]`,
54
68
  * `HH:MM:SS[.mmm]Z` or `HH:MM:SS[.mmm]`
69
+ * @category Plugin helpers
55
70
  */
56
71
  export declare function formatTemporal(value: number, kind: TemporalKind): string;
57
72
  /**
@@ -60,12 +75,14 @@ export declare function formatTemporal(value: number, kind: TemporalKind): strin
60
75
  * @param value - the value as stored
61
76
  * @param timeFormat - the graph's timeformat, or null for a file that declares none (double)
62
77
  * @returns the text
78
+ * @category Plugin helpers
63
79
  */
64
80
  export declare function formatTimeValue(value: number, timeFormat: TimeFormat | null): string;
65
81
  /**
66
82
  * The declaration of the companion text column of a temporal column (design section 5.1).
67
83
  * @param column - the temporal column's name
68
84
  * @returns a string column named `<column>.text` with role timeText and `extra.for` naming the column
85
+ * @category Plugin helpers
69
86
  */
70
87
  export declare function timeTextCompanion(column: string): ColumnDecl;
71
88
  //# sourceMappingURL=temporal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"temporal.d.ts","sourceRoot":"","sources":["../../../src/common/temporal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAoB,MAAM,uBAAuB,CAAC;AAE3F,0GAA0G;AAC1G,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;AAExF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAEpE,yGAAyG;AACzG,MAAM,WAAW,aAAa;IAC1B,4HAA4H;IAC5H,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,2CAA2C;AAC3C,eAAO,MAAM,cAAc,EAAE,UAAuB,CAAC;AAErD,oDAAoD;AACpD,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAUxC;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,aAAa,CAmB7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,aAAa,CAiBxF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CA2BxE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CAepF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAQ5D"}
1
+ {"version":3,"file":"temporal.d.ts","sourceRoot":"","sources":["../../../src/common/temporal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAoB,MAAM,uBAAuB,CAAC;AAE3F;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;AAExF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B,4HAA4H;IAC5H,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,UAAuB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAUxC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,aAAa,CAmB7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,aAAa,CAiBxF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CA2BxE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CAepF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAQ5D"}
@@ -10,9 +10,15 @@
10
10
  * grammar rather than Date.parse, so two hosts agree on every value.
11
11
  */
12
12
  import { GraphFormatError } from "@graphty/graph-format";
13
- /** The role of a companion text column. */
13
+ /**
14
+ * The role of a companion text column.
15
+ * @category Plugin helpers
16
+ */
14
17
  export const TIME_TEXT_ROLE = "timeText";
15
- /** The suffix of a companion text column's name. */
18
+ /**
19
+ * The suffix of a companion text column's name.
20
+ * @category Plugin helpers
21
+ */
16
22
  export const TIME_TEXT_SUFFIX = ".text";
17
23
  const DATE_TIME = /^(-?[0-9]{4,})-([0-9]{2})-([0-9]{2})(?:[T ]([0-9]{2}):([0-9]{2})(?::([0-9]{2})(?:\.([0-9]{1,9}))?)?)?(Z|z|[+-][0-9]{2}(?::?[0-9]{2})?)?$/;
18
24
  const TIME = /^([0-9]{2}):([0-9]{2})(?::([0-9]{2})(?:\.([0-9]{1,9}))?)?(Z|z|[+-][0-9]{2}(?::?[0-9]{2})?)?$/;
@@ -24,6 +30,7 @@ const MS_PER_DAY = 86400000;
24
30
  * @param text - the source text (already trimmed)
25
31
  * @param kind - the temporal kind
26
32
  * @returns the value and, when the canonical form differs, the source text; E_COLUMN_TYPE when the text is not of the kind
33
+ * @category Plugin helpers
27
34
  */
28
35
  export function parseTemporal(text, kind) {
29
36
  let value;
@@ -53,6 +60,7 @@ export function parseTemporal(text, kind) {
53
60
  * @param text - the source text
54
61
  * @param timeFormat - the graph's timeformat, or null when the file declares none
55
62
  * @returns the value and the source text when it must be kept
63
+ * @category Plugin helpers
56
64
  */
57
65
  export function parseTimeText(text, timeFormat) {
58
66
  const trimmed = text.trim();
@@ -78,6 +86,7 @@ export function parseTimeText(text, timeFormat) {
78
86
  * @param kind - the temporal kind
79
87
  * @returns the canonical text: `YYYY-MM-DD`, `YYYY-MM-DDTHH:MM:SS[.mmm]Z`, `YYYY-MM-DDTHH:MM:SS[.mmm]`,
80
88
  * `HH:MM:SS[.mmm]Z` or `HH:MM:SS[.mmm]`
89
+ * @category Plugin helpers
81
90
  */
82
91
  export function formatTemporal(value, kind) {
83
92
  switch (kind) {
@@ -113,6 +122,7 @@ export function formatTemporal(value, kind) {
113
122
  * @param value - the value as stored
114
123
  * @param timeFormat - the graph's timeformat, or null for a file that declares none (double)
115
124
  * @returns the text
125
+ * @category Plugin helpers
116
126
  */
117
127
  export function formatTimeValue(value, timeFormat) {
118
128
  switch (timeFormat) {
@@ -134,6 +144,7 @@ export function formatTimeValue(value, timeFormat) {
134
144
  * The declaration of the companion text column of a temporal column (design section 5.1).
135
145
  * @param column - the temporal column's name
136
146
  * @returns a string column named `<column>.text` with role timeText and `extra.for` naming the column
147
+ * @category Plugin helpers
137
148
  */
138
149
  export function timeTextCompanion(column) {
139
150
  return {