@graphty/graph-io 0.3.47 → 0.3.48
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-C2riR4NT.js} +2 -2
- package/dist/chunks/{approximations-wWjCRzKj.js.map → approximations-C2riR4NT.js.map} +1 -1
- package/dist/chunks/{block-DiGq58c3.js → block-Cu22ewuS.js} +92 -21
- package/dist/chunks/block-Cu22ewuS.js.map +1 -0
- package/dist/chunks/{choose--jM0yYCo.js → choose-Cdx6Enl2.js} +3 -3
- package/dist/chunks/{choose--jM0yYCo.js.map → choose-Cdx6Enl2.js.map} +1 -1
- package/dist/chunks/codes-CV_Bhcyi.js +153 -0
- package/dist/chunks/codes-CV_Bhcyi.js.map +1 -0
- package/dist/chunks/{constants-BKwqelYD.js → constants-D0LqcsLJ.js} +2 -2
- package/dist/chunks/{constants-BKwqelYD.js.map → constants-D0LqcsLJ.js.map} +1 -1
- package/dist/chunks/context-cgmmOxZ2.js +663 -0
- package/dist/chunks/context-cgmmOxZ2.js.map +1 -0
- package/dist/chunks/credentials-BiQsnMTb.js +347 -0
- package/dist/chunks/credentials-BiQsnMTb.js.map +1 -0
- package/dist/chunks/cx-export-BEeF6ymo.js +259 -0
- package/dist/chunks/cx-export-BEeF6ymo.js.map +1 -0
- package/dist/chunks/descriptor-BJ-W0Jd-.js +137 -0
- package/dist/chunks/descriptor-BJ-W0Jd-.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/{emit-CwU8cUmG.js → emit-CD8xnY8s.js} +70 -10
- package/dist/chunks/emit-CD8xnY8s.js.map +1 -0
- package/dist/chunks/{escape-CgzxiYPg.js → escape-DH2Egt-l.js} +12 -12
- package/dist/chunks/{escape-CgzxiYPg.js.map → escape-DH2Egt-l.js.map} +1 -1
- package/dist/chunks/{export-BvqAXCKh.js → export-CZ7VRm4I.js} +53 -1443
- package/dist/chunks/export-CZ7VRm4I.js.map +1 -0
- package/dist/chunks/{exporter-DndFlGSa.js → exporter-BIdaoIgh.js} +7 -6
- package/dist/chunks/{exporter-DndFlGSa.js.map → exporter-BIdaoIgh.js.map} +1 -1
- package/dist/chunks/{exporter-CJgfhF-l.js → exporter-ChjL5fmP.js} +8 -7
- package/dist/chunks/{exporter-CJgfhF-l.js.map → exporter-ChjL5fmP.js.map} +1 -1
- package/dist/chunks/{exporter--Mk9gXCJ.js → exporter-Dcw7Ldtq.js} +6 -4
- package/dist/chunks/{exporter--Mk9gXCJ.js.map → exporter-Dcw7Ldtq.js.map} +1 -1
- package/dist/chunks/exporter-DtVU80Fa.js +1008 -0
- package/dist/chunks/exporter-DtVU80Fa.js.map +1 -0
- package/dist/chunks/{exporter-CrDWIyiq.js → exporter-bxxjOrDZ.js} +11 -9
- package/dist/chunks/{exporter-CrDWIyiq.js.map → exporter-bxxjOrDZ.js.map} +1 -1
- package/dist/chunks/format-BMS-1Nxb.js +64 -0
- package/dist/chunks/format-BMS-1Nxb.js.map +1 -0
- package/dist/chunks/{generic-Dq1ntt9q.js → generic-CP6YD34u.js} +4 -4
- package/dist/chunks/{generic-Dq1ntt9q.js.map → generic-CP6YD34u.js.map} +1 -1
- package/dist/chunks/{importer-DiZRmOQG.js → importer-B87_fmVx.js} +13 -17
- package/dist/chunks/importer-B87_fmVx.js.map +1 -0
- package/dist/chunks/{importer-BSvfrX_h.js → importer-Bji2MeWr.js} +18 -1014
- package/dist/chunks/importer-Bji2MeWr.js.map +1 -0
- package/dist/chunks/{importer-COTK9Tsl.js → importer-CB_zV5_L.js} +14 -11
- package/dist/chunks/importer-CB_zV5_L.js.map +1 -0
- package/dist/chunks/{importer-e6LGpqHB.js → importer-CVT-JyDE.js} +12 -9
- package/dist/chunks/importer-CVT-JyDE.js.map +1 -0
- package/dist/chunks/{importer-yh_aBCU6.js → importer-Cyy6UseH.js} +7 -6
- package/dist/chunks/{importer-yh_aBCU6.js.map → importer-Cyy6UseH.js.map} +1 -1
- package/dist/chunks/{importer-iFYPEKaJ.js → importer-DPZDN40-.js} +14 -10
- package/dist/chunks/{importer-iFYPEKaJ.js.map → importer-DPZDN40-.js.map} +1 -1
- package/dist/chunks/{importer-CMmeMWlC.js → importer-e3huMZbm.js} +8 -260
- package/dist/chunks/importer-e3huMZbm.js.map +1 -0
- package/dist/chunks/input-Ccg9I22A.js +1397 -0
- package/dist/chunks/input-Ccg9I22A.js.map +1 -0
- package/dist/chunks/{json-elements-DJZRZ6jd.js → json-elements-By172SVq.js} +4 -4
- package/dist/chunks/{json-elements-DJZRZ6jd.js.map → json-elements-By172SVq.js.map} +1 -1
- package/dist/chunks/{lexicon-CT69Kd87.js → lexicon-u2SI5xcx.js} +19 -5
- package/dist/chunks/lexicon-u2SI5xcx.js.map +1 -0
- package/dist/chunks/{ontology-export-G4MqRdux.js → ontology-export-BwgMyuF0.js} +4 -3
- package/dist/chunks/{ontology-export-G4MqRdux.js.map → ontology-export-BwgMyuF0.js.map} +1 -1
- package/dist/chunks/{records-CiaWZrFH.js → records-Cgvxz-Vx.js} +2 -2
- package/dist/chunks/{records-CiaWZrFH.js.map → records-Cgvxz-Vx.js.map} +1 -1
- package/dist/chunks/{format-BpQBx8MZ.js → report-CgdsL9Hb.js} +72 -129
- package/dist/chunks/report-CgdsL9Hb.js.map +1 -0
- package/dist/chunks/sigv4-LkAzsLAu.js +247 -0
- package/dist/chunks/sigv4-LkAzsLAu.js.map +1 -0
- package/dist/chunks/{styles-BQnsga7p.js → styles-CaABMoO1.js} +76 -43
- package/dist/chunks/styles-CaABMoO1.js.map +1 -0
- package/dist/chunks/{styles-D3fRphrO.js → styles-P_gmFAOi.js} +101 -21
- package/dist/chunks/styles-P_gmFAOi.js.map +1 -0
- package/dist/chunks/{styles-yed-BF5x3_Y5.js → styles-yed-Cs1nmrjn.js} +60 -20
- package/dist/chunks/styles-yed-Cs1nmrjn.js.map +1 -0
- package/dist/chunks/{text-CzJNFOS9.js → text-BuKQVMz2.js} +2 -2
- package/dist/chunks/{text-CzJNFOS9.js.map → text-BuKQVMz2.js.map} +1 -1
- package/dist/chunks/{writer-DMKvthQE.js → writer-DvHTl36J.js} +5 -4
- package/dist/chunks/writer-DvHTl36J.js.map +1 -0
- 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 +2 -2
- package/dist/gexf.js +7 -5
- package/dist/gexf.js.map +1 -1
- package/dist/gml.js +16 -13
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +1181 -224
- package/dist/graph-io.js.map +1 -1
- package/dist/graphml.js +3 -3
- package/dist/json.js +1 -1
- 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/sources-cypher.d.ts +1 -0
- package/dist/sources-cypher.js +1236 -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 +1367 -0
- package/dist/sources-rest.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/styles.d.ts.map +1 -1
- package/dist/src/formats/cx/styles.js +1 -0
- package/dist/src/formats/cx/styles.js.map +1 -1
- package/dist/src/formats/dot/styles.d.ts.map +1 -1
- package/dist/src/formats/dot/styles.js +3 -1
- package/dist/src/formats/dot/styles.js.map +1 -1
- package/dist/src/formats/gexf/styles.d.ts +29 -12
- package/dist/src/formats/gexf/styles.d.ts.map +1 -1
- package/dist/src/formats/gexf/styles.js +160 -31
- package/dist/src/formats/gexf/styles.js.map +1 -1
- package/dist/src/formats/gml/styles.d.ts.map +1 -1
- package/dist/src/formats/gml/styles.js +5 -4
- 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 +3 -3
- package/dist/src/formats/graphml/styles-plain.js.map +1 -1
- package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-yed.js +89 -19
- package/dist/src/formats/graphml/styles-yed.js.map +1 -1
- package/dist/src/formats/pajek/styles.d.ts.map +1 -1
- package/dist/src/formats/pajek/styles.js +1 -0
- package/dist/src/formats/pajek/styles.js.map +1 -1
- package/dist/src/formats/xgmml/styles.d.ts.map +1 -1
- package/dist/src/formats/xgmml/styles.js +1 -0
- package/dist/src/formats/xgmml/styles.js.map +1 -1
- package/dist/src/index.d.ts +8 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -1
- package/dist/src/index.js.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 +47 -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 +739 -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 +119 -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 +405 -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 +106 -0
- package/dist/src/sources/cypher/query-builder.d.ts.map +1 -0
- package/dist/src/sources/cypher/query-builder.js +236 -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 +64 -0
- package/dist/src/sources/ids.d.ts.map +1 -0
- package/dist/src/sources/ids.js +64 -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 +28 -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 +71 -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 +635 -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 +24 -0
- package/dist/src/sources/sigv4.d.ts.map +1 -0
- package/dist/src/sources/sigv4.js +182 -0
- package/dist/src/sources/sigv4.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 +665 -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/canon/enums.d.ts.map +1 -1
- package/dist/src/styles/canon/enums.js +1 -0
- package/dist/src/styles/canon/enums.js.map +1 -1
- package/dist/src/styles/cyjs/cascade.d.ts.map +1 -1
- package/dist/src/styles/cyjs/cascade.js +68 -2
- 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 +2 -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 +18 -7
- package/dist/src/styles/cyjs/emit.js.map +1 -1
- package/dist/src/styles/cyjs/mappers.d.ts +4 -1
- package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
- package/dist/src/styles/cyjs/mappers.js +2 -0
- package/dist/src/styles/cyjs/mappers.js.map +1 -1
- package/dist/src/styles/cytoscape/emit.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/emit.js +59 -7
- package/dist/src/styles/cytoscape/emit.js.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.d.ts +6 -0
- package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.js +26 -2
- package/dist/src/styles/cytoscape/lexicon.js.map +1 -1
- package/dist/src/styles/cytoscape/resolve.d.ts +4 -1
- package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/resolve.js +10 -6
- 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 +30 -0
- package/dist/src/styles/defaults.d.ts.map +1 -1
- package/dist/src/styles/defaults.js +45 -4
- package/dist/src/styles/defaults.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/writer.d.ts.map +1 -1
- package/dist/src/styles/io/writer.js +7 -3
- package/dist/src/styles/io/writer.js.map +1 -1
- package/dist/src/styles/plan/resolve.d.ts +2 -1
- package/dist/src/styles/plan/resolve.d.ts.map +1 -1
- package/dist/src/styles/plan/resolve.js +13 -2
- package/dist/src/styles/plan/resolve.js.map +1 -1
- package/dist/src/styles/types.d.ts +19 -2
- package/dist/src/styles/types.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.js +15 -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 +11 -11
- package/dist/xgmml.js +3 -3
- package/docs/samples/people.json +6 -0
- package/package.json +29 -4
- package/src/common/report.ts +27 -7
- package/src/formats/cx/styles.ts +1 -0
- package/src/formats/dot/styles.ts +3 -1
- package/src/formats/gexf/styles.ts +185 -37
- package/src/formats/gml/styles.ts +5 -4
- package/src/formats/graphml/styles-plain.ts +3 -9
- package/src/formats/graphml/styles-yed.ts +93 -20
- package/src/formats/pajek/styles.ts +1 -0
- package/src/formats/xgmml/styles.ts +1 -0
- package/src/index.ts +90 -0
- package/src/registry.ts +326 -1
- package/src/sources/builtins.ts +56 -0
- package/src/sources/codes.ts +235 -0
- package/src/sources/context.ts +893 -0
- package/src/sources/credentials.ts +409 -0
- package/src/sources/cypher/descriptor.ts +125 -0
- package/src/sources/cypher/flatten.ts +323 -0
- package/src/sources/cypher/index.ts +498 -0
- package/src/sources/cypher/params.ts +41 -0
- package/src/sources/cypher/profiles.ts +78 -0
- package/src/sources/cypher/query-builder.ts +294 -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 +74 -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 +29 -0
- package/src/sources/registry.ts +325 -0
- package/src/sources/rest/descriptor.ts +74 -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 +760 -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 +207 -0
- package/src/sources/testing.ts +210 -0
- package/src/sources/types.ts +741 -0
- package/src/styles/canon/enums.ts +1 -0
- package/src/styles/cyjs/cascade.ts +81 -2
- package/src/styles/cyjs/defaults-table.ts +2 -0
- package/src/styles/cyjs/emit.ts +18 -7
- package/src/styles/cyjs/mappers.ts +6 -1
- package/src/styles/cytoscape/emit.ts +61 -7
- package/src/styles/cytoscape/lexicon.ts +28 -2
- package/src/styles/cytoscape/resolve.ts +22 -6
- package/src/styles/cytoscape/translate.ts +11 -11
- package/src/styles/defaults.ts +93 -4
- package/src/styles/io/block.ts +10 -0
- package/src/styles/io/writer.ts +8 -3
- package/src/styles/plan/resolve.ts +14 -2
- package/src/styles/types.ts +28 -2
- package/src/styles/vocabulary.ts +15 -1
- package/src/types.ts +19 -5
- package/dist/chunks/block-DiGq58c3.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/format-BpQBx8MZ.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/lexicon-CT69Kd87.js.map +0 -1
- package/dist/chunks/styles-BQnsga7p.js.map +0 -1
- package/dist/chunks/styles-D3fRphrO.js.map +0 -1
- package/dist/chunks/styles-yed-BF5x3_Y5.js.map +0 -1
- package/dist/chunks/writer-DMKvthQE.js.map +0 -1
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@graphty/graph-io/sources/cypher`: the Cypher source and its `neo4j` and `neptune` presets
|
|
3
|
+
* (design sections 10, 11, 12.2 and 12.4). One query builder, one result flattener and one type
|
|
4
|
+
* mapper over four transports: Neo4j's Query API, Bolt (through the optional peer neo4j-driver),
|
|
5
|
+
* Neptune Database over HTTPS and Neptune Analytics. The presets fix the transports and the server
|
|
6
|
+
* profile and hold no query code of their own. Experimental.
|
|
7
|
+
* @module @graphty/graph-io/sources/cypher
|
|
8
|
+
*/
|
|
9
|
+
import { throwIfAborted } from "../../common/input.js";
|
|
10
|
+
import { ImportError } from "../../types.js";
|
|
11
|
+
import { SOURCE_ISSUE } from "../codes.js";
|
|
12
|
+
import { defineSource } from "../define.js";
|
|
13
|
+
import { failOn } from "../fail.js";
|
|
14
|
+
import { CYPHER_SOURCE_ID, NEO4J_SOURCE_ID, NEPTUNE_SOURCE_ID } from "../ids.js";
|
|
15
|
+
import { sha256Hex } from "../sigv4.js";
|
|
16
|
+
import { CYPHER_DESCRIPTOR, NEO4J_DESCRIPTOR, NEPTUNE_DESCRIPTOR } from "./descriptor.js";
|
|
17
|
+
import { canonicalRows, Collector, compareText, requireGraph, writeCollected } from "./flatten.js";
|
|
18
|
+
import { neo4jProfile, neptuneProfile, serverFacts } from "./profiles.js";
|
|
19
|
+
import { checkedInteger, counts, DEFAULT_PAGE_SIZE, edgePage, MAX_DEPTH, MAX_PAGE_SIZE, neighborhood, nodePage, quoted, } from "./query-builder.js";
|
|
20
|
+
import { boltTransport } from "./transports/bolt.js";
|
|
21
|
+
import { neptuneAnalyticsTransport } from "./transports/neptune-analytics.js";
|
|
22
|
+
import { neptuneHttpsTransport } from "./transports/neptune-https.js";
|
|
23
|
+
import { queryApiTransport } from "./transports/query-api.js";
|
|
24
|
+
export { CYPHER_DESCRIPTOR, NEO4J_DESCRIPTOR, NEPTUNE_DESCRIPTOR } from "./descriptor.js";
|
|
25
|
+
export { cypherIdentifier } from "./query-builder.js";
|
|
26
|
+
/** The directions an expansion may follow. */
|
|
27
|
+
const DIRECTIONS = new Set(["out", "in", "both"]);
|
|
28
|
+
/**
|
|
29
|
+
* A list parameter: an array, or one value. A string is one item, never split, since an id or a
|
|
30
|
+
* label may hold any character.
|
|
31
|
+
* @param value - the value
|
|
32
|
+
* @param name - the parameter
|
|
33
|
+
* @param report - the load's report
|
|
34
|
+
* @returns the items
|
|
35
|
+
*/
|
|
36
|
+
function listParam(value, name, report) {
|
|
37
|
+
if (value === undefined || value === null) {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
if (Array.isArray(value)) {
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
if (typeof value === "string" || typeof value === "number") {
|
|
44
|
+
return [value];
|
|
45
|
+
}
|
|
46
|
+
return failOn(report, "E_SOURCE_PARAM", `parameter ${name}: not a list`, { name, reason: "type" });
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The transport a load uses: the params' choice, else the endpoint's scheme, else the preset's.
|
|
50
|
+
* @param params - the params
|
|
51
|
+
* @param ctx - the context
|
|
52
|
+
* @param preset - the preset
|
|
53
|
+
* @returns the transport name
|
|
54
|
+
*/
|
|
55
|
+
function transportName(params, ctx, preset) {
|
|
56
|
+
if (params.transport !== undefined) {
|
|
57
|
+
return params.transport;
|
|
58
|
+
}
|
|
59
|
+
const scheme = ctx.endpoint?.protocol ?? "";
|
|
60
|
+
if (scheme.startsWith("bolt") || scheme.startsWith("neo4j")) {
|
|
61
|
+
return "bolt";
|
|
62
|
+
}
|
|
63
|
+
if (ctx.endpoint?.hostname.endsWith(".neptune-graph.amazonaws.com") === true) {
|
|
64
|
+
return "neptune-analytics";
|
|
65
|
+
}
|
|
66
|
+
return preset.transport;
|
|
67
|
+
}
|
|
68
|
+
/** One load's connection, filters and profile. */
|
|
69
|
+
class Reader {
|
|
70
|
+
/**
|
|
71
|
+
* Set up a read.
|
|
72
|
+
* @param transport - the transport
|
|
73
|
+
* @param params - the params
|
|
74
|
+
* @param ctx - the context
|
|
75
|
+
*/
|
|
76
|
+
constructor(transport, params, ctx) {
|
|
77
|
+
this.transport = transport;
|
|
78
|
+
this.params = params;
|
|
79
|
+
this.ctx = ctx;
|
|
80
|
+
this.known = null;
|
|
81
|
+
this.degree = true;
|
|
82
|
+
const { report } = ctx;
|
|
83
|
+
this.idProperty = params.idProperty ?? null;
|
|
84
|
+
this.filters = {
|
|
85
|
+
labels: listParam(params.labels, "labels", report).map((l) => quoted(l, "labels", report)),
|
|
86
|
+
relationshipTypes: listParam(params.relationshipTypes, "relationshipTypes", report).map((t) => quoted(t, "relationshipTypes", report)),
|
|
87
|
+
idProperty: this.idProperty === null ? null : quoted(this.idProperty, "idProperty", report),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The server's profile: the params' choice, else the transport's detection.
|
|
92
|
+
* @returns the profile
|
|
93
|
+
*/
|
|
94
|
+
async profile() {
|
|
95
|
+
if (this.known === null) {
|
|
96
|
+
const detected = await this.transport.profile();
|
|
97
|
+
this.known = detected;
|
|
98
|
+
if (this.params.profile === "neptune") {
|
|
99
|
+
this.known = neptuneProfile(detected.version);
|
|
100
|
+
}
|
|
101
|
+
else if (this.params.profile === "neo4j" && detected.name !== "neo4j") {
|
|
102
|
+
this.known = neo4jProfile(detected.version);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return this.known;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Run a generated statement with the degree hint, and without it once if the server refuses it.
|
|
109
|
+
* @param build - builds the statement, with or without the hint
|
|
110
|
+
* @param parameters - its parameters
|
|
111
|
+
* @returns the result, collected
|
|
112
|
+
*/
|
|
113
|
+
async generated(build, parameters) {
|
|
114
|
+
let result;
|
|
115
|
+
try {
|
|
116
|
+
result = await this.transport.run(build(this.degree), parameters);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
if (!this.degree || !(err instanceof ImportError) || err.issue?.code !== SOURCE_ISSUE.E_SOURCE_QUERY) {
|
|
120
|
+
throw err;
|
|
121
|
+
}
|
|
122
|
+
// the pattern comprehension of the degree hint is not every server's (Neptune, unverified)
|
|
123
|
+
this.degree = false;
|
|
124
|
+
result = await this.transport.run(build(false), parameters);
|
|
125
|
+
}
|
|
126
|
+
const collected = new Collector();
|
|
127
|
+
collected.add(result, true);
|
|
128
|
+
return { collected, rows: result.rows, fields: result.fields };
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* The pages of a read, as `mode` asks.
|
|
132
|
+
* @param cursor - where to resume
|
|
133
|
+
* @yields one page at a time
|
|
134
|
+
*/
|
|
135
|
+
async *pages(cursor) {
|
|
136
|
+
const { params, ctx } = this;
|
|
137
|
+
const { report } = ctx;
|
|
138
|
+
const mode = params.mode ?? (typeof params.query === "string" && params.query !== "" ? "query" : "all");
|
|
139
|
+
if (mode === "query") {
|
|
140
|
+
if (typeof params.query !== "string" || params.query.trim() === "") {
|
|
141
|
+
failOn(report, "E_SOURCE_PARAM", "mode query needs a query", { name: "query", reason: "required" });
|
|
142
|
+
}
|
|
143
|
+
const result = await this.transport.run(params.query, params.parameters ?? {});
|
|
144
|
+
const collected = new Collector();
|
|
145
|
+
collected.add(result, false);
|
|
146
|
+
requireGraph(result, collected, report);
|
|
147
|
+
yield { collected, next: null };
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const profile = await this.profile();
|
|
151
|
+
if (mode === "neighborhood") {
|
|
152
|
+
const ids = listParam(params.ids, "ids", report);
|
|
153
|
+
if (ids.length === 0) {
|
|
154
|
+
failOn(report, "E_SOURCE_PARAM", "mode neighborhood needs ids", { name: "ids", reason: "required" });
|
|
155
|
+
}
|
|
156
|
+
const shape = {
|
|
157
|
+
depth: checkedInteger(params.depth ?? 1, "depth", 1, MAX_DEPTH, report),
|
|
158
|
+
direction: "both",
|
|
159
|
+
limit: ctx.limits.maxNodes === undefined
|
|
160
|
+
? null
|
|
161
|
+
: checkedInteger(ctx.limits.maxNodes, "maxNodes", 1, Number.MAX_SAFE_INTEGER, report),
|
|
162
|
+
};
|
|
163
|
+
const { collected } = await this.generated((d) => neighborhood(profile, this.filters, shape, d), { ids });
|
|
164
|
+
yield { collected, next: null };
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
yield* this.everything(profile, cursor);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Mode "all": the nodes, then the relationships with their ends, each paged by keyset on the
|
|
171
|
+
* id expression (never SKIP), so a page is stable under unrelated writes.
|
|
172
|
+
* @param profile - the server's profile
|
|
173
|
+
* @param cursor - where to resume
|
|
174
|
+
* @yields one page at a time
|
|
175
|
+
*/
|
|
176
|
+
async *everything(profile, cursor) {
|
|
177
|
+
const { params, ctx } = this;
|
|
178
|
+
const size = checkedInteger(params.pageSize ?? DEFAULT_PAGE_SIZE, "pageSize", 1, MAX_PAGE_SIZE, ctx.report);
|
|
179
|
+
let phase = cursor?.phase === "edges" ? "edges" : "nodes";
|
|
180
|
+
let after = cursor?.after ?? null;
|
|
181
|
+
const total = params.countFirst === true && cursor === null ? await this.total() : undefined;
|
|
182
|
+
for (;;) {
|
|
183
|
+
const nodes = phase === "nodes";
|
|
184
|
+
const { collected, rows, fields } = await this.generated((d) => nodes
|
|
185
|
+
? nodePage(profile, this.filters, size, after !== null, d)
|
|
186
|
+
: edgePage(profile, this.filters, size, after !== null), after === null ? {} : { after });
|
|
187
|
+
const next = nextCursor(phase, rows, fields, Number(size));
|
|
188
|
+
yield { collected, next };
|
|
189
|
+
const { counts: done } = ctx.report;
|
|
190
|
+
ctx.progress(done.nodes + done.edges, total, "items");
|
|
191
|
+
if (next === null) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
phase = next.phase === "edges" ? "edges" : "nodes";
|
|
195
|
+
after = next.after ?? null;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* How many nodes and relationships the filters match, for progress.
|
|
200
|
+
* @returns the count
|
|
201
|
+
*/
|
|
202
|
+
async total() {
|
|
203
|
+
const [n, r] = counts(this.filters);
|
|
204
|
+
const [a, b] = await Promise.all([this.transport.run(n, {}), this.transport.run(r, {})]);
|
|
205
|
+
return Number(a.rows[0]?.[0] ?? 0) + Number(b.rows[0]?.[0] ?? 0);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* The server facts and validators of what was read.
|
|
209
|
+
* @param lines - the canonical rows
|
|
210
|
+
* @returns the server facts and validators
|
|
211
|
+
*/
|
|
212
|
+
async facts(lines) {
|
|
213
|
+
const profile = await this.profile();
|
|
214
|
+
const contentHash = await sha256Hex([...lines].sort(compareText).join("\n"));
|
|
215
|
+
return {
|
|
216
|
+
server: serverFacts(profile),
|
|
217
|
+
validators: profile.version === null ? { contentHash } : { contentHash, serverVersion: profile.version },
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Where mode "all" resumes after a page: the same phase after the page's last key while pages are
|
|
223
|
+
* full, then the relationships from the start, then nothing.
|
|
224
|
+
* @param phase - the page's phase
|
|
225
|
+
* @param rows - the page's rows
|
|
226
|
+
* @param fields - the page's field names
|
|
227
|
+
* @param size - the page size
|
|
228
|
+
* @returns the next cursor, or null at the end
|
|
229
|
+
*/
|
|
230
|
+
function nextCursor(phase, rows, fields, size) {
|
|
231
|
+
const last = rows.at(-1)?.[fields.indexOf("key")];
|
|
232
|
+
const key = typeof last === "string" || typeof last === "number" ? last : null;
|
|
233
|
+
if (rows.length >= size && key !== null) {
|
|
234
|
+
return { phase, after: key };
|
|
235
|
+
}
|
|
236
|
+
return phase === "nodes" ? { phase: "edges", after: null } : null;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Open a read: pick the transport, check what it needs, connect.
|
|
240
|
+
* @param params - the params
|
|
241
|
+
* @param ctx - the context
|
|
242
|
+
* @param preset - the preset
|
|
243
|
+
* @returns the reader
|
|
244
|
+
*/
|
|
245
|
+
async function open(params, ctx, preset) {
|
|
246
|
+
throwIfAborted(ctx.signal);
|
|
247
|
+
const input = { ctx, params, m: { long: params.long ?? "f64", report: ctx.report } };
|
|
248
|
+
const name = transportName(params, ctx, preset);
|
|
249
|
+
let transport;
|
|
250
|
+
switch (name) {
|
|
251
|
+
case "bolt":
|
|
252
|
+
transport = await boltTransport(input);
|
|
253
|
+
break;
|
|
254
|
+
case "neptune-https":
|
|
255
|
+
transport = neptuneHttpsTransport(input);
|
|
256
|
+
break;
|
|
257
|
+
case "neptune-analytics":
|
|
258
|
+
transport = neptuneAnalyticsTransport(input);
|
|
259
|
+
break;
|
|
260
|
+
default:
|
|
261
|
+
transport = queryApiTransport(input);
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
try {
|
|
265
|
+
return new Reader(transport, params, ctx);
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
await transport.close();
|
|
269
|
+
throw err;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Run something with a reader, closing it after.
|
|
274
|
+
* @param params - the params
|
|
275
|
+
* @param ctx - the context
|
|
276
|
+
* @param preset - the preset
|
|
277
|
+
* @param body - what to do
|
|
278
|
+
* @returns what the body returned
|
|
279
|
+
*/
|
|
280
|
+
async function withReader(params, ctx, preset, body) {
|
|
281
|
+
const reader = await open(params, ctx, preset);
|
|
282
|
+
try {
|
|
283
|
+
return await body(reader);
|
|
284
|
+
}
|
|
285
|
+
finally {
|
|
286
|
+
await reader.transport.close();
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Make the Cypher source or one of its presets.
|
|
291
|
+
* @param preset - the id, descriptor and default transport
|
|
292
|
+
* @returns the source
|
|
293
|
+
*/
|
|
294
|
+
function cypher(preset) {
|
|
295
|
+
return defineSource({
|
|
296
|
+
id: preset.id,
|
|
297
|
+
descriptor: preset.descriptor,
|
|
298
|
+
import: (params, sink, ctx) => withReader(params, ctx, preset, async (reader) => {
|
|
299
|
+
const lines = [];
|
|
300
|
+
let next = null;
|
|
301
|
+
for await (const page of reader.pages(ctx.cursor)) {
|
|
302
|
+
writeCollected(page.collected, sink, reader.idProperty, ctx.report, ctx.signal);
|
|
303
|
+
lines.push(...canonicalRows(page.collected, reader.idProperty));
|
|
304
|
+
({ next } = page);
|
|
305
|
+
if (next !== null && ctx.limits.reached()) {
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return ctx.finish({ next, ...(await reader.facts(lines)) });
|
|
310
|
+
}),
|
|
311
|
+
expand: (request, sink, ctx) => withReader(request.params, ctx, preset, (reader) => expand(reader, request, sink)),
|
|
312
|
+
probe: (params, ctx) => withReader(params, ctx, preset, async (reader) => {
|
|
313
|
+
const profile = await reader.transport.probe();
|
|
314
|
+
return { ok: true, server: serverFacts(profile) };
|
|
315
|
+
}),
|
|
316
|
+
validate: (params, seen, ctx) => withReader(params, ctx, preset, async (reader) => {
|
|
317
|
+
const lines = [];
|
|
318
|
+
for await (const page of reader.pages(null)) {
|
|
319
|
+
lines.push(...canonicalRows(page.collected, reader.idProperty));
|
|
320
|
+
}
|
|
321
|
+
const { validators } = await reader.facts(lines);
|
|
322
|
+
let status = "unverifiable";
|
|
323
|
+
if (seen.contentHash !== undefined) {
|
|
324
|
+
status = seen.contentHash === validators.contentHash ? "current" : "changed";
|
|
325
|
+
}
|
|
326
|
+
return { status, via: "hash", validators };
|
|
327
|
+
}),
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Fetch the neighborhood of some nodes into the sink.
|
|
332
|
+
* @param reader - the reader
|
|
333
|
+
* @param request - the seeds and how far to go
|
|
334
|
+
* @param sink - where to write
|
|
335
|
+
* @returns the report
|
|
336
|
+
*/
|
|
337
|
+
async function expand(reader, request, sink) {
|
|
338
|
+
const { ctx } = reader;
|
|
339
|
+
const { report } = ctx;
|
|
340
|
+
if (request.ids.length === 0) {
|
|
341
|
+
failOn(report, "E_SOURCE_PARAM", "an expansion needs seed ids", { name: "ids", reason: "required" });
|
|
342
|
+
}
|
|
343
|
+
const direction = request.direction ?? "both";
|
|
344
|
+
if (!DIRECTIONS.has(direction)) {
|
|
345
|
+
failOn(report, "E_SOURCE_PARAM", "direction must be out, in or both", { name: "direction", reason: "enum" });
|
|
346
|
+
}
|
|
347
|
+
const limit = request.limit ?? ctx.limits.maxNodes;
|
|
348
|
+
const after = ctx.cursor?.after ?? null;
|
|
349
|
+
const shape = {
|
|
350
|
+
depth: checkedInteger(request.depth ?? 1, "depth", 1, MAX_DEPTH, report),
|
|
351
|
+
direction,
|
|
352
|
+
limit: limit === undefined ? null : checkedInteger(limit, "limit", 1, Number.MAX_SAFE_INTEGER, report),
|
|
353
|
+
after: after !== null,
|
|
354
|
+
};
|
|
355
|
+
const filters = request.relationshipTypes === undefined
|
|
356
|
+
? reader.filters
|
|
357
|
+
: {
|
|
358
|
+
...reader.filters,
|
|
359
|
+
relationshipTypes: request.relationshipTypes.map((t) => quoted(t, "relationshipTypes", report)),
|
|
360
|
+
};
|
|
361
|
+
const profile = await reader.profile();
|
|
362
|
+
const { collected, rows, fields } = await reader.generated((d) => neighborhood(profile, filters, shape, d), {
|
|
363
|
+
ids: request.ids,
|
|
364
|
+
...(after === null ? {} : { after }),
|
|
365
|
+
});
|
|
366
|
+
writeCollected(collected, sink, reader.idProperty, report, ctx.signal);
|
|
367
|
+
const { server } = await reader.facts([]);
|
|
368
|
+
// A full page may have more behind it: hand back where the next one starts.
|
|
369
|
+
const last = rows.at(-1)?.[fields.indexOf("key")];
|
|
370
|
+
const full = shape.limit !== null && rows.length >= Number(shape.limit);
|
|
371
|
+
const next = full && (typeof last === "string" || typeof last === "number") ? { after: last } : null;
|
|
372
|
+
return ctx.finish({ server, next });
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* The generic Cypher source, for any openCypher server: Neo4j over its Query API or Bolt, Neptune
|
|
376
|
+
* over HTTPS. The transport comes from `params.transport`, else the endpoint (`bolt+s://` is Bolt,
|
|
377
|
+
* a `neptune-graph` host is Neptune Analytics), else the Query API. Experimental.
|
|
378
|
+
* @category Network sources
|
|
379
|
+
*/
|
|
380
|
+
export const cypherSource = cypher({
|
|
381
|
+
id: CYPHER_SOURCE_ID,
|
|
382
|
+
descriptor: CYPHER_DESCRIPTOR,
|
|
383
|
+
transport: "query-api",
|
|
384
|
+
});
|
|
385
|
+
/**
|
|
386
|
+
* The Neo4j preset: the Query API (Neo4j 5.26 and later, Aura), or Bolt for a `bolt:` or
|
|
387
|
+
* `bolt+s:` endpoint (any Neo4j; needs the optional peer neo4j-driver). Experimental.
|
|
388
|
+
* @category Network sources
|
|
389
|
+
*/
|
|
390
|
+
export const neo4jSource = cypher({
|
|
391
|
+
id: NEO4J_SOURCE_ID,
|
|
392
|
+
descriptor: NEO4J_DESCRIPTOR,
|
|
393
|
+
transport: "query-api",
|
|
394
|
+
});
|
|
395
|
+
/**
|
|
396
|
+
* The Amazon Neptune preset: Neptune Database over HTTPS, or Neptune Analytics for a
|
|
397
|
+
* `neptune-graph` host. Node only; sign requests with `credentials.awsSigV4`. Experimental.
|
|
398
|
+
* @category Network sources
|
|
399
|
+
*/
|
|
400
|
+
export const neptuneSource = cypher({
|
|
401
|
+
id: NEPTUNE_SOURCE_ID,
|
|
402
|
+
descriptor: NEPTUNE_DESCRIPTOR,
|
|
403
|
+
transport: "neptune-https",
|
|
404
|
+
});
|
|
405
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sources/cypher/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The parameters of the Cypher source and its `neo4j` and `neptune` presets (design section 12.2).
|
|
3
|
+
* Experimental. The Cypher work may add optional fields only.
|
|
4
|
+
*/
|
|
5
|
+
import { type NodeId } from "@graphty/graph-format";
|
|
6
|
+
/**
|
|
7
|
+
* What to read from an openCypher server. Experimental.
|
|
8
|
+
* @category Network sources
|
|
9
|
+
*/
|
|
10
|
+
export interface CypherParams {
|
|
11
|
+
/** The caller's query; without one a query is generated from `mode`. */
|
|
12
|
+
readonly query?: string | undefined;
|
|
13
|
+
/** The query's parameters, sent separately, never spliced. @defaultValue {} */
|
|
14
|
+
readonly parameters?: Readonly<Record<string, unknown>> | undefined;
|
|
15
|
+
/** "query" (the caller's), "all" (the whole database, paged) or "neighborhood" (around `ids`). */
|
|
16
|
+
readonly mode?: "query" | "all" | "neighborhood" | undefined;
|
|
17
|
+
/** The seed ids of "neighborhood". */
|
|
18
|
+
readonly ids?: readonly NodeId[] | undefined;
|
|
19
|
+
/** Hops of "neighborhood", 1 to 10. @defaultValue 1 */
|
|
20
|
+
readonly depth?: number | undefined;
|
|
21
|
+
/** Only nodes with these labels (generated queries). */
|
|
22
|
+
readonly labels?: readonly string[] | undefined;
|
|
23
|
+
/** Only relationships of these types (generated queries). */
|
|
24
|
+
readonly relationshipTypes?: readonly string[] | undefined;
|
|
25
|
+
/** Key nodes on this property (`uuid`) instead of the server's id. */
|
|
26
|
+
readonly idProperty?: string | undefined;
|
|
27
|
+
/** The database; default the server's default. */
|
|
28
|
+
readonly database?: string | undefined;
|
|
29
|
+
/** How the query travels; the presets set it. */
|
|
30
|
+
readonly transport?: "query-api" | "bolt" | "neptune-https" | "neptune-analytics" | undefined;
|
|
31
|
+
/** The server's profile; "auto" detects it. @defaultValue "auto" */
|
|
32
|
+
readonly profile?: "neo4j" | "neptune" | "auto" | undefined;
|
|
33
|
+
/** Integers past 2^53: "f64" (rounded, with a warning) or "string". @defaultValue "f64" */
|
|
34
|
+
readonly long?: "f64" | "string" | undefined;
|
|
35
|
+
/** Run a count first, for a progress total. @defaultValue false */
|
|
36
|
+
readonly countFirst?: boolean | undefined;
|
|
37
|
+
/** Rows per page of mode "all", 1 to 100000. A load stops between pages, so a cap overshoots by at most one page. @defaultValue 1000 */
|
|
38
|
+
readonly pageSize?: number | undefined;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=params.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../../src/sources/cypher/params.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB,wEAAwE;IACxE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,kGAAkG;IAClG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,cAAc,GAAG,SAAS,CAAC;IAC7D,sCAAsC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAChD,6DAA6D;IAC7D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3D,sEAAsE;IACtE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,eAAe,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAC9F,oEAAoE;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5D,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC7C,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,wIAAwI;IACxI,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../../../src/sources/cypher/params.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What differs between openCypher servers (design section 12.2, "the profile"): the id
|
|
3
|
+
* expression, and the server facts `probe` reports. Everything else in the Cypher source is shared.
|
|
4
|
+
*/
|
|
5
|
+
/** The facts of one server the Cypher source talks to. */
|
|
6
|
+
export interface CypherProfile {
|
|
7
|
+
/** "neo4j" or "neptune". */
|
|
8
|
+
readonly name: "neo4j" | "neptune";
|
|
9
|
+
/** true: ids are `elementId(n)` (Neo4j 5 and later); false: `id(n)` (Neo4j before 5, Neptune's `~id`). */
|
|
10
|
+
readonly elementIds: boolean;
|
|
11
|
+
/** The product, as the server names it. */
|
|
12
|
+
readonly product: string;
|
|
13
|
+
/** The server's version, when known. */
|
|
14
|
+
readonly version: string | null;
|
|
15
|
+
/** "enforced": the server refuses writes in this session; "not-enforced": nothing in the request does. */
|
|
16
|
+
readonly readOnly: "enforced" | "not-enforced";
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The Neo4j profile for a version: `elementId()` from 5.0, `id()` before.
|
|
20
|
+
* @param version - the server's version, or null when not known (assumed 5 or later)
|
|
21
|
+
* @param product - the product name
|
|
22
|
+
* @returns the profile
|
|
23
|
+
*/
|
|
24
|
+
export declare function neo4jProfile(version: string | null, product?: string): CypherProfile;
|
|
25
|
+
/**
|
|
26
|
+
* The profile of a Bolt server from its agent string ("Neo4j/3.5.12"). A server that is not Neo4j
|
|
27
|
+
* gets `id()`, which every openCypher server has.
|
|
28
|
+
* @param agent - the server agent
|
|
29
|
+
* @returns the profile
|
|
30
|
+
*/
|
|
31
|
+
export declare function profileFromAgent(agent: string): CypherProfile;
|
|
32
|
+
/**
|
|
33
|
+
* The Neptune profile: ids are `id(n)`, the `~id` string, never reused.
|
|
34
|
+
* @param version - the engine version, when known
|
|
35
|
+
* @returns the profile
|
|
36
|
+
*/
|
|
37
|
+
export declare function neptuneProfile(version?: string | null): CypherProfile;
|
|
38
|
+
/**
|
|
39
|
+
* The server facts of a profile, as `probe` and `report.source.server` give them.
|
|
40
|
+
* @param profile - the profile
|
|
41
|
+
* @returns the facts
|
|
42
|
+
*/
|
|
43
|
+
export declare function serverFacts(profile: CypherProfile): Readonly<Record<string, string>>;
|
|
44
|
+
//# sourceMappingURL=profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../../src/sources/cypher/profiles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,0GAA0G;IAC1G,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,0GAA0G;IAC1G,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,cAAc,CAAC;CAClD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,SAAU,GAAG,aAAa,CASrF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAY7D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,MAAM,GAAG,IAAW,GAAG,aAAa,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAOpF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What differs between openCypher servers (design section 12.2, "the profile"): the id
|
|
3
|
+
* expression, and the server facts `probe` reports. Everything else in the Cypher source is shared.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The Neo4j profile for a version: `elementId()` from 5.0, `id()` before.
|
|
7
|
+
* @param version - the server's version, or null when not known (assumed 5 or later)
|
|
8
|
+
* @param product - the product name
|
|
9
|
+
* @returns the profile
|
|
10
|
+
*/
|
|
11
|
+
export function neo4jProfile(version, product = "Neo4j") {
|
|
12
|
+
const major = version === null ? Number.NaN : Number.parseInt(version, 10);
|
|
13
|
+
return {
|
|
14
|
+
name: "neo4j",
|
|
15
|
+
elementIds: Number.isNaN(major) || major >= 5,
|
|
16
|
+
product,
|
|
17
|
+
version,
|
|
18
|
+
readOnly: "enforced",
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The profile of a Bolt server from its agent string ("Neo4j/3.5.12"). A server that is not Neo4j
|
|
23
|
+
* gets `id()`, which every openCypher server has.
|
|
24
|
+
* @param agent - the server agent
|
|
25
|
+
* @returns the profile
|
|
26
|
+
*/
|
|
27
|
+
export function profileFromAgent(agent) {
|
|
28
|
+
const [product = "", version = ""] = agent.split("/");
|
|
29
|
+
if (product.toLowerCase() === "neo4j") {
|
|
30
|
+
return neo4jProfile(version === "" ? null : version);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
name: "neo4j",
|
|
34
|
+
elementIds: false,
|
|
35
|
+
product,
|
|
36
|
+
version: version === "" ? null : version,
|
|
37
|
+
readOnly: "enforced",
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The Neptune profile: ids are `id(n)`, the `~id` string, never reused.
|
|
42
|
+
* @param version - the engine version, when known
|
|
43
|
+
* @returns the profile
|
|
44
|
+
*/
|
|
45
|
+
export function neptuneProfile(version = null) {
|
|
46
|
+
return { name: "neptune", elementIds: false, product: "Neptune", version, readOnly: "not-enforced" };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The server facts of a profile, as `probe` and `report.source.server` give them.
|
|
50
|
+
* @param profile - the profile
|
|
51
|
+
* @returns the facts
|
|
52
|
+
*/
|
|
53
|
+
export function serverFacts(profile) {
|
|
54
|
+
return {
|
|
55
|
+
product: profile.product,
|
|
56
|
+
profile: profile.name,
|
|
57
|
+
readOnly: profile.readOnly,
|
|
58
|
+
...(profile.version === null ? {} : { version: profile.version }),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../../src/sources/cypher/profiles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAsB,EAAE,OAAO,GAAG,OAAO;IAClE,MAAM,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC3E,OAAO;QACH,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAC7C,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,UAAU;KACvB,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC1C,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtD,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;QACpC,OAAO,YAAY,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IACD,OAAO;QACH,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,KAAK;QACjB,OAAO;QACP,OAAO,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;QACxC,QAAQ,EAAE,UAAU;KACvB,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,UAAyB,IAAI;IACxD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AACzG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAAsB;IAC9C,OAAO;QACH,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;KACpE,CAAC;AACN,CAAC"}
|