@graphty/graph-io 0.3.47 → 0.3.49

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 (770) hide show
  1. package/dist/chunks/{approximations-wWjCRzKj.js → approximations-Bzn3L-je.js} +2 -2
  2. package/dist/chunks/{approximations-wWjCRzKj.js.map → approximations-Bzn3L-je.js.map} +1 -1
  3. package/dist/chunks/bends-BGXjv_U4.js +129 -0
  4. package/dist/chunks/bends-BGXjv_U4.js.map +1 -0
  5. package/dist/chunks/{block-DiGq58c3.js → block-iptrlMBb.js} +947 -134
  6. package/dist/chunks/block-iptrlMBb.js.map +1 -0
  7. package/dist/chunks/choose-CczZJaX_.js +717 -0
  8. package/dist/chunks/choose-CczZJaX_.js.map +1 -0
  9. package/dist/chunks/codes-BE2xir2k.js +157 -0
  10. package/dist/chunks/codes-BE2xir2k.js.map +1 -0
  11. package/dist/chunks/{constants-BKwqelYD.js → constants-CKkYLPtt.js} +2 -2
  12. package/dist/chunks/{constants-BKwqelYD.js.map → constants-CKkYLPtt.js.map} +1 -1
  13. package/dist/chunks/context-C3p0RQxR.js +664 -0
  14. package/dist/chunks/context-C3p0RQxR.js.map +1 -0
  15. package/dist/chunks/{convert-BcQ8_jMo.js → convert-Ct2zelbQ.js} +7 -2
  16. package/dist/chunks/convert-Ct2zelbQ.js.map +1 -0
  17. package/dist/chunks/credentials-DXHx7nwR.js +349 -0
  18. package/dist/chunks/credentials-DXHx7nwR.js.map +1 -0
  19. package/dist/chunks/cx-export-Bt6NoqTQ.js +259 -0
  20. package/dist/chunks/cx-export-Bt6NoqTQ.js.map +1 -0
  21. package/dist/chunks/descriptor-B28U25x4.js +60 -0
  22. package/dist/chunks/descriptor-B28U25x4.js.map +1 -0
  23. package/dist/chunks/descriptor-C-YDhtsn.js +48 -0
  24. package/dist/chunks/descriptor-C-YDhtsn.js.map +1 -0
  25. package/dist/chunks/descriptor-DLA5kINx.js +142 -0
  26. package/dist/chunks/descriptor-DLA5kINx.js.map +1 -0
  27. package/dist/chunks/{emit-CwU8cUmG.js → emit-BwHQkZle.js} +1690 -103
  28. package/dist/chunks/emit-BwHQkZle.js.map +1 -0
  29. package/dist/chunks/{escape-CgzxiYPg.js → escape-CuCIzNMB.js} +12 -12
  30. package/dist/chunks/{escape-CgzxiYPg.js.map → escape-CuCIzNMB.js.map} +1 -1
  31. package/dist/chunks/{export-BvqAXCKh.js → export-Cha4dRFz.js} +48 -1780
  32. package/dist/chunks/export-Cha4dRFz.js.map +1 -0
  33. package/dist/chunks/{exporter--Mk9gXCJ.js → exporter-BP6otMO6.js} +6 -4
  34. package/dist/chunks/{exporter--Mk9gXCJ.js.map → exporter-BP6otMO6.js.map} +1 -1
  35. package/dist/chunks/{exporter-CrDWIyiq.js → exporter-D2CETOMK.js} +1222 -154
  36. package/dist/chunks/exporter-D2CETOMK.js.map +1 -0
  37. package/dist/chunks/{exporter-DndFlGSa.js → exporter-D9yMtocA.js} +7 -6
  38. package/dist/chunks/{exporter-DndFlGSa.js.map → exporter-D9yMtocA.js.map} +1 -1
  39. package/dist/chunks/exporter-_jrBTnos.js +1009 -0
  40. package/dist/chunks/exporter-_jrBTnos.js.map +1 -0
  41. package/dist/chunks/{exporter-CJgfhF-l.js → exporter-nDfxIK5D.js} +9 -7
  42. package/dist/chunks/{exporter-CJgfhF-l.js.map → exporter-nDfxIK5D.js.map} +1 -1
  43. package/dist/chunks/format-BXiAb-1h.js +408 -0
  44. package/dist/chunks/format-BXiAb-1h.js.map +1 -0
  45. package/dist/chunks/{generic-Dq1ntt9q.js → generic-ymWCETAJ.js} +387 -31
  46. package/dist/chunks/generic-ymWCETAJ.js.map +1 -0
  47. package/dist/chunks/{importer-CMmeMWlC.js → importer-B92x1xY5.js} +15 -263
  48. package/dist/chunks/importer-B92x1xY5.js.map +1 -0
  49. package/dist/chunks/{importer-DiZRmOQG.js → importer-CT9mJ1nn.js} +328 -90
  50. package/dist/chunks/importer-CT9mJ1nn.js.map +1 -0
  51. package/dist/chunks/{importer-COTK9Tsl.js → importer-DaLTjbds.js} +116 -1099
  52. package/dist/chunks/importer-DaLTjbds.js.map +1 -0
  53. package/dist/chunks/{importer-iFYPEKaJ.js → importer-GREKMdIf.js} +28 -16
  54. package/dist/chunks/importer-GREKMdIf.js.map +1 -0
  55. package/dist/chunks/{importer-BSvfrX_h.js → importer-PqaaKKnY.js} +23 -1016
  56. package/dist/chunks/importer-PqaaKKnY.js.map +1 -0
  57. package/dist/chunks/{importer-yh_aBCU6.js → importer-Vn5QvmmJ.js} +66 -12
  58. package/dist/chunks/importer-Vn5QvmmJ.js.map +1 -0
  59. package/dist/chunks/{importer-e6LGpqHB.js → importer-vRq4h3j5.js} +1470 -354
  60. package/dist/chunks/importer-vRq4h3j5.js.map +1 -0
  61. package/dist/chunks/input-CAxt_aV-.js +1397 -0
  62. package/dist/chunks/input-CAxt_aV-.js.map +1 -0
  63. package/dist/chunks/{json-elements-DJZRZ6jd.js → json-elements-Cq76WjnZ.js} +4 -4
  64. package/dist/chunks/{json-elements-DJZRZ6jd.js.map → json-elements-Cq76WjnZ.js.map} +1 -1
  65. package/dist/chunks/{lexicon-CT69Kd87.js → lexicon-Clf4QIyl.js} +299 -77
  66. package/dist/chunks/lexicon-Clf4QIyl.js.map +1 -0
  67. package/dist/chunks/{ontology-export-G4MqRdux.js → ontology-export-OMo91mb0.js} +4 -3
  68. package/dist/chunks/{ontology-export-G4MqRdux.js.map → ontology-export-OMo91mb0.js.map} +1 -1
  69. package/dist/chunks/{records-CiaWZrFH.js → records-NJiYvekn.js} +2 -2
  70. package/dist/chunks/{records-CiaWZrFH.js.map → records-NJiYvekn.js.map} +1 -1
  71. package/dist/chunks/{format-BpQBx8MZ.js → report-CwMfYa9J.js} +70 -127
  72. package/dist/chunks/report-CwMfYa9J.js.map +1 -0
  73. package/dist/chunks/round-trip-Zm3_ivgq.js +79 -0
  74. package/dist/chunks/round-trip-Zm3_ivgq.js.map +1 -0
  75. package/dist/chunks/sigv4-EokFic1V.js +247 -0
  76. package/dist/chunks/sigv4-EokFic1V.js.map +1 -0
  77. package/dist/chunks/{styles-BQnsga7p.js → styles-CCs214_3.js} +1300 -168
  78. package/dist/chunks/styles-CCs214_3.js.map +1 -0
  79. package/dist/chunks/styles-Cm62yyQX.js +2812 -0
  80. package/dist/chunks/styles-Cm62yyQX.js.map +1 -0
  81. package/dist/chunks/styles-DPQQIig4.js +1928 -0
  82. package/dist/chunks/styles-DPQQIig4.js.map +1 -0
  83. package/dist/chunks/styles-yed-UMFdNqze.js +1213 -0
  84. package/dist/chunks/styles-yed-UMFdNqze.js.map +1 -0
  85. package/dist/chunks/{text-CzJNFOS9.js → text-ystE2bYi.js} +2 -2
  86. package/dist/chunks/{text-CzJNFOS9.js.map → text-ystE2bYi.js.map} +1 -1
  87. package/dist/csv.js +7 -5
  88. package/dist/csv.js.map +1 -1
  89. package/dist/cx.js +5 -4
  90. package/dist/cx.js.map +1 -1
  91. package/dist/cx2.js +2 -2
  92. package/dist/cys.js +1 -1
  93. package/dist/dot.js +5 -4
  94. package/dist/dot.js.map +1 -1
  95. package/dist/gexf.js +42 -10
  96. package/dist/gexf.js.map +1 -1
  97. package/dist/gml.js +850 -193
  98. package/dist/gml.js.map +1 -1
  99. package/dist/graph-io.js +1189 -220
  100. package/dist/graph-io.js.map +1 -1
  101. package/dist/graphml.js +3 -3
  102. package/dist/json.js +3 -2
  103. package/dist/neo4j.js +6 -4
  104. package/dist/neo4j.js.map +1 -1
  105. package/dist/obo.js +1 -1
  106. package/dist/pajek.js +1 -1
  107. package/dist/positions.js +45 -3
  108. package/dist/positions.js.map +1 -1
  109. package/dist/sources-cypher.d.ts +1 -0
  110. package/dist/sources-cypher.js +1351 -0
  111. package/dist/sources-cypher.js.map +1 -0
  112. package/dist/sources-ndex.d.ts +1 -0
  113. package/dist/sources-ndex.js +278 -0
  114. package/dist/sources-ndex.js.map +1 -0
  115. package/dist/sources-rest.d.ts +1 -0
  116. package/dist/sources-rest.js +1377 -0
  117. package/dist/sources-rest.js.map +1 -0
  118. package/dist/sources-sparql.d.ts +1 -0
  119. package/dist/sources-sparql.js +405 -0
  120. package/dist/sources-sparql.js.map +1 -0
  121. package/dist/src/common/report.d.ts +6 -3
  122. package/dist/src/common/report.d.ts.map +1 -1
  123. package/dist/src/common/report.js +15 -9
  124. package/dist/src/common/report.js.map +1 -1
  125. package/dist/src/formats/cx/importer.d.ts.map +1 -1
  126. package/dist/src/formats/cx/importer.js +5 -1
  127. package/dist/src/formats/cx/importer.js.map +1 -1
  128. package/dist/src/formats/cx/styles.d.ts +24 -1
  129. package/dist/src/formats/cx/styles.d.ts.map +1 -1
  130. package/dist/src/formats/cx/styles.js +118 -11
  131. package/dist/src/formats/cx/styles.js.map +1 -1
  132. package/dist/src/formats/cx2/importer.d.ts.map +1 -1
  133. package/dist/src/formats/cx2/importer.js +1 -0
  134. package/dist/src/formats/cx2/importer.js.map +1 -1
  135. package/dist/src/formats/cx2/styles.d.ts.map +1 -1
  136. package/dist/src/formats/cx2/styles.js +3 -1
  137. package/dist/src/formats/cx2/styles.js.map +1 -1
  138. package/dist/src/formats/cys/importer.d.ts.map +1 -1
  139. package/dist/src/formats/cys/importer.js +1 -0
  140. package/dist/src/formats/cys/importer.js.map +1 -1
  141. package/dist/src/formats/cys/styles.d.ts +2 -0
  142. package/dist/src/formats/cys/styles.d.ts.map +1 -1
  143. package/dist/src/formats/cys/styles.js +15 -7
  144. package/dist/src/formats/cys/styles.js.map +1 -1
  145. package/dist/src/formats/dot/drawing.d.ts +98 -0
  146. package/dist/src/formats/dot/drawing.d.ts.map +1 -0
  147. package/dist/src/formats/dot/drawing.js +734 -0
  148. package/dist/src/formats/dot/drawing.js.map +1 -0
  149. package/dist/src/formats/dot/importer.d.ts.map +1 -1
  150. package/dist/src/formats/dot/importer.js +108 -31
  151. package/dist/src/formats/dot/importer.js.map +1 -1
  152. package/dist/src/formats/dot/label-places.d.ts +34 -0
  153. package/dist/src/formats/dot/label-places.d.ts.map +1 -0
  154. package/dist/src/formats/dot/label-places.js +179 -0
  155. package/dist/src/formats/dot/label-places.js.map +1 -0
  156. package/dist/src/formats/dot/record.d.ts +50 -0
  157. package/dist/src/formats/dot/record.d.ts.map +1 -0
  158. package/dist/src/formats/dot/record.js +275 -0
  159. package/dist/src/formats/dot/record.js.map +1 -0
  160. package/dist/src/formats/dot/styles.d.ts +62 -2
  161. package/dist/src/formats/dot/styles.d.ts.map +1 -1
  162. package/dist/src/formats/dot/styles.js +1457 -120
  163. package/dist/src/formats/dot/styles.js.map +1 -1
  164. package/dist/src/formats/gexf/dialog-metrics.d.ts +15 -0
  165. package/dist/src/formats/gexf/dialog-metrics.d.ts.map +1 -0
  166. package/dist/src/formats/gexf/dialog-metrics.js +59 -0
  167. package/dist/src/formats/gexf/dialog-metrics.js.map +1 -0
  168. package/dist/src/formats/gexf/importer.d.ts +7 -0
  169. package/dist/src/formats/gexf/importer.d.ts.map +1 -1
  170. package/dist/src/formats/gexf/importer.js +41 -5
  171. package/dist/src/formats/gexf/importer.js.map +1 -1
  172. package/dist/src/formats/gexf/preview.d.ts +77 -0
  173. package/dist/src/formats/gexf/preview.d.ts.map +1 -0
  174. package/dist/src/formats/gexf/preview.js +191 -0
  175. package/dist/src/formats/gexf/preview.js.map +1 -0
  176. package/dist/src/formats/gexf/schema.d.ts.map +1 -1
  177. package/dist/src/formats/gexf/schema.js +2 -1
  178. package/dist/src/formats/gexf/schema.js.map +1 -1
  179. package/dist/src/formats/gexf/styles.d.ts +60 -16
  180. package/dist/src/formats/gexf/styles.d.ts.map +1 -1
  181. package/dist/src/formats/gexf/styles.js +883 -131
  182. package/dist/src/formats/gexf/styles.js.map +1 -1
  183. package/dist/src/formats/gml/importer.d.ts +5 -2
  184. package/dist/src/formats/gml/importer.d.ts.map +1 -1
  185. package/dist/src/formats/gml/importer.js +258 -71
  186. package/dist/src/formats/gml/importer.js.map +1 -1
  187. package/dist/src/formats/gml/index.d.ts +1 -1
  188. package/dist/src/formats/gml/index.d.ts.map +1 -1
  189. package/dist/src/formats/gml/index.js +1 -1
  190. package/dist/src/formats/gml/index.js.map +1 -1
  191. package/dist/src/formats/gml/positions.d.ts +7 -0
  192. package/dist/src/formats/gml/positions.d.ts.map +1 -1
  193. package/dist/src/formats/gml/positions.js +29 -7
  194. package/dist/src/formats/gml/positions.js.map +1 -1
  195. package/dist/src/formats/gml/styles.d.ts.map +1 -1
  196. package/dist/src/formats/gml/styles.js +756 -103
  197. package/dist/src/formats/gml/styles.js.map +1 -1
  198. package/dist/src/formats/graphml/styles-plain.d.ts.map +1 -1
  199. package/dist/src/formats/graphml/styles-plain.js +8 -12
  200. package/dist/src/formats/graphml/styles-plain.js.map +1 -1
  201. package/dist/src/formats/graphml/styles-yed.d.ts +21 -15
  202. package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -1
  203. package/dist/src/formats/graphml/styles-yed.js +749 -148
  204. package/dist/src/formats/graphml/styles-yed.js.map +1 -1
  205. package/dist/src/formats/graphml/styles-yfiles3.d.ts +1 -1
  206. package/dist/src/formats/graphml/styles-yfiles3.d.ts.map +1 -1
  207. package/dist/src/formats/graphml/styles-yfiles3.js +429 -64
  208. package/dist/src/formats/graphml/styles-yfiles3.js.map +1 -1
  209. package/dist/src/formats/graphml/yfiles.d.ts +3 -3
  210. package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
  211. package/dist/src/formats/graphml/yfiles.js +16 -6
  212. package/dist/src/formats/graphml/yfiles.js.map +1 -1
  213. package/dist/src/formats/json/dialect.d.ts +3 -2
  214. package/dist/src/formats/json/dialect.d.ts.map +1 -1
  215. package/dist/src/formats/json/dialect.js +39 -5
  216. package/dist/src/formats/json/dialect.js.map +1 -1
  217. package/dist/src/formats/json/importer.d.ts +13 -2
  218. package/dist/src/formats/json/importer.d.ts.map +1 -1
  219. package/dist/src/formats/json/importer.js +42 -6
  220. package/dist/src/formats/json/importer.js.map +1 -1
  221. package/dist/src/formats/json/index.d.ts +1 -1
  222. package/dist/src/formats/json/index.d.ts.map +1 -1
  223. package/dist/src/formats/json/index.js +1 -1
  224. package/dist/src/formats/json/index.js.map +1 -1
  225. package/dist/src/formats/json/positions.d.ts +5 -2
  226. package/dist/src/formats/json/positions.d.ts.map +1 -1
  227. package/dist/src/formats/json/positions.js +20 -4
  228. package/dist/src/formats/json/positions.js.map +1 -1
  229. package/dist/src/formats/json/styles.d.ts +12 -1
  230. package/dist/src/formats/json/styles.d.ts.map +1 -1
  231. package/dist/src/formats/json/styles.js +1755 -136
  232. package/dist/src/formats/json/styles.js.map +1 -1
  233. package/dist/src/formats/pajek/draw.d.ts +96 -0
  234. package/dist/src/formats/pajek/draw.d.ts.map +1 -0
  235. package/dist/src/formats/pajek/draw.js +372 -0
  236. package/dist/src/formats/pajek/draw.js.map +1 -0
  237. package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
  238. package/dist/src/formats/pajek/exporter.js +70 -51
  239. package/dist/src/formats/pajek/exporter.js.map +1 -1
  240. package/dist/src/formats/pajek/importer.d.ts +9 -0
  241. package/dist/src/formats/pajek/importer.d.ts.map +1 -1
  242. package/dist/src/formats/pajek/importer.js +233 -102
  243. package/dist/src/formats/pajek/importer.js.map +1 -1
  244. package/dist/src/formats/pajek/index.d.ts +1 -0
  245. package/dist/src/formats/pajek/index.d.ts.map +1 -1
  246. package/dist/src/formats/pajek/index.js.map +1 -1
  247. package/dist/src/formats/pajek/styles.d.ts +15 -7
  248. package/dist/src/formats/pajek/styles.d.ts.map +1 -1
  249. package/dist/src/formats/pajek/styles.js +1279 -114
  250. package/dist/src/formats/pajek/styles.js.map +1 -1
  251. package/dist/src/formats/pajek/syntax.d.ts +10 -1
  252. package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
  253. package/dist/src/formats/pajek/syntax.js +26 -2
  254. package/dist/src/formats/pajek/syntax.js.map +1 -1
  255. package/dist/src/formats/xgmml/emit.d.ts +1 -0
  256. package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
  257. package/dist/src/formats/xgmml/emit.js +65 -5
  258. package/dist/src/formats/xgmml/emit.js.map +1 -1
  259. package/dist/src/formats/xgmml/styles.d.ts +23 -3
  260. package/dist/src/formats/xgmml/styles.d.ts.map +1 -1
  261. package/dist/src/formats/xgmml/styles.js +278 -60
  262. package/dist/src/formats/xgmml/styles.js.map +1 -1
  263. package/dist/src/index.d.ts +10 -2
  264. package/dist/src/index.d.ts.map +1 -1
  265. package/dist/src/index.js +11 -2
  266. package/dist/src/index.js.map +1 -1
  267. package/dist/src/positions/convert.d.ts.map +1 -1
  268. package/dist/src/positions/convert.js +11 -1
  269. package/dist/src/positions/convert.js.map +1 -1
  270. package/dist/src/positions/extract.d.ts.map +1 -1
  271. package/dist/src/positions/extract.js +53 -1
  272. package/dist/src/positions/extract.js.map +1 -1
  273. package/dist/src/positions/index.d.ts +1 -1
  274. package/dist/src/positions/index.d.ts.map +1 -1
  275. package/dist/src/positions/types.d.ts +59 -0
  276. package/dist/src/positions/types.d.ts.map +1 -1
  277. package/dist/src/registry.d.ts +173 -1
  278. package/dist/src/registry.d.ts.map +1 -1
  279. package/dist/src/registry.js +196 -1
  280. package/dist/src/registry.js.map +1 -1
  281. package/dist/src/sources/builtins.d.ts +11 -0
  282. package/dist/src/sources/builtins.d.ts.map +1 -0
  283. package/dist/src/sources/builtins.js +53 -0
  284. package/dist/src/sources/builtins.js.map +1 -0
  285. package/dist/src/sources/codes.d.ts +230 -0
  286. package/dist/src/sources/codes.d.ts.map +1 -0
  287. package/dist/src/sources/codes.js +58 -0
  288. package/dist/src/sources/codes.js.map +1 -0
  289. package/dist/src/sources/context.d.ts +112 -0
  290. package/dist/src/sources/context.d.ts.map +1 -0
  291. package/dist/src/sources/context.js +740 -0
  292. package/dist/src/sources/context.js.map +1 -0
  293. package/dist/src/sources/credentials.d.ts +179 -0
  294. package/dist/src/sources/credentials.d.ts.map +1 -0
  295. package/dist/src/sources/credentials.js +301 -0
  296. package/dist/src/sources/credentials.js.map +1 -0
  297. package/dist/src/sources/cypher/descriptor.d.ts +21 -0
  298. package/dist/src/sources/cypher/descriptor.d.ts.map +1 -0
  299. package/dist/src/sources/cypher/descriptor.js +124 -0
  300. package/dist/src/sources/cypher/descriptor.js.map +1 -0
  301. package/dist/src/sources/cypher/flatten.d.ts +72 -0
  302. package/dist/src/sources/cypher/flatten.d.ts.map +1 -0
  303. package/dist/src/sources/cypher/flatten.js +279 -0
  304. package/dist/src/sources/cypher/flatten.js.map +1 -0
  305. package/dist/src/sources/cypher/index.d.ts +33 -0
  306. package/dist/src/sources/cypher/index.d.ts.map +1 -0
  307. package/dist/src/sources/cypher/index.js +511 -0
  308. package/dist/src/sources/cypher/index.js.map +1 -0
  309. package/dist/src/sources/cypher/params.d.ts +40 -0
  310. package/dist/src/sources/cypher/params.d.ts.map +1 -0
  311. package/dist/src/sources/cypher/params.js +6 -0
  312. package/dist/src/sources/cypher/params.js.map +1 -0
  313. package/dist/src/sources/cypher/profiles.d.ts +44 -0
  314. package/dist/src/sources/cypher/profiles.d.ts.map +1 -0
  315. package/dist/src/sources/cypher/profiles.js +61 -0
  316. package/dist/src/sources/cypher/profiles.js.map +1 -0
  317. package/dist/src/sources/cypher/query-builder.d.ts +123 -0
  318. package/dist/src/sources/cypher/query-builder.d.ts.map +1 -0
  319. package/dist/src/sources/cypher/query-builder.js +267 -0
  320. package/dist/src/sources/cypher/query-builder.js.map +1 -0
  321. package/dist/src/sources/cypher/transports/bolt.d.ts +21 -0
  322. package/dist/src/sources/cypher/transports/bolt.d.ts.map +1 -0
  323. package/dist/src/sources/cypher/transports/bolt.js +185 -0
  324. package/dist/src/sources/cypher/transports/bolt.js.map +1 -0
  325. package/dist/src/sources/cypher/transports/neptune-analytics.d.ts +15 -0
  326. package/dist/src/sources/cypher/transports/neptune-analytics.d.ts.map +1 -0
  327. package/dist/src/sources/cypher/transports/neptune-analytics.js +38 -0
  328. package/dist/src/sources/cypher/transports/neptune-analytics.js.map +1 -0
  329. package/dist/src/sources/cypher/transports/neptune-https.d.ts +31 -0
  330. package/dist/src/sources/cypher/transports/neptune-https.d.ts.map +1 -0
  331. package/dist/src/sources/cypher/transports/neptune-https.js +104 -0
  332. package/dist/src/sources/cypher/transports/neptune-https.js.map +1 -0
  333. package/dist/src/sources/cypher/transports/query-api.d.ts +14 -0
  334. package/dist/src/sources/cypher/transports/query-api.d.ts.map +1 -0
  335. package/dist/src/sources/cypher/transports/query-api.js +80 -0
  336. package/dist/src/sources/cypher/transports/query-api.js.map +1 -0
  337. package/dist/src/sources/cypher/transports/transport.d.ts +78 -0
  338. package/dist/src/sources/cypher/transports/transport.d.ts.map +1 -0
  339. package/dist/src/sources/cypher/transports/transport.js +77 -0
  340. package/dist/src/sources/cypher/transports/transport.js.map +1 -0
  341. package/dist/src/sources/cypher/types-map.d.ts +91 -0
  342. package/dist/src/sources/cypher/types-map.d.ts.map +1 -0
  343. package/dist/src/sources/cypher/types-map.js +306 -0
  344. package/dist/src/sources/cypher/types-map.js.map +1 -0
  345. package/dist/src/sources/define.d.ts +47 -0
  346. package/dist/src/sources/define.d.ts.map +1 -0
  347. package/dist/src/sources/define.js +173 -0
  348. package/dist/src/sources/define.js.map +1 -0
  349. package/dist/src/sources/fail.d.ts +33 -0
  350. package/dist/src/sources/fail.d.ts.map +1 -0
  351. package/dist/src/sources/fail.js +49 -0
  352. package/dist/src/sources/fail.js.map +1 -0
  353. package/dist/src/sources/ids.d.ts +69 -0
  354. package/dist/src/sources/ids.d.ts.map +1 -0
  355. package/dist/src/sources/ids.js +69 -0
  356. package/dist/src/sources/ids.js.map +1 -0
  357. package/dist/src/sources/ndex/client.d.ts +31 -0
  358. package/dist/src/sources/ndex/client.d.ts.map +1 -0
  359. package/dist/src/sources/ndex/client.js +90 -0
  360. package/dist/src/sources/ndex/client.js.map +1 -0
  361. package/dist/src/sources/ndex/descriptor.d.ts +10 -0
  362. package/dist/src/sources/ndex/descriptor.d.ts.map +1 -0
  363. package/dist/src/sources/ndex/descriptor.js +55 -0
  364. package/dist/src/sources/ndex/descriptor.js.map +1 -0
  365. package/dist/src/sources/ndex/expand.d.ts +20 -0
  366. package/dist/src/sources/ndex/expand.d.ts.map +1 -0
  367. package/dist/src/sources/ndex/expand.js +87 -0
  368. package/dist/src/sources/ndex/expand.js.map +1 -0
  369. package/dist/src/sources/ndex/index.d.ts +25 -0
  370. package/dist/src/sources/ndex/index.d.ts.map +1 -0
  371. package/dist/src/sources/ndex/index.js +191 -0
  372. package/dist/src/sources/ndex/index.js.map +1 -0
  373. package/dist/src/sources/ndex/params.d.ts +17 -0
  374. package/dist/src/sources/ndex/params.d.ts.map +1 -0
  375. package/dist/src/sources/ndex/params.js +6 -0
  376. package/dist/src/sources/ndex/params.js.map +1 -0
  377. package/dist/src/sources/ndex/share-url.d.ts +40 -0
  378. package/dist/src/sources/ndex/share-url.d.ts.map +1 -0
  379. package/dist/src/sources/ndex/share-url.js +64 -0
  380. package/dist/src/sources/ndex/share-url.js.map +1 -0
  381. package/dist/src/sources/params.d.ts +31 -0
  382. package/dist/src/sources/params.d.ts.map +1 -0
  383. package/dist/src/sources/params.js +6 -0
  384. package/dist/src/sources/params.js.map +1 -0
  385. package/dist/src/sources/registry.d.ts +118 -0
  386. package/dist/src/sources/registry.d.ts.map +1 -0
  387. package/dist/src/sources/registry.js +193 -0
  388. package/dist/src/sources/registry.js.map +1 -0
  389. package/dist/src/sources/rest/descriptor.d.ts +16 -0
  390. package/dist/src/sources/rest/descriptor.d.ts.map +1 -0
  391. package/dist/src/sources/rest/descriptor.js +76 -0
  392. package/dist/src/sources/rest/descriptor.js.map +1 -0
  393. package/dist/src/sources/rest/index.d.ts +14 -0
  394. package/dist/src/sources/rest/index.d.ts.map +1 -0
  395. package/dist/src/sources/rest/index.js +13 -0
  396. package/dist/src/sources/rest/index.js.map +1 -0
  397. package/dist/src/sources/rest/mapping.d.ts +30 -0
  398. package/dist/src/sources/rest/mapping.d.ts.map +1 -0
  399. package/dist/src/sources/rest/mapping.js +362 -0
  400. package/dist/src/sources/rest/mapping.js.map +1 -0
  401. package/dist/src/sources/rest/openalex.d.ts +27 -0
  402. package/dist/src/sources/rest/openalex.d.ts.map +1 -0
  403. package/dist/src/sources/rest/openalex.js +269 -0
  404. package/dist/src/sources/rest/openalex.js.map +1 -0
  405. package/dist/src/sources/rest/paging.d.ts +53 -0
  406. package/dist/src/sources/rest/paging.d.ts.map +1 -0
  407. package/dist/src/sources/rest/paging.js +138 -0
  408. package/dist/src/sources/rest/paging.js.map +1 -0
  409. package/dist/src/sources/rest/params.d.ts +216 -0
  410. package/dist/src/sources/rest/params.d.ts.map +1 -0
  411. package/dist/src/sources/rest/params.js +7 -0
  412. package/dist/src/sources/rest/params.js.map +1 -0
  413. package/dist/src/sources/rest/records.d.ts +41 -0
  414. package/dist/src/sources/rest/records.d.ts.map +1 -0
  415. package/dist/src/sources/rest/records.js +240 -0
  416. package/dist/src/sources/rest/records.js.map +1 -0
  417. package/dist/src/sources/rest/samples/deps-dev.d.ts +10 -0
  418. package/dist/src/sources/rest/samples/deps-dev.d.ts.map +1 -0
  419. package/dist/src/sources/rest/samples/deps-dev.js +47 -0
  420. package/dist/src/sources/rest/samples/deps-dev.js.map +1 -0
  421. package/dist/src/sources/rest/samples/string.d.ts +9 -0
  422. package/dist/src/sources/rest/samples/string.d.ts.map +1 -0
  423. package/dist/src/sources/rest/samples/string.js +42 -0
  424. package/dist/src/sources/rest/samples/string.js.map +1 -0
  425. package/dist/src/sources/rest/selectors.d.ts +41 -0
  426. package/dist/src/sources/rest/selectors.d.ts.map +1 -0
  427. package/dist/src/sources/rest/selectors.js +81 -0
  428. package/dist/src/sources/rest/selectors.js.map +1 -0
  429. package/dist/src/sources/rest/source.d.ts +67 -0
  430. package/dist/src/sources/rest/source.d.ts.map +1 -0
  431. package/dist/src/sources/rest/source.js +650 -0
  432. package/dist/src/sources/rest/source.js.map +1 -0
  433. package/dist/src/sources/rest/templates.d.ts +38 -0
  434. package/dist/src/sources/rest/templates.d.ts.map +1 -0
  435. package/dist/src/sources/rest/templates.js +125 -0
  436. package/dist/src/sources/rest/templates.js.map +1 -0
  437. package/dist/src/sources/run.d.ts +93 -0
  438. package/dist/src/sources/run.d.ts.map +1 -0
  439. package/dist/src/sources/run.js +673 -0
  440. package/dist/src/sources/run.js.map +1 -0
  441. package/dist/src/sources/sha256.d.ts +12 -0
  442. package/dist/src/sources/sha256.d.ts.map +1 -0
  443. package/dist/src/sources/sha256.js +95 -0
  444. package/dist/src/sources/sha256.js.map +1 -0
  445. package/dist/src/sources/sigv4.d.ts +26 -0
  446. package/dist/src/sources/sigv4.d.ts.map +1 -0
  447. package/dist/src/sources/sigv4.js +184 -0
  448. package/dist/src/sources/sigv4.js.map +1 -0
  449. package/dist/src/sources/sparql/descriptor.d.ts +10 -0
  450. package/dist/src/sources/sparql/descriptor.d.ts.map +1 -0
  451. package/dist/src/sources/sparql/descriptor.js +64 -0
  452. package/dist/src/sources/sparql/descriptor.js.map +1 -0
  453. package/dist/src/sources/sparql/index.d.ts +28 -0
  454. package/dist/src/sources/sparql/index.d.ts.map +1 -0
  455. package/dist/src/sources/sparql/index.js +314 -0
  456. package/dist/src/sources/sparql/index.js.map +1 -0
  457. package/dist/src/sources/sparql/ntriples.d.ts +69 -0
  458. package/dist/src/sources/sparql/ntriples.d.ts.map +1 -0
  459. package/dist/src/sources/sparql/ntriples.js +180 -0
  460. package/dist/src/sources/sparql/ntriples.js.map +1 -0
  461. package/dist/src/sources/sparql/params.d.ts +27 -0
  462. package/dist/src/sources/sparql/params.d.ts.map +1 -0
  463. package/dist/src/sources/sparql/params.js +5 -0
  464. package/dist/src/sources/sparql/params.js.map +1 -0
  465. package/dist/src/sources/sparql/query.d.ts +72 -0
  466. package/dist/src/sources/sparql/query.d.ts.map +1 -0
  467. package/dist/src/sources/sparql/query.js +113 -0
  468. package/dist/src/sources/sparql/query.js.map +1 -0
  469. package/dist/src/sources/testing.d.ts +96 -0
  470. package/dist/src/sources/testing.d.ts.map +1 -0
  471. package/dist/src/sources/testing.js +138 -0
  472. package/dist/src/sources/testing.js.map +1 -0
  473. package/dist/src/sources/types.d.ts +696 -0
  474. package/dist/src/sources/types.d.ts.map +1 -0
  475. package/dist/src/sources/types.js +10 -0
  476. package/dist/src/sources/types.js.map +1 -0
  477. package/dist/src/styles/annotations.d.ts +61 -5
  478. package/dist/src/styles/annotations.d.ts.map +1 -1
  479. package/dist/src/styles/annotations.js +130 -22
  480. package/dist/src/styles/annotations.js.map +1 -1
  481. package/dist/src/styles/canon/bends.d.ts +46 -0
  482. package/dist/src/styles/canon/bends.d.ts.map +1 -1
  483. package/dist/src/styles/canon/bends.js +123 -0
  484. package/dist/src/styles/canon/bends.js.map +1 -1
  485. package/dist/src/styles/canon/color-tables.d.ts +6 -1
  486. package/dist/src/styles/canon/color-tables.d.ts.map +1 -1
  487. package/dist/src/styles/canon/color-tables.js +10 -4
  488. package/dist/src/styles/canon/color-tables.js.map +1 -1
  489. package/dist/src/styles/canon/color.d.ts +3 -1
  490. package/dist/src/styles/canon/color.d.ts.map +1 -1
  491. package/dist/src/styles/canon/color.js +103 -3
  492. package/dist/src/styles/canon/color.js.map +1 -1
  493. package/dist/src/styles/canon/enums.d.ts +2 -2
  494. package/dist/src/styles/canon/enums.d.ts.map +1 -1
  495. package/dist/src/styles/canon/enums.js +82 -7
  496. package/dist/src/styles/canon/enums.js.map +1 -1
  497. package/dist/src/styles/canon/graphviz.d.ts +12 -3
  498. package/dist/src/styles/canon/graphviz.d.ts.map +1 -1
  499. package/dist/src/styles/canon/graphviz.js +57 -9
  500. package/dist/src/styles/canon/graphviz.js.map +1 -1
  501. package/dist/src/styles/canon/number.d.ts +8 -0
  502. package/dist/src/styles/canon/number.d.ts.map +1 -1
  503. package/dist/src/styles/canon/number.js +18 -0
  504. package/dist/src/styles/canon/number.js.map +1 -1
  505. package/dist/src/styles/canon/text.d.ts +29 -2
  506. package/dist/src/styles/canon/text.d.ts.map +1 -1
  507. package/dist/src/styles/canon/text.js +156 -16
  508. package/dist/src/styles/canon/text.js.map +1 -1
  509. package/dist/src/styles/codes.d.ts +2 -0
  510. package/dist/src/styles/codes.d.ts.map +1 -1
  511. package/dist/src/styles/codes.js +2 -0
  512. package/dist/src/styles/codes.js.map +1 -1
  513. package/dist/src/styles/cyjs/cascade.d.ts.map +1 -1
  514. package/dist/src/styles/cyjs/cascade.js +1037 -35
  515. package/dist/src/styles/cyjs/cascade.js.map +1 -1
  516. package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -1
  517. package/dist/src/styles/cyjs/defaults-table.js +5 -0
  518. package/dist/src/styles/cyjs/defaults-table.js.map +1 -1
  519. package/dist/src/styles/cyjs/emit.d.ts.map +1 -1
  520. package/dist/src/styles/cyjs/emit.js +216 -12
  521. package/dist/src/styles/cyjs/emit.js.map +1 -1
  522. package/dist/src/styles/cyjs/face.d.ts +20 -0
  523. package/dist/src/styles/cyjs/face.d.ts.map +1 -0
  524. package/dist/src/styles/cyjs/face.js +332 -0
  525. package/dist/src/styles/cyjs/face.js.map +1 -0
  526. package/dist/src/styles/cyjs/mappers.d.ts +48 -2
  527. package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
  528. package/dist/src/styles/cyjs/mappers.js +463 -26
  529. package/dist/src/styles/cyjs/mappers.js.map +1 -1
  530. package/dist/src/styles/cyjs/routes.d.ts +53 -0
  531. package/dist/src/styles/cyjs/routes.d.ts.map +1 -0
  532. package/dist/src/styles/cyjs/routes.js +360 -0
  533. package/dist/src/styles/cyjs/routes.js.map +1 -0
  534. package/dist/src/styles/cytoscape/charts.d.ts +23 -0
  535. package/dist/src/styles/cytoscape/charts.d.ts.map +1 -0
  536. package/dist/src/styles/cytoscape/charts.js +560 -0
  537. package/dist/src/styles/cytoscape/charts.js.map +1 -0
  538. package/dist/src/styles/cytoscape/emit.d.ts.map +1 -1
  539. package/dist/src/styles/cytoscape/emit.js +204 -44
  540. package/dist/src/styles/cytoscape/emit.js.map +1 -1
  541. package/dist/src/styles/cytoscape/lexicon.d.ts +97 -3
  542. package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
  543. package/dist/src/styles/cytoscape/lexicon.js +413 -79
  544. package/dist/src/styles/cytoscape/lexicon.js.map +1 -1
  545. package/dist/src/styles/cytoscape/mappings.d.ts +30 -0
  546. package/dist/src/styles/cytoscape/mappings.d.ts.map +1 -1
  547. package/dist/src/styles/cytoscape/mappings.js +92 -0
  548. package/dist/src/styles/cytoscape/mappings.js.map +1 -1
  549. package/dist/src/styles/cytoscape/resolve.d.ts +46 -3
  550. package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
  551. package/dist/src/styles/cytoscape/resolve.js +632 -22
  552. package/dist/src/styles/cytoscape/resolve.js.map +1 -1
  553. package/dist/src/styles/cytoscape/translate.d.ts.map +1 -1
  554. package/dist/src/styles/cytoscape/translate.js +10 -10
  555. package/dist/src/styles/cytoscape/translate.js.map +1 -1
  556. package/dist/src/styles/defaults.d.ts +50 -0
  557. package/dist/src/styles/defaults.d.ts.map +1 -1
  558. package/dist/src/styles/defaults.js +315 -37
  559. package/dist/src/styles/defaults.js.map +1 -1
  560. package/dist/src/styles/index.d.ts +4 -3
  561. package/dist/src/styles/index.d.ts.map +1 -1
  562. package/dist/src/styles/index.js +3 -2
  563. package/dist/src/styles/index.js.map +1 -1
  564. package/dist/src/styles/internal.d.ts +1 -0
  565. package/dist/src/styles/internal.d.ts.map +1 -1
  566. package/dist/src/styles/internal.js +1 -0
  567. package/dist/src/styles/internal.js.map +1 -1
  568. package/dist/src/styles/io/block.d.ts.map +1 -1
  569. package/dist/src/styles/io/block.js +9 -0
  570. package/dist/src/styles/io/block.js.map +1 -1
  571. package/dist/src/styles/io/generic.d.ts.map +1 -1
  572. package/dist/src/styles/io/generic.js +56 -16
  573. package/dist/src/styles/io/generic.js.map +1 -1
  574. package/dist/src/styles/io/round-trip.d.ts +56 -0
  575. package/dist/src/styles/io/round-trip.d.ts.map +1 -0
  576. package/dist/src/styles/io/round-trip.js +138 -0
  577. package/dist/src/styles/io/round-trip.js.map +1 -0
  578. package/dist/src/styles/io/writer.d.ts.map +1 -1
  579. package/dist/src/styles/io/writer.js +13 -4
  580. package/dist/src/styles/io/writer.js.map +1 -1
  581. package/dist/src/styles/notes.d.ts.map +1 -1
  582. package/dist/src/styles/notes.js +1 -0
  583. package/dist/src/styles/notes.js.map +1 -1
  584. package/dist/src/styles/plan/features.d.ts +1 -1
  585. package/dist/src/styles/plan/features.d.ts.map +1 -1
  586. package/dist/src/styles/plan/features.js +22 -2
  587. package/dist/src/styles/plan/features.js.map +1 -1
  588. package/dist/src/styles/plan/index.d.ts +1 -1
  589. package/dist/src/styles/plan/index.d.ts.map +1 -1
  590. package/dist/src/styles/plan/index.js +1 -1
  591. package/dist/src/styles/plan/index.js.map +1 -1
  592. package/dist/src/styles/plan/plan.d.ts.map +1 -1
  593. package/dist/src/styles/plan/plan.js +61 -4
  594. package/dist/src/styles/plan/plan.js.map +1 -1
  595. package/dist/src/styles/plan/resolve.d.ts +13 -1
  596. package/dist/src/styles/plan/resolve.d.ts.map +1 -1
  597. package/dist/src/styles/plan/resolve.js +53 -6
  598. package/dist/src/styles/plan/resolve.js.map +1 -1
  599. package/dist/src/styles/slots.d.ts +14 -0
  600. package/dist/src/styles/slots.d.ts.map +1 -0
  601. package/dist/src/styles/slots.js +20 -0
  602. package/dist/src/styles/slots.js.map +1 -0
  603. package/dist/src/styles/types.d.ts +638 -5
  604. package/dist/src/styles/types.d.ts.map +1 -1
  605. package/dist/src/styles/vocabulary.d.ts +3 -2
  606. package/dist/src/styles/vocabulary.d.ts.map +1 -1
  607. package/dist/src/styles/vocabulary.js +218 -1
  608. package/dist/src/styles/vocabulary.js.map +1 -1
  609. package/dist/src/types.d.ts +19 -5
  610. package/dist/src/types.d.ts.map +1 -1
  611. package/dist/src/types.js.map +1 -1
  612. package/dist/styles.js +29 -238
  613. package/dist/styles.js.map +1 -1
  614. package/dist/xgmml.js +3 -3
  615. package/docs/samples/people.json +6 -0
  616. package/package.json +53 -8
  617. package/src/common/report.ts +27 -7
  618. package/src/formats/cx/importer.ts +6 -1
  619. package/src/formats/cx/styles.ts +144 -9
  620. package/src/formats/cx2/importer.ts +1 -0
  621. package/src/formats/cx2/styles.ts +3 -1
  622. package/src/formats/cys/importer.ts +1 -0
  623. package/src/formats/cys/styles.ts +27 -5
  624. package/src/formats/dot/drawing.ts +799 -0
  625. package/src/formats/dot/importer.ts +120 -35
  626. package/src/formats/dot/label-places.ts +228 -0
  627. package/src/formats/dot/record.ts +336 -0
  628. package/src/formats/dot/styles.ts +1657 -154
  629. package/src/formats/gexf/dialog-metrics.ts +61 -0
  630. package/src/formats/gexf/importer.ts +50 -5
  631. package/src/formats/gexf/preview.ts +217 -0
  632. package/src/formats/gexf/schema.ts +2 -1
  633. package/src/formats/gexf/styles.ts +1144 -142
  634. package/src/formats/gml/importer.ts +291 -76
  635. package/src/formats/gml/index.ts +1 -1
  636. package/src/formats/gml/positions.ts +29 -7
  637. package/src/formats/gml/styles.ts +854 -111
  638. package/src/formats/graphml/styles-plain.ts +8 -23
  639. package/src/formats/graphml/styles-yed.ts +821 -159
  640. package/src/formats/graphml/styles-yfiles3.ts +485 -63
  641. package/src/formats/graphml/yfiles.ts +19 -6
  642. package/src/formats/json/dialect.ts +41 -5
  643. package/src/formats/json/importer.ts +59 -7
  644. package/src/formats/json/index.ts +1 -0
  645. package/src/formats/json/positions.ts +22 -5
  646. package/src/formats/json/styles.ts +2041 -185
  647. package/src/formats/pajek/draw.ts +458 -0
  648. package/src/formats/pajek/exporter.ts +81 -49
  649. package/src/formats/pajek/importer.ts +278 -103
  650. package/src/formats/pajek/index.ts +1 -0
  651. package/src/formats/pajek/styles.ts +1382 -133
  652. package/src/formats/pajek/syntax.ts +27 -2
  653. package/src/formats/xgmml/emit.ts +73 -5
  654. package/src/formats/xgmml/styles.ts +331 -71
  655. package/src/index.ts +94 -0
  656. package/src/positions/convert.ts +12 -1
  657. package/src/positions/extract.ts +55 -1
  658. package/src/positions/index.ts +1 -0
  659. package/src/positions/types.ts +60 -0
  660. package/src/registry.ts +326 -1
  661. package/src/sources/builtins.ts +63 -0
  662. package/src/sources/codes.ts +235 -0
  663. package/src/sources/context.ts +894 -0
  664. package/src/sources/credentials.ts +409 -0
  665. package/src/sources/cypher/descriptor.ts +131 -0
  666. package/src/sources/cypher/flatten.ts +323 -0
  667. package/src/sources/cypher/index.ts +628 -0
  668. package/src/sources/cypher/params.ts +41 -0
  669. package/src/sources/cypher/profiles.ts +78 -0
  670. package/src/sources/cypher/query-builder.ts +327 -0
  671. package/src/sources/cypher/transports/bolt.ts +228 -0
  672. package/src/sources/cypher/transports/neptune-analytics.ts +41 -0
  673. package/src/sources/cypher/transports/neptune-https.ts +122 -0
  674. package/src/sources/cypher/transports/query-api.ts +100 -0
  675. package/src/sources/cypher/transports/transport.ts +139 -0
  676. package/src/sources/cypher/types-map.ts +418 -0
  677. package/src/sources/define.ts +195 -0
  678. package/src/sources/fail.ts +70 -0
  679. package/src/sources/ids.ts +80 -0
  680. package/src/sources/ndex/client.ts +102 -0
  681. package/src/sources/ndex/descriptor.ts +64 -0
  682. package/src/sources/ndex/expand.ts +100 -0
  683. package/src/sources/ndex/index.ts +235 -0
  684. package/src/sources/ndex/params.ts +17 -0
  685. package/src/sources/ndex/share-url.ts +84 -0
  686. package/src/sources/params.ts +32 -0
  687. package/src/sources/registry.ts +325 -0
  688. package/src/sources/rest/descriptor.ts +79 -0
  689. package/src/sources/rest/index.ts +22 -0
  690. package/src/sources/rest/mapping.ts +401 -0
  691. package/src/sources/rest/openalex.ts +288 -0
  692. package/src/sources/rest/paging.ts +180 -0
  693. package/src/sources/rest/params.ts +243 -0
  694. package/src/sources/rest/records.ts +289 -0
  695. package/src/sources/rest/samples/deps-dev.ts +49 -0
  696. package/src/sources/rest/samples/string.ts +44 -0
  697. package/src/sources/rest/selectors.ts +91 -0
  698. package/src/sources/rest/source.ts +776 -0
  699. package/src/sources/rest/templates.ts +151 -0
  700. package/src/sources/run.ts +793 -0
  701. package/src/sources/sha256.ts +99 -0
  702. package/src/sources/sigv4.ts +209 -0
  703. package/src/sources/sparql/descriptor.ts +67 -0
  704. package/src/sources/sparql/index.ts +356 -0
  705. package/src/sources/sparql/ntriples.ts +219 -0
  706. package/src/sources/sparql/params.ts +28 -0
  707. package/src/sources/sparql/query.ts +162 -0
  708. package/src/sources/testing.ts +210 -0
  709. package/src/sources/types.ts +776 -0
  710. package/src/styles/annotations.ts +201 -27
  711. package/src/styles/canon/bends.ts +137 -0
  712. package/src/styles/canon/color-tables.ts +10 -4
  713. package/src/styles/canon/color.ts +105 -3
  714. package/src/styles/canon/enums.ts +99 -8
  715. package/src/styles/canon/graphviz.ts +71 -10
  716. package/src/styles/canon/number.ts +19 -0
  717. package/src/styles/canon/text.ts +187 -16
  718. package/src/styles/codes.ts +2 -0
  719. package/src/styles/cyjs/cascade.ts +1193 -38
  720. package/src/styles/cyjs/defaults-table.ts +5 -0
  721. package/src/styles/cyjs/emit.ts +247 -16
  722. package/src/styles/cyjs/face.ts +372 -0
  723. package/src/styles/cyjs/mappers.ts +498 -28
  724. package/src/styles/cyjs/routes.ts +432 -0
  725. package/src/styles/cytoscape/charts.ts +684 -0
  726. package/src/styles/cytoscape/emit.ts +220 -44
  727. package/src/styles/cytoscape/lexicon.ts +459 -80
  728. package/src/styles/cytoscape/mappings.ts +108 -0
  729. package/src/styles/cytoscape/resolve.ts +763 -23
  730. package/src/styles/cytoscape/translate.ts +11 -11
  731. package/src/styles/defaults.ts +436 -38
  732. package/src/styles/index.ts +5 -0
  733. package/src/styles/internal.ts +1 -0
  734. package/src/styles/io/block.ts +10 -0
  735. package/src/styles/io/generic.ts +79 -23
  736. package/src/styles/io/round-trip.ts +202 -0
  737. package/src/styles/io/writer.ts +14 -4
  738. package/src/styles/notes.ts +1 -0
  739. package/src/styles/plan/features.ts +23 -2
  740. package/src/styles/plan/index.ts +1 -1
  741. package/src/styles/plan/plan.ts +69 -5
  742. package/src/styles/plan/resolve.ts +61 -6
  743. package/src/styles/slots.ts +25 -0
  744. package/src/styles/types.ts +658 -4
  745. package/src/styles/vocabulary.ts +226 -3
  746. package/src/types.ts +19 -5
  747. package/dist/chunks/block-DiGq58c3.js.map +0 -1
  748. package/dist/chunks/choose--jM0yYCo.js +0 -57
  749. package/dist/chunks/choose--jM0yYCo.js.map +0 -1
  750. package/dist/chunks/convert-BcQ8_jMo.js.map +0 -1
  751. package/dist/chunks/emit-CwU8cUmG.js.map +0 -1
  752. package/dist/chunks/export-BvqAXCKh.js.map +0 -1
  753. package/dist/chunks/exporter-CrDWIyiq.js.map +0 -1
  754. package/dist/chunks/format-BpQBx8MZ.js.map +0 -1
  755. package/dist/chunks/generic-Dq1ntt9q.js.map +0 -1
  756. package/dist/chunks/importer-BSvfrX_h.js.map +0 -1
  757. package/dist/chunks/importer-CMmeMWlC.js.map +0 -1
  758. package/dist/chunks/importer-COTK9Tsl.js.map +0 -1
  759. package/dist/chunks/importer-DiZRmOQG.js.map +0 -1
  760. package/dist/chunks/importer-e6LGpqHB.js.map +0 -1
  761. package/dist/chunks/importer-iFYPEKaJ.js.map +0 -1
  762. package/dist/chunks/importer-yh_aBCU6.js.map +0 -1
  763. package/dist/chunks/lexicon-CT69Kd87.js.map +0 -1
  764. package/dist/chunks/styles-BQnsga7p.js.map +0 -1
  765. package/dist/chunks/styles-D3fRphrO.js +0 -690
  766. package/dist/chunks/styles-D3fRphrO.js.map +0 -1
  767. package/dist/chunks/styles-yed-BF5x3_Y5.js +0 -842
  768. package/dist/chunks/styles-yed-BF5x3_Y5.js.map +0 -1
  769. package/dist/chunks/writer-DMKvthQE.js +0 -448
  770. package/dist/chunks/writer-DMKvthQE.js.map +0 -1
@@ -0,0 +1,673 @@
1
+ /**
2
+ * Running a source (design sections 2, 3 and 5): the checks before any request, the three read
3
+ * paths (`records` through the record methods, `file` through the format importers, `import`
4
+ * straight into the sink), the caps between pages, `idPrefix`, the versioned cursor, and the
5
+ * report's `source` member. graph-io keeps no state between calls.
6
+ */
7
+ import { INVALID_INDEX } from "@graphty/graph-format";
8
+ import { MISSING_ID_CODE } from "../common/codes.js";
9
+ import { readBytes, throwIfAborted } from "../common/input.js";
10
+ import { ImportReportBuilder } from "../common/report.js";
11
+ import { readZipDirectory, readZipEntry } from "../common/zip.js";
12
+ import { SNIFF_HEAD_BYTES } from "../sniff.js";
13
+ import { ImportError } from "../types.js";
14
+ import { createSourceContext, detectRuntime, LimitStop } from "./context.js";
15
+ import { originOf } from "./credentials.js";
16
+ import { checkParams } from "./define.js";
17
+ import { failOn, warnOn } from "./fail.js";
18
+ import { SOURCE_FORMAT_PREFIX } from "./ids.js";
19
+ /** The cursor key graph-io adds, holding the source's descriptor version. */
20
+ const CURSOR_VERSION_KEY = "~v";
21
+ /** The options that belong to the source functions, never to an importer. */
22
+ const SOURCE_OPTION_KEYS = new Set([
23
+ "endpoint",
24
+ "credential",
25
+ "cursor",
26
+ "limits",
27
+ "retry",
28
+ "idPrefix",
29
+ "allowInsecure",
30
+ "fetch",
31
+ "userAgent",
32
+ "builder",
33
+ "freeze",
34
+ "onProgress",
35
+ "signal",
36
+ ]);
37
+ /** The statuses whose failure on a later page keeps the pages before it. */
38
+ const AUTH_CODES = new Set(["E_SOURCE_AUTH", "E_SOURCE_FORBIDDEN"]);
39
+ /**
40
+ * The report format name of a source load.
41
+ * @param id - the source id
42
+ * @returns `"source:<id>"`
43
+ */
44
+ export function sourceFormat(id) {
45
+ return `${SOURCE_FORMAT_PREFIX}${id}`;
46
+ }
47
+ /**
48
+ * The cursor handed back to the caller: the source's own, with its version added.
49
+ * @param next - the source's cursor
50
+ * @param version - the descriptor version
51
+ * @returns the caller's cursor
52
+ */
53
+ export function wrapCursor(next, version) {
54
+ return next === null || next === undefined ? null : Object.freeze({ ...next, [CURSOR_VERSION_KEY]: version });
55
+ }
56
+ /**
57
+ * Check every rule that holds before a request is sent and build the context.
58
+ * @param source - the loaded source
59
+ * @param rawParams - the caller's params
60
+ * @param options - the caller's options
61
+ * @param unit - what progress counts
62
+ * @returns the report, context and params
63
+ */
64
+ function prepare(source, rawParams, options, unit) {
65
+ const { descriptor } = source;
66
+ const version = descriptor?.version ?? 1;
67
+ const report = new ImportReportBuilder(sourceFormat(source.id), options.errorLimit ?? 100);
68
+ checkRuntime(source, report);
69
+ checkParams(rawParams, descriptor, report);
70
+ const params = {};
71
+ for (const p of descriptor?.params ?? []) {
72
+ if (p.default !== undefined) {
73
+ params[p.name] = p.default;
74
+ }
75
+ }
76
+ Object.assign(params, rawParams);
77
+ const endpoint = resolveEndpoint(options.endpoint ?? descriptor?.defaultEndpoint ?? null, report);
78
+ if (options.credential?.origins.length === 0 && endpoint === null) {
79
+ failOn(report, "E_SOURCE_PARAM", "a credential needs an endpoint or its own origins", {
80
+ name: "credential",
81
+ reason: "credential-unbound",
82
+ });
83
+ }
84
+ const cursor = resumeCursor(options.cursor, version, report);
85
+ const counts = { nodes: new Set(), edgesAtStart: 0, sink: null };
86
+ const created = createSourceContext({
87
+ id: source.id,
88
+ descriptor,
89
+ options,
90
+ report,
91
+ endpoint,
92
+ cursor,
93
+ unit,
94
+ counts: () => ({
95
+ nodes: counts.nodes.size,
96
+ edges: counts.sink === null ? 0 : counts.sink.edgeCount - counts.edgesAtStart,
97
+ }),
98
+ });
99
+ return { report, created, params, counts };
100
+ }
101
+ /**
102
+ * Refuse a source that cannot run here: a runtime it does not support, or a secure context it needs.
103
+ * @param source - the loaded source
104
+ * @param report - the load's report
105
+ */
106
+ function checkRuntime(source, report) {
107
+ const { descriptor } = source;
108
+ const runtime = detectRuntime();
109
+ const support = descriptor?.runtimes?.[runtime];
110
+ if (support?.supported === false) {
111
+ failOn(report, "E_SOURCE_RUNTIME", `source ${source.id} cannot run in ${runtime}`, {
112
+ runtime,
113
+ reason: support.reason ?? "unsupported",
114
+ });
115
+ }
116
+ if (descriptor?.needs?.secureContext === true &&
117
+ runtime === "browser" &&
118
+ globalThis.isSecureContext === false) {
119
+ failOn(report, "E_SOURCE_RUNTIME", `source ${source.id} needs a secure context`, {
120
+ runtime,
121
+ reason: "needs-secure-context",
122
+ });
123
+ }
124
+ }
125
+ /**
126
+ * The endpoint as a URL, refusing one that is not a URL or carries a user name or password.
127
+ * @param given - the endpoint given, if any
128
+ * @param report - the load's report
129
+ * @returns the URL, or null without one
130
+ */
131
+ function resolveEndpoint(given, report) {
132
+ if (given === null) {
133
+ return null;
134
+ }
135
+ let endpoint;
136
+ try {
137
+ endpoint = new URL(given);
138
+ }
139
+ catch {
140
+ failOn(report, "E_SOURCE_PARAM", "the endpoint is not a URL", { name: "endpoint", reason: "type" });
141
+ }
142
+ if (endpoint.username !== "" || endpoint.password !== "") {
143
+ failOn(report, "E_SOURCE_PARAM", "the endpoint may not carry a user name or password", {
144
+ name: "endpoint",
145
+ reason: "credentials-in-url",
146
+ });
147
+ }
148
+ return endpoint;
149
+ }
150
+ /**
151
+ * The source's own cursor from the caller's, refusing one another descriptor version made.
152
+ * @param given - the caller's cursor, if any
153
+ * @param version - the descriptor version
154
+ * @param report - the load's report
155
+ * @returns the source's cursor, or null
156
+ */
157
+ function resumeCursor(given, version, report) {
158
+ if (given === undefined || given === null) {
159
+ return null;
160
+ }
161
+ const { [CURSOR_VERSION_KEY]: recorded, ...rest } = given;
162
+ if (recorded !== undefined && recorded !== version) {
163
+ failOn(report, "E_SOURCE_PARAM", "the cursor was made by another version of the source", {
164
+ name: "cursor",
165
+ reason: "stale-cursor",
166
+ });
167
+ }
168
+ return Object.freeze(rest);
169
+ }
170
+ /**
171
+ * Wrap a sink so every node id gets the prefix and the caps can count the distinct nodes written.
172
+ * @param sink - the caller's sink or the builder
173
+ * @param prepared - the call's counters
174
+ * @param prefix - the idPrefix, if any
175
+ * @returns the wrapped sink
176
+ */
177
+ export function wrapSink(sink, prepared, prefix) {
178
+ prepared.counts.sink = sink;
179
+ prepared.counts.edgesAtStart = sink.edgeCount;
180
+ const seen = prepared.counts.nodes;
181
+ const id = (value) => (prefix === undefined || prefix === "" ? value : `${prefix}${String(value)}`);
182
+ const node = (index) => {
183
+ seen.add(index);
184
+ return index;
185
+ };
186
+ // an edge may add its end nodes (addMissingNodes)
187
+ const ends = (edge) => {
188
+ const [a, b] = sink.edgeEndpoints(edge);
189
+ seen.add(a);
190
+ seen.add(b);
191
+ return edge;
192
+ };
193
+ return new Proxy(sink, {
194
+ get(target, key) {
195
+ switch (key) {
196
+ case "addNode":
197
+ return (v) => node(target.addNode(id(v)));
198
+ case "addNodeRecord":
199
+ return (v, attrs) => node(target.addNodeRecord(id(v), attrs));
200
+ case "addNodes":
201
+ return (ids, out) => {
202
+ const result = target.addNodes(Array.from(ids, id), out);
203
+ result.forEach((i) => seen.add(i));
204
+ return result;
205
+ };
206
+ case "addEdge":
207
+ return (s, t, w) => ends(target.addEdge(id(s), id(t), w));
208
+ case "addEdgeRecord":
209
+ return (s, t, attrs, weightKey) => ends(target.addEdgeRecord(id(s), id(t), attrs, weightKey));
210
+ case "indexOf":
211
+ return (v) => target.indexOf(id(v));
212
+ default: {
213
+ const value = Reflect.get(target, key, target);
214
+ return typeof value === "function" ? value.bind(target) : value;
215
+ }
216
+ }
217
+ },
218
+ });
219
+ }
220
+ /**
221
+ * The options a format importer gets from a file source's load.
222
+ * @param options - the caller's options
223
+ * @param signal - the context's signal
224
+ * @returns the importer options
225
+ */
226
+ function importerOptions(options, signal) {
227
+ const out = { signal };
228
+ for (const [key, value] of Object.entries(options)) {
229
+ if (!SOURCE_OPTION_KEYS.has(key)) {
230
+ out[key] = value;
231
+ }
232
+ }
233
+ return out;
234
+ }
235
+ /**
236
+ * Write graph facts: `name`, `description` and `modified` strings to the graph's meta, any other
237
+ * scalar (but `directed`) as a graph value.
238
+ * @param sink - the sink
239
+ * @param meta - the facts
240
+ */
241
+ function writeMeta(sink, meta) {
242
+ const patch = {};
243
+ for (const [key, value] of Object.entries(meta)) {
244
+ if ((key === "name" || key === "description" || key === "modified") && typeof value === "string") {
245
+ patch[key] = value;
246
+ }
247
+ else if (key !== "directed" &&
248
+ (typeof value === "string" || typeof value === "number" || typeof value === "boolean")) {
249
+ sink.setGraphValue(key, value);
250
+ }
251
+ }
252
+ if (Object.keys(patch).length > 0) {
253
+ sink.setMeta(patch);
254
+ }
255
+ }
256
+ /**
257
+ * Write one page of records into the sink.
258
+ * @param batch - the page
259
+ * @param sink - the wrapped sink
260
+ * @param source - the source (for its record keys)
261
+ * @param prepared - the call
262
+ * @param first - whether this is the first page
263
+ */
264
+ function writeBatch(batch, sink, source, prepared, first) {
265
+ const idKey = source.idKey ?? "id";
266
+ const sourceKey = source.sourceKey ?? "source";
267
+ const targetKey = source.targetKey ?? "target";
268
+ const meta = batch.meta ?? {};
269
+ if (first && typeof meta.directed === "boolean" && sink.edgeCount === 0) {
270
+ sink.setDirected(meta.directed);
271
+ }
272
+ writeMeta(sink, meta);
273
+ const n = writeNodes(batch, sink, idKey, prepared);
274
+ writeEdges(batch, sink, sourceKey, targetKey, prepared, n);
275
+ }
276
+ /**
277
+ * Write a page's node records.
278
+ * @param batch - the page
279
+ * @param sink - the wrapped sink
280
+ * @param idKey - the record key holding the id
281
+ * @param prepared - the call
282
+ * @returns how many records were visited, for the abort check's cadence
283
+ */
284
+ function writeNodes(batch, sink, idKey, prepared) {
285
+ const { report } = prepared;
286
+ const { signal } = prepared.created.ctx;
287
+ let n = 0;
288
+ for (const record of batch.nodes ?? []) {
289
+ if (n++ % 64 === 0) {
290
+ throwIfAborted(signal);
291
+ }
292
+ const { [idKey]: id, ...attrs } = record;
293
+ if (typeof id !== "string" && typeof id !== "number") {
294
+ report.error("missing-value", MISSING_ID_CODE, `a node record has no ${idKey}`);
295
+ report.counts.skippedNodes++;
296
+ continue;
297
+ }
298
+ try {
299
+ sink.addNodeRecord(id, attrs);
300
+ report.counts.nodes++;
301
+ }
302
+ catch (err) {
303
+ report.recordError(err, { element: String(id) });
304
+ report.counts.skippedNodes++;
305
+ }
306
+ }
307
+ return n;
308
+ }
309
+ /**
310
+ * Write a page's edge records.
311
+ * @param batch - the page
312
+ * @param sink - the wrapped sink
313
+ * @param sourceKey - the record key holding the source id
314
+ * @param targetKey - the record key holding the target id
315
+ * @param prepared - the call
316
+ * @param start - records visited so far, for the abort check's cadence
317
+ */
318
+ function writeEdges(batch, sink, sourceKey, targetKey, prepared, start) {
319
+ const { report } = prepared;
320
+ const { signal } = prepared.created.ctx;
321
+ let n = start;
322
+ let edgeIds = null;
323
+ for (const record of batch.edges ?? []) {
324
+ if (n++ % 64 === 0) {
325
+ throwIfAborted(signal);
326
+ }
327
+ const s = record[sourceKey];
328
+ const t = record[targetKey];
329
+ const edgeId = record.id;
330
+ const fields = Object.fromEntries(Object.entries(record).filter(([k]) => k !== sourceKey && k !== targetKey && k !== "id"));
331
+ if ((typeof s !== "string" && typeof s !== "number") || (typeof t !== "string" && typeof t !== "number")) {
332
+ report.error("missing-value", MISSING_ID_CODE, `an edge record has no ${sourceKey} or ${targetKey}`);
333
+ report.counts.skippedEdges++;
334
+ continue;
335
+ }
336
+ try {
337
+ const e = sink.addEdgeRecord(s, t, fields);
338
+ if (typeof edgeId === "string" || typeof edgeId === "number") {
339
+ edgeIds ?? (edgeIds = edgeIdColumn(sink));
340
+ sink.setEdgeValue(edgeIds, e, String(edgeId));
341
+ }
342
+ report.counts.edges++;
343
+ }
344
+ catch (err) {
345
+ report.recordError(err, { element: `${String(s)} -> ${String(t)}` });
346
+ report.counts.skippedEdges++;
347
+ }
348
+ }
349
+ }
350
+ /**
351
+ * The origin of an endpoint, or "" without one.
352
+ * @param endpoint - the endpoint
353
+ * @returns its origin
354
+ */
355
+ function endpointOrigin(endpoint) {
356
+ return endpoint === null ? "" : originOf(endpoint);
357
+ }
358
+ /**
359
+ * The edge id column, declared on first use.
360
+ * @param sink - the sink
361
+ * @returns its handle
362
+ */
363
+ function edgeIdColumn(sink) {
364
+ const existing = sink.edgeColumn("id");
365
+ return existing === INVALID_INDEX
366
+ ? sink.declareEdgeColumn({ name: "id", dtype: "string", role: "id", nullable: true })
367
+ : existing;
368
+ }
369
+ /**
370
+ * The page iterator of a records source: its async iterable, or its one batch.
371
+ * @param out - what `records()` returned
372
+ * @returns an iterator over the pages
373
+ */
374
+ function pages(out) {
375
+ if (Symbol.asyncIterator in out) {
376
+ return out[Symbol.asyncIterator]();
377
+ }
378
+ let done = false;
379
+ return {
380
+ async next() {
381
+ if (done) {
382
+ return { done: true, value: undefined };
383
+ }
384
+ done = true;
385
+ return { done: false, value: await out };
386
+ },
387
+ };
388
+ }
389
+ /**
390
+ * Decide what a failed page means: a cap reached or a later page needing a credential stops the
391
+ * load and keeps what was read (warning for the credential); anything else is rethrown.
392
+ * @param err - what the page threw
393
+ * @param page - how many pages were written before it
394
+ * @param prepared - the call
395
+ */
396
+ function stopOrThrow(err, page, prepared) {
397
+ if (err instanceof LimitStop) {
398
+ return;
399
+ }
400
+ if (page > 0 && err instanceof ImportError && AUTH_CODES.has(String(err.issue?.code))) {
401
+ const p = err.issue?.params ?? {};
402
+ warnOn(prepared.report, "W_SOURCE_AUTH", "a later page needs a credential; the pages before it are kept", {
403
+ origin: typeof p.origin === "string" ? p.origin : endpointOrigin(prepared.created.ctx.endpoint),
404
+ status: typeof p.status === "number" ? p.status : null,
405
+ });
406
+ return;
407
+ }
408
+ throw err;
409
+ }
410
+ /**
411
+ * Run a records source into a sink.
412
+ * @param source - the source
413
+ * @param sink - the wrapped sink
414
+ * @param prepared - the call
415
+ * @returns where to resume, as the source gave it
416
+ */
417
+ async function runRecords(source, sink, prepared) {
418
+ const { ctx } = prepared.created;
419
+ const records = source.records;
420
+ const iterator = pages(records(prepared.params, ctx));
421
+ let next = ctx.cursor;
422
+ let page = 0;
423
+ let stopped = false;
424
+ try {
425
+ for (;;) {
426
+ let step;
427
+ try {
428
+ step = await iterator.next();
429
+ }
430
+ catch (err) {
431
+ stopOrThrow(err, page, prepared);
432
+ stopped = true;
433
+ return next;
434
+ }
435
+ if (step.done === true) {
436
+ return page === 0 ? null : next;
437
+ }
438
+ writeBatch(step.value, sink, source, prepared, page === 0);
439
+ page++;
440
+ next = step.value.next ?? null;
441
+ ctx.progress(prepared.report.counts.nodes + prepared.report.counts.edges, undefined, "items");
442
+ if (ctx.limits.reached()) {
443
+ stopped = true;
444
+ return next;
445
+ }
446
+ }
447
+ }
448
+ finally {
449
+ if (stopped) {
450
+ await iterator.return?.().catch(() => undefined);
451
+ }
452
+ }
453
+ }
454
+ /**
455
+ * The importer input of a file source's body, gunzipped or unzipped when its name says so.
456
+ * @param file - what the source returned
457
+ * @param formats - the registry, for choosing a zip entry
458
+ * @param signal - the signal
459
+ * @returns the input and its hints
460
+ */
461
+ async function fileInput(file, formats, signal) {
462
+ let input = file.body instanceof Response ? (file.body.body ?? new Uint8Array(0)) : file.body;
463
+ let { filename } = file;
464
+ let mimeType = file.mimeType ??
465
+ (file.body instanceof Response ? (file.body.headers.get("content-type") ?? undefined) : undefined);
466
+ const gzip = /\.gz$/i.test(filename ?? "") || /gzip/i.test(mimeType ?? "");
467
+ const zip = /\.zip$/i.test(filename ?? "") || /\/(x-)?zip\b/i.test(mimeType ?? "");
468
+ if (gzip) {
469
+ const stream = input instanceof ReadableStream
470
+ ? input
471
+ : new Response((await bytesOf(input, signal))).body;
472
+ input = (stream ?? new Response("").body ?? new ReadableStream()).pipeThrough(new DecompressionStream("gzip"));
473
+ filename = filename?.replace(/\.gz$/i, "");
474
+ mimeType = undefined;
475
+ }
476
+ else if (zip) {
477
+ const bytes = await bytesOf(input, signal);
478
+ const entry = readZipDirectory(bytes).find((e) => !e.directory && formats.sniff({ filename: e.name }) !== null);
479
+ if (entry === undefined) {
480
+ throw new ImportError("the zip holds no graph file", new ImportReportBuilder("zip", 0).finish());
481
+ }
482
+ input = await readZipEntry(bytes, entry, { signal, maxBytes: Number.MAX_SAFE_INTEGER, maxRatio: 1000 });
483
+ filename = entry.name;
484
+ mimeType = undefined;
485
+ }
486
+ return { input, filename, mimeType };
487
+ }
488
+ /**
489
+ * The bytes of an input.
490
+ * @param input - the input
491
+ * @param signal - the signal
492
+ * @returns the bytes
493
+ */
494
+ async function bytesOf(input, signal) {
495
+ return (await readBytes(input, { signal })) ?? new TextEncoder().encode(typeof input === "string" ? input : "");
496
+ }
497
+ /**
498
+ * Run a file source into a sink through the format importers.
499
+ * @param source - the source
500
+ * @param sink - the wrapped sink
501
+ * @param prepared - the call
502
+ * @param formats - the registry
503
+ * @param options - the caller's options
504
+ * @returns the format the file was read as
505
+ */
506
+ async function runFile(source, sink, prepared, formats, options) {
507
+ const { ctx } = prepared.created;
508
+ const read = source.file;
509
+ const file = await read(prepared.params, ctx);
510
+ const { input, filename, mimeType } = await fileInput(file, formats, ctx.signal);
511
+ let { format } = file;
512
+ let body = input;
513
+ if (format === undefined) {
514
+ const bytes = await bytesOf(input, ctx.signal);
515
+ format = formats.sniff({ filename, mimeType, head: bytes.subarray(0, SNIFF_HEAD_BYTES) })?.format;
516
+ body = bytes;
517
+ if (format === undefined) {
518
+ failOn(prepared.report, "E_SOURCE_RESPONSE", "the file is in no format graph-io reads", {
519
+ expected: "graph-file",
520
+ contentType: mimeType ?? null,
521
+ });
522
+ }
523
+ }
524
+ const importer = formats.importer(format);
525
+ prepared.report.include(await importer.import(body, sink, importerOptions(options, ctx.signal)));
526
+ writeMeta(sink, file.meta ?? {});
527
+ return format;
528
+ }
529
+ /**
530
+ * Run a source's read method into a sink.
531
+ * @param source - the loaded source
532
+ * @param params - the caller's params
533
+ * @param sink - where to write
534
+ * @param options - the caller's options
535
+ * @param formats - the registry, for file sources
536
+ * @returns the report and the format
537
+ */
538
+ export async function runIntoSink(source, params, sink, options, formats) {
539
+ const prepared = prepare(source, params, options, typeof source.file === "function" ? "bytes" : "items");
540
+ const { ctx } = prepared.created;
541
+ const version = source.descriptor?.version ?? 1;
542
+ const wrapped = wrapSink(sink, prepared, options.idPrefix);
543
+ try {
544
+ if (typeof source.records === "function") {
545
+ const next = await runRecords(source, wrapped, prepared);
546
+ throwIfAborted(ctx.signal);
547
+ return {
548
+ report: withSource(prepared.report.finish(), prepared, wrapCursor(next, version)),
549
+ format: sourceFormat(source.id),
550
+ };
551
+ }
552
+ if (typeof source.file === "function") {
553
+ const format = await runFile(source, wrapped, prepared, formats, options);
554
+ return { report: withSource(prepared.report.finish(), prepared, null), format };
555
+ }
556
+ const run = source.import;
557
+ const report = await stopAtLimit(run(prepared.params, wrapped, ctx), prepared);
558
+ throwIfAborted(ctx.signal);
559
+ return {
560
+ report: withSource(report, prepared, wrapCursor(prepared.created.state.finish?.next, version)),
561
+ format: sourceFormat(source.id),
562
+ };
563
+ }
564
+ catch (err) {
565
+ throw settle(err, prepared);
566
+ }
567
+ finally {
568
+ prepared.created.dispose();
569
+ }
570
+ }
571
+ /**
572
+ * Run an optional method of a source (expand, probe, list, validate) with a context.
573
+ * @param source - the loaded source
574
+ * @param feature - the method name
575
+ * @param params - the params checked against the descriptor
576
+ * @param options - the caller's options
577
+ * @param call - calls the method with the context
578
+ * @returns what the method returned, and the call's state
579
+ */
580
+ export async function runMethod(source, feature, params, options, call) {
581
+ if (typeof source[feature] !== "function") {
582
+ failOn(new ImportReportBuilder(sourceFormat(source.id), 0), "E_SOURCE_UNSUPPORTED", `source ${source.id} has no ${feature}`, {
583
+ feature,
584
+ });
585
+ }
586
+ const prepared = prepare(source, params, options, "items");
587
+ try {
588
+ const out = await call(prepared);
589
+ throwIfAborted(prepared.created.ctx.signal);
590
+ return out;
591
+ }
592
+ catch (err) {
593
+ throw settle(err, prepared);
594
+ }
595
+ finally {
596
+ prepared.created.dispose();
597
+ }
598
+ }
599
+ /**
600
+ * Add the `source` member to a report.
601
+ * @param report - the report
602
+ * @param prepared - the call
603
+ * @param next - where to resume, as the caller sees it
604
+ * @returns the report with its source member
605
+ */
606
+ export function withSource(report, prepared, next) {
607
+ const own = prepared.report.finish();
608
+ // issues the context recorded (retries, limits) that a source's own report does not hold
609
+ const missing = own.issues.filter((i) => !report.issues.includes(i));
610
+ return Object.freeze({
611
+ ...report,
612
+ issues: missing.length === 0 ? report.issues : Object.freeze([...report.issues, ...missing]),
613
+ warningCount: report.warningCount + missing.filter((i) => i.severity === "warning").length,
614
+ errorCount: report.errorCount + missing.filter((i) => i.severity === "error").length,
615
+ source: prepared.created.info(next),
616
+ });
617
+ }
618
+ /**
619
+ * What a failed call throws: the signal's reason when it aborted, an ImportError with the source
620
+ * info attached, or the error itself.
621
+ * @param err - what was thrown
622
+ * @param prepared - the call
623
+ * @returns the error to throw
624
+ */
625
+ function settle(err, prepared) {
626
+ const { signal } = prepared.created.ctx;
627
+ if (signal.aborted) {
628
+ return signal.reason;
629
+ }
630
+ if (err instanceof LimitStop) {
631
+ // a cap reached where nothing can be kept (a file cut short): the load fails with the cap
632
+ return settle(limitError(err, prepared), prepared);
633
+ }
634
+ if (err instanceof ImportError && err.report.source === undefined) {
635
+ const withInfo = new ImportError(err.message, { ...err.report, source: prepared.created.info(null) }, err.details);
636
+ withInfo.stack = err.stack;
637
+ return withInfo;
638
+ }
639
+ return err;
640
+ }
641
+ /**
642
+ * The E_SOURCE_LIMIT error of a cap that stopped a load which can keep nothing.
643
+ * @param stop - the cap reached
644
+ * @param prepared - the call
645
+ * @returns the error
646
+ */
647
+ function limitError(stop, prepared) {
648
+ try {
649
+ return failOn(prepared.report, "E_SOURCE_LIMIT", stop.message, { limit: stop.limit, value: stop.value });
650
+ }
651
+ catch (err) {
652
+ return err;
653
+ }
654
+ }
655
+ /**
656
+ * The report of an import or expand source, or, when a cap stopped it under "stop" (a LimitStop
657
+ * raised by ctx.fetch that the source did not catch), the report of what it wrote so far.
658
+ * @param run - the source's call
659
+ * @param prepared - the call
660
+ * @returns the report
661
+ */
662
+ export async function stopAtLimit(run, prepared) {
663
+ try {
664
+ return await run;
665
+ }
666
+ catch (err) {
667
+ if (err instanceof LimitStop) {
668
+ return prepared.report.finish();
669
+ }
670
+ throw err;
671
+ }
672
+ }
673
+ //# sourceMappingURL=run.js.map