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