@graphty/graph-io 0.3.46 → 0.3.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/dist/chunks/{approximations-wWjCRzKj.js → approximations-C2riR4NT.js} +2 -2
  2. package/dist/chunks/{approximations-wWjCRzKj.js.map → approximations-C2riR4NT.js.map} +1 -1
  3. package/dist/chunks/{block-DiGq58c3.js → block-Cu22ewuS.js} +92 -21
  4. package/dist/chunks/block-Cu22ewuS.js.map +1 -0
  5. package/dist/chunks/{choose--jM0yYCo.js → choose-Cdx6Enl2.js} +3 -3
  6. package/dist/chunks/{choose--jM0yYCo.js.map → choose-Cdx6Enl2.js.map} +1 -1
  7. package/dist/chunks/codes-CV_Bhcyi.js +153 -0
  8. package/dist/chunks/codes-CV_Bhcyi.js.map +1 -0
  9. package/dist/chunks/{constants-BKwqelYD.js → constants-D0LqcsLJ.js} +2 -2
  10. package/dist/chunks/{constants-BKwqelYD.js.map → constants-D0LqcsLJ.js.map} +1 -1
  11. package/dist/chunks/context-cgmmOxZ2.js +663 -0
  12. package/dist/chunks/context-cgmmOxZ2.js.map +1 -0
  13. package/dist/chunks/credentials-BiQsnMTb.js +347 -0
  14. package/dist/chunks/credentials-BiQsnMTb.js.map +1 -0
  15. package/dist/chunks/cx-export-BEeF6ymo.js +259 -0
  16. package/dist/chunks/cx-export-BEeF6ymo.js.map +1 -0
  17. package/dist/chunks/descriptor-BJ-W0Jd-.js +137 -0
  18. package/dist/chunks/descriptor-BJ-W0Jd-.js.map +1 -0
  19. package/dist/chunks/descriptor-C-YDhtsn.js +48 -0
  20. package/dist/chunks/descriptor-C-YDhtsn.js.map +1 -0
  21. package/dist/chunks/{emit-CwU8cUmG.js → emit-CD8xnY8s.js} +70 -10
  22. package/dist/chunks/emit-CD8xnY8s.js.map +1 -0
  23. package/dist/chunks/{escape-CgzxiYPg.js → escape-DH2Egt-l.js} +12 -12
  24. package/dist/chunks/{escape-CgzxiYPg.js.map → escape-DH2Egt-l.js.map} +1 -1
  25. package/dist/chunks/{export-BvqAXCKh.js → export-CZ7VRm4I.js} +53 -1443
  26. package/dist/chunks/export-CZ7VRm4I.js.map +1 -0
  27. package/dist/chunks/{exporter-DndFlGSa.js → exporter-BIdaoIgh.js} +7 -6
  28. package/dist/chunks/{exporter-DndFlGSa.js.map → exporter-BIdaoIgh.js.map} +1 -1
  29. package/dist/chunks/{exporter-CJgfhF-l.js → exporter-ChjL5fmP.js} +8 -7
  30. package/dist/chunks/{exporter-CJgfhF-l.js.map → exporter-ChjL5fmP.js.map} +1 -1
  31. package/dist/chunks/{exporter--Mk9gXCJ.js → exporter-Dcw7Ldtq.js} +6 -4
  32. package/dist/chunks/{exporter--Mk9gXCJ.js.map → exporter-Dcw7Ldtq.js.map} +1 -1
  33. package/dist/chunks/exporter-DtVU80Fa.js +1008 -0
  34. package/dist/chunks/exporter-DtVU80Fa.js.map +1 -0
  35. package/dist/chunks/{exporter-CrDWIyiq.js → exporter-bxxjOrDZ.js} +11 -9
  36. package/dist/chunks/{exporter-CrDWIyiq.js.map → exporter-bxxjOrDZ.js.map} +1 -1
  37. package/dist/chunks/format-BMS-1Nxb.js +64 -0
  38. package/dist/chunks/format-BMS-1Nxb.js.map +1 -0
  39. package/dist/chunks/{generic-Dq1ntt9q.js → generic-CP6YD34u.js} +4 -4
  40. package/dist/chunks/{generic-Dq1ntt9q.js.map → generic-CP6YD34u.js.map} +1 -1
  41. package/dist/chunks/{importer-DiZRmOQG.js → importer-B87_fmVx.js} +13 -17
  42. package/dist/chunks/importer-B87_fmVx.js.map +1 -0
  43. package/dist/chunks/{importer-BSvfrX_h.js → importer-Bji2MeWr.js} +18 -1014
  44. package/dist/chunks/importer-Bji2MeWr.js.map +1 -0
  45. package/dist/chunks/{importer-COTK9Tsl.js → importer-CB_zV5_L.js} +14 -11
  46. package/dist/chunks/importer-CB_zV5_L.js.map +1 -0
  47. package/dist/chunks/{importer-e6LGpqHB.js → importer-CVT-JyDE.js} +12 -9
  48. package/dist/chunks/importer-CVT-JyDE.js.map +1 -0
  49. package/dist/chunks/{importer-yh_aBCU6.js → importer-Cyy6UseH.js} +7 -6
  50. package/dist/chunks/{importer-yh_aBCU6.js.map → importer-Cyy6UseH.js.map} +1 -1
  51. package/dist/chunks/{importer-iFYPEKaJ.js → importer-DPZDN40-.js} +14 -10
  52. package/dist/chunks/{importer-iFYPEKaJ.js.map → importer-DPZDN40-.js.map} +1 -1
  53. package/dist/chunks/{importer-CMmeMWlC.js → importer-e3huMZbm.js} +8 -260
  54. package/dist/chunks/importer-e3huMZbm.js.map +1 -0
  55. package/dist/chunks/input-Ccg9I22A.js +1397 -0
  56. package/dist/chunks/input-Ccg9I22A.js.map +1 -0
  57. package/dist/chunks/{json-elements-DJZRZ6jd.js → json-elements-By172SVq.js} +4 -4
  58. package/dist/chunks/{json-elements-DJZRZ6jd.js.map → json-elements-By172SVq.js.map} +1 -1
  59. package/dist/chunks/{lexicon-CT69Kd87.js → lexicon-u2SI5xcx.js} +19 -5
  60. package/dist/chunks/lexicon-u2SI5xcx.js.map +1 -0
  61. package/dist/chunks/{ontology-export-G4MqRdux.js → ontology-export-BwgMyuF0.js} +4 -3
  62. package/dist/chunks/{ontology-export-G4MqRdux.js.map → ontology-export-BwgMyuF0.js.map} +1 -1
  63. package/dist/chunks/{records-CiaWZrFH.js → records-Cgvxz-Vx.js} +2 -2
  64. package/dist/chunks/{records-CiaWZrFH.js.map → records-Cgvxz-Vx.js.map} +1 -1
  65. package/dist/chunks/{format-BpQBx8MZ.js → report-CgdsL9Hb.js} +72 -129
  66. package/dist/chunks/report-CgdsL9Hb.js.map +1 -0
  67. package/dist/chunks/sigv4-LkAzsLAu.js +247 -0
  68. package/dist/chunks/sigv4-LkAzsLAu.js.map +1 -0
  69. package/dist/chunks/{styles-BQnsga7p.js → styles-CaABMoO1.js} +76 -43
  70. package/dist/chunks/styles-CaABMoO1.js.map +1 -0
  71. package/dist/chunks/{styles-D3fRphrO.js → styles-P_gmFAOi.js} +101 -21
  72. package/dist/chunks/styles-P_gmFAOi.js.map +1 -0
  73. package/dist/chunks/{styles-yed-BF5x3_Y5.js → styles-yed-Cs1nmrjn.js} +60 -20
  74. package/dist/chunks/styles-yed-Cs1nmrjn.js.map +1 -0
  75. package/dist/chunks/{text-CzJNFOS9.js → text-BuKQVMz2.js} +2 -2
  76. package/dist/chunks/{text-CzJNFOS9.js.map → text-BuKQVMz2.js.map} +1 -1
  77. package/dist/chunks/{writer-DMKvthQE.js → writer-DvHTl36J.js} +5 -4
  78. package/dist/chunks/writer-DvHTl36J.js.map +1 -0
  79. package/dist/csv.js +7 -5
  80. package/dist/csv.js.map +1 -1
  81. package/dist/cx.js +5 -4
  82. package/dist/cx.js.map +1 -1
  83. package/dist/cx2.js +2 -2
  84. package/dist/cys.js +1 -1
  85. package/dist/dot.js +2 -2
  86. package/dist/gexf.js +7 -5
  87. package/dist/gexf.js.map +1 -1
  88. package/dist/gml.js +16 -13
  89. package/dist/gml.js.map +1 -1
  90. package/dist/graph-io.js +1181 -224
  91. package/dist/graph-io.js.map +1 -1
  92. package/dist/graphml.js +3 -3
  93. package/dist/json.js +1 -1
  94. package/dist/neo4j.js +6 -4
  95. package/dist/neo4j.js.map +1 -1
  96. package/dist/obo.js +1 -1
  97. package/dist/pajek.js +1 -1
  98. package/dist/sources-cypher.d.ts +1 -0
  99. package/dist/sources-cypher.js +1236 -0
  100. package/dist/sources-cypher.js.map +1 -0
  101. package/dist/sources-ndex.d.ts +1 -0
  102. package/dist/sources-ndex.js +278 -0
  103. package/dist/sources-ndex.js.map +1 -0
  104. package/dist/sources-rest.d.ts +1 -0
  105. package/dist/sources-rest.js +1367 -0
  106. package/dist/sources-rest.js.map +1 -0
  107. package/dist/src/common/report.d.ts +6 -3
  108. package/dist/src/common/report.d.ts.map +1 -1
  109. package/dist/src/common/report.js +15 -9
  110. package/dist/src/common/report.js.map +1 -1
  111. package/dist/src/formats/cx/styles.d.ts.map +1 -1
  112. package/dist/src/formats/cx/styles.js +1 -0
  113. package/dist/src/formats/cx/styles.js.map +1 -1
  114. package/dist/src/formats/dot/styles.d.ts.map +1 -1
  115. package/dist/src/formats/dot/styles.js +3 -1
  116. package/dist/src/formats/dot/styles.js.map +1 -1
  117. package/dist/src/formats/gexf/styles.d.ts +29 -12
  118. package/dist/src/formats/gexf/styles.d.ts.map +1 -1
  119. package/dist/src/formats/gexf/styles.js +160 -31
  120. package/dist/src/formats/gexf/styles.js.map +1 -1
  121. package/dist/src/formats/gml/styles.d.ts.map +1 -1
  122. package/dist/src/formats/gml/styles.js +5 -4
  123. package/dist/src/formats/gml/styles.js.map +1 -1
  124. package/dist/src/formats/graphml/styles-plain.d.ts.map +1 -1
  125. package/dist/src/formats/graphml/styles-plain.js +3 -3
  126. package/dist/src/formats/graphml/styles-plain.js.map +1 -1
  127. package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -1
  128. package/dist/src/formats/graphml/styles-yed.js +89 -19
  129. package/dist/src/formats/graphml/styles-yed.js.map +1 -1
  130. package/dist/src/formats/pajek/styles.d.ts.map +1 -1
  131. package/dist/src/formats/pajek/styles.js +1 -0
  132. package/dist/src/formats/pajek/styles.js.map +1 -1
  133. package/dist/src/formats/xgmml/styles.d.ts.map +1 -1
  134. package/dist/src/formats/xgmml/styles.js +1 -0
  135. package/dist/src/formats/xgmml/styles.js.map +1 -1
  136. package/dist/src/index.d.ts +8 -1
  137. package/dist/src/index.d.ts.map +1 -1
  138. package/dist/src/index.js +9 -1
  139. package/dist/src/index.js.map +1 -1
  140. package/dist/src/registry.d.ts +173 -1
  141. package/dist/src/registry.d.ts.map +1 -1
  142. package/dist/src/registry.js +196 -1
  143. package/dist/src/registry.js.map +1 -1
  144. package/dist/src/sources/builtins.d.ts +11 -0
  145. package/dist/src/sources/builtins.d.ts.map +1 -0
  146. package/dist/src/sources/builtins.js +47 -0
  147. package/dist/src/sources/builtins.js.map +1 -0
  148. package/dist/src/sources/codes.d.ts +230 -0
  149. package/dist/src/sources/codes.d.ts.map +1 -0
  150. package/dist/src/sources/codes.js +58 -0
  151. package/dist/src/sources/codes.js.map +1 -0
  152. package/dist/src/sources/context.d.ts +112 -0
  153. package/dist/src/sources/context.d.ts.map +1 -0
  154. package/dist/src/sources/context.js +739 -0
  155. package/dist/src/sources/context.js.map +1 -0
  156. package/dist/src/sources/credentials.d.ts +179 -0
  157. package/dist/src/sources/credentials.d.ts.map +1 -0
  158. package/dist/src/sources/credentials.js +301 -0
  159. package/dist/src/sources/credentials.js.map +1 -0
  160. package/dist/src/sources/cypher/descriptor.d.ts +21 -0
  161. package/dist/src/sources/cypher/descriptor.d.ts.map +1 -0
  162. package/dist/src/sources/cypher/descriptor.js +119 -0
  163. package/dist/src/sources/cypher/descriptor.js.map +1 -0
  164. package/dist/src/sources/cypher/flatten.d.ts +72 -0
  165. package/dist/src/sources/cypher/flatten.d.ts.map +1 -0
  166. package/dist/src/sources/cypher/flatten.js +279 -0
  167. package/dist/src/sources/cypher/flatten.js.map +1 -0
  168. package/dist/src/sources/cypher/index.d.ts +33 -0
  169. package/dist/src/sources/cypher/index.d.ts.map +1 -0
  170. package/dist/src/sources/cypher/index.js +405 -0
  171. package/dist/src/sources/cypher/index.js.map +1 -0
  172. package/dist/src/sources/cypher/params.d.ts +40 -0
  173. package/dist/src/sources/cypher/params.d.ts.map +1 -0
  174. package/dist/src/sources/cypher/params.js +6 -0
  175. package/dist/src/sources/cypher/params.js.map +1 -0
  176. package/dist/src/sources/cypher/profiles.d.ts +44 -0
  177. package/dist/src/sources/cypher/profiles.d.ts.map +1 -0
  178. package/dist/src/sources/cypher/profiles.js +61 -0
  179. package/dist/src/sources/cypher/profiles.js.map +1 -0
  180. package/dist/src/sources/cypher/query-builder.d.ts +106 -0
  181. package/dist/src/sources/cypher/query-builder.d.ts.map +1 -0
  182. package/dist/src/sources/cypher/query-builder.js +236 -0
  183. package/dist/src/sources/cypher/query-builder.js.map +1 -0
  184. package/dist/src/sources/cypher/transports/bolt.d.ts +21 -0
  185. package/dist/src/sources/cypher/transports/bolt.d.ts.map +1 -0
  186. package/dist/src/sources/cypher/transports/bolt.js +185 -0
  187. package/dist/src/sources/cypher/transports/bolt.js.map +1 -0
  188. package/dist/src/sources/cypher/transports/neptune-analytics.d.ts +15 -0
  189. package/dist/src/sources/cypher/transports/neptune-analytics.d.ts.map +1 -0
  190. package/dist/src/sources/cypher/transports/neptune-analytics.js +38 -0
  191. package/dist/src/sources/cypher/transports/neptune-analytics.js.map +1 -0
  192. package/dist/src/sources/cypher/transports/neptune-https.d.ts +31 -0
  193. package/dist/src/sources/cypher/transports/neptune-https.d.ts.map +1 -0
  194. package/dist/src/sources/cypher/transports/neptune-https.js +104 -0
  195. package/dist/src/sources/cypher/transports/neptune-https.js.map +1 -0
  196. package/dist/src/sources/cypher/transports/query-api.d.ts +14 -0
  197. package/dist/src/sources/cypher/transports/query-api.d.ts.map +1 -0
  198. package/dist/src/sources/cypher/transports/query-api.js +80 -0
  199. package/dist/src/sources/cypher/transports/query-api.js.map +1 -0
  200. package/dist/src/sources/cypher/transports/transport.d.ts +78 -0
  201. package/dist/src/sources/cypher/transports/transport.d.ts.map +1 -0
  202. package/dist/src/sources/cypher/transports/transport.js +77 -0
  203. package/dist/src/sources/cypher/transports/transport.js.map +1 -0
  204. package/dist/src/sources/cypher/types-map.d.ts +91 -0
  205. package/dist/src/sources/cypher/types-map.d.ts.map +1 -0
  206. package/dist/src/sources/cypher/types-map.js +306 -0
  207. package/dist/src/sources/cypher/types-map.js.map +1 -0
  208. package/dist/src/sources/define.d.ts +47 -0
  209. package/dist/src/sources/define.d.ts.map +1 -0
  210. package/dist/src/sources/define.js +173 -0
  211. package/dist/src/sources/define.js.map +1 -0
  212. package/dist/src/sources/fail.d.ts +33 -0
  213. package/dist/src/sources/fail.d.ts.map +1 -0
  214. package/dist/src/sources/fail.js +49 -0
  215. package/dist/src/sources/fail.js.map +1 -0
  216. package/dist/src/sources/ids.d.ts +64 -0
  217. package/dist/src/sources/ids.d.ts.map +1 -0
  218. package/dist/src/sources/ids.js +64 -0
  219. package/dist/src/sources/ids.js.map +1 -0
  220. package/dist/src/sources/ndex/client.d.ts +31 -0
  221. package/dist/src/sources/ndex/client.d.ts.map +1 -0
  222. package/dist/src/sources/ndex/client.js +90 -0
  223. package/dist/src/sources/ndex/client.js.map +1 -0
  224. package/dist/src/sources/ndex/descriptor.d.ts +10 -0
  225. package/dist/src/sources/ndex/descriptor.d.ts.map +1 -0
  226. package/dist/src/sources/ndex/descriptor.js +55 -0
  227. package/dist/src/sources/ndex/descriptor.js.map +1 -0
  228. package/dist/src/sources/ndex/expand.d.ts +20 -0
  229. package/dist/src/sources/ndex/expand.d.ts.map +1 -0
  230. package/dist/src/sources/ndex/expand.js +87 -0
  231. package/dist/src/sources/ndex/expand.js.map +1 -0
  232. package/dist/src/sources/ndex/index.d.ts +25 -0
  233. package/dist/src/sources/ndex/index.d.ts.map +1 -0
  234. package/dist/src/sources/ndex/index.js +191 -0
  235. package/dist/src/sources/ndex/index.js.map +1 -0
  236. package/dist/src/sources/ndex/params.d.ts +17 -0
  237. package/dist/src/sources/ndex/params.d.ts.map +1 -0
  238. package/dist/src/sources/ndex/params.js +6 -0
  239. package/dist/src/sources/ndex/params.js.map +1 -0
  240. package/dist/src/sources/ndex/share-url.d.ts +40 -0
  241. package/dist/src/sources/ndex/share-url.d.ts.map +1 -0
  242. package/dist/src/sources/ndex/share-url.js +64 -0
  243. package/dist/src/sources/ndex/share-url.js.map +1 -0
  244. package/dist/src/sources/params.d.ts +28 -0
  245. package/dist/src/sources/params.d.ts.map +1 -0
  246. package/dist/src/sources/params.js +6 -0
  247. package/dist/src/sources/params.js.map +1 -0
  248. package/dist/src/sources/registry.d.ts +118 -0
  249. package/dist/src/sources/registry.d.ts.map +1 -0
  250. package/dist/src/sources/registry.js +193 -0
  251. package/dist/src/sources/registry.js.map +1 -0
  252. package/dist/src/sources/rest/descriptor.d.ts +16 -0
  253. package/dist/src/sources/rest/descriptor.d.ts.map +1 -0
  254. package/dist/src/sources/rest/descriptor.js +71 -0
  255. package/dist/src/sources/rest/descriptor.js.map +1 -0
  256. package/dist/src/sources/rest/index.d.ts +14 -0
  257. package/dist/src/sources/rest/index.d.ts.map +1 -0
  258. package/dist/src/sources/rest/index.js +13 -0
  259. package/dist/src/sources/rest/index.js.map +1 -0
  260. package/dist/src/sources/rest/mapping.d.ts +30 -0
  261. package/dist/src/sources/rest/mapping.d.ts.map +1 -0
  262. package/dist/src/sources/rest/mapping.js +362 -0
  263. package/dist/src/sources/rest/mapping.js.map +1 -0
  264. package/dist/src/sources/rest/openalex.d.ts +27 -0
  265. package/dist/src/sources/rest/openalex.d.ts.map +1 -0
  266. package/dist/src/sources/rest/openalex.js +269 -0
  267. package/dist/src/sources/rest/openalex.js.map +1 -0
  268. package/dist/src/sources/rest/paging.d.ts +53 -0
  269. package/dist/src/sources/rest/paging.d.ts.map +1 -0
  270. package/dist/src/sources/rest/paging.js +138 -0
  271. package/dist/src/sources/rest/paging.js.map +1 -0
  272. package/dist/src/sources/rest/params.d.ts +216 -0
  273. package/dist/src/sources/rest/params.d.ts.map +1 -0
  274. package/dist/src/sources/rest/params.js +7 -0
  275. package/dist/src/sources/rest/params.js.map +1 -0
  276. package/dist/src/sources/rest/records.d.ts +41 -0
  277. package/dist/src/sources/rest/records.d.ts.map +1 -0
  278. package/dist/src/sources/rest/records.js +240 -0
  279. package/dist/src/sources/rest/records.js.map +1 -0
  280. package/dist/src/sources/rest/samples/deps-dev.d.ts +10 -0
  281. package/dist/src/sources/rest/samples/deps-dev.d.ts.map +1 -0
  282. package/dist/src/sources/rest/samples/deps-dev.js +47 -0
  283. package/dist/src/sources/rest/samples/deps-dev.js.map +1 -0
  284. package/dist/src/sources/rest/samples/string.d.ts +9 -0
  285. package/dist/src/sources/rest/samples/string.d.ts.map +1 -0
  286. package/dist/src/sources/rest/samples/string.js +42 -0
  287. package/dist/src/sources/rest/samples/string.js.map +1 -0
  288. package/dist/src/sources/rest/selectors.d.ts +41 -0
  289. package/dist/src/sources/rest/selectors.d.ts.map +1 -0
  290. package/dist/src/sources/rest/selectors.js +81 -0
  291. package/dist/src/sources/rest/selectors.js.map +1 -0
  292. package/dist/src/sources/rest/source.d.ts +67 -0
  293. package/dist/src/sources/rest/source.d.ts.map +1 -0
  294. package/dist/src/sources/rest/source.js +635 -0
  295. package/dist/src/sources/rest/source.js.map +1 -0
  296. package/dist/src/sources/rest/templates.d.ts +38 -0
  297. package/dist/src/sources/rest/templates.d.ts.map +1 -0
  298. package/dist/src/sources/rest/templates.js +125 -0
  299. package/dist/src/sources/rest/templates.js.map +1 -0
  300. package/dist/src/sources/run.d.ts +93 -0
  301. package/dist/src/sources/run.d.ts.map +1 -0
  302. package/dist/src/sources/run.js +673 -0
  303. package/dist/src/sources/run.js.map +1 -0
  304. package/dist/src/sources/sha256.d.ts +12 -0
  305. package/dist/src/sources/sha256.d.ts.map +1 -0
  306. package/dist/src/sources/sha256.js +95 -0
  307. package/dist/src/sources/sha256.js.map +1 -0
  308. package/dist/src/sources/sigv4.d.ts +24 -0
  309. package/dist/src/sources/sigv4.d.ts.map +1 -0
  310. package/dist/src/sources/sigv4.js +182 -0
  311. package/dist/src/sources/sigv4.js.map +1 -0
  312. package/dist/src/sources/testing.d.ts +96 -0
  313. package/dist/src/sources/testing.d.ts.map +1 -0
  314. package/dist/src/sources/testing.js +138 -0
  315. package/dist/src/sources/testing.js.map +1 -0
  316. package/dist/src/sources/types.d.ts +665 -0
  317. package/dist/src/sources/types.d.ts.map +1 -0
  318. package/dist/src/sources/types.js +10 -0
  319. package/dist/src/sources/types.js.map +1 -0
  320. package/dist/src/styles/canon/enums.d.ts.map +1 -1
  321. package/dist/src/styles/canon/enums.js +1 -0
  322. package/dist/src/styles/canon/enums.js.map +1 -1
  323. package/dist/src/styles/cyjs/cascade.d.ts.map +1 -1
  324. package/dist/src/styles/cyjs/cascade.js +68 -2
  325. package/dist/src/styles/cyjs/cascade.js.map +1 -1
  326. package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -1
  327. package/dist/src/styles/cyjs/defaults-table.js +2 -0
  328. package/dist/src/styles/cyjs/defaults-table.js.map +1 -1
  329. package/dist/src/styles/cyjs/emit.d.ts.map +1 -1
  330. package/dist/src/styles/cyjs/emit.js +18 -7
  331. package/dist/src/styles/cyjs/emit.js.map +1 -1
  332. package/dist/src/styles/cyjs/mappers.d.ts +4 -1
  333. package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
  334. package/dist/src/styles/cyjs/mappers.js +2 -0
  335. package/dist/src/styles/cyjs/mappers.js.map +1 -1
  336. package/dist/src/styles/cytoscape/emit.d.ts.map +1 -1
  337. package/dist/src/styles/cytoscape/emit.js +59 -7
  338. package/dist/src/styles/cytoscape/emit.js.map +1 -1
  339. package/dist/src/styles/cytoscape/lexicon.d.ts +6 -0
  340. package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
  341. package/dist/src/styles/cytoscape/lexicon.js +26 -2
  342. package/dist/src/styles/cytoscape/lexicon.js.map +1 -1
  343. package/dist/src/styles/cytoscape/resolve.d.ts +4 -1
  344. package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
  345. package/dist/src/styles/cytoscape/resolve.js +10 -6
  346. package/dist/src/styles/cytoscape/resolve.js.map +1 -1
  347. package/dist/src/styles/cytoscape/translate.d.ts.map +1 -1
  348. package/dist/src/styles/cytoscape/translate.js +10 -10
  349. package/dist/src/styles/cytoscape/translate.js.map +1 -1
  350. package/dist/src/styles/defaults.d.ts +30 -0
  351. package/dist/src/styles/defaults.d.ts.map +1 -1
  352. package/dist/src/styles/defaults.js +45 -4
  353. package/dist/src/styles/defaults.js.map +1 -1
  354. package/dist/src/styles/io/block.d.ts.map +1 -1
  355. package/dist/src/styles/io/block.js +9 -0
  356. package/dist/src/styles/io/block.js.map +1 -1
  357. package/dist/src/styles/io/writer.d.ts.map +1 -1
  358. package/dist/src/styles/io/writer.js +7 -3
  359. package/dist/src/styles/io/writer.js.map +1 -1
  360. package/dist/src/styles/plan/resolve.d.ts +2 -1
  361. package/dist/src/styles/plan/resolve.d.ts.map +1 -1
  362. package/dist/src/styles/plan/resolve.js +13 -2
  363. package/dist/src/styles/plan/resolve.js.map +1 -1
  364. package/dist/src/styles/types.d.ts +19 -2
  365. package/dist/src/styles/types.d.ts.map +1 -1
  366. package/dist/src/styles/vocabulary.d.ts.map +1 -1
  367. package/dist/src/styles/vocabulary.js +15 -1
  368. package/dist/src/styles/vocabulary.js.map +1 -1
  369. package/dist/src/types.d.ts +19 -5
  370. package/dist/src/types.d.ts.map +1 -1
  371. package/dist/src/types.js.map +1 -1
  372. package/dist/styles.js +11 -11
  373. package/dist/xgmml.js +3 -3
  374. package/docs/samples/people.json +6 -0
  375. package/package.json +29 -4
  376. package/src/common/report.ts +27 -7
  377. package/src/formats/cx/styles.ts +1 -0
  378. package/src/formats/dot/styles.ts +3 -1
  379. package/src/formats/gexf/styles.ts +185 -37
  380. package/src/formats/gml/styles.ts +5 -4
  381. package/src/formats/graphml/styles-plain.ts +3 -9
  382. package/src/formats/graphml/styles-yed.ts +93 -20
  383. package/src/formats/pajek/styles.ts +1 -0
  384. package/src/formats/xgmml/styles.ts +1 -0
  385. package/src/index.ts +90 -0
  386. package/src/registry.ts +326 -1
  387. package/src/sources/builtins.ts +56 -0
  388. package/src/sources/codes.ts +235 -0
  389. package/src/sources/context.ts +893 -0
  390. package/src/sources/credentials.ts +409 -0
  391. package/src/sources/cypher/descriptor.ts +125 -0
  392. package/src/sources/cypher/flatten.ts +323 -0
  393. package/src/sources/cypher/index.ts +498 -0
  394. package/src/sources/cypher/params.ts +41 -0
  395. package/src/sources/cypher/profiles.ts +78 -0
  396. package/src/sources/cypher/query-builder.ts +294 -0
  397. package/src/sources/cypher/transports/bolt.ts +228 -0
  398. package/src/sources/cypher/transports/neptune-analytics.ts +41 -0
  399. package/src/sources/cypher/transports/neptune-https.ts +122 -0
  400. package/src/sources/cypher/transports/query-api.ts +100 -0
  401. package/src/sources/cypher/transports/transport.ts +139 -0
  402. package/src/sources/cypher/types-map.ts +418 -0
  403. package/src/sources/define.ts +195 -0
  404. package/src/sources/fail.ts +70 -0
  405. package/src/sources/ids.ts +74 -0
  406. package/src/sources/ndex/client.ts +102 -0
  407. package/src/sources/ndex/descriptor.ts +64 -0
  408. package/src/sources/ndex/expand.ts +100 -0
  409. package/src/sources/ndex/index.ts +235 -0
  410. package/src/sources/ndex/params.ts +17 -0
  411. package/src/sources/ndex/share-url.ts +84 -0
  412. package/src/sources/params.ts +29 -0
  413. package/src/sources/registry.ts +325 -0
  414. package/src/sources/rest/descriptor.ts +74 -0
  415. package/src/sources/rest/index.ts +22 -0
  416. package/src/sources/rest/mapping.ts +401 -0
  417. package/src/sources/rest/openalex.ts +288 -0
  418. package/src/sources/rest/paging.ts +180 -0
  419. package/src/sources/rest/params.ts +243 -0
  420. package/src/sources/rest/records.ts +289 -0
  421. package/src/sources/rest/samples/deps-dev.ts +49 -0
  422. package/src/sources/rest/samples/string.ts +44 -0
  423. package/src/sources/rest/selectors.ts +91 -0
  424. package/src/sources/rest/source.ts +760 -0
  425. package/src/sources/rest/templates.ts +151 -0
  426. package/src/sources/run.ts +793 -0
  427. package/src/sources/sha256.ts +99 -0
  428. package/src/sources/sigv4.ts +207 -0
  429. package/src/sources/testing.ts +210 -0
  430. package/src/sources/types.ts +741 -0
  431. package/src/styles/canon/enums.ts +1 -0
  432. package/src/styles/cyjs/cascade.ts +81 -2
  433. package/src/styles/cyjs/defaults-table.ts +2 -0
  434. package/src/styles/cyjs/emit.ts +18 -7
  435. package/src/styles/cyjs/mappers.ts +6 -1
  436. package/src/styles/cytoscape/emit.ts +61 -7
  437. package/src/styles/cytoscape/lexicon.ts +28 -2
  438. package/src/styles/cytoscape/resolve.ts +22 -6
  439. package/src/styles/cytoscape/translate.ts +11 -11
  440. package/src/styles/defaults.ts +93 -4
  441. package/src/styles/io/block.ts +10 -0
  442. package/src/styles/io/writer.ts +8 -3
  443. package/src/styles/plan/resolve.ts +14 -2
  444. package/src/styles/types.ts +28 -2
  445. package/src/styles/vocabulary.ts +15 -1
  446. package/src/types.ts +19 -5
  447. package/dist/chunks/block-DiGq58c3.js.map +0 -1
  448. package/dist/chunks/emit-CwU8cUmG.js.map +0 -1
  449. package/dist/chunks/export-BvqAXCKh.js.map +0 -1
  450. package/dist/chunks/format-BpQBx8MZ.js.map +0 -1
  451. package/dist/chunks/importer-BSvfrX_h.js.map +0 -1
  452. package/dist/chunks/importer-CMmeMWlC.js.map +0 -1
  453. package/dist/chunks/importer-COTK9Tsl.js.map +0 -1
  454. package/dist/chunks/importer-DiZRmOQG.js.map +0 -1
  455. package/dist/chunks/importer-e6LGpqHB.js.map +0 -1
  456. package/dist/chunks/lexicon-CT69Kd87.js.map +0 -1
  457. package/dist/chunks/styles-BQnsga7p.js.map +0 -1
  458. package/dist/chunks/styles-D3fRphrO.js.map +0 -1
  459. package/dist/chunks/styles-yed-BF5x3_Y5.js.map +0 -1
  460. package/dist/chunks/writer-DMKvthQE.js.map +0 -1
package/src/registry.ts CHANGED
@@ -13,6 +13,7 @@ import {
13
13
  GraphBuilder,
14
14
  type GraphBuilderOptions,
15
15
  GraphFormatError,
16
+ type GraphSink,
16
17
  type GraphSnapshot,
17
18
  } from "@graphty/graph-format";
18
19
 
@@ -46,6 +47,21 @@ import { oboExporter, oboImporter } from "./formats/obo/index.js";
46
47
  import { pajekExporter, pajekImporter } from "./formats/pajek/index.js";
47
48
  import { xgmmlExporter, xgmmlImporter } from "./formats/xgmml/index.js";
48
49
  import { type FormatName, rankFormats, SNIFF_HEAD_BYTES, type SniffHints, type SniffResult } from "./sniff.js";
50
+ import { builtinSources } from "./sources/builtins.js";
51
+ import { type SourceParamsMap } from "./sources/params.js";
52
+ import { SourceRegistry } from "./sources/registry.js";
53
+ import {
54
+ type ExpandRequest,
55
+ type GraphSource,
56
+ type LazySource,
57
+ type LoadFromSourceOptions,
58
+ type SourceFreshness,
59
+ type SourceInfo,
60
+ type SourceListing,
61
+ type SourceListQuery,
62
+ type SourceProbe,
63
+ type SourceValidators,
64
+ } from "./sources/types.js";
49
65
  import { extractStyles, type StyleImportOptions } from "./styles/io/generic.js";
50
66
  import { isKeptGraphtyProperty, prepareStyleExport } from "./styles/io/writer.js";
51
67
  import type { ExtractedStyles } from "./styles/types.js";
@@ -323,6 +339,150 @@ export class FormatRegistry {
323
339
 
324
340
  private readonly exporterMap = new Map<string, GraphExporter>();
325
341
 
342
+ private readonly sources = new SourceRegistry(this, {
343
+ newBuilder: (options, format) => seededBuilder(options as ImportGraphOptions, format),
344
+ freeze: (format, builder, report, options) =>
345
+ result(
346
+ { importer: { format } as GraphImporter, sniff: null, source: "", peeked: null, warnings: [] },
347
+ builder,
348
+ report,
349
+ options as ImportGraphOptions,
350
+ ),
351
+ });
352
+
353
+ /**
354
+ * Register a network source, or a lazy one whose code loads on first use. Source ids are their
355
+ * own name space, apart from format names. Throws an ImportError with E_SOURCE_INVALID for a
356
+ * malformed source or an id already taken. Experimental.
357
+ * @param source - the source
358
+ * @returns this registry
359
+ */
360
+ registerSource<P>(source: GraphSource<P> | LazySource): this {
361
+ this.sources.register(source);
362
+ return this;
363
+ }
364
+
365
+ /**
366
+ * A registered source by id, its code loaded. Rejects with E_SOURCE_UNKNOWN for an id no
367
+ * source has. Experimental.
368
+ * @param id - the source id
369
+ * @returns the source
370
+ */
371
+ source(id: string): Promise<GraphSource<never>> {
372
+ return this.sources.resolve(id);
373
+ }
374
+
375
+ /**
376
+ * Whether a source id is registered. Experimental.
377
+ * @param id - the source id
378
+ * @returns true when registered
379
+ */
380
+ hasSource(id: string): boolean {
381
+ return this.sources.has(id);
382
+ }
383
+
384
+ /**
385
+ * Every registered source with its descriptor, loading no source code. Experimental.
386
+ * @returns one entry per source
387
+ */
388
+ listSources(): readonly SourceInfo[] {
389
+ return this.sources.list();
390
+ }
391
+
392
+ /**
393
+ * Load a graph from a network source; see the top-level loadFromSource(). Experimental.
394
+ * @param source - the source id or the source
395
+ * @param params - its params
396
+ * @param options - endpoint, credential, cursor, caps and import options
397
+ * @returns the graph and the report
398
+ */
399
+ loadFromSource(
400
+ source: string | GraphSource<never>,
401
+ params: Readonly<Record<string, unknown>>,
402
+ options?: LoadFromSourceOptions,
403
+ ): Promise<ImportGraphResult> {
404
+ return this.sources.load(source, params, options);
405
+ }
406
+
407
+ /**
408
+ * Load from a network source into a sink you own. Experimental.
409
+ * @param source - the source id or the source
410
+ * @param params - its params
411
+ * @param sink - where to write
412
+ * @param options - the options
413
+ * @returns the report
414
+ */
415
+ importFromSource(
416
+ source: string | GraphSource<never>,
417
+ params: Readonly<Record<string, unknown>>,
418
+ sink: GraphSink,
419
+ options?: LoadFromSourceOptions,
420
+ ): Promise<ImportReport> {
421
+ return this.sources.import(source, params, sink, options);
422
+ }
423
+
424
+ /**
425
+ * Fetch the neighborhood of some nodes from a network source. Experimental.
426
+ * @param source - the source id or the source
427
+ * @param request - the seeds and how far to go
428
+ * @param options - the options
429
+ * @returns a graph of only what was fetched
430
+ */
431
+ expandFromSource(
432
+ source: string | GraphSource<never>,
433
+ request: ExpandRequest<Readonly<Record<string, unknown>>>,
434
+ options?: LoadFromSourceOptions,
435
+ ): Promise<ImportGraphResult> {
436
+ return this.sources.expand(source, request, options);
437
+ }
438
+
439
+ /**
440
+ * Check a source's params and credential without loading. Experimental.
441
+ * @param source - the source id or the source
442
+ * @param params - its params
443
+ * @param options - the options
444
+ * @returns what the service said
445
+ */
446
+ probeSource(
447
+ source: string | GraphSource<never>,
448
+ params: Readonly<Record<string, unknown>>,
449
+ options?: LoadFromSourceOptions,
450
+ ): Promise<SourceProbe> {
451
+ return this.sources.probe(source, params, options);
452
+ }
453
+
454
+ /**
455
+ * Search what a source holds. Experimental.
456
+ * @param source - the source id or the source
457
+ * @param query - the search
458
+ * @param options - the options
459
+ * @returns one page of results
460
+ */
461
+ listFromSource(
462
+ source: string | GraphSource<never>,
463
+ query: SourceListQuery<Readonly<Record<string, unknown>>>,
464
+ options?: LoadFromSourceOptions,
465
+ ): Promise<SourceListing> {
466
+ return this.sources.search(source, query, options);
467
+ }
468
+
469
+ /**
470
+ * Tell whether data loaded from a source changed. Experimental.
471
+ * @param source - the source id or the source
472
+ * @param params - the params it was loaded with
473
+ * @param seen - the validators recorded then (`report.source.validators`)
474
+ * @param options - the options
475
+ * @returns whether it changed
476
+ */
477
+ validateSource(
478
+ source: string | GraphSource<never>,
479
+ params: Readonly<Record<string, unknown>>,
480
+ seen: SourceValidators,
481
+ options?: LoadFromSourceOptions,
482
+ ): Promise<SourceFreshness> {
483
+ return this.sources.validate(source, params, seen, options);
484
+ }
485
+
326
486
  /**
327
487
  * Register an importer under its format name, replacing one of the same name in place (the
328
488
  * original registration order is kept).
@@ -947,7 +1107,7 @@ export class FormatRegistry {
947
1107
  * @category Formats and detection
948
1108
  */
949
1109
  export function createRegistry(): FormatRegistry {
950
- return new FormatRegistry()
1110
+ const formats = new FormatRegistry()
951
1111
  .registerImporter(jsonImporter)
952
1112
  .registerExporter(jsonExporter)
953
1113
  .registerImporter(graphmlImporter)
@@ -974,6 +1134,10 @@ export function createRegistry(): FormatRegistry {
974
1134
  .registerExporter(oboExporter)
975
1135
  .registerImporter(cysImporter)
976
1136
  .registerExporter(cysExporter);
1137
+ for (const source of builtinSources()) {
1138
+ formats.registerSource(source);
1139
+ }
1140
+ return formats;
977
1141
  }
978
1142
 
979
1143
  /**
@@ -1928,3 +2092,164 @@ function readerIterator(stream: ReadableStream<Uint8Array>, signal: AbortSignal
1928
2092
  },
1929
2093
  };
1930
2094
  }
2095
+
2096
+ // ============================================================ network sources (experimental)
2097
+
2098
+ /**
2099
+ * Load a graph from a network source: a built-in one by id ("ndex", "neo4j", "openalex", ...),
2100
+ * one you registered with registerSource(), or a source object. The source fetches through a
2101
+ * guarded fetch that sends the credential only to the endpoint's origin, never over plain http
2102
+ * (except to this machine), never across a redirect, and retries what is safe to retry. Every
2103
+ * failure is an ImportError whose `issue.code` is one of SOURCE_ISSUE and whose `issue.params`
2104
+ * holds its values. A capped load warns W_SOURCE_LIMIT and gives `report.source.next`, which you
2105
+ * pass as `cursor` to continue. `result.format` is "source:<id>", or the format a file source
2106
+ * was read as. Experimental.
2107
+ * @param source - the source id
2108
+ * @param params - its params, typed by SourceParamsMap
2109
+ * @param options - endpoint, credential, cursor, caps, retries and the import options
2110
+ * @returns the graph, the format and the report
2111
+ * @example
2112
+ * ```ts
2113
+ * const { snapshot } = await loadFromSource("people", { team: "core" }, { endpoint: "https://example.com" });
2114
+ * ```
2115
+ * @category Network sources
2116
+ */
2117
+ export function loadFromSource<K extends keyof SourceParamsMap>(
2118
+ source: K,
2119
+ params: SourceParamsMap[K],
2120
+ options?: LoadFromSourceOptions,
2121
+ ): Promise<ImportGraphResult>;
2122
+ /**
2123
+ * Load a graph from a network source by id or as an object. Experimental.
2124
+ * @param source - the source id or the source
2125
+ * @param params - its params
2126
+ * @param options - endpoint, credential, cursor, caps, retries and the import options
2127
+ * @returns the graph, the format and the report
2128
+ * @category Network sources
2129
+ */
2130
+ export function loadFromSource<P>(
2131
+ source: string | GraphSource<P>,
2132
+ params: P,
2133
+ options?: LoadFromSourceOptions,
2134
+ ): Promise<ImportGraphResult>;
2135
+ /**
2136
+ * The implementation of both loadFromSource() signatures.
2137
+ * @param source - the source id or the source
2138
+ * @param params - its params
2139
+ * @param options - the options
2140
+ * @returns the graph, the format and the report
2141
+ */
2142
+ export function loadFromSource(
2143
+ source: string | GraphSource<never>,
2144
+ params: unknown,
2145
+ options?: LoadFromSourceOptions,
2146
+ ): Promise<ImportGraphResult> {
2147
+ return registry.loadFromSource(source, params as Readonly<Record<string, unknown>>, options);
2148
+ }
2149
+
2150
+ /**
2151
+ * Load from a network source into a sink you own (a GraphBuilder you keep filling). Experimental.
2152
+ * @param source - the source id or the source
2153
+ * @param params - its params
2154
+ * @param sink - where to write
2155
+ * @param options - the options of loadFromSource()
2156
+ * @returns the report
2157
+ * @category Network sources
2158
+ */
2159
+ export function importFromSource<P>(
2160
+ source: string | GraphSource<P>,
2161
+ params: P,
2162
+ sink: GraphSink,
2163
+ options?: LoadFromSourceOptions,
2164
+ ): Promise<ImportReport> {
2165
+ return registry.importFromSource(source, params as Readonly<Record<string, unknown>>, sink, options);
2166
+ }
2167
+
2168
+ /**
2169
+ * Fetch the neighborhood of some nodes from a source that can expand: a graph of only what was
2170
+ * fetched (the seeds, their neighbors and the edges between them), to merge into the graph you
2171
+ * hold. A source without `expand` rejects with E_SOURCE_UNSUPPORTED. Experimental.
2172
+ * @param source - the source id or the source
2173
+ * @param request - the params, seeds, depth, direction and limit
2174
+ * @param options - the options of loadFromSource()
2175
+ * @returns the fetched part, the format and the report
2176
+ * @category Network sources
2177
+ */
2178
+ export function expandFromSource<P>(
2179
+ source: string | GraphSource<P>,
2180
+ request: ExpandRequest<P>,
2181
+ options?: LoadFromSourceOptions,
2182
+ ): Promise<ImportGraphResult> {
2183
+ return registry.expandFromSource(source, request as ExpandRequest<Readonly<Record<string, unknown>>>, options);
2184
+ }
2185
+
2186
+ /**
2187
+ * Check a source's params and credential without loading the graph. Experimental.
2188
+ * @param source - the source id or the source
2189
+ * @param params - its params
2190
+ * @param options - the options of loadFromSource()
2191
+ * @returns what the service said
2192
+ * @category Network sources
2193
+ */
2194
+ export function probeSource<P>(
2195
+ source: string | GraphSource<P>,
2196
+ params: P,
2197
+ options?: LoadFromSourceOptions,
2198
+ ): Promise<SourceProbe> {
2199
+ return registry.probeSource(source, params as Readonly<Record<string, unknown>>, options);
2200
+ }
2201
+
2202
+ /**
2203
+ * Search what a source holds (NDEx networks, ...). Experimental.
2204
+ * @param source - the source id or the source
2205
+ * @param query - params narrowing the search, the search text, cursor and page size
2206
+ * @param options - the options of loadFromSource()
2207
+ * @returns one page of results
2208
+ * @category Network sources
2209
+ */
2210
+ export function listFromSource<P>(
2211
+ source: string | GraphSource<P>,
2212
+ query: SourceListQuery<P>,
2213
+ options?: LoadFromSourceOptions,
2214
+ ): Promise<SourceListing> {
2215
+ return registry.listFromSource(source, query, options);
2216
+ }
2217
+
2218
+ /**
2219
+ * Tell whether data loaded from a source earlier changed. Experimental.
2220
+ * @param source - the source id or the source
2221
+ * @param params - the params it was loaded with
2222
+ * @param seen - the validators recorded then (`report.source.validators`)
2223
+ * @param options - the options of loadFromSource()
2224
+ * @returns current, changed or unverifiable
2225
+ * @category Network sources
2226
+ */
2227
+ export function validateSource<P>(
2228
+ source: string | GraphSource<P>,
2229
+ params: P,
2230
+ seen: SourceValidators,
2231
+ options?: LoadFromSourceOptions,
2232
+ ): Promise<SourceFreshness> {
2233
+ return registry.validateSource(source, params as Readonly<Record<string, unknown>>, seen, options);
2234
+ }
2235
+
2236
+ /**
2237
+ * Register a network source in the default registry, so loadFromSource() and graphty-element
2238
+ * find it by id. Throws an ImportError with E_SOURCE_INVALID for a malformed source or an id
2239
+ * already taken. Experimental.
2240
+ * @param source - the source, or a lazy source that loads its code on first use
2241
+ * @category Network sources
2242
+ */
2243
+ export function registerSource<P>(source: GraphSource<P> | LazySource): void {
2244
+ registry.registerSource(source);
2245
+ }
2246
+
2247
+ /**
2248
+ * Every source in the default registry with its descriptor (what a form asks for), loading no
2249
+ * source code. Experimental.
2250
+ * @returns one entry per source: id, descriptor, whether its code is loaded
2251
+ * @category Network sources
2252
+ */
2253
+ export function listSources(): readonly SourceInfo[] {
2254
+ return registry.listSources();
2255
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * The built-in sources, registered as lazy sources: their descriptors are here, their code loads
3
+ * on first use through a dynamic import of the source's subpath.
4
+ */
5
+
6
+ import { CYPHER_DESCRIPTOR, NEO4J_DESCRIPTOR, NEPTUNE_DESCRIPTOR } from "./cypher/descriptor.js";
7
+ import {
8
+ CYPHER_SOURCE_ID,
9
+ NDEX_SOURCE_ID,
10
+ NEO4J_SOURCE_ID,
11
+ NEPTUNE_SOURCE_ID,
12
+ OPENALEX_SOURCE_ID,
13
+ REST_SOURCE_ID,
14
+ } from "./ids.js";
15
+ import { NDEX_DESCRIPTOR } from "./ndex/descriptor.js";
16
+ import { OPENALEX_DESCRIPTOR, REST_DESCRIPTOR } from "./rest/descriptor.js";
17
+ import { type LazySource } from "./types.js";
18
+
19
+ /**
20
+ * The six built-in sources, each loading its subpath on first use.
21
+ * @returns the lazy sources, in catalog order
22
+ */
23
+ export function builtinSources(): readonly LazySource[] {
24
+ return [
25
+ {
26
+ id: NDEX_SOURCE_ID,
27
+ descriptor: NDEX_DESCRIPTOR,
28
+ load: async () => (await import("./ndex/index.js")).ndexSource,
29
+ },
30
+ {
31
+ id: CYPHER_SOURCE_ID,
32
+ descriptor: CYPHER_DESCRIPTOR,
33
+ load: async () => (await import("./cypher/index.js")).cypherSource,
34
+ },
35
+ {
36
+ id: NEO4J_SOURCE_ID,
37
+ descriptor: NEO4J_DESCRIPTOR,
38
+ load: async () => (await import("./cypher/index.js")).neo4jSource,
39
+ },
40
+ {
41
+ id: NEPTUNE_SOURCE_ID,
42
+ descriptor: NEPTUNE_DESCRIPTOR,
43
+ load: async () => (await import("./cypher/index.js")).neptuneSource,
44
+ },
45
+ {
46
+ id: REST_SOURCE_ID,
47
+ descriptor: REST_DESCRIPTOR,
48
+ load: async () => (await import("./rest/index.js")).restMappingSource,
49
+ },
50
+ {
51
+ id: OPENALEX_SOURCE_ID,
52
+ descriptor: OPENALEX_DESCRIPTOR,
53
+ load: async () => (await import("./rest/index.js")).openalexSource,
54
+ },
55
+ ];
56
+ }
@@ -0,0 +1,235 @@
1
+ /**
2
+ * The issue codes of network sources (design section 8). Every failure a source or the framework
3
+ * raises is an ImportIssue with one of these codes and machine-readable `params`; graph-io writes
4
+ * no reader-facing sentence. The English `message` is for logs.
5
+ *
6
+ * Experimental, with the source contract.
7
+ */
8
+
9
+ import { FETCH_CODE } from "../common/codes.js";
10
+
11
+ /**
12
+ * Every issue code a network source can report, keyed by itself, so `SOURCE_ISSUE.E_SOURCE_AUTH`
13
+ * autocompletes and `keyof typeof SOURCE_ISSUE` is the code union. Experimental.
14
+ * @category Network sources
15
+ */
16
+ export const SOURCE_ISSUE = Object.freeze({
17
+ /** Another HTTP status, or an unreachable host (Node). Params: `url`, `status`. */
18
+ E_FETCH: FETCH_CODE,
19
+ /** The browser refused the request and hid why. Params: `url`, `cause`. */
20
+ E_SOURCE_BLOCKED: "E_SOURCE_BLOCKED",
21
+ /** 401 or a database login failure. Params: `origin`, `status`, `scheme`, `serverCode`. */
22
+ E_SOURCE_AUTH: "E_SOURCE_AUTH",
23
+ /** 403 or a database authorization failure. Params: `status`, `serverCode`. */
24
+ E_SOURCE_FORBIDDEN: "E_SOURCE_FORBIDDEN",
25
+ /** The named item does not exist. Params: `what`, `value`. */
26
+ E_SOURCE_NOT_FOUND: "E_SOURCE_NOT_FOUND",
27
+ /** 429 after the retries. Params: `retryAfterMs`. */
28
+ E_SOURCE_QUOTA: "E_SOURCE_QUOTA",
29
+ /** `timeoutMs` passed, or the server's own timeout. Params: `timeoutMs`, `serverSide`. */
30
+ E_SOURCE_TIMEOUT: "E_SOURCE_TIMEOUT",
31
+ /** The server rejected the query. Params: `serverCode`, `line`, `column`, `serverMessage`. */
32
+ E_SOURCE_QUERY: "E_SOURCE_QUERY",
33
+ /** The result holds no node, relationship or path. Params: `columns`. */
34
+ E_SOURCE_NOT_A_GRAPH: "E_SOURCE_NOT_A_GRAPH",
35
+ /** A response body of the wrong shape. Params: `expected`, `contentType`. */
36
+ E_SOURCE_RESPONSE: "E_SOURCE_RESPONSE",
37
+ /** A redirect, or a changed origin, while a credential was attached. Params: `from`, `to`. */
38
+ E_SOURCE_REDIRECT: "E_SOURCE_REDIRECT",
39
+ /** The source cannot run in this runtime. Params: `runtime`, `reason`, `package`. */
40
+ E_SOURCE_RUNTIME: "E_SOURCE_RUNTIME",
41
+ /** A parameter or option is invalid. Params: `name`, `reason`. */
42
+ E_SOURCE_PARAM: "E_SOURCE_PARAM",
43
+ /** A cap was reached under `onLimit: "error"`. Params: `limit`, `value`. */
44
+ E_SOURCE_LIMIT: "E_SOURCE_LIMIT",
45
+ /** No source has that id. Params: `id`, `known`. */
46
+ E_SOURCE_UNKNOWN: "E_SOURCE_UNKNOWN",
47
+ /** The source lacks the feature. Params: `feature`, `needs`. */
48
+ E_SOURCE_UNSUPPORTED: "E_SOURCE_UNSUPPORTED",
49
+ /** A malformed source at registration. Params: `id`, `reason`. */
50
+ E_SOURCE_INVALID: "E_SOURCE_INVALID",
51
+ /** A cap stopped the load; what came first is kept. Params: `limit`, `value`. */
52
+ W_SOURCE_LIMIT: "W_SOURCE_LIMIT",
53
+ /** A later page needs a credential; the pages before it are kept. Params: `origin`, `status`. */
54
+ W_SOURCE_AUTH: "W_SOURCE_AUTH",
55
+ /** The request succeeded after retries. Params: `attempts`, `statuses`. */
56
+ W_SOURCE_RETRIED: "W_SOURCE_RETRIED",
57
+ /** A server value with no dtype. Params: `type`, `column`, `as`. */
58
+ W_SOURCE_VALUE: "W_SOURCE_VALUE",
59
+ } as const);
60
+
61
+ /**
62
+ * A network source issue code. Experimental.
63
+ * @category Network sources
64
+ */
65
+ export type SourceIssueCode = keyof typeof SOURCE_ISSUE;
66
+
67
+ /**
68
+ * Why `E_SOURCE_BLOCKED` was raised, as far as a page can tell. Open: handle unknown values.
69
+ * @category Network sources
70
+ */
71
+ export type SourceBlockedCause = "cors" | "unreachable" | "local-network" | "unknown" | (string & {}); // NOSONAR(S4335): open string union, keeps the known names autocompleting
72
+
73
+ /**
74
+ * The `params` of each source issue code. Every URL is origin and path only. Experimental.
75
+ * @category Network sources
76
+ */
77
+ export interface SourceIssueParams {
78
+ /** Another status, or an unreachable host. */
79
+ readonly E_FETCH: {
80
+ /** The address, origin and path only. */
81
+ readonly url: string;
82
+ /** The HTTP status, or null when there was none. */
83
+ readonly status: number | null;
84
+ };
85
+ /** Refused by the browser. */
86
+ readonly E_SOURCE_BLOCKED: {
87
+ /** The address, origin and path only. */
88
+ readonly url: string;
89
+ /** Why, as far as the page can tell. */
90
+ readonly cause: SourceBlockedCause;
91
+ };
92
+ /** A credential is needed or was refused. */
93
+ readonly E_SOURCE_AUTH: {
94
+ /** The origin that asked for a credential. */
95
+ readonly origin: string;
96
+ /** The HTTP status, or null when there was none. */
97
+ readonly status: number | null;
98
+ /** The authentication scheme the server named, or null. */
99
+ readonly scheme: string | null;
100
+ /** The service's own code, passed through, or null. */
101
+ readonly serverCode: string | null;
102
+ /** Set by graphty-element when the credential came from its store. */
103
+ readonly stored?: boolean;
104
+ };
105
+ /** Not allowed. */
106
+ readonly E_SOURCE_FORBIDDEN: {
107
+ /** The HTTP status, or null when there was none. */
108
+ readonly status: number | null;
109
+ /** The service's own code, passed through, or null. */
110
+ readonly serverCode: string | null;
111
+ };
112
+ /** No such item. */
113
+ readonly E_SOURCE_NOT_FOUND: {
114
+ /** What was looked up (`url`, `network`, `node`). */
115
+ readonly what: string;
116
+ /** The value that reached the cap, or what was looked up. */
117
+ readonly value: string;
118
+ };
119
+ /** Out of quota. */
120
+ readonly E_SOURCE_QUOTA: {
121
+ /** How long the service asked to wait, when readable. */
122
+ readonly retryAfterMs: number | null;
123
+ };
124
+ /** Took too long. */
125
+ readonly E_SOURCE_TIMEOUT: {
126
+ /** The time limit, or null for the server's own. */
127
+ readonly timeoutMs: number | null;
128
+ /** Whether the server timed the query out. */
129
+ readonly serverSide: boolean;
130
+ };
131
+ /** The query was refused. */
132
+ readonly E_SOURCE_QUERY: {
133
+ /** The service's own code, passed through, or null. */
134
+ readonly serverCode: string | null;
135
+ /** The query line the server named, or null. */
136
+ readonly line: number | null;
137
+ /** The query column the server named, or null. */
138
+ readonly column: number | null;
139
+ /** The server's message from a JSON 4xx body, at most 500 characters, or null. */
140
+ readonly serverMessage: string | null;
141
+ };
142
+ /** Scalars only. */
143
+ readonly E_SOURCE_NOT_A_GRAPH: {
144
+ /** The result's column names. */
145
+ readonly columns: readonly string[];
146
+ };
147
+ /** Wrong body. */
148
+ readonly E_SOURCE_RESPONSE: {
149
+ /** What shape was expected (`json`, `graph-file`, `link-header`). */
150
+ readonly expected: string;
151
+ /** The response's Content-Type, or null. */
152
+ readonly contentType: string | null;
153
+ };
154
+ /** A redirect with a credential; `to` is null in a browser, which hides it. */
155
+ readonly E_SOURCE_REDIRECT: {
156
+ /** Where the request was going, origin and path. */
157
+ readonly from: string;
158
+ /** Where it was sent instead, or null when the browser hides it. */
159
+ readonly to: string | null;
160
+ };
161
+ /** Cannot run here. */
162
+ readonly E_SOURCE_RUNTIME: {
163
+ /** The runtime it ran in. */
164
+ readonly runtime: string;
165
+ /** Why, as a code. */
166
+ readonly reason: string;
167
+ /** The optional package that is missing. */
168
+ readonly package?: string;
169
+ };
170
+ /** A bad parameter or option. */
171
+ readonly E_SOURCE_PARAM: {
172
+ /** The parameter or option's name. */
173
+ readonly name: string;
174
+ /** Why, as a code. */
175
+ readonly reason: string;
176
+ };
177
+ /** A cap under onLimit "error". */
178
+ readonly E_SOURCE_LIMIT: {
179
+ /** The cap's option name (`maxNodes`, `maxBytes`, ...). */
180
+ readonly limit: string;
181
+ /** The value that reached the cap, or what was looked up. */
182
+ readonly value: number;
183
+ };
184
+ /** No such source. */
185
+ readonly E_SOURCE_UNKNOWN: {
186
+ /** The source id. */
187
+ readonly id: string;
188
+ /** The ids that are registered. */
189
+ readonly known: readonly string[];
190
+ };
191
+ /** The source lacks the feature. */
192
+ readonly E_SOURCE_UNSUPPORTED: {
193
+ /** The feature asked for. */
194
+ readonly feature: string;
195
+ /** What it needs, when known. */
196
+ readonly needs?: string;
197
+ };
198
+ /** A malformed source. */
199
+ readonly E_SOURCE_INVALID: {
200
+ /** The source id. */
201
+ readonly id: string;
202
+ /** Why, as a code. */
203
+ readonly reason: string;
204
+ };
205
+ /** A cap stopped the load. */
206
+ readonly W_SOURCE_LIMIT: {
207
+ /** The cap's option name (`maxNodes`, `maxBytes`, ...). */
208
+ readonly limit: string;
209
+ /** The value that reached the cap, or what was looked up. */
210
+ readonly value: number;
211
+ };
212
+ /** A later page needs a credential. */
213
+ readonly W_SOURCE_AUTH: {
214
+ /** The origin that asked for a credential. */
215
+ readonly origin: string;
216
+ /** The HTTP status, or null when there was none. */
217
+ readonly status: number | null;
218
+ };
219
+ /** Retried. */
220
+ readonly W_SOURCE_RETRIED: {
221
+ /** How many attempts were made. */
222
+ readonly attempts: number;
223
+ /** The status of each failed attempt, null for a network failure. */
224
+ readonly statuses: readonly (number | null)[];
225
+ };
226
+ /** A value with no dtype. */
227
+ readonly W_SOURCE_VALUE: {
228
+ /** The server's value type. */
229
+ readonly type: string;
230
+ /** The column (of the query, or of the graph) involved. */
231
+ readonly column: string;
232
+ /** What the value was kept as. */
233
+ readonly as: string;
234
+ };
235
+ }