@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
package/dist/graph-io.js
CHANGED
|
@@ -1,49 +1,61 @@
|
|
|
1
1
|
import { INVALID_INDEX, GraphFormatError, GraphBuilder } from "@graphty/graph-format";
|
|
2
2
|
import { GraphBuilder as GraphBuilder2, GraphFormatError as GraphFormatError2, INVALID_INDEX as INVALID_INDEX2 } from "@graphty/graph-format";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
3
|
+
import { K as ImportReportBuilder, at as isAbortError, au as BAD_LINE_CODE, av as messageOf, p as plural, ah as ImportError, o as MISSING_ID_CODE, aw as UNKNOWN_OPTION_CODE, E as EMPTY_INPUT_CODE, aa as FETCH_CODE, a0 as STYLES_NOT_IMPORTED_CODE, a as agree, ax as EDGES_MERGED_CODE, ay as SELF_LOOPS_DROPPED_CODE, O as OPTION_IGNORED_CODE, az as WEIGHT_NOT_FOUND_CODE } from "./chunks/report-CgdsL9Hb.js";
|
|
4
|
+
import { W, a3, L, B, ac, T, a8, aA, C, aq, x, a6, h, g, f, aB, D, b, l, aC, j, q, k, y, aD, r, t, ao, a7, ae, Y, H, I, aj, A, z, aE, u, v, aF, Z, n, M, i, $, J, al, ad, aG, N, aH, G, a1, aI, P, ag, a9, F, R, aJ, _, S, a5, a4, ap, c, Q, as, ar, aK, V, af, U, d, s, m, e, aL, ak, a2, ab, X, w, an } from "./chunks/report-CgdsL9Hb.js";
|
|
5
|
+
import { d as resolveImportOptions, g as reportSinkOptions, f as reportUnusedOptions, I as IdCoercer, i as DirectionResolver, o as parseWeightText, Y as describe, b as chooseGraph } from "./chunks/export-CZ7VRm4I.js";
|
|
6
|
+
import { Z as Z2, _ as _2, L as L2, $ as $2, a0, a1 as a12, R as R2, a2 as a22, O, c as c2, a, a3 as a32, P as P2, t as t2, j as j2, a4 as a42, e as e2, a5 as a52, h as h2, J as J2, W as W2, m as m2, X as X2, p, a6 as a62, r as r2, C as C2 } from "./chunks/export-CZ7VRm4I.js";
|
|
7
|
+
import { L as LineReader, b as throwIfAborted, f as readBytes, n as normalizeInput, g as foreignKind, l as lockReader, h as abortable } from "./chunks/input-Ccg9I22A.js";
|
|
8
|
+
import { e as e3, c as c3, i as i2, r as r3, t as t3 } from "./chunks/input-Ccg9I22A.js";
|
|
9
|
+
import { T as TextCellWriter } from "./chunks/text-BuKQVMz2.js";
|
|
10
|
+
import { W as W3, i as i3, a as a10, p as p2 } from "./chunks/text-BuKQVMz2.js";
|
|
11
|
+
import { C as C3, c as c4, a as a11 } from "./chunks/children-CA4coBi0.js";
|
|
10
12
|
import { c as collectBytes } from "./chunks/writer-DxjgHwSe.js";
|
|
11
|
-
import { D as D2, d as
|
|
13
|
+
import { D as D2, d as d2, e as e4, j as j3, t as t4 } from "./chunks/writer-DxjgHwSe.js";
|
|
12
14
|
import { csvImporter, csvExporter } from "./csv.js";
|
|
13
15
|
import { CSV_CAPABILITIES, CSV_ISSUE, CSV_LOSS } from "./csv.js";
|
|
14
|
-
import {
|
|
15
|
-
import { C as
|
|
16
|
-
import { c as
|
|
17
|
-
import { C as
|
|
18
|
-
import { c as
|
|
19
|
-
import { C as
|
|
20
|
-
import {
|
|
21
|
-
import { C as
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
16
|
+
import { c as cxExporter } from "./chunks/exporter-DtVU80Fa.js";
|
|
17
|
+
import { C as C4, a as a13 } from "./chunks/exporter-DtVU80Fa.js";
|
|
18
|
+
import { c as cxImporter } from "./chunks/importer-Bji2MeWr.js";
|
|
19
|
+
import { C as C5 } from "./chunks/importer-Bji2MeWr.js";
|
|
20
|
+
import { c as cx2Exporter } from "./chunks/exporter-ChjL5fmP.js";
|
|
21
|
+
import { C as C6, a as a14 } from "./chunks/exporter-ChjL5fmP.js";
|
|
22
|
+
import { c as cx2Importer } from "./chunks/importer-e3huMZbm.js";
|
|
23
|
+
import { C as C7 } from "./chunks/importer-e3huMZbm.js";
|
|
24
|
+
import { r as readZipDirectory, e as readZipEntry, d as cysImporter, c as cysExporter } from "./chunks/importer-DPZDN40-.js";
|
|
25
|
+
import { C as C8, a as a15, b as b2 } from "./chunks/importer-DPZDN40-.js";
|
|
26
|
+
import { c as dotImporter, d as dotExporter } from "./chunks/importer-CB_zV5_L.js";
|
|
27
|
+
import { D as D3, a as a16, b as b3 } from "./chunks/importer-CB_zV5_L.js";
|
|
24
28
|
import { gexfImporter, gexfExporter } from "./gexf.js";
|
|
25
29
|
import { GEXF_1_2_CAPABILITIES, GEXF_ISSUE, GEXF_LOSS } from "./gexf.js";
|
|
26
30
|
import { gmlImporter, gmlExporter } from "./gml.js";
|
|
27
31
|
import { GML_ISSUE, GML_LOSS, GML_STYLE_BLOCK_KEY, GML_STYLE_CAPABILITIES } from "./gml.js";
|
|
28
|
-
import { a as graphmlImporter, g as graphmlExporter } from "./chunks/importer-
|
|
29
|
-
import {
|
|
30
|
-
import { G as
|
|
32
|
+
import { a as graphmlImporter, g as graphmlExporter } from "./chunks/importer-B87_fmVx.js";
|
|
33
|
+
import { S as SNIFF_HEAD_BYTES, r as rankFormats, e as jsonImporter, c as jsonExporter } from "./chunks/exporter-bxxjOrDZ.js";
|
|
34
|
+
import { G as G2, J as J3, a as a17, b as b4, d as d3, g as g2, h as h3, j as j4, f as f2, n as n2, s as s2, i as i4 } from "./chunks/exporter-bxxjOrDZ.js";
|
|
31
35
|
import { neo4jImporter, neo4jExporter } from "./neo4j.js";
|
|
32
36
|
import { ID_SPACE_COLUMN, LABELS_COLUMN, NEO4J_CAPABILITIES, NEO4J_ISSUE, NEO4J_LOSS, ORIGINAL_ID_COLUMN, TYPE_COLUMN, exportNeo4jFiles } from "./neo4j.js";
|
|
33
|
-
import { c as oboImporter, o as oboExporter } from "./chunks/exporter
|
|
34
|
-
import { O as O2, a as a18, b as
|
|
35
|
-
import { d as pajekImporter, p as pajekExporter } from "./chunks/importer-
|
|
36
|
-
import { P as
|
|
37
|
-
import { x as xgmmlExporter } from "./chunks/exporter-
|
|
38
|
-
import { x as xgmmlImporter } from "./chunks/importer-
|
|
39
|
-
import {
|
|
40
|
-
import {
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
37
|
+
import { c as oboImporter, o as oboExporter } from "./chunks/exporter-Dcw7Ldtq.js";
|
|
38
|
+
import { O as O2, a as a18, b as b5 } from "./chunks/exporter-Dcw7Ldtq.js";
|
|
39
|
+
import { d as pajekImporter, p as pajekExporter } from "./chunks/importer-CVT-JyDE.js";
|
|
40
|
+
import { P as P3, a as a19, b as b6, c as c5 } from "./chunks/importer-CVT-JyDE.js";
|
|
41
|
+
import { x as xgmmlExporter } from "./chunks/exporter-BIdaoIgh.js";
|
|
42
|
+
import { x as xgmmlImporter } from "./chunks/importer-Cyy6UseH.js";
|
|
43
|
+
import { C as CYPHER_DESCRIPTOR, N as NEO4J_DESCRIPTOR, a as NEPTUNE_DESCRIPTOR } from "./chunks/codes-CV_Bhcyi.js";
|
|
44
|
+
import { S as S2 } from "./chunks/codes-CV_Bhcyi.js";
|
|
45
|
+
import { N as NDEX_SOURCE_ID, C as CYPHER_SOURCE_ID, g as NEO4J_SOURCE_ID, h as NEPTUNE_SOURCE_ID, R as REST_SOURCE_ID, O as OPENALEX_SOURCE_ID, i as SOURCE_FORMAT_PREFIX, f as failOn, j as checkParams, w as warnOn, o as originOf, k as checkLazySource, l as checkSource, b as failAlone } from "./chunks/credentials-BiQsnMTb.js";
|
|
46
|
+
import { m as m3, n as n3, S as S3, e as e5, c as c6, d as d4, p as p3, s as s3 } from "./chunks/credentials-BiQsnMTb.js";
|
|
47
|
+
import { N as NDEX_DESCRIPTOR } from "./chunks/descriptor-C-YDhtsn.js";
|
|
48
|
+
import { R as REST_DESCRIPTOR, O as OPENALEX_DESCRIPTOR } from "./chunks/descriptor-BJ-W0Jd-.js";
|
|
49
|
+
import { c as createSourceContext, L as LimitStop, d as detectRuntime } from "./chunks/context-cgmmOxZ2.js";
|
|
50
|
+
import { e as extractStyles } from "./chunks/generic-CP6YD34u.js";
|
|
51
|
+
import { p as prepareStyleExport, i as isKeptGraphtyProperty } from "./chunks/writer-DvHTl36J.js";
|
|
52
|
+
import { G as G3, a as a20 } from "./chunks/constants-D0LqcsLJ.js";
|
|
53
|
+
import { G as G4 } from "./chunks/styles-yed-Cs1nmrjn.js";
|
|
54
|
+
import { X as X3, a as a21 } from "./chunks/styles-CaABMoO1.js";
|
|
55
|
+
import { d as d5, f as f3, a as a23, e as e6, c as c7 } from "./chunks/format-BMS-1Nxb.js";
|
|
56
|
+
import { M as M2, d as d6, c as c8, p as p4, o, t as t5, x as x2 } from "./chunks/escape-DH2Egt-l.js";
|
|
57
|
+
import { S as S4 } from "./chunks/block-Cu22ewuS.js";
|
|
58
|
+
import { j as j5, a as a24 } from "./chunks/styles-P_gmFAOi.js";
|
|
47
59
|
const USED = /* @__PURE__ */ new Set(["ids", "defaultDirected", "weightFrom", "addMissingNodes"]);
|
|
48
60
|
function defineLineFormat(definition) {
|
|
49
61
|
const { format, extensions, mimeTypes = [], directed = false, comment = "#", sniff: sniff2, parseLine } = definition;
|
|
@@ -84,9 +96,9 @@ function defineLineFormat(definition) {
|
|
|
84
96
|
edge: (source, target, attributes2) => {
|
|
85
97
|
const raw = opts.weightFrom === null ? void 0 : attributes2?.[opts.weightFrom];
|
|
86
98
|
const weight = raw === null || raw === void 0 ? void 0 : parseWeightText(String(raw), report);
|
|
87
|
-
const [
|
|
88
|
-
const added = new Set([
|
|
89
|
-
const edge = edges.addEdge(
|
|
99
|
+
const [s4, t6] = [ids.text(source), ids.text(target)];
|
|
100
|
+
const added = new Set([s4, t6].filter((id) => sink.indexOf(id) === INVALID_INDEX)).size;
|
|
101
|
+
const edge = edges.addEdge(s4, t6, kind, weight, { line });
|
|
90
102
|
report.counts.nodes += added;
|
|
91
103
|
report.counts.edges++;
|
|
92
104
|
write("edge", edge, attributes2);
|
|
@@ -181,18 +193,18 @@ function compareSnapshots(expected, actual, options = {}) {
|
|
|
181
193
|
const tolerance = options.tolerance ?? 0;
|
|
182
194
|
const ctx = {
|
|
183
195
|
options,
|
|
184
|
-
diff: (path,
|
|
196
|
+
diff: (path, e7, a25, message) => {
|
|
185
197
|
diffs.push({
|
|
186
198
|
path,
|
|
187
|
-
expected:
|
|
188
|
-
actual:
|
|
189
|
-
message: message ?? `${path}: expected ${show(
|
|
199
|
+
expected: e7,
|
|
200
|
+
actual: a25,
|
|
201
|
+
message: message ?? `${path}: expected ${show(e7)}, got ${show(a25)}`
|
|
190
202
|
});
|
|
191
203
|
if (diffs.length >= limit) {
|
|
192
204
|
throw new LimitReached();
|
|
193
205
|
}
|
|
194
206
|
},
|
|
195
|
-
same: (
|
|
207
|
+
same: (e7, a25) => valuesEqual(e7, a25, tolerance)
|
|
196
208
|
};
|
|
197
209
|
try {
|
|
198
210
|
compareGraphs(expected, actual, ctx);
|
|
@@ -232,10 +244,10 @@ function compareGraphs(expected, actual, ctx) {
|
|
|
232
244
|
function compareIds(expected, actual, diff) {
|
|
233
245
|
const expectedIds = expected.ids.toArray();
|
|
234
246
|
const actualIds = actual.ids.toArray();
|
|
235
|
-
const
|
|
236
|
-
for (let
|
|
237
|
-
if (!Object.is(expectedIds[
|
|
238
|
-
diff(`ids[${
|
|
247
|
+
const n4 = Math.min(expectedIds.length, actualIds.length);
|
|
248
|
+
for (let i5 = 0; i5 < n4; i5++) {
|
|
249
|
+
if (!Object.is(expectedIds[i5], actualIds[i5])) {
|
|
250
|
+
diff(`ids[${i5}]`, expectedIds[i5], actualIds[i5]);
|
|
239
251
|
}
|
|
240
252
|
}
|
|
241
253
|
}
|
|
@@ -247,10 +259,10 @@ function compareTopology(expected, actual, diff) {
|
|
|
247
259
|
diff("colIdx", expected.colIdx, actual.colIdx, "colIdx differs");
|
|
248
260
|
}
|
|
249
261
|
const el = expected.edgeList();
|
|
250
|
-
const
|
|
251
|
-
for (let
|
|
252
|
-
if (el.src[
|
|
253
|
-
diff(`edge[${
|
|
262
|
+
const al2 = actual.edgeList();
|
|
263
|
+
for (let e7 = 0; e7 < expected.edgeCount; e7++) {
|
|
264
|
+
if (el.src[e7] !== al2.src[e7] || el.dst[e7] !== al2.dst[e7]) {
|
|
265
|
+
diff(`edge[${e7}]`, `${el.src[e7]}->${el.dst[e7]}`, `${al2.src[e7]}->${al2.dst[e7]}`);
|
|
254
266
|
}
|
|
255
267
|
}
|
|
256
268
|
}
|
|
@@ -277,23 +289,23 @@ function compareWeights(expected, actual, ctx) {
|
|
|
277
289
|
);
|
|
278
290
|
}
|
|
279
291
|
const ew = expected.edgeList().weights;
|
|
280
|
-
const
|
|
281
|
-
for (let
|
|
282
|
-
const ev = ew === null ? 1 : ew[
|
|
283
|
-
const
|
|
284
|
-
if (!ctx.same(ev,
|
|
285
|
-
ctx.diff(`weight[${
|
|
292
|
+
const aw = actual.edgeList().weights;
|
|
293
|
+
for (let e7 = 0; e7 < expected.edgeCount; e7++) {
|
|
294
|
+
const ev = ew === null ? 1 : ew[e7];
|
|
295
|
+
const av = aw === null ? 1 : aw[e7];
|
|
296
|
+
if (!ctx.same(ev, av)) {
|
|
297
|
+
ctx.diff(`weight[${e7}]`, ev, av);
|
|
286
298
|
}
|
|
287
299
|
}
|
|
288
300
|
}
|
|
289
301
|
function compareExactWeights(edgeCount, expected, actual, ctx) {
|
|
290
|
-
for (let
|
|
291
|
-
const eSet = expected.isSet(
|
|
292
|
-
const aSet = actual.isSet(
|
|
302
|
+
for (let e7 = 0; e7 < edgeCount; e7++) {
|
|
303
|
+
const eSet = expected.isSet(e7);
|
|
304
|
+
const aSet = actual.isSet(e7);
|
|
293
305
|
if (ctx.options.weightExplicitness !== false && eSet !== aSet) {
|
|
294
|
-
ctx.diff(`weightExplicit[${
|
|
295
|
-
} else if (eSet && aSet && !ctx.same(expected.value(
|
|
296
|
-
ctx.diff(`weight[${
|
|
306
|
+
ctx.diff(`weightExplicit[${e7}]`, eSet, aSet);
|
|
307
|
+
} else if (eSet && aSet && !ctx.same(expected.value(e7), actual.value(e7))) {
|
|
308
|
+
ctx.diff(`weight[${e7}]`, expected.value(e7), actual.value(e7));
|
|
297
309
|
}
|
|
298
310
|
}
|
|
299
311
|
}
|
|
@@ -350,36 +362,36 @@ function compareColumn(path, column, other, ctx) {
|
|
|
350
362
|
ctx.diff(`${path}.length`, column.length, other.length);
|
|
351
363
|
return;
|
|
352
364
|
}
|
|
353
|
-
for (let
|
|
354
|
-
const eSet = column.isSet(
|
|
355
|
-
const aSet = other.isSet(
|
|
365
|
+
for (let r4 = 0; r4 < column.length; r4++) {
|
|
366
|
+
const eSet = column.isSet(r4);
|
|
367
|
+
const aSet = other.isSet(r4);
|
|
356
368
|
if (eSet !== aSet) {
|
|
357
|
-
ctx.diff(`${path}[${
|
|
369
|
+
ctx.diff(`${path}[${r4}]`, eSet ? column.value(r4) : void 0, aSet ? other.value(r4) : void 0);
|
|
358
370
|
} else if (eSet) {
|
|
359
|
-
const ev = cellValue(column,
|
|
360
|
-
const
|
|
361
|
-
if (!ctx.same(ev,
|
|
362
|
-
ctx.diff(`${path}[${
|
|
371
|
+
const ev = cellValue(column, r4);
|
|
372
|
+
const av = cellValue(other, r4);
|
|
373
|
+
if (!ctx.same(ev, av)) {
|
|
374
|
+
ctx.diff(`${path}[${r4}]`, ev, av);
|
|
363
375
|
}
|
|
364
376
|
}
|
|
365
377
|
}
|
|
366
378
|
}
|
|
367
379
|
function compareDeclaration(path, column, other, ctx) {
|
|
368
380
|
const { options, diff } = ctx;
|
|
369
|
-
const
|
|
370
|
-
const
|
|
381
|
+
const e7 = column.meta;
|
|
382
|
+
const a25 = other.meta;
|
|
371
383
|
if (options.dtypes !== false) {
|
|
372
384
|
for (const key of ["dtype", "itemDtype", "components"]) {
|
|
373
|
-
if (
|
|
374
|
-
diff(`${path}.${key}`,
|
|
385
|
+
if (e7[key] !== a25[key]) {
|
|
386
|
+
diff(`${path}.${key}`, e7[key], a25[key]);
|
|
375
387
|
}
|
|
376
388
|
}
|
|
377
389
|
}
|
|
378
|
-
if (options.roles !== false &&
|
|
379
|
-
diff(`${path}.role`,
|
|
390
|
+
if (options.roles !== false && e7.role !== a25.role) {
|
|
391
|
+
diff(`${path}.role`, e7.role, a25.role);
|
|
380
392
|
}
|
|
381
|
-
const eType =
|
|
382
|
-
const aType =
|
|
393
|
+
const eType = e7.origin?.type ?? null;
|
|
394
|
+
const aType = a25.origin?.type ?? null;
|
|
383
395
|
if (options.originType === true && eType !== aType) {
|
|
384
396
|
diff(`${path}.origin.type`, eType, aType);
|
|
385
397
|
}
|
|
@@ -396,38 +408,38 @@ function cellValue(column, row) {
|
|
|
396
408
|
}
|
|
397
409
|
}
|
|
398
410
|
}
|
|
399
|
-
function valuesEqual(
|
|
400
|
-
if (typeof
|
|
401
|
-
if (Object.is(
|
|
411
|
+
function valuesEqual(e7, a25, tolerance) {
|
|
412
|
+
if (typeof e7 === "number" && typeof a25 === "number") {
|
|
413
|
+
if (Object.is(e7, a25)) {
|
|
402
414
|
return true;
|
|
403
415
|
}
|
|
404
|
-
return Number.isFinite(
|
|
416
|
+
return Number.isFinite(e7) && Number.isFinite(a25) && Math.abs(e7 - a25) <= tolerance;
|
|
405
417
|
}
|
|
406
|
-
if (Array.isArray(
|
|
407
|
-
const ea = Array.from(
|
|
408
|
-
if (!(Array.isArray(
|
|
418
|
+
if (Array.isArray(e7) || ArrayBuffer.isView(e7)) {
|
|
419
|
+
const ea = Array.from(e7);
|
|
420
|
+
if (!(Array.isArray(a25) || ArrayBuffer.isView(a25))) {
|
|
409
421
|
return false;
|
|
410
422
|
}
|
|
411
|
-
const
|
|
412
|
-
return ea.length ===
|
|
423
|
+
const aa = Array.from(a25);
|
|
424
|
+
return ea.length === aa.length && ea.every((v2, i5) => valuesEqual(v2, aa[i5], tolerance));
|
|
413
425
|
}
|
|
414
|
-
if (typeof
|
|
415
|
-
const eo =
|
|
416
|
-
const
|
|
426
|
+
if (typeof e7 === "object" && e7 !== null && typeof a25 === "object" && a25 !== null) {
|
|
427
|
+
const eo = e7;
|
|
428
|
+
const ao2 = a25;
|
|
417
429
|
const keys = Object.keys(eo);
|
|
418
|
-
if (keys.length !== Object.keys(
|
|
430
|
+
if (keys.length !== Object.keys(ao2).length) {
|
|
419
431
|
return false;
|
|
420
432
|
}
|
|
421
|
-
return keys.every((
|
|
433
|
+
return keys.every((k2) => Object.hasOwn(ao2, k2) && valuesEqual(eo[k2], ao2[k2], tolerance));
|
|
422
434
|
}
|
|
423
|
-
return Object.is(
|
|
435
|
+
return Object.is(e7, a25);
|
|
424
436
|
}
|
|
425
|
-
function typedEqual(
|
|
426
|
-
if (
|
|
437
|
+
function typedEqual(a25, b7) {
|
|
438
|
+
if (a25.length !== b7.length) {
|
|
427
439
|
return false;
|
|
428
440
|
}
|
|
429
|
-
for (let
|
|
430
|
-
if (
|
|
441
|
+
for (let i5 = 0; i5 < a25.length; i5++) {
|
|
442
|
+
if (a25[i5] !== b7[i5]) {
|
|
431
443
|
return false;
|
|
432
444
|
}
|
|
433
445
|
}
|
|
@@ -446,7 +458,7 @@ function show(v2) {
|
|
|
446
458
|
}
|
|
447
459
|
}
|
|
448
460
|
function describeDiffs(diffs) {
|
|
449
|
-
return diffs.length === 0 ? "no differences" : diffs.map((
|
|
461
|
+
return diffs.length === 0 ? "no differences" : diffs.map((d7) => ` - ${d7.message}`).join("\n");
|
|
450
462
|
}
|
|
451
463
|
const TOO_MANY_EMPTY_CELLS_CODE = "E_TOO_MANY_EMPTY_CELLS";
|
|
452
464
|
const DEFAULT_MAX_EMPTY_CELLS = 2 ** 24;
|
|
@@ -571,6 +583,711 @@ class CellBudgetBuilder extends GraphBuilder {
|
|
|
571
583
|
}
|
|
572
584
|
}
|
|
573
585
|
}
|
|
586
|
+
function builtinSources() {
|
|
587
|
+
return [
|
|
588
|
+
{
|
|
589
|
+
id: NDEX_SOURCE_ID,
|
|
590
|
+
descriptor: NDEX_DESCRIPTOR,
|
|
591
|
+
load: async () => (await import("./sources-ndex.js")).ndexSource
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
id: CYPHER_SOURCE_ID,
|
|
595
|
+
descriptor: CYPHER_DESCRIPTOR,
|
|
596
|
+
load: async () => (await import("./sources-cypher.js")).cypherSource
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
id: NEO4J_SOURCE_ID,
|
|
600
|
+
descriptor: NEO4J_DESCRIPTOR,
|
|
601
|
+
load: async () => (await import("./sources-cypher.js")).neo4jSource
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
id: NEPTUNE_SOURCE_ID,
|
|
605
|
+
descriptor: NEPTUNE_DESCRIPTOR,
|
|
606
|
+
load: async () => (await import("./sources-cypher.js")).neptuneSource
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
id: REST_SOURCE_ID,
|
|
610
|
+
descriptor: REST_DESCRIPTOR,
|
|
611
|
+
load: async () => (await import("./sources-rest.js")).restMappingSource
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
id: OPENALEX_SOURCE_ID,
|
|
615
|
+
descriptor: OPENALEX_DESCRIPTOR,
|
|
616
|
+
load: async () => (await import("./sources-rest.js")).openalexSource
|
|
617
|
+
}
|
|
618
|
+
];
|
|
619
|
+
}
|
|
620
|
+
const CURSOR_VERSION_KEY = "~v";
|
|
621
|
+
const SOURCE_OPTION_KEYS = /* @__PURE__ */ new Set([
|
|
622
|
+
"endpoint",
|
|
623
|
+
"credential",
|
|
624
|
+
"cursor",
|
|
625
|
+
"limits",
|
|
626
|
+
"retry",
|
|
627
|
+
"idPrefix",
|
|
628
|
+
"allowInsecure",
|
|
629
|
+
"fetch",
|
|
630
|
+
"userAgent",
|
|
631
|
+
"builder",
|
|
632
|
+
"freeze",
|
|
633
|
+
"onProgress",
|
|
634
|
+
"signal"
|
|
635
|
+
]);
|
|
636
|
+
const AUTH_CODES = /* @__PURE__ */ new Set(["E_SOURCE_AUTH", "E_SOURCE_FORBIDDEN"]);
|
|
637
|
+
function sourceFormat(id) {
|
|
638
|
+
return `${SOURCE_FORMAT_PREFIX}${id}`;
|
|
639
|
+
}
|
|
640
|
+
function wrapCursor(next, version) {
|
|
641
|
+
return next === null || next === void 0 ? null : Object.freeze({ ...next, [CURSOR_VERSION_KEY]: version });
|
|
642
|
+
}
|
|
643
|
+
function prepare(source, rawParams, options, unit) {
|
|
644
|
+
const { descriptor } = source;
|
|
645
|
+
const version = descriptor?.version ?? 1;
|
|
646
|
+
const report = new ImportReportBuilder(sourceFormat(source.id), options.errorLimit ?? 100);
|
|
647
|
+
checkRuntime(source, report);
|
|
648
|
+
checkParams(rawParams, descriptor, report);
|
|
649
|
+
const params = {};
|
|
650
|
+
for (const p5 of descriptor?.params ?? []) {
|
|
651
|
+
if (p5.default !== void 0) {
|
|
652
|
+
params[p5.name] = p5.default;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
Object.assign(params, rawParams);
|
|
656
|
+
const endpoint = resolveEndpoint(options.endpoint ?? descriptor?.defaultEndpoint ?? null, report);
|
|
657
|
+
if (options.credential?.origins.length === 0 && endpoint === null) {
|
|
658
|
+
failOn(report, "E_SOURCE_PARAM", "a credential needs an endpoint or its own origins", {
|
|
659
|
+
name: "credential",
|
|
660
|
+
reason: "credential-unbound"
|
|
661
|
+
});
|
|
662
|
+
}
|
|
663
|
+
const cursor = resumeCursor(options.cursor, version, report);
|
|
664
|
+
const counts = { nodes: /* @__PURE__ */ new Set(), edgesAtStart: 0, sink: null };
|
|
665
|
+
const created = createSourceContext({
|
|
666
|
+
id: source.id,
|
|
667
|
+
descriptor,
|
|
668
|
+
options,
|
|
669
|
+
report,
|
|
670
|
+
endpoint,
|
|
671
|
+
cursor,
|
|
672
|
+
unit,
|
|
673
|
+
counts: () => ({
|
|
674
|
+
nodes: counts.nodes.size,
|
|
675
|
+
edges: counts.sink === null ? 0 : counts.sink.edgeCount - counts.edgesAtStart
|
|
676
|
+
})
|
|
677
|
+
});
|
|
678
|
+
return { report, created, params, counts };
|
|
679
|
+
}
|
|
680
|
+
function checkRuntime(source, report) {
|
|
681
|
+
const { descriptor } = source;
|
|
682
|
+
const runtime = detectRuntime();
|
|
683
|
+
const support = descriptor?.runtimes?.[runtime];
|
|
684
|
+
if (support?.supported === false) {
|
|
685
|
+
failOn(report, "E_SOURCE_RUNTIME", `source ${source.id} cannot run in ${runtime}`, {
|
|
686
|
+
runtime,
|
|
687
|
+
reason: support.reason ?? "unsupported"
|
|
688
|
+
});
|
|
689
|
+
}
|
|
690
|
+
if (descriptor?.needs?.secureContext === true && runtime === "browser" && globalThis.isSecureContext === false) {
|
|
691
|
+
failOn(report, "E_SOURCE_RUNTIME", `source ${source.id} needs a secure context`, {
|
|
692
|
+
runtime,
|
|
693
|
+
reason: "needs-secure-context"
|
|
694
|
+
});
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
function resolveEndpoint(given, report) {
|
|
698
|
+
if (given === null) {
|
|
699
|
+
return null;
|
|
700
|
+
}
|
|
701
|
+
let endpoint;
|
|
702
|
+
try {
|
|
703
|
+
endpoint = new URL(given);
|
|
704
|
+
} catch {
|
|
705
|
+
failOn(report, "E_SOURCE_PARAM", "the endpoint is not a URL", { name: "endpoint", reason: "type" });
|
|
706
|
+
}
|
|
707
|
+
if (endpoint.username !== "" || endpoint.password !== "") {
|
|
708
|
+
failOn(report, "E_SOURCE_PARAM", "the endpoint may not carry a user name or password", {
|
|
709
|
+
name: "endpoint",
|
|
710
|
+
reason: "credentials-in-url"
|
|
711
|
+
});
|
|
712
|
+
}
|
|
713
|
+
return endpoint;
|
|
714
|
+
}
|
|
715
|
+
function resumeCursor(given, version, report) {
|
|
716
|
+
if (given === void 0 || given === null) {
|
|
717
|
+
return null;
|
|
718
|
+
}
|
|
719
|
+
const { [CURSOR_VERSION_KEY]: recorded, ...rest } = given;
|
|
720
|
+
if (recorded !== void 0 && recorded !== version) {
|
|
721
|
+
failOn(report, "E_SOURCE_PARAM", "the cursor was made by another version of the source", {
|
|
722
|
+
name: "cursor",
|
|
723
|
+
reason: "stale-cursor"
|
|
724
|
+
});
|
|
725
|
+
}
|
|
726
|
+
return Object.freeze(rest);
|
|
727
|
+
}
|
|
728
|
+
function wrapSink(sink, prepared, prefix) {
|
|
729
|
+
prepared.counts.sink = sink;
|
|
730
|
+
prepared.counts.edgesAtStart = sink.edgeCount;
|
|
731
|
+
const seen = prepared.counts.nodes;
|
|
732
|
+
const id = (value) => prefix === void 0 || prefix === "" ? value : `${prefix}${String(value)}`;
|
|
733
|
+
const node = (index) => {
|
|
734
|
+
seen.add(index);
|
|
735
|
+
return index;
|
|
736
|
+
};
|
|
737
|
+
const ends = (edge) => {
|
|
738
|
+
const [a25, b7] = sink.edgeEndpoints(edge);
|
|
739
|
+
seen.add(a25);
|
|
740
|
+
seen.add(b7);
|
|
741
|
+
return edge;
|
|
742
|
+
};
|
|
743
|
+
return new Proxy(sink, {
|
|
744
|
+
get(target, key) {
|
|
745
|
+
switch (key) {
|
|
746
|
+
case "addNode":
|
|
747
|
+
return (v2) => node(target.addNode(id(v2)));
|
|
748
|
+
case "addNodeRecord":
|
|
749
|
+
return (v2, attrs) => node(target.addNodeRecord(id(v2), attrs));
|
|
750
|
+
case "addNodes":
|
|
751
|
+
return (ids, out) => {
|
|
752
|
+
const result2 = target.addNodes(Array.from(ids, id), out);
|
|
753
|
+
result2.forEach((i5) => seen.add(i5));
|
|
754
|
+
return result2;
|
|
755
|
+
};
|
|
756
|
+
case "addEdge":
|
|
757
|
+
return (s4, t6, w2) => ends(target.addEdge(id(s4), id(t6), w2));
|
|
758
|
+
case "addEdgeRecord":
|
|
759
|
+
return (s4, t6, attrs, weightKey) => ends(target.addEdgeRecord(id(s4), id(t6), attrs, weightKey));
|
|
760
|
+
case "indexOf":
|
|
761
|
+
return (v2) => target.indexOf(id(v2));
|
|
762
|
+
default: {
|
|
763
|
+
const value = Reflect.get(target, key, target);
|
|
764
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
});
|
|
769
|
+
}
|
|
770
|
+
function importerOptions$1(options, signal) {
|
|
771
|
+
const out = { signal };
|
|
772
|
+
for (const [key, value] of Object.entries(options)) {
|
|
773
|
+
if (!SOURCE_OPTION_KEYS.has(key)) {
|
|
774
|
+
out[key] = value;
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
return out;
|
|
778
|
+
}
|
|
779
|
+
function writeMeta(sink, meta) {
|
|
780
|
+
const patch = {};
|
|
781
|
+
for (const [key, value] of Object.entries(meta)) {
|
|
782
|
+
if ((key === "name" || key === "description" || key === "modified") && typeof value === "string") {
|
|
783
|
+
patch[key] = value;
|
|
784
|
+
} else if (key !== "directed" && (typeof value === "string" || typeof value === "number" || typeof value === "boolean")) {
|
|
785
|
+
sink.setGraphValue(key, value);
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
if (Object.keys(patch).length > 0) {
|
|
789
|
+
sink.setMeta(patch);
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
function writeBatch(batch, sink, source, prepared, first) {
|
|
793
|
+
const idKey = source.idKey ?? "id";
|
|
794
|
+
const sourceKey = source.sourceKey ?? "source";
|
|
795
|
+
const targetKey = source.targetKey ?? "target";
|
|
796
|
+
const meta = batch.meta ?? {};
|
|
797
|
+
if (first && typeof meta.directed === "boolean" && sink.edgeCount === 0) {
|
|
798
|
+
sink.setDirected(meta.directed);
|
|
799
|
+
}
|
|
800
|
+
writeMeta(sink, meta);
|
|
801
|
+
const n4 = writeNodes(batch, sink, idKey, prepared);
|
|
802
|
+
writeEdges(batch, sink, sourceKey, targetKey, prepared, n4);
|
|
803
|
+
}
|
|
804
|
+
function writeNodes(batch, sink, idKey, prepared) {
|
|
805
|
+
const { report } = prepared;
|
|
806
|
+
const { signal } = prepared.created.ctx;
|
|
807
|
+
let n4 = 0;
|
|
808
|
+
for (const record of batch.nodes ?? []) {
|
|
809
|
+
if (n4++ % 64 === 0) {
|
|
810
|
+
throwIfAborted(signal);
|
|
811
|
+
}
|
|
812
|
+
const { [idKey]: id, ...attrs } = record;
|
|
813
|
+
if (typeof id !== "string" && typeof id !== "number") {
|
|
814
|
+
report.error("missing-value", MISSING_ID_CODE, `a node record has no ${idKey}`);
|
|
815
|
+
report.counts.skippedNodes++;
|
|
816
|
+
continue;
|
|
817
|
+
}
|
|
818
|
+
try {
|
|
819
|
+
sink.addNodeRecord(id, attrs);
|
|
820
|
+
report.counts.nodes++;
|
|
821
|
+
} catch (err) {
|
|
822
|
+
report.recordError(err, { element: String(id) });
|
|
823
|
+
report.counts.skippedNodes++;
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
return n4;
|
|
827
|
+
}
|
|
828
|
+
function writeEdges(batch, sink, sourceKey, targetKey, prepared, start) {
|
|
829
|
+
const { report } = prepared;
|
|
830
|
+
const { signal } = prepared.created.ctx;
|
|
831
|
+
let n4 = start;
|
|
832
|
+
let edgeIds = null;
|
|
833
|
+
for (const record of batch.edges ?? []) {
|
|
834
|
+
if (n4++ % 64 === 0) {
|
|
835
|
+
throwIfAborted(signal);
|
|
836
|
+
}
|
|
837
|
+
const s4 = record[sourceKey];
|
|
838
|
+
const t6 = record[targetKey];
|
|
839
|
+
const edgeId = record.id;
|
|
840
|
+
const fields = Object.fromEntries(
|
|
841
|
+
Object.entries(record).filter(([k2]) => k2 !== sourceKey && k2 !== targetKey && k2 !== "id")
|
|
842
|
+
);
|
|
843
|
+
if (typeof s4 !== "string" && typeof s4 !== "number" || typeof t6 !== "string" && typeof t6 !== "number") {
|
|
844
|
+
report.error("missing-value", MISSING_ID_CODE, `an edge record has no ${sourceKey} or ${targetKey}`);
|
|
845
|
+
report.counts.skippedEdges++;
|
|
846
|
+
continue;
|
|
847
|
+
}
|
|
848
|
+
try {
|
|
849
|
+
const e7 = sink.addEdgeRecord(s4, t6, fields);
|
|
850
|
+
if (typeof edgeId === "string" || typeof edgeId === "number") {
|
|
851
|
+
edgeIds ??= edgeIdColumn(sink);
|
|
852
|
+
sink.setEdgeValue(edgeIds, e7, String(edgeId));
|
|
853
|
+
}
|
|
854
|
+
report.counts.edges++;
|
|
855
|
+
} catch (err) {
|
|
856
|
+
report.recordError(err, { element: `${String(s4)} -> ${String(t6)}` });
|
|
857
|
+
report.counts.skippedEdges++;
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
function endpointOrigin(endpoint) {
|
|
862
|
+
return endpoint === null ? "" : originOf(endpoint);
|
|
863
|
+
}
|
|
864
|
+
function edgeIdColumn(sink) {
|
|
865
|
+
const existing = sink.edgeColumn("id");
|
|
866
|
+
return existing === INVALID_INDEX ? sink.declareEdgeColumn({ name: "id", dtype: "string", role: "id", nullable: true }) : existing;
|
|
867
|
+
}
|
|
868
|
+
function pages(out) {
|
|
869
|
+
if (Symbol.asyncIterator in out) {
|
|
870
|
+
return out[Symbol.asyncIterator]();
|
|
871
|
+
}
|
|
872
|
+
let done = false;
|
|
873
|
+
return {
|
|
874
|
+
async next() {
|
|
875
|
+
if (done) {
|
|
876
|
+
return { done: true, value: void 0 };
|
|
877
|
+
}
|
|
878
|
+
done = true;
|
|
879
|
+
return { done: false, value: await out };
|
|
880
|
+
}
|
|
881
|
+
};
|
|
882
|
+
}
|
|
883
|
+
function stopOrThrow(err, page, prepared) {
|
|
884
|
+
if (err instanceof LimitStop) {
|
|
885
|
+
return;
|
|
886
|
+
}
|
|
887
|
+
if (page > 0 && err instanceof ImportError && AUTH_CODES.has(String(err.issue?.code))) {
|
|
888
|
+
const p5 = err.issue?.params ?? {};
|
|
889
|
+
warnOn(prepared.report, "W_SOURCE_AUTH", "a later page needs a credential; the pages before it are kept", {
|
|
890
|
+
origin: typeof p5.origin === "string" ? p5.origin : endpointOrigin(prepared.created.ctx.endpoint),
|
|
891
|
+
status: typeof p5.status === "number" ? p5.status : null
|
|
892
|
+
});
|
|
893
|
+
return;
|
|
894
|
+
}
|
|
895
|
+
throw err;
|
|
896
|
+
}
|
|
897
|
+
async function runRecords(source, sink, prepared) {
|
|
898
|
+
const { ctx } = prepared.created;
|
|
899
|
+
const records = source.records;
|
|
900
|
+
const iterator = pages(records(prepared.params, ctx));
|
|
901
|
+
let next = ctx.cursor;
|
|
902
|
+
let page = 0;
|
|
903
|
+
let stopped = false;
|
|
904
|
+
try {
|
|
905
|
+
for (; ; ) {
|
|
906
|
+
let step;
|
|
907
|
+
try {
|
|
908
|
+
step = await iterator.next();
|
|
909
|
+
} catch (err) {
|
|
910
|
+
stopOrThrow(err, page, prepared);
|
|
911
|
+
stopped = true;
|
|
912
|
+
return next;
|
|
913
|
+
}
|
|
914
|
+
if (step.done === true) {
|
|
915
|
+
return page === 0 ? null : next;
|
|
916
|
+
}
|
|
917
|
+
writeBatch(step.value, sink, source, prepared, page === 0);
|
|
918
|
+
page++;
|
|
919
|
+
next = step.value.next ?? null;
|
|
920
|
+
ctx.progress(prepared.report.counts.nodes + prepared.report.counts.edges, void 0, "items");
|
|
921
|
+
if (ctx.limits.reached()) {
|
|
922
|
+
stopped = true;
|
|
923
|
+
return next;
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
} finally {
|
|
927
|
+
if (stopped) {
|
|
928
|
+
await iterator.return?.().catch(() => void 0);
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
async function fileInput(file, formats, signal) {
|
|
933
|
+
let input = file.body instanceof Response ? file.body.body ?? new Uint8Array(0) : file.body;
|
|
934
|
+
let { filename } = file;
|
|
935
|
+
let mimeType = file.mimeType ?? (file.body instanceof Response ? file.body.headers.get("content-type") ?? void 0 : void 0);
|
|
936
|
+
const gzip = /\.gz$/i.test(filename ?? "") || /gzip/i.test(mimeType ?? "");
|
|
937
|
+
const zip = /\.zip$/i.test(filename ?? "") || /\/(x-)?zip\b/i.test(mimeType ?? "");
|
|
938
|
+
if (gzip) {
|
|
939
|
+
const stream = input instanceof ReadableStream ? input : new Response(await bytesOf(input, signal)).body;
|
|
940
|
+
input = (stream ?? new Response("").body ?? new ReadableStream()).pipeThrough(
|
|
941
|
+
new DecompressionStream("gzip")
|
|
942
|
+
);
|
|
943
|
+
filename = filename?.replace(/\.gz$/i, "");
|
|
944
|
+
mimeType = void 0;
|
|
945
|
+
} else if (zip) {
|
|
946
|
+
const bytes = await bytesOf(input, signal);
|
|
947
|
+
const entry = readZipDirectory(bytes).find((e7) => !e7.directory && formats.sniff({ filename: e7.name }) !== null);
|
|
948
|
+
if (entry === void 0) {
|
|
949
|
+
throw new ImportError("the zip holds no graph file", new ImportReportBuilder("zip", 0).finish());
|
|
950
|
+
}
|
|
951
|
+
input = await readZipEntry(bytes, entry, { signal, maxBytes: Number.MAX_SAFE_INTEGER, maxRatio: 1e3 });
|
|
952
|
+
filename = entry.name;
|
|
953
|
+
mimeType = void 0;
|
|
954
|
+
}
|
|
955
|
+
return { input, filename, mimeType };
|
|
956
|
+
}
|
|
957
|
+
async function bytesOf(input, signal) {
|
|
958
|
+
return await readBytes(input, { signal }) ?? new TextEncoder().encode(typeof input === "string" ? input : "");
|
|
959
|
+
}
|
|
960
|
+
async function runFile(source, sink, prepared, formats, options) {
|
|
961
|
+
const { ctx } = prepared.created;
|
|
962
|
+
const read = source.file;
|
|
963
|
+
const file = await read(prepared.params, ctx);
|
|
964
|
+
const { input, filename, mimeType } = await fileInput(file, formats, ctx.signal);
|
|
965
|
+
let { format } = file;
|
|
966
|
+
let body = input;
|
|
967
|
+
if (format === void 0) {
|
|
968
|
+
const bytes = await bytesOf(input, ctx.signal);
|
|
969
|
+
format = formats.sniff({ filename, mimeType, head: bytes.subarray(0, SNIFF_HEAD_BYTES) })?.format;
|
|
970
|
+
body = bytes;
|
|
971
|
+
if (format === void 0) {
|
|
972
|
+
failOn(prepared.report, "E_SOURCE_RESPONSE", "the file is in no format graph-io reads", {
|
|
973
|
+
expected: "graph-file",
|
|
974
|
+
contentType: mimeType ?? null
|
|
975
|
+
});
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
const importer = formats.importer(format);
|
|
979
|
+
prepared.report.include(await importer.import(body, sink, importerOptions$1(options, ctx.signal)));
|
|
980
|
+
writeMeta(sink, file.meta ?? {});
|
|
981
|
+
return format;
|
|
982
|
+
}
|
|
983
|
+
async function runIntoSink(source, params, sink, options, formats) {
|
|
984
|
+
const prepared = prepare(source, params, options, typeof source.file === "function" ? "bytes" : "items");
|
|
985
|
+
const { ctx } = prepared.created;
|
|
986
|
+
const version = source.descriptor?.version ?? 1;
|
|
987
|
+
const wrapped = wrapSink(sink, prepared, options.idPrefix);
|
|
988
|
+
try {
|
|
989
|
+
if (typeof source.records === "function") {
|
|
990
|
+
const next = await runRecords(source, wrapped, prepared);
|
|
991
|
+
throwIfAborted(ctx.signal);
|
|
992
|
+
return {
|
|
993
|
+
report: withSource(prepared.report.finish(), prepared, wrapCursor(next, version)),
|
|
994
|
+
format: sourceFormat(source.id)
|
|
995
|
+
};
|
|
996
|
+
}
|
|
997
|
+
if (typeof source.file === "function") {
|
|
998
|
+
const format = await runFile(source, wrapped, prepared, formats, options);
|
|
999
|
+
return { report: withSource(prepared.report.finish(), prepared, null), format };
|
|
1000
|
+
}
|
|
1001
|
+
const run = source.import;
|
|
1002
|
+
const report = await stopAtLimit(run(prepared.params, wrapped, ctx), prepared);
|
|
1003
|
+
throwIfAborted(ctx.signal);
|
|
1004
|
+
return {
|
|
1005
|
+
report: withSource(report, prepared, wrapCursor(prepared.created.state.finish?.next, version)),
|
|
1006
|
+
format: sourceFormat(source.id)
|
|
1007
|
+
};
|
|
1008
|
+
} catch (err) {
|
|
1009
|
+
throw settle(err, prepared);
|
|
1010
|
+
} finally {
|
|
1011
|
+
prepared.created.dispose();
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
async function runMethod(source, feature, params, options, call) {
|
|
1015
|
+
if (typeof source[feature] !== "function") {
|
|
1016
|
+
failOn(
|
|
1017
|
+
new ImportReportBuilder(sourceFormat(source.id), 0),
|
|
1018
|
+
"E_SOURCE_UNSUPPORTED",
|
|
1019
|
+
`source ${source.id} has no ${feature}`,
|
|
1020
|
+
{
|
|
1021
|
+
feature
|
|
1022
|
+
}
|
|
1023
|
+
);
|
|
1024
|
+
}
|
|
1025
|
+
const prepared = prepare(source, params, options, "items");
|
|
1026
|
+
try {
|
|
1027
|
+
const out = await call(prepared);
|
|
1028
|
+
throwIfAborted(prepared.created.ctx.signal);
|
|
1029
|
+
return out;
|
|
1030
|
+
} catch (err) {
|
|
1031
|
+
throw settle(err, prepared);
|
|
1032
|
+
} finally {
|
|
1033
|
+
prepared.created.dispose();
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
function withSource(report, prepared, next) {
|
|
1037
|
+
const own = prepared.report.finish();
|
|
1038
|
+
const missing = own.issues.filter((i5) => !report.issues.includes(i5));
|
|
1039
|
+
return Object.freeze({
|
|
1040
|
+
...report,
|
|
1041
|
+
issues: missing.length === 0 ? report.issues : Object.freeze([...report.issues, ...missing]),
|
|
1042
|
+
warningCount: report.warningCount + missing.filter((i5) => i5.severity === "warning").length,
|
|
1043
|
+
errorCount: report.errorCount + missing.filter((i5) => i5.severity === "error").length,
|
|
1044
|
+
source: prepared.created.info(next)
|
|
1045
|
+
});
|
|
1046
|
+
}
|
|
1047
|
+
function settle(err, prepared) {
|
|
1048
|
+
const { signal } = prepared.created.ctx;
|
|
1049
|
+
if (signal.aborted) {
|
|
1050
|
+
return signal.reason;
|
|
1051
|
+
}
|
|
1052
|
+
if (err instanceof LimitStop) {
|
|
1053
|
+
return settle(limitError(err, prepared), prepared);
|
|
1054
|
+
}
|
|
1055
|
+
if (err instanceof ImportError && err.report.source === void 0) {
|
|
1056
|
+
const withInfo = new ImportError(
|
|
1057
|
+
err.message,
|
|
1058
|
+
{ ...err.report, source: prepared.created.info(null) },
|
|
1059
|
+
err.details
|
|
1060
|
+
);
|
|
1061
|
+
withInfo.stack = err.stack;
|
|
1062
|
+
return withInfo;
|
|
1063
|
+
}
|
|
1064
|
+
return err;
|
|
1065
|
+
}
|
|
1066
|
+
function limitError(stop, prepared) {
|
|
1067
|
+
try {
|
|
1068
|
+
return failOn(prepared.report, "E_SOURCE_LIMIT", stop.message, { limit: stop.limit, value: stop.value });
|
|
1069
|
+
} catch (err) {
|
|
1070
|
+
return err;
|
|
1071
|
+
}
|
|
1072
|
+
}
|
|
1073
|
+
async function stopAtLimit(run, prepared) {
|
|
1074
|
+
try {
|
|
1075
|
+
return await run;
|
|
1076
|
+
} catch (err) {
|
|
1077
|
+
if (err instanceof LimitStop) {
|
|
1078
|
+
return prepared.report.finish();
|
|
1079
|
+
}
|
|
1080
|
+
throw err;
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
function isLazy(value) {
|
|
1084
|
+
const v2 = value;
|
|
1085
|
+
return typeof v2.load === "function" && v2.records === void 0 && v2.file === void 0 && v2.import === void 0;
|
|
1086
|
+
}
|
|
1087
|
+
class SourceRegistry {
|
|
1088
|
+
/**
|
|
1089
|
+
* Create one for a format registry, whose importers read `file` sources.
|
|
1090
|
+
* @param formats - the format registry
|
|
1091
|
+
* @param building - how it builds and freezes graphs
|
|
1092
|
+
*/
|
|
1093
|
+
constructor(formats, building) {
|
|
1094
|
+
this.formats = formats;
|
|
1095
|
+
this.building = building;
|
|
1096
|
+
this.entries = /* @__PURE__ */ new Map();
|
|
1097
|
+
}
|
|
1098
|
+
/**
|
|
1099
|
+
* Register a source or a lazy source. A malformed one, or an id already taken, throws an
|
|
1100
|
+
* ImportError with E_SOURCE_INVALID.
|
|
1101
|
+
* @param source - the source
|
|
1102
|
+
*/
|
|
1103
|
+
register(source) {
|
|
1104
|
+
if (isLazy(source)) {
|
|
1105
|
+
checkLazySource(source);
|
|
1106
|
+
} else {
|
|
1107
|
+
checkSource(source);
|
|
1108
|
+
}
|
|
1109
|
+
if (this.entries.has(source.id)) {
|
|
1110
|
+
failAlone("E_SOURCE_INVALID", `a source with id ${source.id} is already registered`, {
|
|
1111
|
+
id: source.id,
|
|
1112
|
+
reason: "duplicate"
|
|
1113
|
+
});
|
|
1114
|
+
}
|
|
1115
|
+
const lazy = isLazy(source) ? source : null;
|
|
1116
|
+
this.entries.set(source.id, {
|
|
1117
|
+
descriptor: source.descriptor ?? { plainName: source.id, params: [] },
|
|
1118
|
+
lazy,
|
|
1119
|
+
source: lazy === null ? source : null,
|
|
1120
|
+
loading: null
|
|
1121
|
+
});
|
|
1122
|
+
}
|
|
1123
|
+
/**
|
|
1124
|
+
* Whether a source id is registered.
|
|
1125
|
+
* @param id - the id
|
|
1126
|
+
* @returns true when registered
|
|
1127
|
+
*/
|
|
1128
|
+
has(id) {
|
|
1129
|
+
return this.entries.has(id);
|
|
1130
|
+
}
|
|
1131
|
+
/**
|
|
1132
|
+
* Every registered source, without loading any code.
|
|
1133
|
+
* @returns one entry per source, in registration order
|
|
1134
|
+
*/
|
|
1135
|
+
list() {
|
|
1136
|
+
return Object.freeze(
|
|
1137
|
+
[...this.entries].map(
|
|
1138
|
+
([id, e7]) => Object.freeze({ id, descriptor: e7.descriptor, loaded: e7.source !== null })
|
|
1139
|
+
)
|
|
1140
|
+
);
|
|
1141
|
+
}
|
|
1142
|
+
/**
|
|
1143
|
+
* A source by id, loading a lazy one; a source object passes through after its checks.
|
|
1144
|
+
* @param source - the id or the source
|
|
1145
|
+
* @returns the loaded source
|
|
1146
|
+
*/
|
|
1147
|
+
async resolve(source) {
|
|
1148
|
+
if (typeof source !== "string") {
|
|
1149
|
+
checkSource(source);
|
|
1150
|
+
return source;
|
|
1151
|
+
}
|
|
1152
|
+
const entry = this.entries.get(source);
|
|
1153
|
+
if (entry === void 0) {
|
|
1154
|
+
return failAlone(
|
|
1155
|
+
"E_SOURCE_UNKNOWN",
|
|
1156
|
+
`no source has id ${JSON.stringify(source)}`,
|
|
1157
|
+
{ id: source, known: [...this.entries.keys()] },
|
|
1158
|
+
sourceFormat(source)
|
|
1159
|
+
);
|
|
1160
|
+
}
|
|
1161
|
+
if (entry.source !== null) {
|
|
1162
|
+
return entry.source;
|
|
1163
|
+
}
|
|
1164
|
+
const lazy = entry.lazy;
|
|
1165
|
+
entry.loading ??= lazy.load().then(
|
|
1166
|
+
(loaded) => {
|
|
1167
|
+
if (loaded.id !== lazy.id) {
|
|
1168
|
+
failAlone("E_SOURCE_INVALID", `lazy source ${lazy.id} loaded a source with id ${loaded.id}`, {
|
|
1169
|
+
id: lazy.id,
|
|
1170
|
+
reason: "lazy"
|
|
1171
|
+
});
|
|
1172
|
+
}
|
|
1173
|
+
checkSource(loaded, lazy.descriptor);
|
|
1174
|
+
entry.source = loaded.descriptor === void 0 ? { ...loaded, descriptor: lazy.descriptor } : loaded;
|
|
1175
|
+
return entry.source;
|
|
1176
|
+
},
|
|
1177
|
+
(err) => {
|
|
1178
|
+
entry.loading = null;
|
|
1179
|
+
throw err;
|
|
1180
|
+
}
|
|
1181
|
+
);
|
|
1182
|
+
return entry.loading;
|
|
1183
|
+
}
|
|
1184
|
+
/**
|
|
1185
|
+
* Load a graph from a source.
|
|
1186
|
+
* @param source - the id or the source
|
|
1187
|
+
* @param params - its params
|
|
1188
|
+
* @param options - endpoint, credential, cursor, caps and the import options
|
|
1189
|
+
* @returns the graph and the report
|
|
1190
|
+
*/
|
|
1191
|
+
async load(source, params, options = {}) {
|
|
1192
|
+
const resolved = await this.resolve(source);
|
|
1193
|
+
const builder = this.building.newBuilder(options, sourceFormat(resolved.id));
|
|
1194
|
+
const { report, format } = await runIntoSink(resolved, params, builder, options, this.formats);
|
|
1195
|
+
return this.building.freeze(format, builder, report, options);
|
|
1196
|
+
}
|
|
1197
|
+
/**
|
|
1198
|
+
* Load from a source into a sink you own.
|
|
1199
|
+
* @param source - the id or the source
|
|
1200
|
+
* @param params - its params
|
|
1201
|
+
* @param sink - where to write
|
|
1202
|
+
* @param options - the options
|
|
1203
|
+
* @returns the report
|
|
1204
|
+
*/
|
|
1205
|
+
async import(source, params, sink, options = {}) {
|
|
1206
|
+
const resolved = await this.resolve(source);
|
|
1207
|
+
return (await runIntoSink(resolved, params, sink, options, this.formats)).report;
|
|
1208
|
+
}
|
|
1209
|
+
/**
|
|
1210
|
+
* Fetch the neighborhood of some nodes: a snapshot of only what was fetched.
|
|
1211
|
+
* @param source - the id or the source
|
|
1212
|
+
* @param request - the seeds and how far to go
|
|
1213
|
+
* @param options - the options
|
|
1214
|
+
* @returns the fetched part and the report
|
|
1215
|
+
*/
|
|
1216
|
+
async expand(source, request, options = {}) {
|
|
1217
|
+
const resolved = await this.resolve(source);
|
|
1218
|
+
const builder = this.building.newBuilder(options, sourceFormat(resolved.id));
|
|
1219
|
+
const report = await runMethod(resolved, "expand", request.params, options, async (prepared) => {
|
|
1220
|
+
const sink = wrapSink(builder, prepared, options.idPrefix);
|
|
1221
|
+
const run = resolved.expand?.({ ...request, params: prepared.params }, sink, prepared.created.ctx);
|
|
1222
|
+
const out = await stopAtLimit(run, prepared);
|
|
1223
|
+
return withSource(
|
|
1224
|
+
out,
|
|
1225
|
+
prepared,
|
|
1226
|
+
wrapCursor(prepared.created.state.finish?.next, resolved.descriptor?.version ?? 1)
|
|
1227
|
+
);
|
|
1228
|
+
});
|
|
1229
|
+
return this.building.freeze(sourceFormat(resolved.id), builder, report, options);
|
|
1230
|
+
}
|
|
1231
|
+
/**
|
|
1232
|
+
* Check params and credential without loading.
|
|
1233
|
+
* @param source - the id or the source
|
|
1234
|
+
* @param params - its params
|
|
1235
|
+
* @param options - the options
|
|
1236
|
+
* @returns what the service said
|
|
1237
|
+
*/
|
|
1238
|
+
async probe(source, params, options = {}) {
|
|
1239
|
+
const resolved = await this.resolve(source);
|
|
1240
|
+
return runMethod(
|
|
1241
|
+
resolved,
|
|
1242
|
+
"probe",
|
|
1243
|
+
params,
|
|
1244
|
+
options,
|
|
1245
|
+
(prepared) => resolved.probe?.(prepared.params, prepared.created.ctx)
|
|
1246
|
+
);
|
|
1247
|
+
}
|
|
1248
|
+
/**
|
|
1249
|
+
* Search what a source holds.
|
|
1250
|
+
* @param source - the id or the source
|
|
1251
|
+
* @param query - the search
|
|
1252
|
+
* @param options - the options
|
|
1253
|
+
* @returns one page of results
|
|
1254
|
+
*/
|
|
1255
|
+
async search(source, query, options = {}) {
|
|
1256
|
+
const resolved = await this.resolve(source);
|
|
1257
|
+
const partial = resolved.descriptor === void 0 ? void 0 : {
|
|
1258
|
+
...resolved.descriptor,
|
|
1259
|
+
params: resolved.descriptor.params.map((p5) => ({ ...p5, required: false }))
|
|
1260
|
+
};
|
|
1261
|
+
return runMethod(
|
|
1262
|
+
{ ...resolved, descriptor: partial },
|
|
1263
|
+
"list",
|
|
1264
|
+
query.params,
|
|
1265
|
+
options,
|
|
1266
|
+
(prepared) => resolved.list?.(
|
|
1267
|
+
{ ...query, params: prepared.params },
|
|
1268
|
+
prepared.created.ctx
|
|
1269
|
+
)
|
|
1270
|
+
);
|
|
1271
|
+
}
|
|
1272
|
+
/**
|
|
1273
|
+
* Tell whether data loaded earlier changed.
|
|
1274
|
+
* @param source - the id or the source
|
|
1275
|
+
* @param params - the params it was loaded with
|
|
1276
|
+
* @param seen - the validators recorded then
|
|
1277
|
+
* @param options - the options
|
|
1278
|
+
* @returns whether it changed
|
|
1279
|
+
*/
|
|
1280
|
+
async validate(source, params, seen, options = {}) {
|
|
1281
|
+
const resolved = await this.resolve(source);
|
|
1282
|
+
return runMethod(
|
|
1283
|
+
resolved,
|
|
1284
|
+
"validate",
|
|
1285
|
+
params,
|
|
1286
|
+
options,
|
|
1287
|
+
(prepared) => resolved.validate?.(prepared.params, seen, prepared.created.ctx)
|
|
1288
|
+
);
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
574
1291
|
const UNKNOWN_FORMAT_CODE = "E_UNKNOWN_FORMAT";
|
|
575
1292
|
const SNIFF_FAILED_CODE = "W_SNIFF_FAILED";
|
|
576
1293
|
const FUNCTION_OPTIONS = /* @__PURE__ */ new Set([
|
|
@@ -615,6 +1332,112 @@ class FormatRegistry {
|
|
|
615
1332
|
constructor() {
|
|
616
1333
|
this.importerMap = /* @__PURE__ */ new Map();
|
|
617
1334
|
this.exporterMap = /* @__PURE__ */ new Map();
|
|
1335
|
+
this.sources = new SourceRegistry(this, {
|
|
1336
|
+
newBuilder: (options, format) => seededBuilder(options, format),
|
|
1337
|
+
freeze: (format, builder, report, options) => result(
|
|
1338
|
+
{ importer: { format }, sniff: null, warnings: [] },
|
|
1339
|
+
builder,
|
|
1340
|
+
report,
|
|
1341
|
+
options
|
|
1342
|
+
)
|
|
1343
|
+
});
|
|
1344
|
+
}
|
|
1345
|
+
/**
|
|
1346
|
+
* Register a network source, or a lazy one whose code loads on first use. Source ids are their
|
|
1347
|
+
* own name space, apart from format names. Throws an ImportError with E_SOURCE_INVALID for a
|
|
1348
|
+
* malformed source or an id already taken. Experimental.
|
|
1349
|
+
* @param source - the source
|
|
1350
|
+
* @returns this registry
|
|
1351
|
+
*/
|
|
1352
|
+
registerSource(source) {
|
|
1353
|
+
this.sources.register(source);
|
|
1354
|
+
return this;
|
|
1355
|
+
}
|
|
1356
|
+
/**
|
|
1357
|
+
* A registered source by id, its code loaded. Rejects with E_SOURCE_UNKNOWN for an id no
|
|
1358
|
+
* source has. Experimental.
|
|
1359
|
+
* @param id - the source id
|
|
1360
|
+
* @returns the source
|
|
1361
|
+
*/
|
|
1362
|
+
source(id) {
|
|
1363
|
+
return this.sources.resolve(id);
|
|
1364
|
+
}
|
|
1365
|
+
/**
|
|
1366
|
+
* Whether a source id is registered. Experimental.
|
|
1367
|
+
* @param id - the source id
|
|
1368
|
+
* @returns true when registered
|
|
1369
|
+
*/
|
|
1370
|
+
hasSource(id) {
|
|
1371
|
+
return this.sources.has(id);
|
|
1372
|
+
}
|
|
1373
|
+
/**
|
|
1374
|
+
* Every registered source with its descriptor, loading no source code. Experimental.
|
|
1375
|
+
* @returns one entry per source
|
|
1376
|
+
*/
|
|
1377
|
+
listSources() {
|
|
1378
|
+
return this.sources.list();
|
|
1379
|
+
}
|
|
1380
|
+
/**
|
|
1381
|
+
* Load a graph from a network source; see the top-level loadFromSource(). Experimental.
|
|
1382
|
+
* @param source - the source id or the source
|
|
1383
|
+
* @param params - its params
|
|
1384
|
+
* @param options - endpoint, credential, cursor, caps and import options
|
|
1385
|
+
* @returns the graph and the report
|
|
1386
|
+
*/
|
|
1387
|
+
loadFromSource(source, params, options) {
|
|
1388
|
+
return this.sources.load(source, params, options);
|
|
1389
|
+
}
|
|
1390
|
+
/**
|
|
1391
|
+
* Load from a network source into a sink you own. Experimental.
|
|
1392
|
+
* @param source - the source id or the source
|
|
1393
|
+
* @param params - its params
|
|
1394
|
+
* @param sink - where to write
|
|
1395
|
+
* @param options - the options
|
|
1396
|
+
* @returns the report
|
|
1397
|
+
*/
|
|
1398
|
+
importFromSource(source, params, sink, options) {
|
|
1399
|
+
return this.sources.import(source, params, sink, options);
|
|
1400
|
+
}
|
|
1401
|
+
/**
|
|
1402
|
+
* Fetch the neighborhood of some nodes from a network source. Experimental.
|
|
1403
|
+
* @param source - the source id or the source
|
|
1404
|
+
* @param request - the seeds and how far to go
|
|
1405
|
+
* @param options - the options
|
|
1406
|
+
* @returns a graph of only what was fetched
|
|
1407
|
+
*/
|
|
1408
|
+
expandFromSource(source, request, options) {
|
|
1409
|
+
return this.sources.expand(source, request, options);
|
|
1410
|
+
}
|
|
1411
|
+
/**
|
|
1412
|
+
* Check a source's params and credential without loading. Experimental.
|
|
1413
|
+
* @param source - the source id or the source
|
|
1414
|
+
* @param params - its params
|
|
1415
|
+
* @param options - the options
|
|
1416
|
+
* @returns what the service said
|
|
1417
|
+
*/
|
|
1418
|
+
probeSource(source, params, options) {
|
|
1419
|
+
return this.sources.probe(source, params, options);
|
|
1420
|
+
}
|
|
1421
|
+
/**
|
|
1422
|
+
* Search what a source holds. Experimental.
|
|
1423
|
+
* @param source - the source id or the source
|
|
1424
|
+
* @param query - the search
|
|
1425
|
+
* @param options - the options
|
|
1426
|
+
* @returns one page of results
|
|
1427
|
+
*/
|
|
1428
|
+
listFromSource(source, query, options) {
|
|
1429
|
+
return this.sources.search(source, query, options);
|
|
1430
|
+
}
|
|
1431
|
+
/**
|
|
1432
|
+
* Tell whether data loaded from a source changed. Experimental.
|
|
1433
|
+
* @param source - the source id or the source
|
|
1434
|
+
* @param params - the params it was loaded with
|
|
1435
|
+
* @param seen - the validators recorded then (`report.source.validators`)
|
|
1436
|
+
* @param options - the options
|
|
1437
|
+
* @returns whether it changed
|
|
1438
|
+
*/
|
|
1439
|
+
validateSource(source, params, seen, options) {
|
|
1440
|
+
return this.sources.validate(source, params, seen, options);
|
|
618
1441
|
}
|
|
619
1442
|
/**
|
|
620
1443
|
* Register an importer under its format name, replacing one of the same name in place (the
|
|
@@ -740,7 +1563,7 @@ class FormatRegistry {
|
|
|
740
1563
|
const { importer } = chosen;
|
|
741
1564
|
if ((opts.graphIndex !== void 0 || opts.graphName !== void 0) && importer.importAll !== void 0 && importer.listGraphs === void 0) {
|
|
742
1565
|
const all = await this.readAll(chosen, opts);
|
|
743
|
-
const names = all.map((
|
|
1566
|
+
const names = all.map((r4) => r4.snapshot.meta.name);
|
|
744
1567
|
return all[chooseGraph(names, opts, new ImportReportBuilder(importer.format, 0))];
|
|
745
1568
|
}
|
|
746
1569
|
let builder;
|
|
@@ -846,11 +1669,11 @@ class FormatRegistry {
|
|
|
846
1669
|
builders.length - 1
|
|
847
1670
|
);
|
|
848
1671
|
}
|
|
849
|
-
return reports.map((report,
|
|
1672
|
+
return reports.map((report, i5) => {
|
|
850
1673
|
try {
|
|
851
|
-
return result(chosen, builders[
|
|
1674
|
+
return result(chosen, builders[i5], report, options);
|
|
852
1675
|
} catch (err) {
|
|
853
|
-
throw inGraph(err,
|
|
1676
|
+
throw inGraph(err, i5);
|
|
854
1677
|
}
|
|
855
1678
|
});
|
|
856
1679
|
}
|
|
@@ -1038,11 +1861,11 @@ class FormatRegistry {
|
|
|
1038
1861
|
if (styled === null) {
|
|
1039
1862
|
notes = this.exporter(format).check(snapshot, options);
|
|
1040
1863
|
} else if (styled.refusal === null) {
|
|
1041
|
-
const key = (
|
|
1042
|
-
const reported = new Set(styled.notes.filter((
|
|
1864
|
+
const key = (n4) => `${n4.code}\0${n4.style?.target ?? ""}\0${n4.style?.property ?? ""}`;
|
|
1865
|
+
const reported = new Set(styled.notes.filter((n4) => n4.style !== void 0).map(key));
|
|
1043
1866
|
notes = [
|
|
1044
1867
|
...styled.exporter.check(styled.snapshot, styled.options).filter(
|
|
1045
|
-
(
|
|
1868
|
+
(n4) => n4.style === void 0 || !reported.has(key(n4)) && !isKeptGraphtyProperty(n4, styled.exporter)
|
|
1046
1869
|
),
|
|
1047
1870
|
...styled.notes
|
|
1048
1871
|
];
|
|
@@ -1135,7 +1958,11 @@ class FormatRegistry {
|
|
|
1135
1958
|
}
|
|
1136
1959
|
}
|
|
1137
1960
|
function createRegistry() {
|
|
1138
|
-
|
|
1961
|
+
const formats = new FormatRegistry().registerImporter(jsonImporter).registerExporter(jsonExporter).registerImporter(graphmlImporter).registerExporter(graphmlExporter).registerImporter(gexfImporter).registerExporter(gexfExporter).registerImporter(csvImporter).registerExporter(csvExporter).registerImporter(gmlImporter).registerExporter(gmlExporter).registerImporter(dotImporter).registerExporter(dotExporter).registerImporter(pajekImporter).registerExporter(pajekExporter).registerImporter(neo4jImporter).registerExporter(neo4jExporter).registerImporter(xgmmlImporter).registerExporter(xgmmlExporter).registerImporter(cx2Importer).registerExporter(cx2Exporter).registerImporter(cxImporter).registerExporter(cxExporter).registerImporter(oboImporter).registerExporter(oboExporter).registerImporter(cysImporter).registerExporter(cysExporter);
|
|
1962
|
+
for (const source of builtinSources()) {
|
|
1963
|
+
formats.registerSource(source);
|
|
1964
|
+
}
|
|
1965
|
+
return formats;
|
|
1139
1966
|
}
|
|
1140
1967
|
const registry = /* @__PURE__ */ createRegistry();
|
|
1141
1968
|
function importGraph(input, options) {
|
|
@@ -1295,7 +2122,7 @@ function result(chosen, builder, report, options) {
|
|
|
1295
2122
|
return Object.freeze(result2);
|
|
1296
2123
|
}
|
|
1297
2124
|
function withoutStylesNotImported(report) {
|
|
1298
|
-
const issues = report.issues.filter((
|
|
2125
|
+
const issues = report.issues.filter((i5) => i5.code !== STYLES_NOT_IMPORTED_CODE);
|
|
1299
2126
|
if (issues.length === report.issues.length) {
|
|
1300
2127
|
return report;
|
|
1301
2128
|
}
|
|
@@ -1326,7 +2153,7 @@ function unknownOptionText(name) {
|
|
|
1326
2153
|
return `option ${JSON.stringify(name)} is not an option of any format or of the load and save functions, so it has no effect; check its spelling`;
|
|
1327
2154
|
}
|
|
1328
2155
|
function weightNotFound(report, snapshot, weightFrom) {
|
|
1329
|
-
if (typeof weightFrom !== "string" || snapshot.edgeCount === 0 || snapshot.edgeList().weights !== null || report.issues.some((
|
|
2156
|
+
if (typeof weightFrom !== "string" || snapshot.edgeCount === 0 || snapshot.edgeList().weights !== null || report.issues.some((i5) => i5.code === OPTION_IGNORED_CODE && i5.element === "weightFrom")) {
|
|
1330
2157
|
return report;
|
|
1331
2158
|
}
|
|
1332
2159
|
const issue = Object.freeze({
|
|
@@ -1441,10 +2268,10 @@ async function peekHead(input, bytes, signal) {
|
|
|
1441
2268
|
return { head: joinHead(buffered, bytes), input: replayed, close: () => replayed.close() };
|
|
1442
2269
|
}
|
|
1443
2270
|
function joinHead(chunks, bytes) {
|
|
1444
|
-
if (chunks.every((
|
|
2271
|
+
if (chunks.every((c9) => c9 instanceof Uint8Array)) {
|
|
1445
2272
|
const total = Math.min(
|
|
1446
2273
|
bytes,
|
|
1447
|
-
chunks.reduce((sum,
|
|
2274
|
+
chunks.reduce((sum, c9) => sum + c9.byteLength, 0)
|
|
1448
2275
|
);
|
|
1449
2276
|
const head = new Uint8Array(total);
|
|
1450
2277
|
let offset = 0;
|
|
@@ -1537,153 +2364,269 @@ function readerIterator(stream, signal) {
|
|
|
1537
2364
|
}
|
|
1538
2365
|
};
|
|
1539
2366
|
}
|
|
2367
|
+
function loadFromSource(source, params, options) {
|
|
2368
|
+
return registry.loadFromSource(source, params, options);
|
|
2369
|
+
}
|
|
2370
|
+
function importFromSource(source, params, sink, options) {
|
|
2371
|
+
return registry.importFromSource(source, params, sink, options);
|
|
2372
|
+
}
|
|
2373
|
+
function expandFromSource(source, request, options) {
|
|
2374
|
+
return registry.expandFromSource(source, request, options);
|
|
2375
|
+
}
|
|
2376
|
+
function probeSource(source, params, options) {
|
|
2377
|
+
return registry.probeSource(source, params, options);
|
|
2378
|
+
}
|
|
2379
|
+
function listFromSource(source, query, options) {
|
|
2380
|
+
return registry.listFromSource(source, query, options);
|
|
2381
|
+
}
|
|
2382
|
+
function validateSource(source, params, seen, options) {
|
|
2383
|
+
return registry.validateSource(source, params, seen, options);
|
|
2384
|
+
}
|
|
2385
|
+
function registerSource(source) {
|
|
2386
|
+
registry.registerSource(source);
|
|
2387
|
+
}
|
|
2388
|
+
function listSources() {
|
|
2389
|
+
return registry.listSources();
|
|
2390
|
+
}
|
|
2391
|
+
function replayFetch(recordings, options = {}) {
|
|
2392
|
+
const secretQuery = new Set(options.secretQuery ?? []);
|
|
2393
|
+
const secretHeaders = ["authorization", ...(options.secretHeaders ?? []).map((h4) => h4.toLowerCase())];
|
|
2394
|
+
const used = /* @__PURE__ */ new Set();
|
|
2395
|
+
const calls = [];
|
|
2396
|
+
const key = (url) => {
|
|
2397
|
+
const params = [...url.searchParams].filter(([k2]) => !secretQuery.has(k2)).sort(compare);
|
|
2398
|
+
return `${url.origin}${url.pathname}?${new URLSearchParams(params).toString()}`;
|
|
2399
|
+
};
|
|
2400
|
+
const replay2 = async (input, init) => {
|
|
2401
|
+
const request = new Request(input, init);
|
|
2402
|
+
request.signal.throwIfAborted();
|
|
2403
|
+
const url = new URL(request.url);
|
|
2404
|
+
const method = request.method.toUpperCase();
|
|
2405
|
+
const body = method === "GET" || method === "HEAD" ? "" : await request.clone().text();
|
|
2406
|
+
const credential = secretHeaders.some((h4) => request.headers.has(h4)) || [...url.searchParams.keys()].some((k2) => secretQuery.has(k2));
|
|
2407
|
+
const wanted = key(url);
|
|
2408
|
+
const matches = [];
|
|
2409
|
+
recordings.forEach((r22, i5) => {
|
|
2410
|
+
if ((r22.method ?? "GET").toUpperCase() === method && key(new URL(r22.url)) === wanted && (r22.credential === void 0 || r22.credential === credential) && (r22.requestBody === void 0 || sameBody(r22.requestBody, body))) {
|
|
2411
|
+
matches.push(i5);
|
|
2412
|
+
}
|
|
2413
|
+
});
|
|
2414
|
+
const index = matches.find((i5) => !used.has(i5)) ?? matches.at(-1);
|
|
2415
|
+
if (index === void 0) {
|
|
2416
|
+
throw new Error(`replayFetch: no recording for ${method} ${url.origin}${url.pathname}`);
|
|
2417
|
+
}
|
|
2418
|
+
used.add(index);
|
|
2419
|
+
calls.push({ method, url: `${url.origin}${url.pathname}`, credential });
|
|
2420
|
+
const r4 = recordings[index];
|
|
2421
|
+
const status = r4.status ?? 200;
|
|
2422
|
+
const text = bodyText(r4.body);
|
|
2423
|
+
const headers = new Headers(r4.headers);
|
|
2424
|
+
if (text !== null && typeof r4.body !== "string" && !headers.has("content-type")) {
|
|
2425
|
+
headers.set("content-type", "application/json");
|
|
2426
|
+
}
|
|
2427
|
+
const nullBody = status === 204 || status === 304 || status >= 300 && status < 400 && text === null;
|
|
2428
|
+
return new Response(nullBody ? null : text, { status, headers });
|
|
2429
|
+
};
|
|
2430
|
+
return Object.assign(replay2, { calls });
|
|
2431
|
+
}
|
|
2432
|
+
function bodyText(body) {
|
|
2433
|
+
if (body === void 0 || body === null) {
|
|
2434
|
+
return null;
|
|
2435
|
+
}
|
|
2436
|
+
return typeof body === "string" ? body : JSON.stringify(body);
|
|
2437
|
+
}
|
|
2438
|
+
function compare(a25, b7) {
|
|
2439
|
+
return a25[0] === b7[0] ? a25[1].localeCompare(b7[1]) : a25[0].localeCompare(b7[0]);
|
|
2440
|
+
}
|
|
2441
|
+
function sameBody(recorded, sent) {
|
|
2442
|
+
try {
|
|
2443
|
+
return JSON.stringify(JSON.parse(recorded)) === JSON.stringify(JSON.parse(sent));
|
|
2444
|
+
} catch {
|
|
2445
|
+
return recorded === sent;
|
|
2446
|
+
}
|
|
2447
|
+
}
|
|
2448
|
+
async function recordingFrom(request, response, options = {}) {
|
|
2449
|
+
const headers = {};
|
|
2450
|
+
for (const name of ["content-type", ...options.keepHeaders ?? []]) {
|
|
2451
|
+
const value = response.headers.get(name);
|
|
2452
|
+
if (value !== null) {
|
|
2453
|
+
headers[name.toLowerCase()] = value;
|
|
2454
|
+
}
|
|
2455
|
+
}
|
|
2456
|
+
const url = new URL(request.url);
|
|
2457
|
+
for (const name of options.secretQuery ?? []) {
|
|
2458
|
+
url.searchParams.delete(name);
|
|
2459
|
+
}
|
|
2460
|
+
const method = request.method.toUpperCase();
|
|
2461
|
+
const requestBody = method === "GET" || method === "HEAD" ? void 0 : await request.clone().text();
|
|
2462
|
+
return {
|
|
2463
|
+
method,
|
|
2464
|
+
url: url.toString(),
|
|
2465
|
+
...requestBody === void 0 || requestBody === "" ? {} : { requestBody },
|
|
2466
|
+
status: response.status,
|
|
2467
|
+
headers,
|
|
2468
|
+
body: await response.text()
|
|
2469
|
+
};
|
|
2470
|
+
}
|
|
1540
2471
|
export {
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
2472
|
+
W as AMBIGUOUS_GRAPH_NAME_CODE,
|
|
2473
|
+
a3 as ASPECT_ORDER_CODE,
|
|
2474
|
+
L as BAD_ASPECT_BLOCK_CODE,
|
|
1544
2475
|
B as BAD_DEFAULT_CODE,
|
|
1545
2476
|
BAD_LINE_CODE,
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
2477
|
+
ac as BAD_OPTIONS_CODE,
|
|
2478
|
+
T as BAD_VALUE_CODE,
|
|
2479
|
+
a8 as COLUMN_AS_PROPERTY_VALUE_CODE,
|
|
2480
|
+
aA as COLUMN_DROPPED_CODE,
|
|
1550
2481
|
C as COLUMN_RENAMED_CODE,
|
|
1551
|
-
|
|
2482
|
+
aq as COLUMN_RENAMED_LOSS_CODE,
|
|
1552
2483
|
x as COLUMN_TYPE_CODE,
|
|
1553
|
-
|
|
2484
|
+
a6 as CONTROL_CHARACTER_CODE,
|
|
1554
2485
|
h as COUNT_HINT_CODE,
|
|
1555
2486
|
g as COUNT_MISMATCH_CODE,
|
|
1556
2487
|
CSV_CAPABILITIES,
|
|
1557
2488
|
CSV_ISSUE,
|
|
1558
2489
|
CSV_LOSS,
|
|
1559
|
-
|
|
1560
|
-
|
|
2490
|
+
C6 as CX2_CAPABILITIES,
|
|
2491
|
+
C7 as CX2_ISSUE,
|
|
1561
2492
|
a14 as CX2_LOSS,
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
2493
|
+
C4 as CX_CAPABILITIES,
|
|
2494
|
+
C5 as CX_ISSUE,
|
|
2495
|
+
a13 as CX_LOSS,
|
|
2496
|
+
CYPHER_SOURCE_ID,
|
|
2497
|
+
C8 as CYS_CAPABILITIES,
|
|
1566
2498
|
a15 as CYS_ISSUE,
|
|
1567
|
-
|
|
1568
|
-
|
|
2499
|
+
b2 as CYS_LOSS,
|
|
2500
|
+
C3 as ChildrenCsr,
|
|
1569
2501
|
f as DANGLING_REFERENCE_CODE,
|
|
1570
2502
|
D2 as DEFAULT_CHUNK_BYTES,
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
2503
|
+
Z2 as DEFAULT_ERROR_LIMIT,
|
|
2504
|
+
_2 as DIRECTED_COLUMN,
|
|
2505
|
+
aB as DIRECTION_DROPPED_CODE,
|
|
1574
2506
|
D as DIRECTION_FORCED_CODE,
|
|
1575
2507
|
b as DIRECTION_REFUSED_CODE,
|
|
1576
2508
|
D3 as DOT_ISSUE,
|
|
1577
2509
|
a16 as DOT_LOSS,
|
|
1578
|
-
|
|
1579
|
-
|
|
2510
|
+
S4 as DOT_STYLE_BLOCK_ATTRIBUTE,
|
|
2511
|
+
b3 as DOT_STYLE_CAPABILITIES,
|
|
1580
2512
|
l as DUPLICATE_ATTRIBUTE_CODE,
|
|
1581
|
-
|
|
2513
|
+
aC as DUPLICATE_EDGE_CODE,
|
|
1582
2514
|
j as DUPLICATE_EDGE_ID_CODE,
|
|
1583
2515
|
q as DUPLICATE_KEY_CODE,
|
|
1584
2516
|
k as DUPLICATE_NODE_CODE,
|
|
1585
2517
|
DirectionResolver,
|
|
1586
2518
|
EDGES_MERGED_CODE,
|
|
1587
2519
|
y as ELEMENT_ISSUE,
|
|
1588
|
-
|
|
2520
|
+
aD as EMPTY_COLUMN_DROPPED_CODE,
|
|
1589
2521
|
EMPTY_INPUT_CODE,
|
|
1590
2522
|
r as ENCODING_CONFLICT_CODE,
|
|
1591
2523
|
t as ENCODING_FALLBACK_CODE,
|
|
1592
|
-
|
|
2524
|
+
ao as EQUATION_AS_TEXT_CODE,
|
|
1593
2525
|
FETCH_CODE,
|
|
1594
|
-
|
|
2526
|
+
a7 as FOREIGN_FORMAT_CODE,
|
|
1595
2527
|
FormatRegistry,
|
|
1596
2528
|
GEXF_1_2_CAPABILITIES,
|
|
1597
2529
|
GEXF_ISSUE,
|
|
1598
2530
|
GEXF_LOSS,
|
|
1599
|
-
|
|
2531
|
+
j5 as GEXF_STYLE_CAPABILITIES,
|
|
1600
2532
|
GML_ISSUE,
|
|
1601
2533
|
GML_LOSS,
|
|
1602
2534
|
GML_STYLE_BLOCK_KEY,
|
|
1603
2535
|
GML_STYLE_CAPABILITIES,
|
|
1604
|
-
|
|
2536
|
+
G3 as GRAPHML_ISSUE,
|
|
1605
2537
|
a20 as GRAPHML_LOSS,
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
2538
|
+
G4 as GRAPHML_STYLE_CAPABILITIES,
|
|
2539
|
+
a24 as GRAPHTY_XML_NAMESPACE,
|
|
2540
|
+
ae as GRAPH_COLUMN_AS_METADATA_CODE,
|
|
2541
|
+
G2 as GRAPH_FORMATS,
|
|
2542
|
+
Y as GRAPH_NOT_FOUND_CODE,
|
|
1611
2543
|
GraphBuilder2 as GraphBuilder,
|
|
1612
2544
|
GraphFormatError2 as GraphFormatError,
|
|
1613
2545
|
H as HYPEREDGE_CODE,
|
|
1614
2546
|
I as ID_MERGED_CODE,
|
|
1615
2547
|
ID_SPACE_COLUMN,
|
|
1616
|
-
|
|
2548
|
+
aj as ID_TEXT_COLLISION_CODE,
|
|
1617
2549
|
A as ID_TEXT_TYPE_CODE,
|
|
1618
2550
|
z as INPUT_ISSUE,
|
|
1619
|
-
|
|
2551
|
+
aE as INTEGRAL_F64_CODE,
|
|
1620
2552
|
u as INVALID_ENCODING_CODE,
|
|
1621
2553
|
INVALID_INDEX2 as INVALID_INDEX,
|
|
1622
2554
|
v as INVALID_UTF8_CODE,
|
|
1623
|
-
|
|
2555
|
+
aF as ISSUES_SUPPRESSED_CODE,
|
|
1624
2556
|
IdCoercer,
|
|
1625
2557
|
ImportError,
|
|
1626
2558
|
ImportReportBuilder,
|
|
1627
|
-
|
|
2559
|
+
J3 as JSON_DIALECTS,
|
|
1628
2560
|
a17 as JSON_ISSUE,
|
|
1629
|
-
|
|
1630
|
-
|
|
2561
|
+
b4 as JSON_LOSS,
|
|
2562
|
+
Z as JSON_NONSTANDARD_NUMBER_CODE,
|
|
1631
2563
|
LABELS_COLUMN,
|
|
1632
2564
|
L2 as LOSS,
|
|
1633
2565
|
LineReader,
|
|
1634
2566
|
M2 as MAX_XML_DEPTH,
|
|
1635
2567
|
n as MISSING_ENDPOINT_CODE,
|
|
1636
|
-
|
|
2568
|
+
MISSING_ID_CODE,
|
|
1637
2569
|
M as MIXED_DIRECTION_CODE,
|
|
1638
2570
|
i as MULTIPLE_GRAPHS_CODE,
|
|
1639
|
-
|
|
2571
|
+
$ as MULTI_ASPECT_FRAGMENT_CODE,
|
|
1640
2572
|
J as MUTUAL_AS_UNDIRECTED_CODE,
|
|
1641
|
-
|
|
1642
|
-
|
|
2573
|
+
$2 as MUTUAL_COLUMN,
|
|
2574
|
+
al as MUTUAL_EXPANDED_CODE,
|
|
2575
|
+
NDEX_SOURCE_ID,
|
|
1643
2576
|
NEO4J_CAPABILITIES,
|
|
1644
2577
|
NEO4J_ISSUE,
|
|
1645
2578
|
NEO4J_LOSS,
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
2579
|
+
NEO4J_SOURCE_ID,
|
|
2580
|
+
NEPTUNE_SOURCE_ID,
|
|
2581
|
+
ad as NODE_ORDER_CODE,
|
|
2582
|
+
aG as NONFINITE_AS_NULL_CODE,
|
|
2583
|
+
a0 as NO_CAPABILITIES,
|
|
1649
2584
|
N as NO_GRAPH_CODE,
|
|
1650
2585
|
O2 as OBO_CAPABILITIES,
|
|
1651
2586
|
a18 as OBO_ISSUE,
|
|
1652
|
-
|
|
1653
|
-
|
|
2587
|
+
b5 as OBO_LOSS,
|
|
2588
|
+
OPENALEX_SOURCE_ID,
|
|
2589
|
+
aH as OPTIONS_GAINED_CODE,
|
|
1654
2590
|
OPTION_IGNORED_CODE,
|
|
1655
2591
|
ORIGINAL_ID_COLUMN,
|
|
1656
|
-
|
|
1657
|
-
|
|
2592
|
+
a12 as PAIR_COLUMN,
|
|
2593
|
+
P3 as PAJEK_ISSUE,
|
|
1658
2594
|
a19 as PAJEK_LOSS,
|
|
1659
|
-
|
|
1660
|
-
|
|
2595
|
+
b6 as PAJEK_STYLE_CAPABILITIES,
|
|
2596
|
+
c5 as PAJEK_STYLE_COMMENT,
|
|
1661
2597
|
G as PARENTS_DROPPED_CODE,
|
|
1662
|
-
|
|
1663
|
-
|
|
2598
|
+
a1 as PARENT_CYCLE_CODE,
|
|
2599
|
+
aI as PARSE_ERROR_CODE,
|
|
1664
2600
|
P as PRECISION_CODE,
|
|
1665
|
-
|
|
2601
|
+
ag as RELATION_ASSUMED_CODE,
|
|
1666
2602
|
R2 as RENAMED_CODE,
|
|
1667
|
-
|
|
2603
|
+
REST_SOURCE_ID,
|
|
2604
|
+
a9 as ROLE_ASSUMED_CODE,
|
|
1668
2605
|
F as ROLE_DROPPED_CODE,
|
|
1669
2606
|
R as ROLE_TAKEN_CODE,
|
|
1670
2607
|
SELF_LOOPS_DROPPED_CODE,
|
|
1671
|
-
|
|
1672
|
-
|
|
2608
|
+
aJ as SELF_LOOP_CODE,
|
|
2609
|
+
_ as SINGLE_OBJECT_ASPECT_CODE,
|
|
1673
2610
|
S as SINK_OPTION_CODE,
|
|
1674
2611
|
SNIFF_FAILED_CODE,
|
|
1675
2612
|
SNIFF_HEAD_BYTES,
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
2613
|
+
m3 as SOURCE_ATTR_PREFIX,
|
|
2614
|
+
n3 as SOURCE_DEGREE_ATTR,
|
|
2615
|
+
S3 as SOURCE_ENTITY_ATTR,
|
|
2616
|
+
SOURCE_FORMAT_PREFIX,
|
|
2617
|
+
S2 as SOURCE_ISSUE,
|
|
2618
|
+
e5 as SOURCE_STUB_ATTR,
|
|
2619
|
+
a5 as STATUS_FAILED_CODE,
|
|
2620
|
+
a4 as STATUS_WARNING_CODE,
|
|
2621
|
+
ap as STORAGE_CLASS_CODE,
|
|
1679
2622
|
c as STRAY_TEXT_CODE,
|
|
1680
2623
|
STYLES_NOT_IMPORTED_CODE,
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
2624
|
+
Q as SYNTAX_CODE,
|
|
2625
|
+
as as TEMPORAL_DROPPED_CODE,
|
|
2626
|
+
ar as TEMPORAL_TEXT_DROPPED_CODE,
|
|
2627
|
+
aK as TEXT_INFERRED_CODE,
|
|
2628
|
+
V as TOO_LARGE_CODE,
|
|
2629
|
+
af as TYPEDEF_NODES_CODE,
|
|
1687
2630
|
TYPE_COLUMN,
|
|
1688
2631
|
TextCellWriter,
|
|
1689
2632
|
U as UNKNOWN_ATTR_TYPE_CODE,
|
|
@@ -1692,33 +2635,34 @@ export {
|
|
|
1692
2635
|
UNKNOWN_FORMAT_CODE,
|
|
1693
2636
|
UNKNOWN_OPTION_CODE,
|
|
1694
2637
|
m as UNKNOWN_PARENT_CODE,
|
|
1695
|
-
|
|
2638
|
+
a22 as UNKNOWN_TYPE_CODE,
|
|
1696
2639
|
e as UNKNOWN_XML_ATTRIBUTE_CODE,
|
|
1697
|
-
|
|
1698
|
-
|
|
2640
|
+
aL as WEIGHTS_DROPPED_CODE,
|
|
2641
|
+
ak as WEIGHT_KEY_CLASH_CODE,
|
|
1699
2642
|
WEIGHT_NOT_FOUND_CODE,
|
|
1700
|
-
|
|
1701
|
-
|
|
2643
|
+
a2 as WIDENED_CODE,
|
|
2644
|
+
W3 as WIDENING_UNSUPPORTED_CODE,
|
|
1702
2645
|
X3 as XGMML_ISSUE,
|
|
1703
2646
|
a21 as XGMML_LOSS,
|
|
1704
|
-
|
|
2647
|
+
ab as XML_ILLEGAL_CHAR_CODE,
|
|
1705
2648
|
X as XML_NESTING_CODE,
|
|
1706
2649
|
w as XML_SYNTAX_CODE,
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
2650
|
+
d6 as XmlNestingError,
|
|
2651
|
+
c8 as XmlSyntaxError,
|
|
2652
|
+
p4 as XmlTokenizer,
|
|
2653
|
+
O as canonicalId,
|
|
1711
2654
|
c2 as capabilities,
|
|
1712
2655
|
a as checkCapabilities,
|
|
1713
2656
|
checkExport,
|
|
1714
|
-
|
|
2657
|
+
c4 as childrenCsr,
|
|
1715
2658
|
a11 as childrenFromColumn,
|
|
1716
2659
|
chooseGraph,
|
|
1717
|
-
|
|
1718
|
-
|
|
2660
|
+
a32 as coerceId,
|
|
2661
|
+
P2 as coerceIdText,
|
|
1719
2662
|
collectBytes,
|
|
1720
2663
|
compareSnapshots,
|
|
1721
2664
|
createRegistry,
|
|
2665
|
+
c6 as credentials,
|
|
1722
2666
|
csvExporter,
|
|
1723
2667
|
csvImporter,
|
|
1724
2668
|
cx2Exporter,
|
|
@@ -1727,18 +2671,20 @@ export {
|
|
|
1727
2671
|
cxImporter,
|
|
1728
2672
|
cysExporter,
|
|
1729
2673
|
cysImporter,
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
2674
|
+
t2 as declareCompanion,
|
|
2675
|
+
j2 as declareResolved,
|
|
2676
|
+
d2 as decodeChunks,
|
|
2677
|
+
e3 as decodeEntryName,
|
|
1734
2678
|
defineLineFormat,
|
|
2679
|
+
d4 as defineSource,
|
|
1735
2680
|
describeDiffs,
|
|
1736
|
-
|
|
2681
|
+
d3 as dialectCapabilities,
|
|
1737
2682
|
dotExporter,
|
|
1738
2683
|
dotImporter,
|
|
1739
2684
|
downloadGraph,
|
|
1740
|
-
|
|
1741
|
-
|
|
2685
|
+
a42 as edgeWeights,
|
|
2686
|
+
e4 as encodeChunks,
|
|
2687
|
+
expandFromSource,
|
|
1742
2688
|
e2 as explicitWeights,
|
|
1743
2689
|
exportGraph,
|
|
1744
2690
|
exportGraphToBlob,
|
|
@@ -1746,42 +2692,47 @@ export {
|
|
|
1746
2692
|
exportGraphToString,
|
|
1747
2693
|
exportNeo4jFiles,
|
|
1748
2694
|
g2 as extensionOf,
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
2695
|
+
a52 as forDecodedText,
|
|
2696
|
+
d5 as formatDecimal,
|
|
2697
|
+
f3 as formatF32,
|
|
2698
|
+
a23 as formatF64,
|
|
2699
|
+
e6 as formatGmlReal,
|
|
2700
|
+
c7 as formatInteger,
|
|
2701
|
+
p3 as fromStorableCredential,
|
|
1755
2702
|
gexfExporter,
|
|
1756
2703
|
gexfImporter,
|
|
1757
2704
|
gmlExporter,
|
|
1758
2705
|
gmlImporter,
|
|
1759
|
-
|
|
2706
|
+
h2 as graphChosen,
|
|
1760
2707
|
graphmlExporter,
|
|
1761
2708
|
graphmlImporter,
|
|
1762
|
-
|
|
1763
|
-
|
|
2709
|
+
o as hasIllegalXmlChar,
|
|
2710
|
+
h3 as headBytes,
|
|
1764
2711
|
importAllGraphs,
|
|
2712
|
+
importFromSource,
|
|
1765
2713
|
importGraph,
|
|
1766
|
-
|
|
1767
|
-
|
|
2714
|
+
i3 as inferTextDtype,
|
|
2715
|
+
c3 as inputLength,
|
|
1768
2716
|
isAbortError,
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
2717
|
+
J2 as isCanonicalIntegerText,
|
|
2718
|
+
i2 as isImportInput,
|
|
2719
|
+
W2 as isNmtoken,
|
|
1772
2720
|
a10 as isNumericText,
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
2721
|
+
m2 as isWeightField,
|
|
2722
|
+
j3 as joinText,
|
|
2723
|
+
j4 as jsonCapabilities,
|
|
1776
2724
|
jsonExporter,
|
|
1777
2725
|
jsonImporter,
|
|
1778
2726
|
f2 as jsonShapeOf,
|
|
1779
|
-
|
|
2727
|
+
an as keptForStyles,
|
|
1780
2728
|
listFormats,
|
|
2729
|
+
listFromSource,
|
|
1781
2730
|
listGraphs,
|
|
2731
|
+
listSources,
|
|
1782
2732
|
loadFromFile,
|
|
2733
|
+
loadFromSource,
|
|
1783
2734
|
loadFromUrl,
|
|
1784
|
-
|
|
2735
|
+
X2 as mangleNmtoken,
|
|
1785
2736
|
neo4jExporter,
|
|
1786
2737
|
neo4jImporter,
|
|
1787
2738
|
n2 as normalizeMimeType,
|
|
@@ -1792,22 +2743,28 @@ export {
|
|
|
1792
2743
|
pajekImporter,
|
|
1793
2744
|
p2 as parseTextCell,
|
|
1794
2745
|
parseWeightText,
|
|
2746
|
+
probeSource,
|
|
1795
2747
|
rankFormats,
|
|
1796
|
-
|
|
1797
|
-
|
|
2748
|
+
r3 as readText,
|
|
2749
|
+
recordingFrom,
|
|
2750
|
+
a62 as refusedSave,
|
|
2751
|
+
registerSource,
|
|
1798
2752
|
registry,
|
|
2753
|
+
replayFetch,
|
|
1799
2754
|
reportSinkOptions,
|
|
1800
2755
|
reportUnusedOptions,
|
|
1801
2756
|
r2 as resolveExportOptions,
|
|
1802
2757
|
resolveImportOptions,
|
|
1803
|
-
|
|
2758
|
+
C2 as sanitizeIds,
|
|
1804
2759
|
sniff,
|
|
1805
2760
|
s2 as sniffFormat,
|
|
1806
|
-
|
|
1807
|
-
|
|
2761
|
+
i4 as sniffJsonDialectHead,
|
|
2762
|
+
s3 as storableCredential,
|
|
2763
|
+
t3 as textChunks,
|
|
1808
2764
|
throwIfAborted,
|
|
1809
|
-
|
|
1810
|
-
|
|
2765
|
+
t4 as toReadableStream,
|
|
2766
|
+
t5 as tokenizeXml,
|
|
2767
|
+
validateSource,
|
|
1811
2768
|
xgmmlExporter,
|
|
1812
2769
|
xgmmlImporter,
|
|
1813
2770
|
x2 as xmlIllegalTextNotes
|