@graphty/graph-io 0.3.46 → 0.3.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/dist/chunks/{approximations-wWjCRzKj.js → approximations-C2riR4NT.js} +2 -2
  2. package/dist/chunks/{approximations-wWjCRzKj.js.map → approximations-C2riR4NT.js.map} +1 -1
  3. package/dist/chunks/{block-DiGq58c3.js → block-Cu22ewuS.js} +92 -21
  4. package/dist/chunks/block-Cu22ewuS.js.map +1 -0
  5. package/dist/chunks/{choose--jM0yYCo.js → choose-Cdx6Enl2.js} +3 -3
  6. package/dist/chunks/{choose--jM0yYCo.js.map → choose-Cdx6Enl2.js.map} +1 -1
  7. package/dist/chunks/codes-CV_Bhcyi.js +153 -0
  8. package/dist/chunks/codes-CV_Bhcyi.js.map +1 -0
  9. package/dist/chunks/{constants-BKwqelYD.js → constants-D0LqcsLJ.js} +2 -2
  10. package/dist/chunks/{constants-BKwqelYD.js.map → constants-D0LqcsLJ.js.map} +1 -1
  11. package/dist/chunks/context-cgmmOxZ2.js +663 -0
  12. package/dist/chunks/context-cgmmOxZ2.js.map +1 -0
  13. package/dist/chunks/credentials-BiQsnMTb.js +347 -0
  14. package/dist/chunks/credentials-BiQsnMTb.js.map +1 -0
  15. package/dist/chunks/cx-export-BEeF6ymo.js +259 -0
  16. package/dist/chunks/cx-export-BEeF6ymo.js.map +1 -0
  17. package/dist/chunks/descriptor-BJ-W0Jd-.js +137 -0
  18. package/dist/chunks/descriptor-BJ-W0Jd-.js.map +1 -0
  19. package/dist/chunks/descriptor-C-YDhtsn.js +48 -0
  20. package/dist/chunks/descriptor-C-YDhtsn.js.map +1 -0
  21. package/dist/chunks/{emit-CwU8cUmG.js → emit-CD8xnY8s.js} +70 -10
  22. package/dist/chunks/emit-CD8xnY8s.js.map +1 -0
  23. package/dist/chunks/{escape-CgzxiYPg.js → escape-DH2Egt-l.js} +12 -12
  24. package/dist/chunks/{escape-CgzxiYPg.js.map → escape-DH2Egt-l.js.map} +1 -1
  25. package/dist/chunks/{export-BvqAXCKh.js → export-CZ7VRm4I.js} +53 -1443
  26. package/dist/chunks/export-CZ7VRm4I.js.map +1 -0
  27. package/dist/chunks/{exporter-DndFlGSa.js → exporter-BIdaoIgh.js} +7 -6
  28. package/dist/chunks/{exporter-DndFlGSa.js.map → exporter-BIdaoIgh.js.map} +1 -1
  29. package/dist/chunks/{exporter-CJgfhF-l.js → exporter-ChjL5fmP.js} +8 -7
  30. package/dist/chunks/{exporter-CJgfhF-l.js.map → exporter-ChjL5fmP.js.map} +1 -1
  31. package/dist/chunks/{exporter--Mk9gXCJ.js → exporter-Dcw7Ldtq.js} +6 -4
  32. package/dist/chunks/{exporter--Mk9gXCJ.js.map → exporter-Dcw7Ldtq.js.map} +1 -1
  33. package/dist/chunks/exporter-DtVU80Fa.js +1008 -0
  34. package/dist/chunks/exporter-DtVU80Fa.js.map +1 -0
  35. package/dist/chunks/{exporter-CrDWIyiq.js → exporter-bxxjOrDZ.js} +11 -9
  36. package/dist/chunks/{exporter-CrDWIyiq.js.map → exporter-bxxjOrDZ.js.map} +1 -1
  37. package/dist/chunks/format-BMS-1Nxb.js +64 -0
  38. package/dist/chunks/format-BMS-1Nxb.js.map +1 -0
  39. package/dist/chunks/{generic-Dq1ntt9q.js → generic-CP6YD34u.js} +4 -4
  40. package/dist/chunks/{generic-Dq1ntt9q.js.map → generic-CP6YD34u.js.map} +1 -1
  41. package/dist/chunks/{importer-DiZRmOQG.js → importer-B87_fmVx.js} +13 -17
  42. package/dist/chunks/importer-B87_fmVx.js.map +1 -0
  43. package/dist/chunks/{importer-BSvfrX_h.js → importer-Bji2MeWr.js} +18 -1014
  44. package/dist/chunks/importer-Bji2MeWr.js.map +1 -0
  45. package/dist/chunks/{importer-COTK9Tsl.js → importer-CB_zV5_L.js} +14 -11
  46. package/dist/chunks/importer-CB_zV5_L.js.map +1 -0
  47. package/dist/chunks/{importer-e6LGpqHB.js → importer-CVT-JyDE.js} +12 -9
  48. package/dist/chunks/importer-CVT-JyDE.js.map +1 -0
  49. package/dist/chunks/{importer-yh_aBCU6.js → importer-Cyy6UseH.js} +7 -6
  50. package/dist/chunks/{importer-yh_aBCU6.js.map → importer-Cyy6UseH.js.map} +1 -1
  51. package/dist/chunks/{importer-iFYPEKaJ.js → importer-DPZDN40-.js} +14 -10
  52. package/dist/chunks/{importer-iFYPEKaJ.js.map → importer-DPZDN40-.js.map} +1 -1
  53. package/dist/chunks/{importer-CMmeMWlC.js → importer-e3huMZbm.js} +8 -260
  54. package/dist/chunks/importer-e3huMZbm.js.map +1 -0
  55. package/dist/chunks/input-Ccg9I22A.js +1397 -0
  56. package/dist/chunks/input-Ccg9I22A.js.map +1 -0
  57. package/dist/chunks/{json-elements-DJZRZ6jd.js → json-elements-By172SVq.js} +4 -4
  58. package/dist/chunks/{json-elements-DJZRZ6jd.js.map → json-elements-By172SVq.js.map} +1 -1
  59. package/dist/chunks/{lexicon-CT69Kd87.js → lexicon-u2SI5xcx.js} +19 -5
  60. package/dist/chunks/lexicon-u2SI5xcx.js.map +1 -0
  61. package/dist/chunks/{ontology-export-G4MqRdux.js → ontology-export-BwgMyuF0.js} +4 -3
  62. package/dist/chunks/{ontology-export-G4MqRdux.js.map → ontology-export-BwgMyuF0.js.map} +1 -1
  63. package/dist/chunks/{records-CiaWZrFH.js → records-Cgvxz-Vx.js} +2 -2
  64. package/dist/chunks/{records-CiaWZrFH.js.map → records-Cgvxz-Vx.js.map} +1 -1
  65. package/dist/chunks/{format-BpQBx8MZ.js → report-CgdsL9Hb.js} +72 -129
  66. package/dist/chunks/report-CgdsL9Hb.js.map +1 -0
  67. package/dist/chunks/sigv4-LkAzsLAu.js +247 -0
  68. package/dist/chunks/sigv4-LkAzsLAu.js.map +1 -0
  69. package/dist/chunks/{styles-BQnsga7p.js → styles-CaABMoO1.js} +76 -43
  70. package/dist/chunks/styles-CaABMoO1.js.map +1 -0
  71. package/dist/chunks/{styles-D3fRphrO.js → styles-P_gmFAOi.js} +101 -21
  72. package/dist/chunks/styles-P_gmFAOi.js.map +1 -0
  73. package/dist/chunks/{styles-yed-BF5x3_Y5.js → styles-yed-Cs1nmrjn.js} +60 -20
  74. package/dist/chunks/styles-yed-Cs1nmrjn.js.map +1 -0
  75. package/dist/chunks/{text-CzJNFOS9.js → text-BuKQVMz2.js} +2 -2
  76. package/dist/chunks/{text-CzJNFOS9.js.map → text-BuKQVMz2.js.map} +1 -1
  77. package/dist/chunks/{writer-DMKvthQE.js → writer-DvHTl36J.js} +5 -4
  78. package/dist/chunks/writer-DvHTl36J.js.map +1 -0
  79. package/dist/csv.js +7 -5
  80. package/dist/csv.js.map +1 -1
  81. package/dist/cx.js +5 -4
  82. package/dist/cx.js.map +1 -1
  83. package/dist/cx2.js +2 -2
  84. package/dist/cys.js +1 -1
  85. package/dist/dot.js +2 -2
  86. package/dist/gexf.js +7 -5
  87. package/dist/gexf.js.map +1 -1
  88. package/dist/gml.js +16 -13
  89. package/dist/gml.js.map +1 -1
  90. package/dist/graph-io.js +1181 -224
  91. package/dist/graph-io.js.map +1 -1
  92. package/dist/graphml.js +3 -3
  93. package/dist/json.js +1 -1
  94. package/dist/neo4j.js +6 -4
  95. package/dist/neo4j.js.map +1 -1
  96. package/dist/obo.js +1 -1
  97. package/dist/pajek.js +1 -1
  98. package/dist/sources-cypher.d.ts +1 -0
  99. package/dist/sources-cypher.js +1236 -0
  100. package/dist/sources-cypher.js.map +1 -0
  101. package/dist/sources-ndex.d.ts +1 -0
  102. package/dist/sources-ndex.js +278 -0
  103. package/dist/sources-ndex.js.map +1 -0
  104. package/dist/sources-rest.d.ts +1 -0
  105. package/dist/sources-rest.js +1367 -0
  106. package/dist/sources-rest.js.map +1 -0
  107. package/dist/src/common/report.d.ts +6 -3
  108. package/dist/src/common/report.d.ts.map +1 -1
  109. package/dist/src/common/report.js +15 -9
  110. package/dist/src/common/report.js.map +1 -1
  111. package/dist/src/formats/cx/styles.d.ts.map +1 -1
  112. package/dist/src/formats/cx/styles.js +1 -0
  113. package/dist/src/formats/cx/styles.js.map +1 -1
  114. package/dist/src/formats/dot/styles.d.ts.map +1 -1
  115. package/dist/src/formats/dot/styles.js +3 -1
  116. package/dist/src/formats/dot/styles.js.map +1 -1
  117. package/dist/src/formats/gexf/styles.d.ts +29 -12
  118. package/dist/src/formats/gexf/styles.d.ts.map +1 -1
  119. package/dist/src/formats/gexf/styles.js +160 -31
  120. package/dist/src/formats/gexf/styles.js.map +1 -1
  121. package/dist/src/formats/gml/styles.d.ts.map +1 -1
  122. package/dist/src/formats/gml/styles.js +5 -4
  123. package/dist/src/formats/gml/styles.js.map +1 -1
  124. package/dist/src/formats/graphml/styles-plain.d.ts.map +1 -1
  125. package/dist/src/formats/graphml/styles-plain.js +3 -3
  126. package/dist/src/formats/graphml/styles-plain.js.map +1 -1
  127. package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -1
  128. package/dist/src/formats/graphml/styles-yed.js +89 -19
  129. package/dist/src/formats/graphml/styles-yed.js.map +1 -1
  130. package/dist/src/formats/pajek/styles.d.ts.map +1 -1
  131. package/dist/src/formats/pajek/styles.js +1 -0
  132. package/dist/src/formats/pajek/styles.js.map +1 -1
  133. package/dist/src/formats/xgmml/styles.d.ts.map +1 -1
  134. package/dist/src/formats/xgmml/styles.js +1 -0
  135. package/dist/src/formats/xgmml/styles.js.map +1 -1
  136. package/dist/src/index.d.ts +8 -1
  137. package/dist/src/index.d.ts.map +1 -1
  138. package/dist/src/index.js +9 -1
  139. package/dist/src/index.js.map +1 -1
  140. package/dist/src/registry.d.ts +173 -1
  141. package/dist/src/registry.d.ts.map +1 -1
  142. package/dist/src/registry.js +196 -1
  143. package/dist/src/registry.js.map +1 -1
  144. package/dist/src/sources/builtins.d.ts +11 -0
  145. package/dist/src/sources/builtins.d.ts.map +1 -0
  146. package/dist/src/sources/builtins.js +47 -0
  147. package/dist/src/sources/builtins.js.map +1 -0
  148. package/dist/src/sources/codes.d.ts +230 -0
  149. package/dist/src/sources/codes.d.ts.map +1 -0
  150. package/dist/src/sources/codes.js +58 -0
  151. package/dist/src/sources/codes.js.map +1 -0
  152. package/dist/src/sources/context.d.ts +112 -0
  153. package/dist/src/sources/context.d.ts.map +1 -0
  154. package/dist/src/sources/context.js +739 -0
  155. package/dist/src/sources/context.js.map +1 -0
  156. package/dist/src/sources/credentials.d.ts +179 -0
  157. package/dist/src/sources/credentials.d.ts.map +1 -0
  158. package/dist/src/sources/credentials.js +301 -0
  159. package/dist/src/sources/credentials.js.map +1 -0
  160. package/dist/src/sources/cypher/descriptor.d.ts +21 -0
  161. package/dist/src/sources/cypher/descriptor.d.ts.map +1 -0
  162. package/dist/src/sources/cypher/descriptor.js +119 -0
  163. package/dist/src/sources/cypher/descriptor.js.map +1 -0
  164. package/dist/src/sources/cypher/flatten.d.ts +72 -0
  165. package/dist/src/sources/cypher/flatten.d.ts.map +1 -0
  166. package/dist/src/sources/cypher/flatten.js +279 -0
  167. package/dist/src/sources/cypher/flatten.js.map +1 -0
  168. package/dist/src/sources/cypher/index.d.ts +33 -0
  169. package/dist/src/sources/cypher/index.d.ts.map +1 -0
  170. package/dist/src/sources/cypher/index.js +405 -0
  171. package/dist/src/sources/cypher/index.js.map +1 -0
  172. package/dist/src/sources/cypher/params.d.ts +40 -0
  173. package/dist/src/sources/cypher/params.d.ts.map +1 -0
  174. package/dist/src/sources/cypher/params.js +6 -0
  175. package/dist/src/sources/cypher/params.js.map +1 -0
  176. package/dist/src/sources/cypher/profiles.d.ts +44 -0
  177. package/dist/src/sources/cypher/profiles.d.ts.map +1 -0
  178. package/dist/src/sources/cypher/profiles.js +61 -0
  179. package/dist/src/sources/cypher/profiles.js.map +1 -0
  180. package/dist/src/sources/cypher/query-builder.d.ts +106 -0
  181. package/dist/src/sources/cypher/query-builder.d.ts.map +1 -0
  182. package/dist/src/sources/cypher/query-builder.js +236 -0
  183. package/dist/src/sources/cypher/query-builder.js.map +1 -0
  184. package/dist/src/sources/cypher/transports/bolt.d.ts +21 -0
  185. package/dist/src/sources/cypher/transports/bolt.d.ts.map +1 -0
  186. package/dist/src/sources/cypher/transports/bolt.js +185 -0
  187. package/dist/src/sources/cypher/transports/bolt.js.map +1 -0
  188. package/dist/src/sources/cypher/transports/neptune-analytics.d.ts +15 -0
  189. package/dist/src/sources/cypher/transports/neptune-analytics.d.ts.map +1 -0
  190. package/dist/src/sources/cypher/transports/neptune-analytics.js +38 -0
  191. package/dist/src/sources/cypher/transports/neptune-analytics.js.map +1 -0
  192. package/dist/src/sources/cypher/transports/neptune-https.d.ts +31 -0
  193. package/dist/src/sources/cypher/transports/neptune-https.d.ts.map +1 -0
  194. package/dist/src/sources/cypher/transports/neptune-https.js +104 -0
  195. package/dist/src/sources/cypher/transports/neptune-https.js.map +1 -0
  196. package/dist/src/sources/cypher/transports/query-api.d.ts +14 -0
  197. package/dist/src/sources/cypher/transports/query-api.d.ts.map +1 -0
  198. package/dist/src/sources/cypher/transports/query-api.js +80 -0
  199. package/dist/src/sources/cypher/transports/query-api.js.map +1 -0
  200. package/dist/src/sources/cypher/transports/transport.d.ts +78 -0
  201. package/dist/src/sources/cypher/transports/transport.d.ts.map +1 -0
  202. package/dist/src/sources/cypher/transports/transport.js +77 -0
  203. package/dist/src/sources/cypher/transports/transport.js.map +1 -0
  204. package/dist/src/sources/cypher/types-map.d.ts +91 -0
  205. package/dist/src/sources/cypher/types-map.d.ts.map +1 -0
  206. package/dist/src/sources/cypher/types-map.js +306 -0
  207. package/dist/src/sources/cypher/types-map.js.map +1 -0
  208. package/dist/src/sources/define.d.ts +47 -0
  209. package/dist/src/sources/define.d.ts.map +1 -0
  210. package/dist/src/sources/define.js +173 -0
  211. package/dist/src/sources/define.js.map +1 -0
  212. package/dist/src/sources/fail.d.ts +33 -0
  213. package/dist/src/sources/fail.d.ts.map +1 -0
  214. package/dist/src/sources/fail.js +49 -0
  215. package/dist/src/sources/fail.js.map +1 -0
  216. package/dist/src/sources/ids.d.ts +64 -0
  217. package/dist/src/sources/ids.d.ts.map +1 -0
  218. package/dist/src/sources/ids.js +64 -0
  219. package/dist/src/sources/ids.js.map +1 -0
  220. package/dist/src/sources/ndex/client.d.ts +31 -0
  221. package/dist/src/sources/ndex/client.d.ts.map +1 -0
  222. package/dist/src/sources/ndex/client.js +90 -0
  223. package/dist/src/sources/ndex/client.js.map +1 -0
  224. package/dist/src/sources/ndex/descriptor.d.ts +10 -0
  225. package/dist/src/sources/ndex/descriptor.d.ts.map +1 -0
  226. package/dist/src/sources/ndex/descriptor.js +55 -0
  227. package/dist/src/sources/ndex/descriptor.js.map +1 -0
  228. package/dist/src/sources/ndex/expand.d.ts +20 -0
  229. package/dist/src/sources/ndex/expand.d.ts.map +1 -0
  230. package/dist/src/sources/ndex/expand.js +87 -0
  231. package/dist/src/sources/ndex/expand.js.map +1 -0
  232. package/dist/src/sources/ndex/index.d.ts +25 -0
  233. package/dist/src/sources/ndex/index.d.ts.map +1 -0
  234. package/dist/src/sources/ndex/index.js +191 -0
  235. package/dist/src/sources/ndex/index.js.map +1 -0
  236. package/dist/src/sources/ndex/params.d.ts +17 -0
  237. package/dist/src/sources/ndex/params.d.ts.map +1 -0
  238. package/dist/src/sources/ndex/params.js +6 -0
  239. package/dist/src/sources/ndex/params.js.map +1 -0
  240. package/dist/src/sources/ndex/share-url.d.ts +40 -0
  241. package/dist/src/sources/ndex/share-url.d.ts.map +1 -0
  242. package/dist/src/sources/ndex/share-url.js +64 -0
  243. package/dist/src/sources/ndex/share-url.js.map +1 -0
  244. package/dist/src/sources/params.d.ts +28 -0
  245. package/dist/src/sources/params.d.ts.map +1 -0
  246. package/dist/src/sources/params.js +6 -0
  247. package/dist/src/sources/params.js.map +1 -0
  248. package/dist/src/sources/registry.d.ts +118 -0
  249. package/dist/src/sources/registry.d.ts.map +1 -0
  250. package/dist/src/sources/registry.js +193 -0
  251. package/dist/src/sources/registry.js.map +1 -0
  252. package/dist/src/sources/rest/descriptor.d.ts +16 -0
  253. package/dist/src/sources/rest/descriptor.d.ts.map +1 -0
  254. package/dist/src/sources/rest/descriptor.js +71 -0
  255. package/dist/src/sources/rest/descriptor.js.map +1 -0
  256. package/dist/src/sources/rest/index.d.ts +14 -0
  257. package/dist/src/sources/rest/index.d.ts.map +1 -0
  258. package/dist/src/sources/rest/index.js +13 -0
  259. package/dist/src/sources/rest/index.js.map +1 -0
  260. package/dist/src/sources/rest/mapping.d.ts +30 -0
  261. package/dist/src/sources/rest/mapping.d.ts.map +1 -0
  262. package/dist/src/sources/rest/mapping.js +362 -0
  263. package/dist/src/sources/rest/mapping.js.map +1 -0
  264. package/dist/src/sources/rest/openalex.d.ts +27 -0
  265. package/dist/src/sources/rest/openalex.d.ts.map +1 -0
  266. package/dist/src/sources/rest/openalex.js +269 -0
  267. package/dist/src/sources/rest/openalex.js.map +1 -0
  268. package/dist/src/sources/rest/paging.d.ts +53 -0
  269. package/dist/src/sources/rest/paging.d.ts.map +1 -0
  270. package/dist/src/sources/rest/paging.js +138 -0
  271. package/dist/src/sources/rest/paging.js.map +1 -0
  272. package/dist/src/sources/rest/params.d.ts +216 -0
  273. package/dist/src/sources/rest/params.d.ts.map +1 -0
  274. package/dist/src/sources/rest/params.js +7 -0
  275. package/dist/src/sources/rest/params.js.map +1 -0
  276. package/dist/src/sources/rest/records.d.ts +41 -0
  277. package/dist/src/sources/rest/records.d.ts.map +1 -0
  278. package/dist/src/sources/rest/records.js +240 -0
  279. package/dist/src/sources/rest/records.js.map +1 -0
  280. package/dist/src/sources/rest/samples/deps-dev.d.ts +10 -0
  281. package/dist/src/sources/rest/samples/deps-dev.d.ts.map +1 -0
  282. package/dist/src/sources/rest/samples/deps-dev.js +47 -0
  283. package/dist/src/sources/rest/samples/deps-dev.js.map +1 -0
  284. package/dist/src/sources/rest/samples/string.d.ts +9 -0
  285. package/dist/src/sources/rest/samples/string.d.ts.map +1 -0
  286. package/dist/src/sources/rest/samples/string.js +42 -0
  287. package/dist/src/sources/rest/samples/string.js.map +1 -0
  288. package/dist/src/sources/rest/selectors.d.ts +41 -0
  289. package/dist/src/sources/rest/selectors.d.ts.map +1 -0
  290. package/dist/src/sources/rest/selectors.js +81 -0
  291. package/dist/src/sources/rest/selectors.js.map +1 -0
  292. package/dist/src/sources/rest/source.d.ts +67 -0
  293. package/dist/src/sources/rest/source.d.ts.map +1 -0
  294. package/dist/src/sources/rest/source.js +635 -0
  295. package/dist/src/sources/rest/source.js.map +1 -0
  296. package/dist/src/sources/rest/templates.d.ts +38 -0
  297. package/dist/src/sources/rest/templates.d.ts.map +1 -0
  298. package/dist/src/sources/rest/templates.js +125 -0
  299. package/dist/src/sources/rest/templates.js.map +1 -0
  300. package/dist/src/sources/run.d.ts +93 -0
  301. package/dist/src/sources/run.d.ts.map +1 -0
  302. package/dist/src/sources/run.js +673 -0
  303. package/dist/src/sources/run.js.map +1 -0
  304. package/dist/src/sources/sha256.d.ts +12 -0
  305. package/dist/src/sources/sha256.d.ts.map +1 -0
  306. package/dist/src/sources/sha256.js +95 -0
  307. package/dist/src/sources/sha256.js.map +1 -0
  308. package/dist/src/sources/sigv4.d.ts +24 -0
  309. package/dist/src/sources/sigv4.d.ts.map +1 -0
  310. package/dist/src/sources/sigv4.js +182 -0
  311. package/dist/src/sources/sigv4.js.map +1 -0
  312. package/dist/src/sources/testing.d.ts +96 -0
  313. package/dist/src/sources/testing.d.ts.map +1 -0
  314. package/dist/src/sources/testing.js +138 -0
  315. package/dist/src/sources/testing.js.map +1 -0
  316. package/dist/src/sources/types.d.ts +665 -0
  317. package/dist/src/sources/types.d.ts.map +1 -0
  318. package/dist/src/sources/types.js +10 -0
  319. package/dist/src/sources/types.js.map +1 -0
  320. package/dist/src/styles/canon/enums.d.ts.map +1 -1
  321. package/dist/src/styles/canon/enums.js +1 -0
  322. package/dist/src/styles/canon/enums.js.map +1 -1
  323. package/dist/src/styles/cyjs/cascade.d.ts.map +1 -1
  324. package/dist/src/styles/cyjs/cascade.js +68 -2
  325. package/dist/src/styles/cyjs/cascade.js.map +1 -1
  326. package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -1
  327. package/dist/src/styles/cyjs/defaults-table.js +2 -0
  328. package/dist/src/styles/cyjs/defaults-table.js.map +1 -1
  329. package/dist/src/styles/cyjs/emit.d.ts.map +1 -1
  330. package/dist/src/styles/cyjs/emit.js +18 -7
  331. package/dist/src/styles/cyjs/emit.js.map +1 -1
  332. package/dist/src/styles/cyjs/mappers.d.ts +4 -1
  333. package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
  334. package/dist/src/styles/cyjs/mappers.js +2 -0
  335. package/dist/src/styles/cyjs/mappers.js.map +1 -1
  336. package/dist/src/styles/cytoscape/emit.d.ts.map +1 -1
  337. package/dist/src/styles/cytoscape/emit.js +59 -7
  338. package/dist/src/styles/cytoscape/emit.js.map +1 -1
  339. package/dist/src/styles/cytoscape/lexicon.d.ts +6 -0
  340. package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
  341. package/dist/src/styles/cytoscape/lexicon.js +26 -2
  342. package/dist/src/styles/cytoscape/lexicon.js.map +1 -1
  343. package/dist/src/styles/cytoscape/resolve.d.ts +4 -1
  344. package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
  345. package/dist/src/styles/cytoscape/resolve.js +10 -6
  346. package/dist/src/styles/cytoscape/resolve.js.map +1 -1
  347. package/dist/src/styles/cytoscape/translate.d.ts.map +1 -1
  348. package/dist/src/styles/cytoscape/translate.js +10 -10
  349. package/dist/src/styles/cytoscape/translate.js.map +1 -1
  350. package/dist/src/styles/defaults.d.ts +30 -0
  351. package/dist/src/styles/defaults.d.ts.map +1 -1
  352. package/dist/src/styles/defaults.js +45 -4
  353. package/dist/src/styles/defaults.js.map +1 -1
  354. package/dist/src/styles/io/block.d.ts.map +1 -1
  355. package/dist/src/styles/io/block.js +9 -0
  356. package/dist/src/styles/io/block.js.map +1 -1
  357. package/dist/src/styles/io/writer.d.ts.map +1 -1
  358. package/dist/src/styles/io/writer.js +7 -3
  359. package/dist/src/styles/io/writer.js.map +1 -1
  360. package/dist/src/styles/plan/resolve.d.ts +2 -1
  361. package/dist/src/styles/plan/resolve.d.ts.map +1 -1
  362. package/dist/src/styles/plan/resolve.js +13 -2
  363. package/dist/src/styles/plan/resolve.js.map +1 -1
  364. package/dist/src/styles/types.d.ts +19 -2
  365. package/dist/src/styles/types.d.ts.map +1 -1
  366. package/dist/src/styles/vocabulary.d.ts.map +1 -1
  367. package/dist/src/styles/vocabulary.js +15 -1
  368. package/dist/src/styles/vocabulary.js.map +1 -1
  369. package/dist/src/types.d.ts +19 -5
  370. package/dist/src/types.d.ts.map +1 -1
  371. package/dist/src/types.js.map +1 -1
  372. package/dist/styles.js +11 -11
  373. package/dist/xgmml.js +3 -3
  374. package/docs/samples/people.json +6 -0
  375. package/package.json +29 -4
  376. package/src/common/report.ts +27 -7
  377. package/src/formats/cx/styles.ts +1 -0
  378. package/src/formats/dot/styles.ts +3 -1
  379. package/src/formats/gexf/styles.ts +185 -37
  380. package/src/formats/gml/styles.ts +5 -4
  381. package/src/formats/graphml/styles-plain.ts +3 -9
  382. package/src/formats/graphml/styles-yed.ts +93 -20
  383. package/src/formats/pajek/styles.ts +1 -0
  384. package/src/formats/xgmml/styles.ts +1 -0
  385. package/src/index.ts +90 -0
  386. package/src/registry.ts +326 -1
  387. package/src/sources/builtins.ts +56 -0
  388. package/src/sources/codes.ts +235 -0
  389. package/src/sources/context.ts +893 -0
  390. package/src/sources/credentials.ts +409 -0
  391. package/src/sources/cypher/descriptor.ts +125 -0
  392. package/src/sources/cypher/flatten.ts +323 -0
  393. package/src/sources/cypher/index.ts +498 -0
  394. package/src/sources/cypher/params.ts +41 -0
  395. package/src/sources/cypher/profiles.ts +78 -0
  396. package/src/sources/cypher/query-builder.ts +294 -0
  397. package/src/sources/cypher/transports/bolt.ts +228 -0
  398. package/src/sources/cypher/transports/neptune-analytics.ts +41 -0
  399. package/src/sources/cypher/transports/neptune-https.ts +122 -0
  400. package/src/sources/cypher/transports/query-api.ts +100 -0
  401. package/src/sources/cypher/transports/transport.ts +139 -0
  402. package/src/sources/cypher/types-map.ts +418 -0
  403. package/src/sources/define.ts +195 -0
  404. package/src/sources/fail.ts +70 -0
  405. package/src/sources/ids.ts +74 -0
  406. package/src/sources/ndex/client.ts +102 -0
  407. package/src/sources/ndex/descriptor.ts +64 -0
  408. package/src/sources/ndex/expand.ts +100 -0
  409. package/src/sources/ndex/index.ts +235 -0
  410. package/src/sources/ndex/params.ts +17 -0
  411. package/src/sources/ndex/share-url.ts +84 -0
  412. package/src/sources/params.ts +29 -0
  413. package/src/sources/registry.ts +325 -0
  414. package/src/sources/rest/descriptor.ts +74 -0
  415. package/src/sources/rest/index.ts +22 -0
  416. package/src/sources/rest/mapping.ts +401 -0
  417. package/src/sources/rest/openalex.ts +288 -0
  418. package/src/sources/rest/paging.ts +180 -0
  419. package/src/sources/rest/params.ts +243 -0
  420. package/src/sources/rest/records.ts +289 -0
  421. package/src/sources/rest/samples/deps-dev.ts +49 -0
  422. package/src/sources/rest/samples/string.ts +44 -0
  423. package/src/sources/rest/selectors.ts +91 -0
  424. package/src/sources/rest/source.ts +760 -0
  425. package/src/sources/rest/templates.ts +151 -0
  426. package/src/sources/run.ts +793 -0
  427. package/src/sources/sha256.ts +99 -0
  428. package/src/sources/sigv4.ts +207 -0
  429. package/src/sources/testing.ts +210 -0
  430. package/src/sources/types.ts +741 -0
  431. package/src/styles/canon/enums.ts +1 -0
  432. package/src/styles/cyjs/cascade.ts +81 -2
  433. package/src/styles/cyjs/defaults-table.ts +2 -0
  434. package/src/styles/cyjs/emit.ts +18 -7
  435. package/src/styles/cyjs/mappers.ts +6 -1
  436. package/src/styles/cytoscape/emit.ts +61 -7
  437. package/src/styles/cytoscape/lexicon.ts +28 -2
  438. package/src/styles/cytoscape/resolve.ts +22 -6
  439. package/src/styles/cytoscape/translate.ts +11 -11
  440. package/src/styles/defaults.ts +93 -4
  441. package/src/styles/io/block.ts +10 -0
  442. package/src/styles/io/writer.ts +8 -3
  443. package/src/styles/plan/resolve.ts +14 -2
  444. package/src/styles/types.ts +28 -2
  445. package/src/styles/vocabulary.ts +15 -1
  446. package/src/types.ts +19 -5
  447. package/dist/chunks/block-DiGq58c3.js.map +0 -1
  448. package/dist/chunks/emit-CwU8cUmG.js.map +0 -1
  449. package/dist/chunks/export-BvqAXCKh.js.map +0 -1
  450. package/dist/chunks/format-BpQBx8MZ.js.map +0 -1
  451. package/dist/chunks/importer-BSvfrX_h.js.map +0 -1
  452. package/dist/chunks/importer-CMmeMWlC.js.map +0 -1
  453. package/dist/chunks/importer-COTK9Tsl.js.map +0 -1
  454. package/dist/chunks/importer-DiZRmOQG.js.map +0 -1
  455. package/dist/chunks/importer-e6LGpqHB.js.map +0 -1
  456. package/dist/chunks/lexicon-CT69Kd87.js.map +0 -1
  457. package/dist/chunks/styles-BQnsga7p.js.map +0 -1
  458. package/dist/chunks/styles-D3fRphrO.js.map +0 -1
  459. package/dist/chunks/styles-yed-BF5x3_Y5.js.map +0 -1
  460. package/dist/chunks/writer-DMKvthQE.js.map +0 -1
@@ -0,0 +1,306 @@
1
+ /**
2
+ * The one type mapper of the Cypher source (design section 10): every transport's wire values --
3
+ * Neo4j's typed JSON, neo4j-driver's objects, Neptune's plain JSON -- become the same plain values,
4
+ * and every node, relationship and path becomes a GraphNode, a GraphRel or an array of them.
5
+ *
6
+ * - Integers: a number while it is exact; past 2^53 the `long` parameter picks a rounded number
7
+ * (W_PRECISION, once per column) or the exact digits as a string.
8
+ * - Floats, booleans, strings: as they are. Dates and instants: epoch milliseconds. Local times,
9
+ * times and durations: their ISO text. Points: `{ srid, x, y, z? }`. Lists and maps: arrays and
10
+ * objects of mapped values. Bytes: dropped (W_SOURCE_VALUE).
11
+ */
12
+ import { PRECISION_CODE } from "../../common/codes.js";
13
+ import { warnOn } from "../fail.js";
14
+ /** A node a query returned. */
15
+ export class GraphNode {
16
+ /**
17
+ * Create one.
18
+ * @param id - the server's element id
19
+ * @param labels - its labels
20
+ * @param properties - its mapped properties
21
+ */
22
+ constructor(id, labels, properties) {
23
+ this.id = id;
24
+ this.labels = labels;
25
+ this.properties = properties;
26
+ }
27
+ }
28
+ /** A relationship a query returned. */
29
+ export class GraphRel {
30
+ /**
31
+ * Create one.
32
+ * @param id - the server's element id
33
+ * @param start - the start node's element id
34
+ * @param end - the end node's element id
35
+ * @param type - its type
36
+ * @param properties - its mapped properties
37
+ */
38
+ constructor(id, start, end, type, properties) {
39
+ this.id = id;
40
+ this.start = start;
41
+ this.end = end;
42
+ this.type = type;
43
+ this.properties = properties;
44
+ }
45
+ }
46
+ /** Values past this need a 64-bit integer. */
47
+ const SAFE = BigInt(Number.MAX_SAFE_INTEGER);
48
+ /**
49
+ * An integer from its exact decimal digits.
50
+ * @param digits - the digits
51
+ * @param column - the column it belongs to, for the warning
52
+ * @param m - the map context
53
+ * @returns a number, or a string past 2^53 under `long: "string"`
54
+ */
55
+ function integer(digits, column, m) {
56
+ let big;
57
+ try {
58
+ big = BigInt(digits);
59
+ }
60
+ catch {
61
+ return Number(digits);
62
+ }
63
+ if (big <= SAFE && big >= -SAFE) {
64
+ return Number(big);
65
+ }
66
+ if (m.long === "string") {
67
+ return big.toString();
68
+ }
69
+ m.report.warnOnce("precision", PRECISION_CODE, `column ${column}: an integer beyond 2^53 was stored as the nearest 64-bit float; pass long: "string" to keep every digit`, undefined, `${PRECISION_CODE}:${column}`);
70
+ return Number(big);
71
+ }
72
+ /**
73
+ * Epoch milliseconds of an ISO instant, the zone name in brackets ignored; the text itself when it
74
+ * does not parse.
75
+ * @param text - the ISO text
76
+ * @param type - the server's type name
77
+ * @param column - the column
78
+ * @param m - the map context
79
+ * @returns milliseconds, or the text
80
+ */
81
+ function epoch(text, type, column, m) {
82
+ const ms = Date.parse(withoutZoneName(text));
83
+ if (Number.isNaN(ms)) {
84
+ warnOn(m.report, "W_SOURCE_VALUE", `column ${column}: a ${type} kept as text`, { type, column, as: "string" });
85
+ return text;
86
+ }
87
+ return ms;
88
+ }
89
+ /**
90
+ * Warn that a value with no dtype was dropped; the caller leaves the property out.
91
+ * @param type - the server's type name
92
+ * @param column - the column
93
+ * @param m - the map context
94
+ */
95
+ function dropped(type, column, m) {
96
+ warnOn(m.report, "W_SOURCE_VALUE", `column ${column}: a ${type} value was dropped`, {
97
+ type,
98
+ column,
99
+ as: "dropped",
100
+ });
101
+ }
102
+ /**
103
+ * Map every property of a map, leaving out dropped values.
104
+ * @param value - the map
105
+ * @param each - maps one value, given its key
106
+ * @returns the mapped map
107
+ */
108
+ function mapEntries(value, each) {
109
+ const out = {};
110
+ for (const [k, v] of Object.entries(value)) {
111
+ const mapped = each(v, k);
112
+ if (mapped !== undefined) {
113
+ out[k] = mapped;
114
+ }
115
+ }
116
+ return out;
117
+ }
118
+ /**
119
+ * A WKT point as Neo4j's typed JSON spells it ("SRID=7203;POINT (1.0 2.0)").
120
+ * @param text - the text
121
+ * @returns `{ srid, x, y, z? }`, or the text when it does not parse
122
+ */
123
+ function wktPoint(text) {
124
+ const match = /^SRID=(\d+);POINT(?: Z)? ?\(([^)]*)\)$/i.exec(text.trim());
125
+ if (match === null) {
126
+ return text;
127
+ }
128
+ const [x = 0, y = 0, z] = match[2].trim().split(/\s+/).map(Number);
129
+ return z === undefined ? { srid: Number(match[1]), x, y } : { srid: Number(match[1]), x, y, z };
130
+ }
131
+ /**
132
+ * Map a value of Neo4j's typed JSON (the Query API's `application/vnd.neo4j.query.v1.1`).
133
+ * @param v - the wire value
134
+ * @param column - the result column or property key it belongs to
135
+ * @param m - the map context
136
+ * @returns the plain value, a GraphNode, a GraphRel or an array; undefined when dropped
137
+ */
138
+ export function fromTypedJson(v, column, m) {
139
+ if (v === null || typeof v !== "object" || !("$type" in v)) {
140
+ return v ?? null;
141
+ }
142
+ const { $type: type, _value: value } = v;
143
+ switch (type) {
144
+ case "Null":
145
+ return null;
146
+ case "Boolean":
147
+ case "String":
148
+ return value;
149
+ case "Integer":
150
+ return integer(String(value), column, m);
151
+ case "Float":
152
+ return Number(value);
153
+ case "Date":
154
+ return epoch(`${String(value)}T00:00:00Z`, type, column, m);
155
+ case "OffsetDateTime":
156
+ case "ZonedDateTime":
157
+ return epoch(String(value), type, column, m);
158
+ case "LocalDateTime":
159
+ case "LocalTime":
160
+ case "Time":
161
+ case "Duration":
162
+ return String(value);
163
+ case "Point":
164
+ return wktPoint(String(value));
165
+ case "Base64":
166
+ dropped(type, column, m);
167
+ return undefined;
168
+ case "List":
169
+ return value.map((x) => fromTypedJson(x, column, m));
170
+ case "Map":
171
+ return mapEntries(value, (x) => fromTypedJson(x, column, m));
172
+ case "Node": {
173
+ const n = value;
174
+ return new GraphNode(n._element_id, n._labels, mapEntries(n._properties, (x, k) => fromTypedJson(x, k, m)));
175
+ }
176
+ case "Relationship": {
177
+ const r = value;
178
+ return new GraphRel(r._element_id, r._start_node_element_id, r._end_node_element_id, r._type, mapEntries(r._properties, (x, k) => fromTypedJson(x, k, m)));
179
+ }
180
+ case "Path":
181
+ return value.map((x) => fromTypedJson(x, column, m));
182
+ default:
183
+ warnOn(m.report, "W_SOURCE_VALUE", `column ${column}: a ${type} kept as text`, {
184
+ type,
185
+ column,
186
+ as: "string",
187
+ });
188
+ return typeof value === "string" ? value : JSON.stringify(value);
189
+ }
190
+ }
191
+ /**
192
+ * The text without a trailing bracketed zone name (`...+01:00[Europe/Paris]`).
193
+ * @param text - the ISO text
194
+ * @returns the text without the zone name
195
+ */
196
+ function withoutZoneName(text) {
197
+ const end = text.length - 1;
198
+ if (text[end] !== "]") {
199
+ return text;
200
+ }
201
+ const open = text.indexOf("[", text.lastIndexOf("]", end - 1) + 1);
202
+ return open === -1 || open >= end ? text : text.slice(0, open);
203
+ }
204
+ /**
205
+ * Map a driver node or relationship.
206
+ * @param e - the driver entity
207
+ * @param node - whether it is a node
208
+ * @param m - the map context
209
+ * @param t - the driver's type checks
210
+ * @returns a GraphNode or a GraphRel
211
+ */
212
+ function fromEntity(e, node, m, t) {
213
+ const props = mapEntries(e.properties, (x, k) => fromDriver(x, k, m, t));
214
+ const id = e.elementId ?? String(e.identity);
215
+ return node
216
+ ? new GraphNode(id, [...(e.labels ?? [])], props)
217
+ : new GraphRel(id, e.startNodeElementId ?? String(e.start), e.endNodeElementId ?? String(e.end), e.type ?? "", props);
218
+ }
219
+ /**
220
+ * Map a driver point.
221
+ * @param p - the point
222
+ * @returns srid, x, y and z when it has one
223
+ */
224
+ function fromPoint(p) {
225
+ const srid = Number(String(p.srid));
226
+ return p.z === undefined ? { srid, x: p.x, y: p.y } : { srid, x: p.x, y: p.y, z: p.z };
227
+ }
228
+ /**
229
+ * Map a value neo4j-driver returned. Its lossless Integer keeps every digit, so `long` decides.
230
+ * @param v - the driver value
231
+ * @param column - the result column or property key
232
+ * @param m - the map context
233
+ * @param t - the driver's type checks
234
+ * @returns the plain value, a GraphNode, a GraphRel or an array; undefined when dropped
235
+ */
236
+ export function fromDriver(v, column, m, t) {
237
+ if (v === null || v === undefined) {
238
+ return null;
239
+ }
240
+ if (typeof v !== "object") {
241
+ return typeof v === "bigint" ? integer(v.toString(), column, m) : v;
242
+ }
243
+ // driver values (Integer, the temporal types) spell themselves exactly through toString()
244
+ const text = () => v.toString();
245
+ if (t.isInt(v)) {
246
+ return integer(text(), column, m);
247
+ }
248
+ if (t.isNode(v) || t.isRelationship(v)) {
249
+ return fromEntity(v, t.isNode(v), m, t);
250
+ }
251
+ if (t.isPath(v)) {
252
+ const p = v;
253
+ return [p.start, ...p.segments.flatMap((s) => [s.relationship, s.end])].map((x) => fromDriver(x, column, m, t));
254
+ }
255
+ if (t.isDate(v)) {
256
+ return epoch(`${text()}T00:00:00Z`, "Date", column, m);
257
+ }
258
+ if (t.isDateTime(v)) {
259
+ return epoch(text(), "DateTime", column, m);
260
+ }
261
+ if (t.isLocalDateTime(v) || t.isLocalTime(v) || t.isTime(v) || t.isDuration(v)) {
262
+ return text();
263
+ }
264
+ if (t.isPoint(v)) {
265
+ return fromPoint(v);
266
+ }
267
+ if (v instanceof Uint8Array || v instanceof ArrayBuffer) {
268
+ dropped("ByteArray", column, m);
269
+ return undefined;
270
+ }
271
+ if (Array.isArray(v)) {
272
+ return v.map((x) => fromDriver(x, column, m, t));
273
+ }
274
+ return mapEntries(v, (x) => fromDriver(x, column, m, t));
275
+ }
276
+ /**
277
+ * Map a value of Neptune's openCypher JSON: nodes `{ "~id", "~entityType": "node", "~labels",
278
+ * "~properties" }`, relationships adding `~start`, `~end`, `~type`. Its numbers are plain JSON, so
279
+ * an integer past 2^53 was already rounded on the wire (W_PRECISION).
280
+ * @param v - the wire value
281
+ * @param column - the result column or property key
282
+ * @param m - the map context
283
+ * @returns the plain value, a GraphNode, a GraphRel or an array
284
+ */
285
+ export function fromNeptune(v, column, m) {
286
+ if (typeof v === "number" && Number.isInteger(v) && !Number.isSafeInteger(v)) {
287
+ return integer(BigInt(v).toString(), column, m);
288
+ }
289
+ if (v === null || typeof v !== "object") {
290
+ return v ?? null;
291
+ }
292
+ if (Array.isArray(v)) {
293
+ return v.map((x) => fromNeptune(x, column, m));
294
+ }
295
+ const o = v;
296
+ const props = () => mapEntries((o["~properties"] ?? {}), (x, k) => fromNeptune(x, k, m));
297
+ switch (o["~entityType"]) {
298
+ case "node":
299
+ return new GraphNode(String(o["~id"]), (o["~labels"] ?? []), props());
300
+ case "relationship":
301
+ return new GraphRel(String(o["~id"]), String(o["~start"]), String(o["~end"]), String(o["~type"]), props());
302
+ default:
303
+ return mapEntries(o, (x) => fromNeptune(x, column, m));
304
+ }
305
+ }
306
+ //# sourceMappingURL=types-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-map.js","sourceRoot":"","sources":["../../../../src/sources/cypher/types-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * `defineSource` and the registration checks (design section 2): the id form, exactly one read
3
+ * method, and the declared features against the methods present. Also the parameter checks every
4
+ * load runs against the descriptor before any request.
5
+ */
6
+ import { type ImportReportBuilder } from "../common/report.js";
7
+ import { type GraphSource, type LazySource, type SourceDescriptor } from "./types.js";
8
+ /**
9
+ * Check a loaded source: its id, exactly one read method, and its declared features.
10
+ * @param source - the source
11
+ * @param declared - features a lazy registration declared, if any
12
+ */
13
+ export declare function checkSource(source: GraphSource<never>, declared?: SourceDescriptor): void;
14
+ /**
15
+ * Check a lazy registration before its code is loaded.
16
+ * @param source - the lazy source
17
+ */
18
+ export declare function checkLazySource(source: LazySource): void;
19
+ /**
20
+ * Define a network source: returns it unchanged, with its parameter type inferred, after the
21
+ * registration checks (an id of lowercase letters, digits and dashes; exactly one of `records`,
22
+ * `file` and `import`; declared features backed by methods). A malformed source throws an
23
+ * ImportError whose `issue.code` is E_SOURCE_INVALID. Experimental.
24
+ * @param source - the source
25
+ * @returns the same source
26
+ * @example
27
+ * ```ts
28
+ * const people = defineSource({
29
+ * id: "people",
30
+ * async records(params: { team: string }, ctx) {
31
+ * const rows = await ctx.fetchJson<{ id: string; name: string }[]>(`/api/people?team=${params.team}`);
32
+ * return { nodes: rows };
33
+ * },
34
+ * });
35
+ * ```
36
+ * @category Network sources
37
+ */
38
+ export declare function defineSource<P>(source: GraphSource<P>): GraphSource<P>;
39
+ /**
40
+ * Check params against a descriptor before any request: required ones present, numbers and
41
+ * integers in range, booleans, enums, URLs (never with a user name or password in them).
42
+ * @param params - the caller's params
43
+ * @param descriptor - the source's descriptor
44
+ * @param report - the load's report
45
+ */
46
+ export declare function checkParams(params: Readonly<Record<string, unknown>>, descriptor: SourceDescriptor | undefined, report: ImportReportBuilder): void;
47
+ //# sourceMappingURL=define.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/sources/define.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,gBAAgB,EAGxB,MAAM,YAAY,CAAC;AA0CpB;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAezF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAKxD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAGtE;AAuDD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,MAAM,EAAE,mBAAmB,GAC5B,IAAI,CAiBN"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * `defineSource` and the registration checks (design section 2): the id form, exactly one read
3
+ * method, and the declared features against the methods present. Also the parameter checks every
4
+ * load runs against the descriptor before any request.
5
+ */
6
+ import { failAlone, failOn } from "./fail.js";
7
+ /** Lowercase letters, digits and single dashes between them. */
8
+ const ID_FORM = /^[a-z0-9]+(-[a-z0-9]+)*$/;
9
+ /** The optional methods and the feature each one is. */
10
+ const FEATURE_METHODS = [
11
+ ["expand", "expand"],
12
+ ["probe", "probe"],
13
+ ["list", "list"],
14
+ ["validate", "validate"],
15
+ ];
16
+ /**
17
+ * Refuse a malformed source.
18
+ * @param id - the source id
19
+ * @param reason - why
20
+ * @param message - for logs
21
+ */
22
+ function invalid(id, reason, message) {
23
+ failAlone("E_SOURCE_INVALID", message, { id, reason });
24
+ }
25
+ /**
26
+ * Check a source id.
27
+ * @param id - the id
28
+ */
29
+ function checkSourceId(id) {
30
+ if (typeof id !== "string" || !ID_FORM.test(id)) {
31
+ invalid(String(id), "id", `source id ${JSON.stringify(id)} must be lowercase letters, digits and dashes`);
32
+ }
33
+ }
34
+ /**
35
+ * The features a loaded source has, from its methods.
36
+ * @param source - the source
37
+ * @returns the features
38
+ */
39
+ function featuresOf(source) {
40
+ return FEATURE_METHODS.filter(([, method]) => typeof source[method] === "function").map(([f]) => f);
41
+ }
42
+ /**
43
+ * Check a loaded source: its id, exactly one read method, and its declared features.
44
+ * @param source - the source
45
+ * @param declared - features a lazy registration declared, if any
46
+ */
47
+ export function checkSource(source, declared) {
48
+ checkSourceId(source.id);
49
+ const reads = ["records", "file", "import"].filter((m) => typeof source[m] === "function");
50
+ if (reads.length !== 1) {
51
+ invalid(source.id, "read-methods", `source ${source.id} must have exactly one of records, file and import`);
52
+ }
53
+ const features = (declared ?? source.descriptor)?.features;
54
+ if (features !== undefined) {
55
+ const has = new Set(featuresOf(source));
56
+ for (const f of features) {
57
+ if (f !== "page" && !has.has(f)) {
58
+ invalid(source.id, "features", `source ${source.id} declares ${f} but has no ${f} method`);
59
+ }
60
+ }
61
+ }
62
+ }
63
+ /**
64
+ * Check a lazy registration before its code is loaded.
65
+ * @param source - the lazy source
66
+ */
67
+ export function checkLazySource(source) {
68
+ checkSourceId(source.id);
69
+ if (typeof source.load !== "function" || typeof source.descriptor !== "object") {
70
+ invalid(source.id, "lazy", `lazy source ${source.id} needs a descriptor and a load function`);
71
+ }
72
+ }
73
+ /**
74
+ * Define a network source: returns it unchanged, with its parameter type inferred, after the
75
+ * registration checks (an id of lowercase letters, digits and dashes; exactly one of `records`,
76
+ * `file` and `import`; declared features backed by methods). A malformed source throws an
77
+ * ImportError whose `issue.code` is E_SOURCE_INVALID. Experimental.
78
+ * @param source - the source
79
+ * @returns the same source
80
+ * @example
81
+ * ```ts
82
+ * const people = defineSource({
83
+ * id: "people",
84
+ * async records(params: { team: string }, ctx) {
85
+ * const rows = await ctx.fetchJson<{ id: string; name: string }[]>(`/api/people?team=${params.team}`);
86
+ * return { nodes: rows };
87
+ * },
88
+ * });
89
+ * ```
90
+ * @category Network sources
91
+ */
92
+ export function defineSource(source) {
93
+ checkSource(source);
94
+ return source;
95
+ }
96
+ /**
97
+ * Why a number or integer param is wrong, if it is.
98
+ * @param p - the param's descriptor
99
+ * @param value - the value given
100
+ * @returns the reason, or null when it is fine
101
+ */
102
+ function numberProblem(p, value) {
103
+ if (typeof value !== "number" || Number.isNaN(value) || (p.type === "integer" && !Number.isInteger(value))) {
104
+ return "type";
105
+ }
106
+ if ((p.min !== undefined && value < p.min) || (p.max !== undefined && value > p.max)) {
107
+ return "range";
108
+ }
109
+ return null;
110
+ }
111
+ /**
112
+ * Why a URL param is wrong, if it is.
113
+ * @param value - the value given
114
+ * @returns the reason, or null when it is fine
115
+ */
116
+ function urlProblem(value) {
117
+ let url;
118
+ try {
119
+ url = new URL(typeof value === "string" ? value : "");
120
+ }
121
+ catch {
122
+ return "type";
123
+ }
124
+ return url.username !== "" || url.password !== "" ? "credentials-in-url" : null;
125
+ }
126
+ /**
127
+ * Why a present param value is wrong for its descriptor, if it is.
128
+ * @param p - the param's descriptor
129
+ * @param value - the value given (not undefined or null)
130
+ * @returns the reason, or null when it is fine
131
+ */
132
+ function paramProblem(p, value) {
133
+ switch (p.type) {
134
+ case "integer":
135
+ case "number":
136
+ return numberProblem(p, value);
137
+ case "boolean":
138
+ return typeof value === "boolean" ? null : "type";
139
+ case "enum":
140
+ return p.values !== undefined && !p.values.some((v) => v.value === value) ? "enum" : null;
141
+ case "url":
142
+ return urlProblem(value);
143
+ default:
144
+ return null;
145
+ }
146
+ }
147
+ /**
148
+ * Check params against a descriptor before any request: required ones present, numbers and
149
+ * integers in range, booleans, enums, URLs (never with a user name or password in them).
150
+ * @param params - the caller's params
151
+ * @param descriptor - the source's descriptor
152
+ * @param report - the load's report
153
+ */
154
+ export function checkParams(params, descriptor, report) {
155
+ if (typeof params !== "object" || params === null) {
156
+ failOn(report, "E_SOURCE_PARAM", "params must be an object", { name: "params", reason: "type" });
157
+ }
158
+ for (const p of descriptor?.params ?? []) {
159
+ const value = params[p.name];
160
+ const missing = value === undefined || value === null;
161
+ let reason = null;
162
+ if (!missing) {
163
+ reason = paramProblem(p, value);
164
+ }
165
+ else if (p.required === true && p.default === undefined) {
166
+ reason = "required";
167
+ }
168
+ if (reason !== null) {
169
+ failOn(report, "E_SOURCE_PARAM", `parameter ${p.name}: ${reason}`, { name: p.name, reason });
170
+ }
171
+ }
172
+ }
173
+ //# sourceMappingURL=define.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/sources/define.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Raising a network source issue: one place that turns a code and its params into an ImportError
3
+ * whose `issue.params` and `details` both carry the params, so callers branch on
4
+ * `err.issue.code` and read `err.issue.params` as with every other graph-io failure.
5
+ */
6
+ import { ImportReportBuilder } from "../common/report.js";
7
+ import { type SourceIssueCode } from "./codes.js";
8
+ /**
9
+ * Abort a load with a source error, carrying the load's report so far plus the error.
10
+ * @param report - the load's report
11
+ * @param code - the code
12
+ * @param message - a plain-ASCII message, for logs
13
+ * @param params - the issue's values
14
+ * @returns never; it throws the ImportError
15
+ */
16
+ export declare function failOn(report: ImportReportBuilder, code: SourceIssueCode, message: string, params: Readonly<Record<string, unknown>>): never;
17
+ /**
18
+ * Raise a source error outside a load (registration, a credential factory).
19
+ * @param code - the code
20
+ * @param message - a plain-ASCII message, for logs
21
+ * @param params - the issue's values
22
+ * @param format - the report's format name
23
+ */
24
+ export declare function failAlone(code: SourceIssueCode, message: string, params: Readonly<Record<string, unknown>>, format?: string): never;
25
+ /**
26
+ * Record a source warning on a report.
27
+ * @param report - the report
28
+ * @param code - the code
29
+ * @param message - a plain-ASCII message, for logs
30
+ * @param params - the issue's values
31
+ */
32
+ export declare function warnOn(report: ImportReportBuilder, code: SourceIssueCode, message: string, params: Readonly<Record<string, unknown>>): void;
33
+ //# sourceMappingURL=fail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fail.d.ts","sourceRoot":"","sources":["../../../src/sources/fail.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAYlD;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAClB,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC1C,KAAK,CAIP;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CACrB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,MAAM,SAAW,GAClB,KAAK,CAEP;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAClB,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC1C,IAAI,CAEN"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Raising a network source issue: one place that turns a code and its params into an ImportError
3
+ * whose `issue.params` and `details` both carry the params, so callers branch on
4
+ * `err.issue.code` and read `err.issue.params` as with every other graph-io failure.
5
+ */
6
+ import { ImportReportBuilder } from "../common/report.js";
7
+ /** The category each code is filed under. */
8
+ const CATEGORY = {
9
+ E_SOURCE_PARAM: "validation-error",
10
+ E_SOURCE_INVALID: "validation-error",
11
+ E_SOURCE_RESPONSE: "parse-error",
12
+ E_SOURCE_NOT_A_GRAPH: "parse-error",
13
+ E_SOURCE_NOT_FOUND: "missing-value",
14
+ E_SOURCE_UNKNOWN: "missing-value",
15
+ };
16
+ /**
17
+ * Abort a load with a source error, carrying the load's report so far plus the error.
18
+ * @param report - the load's report
19
+ * @param code - the code
20
+ * @param message - a plain-ASCII message, for logs
21
+ * @param params - the issue's values
22
+ * @returns never; it throws the ImportError
23
+ */
24
+ export function failOn(report, code, message, params) {
25
+ // a fork, so a failure the runner turns into a warning (a later page's 401, a cap) leaves no
26
+ // error in the load's own report; the ImportError carries everything recorded so far
27
+ return report.fork().failWith(CATEGORY[code] ?? "unsupported", code, message, undefined, params, params);
28
+ }
29
+ /**
30
+ * Raise a source error outside a load (registration, a credential factory).
31
+ * @param code - the code
32
+ * @param message - a plain-ASCII message, for logs
33
+ * @param params - the issue's values
34
+ * @param format - the report's format name
35
+ */
36
+ export function failAlone(code, message, params, format = "source") {
37
+ failOn(new ImportReportBuilder(format, 0), code, message, params);
38
+ }
39
+ /**
40
+ * Record a source warning on a report.
41
+ * @param report - the report
42
+ * @param code - the code
43
+ * @param message - a plain-ASCII message, for logs
44
+ * @param params - the issue's values
45
+ */
46
+ export function warnOn(report, code, message, params) {
47
+ report.warning("unsupported", code, message, undefined, params);
48
+ }
49
+ //# sourceMappingURL=fail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fail.js","sourceRoot":"","sources":["../../../src/sources/fail.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAI1D,6CAA6C;AAC7C,MAAM,QAAQ,GAA8D;IACxE,cAAc,EAAE,kBAAkB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,aAAa;IAChC,oBAAoB,EAAE,aAAa;IACnC,kBAAkB,EAAE,eAAe;IACnC,gBAAgB,EAAE,eAAe;CACpC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAClB,MAA2B,EAC3B,IAAqB,EACrB,OAAe,EACf,MAAyC;IAEzC,6FAA6F;IAC7F,qFAAqF;IACrF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7G,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CACrB,IAAqB,EACrB,OAAe,EACf,MAAyC,EACzC,MAAM,GAAG,QAAQ;IAEjB,MAAM,CAAC,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAClB,MAA2B,EAC3B,IAAqB,EACrB,OAAe,EACf,MAAyC;IAEzC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACpE,CAAC"}