@graphty/graph-io 0.3.47 → 0.3.49

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 (770) hide show
  1. package/dist/chunks/{approximations-wWjCRzKj.js → approximations-Bzn3L-je.js} +2 -2
  2. package/dist/chunks/{approximations-wWjCRzKj.js.map → approximations-Bzn3L-je.js.map} +1 -1
  3. package/dist/chunks/bends-BGXjv_U4.js +129 -0
  4. package/dist/chunks/bends-BGXjv_U4.js.map +1 -0
  5. package/dist/chunks/{block-DiGq58c3.js → block-iptrlMBb.js} +947 -134
  6. package/dist/chunks/block-iptrlMBb.js.map +1 -0
  7. package/dist/chunks/choose-CczZJaX_.js +717 -0
  8. package/dist/chunks/choose-CczZJaX_.js.map +1 -0
  9. package/dist/chunks/codes-BE2xir2k.js +157 -0
  10. package/dist/chunks/codes-BE2xir2k.js.map +1 -0
  11. package/dist/chunks/{constants-BKwqelYD.js → constants-CKkYLPtt.js} +2 -2
  12. package/dist/chunks/{constants-BKwqelYD.js.map → constants-CKkYLPtt.js.map} +1 -1
  13. package/dist/chunks/context-C3p0RQxR.js +664 -0
  14. package/dist/chunks/context-C3p0RQxR.js.map +1 -0
  15. package/dist/chunks/{convert-BcQ8_jMo.js → convert-Ct2zelbQ.js} +7 -2
  16. package/dist/chunks/convert-Ct2zelbQ.js.map +1 -0
  17. package/dist/chunks/credentials-DXHx7nwR.js +349 -0
  18. package/dist/chunks/credentials-DXHx7nwR.js.map +1 -0
  19. package/dist/chunks/cx-export-Bt6NoqTQ.js +259 -0
  20. package/dist/chunks/cx-export-Bt6NoqTQ.js.map +1 -0
  21. package/dist/chunks/descriptor-B28U25x4.js +60 -0
  22. package/dist/chunks/descriptor-B28U25x4.js.map +1 -0
  23. package/dist/chunks/descriptor-C-YDhtsn.js +48 -0
  24. package/dist/chunks/descriptor-C-YDhtsn.js.map +1 -0
  25. package/dist/chunks/descriptor-DLA5kINx.js +142 -0
  26. package/dist/chunks/descriptor-DLA5kINx.js.map +1 -0
  27. package/dist/chunks/{emit-CwU8cUmG.js → emit-BwHQkZle.js} +1690 -103
  28. package/dist/chunks/emit-BwHQkZle.js.map +1 -0
  29. package/dist/chunks/{escape-CgzxiYPg.js → escape-CuCIzNMB.js} +12 -12
  30. package/dist/chunks/{escape-CgzxiYPg.js.map → escape-CuCIzNMB.js.map} +1 -1
  31. package/dist/chunks/{export-BvqAXCKh.js → export-Cha4dRFz.js} +48 -1780
  32. package/dist/chunks/export-Cha4dRFz.js.map +1 -0
  33. package/dist/chunks/{exporter--Mk9gXCJ.js → exporter-BP6otMO6.js} +6 -4
  34. package/dist/chunks/{exporter--Mk9gXCJ.js.map → exporter-BP6otMO6.js.map} +1 -1
  35. package/dist/chunks/{exporter-CrDWIyiq.js → exporter-D2CETOMK.js} +1222 -154
  36. package/dist/chunks/exporter-D2CETOMK.js.map +1 -0
  37. package/dist/chunks/{exporter-DndFlGSa.js → exporter-D9yMtocA.js} +7 -6
  38. package/dist/chunks/{exporter-DndFlGSa.js.map → exporter-D9yMtocA.js.map} +1 -1
  39. package/dist/chunks/exporter-_jrBTnos.js +1009 -0
  40. package/dist/chunks/exporter-_jrBTnos.js.map +1 -0
  41. package/dist/chunks/{exporter-CJgfhF-l.js → exporter-nDfxIK5D.js} +9 -7
  42. package/dist/chunks/{exporter-CJgfhF-l.js.map → exporter-nDfxIK5D.js.map} +1 -1
  43. package/dist/chunks/format-BXiAb-1h.js +408 -0
  44. package/dist/chunks/format-BXiAb-1h.js.map +1 -0
  45. package/dist/chunks/{generic-Dq1ntt9q.js → generic-ymWCETAJ.js} +387 -31
  46. package/dist/chunks/generic-ymWCETAJ.js.map +1 -0
  47. package/dist/chunks/{importer-CMmeMWlC.js → importer-B92x1xY5.js} +15 -263
  48. package/dist/chunks/importer-B92x1xY5.js.map +1 -0
  49. package/dist/chunks/{importer-DiZRmOQG.js → importer-CT9mJ1nn.js} +328 -90
  50. package/dist/chunks/importer-CT9mJ1nn.js.map +1 -0
  51. package/dist/chunks/{importer-COTK9Tsl.js → importer-DaLTjbds.js} +116 -1099
  52. package/dist/chunks/importer-DaLTjbds.js.map +1 -0
  53. package/dist/chunks/{importer-iFYPEKaJ.js → importer-GREKMdIf.js} +28 -16
  54. package/dist/chunks/importer-GREKMdIf.js.map +1 -0
  55. package/dist/chunks/{importer-BSvfrX_h.js → importer-PqaaKKnY.js} +23 -1016
  56. package/dist/chunks/importer-PqaaKKnY.js.map +1 -0
  57. package/dist/chunks/{importer-yh_aBCU6.js → importer-Vn5QvmmJ.js} +66 -12
  58. package/dist/chunks/importer-Vn5QvmmJ.js.map +1 -0
  59. package/dist/chunks/{importer-e6LGpqHB.js → importer-vRq4h3j5.js} +1470 -354
  60. package/dist/chunks/importer-vRq4h3j5.js.map +1 -0
  61. package/dist/chunks/input-CAxt_aV-.js +1397 -0
  62. package/dist/chunks/input-CAxt_aV-.js.map +1 -0
  63. package/dist/chunks/{json-elements-DJZRZ6jd.js → json-elements-Cq76WjnZ.js} +4 -4
  64. package/dist/chunks/{json-elements-DJZRZ6jd.js.map → json-elements-Cq76WjnZ.js.map} +1 -1
  65. package/dist/chunks/{lexicon-CT69Kd87.js → lexicon-Clf4QIyl.js} +299 -77
  66. package/dist/chunks/lexicon-Clf4QIyl.js.map +1 -0
  67. package/dist/chunks/{ontology-export-G4MqRdux.js → ontology-export-OMo91mb0.js} +4 -3
  68. package/dist/chunks/{ontology-export-G4MqRdux.js.map → ontology-export-OMo91mb0.js.map} +1 -1
  69. package/dist/chunks/{records-CiaWZrFH.js → records-NJiYvekn.js} +2 -2
  70. package/dist/chunks/{records-CiaWZrFH.js.map → records-NJiYvekn.js.map} +1 -1
  71. package/dist/chunks/{format-BpQBx8MZ.js → report-CwMfYa9J.js} +70 -127
  72. package/dist/chunks/report-CwMfYa9J.js.map +1 -0
  73. package/dist/chunks/round-trip-Zm3_ivgq.js +79 -0
  74. package/dist/chunks/round-trip-Zm3_ivgq.js.map +1 -0
  75. package/dist/chunks/sigv4-EokFic1V.js +247 -0
  76. package/dist/chunks/sigv4-EokFic1V.js.map +1 -0
  77. package/dist/chunks/{styles-BQnsga7p.js → styles-CCs214_3.js} +1300 -168
  78. package/dist/chunks/styles-CCs214_3.js.map +1 -0
  79. package/dist/chunks/styles-Cm62yyQX.js +2812 -0
  80. package/dist/chunks/styles-Cm62yyQX.js.map +1 -0
  81. package/dist/chunks/styles-DPQQIig4.js +1928 -0
  82. package/dist/chunks/styles-DPQQIig4.js.map +1 -0
  83. package/dist/chunks/styles-yed-UMFdNqze.js +1213 -0
  84. package/dist/chunks/styles-yed-UMFdNqze.js.map +1 -0
  85. package/dist/chunks/{text-CzJNFOS9.js → text-ystE2bYi.js} +2 -2
  86. package/dist/chunks/{text-CzJNFOS9.js.map → text-ystE2bYi.js.map} +1 -1
  87. package/dist/csv.js +7 -5
  88. package/dist/csv.js.map +1 -1
  89. package/dist/cx.js +5 -4
  90. package/dist/cx.js.map +1 -1
  91. package/dist/cx2.js +2 -2
  92. package/dist/cys.js +1 -1
  93. package/dist/dot.js +5 -4
  94. package/dist/dot.js.map +1 -1
  95. package/dist/gexf.js +42 -10
  96. package/dist/gexf.js.map +1 -1
  97. package/dist/gml.js +850 -193
  98. package/dist/gml.js.map +1 -1
  99. package/dist/graph-io.js +1189 -220
  100. package/dist/graph-io.js.map +1 -1
  101. package/dist/graphml.js +3 -3
  102. package/dist/json.js +3 -2
  103. package/dist/neo4j.js +6 -4
  104. package/dist/neo4j.js.map +1 -1
  105. package/dist/obo.js +1 -1
  106. package/dist/pajek.js +1 -1
  107. package/dist/positions.js +45 -3
  108. package/dist/positions.js.map +1 -1
  109. package/dist/sources-cypher.d.ts +1 -0
  110. package/dist/sources-cypher.js +1351 -0
  111. package/dist/sources-cypher.js.map +1 -0
  112. package/dist/sources-ndex.d.ts +1 -0
  113. package/dist/sources-ndex.js +278 -0
  114. package/dist/sources-ndex.js.map +1 -0
  115. package/dist/sources-rest.d.ts +1 -0
  116. package/dist/sources-rest.js +1377 -0
  117. package/dist/sources-rest.js.map +1 -0
  118. package/dist/sources-sparql.d.ts +1 -0
  119. package/dist/sources-sparql.js +405 -0
  120. package/dist/sources-sparql.js.map +1 -0
  121. package/dist/src/common/report.d.ts +6 -3
  122. package/dist/src/common/report.d.ts.map +1 -1
  123. package/dist/src/common/report.js +15 -9
  124. package/dist/src/common/report.js.map +1 -1
  125. package/dist/src/formats/cx/importer.d.ts.map +1 -1
  126. package/dist/src/formats/cx/importer.js +5 -1
  127. package/dist/src/formats/cx/importer.js.map +1 -1
  128. package/dist/src/formats/cx/styles.d.ts +24 -1
  129. package/dist/src/formats/cx/styles.d.ts.map +1 -1
  130. package/dist/src/formats/cx/styles.js +118 -11
  131. package/dist/src/formats/cx/styles.js.map +1 -1
  132. package/dist/src/formats/cx2/importer.d.ts.map +1 -1
  133. package/dist/src/formats/cx2/importer.js +1 -0
  134. package/dist/src/formats/cx2/importer.js.map +1 -1
  135. package/dist/src/formats/cx2/styles.d.ts.map +1 -1
  136. package/dist/src/formats/cx2/styles.js +3 -1
  137. package/dist/src/formats/cx2/styles.js.map +1 -1
  138. package/dist/src/formats/cys/importer.d.ts.map +1 -1
  139. package/dist/src/formats/cys/importer.js +1 -0
  140. package/dist/src/formats/cys/importer.js.map +1 -1
  141. package/dist/src/formats/cys/styles.d.ts +2 -0
  142. package/dist/src/formats/cys/styles.d.ts.map +1 -1
  143. package/dist/src/formats/cys/styles.js +15 -7
  144. package/dist/src/formats/cys/styles.js.map +1 -1
  145. package/dist/src/formats/dot/drawing.d.ts +98 -0
  146. package/dist/src/formats/dot/drawing.d.ts.map +1 -0
  147. package/dist/src/formats/dot/drawing.js +734 -0
  148. package/dist/src/formats/dot/drawing.js.map +1 -0
  149. package/dist/src/formats/dot/importer.d.ts.map +1 -1
  150. package/dist/src/formats/dot/importer.js +108 -31
  151. package/dist/src/formats/dot/importer.js.map +1 -1
  152. package/dist/src/formats/dot/label-places.d.ts +34 -0
  153. package/dist/src/formats/dot/label-places.d.ts.map +1 -0
  154. package/dist/src/formats/dot/label-places.js +179 -0
  155. package/dist/src/formats/dot/label-places.js.map +1 -0
  156. package/dist/src/formats/dot/record.d.ts +50 -0
  157. package/dist/src/formats/dot/record.d.ts.map +1 -0
  158. package/dist/src/formats/dot/record.js +275 -0
  159. package/dist/src/formats/dot/record.js.map +1 -0
  160. package/dist/src/formats/dot/styles.d.ts +62 -2
  161. package/dist/src/formats/dot/styles.d.ts.map +1 -1
  162. package/dist/src/formats/dot/styles.js +1457 -120
  163. package/dist/src/formats/dot/styles.js.map +1 -1
  164. package/dist/src/formats/gexf/dialog-metrics.d.ts +15 -0
  165. package/dist/src/formats/gexf/dialog-metrics.d.ts.map +1 -0
  166. package/dist/src/formats/gexf/dialog-metrics.js +59 -0
  167. package/dist/src/formats/gexf/dialog-metrics.js.map +1 -0
  168. package/dist/src/formats/gexf/importer.d.ts +7 -0
  169. package/dist/src/formats/gexf/importer.d.ts.map +1 -1
  170. package/dist/src/formats/gexf/importer.js +41 -5
  171. package/dist/src/formats/gexf/importer.js.map +1 -1
  172. package/dist/src/formats/gexf/preview.d.ts +77 -0
  173. package/dist/src/formats/gexf/preview.d.ts.map +1 -0
  174. package/dist/src/formats/gexf/preview.js +191 -0
  175. package/dist/src/formats/gexf/preview.js.map +1 -0
  176. package/dist/src/formats/gexf/schema.d.ts.map +1 -1
  177. package/dist/src/formats/gexf/schema.js +2 -1
  178. package/dist/src/formats/gexf/schema.js.map +1 -1
  179. package/dist/src/formats/gexf/styles.d.ts +60 -16
  180. package/dist/src/formats/gexf/styles.d.ts.map +1 -1
  181. package/dist/src/formats/gexf/styles.js +883 -131
  182. package/dist/src/formats/gexf/styles.js.map +1 -1
  183. package/dist/src/formats/gml/importer.d.ts +5 -2
  184. package/dist/src/formats/gml/importer.d.ts.map +1 -1
  185. package/dist/src/formats/gml/importer.js +258 -71
  186. package/dist/src/formats/gml/importer.js.map +1 -1
  187. package/dist/src/formats/gml/index.d.ts +1 -1
  188. package/dist/src/formats/gml/index.d.ts.map +1 -1
  189. package/dist/src/formats/gml/index.js +1 -1
  190. package/dist/src/formats/gml/index.js.map +1 -1
  191. package/dist/src/formats/gml/positions.d.ts +7 -0
  192. package/dist/src/formats/gml/positions.d.ts.map +1 -1
  193. package/dist/src/formats/gml/positions.js +29 -7
  194. package/dist/src/formats/gml/positions.js.map +1 -1
  195. package/dist/src/formats/gml/styles.d.ts.map +1 -1
  196. package/dist/src/formats/gml/styles.js +756 -103
  197. package/dist/src/formats/gml/styles.js.map +1 -1
  198. package/dist/src/formats/graphml/styles-plain.d.ts.map +1 -1
  199. package/dist/src/formats/graphml/styles-plain.js +8 -12
  200. package/dist/src/formats/graphml/styles-plain.js.map +1 -1
  201. package/dist/src/formats/graphml/styles-yed.d.ts +21 -15
  202. package/dist/src/formats/graphml/styles-yed.d.ts.map +1 -1
  203. package/dist/src/formats/graphml/styles-yed.js +749 -148
  204. package/dist/src/formats/graphml/styles-yed.js.map +1 -1
  205. package/dist/src/formats/graphml/styles-yfiles3.d.ts +1 -1
  206. package/dist/src/formats/graphml/styles-yfiles3.d.ts.map +1 -1
  207. package/dist/src/formats/graphml/styles-yfiles3.js +429 -64
  208. package/dist/src/formats/graphml/styles-yfiles3.js.map +1 -1
  209. package/dist/src/formats/graphml/yfiles.d.ts +3 -3
  210. package/dist/src/formats/graphml/yfiles.d.ts.map +1 -1
  211. package/dist/src/formats/graphml/yfiles.js +16 -6
  212. package/dist/src/formats/graphml/yfiles.js.map +1 -1
  213. package/dist/src/formats/json/dialect.d.ts +3 -2
  214. package/dist/src/formats/json/dialect.d.ts.map +1 -1
  215. package/dist/src/formats/json/dialect.js +39 -5
  216. package/dist/src/formats/json/dialect.js.map +1 -1
  217. package/dist/src/formats/json/importer.d.ts +13 -2
  218. package/dist/src/formats/json/importer.d.ts.map +1 -1
  219. package/dist/src/formats/json/importer.js +42 -6
  220. package/dist/src/formats/json/importer.js.map +1 -1
  221. package/dist/src/formats/json/index.d.ts +1 -1
  222. package/dist/src/formats/json/index.d.ts.map +1 -1
  223. package/dist/src/formats/json/index.js +1 -1
  224. package/dist/src/formats/json/index.js.map +1 -1
  225. package/dist/src/formats/json/positions.d.ts +5 -2
  226. package/dist/src/formats/json/positions.d.ts.map +1 -1
  227. package/dist/src/formats/json/positions.js +20 -4
  228. package/dist/src/formats/json/positions.js.map +1 -1
  229. package/dist/src/formats/json/styles.d.ts +12 -1
  230. package/dist/src/formats/json/styles.d.ts.map +1 -1
  231. package/dist/src/formats/json/styles.js +1755 -136
  232. package/dist/src/formats/json/styles.js.map +1 -1
  233. package/dist/src/formats/pajek/draw.d.ts +96 -0
  234. package/dist/src/formats/pajek/draw.d.ts.map +1 -0
  235. package/dist/src/formats/pajek/draw.js +372 -0
  236. package/dist/src/formats/pajek/draw.js.map +1 -0
  237. package/dist/src/formats/pajek/exporter.d.ts.map +1 -1
  238. package/dist/src/formats/pajek/exporter.js +70 -51
  239. package/dist/src/formats/pajek/exporter.js.map +1 -1
  240. package/dist/src/formats/pajek/importer.d.ts +9 -0
  241. package/dist/src/formats/pajek/importer.d.ts.map +1 -1
  242. package/dist/src/formats/pajek/importer.js +233 -102
  243. package/dist/src/formats/pajek/importer.js.map +1 -1
  244. package/dist/src/formats/pajek/index.d.ts +1 -0
  245. package/dist/src/formats/pajek/index.d.ts.map +1 -1
  246. package/dist/src/formats/pajek/index.js.map +1 -1
  247. package/dist/src/formats/pajek/styles.d.ts +15 -7
  248. package/dist/src/formats/pajek/styles.d.ts.map +1 -1
  249. package/dist/src/formats/pajek/styles.js +1279 -114
  250. package/dist/src/formats/pajek/styles.js.map +1 -1
  251. package/dist/src/formats/pajek/syntax.d.ts +10 -1
  252. package/dist/src/formats/pajek/syntax.d.ts.map +1 -1
  253. package/dist/src/formats/pajek/syntax.js +26 -2
  254. package/dist/src/formats/pajek/syntax.js.map +1 -1
  255. package/dist/src/formats/xgmml/emit.d.ts +1 -0
  256. package/dist/src/formats/xgmml/emit.d.ts.map +1 -1
  257. package/dist/src/formats/xgmml/emit.js +65 -5
  258. package/dist/src/formats/xgmml/emit.js.map +1 -1
  259. package/dist/src/formats/xgmml/styles.d.ts +23 -3
  260. package/dist/src/formats/xgmml/styles.d.ts.map +1 -1
  261. package/dist/src/formats/xgmml/styles.js +278 -60
  262. package/dist/src/formats/xgmml/styles.js.map +1 -1
  263. package/dist/src/index.d.ts +10 -2
  264. package/dist/src/index.d.ts.map +1 -1
  265. package/dist/src/index.js +11 -2
  266. package/dist/src/index.js.map +1 -1
  267. package/dist/src/positions/convert.d.ts.map +1 -1
  268. package/dist/src/positions/convert.js +11 -1
  269. package/dist/src/positions/convert.js.map +1 -1
  270. package/dist/src/positions/extract.d.ts.map +1 -1
  271. package/dist/src/positions/extract.js +53 -1
  272. package/dist/src/positions/extract.js.map +1 -1
  273. package/dist/src/positions/index.d.ts +1 -1
  274. package/dist/src/positions/index.d.ts.map +1 -1
  275. package/dist/src/positions/types.d.ts +59 -0
  276. package/dist/src/positions/types.d.ts.map +1 -1
  277. package/dist/src/registry.d.ts +173 -1
  278. package/dist/src/registry.d.ts.map +1 -1
  279. package/dist/src/registry.js +196 -1
  280. package/dist/src/registry.js.map +1 -1
  281. package/dist/src/sources/builtins.d.ts +11 -0
  282. package/dist/src/sources/builtins.d.ts.map +1 -0
  283. package/dist/src/sources/builtins.js +53 -0
  284. package/dist/src/sources/builtins.js.map +1 -0
  285. package/dist/src/sources/codes.d.ts +230 -0
  286. package/dist/src/sources/codes.d.ts.map +1 -0
  287. package/dist/src/sources/codes.js +58 -0
  288. package/dist/src/sources/codes.js.map +1 -0
  289. package/dist/src/sources/context.d.ts +112 -0
  290. package/dist/src/sources/context.d.ts.map +1 -0
  291. package/dist/src/sources/context.js +740 -0
  292. package/dist/src/sources/context.js.map +1 -0
  293. package/dist/src/sources/credentials.d.ts +179 -0
  294. package/dist/src/sources/credentials.d.ts.map +1 -0
  295. package/dist/src/sources/credentials.js +301 -0
  296. package/dist/src/sources/credentials.js.map +1 -0
  297. package/dist/src/sources/cypher/descriptor.d.ts +21 -0
  298. package/dist/src/sources/cypher/descriptor.d.ts.map +1 -0
  299. package/dist/src/sources/cypher/descriptor.js +124 -0
  300. package/dist/src/sources/cypher/descriptor.js.map +1 -0
  301. package/dist/src/sources/cypher/flatten.d.ts +72 -0
  302. package/dist/src/sources/cypher/flatten.d.ts.map +1 -0
  303. package/dist/src/sources/cypher/flatten.js +279 -0
  304. package/dist/src/sources/cypher/flatten.js.map +1 -0
  305. package/dist/src/sources/cypher/index.d.ts +33 -0
  306. package/dist/src/sources/cypher/index.d.ts.map +1 -0
  307. package/dist/src/sources/cypher/index.js +511 -0
  308. package/dist/src/sources/cypher/index.js.map +1 -0
  309. package/dist/src/sources/cypher/params.d.ts +40 -0
  310. package/dist/src/sources/cypher/params.d.ts.map +1 -0
  311. package/dist/src/sources/cypher/params.js +6 -0
  312. package/dist/src/sources/cypher/params.js.map +1 -0
  313. package/dist/src/sources/cypher/profiles.d.ts +44 -0
  314. package/dist/src/sources/cypher/profiles.d.ts.map +1 -0
  315. package/dist/src/sources/cypher/profiles.js +61 -0
  316. package/dist/src/sources/cypher/profiles.js.map +1 -0
  317. package/dist/src/sources/cypher/query-builder.d.ts +123 -0
  318. package/dist/src/sources/cypher/query-builder.d.ts.map +1 -0
  319. package/dist/src/sources/cypher/query-builder.js +267 -0
  320. package/dist/src/sources/cypher/query-builder.js.map +1 -0
  321. package/dist/src/sources/cypher/transports/bolt.d.ts +21 -0
  322. package/dist/src/sources/cypher/transports/bolt.d.ts.map +1 -0
  323. package/dist/src/sources/cypher/transports/bolt.js +185 -0
  324. package/dist/src/sources/cypher/transports/bolt.js.map +1 -0
  325. package/dist/src/sources/cypher/transports/neptune-analytics.d.ts +15 -0
  326. package/dist/src/sources/cypher/transports/neptune-analytics.d.ts.map +1 -0
  327. package/dist/src/sources/cypher/transports/neptune-analytics.js +38 -0
  328. package/dist/src/sources/cypher/transports/neptune-analytics.js.map +1 -0
  329. package/dist/src/sources/cypher/transports/neptune-https.d.ts +31 -0
  330. package/dist/src/sources/cypher/transports/neptune-https.d.ts.map +1 -0
  331. package/dist/src/sources/cypher/transports/neptune-https.js +104 -0
  332. package/dist/src/sources/cypher/transports/neptune-https.js.map +1 -0
  333. package/dist/src/sources/cypher/transports/query-api.d.ts +14 -0
  334. package/dist/src/sources/cypher/transports/query-api.d.ts.map +1 -0
  335. package/dist/src/sources/cypher/transports/query-api.js +80 -0
  336. package/dist/src/sources/cypher/transports/query-api.js.map +1 -0
  337. package/dist/src/sources/cypher/transports/transport.d.ts +78 -0
  338. package/dist/src/sources/cypher/transports/transport.d.ts.map +1 -0
  339. package/dist/src/sources/cypher/transports/transport.js +77 -0
  340. package/dist/src/sources/cypher/transports/transport.js.map +1 -0
  341. package/dist/src/sources/cypher/types-map.d.ts +91 -0
  342. package/dist/src/sources/cypher/types-map.d.ts.map +1 -0
  343. package/dist/src/sources/cypher/types-map.js +306 -0
  344. package/dist/src/sources/cypher/types-map.js.map +1 -0
  345. package/dist/src/sources/define.d.ts +47 -0
  346. package/dist/src/sources/define.d.ts.map +1 -0
  347. package/dist/src/sources/define.js +173 -0
  348. package/dist/src/sources/define.js.map +1 -0
  349. package/dist/src/sources/fail.d.ts +33 -0
  350. package/dist/src/sources/fail.d.ts.map +1 -0
  351. package/dist/src/sources/fail.js +49 -0
  352. package/dist/src/sources/fail.js.map +1 -0
  353. package/dist/src/sources/ids.d.ts +69 -0
  354. package/dist/src/sources/ids.d.ts.map +1 -0
  355. package/dist/src/sources/ids.js +69 -0
  356. package/dist/src/sources/ids.js.map +1 -0
  357. package/dist/src/sources/ndex/client.d.ts +31 -0
  358. package/dist/src/sources/ndex/client.d.ts.map +1 -0
  359. package/dist/src/sources/ndex/client.js +90 -0
  360. package/dist/src/sources/ndex/client.js.map +1 -0
  361. package/dist/src/sources/ndex/descriptor.d.ts +10 -0
  362. package/dist/src/sources/ndex/descriptor.d.ts.map +1 -0
  363. package/dist/src/sources/ndex/descriptor.js +55 -0
  364. package/dist/src/sources/ndex/descriptor.js.map +1 -0
  365. package/dist/src/sources/ndex/expand.d.ts +20 -0
  366. package/dist/src/sources/ndex/expand.d.ts.map +1 -0
  367. package/dist/src/sources/ndex/expand.js +87 -0
  368. package/dist/src/sources/ndex/expand.js.map +1 -0
  369. package/dist/src/sources/ndex/index.d.ts +25 -0
  370. package/dist/src/sources/ndex/index.d.ts.map +1 -0
  371. package/dist/src/sources/ndex/index.js +191 -0
  372. package/dist/src/sources/ndex/index.js.map +1 -0
  373. package/dist/src/sources/ndex/params.d.ts +17 -0
  374. package/dist/src/sources/ndex/params.d.ts.map +1 -0
  375. package/dist/src/sources/ndex/params.js +6 -0
  376. package/dist/src/sources/ndex/params.js.map +1 -0
  377. package/dist/src/sources/ndex/share-url.d.ts +40 -0
  378. package/dist/src/sources/ndex/share-url.d.ts.map +1 -0
  379. package/dist/src/sources/ndex/share-url.js +64 -0
  380. package/dist/src/sources/ndex/share-url.js.map +1 -0
  381. package/dist/src/sources/params.d.ts +31 -0
  382. package/dist/src/sources/params.d.ts.map +1 -0
  383. package/dist/src/sources/params.js +6 -0
  384. package/dist/src/sources/params.js.map +1 -0
  385. package/dist/src/sources/registry.d.ts +118 -0
  386. package/dist/src/sources/registry.d.ts.map +1 -0
  387. package/dist/src/sources/registry.js +193 -0
  388. package/dist/src/sources/registry.js.map +1 -0
  389. package/dist/src/sources/rest/descriptor.d.ts +16 -0
  390. package/dist/src/sources/rest/descriptor.d.ts.map +1 -0
  391. package/dist/src/sources/rest/descriptor.js +76 -0
  392. package/dist/src/sources/rest/descriptor.js.map +1 -0
  393. package/dist/src/sources/rest/index.d.ts +14 -0
  394. package/dist/src/sources/rest/index.d.ts.map +1 -0
  395. package/dist/src/sources/rest/index.js +13 -0
  396. package/dist/src/sources/rest/index.js.map +1 -0
  397. package/dist/src/sources/rest/mapping.d.ts +30 -0
  398. package/dist/src/sources/rest/mapping.d.ts.map +1 -0
  399. package/dist/src/sources/rest/mapping.js +362 -0
  400. package/dist/src/sources/rest/mapping.js.map +1 -0
  401. package/dist/src/sources/rest/openalex.d.ts +27 -0
  402. package/dist/src/sources/rest/openalex.d.ts.map +1 -0
  403. package/dist/src/sources/rest/openalex.js +269 -0
  404. package/dist/src/sources/rest/openalex.js.map +1 -0
  405. package/dist/src/sources/rest/paging.d.ts +53 -0
  406. package/dist/src/sources/rest/paging.d.ts.map +1 -0
  407. package/dist/src/sources/rest/paging.js +138 -0
  408. package/dist/src/sources/rest/paging.js.map +1 -0
  409. package/dist/src/sources/rest/params.d.ts +216 -0
  410. package/dist/src/sources/rest/params.d.ts.map +1 -0
  411. package/dist/src/sources/rest/params.js +7 -0
  412. package/dist/src/sources/rest/params.js.map +1 -0
  413. package/dist/src/sources/rest/records.d.ts +41 -0
  414. package/dist/src/sources/rest/records.d.ts.map +1 -0
  415. package/dist/src/sources/rest/records.js +240 -0
  416. package/dist/src/sources/rest/records.js.map +1 -0
  417. package/dist/src/sources/rest/samples/deps-dev.d.ts +10 -0
  418. package/dist/src/sources/rest/samples/deps-dev.d.ts.map +1 -0
  419. package/dist/src/sources/rest/samples/deps-dev.js +47 -0
  420. package/dist/src/sources/rest/samples/deps-dev.js.map +1 -0
  421. package/dist/src/sources/rest/samples/string.d.ts +9 -0
  422. package/dist/src/sources/rest/samples/string.d.ts.map +1 -0
  423. package/dist/src/sources/rest/samples/string.js +42 -0
  424. package/dist/src/sources/rest/samples/string.js.map +1 -0
  425. package/dist/src/sources/rest/selectors.d.ts +41 -0
  426. package/dist/src/sources/rest/selectors.d.ts.map +1 -0
  427. package/dist/src/sources/rest/selectors.js +81 -0
  428. package/dist/src/sources/rest/selectors.js.map +1 -0
  429. package/dist/src/sources/rest/source.d.ts +67 -0
  430. package/dist/src/sources/rest/source.d.ts.map +1 -0
  431. package/dist/src/sources/rest/source.js +650 -0
  432. package/dist/src/sources/rest/source.js.map +1 -0
  433. package/dist/src/sources/rest/templates.d.ts +38 -0
  434. package/dist/src/sources/rest/templates.d.ts.map +1 -0
  435. package/dist/src/sources/rest/templates.js +125 -0
  436. package/dist/src/sources/rest/templates.js.map +1 -0
  437. package/dist/src/sources/run.d.ts +93 -0
  438. package/dist/src/sources/run.d.ts.map +1 -0
  439. package/dist/src/sources/run.js +673 -0
  440. package/dist/src/sources/run.js.map +1 -0
  441. package/dist/src/sources/sha256.d.ts +12 -0
  442. package/dist/src/sources/sha256.d.ts.map +1 -0
  443. package/dist/src/sources/sha256.js +95 -0
  444. package/dist/src/sources/sha256.js.map +1 -0
  445. package/dist/src/sources/sigv4.d.ts +26 -0
  446. package/dist/src/sources/sigv4.d.ts.map +1 -0
  447. package/dist/src/sources/sigv4.js +184 -0
  448. package/dist/src/sources/sigv4.js.map +1 -0
  449. package/dist/src/sources/sparql/descriptor.d.ts +10 -0
  450. package/dist/src/sources/sparql/descriptor.d.ts.map +1 -0
  451. package/dist/src/sources/sparql/descriptor.js +64 -0
  452. package/dist/src/sources/sparql/descriptor.js.map +1 -0
  453. package/dist/src/sources/sparql/index.d.ts +28 -0
  454. package/dist/src/sources/sparql/index.d.ts.map +1 -0
  455. package/dist/src/sources/sparql/index.js +314 -0
  456. package/dist/src/sources/sparql/index.js.map +1 -0
  457. package/dist/src/sources/sparql/ntriples.d.ts +69 -0
  458. package/dist/src/sources/sparql/ntriples.d.ts.map +1 -0
  459. package/dist/src/sources/sparql/ntriples.js +180 -0
  460. package/dist/src/sources/sparql/ntriples.js.map +1 -0
  461. package/dist/src/sources/sparql/params.d.ts +27 -0
  462. package/dist/src/sources/sparql/params.d.ts.map +1 -0
  463. package/dist/src/sources/sparql/params.js +5 -0
  464. package/dist/src/sources/sparql/params.js.map +1 -0
  465. package/dist/src/sources/sparql/query.d.ts +72 -0
  466. package/dist/src/sources/sparql/query.d.ts.map +1 -0
  467. package/dist/src/sources/sparql/query.js +113 -0
  468. package/dist/src/sources/sparql/query.js.map +1 -0
  469. package/dist/src/sources/testing.d.ts +96 -0
  470. package/dist/src/sources/testing.d.ts.map +1 -0
  471. package/dist/src/sources/testing.js +138 -0
  472. package/dist/src/sources/testing.js.map +1 -0
  473. package/dist/src/sources/types.d.ts +696 -0
  474. package/dist/src/sources/types.d.ts.map +1 -0
  475. package/dist/src/sources/types.js +10 -0
  476. package/dist/src/sources/types.js.map +1 -0
  477. package/dist/src/styles/annotations.d.ts +61 -5
  478. package/dist/src/styles/annotations.d.ts.map +1 -1
  479. package/dist/src/styles/annotations.js +130 -22
  480. package/dist/src/styles/annotations.js.map +1 -1
  481. package/dist/src/styles/canon/bends.d.ts +46 -0
  482. package/dist/src/styles/canon/bends.d.ts.map +1 -1
  483. package/dist/src/styles/canon/bends.js +123 -0
  484. package/dist/src/styles/canon/bends.js.map +1 -1
  485. package/dist/src/styles/canon/color-tables.d.ts +6 -1
  486. package/dist/src/styles/canon/color-tables.d.ts.map +1 -1
  487. package/dist/src/styles/canon/color-tables.js +10 -4
  488. package/dist/src/styles/canon/color-tables.js.map +1 -1
  489. package/dist/src/styles/canon/color.d.ts +3 -1
  490. package/dist/src/styles/canon/color.d.ts.map +1 -1
  491. package/dist/src/styles/canon/color.js +103 -3
  492. package/dist/src/styles/canon/color.js.map +1 -1
  493. package/dist/src/styles/canon/enums.d.ts +2 -2
  494. package/dist/src/styles/canon/enums.d.ts.map +1 -1
  495. package/dist/src/styles/canon/enums.js +82 -7
  496. package/dist/src/styles/canon/enums.js.map +1 -1
  497. package/dist/src/styles/canon/graphviz.d.ts +12 -3
  498. package/dist/src/styles/canon/graphviz.d.ts.map +1 -1
  499. package/dist/src/styles/canon/graphviz.js +57 -9
  500. package/dist/src/styles/canon/graphviz.js.map +1 -1
  501. package/dist/src/styles/canon/number.d.ts +8 -0
  502. package/dist/src/styles/canon/number.d.ts.map +1 -1
  503. package/dist/src/styles/canon/number.js +18 -0
  504. package/dist/src/styles/canon/number.js.map +1 -1
  505. package/dist/src/styles/canon/text.d.ts +29 -2
  506. package/dist/src/styles/canon/text.d.ts.map +1 -1
  507. package/dist/src/styles/canon/text.js +156 -16
  508. package/dist/src/styles/canon/text.js.map +1 -1
  509. package/dist/src/styles/codes.d.ts +2 -0
  510. package/dist/src/styles/codes.d.ts.map +1 -1
  511. package/dist/src/styles/codes.js +2 -0
  512. package/dist/src/styles/codes.js.map +1 -1
  513. package/dist/src/styles/cyjs/cascade.d.ts.map +1 -1
  514. package/dist/src/styles/cyjs/cascade.js +1037 -35
  515. package/dist/src/styles/cyjs/cascade.js.map +1 -1
  516. package/dist/src/styles/cyjs/defaults-table.d.ts.map +1 -1
  517. package/dist/src/styles/cyjs/defaults-table.js +5 -0
  518. package/dist/src/styles/cyjs/defaults-table.js.map +1 -1
  519. package/dist/src/styles/cyjs/emit.d.ts.map +1 -1
  520. package/dist/src/styles/cyjs/emit.js +216 -12
  521. package/dist/src/styles/cyjs/emit.js.map +1 -1
  522. package/dist/src/styles/cyjs/face.d.ts +20 -0
  523. package/dist/src/styles/cyjs/face.d.ts.map +1 -0
  524. package/dist/src/styles/cyjs/face.js +332 -0
  525. package/dist/src/styles/cyjs/face.js.map +1 -0
  526. package/dist/src/styles/cyjs/mappers.d.ts +48 -2
  527. package/dist/src/styles/cyjs/mappers.d.ts.map +1 -1
  528. package/dist/src/styles/cyjs/mappers.js +463 -26
  529. package/dist/src/styles/cyjs/mappers.js.map +1 -1
  530. package/dist/src/styles/cyjs/routes.d.ts +53 -0
  531. package/dist/src/styles/cyjs/routes.d.ts.map +1 -0
  532. package/dist/src/styles/cyjs/routes.js +360 -0
  533. package/dist/src/styles/cyjs/routes.js.map +1 -0
  534. package/dist/src/styles/cytoscape/charts.d.ts +23 -0
  535. package/dist/src/styles/cytoscape/charts.d.ts.map +1 -0
  536. package/dist/src/styles/cytoscape/charts.js +560 -0
  537. package/dist/src/styles/cytoscape/charts.js.map +1 -0
  538. package/dist/src/styles/cytoscape/emit.d.ts.map +1 -1
  539. package/dist/src/styles/cytoscape/emit.js +204 -44
  540. package/dist/src/styles/cytoscape/emit.js.map +1 -1
  541. package/dist/src/styles/cytoscape/lexicon.d.ts +97 -3
  542. package/dist/src/styles/cytoscape/lexicon.d.ts.map +1 -1
  543. package/dist/src/styles/cytoscape/lexicon.js +413 -79
  544. package/dist/src/styles/cytoscape/lexicon.js.map +1 -1
  545. package/dist/src/styles/cytoscape/mappings.d.ts +30 -0
  546. package/dist/src/styles/cytoscape/mappings.d.ts.map +1 -1
  547. package/dist/src/styles/cytoscape/mappings.js +92 -0
  548. package/dist/src/styles/cytoscape/mappings.js.map +1 -1
  549. package/dist/src/styles/cytoscape/resolve.d.ts +46 -3
  550. package/dist/src/styles/cytoscape/resolve.d.ts.map +1 -1
  551. package/dist/src/styles/cytoscape/resolve.js +632 -22
  552. package/dist/src/styles/cytoscape/resolve.js.map +1 -1
  553. package/dist/src/styles/cytoscape/translate.d.ts.map +1 -1
  554. package/dist/src/styles/cytoscape/translate.js +10 -10
  555. package/dist/src/styles/cytoscape/translate.js.map +1 -1
  556. package/dist/src/styles/defaults.d.ts +50 -0
  557. package/dist/src/styles/defaults.d.ts.map +1 -1
  558. package/dist/src/styles/defaults.js +315 -37
  559. package/dist/src/styles/defaults.js.map +1 -1
  560. package/dist/src/styles/index.d.ts +4 -3
  561. package/dist/src/styles/index.d.ts.map +1 -1
  562. package/dist/src/styles/index.js +3 -2
  563. package/dist/src/styles/index.js.map +1 -1
  564. package/dist/src/styles/internal.d.ts +1 -0
  565. package/dist/src/styles/internal.d.ts.map +1 -1
  566. package/dist/src/styles/internal.js +1 -0
  567. package/dist/src/styles/internal.js.map +1 -1
  568. package/dist/src/styles/io/block.d.ts.map +1 -1
  569. package/dist/src/styles/io/block.js +9 -0
  570. package/dist/src/styles/io/block.js.map +1 -1
  571. package/dist/src/styles/io/generic.d.ts.map +1 -1
  572. package/dist/src/styles/io/generic.js +56 -16
  573. package/dist/src/styles/io/generic.js.map +1 -1
  574. package/dist/src/styles/io/round-trip.d.ts +56 -0
  575. package/dist/src/styles/io/round-trip.d.ts.map +1 -0
  576. package/dist/src/styles/io/round-trip.js +138 -0
  577. package/dist/src/styles/io/round-trip.js.map +1 -0
  578. package/dist/src/styles/io/writer.d.ts.map +1 -1
  579. package/dist/src/styles/io/writer.js +13 -4
  580. package/dist/src/styles/io/writer.js.map +1 -1
  581. package/dist/src/styles/notes.d.ts.map +1 -1
  582. package/dist/src/styles/notes.js +1 -0
  583. package/dist/src/styles/notes.js.map +1 -1
  584. package/dist/src/styles/plan/features.d.ts +1 -1
  585. package/dist/src/styles/plan/features.d.ts.map +1 -1
  586. package/dist/src/styles/plan/features.js +22 -2
  587. package/dist/src/styles/plan/features.js.map +1 -1
  588. package/dist/src/styles/plan/index.d.ts +1 -1
  589. package/dist/src/styles/plan/index.d.ts.map +1 -1
  590. package/dist/src/styles/plan/index.js +1 -1
  591. package/dist/src/styles/plan/index.js.map +1 -1
  592. package/dist/src/styles/plan/plan.d.ts.map +1 -1
  593. package/dist/src/styles/plan/plan.js +61 -4
  594. package/dist/src/styles/plan/plan.js.map +1 -1
  595. package/dist/src/styles/plan/resolve.d.ts +13 -1
  596. package/dist/src/styles/plan/resolve.d.ts.map +1 -1
  597. package/dist/src/styles/plan/resolve.js +53 -6
  598. package/dist/src/styles/plan/resolve.js.map +1 -1
  599. package/dist/src/styles/slots.d.ts +14 -0
  600. package/dist/src/styles/slots.d.ts.map +1 -0
  601. package/dist/src/styles/slots.js +20 -0
  602. package/dist/src/styles/slots.js.map +1 -0
  603. package/dist/src/styles/types.d.ts +638 -5
  604. package/dist/src/styles/types.d.ts.map +1 -1
  605. package/dist/src/styles/vocabulary.d.ts +3 -2
  606. package/dist/src/styles/vocabulary.d.ts.map +1 -1
  607. package/dist/src/styles/vocabulary.js +218 -1
  608. package/dist/src/styles/vocabulary.js.map +1 -1
  609. package/dist/src/types.d.ts +19 -5
  610. package/dist/src/types.d.ts.map +1 -1
  611. package/dist/src/types.js.map +1 -1
  612. package/dist/styles.js +29 -238
  613. package/dist/styles.js.map +1 -1
  614. package/dist/xgmml.js +3 -3
  615. package/docs/samples/people.json +6 -0
  616. package/package.json +53 -8
  617. package/src/common/report.ts +27 -7
  618. package/src/formats/cx/importer.ts +6 -1
  619. package/src/formats/cx/styles.ts +144 -9
  620. package/src/formats/cx2/importer.ts +1 -0
  621. package/src/formats/cx2/styles.ts +3 -1
  622. package/src/formats/cys/importer.ts +1 -0
  623. package/src/formats/cys/styles.ts +27 -5
  624. package/src/formats/dot/drawing.ts +799 -0
  625. package/src/formats/dot/importer.ts +120 -35
  626. package/src/formats/dot/label-places.ts +228 -0
  627. package/src/formats/dot/record.ts +336 -0
  628. package/src/formats/dot/styles.ts +1657 -154
  629. package/src/formats/gexf/dialog-metrics.ts +61 -0
  630. package/src/formats/gexf/importer.ts +50 -5
  631. package/src/formats/gexf/preview.ts +217 -0
  632. package/src/formats/gexf/schema.ts +2 -1
  633. package/src/formats/gexf/styles.ts +1144 -142
  634. package/src/formats/gml/importer.ts +291 -76
  635. package/src/formats/gml/index.ts +1 -1
  636. package/src/formats/gml/positions.ts +29 -7
  637. package/src/formats/gml/styles.ts +854 -111
  638. package/src/formats/graphml/styles-plain.ts +8 -23
  639. package/src/formats/graphml/styles-yed.ts +821 -159
  640. package/src/formats/graphml/styles-yfiles3.ts +485 -63
  641. package/src/formats/graphml/yfiles.ts +19 -6
  642. package/src/formats/json/dialect.ts +41 -5
  643. package/src/formats/json/importer.ts +59 -7
  644. package/src/formats/json/index.ts +1 -0
  645. package/src/formats/json/positions.ts +22 -5
  646. package/src/formats/json/styles.ts +2041 -185
  647. package/src/formats/pajek/draw.ts +458 -0
  648. package/src/formats/pajek/exporter.ts +81 -49
  649. package/src/formats/pajek/importer.ts +278 -103
  650. package/src/formats/pajek/index.ts +1 -0
  651. package/src/formats/pajek/styles.ts +1382 -133
  652. package/src/formats/pajek/syntax.ts +27 -2
  653. package/src/formats/xgmml/emit.ts +73 -5
  654. package/src/formats/xgmml/styles.ts +331 -71
  655. package/src/index.ts +94 -0
  656. package/src/positions/convert.ts +12 -1
  657. package/src/positions/extract.ts +55 -1
  658. package/src/positions/index.ts +1 -0
  659. package/src/positions/types.ts +60 -0
  660. package/src/registry.ts +326 -1
  661. package/src/sources/builtins.ts +63 -0
  662. package/src/sources/codes.ts +235 -0
  663. package/src/sources/context.ts +894 -0
  664. package/src/sources/credentials.ts +409 -0
  665. package/src/sources/cypher/descriptor.ts +131 -0
  666. package/src/sources/cypher/flatten.ts +323 -0
  667. package/src/sources/cypher/index.ts +628 -0
  668. package/src/sources/cypher/params.ts +41 -0
  669. package/src/sources/cypher/profiles.ts +78 -0
  670. package/src/sources/cypher/query-builder.ts +327 -0
  671. package/src/sources/cypher/transports/bolt.ts +228 -0
  672. package/src/sources/cypher/transports/neptune-analytics.ts +41 -0
  673. package/src/sources/cypher/transports/neptune-https.ts +122 -0
  674. package/src/sources/cypher/transports/query-api.ts +100 -0
  675. package/src/sources/cypher/transports/transport.ts +139 -0
  676. package/src/sources/cypher/types-map.ts +418 -0
  677. package/src/sources/define.ts +195 -0
  678. package/src/sources/fail.ts +70 -0
  679. package/src/sources/ids.ts +80 -0
  680. package/src/sources/ndex/client.ts +102 -0
  681. package/src/sources/ndex/descriptor.ts +64 -0
  682. package/src/sources/ndex/expand.ts +100 -0
  683. package/src/sources/ndex/index.ts +235 -0
  684. package/src/sources/ndex/params.ts +17 -0
  685. package/src/sources/ndex/share-url.ts +84 -0
  686. package/src/sources/params.ts +32 -0
  687. package/src/sources/registry.ts +325 -0
  688. package/src/sources/rest/descriptor.ts +79 -0
  689. package/src/sources/rest/index.ts +22 -0
  690. package/src/sources/rest/mapping.ts +401 -0
  691. package/src/sources/rest/openalex.ts +288 -0
  692. package/src/sources/rest/paging.ts +180 -0
  693. package/src/sources/rest/params.ts +243 -0
  694. package/src/sources/rest/records.ts +289 -0
  695. package/src/sources/rest/samples/deps-dev.ts +49 -0
  696. package/src/sources/rest/samples/string.ts +44 -0
  697. package/src/sources/rest/selectors.ts +91 -0
  698. package/src/sources/rest/source.ts +776 -0
  699. package/src/sources/rest/templates.ts +151 -0
  700. package/src/sources/run.ts +793 -0
  701. package/src/sources/sha256.ts +99 -0
  702. package/src/sources/sigv4.ts +209 -0
  703. package/src/sources/sparql/descriptor.ts +67 -0
  704. package/src/sources/sparql/index.ts +356 -0
  705. package/src/sources/sparql/ntriples.ts +219 -0
  706. package/src/sources/sparql/params.ts +28 -0
  707. package/src/sources/sparql/query.ts +162 -0
  708. package/src/sources/testing.ts +210 -0
  709. package/src/sources/types.ts +776 -0
  710. package/src/styles/annotations.ts +201 -27
  711. package/src/styles/canon/bends.ts +137 -0
  712. package/src/styles/canon/color-tables.ts +10 -4
  713. package/src/styles/canon/color.ts +105 -3
  714. package/src/styles/canon/enums.ts +99 -8
  715. package/src/styles/canon/graphviz.ts +71 -10
  716. package/src/styles/canon/number.ts +19 -0
  717. package/src/styles/canon/text.ts +187 -16
  718. package/src/styles/codes.ts +2 -0
  719. package/src/styles/cyjs/cascade.ts +1193 -38
  720. package/src/styles/cyjs/defaults-table.ts +5 -0
  721. package/src/styles/cyjs/emit.ts +247 -16
  722. package/src/styles/cyjs/face.ts +372 -0
  723. package/src/styles/cyjs/mappers.ts +498 -28
  724. package/src/styles/cyjs/routes.ts +432 -0
  725. package/src/styles/cytoscape/charts.ts +684 -0
  726. package/src/styles/cytoscape/emit.ts +220 -44
  727. package/src/styles/cytoscape/lexicon.ts +459 -80
  728. package/src/styles/cytoscape/mappings.ts +108 -0
  729. package/src/styles/cytoscape/resolve.ts +763 -23
  730. package/src/styles/cytoscape/translate.ts +11 -11
  731. package/src/styles/defaults.ts +436 -38
  732. package/src/styles/index.ts +5 -0
  733. package/src/styles/internal.ts +1 -0
  734. package/src/styles/io/block.ts +10 -0
  735. package/src/styles/io/generic.ts +79 -23
  736. package/src/styles/io/round-trip.ts +202 -0
  737. package/src/styles/io/writer.ts +14 -4
  738. package/src/styles/notes.ts +1 -0
  739. package/src/styles/plan/features.ts +23 -2
  740. package/src/styles/plan/index.ts +1 -1
  741. package/src/styles/plan/plan.ts +69 -5
  742. package/src/styles/plan/resolve.ts +61 -6
  743. package/src/styles/slots.ts +25 -0
  744. package/src/styles/types.ts +658 -4
  745. package/src/styles/vocabulary.ts +226 -3
  746. package/src/types.ts +19 -5
  747. package/dist/chunks/block-DiGq58c3.js.map +0 -1
  748. package/dist/chunks/choose--jM0yYCo.js +0 -57
  749. package/dist/chunks/choose--jM0yYCo.js.map +0 -1
  750. package/dist/chunks/convert-BcQ8_jMo.js.map +0 -1
  751. package/dist/chunks/emit-CwU8cUmG.js.map +0 -1
  752. package/dist/chunks/export-BvqAXCKh.js.map +0 -1
  753. package/dist/chunks/exporter-CrDWIyiq.js.map +0 -1
  754. package/dist/chunks/format-BpQBx8MZ.js.map +0 -1
  755. package/dist/chunks/generic-Dq1ntt9q.js.map +0 -1
  756. package/dist/chunks/importer-BSvfrX_h.js.map +0 -1
  757. package/dist/chunks/importer-CMmeMWlC.js.map +0 -1
  758. package/dist/chunks/importer-COTK9Tsl.js.map +0 -1
  759. package/dist/chunks/importer-DiZRmOQG.js.map +0 -1
  760. package/dist/chunks/importer-e6LGpqHB.js.map +0 -1
  761. package/dist/chunks/importer-iFYPEKaJ.js.map +0 -1
  762. package/dist/chunks/importer-yh_aBCU6.js.map +0 -1
  763. package/dist/chunks/lexicon-CT69Kd87.js.map +0 -1
  764. package/dist/chunks/styles-BQnsga7p.js.map +0 -1
  765. package/dist/chunks/styles-D3fRphrO.js +0 -690
  766. package/dist/chunks/styles-D3fRphrO.js.map +0 -1
  767. package/dist/chunks/styles-yed-BF5x3_Y5.js +0 -842
  768. package/dist/chunks/styles-yed-BF5x3_Y5.js.map +0 -1
  769. package/dist/chunks/writer-DMKvthQE.js +0 -448
  770. package/dist/chunks/writer-DMKvthQE.js.map +0 -1
@@ -0,0 +1,1397 @@
1
+ import { GraphFormatError } from "@graphty/graph-format";
2
+ import { O as OPTION_IGNORED_CODE, a6 as CONTROL_CHARACTER_CODE, E as EMPTY_INPUT_CODE, u as INVALID_ENCODING_CODE, s as UNKNOWN_ENCODING_CODE, r as ENCODING_CONFLICT_CODE, v as INVALID_UTF8_CODE, t as ENCODING_FALLBACK_CODE, a7 as FOREIGN_FORMAT_CODE, V as TOO_LARGE_CODE } from "./report-CwMfYa9J.js";
3
+ const HEAD_BYTES = 1024;
4
+ const BOM_BYTES = 4;
5
+ function canonicalEncoding(label) {
6
+ try {
7
+ return new TextDecoder(label.trim()).encoding;
8
+ } catch {
9
+ return null;
10
+ }
11
+ }
12
+ function bomEncoding(head) {
13
+ if (startsWithBytes(head, [255, 254, 0, 0])) {
14
+ return "utf-32le";
15
+ }
16
+ if (startsWithBytes(head, [0, 0, 254, 255])) {
17
+ return "utf-32be";
18
+ }
19
+ if (startsWithBytes(head, [239, 187, 191])) {
20
+ return "utf-8";
21
+ }
22
+ if (startsWithBytes(head, [255, 254])) {
23
+ return "utf-16le";
24
+ }
25
+ if (startsWithBytes(head, [254, 255])) {
26
+ return "utf-16be";
27
+ }
28
+ return null;
29
+ }
30
+ function startsWithBytes(bytes, signature) {
31
+ return bytes.byteLength >= signature.length && signature.every((b, i) => bytes[i] === b);
32
+ }
33
+ function bomlessUtf16(head) {
34
+ const pairs = Math.min(head.byteLength >> 1, 512);
35
+ if (pairs < 2) {
36
+ return null;
37
+ }
38
+ let le = 0;
39
+ let be = 0;
40
+ for (let i = 0; i < pairs; i++) {
41
+ const even = head[2 * i];
42
+ const odd = head[2 * i + 1];
43
+ if (even !== 0 && odd === 0) {
44
+ le++;
45
+ } else if (even === 0 && odd !== 0) {
46
+ be++;
47
+ }
48
+ }
49
+ if (le >= pairs * 0.9) {
50
+ return "utf-16le";
51
+ }
52
+ return be >= pairs * 0.9 ? "utf-16be" : null;
53
+ }
54
+ function xmlDeclarationUtf16(head) {
55
+ if (startsWithBytes(head, [60, 0, 63, 0])) {
56
+ return "utf-16le";
57
+ }
58
+ return startsWithBytes(head, [0, 60, 0, 63]) ? "utf-16be" : null;
59
+ }
60
+ function foreignKind(head) {
61
+ if (typeof head !== "string") {
62
+ if (startsWithBytes(head, [31, 139])) {
63
+ return "gzip-compressed data (decompress it first)";
64
+ }
65
+ if (startsWithBytes(head, [80, 75, 3, 4]) || startsWithBytes(head, [80, 75, 5, 6])) {
66
+ return "a zip archive (a Cytoscape session (.cys) is read by the cys importer; extract any other graph file from it first)";
67
+ }
68
+ if (startsWithBytes(head, [137, 80, 78, 71])) {
69
+ return "a PNG image";
70
+ }
71
+ }
72
+ const text = typeof head === "string" ? head.slice(0, 64) : String.fromCodePoint(...head.subarray(0, 64));
73
+ const utf8Bom = String.fromCodePoint(239, 187, 191);
74
+ let body = text.startsWith(utf8Bom) ? text.slice(3) : text;
75
+ body = body.startsWith(BOM) ? body.slice(1) : body;
76
+ if (body.startsWith("%PDF-")) {
77
+ return "a PDF document";
78
+ }
79
+ if (/^\s*(<!doctype\s+html[\s>]|<html[\s>])/i.test(body)) {
80
+ return "an HTML document (likely an error page saved in place of the file)";
81
+ }
82
+ return null;
83
+ }
84
+ function refuseForeign(head, report, options) {
85
+ const foreign = foreignKind(head);
86
+ if (foreign !== null && !(options.xml === true && foreign.startsWith("an HTML"))) {
87
+ report.fail(FOREIGN_FORMAT_CODE, `the input is ${foreign}, not ${report.format} text`);
88
+ }
89
+ }
90
+ function sameFamily(a, b) {
91
+ return a === b || a.startsWith("utf-16") && b.startsWith("utf-16");
92
+ }
93
+ class ByteDecoder {
94
+ /**
95
+ * Create the decoder of one import.
96
+ * @param report - where warnings and the fatal decode error go
97
+ * @param options - the encoding option and the format's declaration reader
98
+ */
99
+ constructor(report, options) {
100
+ this.report = report;
101
+ this.options = options;
102
+ this.decoder = null;
103
+ this.encoding = "utf-8";
104
+ this.mayFallBack = false;
105
+ this.asciiSoFar = true;
106
+ this.carry = new Uint8Array(0);
107
+ this.offset = 0;
108
+ this.fellBack = false;
109
+ this.control = null;
110
+ this.subAt = -1;
111
+ this.textFollows = false;
112
+ this.declaredUtf8 = false;
113
+ this.mixedPending = false;
114
+ }
115
+ /**
116
+ * Whether start() ran.
117
+ * @returns true once the encoding is chosen
118
+ */
119
+ get started() {
120
+ return this.decoder !== null;
121
+ }
122
+ /**
123
+ * Choose the encoding from the first bytes of the input: a BOM, else the option, else the
124
+ * declaration, else UTF-8 (see the module comment), warning where two of them disagree.
125
+ * @param head - the first bytes (up to the declaration size; fewer when the input is shorter)
126
+ */
127
+ start(head) {
128
+ refuseForeign(head, this.report, this.options);
129
+ const explicit = this.options.encoding ?? null;
130
+ const bom = bomEncoding(head);
131
+ if (bom === "utf-32le" || bom === "utf-32be") {
132
+ this.report.fail(
133
+ INVALID_ENCODING_CODE,
134
+ `the input starts with a ${bom.toUpperCase()} byte order mark; UTF-32 is not supported (convert the file to UTF-8)`,
135
+ void 0,
136
+ { byteOffset: 0 }
137
+ );
138
+ }
139
+ if (bom !== null) {
140
+ const option = explicit === null ? null : canonicalEncoding(explicit);
141
+ if (option !== null && option !== bom) {
142
+ this.conflict(`the encoding option says ${option} but the byte order mark says ${bom}; read as ${bom}`);
143
+ }
144
+ this.checkDeclaration(head, bom, "its byte order mark says");
145
+ this.use(bom, false);
146
+ return;
147
+ }
148
+ if (explicit !== null) {
149
+ this.use(explicit, false);
150
+ this.checkDeclaration(head, this.encoding, "the encoding option says");
151
+ return;
152
+ }
153
+ const xmlUtf16 = xmlDeclarationUtf16(head);
154
+ if (xmlUtf16 !== null) {
155
+ this.checkDeclaration(head, xmlUtf16, "its XML declaration's byte pattern says");
156
+ this.use(xmlUtf16, false);
157
+ return;
158
+ }
159
+ const utf16 = bomlessUtf16(head);
160
+ if (utf16 !== null && this.options.bomlessUtf16 === true) {
161
+ this.use(utf16, false);
162
+ return;
163
+ }
164
+ if (utf16 !== null) {
165
+ this.report.fail(
166
+ INVALID_ENCODING_CODE,
167
+ `the input looks like ${utf16} text without a byte order mark (every other byte is 0); pass the encoding option ${JSON.stringify(utf16)} to read it`,
168
+ void 0,
169
+ { byteOffset: 0 }
170
+ );
171
+ }
172
+ const declared = this.declared(head, "windows-1252");
173
+ if (declared !== null) {
174
+ const canonical = canonicalEncoding(declared);
175
+ if (canonical === null) {
176
+ this.report.warning(
177
+ "unsupported",
178
+ UNKNOWN_ENCODING_CODE,
179
+ `the input declares the encoding ${JSON.stringify(declared)}, which this platform cannot decode; reading it as UTF-8`,
180
+ { element: declared }
181
+ );
182
+ } else if (canonical.startsWith("utf-16")) {
183
+ this.conflict(
184
+ `the input declares ${JSON.stringify(declared)} but has no byte order mark and its bytes are not UTF-16; read as UTF-8`
185
+ );
186
+ } else if (canonical === "utf-8") {
187
+ this.declaredUtf8 = true;
188
+ } else {
189
+ this.use(canonical, false);
190
+ return;
191
+ }
192
+ }
193
+ this.use("utf-8", true);
194
+ }
195
+ /**
196
+ * The encoding the head declares, read through the format's declaration reader.
197
+ * @param head - the first bytes
198
+ * @param encoding - the encoding to read the head in for the reader
199
+ * @returns the declared label, or null (also for a format without declarations)
200
+ */
201
+ declared(head, encoding) {
202
+ const reader = this.options.declaredEncoding;
203
+ return reader === void 0 ? null : reader(new TextDecoder(encoding).decode(head));
204
+ }
205
+ /**
206
+ * Warn when the file declares an encoding other than the one a BOM or the option chose.
207
+ * @param head - the first bytes
208
+ * @param chosen - the encoding the input is read in
209
+ * @param why - what chose it, for the message
210
+ */
211
+ checkDeclaration(head, chosen, why) {
212
+ const declared = this.declared(head, chosen);
213
+ const canonical = declared === null ? null : canonicalEncoding(declared);
214
+ if (canonical !== null && !sameFamily(canonical, chosen)) {
215
+ this.conflict(
216
+ `the input declares the encoding ${JSON.stringify(declared)} but ${why} ${chosen}; read as ${chosen}`
217
+ );
218
+ }
219
+ }
220
+ /**
221
+ * Record a W_ENCODING_CONFLICT warning.
222
+ * @param message - which sources disagree and which applies
223
+ */
224
+ conflict(message) {
225
+ this.report.warning("coercion", ENCODING_CONFLICT_CODE, message);
226
+ }
227
+ /**
228
+ * Decode the next bytes.
229
+ * @param input - the bytes
230
+ * @param stream - whether more bytes follow
231
+ * @returns the text
232
+ */
233
+ decode(input, stream) {
234
+ const bytes = typeof SharedArrayBuffer === "function" && input.buffer instanceof SharedArrayBuffer ? input.slice() : input;
235
+ const decoder = this.decoder;
236
+ if (this.fellBack || this.mayFallBack && this.asciiSoFar) {
237
+ this.watch(bytes, !stream);
238
+ if (this.fellBack && this.control !== null) {
239
+ this.binary(this.control);
240
+ }
241
+ }
242
+ const text = this.decodeOrRecover(decoder, bytes, stream);
243
+ if (this.mixedPending) {
244
+ this.reportUtf8After(bytes, this.offset);
245
+ }
246
+ if (this.asciiSoFar && this.mayFallBack) {
247
+ this.trackAscii(bytes, text);
248
+ }
249
+ if (this.mayFallBack && this.options.nulIsBinary === true && text.includes("\0")) {
250
+ this.binary({ at: this.offset + bytes.indexOf(0), byte: 0 });
251
+ }
252
+ this.offset += bytes.byteLength;
253
+ return text;
254
+ }
255
+ /**
256
+ * Decode bytes, recovering from bytes that are not valid in the encoding.
257
+ * @param decoder - the decoder
258
+ * @param bytes - the bytes
259
+ * @param stream - whether more bytes follow
260
+ * @returns the text
261
+ */
262
+ decodeOrRecover(decoder, bytes, stream) {
263
+ try {
264
+ return decoder.decode(bytes, { stream });
265
+ } catch (err) {
266
+ if (!(err instanceof TypeError)) {
267
+ throw err;
268
+ }
269
+ return this.recover(bytes, stream);
270
+ }
271
+ }
272
+ /**
273
+ * Track whether the input is ASCII so far. While it is, every character is one byte, so the
274
+ * bytes not yet emitted are held back for a fallback.
275
+ * @param bytes - the bytes just decoded
276
+ * @param text - their text
277
+ */
278
+ trackAscii(bytes, text) {
279
+ if (/[\u0080-\uffff]/.test(text)) {
280
+ this.asciiSoFar = false;
281
+ this.carry = new Uint8Array(0);
282
+ return;
283
+ }
284
+ const all = this.carry.byteLength === 0 ? bytes : concatBytes([this.carry, bytes]);
285
+ this.carry = all.slice(text.length);
286
+ }
287
+ /**
288
+ * Flush the bytes held back because a text chunk follows (the input switches from bytes to
289
+ * strings): a multi-byte sequence cut there is invalid UTF-8, never windows-1252 text.
290
+ * @param flush - the flush to run (the decoder's own, or the head's)
291
+ * @returns the text of the held-back bytes
292
+ */
293
+ flushBeforeText(flush) {
294
+ this.textFollows = true;
295
+ try {
296
+ return flush();
297
+ } finally {
298
+ this.textFollows = false;
299
+ }
300
+ }
301
+ /**
302
+ * A decode failed: switch to windows-1252 when allowed, else fail the import with the position
303
+ * of the first byte that is not valid.
304
+ * @param bytes - the bytes that failed
305
+ * @param stream - whether more bytes follow
306
+ * @returns the bytes decoded as windows-1252
307
+ */
308
+ recover(bytes, stream) {
309
+ const all = this.carry.byteLength === 0 ? bytes : concatBytes([this.carry, bytes]);
310
+ const base = this.offset - this.carry.byteLength;
311
+ const bad = this.encoding === "utf-8" ? invalidUtf8(all) : null;
312
+ const at = base + (bad === null ? 0 : bad.index);
313
+ if (this.mayFallBack && this.asciiSoFar) {
314
+ const text = this.fallBack(all, bad, at, base, stream);
315
+ if (text !== null) {
316
+ return text;
317
+ }
318
+ }
319
+ return this.failDecode(bytes, at, base, stream);
320
+ }
321
+ /**
322
+ * Undeclared input that was ASCII so far failed to decode: fail on binary data or a cut
323
+ * sequence, else switch to windows-1252 with a warning unless the bytes start with valid
324
+ * non-ASCII UTF-8.
325
+ * @param all - the held-back bytes followed by the bytes that failed
326
+ * @param bad - the first invalid UTF-8 sequence, or null when the encoding is not UTF-8
327
+ * @param at - the byte offset of the first invalid byte
328
+ * @param base - the byte offset of `all`
329
+ * @param stream - whether more bytes follow
330
+ * @returns the bytes decoded as windows-1252, or null when they do not fall back
331
+ */
332
+ fallBack(all, bad, at, base, stream) {
333
+ if (this.control !== null) {
334
+ return this.binary(this.control);
335
+ }
336
+ if (this.textFollows && bad?.cut === true) {
337
+ return this.report.fail(
338
+ INVALID_UTF8_CODE,
339
+ `invalid UTF-8 at byte ${at}: a byte chunk ends inside a multi-byte sequence and a text chunk follows`,
340
+ void 0,
341
+ { byteOffset: at }
342
+ );
343
+ }
344
+ if (!stream && bad?.truncated === true) {
345
+ return this.report.fail(
346
+ INVALID_UTF8_CODE,
347
+ `the input ends in the middle of a UTF-8 sequence at byte ${at} (it may be truncated)`,
348
+ void 0,
349
+ { byteOffset: at }
350
+ );
351
+ }
352
+ if (startsWithUtf8(all)) {
353
+ return null;
354
+ }
355
+ const cutNote = !stream && bad?.cut === true ? ": it ends inside a multi-byte UTF-8 sequence, so it may be truncated" : "";
356
+ this.report.warning(
357
+ "coercion",
358
+ ENCODING_FALLBACK_CODE,
359
+ this.declaredUtf8 ? `the input declares UTF-8 but is not valid UTF-8 (at byte ${at}); everything before was ASCII, so it is read as windows-1252 (pass the encoding option to choose another)` : `the input is not valid UTF-8 (at byte ${at}${cutNote}) and declares no encoding; read as windows-1252 (pass the encoding option to choose another)`
360
+ );
361
+ this.use("windows-1252", false);
362
+ this.fellBack = true;
363
+ this.mixedPending = true;
364
+ this.reportUtf8After(all, base);
365
+ return this.decoder.decode(all, { stream });
366
+ }
367
+ /**
368
+ * Fail the import on bytes that are not valid in the encoding.
369
+ * @param bytes - the bytes that failed
370
+ * @param at - the byte offset of the first invalid UTF-8 byte
371
+ * @param base - the byte offset of the held-back bytes and these
372
+ * @param stream - whether more bytes follow
373
+ * @returns never: it throws
374
+ */
375
+ failDecode(bytes, at, base, stream) {
376
+ if (this.encoding === "utf-8") {
377
+ const after = this.mayFallBack ? " after valid non-ASCII UTF-8 text; pass the encoding option" : "";
378
+ return this.report.fail(INVALID_UTF8_CODE, `invalid UTF-8 at byte ${at}${after}`, void 0, {
379
+ byteOffset: at
380
+ });
381
+ }
382
+ const end = this.offset + bytes.byteLength;
383
+ const odd = !stream && this.encoding.startsWith("utf-16") && end % 2 === 1;
384
+ return this.report.fail(
385
+ INVALID_ENCODING_CODE,
386
+ odd ? `the input ends with half a ${this.encoding} code unit at byte ${end - 1} (it may be truncated)` : `the bytes near byte ${base} are not valid ${this.encoding}`,
387
+ void 0,
388
+ { byteOffset: odd ? end - 1 : base }
389
+ );
390
+ }
391
+ /**
392
+ * After the windows-1252 fallback, report once that later bytes hold a valid multi-byte UTF-8
393
+ * sequence: the input mixes encodings, and those characters are read as two or three
394
+ * windows-1252 characters each.
395
+ * @param bytes - bytes being decoded as windows-1252
396
+ * @param start - the byte offset of the first of them
397
+ */
398
+ reportUtf8After(bytes, start) {
399
+ const at = utf8SequenceIndex(bytes);
400
+ if (at < 0) {
401
+ return;
402
+ }
403
+ this.mixedPending = false;
404
+ this.report.warning(
405
+ "coercion",
406
+ ENCODING_FALLBACK_CODE,
407
+ `bytes read as windows-1252 hold valid UTF-8 (at byte ${start + at}): the input mixes encodings, and its UTF-8 characters are read as windows-1252 (pass the encoding option to choose one)`
408
+ );
409
+ }
410
+ /**
411
+ * Note the first control byte of the next bytes (see `control`).
412
+ * @param bytes - the bytes, starting at `offset`
413
+ * @param final - whether they end the input
414
+ */
415
+ watch(bytes, final) {
416
+ if (this.control !== null || bytes.byteLength === 0) {
417
+ return;
418
+ }
419
+ if (this.subAt >= 0) {
420
+ this.control = { at: this.subAt, byte: 26 };
421
+ return;
422
+ }
423
+ const index = controlByte(bytes, true);
424
+ if (index >= 0) {
425
+ this.control = { at: this.offset + index, byte: bytes[index] };
426
+ } else if (!final && bytes[bytes.byteLength - 1] === 26) {
427
+ this.subAt = this.offset + bytes.byteLength - 1;
428
+ }
429
+ }
430
+ /**
431
+ * Fail the import as binary data.
432
+ * @param control - the control byte that shows it
433
+ * @param control.at - its offset
434
+ * @param control.byte - its value
435
+ * @returns never
436
+ */
437
+ binary(control) {
438
+ const hex = control.byte.toString(16).padStart(2, "0");
439
+ return this.report.fail(
440
+ INVALID_UTF8_CODE,
441
+ `the input is binary data, not text: control byte 0x${hex} at byte ${control.at}`,
442
+ void 0,
443
+ { byteOffset: control.at }
444
+ );
445
+ }
446
+ /**
447
+ * Switch to an encoding.
448
+ * @param label - the encoding label
449
+ * @param mayFallBack - whether a UTF-8 failure may switch to windows-1252
450
+ */
451
+ use(label, mayFallBack) {
452
+ this.decoder = new TextDecoder(label, { fatal: true, ignoreBOM: true });
453
+ this.encoding = this.decoder.encoding;
454
+ this.mayFallBack = mayFallBack;
455
+ }
456
+ }
457
+ function utf8SequenceIndex(bytes) {
458
+ for (let i = 0; i < bytes.byteLength; i++) {
459
+ if (bytes[i] >= 194 && isUtf8SequenceAt(bytes, i)) {
460
+ return i;
461
+ }
462
+ }
463
+ return -1;
464
+ }
465
+ function startsWithUtf8(bytes) {
466
+ const i = bytes.findIndex((b) => b >= 128);
467
+ return i >= 0 && isUtf8SequenceAt(bytes, i);
468
+ }
469
+ const STRICT_UTF8 = new TextDecoder("utf-8", { fatal: true });
470
+ function isUtf8SequenceAt(bytes, i) {
471
+ const lead = bytes[i];
472
+ let length = 0;
473
+ if (lead >= 194 && lead <= 223) {
474
+ length = 2;
475
+ } else if (lead >= 224 && lead <= 239) {
476
+ length = 3;
477
+ } else if (lead >= 240 && lead <= 244) {
478
+ length = 4;
479
+ }
480
+ if (length === 0 || i + length > bytes.byteLength) {
481
+ return false;
482
+ }
483
+ try {
484
+ STRICT_UTF8.decode(bytes.subarray(i, i + length));
485
+ return true;
486
+ } catch {
487
+ return false;
488
+ }
489
+ }
490
+ const CP437_HIGH = [
491
+ 199,
492
+ 252,
493
+ 233,
494
+ 226,
495
+ 228,
496
+ 224,
497
+ 229,
498
+ 231,
499
+ 234,
500
+ 235,
501
+ 232,
502
+ 239,
503
+ 238,
504
+ 236,
505
+ 196,
506
+ 197,
507
+ 201,
508
+ 230,
509
+ 198,
510
+ 244,
511
+ 246,
512
+ 242,
513
+ 251,
514
+ 249,
515
+ 255,
516
+ 214,
517
+ 220,
518
+ 162,
519
+ 163,
520
+ 165,
521
+ 8359,
522
+ 402,
523
+ 225,
524
+ 237,
525
+ 243,
526
+ 250,
527
+ 241,
528
+ 209,
529
+ 170,
530
+ 186,
531
+ 191,
532
+ 8976,
533
+ 172,
534
+ 189,
535
+ 188,
536
+ 161,
537
+ 171,
538
+ 187,
539
+ 9617,
540
+ 9618,
541
+ 9619,
542
+ 9474,
543
+ 9508,
544
+ 9569,
545
+ 9570,
546
+ 9558,
547
+ 9557,
548
+ 9571,
549
+ 9553,
550
+ 9559,
551
+ 9565,
552
+ 9564,
553
+ 9563,
554
+ 9488,
555
+ 9492,
556
+ 9524,
557
+ 9516,
558
+ 9500,
559
+ 9472,
560
+ 9532,
561
+ 9566,
562
+ 9567,
563
+ 9562,
564
+ 9556,
565
+ 9577,
566
+ 9574,
567
+ 9568,
568
+ 9552,
569
+ 9580,
570
+ 9575,
571
+ 9576,
572
+ 9572,
573
+ 9573,
574
+ 9561,
575
+ 9560,
576
+ 9554,
577
+ 9555,
578
+ 9579,
579
+ 9578,
580
+ 9496,
581
+ 9484,
582
+ 9608,
583
+ 9604,
584
+ 9612,
585
+ 9616,
586
+ 9600,
587
+ 945,
588
+ 223,
589
+ 915,
590
+ 960,
591
+ 931,
592
+ 963,
593
+ 181,
594
+ 964,
595
+ 934,
596
+ 920,
597
+ 937,
598
+ 948,
599
+ 8734,
600
+ 966,
601
+ 949,
602
+ 8745,
603
+ 8801,
604
+ 177,
605
+ 8805,
606
+ 8804,
607
+ 8992,
608
+ 8993,
609
+ 247,
610
+ 8776,
611
+ 176,
612
+ 8729,
613
+ 183,
614
+ 8730,
615
+ 8319,
616
+ 178,
617
+ 9632,
618
+ 160
619
+ ];
620
+ function invalidUtf8(bytes) {
621
+ let i = 0;
622
+ while (i < bytes.byteLength) {
623
+ const lead = bytes[i];
624
+ const sequence = lead < 128 ? ASCII_SEQUENCE : utf8Sequence(lead);
625
+ if (sequence === null) {
626
+ return { index: i, truncated: false, cut: false };
627
+ }
628
+ const problem = checkContinuation(bytes, i, sequence);
629
+ if (problem !== null) {
630
+ return problem;
631
+ }
632
+ i += sequence.need + 1;
633
+ }
634
+ return { index: 0, truncated: false, cut: false };
635
+ }
636
+ const ASCII_SEQUENCE = { need: 0, low: 128, high: 191 };
637
+ function utf8Sequence(lead) {
638
+ if (lead >= 194 && lead <= 223) {
639
+ return { need: 1, low: 128, high: 191 };
640
+ }
641
+ if (lead >= 224 && lead <= 239) {
642
+ return { need: 2, low: lead === 224 ? 160 : 128, high: lead === 237 ? 159 : 191 };
643
+ }
644
+ if (lead >= 240 && lead <= 244) {
645
+ return { need: 3, low: lead === 240 ? 144 : 128, high: lead === 244 ? 143 : 191 };
646
+ }
647
+ return null;
648
+ }
649
+ function checkContinuation(bytes, i, sequence) {
650
+ for (let k = 1; k <= sequence.need; k++) {
651
+ if (i + k >= bytes.byteLength) {
652
+ return { index: i, truncated: k > 1, cut: true };
653
+ }
654
+ const next = bytes[i + k];
655
+ const low = k === 1 ? sequence.low : 128;
656
+ const high = k === 1 ? sequence.high : 191;
657
+ if (next < low || next > high) {
658
+ return { index: i, truncated: false, cut: false };
659
+ }
660
+ }
661
+ return null;
662
+ }
663
+ function controlByte(bytes, final) {
664
+ const last = bytes.byteLength - 1;
665
+ for (let i = 0; i <= last; i++) {
666
+ const b = bytes[i];
667
+ if (b < 32 && b !== 9 && b !== 10 && b !== 12 && b !== 13 && !(b === 26 && final && i === last)) {
668
+ return i;
669
+ }
670
+ }
671
+ return -1;
672
+ }
673
+ function decodeEntryName(bytes, cp437 = false) {
674
+ try {
675
+ return new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(bytes);
676
+ } catch {
677
+ if (!cp437) {
678
+ return new TextDecoder("windows-1252").decode(bytes);
679
+ }
680
+ let out = "";
681
+ for (const byte of bytes) {
682
+ out += String.fromCodePoint(byte < 128 ? byte : CP437_HIGH[byte - 128]);
683
+ }
684
+ return out;
685
+ }
686
+ }
687
+ function concatBytes(chunks) {
688
+ if (chunks.length === 1) {
689
+ return chunks[0];
690
+ }
691
+ const out = new Uint8Array(chunks.reduce((sum, c) => sum + c.byteLength, 0));
692
+ let offset = 0;
693
+ for (const chunk of chunks) {
694
+ out.set(chunk, offset);
695
+ offset += chunk.byteLength;
696
+ }
697
+ return out;
698
+ }
699
+ const DECODE_SLICE = 256 * 1024;
700
+ const BOM = String.fromCharCode(65279);
701
+ const SUB = String.fromCodePoint(26);
702
+ const MAX_TEXT_LENGTH = 2 ** 29 - 24;
703
+ const CONTROL_CHARACTER = new RegExp(
704
+ `[${String.fromCodePoint(0)}-${String.fromCodePoint(8, 11, 14)}-${String.fromCodePoint(31, 127)}-${String.fromCodePoint(159)}${BOM}]`
705
+ );
706
+ function isImportInput(input) {
707
+ if (typeof input === "string" || asBytes(input) !== null) {
708
+ return true;
709
+ }
710
+ if (typeof input !== "object" || input === null) {
711
+ return false;
712
+ }
713
+ return typeof input.getReader === "function" || Symbol.asyncIterator in input;
714
+ }
715
+ function asBytes(value) {
716
+ if (value instanceof Uint8Array) {
717
+ return value;
718
+ }
719
+ if (ArrayBuffer.isView(value) && Object.prototype.toString.call(value) === "[object Uint8Array]") {
720
+ return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
721
+ }
722
+ return null;
723
+ }
724
+ function normalizeInput(input) {
725
+ if (typeof input === "string") {
726
+ return input;
727
+ }
728
+ const bytes = asBytes(input);
729
+ if (bytes !== null) {
730
+ return bytes;
731
+ }
732
+ if (isImportInput(input)) {
733
+ return input;
734
+ }
735
+ const tag = Object.prototype.toString.call(input).slice(8, -1);
736
+ let found = input === null ? "null" : typeof input;
737
+ let fix = "";
738
+ if (tag === "ArrayBuffer" || tag === "SharedArrayBuffer") {
739
+ found = `an ${tag}`;
740
+ fix = "; wrap it as new Uint8Array(buffer)";
741
+ } else if (ArrayBuffer.isView(input)) {
742
+ found = `a ${tag}`;
743
+ fix = "; pass new Uint8Array(view.buffer, view.byteOffset, view.byteLength)";
744
+ } else if (typeof input === "object" && input !== null) {
745
+ const object = input;
746
+ if (typeof object.stream === "function" && typeof object.size === "number") {
747
+ found = "a Blob or File";
748
+ fix = "; pass blob.stream()";
749
+ } else if ("body" in object && typeof object.arrayBuffer === "function") {
750
+ found = "a fetch Response";
751
+ fix = "; pass response.body";
752
+ } else {
753
+ found = `an object (${tag})`;
754
+ }
755
+ }
756
+ throw new GraphFormatError(
757
+ "E_UNSUPPORTED",
758
+ `the input is ${found}; an importer reads a string, a Uint8Array, a ReadableStream or an async iterable of strings and Uint8Arrays${fix}`,
759
+ { reason: "input type", found }
760
+ );
761
+ }
762
+ function inputLength(input) {
763
+ if (typeof input === "string") {
764
+ return input.length;
765
+ }
766
+ if (input instanceof Uint8Array) {
767
+ return input.byteLength;
768
+ }
769
+ return null;
770
+ }
771
+ function utf8Length(text) {
772
+ let bytes = 0;
773
+ let i = 0;
774
+ while (i < text.length) {
775
+ const c = text.charCodeAt(i);
776
+ const pair = c >= 55296 && c <= 56319 && (text.charCodeAt(i + 1) & 64512) === 56320;
777
+ if (c < 128) {
778
+ bytes++;
779
+ } else if (c < 2048) {
780
+ bytes += 2;
781
+ } else {
782
+ bytes += pair ? 4 : 3;
783
+ }
784
+ i += pair ? 2 : 1;
785
+ }
786
+ return bytes;
787
+ }
788
+ function throwIfAborted(signal) {
789
+ if (!signal?.aborted) {
790
+ return;
791
+ }
792
+ const { reason } = signal;
793
+ if (reason === void 0) {
794
+ throw abortError();
795
+ }
796
+ throw reason;
797
+ }
798
+ function abortError() {
799
+ const message = "The import was aborted";
800
+ if (typeof DOMException === "function") {
801
+ return new DOMException(message, "AbortError");
802
+ }
803
+ const err = new Error(message);
804
+ err.name = "AbortError";
805
+ return err;
806
+ }
807
+ function abortable(promise, signal) {
808
+ if (signal === null || typeof signal.addEventListener !== "function") {
809
+ return promise;
810
+ }
811
+ return new Promise((resolve, reject) => {
812
+ const onAbort = () => {
813
+ try {
814
+ throwIfAborted(signal);
815
+ } catch (err) {
816
+ reject(err);
817
+ }
818
+ };
819
+ signal.addEventListener("abort", onAbort, { once: true });
820
+ promise.then(
821
+ (value) => {
822
+ signal.removeEventListener("abort", onAbort);
823
+ resolve(value);
824
+ },
825
+ (err) => {
826
+ signal.removeEventListener("abort", onAbort);
827
+ reject(err);
828
+ }
829
+ );
830
+ });
831
+ }
832
+ function lockReader(stream) {
833
+ if (stream.locked) {
834
+ throw new GraphFormatError(
835
+ "E_UNSUPPORTED",
836
+ "the input ReadableStream is locked: another reader holds it (release it, or pass a fresh stream)",
837
+ { reason: "stream locked" }
838
+ );
839
+ }
840
+ return stream.getReader();
841
+ }
842
+ class TextFilter {
843
+ /**
844
+ * Create the filter of one import.
845
+ * @param report - where the warnings and the fatal errors go
846
+ * @param options - whether an empty input is valid, whether the format is XML
847
+ */
848
+ constructor(report, options) {
849
+ this.report = report;
850
+ this.options = options;
851
+ this.first = true;
852
+ this.content = false;
853
+ this.heldSub = false;
854
+ this.warned = false;
855
+ this.strayBom = false;
856
+ }
857
+ /**
858
+ * Filter the next decoded text.
859
+ * @param chunk - the text
860
+ * @returns the text to hand on
861
+ */
862
+ push(chunk) {
863
+ let text = this.heldSub ? SUB + chunk : chunk;
864
+ this.heldSub = false;
865
+ if (text.length === 0) {
866
+ return text;
867
+ }
868
+ if (this.first) {
869
+ text = this.skipByteOrderMarks(text);
870
+ if (text.length === 0) {
871
+ return text;
872
+ }
873
+ this.first = false;
874
+ refuseForeign(text, this.report, this.options);
875
+ }
876
+ if (text.endsWith(SUB)) {
877
+ this.heldSub = true;
878
+ text = text.slice(0, -1);
879
+ }
880
+ if (!this.content && /\S/.test(text)) {
881
+ this.content = true;
882
+ }
883
+ if (!this.warned) {
884
+ this.warnControl(text);
885
+ }
886
+ return text;
887
+ }
888
+ /**
889
+ * Drop the byte order marks the input starts with, warning when there is more than one.
890
+ * @param text - the first text
891
+ * @returns the text without them
892
+ */
893
+ skipByteOrderMarks(text) {
894
+ let start = 0;
895
+ while (text.codePointAt(start) === 65279) {
896
+ start++;
897
+ }
898
+ if (start > 1 && !this.strayBom) {
899
+ this.strayBom = true;
900
+ this.report.warning(
901
+ "validation-error",
902
+ CONTROL_CHARACTER_CODE,
903
+ `the input starts with ${start} byte order marks (U+FEFF); the extra ones were ignored`,
904
+ { element: "U+FEFF" }
905
+ );
906
+ }
907
+ return text.slice(start);
908
+ }
909
+ /**
910
+ * Warn, once, about the first control character the text holds.
911
+ * @param text - the text
912
+ */
913
+ warnControl(text) {
914
+ const match = CONTROL_CHARACTER.exec(text);
915
+ if (match === null) {
916
+ return;
917
+ }
918
+ this.warned = true;
919
+ const code = (match[0].codePointAt(0) ?? 0).toString(16).toUpperCase().padStart(4, "0");
920
+ const around = JSON.stringify(text.slice(Math.max(0, match.index - 20), match.index + 20));
921
+ this.report.warning(
922
+ "validation-error",
923
+ CONTROL_CHARACTER_CODE,
924
+ `the input holds the control character U+${code} (in ${around}); it is kept in the id or value it is part of`,
925
+ { element: `U+${code}` }
926
+ );
927
+ }
928
+ /** The input ended: drop a held Ctrl-Z with a warning, and refuse an input without content. */
929
+ end() {
930
+ if (this.heldSub) {
931
+ this.report.warning(
932
+ "validation-error",
933
+ CONTROL_CHARACTER_CODE,
934
+ "the input ends with a Ctrl-Z (0x1A), the DOS end-of-file marker; it was ignored",
935
+ { element: "U+001A" }
936
+ );
937
+ }
938
+ if (!this.content && this.options.allowEmpty !== true) {
939
+ this.report.fail(EMPTY_INPUT_CODE, this.first ? "the input is empty" : "the input holds only whitespace");
940
+ }
941
+ }
942
+ }
943
+ function reportTextEncoding(report, encoding) {
944
+ if (encoding !== null && encoding !== void 0) {
945
+ report.warning(
946
+ "unsupported",
947
+ OPTION_IGNORED_CODE,
948
+ "option encoding has no effect on text input, which is already decoded",
949
+ { element: "encoding" }
950
+ );
951
+ }
952
+ }
953
+ async function* textChunks(rawInput, report, options = {}) {
954
+ const input = normalizeInput(rawInput);
955
+ const signal = options.signal ?? null;
956
+ const filter = new TextFilter(report, options);
957
+ throwIfAborted(signal);
958
+ if (typeof input === "string") {
959
+ reportTextEncoding(report, options.encoding);
960
+ yield* stringTextChunks(input, filter, options);
961
+ return;
962
+ }
963
+ const decoder = new ByteDecoder(report, options);
964
+ if (input instanceof Uint8Array) {
965
+ yield* byteTextChunks(input, filter, decoder, options);
966
+ return;
967
+ }
968
+ const stream = new StreamText(filter, decoder, options);
969
+ for await (const chunk of isReadableStream(input) ? streamChunks(input, signal) : input) {
970
+ throwIfAborted(signal);
971
+ const text = stream.push(chunk);
972
+ if (text.length > 0) {
973
+ yield text;
974
+ }
975
+ options.onProgress?.(stream.done);
976
+ }
977
+ const tail = stream.end();
978
+ if (tail.length > 0) {
979
+ yield tail;
980
+ }
981
+ filter.end();
982
+ options.onProgress?.(stream.done, stream.done);
983
+ }
984
+ function stringSliceEnd(input, start) {
985
+ const end = Math.min(start + DECODE_SLICE, input.length);
986
+ const highSurrogate = (input.charCodeAt(end - 1) & 64512) === 55296;
987
+ return end < input.length && highSurrogate ? end + 1 : end;
988
+ }
989
+ function* stringTextChunks(input, filter, options) {
990
+ const signal = options.signal ?? null;
991
+ const onProgress = options.onProgress ?? null;
992
+ const total = onProgress === null ? 0 : utf8Length(input);
993
+ let done = 0;
994
+ let start = 0;
995
+ while (start < input.length) {
996
+ throwIfAborted(signal);
997
+ const end = stringSliceEnd(input, start);
998
+ const piece = start === 0 && end === input.length ? input : input.slice(start, end);
999
+ start = end;
1000
+ const text = filter.push(piece);
1001
+ if (text.length > 0) {
1002
+ yield text;
1003
+ }
1004
+ if (onProgress !== null) {
1005
+ done += utf8Length(piece);
1006
+ onProgress(done, total);
1007
+ }
1008
+ }
1009
+ if (input.length === 0) {
1010
+ onProgress?.(0, 0);
1011
+ }
1012
+ filter.end();
1013
+ }
1014
+ function* byteTextChunks(input, filter, decoder, options) {
1015
+ const signal = options.signal ?? null;
1016
+ const length = input.byteLength;
1017
+ decoder.start(input.subarray(0, headByteCount(options)));
1018
+ for (let offset = 0; offset < length; offset += DECODE_SLICE) {
1019
+ throwIfAborted(signal);
1020
+ if (input.byteLength !== length) {
1021
+ throw new GraphFormatError(
1022
+ "E_UNSUPPORTED",
1023
+ "the input's buffer was detached (transferred) or resized during the import",
1024
+ { reason: "detached" }
1025
+ );
1026
+ }
1027
+ const slice = input.subarray(offset, Math.min(offset + DECODE_SLICE, length));
1028
+ const text = filter.push(decoder.decode(slice, offset + DECODE_SLICE < length));
1029
+ if (text.length > 0) {
1030
+ yield text;
1031
+ }
1032
+ options.onProgress?.(Math.min(offset + DECODE_SLICE, length), length);
1033
+ }
1034
+ if (length === 0) {
1035
+ options.onProgress?.(0, 0);
1036
+ }
1037
+ filter.end();
1038
+ }
1039
+ function headByteCount(options) {
1040
+ return Math.max(options.declarationBytes ?? HEAD_BYTES, BOM_BYTES);
1041
+ }
1042
+ class StreamText {
1043
+ /**
1044
+ * Create the reader of one stream input.
1045
+ * @param filter - the text checks
1046
+ * @param decoder - the byte decoder
1047
+ * @param options - progress, the declaration reader and its size
1048
+ */
1049
+ constructor(filter, decoder, options) {
1050
+ this.filter = filter;
1051
+ this.decoder = decoder;
1052
+ this.done = 0;
1053
+ this.head = [];
1054
+ this.headLength = 0;
1055
+ this.headBytes = headByteCount(options);
1056
+ this.needed = options.declaredEncoding === void 0 ? BOM_BYTES : this.headBytes;
1057
+ this.counting = (options.onProgress ?? null) !== null;
1058
+ }
1059
+ /**
1060
+ * Read the next chunk.
1061
+ * @param chunk - a string or a Uint8Array (anything else is E_UNSUPPORTED)
1062
+ * @returns its filtered text; empty while bytes are held back
1063
+ */
1064
+ push(chunk) {
1065
+ if (typeof chunk === "string") {
1066
+ this.done += this.counting ? utf8Length(chunk) : 0;
1067
+ return this.filter.push(this.beforeText() + chunk);
1068
+ }
1069
+ const bytes = asBytes(chunk);
1070
+ if (bytes === null) {
1071
+ throw new GraphFormatError("E_UNSUPPORTED", "an input chunk must be a string or a Uint8Array", {
1072
+ reason: "chunk type",
1073
+ found: typeof chunk
1074
+ });
1075
+ }
1076
+ this.done += bytes.byteLength;
1077
+ if (this.decoder.started) {
1078
+ return this.filter.push(this.decoder.decode(bytes, true));
1079
+ }
1080
+ this.head.push(bytes);
1081
+ this.headLength += bytes.byteLength;
1082
+ return this.headLength >= this.needed ? this.filter.push(this.flushHead(true)) : "";
1083
+ }
1084
+ /**
1085
+ * The input ended: the filtered text of whatever is still held or pending.
1086
+ * @returns the text
1087
+ */
1088
+ end() {
1089
+ let tail = "";
1090
+ if (this.headLength > 0) {
1091
+ tail = this.flushHead(false);
1092
+ } else if (this.decoder.started) {
1093
+ tail = this.decoder.decode(new Uint8Array(0), false);
1094
+ }
1095
+ return this.filter.push(tail);
1096
+ }
1097
+ /**
1098
+ * Start the decoder on the held bytes and decode them.
1099
+ * @param stream - whether more bytes follow
1100
+ * @returns their text
1101
+ */
1102
+ flushHead(stream) {
1103
+ const bytes = concatBytes(this.head);
1104
+ this.head = [];
1105
+ this.headLength = 0;
1106
+ this.decoder.start(bytes.subarray(0, this.headBytes));
1107
+ return this.decoder.decode(bytes, stream);
1108
+ }
1109
+ /**
1110
+ * A text chunk follows: finish any byte sequence still pending in the decoder before switching
1111
+ * to text. The BOM and declaration checks apply to the start of the input only, so bytes after
1112
+ * text are never taken for a BOM.
1113
+ * @returns the text of the pending bytes
1114
+ */
1115
+ beforeText() {
1116
+ if (this.headLength > 0) {
1117
+ return this.decoder.flushBeforeText(() => this.flushHead(false));
1118
+ }
1119
+ if (this.decoder.started) {
1120
+ return this.decoder.flushBeforeText(() => this.decoder.decode(new Uint8Array(0), false));
1121
+ }
1122
+ this.decoder.start(new Uint8Array(0));
1123
+ return "";
1124
+ }
1125
+ }
1126
+ function isReadableStream(input) {
1127
+ return typeof input.getReader === "function";
1128
+ }
1129
+ async function* streamChunks(stream, signal) {
1130
+ const reader = lockReader(stream);
1131
+ let finished = false;
1132
+ try {
1133
+ for (; ; ) {
1134
+ throwIfAborted(signal);
1135
+ const { done, value } = await abortable(reader.read(), signal);
1136
+ if (done) {
1137
+ finished = true;
1138
+ return;
1139
+ }
1140
+ yield value;
1141
+ }
1142
+ } finally {
1143
+ if (!finished) {
1144
+ await reader.cancel(signal?.reason).catch(() => void 0);
1145
+ }
1146
+ reader.releaseLock();
1147
+ }
1148
+ }
1149
+ async function readBytes(rawInput, options = {}) {
1150
+ const input = normalizeInput(rawInput);
1151
+ const signal = options.signal ?? null;
1152
+ throwIfAborted(signal);
1153
+ if (typeof input === "string") {
1154
+ return null;
1155
+ }
1156
+ if (input instanceof Uint8Array) {
1157
+ options.onProgress?.(input.byteLength, input.byteLength);
1158
+ return input;
1159
+ }
1160
+ const parts = [];
1161
+ let done = 0;
1162
+ for await (const chunk of isReadableStream(input) ? streamChunks(input, signal) : input) {
1163
+ throwIfAborted(signal);
1164
+ if (typeof chunk === "string") {
1165
+ return null;
1166
+ }
1167
+ const bytes = asBytes(chunk);
1168
+ if (bytes === null) {
1169
+ throw new GraphFormatError("E_UNSUPPORTED", "an input chunk must be a string or a Uint8Array", {
1170
+ reason: "chunk type",
1171
+ found: typeof chunk
1172
+ });
1173
+ }
1174
+ parts.push(bytes);
1175
+ done += bytes.byteLength;
1176
+ options.onProgress?.(done);
1177
+ }
1178
+ options.onProgress?.(done, done);
1179
+ return parts.length === 0 ? new Uint8Array(0) : concatBytes(parts);
1180
+ }
1181
+ function tooLarge(report, message, line) {
1182
+ report.failWith("unsupported", TOO_LARGE_CODE, message, line === void 0 ? void 0 : { line });
1183
+ }
1184
+ async function readText(rawInput, report, options = {}) {
1185
+ const input = normalizeInput(rawInput);
1186
+ if (typeof input === "string") {
1187
+ throwIfAborted(options.signal);
1188
+ reportTextEncoding(report, options.encoding);
1189
+ const filter = new TextFilter(report, options);
1190
+ const text = filter.push(input);
1191
+ filter.end();
1192
+ if (options.onProgress !== null && options.onProgress !== void 0) {
1193
+ const total = utf8Length(input);
1194
+ options.onProgress(total, total);
1195
+ }
1196
+ return text;
1197
+ }
1198
+ const parts = [];
1199
+ let length = 0;
1200
+ for await (const chunk of textChunks(input, report, options)) {
1201
+ length += chunk.length;
1202
+ if (length > MAX_TEXT_LENGTH) {
1203
+ tooLarge(
1204
+ report,
1205
+ `the document is longer than ${MAX_TEXT_LENGTH} characters, the most one JavaScript string holds`
1206
+ );
1207
+ }
1208
+ parts.push(chunk);
1209
+ }
1210
+ return parts.length === 1 ? parts[0] : parts.join("");
1211
+ }
1212
+ class LineReader {
1213
+ /**
1214
+ * Create a reader over an input; nothing is read until iteration starts.
1215
+ * @param input - the input
1216
+ * @param report - the report decode errors are recorded in
1217
+ * @param options - cancellation and progress
1218
+ */
1219
+ constructor(input, report, options = {}) {
1220
+ this.lineNumber = 0;
1221
+ this.input = input;
1222
+ this.report = report;
1223
+ this.options = options;
1224
+ }
1225
+ /**
1226
+ * The 1-based number of the line most recently yielded.
1227
+ * @returns the line number; 0 before the first line
1228
+ */
1229
+ get line() {
1230
+ return this.lineNumber;
1231
+ }
1232
+ /**
1233
+ * The E_TOO_LARGE message of a line longer than one string.
1234
+ * @returns the message
1235
+ */
1236
+ lineTooLong() {
1237
+ return `a line is longer than ${MAX_TEXT_LENGTH} characters, the most one JavaScript string holds`;
1238
+ }
1239
+ /**
1240
+ * Iterate the lines.
1241
+ * @yields one line at a time, terminator removed
1242
+ * @returns nothing
1243
+ */
1244
+ async *[Symbol.asyncIterator]() {
1245
+ const pending = new PendingLine((line) => tooLarge(this.report, this.lineTooLong(), line));
1246
+ let trailingCr = false;
1247
+ for await (const chunk of textChunks(this.input, this.report, this.options)) {
1248
+ let start = 0;
1249
+ if (trailingCr) {
1250
+ trailingCr = false;
1251
+ this.lineNumber++;
1252
+ yield pending.take().slice(0, -1);
1253
+ if (chunk.charCodeAt(0) === 10) {
1254
+ start = 1;
1255
+ }
1256
+ }
1257
+ const breaks = new LineBreaks(chunk, start);
1258
+ while (breaks.advance()) {
1259
+ this.lineNumber++;
1260
+ yield pending.finish(chunk.slice(start, breaks.cut), this.lineNumber);
1261
+ start = breaks.next;
1262
+ }
1263
+ if (start < chunk.length) {
1264
+ pending.appendRest(chunk, start, this.lineNumber + 1);
1265
+ trailingCr = chunk.codePointAt(chunk.length - 1) === 13;
1266
+ }
1267
+ }
1268
+ if (!pending.empty) {
1269
+ this.lineNumber++;
1270
+ const joined = pending.take();
1271
+ yield joined.endsWith("\r") ? joined.slice(0, -1) : joined;
1272
+ }
1273
+ }
1274
+ }
1275
+ class PendingLine {
1276
+ /**
1277
+ * Start an empty line.
1278
+ * @param tooLong - fails the import when the line grows longer than one string can hold
1279
+ */
1280
+ constructor(tooLong) {
1281
+ this.pieces = [];
1282
+ this.length = 0;
1283
+ this.tooLong = tooLong;
1284
+ }
1285
+ /**
1286
+ * Whether no piece is held.
1287
+ * @returns true when the line in progress is empty
1288
+ */
1289
+ get empty() {
1290
+ return this.pieces.length === 0;
1291
+ }
1292
+ /**
1293
+ * Hold the rest of a chunk from `start`: the line goes on in the next chunk.
1294
+ * @param chunk - the chunk
1295
+ * @param start - where the unfinished line starts in it
1296
+ * @param line - the 1-based number of the line, for the too-long error
1297
+ */
1298
+ appendRest(chunk, start, line) {
1299
+ this.append(start === 0 ? chunk : chunk.slice(start), line);
1300
+ }
1301
+ /**
1302
+ * End the line with its last piece.
1303
+ * @param piece - the text from the start of the chunk (or the last break) to the line break
1304
+ * @param line - the 1-based number of the line, for the too-long error
1305
+ * @returns the whole line
1306
+ */
1307
+ finish(piece, line) {
1308
+ if (this.pieces.length === 0) {
1309
+ return piece;
1310
+ }
1311
+ this.append(piece, line);
1312
+ return this.take();
1313
+ }
1314
+ /**
1315
+ * Join the held pieces and start a new line.
1316
+ * @returns the joined text
1317
+ */
1318
+ take() {
1319
+ const joined = this.pieces.join("");
1320
+ this.pieces.length = 0;
1321
+ this.length = 0;
1322
+ return joined;
1323
+ }
1324
+ /**
1325
+ * Hold one more piece.
1326
+ * @param piece - the piece
1327
+ * @param line - the 1-based number of the line, for the too-long error
1328
+ */
1329
+ append(piece, line) {
1330
+ this.length += piece.length;
1331
+ if (this.length > MAX_TEXT_LENGTH) {
1332
+ this.tooLong(line);
1333
+ }
1334
+ this.pieces.push(piece);
1335
+ }
1336
+ }
1337
+ class LineBreaks {
1338
+ /**
1339
+ * Scan a chunk from a position.
1340
+ * @param chunk - the chunk
1341
+ * @param start - where scanning starts
1342
+ */
1343
+ constructor(chunk, start) {
1344
+ this.cut = 0;
1345
+ this.chunk = chunk;
1346
+ this.next = start;
1347
+ this.nl = chunk.indexOf("\n", start);
1348
+ this.cr = chunk.indexOf("\r", start);
1349
+ }
1350
+ /**
1351
+ * Find the next line break.
1352
+ * @returns false when none is left, or the only one left is a trailing `\r` (it may be the first
1353
+ * half of a `\r\n` split across chunks)
1354
+ */
1355
+ advance() {
1356
+ const { chunk, next } = this;
1357
+ if (this.nl >= 0 && this.nl < next) {
1358
+ this.nl = chunk.indexOf("\n", next);
1359
+ }
1360
+ if (this.cr >= 0 && this.cr < next) {
1361
+ this.cr = chunk.indexOf("\r", next);
1362
+ }
1363
+ const { nl, cr } = this;
1364
+ if (cr >= 0 && (nl < 0 || cr < nl)) {
1365
+ if (cr === chunk.length - 1) {
1366
+ return false;
1367
+ }
1368
+ this.cut = cr;
1369
+ this.next = chunk.codePointAt(cr + 1) === 10 ? cr + 2 : cr + 1;
1370
+ return true;
1371
+ }
1372
+ if (nl < 0) {
1373
+ return false;
1374
+ }
1375
+ this.cut = nl;
1376
+ this.next = nl + 1;
1377
+ return true;
1378
+ }
1379
+ }
1380
+ export {
1381
+ LineReader as L,
1382
+ MAX_TEXT_LENGTH as M,
1383
+ tooLarge as a,
1384
+ throwIfAborted as b,
1385
+ canonicalEncoding as c,
1386
+ inputLength as d,
1387
+ decodeEntryName as e,
1388
+ readBytes as f,
1389
+ foreignKind as g,
1390
+ abortable as h,
1391
+ isImportInput as i,
1392
+ lockReader as l,
1393
+ normalizeInput as n,
1394
+ readText as r,
1395
+ textChunks as t
1396
+ };
1397
+ //# sourceMappingURL=input-CAxt_aV-.js.map