@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
@@ -48,6 +48,12 @@ export type ToolDerivedDefault =
48
48
  /** Where the default is stated. */
49
49
  readonly source: string;
50
50
  }
51
+ | {
52
+ /** An edge with no color of its own takes the mix of its two end nodes' colors (Gephi's EdgeColor MIXED). */
53
+ readonly kind: "colorFromEndNodes";
54
+ /** Where the default is stated. */
55
+ readonly source: string;
56
+ }
51
57
  | {
52
58
  /** An edge with no width of its own is drawn as thick as its weight (1 for an edge with no weight, or a weight of 0 or below). */
53
59
  readonly kind: "widthFromWeight";
@@ -82,6 +88,59 @@ export interface ToolDefaults {
82
88
  readonly graph: ToolDefaultValues<GraphStyleValues>;
83
89
  /** Defaults that are rules, applied above the constants. */
84
90
  readonly derived: readonly ToolDerivedDefault[];
91
+ /**
92
+ * The largest corner radius, in `units`, the program draws on a rounded rectangle whose file gives none. Not a
93
+ * node default: it only bounds the rounding of the shape the file names, so no rule carries it and no writer has
94
+ * to hold it.
95
+ */
96
+ readonly roundedCornerRadius?: ToolDefaultValue<number>;
97
+ /**
98
+ * How big the program draws its filled triangle arrowhead, which it sizes from the line width and its own size
99
+ * setting rather than from the neutral `arrowSize` alone. Not an edge default: the size follows from two
100
+ * properties, so no rule carries it. Absent for a program whose arrowheads graph-io has not measured.
101
+ */
102
+ readonly arrowhead?: ToolArrowhead;
103
+ /**
104
+ * Whether the program draws a node's `borderWidth` in screen pixels, the same at every zoom, rather than as a
105
+ * length that grows and shrinks with the drawing: vis-network divides it by its view's scale. Not a node default:
106
+ * it says how every node's border width is read, so no rule carries it. Absent, a border width is a length.
107
+ */
108
+ readonly nodeBorderOnScreen?: ToolDefaultValue<boolean>;
109
+ }
110
+
111
+ /**
112
+ * How a program sizes its filled triangle arrowhead, in its `units`.
113
+ * @category Styles
114
+ */
115
+ export interface ToolArrowhead {
116
+ /**
117
+ * The arrowhead's length along its line.
118
+ * @param arrowSize - the edge's neutral `arrowSize` (1 is the program's normal size)
119
+ * @param width - the edge's line width
120
+ * @returns the length
121
+ */
122
+ readonly length: (arrowSize: number, width: number) => number;
123
+ /** Its width across the line as a fraction of its length, which its diamond shares. */
124
+ readonly aspect: number;
125
+ /**
126
+ * Another arrow shape's length along its line as a fraction of the triangle's, and its width as a fraction of
127
+ * its own length, where they differ.
128
+ */
129
+ readonly shapes?: Readonly<
130
+ Partial<
131
+ Record<
132
+ StyleArrowShape,
133
+ {
134
+ /** The shape's length along its line, as a fraction of the triangle's. */
135
+ readonly length: number;
136
+ /** Its width across the line as a fraction of its own length; unset, the triangle's. */
137
+ readonly aspect?: number;
138
+ }
139
+ >
140
+ >
141
+ >;
142
+ /** Where the rule is stated or measured. */
143
+ readonly source: string;
85
144
  }
86
145
 
87
146
  /**
@@ -96,21 +155,98 @@ function v<V>(value: V, source: string): ToolDefaultValue<V> {
96
155
 
97
156
  const CY = "cytoscape-impl vizmap-gui-impl default_vizmap.xml, style default, line";
98
157
  const CYL = "cytoscape-api BasicVisualLexicon.java line";
158
+ /** Cytoscape desktop's zigzag and sine-wave strokes: both swing 10 px and repeat every 20 px. */
159
+ const CY_WAVE =
160
+ "cytoscape-impl ding-presentation-impl 3.10.5 org.cytoscape.ding.impl.strokes: ZigzagStroke (amplitude 10, a turn every 10) and SineWaveStroke (amplitude 10, wavelength 20)";
99
161
  const CYJS = "cytoscape.js 3.34.3 dist/cytoscape.cjs.js line";
100
162
  const GV = "graphviz.org/docs/attrs";
101
163
  const YED_QA = "yEd Q&A, How can I change the default nodes and/or default edges";
102
164
  const YED_CORPUS = "yEd GraphML corpus, most frequent value";
103
165
  const YED_EDGE = "yFiles for Java 2.19 EdgeRealizer API docs";
166
+ const YED_BG = "yFiles for Java 2.19 DefaultBackgroundRenderer API docs";
104
167
  const Y3 = "yFiles for HTML API docs,";
105
168
  const GEPHI = "gephi master 92e503df61a7";
106
169
  const VIS = "vis-network 10.1.2 vis-network.esm.js";
170
+ const VIS9 = "vis-network 9.1.9 standalone/umd/vis-network.js";
107
171
  const SIGMA = "sigma 3.0.3 packages/sigma/src";
172
+ const SIGMA4 = "sigma 4.0.1 dist/types-d8ce3382.esm.js";
108
173
  const PAJEK = "Pajek 6.02 reference manual";
109
- const PAJEK_SHAPES =
110
- "the SHAPES.CFG Pajek writes when none exists (DrawEPS.htm), " +
111
- "github.com/ohshane/radical-clustering 0f568f67893558035868b3db1bf365870ba52f6b shapes.cfg, SHAPE ELLIPSE";
112
174
  const OGDF = "ogdf master 1a40505ac006";
175
+ const OGDF_SVG =
176
+ "OGDF 2025.10 GraphIO::drawSVG with its default SVGSettings (graph-io/test/fidelity/oracles/gml-specimen-labels-p5.svg: ";
113
177
  const NX = "networkx 6da4704cbf32 networkx/drawing/nx_pylab.py line";
178
+ const MEASURED = "measured in the program's own SVG export (graph-io/test/fidelity/oracles/";
179
+ const PAJEK_SVG = `${MEASURED}pajek-`;
180
+
181
+ /**
182
+ * Cytoscape desktop draws an arrow `EDGE_*_ARROW_SIZE` (6 by default, the neutral arrowSize 1) plus the line width
183
+ * across, a DELTA twice as long, a square, a circle and a half arrow as long as that, and a T bar as wide as the
184
+ * DELTA is long and a tenth of that deep: measured on cx-ndex-90f78bcd (width 1), cx2-u2os-hierarchy (width 2),
185
+ * cx2-signor-aml and cx2-syn-bypass (widths 1 and 7).
186
+ */
187
+ const CYTOSCAPE_ARROWHEAD: ToolArrowhead = {
188
+ length: (size, width) => 2 * (6 * size + width),
189
+ aspect: 0.5,
190
+ shapes: {
191
+ square: { length: 0.5, aspect: 1 },
192
+ circle: { length: 0.5, aspect: 1 },
193
+ "circle-open": { length: 0.5, aspect: 1 },
194
+ // HALF_TOP's barb: 1.135 long and 1 to one side of its line
195
+ half: { length: 0.5675, aspect: 0.881 },
196
+ "other:half-bottom": { length: 0.5675, aspect: 0.881 },
197
+ tee: { length: 0.1, aspect: 10 },
198
+ // a square's outline, and a half circle (half a CIRCLE deep, as wide)
199
+ "other:open-square": { length: 0.5, aspect: 1 },
200
+ "other:half-circle": { length: 0.25, aspect: 2 },
201
+ "other:open-half-circle": { length: 0.25, aspect: 2 },
202
+ },
203
+ source: `${MEASURED}cx-ndex-90f78bcd, cx2-u2os-hierarchy, cx2-signor-aml, cx2-syn-bypass, cx-syn-mappings: each arrow's unit glyph), Cytoscape 3.10.5`,
204
+ };
205
+
206
+ /**
207
+ * Cytoscape desktop draws a node's outline its size less its border's width across and strokes the border along it,
208
+ * so the border's outer edge is the node's size: a 40 x 40 HEXAGON with a border of 1 is a 39-wide path.
209
+ */
210
+ /** Cytoscape desktop draws a curved edge through its handles, and the loops it adds itself, through their midpoints. */
211
+ const CYTOSCAPE_BEND_CURVE = v(
212
+ "midpoints",
213
+ "cytoscape-impl ding-presentation-impl GraphGraphics.java computeCubicPolyEdgePath (cubic pieces between the handles' midpoints, controls pulled toward each handle by CURVE_ELLIPTICAL)",
214
+ );
215
+
216
+ /**
217
+ * Cytoscape desktop draws a label's background box round its words alone: as wide as the text and one line tall,
218
+ * the font's ascent plus descent (1.164 of a DejaVu Sans font's size), which is also the step between its lines.
219
+ */
220
+ const CYTOSCAPE_LABEL_BOX = `${MEASURED}xgmml-specimen-labels: label-background-* boxes and the captions' two lines), Cytoscape 3.10.5`;
221
+ const CYTOSCAPE_LABEL_PADDING = v(0, CYTOSCAPE_LABEL_BOX);
222
+ const CYTOSCAPE_LABEL_LINE_HEIGHT = v(1, CYTOSCAPE_LABEL_BOX);
223
+
224
+ const CYTOSCAPE_BORDER_INSIDE = v<"inside">(
225
+ "inside",
226
+ `${MEASURED}cx2-repro-shared-interaction, cys-luad-vest-v2, cx2-synthetic-lethal), Cytoscape 3.10.5`,
227
+ );
228
+
229
+ /**
230
+ * draw.io draws a yEd or yFiles file's arrows `endSize` 6 plus the line width long and as wide; yEd itself could not
231
+ * be run, so draw.io's drawing stands in.
232
+ */
233
+ const DRAWIO_ARROWHEAD: ToolArrowhead = {
234
+ length: (size, width) => 6 * size + width,
235
+ aspect: 1,
236
+ source: `${MEASURED}graphml-*, draw.io 32.4.1 standing in for yEd)`,
237
+ };
238
+
239
+ /**
240
+ * The largest corner radius of a rounded rectangle whose file gives none, in the program's units. Cytoscape.js is the
241
+ * one program that publishes its rule (`getRoundRectangleRadius`); the others draw barely rounded corners too, so they
242
+ * get the same 8, and a 513 x 453 group keeps small corners instead of a quarter of its side.
243
+ * @param tool - the program, when it is not Cytoscape.js and so states no radius of its own
244
+ * @returns the default
245
+ */
246
+ function cornerCap(tool?: string): ToolDefaultValue<number> {
247
+ const rule = `${CYJS} 4386`;
248
+ return v(8, tool === undefined ? rule : `${rule} (Cytoscape.js's rule; ${tool} states none)`);
249
+ }
114
250
 
115
251
  /**
116
252
  * The defaults of every program graph-io recognizes as a file's writer, by tool id.
@@ -123,6 +259,8 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
123
259
  tool: "cytoscape",
124
260
  version: "cytoscape-impl develop 6c63e97c5152 (3.11)",
125
261
  units: "px",
262
+ roundedCornerRadius: cornerCap("cytoscape"),
263
+ arrowhead: CYTOSCAPE_ARROWHEAD,
126
264
  node: {
127
265
  fill: v("#89d0f5", `${CY} 382`),
128
266
  fillOpacity: v(1, `${CY} 383`),
@@ -132,29 +270,44 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
132
270
  borderColor: v("#cccccc", `${CY} 392`),
133
271
  borderWidth: v(0, `${CY} 350`),
134
272
  borderStyle: v("solid", `${CY} 366`),
273
+ borderPosition: CYTOSCAPE_BORDER_INSIDE,
274
+ borderWaveAmplitude: v(10, CY_WAVE),
275
+ borderWavePeriod: v(20, CY_WAVE),
135
276
  labelColor: v("#000000", `${CY} 395`),
136
- labelFont: v("sans-serif", `${CY} 370`),
277
+ labelFont: v("DejaVu Sans, sans-serif", `${CY} 370 (SansSerif, drawn in Java's face for it)`),
137
278
  labelWeight: v("normal", `${CY} 370`),
138
279
  labelItalic: v(false, `${CY} 370`),
139
280
  labelSize: v(12, `${CY} 371`),
281
+ labelWrapWidth: v(200, `${CY} 372`),
282
+ labelWrapTrailingSpace: v(
283
+ true,
284
+ `${MEASURED}cx-ndex-90f78bcd: each word is measured with the space after it), Cytoscape 3.10.5`,
285
+ ),
140
286
  labelPosition: v("center", `${CY} 380`),
287
+ labelPadding: CYTOSCAPE_LABEL_PADDING,
288
+ labelLineHeight: CYTOSCAPE_LABEL_LINE_HEIGHT,
141
289
  },
142
290
  edge: {
143
291
  color: v("#848484", `${CY} 431`),
144
292
  width: v(2, `${CY} 417`),
145
293
  lineStyle: v("solid", `${CY} 438`),
294
+ waveAmplitude: v(10, CY_WAVE),
295
+ wavePeriod: v(20, CY_WAVE),
146
296
  opacity: v(1, `${CY} 423`),
147
297
  sourceArrow: v("none", `${CY} 437`),
148
298
  targetArrow: v("none", `${CY} 428`),
149
299
  sourceArrowColor: v("#000000", `${CY} 432`),
150
300
  targetArrowColor: v("#000000", `${CY} 432`),
151
301
  labelColor: v("#000000", `${CY} 415`),
152
- labelFont: v("sans-serif", `${CY} 439`),
302
+ labelFont: v("DejaVu Sans, sans-serif", `${CY} 439 (SansSerif, drawn in Java's face for it)`),
153
303
  labelWeight: v("normal", `${CY} 439`),
154
304
  labelItalic: v(false, `${CY} 439`),
155
305
  labelSize: v(10, `${CY} 439`),
306
+ labelPadding: CYTOSCAPE_LABEL_PADDING,
307
+ labelLineHeight: CYTOSCAPE_LABEL_LINE_HEIGHT,
156
308
  // EDGE_CURVED is true there, but it only rounds an edge's bends: an edge without bends is straight
157
309
  curved: v(false, `${CY} 422`),
310
+ bendCurve: CYTOSCAPE_BEND_CURVE,
158
311
  },
159
312
  graph: { background: v("#ffffff", `${CY} 335`) },
160
313
  derived: [{ kind: "labelFromColumn", column: "name", source: `${CY} 406-408` }],
@@ -163,6 +316,8 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
163
316
  tool: "cytoscape-fallbacks",
164
317
  version: "cytoscape-api develop (3.11)",
165
318
  units: "px",
319
+ roundedCornerRadius: cornerCap("cytoscape-fallbacks"),
320
+ arrowhead: CYTOSCAPE_ARROWHEAD,
166
321
  node: {
167
322
  fill: v("#c80000", `${CYL} 83`),
168
323
  fillOpacity: v(1, `${CYL} 273`),
@@ -171,24 +326,39 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
171
326
  height: v(40, `${CYL} 163`),
172
327
  borderColor: v("#000000", `${CYL} 230`),
173
328
  borderWidth: v(2, `${CYL} 54`),
329
+ borderPosition: CYTOSCAPE_BORDER_INSIDE,
330
+ borderWaveAmplitude: v(10, CY_WAVE),
331
+ borderWavePeriod: v(20, CY_WAVE),
174
332
  labelColor: v("#000000", `${CYL} 91`),
175
- labelFont: v("sans-serif", `${CYL} 255`),
333
+ labelFont: v("DejaVu Sans, sans-serif", `${CYL} 255 (SansSerif, drawn in Java's face for it)`),
176
334
  labelWeight: v("normal", `${CYL} 255`),
177
335
  labelItalic: v(false, `${CYL} 255`),
178
336
  labelSize: v(12, `${CYL} 55`),
337
+ labelWrapWidth: v(200, `${CYL} 196`),
338
+ labelWrapTrailingSpace: v(
339
+ true,
340
+ `${MEASURED}cx-ndex-90f78bcd: each word is measured with the space after it), Cytoscape 3.10.5`,
341
+ ),
179
342
  labelPosition: v("center", `${CYL} 205`),
343
+ labelPadding: CYTOSCAPE_LABEL_PADDING,
344
+ labelLineHeight: CYTOSCAPE_LABEL_LINE_HEIGHT,
180
345
  },
181
346
  edge: {
182
347
  color: v("#404040", `${CYL} 469`),
183
348
  width: v(1, `${CYL} 368`),
184
349
  lineStyle: v("solid", `${CYL} 392`),
350
+ waveAmplitude: v(10, CY_WAVE),
351
+ wavePeriod: v(20, CY_WAVE),
185
352
  sourceArrow: v("none", `${CYL} 487`),
186
353
  targetArrow: v("none", `${CYL} 493`),
187
354
  labelColor: v("#000000", `${CYL} 327`),
188
- labelFont: v("sans-serif", `${CYL} 408`),
355
+ labelFont: v("DejaVu Sans, sans-serif", `${CYL} 408 (SansSerif, drawn in Java's face for it)`),
189
356
  labelWeight: v("normal", `${CYL} 408`),
190
357
  labelItalic: v(false, `${CYL} 408`),
191
358
  labelSize: v(10, `${CYL} 416`),
359
+ labelPadding: CYTOSCAPE_LABEL_PADDING,
360
+ labelLineHeight: CYTOSCAPE_LABEL_LINE_HEIGHT,
361
+ bendCurve: CYTOSCAPE_BEND_CURVE,
192
362
  },
193
363
  graph: { background: v("#ffffff", `${CYL} 667`) },
194
364
  derived: [],
@@ -197,6 +367,22 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
197
367
  tool: "cytoscape-js",
198
368
  version: "cytoscape.js 3.34.3",
199
369
  units: "px",
370
+ roundedCornerRadius: cornerCap(),
371
+ arrowhead: {
372
+ // getArrowWidth, and the triangle's points at +-0.15, -0.3 of it
373
+ length: (size, width) => 0.3 * Math.max((width * 13.37) ** 0.9, 29) * size,
374
+ aspect: 1,
375
+ // a tee is 0.1 of the arrow width deep, the triangle 0.3 long; triangle-tee reaches back to its bar
376
+ // at 0.5, circle-triangle to 0.6 and triangle-cross to its cross line at 0.4 plus the line's width
377
+ shapes: {
378
+ tee: { length: 1 / 3, aspect: 3 },
379
+ "other:triangle-tee": { length: 5 / 3, aspect: 0.6 },
380
+ "other:triangle-cross": { length: 1.5, aspect: 0.66 },
381
+ "other:circle-triangle": { length: 2, aspect: 0.5 },
382
+ "other:chevron": { length: 2 / 3, aspect: 1.5 },
383
+ },
384
+ source: `${CYJS} 23497 (getArrowWidth), 22714-22716 (triangle), 22813-22814 (tee), 22627 (arrowShapeWidth)`,
385
+ },
200
386
  node: {
201
387
  fill: v("#999999", `${CYJS} 18536`),
202
388
  fillOpacity: v(1, `${CYJS} 18538`),
@@ -206,17 +392,42 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
206
392
  borderColor: v("#000000", `${CYJS} 18555`),
207
393
  borderWidth: v(0, `${CYJS} 18557`),
208
394
  borderStyle: v("solid", `${CYJS} 18558`),
395
+ borderPosition: v("center", `${CYJS} 18563`),
396
+ outerBorderColor: v("#999999", `${CYJS} 18564`),
397
+ // the underlay and the overlay draw nothing until an opacity is set; then these
398
+ underlayColor: v("#000000", `${CYJS} 18524`),
399
+ underlayPadding: v(10, `${CYJS} 18525`),
400
+ underlayShape: v("round-rectangle", `${CYJS} 18526`),
401
+ overlayColor: v("#000000", `${CYJS} 18519`),
402
+ overlayPadding: v(10, `${CYJS} 18520`),
403
+ overlayShape: v("round-rectangle", `${CYJS} 18521`),
209
404
  opacity: v(1, `${CYJS} 18503`),
210
405
  labelColor: v("#000000", `${CYJS} 18474`),
211
406
  labelSize: v(16, `${CYJS} 18496`),
212
407
  labelFont: v("Helvetica Neue, Helvetica, sans-serif", `${CYJS} 18493`),
213
408
  labelWeight: v("normal", `${CYJS} 18495`),
214
409
  labelPosition: v("top", `${CYJS} 18470-18471`),
410
+ // text-wrap: wrap measures `subline + word + wordSeparator` against text-max-width; ponytail: a
411
+ // line's last word has no separator there, where graphty counts a space after it too
412
+ labelWrapTrailingSpace: v(true, `${CYJS} 25218`),
215
413
  },
216
414
  edge: {
217
415
  color: v("#999999", `${CYJS} 18639`),
218
416
  sourceArrowColor: v("#999999", `${CYJS} 18639`),
219
417
  targetArrowColor: v("#999999", `${CYJS} 18639`),
418
+ outlineColor: v("#000000", `${CYJS} 18644`),
419
+ underlayColor: v("#000000", `${CYJS} 18524`),
420
+ underlayPadding: v(10, `${CYJS} 18525`),
421
+ overlayColor: v("#000000", `${CYJS} 18519`),
422
+ overlayPadding: v(10, `${CYJS} 18520`),
423
+ gradientKind: v("none", `${CYJS} 18640 (line-fill solid)`),
424
+ midSourceArrowColor: v("#999999", `${CYJS} 18639`),
425
+ midTargetArrowColor: v("#999999", `${CYJS} 18639`),
426
+ // an edge's label is centered on the line's middle (recalculateEdgeLabelProjections)
427
+ labelPosition: v("center", `${CYJS} 24942`),
428
+ // a source or target label is centered on the line where it leaves its node, unless offset
429
+ sourceLabelOffset: v(0, `${CYJS} 18511, 18515`),
430
+ targetLabelOffset: v(0, `${CYJS} 18511, 18515`),
220
431
  width: v(3, `${CYJS} 18711`),
221
432
  lineStyle: v("solid", `${CYJS} 18638`),
222
433
  opacity: v(1, `${CYJS} 18503`),
@@ -224,28 +435,56 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
224
435
  targetArrow: v("none", `${CYJS} 18671`),
225
436
  arrowSize: v(1, `${CYJS} 18660`),
226
437
  curved: v(false, `${CYJS} 18658`),
438
+ // control-point-step-size 40: a quadratic's middle is half as far out as its control point
439
+ fanSpacing: v(20, `${CYJS} 18647`),
227
440
  labelColor: v("#000000", `${CYJS} 18474`),
228
441
  labelSize: v(16, `${CYJS} 18496`),
229
442
  labelFont: v("Helvetica Neue, Helvetica, sans-serif", `${CYJS} 18493`),
230
443
  labelWeight: v("normal", `${CYJS} 18495`),
231
444
  },
232
- graph: {},
445
+ graph: {
446
+ // the canvas is cleared to transparent, so the page's default white shows through
447
+ background: v("#ffffff", `${CYJS} 31537 (clearCanvas: clearRect)`),
448
+ },
233
449
  derived: [],
234
450
  },
235
451
  {
236
452
  tool: "graphviz",
237
453
  version: "graphviz main (16.1.0)",
238
454
  units: "px",
455
+ roundedCornerRadius: cornerCap("graphviz"),
456
+ arrowhead: {
457
+ // ARROW_LENGTH 10 and the normal arrow's half width 0.35 of its length
458
+ length: (size) => 10 * size,
459
+ aspect: 0.7,
460
+ // each arrow type's length factor and the half width its arrow_type_* function draws
461
+ shapes: {
462
+ tee: { length: 0.2, aspect: 5 },
463
+ square: { length: 0.8, aspect: 1 },
464
+ diamond: { length: 1.2, aspect: 2 / 3 },
465
+ "diamond-open": { length: 1.2, aspect: 2 / 3 },
466
+ circle: { length: 0.8, aspect: 1 },
467
+ "circle-open": { length: 0.8, aspect: 1 },
468
+ crow: { length: 1, aspect: 0.9 },
469
+ vee: { length: 1, aspect: 0.9 },
470
+ // the arc of curve and icurve, a half circle of radius half the arrow's length across its
471
+ // stem (the stem is the line, carried on to the tip)
472
+ "other:curve": { length: 0.5, aspect: 2 },
473
+ "other:inv-curve": { length: 0.5, aspect: 2 },
474
+ },
475
+ source: "graphviz lib/common/arrows.c (ARROW_LENGTH 10, Arrowtypes lenfact, arrow_type_normal 0.35, arrow_type_crow 0.45, arrow_type_tee, arrow_type_box 0.4, arrow_type_diamond 1/3, arrow_type_dot, arrow_type_curve)",
476
+ },
239
477
  node: {
240
478
  fillOpacity: v(0, `${GV}/style/ (default "", not filled)`),
241
479
  borderColor: v("#000000", `${GV}/color/`),
242
480
  borderWidth: v(1, `${GV}/penwidth/; lib/common/const.h line 77`),
481
+ borderPosition: v("center", `${MEASURED}dot-synth-nodes), Graphviz strokes the node's own outline`),
243
482
  shape: v("ellipse", `${GV}/shape/; lib/common/const.h line 76`),
244
483
  width: v(54, `${GV}/width/ (0.75 inch); lib/common/const.h line 72`),
245
484
  height: v(36, `${GV}/height/ (0.5 inch); lib/common/const.h line 73`),
246
485
  labelColor: v("#000000", `${GV}/fontcolor/`),
247
486
  labelSize: v(14, `${GV}/fontsize/; lib/common/const.h line 61`),
248
- labelFont: v("Times-Roman", `${GV}/fontname/; lib/common/const.h line 67`),
487
+ labelFont: v("Times, serif", `${GV}/fontname/ (Times-Roman); lib/common/const.h line 67`),
249
488
  labelPosition: v("center", `${GV}/labelloc/`),
250
489
  },
251
490
  edge: {
@@ -257,9 +496,14 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
257
496
  arrowSize: v(1, `${GV}/arrowsize/`),
258
497
  labelColor: v("#000000", `${GV}/fontcolor/`),
259
498
  labelSize: v(14, `${GV}/fontsize/`),
260
- labelFont: v("Times-Roman", `${GV}/fontname/`),
499
+ labelFont: v("Times, serif", `${GV}/fontname/ (Times-Roman)`),
500
+ },
501
+ graph: {
502
+ background: v(
503
+ "#ffffff",
504
+ `${GV}/bgcolor/ (default unset); lib/common/emit.c emit_background (an unset bgcolor paints the page white)`,
505
+ ),
261
506
  },
262
- graph: {},
263
507
  derived: [
264
508
  { kind: "labelFromId", source: String.raw`${GV}/label/ (default \N, the node name)` },
265
509
  {
@@ -273,14 +517,17 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
273
517
  tool: "yed",
274
518
  version: "yEd / yFiles for Java 2.19",
275
519
  units: "px",
520
+ roundedCornerRadius: cornerCap("yed"),
521
+ arrowhead: DRAWIO_ARROWHEAD,
276
522
  node: {
277
523
  fill: v("#ffcc00", `${YED_QA}; ${YED_CORPUS} of y:Fill color`),
278
524
  shape: v("rectangle", "yFiles for Java 2.19 ShapeNodeRealizer API docs"),
279
525
  borderColor: v("#000000", `${YED_CORPUS} of y:BorderStyle`),
280
526
  borderWidth: v(1, `${YED_CORPUS} of y:BorderStyle`),
281
527
  borderStyle: v("solid", `${YED_CORPUS} of y:BorderStyle`),
528
+ borderPosition: v("center", `${MEASURED}graphml-*, draw.io 32.4.1 standing in for yEd)`),
282
529
  labelColor: v("#000000", `${YED_CORPUS} of y:NodeLabel`),
283
- labelFont: v("Dialog", `${YED_CORPUS} of y:NodeLabel`),
530
+ labelFont: v("DejaVu Sans, sans-serif", `${YED_CORPUS} of y:NodeLabel (Dialog's face)`),
284
531
  labelSize: v(12, `${YED_CORPUS} of y:NodeLabel`),
285
532
  labelWeight: v("normal", `${YED_CORPUS} of y:NodeLabel`),
286
533
  labelPosition: v("center", `${YED_CORPUS} of y:NodeLabel`),
@@ -292,24 +539,39 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
292
539
  sourceArrow: v("none", `${YED_EDGE} (defaults to Arrow.NONE)`),
293
540
  targetArrow: v("none", `${YED_EDGE} (defaults to Arrow.NONE)`),
294
541
  labelColor: v("#000000", `${YED_CORPUS} of y:EdgeLabel`),
295
- labelFont: v("Dialog", `${YED_CORPUS} of y:EdgeLabel`),
542
+ labelFont: v("DejaVu Sans, sans-serif", `${YED_CORPUS} of y:EdgeLabel (Dialog's face)`),
296
543
  labelSize: v(12, `${YED_CORPUS} of y:EdgeLabel`),
297
544
  },
298
- graph: {},
545
+ graph: {
546
+ background: v(
547
+ "#ffffff",
548
+ `${YED_BG} (setColor: "By default the background color is white"); yEd manual, Preferences, Background tab`,
549
+ ),
550
+ },
299
551
  derived: [],
300
552
  },
301
553
  {
302
554
  tool: "yfiles3",
303
555
  version: "yFiles for HTML (API docs retrieved 2026-10-11)",
304
556
  units: "px",
557
+ roundedCornerRadius: cornerCap("yfiles3"),
558
+ arrowhead: DRAWIO_ARROWHEAD,
305
559
  node: {
306
560
  fill: v("#ffffff", `${Y3} ShapeNodeStyle fill`),
307
561
  borderColor: v("#000000", `${Y3} ShapeNodeStyle stroke`),
308
562
  borderWidth: v(1, `${Y3} ShapeNodeStyle stroke`),
563
+ borderPosition: v(
564
+ "center",
565
+ `${MEASURED}graphml-yfiles-html-*, draw.io 32.4.1 standing in for yFiles)`,
566
+ ),
309
567
  shape: v("rectangle", `${Y3} ShapeNodeStyle shape`),
310
568
  labelColor: v("#000000", `${Y3} LabelStyle textFill`),
311
569
  labelFont: v("Arial", `${Y3} LabelStyle font`),
312
570
  labelSize: v(12, `${Y3} LabelStyle font`),
571
+ labelPosition: v(
572
+ "center",
573
+ `${Y3} IGraph.nodeDefaults labels layoutParameter (InteriorLabelModel center)`,
574
+ ),
313
575
  },
314
576
  edge: {
315
577
  color: v("#000000", `${Y3} PolylineEdgeStyle stroke`),
@@ -320,32 +582,58 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
320
582
  labelFont: v("Arial", `${Y3} LabelStyle font`),
321
583
  labelSize: v(12, `${Y3} LabelStyle font`),
322
584
  },
323
- graph: {},
585
+ graph: {
586
+ background: v("#ffffff", `${Y3} GraphComponent (a transparent canvas over the page's white)`),
587
+ },
324
588
  derived: [],
325
589
  },
326
590
  {
327
591
  tool: "gephi",
328
592
  version: "gephi 0.11.4-SNAPSHOT",
329
593
  units: "relative",
594
+ roundedCornerRadius: cornerCap("gephi"),
595
+ arrowhead: {
596
+ length: (size, width) => 3.25 * width * size,
597
+ aspect: 0.9,
598
+ source: `${MEASURED}gexf-synth-nx-viz, widths 1 to 4), Gephi Toolkit 0.11.3`,
599
+ },
330
600
  node: {
331
601
  fill: v("#000000", "gephi/graphstore a4c790b2343e NodeImpl.java line 322"),
332
- width: v(10, `${GEPHI} AbstractProcessor.java lines 195-198`),
333
- height: v(10, `${GEPHI} AbstractProcessor.java lines 195-198`),
602
+ width: v(20, `${GEPHI} AbstractProcessor.java lines 195-198 (size 10 is a radius)`),
603
+ height: v(20, `${GEPHI} AbstractProcessor.java lines 195-198 (size 10 is a radius)`),
334
604
  shape: v("ellipse", "GEXF 1.3 viz shape default disc; Preview NodeRenderer"),
605
+ borderPosition: v(
606
+ "inside",
607
+ `${MEASURED}gexf-specimen-node-fills-borders-p3), Gephi Toolkit 0.11.3: the border is stroked on a circle of radius size - border / 2`,
608
+ ),
335
609
  labelPosition: v(
336
610
  "center",
337
611
  `${GEPHI} NodeLabelRenderer.java (a label is drawn centered on its node)`,
338
612
  ),
613
+ // a node drawn under another still shows its label (gexf-cns-wos n5 under n109: "Borner, K")
614
+ labelOnTop: v(
615
+ true,
616
+ `${GEPHI} PreviewController (the node label items are drawn after every node); Gephi Toolkit 0.11.3 SVG export: g#node-labels after g#nodes`,
617
+ ),
339
618
  },
340
619
  edge: {
341
620
  sourceArrow: v("none", `${GEPHI} DefaultPreset.java line 62`),
342
621
  targetArrow: v("none", `${GEPHI} DefaultPreset.java line 62`),
622
+ curved: v(true, `${GEPHI} DefaultPreset.java (EDGE_CURVED true); Gephi Toolkit 0.11.3 SVG export`),
623
+ fanned: v(
624
+ false,
625
+ `${GEPHI} EdgeRenderer.java (each curved edge bows left of its own direction, siblings ignored); Gephi Toolkit 0.11.3 SVG export`,
626
+ ),
627
+ arcRadius: v(
628
+ 1 / 1.2,
629
+ `${GEPHI} EdgeRenderer.java (CurvedEdgeRenderer: an arc through both node centers of radius length / ARC_CURVENESS, default 1.2)`,
630
+ ),
343
631
  },
344
632
  graph: { background: v("#ffffff", `${GEPHI} VizConfig.java line 111`) },
345
633
  derived: [
346
634
  {
347
- kind: "colorFromSourceNode",
348
- source: `${GEPHI} VizConfig.java line 119 (EdgeColorMode.SOURCE)`,
635
+ kind: "colorFromEndNodes",
636
+ source: `${GEPHI} DefaultPreset.java (EDGE_COLOR EdgeColor.Mode.MIXED); Gephi Toolkit 0.11.3 SVG export`,
349
637
  },
350
638
  {
351
639
  kind: "widthFromWeight",
@@ -362,26 +650,62 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
362
650
  tool: "vis-network",
363
651
  version: "vis-network 10.1.2",
364
652
  units: "px",
653
+ roundedCornerRadius: cornerCap("vis-network"),
654
+ arrowhead: {
655
+ // EdgeBase.getArrowData: 15 * scaleFactor + 3 * width; ArrowHead's points at -1, +-0.3
656
+ length: (size, width) => 15 * size + 3 * width,
657
+ aspect: 0.6,
658
+ // its bar is 0.15 of the arrow's length deep and as wide as the arrow is long; its box is 0.6 of the
659
+ // length square, its circle 0.8 of the length across, and its curve and inv_curve arcs have a
660
+ // radius of 0.4 of it
661
+ shapes: {
662
+ tee: { length: 0.15, aspect: 1 / 0.15 },
663
+ square: { length: 0.6, aspect: 1 },
664
+ circle: { length: 0.8, aspect: 1 },
665
+ "other:curve": { length: 0.4, aspect: 2 },
666
+ "other:inv-curve": { length: 0.4, aspect: 2 },
667
+ },
668
+ source: `${VIS} EdgeBase.getArrowData, ArrowHead, Bar, Box, Circle, Curve, InvertedCurve (measured on json-vis-unix, json-vis-world, json-vis-synth)`,
669
+ },
670
+ nodeBorderOnScreen: v(
671
+ true,
672
+ `${VIS9} NodeBase.initContextForDraw and performStroke: borderWidth / view.scale, at most the node's width`,
673
+ ),
365
674
  node: {
366
675
  fill: v("#97c2fc", `${VIS} lines 32986-33110`),
367
676
  borderColor: v("#2b7ce9", `${VIS} lines 32986-33110`),
368
677
  borderWidth: v(1, `${VIS} lines 32986-33110`),
678
+ // a canvas stroke along the node's own outline, half in and half out (NodeBase.performStroke)
679
+ borderPosition: v("center", `${VIS9} NodeBase.performStroke: ctx.stroke() on the shape's own path`),
369
680
  shape: v("ellipse", `${VIS} lines 32986-33110`),
370
681
  labelColor: v("#343434", `${VIS} lines 32986-33110`),
371
682
  labelSize: v(14, `${VIS} lines 32986-33110`),
372
683
  labelFont: v("arial", `${VIS} lines 32986-33110`),
373
684
  labelPosition: v("center", `${VIS} lines 32986-33110`),
685
+ // Label.draw returns before drawing when the font is under drawThreshold - 1 px on screen
686
+ labelMinScreenSize: v(4, `${VIS9} Label.draw, nodes scaling.label.drawThreshold 5`),
374
687
  },
375
688
  edge: {
376
689
  width: v(1, `${VIS} lines 25160-25290`),
690
+ outlineColor: v("#6f6f6f", `${VIS} lines 25160-25290 (background.color)`),
377
691
  lineStyle: v("solid", `${VIS} lines 25160-25290 (dashes false)`),
378
692
  sourceArrow: v("none", `${VIS} lines 25160-25290`),
379
693
  targetArrow: v("none", `${VIS} lines 25160-25290`),
380
694
  labelColor: v("#343434", `${VIS} lines 25160-25290`),
381
695
  labelSize: v(14, `${VIS} lines 25160-25290`),
382
696
  labelFont: v("arial", `${VIS} lines 25160-25290`),
697
+ labelMinScreenSize: v(4, `${VIS9} Label.draw, edges scaling.label.drawThreshold 5`),
698
+ // an edge label is drawn on the line, its letters stroked white 2 px wide (font.strokeWidth 2)
699
+ labelPosition: v("center", `${VIS9} Edge.drawLabel (the label at the line's middle point)`),
700
+ labelOutlineColor: v("#ffffff", `${VIS} lines 25160-25290 (font.strokeColor)`),
701
+ labelOutlineWidth: v(2, `${VIS} lines 25160-25290 (font.strokeWidth)`),
702
+ },
703
+ graph: {
704
+ background: v(
705
+ "#ffffff",
706
+ "vis-network 9.1.9 vis-network.esm.js line 32378 (clearRect: the page's white shows through)",
707
+ ),
383
708
  },
384
- graph: {},
385
709
  derived: [
386
710
  { kind: "labelFromColumn", column: "label", source: `${VIS} lines 32986-33110` },
387
711
  { kind: "colorFromSourceNode", source: `${VIS} lines 25160-25290 (color.inherit "from")` },
@@ -389,50 +713,107 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
389
713
  },
390
714
  {
391
715
  tool: "sigma",
392
- version: "sigma 3.0.3",
716
+ version: "sigma 4.0.1",
393
717
  units: "relative",
718
+ roundedCornerRadius: cornerCap("sigma"),
394
719
  node: {
395
- fill: v("#999999", `${SIGMA}/settings.ts lines 119-126`),
720
+ fill: v("#666666", `${SIGMA4} DEFAULT_NODE_DISPLAY_DATA (color "#666")`),
396
721
  shape: v("ellipse", `${SIGMA}/settings.ts lines 119-126`),
397
- width: v(2, `${SIGMA}/sigma.ts line 76`),
398
- height: v(2, `${SIGMA}/sigma.ts line 76`),
722
+ width: v(20, `${SIGMA4} DEFAULT_NODE_DISPLAY_DATA (size 10 is a radius)`),
723
+ height: v(20, `${SIGMA4} DEFAULT_NODE_DISPLAY_DATA (size 10 is a radius)`),
399
724
  labelColor: v("#000000", `${SIGMA}/settings.ts lines 119-126`),
400
725
  labelFont: v("Arial", `${SIGMA}/settings.ts lines 119-126`),
401
- labelSize: v(14, `${SIGMA}/settings.ts lines 119-126`),
726
+ // sigma 4 sets every node's labelSize to 12 before its styles run; the 14 in sigma.esm.js
727
+ // (`defaultLabelSize`) is only reached by a node whose styles cleared it.
728
+ labelSize: v(12, `${SIGMA4} DEFAULT_NODE_DISPLAY_DATA (labelSize 12)`),
402
729
  labelWeight: v("normal", `${SIGMA}/settings.ts lines 119-126`),
730
+ labelPosition: v("right", `${SIGMA4} DEFAULT_NODE_DISPLAY_DATA (labelPosition "right")`),
731
+ // sigma keeps the largest node's label per 100 px cell of its first framing; it avoids no overlap
732
+ labelGridCellSize: v(
733
+ 100,
734
+ `${SIGMA4} LabelGrid.getLabelsToDisplay (labelDensity 1, labelGridCellSize 100)`,
735
+ ),
736
+ labelOnTop: v(true, `${SIGMA4} labels are drawn by their own program after every node and edge`),
737
+ // a node's label is drawn only while its node's rendered size (a radius) is 6 px or more
738
+ labelMinNodeScreenSize: v(12, `${SIGMA4} renderLabels (labelRenderedSizeThreshold 6, a radius)`),
403
739
  },
404
740
  edge: {
405
741
  color: v("#cccccc", `${SIGMA}/settings.ts lines 119-126`),
406
- width: v(0.5, `${SIGMA}/sigma.ts line 100`),
742
+ // an edge of sigma's default size 1, drawn half as wide as its size (readSigmaRow)
743
+ width: v(0.5, `${SIGMA4} DEFAULT_EDGE_DISPLAY_DATA (size 1)`),
744
+ // an edge label (renderEdgeLabels) is drawn at its line's middle, 12 px, in #666
745
+ labelColor: v("#666666", `${SIGMA4} DEFAULT_EDGE_DISPLAY_DATA (labelColor "#666")`),
746
+ labelSize: v(12, "sigma 4.0.1 dist/sigma.esm.js line 2816 (DEFAULT_EDGE_LABEL_SIZE)"),
747
+ labelPosition: v("center", "sigma 4.0.1 dist/sigma.esm.js line 3647 (the middle of its two ends)"),
407
748
  sourceArrow: v("none", `${SIGMA}/settings.ts lines 119-126 (type line)`),
408
749
  targetArrow: v("none", `${SIGMA}/settings.ts lines 119-126 (type line)`),
750
+ // no edge is drawn thinner on screen, whatever its size (the shader's max(size, minEdgeThickness 1.7),
751
+ // drawn half as wide as a node of that size is in radius, as readSigmaRow halves a size)
752
+ minScreenWidth: v(
753
+ 0.85,
754
+ `${SIGMA4} edge program (pixelsThickness = max(size, minEdgeThickness 1.7))`,
755
+ ),
756
+ },
757
+ graph: {
758
+ background: v(
759
+ "#ffffff",
760
+ "sigma 4.0.1 dist/sigma.esm.js line 5202 (gl.clear to transparent: the page's white shows through)",
761
+ ),
409
762
  },
410
- graph: {},
411
763
  derived: [{ kind: "labelFromColumn", column: "label", source: `${SIGMA}/settings.ts lines 119-126` }],
412
764
  },
413
765
  {
414
766
  tool: "pajek",
415
767
  version: "Pajek 6.02",
416
- units: "relative",
768
+ // PostScript points, the unit of Pajek's EPS and SVG export (formats/pajek/styles.ts)
769
+ units: "px",
770
+ roundedCornerRadius: cornerCap("pajek"),
771
+ // a line's `s` (arrowSize) scales Pajek's arrowhead whatever its width: 6 x s long (tip to its back
772
+ // corners) and 5 x s wide
773
+ arrowhead: {
774
+ length: (size) => 6 * size,
775
+ aspect: 5 / 6,
776
+ source: `${PAJEK_SVG}specimen-arrows: s 0.5, 1, 2, 3 and 5 draw arrowheads 3, 6, 12, 18 and 30 long, 2.5, 5, 10, 15 and 25 wide; football: s 4 and 9)`,
777
+ },
417
778
  node: {
418
779
  shape: v("ellipse", `${PAJEK} p. 85`),
419
780
  opacity: v(1, `${PAJEK} p. 87`),
420
- borderColor: v("#000000", `${PAJEK}, vertex parameter bc (default Black)`),
421
- borderWidth: v(0.2, `${PAJEK}, vertex parameter bw (default 1, against the default vertex size 5)`),
422
- labelColor: v("#000000", `${PAJEK_SHAPES} (lc Black)`),
423
- labelPosition: v("center", `${PAJEK_SHAPES} (lr 0); ${PAJEK} p. 85 (radius 0 is centered)`),
781
+ // Pajek 6.02's own defaults, as its SVG export draws a vertex and label the file gives no
782
+ // parameters for (the manual names these settings but not their values)
783
+ borderColor: v("#660000", `${PAJEK_SVG}football, kdorola: every vertex without bc)`),
784
+ borderWidth: v(0.5, `${PAJEK_SVG}football, kdorola: every vertex without bw)`),
785
+ // an SVG stroke along the vertex's own outline, half in and half out
786
+ borderPosition: v(
787
+ "center",
788
+ `${PAJEK_SVG}specimen-node-fills-borders-p3: bw 8 draws a vertex of size 36 44 across)`,
789
+ ),
790
+ width: v(20, `${PAJEK_SVG}football, iliad: a vertex without s_size, x_fact or y_fact)`),
791
+ height: v(20, `${PAJEK_SVG}football, iliad: a vertex without s_size, x_fact or y_fact)`),
792
+ fill: v("#ffd9bc", `${PAJEK_SVG}football, kdorola: every vertex without ic)`),
793
+ labelColor: v("#ad0000", `${PAJEK_SVG}football, 1crn: every label without lc)`),
794
+ labelSize: v(15, `${PAJEK_SVG}football, 1crn: every label without fos)`),
795
+ labelFont: v("Arial", `${PAJEK_SVG}football, 1crn: every label without font)`),
796
+ labelWeight: v("bold", `${PAJEK_SVG}football, 1crn: every label is bold)`),
797
+ // the text starts 20 from the center at lphi 285 and runs to the right, its baseline through
798
+ // that point: its left edge's middle at 20 cos 285 across and 20 sin 285 less 0.3465 of its
799
+ // size down (formats/pajek/styles.ts readLabelPosition)
800
+ labelPosition: v("center", `${PAJEK_SVG}football, 1crn, specimen-labels: lr 20 lphi 285)`),
801
+ labelOffsetX: v(5.176380902, `${PAJEK_SVG}football, 1crn, specimen-labels: lr 20 lphi 285)`),
802
+ labelOffsetY: v(14.121016526, `${PAJEK_SVG}football, 1crn, specimen-labels: lr 20 lphi 285)`),
803
+ labelShiftX: v(0.5, `${PAJEK_SVG}football, 1crn, specimen-labels: text-anchor start)`),
424
804
  },
425
805
  edge: {
426
- color: v("#000000", `${PAJEK} p. 90`),
427
- // No line width: Pajek's w is read as the file has it, not as a factor of the vertex size as bw is,
428
- // so a default of 1 here, with no vertex size in the file, became the length every other length
429
- // of the drawing was scaled by, and a border 0.2 wide was drawn far too thin to see.
806
+ // an edge (undirected) is drawn twice the width of an arc; the arc rule below sets an arc's
807
+ width: v(2, `${PAJEK_SVG}1crn, lin-rel4, synth-vertices: edges without w; c: w 0.5 drawn 1)`),
808
+ color: v("#007091", `${PAJEK_SVG}1crn, lin-rel4, c: edges without c)`),
430
809
  lineStyle: v("solid", `${PAJEK} p. 90`),
431
810
  opacity: v(1, `${PAJEK} p. 87`),
432
811
  sourceArrow: v("none", `${PAJEK} p. 91`),
433
812
  targetArrow: v("none", `${PAJEK} p. 91 (edges have none)`),
434
813
  },
435
- graph: {},
814
+ graph: {
815
+ background: v("#ffffff", `${PAJEK}, Draw window (assumed: a white background)`),
816
+ },
436
817
  derived: [
437
818
  { kind: "labelFromColumn", column: "label", source: `${PAJEK}, vertex labels (drawn by default)` },
438
819
  { kind: "targetArrowOnDirected", arrow: "triangle", source: `${PAJEK} p. 91 (arcs)` },
@@ -442,6 +823,13 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
442
823
  tool: "ogdf",
443
824
  version: "ogdf master 1a40505ac006",
444
825
  units: "px",
826
+ roundedCornerRadius: cornerCap("ogdf"),
827
+ // OGDF's arrowhead is three times its line's width long and half as wide as it is long
828
+ arrowhead: {
829
+ length: (size, width) => 3 * width * size,
830
+ aspect: 0.5,
831
+ source: `${MEASURED}gml-specimen-arrows-p5.svg: lineWidth 1, 1.5 and 3 draw arrowheads 3, 4.5 and 9 long, 1.5, 2.25 and 4.5 wide)`,
832
+ },
445
833
  node: {
446
834
  fill: v("#ffffff", `${OGDF} LayoutStandards.cpp lines 38-45`),
447
835
  shape: v("rectangle", `${OGDF} LayoutStandards.cpp lines 38-45`),
@@ -450,19 +838,29 @@ export const TOOL_DEFAULTS: ReadonlyMap<StyleTool, ToolDefaults> = new Map<Style
450
838
  borderColor: v("#000000", `${OGDF} LayoutStandards.cpp lines 38-45`),
451
839
  borderWidth: v(1, `${OGDF} LayoutStandards.cpp lines 38-45`),
452
840
  borderStyle: v("solid", `${OGDF} LayoutStandards.cpp lines 38-45`),
841
+ // GraphIO::drawSVG's default SVGSettings: every label in one font, centered on its node
842
+ labelColor: v("#000000", `${OGDF_SVG}fill #000000)`),
843
+ labelFont: v("Arial", `${OGDF_SVG}font-family Arial)`),
844
+ labelSize: v(10, `${OGDF_SVG}font-size 10)`),
845
+ labelPosition: v("center", `${OGDF_SVG}text-anchor middle at the node's center)`),
453
846
  },
454
847
  edge: {
455
848
  color: v("#000000", `${OGDF} LayoutStandards.cpp lines 38-45`),
456
849
  width: v(1, `${OGDF} LayoutStandards.cpp lines 38-45`),
457
850
  lineStyle: v("solid", `${OGDF} LayoutStandards.cpp lines 38-45`),
851
+ labelColor: v("#000000", `${OGDF_SVG}fill #000000)`),
852
+ labelFont: v("Arial", `${OGDF_SVG}font-family Arial)`),
853
+ labelSize: v(10, `${OGDF_SVG}font-size 10)`),
854
+ labelPosition: v("center", `${OGDF_SVG}text-anchor middle on the line, dominant-baseline middle)`),
458
855
  },
459
- graph: {},
856
+ graph: { background: v("#ffffff", `${OGDF_SVG}no background: the page's white shows through)`) },
460
857
  derived: [],
461
858
  },
462
859
  {
463
860
  tool: "networkx",
464
861
  version: "networkx 3.7 (main 6da4704cbf32)",
465
862
  units: "px",
863
+ roundedCornerRadius: cornerCap("networkx"),
466
864
  node: {
467
865
  fill: v("#1f78b4", `${NX} 1378`),
468
866
  fillOpacity: v(1, `${NX} 549`),