@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.
- package/dist/chunks/{approximations-wWjCRzKj.js → approximations-Bzn3L-je.js} +2 -2
- package/dist/chunks/{approximations-wWjCRzKj.js.map → approximations-Bzn3L-je.js.map} +1 -1
- package/dist/chunks/bends-BGXjv_U4.js +129 -0
- package/dist/chunks/bends-BGXjv_U4.js.map +1 -0
- package/dist/chunks/{block-DiGq58c3.js → block-iptrlMBb.js} +947 -134
- package/dist/chunks/block-iptrlMBb.js.map +1 -0
- package/dist/chunks/choose-CczZJaX_.js +717 -0
- package/dist/chunks/choose-CczZJaX_.js.map +1 -0
- package/dist/chunks/codes-BE2xir2k.js +157 -0
- package/dist/chunks/codes-BE2xir2k.js.map +1 -0
- package/dist/chunks/{constants-BKwqelYD.js → constants-CKkYLPtt.js} +2 -2
- package/dist/chunks/{constants-BKwqelYD.js.map → constants-CKkYLPtt.js.map} +1 -1
- package/dist/chunks/context-C3p0RQxR.js +664 -0
- package/dist/chunks/context-C3p0RQxR.js.map +1 -0
- package/dist/chunks/{convert-BcQ8_jMo.js → convert-Ct2zelbQ.js} +7 -2
- package/dist/chunks/convert-Ct2zelbQ.js.map +1 -0
- package/dist/chunks/credentials-DXHx7nwR.js +349 -0
- package/dist/chunks/credentials-DXHx7nwR.js.map +1 -0
- package/dist/chunks/cx-export-Bt6NoqTQ.js +259 -0
- package/dist/chunks/cx-export-Bt6NoqTQ.js.map +1 -0
- package/dist/chunks/descriptor-B28U25x4.js +60 -0
- package/dist/chunks/descriptor-B28U25x4.js.map +1 -0
- package/dist/chunks/descriptor-C-YDhtsn.js +48 -0
- package/dist/chunks/descriptor-C-YDhtsn.js.map +1 -0
- package/dist/chunks/descriptor-DLA5kINx.js +142 -0
- package/dist/chunks/descriptor-DLA5kINx.js.map +1 -0
- package/dist/chunks/{emit-CwU8cUmG.js → emit-BwHQkZle.js} +1690 -103
- package/dist/chunks/emit-BwHQkZle.js.map +1 -0
- package/dist/chunks/{escape-CgzxiYPg.js → escape-CuCIzNMB.js} +12 -12
- package/dist/chunks/{escape-CgzxiYPg.js.map → escape-CuCIzNMB.js.map} +1 -1
- package/dist/chunks/{export-BvqAXCKh.js → export-Cha4dRFz.js} +48 -1780
- package/dist/chunks/export-Cha4dRFz.js.map +1 -0
- package/dist/chunks/{exporter--Mk9gXCJ.js → exporter-BP6otMO6.js} +6 -4
- package/dist/chunks/{exporter--Mk9gXCJ.js.map → exporter-BP6otMO6.js.map} +1 -1
- package/dist/chunks/{exporter-CrDWIyiq.js → exporter-D2CETOMK.js} +1222 -154
- package/dist/chunks/exporter-D2CETOMK.js.map +1 -0
- package/dist/chunks/{exporter-DndFlGSa.js → exporter-D9yMtocA.js} +7 -6
- package/dist/chunks/{exporter-DndFlGSa.js.map → exporter-D9yMtocA.js.map} +1 -1
- package/dist/chunks/exporter-_jrBTnos.js +1009 -0
- package/dist/chunks/exporter-_jrBTnos.js.map +1 -0
- package/dist/chunks/{exporter-CJgfhF-l.js → exporter-nDfxIK5D.js} +9 -7
- package/dist/chunks/{exporter-CJgfhF-l.js.map → exporter-nDfxIK5D.js.map} +1 -1
- package/dist/chunks/format-BXiAb-1h.js +408 -0
- package/dist/chunks/format-BXiAb-1h.js.map +1 -0
- package/dist/chunks/{generic-Dq1ntt9q.js → generic-ymWCETAJ.js} +387 -31
- package/dist/chunks/generic-ymWCETAJ.js.map +1 -0
- package/dist/chunks/{importer-CMmeMWlC.js → importer-B92x1xY5.js} +15 -263
- package/dist/chunks/importer-B92x1xY5.js.map +1 -0
- package/dist/chunks/{importer-DiZRmOQG.js → importer-CT9mJ1nn.js} +328 -90
- package/dist/chunks/importer-CT9mJ1nn.js.map +1 -0
- package/dist/chunks/{importer-COTK9Tsl.js → importer-DaLTjbds.js} +116 -1099
- package/dist/chunks/importer-DaLTjbds.js.map +1 -0
- package/dist/chunks/{importer-iFYPEKaJ.js → importer-GREKMdIf.js} +28 -16
- package/dist/chunks/importer-GREKMdIf.js.map +1 -0
- package/dist/chunks/{importer-BSvfrX_h.js → importer-PqaaKKnY.js} +23 -1016
- package/dist/chunks/importer-PqaaKKnY.js.map +1 -0
- package/dist/chunks/{importer-yh_aBCU6.js → importer-Vn5QvmmJ.js} +66 -12
- package/dist/chunks/importer-Vn5QvmmJ.js.map +1 -0
- package/dist/chunks/{importer-e6LGpqHB.js → importer-vRq4h3j5.js} +1470 -354
- package/dist/chunks/importer-vRq4h3j5.js.map +1 -0
- package/dist/chunks/input-CAxt_aV-.js +1397 -0
- package/dist/chunks/input-CAxt_aV-.js.map +1 -0
- package/dist/chunks/{json-elements-DJZRZ6jd.js → json-elements-Cq76WjnZ.js} +4 -4
- package/dist/chunks/{json-elements-DJZRZ6jd.js.map → json-elements-Cq76WjnZ.js.map} +1 -1
- package/dist/chunks/{lexicon-CT69Kd87.js → lexicon-Clf4QIyl.js} +299 -77
- package/dist/chunks/lexicon-Clf4QIyl.js.map +1 -0
- package/dist/chunks/{ontology-export-G4MqRdux.js → ontology-export-OMo91mb0.js} +4 -3
- package/dist/chunks/{ontology-export-G4MqRdux.js.map → ontology-export-OMo91mb0.js.map} +1 -1
- package/dist/chunks/{records-CiaWZrFH.js → records-NJiYvekn.js} +2 -2
- package/dist/chunks/{records-CiaWZrFH.js.map → records-NJiYvekn.js.map} +1 -1
- package/dist/chunks/{format-BpQBx8MZ.js → report-CwMfYa9J.js} +70 -127
- package/dist/chunks/report-CwMfYa9J.js.map +1 -0
- package/dist/chunks/round-trip-Zm3_ivgq.js +79 -0
- package/dist/chunks/round-trip-Zm3_ivgq.js.map +1 -0
- package/dist/chunks/sigv4-EokFic1V.js +247 -0
- package/dist/chunks/sigv4-EokFic1V.js.map +1 -0
- package/dist/chunks/{styles-BQnsga7p.js → styles-CCs214_3.js} +1300 -168
- package/dist/chunks/styles-CCs214_3.js.map +1 -0
- package/dist/chunks/styles-Cm62yyQX.js +2812 -0
- package/dist/chunks/styles-Cm62yyQX.js.map +1 -0
- package/dist/chunks/styles-DPQQIig4.js +1928 -0
- package/dist/chunks/styles-DPQQIig4.js.map +1 -0
- package/dist/chunks/styles-yed-UMFdNqze.js +1213 -0
- package/dist/chunks/styles-yed-UMFdNqze.js.map +1 -0
- package/dist/chunks/{text-CzJNFOS9.js → text-ystE2bYi.js} +2 -2
- package/dist/chunks/{text-CzJNFOS9.js.map → text-ystE2bYi.js.map} +1 -1
- package/dist/csv.js +7 -5
- package/dist/csv.js.map +1 -1
- package/dist/cx.js +5 -4
- package/dist/cx.js.map +1 -1
- package/dist/cx2.js +2 -2
- package/dist/cys.js +1 -1
- package/dist/dot.js +5 -4
- package/dist/dot.js.map +1 -1
- package/dist/gexf.js +42 -10
- package/dist/gexf.js.map +1 -1
- package/dist/gml.js +850 -193
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +1189 -220
- package/dist/graph-io.js.map +1 -1
- package/dist/graphml.js +3 -3
- package/dist/json.js +3 -2
- package/dist/neo4j.js +6 -4
- package/dist/neo4j.js.map +1 -1
- package/dist/obo.js +1 -1
- package/dist/pajek.js +1 -1
- package/dist/positions.js +45 -3
- package/dist/positions.js.map +1 -1
- package/dist/sources-cypher.d.ts +1 -0
- package/dist/sources-cypher.js +1351 -0
- package/dist/sources-cypher.js.map +1 -0
- package/dist/sources-ndex.d.ts +1 -0
- package/dist/sources-ndex.js +278 -0
- package/dist/sources-ndex.js.map +1 -0
- package/dist/sources-rest.d.ts +1 -0
- package/dist/sources-rest.js +1377 -0
- package/dist/sources-rest.js.map +1 -0
- package/dist/sources-sparql.d.ts +1 -0
- package/dist/sources-sparql.js +405 -0
- package/dist/sources-sparql.js.map +1 -0
- package/dist/src/common/report.d.ts +6 -3
- package/dist/src/common/report.d.ts.map +1 -1
- package/dist/src/common/report.js +15 -9
- package/dist/src/common/report.js.map +1 -1
- package/dist/src/formats/cx/importer.d.ts.map +1 -1
- package/dist/src/formats/cx/importer.js +5 -1
- package/dist/src/formats/cx/importer.js.map +1 -1
- package/dist/src/formats/cx/styles.d.ts +24 -1
- package/dist/src/formats/cx/styles.d.ts.map +1 -1
- package/dist/src/formats/cx/styles.js +118 -11
- package/dist/src/formats/cx/styles.js.map +1 -1
- package/dist/src/formats/cx2/importer.d.ts.map +1 -1
- package/dist/src/formats/cx2/importer.js +1 -0
- package/dist/src/formats/cx2/importer.js.map +1 -1
- package/dist/src/formats/cx2/styles.d.ts.map +1 -1
- package/dist/src/formats/cx2/styles.js +3 -1
- package/dist/src/formats/cx2/styles.js.map +1 -1
- package/dist/src/formats/cys/importer.d.ts.map +1 -1
- package/dist/src/formats/cys/importer.js +1 -0
- package/dist/src/formats/cys/importer.js.map +1 -1
- package/dist/src/formats/cys/styles.d.ts +2 -0
- package/dist/src/formats/cys/styles.d.ts.map +1 -1
- package/dist/src/formats/cys/styles.js +15 -7
- package/dist/src/formats/cys/styles.js.map +1 -1
- package/dist/src/formats/dot/drawing.d.ts +98 -0
- package/dist/src/formats/dot/drawing.d.ts.map +1 -0
- package/dist/src/formats/dot/drawing.js +734 -0
- package/dist/src/formats/dot/drawing.js.map +1 -0
- package/dist/src/formats/dot/importer.d.ts.map +1 -1
- package/dist/src/formats/dot/importer.js +108 -31
- package/dist/src/formats/dot/importer.js.map +1 -1
- package/dist/src/formats/dot/label-places.d.ts +34 -0
- package/dist/src/formats/dot/label-places.d.ts.map +1 -0
- package/dist/src/formats/dot/label-places.js +179 -0
- package/dist/src/formats/dot/label-places.js.map +1 -0
- package/dist/src/formats/dot/record.d.ts +50 -0
- package/dist/src/formats/dot/record.d.ts.map +1 -0
- package/dist/src/formats/dot/record.js +275 -0
- package/dist/src/formats/dot/record.js.map +1 -0
- package/dist/src/formats/dot/styles.d.ts +62 -2
- package/dist/src/formats/dot/styles.d.ts.map +1 -1
- package/dist/src/formats/dot/styles.js +1457 -120
- package/dist/src/formats/dot/styles.js.map +1 -1
- package/dist/src/formats/gexf/dialog-metrics.d.ts +15 -0
- package/dist/src/formats/gexf/dialog-metrics.d.ts.map +1 -0
- package/dist/src/formats/gexf/dialog-metrics.js +59 -0
- package/dist/src/formats/gexf/dialog-metrics.js.map +1 -0
- package/dist/src/formats/gexf/importer.d.ts +7 -0
- package/dist/src/formats/gexf/importer.d.ts.map +1 -1
- package/dist/src/formats/gexf/importer.js +41 -5
- package/dist/src/formats/gexf/importer.js.map +1 -1
- package/dist/src/formats/gexf/preview.d.ts +77 -0
- package/dist/src/formats/gexf/preview.d.ts.map +1 -0
- package/dist/src/formats/gexf/preview.js +191 -0
- package/dist/src/formats/gexf/preview.js.map +1 -0
- package/dist/src/formats/gexf/schema.d.ts.map +1 -1
- package/dist/src/formats/gexf/schema.js +2 -1
- package/dist/src/formats/gexf/schema.js.map +1 -1
- package/dist/src/formats/gexf/styles.d.ts +60 -16
- package/dist/src/formats/gexf/styles.d.ts.map +1 -1
- package/dist/src/formats/gexf/styles.js +883 -131
- package/dist/src/formats/gexf/styles.js.map +1 -1
- package/dist/src/formats/gml/importer.d.ts +5 -2
- package/dist/src/formats/gml/importer.d.ts.map +1 -1
- package/dist/src/formats/gml/importer.js +258 -71
- package/dist/src/formats/gml/importer.js.map +1 -1
- package/dist/src/formats/gml/index.d.ts +1 -1
- package/dist/src/formats/gml/index.d.ts.map +1 -1
- package/dist/src/formats/gml/index.js +1 -1
- package/dist/src/formats/gml/index.js.map +1 -1
- package/dist/src/formats/gml/positions.d.ts +7 -0
- package/dist/src/formats/gml/positions.d.ts.map +1 -1
- package/dist/src/formats/gml/positions.js +29 -7
- package/dist/src/formats/gml/positions.js.map +1 -1
- package/dist/src/formats/gml/styles.d.ts.map +1 -1
- package/dist/src/formats/gml/styles.js +756 -103
- package/dist/src/formats/gml/styles.js.map +1 -1
- package/dist/src/formats/graphml/styles-plain.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-plain.js +8 -12
- package/dist/src/formats/graphml/styles-plain.js.map +1 -1
- package/dist/src/formats/graphml/styles-yed.d.ts +21 -15
- package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-yed.js +749 -148
- package/dist/src/formats/graphml/styles-yed.js.map +1 -1
- package/dist/src/formats/graphml/styles-yfiles3.d.ts +1 -1
- package/dist/src/formats/graphml/styles-yfiles3.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-yfiles3.js +429 -64
- package/dist/src/formats/graphml/styles-yfiles3.js.map +1 -1
- package/dist/src/formats/graphml/yfiles.d.ts +3 -3
- package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
- package/dist/src/formats/graphml/yfiles.js +16 -6
- package/dist/src/formats/graphml/yfiles.js.map +1 -1
- package/dist/src/formats/json/dialect.d.ts +3 -2
- package/dist/src/formats/json/dialect.d.ts.map +1 -1
- package/dist/src/formats/json/dialect.js +39 -5
- package/dist/src/formats/json/dialect.js.map +1 -1
- package/dist/src/formats/json/importer.d.ts +13 -2
- package/dist/src/formats/json/importer.d.ts.map +1 -1
- package/dist/src/formats/json/importer.js +42 -6
- package/dist/src/formats/json/importer.js.map +1 -1
- package/dist/src/formats/json/index.d.ts +1 -1
- package/dist/src/formats/json/index.d.ts.map +1 -1
- package/dist/src/formats/json/index.js +1 -1
- package/dist/src/formats/json/index.js.map +1 -1
- package/dist/src/formats/json/positions.d.ts +5 -2
- package/dist/src/formats/json/positions.d.ts.map +1 -1
- package/dist/src/formats/json/positions.js +20 -4
- package/dist/src/formats/json/positions.js.map +1 -1
- package/dist/src/formats/json/styles.d.ts +12 -1
- package/dist/src/formats/json/styles.d.ts.map +1 -1
- package/dist/src/formats/json/styles.js +1755 -136
- package/dist/src/formats/json/styles.js.map +1 -1
- package/dist/src/formats/pajek/draw.d.ts +96 -0
- package/dist/src/formats/pajek/draw.d.ts.map +1 -0
- package/dist/src/formats/pajek/draw.js +372 -0
- package/dist/src/formats/pajek/draw.js.map +1 -0
- package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
- package/dist/src/formats/pajek/exporter.js +70 -51
- package/dist/src/formats/pajek/exporter.js.map +1 -1
- package/dist/src/formats/pajek/importer.d.ts +9 -0
- package/dist/src/formats/pajek/importer.d.ts.map +1 -1
- package/dist/src/formats/pajek/importer.js +233 -102
- package/dist/src/formats/pajek/importer.js.map +1 -1
- package/dist/src/formats/pajek/index.d.ts +1 -0
- package/dist/src/formats/pajek/index.d.ts.map +1 -1
- package/dist/src/formats/pajek/index.js.map +1 -1
- package/dist/src/formats/pajek/styles.d.ts +15 -7
- package/dist/src/formats/pajek/styles.d.ts.map +1 -1
- package/dist/src/formats/pajek/styles.js +1279 -114
- package/dist/src/formats/pajek/styles.js.map +1 -1
- package/dist/src/formats/pajek/syntax.d.ts +10 -1
- package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
- package/dist/src/formats/pajek/syntax.js +26 -2
- package/dist/src/formats/pajek/syntax.js.map +1 -1
- package/dist/src/formats/xgmml/emit.d.ts +1 -0
- package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
- package/dist/src/formats/xgmml/emit.js +65 -5
- package/dist/src/formats/xgmml/emit.js.map +1 -1
- package/dist/src/formats/xgmml/styles.d.ts +23 -3
- package/dist/src/formats/xgmml/styles.d.ts.map +1 -1
- package/dist/src/formats/xgmml/styles.js +278 -60
- package/dist/src/formats/xgmml/styles.js.map +1 -1
- package/dist/src/index.d.ts +10 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/positions/convert.d.ts.map +1 -1
- package/dist/src/positions/convert.js +11 -1
- package/dist/src/positions/convert.js.map +1 -1
- package/dist/src/positions/extract.d.ts.map +1 -1
- package/dist/src/positions/extract.js +53 -1
- package/dist/src/positions/extract.js.map +1 -1
- package/dist/src/positions/index.d.ts +1 -1
- package/dist/src/positions/index.d.ts.map +1 -1
- package/dist/src/positions/types.d.ts +59 -0
- package/dist/src/positions/types.d.ts.map +1 -1
- package/dist/src/registry.d.ts +173 -1
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +196 -1
- package/dist/src/registry.js.map +1 -1
- package/dist/src/sources/builtins.d.ts +11 -0
- package/dist/src/sources/builtins.d.ts.map +1 -0
- package/dist/src/sources/builtins.js +53 -0
- package/dist/src/sources/builtins.js.map +1 -0
- package/dist/src/sources/codes.d.ts +230 -0
- package/dist/src/sources/codes.d.ts.map +1 -0
- package/dist/src/sources/codes.js +58 -0
- package/dist/src/sources/codes.js.map +1 -0
- package/dist/src/sources/context.d.ts +112 -0
- package/dist/src/sources/context.d.ts.map +1 -0
- package/dist/src/sources/context.js +740 -0
- package/dist/src/sources/context.js.map +1 -0
- package/dist/src/sources/credentials.d.ts +179 -0
- package/dist/src/sources/credentials.d.ts.map +1 -0
- package/dist/src/sources/credentials.js +301 -0
- package/dist/src/sources/credentials.js.map +1 -0
- package/dist/src/sources/cypher/descriptor.d.ts +21 -0
- package/dist/src/sources/cypher/descriptor.d.ts.map +1 -0
- package/dist/src/sources/cypher/descriptor.js +124 -0
- package/dist/src/sources/cypher/descriptor.js.map +1 -0
- package/dist/src/sources/cypher/flatten.d.ts +72 -0
- package/dist/src/sources/cypher/flatten.d.ts.map +1 -0
- package/dist/src/sources/cypher/flatten.js +279 -0
- package/dist/src/sources/cypher/flatten.js.map +1 -0
- package/dist/src/sources/cypher/index.d.ts +33 -0
- package/dist/src/sources/cypher/index.d.ts.map +1 -0
- package/dist/src/sources/cypher/index.js +511 -0
- package/dist/src/sources/cypher/index.js.map +1 -0
- package/dist/src/sources/cypher/params.d.ts +40 -0
- package/dist/src/sources/cypher/params.d.ts.map +1 -0
- package/dist/src/sources/cypher/params.js +6 -0
- package/dist/src/sources/cypher/params.js.map +1 -0
- package/dist/src/sources/cypher/profiles.d.ts +44 -0
- package/dist/src/sources/cypher/profiles.d.ts.map +1 -0
- package/dist/src/sources/cypher/profiles.js +61 -0
- package/dist/src/sources/cypher/profiles.js.map +1 -0
- package/dist/src/sources/cypher/query-builder.d.ts +123 -0
- package/dist/src/sources/cypher/query-builder.d.ts.map +1 -0
- package/dist/src/sources/cypher/query-builder.js +267 -0
- package/dist/src/sources/cypher/query-builder.js.map +1 -0
- package/dist/src/sources/cypher/transports/bolt.d.ts +21 -0
- package/dist/src/sources/cypher/transports/bolt.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/bolt.js +185 -0
- package/dist/src/sources/cypher/transports/bolt.js.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.d.ts +15 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.js +38 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.js.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-https.d.ts +31 -0
- package/dist/src/sources/cypher/transports/neptune-https.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-https.js +104 -0
- package/dist/src/sources/cypher/transports/neptune-https.js.map +1 -0
- package/dist/src/sources/cypher/transports/query-api.d.ts +14 -0
- package/dist/src/sources/cypher/transports/query-api.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/query-api.js +80 -0
- package/dist/src/sources/cypher/transports/query-api.js.map +1 -0
- package/dist/src/sources/cypher/transports/transport.d.ts +78 -0
- package/dist/src/sources/cypher/transports/transport.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/transport.js +77 -0
- package/dist/src/sources/cypher/transports/transport.js.map +1 -0
- package/dist/src/sources/cypher/types-map.d.ts +91 -0
- package/dist/src/sources/cypher/types-map.d.ts.map +1 -0
- package/dist/src/sources/cypher/types-map.js +306 -0
- package/dist/src/sources/cypher/types-map.js.map +1 -0
- package/dist/src/sources/define.d.ts +47 -0
- package/dist/src/sources/define.d.ts.map +1 -0
- package/dist/src/sources/define.js +173 -0
- package/dist/src/sources/define.js.map +1 -0
- package/dist/src/sources/fail.d.ts +33 -0
- package/dist/src/sources/fail.d.ts.map +1 -0
- package/dist/src/sources/fail.js +49 -0
- package/dist/src/sources/fail.js.map +1 -0
- package/dist/src/sources/ids.d.ts +69 -0
- package/dist/src/sources/ids.d.ts.map +1 -0
- package/dist/src/sources/ids.js +69 -0
- package/dist/src/sources/ids.js.map +1 -0
- package/dist/src/sources/ndex/client.d.ts +31 -0
- package/dist/src/sources/ndex/client.d.ts.map +1 -0
- package/dist/src/sources/ndex/client.js +90 -0
- package/dist/src/sources/ndex/client.js.map +1 -0
- package/dist/src/sources/ndex/descriptor.d.ts +10 -0
- package/dist/src/sources/ndex/descriptor.d.ts.map +1 -0
- package/dist/src/sources/ndex/descriptor.js +55 -0
- package/dist/src/sources/ndex/descriptor.js.map +1 -0
- package/dist/src/sources/ndex/expand.d.ts +20 -0
- package/dist/src/sources/ndex/expand.d.ts.map +1 -0
- package/dist/src/sources/ndex/expand.js +87 -0
- package/dist/src/sources/ndex/expand.js.map +1 -0
- package/dist/src/sources/ndex/index.d.ts +25 -0
- package/dist/src/sources/ndex/index.d.ts.map +1 -0
- package/dist/src/sources/ndex/index.js +191 -0
- package/dist/src/sources/ndex/index.js.map +1 -0
- package/dist/src/sources/ndex/params.d.ts +17 -0
- package/dist/src/sources/ndex/params.d.ts.map +1 -0
- package/dist/src/sources/ndex/params.js +6 -0
- package/dist/src/sources/ndex/params.js.map +1 -0
- package/dist/src/sources/ndex/share-url.d.ts +40 -0
- package/dist/src/sources/ndex/share-url.d.ts.map +1 -0
- package/dist/src/sources/ndex/share-url.js +64 -0
- package/dist/src/sources/ndex/share-url.js.map +1 -0
- package/dist/src/sources/params.d.ts +31 -0
- package/dist/src/sources/params.d.ts.map +1 -0
- package/dist/src/sources/params.js +6 -0
- package/dist/src/sources/params.js.map +1 -0
- package/dist/src/sources/registry.d.ts +118 -0
- package/dist/src/sources/registry.d.ts.map +1 -0
- package/dist/src/sources/registry.js +193 -0
- package/dist/src/sources/registry.js.map +1 -0
- package/dist/src/sources/rest/descriptor.d.ts +16 -0
- package/dist/src/sources/rest/descriptor.d.ts.map +1 -0
- package/dist/src/sources/rest/descriptor.js +76 -0
- package/dist/src/sources/rest/descriptor.js.map +1 -0
- package/dist/src/sources/rest/index.d.ts +14 -0
- package/dist/src/sources/rest/index.d.ts.map +1 -0
- package/dist/src/sources/rest/index.js +13 -0
- package/dist/src/sources/rest/index.js.map +1 -0
- package/dist/src/sources/rest/mapping.d.ts +30 -0
- package/dist/src/sources/rest/mapping.d.ts.map +1 -0
- package/dist/src/sources/rest/mapping.js +362 -0
- package/dist/src/sources/rest/mapping.js.map +1 -0
- package/dist/src/sources/rest/openalex.d.ts +27 -0
- package/dist/src/sources/rest/openalex.d.ts.map +1 -0
- package/dist/src/sources/rest/openalex.js +269 -0
- package/dist/src/sources/rest/openalex.js.map +1 -0
- package/dist/src/sources/rest/paging.d.ts +53 -0
- package/dist/src/sources/rest/paging.d.ts.map +1 -0
- package/dist/src/sources/rest/paging.js +138 -0
- package/dist/src/sources/rest/paging.js.map +1 -0
- package/dist/src/sources/rest/params.d.ts +216 -0
- package/dist/src/sources/rest/params.d.ts.map +1 -0
- package/dist/src/sources/rest/params.js +7 -0
- package/dist/src/sources/rest/params.js.map +1 -0
- package/dist/src/sources/rest/records.d.ts +41 -0
- package/dist/src/sources/rest/records.d.ts.map +1 -0
- package/dist/src/sources/rest/records.js +240 -0
- package/dist/src/sources/rest/records.js.map +1 -0
- package/dist/src/sources/rest/samples/deps-dev.d.ts +10 -0
- package/dist/src/sources/rest/samples/deps-dev.d.ts.map +1 -0
- package/dist/src/sources/rest/samples/deps-dev.js +47 -0
- package/dist/src/sources/rest/samples/deps-dev.js.map +1 -0
- package/dist/src/sources/rest/samples/string.d.ts +9 -0
- package/dist/src/sources/rest/samples/string.d.ts.map +1 -0
- package/dist/src/sources/rest/samples/string.js +42 -0
- package/dist/src/sources/rest/samples/string.js.map +1 -0
- package/dist/src/sources/rest/selectors.d.ts +41 -0
- package/dist/src/sources/rest/selectors.d.ts.map +1 -0
- package/dist/src/sources/rest/selectors.js +81 -0
- package/dist/src/sources/rest/selectors.js.map +1 -0
- package/dist/src/sources/rest/source.d.ts +67 -0
- package/dist/src/sources/rest/source.d.ts.map +1 -0
- package/dist/src/sources/rest/source.js +650 -0
- package/dist/src/sources/rest/source.js.map +1 -0
- package/dist/src/sources/rest/templates.d.ts +38 -0
- package/dist/src/sources/rest/templates.d.ts.map +1 -0
- package/dist/src/sources/rest/templates.js +125 -0
- package/dist/src/sources/rest/templates.js.map +1 -0
- package/dist/src/sources/run.d.ts +93 -0
- package/dist/src/sources/run.d.ts.map +1 -0
- package/dist/src/sources/run.js +673 -0
- package/dist/src/sources/run.js.map +1 -0
- package/dist/src/sources/sha256.d.ts +12 -0
- package/dist/src/sources/sha256.d.ts.map +1 -0
- package/dist/src/sources/sha256.js +95 -0
- package/dist/src/sources/sha256.js.map +1 -0
- package/dist/src/sources/sigv4.d.ts +26 -0
- package/dist/src/sources/sigv4.d.ts.map +1 -0
- package/dist/src/sources/sigv4.js +184 -0
- package/dist/src/sources/sigv4.js.map +1 -0
- package/dist/src/sources/sparql/descriptor.d.ts +10 -0
- package/dist/src/sources/sparql/descriptor.d.ts.map +1 -0
- package/dist/src/sources/sparql/descriptor.js +64 -0
- package/dist/src/sources/sparql/descriptor.js.map +1 -0
- package/dist/src/sources/sparql/index.d.ts +28 -0
- package/dist/src/sources/sparql/index.d.ts.map +1 -0
- package/dist/src/sources/sparql/index.js +314 -0
- package/dist/src/sources/sparql/index.js.map +1 -0
- package/dist/src/sources/sparql/ntriples.d.ts +69 -0
- package/dist/src/sources/sparql/ntriples.d.ts.map +1 -0
- package/dist/src/sources/sparql/ntriples.js +180 -0
- package/dist/src/sources/sparql/ntriples.js.map +1 -0
- package/dist/src/sources/sparql/params.d.ts +27 -0
- package/dist/src/sources/sparql/params.d.ts.map +1 -0
- package/dist/src/sources/sparql/params.js +5 -0
- package/dist/src/sources/sparql/params.js.map +1 -0
- package/dist/src/sources/sparql/query.d.ts +72 -0
- package/dist/src/sources/sparql/query.d.ts.map +1 -0
- package/dist/src/sources/sparql/query.js +113 -0
- package/dist/src/sources/sparql/query.js.map +1 -0
- package/dist/src/sources/testing.d.ts +96 -0
- package/dist/src/sources/testing.d.ts.map +1 -0
- package/dist/src/sources/testing.js +138 -0
- package/dist/src/sources/testing.js.map +1 -0
- package/dist/src/sources/types.d.ts +696 -0
- package/dist/src/sources/types.d.ts.map +1 -0
- package/dist/src/sources/types.js +10 -0
- package/dist/src/sources/types.js.map +1 -0
- package/dist/src/styles/annotations.d.ts +61 -5
- package/dist/src/styles/annotations.d.ts.map +1 -1
- package/dist/src/styles/annotations.js +130 -22
- package/dist/src/styles/annotations.js.map +1 -1
- package/dist/src/styles/canon/bends.d.ts +46 -0
- package/dist/src/styles/canon/bends.d.ts.map +1 -1
- package/dist/src/styles/canon/bends.js +123 -0
- package/dist/src/styles/canon/bends.js.map +1 -1
- package/dist/src/styles/canon/color-tables.d.ts +6 -1
- package/dist/src/styles/canon/color-tables.d.ts.map +1 -1
- package/dist/src/styles/canon/color-tables.js +10 -4
- package/dist/src/styles/canon/color-tables.js.map +1 -1
- package/dist/src/styles/canon/color.d.ts +3 -1
- package/dist/src/styles/canon/color.d.ts.map +1 -1
- package/dist/src/styles/canon/color.js +103 -3
- package/dist/src/styles/canon/color.js.map +1 -1
- package/dist/src/styles/canon/enums.d.ts +2 -2
- package/dist/src/styles/canon/enums.d.ts.map +1 -1
- package/dist/src/styles/canon/enums.js +82 -7
- package/dist/src/styles/canon/enums.js.map +1 -1
- package/dist/src/styles/canon/graphviz.d.ts +12 -3
- package/dist/src/styles/canon/graphviz.d.ts.map +1 -1
- package/dist/src/styles/canon/graphviz.js +57 -9
- package/dist/src/styles/canon/graphviz.js.map +1 -1
- package/dist/src/styles/canon/number.d.ts +8 -0
- package/dist/src/styles/canon/number.d.ts.map +1 -1
- package/dist/src/styles/canon/number.js +18 -0
- package/dist/src/styles/canon/number.js.map +1 -1
- package/dist/src/styles/canon/text.d.ts +29 -2
- package/dist/src/styles/canon/text.d.ts.map +1 -1
- package/dist/src/styles/canon/text.js +156 -16
- package/dist/src/styles/canon/text.js.map +1 -1
- package/dist/src/styles/codes.d.ts +2 -0
- package/dist/src/styles/codes.d.ts.map +1 -1
- package/dist/src/styles/codes.js +2 -0
- package/dist/src/styles/codes.js.map +1 -1
- package/dist/src/styles/cyjs/cascade.d.ts.map +1 -1
- package/dist/src/styles/cyjs/cascade.js +1037 -35
- package/dist/src/styles/cyjs/cascade.js.map +1 -1
- package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -1
- package/dist/src/styles/cyjs/defaults-table.js +5 -0
- package/dist/src/styles/cyjs/defaults-table.js.map +1 -1
- package/dist/src/styles/cyjs/emit.d.ts.map +1 -1
- package/dist/src/styles/cyjs/emit.js +216 -12
- package/dist/src/styles/cyjs/emit.js.map +1 -1
- package/dist/src/styles/cyjs/face.d.ts +20 -0
- package/dist/src/styles/cyjs/face.d.ts.map +1 -0
- package/dist/src/styles/cyjs/face.js +332 -0
- package/dist/src/styles/cyjs/face.js.map +1 -0
- package/dist/src/styles/cyjs/mappers.d.ts +48 -2
- package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
- package/dist/src/styles/cyjs/mappers.js +463 -26
- package/dist/src/styles/cyjs/mappers.js.map +1 -1
- package/dist/src/styles/cyjs/routes.d.ts +53 -0
- package/dist/src/styles/cyjs/routes.d.ts.map +1 -0
- package/dist/src/styles/cyjs/routes.js +360 -0
- package/dist/src/styles/cyjs/routes.js.map +1 -0
- package/dist/src/styles/cytoscape/charts.d.ts +23 -0
- package/dist/src/styles/cytoscape/charts.d.ts.map +1 -0
- package/dist/src/styles/cytoscape/charts.js +560 -0
- package/dist/src/styles/cytoscape/charts.js.map +1 -0
- package/dist/src/styles/cytoscape/emit.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/emit.js +204 -44
- package/dist/src/styles/cytoscape/emit.js.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.d.ts +97 -3
- package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.js +413 -79
- package/dist/src/styles/cytoscape/lexicon.js.map +1 -1
- package/dist/src/styles/cytoscape/mappings.d.ts +30 -0
- package/dist/src/styles/cytoscape/mappings.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/mappings.js +92 -0
- package/dist/src/styles/cytoscape/mappings.js.map +1 -1
- package/dist/src/styles/cytoscape/resolve.d.ts +46 -3
- package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/resolve.js +632 -22
- package/dist/src/styles/cytoscape/resolve.js.map +1 -1
- package/dist/src/styles/cytoscape/translate.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/translate.js +10 -10
- package/dist/src/styles/cytoscape/translate.js.map +1 -1
- package/dist/src/styles/defaults.d.ts +50 -0
- package/dist/src/styles/defaults.d.ts.map +1 -1
- package/dist/src/styles/defaults.js +315 -37
- package/dist/src/styles/defaults.js.map +1 -1
- package/dist/src/styles/index.d.ts +4 -3
- package/dist/src/styles/index.d.ts.map +1 -1
- package/dist/src/styles/index.js +3 -2
- package/dist/src/styles/index.js.map +1 -1
- package/dist/src/styles/internal.d.ts +1 -0
- package/dist/src/styles/internal.d.ts.map +1 -1
- package/dist/src/styles/internal.js +1 -0
- package/dist/src/styles/internal.js.map +1 -1
- package/dist/src/styles/io/block.d.ts.map +1 -1
- package/dist/src/styles/io/block.js +9 -0
- package/dist/src/styles/io/block.js.map +1 -1
- package/dist/src/styles/io/generic.d.ts.map +1 -1
- package/dist/src/styles/io/generic.js +56 -16
- package/dist/src/styles/io/generic.js.map +1 -1
- package/dist/src/styles/io/round-trip.d.ts +56 -0
- package/dist/src/styles/io/round-trip.d.ts.map +1 -0
- package/dist/src/styles/io/round-trip.js +138 -0
- package/dist/src/styles/io/round-trip.js.map +1 -0
- package/dist/src/styles/io/writer.d.ts.map +1 -1
- package/dist/src/styles/io/writer.js +13 -4
- package/dist/src/styles/io/writer.js.map +1 -1
- package/dist/src/styles/notes.d.ts.map +1 -1
- package/dist/src/styles/notes.js +1 -0
- package/dist/src/styles/notes.js.map +1 -1
- package/dist/src/styles/plan/features.d.ts +1 -1
- package/dist/src/styles/plan/features.d.ts.map +1 -1
- package/dist/src/styles/plan/features.js +22 -2
- package/dist/src/styles/plan/features.js.map +1 -1
- package/dist/src/styles/plan/index.d.ts +1 -1
- package/dist/src/styles/plan/index.d.ts.map +1 -1
- package/dist/src/styles/plan/index.js +1 -1
- package/dist/src/styles/plan/index.js.map +1 -1
- package/dist/src/styles/plan/plan.d.ts.map +1 -1
- package/dist/src/styles/plan/plan.js +61 -4
- package/dist/src/styles/plan/plan.js.map +1 -1
- package/dist/src/styles/plan/resolve.d.ts +13 -1
- package/dist/src/styles/plan/resolve.d.ts.map +1 -1
- package/dist/src/styles/plan/resolve.js +53 -6
- package/dist/src/styles/plan/resolve.js.map +1 -1
- package/dist/src/styles/slots.d.ts +14 -0
- package/dist/src/styles/slots.d.ts.map +1 -0
- package/dist/src/styles/slots.js +20 -0
- package/dist/src/styles/slots.js.map +1 -0
- package/dist/src/styles/types.d.ts +638 -5
- package/dist/src/styles/types.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.d.ts +3 -2
- package/dist/src/styles/vocabulary.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.js +218 -1
- package/dist/src/styles/vocabulary.js.map +1 -1
- package/dist/src/types.d.ts +19 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/styles.js +29 -238
- package/dist/styles.js.map +1 -1
- package/dist/xgmml.js +3 -3
- package/docs/samples/people.json +6 -0
- package/package.json +53 -8
- package/src/common/report.ts +27 -7
- package/src/formats/cx/importer.ts +6 -1
- package/src/formats/cx/styles.ts +144 -9
- package/src/formats/cx2/importer.ts +1 -0
- package/src/formats/cx2/styles.ts +3 -1
- package/src/formats/cys/importer.ts +1 -0
- package/src/formats/cys/styles.ts +27 -5
- package/src/formats/dot/drawing.ts +799 -0
- package/src/formats/dot/importer.ts +120 -35
- package/src/formats/dot/label-places.ts +228 -0
- package/src/formats/dot/record.ts +336 -0
- package/src/formats/dot/styles.ts +1657 -154
- package/src/formats/gexf/dialog-metrics.ts +61 -0
- package/src/formats/gexf/importer.ts +50 -5
- package/src/formats/gexf/preview.ts +217 -0
- package/src/formats/gexf/schema.ts +2 -1
- package/src/formats/gexf/styles.ts +1144 -142
- package/src/formats/gml/importer.ts +291 -76
- package/src/formats/gml/index.ts +1 -1
- package/src/formats/gml/positions.ts +29 -7
- package/src/formats/gml/styles.ts +854 -111
- package/src/formats/graphml/styles-plain.ts +8 -23
- package/src/formats/graphml/styles-yed.ts +821 -159
- package/src/formats/graphml/styles-yfiles3.ts +485 -63
- package/src/formats/graphml/yfiles.ts +19 -6
- package/src/formats/json/dialect.ts +41 -5
- package/src/formats/json/importer.ts +59 -7
- package/src/formats/json/index.ts +1 -0
- package/src/formats/json/positions.ts +22 -5
- package/src/formats/json/styles.ts +2041 -185
- package/src/formats/pajek/draw.ts +458 -0
- package/src/formats/pajek/exporter.ts +81 -49
- package/src/formats/pajek/importer.ts +278 -103
- package/src/formats/pajek/index.ts +1 -0
- package/src/formats/pajek/styles.ts +1382 -133
- package/src/formats/pajek/syntax.ts +27 -2
- package/src/formats/xgmml/emit.ts +73 -5
- package/src/formats/xgmml/styles.ts +331 -71
- package/src/index.ts +94 -0
- package/src/positions/convert.ts +12 -1
- package/src/positions/extract.ts +55 -1
- package/src/positions/index.ts +1 -0
- package/src/positions/types.ts +60 -0
- package/src/registry.ts +326 -1
- package/src/sources/builtins.ts +63 -0
- package/src/sources/codes.ts +235 -0
- package/src/sources/context.ts +894 -0
- package/src/sources/credentials.ts +409 -0
- package/src/sources/cypher/descriptor.ts +131 -0
- package/src/sources/cypher/flatten.ts +323 -0
- package/src/sources/cypher/index.ts +628 -0
- package/src/sources/cypher/params.ts +41 -0
- package/src/sources/cypher/profiles.ts +78 -0
- package/src/sources/cypher/query-builder.ts +327 -0
- package/src/sources/cypher/transports/bolt.ts +228 -0
- package/src/sources/cypher/transports/neptune-analytics.ts +41 -0
- package/src/sources/cypher/transports/neptune-https.ts +122 -0
- package/src/sources/cypher/transports/query-api.ts +100 -0
- package/src/sources/cypher/transports/transport.ts +139 -0
- package/src/sources/cypher/types-map.ts +418 -0
- package/src/sources/define.ts +195 -0
- package/src/sources/fail.ts +70 -0
- package/src/sources/ids.ts +80 -0
- package/src/sources/ndex/client.ts +102 -0
- package/src/sources/ndex/descriptor.ts +64 -0
- package/src/sources/ndex/expand.ts +100 -0
- package/src/sources/ndex/index.ts +235 -0
- package/src/sources/ndex/params.ts +17 -0
- package/src/sources/ndex/share-url.ts +84 -0
- package/src/sources/params.ts +32 -0
- package/src/sources/registry.ts +325 -0
- package/src/sources/rest/descriptor.ts +79 -0
- package/src/sources/rest/index.ts +22 -0
- package/src/sources/rest/mapping.ts +401 -0
- package/src/sources/rest/openalex.ts +288 -0
- package/src/sources/rest/paging.ts +180 -0
- package/src/sources/rest/params.ts +243 -0
- package/src/sources/rest/records.ts +289 -0
- package/src/sources/rest/samples/deps-dev.ts +49 -0
- package/src/sources/rest/samples/string.ts +44 -0
- package/src/sources/rest/selectors.ts +91 -0
- package/src/sources/rest/source.ts +776 -0
- package/src/sources/rest/templates.ts +151 -0
- package/src/sources/run.ts +793 -0
- package/src/sources/sha256.ts +99 -0
- package/src/sources/sigv4.ts +209 -0
- package/src/sources/sparql/descriptor.ts +67 -0
- package/src/sources/sparql/index.ts +356 -0
- package/src/sources/sparql/ntriples.ts +219 -0
- package/src/sources/sparql/params.ts +28 -0
- package/src/sources/sparql/query.ts +162 -0
- package/src/sources/testing.ts +210 -0
- package/src/sources/types.ts +776 -0
- package/src/styles/annotations.ts +201 -27
- package/src/styles/canon/bends.ts +137 -0
- package/src/styles/canon/color-tables.ts +10 -4
- package/src/styles/canon/color.ts +105 -3
- package/src/styles/canon/enums.ts +99 -8
- package/src/styles/canon/graphviz.ts +71 -10
- package/src/styles/canon/number.ts +19 -0
- package/src/styles/canon/text.ts +187 -16
- package/src/styles/codes.ts +2 -0
- package/src/styles/cyjs/cascade.ts +1193 -38
- package/src/styles/cyjs/defaults-table.ts +5 -0
- package/src/styles/cyjs/emit.ts +247 -16
- package/src/styles/cyjs/face.ts +372 -0
- package/src/styles/cyjs/mappers.ts +498 -28
- package/src/styles/cyjs/routes.ts +432 -0
- package/src/styles/cytoscape/charts.ts +684 -0
- package/src/styles/cytoscape/emit.ts +220 -44
- package/src/styles/cytoscape/lexicon.ts +459 -80
- package/src/styles/cytoscape/mappings.ts +108 -0
- package/src/styles/cytoscape/resolve.ts +763 -23
- package/src/styles/cytoscape/translate.ts +11 -11
- package/src/styles/defaults.ts +436 -38
- package/src/styles/index.ts +5 -0
- package/src/styles/internal.ts +1 -0
- package/src/styles/io/block.ts +10 -0
- package/src/styles/io/generic.ts +79 -23
- package/src/styles/io/round-trip.ts +202 -0
- package/src/styles/io/writer.ts +14 -4
- package/src/styles/notes.ts +1 -0
- package/src/styles/plan/features.ts +23 -2
- package/src/styles/plan/index.ts +1 -1
- package/src/styles/plan/plan.ts +69 -5
- package/src/styles/plan/resolve.ts +61 -6
- package/src/styles/slots.ts +25 -0
- package/src/styles/types.ts +658 -4
- package/src/styles/vocabulary.ts +226 -3
- package/src/types.ts +19 -5
- package/dist/chunks/block-DiGq58c3.js.map +0 -1
- package/dist/chunks/choose--jM0yYCo.js +0 -57
- package/dist/chunks/choose--jM0yYCo.js.map +0 -1
- package/dist/chunks/convert-BcQ8_jMo.js.map +0 -1
- package/dist/chunks/emit-CwU8cUmG.js.map +0 -1
- package/dist/chunks/export-BvqAXCKh.js.map +0 -1
- package/dist/chunks/exporter-CrDWIyiq.js.map +0 -1
- package/dist/chunks/format-BpQBx8MZ.js.map +0 -1
- package/dist/chunks/generic-Dq1ntt9q.js.map +0 -1
- package/dist/chunks/importer-BSvfrX_h.js.map +0 -1
- package/dist/chunks/importer-CMmeMWlC.js.map +0 -1
- package/dist/chunks/importer-COTK9Tsl.js.map +0 -1
- package/dist/chunks/importer-DiZRmOQG.js.map +0 -1
- package/dist/chunks/importer-e6LGpqHB.js.map +0 -1
- package/dist/chunks/importer-iFYPEKaJ.js.map +0 -1
- package/dist/chunks/importer-yh_aBCU6.js.map +0 -1
- package/dist/chunks/lexicon-CT69Kd87.js.map +0 -1
- package/dist/chunks/styles-BQnsga7p.js.map +0 -1
- package/dist/chunks/styles-D3fRphrO.js +0 -690
- package/dist/chunks/styles-D3fRphrO.js.map +0 -1
- package/dist/chunks/styles-yed-BF5x3_Y5.js +0 -842
- package/dist/chunks/styles-yed-BF5x3_Y5.js.map +0 -1
- package/dist/chunks/writer-DMKvthQE.js +0 -448
- package/dist/chunks/writer-DMKvthQE.js.map +0 -1
package/src/styles/index.ts
CHANGED
|
@@ -11,7 +11,9 @@ export {
|
|
|
11
11
|
type ArrowAnnotation,
|
|
12
12
|
type FileAnnotations,
|
|
13
13
|
type GraphAnnotation,
|
|
14
|
+
type ImageAnnotation,
|
|
14
15
|
readAnnotations,
|
|
16
|
+
readImageAnnotations,
|
|
15
17
|
type ShapeAnnotation,
|
|
16
18
|
type TextAnnotation,
|
|
17
19
|
} from "./annotations.js";
|
|
@@ -29,6 +31,7 @@ export {
|
|
|
29
31
|
} from "./cyjs/index.js";
|
|
30
32
|
export {
|
|
31
33
|
TOOL_DEFAULTS,
|
|
34
|
+
type ToolArrowhead,
|
|
32
35
|
type ToolDefaults,
|
|
33
36
|
toolDefaults,
|
|
34
37
|
type ToolDefaultValue,
|
|
@@ -46,6 +49,7 @@ export {
|
|
|
46
49
|
} from "./io/index.js";
|
|
47
50
|
export {
|
|
48
51
|
featuresOf,
|
|
52
|
+
matchPredicate,
|
|
49
53
|
MAX_STYLE_RULES,
|
|
50
54
|
type PlanOptions,
|
|
51
55
|
planStyles,
|
|
@@ -53,5 +57,6 @@ export {
|
|
|
53
57
|
styleFingerprint,
|
|
54
58
|
type StyleValues,
|
|
55
59
|
} from "./plan/index.js";
|
|
60
|
+
export { isStyleSlotColumn } from "./slots.js";
|
|
56
61
|
export type * from "./types.js";
|
|
57
62
|
export { isStyleValue, STYLE_ENUMS, STYLE_PROPERTIES, type StyleValueKind } from "./vocabulary.js";
|
package/src/styles/internal.ts
CHANGED
package/src/styles/io/block.ts
CHANGED
|
@@ -727,6 +727,15 @@ function predicate(v: unknown): Predicate {
|
|
|
727
727
|
return o as Predicate;
|
|
728
728
|
}
|
|
729
729
|
|
|
730
|
+
/**
|
|
731
|
+
* A positive finite number.
|
|
732
|
+
* @param v - the parsed value
|
|
733
|
+
* @returns the number
|
|
734
|
+
*/
|
|
735
|
+
function positive(v: unknown): number {
|
|
736
|
+
return typeof v === "number" && Number.isFinite(v) && v > 0 ? v : invalid();
|
|
737
|
+
}
|
|
738
|
+
|
|
730
739
|
/**
|
|
731
740
|
* A mapping. A mapping of a kind this version does not know is kept and gives no value.
|
|
732
741
|
* @param v - the parsed mapping
|
|
@@ -760,6 +769,7 @@ function mapping(v: unknown): Mapping {
|
|
|
760
769
|
above: scalar(q.above),
|
|
761
770
|
};
|
|
762
771
|
}),
|
|
772
|
+
...(o.step === undefined ? {} : { step: positive(o.step) }),
|
|
763
773
|
};
|
|
764
774
|
default:
|
|
765
775
|
return { ...o, kind: name(o.kind), by } as unknown as Mapping;
|
package/src/styles/io/generic.ts
CHANGED
|
@@ -9,10 +9,18 @@ import type { GraphSnapshot } from "@graphty/graph-format";
|
|
|
9
9
|
|
|
10
10
|
import { keptForStyles } from "../../common/report.js";
|
|
11
11
|
import type { GraphImporter, ImportReport } from "../../types.js";
|
|
12
|
+
import { readAnnotations, readImageAnnotations } from "../annotations.js";
|
|
12
13
|
import { StyleBudget } from "../budget.js";
|
|
13
14
|
import { canonColor, colorOpacity } from "../canon/color.js";
|
|
14
15
|
import { canonEnum, type StyleEnumKind } from "../canon/enums.js";
|
|
15
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
canonBoolean,
|
|
18
|
+
canonNumber,
|
|
19
|
+
canonOpacity,
|
|
20
|
+
canonSigned,
|
|
21
|
+
DOT_POINTS_PER_INCH,
|
|
22
|
+
styleLengthUnit,
|
|
23
|
+
} from "../canon/number.js";
|
|
16
24
|
import type { CanonSite } from "../canon/site.js";
|
|
17
25
|
import { canonText } from "../canon/text.js";
|
|
18
26
|
import { STYLE_ISSUE } from "../codes.js";
|
|
@@ -27,6 +35,7 @@ import type {
|
|
|
27
35
|
ReaderOutput,
|
|
28
36
|
StyleColumn,
|
|
29
37
|
StyleDialect,
|
|
38
|
+
StyleFingerprint,
|
|
30
39
|
StyleNote,
|
|
31
40
|
StyleProperty,
|
|
32
41
|
StyleTarget,
|
|
@@ -64,7 +73,17 @@ export interface ExtractStylesOptions extends StyleImportOptions {
|
|
|
64
73
|
}
|
|
65
74
|
|
|
66
75
|
const TARGETS: readonly StyleTarget[] = ["node", "edge"];
|
|
67
|
-
const ENUM_KINDS: ReadonlySet<string> = new Set([
|
|
76
|
+
const ENUM_KINDS: ReadonlySet<string> = new Set([
|
|
77
|
+
"shape",
|
|
78
|
+
"borderStyle",
|
|
79
|
+
"lineStyle",
|
|
80
|
+
"arrow",
|
|
81
|
+
"arrowSide",
|
|
82
|
+
"weight",
|
|
83
|
+
"position",
|
|
84
|
+
"labelFit",
|
|
85
|
+
"borderPosition",
|
|
86
|
+
]);
|
|
68
87
|
|
|
69
88
|
/** What the readers here produce before planning: canonical values and the data columns they came from. */
|
|
70
89
|
interface StyleTruth {
|
|
@@ -104,29 +123,18 @@ export function extractStyles(
|
|
|
104
123
|
const signal = options.signal ?? undefined;
|
|
105
124
|
const notes = new StyleNotes();
|
|
106
125
|
const budget = options.budget ?? new StyleBudget();
|
|
126
|
+
// pictures are read by readImageAnnotations()
|
|
127
|
+
const pictures = readImageAnnotations(snapshot).length > 0;
|
|
128
|
+
for (const kind of readAnnotations(snapshot).skipped) {
|
|
129
|
+
if (!(pictures && kind === "ImageAnnotation")) {
|
|
130
|
+
notes.add(STYLE_ISSUE.ANNOTATION_SKIPPED, "graph", "annotations", { sample: kind });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
107
133
|
const canonical = readStyleValues(importer, snapshot, report, { notes, budget, signal });
|
|
108
134
|
const fingerprint = styleFingerprint(snapshot);
|
|
109
|
-
const
|
|
110
|
-
if (
|
|
111
|
-
|
|
112
|
-
if (parsed.ok) {
|
|
113
|
-
const truth = canonical === null ? {} : { node: canonical.node.values, edge: canonical.edge.values };
|
|
114
|
-
const fromBlock = blockStyles(
|
|
115
|
-
parsed.block,
|
|
116
|
-
snapshot,
|
|
117
|
-
importer.format,
|
|
118
|
-
truth,
|
|
119
|
-
canonical?.notes ?? [],
|
|
120
|
-
canonical?.tool ?? null,
|
|
121
|
-
canonical?.opacityInColor === true,
|
|
122
|
-
);
|
|
123
|
-
if (fromBlock !== null) {
|
|
124
|
-
return fromBlock;
|
|
125
|
-
}
|
|
126
|
-
notes.add(STYLE_ISSUE.BLOCK_IGNORED, null, null, { sample: "INVALID" });
|
|
127
|
-
} else {
|
|
128
|
-
notes.add(STYLE_ISSUE.BLOCK_IGNORED, null, null, { sample: parsed.reason });
|
|
129
|
-
}
|
|
135
|
+
const fromBlock = stylesFromBlock(importer, snapshot, canonical, notes, fingerprint);
|
|
136
|
+
if (fromBlock !== null) {
|
|
137
|
+
return fromBlock;
|
|
130
138
|
}
|
|
131
139
|
if (canonical === null) {
|
|
132
140
|
const list = notes.list();
|
|
@@ -163,6 +171,52 @@ export function extractStyles(
|
|
|
163
171
|
return { ...planned, styles: { ...planned.styles, notes: [...canonical.notes, ...planned.styles.notes] } };
|
|
164
172
|
}
|
|
165
173
|
|
|
174
|
+
/**
|
|
175
|
+
* The styles a file's `graphty.styles` block gives, with the importer's values as the truth; a block that does not
|
|
176
|
+
* parse or describes another graph is noted as ignored.
|
|
177
|
+
* @param importer - the importer that read the file
|
|
178
|
+
* @param snapshot - the graph it built
|
|
179
|
+
* @param canonical - what the importer read, or null
|
|
180
|
+
* @param notes - the notes so far; an ignored block is noted here
|
|
181
|
+
* @param fingerprint - the graph's style fingerprint
|
|
182
|
+
* @returns the styles, or null when the file has no usable block
|
|
183
|
+
*/
|
|
184
|
+
function stylesFromBlock(
|
|
185
|
+
importer: GraphImporter,
|
|
186
|
+
snapshot: GraphSnapshot,
|
|
187
|
+
canonical: ReturnType<typeof readStyleValues>,
|
|
188
|
+
notes: StyleNotes,
|
|
189
|
+
fingerprint: StyleFingerprint,
|
|
190
|
+
): ExtractedStyles | null {
|
|
191
|
+
const blockText = canonical?.block ?? graphValue(snapshot, STYLE_BLOCK_NAME);
|
|
192
|
+
if (blockText === undefined) {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
const parsed = parseStyleBlock(blockText, fingerprint);
|
|
196
|
+
if (!parsed.ok) {
|
|
197
|
+
notes.add(STYLE_ISSUE.BLOCK_IGNORED, null, null, { sample: parsed.reason });
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
const truth = canonical === null ? {} : { node: canonical.node.values, edge: canonical.edge.values };
|
|
201
|
+
const fromBlock = blockStyles(
|
|
202
|
+
parsed.block,
|
|
203
|
+
snapshot,
|
|
204
|
+
importer.format,
|
|
205
|
+
truth,
|
|
206
|
+
canonical?.notes ?? [],
|
|
207
|
+
canonical?.tool ?? null,
|
|
208
|
+
canonical?.opacityInColor === true,
|
|
209
|
+
);
|
|
210
|
+
if (fromBlock === null) {
|
|
211
|
+
notes.add(STYLE_ISSUE.BLOCK_IGNORED, null, null, { sample: "INVALID" });
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
const skipped = notes.list();
|
|
215
|
+
return skipped.length === 0
|
|
216
|
+
? fromBlock
|
|
217
|
+
: { ...fromBlock, styles: { ...fromBlock.styles, notes: [...fromBlock.styles.notes, ...skipped] } };
|
|
218
|
+
}
|
|
219
|
+
|
|
166
220
|
/**
|
|
167
221
|
* What a file's styles are before planning: each element's canonical value per property, as the importer's own
|
|
168
222
|
* `styles()` gives them (the simple path canonicalized) or, for an importer without one, as the generic reader reads
|
|
@@ -553,6 +607,8 @@ function canonValue(
|
|
|
553
607
|
site,
|
|
554
608
|
dialect === "graphviz" && (property === "width" || property === "height") ? DOT_POINTS_PER_INCH : 1,
|
|
555
609
|
);
|
|
610
|
+
case "signed":
|
|
611
|
+
return canonSigned(raw, site);
|
|
556
612
|
case "opacity":
|
|
557
613
|
return canonOpacity(raw, dialect, site);
|
|
558
614
|
case "boolean":
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The round-trip repair every styled format shares: for a file graphty wrote, a value read from the format's own
|
|
3
|
+
* drawing keys that is only what graphty's writer writes for the `graphty.styles` block's exact value (a pentagon
|
|
4
|
+
* written as a hexagon, an opacity rounded to 255 steps) is read as the block's value, so a re-import gives back the
|
|
5
|
+
* same rules. A value another program changed since stays the truth. Each format passes what its writer writes for an
|
|
6
|
+
* element, read back the way its reader reads it.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { GraphSnapshot } from "@graphty/graph-format";
|
|
10
|
+
|
|
11
|
+
import { styleFingerprint } from "../plan/features.js";
|
|
12
|
+
import { resolveStyles } from "../plan/resolve.js";
|
|
13
|
+
import type { ExtractedStyles, StyleColumn, StyleProperty, StyleTarget, StyleValue } from "../types.js";
|
|
14
|
+
import { blockStyles, parseStyleBlock } from "./block.js";
|
|
15
|
+
|
|
16
|
+
/** One element's value of a property, null when it has none. */
|
|
17
|
+
export type ElementValues = (property: string) => StyleValue | null;
|
|
18
|
+
|
|
19
|
+
/** The block's values of a property, one per element. */
|
|
20
|
+
type BlockValues = (target: StyleTarget, property: string) => readonly (StyleValue | null)[];
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The values a `graphty.styles` block gives every element, worked out once per property.
|
|
24
|
+
* @param snapshot - the graph
|
|
25
|
+
* @param ex - the block's styles
|
|
26
|
+
* @returns the block's values
|
|
27
|
+
*/
|
|
28
|
+
function blockValues(snapshot: GraphSnapshot, ex: ExtractedStyles): BlockValues {
|
|
29
|
+
const cache = new Map<string, readonly (StyleValue | null)[]>();
|
|
30
|
+
return (target, property) => {
|
|
31
|
+
const key = `${target} ${property}`;
|
|
32
|
+
let held = cache.get(key);
|
|
33
|
+
if (held === undefined) {
|
|
34
|
+
held = resolveStyles(ex, target, property as StyleProperty, snapshot);
|
|
35
|
+
cache.set(key, held);
|
|
36
|
+
}
|
|
37
|
+
return held;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Each element's values of the properties a writer writes, as a getter per element; any other property reads as null.
|
|
43
|
+
* @param picture - each element's value of a property
|
|
44
|
+
* @param target - nodes or edges
|
|
45
|
+
* @param properties - the properties the writer writes
|
|
46
|
+
* @returns the getter
|
|
47
|
+
*/
|
|
48
|
+
export function elementValues(
|
|
49
|
+
picture: BlockValues,
|
|
50
|
+
target: StyleTarget,
|
|
51
|
+
properties: readonly string[],
|
|
52
|
+
): (i: number) => ElementValues {
|
|
53
|
+
const columns = new Map<string, readonly (StyleValue | null)[]>();
|
|
54
|
+
for (const p of properties) {
|
|
55
|
+
columns.set(p, picture(target, p));
|
|
56
|
+
}
|
|
57
|
+
return (i) => (property) => columns.get(property)?.[i] ?? null;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** One target's round trip, as a format describes it. */
|
|
61
|
+
interface RoundTrip {
|
|
62
|
+
/** The values the reader read, per property; a property whose values change gets a new array. */
|
|
63
|
+
readonly values: Partial<Record<string, StyleColumn>>;
|
|
64
|
+
/** The properties compared with the block's. */
|
|
65
|
+
readonly properties: Iterable<string>;
|
|
66
|
+
/** The properties the writer is given the block's values of; any other reads as null. Default: every one. */
|
|
67
|
+
readonly writes?: readonly string[];
|
|
68
|
+
/**
|
|
69
|
+
* An element's block values written the way the writer writes them and read back the way the reader reads them.
|
|
70
|
+
* @param i - the element
|
|
71
|
+
* @param want - the element's block values
|
|
72
|
+
* @returns the values read back, or null when the element is not compared
|
|
73
|
+
*/
|
|
74
|
+
readBack(i: number, want: ElementValues): ElementValues | null;
|
|
75
|
+
/**
|
|
76
|
+
* Whether a property's value of an element may be taken from the block at all (before comparing). Default: always.
|
|
77
|
+
* @param property - the property
|
|
78
|
+
* @param wanted - the block's value
|
|
79
|
+
* @param native - the value read
|
|
80
|
+
*/
|
|
81
|
+
take?(property: string, wanted: StyleValue | null, native: StyleValue | null): boolean;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Wherever a value read is not the block's but is what the writer writes for the block's value, takes the block's.
|
|
86
|
+
* @param target - nodes or edges
|
|
87
|
+
* @param n - the element count
|
|
88
|
+
* @param block - the block's values
|
|
89
|
+
* @param trip - the target's round trip; its values change in place
|
|
90
|
+
*/
|
|
91
|
+
function takeBlockValues(target: StyleTarget, n: number, block: BlockValues, trip: RoundTrip): void {
|
|
92
|
+
const { values } = trip;
|
|
93
|
+
const get = blockGetter(target, block, trip.writes);
|
|
94
|
+
const properties = [...trip.properties];
|
|
95
|
+
const changed = new Map<string, (StyleValue | null)[]>();
|
|
96
|
+
for (let i = 0; i < n; i++) {
|
|
97
|
+
const want = get(i);
|
|
98
|
+
const back = trip.readBack(i, want);
|
|
99
|
+
if (back === null) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
for (const property of properties) {
|
|
103
|
+
const w = want(property);
|
|
104
|
+
if (takes(trip, property, w, values[property]?.[i] ?? null, back)) {
|
|
105
|
+
columnOf(changed, values, property, n)[i] = w;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
for (const [property, column] of changed) {
|
|
110
|
+
values[property] = column;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Each element's block values, limited to the properties the writer is given when it is given only some.
|
|
116
|
+
* @param target - nodes or edges
|
|
117
|
+
* @param block - the block's values
|
|
118
|
+
* @param writes - the properties the writer is given, or undefined for every one
|
|
119
|
+
* @returns the element's values, by element
|
|
120
|
+
*/
|
|
121
|
+
function blockGetter(
|
|
122
|
+
target: StyleTarget,
|
|
123
|
+
block: BlockValues,
|
|
124
|
+
writes: readonly string[] | undefined,
|
|
125
|
+
): (i: number) => ElementValues {
|
|
126
|
+
if (writes !== undefined) {
|
|
127
|
+
return elementValues(block, target, writes);
|
|
128
|
+
}
|
|
129
|
+
return (i) => (p) => block(target, p)[i] ?? null;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Whether the block's value replaces the value read: the format allows it, they differ, and the value read is what the
|
|
134
|
+
* writer writes for the block's value.
|
|
135
|
+
* @param trip - the target's round trip
|
|
136
|
+
* @param property - the property
|
|
137
|
+
* @param wanted - the block's value
|
|
138
|
+
* @param native - the value read
|
|
139
|
+
* @param back - the element's block values written and read back
|
|
140
|
+
* @returns whether to take the block's value
|
|
141
|
+
*/
|
|
142
|
+
function takes(
|
|
143
|
+
trip: RoundTrip,
|
|
144
|
+
property: string,
|
|
145
|
+
wanted: StyleValue | null,
|
|
146
|
+
native: StyleValue | null,
|
|
147
|
+
back: ElementValues,
|
|
148
|
+
): boolean {
|
|
149
|
+
return trip.take?.(property, wanted, native) !== false && native !== wanted && native === (back(property) ?? null);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* The changed copy of a property's values, made on first use.
|
|
154
|
+
* @param changed - the changed copies so far
|
|
155
|
+
* @param values - the values read
|
|
156
|
+
* @param property - the property
|
|
157
|
+
* @param n - the element count
|
|
158
|
+
* @returns the property's changed copy
|
|
159
|
+
*/
|
|
160
|
+
function columnOf(
|
|
161
|
+
changed: Map<string, (StyleValue | null)[]>,
|
|
162
|
+
values: Partial<Record<string, StyleColumn>>,
|
|
163
|
+
property: string,
|
|
164
|
+
n: number,
|
|
165
|
+
): (StyleValue | null)[] {
|
|
166
|
+
let column = changed.get(property);
|
|
167
|
+
if (column === undefined) {
|
|
168
|
+
const own = values[property];
|
|
169
|
+
column = own === undefined ? new Array<StyleValue | null>(n).fill(null) : [...own];
|
|
170
|
+
changed.set(property, column);
|
|
171
|
+
}
|
|
172
|
+
return column;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* For a file graphty wrote: wherever a value read from the format's own keys is not the `graphty.styles` block's
|
|
177
|
+
* value but is what graphty's writer writes for it, takes the block's value, so a re-import gives back the same rules.
|
|
178
|
+
* A block that does not parse or describes another graph changes nothing.
|
|
179
|
+
* @param snapshot - the graph
|
|
180
|
+
* @param text - the block's text, or null when the file has none
|
|
181
|
+
* @param format - the format the block was read from
|
|
182
|
+
* @param trip - each target's round trip, given the block's values and its styles; null leaves the target as read
|
|
183
|
+
*/
|
|
184
|
+
export function takeFromBlock(
|
|
185
|
+
snapshot: GraphSnapshot,
|
|
186
|
+
text: string | null,
|
|
187
|
+
format: string,
|
|
188
|
+
trip: (target: StyleTarget, block: BlockValues, styles: ExtractedStyles) => RoundTrip | null,
|
|
189
|
+
): void {
|
|
190
|
+
const parsed = text === null ? null : parseStyleBlock(text, styleFingerprint(snapshot));
|
|
191
|
+
const ex = parsed?.ok === true ? blockStyles(parsed.block, snapshot, format) : null;
|
|
192
|
+
if (ex === null) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const block = blockValues(snapshot, ex);
|
|
196
|
+
for (const target of ["node", "edge"] as const) {
|
|
197
|
+
const t = trip(target, block, ex);
|
|
198
|
+
if (t !== null) {
|
|
199
|
+
takeBlockValues(target, target === "node" ? snapshot.nodeCount : snapshot.edgeCount, block, t);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
package/src/styles/io/writer.ts
CHANGED
|
@@ -9,6 +9,7 @@ import type { GraphSnapshot } from "@graphty/graph-format";
|
|
|
9
9
|
import { agree, plural } from "../../common/plural.js";
|
|
10
10
|
import type { GraphExporter, LossNote } from "../../types.js";
|
|
11
11
|
import { STYLE_ISSUE } from "../codes.js";
|
|
12
|
+
import { toolDefaults } from "../defaults.js";
|
|
12
13
|
import { styleFingerprint } from "../plan/features.js";
|
|
13
14
|
import { canonicalFor, dataCell, degreeValues, plainCell, resolveStyles } from "../plan/resolve.js";
|
|
14
15
|
import type {
|
|
@@ -469,6 +470,7 @@ export function isKeptGraphtyProperty(note: LossNote, exporter: GraphExporter):
|
|
|
469
470
|
|
|
470
471
|
/**
|
|
471
472
|
* The losses of an export with styles: W_STYLE_NOT_WRITTEN for every property the format does not write natively
|
|
473
|
+
* that at least one element carries a value of
|
|
472
474
|
* (all of them for an exporter without a `styles` member), and W_STYLE_RULES_NOT_KEPT when the block is not kept.
|
|
473
475
|
* @param extracted - the styles
|
|
474
476
|
* @param exporter - the exporter
|
|
@@ -495,7 +497,11 @@ function lossNotes(
|
|
|
495
497
|
notes.push(...pairNotes(snapshot, exporter, property, picture("edge", property as StyleProperty)));
|
|
496
498
|
}
|
|
497
499
|
} else {
|
|
498
|
-
|
|
500
|
+
// a rule whose property no element ends up carrying loses nothing
|
|
501
|
+
const note = notWrittenNote(target, property, exporter, picture);
|
|
502
|
+
if (note.count !== 0) {
|
|
503
|
+
notes.push(note);
|
|
504
|
+
}
|
|
499
505
|
}
|
|
500
506
|
}
|
|
501
507
|
}
|
|
@@ -516,7 +522,8 @@ function lossNotes(
|
|
|
516
522
|
}
|
|
517
523
|
|
|
518
524
|
/**
|
|
519
|
-
* W_STYLE_NOT_WRITTEN for every graph property the format does not write
|
|
525
|
+
* W_STYLE_NOT_WRITTEN for every graph property the format does not write, except one whose value is what the program
|
|
526
|
+
* the format is written for draws anyway (a white background for yEd): nothing is lost there.
|
|
520
527
|
* @param extracted - the styles
|
|
521
528
|
* @param exporter - the exporter
|
|
522
529
|
* @param caps - its style capabilities, or null
|
|
@@ -528,8 +535,11 @@ function graphLossNotes(
|
|
|
528
535
|
caps: StyleWriteCapabilities | null,
|
|
529
536
|
): LossNote[] {
|
|
530
537
|
const graphWritten = new Set<string>(caps?.graph ?? []);
|
|
531
|
-
|
|
532
|
-
|
|
538
|
+
const drawn: Readonly<Record<string, { readonly value: unknown } | undefined>> =
|
|
539
|
+
(caps?.tool === undefined ? null : toolDefaults(caps.tool))?.graph ?? {};
|
|
540
|
+
return Object.entries(extracted.styles.graph)
|
|
541
|
+
.filter(([property, value]) => !graphWritten.has(property) && drawn[property]?.value !== value)
|
|
542
|
+
.map(([property]) => property)
|
|
533
543
|
.map((property) =>
|
|
534
544
|
Object.freeze({
|
|
535
545
|
code: STYLE_ISSUE.NOT_WRITTEN,
|
package/src/styles/notes.ts
CHANGED
|
@@ -27,6 +27,7 @@ const PHRASES: ReadonlyMap<StyleNoteCode, string> = new Map<StyleNoteCode, strin
|
|
|
27
27
|
["W_STYLE_EXTRA_LABELS", "elements have more than one label; the first was kept"],
|
|
28
28
|
["W_STYLE_INHERIT_COLOR", "inherited colors cannot be expressed"],
|
|
29
29
|
["W_STYLE_NOT_CARRIED", "style properties have no counterpart and were not carried"],
|
|
30
|
+
["W_STYLE_ANNOTATION_SKIPPED", "annotations of a kind graph-io does not read were skipped"],
|
|
30
31
|
["W_STYLE_BAD_MAPPING", "mappings cannot be read"],
|
|
31
32
|
["W_STYLE_MAPPING_COLUMN_MISSING", "mappings read a column the file does not have"],
|
|
32
33
|
["W_STYLE_REFERENCE_CYCLE", "style references are circular or too deep"],
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import type { GraphSnapshot } from "@graphty/graph-format";
|
|
7
7
|
|
|
8
|
+
import { pairFolding } from "../../common/direction.js";
|
|
8
9
|
import type { ColumnRef, Scalar, StyleFeature, StyleFingerprint, StyleTarget } from "../types.js";
|
|
9
10
|
import { dataCell, degreeValues } from "./resolve.js";
|
|
10
11
|
|
|
@@ -17,11 +18,29 @@ const PARENT_COLUMN = "graphty.parent";
|
|
|
17
18
|
/** An integer column of at least this many values that fills a whole range is an index, not a quantity. */
|
|
18
19
|
const MIN_INDEX = 8;
|
|
19
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Whether the snapshot stores some undirected edge as a pair of directed rows.
|
|
23
|
+
* @param snapshot - the graph
|
|
24
|
+
* @returns true when an edge row folds into its mate
|
|
25
|
+
*/
|
|
26
|
+
function hasFoldedPairs(snapshot: GraphSnapshot): boolean {
|
|
27
|
+
const folding = pairFolding(snapshot);
|
|
28
|
+
if (!folding.expanded) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
for (let e = 0; e < snapshot.edgeCount; e++) {
|
|
32
|
+
if (folding.folded(e)) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
|
|
20
39
|
/**
|
|
21
40
|
* The candidate explaining columns of one target: every scalar attribute (the reserved `graphty.*` columns,
|
|
22
41
|
* coordinates and Cytoscape's selection state excepted), the group a node sits in as the style column `group`, and
|
|
23
42
|
* for nodes the degree (and the in- and out-degree of a directed graph) as `{ computed }` references, which follow
|
|
24
|
-
* later edits of the graph.
|
|
43
|
+
* later edits of the graph; no degree where an undirected edge is stored as a directed pair.
|
|
25
44
|
* @param snapshot - the graph
|
|
26
45
|
* @param target - nodes or edges
|
|
27
46
|
* @returns the features, in column order with the degrees last
|
|
@@ -46,7 +65,9 @@ export function featuresOf(snapshot: GraphSnapshot, target: StyleTarget): StyleF
|
|
|
46
65
|
out.push({ ref: { style: "group" }, values: group });
|
|
47
66
|
}
|
|
48
67
|
}
|
|
49
|
-
|
|
68
|
+
// An undirected edge stored as two directed rows (a mixed file's `*Edges`, a GEXF undirected edge in a directed
|
|
69
|
+
// graph) counts at both ends here and once in a reader that folds the pair, which no explanation may depend on.
|
|
70
|
+
if (target === "node" && n > 0 && !hasFoldedPairs(snapshot)) {
|
|
50
71
|
const kinds: ("degree" | "indegree" | "outdegree")[] = snapshot.directed
|
|
51
72
|
? ["degree", "indegree", "outdegree"]
|
|
52
73
|
: ["degree"];
|
package/src/styles/plan/index.ts
CHANGED
package/src/styles/plan/plan.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
import { StyleBudget } from "../budget.js";
|
|
10
10
|
import { STYLE_ISSUE } from "../codes.js";
|
|
11
|
-
import { toolDefaults } from "../defaults.js";
|
|
11
|
+
import { toolDefaults, type ToolDerivedDefault } from "../defaults.js";
|
|
12
12
|
import { StyleNotes } from "../notes.js";
|
|
13
13
|
import type {
|
|
14
14
|
ExtractedStyles,
|
|
@@ -52,7 +52,19 @@ export const MAX_STYLE_RULES = 16;
|
|
|
52
52
|
/** The most candidate features tested per target, fewest distinct values first. */
|
|
53
53
|
const MAX_FEATURES = 64;
|
|
54
54
|
/** Lengths a tool states in its own unit; they are left out when the file's unit differs. */
|
|
55
|
-
const LENGTHS: ReadonlySet<string> = new Set([
|
|
55
|
+
const LENGTHS: ReadonlySet<string> = new Set([
|
|
56
|
+
"width",
|
|
57
|
+
"height",
|
|
58
|
+
"borderWidth",
|
|
59
|
+
"labelSize",
|
|
60
|
+
"labelWrapWidth",
|
|
61
|
+
"labelPaddingX",
|
|
62
|
+
"labelPaddingY",
|
|
63
|
+
"labelOffsetX",
|
|
64
|
+
"labelOffsetY",
|
|
65
|
+
"fanSpacing",
|
|
66
|
+
"nodeGap",
|
|
67
|
+
]);
|
|
56
68
|
|
|
57
69
|
/**
|
|
58
70
|
* What the planner is given: the canonical per-element values a style reader produced, the rules the file declares,
|
|
@@ -172,7 +184,7 @@ export function planStyles(values: StyleValues, features: StyleFeatures, options
|
|
|
172
184
|
out,
|
|
173
185
|
allFeatures[target],
|
|
174
186
|
new Set(options.rawColumns?.[target] ?? []),
|
|
175
|
-
toolSet,
|
|
187
|
+
{ set: toolSet, derived: defaults?.derived ?? [] },
|
|
176
188
|
options.signal,
|
|
177
189
|
),
|
|
178
190
|
);
|
|
@@ -506,7 +518,9 @@ function passCandidate(
|
|
|
506
518
|
* @param out - the reader's output
|
|
507
519
|
* @param features - the candidate features
|
|
508
520
|
* @param rawNames - the data columns the values were read from
|
|
509
|
-
* @param
|
|
521
|
+
* @param tool - the tool's default values (or null) and its defaults that are rules
|
|
522
|
+
* @param tool.set - the tool's default values, or null
|
|
523
|
+
* @param tool.derived - the tool's defaults that are rules
|
|
510
524
|
* @param signal - cancels the planning
|
|
511
525
|
* @returns the target's rules, bottom to top
|
|
512
526
|
*/
|
|
@@ -515,10 +529,11 @@ function planTarget(
|
|
|
515
529
|
out: ReaderOutput | undefined,
|
|
516
530
|
features: readonly StyleFeature[],
|
|
517
531
|
rawNames: ReadonlySet<string>,
|
|
518
|
-
|
|
532
|
+
tool: { readonly set: Record<string, StyleValue> | null; readonly derived: readonly ToolDerivedDefault[] },
|
|
519
533
|
signal: AbortSignal | undefined,
|
|
520
534
|
): StyleRule[] {
|
|
521
535
|
const { target, n } = plan;
|
|
536
|
+
const toolSet = tool.set;
|
|
522
537
|
for (const [k, v] of out?.columns ?? []) {
|
|
523
538
|
plan.columns.set(k, v);
|
|
524
539
|
}
|
|
@@ -536,6 +551,7 @@ function planTarget(
|
|
|
536
551
|
set: toolSet,
|
|
537
552
|
},
|
|
538
553
|
];
|
|
554
|
+
toolRule.push(...derivedRules(plan, tool.derived, features, out?.rules ?? [], truth));
|
|
539
555
|
const declared = prepareDeclared(plan, out?.rules ?? [], features);
|
|
540
556
|
const declaredProps = new Set(declared.flatMap(writes));
|
|
541
557
|
|
|
@@ -631,6 +647,50 @@ function planTarget(
|
|
|
631
647
|
return drafts.map(finish);
|
|
632
648
|
}
|
|
633
649
|
|
|
650
|
+
/**
|
|
651
|
+
* The tool's defaults that are rules, for those the planner can state over the graph's own columns: a label from a
|
|
652
|
+
* column (Cytoscape's `name`, sigma's and vis-network's `label`) on every node that has a value there, when the reader
|
|
653
|
+
* gives no node a label. A default a reader already states with a tool rule of its own (Graphviz's `\N`, Gephi's
|
|
654
|
+
* source color), or a property the reader gives values for, is the reader's.
|
|
655
|
+
* @param plan - the target's state
|
|
656
|
+
* @param derived - the tool's defaults that are rules
|
|
657
|
+
* @param features - the candidate features, which hold the data columns' values
|
|
658
|
+
* @param given - the reader's rules
|
|
659
|
+
* @param truth - the reader's values per property
|
|
660
|
+
* @returns the rules, bottom to top
|
|
661
|
+
*/
|
|
662
|
+
function derivedRules(
|
|
663
|
+
plan: TargetPlan,
|
|
664
|
+
derived: readonly ToolDerivedDefault[],
|
|
665
|
+
features: readonly StyleFeature[],
|
|
666
|
+
given: readonly StyleRule[],
|
|
667
|
+
truth: ReadonlyMap<string, unknown>,
|
|
668
|
+
): Draft[] {
|
|
669
|
+
const stated = new Set([...given.filter((r) => r.origin === "tool").flatMap(writes), ...truth.keys()]);
|
|
670
|
+
const out: Draft[] = [];
|
|
671
|
+
for (const d of derived) {
|
|
672
|
+
if (plan.target !== "node" || d.kind !== "labelFromColumn" || stated.has("label")) {
|
|
673
|
+
continue;
|
|
674
|
+
}
|
|
675
|
+
const { column } = d;
|
|
676
|
+
const feature = features.find((f) => "data" in f.ref && f.ref.data === column);
|
|
677
|
+
if (feature?.values.some((v) => v !== null && v !== "") !== true) {
|
|
678
|
+
continue;
|
|
679
|
+
}
|
|
680
|
+
stated.add("label");
|
|
681
|
+
out.push({
|
|
682
|
+
id: uniqueId(plan, "node.tool.label"),
|
|
683
|
+
target: "node",
|
|
684
|
+
role: "passthrough",
|
|
685
|
+
origin: "tool",
|
|
686
|
+
where: { has: { data: column } },
|
|
687
|
+
map: { label: { kind: "passthrough", by: { data: column } } },
|
|
688
|
+
facts: { reason: "NODE_NAME" },
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
return out;
|
|
692
|
+
}
|
|
693
|
+
|
|
634
694
|
/**
|
|
635
695
|
* The inferred defaults: each property non-null and equal on every element; the others are left to explain. A
|
|
636
696
|
* property a declared rule writes is the declared rule's.
|
|
@@ -1009,12 +1069,16 @@ function enforceCap(
|
|
|
1009
1069
|
if (cands.length === 0) {
|
|
1010
1070
|
break;
|
|
1011
1071
|
}
|
|
1072
|
+
// the tool's defaults (its rule over every element) go last of the tool's rules: the copy holds only the
|
|
1073
|
+
// file's own values, so folding them would leave every element the file does not style with no value at all
|
|
1074
|
+
const everyone = (r: Draft): number => (r.origin === "tool" && "all" in r.where ? 1 : 0);
|
|
1012
1075
|
cands.sort((a, b) => {
|
|
1013
1076
|
const pa = a.role === "passthrough" ? 1 : 0;
|
|
1014
1077
|
const pb = b.role === "passthrough" ? 1 : 0;
|
|
1015
1078
|
return (
|
|
1016
1079
|
pa - pb ||
|
|
1017
1080
|
(FOLD_ORDER[a.origin] ?? 1) - (FOLD_ORDER[b.origin] ?? 1) ||
|
|
1081
|
+
everyone(a) - everyone(b) ||
|
|
1018
1082
|
ruleSize(b) - ruleSize(a) ||
|
|
1019
1083
|
drafts.indexOf(b) - drafts.indexOf(a)
|
|
1020
1084
|
);
|