@graphty/graph-io 0.3.47 → 0.3.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{approximations-wWjCRzKj.js → approximations-C2riR4NT.js} +2 -2
- package/dist/chunks/{approximations-wWjCRzKj.js.map → approximations-C2riR4NT.js.map} +1 -1
- package/dist/chunks/{block-DiGq58c3.js → block-Cu22ewuS.js} +92 -21
- package/dist/chunks/block-Cu22ewuS.js.map +1 -0
- package/dist/chunks/{choose--jM0yYCo.js → choose-Cdx6Enl2.js} +3 -3
- package/dist/chunks/{choose--jM0yYCo.js.map → choose-Cdx6Enl2.js.map} +1 -1
- package/dist/chunks/codes-CV_Bhcyi.js +153 -0
- package/dist/chunks/codes-CV_Bhcyi.js.map +1 -0
- package/dist/chunks/{constants-BKwqelYD.js → constants-D0LqcsLJ.js} +2 -2
- package/dist/chunks/{constants-BKwqelYD.js.map → constants-D0LqcsLJ.js.map} +1 -1
- package/dist/chunks/context-cgmmOxZ2.js +663 -0
- package/dist/chunks/context-cgmmOxZ2.js.map +1 -0
- package/dist/chunks/credentials-BiQsnMTb.js +347 -0
- package/dist/chunks/credentials-BiQsnMTb.js.map +1 -0
- package/dist/chunks/cx-export-BEeF6ymo.js +259 -0
- package/dist/chunks/cx-export-BEeF6ymo.js.map +1 -0
- package/dist/chunks/descriptor-BJ-W0Jd-.js +137 -0
- package/dist/chunks/descriptor-BJ-W0Jd-.js.map +1 -0
- package/dist/chunks/descriptor-C-YDhtsn.js +48 -0
- package/dist/chunks/descriptor-C-YDhtsn.js.map +1 -0
- package/dist/chunks/{emit-CwU8cUmG.js → emit-CD8xnY8s.js} +70 -10
- package/dist/chunks/emit-CD8xnY8s.js.map +1 -0
- package/dist/chunks/{escape-CgzxiYPg.js → escape-DH2Egt-l.js} +12 -12
- package/dist/chunks/{escape-CgzxiYPg.js.map → escape-DH2Egt-l.js.map} +1 -1
- package/dist/chunks/{export-BvqAXCKh.js → export-CZ7VRm4I.js} +53 -1443
- package/dist/chunks/export-CZ7VRm4I.js.map +1 -0
- package/dist/chunks/{exporter-DndFlGSa.js → exporter-BIdaoIgh.js} +7 -6
- package/dist/chunks/{exporter-DndFlGSa.js.map → exporter-BIdaoIgh.js.map} +1 -1
- package/dist/chunks/{exporter-CJgfhF-l.js → exporter-ChjL5fmP.js} +8 -7
- package/dist/chunks/{exporter-CJgfhF-l.js.map → exporter-ChjL5fmP.js.map} +1 -1
- package/dist/chunks/{exporter--Mk9gXCJ.js → exporter-Dcw7Ldtq.js} +6 -4
- package/dist/chunks/{exporter--Mk9gXCJ.js.map → exporter-Dcw7Ldtq.js.map} +1 -1
- package/dist/chunks/exporter-DtVU80Fa.js +1008 -0
- package/dist/chunks/exporter-DtVU80Fa.js.map +1 -0
- package/dist/chunks/{exporter-CrDWIyiq.js → exporter-bxxjOrDZ.js} +11 -9
- package/dist/chunks/{exporter-CrDWIyiq.js.map → exporter-bxxjOrDZ.js.map} +1 -1
- package/dist/chunks/format-BMS-1Nxb.js +64 -0
- package/dist/chunks/format-BMS-1Nxb.js.map +1 -0
- package/dist/chunks/{generic-Dq1ntt9q.js → generic-CP6YD34u.js} +4 -4
- package/dist/chunks/{generic-Dq1ntt9q.js.map → generic-CP6YD34u.js.map} +1 -1
- package/dist/chunks/{importer-DiZRmOQG.js → importer-B87_fmVx.js} +13 -17
- package/dist/chunks/importer-B87_fmVx.js.map +1 -0
- package/dist/chunks/{importer-BSvfrX_h.js → importer-Bji2MeWr.js} +18 -1014
- package/dist/chunks/importer-Bji2MeWr.js.map +1 -0
- package/dist/chunks/{importer-COTK9Tsl.js → importer-CB_zV5_L.js} +14 -11
- package/dist/chunks/importer-CB_zV5_L.js.map +1 -0
- package/dist/chunks/{importer-e6LGpqHB.js → importer-CVT-JyDE.js} +12 -9
- package/dist/chunks/importer-CVT-JyDE.js.map +1 -0
- package/dist/chunks/{importer-yh_aBCU6.js → importer-Cyy6UseH.js} +7 -6
- package/dist/chunks/{importer-yh_aBCU6.js.map → importer-Cyy6UseH.js.map} +1 -1
- package/dist/chunks/{importer-iFYPEKaJ.js → importer-DPZDN40-.js} +14 -10
- package/dist/chunks/{importer-iFYPEKaJ.js.map → importer-DPZDN40-.js.map} +1 -1
- package/dist/chunks/{importer-CMmeMWlC.js → importer-e3huMZbm.js} +8 -260
- package/dist/chunks/importer-e3huMZbm.js.map +1 -0
- package/dist/chunks/input-Ccg9I22A.js +1397 -0
- package/dist/chunks/input-Ccg9I22A.js.map +1 -0
- package/dist/chunks/{json-elements-DJZRZ6jd.js → json-elements-By172SVq.js} +4 -4
- package/dist/chunks/{json-elements-DJZRZ6jd.js.map → json-elements-By172SVq.js.map} +1 -1
- package/dist/chunks/{lexicon-CT69Kd87.js → lexicon-u2SI5xcx.js} +19 -5
- package/dist/chunks/lexicon-u2SI5xcx.js.map +1 -0
- package/dist/chunks/{ontology-export-G4MqRdux.js → ontology-export-BwgMyuF0.js} +4 -3
- package/dist/chunks/{ontology-export-G4MqRdux.js.map → ontology-export-BwgMyuF0.js.map} +1 -1
- package/dist/chunks/{records-CiaWZrFH.js → records-Cgvxz-Vx.js} +2 -2
- package/dist/chunks/{records-CiaWZrFH.js.map → records-Cgvxz-Vx.js.map} +1 -1
- package/dist/chunks/{format-BpQBx8MZ.js → report-CgdsL9Hb.js} +72 -129
- package/dist/chunks/report-CgdsL9Hb.js.map +1 -0
- package/dist/chunks/sigv4-LkAzsLAu.js +247 -0
- package/dist/chunks/sigv4-LkAzsLAu.js.map +1 -0
- package/dist/chunks/{styles-BQnsga7p.js → styles-CaABMoO1.js} +76 -43
- package/dist/chunks/styles-CaABMoO1.js.map +1 -0
- package/dist/chunks/{styles-D3fRphrO.js → styles-P_gmFAOi.js} +101 -21
- package/dist/chunks/styles-P_gmFAOi.js.map +1 -0
- package/dist/chunks/{styles-yed-BF5x3_Y5.js → styles-yed-Cs1nmrjn.js} +60 -20
- package/dist/chunks/styles-yed-Cs1nmrjn.js.map +1 -0
- package/dist/chunks/{text-CzJNFOS9.js → text-BuKQVMz2.js} +2 -2
- package/dist/chunks/{text-CzJNFOS9.js.map → text-BuKQVMz2.js.map} +1 -1
- package/dist/chunks/{writer-DMKvthQE.js → writer-DvHTl36J.js} +5 -4
- package/dist/chunks/writer-DvHTl36J.js.map +1 -0
- package/dist/csv.js +7 -5
- package/dist/csv.js.map +1 -1
- package/dist/cx.js +5 -4
- package/dist/cx.js.map +1 -1
- package/dist/cx2.js +2 -2
- package/dist/cys.js +1 -1
- package/dist/dot.js +2 -2
- package/dist/gexf.js +7 -5
- package/dist/gexf.js.map +1 -1
- package/dist/gml.js +16 -13
- package/dist/gml.js.map +1 -1
- package/dist/graph-io.js +1181 -224
- package/dist/graph-io.js.map +1 -1
- package/dist/graphml.js +3 -3
- package/dist/json.js +1 -1
- package/dist/neo4j.js +6 -4
- package/dist/neo4j.js.map +1 -1
- package/dist/obo.js +1 -1
- package/dist/pajek.js +1 -1
- package/dist/sources-cypher.d.ts +1 -0
- package/dist/sources-cypher.js +1236 -0
- package/dist/sources-cypher.js.map +1 -0
- package/dist/sources-ndex.d.ts +1 -0
- package/dist/sources-ndex.js +278 -0
- package/dist/sources-ndex.js.map +1 -0
- package/dist/sources-rest.d.ts +1 -0
- package/dist/sources-rest.js +1367 -0
- package/dist/sources-rest.js.map +1 -0
- package/dist/src/common/report.d.ts +6 -3
- package/dist/src/common/report.d.ts.map +1 -1
- package/dist/src/common/report.js +15 -9
- package/dist/src/common/report.js.map +1 -1
- package/dist/src/formats/cx/styles.d.ts.map +1 -1
- package/dist/src/formats/cx/styles.js +1 -0
- package/dist/src/formats/cx/styles.js.map +1 -1
- package/dist/src/formats/dot/styles.d.ts.map +1 -1
- package/dist/src/formats/dot/styles.js +3 -1
- package/dist/src/formats/dot/styles.js.map +1 -1
- package/dist/src/formats/gexf/styles.d.ts +29 -12
- package/dist/src/formats/gexf/styles.d.ts.map +1 -1
- package/dist/src/formats/gexf/styles.js +160 -31
- package/dist/src/formats/gexf/styles.js.map +1 -1
- package/dist/src/formats/gml/styles.d.ts.map +1 -1
- package/dist/src/formats/gml/styles.js +5 -4
- package/dist/src/formats/gml/styles.js.map +1 -1
- package/dist/src/formats/graphml/styles-plain.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-plain.js +3 -3
- package/dist/src/formats/graphml/styles-plain.js.map +1 -1
- package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -1
- package/dist/src/formats/graphml/styles-yed.js +89 -19
- package/dist/src/formats/graphml/styles-yed.js.map +1 -1
- package/dist/src/formats/pajek/styles.d.ts.map +1 -1
- package/dist/src/formats/pajek/styles.js +1 -0
- package/dist/src/formats/pajek/styles.js.map +1 -1
- package/dist/src/formats/xgmml/styles.d.ts.map +1 -1
- package/dist/src/formats/xgmml/styles.js +1 -0
- package/dist/src/formats/xgmml/styles.js.map +1 -1
- package/dist/src/index.d.ts +8 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/registry.d.ts +173 -1
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +196 -1
- package/dist/src/registry.js.map +1 -1
- package/dist/src/sources/builtins.d.ts +11 -0
- package/dist/src/sources/builtins.d.ts.map +1 -0
- package/dist/src/sources/builtins.js +47 -0
- package/dist/src/sources/builtins.js.map +1 -0
- package/dist/src/sources/codes.d.ts +230 -0
- package/dist/src/sources/codes.d.ts.map +1 -0
- package/dist/src/sources/codes.js +58 -0
- package/dist/src/sources/codes.js.map +1 -0
- package/dist/src/sources/context.d.ts +112 -0
- package/dist/src/sources/context.d.ts.map +1 -0
- package/dist/src/sources/context.js +739 -0
- package/dist/src/sources/context.js.map +1 -0
- package/dist/src/sources/credentials.d.ts +179 -0
- package/dist/src/sources/credentials.d.ts.map +1 -0
- package/dist/src/sources/credentials.js +301 -0
- package/dist/src/sources/credentials.js.map +1 -0
- package/dist/src/sources/cypher/descriptor.d.ts +21 -0
- package/dist/src/sources/cypher/descriptor.d.ts.map +1 -0
- package/dist/src/sources/cypher/descriptor.js +119 -0
- package/dist/src/sources/cypher/descriptor.js.map +1 -0
- package/dist/src/sources/cypher/flatten.d.ts +72 -0
- package/dist/src/sources/cypher/flatten.d.ts.map +1 -0
- package/dist/src/sources/cypher/flatten.js +279 -0
- package/dist/src/sources/cypher/flatten.js.map +1 -0
- package/dist/src/sources/cypher/index.d.ts +33 -0
- package/dist/src/sources/cypher/index.d.ts.map +1 -0
- package/dist/src/sources/cypher/index.js +405 -0
- package/dist/src/sources/cypher/index.js.map +1 -0
- package/dist/src/sources/cypher/params.d.ts +40 -0
- package/dist/src/sources/cypher/params.d.ts.map +1 -0
- package/dist/src/sources/cypher/params.js +6 -0
- package/dist/src/sources/cypher/params.js.map +1 -0
- package/dist/src/sources/cypher/profiles.d.ts +44 -0
- package/dist/src/sources/cypher/profiles.d.ts.map +1 -0
- package/dist/src/sources/cypher/profiles.js +61 -0
- package/dist/src/sources/cypher/profiles.js.map +1 -0
- package/dist/src/sources/cypher/query-builder.d.ts +106 -0
- package/dist/src/sources/cypher/query-builder.d.ts.map +1 -0
- package/dist/src/sources/cypher/query-builder.js +236 -0
- package/dist/src/sources/cypher/query-builder.js.map +1 -0
- package/dist/src/sources/cypher/transports/bolt.d.ts +21 -0
- package/dist/src/sources/cypher/transports/bolt.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/bolt.js +185 -0
- package/dist/src/sources/cypher/transports/bolt.js.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.d.ts +15 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.js +38 -0
- package/dist/src/sources/cypher/transports/neptune-analytics.js.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-https.d.ts +31 -0
- package/dist/src/sources/cypher/transports/neptune-https.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/neptune-https.js +104 -0
- package/dist/src/sources/cypher/transports/neptune-https.js.map +1 -0
- package/dist/src/sources/cypher/transports/query-api.d.ts +14 -0
- package/dist/src/sources/cypher/transports/query-api.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/query-api.js +80 -0
- package/dist/src/sources/cypher/transports/query-api.js.map +1 -0
- package/dist/src/sources/cypher/transports/transport.d.ts +78 -0
- package/dist/src/sources/cypher/transports/transport.d.ts.map +1 -0
- package/dist/src/sources/cypher/transports/transport.js +77 -0
- package/dist/src/sources/cypher/transports/transport.js.map +1 -0
- package/dist/src/sources/cypher/types-map.d.ts +91 -0
- package/dist/src/sources/cypher/types-map.d.ts.map +1 -0
- package/dist/src/sources/cypher/types-map.js +306 -0
- package/dist/src/sources/cypher/types-map.js.map +1 -0
- package/dist/src/sources/define.d.ts +47 -0
- package/dist/src/sources/define.d.ts.map +1 -0
- package/dist/src/sources/define.js +173 -0
- package/dist/src/sources/define.js.map +1 -0
- package/dist/src/sources/fail.d.ts +33 -0
- package/dist/src/sources/fail.d.ts.map +1 -0
- package/dist/src/sources/fail.js +49 -0
- package/dist/src/sources/fail.js.map +1 -0
- package/dist/src/sources/ids.d.ts +64 -0
- package/dist/src/sources/ids.d.ts.map +1 -0
- package/dist/src/sources/ids.js +64 -0
- package/dist/src/sources/ids.js.map +1 -0
- package/dist/src/sources/ndex/client.d.ts +31 -0
- package/dist/src/sources/ndex/client.d.ts.map +1 -0
- package/dist/src/sources/ndex/client.js +90 -0
- package/dist/src/sources/ndex/client.js.map +1 -0
- package/dist/src/sources/ndex/descriptor.d.ts +10 -0
- package/dist/src/sources/ndex/descriptor.d.ts.map +1 -0
- package/dist/src/sources/ndex/descriptor.js +55 -0
- package/dist/src/sources/ndex/descriptor.js.map +1 -0
- package/dist/src/sources/ndex/expand.d.ts +20 -0
- package/dist/src/sources/ndex/expand.d.ts.map +1 -0
- package/dist/src/sources/ndex/expand.js +87 -0
- package/dist/src/sources/ndex/expand.js.map +1 -0
- package/dist/src/sources/ndex/index.d.ts +25 -0
- package/dist/src/sources/ndex/index.d.ts.map +1 -0
- package/dist/src/sources/ndex/index.js +191 -0
- package/dist/src/sources/ndex/index.js.map +1 -0
- package/dist/src/sources/ndex/params.d.ts +17 -0
- package/dist/src/sources/ndex/params.d.ts.map +1 -0
- package/dist/src/sources/ndex/params.js +6 -0
- package/dist/src/sources/ndex/params.js.map +1 -0
- package/dist/src/sources/ndex/share-url.d.ts +40 -0
- package/dist/src/sources/ndex/share-url.d.ts.map +1 -0
- package/dist/src/sources/ndex/share-url.js +64 -0
- package/dist/src/sources/ndex/share-url.js.map +1 -0
- package/dist/src/sources/params.d.ts +28 -0
- package/dist/src/sources/params.d.ts.map +1 -0
- package/dist/src/sources/params.js +6 -0
- package/dist/src/sources/params.js.map +1 -0
- package/dist/src/sources/registry.d.ts +118 -0
- package/dist/src/sources/registry.d.ts.map +1 -0
- package/dist/src/sources/registry.js +193 -0
- package/dist/src/sources/registry.js.map +1 -0
- package/dist/src/sources/rest/descriptor.d.ts +16 -0
- package/dist/src/sources/rest/descriptor.d.ts.map +1 -0
- package/dist/src/sources/rest/descriptor.js +71 -0
- package/dist/src/sources/rest/descriptor.js.map +1 -0
- package/dist/src/sources/rest/index.d.ts +14 -0
- package/dist/src/sources/rest/index.d.ts.map +1 -0
- package/dist/src/sources/rest/index.js +13 -0
- package/dist/src/sources/rest/index.js.map +1 -0
- package/dist/src/sources/rest/mapping.d.ts +30 -0
- package/dist/src/sources/rest/mapping.d.ts.map +1 -0
- package/dist/src/sources/rest/mapping.js +362 -0
- package/dist/src/sources/rest/mapping.js.map +1 -0
- package/dist/src/sources/rest/openalex.d.ts +27 -0
- package/dist/src/sources/rest/openalex.d.ts.map +1 -0
- package/dist/src/sources/rest/openalex.js +269 -0
- package/dist/src/sources/rest/openalex.js.map +1 -0
- package/dist/src/sources/rest/paging.d.ts +53 -0
- package/dist/src/sources/rest/paging.d.ts.map +1 -0
- package/dist/src/sources/rest/paging.js +138 -0
- package/dist/src/sources/rest/paging.js.map +1 -0
- package/dist/src/sources/rest/params.d.ts +216 -0
- package/dist/src/sources/rest/params.d.ts.map +1 -0
- package/dist/src/sources/rest/params.js +7 -0
- package/dist/src/sources/rest/params.js.map +1 -0
- package/dist/src/sources/rest/records.d.ts +41 -0
- package/dist/src/sources/rest/records.d.ts.map +1 -0
- package/dist/src/sources/rest/records.js +240 -0
- package/dist/src/sources/rest/records.js.map +1 -0
- package/dist/src/sources/rest/samples/deps-dev.d.ts +10 -0
- package/dist/src/sources/rest/samples/deps-dev.d.ts.map +1 -0
- package/dist/src/sources/rest/samples/deps-dev.js +47 -0
- package/dist/src/sources/rest/samples/deps-dev.js.map +1 -0
- package/dist/src/sources/rest/samples/string.d.ts +9 -0
- package/dist/src/sources/rest/samples/string.d.ts.map +1 -0
- package/dist/src/sources/rest/samples/string.js +42 -0
- package/dist/src/sources/rest/samples/string.js.map +1 -0
- package/dist/src/sources/rest/selectors.d.ts +41 -0
- package/dist/src/sources/rest/selectors.d.ts.map +1 -0
- package/dist/src/sources/rest/selectors.js +81 -0
- package/dist/src/sources/rest/selectors.js.map +1 -0
- package/dist/src/sources/rest/source.d.ts +67 -0
- package/dist/src/sources/rest/source.d.ts.map +1 -0
- package/dist/src/sources/rest/source.js +635 -0
- package/dist/src/sources/rest/source.js.map +1 -0
- package/dist/src/sources/rest/templates.d.ts +38 -0
- package/dist/src/sources/rest/templates.d.ts.map +1 -0
- package/dist/src/sources/rest/templates.js +125 -0
- package/dist/src/sources/rest/templates.js.map +1 -0
- package/dist/src/sources/run.d.ts +93 -0
- package/dist/src/sources/run.d.ts.map +1 -0
- package/dist/src/sources/run.js +673 -0
- package/dist/src/sources/run.js.map +1 -0
- package/dist/src/sources/sha256.d.ts +12 -0
- package/dist/src/sources/sha256.d.ts.map +1 -0
- package/dist/src/sources/sha256.js +95 -0
- package/dist/src/sources/sha256.js.map +1 -0
- package/dist/src/sources/sigv4.d.ts +24 -0
- package/dist/src/sources/sigv4.d.ts.map +1 -0
- package/dist/src/sources/sigv4.js +182 -0
- package/dist/src/sources/sigv4.js.map +1 -0
- package/dist/src/sources/testing.d.ts +96 -0
- package/dist/src/sources/testing.d.ts.map +1 -0
- package/dist/src/sources/testing.js +138 -0
- package/dist/src/sources/testing.js.map +1 -0
- package/dist/src/sources/types.d.ts +665 -0
- package/dist/src/sources/types.d.ts.map +1 -0
- package/dist/src/sources/types.js +10 -0
- package/dist/src/sources/types.js.map +1 -0
- package/dist/src/styles/canon/enums.d.ts.map +1 -1
- package/dist/src/styles/canon/enums.js +1 -0
- package/dist/src/styles/canon/enums.js.map +1 -1
- package/dist/src/styles/cyjs/cascade.d.ts.map +1 -1
- package/dist/src/styles/cyjs/cascade.js +68 -2
- package/dist/src/styles/cyjs/cascade.js.map +1 -1
- package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -1
- package/dist/src/styles/cyjs/defaults-table.js +2 -0
- package/dist/src/styles/cyjs/defaults-table.js.map +1 -1
- package/dist/src/styles/cyjs/emit.d.ts.map +1 -1
- package/dist/src/styles/cyjs/emit.js +18 -7
- package/dist/src/styles/cyjs/emit.js.map +1 -1
- package/dist/src/styles/cyjs/mappers.d.ts +4 -1
- package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
- package/dist/src/styles/cyjs/mappers.js +2 -0
- package/dist/src/styles/cyjs/mappers.js.map +1 -1
- package/dist/src/styles/cytoscape/emit.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/emit.js +59 -7
- package/dist/src/styles/cytoscape/emit.js.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.d.ts +6 -0
- package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/lexicon.js +26 -2
- package/dist/src/styles/cytoscape/lexicon.js.map +1 -1
- package/dist/src/styles/cytoscape/resolve.d.ts +4 -1
- package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/resolve.js +10 -6
- package/dist/src/styles/cytoscape/resolve.js.map +1 -1
- package/dist/src/styles/cytoscape/translate.d.ts.map +1 -1
- package/dist/src/styles/cytoscape/translate.js +10 -10
- package/dist/src/styles/cytoscape/translate.js.map +1 -1
- package/dist/src/styles/defaults.d.ts +30 -0
- package/dist/src/styles/defaults.d.ts.map +1 -1
- package/dist/src/styles/defaults.js +45 -4
- package/dist/src/styles/defaults.js.map +1 -1
- package/dist/src/styles/io/block.d.ts.map +1 -1
- package/dist/src/styles/io/block.js +9 -0
- package/dist/src/styles/io/block.js.map +1 -1
- package/dist/src/styles/io/writer.d.ts.map +1 -1
- package/dist/src/styles/io/writer.js +7 -3
- package/dist/src/styles/io/writer.js.map +1 -1
- package/dist/src/styles/plan/resolve.d.ts +2 -1
- package/dist/src/styles/plan/resolve.d.ts.map +1 -1
- package/dist/src/styles/plan/resolve.js +13 -2
- package/dist/src/styles/plan/resolve.js.map +1 -1
- package/dist/src/styles/types.d.ts +19 -2
- package/dist/src/styles/types.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.d.ts.map +1 -1
- package/dist/src/styles/vocabulary.js +15 -1
- package/dist/src/styles/vocabulary.js.map +1 -1
- package/dist/src/types.d.ts +19 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/styles.js +11 -11
- package/dist/xgmml.js +3 -3
- package/docs/samples/people.json +6 -0
- package/package.json +29 -4
- package/src/common/report.ts +27 -7
- package/src/formats/cx/styles.ts +1 -0
- package/src/formats/dot/styles.ts +3 -1
- package/src/formats/gexf/styles.ts +185 -37
- package/src/formats/gml/styles.ts +5 -4
- package/src/formats/graphml/styles-plain.ts +3 -9
- package/src/formats/graphml/styles-yed.ts +93 -20
- package/src/formats/pajek/styles.ts +1 -0
- package/src/formats/xgmml/styles.ts +1 -0
- package/src/index.ts +90 -0
- package/src/registry.ts +326 -1
- package/src/sources/builtins.ts +56 -0
- package/src/sources/codes.ts +235 -0
- package/src/sources/context.ts +893 -0
- package/src/sources/credentials.ts +409 -0
- package/src/sources/cypher/descriptor.ts +125 -0
- package/src/sources/cypher/flatten.ts +323 -0
- package/src/sources/cypher/index.ts +498 -0
- package/src/sources/cypher/params.ts +41 -0
- package/src/sources/cypher/profiles.ts +78 -0
- package/src/sources/cypher/query-builder.ts +294 -0
- package/src/sources/cypher/transports/bolt.ts +228 -0
- package/src/sources/cypher/transports/neptune-analytics.ts +41 -0
- package/src/sources/cypher/transports/neptune-https.ts +122 -0
- package/src/sources/cypher/transports/query-api.ts +100 -0
- package/src/sources/cypher/transports/transport.ts +139 -0
- package/src/sources/cypher/types-map.ts +418 -0
- package/src/sources/define.ts +195 -0
- package/src/sources/fail.ts +70 -0
- package/src/sources/ids.ts +74 -0
- package/src/sources/ndex/client.ts +102 -0
- package/src/sources/ndex/descriptor.ts +64 -0
- package/src/sources/ndex/expand.ts +100 -0
- package/src/sources/ndex/index.ts +235 -0
- package/src/sources/ndex/params.ts +17 -0
- package/src/sources/ndex/share-url.ts +84 -0
- package/src/sources/params.ts +29 -0
- package/src/sources/registry.ts +325 -0
- package/src/sources/rest/descriptor.ts +74 -0
- package/src/sources/rest/index.ts +22 -0
- package/src/sources/rest/mapping.ts +401 -0
- package/src/sources/rest/openalex.ts +288 -0
- package/src/sources/rest/paging.ts +180 -0
- package/src/sources/rest/params.ts +243 -0
- package/src/sources/rest/records.ts +289 -0
- package/src/sources/rest/samples/deps-dev.ts +49 -0
- package/src/sources/rest/samples/string.ts +44 -0
- package/src/sources/rest/selectors.ts +91 -0
- package/src/sources/rest/source.ts +760 -0
- package/src/sources/rest/templates.ts +151 -0
- package/src/sources/run.ts +793 -0
- package/src/sources/sha256.ts +99 -0
- package/src/sources/sigv4.ts +207 -0
- package/src/sources/testing.ts +210 -0
- package/src/sources/types.ts +741 -0
- package/src/styles/canon/enums.ts +1 -0
- package/src/styles/cyjs/cascade.ts +81 -2
- package/src/styles/cyjs/defaults-table.ts +2 -0
- package/src/styles/cyjs/emit.ts +18 -7
- package/src/styles/cyjs/mappers.ts +6 -1
- package/src/styles/cytoscape/emit.ts +61 -7
- package/src/styles/cytoscape/lexicon.ts +28 -2
- package/src/styles/cytoscape/resolve.ts +22 -6
- package/src/styles/cytoscape/translate.ts +11 -11
- package/src/styles/defaults.ts +93 -4
- package/src/styles/io/block.ts +10 -0
- package/src/styles/io/writer.ts +8 -3
- package/src/styles/plan/resolve.ts +14 -2
- package/src/styles/types.ts +28 -2
- package/src/styles/vocabulary.ts +15 -1
- package/src/types.ts +19 -5
- package/dist/chunks/block-DiGq58c3.js.map +0 -1
- package/dist/chunks/emit-CwU8cUmG.js.map +0 -1
- package/dist/chunks/export-BvqAXCKh.js.map +0 -1
- package/dist/chunks/format-BpQBx8MZ.js.map +0 -1
- package/dist/chunks/importer-BSvfrX_h.js.map +0 -1
- package/dist/chunks/importer-CMmeMWlC.js.map +0 -1
- package/dist/chunks/importer-COTK9Tsl.js.map +0 -1
- package/dist/chunks/importer-DiZRmOQG.js.map +0 -1
- package/dist/chunks/importer-e6LGpqHB.js.map +0 -1
- package/dist/chunks/lexicon-CT69Kd87.js.map +0 -1
- package/dist/chunks/styles-BQnsga7p.js.map +0 -1
- package/dist/chunks/styles-D3fRphrO.js.map +0 -1
- package/dist/chunks/styles-yed-BF5x3_Y5.js.map +0 -1
- package/dist/chunks/writer-DMKvthQE.js.map +0 -1
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { GraphFormatError } from "@graphty/graph-format";
|
|
2
|
+
import { L as LOSS } from "./export-CZ7VRm4I.js";
|
|
3
|
+
import { p as plural, a as agree } from "./report-CgdsL9Hb.js";
|
|
4
|
+
const RAW = `${String.fromCodePoint(0)}cx:`;
|
|
5
|
+
const RAW_JSON = /"\\u0000cx:(-?\d+)"/g;
|
|
6
|
+
const BIG_INTEGER_TEXT = /^-?[1-9]\d{15,}$/;
|
|
7
|
+
function writableId(id) {
|
|
8
|
+
return typeof id === "number" ? Number.isSafeInteger(id) : BIG_INTEGER_TEXT.test(id) && !Number.isSafeInteger(Number(id));
|
|
9
|
+
}
|
|
10
|
+
function writtenIds(snapshot, mode, format) {
|
|
11
|
+
const { ids } = snapshot;
|
|
12
|
+
const bad = [];
|
|
13
|
+
const used = /* @__PURE__ */ new Set();
|
|
14
|
+
for (let i = 0; i < ids.size; i++) {
|
|
15
|
+
const id = ids.idOf(i);
|
|
16
|
+
if (!writableId(id)) {
|
|
17
|
+
bad.push(i);
|
|
18
|
+
} else if (typeof id === "number") {
|
|
19
|
+
used.add(id);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (bad.length > 0 && mode === "error") {
|
|
23
|
+
const first = ids.idOf(bad[0]);
|
|
24
|
+
throw new GraphFormatError(
|
|
25
|
+
"E_INVALID_ID",
|
|
26
|
+
`${bad.length} node id${plural(bad.length)} cannot be written as ${format} integers (first: ${JSON.stringify(first)} at index ${bad[0]}); pass sanitizeIds: "mangle" to rewrite them`,
|
|
27
|
+
{ reason: "charset", charset: "integer", count: bad.length, index: bad[0] }
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
const renumbered = /* @__PURE__ */ new Map();
|
|
31
|
+
let next = 0;
|
|
32
|
+
for (const i of bad) {
|
|
33
|
+
while (used.has(next)) {
|
|
34
|
+
next++;
|
|
35
|
+
}
|
|
36
|
+
used.add(next);
|
|
37
|
+
renumbered.set(i, next);
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
changed: bad.length,
|
|
41
|
+
idAt: (i) => {
|
|
42
|
+
const id = renumbered.get(i) ?? ids.idOf(i);
|
|
43
|
+
return typeof id === "string" ? `${RAW}${id}` : id;
|
|
44
|
+
},
|
|
45
|
+
isChanged: (i) => renumbered.has(i),
|
|
46
|
+
originalAt: (i) => ids.idOf(i)
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function nextNodeId(ids, count) {
|
|
50
|
+
let max = -1n;
|
|
51
|
+
for (let i = 0; i < count; i++) {
|
|
52
|
+
const id = ids.idAt(i);
|
|
53
|
+
const value = typeof id === "number" ? BigInt(id) : BigInt(id.slice(RAW.length));
|
|
54
|
+
if (value > max) {
|
|
55
|
+
max = value;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const next = max + 1n;
|
|
59
|
+
return next <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(next) : `${RAW}${next.toString()}`;
|
|
60
|
+
}
|
|
61
|
+
function unwritableIds(snapshot) {
|
|
62
|
+
let count = 0;
|
|
63
|
+
for (let i = 0; i < snapshot.ids.size; i++) {
|
|
64
|
+
if (!writableId(snapshot.ids.idOf(i))) {
|
|
65
|
+
count++;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return count;
|
|
69
|
+
}
|
|
70
|
+
function planNodeIds(snapshot, common, format, attribute, note) {
|
|
71
|
+
const unwritable = unwritableIds(snapshot);
|
|
72
|
+
if (unwritable > 0) {
|
|
73
|
+
note(
|
|
74
|
+
common.sanitizeIds === "mangle" ? LOSS.ID_MANGLED : LOSS.ID_CHARSET,
|
|
75
|
+
common.sanitizeIds === "mangle" ? `${unwritable} node id${plural(unwritable)} ${agree(unwritable, "is", "are")} not integers, so they are renumbered; the original ids are written to the ${attribute} attribute, and an import with restoreMangledIds: true reads them back` : `${unwritable} node id${plural(unwritable)} ${agree(unwritable, "is", "are")} not integers, so the save fails unless sanitizeIds is "mangle"`,
|
|
76
|
+
null,
|
|
77
|
+
unwritable
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
return writtenIds(snapshot, common.sanitizeIds, format);
|
|
82
|
+
} catch (err) {
|
|
83
|
+
if (err instanceof GraphFormatError) {
|
|
84
|
+
return err;
|
|
85
|
+
}
|
|
86
|
+
throw err;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function scalarType(dtype, longOrigin) {
|
|
90
|
+
switch (dtype) {
|
|
91
|
+
case "f64":
|
|
92
|
+
return longOrigin ? "long" : "double";
|
|
93
|
+
case "f32":
|
|
94
|
+
return "double";
|
|
95
|
+
case "i32":
|
|
96
|
+
case "u8":
|
|
97
|
+
return "integer";
|
|
98
|
+
case "u32":
|
|
99
|
+
return "long";
|
|
100
|
+
case "bool":
|
|
101
|
+
return "boolean";
|
|
102
|
+
default:
|
|
103
|
+
return "string";
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function allIntegral(column) {
|
|
107
|
+
for (let i = 0; i < column.length; i++) {
|
|
108
|
+
if (column.isSet(i) && !Number.isSafeInteger(column.value(i))) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
function declaredType(column) {
|
|
115
|
+
const { meta } = column;
|
|
116
|
+
const origin = meta.origin?.type ?? null;
|
|
117
|
+
const longOrigin = origin !== null && origin.endsWith("long") && (meta.dtype !== "f64" || allIntegral(column));
|
|
118
|
+
if (meta.dtype === "list") {
|
|
119
|
+
return meta.itemDtype === null || meta.itemDtype === "json" ? "string" : `list_of_${scalarType(meta.itemDtype, longOrigin)}`;
|
|
120
|
+
}
|
|
121
|
+
return meta.components > 1 ? `list_of_${scalarType(meta.dtype, false)}` : scalarType(meta.dtype, longOrigin);
|
|
122
|
+
}
|
|
123
|
+
function nonFinitePositions(position) {
|
|
124
|
+
let count = 0;
|
|
125
|
+
for (let i = 0; i < position.length; i++) {
|
|
126
|
+
if (position.isSet(i)) {
|
|
127
|
+
const p = position.value(i);
|
|
128
|
+
if (!Number.isFinite(p[0]) || !Number.isFinite(p[1])) {
|
|
129
|
+
count++;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return count;
|
|
134
|
+
}
|
|
135
|
+
function planEdgeIds(snapshot, note, nodeIds = null) {
|
|
136
|
+
const column = snapshot.edges.byRole("id");
|
|
137
|
+
const used = /* @__PURE__ */ new Set();
|
|
138
|
+
let generated = 0;
|
|
139
|
+
const ids = keptEdgeIds(column, snapshot.edgeCount, used);
|
|
140
|
+
for (let i = 0; nodeIds !== null && i < snapshot.nodeCount; i++) {
|
|
141
|
+
const id = nodeIds.idAt(i);
|
|
142
|
+
if (typeof id === "number") {
|
|
143
|
+
used.add(id);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
let next = 0;
|
|
147
|
+
const out = [];
|
|
148
|
+
for (let e = 0; e < snapshot.edgeCount; e++) {
|
|
149
|
+
let id = ids[e];
|
|
150
|
+
if (id === null) {
|
|
151
|
+
while (used.has(next)) {
|
|
152
|
+
next++;
|
|
153
|
+
}
|
|
154
|
+
id = next;
|
|
155
|
+
used.add(next);
|
|
156
|
+
generated++;
|
|
157
|
+
}
|
|
158
|
+
out.push(id);
|
|
159
|
+
}
|
|
160
|
+
if (column !== null && generated > 0) {
|
|
161
|
+
note(
|
|
162
|
+
LOSS.EDGE_IDS_GENERATED,
|
|
163
|
+
`${generated} edge${plural(generated)} ${agree(generated, "has", "have")} no distinct integer id in "${column.meta.name}"; they are written with generated ids`,
|
|
164
|
+
column.meta.name,
|
|
165
|
+
generated
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
if (column !== null && column.dtype !== "f64") {
|
|
169
|
+
note(
|
|
170
|
+
LOSS.DTYPE,
|
|
171
|
+
`edge id column "${column.meta.name}" is ${column.dtype}; CX edge ids are integers and read back as f64`,
|
|
172
|
+
column.meta.name,
|
|
173
|
+
snapshot.edgeCount - column.nullCount
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
return out;
|
|
177
|
+
}
|
|
178
|
+
function keptEdgeIds(column, edgeCount, used) {
|
|
179
|
+
const ids = new Array(edgeCount).fill(null);
|
|
180
|
+
if (column === null) {
|
|
181
|
+
return ids;
|
|
182
|
+
}
|
|
183
|
+
for (let e = 0; e < edgeCount; e++) {
|
|
184
|
+
const value = column.isSet(e) ? column.value(e) : void 0;
|
|
185
|
+
const n = typeof value === "number" || typeof value === "string" ? Number(value) : Number.NaN;
|
|
186
|
+
if (Number.isSafeInteger(n) && !used.has(n)) {
|
|
187
|
+
ids[e] = n === 0 ? 0 : n;
|
|
188
|
+
used.add(n);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return ids;
|
|
192
|
+
}
|
|
193
|
+
function directionNotes(snapshot, folding, common, undirectedCode, note) {
|
|
194
|
+
if (!snapshot.directed) {
|
|
195
|
+
note(
|
|
196
|
+
undirectedCode,
|
|
197
|
+
`the snapshot is undirected; every edge is written as a directed edge (${snapshot.edgeCount} edge${plural(snapshot.edgeCount)})`,
|
|
198
|
+
null,
|
|
199
|
+
snapshot.edgeCount
|
|
200
|
+
);
|
|
201
|
+
} else if (common.onMixedDirection !== "error") {
|
|
202
|
+
let undirected = 0;
|
|
203
|
+
for (let e = 0; e < snapshot.edgeCount; e++) {
|
|
204
|
+
if (!folding.folded(e) && !folding.sourceDirected(e)) {
|
|
205
|
+
undirected++;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
if (undirected > 0) {
|
|
209
|
+
note(
|
|
210
|
+
undirectedCode,
|
|
211
|
+
`${undirected} undirected edge${plural(undirected)} ${agree(undirected, "is", "are")} written as one directed edge each (a pair folded to its primary); CX has no undirected edge`,
|
|
212
|
+
null,
|
|
213
|
+
undirected
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (folding.mutualCount > 0) {
|
|
218
|
+
note(
|
|
219
|
+
LOSS.MUTUAL_EXPANDED,
|
|
220
|
+
`${folding.mutualCount} mutual pair${plural(folding.mutualCount)} ${agree(folding.mutualCount, "is", "are")} written as two directed edges; the mutual mark is lost`,
|
|
221
|
+
null,
|
|
222
|
+
folding.mutualCount
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
function noteList() {
|
|
227
|
+
const notes = [];
|
|
228
|
+
const note = (code, message, column = null, count = null) => {
|
|
229
|
+
notes.push(Object.freeze({ code, message, column, count }));
|
|
230
|
+
};
|
|
231
|
+
return { notes, note };
|
|
232
|
+
}
|
|
233
|
+
function stringify(value) {
|
|
234
|
+
const text = JSON.stringify(value, (_key, v) => Object.is(v, -0) ? `${RAW}-0` : v);
|
|
235
|
+
return text.includes(String.raw`\u0000cx:`) ? text.replaceAll(RAW_JSON, "$1") : text;
|
|
236
|
+
}
|
|
237
|
+
function* aspectBlock(aspect, elements) {
|
|
238
|
+
yield `{${JSON.stringify(aspect)}:[`;
|
|
239
|
+
let first = true;
|
|
240
|
+
for (const element of elements) {
|
|
241
|
+
yield first ? `
|
|
242
|
+
${element}` : `,
|
|
243
|
+
${element}`;
|
|
244
|
+
first = false;
|
|
245
|
+
}
|
|
246
|
+
yield "]},\n";
|
|
247
|
+
}
|
|
248
|
+
export {
|
|
249
|
+
planEdgeIds as a,
|
|
250
|
+
aspectBlock as b,
|
|
251
|
+
declaredType as c,
|
|
252
|
+
directionNotes as d,
|
|
253
|
+
nextNodeId as e,
|
|
254
|
+
nonFinitePositions as f,
|
|
255
|
+
noteList as n,
|
|
256
|
+
planNodeIds as p,
|
|
257
|
+
stringify as s
|
|
258
|
+
};
|
|
259
|
+
//# sourceMappingURL=cx-export-BEeF6ymo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cx-export-BEeF6ymo.js","sources":["../../src/common/cx-export.ts"],"sourcesContent":["/**\n * The exporter machinery CX version 1 and CX2 share (design/graph-io/cytoscape-and-obo/design.md\n * sections 1.2 and 1.3): integer node ids (safe integers, or the digits of an integer beyond 2^53\n * written raw), sanitizeIds \"mangle\" renumbering, edge ids from the id role column, the declared\n * type of a column, the direction notes (every CX edge is directed) and the JSON writer that keeps\n * -0 and raw big integers.\n */\n\nimport { type Column, GraphFormatError, type GraphSnapshot, type NodeId } from \"@graphty/graph-format\";\n\nimport { type LossNote } from \"../types.js\";\nimport { type PairFolding } from \"./direction.js\";\nimport { LOSS } from \"./export.js\";\nimport { type ResolvedExportOptions } from \"./options.js\";\nimport { agree, plural } from \"./plural.js\";\n\n/**\n * Records a loss note.\n * @category Plugin helpers\n */\nexport type CxNoteFn = (code: string, message: string, column?: string | null, count?: number | null) => void;\n\n/**\n * The prefix of a string that stands for a raw number literal in the output: -0 (which\n * JSON.stringify writes as 0) and an integer id beyond 2^53 (kept as its digits).\n */\nconst RAW = `${String.fromCodePoint(0)}cx:`;\n\n/** A raw literal as JSON.stringify writes it, to be unquoted. */\nconst RAW_JSON = /\"\\\\u0000cx:(-?\\d+)\"/g;\n\n/** An integer literal beyond 2^53 as text: a CX id graph-io keeps as its digits. */\nconst BIG_INTEGER_TEXT = /^-?[1-9]\\d{15,}$/;\n\n/**\n * The node ids as written: the original, a renumbered one, or a raw big integer.\n * @category Plugin helpers\n */\nexport interface WrittenIds {\n /** How many ids were renumbered (sanitizeIds \"mangle\"). */\n readonly changed: number;\n /**\n * The written id of a node.\n * @param i - the node index\n * @returns a number, or a raw string for a big integer\n */\n idAt(i: number): NodeId;\n /**\n * Whether a node was renumbered.\n * @param i - the node index\n * @returns true when its original goes into graphty:originalId\n */\n isChanged(i: number): boolean;\n /**\n * The original id of a node.\n * @param i - the node index\n * @returns the snapshot's id\n */\n originalAt(i: number): NodeId;\n}\n\n/**\n * Whether an id can be written as a CX id unchanged: a safe integer, or the digits of an integer\n * beyond 2^53 (the CX importers read those back as the same digits).\n * @param id - the id\n * @returns true when writable\n */\nfunction writableId(id: NodeId): boolean {\n return typeof id === \"number\"\n ? Number.isSafeInteger(id)\n : BIG_INTEGER_TEXT.test(id) && !Number.isSafeInteger(Number(id));\n}\n\n/**\n * The written node ids; under \"error\" an id that is not writable throws E_INVALID_ID, under\n * \"mangle\" it gets the next unused integer.\n * @param snapshot - the snapshot\n * @param mode - the sanitizeIds option\n * @param format - the format's display name, for the message\n * @returns the ids\n */\nfunction writtenIds(snapshot: GraphSnapshot, mode: \"error\" | \"mangle\", format: string): WrittenIds {\n const { ids } = snapshot;\n const bad: number[] = [];\n const used = new Set<number>();\n for (let i = 0; i < ids.size; i++) {\n const id = ids.idOf(i);\n if (!writableId(id)) {\n bad.push(i);\n } else if (typeof id === \"number\") {\n used.add(id);\n }\n }\n if (bad.length > 0 && mode === \"error\") {\n const first = ids.idOf(bad[0]);\n throw new GraphFormatError(\n \"E_INVALID_ID\",\n `${bad.length} node id${plural(bad.length)} cannot be written as ${format} integers (first: ${JSON.stringify(first)} at index ${bad[0]}); pass sanitizeIds: \"mangle\" to rewrite them`,\n { reason: \"charset\", charset: \"integer\", count: bad.length, index: bad[0] },\n );\n }\n const renumbered = new Map<number, number>();\n let next = 0;\n for (const i of bad) {\n while (used.has(next)) {\n next++;\n }\n used.add(next);\n renumbered.set(i, next);\n }\n return {\n changed: bad.length,\n idAt: (i: number): NodeId => {\n const id = renumbered.get(i) ?? ids.idOf(i);\n return typeof id === \"string\" ? `${RAW}${id}` : id;\n },\n isChanged: (i: number): boolean => renumbered.has(i),\n originalAt: (i: number): NodeId => ids.idOf(i),\n };\n}\n\n/**\n * The `idCounter` of the node ids as written (the largest id plus one, NDEx's next free id).\n * @param ids - the written ids\n * @param count - the node count\n * @returns the counter: a number, or a raw big integer for stringify()\n * @category Plugin helpers\n */\nexport function nextNodeId(ids: WrittenIds, count: number): NodeId {\n let max = -1n;\n for (let i = 0; i < count; i++) {\n const id = ids.idAt(i);\n const value = typeof id === \"number\" ? BigInt(id) : BigInt(id.slice(RAW.length));\n if (value > max) {\n max = value;\n }\n }\n const next = max + 1n;\n return next <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(next) : `${RAW}${next.toString()}`;\n}\n\n/**\n * How many node ids are not writable unchanged.\n * @param snapshot - the snapshot\n * @returns the count\n */\nfunction unwritableIds(snapshot: GraphSnapshot): number {\n let count = 0;\n for (let i = 0; i < snapshot.ids.size; i++) {\n if (!writableId(snapshot.ids.idOf(i))) {\n count++;\n }\n }\n return count;\n}\n\n/**\n * The id notes and the written ids of a CX export: E_ID_CHARSET (export() throws) or\n * W_ID_MANGLED for the ids that are not integers.\n * @param snapshot - the snapshot\n * @param common - the resolved common options\n * @param format - the format's display name\n * @param attribute - the attribute the originals are kept in\n * @param note - records a note\n * @returns the ids, or the error export() throws\n * @category Plugin helpers\n */\nexport function planNodeIds(\n snapshot: GraphSnapshot,\n common: ResolvedExportOptions,\n format: string,\n attribute: string,\n note: CxNoteFn,\n): WrittenIds | GraphFormatError {\n const unwritable = unwritableIds(snapshot);\n if (unwritable > 0) {\n note(\n common.sanitizeIds === \"mangle\" ? LOSS.ID_MANGLED : LOSS.ID_CHARSET,\n common.sanitizeIds === \"mangle\"\n ? `${unwritable} node id${plural(unwritable)} ${agree(unwritable, \"is\", \"are\")} not integers, so they are renumbered; the original ids are written to the ${attribute} attribute, and an import with restoreMangledIds: true reads them back`\n : `${unwritable} node id${plural(unwritable)} ${agree(unwritable, \"is\", \"are\")} not integers, so the save fails unless sanitizeIds is \"mangle\"`,\n null,\n unwritable,\n );\n }\n try {\n return writtenIds(snapshot, common.sanitizeIds, format);\n } catch (err) {\n if (err instanceof GraphFormatError) {\n return err;\n }\n throw err;\n }\n}\n\n/**\n * The CX type of a scalar dtype.\n * @param dtype - the dtype\n * @param longOrigin - whether the source declared the column long\n * @returns the type text\n */\nfunction scalarType(dtype: string, longOrigin: boolean): string {\n switch (dtype) {\n case \"f64\":\n return longOrigin ? \"long\" : \"double\";\n case \"f32\":\n return \"double\";\n case \"i32\":\n case \"u8\":\n return \"integer\";\n case \"u32\":\n return \"long\";\n case \"bool\":\n return \"boolean\";\n default:\n return \"string\";\n }\n}\n\n/**\n * Whether every set value of an f64 column is integral (so a declared long stays long).\n * @param column - the column\n * @returns true when every set value is a safe integer\n */\nfunction allIntegral(column: Column): boolean {\n for (let i = 0; i < column.length; i++) {\n if (column.isSet(i) && !Number.isSafeInteger(column.value(i))) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * The declared CX type of a column: string / double / long / integer / boolean or a list of one;\n * a json column (and a list of json items) is a string holding JSON text.\n * @param column - the column\n * @returns the type text\n * @category Plugin helpers\n */\nexport function declaredType(column: Column): string {\n const { meta } = column;\n const origin = meta.origin?.type ?? null;\n const longOrigin = origin !== null && origin.endsWith(\"long\") && (meta.dtype !== \"f64\" || allIntegral(column));\n if (meta.dtype === \"list\") {\n return meta.itemDtype === null || meta.itemDtype === \"json\"\n ? \"string\"\n : `list_of_${scalarType(meta.itemDtype, longOrigin)}`;\n }\n // a multi-component column (a color, a 3D vector) is written as a list of its components\n return meta.components > 1 ? `list_of_${scalarType(meta.dtype, false)}` : scalarType(meta.dtype, longOrigin);\n}\n\n/**\n * Count the positions with a non-finite x or y.\n * @param position - the position column\n * @returns the count\n * @category Plugin helpers\n */\nexport function nonFinitePositions(position: Column): number {\n let count = 0;\n for (let i = 0; i < position.length; i++) {\n if (position.isSet(i)) {\n const p = position.value(i) as ArrayLike<number>;\n if (!Number.isFinite(p[0]) || !Number.isFinite(p[1])) {\n count++;\n }\n }\n }\n return count;\n}\n\n/**\n * The edge ids to write: the id role column's values when they are distinct safe integers, next\n * unused integers for edges without one (W_EDGE_IDS_GENERATED). A generated id is never a\n * written node id either: CX keeps node and edge ids apart, but Cytoscape desktop numbers both\n * from one counter, and a reader with one id space (Cytoscape.js) would have to drop the edge's.\n * @param snapshot - the snapshot\n * @param note - records a note\n * @param nodeIds - the written node ids, which generated edge ids avoid\n * @returns one id per edge\n * @category Plugin helpers\n */\nexport function planEdgeIds(snapshot: GraphSnapshot, note: CxNoteFn, nodeIds: WrittenIds | null = null): number[] {\n const column = snapshot.edges.byRole(\"id\");\n const used = new Set<number>();\n let generated = 0;\n const ids: (number | null)[] = keptEdgeIds(column, snapshot.edgeCount, used);\n for (let i = 0; nodeIds !== null && i < snapshot.nodeCount; i++) {\n const id = nodeIds.idAt(i);\n if (typeof id === \"number\") {\n used.add(id);\n }\n }\n let next = 0;\n const out: number[] = [];\n for (let e = 0; e < snapshot.edgeCount; e++) {\n let id = ids[e];\n if (id === null) {\n while (used.has(next)) {\n next++;\n }\n id = next;\n used.add(next);\n generated++;\n }\n out.push(id);\n }\n if (column !== null && generated > 0) {\n note(\n LOSS.EDGE_IDS_GENERATED,\n `${generated} edge${plural(generated)} ${agree(generated, \"has\", \"have\")} no distinct integer id in \"${column.meta.name}\"; they are written with generated ids`,\n column.meta.name,\n generated,\n );\n }\n if (column !== null && column.dtype !== \"f64\") {\n note(\n LOSS.DTYPE,\n `edge id column \"${column.meta.name}\" is ${column.dtype}; CX edge ids are integers and read back as f64`,\n column.meta.name,\n snapshot.edgeCount - column.nullCount,\n );\n }\n return out;\n}\n\n/**\n * The edge ids an id column can keep: its distinct safe integers (numbers, or text that reads as one).\n * @param column - the edge id column, or null\n * @param edgeCount - the number of edges\n * @param used - receives the kept ids\n * @returns the kept id per edge, null where it cannot be kept\n */\nfunction keptEdgeIds(column: Column | null, edgeCount: number, used: Set<number>): (number | null)[] {\n const ids: (number | null)[] = new Array<number | null>(edgeCount).fill(null);\n if (column === null) {\n return ids;\n }\n for (let e = 0; e < edgeCount; e++) {\n const value = column.isSet(e) ? column.value(e) : undefined;\n const n = typeof value === \"number\" || typeof value === \"string\" ? Number(value) : Number.NaN;\n if (Number.isSafeInteger(n) && !used.has(n)) {\n ids[e] = n === 0 ? 0 : n;\n used.add(n);\n }\n }\n return ids;\n}\n\n/**\n * The direction notes: every CX edge is directed, so an undirected snapshot (or the undirected\n * pairs of a mixed one, folded under onMixedDirection) is written directed, and a mutual pair as\n * two edges without its mark.\n * @param snapshot - the snapshot\n * @param folding - the pair folding\n * @param common - the resolved common options\n * @param undirectedCode - the format's \"undirected written as directed\" code\n * @param note - records a note\n * @category Plugin helpers\n */\nexport function directionNotes(\n snapshot: GraphSnapshot,\n folding: PairFolding,\n common: ResolvedExportOptions,\n undirectedCode: string,\n note: CxNoteFn,\n): void {\n if (!snapshot.directed) {\n note(\n undirectedCode,\n `the snapshot is undirected; every edge is written as a directed edge (${snapshot.edgeCount} edge${plural(snapshot.edgeCount)})`,\n null,\n snapshot.edgeCount,\n );\n } else if (common.onMixedDirection !== \"error\") {\n let undirected = 0;\n for (let e = 0; e < snapshot.edgeCount; e++) {\n if (!folding.folded(e) && !folding.sourceDirected(e)) {\n undirected++;\n }\n }\n if (undirected > 0) {\n note(\n undirectedCode,\n `${undirected} undirected edge${plural(undirected)} ${agree(undirected, \"is\", \"are\")} written as one directed edge each (a pair folded to its primary); CX has no undirected edge`,\n null,\n undirected,\n );\n }\n }\n if (folding.mutualCount > 0) {\n note(\n LOSS.MUTUAL_EXPANDED,\n `${folding.mutualCount} mutual pair${plural(folding.mutualCount)} ${agree(folding.mutualCount, \"is\", \"are\")} written as two directed edges; the mutual mark is lost`,\n null,\n folding.mutualCount,\n );\n }\n}\n\n/**\n * The note recorder of a plan and its notes.\n * @returns the notes and the recorder\n * @category Plugin helpers\n */\nexport function noteList(): { notes: LossNote[]; note: CxNoteFn } {\n const notes: LossNote[] = [];\n const note: CxNoteFn = (code, message, column = null, count = null) => {\n notes.push(Object.freeze({ code, message, column, count }));\n };\n return { notes, note };\n}\n\n/**\n * The JSON text of a value, keeping -0 and writing the raw big-integer ids of idAt() as numbers.\n * @param value - the value\n * @returns the text\n * @category Plugin helpers\n */\nexport function stringify(value: unknown): string {\n const text = JSON.stringify(value, (_key, v: unknown) => (Object.is(v, -0) ? `${RAW}-0` : v));\n return text.includes(String.raw`\\u0000cx:`) ? text.replaceAll(RAW_JSON, \"$1\") : text;\n}\n\n/**\n * The text of one aspect block, element by element.\n * @param aspect - the aspect name\n * @param elements - the JSON texts of its elements\n * @yields the block's text\n * @returns nothing\n */\nexport function* aspectBlock(aspect: string, elements: Iterable<string>): Generator<string, void, undefined> {\n yield `{${JSON.stringify(aspect)}:[`;\n let first = true;\n for (const element of elements) {\n yield first ? `\\n${element}` : `,\\n${element}`;\n first = false;\n }\n yield \"]},\\n\";\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
const DEPS_DEV_MAPPING = Object.freeze({
|
|
2
|
+
version: 1,
|
|
3
|
+
endpoint: "https://api.deps.dev",
|
|
4
|
+
load: "dependencies",
|
|
5
|
+
directed: true,
|
|
6
|
+
requests: {
|
|
7
|
+
dependencies: {
|
|
8
|
+
path: "/v3/systems/{system}/packages/{package}/versions/{version}:dependencies",
|
|
9
|
+
records: ".",
|
|
10
|
+
entity: "graph"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
entities: {
|
|
14
|
+
graph: {
|
|
15
|
+
id: "nodes",
|
|
16
|
+
node: false,
|
|
17
|
+
edges: [
|
|
18
|
+
{
|
|
19
|
+
each: "edges[]",
|
|
20
|
+
from: "fromNode",
|
|
21
|
+
to: "toNode",
|
|
22
|
+
type: "depends_on",
|
|
23
|
+
entity: "package",
|
|
24
|
+
fields: { requirement: "requirement" }
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
embedded: [{ at: "nodes[]", entity: "package" }]
|
|
28
|
+
},
|
|
29
|
+
package: {
|
|
30
|
+
id: "#",
|
|
31
|
+
fields: {
|
|
32
|
+
name: "versionKey.name",
|
|
33
|
+
version: "versionKey.version",
|
|
34
|
+
system: "versionKey.system",
|
|
35
|
+
relation: "relation"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
const STRING_MAPPING = Object.freeze({
|
|
41
|
+
version: 1,
|
|
42
|
+
endpoint: "https://string-db.org",
|
|
43
|
+
load: "network",
|
|
44
|
+
directed: false,
|
|
45
|
+
requests: {
|
|
46
|
+
network: {
|
|
47
|
+
path: "/api/json/network",
|
|
48
|
+
query: { identifiers: "{identifiers}", species: "{species}", add_nodes: "{add_nodes}" },
|
|
49
|
+
records: ".",
|
|
50
|
+
entity: "interaction"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
entities: {
|
|
54
|
+
interaction: {
|
|
55
|
+
id: "stringId_A",
|
|
56
|
+
node: false,
|
|
57
|
+
edges: [
|
|
58
|
+
{
|
|
59
|
+
from: "stringId_A",
|
|
60
|
+
to: "stringId_B",
|
|
61
|
+
type: "interacts_with",
|
|
62
|
+
entity: "protein-b",
|
|
63
|
+
fields: { score: "score" }
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
embedded: [
|
|
67
|
+
{ at: ".", entity: "protein-a" },
|
|
68
|
+
{ at: ".", entity: "protein-b" }
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"protein-a": { id: "stringId_A", label: "protein", fields: { name: "preferredName_A" } },
|
|
72
|
+
"protein-b": { id: "stringId_B", label: "protein", fields: { name: "preferredName_B" } }
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
const REST_DESCRIPTOR = Object.freeze({
|
|
76
|
+
plainName: "REST API",
|
|
77
|
+
kind: "rest",
|
|
78
|
+
version: 1,
|
|
79
|
+
auth: ["bearer", "api-key"],
|
|
80
|
+
authRequired: "optional",
|
|
81
|
+
params: [{ name: "mapping", plainName: "Mapping", type: "text", required: true }],
|
|
82
|
+
samples: [
|
|
83
|
+
{
|
|
84
|
+
id: "string-tp53",
|
|
85
|
+
plainName: "STRING: TP53's functional partners",
|
|
86
|
+
params: { mapping: STRING_MAPPING, identifiers: "TP53", species: "9606", add_nodes: "20" },
|
|
87
|
+
endpoint: STRING_MAPPING.endpoint,
|
|
88
|
+
counts: { nodes: 21, edges: 113 }
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "deps-dev-webpack",
|
|
92
|
+
plainName: "deps.dev: webpack 5.90.0",
|
|
93
|
+
params: { mapping: DEPS_DEV_MAPPING, system: "npm", package: "webpack", version: "5.90.0" },
|
|
94
|
+
endpoint: DEPS_DEV_MAPPING.endpoint,
|
|
95
|
+
counts: { nodes: 84, edges: 121 }
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
});
|
|
99
|
+
const OPENALEX_DESCRIPTOR = Object.freeze({
|
|
100
|
+
plainName: "OpenAlex",
|
|
101
|
+
kind: "rest",
|
|
102
|
+
version: 1,
|
|
103
|
+
defaultEndpoint: "https://api.openalex.org",
|
|
104
|
+
auth: ["api-key"],
|
|
105
|
+
authRequired: "optional",
|
|
106
|
+
rateLimit: { requests: 10, perMs: 1e3 },
|
|
107
|
+
params: [
|
|
108
|
+
{ name: "work", plainName: "Work", type: "string" },
|
|
109
|
+
{ name: "author", plainName: "Author", type: "string" },
|
|
110
|
+
{
|
|
111
|
+
name: "graph",
|
|
112
|
+
plainName: "Graph",
|
|
113
|
+
type: "enum",
|
|
114
|
+
default: "citation",
|
|
115
|
+
values: [
|
|
116
|
+
{ value: "citation", label: "Citations" },
|
|
117
|
+
{ value: "coauthorship", label: "Co-authors" }
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
{ name: "include", plainName: "Include", type: "string", advanced: true }
|
|
121
|
+
],
|
|
122
|
+
samples: [
|
|
123
|
+
{
|
|
124
|
+
id: "openalex-watts-strogatz",
|
|
125
|
+
plainName: "Watts-Strogatz paper's citations",
|
|
126
|
+
params: { work: "W2112090702" },
|
|
127
|
+
whole: false
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
});
|
|
131
|
+
export {
|
|
132
|
+
DEPS_DEV_MAPPING as D,
|
|
133
|
+
OPENALEX_DESCRIPTOR as O,
|
|
134
|
+
REST_DESCRIPTOR as R,
|
|
135
|
+
STRING_MAPPING as S
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=descriptor-BJ-W0Jd-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor-BJ-W0Jd-.js","sources":["../../src/sources/rest/samples/deps-dev.ts","../../src/sources/rest/samples/string.ts","../../src/sources/rest/descriptor.ts"],"sourcesContent":["/**\n * A sample mapping: the resolved dependency graph of one package version from deps.dev\n * (https://deps.dev). The body already holds a node array and an edge array whose ends are node\n * positions, so the body is a container and `#` gives each package its position as its id.\n * Catalog data for the `rest` source's samples.\n */\n\nimport { type RestMapping } from \"../params.js\";\n\n/** The deps.dev dependencies mapping: `system` (npm, pypi, ...), `package` and `version`. */\nexport const DEPS_DEV_MAPPING: RestMapping = Object.freeze<RestMapping>({\n version: 1,\n endpoint: \"https://api.deps.dev\",\n load: \"dependencies\",\n directed: true,\n requests: {\n dependencies: {\n path: \"/v3/systems/{system}/packages/{package}/versions/{version}:dependencies\",\n records: \".\",\n entity: \"graph\",\n },\n },\n entities: {\n graph: {\n id: \"nodes\",\n node: false,\n edges: [\n {\n each: \"edges[]\",\n from: \"fromNode\",\n to: \"toNode\",\n type: \"depends_on\",\n entity: \"package\",\n fields: { requirement: \"requirement\" },\n },\n ],\n embedded: [{ at: \"nodes[]\", entity: \"package\" }],\n },\n package: {\n id: \"#\",\n fields: {\n name: \"versionKey.name\",\n version: \"versionKey.version\",\n system: \"versionKey.system\",\n relation: \"relation\",\n },\n },\n },\n});\n","/**\n * A sample mapping: STRING's functional partners of a protein (https://string-db.org). Each\n * interaction record names both proteins, so both are embedded nodes and the record itself is only\n * the edge. Catalog data for the `rest` source's samples.\n */\n\nimport { type RestMapping } from \"../params.js\";\n\n/** The STRING network mapping: `identifiers`, `species` (NCBI taxon) and `add_nodes`. */\nexport const STRING_MAPPING: RestMapping = Object.freeze<RestMapping>({\n version: 1,\n endpoint: \"https://string-db.org\",\n load: \"network\",\n directed: false,\n requests: {\n network: {\n path: \"/api/json/network\",\n query: { identifiers: \"{identifiers}\", species: \"{species}\", add_nodes: \"{add_nodes}\" },\n records: \".\",\n entity: \"interaction\",\n },\n },\n entities: {\n interaction: {\n id: \"stringId_A\",\n node: false,\n edges: [\n {\n from: \"stringId_A\",\n to: \"stringId_B\",\n type: \"interacts_with\",\n entity: \"protein-b\",\n fields: { score: \"score\" },\n },\n ],\n embedded: [\n { at: \".\", entity: \"protein-a\" },\n { at: \".\", entity: \"protein-b\" },\n ],\n },\n \"protein-a\": { id: \"stringId_A\", label: \"protein\", fields: { name: \"preferredName_A\" } },\n \"protein-b\": { id: \"stringId_B\", label: \"protein\", fields: { name: \"preferredName_B\" } },\n },\n});\n","/**\n * The descriptors of the REST mapping source and its `openalex` preset: catalog data, available\n * without loading the sources' code.\n */\n\nimport { type SourceDescriptor } from \"../types.js\";\nimport { DEPS_DEV_MAPPING } from \"./samples/deps-dev.js\";\nimport { STRING_MAPPING } from \"./samples/string.js\";\n\n/**\n * The descriptor of the generic `rest` source. Experimental.\n * @category Network sources\n */\nexport const REST_DESCRIPTOR: SourceDescriptor = Object.freeze({\n plainName: \"REST API\",\n kind: \"rest\",\n version: 1,\n auth: [\"bearer\", \"api-key\"],\n authRequired: \"optional\",\n params: [{ name: \"mapping\", plainName: \"Mapping\", type: \"text\", required: true }],\n samples: [\n {\n id: \"string-tp53\",\n plainName: \"STRING: TP53's functional partners\",\n params: { mapping: STRING_MAPPING, identifiers: \"TP53\", species: \"9606\", add_nodes: \"20\" },\n endpoint: STRING_MAPPING.endpoint,\n counts: { nodes: 21, edges: 113 },\n },\n {\n id: \"deps-dev-webpack\",\n plainName: \"deps.dev: webpack 5.90.0\",\n params: { mapping: DEPS_DEV_MAPPING, system: \"npm\", package: \"webpack\", version: \"5.90.0\" },\n endpoint: DEPS_DEV_MAPPING.endpoint,\n counts: { nodes: 84, edges: 121 },\n },\n ],\n});\n\n/**\n * The descriptor of the `openalex` preset. Experimental.\n * @category Network sources\n */\nexport const OPENALEX_DESCRIPTOR: SourceDescriptor = Object.freeze({\n plainName: \"OpenAlex\",\n kind: \"rest\",\n version: 1,\n defaultEndpoint: \"https://api.openalex.org\",\n auth: [\"api-key\"],\n authRequired: \"optional\",\n rateLimit: { requests: 10, perMs: 1000 },\n params: [\n { name: \"work\", plainName: \"Work\", type: \"string\" },\n { name: \"author\", plainName: \"Author\", type: \"string\" },\n {\n name: \"graph\",\n plainName: \"Graph\",\n type: \"enum\",\n default: \"citation\",\n values: [\n { value: \"citation\", label: \"Citations\" },\n { value: \"coauthorship\", label: \"Co-authors\" },\n ],\n },\n { name: \"include\", plainName: \"Include\", type: \"string\", advanced: true },\n ],\n samples: [\n {\n id: \"openalex-watts-strogatz\",\n plainName: \"Watts-Strogatz paper's citations\",\n params: { work: \"W2112090702\" },\n whole: false,\n },\n ],\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
function sample(id, plainName, uuid, nodes, edges) {
|
|
2
|
+
return { id, plainName, params: { uuid }, counts: { nodes, edges } };
|
|
3
|
+
}
|
|
4
|
+
const NDEX_DESCRIPTOR = Object.freeze({
|
|
5
|
+
plainName: "NDEx",
|
|
6
|
+
kind: "repository",
|
|
7
|
+
version: 1,
|
|
8
|
+
defaultEndpoint: "https://www.ndexbio.org/",
|
|
9
|
+
auth: ["basic", "bearer", "api-key"],
|
|
10
|
+
authRequired: "optional",
|
|
11
|
+
rateLimit: { requests: 50, perMs: 1e3, concurrent: 4 },
|
|
12
|
+
params: [
|
|
13
|
+
{ name: "uuid", plainName: "Network UUID", type: "string", required: true },
|
|
14
|
+
{
|
|
15
|
+
name: "format",
|
|
16
|
+
plainName: "Format",
|
|
17
|
+
type: "enum",
|
|
18
|
+
default: "cx2",
|
|
19
|
+
advanced: true,
|
|
20
|
+
values: [
|
|
21
|
+
{ value: "cx2", label: "CX2" },
|
|
22
|
+
{ value: "cx", label: "CX" }
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{ name: "idAttribute", plainName: "Id attribute", type: "string", advanced: true }
|
|
26
|
+
],
|
|
27
|
+
features: ["probe", "list", "expand", "validate"],
|
|
28
|
+
samples: [
|
|
29
|
+
sample("ndex-wp5483", "WikiPathways WP5483", "86719f5b-1439-11f0-9806-005056ae3c32", 57, 34),
|
|
30
|
+
sample("ndex-nci-pid", "NCI PID cancer signaling", "640e2cef-795d-11e8-a4bf-0ac135e8bacf", 2794, 25296),
|
|
31
|
+
sample("ndex-huri", "HuRI human interactome", "73bc2c06-5fb2-11e9-9f06-0ac135e8bacf", 8275, 52569),
|
|
32
|
+
sample("ndex-signor", "Signor", "523fff27-afe8-11e9-8bb4-0ac135e8bacf", 10339, 33381),
|
|
33
|
+
sample("ndex-dgidb", "DGIdb drugs and target genes", "7e5e64ff-f6cf-11ea-99da-0ac135e8bacf", 12100, 32814),
|
|
34
|
+
sample(
|
|
35
|
+
"ndex-wikipathways-landscape",
|
|
36
|
+
"WikiPathways landscape",
|
|
37
|
+
"2b3ed6af-5031-11eb-9e72-0ac135e8bacf",
|
|
38
|
+
32077,
|
|
39
|
+
74109
|
|
40
|
+
),
|
|
41
|
+
// 3.3 million edges and a 690 MB download: offered for neighborhoods, and as a maxBytes test
|
|
42
|
+
{ ...sample("ndex-pcnet", "PCNet 2.2", "8b4b54fa-e87d-11ee-9621-005056ae23aa", 18558, 3323928), whole: false }
|
|
43
|
+
]
|
|
44
|
+
});
|
|
45
|
+
export {
|
|
46
|
+
NDEX_DESCRIPTOR as N
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=descriptor-C-YDhtsn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor-C-YDhtsn.js","sources":["../../src/sources/ndex/descriptor.ts"],"sourcesContent":["/**\n * The NDEx source's descriptor: catalog data, available without loading the source's code.\n */\n\nimport { type SourceDescriptor, type SourceSample } from \"../types.js\";\n\n/**\n * One public NDEx network offered as a sample.\n * @param id - the sample id\n * @param plainName - its name\n * @param uuid - the network UUID\n * @param nodes - its node count\n * @param edges - its edge count\n * @returns the sample\n */\nfunction sample(id: string, plainName: string, uuid: string, nodes: number, edges: number): SourceSample {\n return { id, plainName, params: { uuid }, counts: { nodes, edges } };\n}\n\n/**\n * The descriptor of the `ndex` source. Experimental.\n * @category Network sources\n */\nexport const NDEX_DESCRIPTOR: SourceDescriptor = Object.freeze({\n plainName: \"NDEx\",\n kind: \"repository\",\n version: 1,\n defaultEndpoint: \"https://www.ndexbio.org/\",\n auth: [\"basic\", \"bearer\", \"api-key\"],\n authRequired: \"optional\",\n rateLimit: { requests: 50, perMs: 1000, concurrent: 4 },\n params: [\n { name: \"uuid\", plainName: \"Network UUID\", type: \"string\", required: true },\n {\n name: \"format\",\n plainName: \"Format\",\n type: \"enum\",\n default: \"cx2\",\n advanced: true,\n values: [\n { value: \"cx2\", label: \"CX2\" },\n { value: \"cx\", label: \"CX\" },\n ],\n },\n { name: \"idAttribute\", plainName: \"Id attribute\", type: \"string\", advanced: true },\n ],\n features: [\"probe\", \"list\", \"expand\", \"validate\"],\n samples: [\n sample(\"ndex-wp5483\", \"WikiPathways WP5483\", \"86719f5b-1439-11f0-9806-005056ae3c32\", 57, 34),\n sample(\"ndex-nci-pid\", \"NCI PID cancer signaling\", \"640e2cef-795d-11e8-a4bf-0ac135e8bacf\", 2794, 25296),\n sample(\"ndex-huri\", \"HuRI human interactome\", \"73bc2c06-5fb2-11e9-9f06-0ac135e8bacf\", 8275, 52569),\n sample(\"ndex-signor\", \"Signor\", \"523fff27-afe8-11e9-8bb4-0ac135e8bacf\", 10339, 33381),\n sample(\"ndex-dgidb\", \"DGIdb drugs and target genes\", \"7e5e64ff-f6cf-11ea-99da-0ac135e8bacf\", 12100, 32814),\n sample(\n \"ndex-wikipathways-landscape\",\n \"WikiPathways landscape\",\n \"2b3ed6af-5031-11eb-9e72-0ac135e8bacf\",\n 32077,\n 74109,\n ),\n // 3.3 million edges and a 690 MB download: offered for neighborhoods, and as a maxBytes test\n { ...sample(\"ndex-pcnet\", \"PCNet 2.2\", \"8b4b54fa-e87d-11ee-9621-005056ae23aa\", 18558, 3323928), whole: false },\n ],\n});\n"],"names":[],"mappings":"AAeA,SAAS,OAAO,IAAY,WAAmB,MAAc,OAAe,OAA6B;AACrG,SAAO,EAAE,IAAI,WAAW,QAAQ,EAAE,KAAA,GAAQ,QAAQ,EAAE,OAAO,QAAM;AACrE;AAMO,MAAM,kBAAoC,OAAO,OAAO;AAAA,EAC3D,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,MAAM,CAAC,SAAS,UAAU,SAAS;AAAA,EACnC,cAAc;AAAA,EACd,WAAW,EAAE,UAAU,IAAI,OAAO,KAAM,YAAY,EAAA;AAAA,EACpD,QAAQ;AAAA,IACJ,EAAE,MAAM,QAAQ,WAAW,gBAAgB,MAAM,UAAU,UAAU,KAAA;AAAA,IACrE;AAAA,MACI,MAAM;AAAA,MACN,WAAW;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,QACJ,EAAE,OAAO,OAAO,OAAO,MAAA;AAAA,QACvB,EAAE,OAAO,MAAM,OAAO,KAAA;AAAA,MAAK;AAAA,IAC/B;AAAA,IAEJ,EAAE,MAAM,eAAe,WAAW,gBAAgB,MAAM,UAAU,UAAU,KAAA;AAAA,EAAK;AAAA,EAErF,UAAU,CAAC,SAAS,QAAQ,UAAU,UAAU;AAAA,EAChD,SAAS;AAAA,IACL,OAAO,eAAe,uBAAuB,wCAAwC,IAAI,EAAE;AAAA,IAC3F,OAAO,gBAAgB,4BAA4B,wCAAwC,MAAM,KAAK;AAAA,IACtG,OAAO,aAAa,0BAA0B,wCAAwC,MAAM,KAAK;AAAA,IACjG,OAAO,eAAe,UAAU,wCAAwC,OAAO,KAAK;AAAA,IACpF,OAAO,cAAc,gCAAgC,wCAAwC,OAAO,KAAK;AAAA,IACzG;AAAA,MACI;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA;AAAA,IAGJ,EAAE,GAAG,OAAO,cAAc,aAAa,wCAAwC,OAAO,OAAO,GAAG,OAAO,MAAA;AAAA,EAAM;AAErH,CAAC;"}
|