@graphty/graph-io 0.3.25 → 0.3.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (581) hide show
  1. package/README.md +49 -414
  2. package/dist/chunks/children-CL3Cy0ez.js.map +1 -1
  3. package/dist/chunks/choose-BbJI55dx.js +56 -0
  4. package/dist/chunks/choose-BbJI55dx.js.map +1 -0
  5. package/dist/chunks/constants-BCsFsMj4.js +231 -0
  6. package/dist/chunks/constants-BCsFsMj4.js.map +1 -0
  7. package/dist/chunks/{escape-B-tkk_Cl.js → escape-D0g6NNUy.js} +382 -92
  8. package/dist/chunks/escape-D0g6NNUy.js.map +1 -0
  9. package/dist/chunks/export-BTI4yQgy.js +4333 -0
  10. package/dist/chunks/export-BTI4yQgy.js.map +1 -0
  11. package/dist/chunks/exporter-BMqk5oxW.js +3465 -0
  12. package/dist/chunks/exporter-BMqk5oxW.js.map +1 -0
  13. package/dist/chunks/{importer-eUREhBGj.js → exporter-Cra2GYcN.js} +4969 -3201
  14. package/dist/chunks/exporter-Cra2GYcN.js.map +1 -0
  15. package/dist/chunks/{exporter-BGrsWamJ.js → exporter-Dxh231ZF.js} +38 -229
  16. package/dist/chunks/exporter-Dxh231ZF.js.map +1 -0
  17. package/dist/chunks/{exporter-DIeGJXAZ.js → exporter-tne475KK.js} +22 -20
  18. package/dist/chunks/exporter-tne475KK.js.map +1 -0
  19. package/dist/chunks/importer-90YWhJoF.js +2811 -0
  20. package/dist/chunks/importer-90YWhJoF.js.map +1 -0
  21. package/dist/chunks/{importer-D_e7e7LX.js → importer-Bcl1d4xH.js} +398 -145
  22. package/dist/chunks/importer-Bcl1d4xH.js.map +1 -0
  23. package/dist/chunks/{importer-BWY2FFc5.js → importer-BfIsp1f9.js} +255 -77
  24. package/dist/chunks/importer-BfIsp1f9.js.map +1 -0
  25. package/dist/chunks/{importer-zGLo8Dg_.js → importer-C_TEA1zJ.js} +484 -157
  26. package/dist/chunks/importer-C_TEA1zJ.js.map +1 -0
  27. package/dist/chunks/{importer-DET1tg6s.js → importer-DCjOvO7U.js} +1687 -310
  28. package/dist/chunks/importer-DCjOvO7U.js.map +1 -0
  29. package/dist/chunks/{importer-vi3bSdtw.js → importer-DfVu6j59.js} +509 -76
  30. package/dist/chunks/importer-DfVu6j59.js.map +1 -0
  31. package/dist/chunks/{importer-DIrbbnAf.js → importer-Dku_VAIY.js} +585 -226
  32. package/dist/chunks/importer-Dku_VAIY.js.map +1 -0
  33. package/dist/chunks/json-elements-3tnyt5uZ.js +1225 -0
  34. package/dist/chunks/json-elements-3tnyt5uZ.js.map +1 -0
  35. package/dist/chunks/ontology-export-B9Tcf37D.js +357 -0
  36. package/dist/chunks/ontology-export-B9Tcf37D.js.map +1 -0
  37. package/dist/chunks/{records-dbRkxwaq.js → records-CQXT__mY.js} +298 -114
  38. package/dist/chunks/records-CQXT__mY.js.map +1 -0
  39. package/dist/chunks/{text-Dr0Ifpag.js → text-DmcUs5_Q.js} +29 -11
  40. package/dist/chunks/text-DmcUs5_Q.js.map +1 -0
  41. package/dist/chunks/{writer-C7flM-Ih.js → writer-DxjgHwSe.js} +19 -1
  42. package/dist/chunks/writer-DxjgHwSe.js.map +1 -0
  43. package/dist/csv.js +951 -261
  44. package/dist/csv.js.map +1 -1
  45. package/dist/cx.js +6 -3
  46. package/dist/cx2.js +2 -2
  47. package/dist/cys.js +6 -3
  48. package/dist/dot.js +1 -1
  49. package/dist/gexf.js +554 -122
  50. package/dist/gexf.js.map +1 -1
  51. package/dist/gml.js +342 -85
  52. package/dist/gml.js.map +1 -1
  53. package/dist/graph-io.js +1105 -213
  54. package/dist/graph-io.js.map +1 -1
  55. package/dist/graphml.js +3 -2
  56. package/dist/graphml.js.map +1 -1
  57. package/dist/json.js +3 -2
  58. package/dist/neo4j.js +564 -157
  59. package/dist/neo4j.js.map +1 -1
  60. package/dist/obo.js +6 -3
  61. package/dist/pajek.js +1 -1
  62. package/dist/src/children.d.ts +18 -6
  63. package/dist/src/children.d.ts.map +1 -1
  64. package/dist/src/children.js +6 -3
  65. package/dist/src/children.js.map +1 -1
  66. package/dist/src/common/attributes.d.ts +29 -11
  67. package/dist/src/common/attributes.d.ts.map +1 -1
  68. package/dist/src/common/attributes.js +25 -7
  69. package/dist/src/common/attributes.js.map +1 -1
  70. package/dist/src/common/cell-budget.d.ts +9 -2
  71. package/dist/src/common/cell-budget.d.ts.map +1 -1
  72. package/dist/src/common/cell-budget.js +11 -3
  73. package/dist/src/common/cell-budget.js.map +1 -1
  74. package/dist/src/common/choose.d.ts +19 -0
  75. package/dist/src/common/choose.d.ts.map +1 -0
  76. package/dist/src/common/choose.js +72 -0
  77. package/dist/src/common/choose.js.map +1 -0
  78. package/dist/src/common/codes.d.ts +456 -66
  79. package/dist/src/common/codes.d.ts.map +1 -1
  80. package/dist/src/common/codes.js +458 -66
  81. package/dist/src/common/codes.js.map +1 -1
  82. package/dist/src/common/compare.d.ts +81 -0
  83. package/dist/src/common/compare.d.ts.map +1 -0
  84. package/dist/src/common/compare.js +394 -0
  85. package/dist/src/common/compare.js.map +1 -0
  86. package/dist/src/common/cx-export.d.ts +123 -0
  87. package/dist/src/common/cx-export.d.ts.map +1 -0
  88. package/dist/src/common/cx-export.js +334 -0
  89. package/dist/src/common/cx-export.js.map +1 -0
  90. package/dist/src/common/declared-types.d.ts +22 -2
  91. package/dist/src/common/declared-types.d.ts.map +1 -1
  92. package/dist/src/common/declared-types.js +19 -1
  93. package/dist/src/common/declared-types.js.map +1 -1
  94. package/dist/src/common/direction.d.ts +74 -50
  95. package/dist/src/common/direction.d.ts.map +1 -1
  96. package/dist/src/common/direction.js +47 -27
  97. package/dist/src/common/direction.js.map +1 -1
  98. package/dist/src/common/escape.d.ts +21 -9
  99. package/dist/src/common/escape.d.ts.map +1 -1
  100. package/dist/src/common/escape.js +33 -17
  101. package/dist/src/common/escape.js.map +1 -1
  102. package/dist/src/common/export.d.ts +144 -32
  103. package/dist/src/common/export.d.ts.map +1 -1
  104. package/dist/src/common/export.js +216 -42
  105. package/dist/src/common/export.js.map +1 -1
  106. package/dist/src/common/format.d.ts +23 -1
  107. package/dist/src/common/format.d.ts.map +1 -1
  108. package/dist/src/common/format.js +26 -1
  109. package/dist/src/common/format.js.map +1 -1
  110. package/dist/src/common/ids.d.ts +9 -2
  111. package/dist/src/common/ids.d.ts.map +1 -1
  112. package/dist/src/common/ids.js +6 -2
  113. package/dist/src/common/ids.js.map +1 -1
  114. package/dist/src/common/input.d.ts +122 -28
  115. package/dist/src/common/input.d.ts.map +1 -1
  116. package/dist/src/common/input.js +890 -124
  117. package/dist/src/common/input.js.map +1 -1
  118. package/dist/src/common/json-elements.d.ts +144 -20
  119. package/dist/src/common/json-elements.d.ts.map +1 -1
  120. package/dist/src/common/json-elements.js +868 -188
  121. package/dist/src/common/json-elements.js.map +1 -1
  122. package/dist/src/common/line-format.d.ts +90 -0
  123. package/dist/src/common/line-format.d.ts.map +1 -0
  124. package/dist/src/common/line-format.js +185 -0
  125. package/dist/src/common/line-format.js.map +1 -0
  126. package/dist/src/common/lists.d.ts +6 -1
  127. package/dist/src/common/lists.d.ts.map +1 -1
  128. package/dist/src/common/lists.js +2 -0
  129. package/dist/src/common/lists.js.map +1 -1
  130. package/dist/src/common/ontology-export.d.ts +167 -0
  131. package/dist/src/common/ontology-export.d.ts.map +1 -0
  132. package/dist/src/common/ontology-export.js +359 -0
  133. package/dist/src/common/ontology-export.js.map +1 -0
  134. package/dist/src/common/ontology.d.ts +25 -3
  135. package/dist/src/common/ontology.d.ts.map +1 -1
  136. package/dist/src/common/ontology.js +30 -9
  137. package/dist/src/common/ontology.js.map +1 -1
  138. package/dist/src/common/options.d.ts +62 -12
  139. package/dist/src/common/options.d.ts.map +1 -1
  140. package/dist/src/common/options.js +89 -11
  141. package/dist/src/common/options.js.map +1 -1
  142. package/dist/src/common/plural.d.ts +31 -0
  143. package/dist/src/common/plural.d.ts.map +1 -0
  144. package/dist/src/common/plural.js +46 -0
  145. package/dist/src/common/plural.js.map +1 -0
  146. package/dist/src/common/report.d.ts +72 -14
  147. package/dist/src/common/report.d.ts.map +1 -1
  148. package/dist/src/common/report.js +146 -22
  149. package/dist/src/common/report.js.map +1 -1
  150. package/dist/src/common/temporal.d.ts +22 -5
  151. package/dist/src/common/temporal.d.ts.map +1 -1
  152. package/dist/src/common/temporal.js +13 -2
  153. package/dist/src/common/temporal.js.map +1 -1
  154. package/dist/src/common/text.d.ts +39 -23
  155. package/dist/src/common/text.d.ts.map +1 -1
  156. package/dist/src/common/text.js +51 -21
  157. package/dist/src/common/text.js.map +1 -1
  158. package/dist/src/common/weights.d.ts +37 -4
  159. package/dist/src/common/weights.d.ts.map +1 -1
  160. package/dist/src/common/weights.js +61 -2
  161. package/dist/src/common/weights.js.map +1 -1
  162. package/dist/src/common/writer.d.ts +19 -3
  163. package/dist/src/common/writer.d.ts.map +1 -1
  164. package/dist/src/common/writer.js +30 -2
  165. package/dist/src/common/writer.js.map +1 -1
  166. package/dist/src/common/xml.d.ts +125 -9
  167. package/dist/src/common/xml.d.ts.map +1 -1
  168. package/dist/src/common/xml.js +400 -83
  169. package/dist/src/common/xml.js.map +1 -1
  170. package/dist/src/common/zip.d.ts +44 -4
  171. package/dist/src/common/zip.d.ts.map +1 -1
  172. package/dist/src/common/zip.js +134 -5
  173. package/dist/src/common/zip.js.map +1 -1
  174. package/dist/src/formats/csv/exporter.d.ts +80 -24
  175. package/dist/src/formats/csv/exporter.d.ts.map +1 -1
  176. package/dist/src/formats/csv/exporter.js +145 -32
  177. package/dist/src/formats/csv/exporter.js.map +1 -1
  178. package/dist/src/formats/csv/header.d.ts +38 -9
  179. package/dist/src/formats/csv/header.d.ts.map +1 -1
  180. package/dist/src/formats/csv/header.js +46 -10
  181. package/dist/src/formats/csv/header.js.map +1 -1
  182. package/dist/src/formats/csv/importer.d.ts +187 -37
  183. package/dist/src/formats/csv/importer.d.ts.map +1 -1
  184. package/dist/src/formats/csv/importer.js +835 -204
  185. package/dist/src/formats/csv/importer.js.map +1 -1
  186. package/dist/src/formats/csv/index.d.ts +100 -19
  187. package/dist/src/formats/csv/index.d.ts.map +1 -1
  188. package/dist/src/formats/csv/index.js +94 -21
  189. package/dist/src/formats/csv/index.js.map +1 -1
  190. package/dist/src/formats/csv/records.d.ts +95 -10
  191. package/dist/src/formats/csv/records.d.ts.map +1 -1
  192. package/dist/src/formats/csv/records.js +333 -122
  193. package/dist/src/formats/csv/records.js.map +1 -1
  194. package/dist/src/formats/csv/values.d.ts +1 -0
  195. package/dist/src/formats/csv/values.d.ts.map +1 -1
  196. package/dist/src/formats/csv/values.js +1 -0
  197. package/dist/src/formats/csv/values.js.map +1 -1
  198. package/dist/src/formats/cx/exporter.d.ts +102 -0
  199. package/dist/src/formats/cx/exporter.d.ts.map +1 -0
  200. package/dist/src/formats/cx/exporter.js +1217 -0
  201. package/dist/src/formats/cx/exporter.js.map +1 -0
  202. package/dist/src/formats/cx/importer.d.ts +79 -32
  203. package/dist/src/formats/cx/importer.d.ts.map +1 -1
  204. package/dist/src/formats/cx/importer.js +680 -285
  205. package/dist/src/formats/cx/importer.js.map +1 -1
  206. package/dist/src/formats/cx/index.d.ts +4 -3
  207. package/dist/src/formats/cx/index.d.ts.map +1 -1
  208. package/dist/src/formats/cx/index.js +4 -3
  209. package/dist/src/formats/cx/index.js.map +1 -1
  210. package/dist/src/formats/cx2/exporter.d.ts +29 -11
  211. package/dist/src/formats/cx2/exporter.d.ts.map +1 -1
  212. package/dist/src/formats/cx2/exporter.js +39 -268
  213. package/dist/src/formats/cx2/exporter.js.map +1 -1
  214. package/dist/src/formats/cx2/importer.d.ts +78 -28
  215. package/dist/src/formats/cx2/importer.d.ts.map +1 -1
  216. package/dist/src/formats/cx2/importer.js +226 -79
  217. package/dist/src/formats/cx2/importer.js.map +1 -1
  218. package/dist/src/formats/cx2/index.d.ts +2 -1
  219. package/dist/src/formats/cx2/index.d.ts.map +1 -1
  220. package/dist/src/formats/cx2/index.js +2 -1
  221. package/dist/src/formats/cx2/index.js.map +1 -1
  222. package/dist/src/formats/cys/constants.d.ts +66 -17
  223. package/dist/src/formats/cys/constants.d.ts.map +1 -1
  224. package/dist/src/formats/cys/constants.js +59 -18
  225. package/dist/src/formats/cys/constants.js.map +1 -1
  226. package/dist/src/formats/cys/exporter.d.ts +118 -0
  227. package/dist/src/formats/cys/exporter.d.ts.map +1 -0
  228. package/dist/src/formats/cys/exporter.js +1072 -0
  229. package/dist/src/formats/cys/exporter.js.map +1 -0
  230. package/dist/src/formats/cys/importer.d.ts +22 -8
  231. package/dist/src/formats/cys/importer.d.ts.map +1 -1
  232. package/dist/src/formats/cys/importer.js +510 -149
  233. package/dist/src/formats/cys/importer.js.map +1 -1
  234. package/dist/src/formats/cys/index.d.ts +4 -2
  235. package/dist/src/formats/cys/index.d.ts.map +1 -1
  236. package/dist/src/formats/cys/index.js +4 -2
  237. package/dist/src/formats/cys/index.js.map +1 -1
  238. package/dist/src/formats/cys/session.d.ts +46 -7
  239. package/dist/src/formats/cys/session.d.ts.map +1 -1
  240. package/dist/src/formats/cys/session.js +98 -24
  241. package/dist/src/formats/cys/session.js.map +1 -1
  242. package/dist/src/formats/cys/tables.d.ts +9 -2
  243. package/dist/src/formats/cys/tables.d.ts.map +1 -1
  244. package/dist/src/formats/cys/tables.js +29 -7
  245. package/dist/src/formats/cys/tables.js.map +1 -1
  246. package/dist/src/formats/dot/exporter.d.ts +42 -14
  247. package/dist/src/formats/dot/exporter.d.ts.map +1 -1
  248. package/dist/src/formats/dot/exporter.js +56 -29
  249. package/dist/src/formats/dot/exporter.js.map +1 -1
  250. package/dist/src/formats/dot/importer.d.ts +91 -29
  251. package/dist/src/formats/dot/importer.d.ts.map +1 -1
  252. package/dist/src/formats/dot/importer.js +190 -39
  253. package/dist/src/formats/dot/importer.js.map +1 -1
  254. package/dist/src/formats/dot/index.d.ts +2 -1
  255. package/dist/src/formats/dot/index.d.ts.map +1 -1
  256. package/dist/src/formats/dot/index.js +2 -1
  257. package/dist/src/formats/dot/index.js.map +1 -1
  258. package/dist/src/formats/dot/names.d.ts +44 -11
  259. package/dist/src/formats/dot/names.d.ts.map +1 -1
  260. package/dist/src/formats/dot/names.js +44 -11
  261. package/dist/src/formats/dot/names.js.map +1 -1
  262. package/dist/src/formats/dot/tokenizer.d.ts +9 -2
  263. package/dist/src/formats/dot/tokenizer.d.ts.map +1 -1
  264. package/dist/src/formats/dot/tokenizer.js +20 -5
  265. package/dist/src/formats/dot/tokenizer.js.map +1 -1
  266. package/dist/src/formats/gexf/exporter.d.ts +46 -15
  267. package/dist/src/formats/gexf/exporter.d.ts.map +1 -1
  268. package/dist/src/formats/gexf/exporter.js +45 -15
  269. package/dist/src/formats/gexf/exporter.js.map +1 -1
  270. package/dist/src/formats/gexf/importer.d.ts +87 -23
  271. package/dist/src/formats/gexf/importer.d.ts.map +1 -1
  272. package/dist/src/formats/gexf/importer.js +471 -90
  273. package/dist/src/formats/gexf/importer.js.map +1 -1
  274. package/dist/src/formats/gexf/index.d.ts +84 -21
  275. package/dist/src/formats/gexf/index.d.ts.map +1 -1
  276. package/dist/src/formats/gexf/index.js +80 -23
  277. package/dist/src/formats/gexf/index.js.map +1 -1
  278. package/dist/src/formats/gexf/schema.d.ts +67 -15
  279. package/dist/src/formats/gexf/schema.d.ts.map +1 -1
  280. package/dist/src/formats/gexf/schema.js +59 -13
  281. package/dist/src/formats/gexf/schema.js.map +1 -1
  282. package/dist/src/formats/gml/exporter.d.ts +69 -21
  283. package/dist/src/formats/gml/exporter.d.ts.map +1 -1
  284. package/dist/src/formats/gml/exporter.js +74 -29
  285. package/dist/src/formats/gml/exporter.js.map +1 -1
  286. package/dist/src/formats/gml/importer.d.ts +116 -25
  287. package/dist/src/formats/gml/importer.d.ts.map +1 -1
  288. package/dist/src/formats/gml/importer.js +290 -61
  289. package/dist/src/formats/gml/importer.js.map +1 -1
  290. package/dist/src/formats/gml/index.d.ts +87 -24
  291. package/dist/src/formats/gml/index.d.ts.map +1 -1
  292. package/dist/src/formats/gml/index.js +79 -26
  293. package/dist/src/formats/gml/index.js.map +1 -1
  294. package/dist/src/formats/gml/syntax.d.ts +67 -18
  295. package/dist/src/formats/gml/syntax.d.ts.map +1 -1
  296. package/dist/src/formats/gml/syntax.js +108 -26
  297. package/dist/src/formats/gml/syntax.js.map +1 -1
  298. package/dist/src/formats/graphml/constants.d.ts +174 -44
  299. package/dist/src/formats/graphml/constants.d.ts.map +1 -1
  300. package/dist/src/formats/graphml/constants.js +165 -44
  301. package/dist/src/formats/graphml/constants.js.map +1 -1
  302. package/dist/src/formats/graphml/exporter.d.ts +17 -9
  303. package/dist/src/formats/graphml/exporter.d.ts.map +1 -1
  304. package/dist/src/formats/graphml/exporter.js +33 -12
  305. package/dist/src/formats/graphml/exporter.js.map +1 -1
  306. package/dist/src/formats/graphml/importer.d.ts +19 -7
  307. package/dist/src/formats/graphml/importer.d.ts.map +1 -1
  308. package/dist/src/formats/graphml/importer.js +466 -39
  309. package/dist/src/formats/graphml/importer.js.map +1 -1
  310. package/dist/src/formats/graphml/index.d.ts +2 -1
  311. package/dist/src/formats/graphml/index.d.ts.map +1 -1
  312. package/dist/src/formats/graphml/index.js +2 -1
  313. package/dist/src/formats/graphml/index.js.map +1 -1
  314. package/dist/src/formats/graphml/tree.d.ts +6 -2
  315. package/dist/src/formats/graphml/tree.d.ts.map +1 -1
  316. package/dist/src/formats/graphml/tree.js +6 -2
  317. package/dist/src/formats/graphml/tree.js.map +1 -1
  318. package/dist/src/formats/graphml/yfiles.d.ts +8 -3
  319. package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
  320. package/dist/src/formats/graphml/yfiles.js +36 -15
  321. package/dist/src/formats/graphml/yfiles.js.map +1 -1
  322. package/dist/src/formats/json/dialect.d.ts +88 -24
  323. package/dist/src/formats/json/dialect.d.ts.map +1 -1
  324. package/dist/src/formats/json/dialect.js +109 -19
  325. package/dist/src/formats/json/dialect.js.map +1 -1
  326. package/dist/src/formats/json/exporter.d.ts +134 -22
  327. package/dist/src/formats/json/exporter.d.ts.map +1 -1
  328. package/dist/src/formats/json/exporter.js +135 -54
  329. package/dist/src/formats/json/exporter.js.map +1 -1
  330. package/dist/src/formats/json/importer.d.ts +173 -52
  331. package/dist/src/formats/json/importer.d.ts.map +1 -1
  332. package/dist/src/formats/json/importer.js +899 -220
  333. package/dist/src/formats/json/importer.js.map +1 -1
  334. package/dist/src/formats/json/index.d.ts +3 -2
  335. package/dist/src/formats/json/index.d.ts.map +1 -1
  336. package/dist/src/formats/json/index.js +3 -2
  337. package/dist/src/formats/json/index.js.map +1 -1
  338. package/dist/src/formats/json/obographs-export.d.ts +68 -0
  339. package/dist/src/formats/json/obographs-export.d.ts.map +1 -0
  340. package/dist/src/formats/json/obographs-export.js +941 -0
  341. package/dist/src/formats/json/obographs-export.js.map +1 -0
  342. package/dist/src/formats/json/obographs.d.ts +26 -0
  343. package/dist/src/formats/json/obographs.d.ts.map +1 -1
  344. package/dist/src/formats/json/obographs.js +297 -80
  345. package/dist/src/formats/json/obographs.js.map +1 -1
  346. package/dist/src/formats/neo4j/exporter.d.ts +109 -21
  347. package/dist/src/formats/neo4j/exporter.d.ts.map +1 -1
  348. package/dist/src/formats/neo4j/exporter.js +238 -85
  349. package/dist/src/formats/neo4j/exporter.js.map +1 -1
  350. package/dist/src/formats/neo4j/header.d.ts +17 -4
  351. package/dist/src/formats/neo4j/header.d.ts.map +1 -1
  352. package/dist/src/formats/neo4j/header.js +36 -4
  353. package/dist/src/formats/neo4j/header.js.map +1 -1
  354. package/dist/src/formats/neo4j/importer.d.ts +107 -27
  355. package/dist/src/formats/neo4j/importer.d.ts.map +1 -1
  356. package/dist/src/formats/neo4j/importer.js +415 -63
  357. package/dist/src/formats/neo4j/importer.js.map +1 -1
  358. package/dist/src/formats/neo4j/index.d.ts +73 -23
  359. package/dist/src/formats/neo4j/index.d.ts.map +1 -1
  360. package/dist/src/formats/neo4j/index.js +65 -25
  361. package/dist/src/formats/neo4j/index.js.map +1 -1
  362. package/dist/src/formats/obo/exporter.d.ts +150 -0
  363. package/dist/src/formats/obo/exporter.d.ts.map +1 -0
  364. package/dist/src/formats/obo/exporter.js +1736 -0
  365. package/dist/src/formats/obo/exporter.js.map +1 -0
  366. package/dist/src/formats/obo/importer.d.ts +95 -19
  367. package/dist/src/formats/obo/importer.d.ts.map +1 -1
  368. package/dist/src/formats/obo/importer.js +475 -104
  369. package/dist/src/formats/obo/importer.js.map +1 -1
  370. package/dist/src/formats/obo/index.d.ts +6 -3
  371. package/dist/src/formats/obo/index.d.ts.map +1 -1
  372. package/dist/src/formats/obo/index.js +6 -3
  373. package/dist/src/formats/obo/index.js.map +1 -1
  374. package/dist/src/formats/obo/syntax.d.ts +108 -4
  375. package/dist/src/formats/obo/syntax.d.ts.map +1 -1
  376. package/dist/src/formats/obo/syntax.js +211 -34
  377. package/dist/src/formats/obo/syntax.js.map +1 -1
  378. package/dist/src/formats/pajek/exporter.d.ts +54 -16
  379. package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
  380. package/dist/src/formats/pajek/exporter.js +66 -34
  381. package/dist/src/formats/pajek/exporter.js.map +1 -1
  382. package/dist/src/formats/pajek/importer.d.ts +84 -22
  383. package/dist/src/formats/pajek/importer.d.ts.map +1 -1
  384. package/dist/src/formats/pajek/importer.js +303 -83
  385. package/dist/src/formats/pajek/importer.js.map +1 -1
  386. package/dist/src/formats/pajek/index.d.ts +2 -1
  387. package/dist/src/formats/pajek/index.d.ts.map +1 -1
  388. package/dist/src/formats/pajek/index.js +2 -1
  389. package/dist/src/formats/pajek/index.js.map +1 -1
  390. package/dist/src/formats/pajek/syntax.d.ts +77 -14
  391. package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
  392. package/dist/src/formats/pajek/syntax.js +183 -51
  393. package/dist/src/formats/pajek/syntax.js.map +1 -1
  394. package/dist/src/formats/xgmml/columns.d.ts +1 -0
  395. package/dist/src/formats/xgmml/columns.d.ts.map +1 -1
  396. package/dist/src/formats/xgmml/columns.js +4 -0
  397. package/dist/src/formats/xgmml/columns.js.map +1 -1
  398. package/dist/src/formats/xgmml/constants.d.ts +186 -56
  399. package/dist/src/formats/xgmml/constants.d.ts.map +1 -1
  400. package/dist/src/formats/xgmml/constants.js +181 -57
  401. package/dist/src/formats/xgmml/constants.js.map +1 -1
  402. package/dist/src/formats/xgmml/document.d.ts +65 -11
  403. package/dist/src/formats/xgmml/document.d.ts.map +1 -1
  404. package/dist/src/formats/xgmml/document.js +157 -28
  405. package/dist/src/formats/xgmml/document.js.map +1 -1
  406. package/dist/src/formats/xgmml/emit.d.ts +61 -3
  407. package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
  408. package/dist/src/formats/xgmml/emit.js +129 -26
  409. package/dist/src/formats/xgmml/emit.js.map +1 -1
  410. package/dist/src/formats/xgmml/exporter.d.ts +13 -6
  411. package/dist/src/formats/xgmml/exporter.d.ts.map +1 -1
  412. package/dist/src/formats/xgmml/exporter.js +20 -21
  413. package/dist/src/formats/xgmml/exporter.js.map +1 -1
  414. package/dist/src/formats/xgmml/importer.d.ts +33 -12
  415. package/dist/src/formats/xgmml/importer.d.ts.map +1 -1
  416. package/dist/src/formats/xgmml/importer.js +35 -72
  417. package/dist/src/formats/xgmml/importer.js.map +1 -1
  418. package/dist/src/formats/xgmml/index.d.ts +1 -0
  419. package/dist/src/formats/xgmml/index.d.ts.map +1 -1
  420. package/dist/src/formats/xgmml/index.js +1 -0
  421. package/dist/src/formats/xgmml/index.js.map +1 -1
  422. package/dist/src/formats/xgmml/values.d.ts +8 -1
  423. package/dist/src/formats/xgmml/values.d.ts.map +1 -1
  424. package/dist/src/formats/xgmml/values.js +7 -2
  425. package/dist/src/formats/xgmml/values.js.map +1 -1
  426. package/dist/src/index.d.ts +23 -18
  427. package/dist/src/index.d.ts.map +1 -1
  428. package/dist/src/index.js +28 -16
  429. package/dist/src/index.js.map +1 -1
  430. package/dist/src/registry.d.ts +478 -92
  431. package/dist/src/registry.d.ts.map +1 -1
  432. package/dist/src/registry.js +807 -88
  433. package/dist/src/registry.js.map +1 -1
  434. package/dist/src/sniff.d.ts +61 -19
  435. package/dist/src/sniff.d.ts.map +1 -1
  436. package/dist/src/sniff.js +121 -29
  437. package/dist/src/sniff.js.map +1 -1
  438. package/dist/src/types.d.ts +362 -112
  439. package/dist/src/types.d.ts.map +1 -1
  440. package/dist/src/types.js +28 -7
  441. package/dist/src/types.js.map +1 -1
  442. package/dist/xgmml.js +2 -2
  443. package/docs/samples/README.md +25 -0
  444. package/docs/samples/got-edges.csv +353 -0
  445. package/docs/samples/got-network.graphml +1384 -0
  446. package/docs/samples/got-nodes.csv +108 -0
  447. package/docs/samples/got.cx +930 -0
  448. package/docs/samples/got.cx2 +465 -0
  449. package/docs/samples/got.gexf +471 -0
  450. package/docs/samples/got.gml +2650 -0
  451. package/docs/samples/got.json +2546 -0
  452. package/docs/samples/got.net +461 -0
  453. package/docs/samples/movies-nodes.csv +9 -0
  454. package/docs/samples/movies-rels.csv +8 -0
  455. package/docs/samples/networks.cys +0 -0
  456. package/docs/samples/proteins.xgmml +9 -0
  457. package/docs/samples/teams.gv +24 -0
  458. package/docs/samples/vehicles.obo +25 -0
  459. package/package.json +9 -4
  460. package/src/children.ts +18 -6
  461. package/src/common/attributes.ts +29 -11
  462. package/src/common/cell-budget.ts +11 -3
  463. package/src/common/choose.ts +89 -0
  464. package/src/common/codes.ts +490 -66
  465. package/src/common/compare.ts +472 -0
  466. package/src/common/cx-export.ts +432 -0
  467. package/src/common/declared-types.ts +38 -4
  468. package/src/common/direction.ts +78 -51
  469. package/src/common/escape.ts +33 -17
  470. package/src/common/export.ts +284 -47
  471. package/src/common/format.ts +30 -1
  472. package/src/common/ids.ts +14 -3
  473. package/src/common/input.ts +1057 -134
  474. package/src/common/json-elements.ts +1034 -198
  475. package/src/common/line-format.ts +249 -0
  476. package/src/common/lists.ts +6 -1
  477. package/src/common/ontology-export.ts +461 -0
  478. package/src/common/ontology.ts +31 -9
  479. package/src/common/options.ts +110 -15
  480. package/src/common/plural.ts +49 -0
  481. package/src/common/report.ts +168 -25
  482. package/src/common/temporal.ts +22 -5
  483. package/src/common/text.ts +62 -23
  484. package/src/common/weights.ts +74 -4
  485. package/src/common/writer.ts +37 -3
  486. package/src/common/xml.ts +477 -88
  487. package/src/common/zip.ts +169 -7
  488. package/src/formats/csv/exporter.ts +201 -46
  489. package/src/formats/csv/header.ts +50 -11
  490. package/src/formats/csv/importer.ts +1133 -245
  491. package/src/formats/csv/index.ts +106 -19
  492. package/src/formats/csv/records.ts +396 -122
  493. package/src/formats/csv/values.ts +1 -0
  494. package/src/formats/cx/exporter.ts +1483 -0
  495. package/src/formats/cx/importer.ts +888 -300
  496. package/src/formats/cx/index.ts +4 -3
  497. package/src/formats/cx2/exporter.ts +61 -338
  498. package/src/formats/cx2/importer.ts +317 -86
  499. package/src/formats/cx2/index.ts +2 -1
  500. package/src/formats/cys/constants.ts +62 -17
  501. package/src/formats/cys/exporter.ts +1368 -0
  502. package/src/formats/cys/importer.ts +659 -157
  503. package/src/formats/cys/index.ts +4 -2
  504. package/src/formats/cys/session.ts +139 -31
  505. package/src/formats/cys/tables.ts +47 -9
  506. package/src/formats/dot/exporter.ts +83 -37
  507. package/src/formats/dot/importer.ts +248 -54
  508. package/src/formats/dot/index.ts +2 -1
  509. package/src/formats/dot/names.ts +44 -11
  510. package/src/formats/dot/tokenizer.ts +25 -6
  511. package/src/formats/gexf/exporter.ts +57 -18
  512. package/src/formats/gexf/importer.ts +636 -105
  513. package/src/formats/gexf/index.ts +90 -21
  514. package/src/formats/gexf/schema.ts +67 -15
  515. package/src/formats/gml/exporter.ts +90 -36
  516. package/src/formats/gml/importer.ts +388 -67
  517. package/src/formats/gml/index.ts +85 -24
  518. package/src/formats/gml/syntax.ts +111 -26
  519. package/src/formats/graphml/constants.ts +178 -44
  520. package/src/formats/graphml/exporter.ts +52 -18
  521. package/src/formats/graphml/importer.ts +640 -60
  522. package/src/formats/graphml/index.ts +2 -1
  523. package/src/formats/graphml/tree.ts +6 -2
  524. package/src/formats/graphml/yfiles.ts +37 -15
  525. package/src/formats/json/dialect.ts +128 -29
  526. package/src/formats/json/exporter.ts +205 -68
  527. package/src/formats/json/importer.ts +1163 -253
  528. package/src/formats/json/index.ts +3 -1
  529. package/src/formats/json/obographs-export.ts +1197 -0
  530. package/src/formats/json/obographs.ts +353 -92
  531. package/src/formats/neo4j/exporter.ts +320 -101
  532. package/src/formats/neo4j/header.ts +44 -6
  533. package/src/formats/neo4j/importer.ts +512 -73
  534. package/src/formats/neo4j/index.ts +75 -23
  535. package/src/formats/obo/exporter.ts +2210 -0
  536. package/src/formats/obo/importer.ts +622 -109
  537. package/src/formats/obo/index.ts +6 -3
  538. package/src/formats/obo/syntax.ts +232 -37
  539. package/src/formats/pajek/exporter.ts +89 -41
  540. package/src/formats/pajek/importer.ts +407 -93
  541. package/src/formats/pajek/index.ts +2 -1
  542. package/src/formats/pajek/syntax.ts +213 -52
  543. package/src/formats/xgmml/columns.ts +10 -0
  544. package/src/formats/xgmml/constants.ts +183 -56
  545. package/src/formats/xgmml/document.ts +212 -34
  546. package/src/formats/xgmml/emit.ts +175 -34
  547. package/src/formats/xgmml/exporter.ts +35 -27
  548. package/src/formats/xgmml/importer.ts +64 -86
  549. package/src/formats/xgmml/index.ts +1 -0
  550. package/src/formats/xgmml/values.ts +11 -3
  551. package/src/index.ts +81 -11
  552. package/src/registry.ts +1121 -135
  553. package/src/sniff.ts +163 -32
  554. package/src/types.ts +385 -114
  555. package/dist/chunks/escape-B-tkk_Cl.js.map +0 -1
  556. package/dist/chunks/export-Bh60Dv-n.js +0 -582
  557. package/dist/chunks/export-Bh60Dv-n.js.map +0 -1
  558. package/dist/chunks/exporter-BGrsWamJ.js.map +0 -1
  559. package/dist/chunks/exporter-DIeGJXAZ.js.map +0 -1
  560. package/dist/chunks/importer-BWY2FFc5.js.map +0 -1
  561. package/dist/chunks/importer-DD-xv9_Y.js +0 -1471
  562. package/dist/chunks/importer-DD-xv9_Y.js.map +0 -1
  563. package/dist/chunks/importer-DET1tg6s.js.map +0 -1
  564. package/dist/chunks/importer-DEcKhsmQ.js +0 -1614
  565. package/dist/chunks/importer-DEcKhsmQ.js.map +0 -1
  566. package/dist/chunks/importer-DIrbbnAf.js.map +0 -1
  567. package/dist/chunks/importer-D_e7e7LX.js.map +0 -1
  568. package/dist/chunks/importer-eUREhBGj.js.map +0 -1
  569. package/dist/chunks/importer-vi3bSdtw.js.map +0 -1
  570. package/dist/chunks/importer-zGLo8Dg_.js.map +0 -1
  571. package/dist/chunks/json-elements-DDS8N2Dd.js +0 -779
  572. package/dist/chunks/json-elements-DDS8N2Dd.js.map +0 -1
  573. package/dist/chunks/ontology-BnrJ4I98.js +0 -113
  574. package/dist/chunks/ontology-BnrJ4I98.js.map +0 -1
  575. package/dist/chunks/records-dbRkxwaq.js.map +0 -1
  576. package/dist/chunks/report-B1z4WT9e.js +0 -2372
  577. package/dist/chunks/report-B1z4WT9e.js.map +0 -1
  578. package/dist/chunks/text-Dr0Ifpag.js.map +0 -1
  579. package/dist/chunks/weights-Dzba96G3.js +0 -176
  580. package/dist/chunks/weights-Dzba96G3.js.map +0 -1
  581. package/dist/chunks/writer-C7flM-Ih.js.map +0 -1
@@ -1,26 +1,47 @@
1
1
  /**
2
2
  * Header handling of the CSV importer: whether the first row is a header, which columns hold the
3
3
  * endpoints, the weight, the Gephi per-row `Type`, the edge id and the label (by name lists and
4
- * by position), and the synthesised names of a headerless file (`column1`, `column2`, ...).
4
+ * by position), and the synthesized names of a headerless file (`column1`, `column2`, ...).
5
5
  *
6
6
  * Name resolution is exact first, then case-insensitive, over a candidate list in priority order,
7
7
  * so `source` / `Source` / `SOURCE`, `src`, `from` all resolve without configuration; the Gephi
8
8
  * dialect (exact `Source` and `Target` headers) additionally makes an exact `Type` column the
9
9
  * per-row direction. A caller may name any column explicitly or give its 0-based position.
10
10
  */
11
- /** A column named by header text or by 0-based position. */
11
+ /**
12
+ * A column named by header text or by 0-based position.
13
+ * @category Built-in formats
14
+ */
12
15
  export type CsvColumnRef = string | number;
13
- /** Header candidates of the source endpoint, in priority order (matched exactly, then case-insensitively). */
16
+ /**
17
+ * Header candidates of the source endpoint, in priority order (matched exactly, then case-insensitively).
18
+ * @category Plugin helpers
19
+ */
14
20
  export declare const SOURCE_NAMES: readonly string[];
15
- /** Header candidates of the target endpoint. */
21
+ /**
22
+ * Header candidates of the target endpoint.
23
+ * @category Plugin helpers
24
+ */
16
25
  export declare const TARGET_NAMES: readonly string[];
17
- /** Header candidates of a node table's id column. */
26
+ /**
27
+ * Header candidates of a node table's id column.
28
+ * @category Plugin helpers
29
+ */
18
30
  export declare const ID_NAMES: readonly string[];
19
- /** Header candidates of a label column (node or edge). */
31
+ /**
32
+ * Header candidates of a label column (node or edge).
33
+ * @category Plugin helpers
34
+ */
20
35
  export declare const LABEL_NAMES: readonly string[];
21
- /** Header candidates of an edge id column. */
36
+ /**
37
+ * Header candidates of an edge id column.
38
+ * @category Plugin helpers
39
+ */
22
40
  export declare const EDGE_ID_NAMES: readonly string[];
23
- /** The Gephi per-row direction column. */
41
+ /**
42
+ * The Gephi per-row direction column.
43
+ * @category Plugin helpers
44
+ */
24
45
  export declare const TYPE_NAME = "Type";
25
46
  /**
26
47
  * Find a column by name: candidates are tried in priority order, each first exactly and then
@@ -28,6 +49,7 @@ export declare const TYPE_NAME = "Type";
28
49
  * @param names - the header names
29
50
  * @param candidates - the names to look for, in priority order
30
51
  * @returns the column index, or -1
52
+ * @category Plugin helpers
31
53
  */
32
54
  export declare function findColumn(names: readonly string[], candidates: readonly string[]): number;
33
55
  /**
@@ -38,6 +60,7 @@ export declare function findColumn(names: readonly string[], candidates: readonl
38
60
  * @param ref - the option value
39
61
  * @param option - the option name, for the error
40
62
  * @returns the column index
63
+ * @category Plugin helpers
41
64
  */
42
65
  export declare function resolveColumnRef(names: readonly string[], ref: CsvColumnRef, option: string): number;
43
66
  /**
@@ -45,15 +68,20 @@ export declare function resolveColumnRef(names: readonly string[], ref: CsvColum
45
68
  * is when any cell is a known column name (source, target, id, label, weight, type...), or when
46
69
  * every cell is non-numeric text while the second row has a numeric cell (`u,v` over `1,2`);
47
70
  * a first row with a numeric cell is data, and so is one that looks exactly like the rows below it.
71
+ * A two-column row holding a known name is still data when its second cell is the second row's
72
+ * first cell and it does not name both endpoints: a header names columns, while an edge list whose
73
+ * ids happen to be such words (`key,lock` over `lock,door`) chains its ids from row to row.
48
74
  * @param first - the first row
49
75
  * @param second - the second row, or null when the file has one row
50
76
  * @returns true when the first row is a header
77
+ * @category Plugin helpers
51
78
  */
52
79
  export declare function looksLikeHeader(first: readonly string[], second: readonly string[] | null): boolean;
53
80
  /**
54
- * The synthesised header of a headerless file: `column1` ... `columnN`.
81
+ * The synthesized header of a headerless file: `column1` ... `columnN`.
55
82
  * @param width - the number of cells of the first row
56
83
  * @returns the names
84
+ * @category Plugin helpers
57
85
  */
58
86
  export declare function positionalNames(width: number): string[];
59
87
  /**
@@ -61,6 +89,7 @@ export declare function positionalNames(width: number): string[];
61
89
  * empty cell named by its position so every column has a name.
62
90
  * @param cells - the header row
63
91
  * @returns the names
92
+ * @category Plugin helpers
64
93
  */
65
94
  export declare function headerNames(cells: readonly string[]): string[];
66
95
  //# sourceMappingURL=header.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../src/formats/csv/header.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,4DAA4D;AAC5D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,8GAA8G;AAC9G,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAUxC,CAAC;AAEH,gDAAgD;AAChD,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAWxC,CAAC;AAEH,qDAAqD;AACrD,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAAiD,CAAC;AAExF,0DAA0D;AAC1D,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAA6B,CAAC;AAEvE,8CAA8C;AAC9C,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAA0B,CAAC;AAEtE,0CAA0C;AAC1C,eAAO,MAAM,SAAS,SAAS,CAAC;AAahC;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAa1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAoBpG;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAenG;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAMvD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAK9D"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../src/formats/csv/header.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAUxC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAWxC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAAiD,CAAC;AAExF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAA6B,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAA0B,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAS,CAAC;AAahC;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAa1F;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAoBpG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAwBnG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAMvD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAK9D"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Header handling of the CSV importer: whether the first row is a header, which columns hold the
3
3
  * endpoints, the weight, the Gephi per-row `Type`, the edge id and the label (by name lists and
4
- * by position), and the synthesised names of a headerless file (`column1`, `column2`, ...).
4
+ * by position), and the synthesized names of a headerless file (`column1`, `column2`, ...).
5
5
  *
6
6
  * Name resolution is exact first, then case-insensitive, over a candidate list in priority order,
7
7
  * so `source` / `Source` / `SOURCE`, `src`, `from` all resolve without configuration; the Gephi
@@ -9,8 +9,12 @@
9
9
  * per-row direction. A caller may name any column explicitly or give its 0-based position.
10
10
  */
11
11
  import { GraphFormatError } from "@graphty/graph-format";
12
+ import { plural } from "../../common/plural.js";
12
13
  import { inferTextDtype } from "../../common/text.js";
13
- /** Header candidates of the source endpoint, in priority order (matched exactly, then case-insensitively). */
14
+ /**
15
+ * Header candidates of the source endpoint, in priority order (matched exactly, then case-insensitively).
16
+ * @category Plugin helpers
17
+ */
14
18
  export const SOURCE_NAMES = Object.freeze([
15
19
  "source",
16
20
  "src",
@@ -22,7 +26,10 @@ export const SOURCE_NAMES = Object.freeze([
22
26
  "start_id",
23
27
  ":start_id",
24
28
  ]);
25
- /** Header candidates of the target endpoint. */
29
+ /**
30
+ * Header candidates of the target endpoint.
31
+ * @category Plugin helpers
32
+ */
26
33
  export const TARGET_NAMES = Object.freeze([
27
34
  "target",
28
35
  "dst",
@@ -35,13 +42,25 @@ export const TARGET_NAMES = Object.freeze([
35
42
  "end_id",
36
43
  ":end_id",
37
44
  ]);
38
- /** Header candidates of a node table's id column. */
45
+ /**
46
+ * Header candidates of a node table's id column.
47
+ * @category Plugin helpers
48
+ */
39
49
  export const ID_NAMES = Object.freeze(["id", "node", "name", "key"]);
40
- /** Header candidates of a label column (node or edge). */
50
+ /**
51
+ * Header candidates of a label column (node or edge).
52
+ * @category Plugin helpers
53
+ */
41
54
  export const LABEL_NAMES = Object.freeze(["label"]);
42
- /** Header candidates of an edge id column. */
55
+ /**
56
+ * Header candidates of an edge id column.
57
+ * @category Plugin helpers
58
+ */
43
59
  export const EDGE_ID_NAMES = Object.freeze(["id"]);
44
- /** The Gephi per-row direction column. */
60
+ /**
61
+ * The Gephi per-row direction column.
62
+ * @category Plugin helpers
63
+ */
45
64
  export const TYPE_NAME = "Type";
46
65
  /** Every name that marks a first row as a header when the caller leaves detection to the importer. */
47
66
  const HEADER_MARKERS = new Set([
@@ -59,6 +78,7 @@ const HEADER_MARKERS = new Set([
59
78
  * @param names - the header names
60
79
  * @param candidates - the names to look for, in priority order
61
80
  * @returns the column index, or -1
81
+ * @category Plugin helpers
62
82
  */
63
83
  export function findColumn(names, candidates) {
64
84
  for (const candidate of candidates) {
@@ -82,11 +102,12 @@ export function findColumn(names, candidates) {
82
102
  * @param ref - the option value
83
103
  * @param option - the option name, for the error
84
104
  * @returns the column index
105
+ * @category Plugin helpers
85
106
  */
86
107
  export function resolveColumnRef(names, ref, option) {
87
108
  if (typeof ref === "number") {
88
109
  if (!Number.isInteger(ref) || ref < 0 || ref >= names.length) {
89
- throw new GraphFormatError("E_UNSUPPORTED", `option ${option}: column ${ref} does not exist (the file has ${names.length} column(s))`, { option, found: ref, columns: names.length });
110
+ throw new GraphFormatError("E_UNSUPPORTED", `option ${option}: column ${ref} does not exist (the file has ${names.length} column${plural(names.length)})`, { option, found: ref, columns: names.length });
90
111
  }
91
112
  return ref;
92
113
  }
@@ -105,30 +126,44 @@ export function resolveColumnRef(names, ref, option) {
105
126
  * is when any cell is a known column name (source, target, id, label, weight, type...), or when
106
127
  * every cell is non-numeric text while the second row has a numeric cell (`u,v` over `1,2`);
107
128
  * a first row with a numeric cell is data, and so is one that looks exactly like the rows below it.
129
+ * A two-column row holding a known name is still data when its second cell is the second row's
130
+ * first cell and it does not name both endpoints: a header names columns, while an edge list whose
131
+ * ids happen to be such words (`key,lock` over `lock,door`) chains its ids from row to row.
108
132
  * @param first - the first row
109
133
  * @param second - the second row, or null when the file has one row
110
134
  * @returns true when the first row is a header
135
+ * @category Plugin helpers
111
136
  */
112
137
  export function looksLikeHeader(first, second) {
113
138
  let allText = true;
139
+ let marker = false;
114
140
  for (const cell of first) {
115
141
  const text = cell.trim();
116
142
  if (HEADER_MARKERS.has(text.toLowerCase())) {
117
- return true;
143
+ marker = true;
118
144
  }
119
145
  if (text.length === 0 || inferTextDtype(text) !== "string") {
120
146
  allText = false;
121
147
  }
122
148
  }
149
+ if (marker) {
150
+ const names = headerNames(first);
151
+ if (second === null || (findColumn(names, SOURCE_NAMES) >= 0 && findColumn(names, TARGET_NAMES) >= 0)) {
152
+ return true;
153
+ }
154
+ const chained = first.length === 2 && second.length >= 1 && first[1].trim() === second[0].trim();
155
+ return !chained || first[1].trim().length === 0;
156
+ }
123
157
  if (!allText || second === null) {
124
158
  return false;
125
159
  }
126
160
  return second.some((cell) => cell.trim().length > 0 && inferTextDtype(cell.trim()) !== "string");
127
161
  }
128
162
  /**
129
- * The synthesised header of a headerless file: `column1` ... `columnN`.
163
+ * The synthesized header of a headerless file: `column1` ... `columnN`.
130
164
  * @param width - the number of cells of the first row
131
165
  * @returns the names
166
+ * @category Plugin helpers
132
167
  */
133
168
  export function positionalNames(width) {
134
169
  const names = [];
@@ -142,6 +177,7 @@ export function positionalNames(width) {
142
177
  * empty cell named by its position so every column has a name.
143
178
  * @param cells - the header row
144
179
  * @returns the names
180
+ * @category Plugin helpers
145
181
  */
146
182
  export function headerNames(cells) {
147
183
  return cells.map((cell, i) => {
@@ -1 +1 @@
1
- {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../src/formats/csv/header.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../src/formats/csv/header.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * The CSV / TSV importer (design sections 8.4 and 8.6; research note 07 section 2.6): a streaming
3
3
  * edge-list reader for the generic (`source,target[,weight,...]`), Gephi (`Source,Target,Type,Id,
4
4
  * Label,Weight,...`) and headerless (`u v [w]`) dialects, with an optional node table merged by id,
5
- * and, with `table: "adjacency"`, an adjacency table (`node,neighbour[:weight],...`).
5
+ * and, with `table: "adjacency"`, an adjacency table (`node,neighbor[:weight],...`).
6
6
  *
7
7
  * - The delimiter is sniffed from a preview unless given; LF, CRLF and lone-CR files all read.
8
8
  * - The first row is a header when it holds a known column name or when it is all text over a
@@ -21,7 +21,7 @@
21
21
  * all-text column of low cardinality becomes a dict (design section 5.4); an `id` column of the
22
22
  * edge table is the edge id (role id, unique); a `label` column is the label (role label).
23
23
  * - An adjacency table has no header (unless `header: true`, which skips the first row): each row
24
- * is a node followed by its neighbours, one edge per neighbour in row order. A neighbour cell
24
+ * is a node followed by its neighbors, one edge per neighbor in row order. A neighbor cell
25
25
  * `id:weight` carries the edge's weight when the text after its LAST colon is a number; a cell
26
26
  * ending in a bare colon (`a:1:`) is the id before it with no weight; any other cell is the id
27
27
  * as written (`http://x`). A row holding only its node adds an isolated node. An empty adjacency
@@ -36,79 +36,229 @@
36
36
  * exceeded, on a malformed or unterminated quoted field, on an empty input and on a header
37
37
  * without endpoint (or id) columns.
38
38
  */
39
- import { type GraphImporter, type ImportInput } from "../../types.js";
39
+ import { type CommonImportOptions, type GraphImporter, type ImportInput } from "../../types.js";
40
40
  import { type CsvColumnRef } from "./header.js";
41
- /** The format-specific options of the CSV importer. */
42
- export interface CsvImportOptions {
43
- /** The field delimiter; sniffed from the first rows when omitted (`,`, tab, `;`, `|`, space). */
41
+ /**
42
+ * The format-specific options of the CSV importer.
43
+ * @category Built-in formats
44
+ */
45
+ export interface CsvImportOptions extends CommonImportOptions {
46
+ /**
47
+ * The field delimiter. The default is to detect it from the first rows: `,`, tab, `;`, `|` or
48
+ * space. It applies to the `nodes` table too.
49
+ * @defaultValue detected
50
+ */
44
51
  delimiter?: string | undefined;
45
- /** Whether the first row is a header; "auto" (default) decides from its content. */
52
+ /**
53
+ * The decimal separator of numbers. With ",", a cell such as `2,5` (digits, a comma, digits) is
54
+ * read as the number 2.5, for weights and attributes alike, and the delimiter is detected among
55
+ * the others (`;`, tab, `|`, space), so a spreadsheet saved in a locale that writes decimal
56
+ * commas reads as it is. A thousands separator is not read.
57
+ * @defaultValue "."
58
+ */
59
+ decimal?: "." | "," | undefined;
60
+ /**
61
+ * Whether the first row is a header; "auto" decides from its content (a header names columns, a
62
+ * data row holds ids and numbers). It applies to the `nodes` table too.
63
+ * @defaultValue "auto"
64
+ */
46
65
  header?: boolean | "auto" | undefined;
47
66
  /**
48
- * What the input is: an edge table, a node table, an adjacency table (`node,neighbour[:weight],...`
49
- * per row, no header by default), or "auto" (default): an edge table when source and target
50
- * columns resolve, a node table when only an id column does. An adjacency table is never
51
- * guessed: nothing in its rows tells it from an edge list.
67
+ * What the input is: "edges" (one edge per row), "nodes" (one node per row), "adjacency" (a
68
+ * node and its neighbors per row, `node,neighbor[:weight],...`, with no header unless you pass
69
+ * `header: true`), or "auto": an edge table when source and target columns can be found, a node
70
+ * table when only an id column can. An adjacency table is never detected, because its rows look
71
+ * like an edge list.
72
+ * @defaultValue "auto"
52
73
  */
53
74
  table?: "edges" | "nodes" | "adjacency" | "auto" | undefined;
54
- /** The source column, by name or 0-based position; resolved from the header by default. */
75
+ /**
76
+ * The source column, by name or 0-based position. The default is the column whose header is a
77
+ * recognized source name (`source`, `from`, `src` and others; the CSV format page lists them
78
+ * all); in a file without a header, the first column. A header with no recognized source and
79
+ * target names needs this option and `targetColumn`.
80
+ * @defaultValue from the header
81
+ */
55
82
  sourceColumn?: CsvColumnRef | undefined;
56
- /** The target column, by name or 0-based position; resolved from the header by default. */
83
+ /**
84
+ * The target column, by name or 0-based position. The default is the column whose header is a
85
+ * recognized target name (`target`, `to`, `dst` and others; the CSV format page lists them
86
+ * all); in a file without a header, the second column.
87
+ * @defaultValue from the header
88
+ */
57
89
  targetColumn?: CsvColumnRef | undefined;
58
90
  /**
59
- * The per-row direction column (Directed / Undirected / Mutual); by default the exact `Type`
60
- * column of a Gephi table (exact `Source` and `Target` headers); null reads no such column.
91
+ * The column that gives each edge's direction (Directed / Undirected / Mutual), by name or
92
+ * position. The default is the `Type` column of a Gephi table (one whose header has exactly
93
+ * `Source` and `Target`); null reads no such column.
94
+ * @defaultValue Gephi's Type
61
95
  */
62
96
  typeColumn?: CsvColumnRef | null | undefined;
63
- /** The id column of a node table, by name or position; resolved from the header by default. */
97
+ /**
98
+ * The id column of a node table, by name or position. The default is the column the header
99
+ * names `id` (or `node`, `name`, `key`).
100
+ * @defaultValue from the header
101
+ */
64
102
  idColumn?: CsvColumnRef | undefined;
65
- /** A node table read before the edges: its ids become nodes and its other columns node attributes. */
66
- nodes?: ImportInput | undefined;
67
103
  /**
68
- * A node table whose header has no id column gets its ids from the row numbers (0 for the first
69
- * data row), coerced by `ids`, instead of failing with E_CSV_NO_ID_COLUMN. The node table is the
70
- * `nodes` input when one is given (the edge table is then read as without this option), else
71
- * the input itself; its first row is a header even under `header: "auto"`. False by default.
104
+ * The label column of a node table, by name or position. The default is the column the header
105
+ * names `label` (in any case). With `nodeIdFrom: "label"`, the node ids come from this column,
106
+ * and the edge table must name its nodes by these labels too.
107
+ * @defaultValue from the header
108
+ */
109
+ labelColumn?: CsvColumnRef | undefined;
110
+ /**
111
+ * A node table to read before the edges: its ids become nodes and its other columns node
112
+ * attributes. Pass it as a string, bytes, a stream, or a `File` or `Blob` (for example, the second file a
113
+ * user picked).
114
+ */
115
+ nodes?: ImportInput | Blob | undefined;
116
+ /**
117
+ * Give the nodes of a node table without an id column the row number as id (0 for the first
118
+ * data row, turned into an id by `ids`), instead of failing with E_CSV_NO_ID_COLUMN. It applies
119
+ * to the `nodes` table when you pass one, else to the input. Under `header: "auto"` that
120
+ * table's first row is then read as a header; under `header: false` the option is ignored with
121
+ * a warning, because a table without a header takes its ids from its first column.
122
+ * @defaultValue false
72
123
  */
73
124
  rowNumberIds?: boolean | undefined;
74
125
  }
75
- /** Issue code: the input holds no header row at all. */
126
+ /**
127
+ * The input holds no header row at all.
128
+ * @category Issue and loss codes
129
+ */
76
130
  export declare const EMPTY_INPUT_CODE = "E_EMPTY_INPUT";
77
- /** Issue code: the header names no source / target (or, for a node table, no id) column. */
131
+ /**
132
+ * The header names no source / target (or, for a node table, no id) column.
133
+ * @category Issue and loss codes
134
+ */
78
135
  export declare const NO_ENDPOINT_COLUMNS_CODE = "E_CSV_NO_ENDPOINT_COLUMNS";
79
- /** Issue code: a node table without an id column. */
136
+ /**
137
+ * A node table without an id column.
138
+ * @category Issue and loss codes
139
+ */
80
140
  export declare const NO_ID_COLUMN_CODE = "E_CSV_NO_ID_COLUMN";
81
- /** Issue code: a row with a different number of fields than the header. */
141
+ /**
142
+ * A row with a different number of fields than the header.
143
+ * @category Issue and loss codes
144
+ */
82
145
  export declare const FIELD_COUNT_CODE = "E_CSV_FIELD_COUNT";
83
- /** Issue code: an edge row with a blank source or target cell. */
146
+ /**
147
+ * An edge row with a blank source or target cell.
148
+ * @category Issue and loss codes
149
+ */
84
150
  export declare const MISSING_ENDPOINT_CODE = "E_MISSING_ENDPOINT";
85
- /** Issue code: a node row with a blank id cell. */
151
+ /**
152
+ * A node row with a blank id cell.
153
+ * @category Issue and loss codes
154
+ */
86
155
  export declare const MISSING_ID_CODE = "E_MISSING_ID";
87
- /** Issue code: a Type cell that is not Directed, Undirected or Mutual. */
156
+ /**
157
+ * A Type cell that is not Directed, Undirected or Mutual.
158
+ * @category Issue and loss codes
159
+ */
88
160
  export declare const BAD_TYPE_CODE = "E_CSV_BAD_TYPE";
89
- /** Issue code: the table has a header and no data rows. */
161
+ /**
162
+ * The table has a header and no data rows.
163
+ * @category Issue and loss codes
164
+ */
90
165
  export declare const NO_DATA_ROWS_CODE = "W_CSV_NO_DATA_ROWS";
91
- /** Issue code: a node table row repeats an id; its attributes overwrite the earlier row's. */
166
+ /**
167
+ * A node table row repeats an id; its attributes overwrite the earlier row's.
168
+ * @category Issue and loss codes
169
+ */
92
170
  export declare const DUPLICATE_NODE_CODE = "W_DUPLICATE_NODE";
93
- /** Issue code: two distinct id cells became one id under `ids: "number"` (design section 4.1). */
171
+ /**
172
+ * Two different id cells became the same number because `ids` is "number", so their nodes were merged.
173
+ * @category Issue and loss codes
174
+ */
94
175
  export declare const ID_MERGED_CODE = "W_ID_MERGED";
95
- /** Issue code: an explicitly named weight column the file does not have. */
176
+ /**
177
+ * An explicitly named weight column the file does not have.
178
+ * @category Issue and loss codes
179
+ */
96
180
  export declare const COLUMN_MISSING_CODE = "W_CSV_COLUMN_MISSING";
97
- /** Issue code: a column whose role (id, label) is already held by another column of the sink. */
181
+ /**
182
+ * You read into a graph builder that already has an id or label attribute, so this file's one is kept without its
183
+ * role.
184
+ * @category Issue and loss codes
185
+ */
98
186
  export declare const ROLE_TAKEN_CODE = "W_ROLE_TAKEN";
99
- /** Issue code: a repeated edge id (the column is unique); the edge is skipped. */
187
+ /**
188
+ * A repeated edge id (the column is unique); the edge is skipped.
189
+ * @category Issue and loss codes
190
+ */
100
191
  export declare const DUPLICATE_EDGE_ID_CODE = "E_DUPLICATE_EDGE_ID";
101
192
  /**
102
- * Split an adjacency neighbour cell into its id and weight: the text after the LAST colon is the
193
+ * The input starts like another format (XML or HTML, JSON, GML, DOT or Pajek), not CSV. The import stops.
194
+ * @category Issue and loss codes
195
+ */
196
+ export declare const OTHER_FORMAT_CODE = "E_CSV_OTHER_FORMAT";
197
+ /**
198
+ * A quote inside an unquoted field (RFC 4180 forbids it); the quote is kept as text.
199
+ * @category Issue and loss codes
200
+ */
201
+ export declare const STRAY_QUOTE_CODE = "W_CSV_STRAY_QUOTE";
202
+ /**
203
+ * A leading comment's direction disagrees with defaultDirected or with an earlier comment.
204
+ * @category Issue and loss codes
205
+ */
206
+ export declare const COMMENT_DIRECTION_CODE = "W_CSV_COMMENT_DIRECTION";
207
+ /**
208
+ * A column named like Gephi's Type holds direction words but is read as a plain attribute.
209
+ * @category Issue and loss codes
210
+ */
211
+ export declare const TYPE_COLUMN_IGNORED_CODE = "W_CSV_TYPE_COLUMN_IGNORED";
212
+ /**
213
+ * The header ends in a delimiter; rows without the empty last cell are read as complete.
214
+ * @category Issue and loss codes
215
+ */
216
+ export declare const TRAILING_HEADER_DELIMITER_CODE = "W_CSV_TRAILING_HEADER_DELIMITER";
217
+ /**
218
+ * Every row is one cell that another delimiter would split (a likely wrong delimiter).
219
+ * @category Issue and loss codes
220
+ */
221
+ export declare const SINGLE_COLUMN_CODE = "W_CSV_SINGLE_COLUMN";
222
+ /**
223
+ * Several header columns name the same role; the one not chosen is a plain attribute.
224
+ * @category Issue and loss codes
225
+ */
226
+ export declare const AMBIGUOUS_COLUMN_CODE = "W_CSV_AMBIGUOUS_COLUMN";
227
+ /**
228
+ * An unquoted id with leading or trailing whitespace (kept, RFC 4180), distinct from the bare id.
229
+ * @category Issue and loss codes
230
+ */
231
+ export declare const PADDED_ID_CODE = "W_CSV_PADDED_ID";
232
+ /**
233
+ * A leading `#` / `%` line skipped as a comment has the fields of a record.
234
+ * @category Issue and loss codes
235
+ */
236
+ export declare const COMMENT_LIKE_RECORD_CODE = "W_CSV_COMMENT_LIKE_RECORD";
237
+ /**
238
+ * Data rows end in one extra empty cell (a trailing delimiter); the cell is dropped.
239
+ * @category Issue and loss codes
240
+ */
241
+ export declare const TRAILING_DELIMITER_CODE = "W_CSV_TRAILING_DELIMITER";
242
+ /**
243
+ * A headerless three-column table's third column holds text, so it is an attribute, not the weight.
244
+ * @category Issue and loss codes
245
+ */
246
+ export declare const WEIGHT_AS_ATTRIBUTE_CODE = "W_CSV_WEIGHT_AS_ATTRIBUTE";
247
+ /**
248
+ * Split an adjacency neighbor cell into its id and weight: the text after the LAST colon is the
103
249
  * weight when it is a number, nothing when it is empty (`a:1:` is the id `a:1`, unweighted, the
104
250
  * form the exporter writes for an id containing a colon), and part of the id otherwise.
105
251
  * @param text - the cell text
106
252
  * @returns the id text and the weight (undefined when the cell has none)
253
+ * @category Plugin helpers
107
254
  */
108
255
  export declare function splitNeighbour(text: string): {
109
256
  readonly id: string;
110
257
  readonly weight: number | undefined;
111
258
  };
112
- /** The CSV / TSV importer plugin (subpath `@graphty/graph-io/csv`). */
259
+ /**
260
+ * The CSV / TSV importer plugin (subpath `@graphty/graph-io/csv`).
261
+ * @category Built-in formats
262
+ */
113
263
  export declare const csvImporter: GraphImporter<CsvImportOptions>;
114
264
  //# sourceMappingURL=importer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../../../src/formats/csv/importer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAgCH,OAAO,EAA4B,KAAK,aAAa,EAAE,KAAK,WAAW,EAAqB,MAAM,gBAAgB,CAAC;AACnH,OAAO,EACH,KAAK,YAAY,EAYpB,MAAM,aAAa,CAAC;AAIrB,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC7B,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,oFAAoF;IACpF,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7D,2FAA2F;IAC3F,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACxC,2FAA2F;IAC3F,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACxC;;;OAGG;IACH,UAAU,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACpC,sGAAsG;IACtG,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,kBAA0B,CAAC;AACxD,4FAA4F;AAC5F,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AACpE,qDAAqD;AACrD,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AACtD,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,kEAAkE;AAClE,eAAO,MAAM,qBAAqB,uBAA+B,CAAC;AAClE,mDAAmD;AACnD,eAAO,MAAM,eAAe,iBAAyB,CAAC;AACtD,0EAA0E;AAC1E,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAC9C,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AACtD,8FAA8F;AAC9F,eAAO,MAAM,mBAAmB,qBAA6B,CAAC;AAC9D,kGAAkG;AAClG,eAAO,MAAM,cAAc,gBAAwB,CAAC;AACpD,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAC1D,iGAAiG;AACjG,eAAO,MAAM,eAAe,iBAAyB,CAAC;AACtD,kFAAkF;AAClF,eAAO,MAAM,sBAAsB,wBAAgC,CAAC;AA+TpE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAWzG;AAkyBD,uEAAuE;AACvE,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAMtD,CAAC"}
1
+ {"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../../../src/formats/csv/importer.ts"],"names":[],"mappings":"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"}