@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
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
GraphFormatError,
|
|
23
23
|
type GraphMetaPatch,
|
|
24
24
|
type GraphSink,
|
|
25
|
+
type GraphSnapshot,
|
|
25
26
|
INVALID_INDEX,
|
|
26
27
|
type NodeId,
|
|
27
28
|
type U32,
|
|
@@ -61,6 +62,7 @@ import { agree, plural } from "../../common/plural.js";
|
|
|
61
62
|
import { ImportReportBuilder } from "../../common/report.js";
|
|
62
63
|
import { isNumericText, TextCellWriter, WIDENING_UNSUPPORTED_CODE } from "../../common/text.js";
|
|
63
64
|
import { isWeightField, parseWeightText } from "../../common/weights.js";
|
|
65
|
+
import type { ImporterPositions } from "../../positions/types.js";
|
|
64
66
|
import {
|
|
65
67
|
type CommonImportOptions,
|
|
66
68
|
type GraphChoiceOptions,
|
|
@@ -68,7 +70,8 @@ import {
|
|
|
68
70
|
type ImportInput,
|
|
69
71
|
type ImportReport,
|
|
70
72
|
} from "../../types.js";
|
|
71
|
-
import {
|
|
73
|
+
import { type DrawWindow, type PajekDrawOptions, resolvePajekDraw } from "./draw.js";
|
|
74
|
+
import { PAJEK_POINTS_PER_UNIT, pajekStyles } from "./styles.js";
|
|
72
75
|
import {
|
|
73
76
|
decodeCharacterReferences,
|
|
74
77
|
isCommentOrBlank,
|
|
@@ -93,6 +96,7 @@ import {
|
|
|
93
96
|
VALUE_COLUMN,
|
|
94
97
|
VALUE_FIELD,
|
|
95
98
|
VECTOR_COLUMN,
|
|
99
|
+
VOIDING_KEYS,
|
|
96
100
|
} from "./syntax.js";
|
|
97
101
|
|
|
98
102
|
/**
|
|
@@ -106,6 +110,14 @@ export interface PajekImportOptions extends GraphChoiceOptions, CommonImportOpti
|
|
|
106
110
|
* @defaultValue "auto"
|
|
107
111
|
*/
|
|
108
112
|
firstVertex?: 0 | 1 | "auto" | undefined;
|
|
113
|
+
/**
|
|
114
|
+
* How the network is drawn, which Pajek keeps in its ini file and Draw menu rather than in the file: the Draw
|
|
115
|
+
* window's size (Pajek stretches the 0..1 coordinates across it, one axis at a time), the partition and vectors of
|
|
116
|
+
* Draw > Network + Partition (+ Vector), and the Draw window's options by their ini names. Read for the
|
|
117
|
+
* coordinates' scale and the file's styles; without it a file is drawn as Pajek's defaults draw it in a 500 x 500
|
|
118
|
+
* window.
|
|
119
|
+
*/
|
|
120
|
+
pajekDraw?: PajekDrawOptions | undefined;
|
|
109
121
|
}
|
|
110
122
|
|
|
111
123
|
/**
|
|
@@ -302,9 +314,10 @@ function spellsDecl(): ColumnDecl {
|
|
|
302
314
|
* The position column declaration (design section 5.2: f64 x 3, role position, units "file"), with
|
|
303
315
|
* its spelling for `extractPositions()`.
|
|
304
316
|
* @param sourceDims - 2 or 3, the coordinate count of the first vertex line with coordinates
|
|
317
|
+
* @param window - the Draw window the coordinates are stretched to
|
|
305
318
|
* @returns a fresh declaration
|
|
306
319
|
*/
|
|
307
|
-
function positionDecl(sourceDims: number): ColumnDecl {
|
|
320
|
+
function positionDecl(sourceDims: number, window: DrawWindow): ColumnDecl {
|
|
308
321
|
return {
|
|
309
322
|
name: POSITION_COLUMN,
|
|
310
323
|
dtype: "f64",
|
|
@@ -313,11 +326,24 @@ function positionDecl(sourceDims: number): ColumnDecl {
|
|
|
313
326
|
role: "position",
|
|
314
327
|
origin: { format: "pajek", id: "coordinates" },
|
|
315
328
|
// Pajek draws y downward (USAir97.net has Deadhorse, Alaska at y 0.10 and Miami at 0.53),
|
|
316
|
-
// centers depth on 0.5, and NetworkX writes "0.0 0.0" for a node with no position
|
|
317
|
-
|
|
329
|
+
// centers depth on 0.5, and NetworkX writes "0.0 0.0" for a node with no position; one unit
|
|
330
|
+
// is the Draw window's width in points across and its height down (500 each by default,
|
|
331
|
+
// PAJEK_POINTS_PER_UNIT): Pajek stretches 0..1 to the window one axis at a time
|
|
332
|
+
extra: {
|
|
333
|
+
sourceDims,
|
|
334
|
+
units: "file",
|
|
335
|
+
pxPerUnit: window.width,
|
|
336
|
+
...(window.height === window.width ? {} : { pxPerUnitY: window.height }),
|
|
337
|
+
yAxis: "down",
|
|
338
|
+
zOrigin: 0.5,
|
|
339
|
+
zeroUnplaced: true,
|
|
340
|
+
},
|
|
318
341
|
};
|
|
319
342
|
}
|
|
320
343
|
|
|
344
|
+
/** The Draw window a file is drawn in without `pajekDraw`: the square Pajek's EPS export maps 0..1 to. */
|
|
345
|
+
const DEFAULT_WINDOW: DrawWindow = { width: PAJEK_POINTS_PER_UNIT, height: PAJEK_POINTS_PER_UNIT };
|
|
346
|
+
|
|
321
347
|
/** A problem with one line, recorded as an issue by the per-line catch. */
|
|
322
348
|
class LineError extends Error {
|
|
323
349
|
readonly category: "parse-error" | "validation-error" | "missing-value";
|
|
@@ -401,6 +427,17 @@ class PajekParser {
|
|
|
401
427
|
|
|
402
428
|
private readonly firstVertex: NonNullable<PajekImportOptions["firstVertex"]>;
|
|
403
429
|
|
|
430
|
+
/** The Draw window the coordinates are stretched to. */
|
|
431
|
+
private readonly window: DrawWindow;
|
|
432
|
+
|
|
433
|
+
/** The `% graphty.styles` block kept for the styles, or null. */
|
|
434
|
+
keptBlock: string | null = null;
|
|
435
|
+
|
|
436
|
+
/**
|
|
437
|
+
* The vertices whose line Pajek 6.02 draws with none of its parameters (`VOIDING_KEYS`), by index, for the styles.
|
|
438
|
+
*/
|
|
439
|
+
readonly voided: number[] = [];
|
|
440
|
+
|
|
404
441
|
private section: Section = "none";
|
|
405
442
|
|
|
406
443
|
/** The direction of the current line section. */
|
|
@@ -505,13 +542,16 @@ class PajekParser {
|
|
|
505
542
|
* @param report - the report
|
|
506
543
|
* @param options - the resolved common options
|
|
507
544
|
* @param firstVertex - the firstVertex format option
|
|
545
|
+
* @param window - the Draw window the coordinates are stretched to
|
|
508
546
|
*/
|
|
509
547
|
constructor(
|
|
510
548
|
sink: GraphSink,
|
|
511
549
|
report: ImportReportBuilder,
|
|
512
550
|
options: ResolvedImportOptions,
|
|
513
551
|
firstVertex: 0 | 1 | "auto",
|
|
552
|
+
window: DrawWindow = DEFAULT_WINDOW,
|
|
514
553
|
) {
|
|
554
|
+
this.window = window;
|
|
515
555
|
this.sink = sink;
|
|
516
556
|
this.report = report;
|
|
517
557
|
this.options = options;
|
|
@@ -532,7 +572,8 @@ class PajekParser {
|
|
|
532
572
|
const trimmed = text.trimStart();
|
|
533
573
|
if (trimmed.startsWith(PAJEK_STYLE_COMMENT)) {
|
|
534
574
|
this.styleBlockKept = true;
|
|
535
|
-
this.
|
|
575
|
+
this.keptBlock = trimmed.slice(PAJEK_STYLE_COMMENT.length);
|
|
576
|
+
this.report.keepForStyles(this.keptBlock);
|
|
536
577
|
}
|
|
537
578
|
}
|
|
538
579
|
|
|
@@ -1025,6 +1066,58 @@ class PajekParser {
|
|
|
1025
1066
|
*/
|
|
1026
1067
|
private vertexLine(text: string, line: number): void {
|
|
1027
1068
|
const tokens = this.tokens(text, "node", line);
|
|
1069
|
+
const { k, pos } = this.vertexNumber(tokens, line);
|
|
1070
|
+
// parse everything before writing anything
|
|
1071
|
+
let i = 1;
|
|
1072
|
+
let label: string | null = null;
|
|
1073
|
+
if (tokens.length > 1 && !startsWithCoordinates(text, tokens)) {
|
|
1074
|
+
label = this.labelOf(tokens[1], k, line);
|
|
1075
|
+
i = 2;
|
|
1076
|
+
}
|
|
1077
|
+
const { xyz, dims, next } = this.vertexCoordinates(tokens, i, k);
|
|
1078
|
+
i = next;
|
|
1079
|
+
this.checkCoordinates(text, tokens, i, dims === 2 && label !== null, k, line);
|
|
1080
|
+
let shape: string | null = null;
|
|
1081
|
+
if (i < tokens.length && isShapeKeyword(tokens[i])) {
|
|
1082
|
+
shape = tokens[i].toLowerCase();
|
|
1083
|
+
i++;
|
|
1084
|
+
}
|
|
1085
|
+
const extras = this.extras(tokens, i, "node", line);
|
|
1086
|
+
shape = extras.shape ?? shape;
|
|
1087
|
+
const restored = this.restoredId(extras);
|
|
1088
|
+
this.createNodes();
|
|
1089
|
+
// write
|
|
1090
|
+
const repeated = this.markVertexSeen(pos, k, line);
|
|
1091
|
+
const index = this.vertexIndex(pos, k, label, restored, repeated, line);
|
|
1092
|
+
if (shape === null && dims > 0 && extras.keys.length > 0 && VOIDING_KEYS.has(extras.keys[0])) {
|
|
1093
|
+
this.voided.push(index);
|
|
1094
|
+
}
|
|
1095
|
+
if (label !== null) {
|
|
1096
|
+
this.labelHandle = this.nodeHandle(this.labelHandle, LABEL_DECL, line);
|
|
1097
|
+
this.sink.setNodeValue(this.labelHandle, index, label);
|
|
1098
|
+
}
|
|
1099
|
+
if (dims > 0) {
|
|
1100
|
+
this.writePosition(index, dims, xyz, k, line);
|
|
1101
|
+
}
|
|
1102
|
+
if (shape !== null) {
|
|
1103
|
+
this.writeShape(index, shape, line);
|
|
1104
|
+
}
|
|
1105
|
+
for (let p = 0; p < extras.keys.length; p++) {
|
|
1106
|
+
this.writeParameter("node", extras.keys[p], index, extras.values[p]);
|
|
1107
|
+
}
|
|
1108
|
+
if (extras.spells !== null) {
|
|
1109
|
+
this.nodeSpellsHandle = this.nodeHandle(this.nodeSpellsHandle, spellsDecl(), line);
|
|
1110
|
+
this.sink.setNodeValue(this.nodeSpellsHandle, index, extras.spells);
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
/**
|
|
1115
|
+
* A vertex line's number, checked: it starts the line and is in the declared range.
|
|
1116
|
+
* @param tokens - the line's tokens
|
|
1117
|
+
* @param line - the line number
|
|
1118
|
+
* @returns the vertex number and its position
|
|
1119
|
+
*/
|
|
1120
|
+
private vertexNumber(tokens: readonly string[], line: number): { k: number; pos: number } {
|
|
1028
1121
|
if (!isVertexNumber(tokens[0])) {
|
|
1029
1122
|
this.report.counts.skippedNodes++;
|
|
1030
1123
|
throw new LineError(
|
|
@@ -1047,28 +1140,30 @@ class PajekParser {
|
|
|
1047
1140
|
`vertex ${k} is outside ${this.base}..${this.base + this.vertexCount - 1}`,
|
|
1048
1141
|
);
|
|
1049
1142
|
}
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1143
|
+
return { k, pos };
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
/**
|
|
1147
|
+
* A vertex line's coordinates: two or three numbers, or none; a single one is an error.
|
|
1148
|
+
* @param tokens - the line's tokens
|
|
1149
|
+
* @param i - where the coordinates would start
|
|
1150
|
+
* @param k - the vertex number
|
|
1151
|
+
* @returns x, y and z (0 when absent), how many were read, and the index after them
|
|
1152
|
+
*/
|
|
1153
|
+
private vertexCoordinates(
|
|
1154
|
+
tokens: readonly string[],
|
|
1155
|
+
i: number,
|
|
1156
|
+
k: number,
|
|
1157
|
+
): { xyz: [number, number, number]; dims: number; next: number } {
|
|
1061
1158
|
if (i + 1 < tokens.length && isNumericText(tokens[i]) && isNumericText(tokens[i + 1])) {
|
|
1062
|
-
x = Number(tokens[i]);
|
|
1063
|
-
y = Number(tokens[i + 1]);
|
|
1064
|
-
i
|
|
1065
|
-
|
|
1066
|
-
if (i < tokens.length && isNumericText(tokens[i])) {
|
|
1067
|
-
z = Number(tokens[i]);
|
|
1068
|
-
i++;
|
|
1069
|
-
dims = 3;
|
|
1159
|
+
const x = Number(tokens[i]);
|
|
1160
|
+
const y = Number(tokens[i + 1]);
|
|
1161
|
+
if (i + 2 < tokens.length && isNumericText(tokens[i + 2])) {
|
|
1162
|
+
return { xyz: [x, y, Number(tokens[i + 2])], dims: 3, next: i + 3 };
|
|
1070
1163
|
}
|
|
1071
|
-
|
|
1164
|
+
return { xyz: [x, y, 0], dims: 2, next: i + 2 };
|
|
1165
|
+
}
|
|
1166
|
+
if (i < tokens.length && isNumericText(tokens[i])) {
|
|
1072
1167
|
this.report.counts.skippedNodes++;
|
|
1073
1168
|
throw new LineError(
|
|
1074
1169
|
"parse-error",
|
|
@@ -1076,39 +1171,60 @@ class PajekParser {
|
|
|
1076
1171
|
`vertex ${k}: a single coordinate "${tokens[i]}"; coordinates are x y [z]`,
|
|
1077
1172
|
);
|
|
1078
1173
|
}
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
if (repeated) {
|
|
1174
|
+
return { xyz: [0, 0, 0], dims: 0, next: i };
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
/**
|
|
1178
|
+
* Marks a vertex's position as having a line, warning when it already had one.
|
|
1179
|
+
* @param pos - the vertex's position
|
|
1180
|
+
* @param k - the vertex number
|
|
1181
|
+
* @param line - the line number
|
|
1182
|
+
* @returns whether the vertex already had a line
|
|
1183
|
+
*/
|
|
1184
|
+
private markVertexSeen(pos: number, k: number, line: number): boolean {
|
|
1185
|
+
if (this.seen[pos] !== 0) {
|
|
1092
1186
|
this.report.warning(
|
|
1093
1187
|
"merged",
|
|
1094
1188
|
PAJEK_ISSUE.DUPLICATE_NODE,
|
|
1095
1189
|
`vertex ${k} has more than one line; the later values overwrite`,
|
|
1096
1190
|
{ line, element: String(k) },
|
|
1097
1191
|
);
|
|
1098
|
-
|
|
1099
|
-
this.seen[pos] = 1;
|
|
1100
|
-
this.seenCount++;
|
|
1192
|
+
return true;
|
|
1101
1193
|
}
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1194
|
+
this.seen[pos] = 1;
|
|
1195
|
+
this.seenCount++;
|
|
1196
|
+
return false;
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
/**
|
|
1200
|
+
* The node index a vertex line writes to, creating the node when its id is deferred to its line.
|
|
1201
|
+
* @param pos - the vertex's position
|
|
1202
|
+
* @param k - the vertex number
|
|
1203
|
+
* @param label - the line's label, or null
|
|
1204
|
+
* @param restored - the original id the line carries, or null
|
|
1205
|
+
* @param repeated - whether the vertex already had a line
|
|
1206
|
+
* @param line - the line number
|
|
1207
|
+
* @returns the node index
|
|
1208
|
+
*/
|
|
1209
|
+
private vertexIndex(
|
|
1210
|
+
pos: number,
|
|
1211
|
+
k: number,
|
|
1212
|
+
label: string | null,
|
|
1213
|
+
restored: string | null,
|
|
1214
|
+
repeated: boolean,
|
|
1215
|
+
line: number,
|
|
1216
|
+
): number {
|
|
1217
|
+
const { idOfPos } = this;
|
|
1218
|
+
if (idOfPos !== null && !repeated && this.options.nodeIdFrom === "label") {
|
|
1219
|
+
return this.deferredNode(idOfPos, pos, k, label, line, "label");
|
|
1220
|
+
}
|
|
1221
|
+
if (idOfPos !== null && idOfPos[pos] === undefined) {
|
|
1106
1222
|
// restore mode: the earlier positions without a line yet get their numbers first, so the
|
|
1107
1223
|
// index order is the vertex number order whatever the line order (the identity id map
|
|
1108
1224
|
// of an ordered file); then this vertex with its original id, or its number
|
|
1109
1225
|
for (let p = this.filledBelow; p < pos; p++) {
|
|
1110
|
-
if (
|
|
1111
|
-
this.numberedNode(
|
|
1226
|
+
if (idOfPos[p] === undefined) {
|
|
1227
|
+
this.numberedNode(idOfPos, p);
|
|
1112
1228
|
}
|
|
1113
1229
|
}
|
|
1114
1230
|
// after the loop on purpose: a throw part-way leaves the mark at its smaller, still
|
|
@@ -1116,49 +1232,47 @@ class PajekParser {
|
|
|
1116
1232
|
if (pos > this.filledBelow) {
|
|
1117
1233
|
this.filledBelow = pos;
|
|
1118
1234
|
}
|
|
1119
|
-
|
|
1120
|
-
} else {
|
|
1121
|
-
index = this.indexOfPos[pos];
|
|
1122
|
-
if (restored !== null && !repeated) {
|
|
1123
|
-
// an out-of-order line: the vertex already exists under its number
|
|
1124
|
-
this.report.warning(
|
|
1125
|
-
"coercion",
|
|
1126
|
-
PAJEK_ISSUE.ORIGINAL_ID_UNRESTORED,
|
|
1127
|
-
`vertex ${k} carries ${ORIGINAL_ID_KEY} ${JSON.stringify(restored)} but a later vertex's line came first and created it under its number; the original id is not restored`,
|
|
1128
|
-
{ line, element: String(k) },
|
|
1129
|
-
);
|
|
1130
|
-
}
|
|
1131
|
-
}
|
|
1132
|
-
const { sink } = this;
|
|
1133
|
-
if (label !== null) {
|
|
1134
|
-
if (this.labelHandle === INVALID_INDEX) {
|
|
1135
|
-
this.labelHandle = declareResolved(sink, "node", LABEL_DECL, this.report, { line }).handle;
|
|
1136
|
-
}
|
|
1137
|
-
sink.setNodeValue(this.labelHandle, index, label);
|
|
1235
|
+
return this.deferredNode(idOfPos, pos, k, restored, line, "originalId");
|
|
1138
1236
|
}
|
|
1139
|
-
if (
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
if (this.shapeHandle === INVALID_INDEX) {
|
|
1148
|
-
this.shapeHandle = declareResolved(sink, "node", SHAPE_DECL, this.report, { line }).handle;
|
|
1149
|
-
}
|
|
1150
|
-
sink.setNodeValue(this.shapeHandle, index, shape);
|
|
1151
|
-
}
|
|
1152
|
-
}
|
|
1153
|
-
for (let p = 0; p < extras.keys.length; p++) {
|
|
1154
|
-
this.writeParameter("node", extras.keys[p], index, extras.values[p]);
|
|
1237
|
+
if (restored !== null && !repeated) {
|
|
1238
|
+
// an out-of-order line: the vertex already exists under its number
|
|
1239
|
+
this.report.warning(
|
|
1240
|
+
"coercion",
|
|
1241
|
+
PAJEK_ISSUE.ORIGINAL_ID_UNRESTORED,
|
|
1242
|
+
`vertex ${k} carries ${ORIGINAL_ID_KEY} ${JSON.stringify(restored)} but a later vertex's line came first and created it under its number; the original id is not restored`,
|
|
1243
|
+
{ line, element: String(k) },
|
|
1244
|
+
);
|
|
1155
1245
|
}
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1246
|
+
return this.indexOfPos[pos];
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
/**
|
|
1250
|
+
* A node column's handle, declared on first use.
|
|
1251
|
+
* @param handle - the handle so far, or INVALID_INDEX
|
|
1252
|
+
* @param decl - the column's declaration
|
|
1253
|
+
* @param line - the line number
|
|
1254
|
+
* @returns the handle
|
|
1255
|
+
*/
|
|
1256
|
+
private nodeHandle(handle: ColumnHandle, decl: Parameters<typeof declareResolved>[2], line: number): ColumnHandle {
|
|
1257
|
+
return handle === INVALID_INDEX
|
|
1258
|
+
? declareResolved(this.sink, "node", decl, this.report, { line }).handle
|
|
1259
|
+
: handle;
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
/**
|
|
1263
|
+
* Writes a vertex's shape keyword: to the shape column, or to an earlier `shape "<text>"` parameter's column.
|
|
1264
|
+
* @param index - the node index
|
|
1265
|
+
* @param shape - the keyword
|
|
1266
|
+
* @param line - the line number
|
|
1267
|
+
*/
|
|
1268
|
+
private writeShape(index: number, shape: string, line: number): void {
|
|
1269
|
+
if (this.shapeHandle === INVALID_INDEX && this.nodeParams.has(SHAPE_COLUMN)) {
|
|
1270
|
+
// an earlier `shape "<text>"` parameter owns the column: the keyword is written there
|
|
1271
|
+
this.writeParameter("node", SHAPE_COLUMN, index, shape);
|
|
1272
|
+
return;
|
|
1161
1273
|
}
|
|
1274
|
+
this.shapeHandle = this.nodeHandle(this.shapeHandle, SHAPE_DECL, line);
|
|
1275
|
+
this.sink.setNodeValue(this.shapeHandle, index, shape);
|
|
1162
1276
|
}
|
|
1163
1277
|
|
|
1164
1278
|
/**
|
|
@@ -1238,7 +1352,9 @@ class PajekParser {
|
|
|
1238
1352
|
private writePosition(index: number, dims: number, point: readonly number[], k: number, line: number): void {
|
|
1239
1353
|
if (this.positionHandle === INVALID_INDEX) {
|
|
1240
1354
|
this.coordDims = dims;
|
|
1241
|
-
this.positionHandle = declareResolved(this.sink, "node", positionDecl(dims), this.report, {
|
|
1355
|
+
this.positionHandle = declareResolved(this.sink, "node", positionDecl(dims, this.window), this.report, {
|
|
1356
|
+
line,
|
|
1357
|
+
}).handle;
|
|
1242
1358
|
} else if (dims !== this.coordDims) {
|
|
1243
1359
|
this.report.warnOnce(
|
|
1244
1360
|
"validation-error",
|
|
@@ -1654,7 +1770,7 @@ class PajekParser {
|
|
|
1654
1770
|
for (let i = start; i < tokens.length;) {
|
|
1655
1771
|
const token = tokens[i];
|
|
1656
1772
|
if (token.startsWith("[")) {
|
|
1657
|
-
extras.spells = this.intervals(token, domain);
|
|
1773
|
+
extras.spells = this.intervals(token, domain, line);
|
|
1658
1774
|
i++;
|
|
1659
1775
|
continue;
|
|
1660
1776
|
}
|
|
@@ -1677,8 +1793,12 @@ class PajekParser {
|
|
|
1677
1793
|
}
|
|
1678
1794
|
seen.add(token);
|
|
1679
1795
|
extras.keys.push(token);
|
|
1680
|
-
|
|
1681
|
-
|
|
1796
|
+
// a color written as three fractions, `c 0.700 0.700 0.700` (Pajek's course data, 1CRN.NET), is one
|
|
1797
|
+
// value, kept as written; a key is never a number, so the reading is unambiguous. Pajek 6.02 reads no
|
|
1798
|
+
// color from it (the style reader leaves the line its carried or default color)
|
|
1799
|
+
const triple = COLOR_KEYS.has(token) ? colorTriple(tokens, i + 1) : null;
|
|
1800
|
+
extras.values.push(triple ?? tokens[i + 1]);
|
|
1801
|
+
i += triple === null ? 2 : 4;
|
|
1682
1802
|
}
|
|
1683
1803
|
return extras;
|
|
1684
1804
|
}
|
|
@@ -1709,12 +1829,15 @@ class PajekParser {
|
|
|
1709
1829
|
}
|
|
1710
1830
|
|
|
1711
1831
|
/**
|
|
1712
|
-
* The spells of a row's interval token
|
|
1832
|
+
* The spells of a row's interval token. A token not closed by "]" skips the row; a closed one
|
|
1833
|
+
* whose times cannot be read (`[287-?]`, lin-rel4.net) is reported and dropped, and the rest of
|
|
1834
|
+
* the row (its label, coordinates and parameters) is kept.
|
|
1713
1835
|
* @param token - the token, starting with "["
|
|
1714
|
-
* @param domain - what is skipped when the token is
|
|
1715
|
-
* @
|
|
1836
|
+
* @param domain - what is skipped when the token is not closed
|
|
1837
|
+
* @param line - the line number
|
|
1838
|
+
* @returns the spells, or null for an empty `[]`, which is no spell at all, and for a dropped one
|
|
1716
1839
|
*/
|
|
1717
|
-
private intervals(token: string, domain: "node" | "edge"): [number, number][] | null {
|
|
1840
|
+
private intervals(token: string, domain: "node" | "edge", line: number): [number, number][] | null {
|
|
1718
1841
|
if (!isIntervalToken(token)) {
|
|
1719
1842
|
this.skip(domain);
|
|
1720
1843
|
throw new LineError(
|
|
@@ -1727,12 +1850,13 @@ class PajekParser {
|
|
|
1727
1850
|
const spells = parseIntervals(token);
|
|
1728
1851
|
return spells.length === 0 ? null : spells;
|
|
1729
1852
|
} catch (err) {
|
|
1730
|
-
this.
|
|
1731
|
-
throw new LineError(
|
|
1853
|
+
this.report.error(
|
|
1732
1854
|
"validation-error",
|
|
1733
1855
|
PAJEK_ISSUE.INTERVAL,
|
|
1734
|
-
err instanceof Error ? err.message : String(err)
|
|
1856
|
+
`${err instanceof Error ? err.message : String(err)}; the interval is dropped and the rest of the line kept`,
|
|
1857
|
+
{ line },
|
|
1735
1858
|
);
|
|
1859
|
+
return null;
|
|
1736
1860
|
}
|
|
1737
1861
|
}
|
|
1738
1862
|
|
|
@@ -1773,6 +1897,21 @@ class PajekParser {
|
|
|
1773
1897
|
}
|
|
1774
1898
|
}
|
|
1775
1899
|
|
|
1900
|
+
/** The parameters that hold a color, which a file may also write as three fractions `r g b`. */
|
|
1901
|
+
const COLOR_KEYS: ReadonlySet<string> = new Set(["ic", "bc", "lc", "c"]);
|
|
1902
|
+
|
|
1903
|
+
/**
|
|
1904
|
+
* A color written as three numbers from 0 to 1 at a row's tokens, as one value `r g b`.
|
|
1905
|
+
* @param tokens - the row's tokens
|
|
1906
|
+
* @param at - the first of the three
|
|
1907
|
+
* @returns the color text, or null when the three tokens are not such numbers
|
|
1908
|
+
*/
|
|
1909
|
+
function colorTriple(tokens: readonly string[], at: number): string | null {
|
|
1910
|
+
const parts = tokens.slice(at, at + 3);
|
|
1911
|
+
const fraction = (t: string): boolean => /^[01]?(?:\.\d+)?$/.test(t) && t !== "" && Number(t) <= 1;
|
|
1912
|
+
return parts.length === 3 && parts.every(fraction) ? parts.join(" ") : null;
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1776
1915
|
/**
|
|
1777
1916
|
* Whether a vertex line has coordinates but no label: the token after the vertex number is bare
|
|
1778
1917
|
* (not quoted) and starts a run of exactly two numbers, which cannot be a label and one
|
|
@@ -1845,11 +1984,31 @@ function headSection(text: string): string | null {
|
|
|
1845
1984
|
*/
|
|
1846
1985
|
export const pajekImporter: GraphImporter<PajekImportOptions> = Object.freeze({
|
|
1847
1986
|
format: "pajek",
|
|
1848
|
-
options: Object.freeze(["firstVertex"]),
|
|
1987
|
+
options: Object.freeze(["firstVertex", "pajekDraw"]),
|
|
1849
1988
|
extensions: Object.freeze([".net", ".paj"]),
|
|
1850
1989
|
mimeTypes: Object.freeze(["text/x-pajek", "text/plain"]),
|
|
1851
1990
|
styles: pajekStyles,
|
|
1852
1991
|
|
|
1992
|
+
/**
|
|
1993
|
+
* Where Pajek 6.02 draws a network whose vertices have no coordinates: round a circle in vertex order, the first
|
|
1994
|
+
* on the left, the rest going clockwise on screen (y down), at radius 0.4 about the middle of the Draw window
|
|
1995
|
+
* (pajek-iliad: 311 vertices 200 points from the middle of its 500-point window). A file with coordinates is read
|
|
1996
|
+
* from its position column.
|
|
1997
|
+
* @param snapshot - the imported graph
|
|
1998
|
+
* @returns the circle for a file with no coordinates, else null
|
|
1999
|
+
*/
|
|
2000
|
+
positions(snapshot: GraphSnapshot): ImporterPositions | null {
|
|
2001
|
+
if (snapshot.nodes.byRole("position") !== null) {
|
|
2002
|
+
return null;
|
|
2003
|
+
}
|
|
2004
|
+
return {
|
|
2005
|
+
units: "file",
|
|
2006
|
+
pxPerUnit: PAJEK_POINTS_PER_UNIT,
|
|
2007
|
+
yAxis: "down",
|
|
2008
|
+
unplacedCircle: { center: [0.5, 0.5], radius: 0.4, startDegrees: 180, direction: 1 },
|
|
2009
|
+
};
|
|
2010
|
+
},
|
|
2011
|
+
|
|
1853
2012
|
/**
|
|
1854
2013
|
* Confidence that the input is a Pajek network: it starts with `*Vertices` (or `*Network`),
|
|
1855
2014
|
* after any `%` comment lines.
|
|
@@ -1883,10 +2042,11 @@ export const pajekImporter: GraphImporter<PajekImportOptions> = Object.freeze({
|
|
|
1883
2042
|
}
|
|
1884
2043
|
const resolved = resolveImportOptions(options, DEFAULTS);
|
|
1885
2044
|
const firstVertex = firstVertexOption(options?.firstVertex);
|
|
2045
|
+
const draw = resolvePajekDraw(options?.pajekDraw);
|
|
1886
2046
|
const report = new ImportReportBuilder("pajek", resolved.errorLimit);
|
|
1887
2047
|
reportSinkOptions(sink, options, report);
|
|
1888
2048
|
reportUnusedOptions(options, report, USED_OPTIONS);
|
|
1889
|
-
const parser = new PajekParser(sink, report, resolved, firstVertex);
|
|
2049
|
+
const parser = new PajekParser(sink, report, resolved, firstVertex, draw ?? DEFAULT_WINDOW);
|
|
1890
2050
|
const reader = new LineReader(input, report, resolved);
|
|
1891
2051
|
// after the first network: only its successors' headers are counted
|
|
1892
2052
|
let rest: NetworkCounter | null = null;
|
|
@@ -1907,6 +2067,9 @@ export const pajekImporter: GraphImporter<PajekImportOptions> = Object.freeze({
|
|
|
1907
2067
|
}
|
|
1908
2068
|
}
|
|
1909
2069
|
parser.finish();
|
|
2070
|
+
if (draw !== null || parser.voided.length > 0) {
|
|
2071
|
+
report.keepForStyles({ block: parser.keptBlock, pajekDraw: draw ?? undefined, voided: parser.voided });
|
|
2072
|
+
}
|
|
1910
2073
|
if (rest !== null) {
|
|
1911
2074
|
const objects =
|
|
1912
2075
|
rest.objects > 0 ? `; ${rest.objects} *Partition / *Vector object(s) after them are not read` : "";
|
|
@@ -1937,13 +2100,25 @@ export const pajekImporter: GraphImporter<PajekImportOptions> = Object.freeze({
|
|
|
1937
2100
|
): Promise<ImportReport[]> {
|
|
1938
2101
|
const resolved = resolveImportOptions(options, DEFAULTS);
|
|
1939
2102
|
const firstVertex = firstVertexOption(options?.firstVertex);
|
|
2103
|
+
const draw = resolvePajekDraw(options?.pajekDraw);
|
|
1940
2104
|
const reports = [new ImportReportBuilder("pajek", resolved.errorLimit)];
|
|
1941
2105
|
reportUnusedOptions(options, reports[0], USED_OPTIONS);
|
|
1942
2106
|
const open = (): PajekParser => {
|
|
1943
2107
|
const report = reports[reports.length - 1];
|
|
1944
2108
|
const sink = sinkFor(reports.length - 1);
|
|
1945
2109
|
reportSinkOptions(sink, options, report);
|
|
1946
|
-
return new PajekParser(sink, report, resolved, firstVertex);
|
|
2110
|
+
return new PajekParser(sink, report, resolved, firstVertex, draw ?? DEFAULT_WINDOW);
|
|
2111
|
+
};
|
|
2112
|
+
const close = (p: PajekParser): void => {
|
|
2113
|
+
p.finish();
|
|
2114
|
+
const last = reports.at(-1);
|
|
2115
|
+
if (last !== undefined && (draw !== null || p.voided.length > 0)) {
|
|
2116
|
+
last.keepForStyles({
|
|
2117
|
+
block: p.keptBlock,
|
|
2118
|
+
pajekDraw: draw ?? undefined,
|
|
2119
|
+
voided: p.voided,
|
|
2120
|
+
});
|
|
2121
|
+
}
|
|
1947
2122
|
};
|
|
1948
2123
|
let parser = open();
|
|
1949
2124
|
// decoding issues belong to the file, so they go to the first network's report
|
|
@@ -1952,7 +2127,7 @@ export const pajekImporter: GraphImporter<PajekImportOptions> = Object.freeze({
|
|
|
1952
2127
|
for await (const raw of reader) {
|
|
1953
2128
|
const text = withoutStrayBom(raw);
|
|
1954
2129
|
if (parser.line(text, reader.line)) {
|
|
1955
|
-
parser
|
|
2130
|
+
close(parser);
|
|
1956
2131
|
reports.push(new ImportReportBuilder("pajek", resolved.errorLimit));
|
|
1957
2132
|
parser = open();
|
|
1958
2133
|
parser.line(text, reader.line);
|
|
@@ -1962,7 +2137,7 @@ export const pajekImporter: GraphImporter<PajekImportOptions> = Object.freeze({
|
|
|
1962
2137
|
throwIfAborted(resolved.signal);
|
|
1963
2138
|
}
|
|
1964
2139
|
}
|
|
1965
|
-
parser
|
|
2140
|
+
close(parser);
|
|
1966
2141
|
throwIfAborted(resolved.signal);
|
|
1967
2142
|
return reports.map((r) => r.finish());
|
|
1968
2143
|
},
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @module @graphty/graph-io/pajek
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
export type { PajekDrawOptions } from "./draw.js";
|
|
7
8
|
export { PAJEK_LOSS, pajekExporter, type PajekExportOptions } from "./exporter.js";
|
|
8
9
|
export { PAJEK_ISSUE, pajekImporter, type PajekImportOptions } from "./importer.js";
|
|
9
10
|
export { PAJEK_STYLE_CAPABILITIES } from "./styles.js";
|