@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,185 @@
1
+ /**
2
+ * The `bolt` transport (design sections 9 and 12.2): the official neo4j-driver, an optional peer
3
+ * dependency imported only here. Absent, a load fails with E_SOURCE_RUNTIME (`reason:
4
+ * "needs-peer-dependency"`). It is the only path to a Neo4j older than 5.26, such as Hetionet's 3.5.
5
+ *
6
+ * - Direct connections only (`bolt:`, `bolt+s:`, `bolt+ssc:`): a routing scheme would send the
7
+ * credential to every host the routing table lists, so `neo4j:` schemes are refused.
8
+ * - `+ssc` accepts any certificate, so it is refused with a credential; plain `bolt:` is refused
9
+ * with one unless the host is this machine or `allowInsecure` is set.
10
+ * - Statements run as auto-commit `session.run` in a READ session, never as managed transactions,
11
+ * which retry a server timeout for 30 s.
12
+ * - Integers stay lossless and are converted by the type mapper; the signal closes the session.
13
+ */
14
+ import { throwIfAborted } from "../../../common/input.js";
15
+ import { isLoopback, transportOptions } from "../../context.js";
16
+ import { originOf, unwrapCredential } from "../../credentials.js";
17
+ import { failOn } from "../../fail.js";
18
+ import { profileFromAgent } from "../profiles.js";
19
+ import { fromDriver } from "../types-map.js";
20
+ import { serverError } from "./transport.js";
21
+ /** The optional peer dependency. */
22
+ const DRIVER_PACKAGE = "neo4j-driver";
23
+ /** The URL schemes of a direct Bolt connection. */
24
+ const DIRECT_SCHEMES = new Set(["bolt:", "bolt+s:", "bolt+ssc:"]);
25
+ /**
26
+ * Import the optional peer dependency.
27
+ * @param input - the transport input
28
+ * @returns the driver module
29
+ */
30
+ async function loadDriver(input) {
31
+ let mod;
32
+ try {
33
+ mod = (await import("neo4j-driver"));
34
+ }
35
+ catch {
36
+ return failOn(input.ctx.report, "E_SOURCE_RUNTIME", `the bolt transport needs ${DRIVER_PACKAGE} installed`, {
37
+ runtime: input.ctx.runtime,
38
+ reason: "needs-peer-dependency",
39
+ package: DRIVER_PACKAGE,
40
+ });
41
+ }
42
+ return mod.default ?? mod;
43
+ }
44
+ /**
45
+ * Fail when an https page would open a plain Bolt WebSocket to another machine, which the browser
46
+ * blocks.
47
+ * @param ctx - the context
48
+ * @param url - the endpoint
49
+ */
50
+ function refuseMixedContent(ctx, url) {
51
+ const page = globalThis.location;
52
+ if (ctx.runtime === "browser" &&
53
+ page?.protocol === "https:" &&
54
+ url.protocol === "bolt:" &&
55
+ !isLoopback(url.hostname)) {
56
+ failOn(ctx.report, "E_SOURCE_RUNTIME", "an https page cannot open a plain Bolt WebSocket", {
57
+ runtime: ctx.runtime,
58
+ reason: "insecure-endpoint",
59
+ });
60
+ }
61
+ }
62
+ /**
63
+ * Check the endpoint and the credential before connecting, and turn the credential into the
64
+ * driver's auth token.
65
+ * @param input - the transport input
66
+ * @param neo4j - the driver module
67
+ * @returns the URL and auth token
68
+ */
69
+ async function connection(input, neo4j) {
70
+ const { ctx } = input;
71
+ const { report } = ctx;
72
+ const bad = (reason, message) => failOn(report, "E_SOURCE_PARAM", message, { name: "endpoint", reason });
73
+ const url = ctx.endpoint ?? bad("missing", "the bolt transport needs an endpoint");
74
+ if (!DIRECT_SCHEMES.has(url.protocol)) {
75
+ bad(url.protocol.startsWith("neo4j") ? "routing" : "scheme", `${url.protocol} is not a direct Bolt scheme`);
76
+ }
77
+ refuseMixedContent(ctx, url);
78
+ const { credential, allowInsecure } = transportOptions(ctx);
79
+ const origin = originOf(url);
80
+ const bound = credential !== undefined && (credential.origins.length === 0 || credential.origins.includes(origin));
81
+ if (!bound || credential === undefined) {
82
+ return { url, auth: undefined };
83
+ }
84
+ if (url.protocol === "bolt+ssc:") {
85
+ bad("unverified-tls", "bolt+ssc accepts any certificate, so no credential is sent over it");
86
+ }
87
+ if (url.protocol === "bolt:" && !isLoopback(url.hostname) && allowInsecure !== true) {
88
+ bad("insecure-endpoint", "a credential is never sent without TLS");
89
+ }
90
+ const secret = unwrapCredential(credential);
91
+ if (secret !== undefined && "username" in secret) {
92
+ return { url, auth: neo4j.auth.basic(secret.username, secret.password) };
93
+ }
94
+ if (secret !== undefined && "token" in secret) {
95
+ const token = typeof secret.token === "string" ? secret.token : await secret.token();
96
+ return { url, auth: neo4j.auth.bearer(token) };
97
+ }
98
+ return failOn(report, "E_SOURCE_PARAM", "the bolt transport takes a basic or bearer credential", {
99
+ name: "credential",
100
+ reason: "kind",
101
+ });
102
+ }
103
+ /**
104
+ * Make the transport: import the driver, check the endpoint and credential, open a READ session.
105
+ * @param input - the context, params and mapper
106
+ * @returns the transport
107
+ */
108
+ export async function boltTransport(input) {
109
+ const { ctx, params, m } = input;
110
+ throwIfAborted(ctx.signal);
111
+ const neo4j = await loadDriver(input);
112
+ const { url, auth } = await connection(input, neo4j);
113
+ throwIfAborted(ctx.signal);
114
+ const origin = originOf(url);
115
+ const { userAgent } = transportOptions(ctx);
116
+ const driver = neo4j.driver(`${url.protocol}//${url.host}`, auth, userAgent === undefined ? {} : { userAgent });
117
+ const session = driver.session({
118
+ defaultAccessMode: neo4j.session.READ,
119
+ ...(params.database === undefined ? {} : { database: params.database }),
120
+ });
121
+ let closed = null;
122
+ const close = () => {
123
+ closed ?? (closed = session
124
+ .close()
125
+ .catch(() => undefined)
126
+ .then(() => driver.close())
127
+ .catch(() => undefined));
128
+ return closed;
129
+ };
130
+ const onAbort = () => {
131
+ void close();
132
+ };
133
+ ctx.signal.addEventListener("abort", onAbort, { once: true });
134
+ const fail = (err) => {
135
+ throwIfAborted(ctx.signal);
136
+ const e = err;
137
+ const code = typeof e.code === "string" ? e.code : null;
138
+ if (code === null || code === "ServiceUnavailable" || code === "SessionExpired") {
139
+ return ctx.runtime === "browser"
140
+ ? failOn(ctx.report, "E_SOURCE_BLOCKED", `${origin} could not be reached over Bolt`, {
141
+ url: origin,
142
+ cause: "unknown",
143
+ })
144
+ : failOn(ctx.report, "E_FETCH", `${origin} could not be reached over Bolt`, {
145
+ url: origin,
146
+ status: null,
147
+ });
148
+ }
149
+ return serverError(ctx.report, {
150
+ code,
151
+ message: typeof e.message === "string" ? e.message : "",
152
+ status: null,
153
+ showable: code.startsWith("Neo.ClientError."),
154
+ }, origin, params.database);
155
+ };
156
+ let detected = null;
157
+ const profile = async () => {
158
+ if (detected === null) {
159
+ const info = await driver.getServerInfo().catch(fail);
160
+ detected = profileFromAgent(info.agent ?? "");
161
+ }
162
+ return detected;
163
+ };
164
+ const timeout = ctx.limits.timeoutMs;
165
+ return {
166
+ async run(statement, parameters) {
167
+ throwIfAborted(ctx.signal);
168
+ const result = await session
169
+ .run(statement, parameters, timeout === undefined ? undefined : { timeout })
170
+ .catch(fail);
171
+ const fields = (result.records[0]?.keys ?? []).map(String);
172
+ return {
173
+ fields,
174
+ rows: result.records.map((r) => fields.map((k) => fromDriver(r.get(k), k, m, neo4j))),
175
+ };
176
+ },
177
+ profile,
178
+ probe: profile,
179
+ close: async () => {
180
+ ctx.signal.removeEventListener("abort", onAbort);
181
+ await close();
182
+ },
183
+ };
184
+ }
185
+ //# sourceMappingURL=bolt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bolt.js","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/bolt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The `neptune-analytics` transport (design section 12.4): `POST /queries` on the graph's host
3
+ * (`<graph-id>.<region>.neptune-graph.amazonaws.com`), JSON `{ query, language: "OPEN_CYPHER",
4
+ * parameters }`, always signed with `credentials.awsSigV4` for the service "neptune-graph".
5
+ * Results share Neptune Database's `~id` shape. Node only until CORS on a graph host is shown to
6
+ * work: a browser is refused before any request (E_SOURCE_RUNTIME, reason "cors").
7
+ */
8
+ import { type Transport, type TransportInput } from "./transport.js";
9
+ /**
10
+ * Make the transport.
11
+ * @param input - the context, params and mapper
12
+ * @returns the transport
13
+ */
14
+ export declare function neptuneAnalyticsTransport(input: TransportInput): Transport;
15
+ //# sourceMappingURL=neptune-analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neptune-analytics.d.ts","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/neptune-analytics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErE;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAsB1E"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * The `neptune-analytics` transport (design section 12.4): `POST /queries` on the graph's host
3
+ * (`<graph-id>.<region>.neptune-graph.amazonaws.com`), JSON `{ query, language: "OPEN_CYPHER",
4
+ * parameters }`, always signed with `credentials.awsSigV4` for the service "neptune-graph".
5
+ * Results share Neptune Database's `~id` shape. Node only until CORS on a graph host is shown to
6
+ * work: a browser is refused before any request (E_SOURCE_RUNTIME, reason "cors").
7
+ */
8
+ import { neptuneProfile } from "../profiles.js";
9
+ import { neptuneResult, nodeOnly } from "./neptune-https.js";
10
+ /**
11
+ * Make the transport.
12
+ * @param input - the context, params and mapper
13
+ * @returns the transport
14
+ */
15
+ export function neptuneAnalyticsTransport(input) {
16
+ const { ctx } = input;
17
+ nodeOnly(ctx, "neptune-analytics");
18
+ const run = async (statement, parameters) => {
19
+ const response = await ctx.fetch("queries", {
20
+ method: "POST",
21
+ idempotent: true,
22
+ allowStatus: [400, 500],
23
+ headers: { "Content-Type": "application/json" },
24
+ body: JSON.stringify({ query: statement, language: "OPEN_CYPHER", parameters }),
25
+ });
26
+ return neptuneResult(input, response);
27
+ };
28
+ return {
29
+ run,
30
+ profile: () => Promise.resolve(neptuneProfile()),
31
+ probe: async () => {
32
+ await run("RETURN 1 AS ok", {});
33
+ return neptuneProfile();
34
+ },
35
+ close: () => Promise.resolve(),
36
+ };
37
+ }
38
+ //# sourceMappingURL=neptune-analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neptune-analytics.js","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/neptune-analytics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG7D;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAqB;IAC3D,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,KAAK,EAAE,SAAiB,EAAE,UAA6C,EAAwB,EAAE;QACzG,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACvB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;SAClF,CAAC,CAAC;QACH,OAAO,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC;IACF,OAAO;QACH,GAAG;QACH,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAChD,KAAK,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAChC,OAAO,cAAc,EAAE,CAAC;QAC5B,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;KACjC,CAAC;AACN,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The `neptune-https` transport (design section 12.4): Neptune Database's `POST /openCypher`
3
+ * (port 8182, TLS only), form fields `query` and `parameters`, signed with `credentials.awsSigV4`
4
+ * (service "neptune-db") or unsigned inside the VPC. Node only: Neptune Database sends no CORS
5
+ * headers, so a browser is refused before any request (E_SOURCE_RUNTIME, reason "cors").
6
+ *
7
+ * An error after the first chunk of a 200 answer is appended to the body; the tail is read for it.
8
+ */
9
+ import { type SourceContext } from "../../types.js";
10
+ import { type QueryResult } from "../flatten.js";
11
+ import { type Transport, type TransportInput } from "./transport.js";
12
+ /**
13
+ * Refuse a Neptune transport where it cannot run.
14
+ * @param ctx - the context
15
+ * @param transport - the transport name
16
+ */
17
+ export declare function nodeOnly(ctx: SourceContext, transport: string): void;
18
+ /**
19
+ * Turn a Neptune answer into a result, or raise its error.
20
+ * @param input - the transport input
21
+ * @param response - the answer
22
+ * @returns the mapped result
23
+ */
24
+ export declare function neptuneResult(input: TransportInput, response: Response): Promise<QueryResult>;
25
+ /**
26
+ * Make the transport.
27
+ * @param input - the context, params and mapper
28
+ * @returns the transport
29
+ */
30
+ export declare function neptuneHttpsTransport(input: TransportInput): Transport;
31
+ //# sourceMappingURL=neptune-https.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neptune-https.d.ts","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/neptune-https.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAsC,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AASzG;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAOpE;AAiBD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAmCnG;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAoBtE"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * The `neptune-https` transport (design section 12.4): Neptune Database's `POST /openCypher`
3
+ * (port 8182, TLS only), form fields `query` and `parameters`, signed with `credentials.awsSigV4`
4
+ * (service "neptune-db") or unsigned inside the VPC. Node only: Neptune Database sends no CORS
5
+ * headers, so a browser is refused before any request (E_SOURCE_RUNTIME, reason "cors").
6
+ *
7
+ * An error after the first chunk of a 200 answer is appended to the body; the tail is read for it.
8
+ */
9
+ import { originOf } from "../../credentials.js";
10
+ import { failOn } from "../../fail.js";
11
+ import { neptuneProfile } from "../profiles.js";
12
+ import { fromNeptune } from "../types-map.js";
13
+ import { objectRows, parseJson, serverError } from "./transport.js";
14
+ /**
15
+ * Refuse a Neptune transport where it cannot run.
16
+ * @param ctx - the context
17
+ * @param transport - the transport name
18
+ */
19
+ export function nodeOnly(ctx, transport) {
20
+ if (ctx.runtime === "browser" || ctx.runtime === "worker") {
21
+ failOn(ctx.report, "E_SOURCE_RUNTIME", `the ${transport} transport cannot run in a browser`, {
22
+ runtime: ctx.runtime,
23
+ reason: "cors",
24
+ });
25
+ }
26
+ }
27
+ /**
28
+ * The error a body ends with, when a 200 answer was cut short by one.
29
+ * @param text - the body
30
+ * @returns the error, or null
31
+ */
32
+ function trailingError(text) {
33
+ for (let at = text.lastIndexOf("{"); at > 0; at = text.lastIndexOf("{", at - 1)) {
34
+ const tail = parseJson(text.slice(at));
35
+ if (tail !== null && typeof tail.code === "string") {
36
+ return tail;
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+ /**
42
+ * Turn a Neptune answer into a result, or raise its error.
43
+ * @param input - the transport input
44
+ * @param response - the answer
45
+ * @returns the mapped result
46
+ */
47
+ export async function neptuneResult(input, response) {
48
+ const { ctx, m } = input;
49
+ const origin = ctx.endpoint === null ? "" : originOf(ctx.endpoint);
50
+ const text = await response.text();
51
+ const body = parseJson(text);
52
+ let error = typeof body?.code === "string" ? body : null;
53
+ if (body === null) {
54
+ error = trailingError(text);
55
+ }
56
+ if (error !== null) {
57
+ serverError(ctx.report, {
58
+ code: error.code ?? null,
59
+ message: error.detailedMessage ?? error.message ?? "",
60
+ status: response.status,
61
+ showable: body !== null && response.status >= 400 && response.status < 500,
62
+ }, origin, undefined);
63
+ }
64
+ if (!response.ok) {
65
+ failOn(ctx.report, "E_FETCH", `${origin} answered ${String(response.status)}`, {
66
+ url: origin,
67
+ status: response.status,
68
+ });
69
+ }
70
+ if (body === null || !Array.isArray(body.results)) {
71
+ failOn(ctx.report, "E_SOURCE_RESPONSE", "the Neptune answer has no results", {
72
+ expected: "json",
73
+ contentType: response.headers.get("content-type"),
74
+ });
75
+ }
76
+ return objectRows(body.results, (v, column) => fromNeptune(v, column, m));
77
+ }
78
+ /**
79
+ * Make the transport.
80
+ * @param input - the context, params and mapper
81
+ * @returns the transport
82
+ */
83
+ export function neptuneHttpsTransport(input) {
84
+ const { ctx } = input;
85
+ nodeOnly(ctx, "neptune-https");
86
+ return {
87
+ async run(statement, parameters) {
88
+ const response = await ctx.fetch("openCypher", {
89
+ method: "POST",
90
+ idempotent: true,
91
+ allowStatus: [400, 500],
92
+ body: new URLSearchParams({ query: statement, parameters: JSON.stringify(parameters) }),
93
+ });
94
+ return neptuneResult(input, response);
95
+ },
96
+ profile: () => Promise.resolve(neptuneProfile()),
97
+ probe: async () => {
98
+ const status = await ctx.fetchJson("status");
99
+ return neptuneProfile(typeof status.dbEngineVersion === "string" ? status.dbEngineVersion : null);
100
+ },
101
+ close: () => Promise.resolve(),
102
+ };
103
+ }
104
+ //# sourceMappingURL=neptune-https.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neptune-https.js","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/neptune-https.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The `query-api` transport (design section 12.2): Neo4j's `POST /db/{database}/query/v2`, on by
3
+ * default since Neo4j 5.26 and on Aura, with no driver. It asks for typed JSON, so integers keep
4
+ * every digit, and sends `accessMode: "Read"`, which the server enforces. CORS is open by default,
5
+ * so it works from a page on https.
6
+ */
7
+ import { type Transport, type TransportInput } from "./transport.js";
8
+ /**
9
+ * Make the transport.
10
+ * @param input - the context, params and mapper
11
+ * @returns the transport
12
+ */
13
+ export declare function queryApiTransport(input: TransportInput): Transport;
14
+ //# sourceMappingURL=query-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-api.d.ts","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/query-api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAA0B,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAc7F;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAoElE"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * The `query-api` transport (design section 12.2): Neo4j's `POST /db/{database}/query/v2`, on by
3
+ * default since Neo4j 5.26 and on Aura, with no driver. It asks for typed JSON, so integers keep
4
+ * every digit, and sends `accessMode: "Read"`, which the server enforces. CORS is open by default,
5
+ * so it works from a page on https.
6
+ */
7
+ import { originOf } from "../../credentials.js";
8
+ import { failOn } from "../../fail.js";
9
+ import { neo4jProfile } from "../profiles.js";
10
+ import { fromTypedJson } from "../types-map.js";
11
+ import { parseJson, serverError } from "./transport.js";
12
+ /** The media type of Neo4j's typed JSON. */
13
+ const TYPED_JSON = "application/vnd.neo4j.query.v1.1";
14
+ /** The statuses whose JSON body says what went wrong. */
15
+ const ERROR_STATUSES = [400, 404, 500];
16
+ /**
17
+ * Make the transport.
18
+ * @param input - the context, params and mapper
19
+ * @returns the transport
20
+ */
21
+ export function queryApiTransport(input) {
22
+ const { ctx, params, m } = input;
23
+ const database = params.database ?? "neo4j";
24
+ const path = `db/${encodeURIComponent(database)}/query/v2`;
25
+ const origin = ctx.endpoint === null ? "" : originOf(ctx.endpoint);
26
+ const run = async (statement, parameters) => {
27
+ const response = await ctx.fetch(path, {
28
+ method: "POST",
29
+ idempotent: true,
30
+ allowStatus: ERROR_STATUSES,
31
+ headers: { "Content-Type": "application/json", Accept: TYPED_JSON },
32
+ body: JSON.stringify({ statement, parameters, accessMode: "Read" }),
33
+ });
34
+ const body = parseJson(await response.text());
35
+ const first = body?.errors?.[0];
36
+ if (first !== undefined) {
37
+ serverError(ctx.report, {
38
+ code: first.code ?? null,
39
+ message: first.message ?? "",
40
+ status: response.status,
41
+ showable: response.status >= 400 && response.status < 500,
42
+ }, origin, params.database);
43
+ }
44
+ if (response.status === 404) {
45
+ // no Query API here: a Neo4j before 5.26 answers 404, and speaks only Bolt
46
+ failOn(ctx.report, "E_SOURCE_NOT_FOUND", `${origin} has no Query API at ${path}`, {
47
+ what: "url",
48
+ value: `${origin}/${path}`,
49
+ });
50
+ }
51
+ if (!response.ok) {
52
+ failOn(ctx.report, "E_FETCH", `${origin} answered ${String(response.status)}`, {
53
+ url: `${origin}/${path}`,
54
+ status: response.status,
55
+ });
56
+ }
57
+ if (body?.data === undefined) {
58
+ failOn(ctx.report, "E_SOURCE_RESPONSE", "the Query API answer has no data", {
59
+ expected: "json",
60
+ contentType: response.headers.get("content-type"),
61
+ });
62
+ }
63
+ const { fields, values } = body.data;
64
+ return { fields, rows: values.map((row) => row.map((v, i) => fromTypedJson(v, fields[i] ?? "", m))) };
65
+ };
66
+ return {
67
+ run,
68
+ // the Query API exists from Neo4j 5.26, so ids are elementId()
69
+ profile: () => Promise.resolve(neo4jProfile(null)),
70
+ probe: async () => {
71
+ const res = await run("CALL dbms.components() YIELD name, versions, edition RETURN name, versions, edition", {});
72
+ const kernel = res.rows.find((r) => r[0] === "Neo4j Kernel") ?? res.rows[0];
73
+ const versions = kernel?.[1];
74
+ const version = Array.isArray(versions) && typeof versions[0] === "string" ? versions[0] : null;
75
+ return neo4jProfile(version);
76
+ },
77
+ close: () => Promise.resolve(),
78
+ };
79
+ }
80
+ //# sourceMappingURL=query-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-api.js","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/query-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * What every Cypher transport is (design section 12.2): something that runs one statement with
3
+ * its parameters and returns mapped rows, knows the server's profile, and closes. Also the one
4
+ * place a server's own error code becomes a source issue code.
5
+ */
6
+ import { type ImportReportBuilder } from "../../../common/report.js";
7
+ import { type SourceContext } from "../../types.js";
8
+ import { type QueryResult } from "../flatten.js";
9
+ import { type CypherParams } from "../params.js";
10
+ import { type CypherProfile } from "../profiles.js";
11
+ import { type MapContext } from "../types-map.js";
12
+ /** One way a Cypher statement travels to a server. Internal. */
13
+ export interface Transport {
14
+ /**
15
+ * Run one read-only statement.
16
+ * @param statement - the statement
17
+ * @param parameters - its parameters, sent separately
18
+ * @returns the mapped result
19
+ */
20
+ run(statement: string, parameters: Readonly<Record<string, unknown>>): Promise<QueryResult>;
21
+ /**
22
+ * The server's profile, detected once.
23
+ * @returns the profile
24
+ */
25
+ profile(): Promise<CypherProfile>;
26
+ /**
27
+ * The server facts `probe` reports, which may cost a request.
28
+ * @returns the profile with its version filled in where the server says it
29
+ */
30
+ probe(): Promise<CypherProfile>;
31
+ /** Release the connection. */
32
+ close(): Promise<void>;
33
+ }
34
+ /** What a transport is made from. */
35
+ export interface TransportInput {
36
+ /** The load's context. */
37
+ readonly ctx: SourceContext;
38
+ /** The params, with defaults. */
39
+ readonly params: CypherParams;
40
+ /** The type mapper's context. */
41
+ readonly m: MapContext;
42
+ }
43
+ /** What a server said about a failed statement. */
44
+ interface ServerError {
45
+ /** The service's own code, or null. */
46
+ readonly code: string | null;
47
+ /** Its message, or "". */
48
+ readonly message: string;
49
+ /** The HTTP status, or null over Bolt. */
50
+ readonly status: number | null;
51
+ /** Whether the message came from a JSON 4xx body (or a Bolt client error), so a report may keep it. */
52
+ readonly showable: boolean;
53
+ }
54
+ /**
55
+ * Raise the source issue a server error is: a login failure, a refusal, a server timeout, a
56
+ * missing database, or E_SOURCE_QUERY with the line and column the message names.
57
+ * @param report - the load's report
58
+ * @param err - what the server said
59
+ * @param origin - the origin that answered
60
+ * @param database - the database asked for, if any
61
+ * @returns never; it throws
62
+ */
63
+ export declare function serverError(report: ImportReportBuilder, err: ServerError, origin: string, database: string | undefined): never;
64
+ /**
65
+ * The value of a response body as JSON, or null when it is not JSON.
66
+ * @param text - the body
67
+ * @returns the parsed value, or null
68
+ */
69
+ export declare function parseJson(text: string): unknown;
70
+ /**
71
+ * The fields and rows of a result given as one object per row (Neptune's `results`).
72
+ * @param results - the row objects
73
+ * @param map - maps one value, given its column
74
+ * @returns the result
75
+ */
76
+ export declare function objectRows(results: readonly Readonly<Record<string, unknown>>[], map: (v: unknown, column: string) => unknown): QueryResult;
77
+ export {};
78
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,gEAAgE;AAChE,MAAM,WAAW,SAAS;IACtB;;;;;OAKG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5F;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,8BAA8B;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC3B,0BAA0B;IAC1B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,iCAAiC;IACjC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC;CAC1B;AAKD,mDAAmD;AACnD,UAAU,WAAW;IACjB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,0BAA0B;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uGAAuG;IACvG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACvB,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC7B,KAAK,CAmCP;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM/C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACtB,OAAO,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,EACrD,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,GAC7C,WAAW,CAGb"}