@graphty/graph-io 0.3.46 → 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,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":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,OAAO,EAAsB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAuC,MAAM,gBAAgB,CAAC;AASzG;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAkB,EAAE,SAAiB;IAC1D,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,SAAS,oCAAoC,EAAE;YACzF,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY;IAC/B,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAwB,CAAC;QAC9D,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAqB,EAAE,QAAkB;IACzE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAA6E,CAAC;IACzG,IAAI,KAAK,GAAwB,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChB,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,WAAW,CACP,GAAG,CAAC,MAAM,EACV;YACI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;YACxB,OAAO,EAAE,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE;YACrD,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG;SAC7E,EACD,MAAM,EACN,SAAS,CACZ,CAAC;IACN,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE;YAC3E,GAAG,EAAE,MAAM;YACX,MAAM,EAAE,QAAQ,CAAC,MAAM;SAC1B,CAAC,CAAC;IACP,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,mCAAmC,EAAE;YACzE,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;SACpD,CAAC,CAAC;IACP,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAqB;IACvD,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC/B,OAAO;QACH,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU;YAC3B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE;gBAC3C,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,IAAI;gBAChB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;gBACvB,IAAI,EAAE,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;aAC1F,CAAC,CAAC;YACH,OAAO,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAChD,KAAK,EAAE,KAAK,IAA4B,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAA+B,QAAQ,CAAC,CAAC;YAC3E,OAAO,cAAc,CAAC,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtG,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;KACjC,CAAC;AACN,CAAC"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
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 { failOn } from "../../fail.js";
|
|
7
|
+
/** The longest server message a report keeps. */
|
|
8
|
+
const MAX_SERVER_MESSAGE = 500;
|
|
9
|
+
/**
|
|
10
|
+
* Raise the source issue a server error is: a login failure, a refusal, a server timeout, a
|
|
11
|
+
* missing database, or E_SOURCE_QUERY with the line and column the message names.
|
|
12
|
+
* @param report - the load's report
|
|
13
|
+
* @param err - what the server said
|
|
14
|
+
* @param origin - the origin that answered
|
|
15
|
+
* @param database - the database asked for, if any
|
|
16
|
+
* @returns never; it throws
|
|
17
|
+
*/
|
|
18
|
+
export function serverError(report, err, origin, database) {
|
|
19
|
+
const code = err.code ?? "";
|
|
20
|
+
if (/Security\.Unauthorized|AuthenticationRateLimit|UnauthorizedException/i.test(code)) {
|
|
21
|
+
return failOn(report, "E_SOURCE_AUTH", `${origin} refused the login`, {
|
|
22
|
+
origin,
|
|
23
|
+
status: err.status,
|
|
24
|
+
scheme: null,
|
|
25
|
+
serverCode: err.code,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
if (/Security\.Forbidden|AccessMode|AccessDenied/i.test(code)) {
|
|
29
|
+
return failOn(report, "E_SOURCE_FORBIDDEN", `${origin} refused the statement`, {
|
|
30
|
+
status: err.status,
|
|
31
|
+
serverCode: err.code,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (/TimedOut|Timeout|TimeLimitExceeded/i.test(code)) {
|
|
35
|
+
return failOn(report, "E_SOURCE_TIMEOUT", `${origin} timed the statement out`, {
|
|
36
|
+
timeoutMs: null,
|
|
37
|
+
serverSide: true,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
if (/DatabaseNotFound/i.test(code)) {
|
|
41
|
+
return failOn(report, "E_SOURCE_NOT_FOUND", `${origin} has no database ${String(database)}`, {
|
|
42
|
+
what: "database",
|
|
43
|
+
value: database ?? null,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
const where = /line (\d+), column (\d+)/i.exec(err.message);
|
|
47
|
+
return failOn(report, "E_SOURCE_QUERY", `${origin} refused the query: ${code}`, {
|
|
48
|
+
serverCode: err.code,
|
|
49
|
+
line: where === null ? null : Number(where[1]),
|
|
50
|
+
column: where === null ? null : Number(where[2]),
|
|
51
|
+
serverMessage: err.showable && err.message !== "" ? err.message.slice(0, MAX_SERVER_MESSAGE) : null,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The value of a response body as JSON, or null when it is not JSON.
|
|
56
|
+
* @param text - the body
|
|
57
|
+
* @returns the parsed value, or null
|
|
58
|
+
*/
|
|
59
|
+
export function parseJson(text) {
|
|
60
|
+
try {
|
|
61
|
+
return JSON.parse(text);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The fields and rows of a result given as one object per row (Neptune's `results`).
|
|
69
|
+
* @param results - the row objects
|
|
70
|
+
* @param map - maps one value, given its column
|
|
71
|
+
* @returns the result
|
|
72
|
+
*/
|
|
73
|
+
export function objectRows(results, map) {
|
|
74
|
+
const fields = [...new Set(results.flatMap((r) => Object.keys(r)))];
|
|
75
|
+
return { fields, rows: results.map((r) => fields.map((f) => map(r[f], f))) };
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one type mapper of the Cypher source (design section 10): every transport's wire values --
|
|
3
|
+
* Neo4j's typed JSON, neo4j-driver's objects, Neptune's plain JSON -- become the same plain values,
|
|
4
|
+
* and every node, relationship and path becomes a GraphNode, a GraphRel or an array of them.
|
|
5
|
+
*
|
|
6
|
+
* - Integers: a number while it is exact; past 2^53 the `long` parameter picks a rounded number
|
|
7
|
+
* (W_PRECISION, once per column) or the exact digits as a string.
|
|
8
|
+
* - Floats, booleans, strings: as they are. Dates and instants: epoch milliseconds. Local times,
|
|
9
|
+
* times and durations: their ISO text. Points: `{ srid, x, y, z? }`. Lists and maps: arrays and
|
|
10
|
+
* objects of mapped values. Bytes: dropped (W_SOURCE_VALUE).
|
|
11
|
+
*/
|
|
12
|
+
import { type ImportReportBuilder } from "../../common/report.js";
|
|
13
|
+
/** A node a query returned. */
|
|
14
|
+
export declare class GraphNode {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly labels: readonly string[];
|
|
17
|
+
readonly properties: Readonly<Record<string, unknown>>;
|
|
18
|
+
/**
|
|
19
|
+
* Create one.
|
|
20
|
+
* @param id - the server's element id
|
|
21
|
+
* @param labels - its labels
|
|
22
|
+
* @param properties - its mapped properties
|
|
23
|
+
*/
|
|
24
|
+
constructor(id: string, labels: readonly string[], properties: Readonly<Record<string, unknown>>);
|
|
25
|
+
}
|
|
26
|
+
/** A relationship a query returned. */
|
|
27
|
+
export declare class GraphRel {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly start: string;
|
|
30
|
+
readonly end: string;
|
|
31
|
+
readonly type: string;
|
|
32
|
+
readonly properties: Readonly<Record<string, unknown>>;
|
|
33
|
+
/**
|
|
34
|
+
* Create one.
|
|
35
|
+
* @param id - the server's element id
|
|
36
|
+
* @param start - the start node's element id
|
|
37
|
+
* @param end - the end node's element id
|
|
38
|
+
* @param type - its type
|
|
39
|
+
* @param properties - its mapped properties
|
|
40
|
+
*/
|
|
41
|
+
constructor(id: string, start: string, end: string, type: string, properties: Readonly<Record<string, unknown>>);
|
|
42
|
+
}
|
|
43
|
+
/** What the mapper needs: the `long` choice and the report its warnings go to. */
|
|
44
|
+
export interface MapContext {
|
|
45
|
+
/** Integers past 2^53: "f64" (rounded, W_PRECISION) or "string". */
|
|
46
|
+
readonly long: "f64" | "string";
|
|
47
|
+
/** The load's report. */
|
|
48
|
+
readonly report: ImportReportBuilder;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Map a value of Neo4j's typed JSON (the Query API's `application/vnd.neo4j.query.v1.1`).
|
|
52
|
+
* @param v - the wire value
|
|
53
|
+
* @param column - the result column or property key it belongs to
|
|
54
|
+
* @param m - the map context
|
|
55
|
+
* @returns the plain value, a GraphNode, a GraphRel or an array; undefined when dropped
|
|
56
|
+
*/
|
|
57
|
+
export declare function fromTypedJson(v: unknown, column: string, m: MapContext): unknown;
|
|
58
|
+
/** The parts of neo4j-driver the mapper uses: its type checks. */
|
|
59
|
+
export interface DriverTypes {
|
|
60
|
+
isInt(v: unknown): boolean;
|
|
61
|
+
isNode(v: unknown): boolean;
|
|
62
|
+
isRelationship(v: unknown): boolean;
|
|
63
|
+
isPath(v: unknown): boolean;
|
|
64
|
+
isPoint(v: unknown): boolean;
|
|
65
|
+
isDate(v: unknown): boolean;
|
|
66
|
+
isDateTime(v: unknown): boolean;
|
|
67
|
+
isLocalDateTime(v: unknown): boolean;
|
|
68
|
+
isLocalTime(v: unknown): boolean;
|
|
69
|
+
isTime(v: unknown): boolean;
|
|
70
|
+
isDuration(v: unknown): boolean;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Map a value neo4j-driver returned. Its lossless Integer keeps every digit, so `long` decides.
|
|
74
|
+
* @param v - the driver value
|
|
75
|
+
* @param column - the result column or property key
|
|
76
|
+
* @param m - the map context
|
|
77
|
+
* @param t - the driver's type checks
|
|
78
|
+
* @returns the plain value, a GraphNode, a GraphRel or an array; undefined when dropped
|
|
79
|
+
*/
|
|
80
|
+
export declare function fromDriver(v: unknown, column: string, m: MapContext, t: DriverTypes): unknown;
|
|
81
|
+
/**
|
|
82
|
+
* Map a value of Neptune's openCypher JSON: nodes `{ "~id", "~entityType": "node", "~labels",
|
|
83
|
+
* "~properties" }`, relationships adding `~start`, `~end`, `~type`. Its numbers are plain JSON, so
|
|
84
|
+
* an integer past 2^53 was already rounded on the wire (W_PRECISION).
|
|
85
|
+
* @param v - the wire value
|
|
86
|
+
* @param column - the result column or property key
|
|
87
|
+
* @param m - the map context
|
|
88
|
+
* @returns the plain value, a GraphNode, a GraphRel or an array
|
|
89
|
+
*/
|
|
90
|
+
export declare function fromNeptune(v: unknown, column: string, m: MapContext): unknown;
|
|
91
|
+
//# sourceMappingURL=types-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-map.d.ts","sourceRoot":"","sources":["../../../../src/sources/cypher/types-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,+BAA+B;AAC/B,qBAAa,SAAS;IAQd,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE;IAClC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAT1D;;;;;OAKG;gBAEU,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAE7D;AAED,uCAAuC;AACvC,qBAAa,QAAQ;IAUb,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAb1D;;;;;;;OAOG;gBAEU,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAE7D;AAED,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACvB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IAChC,yBAAyB;IACzB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACxC;AA2HD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CA8DhF;AAED,kEAAkE;AAClE,MAAM,WAAW,WAAW;IACxB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3B,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACpC,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAChC,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACrC,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CACnC;AA2ED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAuC7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAqB9E"}
|