@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,31 @@
1
+ /**
2
+ * The `neptune-https` transport (design section 12.4): Neptune Database's `POST /openCypher`
3
+ * (port 8182, TLS only), form fields `query` and `parameters`, signed with `credentials.awsSigV4`
4
+ * (service "neptune-db") or unsigned inside the VPC. Node only: Neptune Database sends no CORS
5
+ * headers, so a browser is refused before any request (E_SOURCE_RUNTIME, reason "cors").
6
+ *
7
+ * An error after the first chunk of a 200 answer is appended to the body; the tail is read for it.
8
+ */
9
+ import { type SourceContext } from "../../types.js";
10
+ import { type QueryResult } from "../flatten.js";
11
+ import { type Transport, type TransportInput } from "./transport.js";
12
+ /**
13
+ * Refuse a Neptune transport where it cannot run.
14
+ * @param ctx - the context
15
+ * @param transport - the transport name
16
+ */
17
+ export declare function nodeOnly(ctx: SourceContext, transport: string): void;
18
+ /**
19
+ * Turn a Neptune answer into a result, or raise its error.
20
+ * @param input - the transport input
21
+ * @param response - the answer
22
+ * @returns the mapped result
23
+ */
24
+ export declare function neptuneResult(input: TransportInput, response: Response): Promise<QueryResult>;
25
+ /**
26
+ * Make the transport.
27
+ * @param input - the context, params and mapper
28
+ * @returns the transport
29
+ */
30
+ export declare function neptuneHttpsTransport(input: TransportInput): Transport;
31
+ //# sourceMappingURL=neptune-https.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neptune-https.d.ts","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/neptune-https.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAsC,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AASzG;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAOpE;AAiBD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAmCnG;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAoBtE"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * The `neptune-https` transport (design section 12.4): Neptune Database's `POST /openCypher`
3
+ * (port 8182, TLS only), form fields `query` and `parameters`, signed with `credentials.awsSigV4`
4
+ * (service "neptune-db") or unsigned inside the VPC. Node only: Neptune Database sends no CORS
5
+ * headers, so a browser is refused before any request (E_SOURCE_RUNTIME, reason "cors").
6
+ *
7
+ * An error after the first chunk of a 200 answer is appended to the body; the tail is read for it.
8
+ */
9
+ import { originOf } from "../../credentials.js";
10
+ import { failOn } from "../../fail.js";
11
+ import { neptuneProfile } from "../profiles.js";
12
+ import { fromNeptune } from "../types-map.js";
13
+ import { objectRows, parseJson, serverError } from "./transport.js";
14
+ /**
15
+ * Refuse a Neptune transport where it cannot run.
16
+ * @param ctx - the context
17
+ * @param transport - the transport name
18
+ */
19
+ export function nodeOnly(ctx, transport) {
20
+ if (ctx.runtime === "browser" || ctx.runtime === "worker") {
21
+ failOn(ctx.report, "E_SOURCE_RUNTIME", `the ${transport} transport cannot run in a browser`, {
22
+ runtime: ctx.runtime,
23
+ reason: "cors",
24
+ });
25
+ }
26
+ }
27
+ /**
28
+ * The error a body ends with, when a 200 answer was cut short by one.
29
+ * @param text - the body
30
+ * @returns the error, or null
31
+ */
32
+ function trailingError(text) {
33
+ for (let at = text.lastIndexOf("{"); at > 0; at = text.lastIndexOf("{", at - 1)) {
34
+ const tail = parseJson(text.slice(at));
35
+ if (tail !== null && typeof tail.code === "string") {
36
+ return tail;
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+ /**
42
+ * Turn a Neptune answer into a result, or raise its error.
43
+ * @param input - the transport input
44
+ * @param response - the answer
45
+ * @returns the mapped result
46
+ */
47
+ export async function neptuneResult(input, response) {
48
+ const { ctx, m } = input;
49
+ const origin = ctx.endpoint === null ? "" : originOf(ctx.endpoint);
50
+ const text = await response.text();
51
+ const body = parseJson(text);
52
+ let error = typeof body?.code === "string" ? body : null;
53
+ if (body === null) {
54
+ error = trailingError(text);
55
+ }
56
+ if (error !== null) {
57
+ serverError(ctx.report, {
58
+ code: error.code ?? null,
59
+ message: error.detailedMessage ?? error.message ?? "",
60
+ status: response.status,
61
+ showable: body !== null && response.status >= 400 && response.status < 500,
62
+ }, origin, undefined);
63
+ }
64
+ if (!response.ok) {
65
+ failOn(ctx.report, "E_FETCH", `${origin} answered ${String(response.status)}`, {
66
+ url: origin,
67
+ status: response.status,
68
+ });
69
+ }
70
+ if (body === null || !Array.isArray(body.results)) {
71
+ failOn(ctx.report, "E_SOURCE_RESPONSE", "the Neptune answer has no results", {
72
+ expected: "json",
73
+ contentType: response.headers.get("content-type"),
74
+ });
75
+ }
76
+ return objectRows(body.results, (v, column) => fromNeptune(v, column, m));
77
+ }
78
+ /**
79
+ * Make the transport.
80
+ * @param input - the context, params and mapper
81
+ * @returns the transport
82
+ */
83
+ export function neptuneHttpsTransport(input) {
84
+ const { ctx } = input;
85
+ nodeOnly(ctx, "neptune-https");
86
+ return {
87
+ async run(statement, parameters) {
88
+ const response = await ctx.fetch("openCypher", {
89
+ method: "POST",
90
+ idempotent: true,
91
+ allowStatus: [400, 500],
92
+ body: new URLSearchParams({ query: statement, parameters: JSON.stringify(parameters) }),
93
+ });
94
+ return neptuneResult(input, response);
95
+ },
96
+ profile: () => Promise.resolve(neptuneProfile()),
97
+ probe: async () => {
98
+ const status = await ctx.fetchJson("status");
99
+ return neptuneProfile(typeof status.dbEngineVersion === "string" ? status.dbEngineVersion : null);
100
+ },
101
+ close: () => Promise.resolve(),
102
+ };
103
+ }
104
+ //# sourceMappingURL=neptune-https.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neptune-https.js","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/neptune-https.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The `query-api` transport (design section 12.2): Neo4j's `POST /db/{database}/query/v2`, on by
3
+ * default since Neo4j 5.26 and on Aura, with no driver. It asks for typed JSON, so integers keep
4
+ * every digit, and sends `accessMode: "Read"`, which the server enforces. CORS is open by default,
5
+ * so it works from a page on https.
6
+ */
7
+ import { type Transport, type TransportInput } from "./transport.js";
8
+ /**
9
+ * Make the transport.
10
+ * @param input - the context, params and mapper
11
+ * @returns the transport
12
+ */
13
+ export declare function queryApiTransport(input: TransportInput): Transport;
14
+ //# sourceMappingURL=query-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-api.d.ts","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/query-api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAA0B,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAc7F;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAoElE"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * The `query-api` transport (design section 12.2): Neo4j's `POST /db/{database}/query/v2`, on by
3
+ * default since Neo4j 5.26 and on Aura, with no driver. It asks for typed JSON, so integers keep
4
+ * every digit, and sends `accessMode: "Read"`, which the server enforces. CORS is open by default,
5
+ * so it works from a page on https.
6
+ */
7
+ import { originOf } from "../../credentials.js";
8
+ import { failOn } from "../../fail.js";
9
+ import { neo4jProfile } from "../profiles.js";
10
+ import { fromTypedJson } from "../types-map.js";
11
+ import { parseJson, serverError } from "./transport.js";
12
+ /** The media type of Neo4j's typed JSON. */
13
+ const TYPED_JSON = "application/vnd.neo4j.query.v1.1";
14
+ /** The statuses whose JSON body says what went wrong. */
15
+ const ERROR_STATUSES = [400, 404, 500];
16
+ /**
17
+ * Make the transport.
18
+ * @param input - the context, params and mapper
19
+ * @returns the transport
20
+ */
21
+ export function queryApiTransport(input) {
22
+ const { ctx, params, m } = input;
23
+ const database = params.database ?? "neo4j";
24
+ const path = `db/${encodeURIComponent(database)}/query/v2`;
25
+ const origin = ctx.endpoint === null ? "" : originOf(ctx.endpoint);
26
+ const run = async (statement, parameters) => {
27
+ const response = await ctx.fetch(path, {
28
+ method: "POST",
29
+ idempotent: true,
30
+ allowStatus: ERROR_STATUSES,
31
+ headers: { "Content-Type": "application/json", Accept: TYPED_JSON },
32
+ body: JSON.stringify({ statement, parameters, accessMode: "Read" }),
33
+ });
34
+ const body = parseJson(await response.text());
35
+ const first = body?.errors?.[0];
36
+ if (first !== undefined) {
37
+ serverError(ctx.report, {
38
+ code: first.code ?? null,
39
+ message: first.message ?? "",
40
+ status: response.status,
41
+ showable: response.status >= 400 && response.status < 500,
42
+ }, origin, params.database);
43
+ }
44
+ if (response.status === 404) {
45
+ // no Query API here: a Neo4j before 5.26 answers 404, and speaks only Bolt
46
+ failOn(ctx.report, "E_SOURCE_NOT_FOUND", `${origin} has no Query API at ${path}`, {
47
+ what: "url",
48
+ value: `${origin}/${path}`,
49
+ });
50
+ }
51
+ if (!response.ok) {
52
+ failOn(ctx.report, "E_FETCH", `${origin} answered ${String(response.status)}`, {
53
+ url: `${origin}/${path}`,
54
+ status: response.status,
55
+ });
56
+ }
57
+ if (body?.data === undefined) {
58
+ failOn(ctx.report, "E_SOURCE_RESPONSE", "the Query API answer has no data", {
59
+ expected: "json",
60
+ contentType: response.headers.get("content-type"),
61
+ });
62
+ }
63
+ const { fields, values } = body.data;
64
+ return { fields, rows: values.map((row) => row.map((v, i) => fromTypedJson(v, fields[i] ?? "", m))) };
65
+ };
66
+ return {
67
+ run,
68
+ // the Query API exists from Neo4j 5.26, so ids are elementId()
69
+ profile: () => Promise.resolve(neo4jProfile(null)),
70
+ probe: async () => {
71
+ const res = await run("CALL dbms.components() YIELD name, versions, edition RETURN name, versions, edition", {});
72
+ const kernel = res.rows.find((r) => r[0] === "Neo4j Kernel") ?? res.rows[0];
73
+ const versions = kernel?.[1];
74
+ const version = Array.isArray(versions) && typeof versions[0] === "string" ? versions[0] : null;
75
+ return neo4jProfile(version);
76
+ },
77
+ close: () => Promise.resolve(),
78
+ };
79
+ }
80
+ //# sourceMappingURL=query-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-api.js","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/query-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * What every Cypher transport is (design section 12.2): something that runs one statement with
3
+ * its parameters and returns mapped rows, knows the server's profile, and closes. Also the one
4
+ * place a server's own error code becomes a source issue code.
5
+ */
6
+ import { type ImportReportBuilder } from "../../../common/report.js";
7
+ import { type SourceContext } from "../../types.js";
8
+ import { type QueryResult } from "../flatten.js";
9
+ import { type CypherParams } from "../params.js";
10
+ import { type CypherProfile } from "../profiles.js";
11
+ import { type MapContext } from "../types-map.js";
12
+ /** One way a Cypher statement travels to a server. Internal. */
13
+ export interface Transport {
14
+ /**
15
+ * Run one read-only statement.
16
+ * @param statement - the statement
17
+ * @param parameters - its parameters, sent separately
18
+ * @returns the mapped result
19
+ */
20
+ run(statement: string, parameters: Readonly<Record<string, unknown>>): Promise<QueryResult>;
21
+ /**
22
+ * The server's profile, detected once.
23
+ * @returns the profile
24
+ */
25
+ profile(): Promise<CypherProfile>;
26
+ /**
27
+ * The server facts `probe` reports, which may cost a request.
28
+ * @returns the profile with its version filled in where the server says it
29
+ */
30
+ probe(): Promise<CypherProfile>;
31
+ /** Release the connection. */
32
+ close(): Promise<void>;
33
+ }
34
+ /** What a transport is made from. */
35
+ export interface TransportInput {
36
+ /** The load's context. */
37
+ readonly ctx: SourceContext;
38
+ /** The params, with defaults. */
39
+ readonly params: CypherParams;
40
+ /** The type mapper's context. */
41
+ readonly m: MapContext;
42
+ }
43
+ /** What a server said about a failed statement. */
44
+ interface ServerError {
45
+ /** The service's own code, or null. */
46
+ readonly code: string | null;
47
+ /** Its message, or "". */
48
+ readonly message: string;
49
+ /** The HTTP status, or null over Bolt. */
50
+ readonly status: number | null;
51
+ /** Whether the message came from a JSON 4xx body (or a Bolt client error), so a report may keep it. */
52
+ readonly showable: boolean;
53
+ }
54
+ /**
55
+ * Raise the source issue a server error is: a login failure, a refusal, a server timeout, a
56
+ * missing database, or E_SOURCE_QUERY with the line and column the message names.
57
+ * @param report - the load's report
58
+ * @param err - what the server said
59
+ * @param origin - the origin that answered
60
+ * @param database - the database asked for, if any
61
+ * @returns never; it throws
62
+ */
63
+ export declare function serverError(report: ImportReportBuilder, err: ServerError, origin: string, database: string | undefined): never;
64
+ /**
65
+ * The value of a response body as JSON, or null when it is not JSON.
66
+ * @param text - the body
67
+ * @returns the parsed value, or null
68
+ */
69
+ export declare function parseJson(text: string): unknown;
70
+ /**
71
+ * The fields and rows of a result given as one object per row (Neptune's `results`).
72
+ * @param results - the row objects
73
+ * @param map - maps one value, given its column
74
+ * @returns the result
75
+ */
76
+ export declare function objectRows(results: readonly Readonly<Record<string, unknown>>[], map: (v: unknown, column: string) => unknown): QueryResult;
77
+ export {};
78
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,gEAAgE;AAChE,MAAM,WAAW,SAAS;IACtB;;;;;OAKG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5F;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,8BAA8B;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC3B,0BAA0B;IAC1B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,iCAAiC;IACjC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC;CAC1B;AAKD,mDAAmD;AACnD,UAAU,WAAW;IACjB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,0BAA0B;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uGAAuG;IACvG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACvB,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC7B,KAAK,CAmCP;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM/C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACtB,OAAO,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,EACrD,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,GAC7C,WAAW,CAGb"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * What every Cypher transport is (design section 12.2): something that runs one statement with
3
+ * its parameters and returns mapped rows, knows the server's profile, and closes. Also the one
4
+ * place a server's own error code becomes a source issue code.
5
+ */
6
+ import { failOn } from "../../fail.js";
7
+ /** The longest server message a report keeps. */
8
+ const MAX_SERVER_MESSAGE = 500;
9
+ /**
10
+ * Raise the source issue a server error is: a login failure, a refusal, a server timeout, a
11
+ * missing database, or E_SOURCE_QUERY with the line and column the message names.
12
+ * @param report - the load's report
13
+ * @param err - what the server said
14
+ * @param origin - the origin that answered
15
+ * @param database - the database asked for, if any
16
+ * @returns never; it throws
17
+ */
18
+ export function serverError(report, err, origin, database) {
19
+ const code = err.code ?? "";
20
+ if (/Security\.Unauthorized|AuthenticationRateLimit|UnauthorizedException/i.test(code)) {
21
+ return failOn(report, "E_SOURCE_AUTH", `${origin} refused the login`, {
22
+ origin,
23
+ status: err.status,
24
+ scheme: null,
25
+ serverCode: err.code,
26
+ });
27
+ }
28
+ if (/Security\.Forbidden|AccessMode|AccessDenied/i.test(code)) {
29
+ return failOn(report, "E_SOURCE_FORBIDDEN", `${origin} refused the statement`, {
30
+ status: err.status,
31
+ serverCode: err.code,
32
+ });
33
+ }
34
+ if (/TimedOut|Timeout|TimeLimitExceeded/i.test(code)) {
35
+ return failOn(report, "E_SOURCE_TIMEOUT", `${origin} timed the statement out`, {
36
+ timeoutMs: null,
37
+ serverSide: true,
38
+ });
39
+ }
40
+ if (/DatabaseNotFound/i.test(code)) {
41
+ return failOn(report, "E_SOURCE_NOT_FOUND", `${origin} has no database ${String(database)}`, {
42
+ what: "database",
43
+ value: database ?? null,
44
+ });
45
+ }
46
+ const where = /line (\d+), column (\d+)/i.exec(err.message);
47
+ return failOn(report, "E_SOURCE_QUERY", `${origin} refused the query: ${code}`, {
48
+ serverCode: err.code,
49
+ line: where === null ? null : Number(where[1]),
50
+ column: where === null ? null : Number(where[2]),
51
+ serverMessage: err.showable && err.message !== "" ? err.message.slice(0, MAX_SERVER_MESSAGE) : null,
52
+ });
53
+ }
54
+ /**
55
+ * The value of a response body as JSON, or null when it is not JSON.
56
+ * @param text - the body
57
+ * @returns the parsed value, or null
58
+ */
59
+ export function parseJson(text) {
60
+ try {
61
+ return JSON.parse(text);
62
+ }
63
+ catch {
64
+ return null;
65
+ }
66
+ }
67
+ /**
68
+ * The fields and rows of a result given as one object per row (Neptune's `results`).
69
+ * @param results - the row objects
70
+ * @param map - maps one value, given its column
71
+ * @returns the result
72
+ */
73
+ export function objectRows(results, map) {
74
+ const fields = [...new Set(results.flatMap((r) => Object.keys(r)))];
75
+ return { fields, rows: results.map((r) => fields.map((f) => map(r[f], f))) };
76
+ }
77
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../../src/sources/cypher/transports/transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
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 { type ImportReportBuilder } from "../../common/report.js";
13
+ /** A node a query returned. */
14
+ export declare class GraphNode {
15
+ readonly id: string;
16
+ readonly labels: readonly string[];
17
+ readonly properties: Readonly<Record<string, unknown>>;
18
+ /**
19
+ * Create one.
20
+ * @param id - the server's element id
21
+ * @param labels - its labels
22
+ * @param properties - its mapped properties
23
+ */
24
+ constructor(id: string, labels: readonly string[], properties: Readonly<Record<string, unknown>>);
25
+ }
26
+ /** A relationship a query returned. */
27
+ export declare class GraphRel {
28
+ readonly id: string;
29
+ readonly start: string;
30
+ readonly end: string;
31
+ readonly type: string;
32
+ readonly properties: Readonly<Record<string, unknown>>;
33
+ /**
34
+ * Create one.
35
+ * @param id - the server's element id
36
+ * @param start - the start node's element id
37
+ * @param end - the end node's element id
38
+ * @param type - its type
39
+ * @param properties - its mapped properties
40
+ */
41
+ constructor(id: string, start: string, end: string, type: string, properties: Readonly<Record<string, unknown>>);
42
+ }
43
+ /** What the mapper needs: the `long` choice and the report its warnings go to. */
44
+ export interface MapContext {
45
+ /** Integers past 2^53: "f64" (rounded, W_PRECISION) or "string". */
46
+ readonly long: "f64" | "string";
47
+ /** The load's report. */
48
+ readonly report: ImportReportBuilder;
49
+ }
50
+ /**
51
+ * Map a value of Neo4j's typed JSON (the Query API's `application/vnd.neo4j.query.v1.1`).
52
+ * @param v - the wire value
53
+ * @param column - the result column or property key it belongs to
54
+ * @param m - the map context
55
+ * @returns the plain value, a GraphNode, a GraphRel or an array; undefined when dropped
56
+ */
57
+ export declare function fromTypedJson(v: unknown, column: string, m: MapContext): unknown;
58
+ /** The parts of neo4j-driver the mapper uses: its type checks. */
59
+ export interface DriverTypes {
60
+ isInt(v: unknown): boolean;
61
+ isNode(v: unknown): boolean;
62
+ isRelationship(v: unknown): boolean;
63
+ isPath(v: unknown): boolean;
64
+ isPoint(v: unknown): boolean;
65
+ isDate(v: unknown): boolean;
66
+ isDateTime(v: unknown): boolean;
67
+ isLocalDateTime(v: unknown): boolean;
68
+ isLocalTime(v: unknown): boolean;
69
+ isTime(v: unknown): boolean;
70
+ isDuration(v: unknown): boolean;
71
+ }
72
+ /**
73
+ * Map a value neo4j-driver returned. Its lossless Integer keeps every digit, so `long` decides.
74
+ * @param v - the driver value
75
+ * @param column - the result column or property key
76
+ * @param m - the map context
77
+ * @param t - the driver's type checks
78
+ * @returns the plain value, a GraphNode, a GraphRel or an array; undefined when dropped
79
+ */
80
+ export declare function fromDriver(v: unknown, column: string, m: MapContext, t: DriverTypes): unknown;
81
+ /**
82
+ * Map a value of Neptune's openCypher JSON: nodes `{ "~id", "~entityType": "node", "~labels",
83
+ * "~properties" }`, relationships adding `~start`, `~end`, `~type`. Its numbers are plain JSON, so
84
+ * an integer past 2^53 was already rounded on the wire (W_PRECISION).
85
+ * @param v - the wire value
86
+ * @param column - the result column or property key
87
+ * @param m - the map context
88
+ * @returns the plain value, a GraphNode, a GraphRel or an array
89
+ */
90
+ export declare function fromNeptune(v: unknown, column: string, m: MapContext): unknown;
91
+ //# sourceMappingURL=types-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-map.d.ts","sourceRoot":"","sources":["../../../../src/sources/cypher/types-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,+BAA+B;AAC/B,qBAAa,SAAS;IAQd,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE;IAClC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAT1D;;;;;OAKG;gBAEU,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAE7D;AAED,uCAAuC;AACvC,qBAAa,QAAQ;IAUb,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAb1D;;;;;;;OAOG;gBAEU,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAE7D;AAED,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACvB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IAChC,yBAAyB;IACzB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACxC;AA2HD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CA8DhF;AAED,kEAAkE;AAClE,MAAM,WAAW,WAAW;IACxB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3B,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACpC,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAChC,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACrC,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CACnC;AA2ED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAuC7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAqB9E"}