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