@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
@@ -0,0 +1,362 @@
1
+ /**
2
+ * Checking a REST mapping before it runs (design section 13.2). A mapping is JSON data, typed into
3
+ * a form or read from a project file, so every field is checked and every problem is a coded
4
+ * issue naming where it is.
5
+ */
6
+ import { parseSelector } from "./selectors.js";
7
+ import { templateNames } from "./templates.js";
8
+ /**
9
+ * Whether a value is a plain object.
10
+ * @param v - the value
11
+ * @returns true for an object that is not an array
12
+ */
13
+ function isObject(v) {
14
+ return typeof v === "object" && v !== null && !Array.isArray(v);
15
+ }
16
+ /**
17
+ * Check a selector field.
18
+ * @param value - the field
19
+ * @param at - where it is
20
+ * @param push - the accumulator
21
+ * @param required - whether it must be present
22
+ * @param index - whether `#` (the record's position) is allowed
23
+ */
24
+ function checkSelector(value, at, push, required, index = false) {
25
+ if (value === undefined && !required) {
26
+ return;
27
+ }
28
+ if (typeof value !== "string") {
29
+ push("missing", at);
30
+ }
31
+ else if (!(index && value === "#") && parseSelector(value) === null) {
32
+ push("selector", at);
33
+ }
34
+ }
35
+ /**
36
+ * Check a template field.
37
+ * @param value - the field
38
+ * @param at - where it is
39
+ * @param push - the accumulator
40
+ */
41
+ function checkTemplate(value, at, push) {
42
+ if (typeof value !== "string") {
43
+ push("missing", at);
44
+ }
45
+ else if (templateNames(value) === null) {
46
+ push("template", at);
47
+ }
48
+ }
49
+ /**
50
+ * Check a request's query templates.
51
+ * @param query - the query field
52
+ * @param at - where the request is
53
+ * @param push - the accumulator
54
+ */
55
+ function checkQuery(query, at, push) {
56
+ if (query === undefined) {
57
+ return;
58
+ }
59
+ if (!isObject(query)) {
60
+ push("missing", `${at}.query`);
61
+ return;
62
+ }
63
+ for (const [k, v] of Object.entries(query)) {
64
+ checkTemplate(v, `${at}.query.${k}`, push);
65
+ }
66
+ }
67
+ /**
68
+ * Whether a batch field is well formed: a positive integer max and a string join.
69
+ * @param batch - the batch field
70
+ * @returns true when it is
71
+ */
72
+ function isBatch(batch) {
73
+ return isObject(batch) && Number.isInteger(batch.max) && batch.max >= 1 && typeof batch.join === "string";
74
+ }
75
+ /**
76
+ * Check one request.
77
+ * @param r - the request
78
+ * @param at - where it is
79
+ * @param entities - the mapping's entity names
80
+ * @param push - the accumulator
81
+ */
82
+ function checkRequest(r, at, entities, push) {
83
+ if (!isObject(r)) {
84
+ push("missing", at);
85
+ return;
86
+ }
87
+ if (r.method !== undefined && r.method !== "GET" && r.method !== "POST") {
88
+ push("missing", `${at}.method`);
89
+ }
90
+ checkTemplate(r.path, `${at}.path`, push);
91
+ if (typeof r.path === "string" && !r.path.startsWith("/")) {
92
+ push("template", `${at}.path`);
93
+ }
94
+ checkQuery(r.query, at, push);
95
+ checkSelector(r.records, `${at}.records`, push, true);
96
+ if (typeof r.entity !== "string") {
97
+ push("missing", `${at}.entity`);
98
+ }
99
+ else if (!entities.has(r.entity)) {
100
+ push("unknown-entity", `${at}.entity`);
101
+ }
102
+ if (r.batch !== undefined && !isBatch(r.batch)) {
103
+ push("batch", `${at}.batch`);
104
+ }
105
+ if (r.paging !== undefined) {
106
+ checkPaging(r.paging, `${at}.paging`, push);
107
+ }
108
+ }
109
+ /**
110
+ * Check a paging field.
111
+ * @param p - the paging
112
+ * @param at - where it is
113
+ * @param push - the accumulator
114
+ */
115
+ function checkPaging(p, at, push) {
116
+ const paging = p;
117
+ if (!isObject(paging)) {
118
+ push("paging", at);
119
+ return;
120
+ }
121
+ switch (paging.style) {
122
+ case "cursor":
123
+ if (typeof paging.param !== "string" || typeof paging.first !== "string") {
124
+ push("paging", at);
125
+ }
126
+ checkSelector(paging.next, `${at}.next`, push, true);
127
+ break;
128
+ case "offset": {
129
+ const size = paging.size;
130
+ const ok = typeof paging.param === "string" &&
131
+ isObject(size) &&
132
+ typeof size.param === "string" &&
133
+ Number.isInteger(size.value) &&
134
+ size.value > 0 &&
135
+ (paging.unit === undefined || paging.unit === "items" || paging.unit === "pages") &&
136
+ (paging.base === undefined || paging.base === 0 || paging.base === 1);
137
+ if (!ok) {
138
+ push("paging", at);
139
+ }
140
+ break;
141
+ }
142
+ case "link-header":
143
+ if (paging.rel !== undefined && typeof paging.rel !== "string") {
144
+ push("paging", at);
145
+ }
146
+ break;
147
+ case "next-url":
148
+ checkSelector(paging.next, `${at}.next`, push, true);
149
+ break;
150
+ default:
151
+ push("paging", `${at}.style`);
152
+ }
153
+ }
154
+ /**
155
+ * Check one edge rule.
156
+ * @param rule - the rule
157
+ * @param at - where it is
158
+ * @param entities - the mapping's entity names
159
+ * @param push - the accumulator
160
+ */
161
+ function checkEdgeRule(rule, at, entities, push) {
162
+ if (!isObject(rule)) {
163
+ push("missing", at);
164
+ return;
165
+ }
166
+ const r = rule;
167
+ if (typeof r.type !== "string") {
168
+ push("missing", `${at}.type`);
169
+ }
170
+ checkSelector(r.each, `${at}.each`, push, false);
171
+ if ("pairs" in r) {
172
+ checkSelector(r.pairs, `${at}.pairs`, push, true);
173
+ }
174
+ else {
175
+ checkSelector(r.to, `${at}.to`, push, true);
176
+ checkSelector(r.from, `${at}.from`, push, false);
177
+ if (isObject(r.fields)) {
178
+ for (const [k, v] of Object.entries(r.fields)) {
179
+ checkSelector(v, `${at}.fields.${k}`, push, true);
180
+ }
181
+ }
182
+ else if (r.fields !== undefined) {
183
+ push("missing", `${at}.fields`);
184
+ }
185
+ }
186
+ if (r.entity !== undefined && (typeof r.entity !== "string" || !entities.has(r.entity))) {
187
+ push("unknown-entity", `${at}.entity`);
188
+ }
189
+ }
190
+ /**
191
+ * Check one entity.
192
+ * @param e - the entity
193
+ * @param at - where it is
194
+ * @param entities - the mapping's entity names
195
+ * @param push - the accumulator
196
+ */
197
+ function checkEntity(e, at, entities, push) {
198
+ if (!isObject(e)) {
199
+ push("missing", at);
200
+ return;
201
+ }
202
+ checkSelector(e.id, `${at}.id`, push, true, true);
203
+ if (e.stripPrefix !== undefined && typeof e.stripPrefix !== "string") {
204
+ push("missing", `${at}.stripPrefix`);
205
+ }
206
+ if (e.label !== undefined && typeof e.label !== "string") {
207
+ push("missing", `${at}.label`);
208
+ }
209
+ if (e.node !== undefined && e.node) {
210
+ push("missing", `${at}.node`);
211
+ }
212
+ if (isObject(e.fields)) {
213
+ for (const [k, v] of Object.entries(e.fields)) {
214
+ checkSelector(v, `${at}.fields.${k}`, push, true, true);
215
+ }
216
+ }
217
+ else if (e.fields !== undefined) {
218
+ push("missing", `${at}.fields`);
219
+ }
220
+ if (Array.isArray(e.edges)) {
221
+ e.edges.forEach((rule, i) => {
222
+ checkEdgeRule(rule, `${at}.edges.${String(i)}`, entities, push);
223
+ });
224
+ }
225
+ else if (e.edges !== undefined) {
226
+ push("missing", `${at}.edges`);
227
+ }
228
+ if (Array.isArray(e.embedded)) {
229
+ e.embedded.forEach((em, i) => {
230
+ const where = `${at}.embedded.${String(i)}`;
231
+ if (!isObject(em)) {
232
+ push("missing", where);
233
+ return;
234
+ }
235
+ checkSelector(em.at, `${where}.at`, push, true);
236
+ if (typeof em.entity !== "string" || !entities.has(em.entity)) {
237
+ push("unknown-entity", `${where}.entity`);
238
+ }
239
+ });
240
+ }
241
+ else if (e.embedded !== undefined) {
242
+ push("missing", `${at}.embedded`);
243
+ }
244
+ }
245
+ /**
246
+ * Check the mapping's top-level names of requests.
247
+ * @param m - the mapping
248
+ * @param requests - its request names
249
+ * @param push - the accumulator
250
+ */
251
+ function checkRequestNames(m, requests, push) {
252
+ const names = [
253
+ ["load", m.load],
254
+ ["hydrate", m.hydrate],
255
+ ["seed", m.seed],
256
+ ];
257
+ if (isObject(m.expand)) {
258
+ names.push(["expand.in", m.expand.in], ["expand.out", m.expand.out]);
259
+ }
260
+ else {
261
+ names.push(["expand", m.expand]);
262
+ }
263
+ for (const [at, name] of names) {
264
+ if (name === undefined && at !== "load") {
265
+ continue;
266
+ }
267
+ if (typeof name !== "string") {
268
+ push("missing", at);
269
+ }
270
+ else if (!requests.has(name)) {
271
+ push("unknown-request", at);
272
+ }
273
+ }
274
+ }
275
+ /**
276
+ * Check the endpoint.
277
+ * @param endpoint - the field
278
+ * @param push - the accumulator
279
+ */
280
+ function checkEndpoint(endpoint, push) {
281
+ let url = null;
282
+ try {
283
+ url = new URL(typeof endpoint === "string" ? endpoint : "");
284
+ }
285
+ catch {
286
+ // not a URL
287
+ }
288
+ if (url === null ||
289
+ (url.protocol !== "https:" && url.protocol !== "http:") ||
290
+ url.username !== "" ||
291
+ url.password !== "" ||
292
+ url.search !== "" ||
293
+ url.hash !== "") {
294
+ push("endpoint", "endpoint");
295
+ }
296
+ }
297
+ /**
298
+ * Check a REST mapping without running it: the version, the endpoint, every request (templates,
299
+ * selectors, paging, batching) and entity (selectors, edge rules, embedded records), and that every
300
+ * name it uses exists. Experimental.
301
+ * @param mapping - the mapping, as data from anywhere
302
+ * @returns every problem found; empty when the mapping can run
303
+ * @category Network sources
304
+ */
305
+ export function checkRestMapping(mapping) {
306
+ const issues = [];
307
+ const push = (code, at) => {
308
+ issues.push(Object.freeze({ code, at }));
309
+ };
310
+ if (!isObject(mapping)) {
311
+ push("missing", "");
312
+ return issues;
313
+ }
314
+ const m = mapping;
315
+ if (m.version !== 1) {
316
+ push("version", "version");
317
+ }
318
+ checkEndpoint(m.endpoint, push);
319
+ const requests = isObject(m.requests) ? m.requests : {};
320
+ const entities = isObject(m.entities) ? m.entities : {};
321
+ if (!isObject(m.requests)) {
322
+ push("missing", "requests");
323
+ }
324
+ if (!isObject(m.entities)) {
325
+ push("missing", "entities");
326
+ }
327
+ const entityNames = new Set(Object.keys(entities));
328
+ for (const [name, r] of Object.entries(requests)) {
329
+ checkRequest(r, `requests.${name}`, entityNames, push);
330
+ }
331
+ for (const [name, e] of Object.entries(entities)) {
332
+ checkEntity(e, `entities.${name}`, entityNames, push);
333
+ }
334
+ checkRequestNames(m, new Set(Object.keys(requests)), push);
335
+ checkLimits(m, push);
336
+ checkSelector(m.modified, "modified", push, false);
337
+ if (m.directed !== undefined && typeof m.directed !== "boolean") {
338
+ push("missing", "directed");
339
+ }
340
+ return issues;
341
+ }
342
+ /**
343
+ * Check the rate limit and the budget headers.
344
+ * @param m - the mapping
345
+ * @param push - the accumulator
346
+ */
347
+ function checkLimits(m, push) {
348
+ for (const [at, value] of [
349
+ ["rateLimit.requests", m.rateLimit?.requests],
350
+ ["rateLimit.perMs", m.rateLimit?.perMs],
351
+ ]) {
352
+ if (m.rateLimit !== undefined && !(typeof value === "number" && value > 0)) {
353
+ push("number", at);
354
+ }
355
+ }
356
+ if (m.budgetHeaders !== undefined &&
357
+ (typeof m.budgetHeaders.remaining !== "string" ||
358
+ (m.budgetHeaders.reset !== undefined && typeof m.budgetHeaders.reset !== "string"))) {
359
+ push("missing", "budgetHeaders");
360
+ }
361
+ }
362
+ //# sourceMappingURL=mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../../../src/sources/rest/mapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The `openalex` preset of the REST mapping (design section 13.3): OpenAlex's citation graph
3
+ * around a work, or its co-authorship graph around an author, as a mapping the generic engine runs.
4
+ * The seed's own record comes first; citing works page by cursor; referenced works are stubs until
5
+ * hydrated or expanded. Freshness is the newest `updated_date`.
6
+ */
7
+ import { type GraphSource } from "../types.js";
8
+ import { type OpenAlexParams, type RestMapping } from "./params.js";
9
+ /**
10
+ * OpenAlex's citation graph as a mapping: the seed work (`{ids}`), the works citing it page by page,
11
+ * each work's references as `cites` edges, and, when `{select}` asks for `authorships` and
12
+ * `topics`, the authors, their institutions and the topics as nodes. Fill `{ids}` with work ids
13
+ * and `{select}` with the fields to read. The `openalex` source chooses both from its params and
14
+ * leaves out the rules for what is not included. Experimental.
15
+ * @category Network sources
16
+ */
17
+ export declare const OPENALEX_MAPPING: RestMapping;
18
+ /**
19
+ * The OpenAlex preset (https://openalex.org): `work` (the citation graph around a work, default)
20
+ * or `author` (the works they wrote), `graph: "coauthorship"` for authors joined by shared works,
21
+ * and `include` (`"authors"`, `"institutions"`, `"topics"`) for more node kinds. Without a key,
22
+ * the first page loads and a later one warns W_SOURCE_AUTH with `report.source.next`; pass
23
+ * `credentials.apiKey({ query: "api_key" }, key)` and continue with the cursor. Experimental.
24
+ * @category Network sources
25
+ */
26
+ export declare const openalexSource: GraphSource<OpenAlexParams>;
27
+ //# sourceMappingURL=openalex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openalex.d.ts","sourceRoot":"","sources":["../../../../src/sources/rest/openalex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,KAAK,WAAW,EAAsB,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,KAAK,cAAc,EAAmB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AA8BrF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAwD7B,CAAC;AA8JH;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,cAAc,CAerD,CAAC"}
@@ -0,0 +1,269 @@
1
+ /**
2
+ * The `openalex` preset of the REST mapping (design section 13.3): OpenAlex's citation graph
3
+ * around a work, or its co-authorship graph around an author, as a mapping the generic engine runs.
4
+ * The seed's own record comes first; citing works page by cursor; referenced works are stubs until
5
+ * hydrated or expanded. Freshness is the newest `updated_date`.
6
+ */
7
+ import { defineSource } from "../define.js";
8
+ import { failOn } from "../fail.js";
9
+ import { OPENALEX_SOURCE_ID } from "../ids.js";
10
+ import { OPENALEX_DESCRIPTOR } from "./descriptor.js";
11
+ import { restMethods } from "./source.js";
12
+ /** OpenAlex ids are URLs under this prefix. */
13
+ const PREFIX = "https://openalex.org/";
14
+ /** The work fields every citation load selects. */
15
+ const WORK_FIELDS = "id,display_name,publication_year,cited_by_count,updated_date,referenced_works";
16
+ /**
17
+ * A list request over works, `{ids}` batched 50 at a time and joined by `|`.
18
+ * @param filter - the filter template
19
+ * @param perPage - the page size
20
+ * @param paged - whether it pages by cursor
21
+ * @returns the request
22
+ */
23
+ function works(filter, perPage, paged) {
24
+ return {
25
+ path: "/works",
26
+ query: { filter, "per-page": perPage, select: "{select}" },
27
+ batch: { max: 50, join: "|" },
28
+ records: "results",
29
+ entity: "work",
30
+ ...(paged ? { paging: { style: "cursor", param: "cursor", first: "*", next: "meta.next_cursor" } } : {}),
31
+ };
32
+ }
33
+ /** An entity known by its OpenAlex id and display name. */
34
+ const named = { id: "id", stripPrefix: PREFIX, fields: { name: "display_name" } };
35
+ /**
36
+ * OpenAlex's citation graph as a mapping: the seed work (`{ids}`), the works citing it page by page,
37
+ * each work's references as `cites` edges, and, when `{select}` asks for `authorships` and
38
+ * `topics`, the authors, their institutions and the topics as nodes. Fill `{ids}` with work ids
39
+ * and `{select}` with the fields to read. The `openalex` source chooses both from its params and
40
+ * leaves out the rules for what is not included. Experimental.
41
+ * @category Network sources
42
+ */
43
+ export const OPENALEX_MAPPING = Object.freeze({
44
+ version: 1,
45
+ endpoint: "https://api.openalex.org",
46
+ load: "citing",
47
+ seed: "by-id",
48
+ expand: { in: "citing", out: "by-id" },
49
+ hydrate: "by-id",
50
+ directed: true,
51
+ modified: "updated_date",
52
+ auth: { kind: "api-key", query: "api_key" },
53
+ rateLimit: { requests: 10, perMs: 1000 },
54
+ budgetHeaders: { remaining: "x-ratelimit-remaining", reset: "x-ratelimit-reset" },
55
+ requests: {
56
+ citing: works("cites:{ids}", "200", true),
57
+ "by-id": works("openalex:{ids}", "50", false),
58
+ authored: works("authorships.author.id:{ids}", "200", true),
59
+ "authors-by-id": {
60
+ path: "/authors",
61
+ query: { filter: "openalex:{ids}", "per-page": "50", select: "id,display_name" },
62
+ batch: { max: 50, join: "|" },
63
+ records: "results",
64
+ entity: "author",
65
+ },
66
+ },
67
+ entities: {
68
+ work: {
69
+ id: "id",
70
+ stripPrefix: PREFIX,
71
+ fields: {
72
+ title: "display_name",
73
+ year: "publication_year",
74
+ citedBy: "cited_by_count",
75
+ updated: "updated_date",
76
+ },
77
+ edges: [
78
+ { to: "referenced_works[]", type: "cites", entity: "work" },
79
+ { to: "authorships[].author.id", type: "authored_by", entity: "author" },
80
+ {
81
+ each: "authorships[]",
82
+ from: "author.id",
83
+ to: "institutions[].id",
84
+ type: "affiliated_with",
85
+ entity: "institution",
86
+ },
87
+ { to: "topics[].id", type: "has_topic", entity: "topic" },
88
+ ],
89
+ embedded: [
90
+ { at: "authorships[].author", entity: "author" },
91
+ { at: "authorships[].institutions[]", entity: "institution" },
92
+ { at: "topics[]", entity: "topic" },
93
+ ],
94
+ },
95
+ author: named,
96
+ institution: named,
97
+ topic: named,
98
+ },
99
+ });
100
+ /**
101
+ * The included kinds, from an array or a comma-separated string.
102
+ * @param include - the param
103
+ * @returns the set
104
+ */
105
+ function includes(include) {
106
+ const list = typeof include === "string" ? include.split(",") : [];
107
+ if (Array.isArray(include)) {
108
+ list.push(...include);
109
+ }
110
+ const out = new Set(list.map((v) => String(v).trim()).filter((v) => v !== ""));
111
+ if (out.has("institutions")) {
112
+ // an institution hangs off an author, so it brings its authors
113
+ out.add("authors");
114
+ }
115
+ return out;
116
+ }
117
+ /**
118
+ * The citation mapping without the rules for what is not included.
119
+ * @param include - what is included
120
+ * @returns the mapping
121
+ */
122
+ function citationMapping(include) {
123
+ const { work } = OPENALEX_MAPPING.entities;
124
+ const keepEdge = (type) => type === "cites" ||
125
+ (type === "authored_by" && include.has("authors")) ||
126
+ (type === "affiliated_with" && include.has("institutions")) ||
127
+ (type === "has_topic" && include.has("topics"));
128
+ const keepEmbedded = (entity) => include.has(`${entity}s`);
129
+ return {
130
+ ...OPENALEX_MAPPING,
131
+ entities: {
132
+ ...OPENALEX_MAPPING.entities,
133
+ work: {
134
+ ...work,
135
+ edges: work.edges?.filter((e) => keepEdge(e.type)),
136
+ embedded: work.embedded?.filter((e) => keepEmbedded(e.entity)),
137
+ },
138
+ },
139
+ };
140
+ }
141
+ /**
142
+ * The co-authorship mapping: works are containers, every two authors of one work are joined by a
143
+ * `coauthor` edge, and an author expands through the works they wrote.
144
+ * @param include - what is included
145
+ * @param seedIsWork - whether the load starts from a work
146
+ * @returns the mapping
147
+ */
148
+ function coauthorshipMapping(include, seedIsWork) {
149
+ const institutions = include.has("institutions");
150
+ return {
151
+ ...OPENALEX_MAPPING,
152
+ load: seedIsWork ? "by-id" : "authored",
153
+ seed: undefined,
154
+ expand: "authored",
155
+ hydrate: "authors-by-id",
156
+ directed: false,
157
+ entities: {
158
+ ...OPENALEX_MAPPING.entities,
159
+ work: {
160
+ id: "id",
161
+ // a rule's `from` is read with the record's own prefix
162
+ stripPrefix: PREFIX,
163
+ node: false,
164
+ edges: [
165
+ { pairs: "authorships[].author.id", type: "coauthor", entity: "author" },
166
+ ...(institutions
167
+ ? [
168
+ {
169
+ each: "authorships[]",
170
+ from: "author.id",
171
+ to: "institutions[].id",
172
+ type: "affiliated_with",
173
+ entity: "institution",
174
+ },
175
+ ]
176
+ : []),
177
+ ],
178
+ embedded: [
179
+ { at: "authorships[].author", entity: "author" },
180
+ ...(institutions ? [{ at: "authorships[].institutions[]", entity: "institution" }] : []),
181
+ ],
182
+ },
183
+ },
184
+ };
185
+ }
186
+ /**
187
+ * An OpenAlex id param: `W123` or its URL form, checked so a value cannot add a filter.
188
+ * @param value - the param
189
+ * @param name - its name
190
+ * @param letter - the id's kind letter
191
+ * @param ctx - the context
192
+ * @returns the bare id
193
+ */
194
+ function openalexId(value, name, letter, ctx) {
195
+ const text = typeof value === "string" ? value.trim().replace(PREFIX, "") : "";
196
+ if (!new RegExp(String.raw `^${letter}\d+$`, "i").test(text)) {
197
+ failOn(ctx.report, "E_SOURCE_PARAM", `${name} is not an OpenAlex id`, { name, reason: "format" });
198
+ }
199
+ return text.toUpperCase();
200
+ }
201
+ /**
202
+ * The plan of an OpenAlex call.
203
+ * @param params - the params
204
+ * @param ctx - the context
205
+ * @param purpose - what the plan is for
206
+ * @returns the mapping and values
207
+ */
208
+ function plan(params, ctx, purpose) {
209
+ const graph = params.graph ?? "citation";
210
+ const include = includes(params.include);
211
+ const hasWork = params.work !== undefined && params.work !== "";
212
+ const hasAuthor = params.author !== undefined && params.author !== "";
213
+ if (purpose !== "expand" && hasWork === hasAuthor) {
214
+ failOn(ctx.report, "E_SOURCE_PARAM", "give exactly one of work and author", {
215
+ name: "work",
216
+ reason: hasWork ? "exclusive" : "required",
217
+ });
218
+ }
219
+ let seed = "";
220
+ if (hasWork) {
221
+ seed = openalexId(params.work, "work", "W", ctx);
222
+ }
223
+ else if (hasAuthor) {
224
+ seed = openalexId(params.author, "author", "A", ctx);
225
+ }
226
+ if (graph === "coauthorship") {
227
+ return {
228
+ mapping: coauthorshipMapping(include, hasWork),
229
+ values: { ids: seed, select: purpose === "validate" ? "id,updated_date" : "id,updated_date,authorships" },
230
+ };
231
+ }
232
+ let select = WORK_FIELDS + (include.has("authors") ? ",authorships" : "") + (include.has("topics") ? ",topics" : "");
233
+ if (purpose === "validate") {
234
+ select = "id,updated_date";
235
+ }
236
+ const mapping = citationMapping(include);
237
+ return {
238
+ mapping: hasWork ? mapping : { ...mapping, load: "authored", seed: undefined },
239
+ values: { ids: seed, select },
240
+ };
241
+ }
242
+ /** OpenAlex's own ids: a kind letter and digits. */
243
+ const ANY_ID = /^[WAIT]\d+$/;
244
+ const methods = restMethods(plan, false);
245
+ /**
246
+ * The OpenAlex preset (https://openalex.org): `work` (the citation graph around a work, default)
247
+ * or `author` (the works they wrote), `graph: "coauthorship"` for authors joined by shared works,
248
+ * and `include` (`"authors"`, `"institutions"`, `"topics"`) for more node kinds. Without a key,
249
+ * the first page loads and a later one warns W_SOURCE_AUTH with `report.source.next`; pass
250
+ * `credentials.apiKey({ query: "api_key" }, key)` and continue with the cursor. Experimental.
251
+ * @category Network sources
252
+ */
253
+ export const openalexSource = defineSource({
254
+ id: OPENALEX_SOURCE_ID,
255
+ descriptor: OPENALEX_DESCRIPTOR,
256
+ ...methods,
257
+ expand(request, sink, ctx) {
258
+ for (const id of request.ids) {
259
+ if (!ANY_ID.test(String(id))) {
260
+ failOn(ctx.report, "E_SOURCE_PARAM", "an expansion seed is not an OpenAlex id", {
261
+ name: "ids",
262
+ reason: "format",
263
+ });
264
+ }
265
+ }
266
+ return methods.expand(request, sink, ctx);
267
+ },
268
+ });
269
+ //# sourceMappingURL=openalex.js.map