@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
@@ -15,20 +15,34 @@
15
15
  * property to its Cytoscape.js default, whatever the rules beneath say.
16
16
  */
17
17
 
18
+ import { canonColor } from "../canon/color.js";
18
19
  import { CSS_COLORS } from "../canon/color-tables.js";
19
20
  import { canonEnum } from "../canon/enums.js";
20
21
  import { num6 } from "../canon/number.js";
21
22
  import type { CanonSite } from "../canon/site.js";
22
23
  import { STYLE_ISSUE } from "../codes.js";
23
24
  import type { StyleTarget, StyleValue } from "../types.js";
25
+ import { CYJS_FACE_PROPERTIES } from "./face.js";
24
26
 
25
27
  /** How Cytoscape.js types a property's value. */
26
28
  export type CyjsValueType =
27
- "color" | "zeroOne" | "size" | "nodeSize" | "positive" | "text" | "fontFamily" | "fontWeight" | "enum";
29
+ | "color"
30
+ | "zeroOne"
31
+ | "size"
32
+ | "signedSize"
33
+ | "nodeSize"
34
+ | "positive"
35
+ | "text"
36
+ | "fontFamily"
37
+ | "fontWeight"
38
+ | "enum";
28
39
 
29
40
  /** One property graph-io carries: the neutral property it sets (or a part it combines) and how it is parsed. */
30
41
  export interface CyjsPropertySpec {
31
- /** The neutral property, or `_valign`, `_halign`, `_visibility`, `_display` for the parts combined afterward. */
42
+ /**
43
+ * The neutral property, or `_valign`, `_halign`, `_visibility`, `_display`, `_sourceArrowFill`, `_targetArrowFill`
44
+ * for the parts combined afterward.
45
+ */
32
46
  readonly property: string;
33
47
  /** The value type. */
34
48
  readonly type: CyjsValueType;
@@ -106,7 +120,8 @@ const FONT_WEIGHTS: readonly (string | number)[] = [
106
120
  800,
107
121
  900,
108
122
  ];
109
- const CURVES = [
123
+ /** Cytoscape.js's curve styles. */
124
+ export const CYJS_CURVE_STYLES = [
110
125
  "bezier",
111
126
  "unbundled-bezier",
112
127
  "haystack",
@@ -138,19 +153,318 @@ const LABEL: [string, CyjsPropertySpec][] = [
138
153
  ["visibility", { property: "_visibility", type: "enum", enums: ["hidden", "visible"] }],
139
154
  ["display", { property: "_display", type: "enum", enums: ["element", "none"] }],
140
155
  ["opacity", { property: "opacity", type: "zeroOne" }],
156
+ ["text-transform", { property: "_transform", type: "enum", enums: ["none", "uppercase", "lowercase"] }],
157
+ ["text-wrap", { property: "_wrap", type: "enum", enums: ["none", "wrap", "ellipsis"] }],
158
+ ["text-overflow-wrap", { property: "_overflowWrap", type: "enum", enums: ["whitespace", "anywhere"] }],
159
+ // how the lines line up; `auto` follows the horizontal alignment (`combineLabelText`)
160
+ ["text-justification", { property: "_justification", type: "enum", enums: ["auto", "left", "center", "right"] }],
161
+ // a width only `text-wrap: wrap` wraps at, so it is combined with the wrap afterward (`combineParts`)
162
+ ["text-max-width", { property: "_maxWidth", type: "size" }],
163
+ // the outline and the background box draw only with a width and an opacity (`combineLabelDress`)
164
+ ["text-outline-color", { property: "_outlineColor", type: "color" }],
165
+ ["text-outline-width", { property: "_outlineWidth", type: "size" }],
166
+ ["text-outline-opacity", { property: "_outlineOpacity", type: "zeroOne" }],
167
+ ["text-background-color", { property: "_backgroundColor", type: "color" }],
168
+ ["text-background-opacity", { property: "_backgroundOpacity", type: "zeroOne" }],
169
+ ["text-background-padding", { property: "_backgroundPadding", type: "size" }],
170
+ [
171
+ "text-background-shape",
172
+ {
173
+ property: "_backgroundShape",
174
+ type: "enum",
175
+ enums: ["rectangle", "round-rectangle", "roundrectangle", "circle"],
176
+ },
177
+ ],
178
+ ["text-rotation", { property: "_rotation", type: "text" }],
179
+ // the words' own opacity, drawn times the element's (`combineLabelOpacity`)
180
+ ["text-opacity", { property: "_textOpacity", type: "zeroOne" }],
181
+ // the label moved right and down by this many pixels from where its alignment puts it, a node's and an edge's
182
+ ["text-margin-x", { property: "labelOffsetX", type: "signedSize" }],
183
+ ["text-margin-y", { property: "labelOffsetY", type: "signedSize" }],
184
+ // the line round the label's box draws only with a width and an opacity above 0 (`combineLabelDress`)
185
+ ["text-border-color", { property: "_textBorderColor", type: "color" }],
186
+ ["text-border-width", { property: "_textBorderWidth", type: "size" }],
187
+ ["text-border-opacity", { property: "_textBorderOpacity", type: "zeroOne" }],
188
+ [
189
+ "text-border-style",
190
+ { property: "_textBorderStyle", type: "enum", enums: ["solid", "dotted", "dashed", "double"] },
191
+ ],
141
192
  ];
142
193
 
194
+ /** Cytoscape.js's `background-gradient-direction` values. */
195
+ const GRADIENT_DIRECTIONS = [
196
+ "to-bottom",
197
+ "to-top",
198
+ "to-left",
199
+ "to-right",
200
+ "to-bottom-right",
201
+ "to-bottom-left",
202
+ "to-top-right",
203
+ "to-top-left",
204
+ "to-right-bottom",
205
+ "to-left-bottom",
206
+ "to-right-top",
207
+ "to-left-top",
208
+ ];
209
+
210
+ /**
211
+ * The pixels of one `em`: Cytoscape.js reads it as its container's font size (`getEmSizeInPixels`, cytoscape.js
212
+ * 3.34.3 dist/cytoscape.cjs.js line 16896), 16 in a page that leaves the font size at the browser's default.
213
+ */
214
+ const EM_PX = 16;
215
+
216
+ /**
217
+ * Cytoscape.js's `shape-polygon-points` (`x y` pairs, y down, commas or spaces between) as neutral `shapePoints`.
218
+ * @param text - the points
219
+ * @returns `x,y` pairs with y up, or null when they are not pairs of numbers
220
+ */
221
+ function cyjsPointsToNeutral(text: string): string | null {
222
+ const n = text
223
+ .trim()
224
+ .split(/[\s,]+/)
225
+ .map(Number);
226
+ if (n.length < 6 || n.length % 2 !== 0 || !n.every((v) => Number.isFinite(v))) {
227
+ return null;
228
+ }
229
+ const pairs: string[] = [];
230
+ for (let i = 0; i < n.length; i += 2) {
231
+ pairs.push(`${String(round6(n[i]))},${String(round6(-n[i + 1]))}`);
232
+ }
233
+ return pairs.join(" ");
234
+ }
235
+
236
+ /**
237
+ * Neutral `shapePoints` as Cytoscape.js's `shape-polygon-points`.
238
+ * @param points - `x,y` pairs with y up
239
+ * @returns `x y` pairs with y down, or null when they are not pairs of numbers
240
+ */
241
+ export function neutralPointsToCyjs(points: string): string | null {
242
+ const n = points
243
+ .trim()
244
+ .split(/[\s,]+/)
245
+ .map(Number);
246
+ if (n.length < 6 || n.length % 2 !== 0 || !n.every((v) => Number.isFinite(v))) {
247
+ return null;
248
+ }
249
+ const pairs: string[] = [];
250
+ for (let i = 0; i < n.length; i += 2) {
251
+ pairs.push(`${String(round6(n[i]))} ${String(round6(-n[i + 1]))}`);
252
+ }
253
+ return pairs.join(" ");
254
+ }
255
+
256
+ /**
257
+ * A coordinate to six decimals, with no negative zero.
258
+ * @param v - the coordinate
259
+ * @returns it rounded
260
+ */
261
+ const round6 = (v: number): number => Math.round(v * 1e6) / 1e6 + 0;
262
+
263
+ /**
264
+ * Cytoscape.js's corners of a heptagon fitted to its box (`generateUnitNgonPointsFitToSquare(7, 0)`): a regular
265
+ * heptagon with a corner up, stretched until it fills the box both ways.
266
+ * @returns the corners as `x,y` fractions of the half width and half height, y up
267
+ */
268
+ function fittedHeptagon(): string {
269
+ const corners = Array.from({ length: 7 }, (_, i): [number, number] => {
270
+ const angle = Math.PI / 2 + (2 * Math.PI * i) / 7;
271
+ return [Math.cos(angle), Math.sin(angle)];
272
+ });
273
+ const [x0, x1] = [Math.min(...corners.map(([x]) => x)), Math.max(...corners.map(([x]) => x))];
274
+ const [y0, y1] = [Math.min(...corners.map(([, y]) => y)), Math.max(...corners.map(([, y]) => y))];
275
+ return corners
276
+ .map(([x, y]) => `${round6((2 * (x - x0)) / (x1 - x0) - 1)},${round6((2 * (y - y0)) / (y1 - y0) - 1)}`)
277
+ .join(" ");
278
+ }
279
+
280
+ /**
281
+ * The Cytoscape.js node shapes no neutral shape names, with the corners Cytoscape.js draws each at (cytoscape.js
282
+ * 3.34.3 dist/cytoscape.cjs.js lines 27976-28008); the round ones are `other:round-polygon` over the same corners.
283
+ */
284
+ const CYJS_POLYGON_SHAPES: ReadonlyMap<string, string> = new Map([
285
+ ["heptagon", fittedHeptagon()],
286
+ ["round-heptagon", fittedHeptagon()],
287
+ ["tag", "-1,-1 0.25,-1 1,0 0.25,1 -1,1"],
288
+ ["round-tag", "-1,-1 0.25,-1 1,0 0.25,1 -1,1"],
289
+ ]);
290
+
291
+ /**
292
+ * Cytoscape.js's polygons drawn with rounded corners (`corner-radius`, by default a tenth of the shorter side),
293
+ * kept as their own `other:` shapes rather than read as their sharp twins.
294
+ */
295
+ const CYJS_ROUND_SHAPES: ReadonlySet<string> = new Set([
296
+ "round-triangle",
297
+ "round-diamond",
298
+ "round-pentagon",
299
+ "round-hexagon",
300
+ "round-octagon",
301
+ ]);
302
+
303
+ /**
304
+ * Draws every Cytoscape.js shape no neutral shape names (`other:heptagon`, `other:tag`) as the polygon Cytoscape.js
305
+ * builds for it: `polygon` with its corners in `shapePoints`.
306
+ * @param values - node values (per element, or a rule's constants), changed in place
307
+ */
308
+ export function cyjsPolygonShapes(values: Record<string, unknown>): void {
309
+ const { shape } = values;
310
+ const pointsOf = (v: unknown): string | undefined =>
311
+ typeof v === "string" && v.startsWith("other:") ? CYJS_POLYGON_SHAPES.get(v.slice("other:".length)) : undefined;
312
+ if (Array.isArray(shape)) {
313
+ const col = shape as (StyleValue | null)[];
314
+ if (!col.some((v) => pointsOf(v) !== undefined)) {
315
+ return;
316
+ }
317
+ const points = Array.isArray(values.shapePoints)
318
+ ? [...(values.shapePoints as (StyleValue | null)[])]
319
+ : new Array<StyleValue | null>(col.length).fill(null);
320
+ values.shape = col.map((v, i) => {
321
+ const p = pointsOf(v);
322
+ if (p === undefined) {
323
+ return v;
324
+ }
325
+ points[i] = p;
326
+ return polygonOf(v);
327
+ });
328
+ values.shapePoints = points;
329
+ return;
330
+ }
331
+ const p = pointsOf(shape);
332
+ if (p !== undefined) {
333
+ values.shape = polygonOf(shape);
334
+ values.shapePoints = p;
335
+ }
336
+ }
337
+
338
+ /**
339
+ * The polygon a Cytoscape.js polygon shape is drawn as: `other:round-polygon` for its round ones.
340
+ * @param shape - the shape, `other:<Cytoscape.js name>`
341
+ * @returns the neutral shape
342
+ */
343
+ function polygonOf(shape: unknown): string {
344
+ return typeof shape === "string" && shape.startsWith("other:round-") ? "other:round-polygon" : "polygon";
345
+ }
346
+
347
+ /** How Cytoscape.js's `line-fill` paints a line, as the neutral gradient kind. */
348
+ const GRADIENT_KINDS: ReadonlyMap<string, string> = new Map([
349
+ ["solid", "none"],
350
+ ["linear-gradient", "linear"],
351
+ ["radial-gradient", "radial"],
352
+ ]);
353
+
354
+ /**
355
+ * A text split at its runs of whitespace that are not inside parentheses: `rgb(0, 0, 0) red` is two words. A run is
356
+ * inside when the next parenthesis after it closes one (as `/\s+(?![^(]*\))/` splits, in one pass).
357
+ * @param text - the text
358
+ * @returns the words
359
+ */
360
+ function wordsOutsideParens(text: string): string[] {
361
+ // whether the next parenthesis at or after each offset is a `)`
362
+ const closes = new Array<boolean>(text.length + 1).fill(false);
363
+ for (let i = text.length - 1; i >= 0; i--) {
364
+ closes[i] = text[i] === ")" || (text[i] !== "(" && closes[i + 1]);
365
+ }
366
+ const words: string[] = [];
367
+ let start = 0;
368
+ let i = 0;
369
+ while (i < text.length) {
370
+ if (!/\s/.test(text[i])) {
371
+ i++;
372
+ continue;
373
+ }
374
+ let end = i + 1;
375
+ while (end < text.length && /\s/.test(text[end])) {
376
+ end++;
377
+ }
378
+ if (!closes[end]) {
379
+ words.push(text.slice(start, i));
380
+ start = end;
381
+ }
382
+ i = end;
383
+ }
384
+ words.push(text.slice(start));
385
+ return words;
386
+ }
387
+
388
+ /**
389
+ * Cytoscape.js's `line-gradient-stop-colors` (colors separated by spaces) as `#rrggbb` colors separated by spaces.
390
+ * @param text - the value
391
+ * @param site - where it was read
392
+ * @returns the colors, or undefined when one does not parse (noted)
393
+ */
394
+ function gradientColors(text: string, site: CanonSite): string | undefined {
395
+ const hexes: string[] = [];
396
+ for (const token of wordsOutsideParens(text.trim())) {
397
+ const c = token === "" ? null : canonColor(token, "css", site);
398
+ if (c === null) {
399
+ return undefined;
400
+ }
401
+ hexes.push(c.color);
402
+ }
403
+ return hexes.join(" ");
404
+ }
405
+
406
+ /**
407
+ * Cytoscape.js's gradient stop colors (colors separated by spaces) as `#rrggbb` colors.
408
+ * @param text - the value
409
+ * @param site - where it was read
410
+ * @returns the colors, none when one does not parse (noted)
411
+ */
412
+ export function gradientStopColors(text: string, site: CanonSite): string[] {
413
+ return gradientColors(text, site)?.split(" ") ?? [];
414
+ }
415
+
416
+ /**
417
+ * Cytoscape.js's `line-gradient-stop-positions` (percentages or fractions separated by spaces) as fractions.
418
+ * @param text - the value
419
+ * @returns the fractions separated by spaces, or undefined when one is not a number
420
+ */
421
+ export function gradientStops(text: string): string | undefined {
422
+ const stops = text
423
+ .trim()
424
+ .split(/\s+/)
425
+ .map((t) => (t.endsWith("%") ? Number.parseFloat(t) / 100 : Number.parseFloat(t)));
426
+ return stops.every((n) => Number.isFinite(n)) ? stops.map((n) => num6(n)).join(" ") : undefined;
427
+ }
428
+
429
+ /** The lengths Cytoscape.js draws at half their value: a bundle's control point step, an outline's offset. */
430
+ const HALVED: ReadonlySet<string> = new Set(["fanSpacing", "outerBorderOffset"]);
431
+
143
432
  /** The node properties graph-io carries, by Cytoscape.js name. */
144
433
  export const CYJS_NODE_PROPERTIES: ReadonlyMap<string, CyjsPropertySpec> = new Map<string, CyjsPropertySpec>([
145
434
  ["background-color", { property: "fill", type: "color" }],
146
435
  ["background-opacity", { property: "fillOpacity", type: "zeroOne" }],
147
436
  ["border-color", { property: "borderColor", type: "color" }],
437
+ // the rings are drawn at their own opacity times the node's (`combineNodeOpacity`)
438
+ ["border-opacity", { property: "_ringOpacity", type: "zeroOne" }],
148
439
  ["border-width", { property: "borderWidth", type: "size" }],
149
440
  ["border-style", { property: "borderStyle", type: "enum", enums: ["solid", "dotted", "dashed", "double"] }],
441
+ // the dashes a dashed border is drawn with and their ends, which decide how it looks (`combineDashes`)
442
+ ["border-dash-pattern", { property: "_dashPattern", type: "text" }],
443
+ ["border-cap", { property: "_dashCap", type: "enum", enums: ["butt", "round", "square"] }],
444
+ // where the border sits against the node's outline: across it, inside it or outside it
445
+ ["border-position", { property: "borderPosition", type: "enum", enums: ["center", "inside", "outside"] }],
446
+ ["outline-color", { property: "outerBorderColor", type: "color" }],
447
+ ["outline-opacity", { property: "_outlineRingOpacity", type: "zeroOne" }],
448
+ ["outline-width", { property: "outerBorderWidth", type: "size" }],
449
+ ["outline-style", { property: "outerBorderStyle", type: "enum", enums: ["solid", "dotted", "dashed", "double"] }],
450
+ ["outline-offset", { property: "outerBorderOffset", type: "size" }],
451
+ ["underlay-color", { property: "underlayColor", type: "color" }],
452
+ ["underlay-opacity", { property: "underlayOpacity", type: "zeroOne" }],
453
+ ["underlay-padding", { property: "underlayPadding", type: "size" }],
454
+ ["underlay-shape", { property: "underlayShape", type: "enum", enums: NODE_SHAPES }],
455
+ ["underlay-corner-radius", { property: "underlayCornerRadius", type: "size" }],
456
+ ["overlay-color", { property: "overlayColor", type: "color" }],
457
+ ["overlay-opacity", { property: "overlayOpacity", type: "zeroOne" }],
458
+ ["overlay-padding", { property: "overlayPadding", type: "size" }],
459
+ ["overlay-shape", { property: "overlayShape", type: "enum", enums: NODE_SHAPES }],
460
+ ["overlay-corner-radius", { property: "overlayCornerRadius", type: "size" }],
150
461
  ["shape", { property: "shape", type: "enum", enums: NODE_SHAPES }],
462
+ ["shape-polygon-points", { property: "shapePoints", type: "text" }],
151
463
  ["corner-radius", { property: "cornerRadius", type: "size" }],
152
464
  ["width", { property: "width", type: "nodeSize" }],
153
465
  ["height", { property: "height", type: "nodeSize" }],
466
+ // a node is drawn this much larger on every side (`nodeSizes`)
467
+ ["padding", { property: "_padding", type: "text" }],
154
468
  [
155
469
  "text-valign",
156
470
  { property: "_valign", type: "enum", enums: ["top", "top-inside", "center", "bottom", "bottom-inside"] },
@@ -159,6 +473,16 @@ export const CYJS_NODE_PROPERTIES: ReadonlyMap<string, CyjsPropertySpec> = new M
159
473
  "text-halign",
160
474
  { property: "_halign", type: "enum", enums: ["left", "left-inside", "center", "right", "right-inside"] },
161
475
  ],
476
+ // the fill's gradient, combined afterward into `fill`, `fillGradient`, `fillGradientAngle` and the other
477
+ // `fillGradient*` properties
478
+ [
479
+ "background-fill",
480
+ { property: "_backgroundFill", type: "enum", enums: ["solid", "linear-gradient", "radial-gradient"] },
481
+ ],
482
+ ["background-gradient-stop-colors", { property: "_backgroundStops", type: "text" }],
483
+ ["background-gradient-stop-positions", { property: "_backgroundPositions", type: "text" }],
484
+ ["background-gradient-direction", { property: "_backgroundDirection", type: "enum", enums: GRADIENT_DIRECTIONS }],
485
+ ...CYJS_FACE_PROPERTIES,
162
486
  ...LABEL,
163
487
  ]);
164
488
 
@@ -167,14 +491,67 @@ export const CYJS_EDGE_PROPERTIES: ReadonlyMap<string, CyjsPropertySpec> = new M
167
491
  ["line-color", { property: "color", type: "color" }],
168
492
  ["width", { property: "width", type: "nodeSize" }],
169
493
  ["line-style", { property: "lineStyle", type: "enum", enums: ["solid", "dotted", "dashed"] }],
494
+ // the dashes a dashed line is drawn with and their ends, which decide how it looks (`combineDashes`)
495
+ ["line-dash-pattern", { property: "_dashPattern", type: "text" }],
496
+ ["line-cap", { property: "_dashCap", type: "enum", enums: ["butt", "round", "square"] }],
497
+ // the line's own opacity, combined afterward into `opacity`, which the line is drawn at
498
+ ["line-opacity", { property: "_lineOpacity", type: "zeroOne" }],
499
+ ["line-outline-width", { property: "outlineWidth", type: "size" }],
500
+ ["line-fill", { property: "gradientKind", type: "enum", enums: ["solid", "linear-gradient", "radial-gradient"] }],
501
+ ["line-gradient-stop-colors", { property: "gradientColors", type: "text" }],
502
+ ["line-gradient-stop-positions", { property: "gradientStops", type: "text" }],
503
+ ["line-outline-color", { property: "outlineColor", type: "color" }],
504
+ ["underlay-color", { property: "underlayColor", type: "color" }],
505
+ ["underlay-opacity", { property: "underlayOpacity", type: "zeroOne" }],
506
+ ["underlay-padding", { property: "underlayPadding", type: "size" }],
507
+ ["overlay-color", { property: "overlayColor", type: "color" }],
508
+ ["overlay-opacity", { property: "overlayOpacity", type: "zeroOne" }],
509
+ ["overlay-padding", { property: "overlayPadding", type: "size" }],
170
510
  ["target-arrow-shape", { property: "targetArrow", type: "enum", enums: ARROWS }],
171
511
  ["source-arrow-shape", { property: "sourceArrow", type: "enum", enums: ARROWS }],
172
512
  ["target-arrow-color", { property: "targetArrowColor", type: "color" }],
173
513
  ["source-arrow-color", { property: "sourceArrowColor", type: "color" }],
174
- ["curve-style", { property: "curved", type: "enum", enums: CURVES }],
514
+ ["mid-target-arrow-shape", { property: "midTargetArrow", type: "enum", enums: ARROWS }],
515
+ ["mid-source-arrow-shape", { property: "midSourceArrow", type: "enum", enums: ARROWS }],
516
+ ["mid-target-arrow-color", { property: "midTargetArrowColor", type: "color" }],
517
+ ["mid-source-arrow-color", { property: "midSourceArrowColor", type: "color" }],
518
+ // filled or hollow: combined with the shape afterward (`combineParts`), a hollow triangle being `triangle-open`
519
+ ["target-arrow-fill", { property: "_targetArrowFill", type: "enum", enums: ["filled", "hollow"] }],
520
+ ["source-arrow-fill", { property: "_sourceArrowFill", type: "enum", enums: ["filled", "hollow"] }],
521
+ ["mid-target-arrow-fill", { property: "_midTargetArrowFill", type: "enum", enums: ["filled", "hollow"] }],
522
+ ["mid-source-arrow-fill", { property: "_midSourceArrowFill", type: "enum", enums: ["filled", "hollow"] }],
523
+ ["curve-style", { property: "curved", type: "enum", enums: CYJS_CURVE_STYLES }],
524
+ // a route's settings, read by the routes (`edgeRoutes`) as Cytoscape.js spells them
525
+ ["segment-distances", { property: "_segmentDistances", type: "text" }],
526
+ ["segment-weights", { property: "_segmentWeights", type: "text" }],
527
+ ["control-point-distances", { property: "_controlPointDistances", type: "text" }],
528
+ ["control-point-weights", { property: "_controlPointWeights", type: "text" }],
529
+ ["taxi-direction", { property: "_taxiDirection", type: "text" }],
530
+ ["taxi-turn", { property: "_taxiTurn", type: "text" }],
531
+ ["taxi-turn-min-distance", { property: "_taxiTurnMinDistance", type: "size" }],
532
+ ["edge-distances", { property: "_edgeDistances", type: "text" }],
533
+ ["loop-direction", { property: "_loopDirection", type: "text" }],
534
+ ["loop-sweep", { property: "_loopSweep", type: "text" }],
535
+ ["segment-radii", { property: "_segmentRadii", type: "text" }],
536
+ ["taxi-radius", { property: "_taxiRadius", type: "text" }],
537
+ ["radius-type", { property: "_radiusType", type: "text" }],
538
+ // where the ends meet the nodes, read with the routes (`edgePorts`)
539
+ ["source-endpoint", { property: "_sourceEndpoint", type: "text" }],
540
+ ["target-endpoint", { property: "_targetEndpoint", type: "text" }],
541
+ // a bundle's control points are this far apart, so the curves' middles half of it (see cyjsNeutral)
542
+ ["control-point-step-size", { property: "fanSpacing", type: "size" }],
175
543
  ["arrow-scale", { property: "arrowSize", type: "positive" }],
176
544
  ["source-label", { property: "sourceLabel", type: "text" }],
177
545
  ["target-label", { property: "targetLabel", type: "text" }],
546
+ ["source-text-offset", { property: "sourceLabelOffset", type: "size" }],
547
+ ["target-text-offset", { property: "targetLabelOffset", type: "size" }],
548
+ ["source-text-margin-x", { property: "sourceLabelOffsetX", type: "signedSize" }],
549
+ ["source-text-margin-y", { property: "sourceLabelOffsetY", type: "signedSize" }],
550
+ ["target-text-margin-x", { property: "targetLabelOffsetX", type: "signedSize" }],
551
+ ["target-text-margin-y", { property: "targetLabelOffsetY", type: "signedSize" }],
552
+ // an angle, or autorotate along the line, which the routes work out (`autorotateLabels`)
553
+ ["source-text-rotation", { property: "_sourceRotation", type: "text" }],
554
+ ["target-text-rotation", { property: "_targetRotation", type: "text" }],
178
555
  ...LABEL,
179
556
  ]);
180
557
 
@@ -187,6 +564,33 @@ export function cyjsProperties(target: StyleTarget): ReadonlyMap<string, CyjsPro
187
564
  return target === "node" ? CYJS_NODE_PROPERTIES : CYJS_EDGE_PROPERTIES;
188
565
  }
189
566
 
567
+ /**
568
+ * Cytoscape.js 3.34.3's property aliases (`styfn.aliases`): each name is read as the property it points to.
569
+ */
570
+ const CYJS_ALIASES: ReadonlyMap<string, string> = new Map([
571
+ ["content", "label"],
572
+ ["control-point-distance", "control-point-distances"],
573
+ ["control-point-weight", "control-point-weights"],
574
+ ["segment-distance", "segment-distances"],
575
+ ["segment-weight", "segment-weights"],
576
+ ["segment-radius", "segment-radii"],
577
+ ["edge-text-rotation", "text-rotation"],
578
+ ["padding-left", "padding"],
579
+ ["padding-right", "padding"],
580
+ ["padding-top", "padding"],
581
+ ["padding-bottom", "padding"],
582
+ ]);
583
+
584
+ /**
585
+ * A dash-form property name with Cytoscape.js's aliases resolved (`content` is `label`, `segment-distance` is
586
+ * `segment-distances`, `padding-left` is `padding`).
587
+ * @param dashed - the name in dash form
588
+ * @returns the property it sets
589
+ */
590
+ export function cyjsAliasOf(dashed: string): string {
591
+ return CYJS_ALIASES.get(dashed) ?? dashed;
592
+ }
593
+
190
594
  /**
191
595
  * A property name in Cytoscape.js's dash form, aliases resolved (`backgroundColor` and `content` are read as
192
596
  * `background-color` and `label`).
@@ -194,8 +598,7 @@ export function cyjsProperties(target: StyleTarget): ReadonlyMap<string, CyjsPro
194
598
  * @returns the dash-form name
195
599
  */
196
600
  export function cyjsPropertyName(name: string): string {
197
- const dashed = name.replaceAll(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);
198
- return dashed === "content" ? "label" : dashed;
601
+ return cyjsAliasOf(name.replaceAll(/[A-Z]/g, (c) => `-${c.toLowerCase()}`));
199
602
  }
200
603
 
201
604
  /** A parsed value, ready to draw. */
@@ -510,6 +913,7 @@ function parseFlat(spec: CyjsPropertySpec, raw: unknown, rendered = false): Flat
510
913
  return ok ? { kind: "number", value: x, units: null, str: String(x) } : null;
511
914
  }
512
915
  case "size":
916
+ case "signedSize":
513
917
  case "nodeSize":
514
918
  return parseSizeValue(spec, value, raw);
515
919
  case "text":
@@ -571,7 +975,9 @@ function parseSizeValue(spec: CyjsPropertySpec, value: unknown, raw: unknown): C
571
975
  if (Number.isNaN(x)) {
572
976
  return spec.type === "nodeSize" && raw === "label" ? { kind: "word", value: "label", str: "label" } : null;
573
977
  }
574
- return x < 0 ? null : { kind: "number", value: x, units, str: `${String(x)}${units ?? ""}` };
978
+ return x < 0 && spec.type !== "signedSize"
979
+ ? null
980
+ : { kind: "number", value: x, units, str: `${String(x)}${units ?? ""}` };
575
981
  }
576
982
 
577
983
  /**
@@ -685,7 +1091,11 @@ function parseMapData(spec: CyjsPropertySpec, value: string, mode: CyjsParseMode
685
1091
  return null;
686
1092
  }
687
1093
  const numeric =
688
- spec.type === "zeroOne" || spec.type === "positive" || spec.type === "size" || spec.type === "nodeSize";
1094
+ spec.type === "zeroOne" ||
1095
+ spec.type === "positive" ||
1096
+ spec.type === "size" ||
1097
+ spec.type === "signedSize" ||
1098
+ spec.type === "nodeSize";
689
1099
  if (spec.type !== "color" && !numeric) {
690
1100
  return null;
691
1101
  }
@@ -789,6 +1199,23 @@ export function applyCyjsMapper(
789
1199
  return null;
790
1200
  }
791
1201
 
1202
+ /**
1203
+ * A flat color as `#rrggbb`; a channel outside 0..255 is noted and undefined is returned.
1204
+ * @param v - the color
1205
+ * @param site - where it was read
1206
+ * @returns the color, or undefined
1207
+ */
1208
+ function colorNeutral(v: Extract<CyjsFlat, { kind: "color" }>, site: CanonSite): StyleValue | undefined {
1209
+ if (v.rgb.some((c) => !Number.isFinite(c) || c < 0 || c > 255)) {
1210
+ site.notes.add(STYLE_ISSUE.BAD_VALUE, site.target, site.property, {
1211
+ sample: v.str,
1212
+ element: site.element,
1213
+ });
1214
+ return undefined;
1215
+ }
1216
+ return `#${v.rgb.map((c) => Math.round(c).toString(16).padStart(2, "0")).join("")}`;
1217
+ }
1218
+
792
1219
  /**
793
1220
  * The neutral value a flat value is drawn as, for one property. A value Cytoscape.js draws from the page (an `em`
794
1221
  * size, a node sized to its label) cannot be evaluated: it is noted and undefined is returned.
@@ -799,25 +1226,12 @@ export function applyCyjsMapper(
799
1226
  */
800
1227
  export function cyjsNeutral(spec: CyjsPropertySpec, v: CyjsFlat, site: CanonSite): StyleValue | undefined {
801
1228
  switch (v.kind) {
802
- case "color": {
803
- if (v.rgb.some((c) => !Number.isFinite(c) || c < 0 || c > 255)) {
804
- site.notes.add(STYLE_ISSUE.BAD_VALUE, site.target, site.property, {
805
- sample: v.str,
806
- element: site.element,
807
- });
808
- return undefined;
809
- }
810
- return `#${v.rgb.map((c) => Math.round(c).toString(16).padStart(2, "0")).join("")}`;
811
- }
1229
+ case "color":
1230
+ return colorNeutral(v, site);
812
1231
  case "number":
813
- if (v.units === "em") {
814
- site.notes.add(STYLE_ISSUE.BAD_VALUE, site.target, site.property, {
815
- sample: v.str,
816
- element: site.element,
817
- });
818
- return undefined;
819
- }
820
- return num6(v.value);
1232
+ // Cytoscape.js steps a bundle's control points; a quadratic's middle is half as far out. It grows the
1233
+ // outline's path by its offset across, so the outline starts half the offset out (drawOutline).
1234
+ return num6((HALVED.has(spec.property) ? v.value / 2 : v.value) * (v.units === "em" ? EM_PX : 1));
821
1235
  default:
822
1236
  break;
823
1237
  }
@@ -825,25 +1239,58 @@ export function cyjsNeutral(spec: CyjsPropertySpec, v: CyjsFlat, site: CanonSite
825
1239
  switch (spec.property) {
826
1240
  case "width":
827
1241
  case "height":
828
- site.notes.add(STYLE_ISSUE.BAD_VALUE, site.target, site.property, { sample: v.str, element: site.element });
1242
+ // a node sized to its label is drawn so by the node sizes (`nodeSizes`); an edge has no such width
1243
+ if (site.target === "edge") {
1244
+ site.notes.add(STYLE_ISSUE.BAD_VALUE, site.target, site.property, {
1245
+ sample: v.str,
1246
+ element: site.element,
1247
+ });
1248
+ }
829
1249
  return undefined;
830
1250
  case "label":
831
1251
  case "sourceLabel":
832
1252
  case "targetLabel":
833
1253
  case "labelFont":
834
1254
  return String(word);
1255
+ case "gradientKind":
1256
+ return GRADIENT_KINDS.get(String(word)) ?? undefined;
1257
+ case "gradientColors":
1258
+ return gradientColors(String(word), site);
1259
+ case "gradientStops":
1260
+ return gradientStops(String(word));
835
1261
  case "labelItalic":
836
1262
  return word === "italic" || word === "oblique";
837
1263
  case "curved":
838
1264
  return !STRAIGHT.has(String(word));
839
- case "shape":
1265
+ case "shapePoints":
1266
+ return cyjsPointsToNeutral(String(word)) ?? undefined;
1267
+ case "underlayShape":
1268
+ case "overlayShape":
840
1269
  return canonEnum("shape", String(word), "cytoscape-js", site) ?? undefined;
1270
+ case "shape": {
1271
+ const polygon = String(word).toLowerCase();
1272
+ if (polygon === "polygon") {
1273
+ return "polygon";
1274
+ }
1275
+ // drawn exactly as the polygon Cytoscape.js builds, by `cyjsPolygonShapes`
1276
+ return CYJS_POLYGON_SHAPES.has(polygon) || CYJS_ROUND_SHAPES.has(polygon)
1277
+ ? `other:${polygon}`
1278
+ : (canonEnum("shape", String(word), "cytoscape-js", site) ?? undefined);
1279
+ }
841
1280
  case "borderStyle":
842
1281
  return canonEnum("borderStyle", String(word), "cytoscape-js", site) ?? undefined;
1282
+ case "outerBorderStyle":
1283
+ // cytoscape.js 3.34.3 drawOutline strokes a double outline whole and then erases a line a third of the
1284
+ // BORDER's width down its middle, a hairline under a border of 1: the ring it shows is solid
1285
+ return word === "double"
1286
+ ? "solid"
1287
+ : (canonEnum("borderStyle", String(word), "cytoscape-js", site) ?? undefined);
843
1288
  case "lineStyle":
844
1289
  return canonEnum("lineStyle", String(word), "cytoscape-js", site) ?? undefined;
845
1290
  case "sourceArrow":
846
1291
  case "targetArrow":
1292
+ case "midSourceArrow":
1293
+ case "midTargetArrow":
847
1294
  return canonEnum("arrow", String(word), "cytoscape-js", site) ?? undefined;
848
1295
  case "labelWeight":
849
1296
  return canonEnum("weight", String(word), "cytoscape-js", site) ?? undefined;
@@ -877,3 +1324,26 @@ export function cyjsRendered(
877
1324
  }
878
1325
  return cyjsNeutral(spec, v, site);
879
1326
  }
1327
+
1328
+ /**
1329
+ * The line class a dash array looks like against the line's width: solid where its gaps are a tenth of it or less,
1330
+ * dotted where no dash is longer than one and a half widths, dash-dot where a dash is twice another, else dashed.
1331
+ * @param dash - the dashes and gaps, in pixels
1332
+ * @param width - the line's width
1333
+ * @param cap - the dashes' ends
1334
+ * @returns the neutral line style
1335
+ */
1336
+ export function cyjsDashLook(dash: readonly number[], width: number, cap: string): string {
1337
+ const pairs = dash.length % 2 === 1 ? [...dash, ...dash] : [...dash];
1338
+ const grow = cap === "butt" ? 0 : width;
1339
+ const on = pairs.filter((_, i) => i % 2 === 0).map((d) => Math.max(0, d) + grow);
1340
+ const off = pairs.filter((_, i) => i % 2 === 1).map((d) => Math.max(0, d - grow));
1341
+ const sum = (xs: readonly number[]): number => xs.reduce((a, b) => a + b, 0);
1342
+ if (sum(off) <= 0.1 * (sum(on) + sum(off))) {
1343
+ return "solid";
1344
+ }
1345
+ if (on.every((d) => d <= Math.max(1, width) * 1.5)) {
1346
+ return "dotted";
1347
+ }
1348
+ return Math.max(...on) >= 2 * Math.min(...on) ? "dash-dot" : "dashed";
1349
+ }