@thomasfosterau/effect-rdf 0.0.0-stage → 0.1.0

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 (776) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2251 -2
  3. package/dist/Algebra-CGG4oae3.mjs +433 -0
  4. package/dist/Algebra-CGG4oae3.mjs.map +1 -0
  5. package/dist/Algebra-uGsIEOUA.d.mts +446 -0
  6. package/dist/Ast-CPRZmBvk.mjs +552 -0
  7. package/dist/Ast-CPRZmBvk.mjs.map +1 -0
  8. package/dist/Ast-vcw2W-lf.d.mts +827 -0
  9. package/dist/Bindings-Ck3m7JRC.mjs +249 -0
  10. package/dist/Bindings-Ck3m7JRC.mjs.map +1 -0
  11. package/dist/Bindings-DiKpBd7f.d.mts +153 -0
  12. package/dist/ClientErrors-CpXdFX5u.mjs +128 -0
  13. package/dist/ClientErrors-CpXdFX5u.mjs.map +1 -0
  14. package/dist/ClientErrors-D4IZHUM-.d.mts +101 -0
  15. package/dist/ClientFormats-CXomkXLV.mjs +73 -0
  16. package/dist/ClientFormats-CXomkXLV.mjs.map +1 -0
  17. package/dist/ClientFormats-Dm57ZPwR.d.mts +36 -0
  18. package/dist/Csv2Json-DynEcwCh.mjs +194 -0
  19. package/dist/Csv2Json-DynEcwCh.mjs.map +1 -0
  20. package/dist/Csv2Json-aXNVDoXQ.d.mts +40 -0
  21. package/dist/Csv2Rdf-8maXP6mt.d.mts +41 -0
  22. package/dist/Csv2Rdf-DuSEkaKE.mjs +161 -0
  23. package/dist/Csv2Rdf-DuSEkaKE.mjs.map +1 -0
  24. package/dist/Dataset-BlmlcI7J.mjs +782 -0
  25. package/dist/Dataset-BlmlcI7J.mjs.map +1 -0
  26. package/dist/Dataset-DS3ESOcO.d.mts +426 -0
  27. package/dist/Dataset.d.mts +2 -0
  28. package/dist/Dataset.mjs +1 -0
  29. package/dist/Datatype-CxMpamHC.d.mts +212 -0
  30. package/dist/Datatype-DQvkNkiH.mjs +1001 -0
  31. package/dist/Datatype-DQvkNkiH.mjs.map +1 -0
  32. package/dist/Dialect-8ChFj5EX.d.mts +113 -0
  33. package/dist/Dialect-CzVH38uo.mjs +165 -0
  34. package/dist/Dialect-CzVH38uo.mjs.map +1 -0
  35. package/dist/DocumentLoader-D3lZREnB.mjs +346 -0
  36. package/dist/DocumentLoader-D3lZREnB.mjs.map +1 -0
  37. package/dist/DocumentLoader-ZUCEVrW5.d.mts +178 -0
  38. package/dist/DublinCore-AnwqxRx6.mjs +137 -0
  39. package/dist/DublinCore-AnwqxRx6.mjs.map +1 -0
  40. package/dist/DublinCore-Dq-tVA5d.d.mts +119 -0
  41. package/dist/Engine-CYPB3g4h.d.mts +144 -0
  42. package/dist/Engine-DF8PN7g-.mjs +872 -0
  43. package/dist/Engine-DF8PN7g-.mjs.map +1 -0
  44. package/dist/Errors-CMdV1RhU.mjs +37 -0
  45. package/dist/Errors-CMdV1RhU.mjs.map +1 -0
  46. package/dist/Errors-u2bDjUeM.d.mts +30 -0
  47. package/dist/Evaluator-DEsU4d1o.d.mts +50 -0
  48. package/dist/Evaluator-DOY2-guC.mjs +281 -0
  49. package/dist/Evaluator-DOY2-guC.mjs.map +1 -0
  50. package/dist/Exif-CpqniYQd.d.mts +78 -0
  51. package/dist/Exif-DjkCfEB-.mjs +89 -0
  52. package/dist/Exif-DjkCfEB-.mjs.map +1 -0
  53. package/dist/Expression-BIMMvduQ.mjs +230 -0
  54. package/dist/Expression-BIMMvduQ.mjs.map +1 -0
  55. package/dist/Expression-W8A9cyX7.d.mts +89 -0
  56. package/dist/Extract-Bop85jES.mjs +220 -0
  57. package/dist/Extract-Bop85jES.mjs.map +1 -0
  58. package/dist/Extract-C_pCvuTC.d.mts +88 -0
  59. package/dist/Federation-BcNrozc1.d.mts +52 -0
  60. package/dist/Federation-CHScBkaK.mjs +130 -0
  61. package/dist/Federation-CHScBkaK.mjs.map +1 -0
  62. package/dist/Functions-AvjNcId_.mjs +1346 -0
  63. package/dist/Functions-AvjNcId_.mjs.map +1 -0
  64. package/dist/Functions-OQJZP-F6.d.mts +111 -0
  65. package/dist/Generator-C52mmq01.d.mts +50 -0
  66. package/dist/Generator-D3utCJC7.mjs +205 -0
  67. package/dist/Generator-D3utCJC7.mjs.map +1 -0
  68. package/dist/Grammar-CPlSxGH6.mjs +200 -0
  69. package/dist/Grammar-CPlSxGH6.mjs.map +1 -0
  70. package/dist/Grammar-CRhnRoCu.d.mts +148 -0
  71. package/dist/Grammar-D6jZdJQ3.d.mts +169 -0
  72. package/dist/Grammar-mQ8CgE1M.mjs +258 -0
  73. package/dist/Grammar-mQ8CgE1M.mjs.map +1 -0
  74. package/dist/GraphStore-DhUa4nFO.d.mts +45 -0
  75. package/dist/GraphStore-DvbqwKy1.mjs +212 -0
  76. package/dist/GraphStore-DvbqwKy1.mjs.map +1 -0
  77. package/dist/Iri-BB8Ks-BF.d.mts +84 -0
  78. package/dist/Iri-Cr92gsQV.mjs +232 -0
  79. package/dist/Iri-Cr92gsQV.mjs.map +1 -0
  80. package/dist/Iri.d.mts +2 -0
  81. package/dist/Iri.mjs +1 -0
  82. package/dist/Isomorphism-B6qTY-xy.d.mts +28 -0
  83. package/dist/Isomorphism-BmqxhKyJ.mjs +232 -0
  84. package/dist/Isomorphism-BmqxhKyJ.mjs.map +1 -0
  85. package/dist/Isomorphism-DInKnWIy.mjs +390 -0
  86. package/dist/Isomorphism-DInKnWIy.mjs.map +1 -0
  87. package/dist/Isomorphism-DvSfZXLR.d.mts +37 -0
  88. package/dist/Isomorphism.d.mts +2 -0
  89. package/dist/Isomorphism.mjs +1 -0
  90. package/dist/JsonLd-DOwS2FHg.mjs +2836 -0
  91. package/dist/JsonLd-DOwS2FHg.mjs.map +1 -0
  92. package/dist/JsonLd-DobFrQNa.d.mts +242 -0
  93. package/dist/JsonLdError-C9J-BxfG.mjs +106 -0
  94. package/dist/JsonLdError-C9J-BxfG.mjs.map +1 -0
  95. package/dist/JsonLdError-DSOfHkOy.d.mts +43 -0
  96. package/dist/LanguageTag-BCu8rcmX.d.mts +38 -0
  97. package/dist/LanguageTag-BcOpMGZ4.mjs +89 -0
  98. package/dist/LanguageTag-BcOpMGZ4.mjs.map +1 -0
  99. package/dist/LanguageTag.d.mts +2 -0
  100. package/dist/LanguageTag.mjs +1 -0
  101. package/dist/Lexical-Cg0JHrf6.mjs +243 -0
  102. package/dist/Lexical-Cg0JHrf6.mjs.map +1 -0
  103. package/dist/Lexical-D3zySYVS.d.mts +163 -0
  104. package/dist/Manifest-B6xf6mUc.mjs +148 -0
  105. package/dist/Manifest-B6xf6mUc.mjs.map +1 -0
  106. package/dist/Manifest-DQUMRBFr.d.mts +98 -0
  107. package/dist/Mapping-BgG74x3U.d.mts +63 -0
  108. package/dist/Mapping-Dc1ZGirk.mjs +259 -0
  109. package/dist/Mapping-Dc1ZGirk.mjs.map +1 -0
  110. package/dist/Mcp-1DwTTKOK.mjs +48 -0
  111. package/dist/Mcp-1DwTTKOK.mjs.map +1 -0
  112. package/dist/Mcp-d-pX9erx.d.mts +25 -0
  113. package/dist/Message-CK_DGQuu.mjs +95 -0
  114. package/dist/Message-CK_DGQuu.mjs.map +1 -0
  115. package/dist/Message-fIvTJSXM.d.mts +49 -0
  116. package/dist/Metadata-BbffwGDZ.mjs +445 -0
  117. package/dist/Metadata-BbffwGDZ.mjs.map +1 -0
  118. package/dist/Metadata-CEt3yc1-.d.mts +901 -0
  119. package/dist/Metadata-D4HsQNXr.mjs +1273 -0
  120. package/dist/Metadata-D4HsQNXr.mjs.map +1 -0
  121. package/dist/Metadata-nzS7QKRj.d.mts +350 -0
  122. package/dist/Model-DaMmxurZ.d.mts +293 -0
  123. package/dist/Model-DlPzRYhF.mjs +528 -0
  124. package/dist/Model-DlPzRYhF.mjs.map +1 -0
  125. package/dist/N3-BzyV-KIH.mjs +974 -0
  126. package/dist/N3-BzyV-KIH.mjs.map +1 -0
  127. package/dist/N3-DSLnonDn.d.mts +100 -0
  128. package/dist/NQuads-C1VBOJ3-.mjs +117 -0
  129. package/dist/NQuads-C1VBOJ3-.mjs.map +1 -0
  130. package/dist/NQuads-FjFZikFg.d.mts +76 -0
  131. package/dist/NTriples-D-kLSEAf.mjs +120 -0
  132. package/dist/NTriples-D-kLSEAf.mjs.map +1 -0
  133. package/dist/NTriples-D34OspfW.d.mts +76 -0
  134. package/dist/Namespace-ClTUO_ya.d.mts +42 -0
  135. package/dist/Namespace-DHFIsORd.mjs +75 -0
  136. package/dist/Namespace-DHFIsORd.mjs.map +1 -0
  137. package/dist/Namespace.d.mts +2 -0
  138. package/dist/Namespace.mjs +1 -0
  139. package/dist/Namespaces-Bz85vpjW.mjs +235 -0
  140. package/dist/Namespaces-Bz85vpjW.mjs.map +1 -0
  141. package/dist/Namespaces-C1jW6EDo.d.mts +178 -0
  142. package/dist/Optimizer-BWWQRQPY.mjs +168 -0
  143. package/dist/Optimizer-BWWQRQPY.mjs.map +1 -0
  144. package/dist/Optimizer-DUpUow6k.d.mts +26 -0
  145. package/dist/Options-BLBGL4HE.mjs +72 -0
  146. package/dist/Options-BLBGL4HE.mjs.map +1 -0
  147. package/dist/Options-BommQwP9.d.mts +127 -0
  148. package/dist/Packet-CA76wVX3.mjs +197 -0
  149. package/dist/Packet-CA76wVX3.mjs.map +1 -0
  150. package/dist/Packet-Cy5g6XuW.d.mts +130 -0
  151. package/dist/Parser-p1Gyr0QN.d.mts +85 -0
  152. package/dist/Parser-xARsOWXk.mjs +1317 -0
  153. package/dist/Parser-xARsOWXk.mjs.map +1 -0
  154. package/dist/Path-B20Yp8KE.mjs +284 -0
  155. package/dist/Path-B20Yp8KE.mjs.map +1 -0
  156. package/dist/Path-DRB8e-Zn.d.mts +181 -0
  157. package/dist/Pdf-B9RZn--8.d.mts +77 -0
  158. package/dist/Pdf-CKK6dkZn.mjs +89 -0
  159. package/dist/Pdf-CKK6dkZn.mjs.map +1 -0
  160. package/dist/PdfA-CUjSuntT.d.mts +109 -0
  161. package/dist/PdfA-CleOhuL6.mjs +124 -0
  162. package/dist/PdfA-CleOhuL6.mjs.map +1 -0
  163. package/dist/Photoshop-CiHo80qV.mjs +233 -0
  164. package/dist/Photoshop-CiHo80qV.mjs.map +1 -0
  165. package/dist/Photoshop-udKZ0I3N.d.mts +204 -0
  166. package/dist/PrefixMap-BHFPDLO-.mjs +103 -0
  167. package/dist/PrefixMap-BHFPDLO-.mjs.map +1 -0
  168. package/dist/PrefixMap-BMlXrWNd.d.mts +64 -0
  169. package/dist/PrefixMap.d.mts +2 -0
  170. package/dist/PrefixMap.mjs +1 -0
  171. package/dist/Processor-CMmecFsb.mjs +198 -0
  172. package/dist/Processor-CMmecFsb.mjs.map +1 -0
  173. package/dist/Processor-FJPvO0CB.d.mts +435 -0
  174. package/dist/Protocol-BA7OkNgp.mjs +202 -0
  175. package/dist/Protocol-BA7OkNgp.mjs.map +1 -0
  176. package/dist/Protocol-DlSoiIKB.d.mts +108 -0
  177. package/dist/ProtocolErrors-Ckfejnl6.d.mts +84 -0
  178. package/dist/ProtocolErrors-czDPVcX5.mjs +129 -0
  179. package/dist/ProtocolErrors-czDPVcX5.mjs.map +1 -0
  180. package/dist/Query-D9A6LOpP.mjs +364 -0
  181. package/dist/Query-D9A6LOpP.mjs.map +1 -0
  182. package/dist/Query-KqSkTYyG.d.mts +96 -0
  183. package/dist/QueryBuilder-BLK9Vfbz.mjs +674 -0
  184. package/dist/QueryBuilder-BLK9Vfbz.mjs.map +1 -0
  185. package/dist/QueryBuilder-DUqh4ECe.d.mts +529 -0
  186. package/dist/RdfJs-D6-49XB5.mjs +86 -0
  187. package/dist/RdfJs-D6-49XB5.mjs.map +1 -0
  188. package/dist/RdfJs-DXFqdWrd.d.mts +76 -0
  189. package/dist/RdfJs.d.mts +2 -0
  190. package/dist/RdfJs.mjs +1 -0
  191. package/dist/RdfJson-5aKPDlPS.d.mts +297 -0
  192. package/dist/RdfJson-BNocgW4f.mjs +548 -0
  193. package/dist/RdfJson-BNocgW4f.mjs.map +1 -0
  194. package/dist/RdfXml-DJ9G4gOq.mjs +1014 -0
  195. package/dist/RdfXml-DJ9G4gOq.mjs.map +1 -0
  196. package/dist/RdfXml-_N7yxWEp.d.mts +149 -0
  197. package/dist/Rdfs-BRVPsAjc.d.mts +84 -0
  198. package/dist/Rdfs-CyY2wVHI.mjs +167 -0
  199. package/dist/Rdfs-CyY2wVHI.mjs.map +1 -0
  200. package/dist/Rdfs.d.mts +2 -0
  201. package/dist/Rdfs.mjs +1 -0
  202. package/dist/Reasoner-BxYhx9s7.d.mts +94 -0
  203. package/dist/Reasoner-Cw90zrjv.mjs +798 -0
  204. package/dist/Reasoner-Cw90zrjv.mjs.map +1 -0
  205. package/dist/Reification-BmN4EfnM.d.mts +40 -0
  206. package/dist/Reification-dpqQvjDE.mjs +82 -0
  207. package/dist/Reification-dpqQvjDE.mjs.map +1 -0
  208. package/dist/Reification.d.mts +2 -0
  209. package/dist/Reification.mjs +1 -0
  210. package/dist/Report-XHs8htzK.mjs +121 -0
  211. package/dist/Report-XHs8htzK.mjs.map +1 -0
  212. package/dist/Report-hcXsc_19.d.mts +115 -0
  213. package/dist/Resource-B1cI8FyJ.d.mts +218 -0
  214. package/dist/Resource-sIEeNh15.mjs +374 -0
  215. package/dist/Resource-sIEeNh15.mjs.map +1 -0
  216. package/dist/Resource.d.mts +2 -0
  217. package/dist/Resource.mjs +1 -0
  218. package/dist/Results-BVNEC-Wt.d.mts +277 -0
  219. package/dist/Results-peJjGA2V.mjs +621 -0
  220. package/dist/Results-peJjGA2V.mjs.map +1 -0
  221. package/dist/ResultsStream-BhF0OcNn.mjs +639 -0
  222. package/dist/ResultsStream-BhF0OcNn.mjs.map +1 -0
  223. package/dist/ResultsStream-toYMXrOe.d.mts +100 -0
  224. package/dist/SemAct-CDchtk49.d.mts +96 -0
  225. package/dist/SemAct-CmyT4yI8.mjs +118 -0
  226. package/dist/SemAct-CmyT4yI8.mjs.map +1 -0
  227. package/dist/Serialization-DP9H5bYQ.mjs +514 -0
  228. package/dist/Serialization-DP9H5bYQ.mjs.map +1 -0
  229. package/dist/Serialization-Df8iVauT.d.mts +392 -0
  230. package/dist/Serialization.d.mts +2 -0
  231. package/dist/Serialization.mjs +1 -0
  232. package/dist/ServerFormats-CrRnjjf6.mjs +64 -0
  233. package/dist/ServerFormats-CrRnjjf6.mjs.map +1 -0
  234. package/dist/ServerFormats-DjC9NsO_.d.mts +36 -0
  235. package/dist/ServiceDescription-BERsvg-k.d.mts +54 -0
  236. package/dist/ServiceDescription-Dq5hxeGy.mjs +97 -0
  237. package/dist/ServiceDescription-Dq5hxeGy.mjs.map +1 -0
  238. package/dist/ShExC-Ctf-06CL.d.mts +67 -0
  239. package/dist/ShExC-DJbB19i3.mjs +1181 -0
  240. package/dist/ShExC-DJbB19i3.mjs.map +1 -0
  241. package/dist/ShExError-BeYFD9rv.d.mts +61 -0
  242. package/dist/ShExError-CVtq2NnM.mjs +64 -0
  243. package/dist/ShExError-CVtq2NnM.mjs.map +1 -0
  244. package/dist/ShExJ-C1u_wgyD.d.mts +531 -0
  245. package/dist/ShExJ-COiPd9Xw.mjs +532 -0
  246. package/dist/ShExJ-COiPd9Xw.mjs.map +1 -0
  247. package/dist/ShExR-ByR4mCh-.mjs +480 -0
  248. package/dist/ShExR-ByR4mCh-.mjs.map +1 -0
  249. package/dist/ShExR-CqONNNBz.d.mts +40 -0
  250. package/dist/ShapeMap-C422pxKl.d.mts +140 -0
  251. package/dist/ShapeMap-CsgKxB2G.mjs +181 -0
  252. package/dist/ShapeMap-CsgKxB2G.mjs.map +1 -0
  253. package/dist/Shapes-18GjfyBV.mjs +597 -0
  254. package/dist/Shapes-18GjfyBV.mjs.map +1 -0
  255. package/dist/Shapes-BQFDFc4Q.d.mts +306 -0
  256. package/dist/Sparql-BiYFMSpl.mjs +29 -0
  257. package/dist/Sparql-BiYFMSpl.mjs.map +1 -0
  258. package/dist/Sparql-DecpWTPh.d.mts +97 -0
  259. package/dist/SparqlClient-C_CjXbwj.mjs +333 -0
  260. package/dist/SparqlClient-C_CjXbwj.mjs.map +1 -0
  261. package/dist/SparqlClient-UPc88SHy.d.mts +290 -0
  262. package/dist/SparqlServer-CbUW-pVj.d.mts +71 -0
  263. package/dist/SparqlServer-Db7w7Cll.mjs +308 -0
  264. package/dist/SparqlServer-Db7w7Cll.mjs.map +1 -0
  265. package/dist/SqlStore-BBqFx-Wl.mjs +684 -0
  266. package/dist/SqlStore-BBqFx-Wl.mjs.map +1 -0
  267. package/dist/SqlStore-CCJo5I-e.d.mts +117 -0
  268. package/dist/Store-D0jmVfb3.d.mts +166 -0
  269. package/dist/Store-DH3Ow1GO.mjs +162 -0
  270. package/dist/Store-DH3Ow1GO.mjs.map +1 -0
  271. package/dist/Structure-BjMo4Bkc.mjs +334 -0
  272. package/dist/Structure-BjMo4Bkc.mjs.map +1 -0
  273. package/dist/Structure-n4CmDiab.d.mts +63 -0
  274. package/dist/Table-BGgm9nbM.mjs +538 -0
  275. package/dist/Table-BGgm9nbM.mjs.map +1 -0
  276. package/dist/Table-C3reiVrb.d.mts +261 -0
  277. package/dist/Term-B_4ezyXq.d.mts +619 -0
  278. package/dist/Term-CFLG1qu4.mjs +991 -0
  279. package/dist/Term-CFLG1qu4.mjs.map +1 -0
  280. package/dist/Term.d.mts +2 -0
  281. package/dist/Term.mjs +1 -0
  282. package/dist/TermCodec-CDZiEztW.mjs +397 -0
  283. package/dist/TermCodec-CDZiEztW.mjs.map +1 -0
  284. package/dist/TermCodec-_03bDXr0.d.mts +209 -0
  285. package/dist/TermCodec.d.mts +2 -0
  286. package/dist/TermCodec.mjs +1 -0
  287. package/dist/TermJson-BOPe0yve.d.mts +232 -0
  288. package/dist/TermJson-FAg3lvjl.mjs +142 -0
  289. package/dist/TermJson-FAg3lvjl.mjs.map +1 -0
  290. package/dist/TermJson.d.mts +2 -0
  291. package/dist/TermJson.mjs +1 -0
  292. package/dist/TermSchema-Bn9CoaYA.mjs +30 -0
  293. package/dist/TermSchema-Bn9CoaYA.mjs.map +1 -0
  294. package/dist/TermSchema-DBO6MroX.d.mts +6 -0
  295. package/dist/Testing-B-aPCpmu.mjs +63 -0
  296. package/dist/Testing-B-aPCpmu.mjs.map +1 -0
  297. package/dist/Testing-CF6s8P3O.d.mts +53 -0
  298. package/dist/Tiff-CR-2QeSI.d.mts +148 -0
  299. package/dist/Tiff-DlsOlZPM.mjs +169 -0
  300. package/dist/Tiff-DlsOlZPM.mjs.map +1 -0
  301. package/dist/Tools-7MdRKccr.d.mts +583 -0
  302. package/dist/Tools-ryxphZbI.mjs +329 -0
  303. package/dist/Tools-ryxphZbI.mjs.map +1 -0
  304. package/dist/Translate-B0YKKANS.d.mts +37 -0
  305. package/dist/Translate-gzWPq0Ia.mjs +308 -0
  306. package/dist/Translate-gzWPq0Ia.mjs.map +1 -0
  307. package/dist/Translation-DC9rLm2y.mjs +1535 -0
  308. package/dist/Translation-DC9rLm2y.mjs.map +1 -0
  309. package/dist/Translation-K4L9XBqX.d.mts +103 -0
  310. package/dist/TriG-BkqtqZ6Y.mjs +125 -0
  311. package/dist/TriG-BkqtqZ6Y.mjs.map +1 -0
  312. package/dist/TriG-xDjdDatp.d.mts +86 -0
  313. package/dist/Turtle-Bv1_bisW.d.mts +85 -0
  314. package/dist/Turtle-CZVUOtwl.mjs +133 -0
  315. package/dist/Turtle-CZVUOtwl.mjs.map +1 -0
  316. package/dist/ValidationReport-DBdJshW5.mjs +285 -0
  317. package/dist/ValidationReport-DBdJshW5.mjs.map +1 -0
  318. package/dist/ValidationReport-Dx3WxY0h.d.mts +192 -0
  319. package/dist/Validator-227ff9Rn.d.mts +179 -0
  320. package/dist/Validator-BzXMKDeJ.mjs +1162 -0
  321. package/dist/Validator-BzXMKDeJ.mjs.map +1 -0
  322. package/dist/Validator-Dl8cih5V.d.mts +207 -0
  323. package/dist/Validator-DmUfMbpL.mjs +568 -0
  324. package/dist/Validator-DmUfMbpL.mjs.map +1 -0
  325. package/dist/Vocab-DceKywpq.mjs +168 -0
  326. package/dist/Vocab-DceKywpq.mjs.map +1 -0
  327. package/dist/Vocab-Df-L-IwZ.d.mts +46 -0
  328. package/dist/Vocab-Do56UgBX.d.mts +81 -0
  329. package/dist/Vocab-TfpWG1Ne.mjs +118 -0
  330. package/dist/Vocab-TfpWG1Ne.mjs.map +1 -0
  331. package/dist/Vocab.d.mts +2 -0
  332. package/dist/Vocab.mjs +1 -0
  333. package/dist/Vocabulary-C6-GPOy4.d.mts +22 -0
  334. package/dist/Vocabulary-CnQl-_Z4.mjs +179 -0
  335. package/dist/Vocabulary-CnQl-_Z4.mjs.map +1 -0
  336. package/dist/Xml-B7iihYCS.mjs +976 -0
  337. package/dist/Xml-B7iihYCS.mjs.map +1 -0
  338. package/dist/Xml-CmfHS7SW.d.mts +267 -0
  339. package/dist/Xmp-D7CKA7MZ.d.mts +111 -0
  340. package/dist/Xmp-DCGN9pOD.mjs +307 -0
  341. package/dist/Xmp-DCGN9pOD.mjs.map +1 -0
  342. package/dist/XmpBasic-CP38jpR_.mjs +73 -0
  343. package/dist/XmpBasic-CP38jpR_.mjs.map +1 -0
  344. package/dist/XmpBasic-Cmbe53rQ.d.mts +64 -0
  345. package/dist/XmpMM-BfL_TgJF.mjs +73 -0
  346. package/dist/XmpMM-BfL_TgJF.mjs.map +1 -0
  347. package/dist/XmpMM-Dqm3IX8p.d.mts +63 -0
  348. package/dist/XmpRights-BKPtoI5L.mjs +73 -0
  349. package/dist/XmpRights-BKPtoI5L.mjs.map +1 -0
  350. package/dist/XmpRights-CaALZQz2.d.mts +63 -0
  351. package/dist/Xsd-Cdgx5zRB.mjs +405 -0
  352. package/dist/Xsd-Cdgx5zRB.mjs.map +1 -0
  353. package/dist/Xsd-D2elNhSm.d.mts +187 -0
  354. package/dist/Xsd.d.mts +2 -0
  355. package/dist/Xsd.mjs +1 -0
  356. package/dist/accessors-CEjaojuQ.mjs +28 -0
  357. package/dist/accessors-CEjaojuQ.mjs.map +1 -0
  358. package/dist/codec-Lb2T96rv.d.mts +20 -0
  359. package/dist/codec-QNo7IdJF.mjs +389 -0
  360. package/dist/codec-QNo7IdJF.mjs.map +1 -0
  361. package/dist/csvw/Csv2Json.d.mts +2 -0
  362. package/dist/csvw/Csv2Json.mjs +1 -0
  363. package/dist/csvw/Csv2Rdf.d.mts +2 -0
  364. package/dist/csvw/Csv2Rdf.mjs +1 -0
  365. package/dist/csvw/Datatype.d.mts +2 -0
  366. package/dist/csvw/Datatype.mjs +1 -0
  367. package/dist/csvw/Metadata.d.mts +2 -0
  368. package/dist/csvw/Metadata.mjs +1 -0
  369. package/dist/csvw/Processor.d.mts +2 -0
  370. package/dist/csvw/Processor.mjs +1 -0
  371. package/dist/csvw/Report.d.mts +2 -0
  372. package/dist/csvw/Report.mjs +1 -0
  373. package/dist/csvw/Table.d.mts +2 -0
  374. package/dist/csvw/Table.mjs +1 -0
  375. package/dist/csvw/index.d.mts +8 -0
  376. package/dist/csvw/index.mjs +8 -0
  377. package/dist/index-Cms2TYfC.d.mts +16 -0
  378. package/dist/index-Ct8xFmRs.d.mts +7 -0
  379. package/dist/index-D4QFwOjm.d.mts +28 -0
  380. package/dist/index.d.mts +18 -0
  381. package/dist/index.mjs +17 -0
  382. package/dist/jsonld/DocumentLoader.d.mts +2 -0
  383. package/dist/jsonld/DocumentLoader.mjs +1 -0
  384. package/dist/jsonld/JsonLd.d.mts +2 -0
  385. package/dist/jsonld/JsonLd.mjs +1 -0
  386. package/dist/jsonld/JsonLdError.d.mts +2 -0
  387. package/dist/jsonld/JsonLdError.mjs +1 -0
  388. package/dist/jsonld/index.d.mts +4 -0
  389. package/dist/jsonld/index.mjs +4 -0
  390. package/dist/lists-D-OpQ0Ir.mjs +77 -0
  391. package/dist/lists-D-OpQ0Ir.mjs.map +1 -0
  392. package/dist/loop-D5-gNx9K.mjs +21 -0
  393. package/dist/loop-D5-gNx9K.mjs.map +1 -0
  394. package/dist/loop-DZ2hXlr_.mjs +21 -0
  395. package/dist/loop-DZ2hXlr_.mjs.map +1 -0
  396. package/dist/n3/Isomorphism.d.mts +2 -0
  397. package/dist/n3/Isomorphism.mjs +1 -0
  398. package/dist/n3/Mapping.d.mts +2 -0
  399. package/dist/n3/Mapping.mjs +1 -0
  400. package/dist/n3/Model.d.mts +2 -0
  401. package/dist/n3/Model.mjs +1 -0
  402. package/dist/n3/N3.d.mts +2 -0
  403. package/dist/n3/N3.mjs +1 -0
  404. package/dist/n3/Reasoner.d.mts +2 -0
  405. package/dist/n3/Reasoner.mjs +2 -0
  406. package/dist/n3/Vocab.d.mts +2 -0
  407. package/dist/n3/Vocab.mjs +1 -0
  408. package/dist/n3/index.d.mts +7 -0
  409. package/dist/n3/index.mjs +7 -0
  410. package/dist/ntriples/Grammar.d.mts +2 -0
  411. package/dist/ntriples/Grammar.mjs +1 -0
  412. package/dist/ntriples/Lexical.d.mts +2 -0
  413. package/dist/ntriples/Lexical.mjs +1 -0
  414. package/dist/ntriples/NQuads.d.mts +2 -0
  415. package/dist/ntriples/NQuads.mjs +1 -0
  416. package/dist/ntriples/NTriples.d.mts +2 -0
  417. package/dist/ntriples/NTriples.mjs +1 -0
  418. package/dist/ntriples/index.d.mts +5 -0
  419. package/dist/ntriples/index.mjs +5 -0
  420. package/dist/rdfjson/RdfJson.d.mts +2 -0
  421. package/dist/rdfjson/RdfJson.mjs +1 -0
  422. package/dist/rdfjson/index.d.mts +2 -0
  423. package/dist/rdfjson/index.mjs +1 -0
  424. package/dist/rdfxml/RdfXml.d.mts +2 -0
  425. package/dist/rdfxml/RdfXml.mjs +1 -0
  426. package/dist/rdfxml/Xml.d.mts +2 -0
  427. package/dist/rdfxml/Xml.mjs +1 -0
  428. package/dist/rdfxml/index.d.mts +3 -0
  429. package/dist/rdfxml/index.mjs +3 -0
  430. package/dist/rolldown-runtime-D8jQpDG7.mjs +12 -0
  431. package/dist/serialize-96KBvKaf.mjs +1463 -0
  432. package/dist/serialize-96KBvKaf.mjs.map +1 -0
  433. package/dist/serialize-DsoXdM6n.d.mts +37 -0
  434. package/dist/shacl/Message.d.mts +2 -0
  435. package/dist/shacl/Message.mjs +1 -0
  436. package/dist/shacl/Path.d.mts +2 -0
  437. package/dist/shacl/Path.mjs +1 -0
  438. package/dist/shacl/Shapes.d.mts +2 -0
  439. package/dist/shacl/Shapes.mjs +1 -0
  440. package/dist/shacl/Sparql.d.mts +2 -0
  441. package/dist/shacl/Sparql.mjs +1 -0
  442. package/dist/shacl/ValidationReport.d.mts +2 -0
  443. package/dist/shacl/ValidationReport.mjs +1 -0
  444. package/dist/shacl/Validator.d.mts +2 -0
  445. package/dist/shacl/Validator.mjs +1 -0
  446. package/dist/shacl/Vocabulary.d.mts +2 -0
  447. package/dist/shacl/Vocabulary.mjs +1 -0
  448. package/dist/shacl/index.d.mts +9 -0
  449. package/dist/shacl/index.mjs +8 -0
  450. package/dist/shex/SemAct.d.mts +2 -0
  451. package/dist/shex/SemAct.mjs +1 -0
  452. package/dist/shex/ShExC.d.mts +2 -0
  453. package/dist/shex/ShExC.mjs +1 -0
  454. package/dist/shex/ShExError.d.mts +2 -0
  455. package/dist/shex/ShExError.mjs +1 -0
  456. package/dist/shex/ShExJ.d.mts +2 -0
  457. package/dist/shex/ShExJ.mjs +2 -0
  458. package/dist/shex/ShExR.d.mts +2 -0
  459. package/dist/shex/ShExR.mjs +1 -0
  460. package/dist/shex/ShapeMap.d.mts +2 -0
  461. package/dist/shex/ShapeMap.mjs +1 -0
  462. package/dist/shex/Structure.d.mts +2 -0
  463. package/dist/shex/Structure.mjs +2 -0
  464. package/dist/shex/Validator.d.mts +2 -0
  465. package/dist/shex/Validator.mjs +4 -0
  466. package/dist/shex/index.d.mts +9 -0
  467. package/dist/shex/index.mjs +9 -0
  468. package/dist/sparql/Algebra.d.mts +2 -0
  469. package/dist/sparql/Algebra.mjs +1 -0
  470. package/dist/sparql/Ast.d.mts +2 -0
  471. package/dist/sparql/Ast.mjs +1 -0
  472. package/dist/sparql/Bindings.d.mts +2 -0
  473. package/dist/sparql/Bindings.mjs +1 -0
  474. package/dist/sparql/ClientErrors.d.mts +2 -0
  475. package/dist/sparql/ClientErrors.mjs +1 -0
  476. package/dist/sparql/ClientFormats.d.mts +2 -0
  477. package/dist/sparql/ClientFormats.mjs +1 -0
  478. package/dist/sparql/Engine.d.mts +2 -0
  479. package/dist/sparql/Engine.mjs +1 -0
  480. package/dist/sparql/Errors.d.mts +2 -0
  481. package/dist/sparql/Errors.mjs +1 -0
  482. package/dist/sparql/Expression.d.mts +2 -0
  483. package/dist/sparql/Expression.mjs +1 -0
  484. package/dist/sparql/Federation.d.mts +2 -0
  485. package/dist/sparql/Federation.mjs +1 -0
  486. package/dist/sparql/Functions.d.mts +2 -0
  487. package/dist/sparql/Functions.mjs +1 -0
  488. package/dist/sparql/Generator.d.mts +2 -0
  489. package/dist/sparql/Generator.mjs +1 -0
  490. package/dist/sparql/GraphStore.d.mts +2 -0
  491. package/dist/sparql/GraphStore.mjs +1 -0
  492. package/dist/sparql/Optimizer.d.mts +2 -0
  493. package/dist/sparql/Optimizer.mjs +1 -0
  494. package/dist/sparql/Options.d.mts +2 -0
  495. package/dist/sparql/Options.mjs +1 -0
  496. package/dist/sparql/Parser.d.mts +2 -0
  497. package/dist/sparql/Parser.mjs +1 -0
  498. package/dist/sparql/Protocol.d.mts +2 -0
  499. package/dist/sparql/Protocol.mjs +1 -0
  500. package/dist/sparql/ProtocolErrors.d.mts +2 -0
  501. package/dist/sparql/ProtocolErrors.mjs +1 -0
  502. package/dist/sparql/QueryBuilder.d.mts +2 -0
  503. package/dist/sparql/QueryBuilder.mjs +1 -0
  504. package/dist/sparql/Results.d.mts +2 -0
  505. package/dist/sparql/Results.mjs +1 -0
  506. package/dist/sparql/ResultsStream.d.mts +2 -0
  507. package/dist/sparql/ResultsStream.mjs +1 -0
  508. package/dist/sparql/ServerFormats.d.mts +2 -0
  509. package/dist/sparql/ServerFormats.mjs +1 -0
  510. package/dist/sparql/ServiceDescription.d.mts +2 -0
  511. package/dist/sparql/ServiceDescription.mjs +1 -0
  512. package/dist/sparql/SparqlClient.d.mts +2 -0
  513. package/dist/sparql/SparqlClient.mjs +1 -0
  514. package/dist/sparql/SparqlServer.d.mts +2 -0
  515. package/dist/sparql/SparqlServer.mjs +1 -0
  516. package/dist/sparql/Store.d.mts +2 -0
  517. package/dist/sparql/Store.mjs +1 -0
  518. package/dist/sparql/TermSchema.d.mts +3 -0
  519. package/dist/sparql/TermSchema.mjs +2 -0
  520. package/dist/sparql/Testing.d.mts +2 -0
  521. package/dist/sparql/Testing.mjs +1 -0
  522. package/dist/sparql/Translate.d.mts +2 -0
  523. package/dist/sparql/Translate.mjs +1 -0
  524. package/dist/sparql/ai/Mcp.d.mts +2 -0
  525. package/dist/sparql/ai/Mcp.mjs +1 -0
  526. package/dist/sparql/ai/Tools.d.mts +2 -0
  527. package/dist/sparql/ai/Tools.mjs +1 -0
  528. package/dist/sparql/ai/index.d.mts +3 -0
  529. package/dist/sparql/ai/index.mjs +3 -0
  530. package/dist/sparql/index.d.mts +30 -0
  531. package/dist/sparql/index.mjs +29 -0
  532. package/dist/sparql/shacl/Evaluator.d.mts +2 -0
  533. package/dist/sparql/shacl/Evaluator.mjs +1 -0
  534. package/dist/sparql/shacl/Query.d.mts +2 -0
  535. package/dist/sparql/shacl/Query.mjs +1 -0
  536. package/dist/sparql/shacl/index.d.mts +3 -0
  537. package/dist/sparql/shacl/index.mjs +3 -0
  538. package/dist/sparql/sql/Dialect.d.mts +2 -0
  539. package/dist/sparql/sql/Dialect.mjs +1 -0
  540. package/dist/sparql/sql/SqlStore.d.mts +2 -0
  541. package/dist/sparql/sql/SqlStore.mjs +1 -0
  542. package/dist/sparql/sql/Translation.d.mts +2 -0
  543. package/dist/sparql/sql/Translation.mjs +1 -0
  544. package/dist/sparql/sql/index.d.mts +4 -0
  545. package/dist/sparql/sql/index.mjs +4 -0
  546. package/dist/stringMap-D5YIpYtR.mjs +38 -0
  547. package/dist/stringMap-D5YIpYtR.mjs.map +1 -0
  548. package/dist/tokens-C6BzeodQ.mjs +24 -0
  549. package/dist/tokens-C6BzeodQ.mjs.map +1 -0
  550. package/dist/turtle/Grammar.d.mts +3 -0
  551. package/dist/turtle/Grammar.mjs +3 -0
  552. package/dist/turtle/Manifest.d.mts +2 -0
  553. package/dist/turtle/Manifest.mjs +1 -0
  554. package/dist/turtle/TriG.d.mts +2 -0
  555. package/dist/turtle/TriG.mjs +1 -0
  556. package/dist/turtle/Turtle.d.mts +2 -0
  557. package/dist/turtle/Turtle.mjs +1 -0
  558. package/dist/turtle/index.d.mts +5 -0
  559. package/dist/turtle/index.mjs +5 -0
  560. package/dist/xmp/DublinCore.d.mts +2 -0
  561. package/dist/xmp/DublinCore.mjs +1 -0
  562. package/dist/xmp/Exif.d.mts +2 -0
  563. package/dist/xmp/Exif.mjs +1 -0
  564. package/dist/xmp/Extract.d.mts +2 -0
  565. package/dist/xmp/Extract.mjs +1 -0
  566. package/dist/xmp/Metadata.d.mts +2 -0
  567. package/dist/xmp/Metadata.mjs +1 -0
  568. package/dist/xmp/Namespaces.d.mts +2 -0
  569. package/dist/xmp/Namespaces.mjs +1 -0
  570. package/dist/xmp/Packet.d.mts +2 -0
  571. package/dist/xmp/Packet.mjs +1 -0
  572. package/dist/xmp/Pdf.d.mts +2 -0
  573. package/dist/xmp/Pdf.mjs +1 -0
  574. package/dist/xmp/PdfA.d.mts +2 -0
  575. package/dist/xmp/PdfA.mjs +1 -0
  576. package/dist/xmp/Photoshop.d.mts +2 -0
  577. package/dist/xmp/Photoshop.mjs +1 -0
  578. package/dist/xmp/Tiff.d.mts +2 -0
  579. package/dist/xmp/Tiff.mjs +1 -0
  580. package/dist/xmp/Xmp.d.mts +2 -0
  581. package/dist/xmp/Xmp.mjs +3 -0
  582. package/dist/xmp/XmpBasic.d.mts +2 -0
  583. package/dist/xmp/XmpBasic.mjs +1 -0
  584. package/dist/xmp/XmpMM.d.mts +2 -0
  585. package/dist/xmp/XmpMM.mjs +1 -0
  586. package/dist/xmp/XmpRights.d.mts +2 -0
  587. package/dist/xmp/XmpRights.mjs +1 -0
  588. package/dist/xmp/index.d.mts +15 -0
  589. package/dist/xmp/index.mjs +15 -0
  590. package/package.json +195 -3
  591. package/src/Dataset.ts +1085 -0
  592. package/src/Iri.ts +322 -0
  593. package/src/Isomorphism.ts +319 -0
  594. package/src/LanguageTag.ts +98 -0
  595. package/src/Namespace.ts +100 -0
  596. package/src/PrefixMap.ts +117 -0
  597. package/src/RdfJs.ts +146 -0
  598. package/src/Rdfs.ts +241 -0
  599. package/src/Reification.ts +103 -0
  600. package/src/Resource.ts +873 -0
  601. package/src/Serialization.ts +775 -0
  602. package/src/Term.ts +1300 -0
  603. package/src/TermCodec.ts +505 -0
  604. package/src/TermJson.ts +313 -0
  605. package/src/Vocab.ts +161 -0
  606. package/src/Xsd.ts +573 -0
  607. package/src/csvw/Csv2Json.ts +265 -0
  608. package/src/csvw/Csv2Rdf.ts +268 -0
  609. package/src/csvw/Datatype.ts +589 -0
  610. package/src/csvw/Metadata.ts +1523 -0
  611. package/src/csvw/Processor.ts +276 -0
  612. package/src/csvw/Report.ts +135 -0
  613. package/src/csvw/Table.ts +759 -0
  614. package/src/csvw/index.ts +22 -0
  615. package/src/csvw/internal/dateFormat.ts +202 -0
  616. package/src/csvw/internal/json.ts +104 -0
  617. package/src/csvw/internal/numberFormat.ts +369 -0
  618. package/src/csvw/internal/object.ts +23 -0
  619. package/src/csvw/internal/uriTemplate.ts +130 -0
  620. package/src/csvw/internal/url.ts +93 -0
  621. package/src/csvw/internal/vocab.ts +282 -0
  622. package/src/index.ts +40 -0
  623. package/src/internal/arbitrary.ts +148 -0
  624. package/src/internal/loop.ts +24 -0
  625. package/src/internal/pending.ts +20 -0
  626. package/src/internal/textDecoder.ts +183 -0
  627. package/src/jsonld/DocumentLoader.ts +512 -0
  628. package/src/jsonld/JsonLd.ts +847 -0
  629. package/src/jsonld/JsonLdError.ts +105 -0
  630. package/src/jsonld/index.ts +13 -0
  631. package/src/jsonld/internal/compact.ts +852 -0
  632. package/src/jsonld/internal/context.ts +781 -0
  633. package/src/jsonld/internal/expand.ts +614 -0
  634. package/src/jsonld/internal/flatten.ts +243 -0
  635. package/src/jsonld/internal/frame.ts +559 -0
  636. package/src/jsonld/internal/iri.ts +52 -0
  637. package/src/jsonld/internal/json.ts +19 -0
  638. package/src/jsonld/internal/linkHeader.ts +60 -0
  639. package/src/jsonld/internal/rdf.ts +481 -0
  640. package/src/jsonld/internal/util.ts +367 -0
  641. package/src/n3/Isomorphism.ts +476 -0
  642. package/src/n3/Mapping.ts +332 -0
  643. package/src/n3/Model.ts +696 -0
  644. package/src/n3/N3.ts +237 -0
  645. package/src/n3/Reasoner.ts +568 -0
  646. package/src/n3/Vocab.ts +111 -0
  647. package/src/n3/index.ts +21 -0
  648. package/src/n3/internal/builtins.ts +668 -0
  649. package/src/n3/internal/guards.ts +23 -0
  650. package/src/n3/internal/lists.ts +106 -0
  651. package/src/n3/internal/loop.ts +28 -0
  652. package/src/n3/internal/parser.ts +1032 -0
  653. package/src/n3/internal/writer.ts +344 -0
  654. package/src/ntriples/Grammar.ts +317 -0
  655. package/src/ntriples/Lexical.ts +321 -0
  656. package/src/ntriples/NQuads.ts +140 -0
  657. package/src/ntriples/NTriples.ts +143 -0
  658. package/src/ntriples/index.ts +14 -0
  659. package/src/ntriples/internal/codec.ts +229 -0
  660. package/src/ntriples/internal/lineParser.ts +326 -0
  661. package/src/ntriples/internal/loop.ts +14 -0
  662. package/src/rdfjson/RdfJson.ts +806 -0
  663. package/src/rdfjson/index.ts +9 -0
  664. package/src/rdfjson/internal/json.ts +19 -0
  665. package/src/rdfxml/RdfXml.ts +1408 -0
  666. package/src/rdfxml/Xml.ts +419 -0
  667. package/src/rdfxml/index.ts +11 -0
  668. package/src/rdfxml/internal/chars.ts +73 -0
  669. package/src/rdfxml/internal/loop.ts +24 -0
  670. package/src/rdfxml/internal/parser.ts +1265 -0
  671. package/src/shacl/Message.ts +102 -0
  672. package/src/shacl/Path.ts +483 -0
  673. package/src/shacl/Shapes.ts +913 -0
  674. package/src/shacl/Sparql.ts +128 -0
  675. package/src/shacl/ValidationReport.ts +438 -0
  676. package/src/shacl/Validator.ts +1156 -0
  677. package/src/shacl/Vocabulary.ts +180 -0
  678. package/src/shacl/index.ts +22 -0
  679. package/src/shacl/internal/compare.ts +128 -0
  680. package/src/shacl/internal/regex.ts +56 -0
  681. package/src/shex/SemAct.ts +197 -0
  682. package/src/shex/ShExC.ts +415 -0
  683. package/src/shex/ShExError.ts +71 -0
  684. package/src/shex/ShExJ.ts +893 -0
  685. package/src/shex/ShExR.ts +640 -0
  686. package/src/shex/ShapeMap.ts +385 -0
  687. package/src/shex/Structure.ts +467 -0
  688. package/src/shex/Validator.ts +395 -0
  689. package/src/shex/index.ts +24 -0
  690. package/src/shex/internal/engine.ts +682 -0
  691. package/src/shex/internal/iterate.ts +14 -0
  692. package/src/shex/internal/json.ts +12 -0
  693. package/src/shex/internal/lexer.ts +56 -0
  694. package/src/shex/internal/nodeConstraint.ts +368 -0
  695. package/src/shex/internal/shexcLexer.ts +387 -0
  696. package/src/shex/internal/shexcParser.ts +1312 -0
  697. package/src/shex/internal/tokens.ts +41 -0
  698. package/src/shex/internal/xpathRegex.ts +290 -0
  699. package/src/sparql/Algebra.ts +914 -0
  700. package/src/sparql/Ast.ts +1344 -0
  701. package/src/sparql/Bindings.ts +272 -0
  702. package/src/sparql/ClientErrors.ts +156 -0
  703. package/src/sparql/ClientFormats.ts +70 -0
  704. package/src/sparql/Engine.ts +699 -0
  705. package/src/sparql/Errors.ts +30 -0
  706. package/src/sparql/Expression.ts +360 -0
  707. package/src/sparql/Federation.ts +187 -0
  708. package/src/sparql/Functions.ts +689 -0
  709. package/src/sparql/Generator.ts +426 -0
  710. package/src/sparql/GraphStore.ts +341 -0
  711. package/src/sparql/Optimizer.ts +230 -0
  712. package/src/sparql/Options.ts +191 -0
  713. package/src/sparql/Parser.ts +173 -0
  714. package/src/sparql/Protocol.ts +342 -0
  715. package/src/sparql/ProtocolErrors.ts +113 -0
  716. package/src/sparql/QueryBuilder.ts +953 -0
  717. package/src/sparql/Results.ts +844 -0
  718. package/src/sparql/ResultsStream.ts +771 -0
  719. package/src/sparql/ServerFormats.ts +75 -0
  720. package/src/sparql/ServiceDescription.ts +130 -0
  721. package/src/sparql/SparqlClient.ts +947 -0
  722. package/src/sparql/SparqlServer.ts +528 -0
  723. package/src/sparql/Store.ts +311 -0
  724. package/src/sparql/TermSchema.ts +20 -0
  725. package/src/sparql/Testing.ts +114 -0
  726. package/src/sparql/Translate.ts +407 -0
  727. package/src/sparql/ai/Mcp.ts +43 -0
  728. package/src/sparql/ai/Tools.ts +481 -0
  729. package/src/sparql/ai/index.ts +11 -0
  730. package/src/sparql/index.ts +64 -0
  731. package/src/sparql/internal/evaluator.ts +947 -0
  732. package/src/sparql/internal/hash.ts +418 -0
  733. package/src/sparql/internal/json.ts +12 -0
  734. package/src/sparql/internal/lexer.ts +488 -0
  735. package/src/sparql/internal/loop.ts +24 -0
  736. package/src/sparql/internal/parser.ts +2215 -0
  737. package/src/sparql/internal/prefetch.ts +46 -0
  738. package/src/sparql/internal/stringMap.ts +39 -0
  739. package/src/sparql/internal/textResults.ts +226 -0
  740. package/src/sparql/internal/values.ts +550 -0
  741. package/src/sparql/shacl/Evaluator.ts +478 -0
  742. package/src/sparql/shacl/Query.ts +574 -0
  743. package/src/sparql/shacl/index.ts +12 -0
  744. package/src/sparql/sql/Dialect.ts +246 -0
  745. package/src/sparql/sql/SqlStore.ts +1080 -0
  746. package/src/sparql/sql/Translation.ts +1898 -0
  747. package/src/sparql/sql/index.ts +17 -0
  748. package/src/sparql/sql/internal/encoding.ts +313 -0
  749. package/src/turtle/Grammar.ts +286 -0
  750. package/src/turtle/Manifest.ts +215 -0
  751. package/src/turtle/TriG.ts +158 -0
  752. package/src/turtle/Turtle.ts +166 -0
  753. package/src/turtle/index.ts +14 -0
  754. package/src/turtle/internal/loop.ts +23 -0
  755. package/src/turtle/internal/parse.ts +112 -0
  756. package/src/turtle/internal/parser.ts +1303 -0
  757. package/src/turtle/internal/serialize.ts +79 -0
  758. package/src/turtle/internal/streamWriter.ts +128 -0
  759. package/src/turtle/internal/writer.ts +898 -0
  760. package/src/xmp/DublinCore.ts +147 -0
  761. package/src/xmp/Exif.ts +109 -0
  762. package/src/xmp/Extract.ts +351 -0
  763. package/src/xmp/Metadata.ts +703 -0
  764. package/src/xmp/Namespaces.ts +228 -0
  765. package/src/xmp/Packet.ts +297 -0
  766. package/src/xmp/Pdf.ts +99 -0
  767. package/src/xmp/PdfA.ts +280 -0
  768. package/src/xmp/Photoshop.ts +275 -0
  769. package/src/xmp/Tiff.ts +196 -0
  770. package/src/xmp/Xmp.ts +430 -0
  771. package/src/xmp/XmpBasic.ts +90 -0
  772. package/src/xmp/XmpMM.ts +82 -0
  773. package/src/xmp/XmpRights.ts +83 -0
  774. package/src/xmp/index.ts +36 -0
  775. package/src/xmp/internal/accessors.ts +72 -0
  776. package/src/xmp/internal/xml.ts +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultsStream-BhF0OcNn.mjs","names":["Results.ResultsParseError","Results.JsonTermSchema","Json.parse","B.fromEntries","Results.termFromJson","Results.parseTerm","Results.codecFor","Results.Json","Results.Xml","Results.Tsv","Results.Csv"],"sources":["../src/sparql/ResultsStream.ts"],"sourcesContent":["/**\n * Incremental parsing of SPARQL results documents: solutions are emitted as\n * soon as they have been received, without buffering the whole response.\n *\n * - JSON (`application/sparql-results+json`): an incremental scanner finds\n * the `head`, `boolean` and each element of `results.bindings`, decoded\n * with `Results.JsonTermSchema`;\n * - XML (`application/sparql-results+xml`): complete `<result>` elements are\n * cut from the input and parsed with `Results.Xml.parse`;\n * - TSV (`text/tab-separated-values`): line by line with\n * `Results.parseTerm`;\n * - CSV (`text/csv`): complete records (whose quoted cells may span lines)\n * are parsed with `Results.Csv.parse` as they arrive.\n *\n * @since 0.1.0\n */\nimport * as Match from 'effect/Match';\nimport * as Arr from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Iterable from 'effect/Iterable';\nimport * as Option from 'effect/Option';\nimport * as Predicate from 'effect/Predicate';\nimport * as Record from 'effect/Record';\nimport * as Result from 'effect/Result';\nimport * as Schema from 'effect/Schema';\nimport * as Stream from 'effect/Stream';\nimport type * as Term from '../Term.ts';\nimport * as B from './Bindings.ts';\nimport * as Json from './internal/json.ts';\nimport * as Results from './Results.ts';\n\n/**\n * An event of a results document.\n *\n * @since 0.1.0\n * @category models\n */\nexport type ResultEvent =\n | { readonly _tag: 'Variables'; readonly variables: ReadonlyArray<string> }\n | { readonly _tag: 'Solution'; readonly bindings: B.Bindings }\n | { readonly _tag: 'Boolean'; readonly value: boolean };\n\n/**\n * An incremental parser: `push` consumes a chunk of text and returns the\n * events it completes; `end` flushes the remaining input. Both throw\n * `Results.ResultsParseError` on malformed input.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Incremental {\n readonly push: (chunk: string) => ReadonlyArray<ResultEvent>;\n readonly end: () => ReadonlyArray<ResultEvent>;\n}\n\nconst fail: (format: string, message: string) => never = (format, message) => {\n throw new Results.ResultsParseError({ format, message });\n};\n\nconst variablesEvent = (variables: ReadonlyArray<string>): ResultEvent => ({\n _tag: 'Variables',\n variables,\n});\n\nconst isBooleanResult = Predicate.isTagged('Boolean');\n\nconst fromParsed = (parsed: Results.ParsedResult): Array<ResultEvent> =>\n isBooleanResult(parsed)\n ? [{ _tag: 'Boolean', value: parsed.value }]\n : [\n variablesEvent(parsed.variables),\n ...parsed.bindings.map((bindings) => ({ _tag: 'Solution', bindings }) as const),\n ];\n\n/** Appends a solution event per row of a parsed result set (none for a boolean). */\nconst pushSolutions = (parsed: Results.ParsedResult, out: Array<ResultEvent>): void => {\n if (isBooleanResult(parsed)) return;\n parsed.bindings.forEach((bindings) => {\n out.push({ _tag: 'Solution', bindings });\n });\n};\n\nconst runSyncParse = (\n effect: Effect.Effect<Results.ParsedResult, Results.ResultsParseError>,\n): Results.ParsedResult => {\n const result = Effect.runSync(Effect.result(effect));\n if (Result.isFailure(result)) throw result.failure;\n return result.success;\n};\n\n// -----------------------------------------------------------------------------\n// JSON\n// -----------------------------------------------------------------------------\n\nconst decodeJsonString = Schema.decodeUnknownResult(Schema.fromJsonString(Schema.String));\nconst decodeRow = Schema.decodeUnknownResult(Schema.Record(Schema.String, Results.JsonTermSchema));\nconst decodeHead = Schema.decodeUnknownResult(\n Schema.Struct({ vars: Schema.optional(Schema.Array(Schema.String)) }),\n);\n\ninterface Frame {\n readonly type: 'object' | 'array';\n /** The last key read in an object (`''` before the first). */\n key: string;\n expectKey: boolean;\n}\n\ntype CaptureKind = 'head' | 'boolean' | 'binding';\n\n/**\n * One token of JSON outside a string, as capture groups: (1) a run of\n * whitespace, (2) an opening and (3) a closing bracket, (4) `:` or `,`, (5)\n * the body of a string that starts here, followed by (6) its closing quote or\n * (7) a lone backslash at the end of the chunk (neither: the chunk ends inside\n * the string); no group: a run of primitive (number, literal) characters.\n */\nconst JSON_TOKEN =\n /([ \\t\\n\\r]+)|([{[])|([}\\]])|([:,])|\"([^\"\\\\]*(?:\\\\[^][^\"\\\\]*)*)(?:(\")|(\\\\))?|[^ \\t\\n\\r{}[\\]:,\"]+/g;\n\n/** The rest of a string a chunk starts inside: up to its closing quote, a lone final backslash or the end. */\nconst STRING_REST = /[^\"\\\\]*(?:\\\\[^][^\"\\\\]*)*/y;\n\n/**\n * An incremental parser for SPARQL JSON results.\n *\n * @since 0.1.0\n * @category parsers\n */\nexport const json = (): Incremental => {\n const stack: Array<Frame> = [];\n let inString = false;\n let escape = false;\n let stringIsKey = false;\n let keyRaw = '';\n let primitive = false;\n let capturing = false;\n let capture: CaptureKind = 'head';\n let captureDepth = 0;\n let captureBuf = '';\n let captureStart = -1;\n let done = false;\n let sawHead = false;\n let sawBody = false;\n // The chunk being scanned and the events it completes.\n let chunk = '';\n let out: Array<ResultEvent> = [];\n\n /** Whether a value starting here is one to capture, and which. */\n const interesting = (): Option.Option<CaptureKind> => {\n const top = stack[stack.length - 1];\n if (top === undefined) return Option.none();\n if (stack.length === 1 && top.type === 'object') {\n if (top.key === 'head') return Option.some('head');\n if (top.key === 'boolean') return Option.some('boolean');\n return Option.none();\n }\n if (\n stack.length === 3 &&\n top.type === 'array' &&\n stack[0]?.key === 'results' &&\n stack[1]?.type === 'object' &&\n stack[1].key === 'bindings'\n ) {\n return Option.some('binding');\n }\n return Option.none();\n };\n\n const emit = (kind: CaptureKind, text: string) => {\n const parsed = Json.parse(text);\n if (Result.isFailure(parsed)) fail('json', `Invalid JSON: ${parsed.failure}`);\n const value = parsed.success;\n if (kind === 'head') {\n const head = decodeHead(value);\n if (Result.isFailure(head)) fail('json', `Invalid head: ${head.failure.message}`);\n sawHead = true;\n out.push(variablesEvent(head.success.vars ?? []));\n } else if (kind === 'boolean') {\n if (!Predicate.isBoolean(value)) fail('json', '\"boolean\" must be true or false');\n sawBody = true;\n out.push({ _tag: 'Boolean', value });\n } else {\n const row = decodeRow(value);\n if (Result.isFailure(row)) fail('json', `Invalid binding: ${row.failure.message}`);\n sawBody = true;\n out.push({\n _tag: 'Solution',\n bindings: B.fromEntries(\n Arr.map(Record.toEntries(row.success), ([k, v]) => [k, Results.termFromJson(v)] as const),\n ),\n });\n }\n };\n\n /** Emits the captured value if it ends (exclusively) at `end` of the chunk. */\n const finish = (end: number) => {\n if (!capturing || stack.length !== captureDepth) return;\n const text = captureBuf + chunk.slice(captureStart, end);\n capturing = false;\n captureBuf = '';\n captureStart = -1;\n emit(capture, text);\n };\n const valueStart = (i: number) => {\n if (capturing) return;\n const kind = interesting();\n if (Option.isSome(kind)) {\n capturing = true;\n capture = kind.value;\n captureDepth = stack.length;\n captureStart = i;\n captureBuf = '';\n }\n };\n const endPrimitive = (i: number) => {\n if (!primitive) return;\n primitive = false;\n finish(i);\n };\n /** Ends the current string at its closing quote, `quote`. */\n const endString = (quote: number) => {\n inString = false;\n if (stringIsKey) {\n const key = decodeJsonString(`\"${keyRaw}\"`);\n if (Result.isFailure(key)) fail('json', 'Invalid object key');\n const top = stack[stack.length - 1];\n if (top !== undefined) {\n top.key = key.success;\n top.expectKey = false;\n }\n } else {\n finish(quote + 1);\n }\n };\n /** Continues a string that the previous chunk ended inside; returns where it stops. */\n const continueString = (): number => {\n let start = 0;\n if (escape) {\n escape = false;\n if (stringIsKey) keyRaw += chunk[0];\n start = 1;\n }\n STRING_REST.lastIndex = start;\n const body = STRING_REST.exec(chunk)?.[0] ?? '';\n const end = start + body.length;\n if (stringIsKey) keyRaw += body;\n if (end >= chunk.length) return end;\n if (chunk.charCodeAt(end) === 34 /* \" */) {\n endString(end);\n return end + 1;\n }\n // A lone backslash ends the chunk: the next one starts with the escaped character.\n escape = true;\n if (stringIsKey) keyRaw += '\\\\';\n return chunk.length;\n };\n\n /** Scans one token at `i` of the chunk (the groups are `JSON_TOKEN`'s, absent when unmatched). */\n const token = (\n i: number,\n ws?: string,\n open?: string,\n close?: string,\n punct?: string,\n body?: string,\n quote?: string,\n backslash?: string,\n ): void => {\n if (done) {\n if (ws === undefined) fail('json', 'Trailing data');\n return;\n }\n if (ws !== undefined) {\n endPrimitive(i);\n } else if (open !== undefined) {\n endPrimitive(i);\n valueStart(i);\n const isObject = open === '{';\n stack.push({ type: isObject ? 'object' : 'array', key: '', expectKey: isObject });\n } else if (close !== undefined) {\n endPrimitive(i);\n const frame = stack.pop();\n if (frame === undefined || frame.type !== (close === '}' ? 'object' : 'array')) {\n fail('json', 'Unbalanced brackets');\n }\n finish(i + 1);\n if (Arr.isReadonlyArrayEmpty(stack)) done = true;\n } else if (punct !== undefined) {\n endPrimitive(i);\n const top = stack[stack.length - 1];\n if (punct === ',' && top !== undefined && top.type === 'object') top.expectKey = true;\n } else if (body !== undefined) {\n endPrimitive(i);\n const top = stack[stack.length - 1];\n inString = true;\n if (top !== undefined && top.type === 'object' && top.expectKey) {\n stringIsKey = true;\n keyRaw = body;\n } else {\n stringIsKey = false;\n valueStart(i);\n }\n if (quote !== undefined) {\n endString(i + 1 + body.length);\n } else if (backslash !== undefined) {\n escape = true;\n if (stringIsKey) keyRaw += '\\\\';\n }\n } else {\n if (Arr.isReadonlyArrayEmpty(stack)) fail('json', 'Expected a JSON object');\n if (!primitive) {\n primitive = true;\n valueStart(i);\n }\n }\n };\n\n const push = (text: string): ReadonlyArray<ResultEvent> => {\n out = [];\n chunk = text;\n if (capturing) captureStart = 0;\n const from = inString && chunk !== '' ? continueString() : 0;\n if (from < chunk.length) {\n // `replace` drives the scan: one callback per token, nothing is kept.\n (from === 0 ? chunk : chunk.slice(from)).replace(\n JSON_TOKEN,\n (_m, ws, open, close, punct, body, quote, backslash, offset: number) => {\n token(from + offset, ws, open, close, punct, body, quote, backslash);\n return '';\n },\n );\n }\n if (capturing) {\n captureBuf += chunk.slice(captureStart);\n captureStart = 0;\n }\n chunk = '';\n return out;\n };\n\n return {\n push,\n end: () => {\n if (!done || inString) fail('json', 'Unexpected end of document');\n if (!sawHead && !sawBody) fail('json', 'Missing \"head\"');\n return [];\n },\n };\n};\n\n// -----------------------------------------------------------------------------\n// TSV\n// -----------------------------------------------------------------------------\n\n/**\n * An incremental parser for SPARQL TSV results.\n *\n * @since 0.1.0\n * @category parsers\n */\nexport const tsv = (): Incremental => {\n let buffer = '';\n /** Whether the first line (the variables, or a boolean) has been read. */\n let started = false;\n let variables: ReadonlyArray<string> = [];\n let boolean = false;\n const line = (raw: string, out: Array<ResultEvent>) => {\n const text = raw.endsWith('\\r') ? raw.slice(0, -1) : raw;\n if (!started) {\n started = true;\n const first = text.trim();\n if (first === 'true' || first === 'false') {\n boolean = true;\n out.push({ _tag: 'Boolean', value: first === 'true' });\n return;\n }\n variables = text === '' ? [] : text.split('\\t').map((v) => v.trim().replace(/^[?$]/, ''));\n out.push(variablesEvent(variables));\n return;\n }\n if (boolean) {\n if (text.trim() !== '') fail('tsv', 'Unexpected data after a boolean result');\n return;\n }\n const cells = text.split('\\t');\n const entries: Array<readonly [string, Term.GroundTerm]> = [];\n variables.forEach((variable, i) => {\n const cell = (cells[i] ?? '').trim();\n if (cell === '') return;\n const term = Results.parseTerm(cell);\n if (Option.isNone(term)) fail('tsv', `Invalid term: ${cell}`);\n entries.push([variable, term.value]);\n });\n out.push({ _tag: 'Solution', bindings: B.fromEntries(entries) });\n };\n return {\n push: (chunk) => {\n const out: Array<ResultEvent> = [];\n buffer += chunk;\n const nl = buffer.lastIndexOf('\\n');\n if (nl >= 0) {\n const complete = buffer.slice(0, nl);\n buffer = buffer.slice(nl + 1);\n complete.split('\\n').forEach((l) => line(l, out));\n }\n return out;\n },\n end: () => {\n const out: Array<ResultEvent> = [];\n if (buffer !== '') line(buffer, out);\n buffer = '';\n if (!started) fail('tsv', 'Empty document');\n return out;\n },\n };\n};\n\n// -----------------------------------------------------------------------------\n// XML\n// -----------------------------------------------------------------------------\n\nconst ROOT = /<([A-Za-z_][\\w.-]*:)?sparql\\b[^>]*>/;\nconst HEAD_END = /<\\/head\\s*>|<head\\b[^>]*\\/>/;\nconst RESULTS_START = /<results\\b[^>]*?(\\/?)>/;\nconst RESULT_END = /<result\\b[^>]*\\/>|<\\/result\\s*>/g;\n\nconst parseXmlResults = (doc: string) => runSyncParse(Results.Xml.parse(doc));\n\n/**\n * An incremental parser for SPARQL XML results.\n *\n * @since 0.1.0\n * @category parsers\n */\nexport const xml = (): Incremental => {\n let buffer = '';\n let phase: 'root' | 'head' | 'body' | 'results' | 'whole' | 'done' = 'root';\n let root = '';\n let head = '';\n const step = (out: Array<ResultEvent>): boolean => {\n return Match.value(phase).pipe(\n Match.when('root', () => {\n const m = ROOT.exec(buffer);\n if (m === null) return false;\n if (m[1] !== undefined || m[0].endsWith('/>')) {\n phase = 'whole';\n return false;\n }\n root = buffer.slice(0, m.index + m[0].length);\n buffer = buffer.slice(m.index + m[0].length);\n phase = 'head';\n return true;\n }),\n Match.when('head', () => {\n const m = HEAD_END.exec(buffer);\n if (m === null) return false;\n head = buffer.slice(0, m.index + m[0].length);\n buffer = buffer.slice(m.index + m[0].length);\n const parsed = parseXmlResults(`${root}${head}</sparql>`);\n out.push(variablesEvent(isBooleanResult(parsed) ? [] : parsed.variables));\n phase = 'body';\n return true;\n }),\n Match.when('body', () => {\n const results = RESULTS_START.exec(buffer);\n const boolean = buffer.indexOf('<boolean');\n if (boolean >= 0 && (results === null || boolean < results.index)) {\n const end = buffer.indexOf('</boolean>');\n if (end < 0) return false;\n const parsed = parseXmlResults(\n `${root}<head/>${buffer.slice(boolean, end + 10)}</sparql>`,\n );\n if (isBooleanResult(parsed)) out.push({ _tag: 'Boolean', value: parsed.value });\n buffer = '';\n phase = 'done';\n return false;\n }\n if (results === null) return false;\n buffer = buffer.slice(results.index + results[0].length);\n phase = results[1] === '/' ? 'done' : 'results';\n return true;\n }),\n Match.when('results', () => {\n // The end of the last complete `<result>` element.\n const last = Iterable.reduce(\n buffer.matchAll(RESULT_END),\n -1,\n (_, m) => m.index + m[0].length,\n );\n if (last < 0) return false;\n pushSolutions(\n parseXmlResults(`${root}<head/><results>${buffer.slice(0, last)}</results></sparql>`),\n out,\n );\n buffer = buffer.slice(last);\n return false;\n }),\n Match.orElse(() => false),\n );\n };\n /** Steps until a phase waits for more input (each `true` is a phase change). */\n const drain = (out: Array<ResultEvent>): void => {\n if (step(out)) drain(out);\n };\n /** Read through a function: `drain` may move `phase` to `whole`, which TypeScript cannot see. */\n const isWhole = (): boolean => phase === 'whole';\n let whole = '';\n return {\n push: (chunk) => {\n const out: Array<ResultEvent> = [];\n if (phase === 'whole') {\n whole += chunk;\n return out;\n }\n if (phase === 'done') return out;\n buffer += chunk;\n drain(out);\n if (isWhole()) {\n whole = buffer;\n buffer = '';\n }\n return out;\n },\n end: () => {\n if (phase === 'whole' || phase === 'root') {\n return fromParsed(parseXmlResults(whole + buffer));\n }\n if (phase === 'head' || phase === 'body') {\n // No <results> or <boolean>: let the full parser report the problem.\n if (phase === 'head') fail('xml', 'Unexpected end of document');\n const parsed = parseXmlResults(`${root}${head}${buffer}`);\n return isBooleanResult(parsed) ? [{ _tag: 'Boolean', value: parsed.value }] : [];\n }\n if (phase === 'results' && !/<\\/results\\s*>/.test(buffer)) {\n fail('xml', 'Unexpected end of document');\n }\n return [];\n },\n };\n};\n\n// -----------------------------------------------------------------------------\n// CSV and buffering\n// -----------------------------------------------------------------------------\n\n/** Where a scan of CSV text found line breaks outside quotes, and the quote state at its end. */\ninterface RecordScan {\n quoted: boolean;\n /** The first and last line break outside quotes (`-1`: none). */\n first: number;\n last: number;\n}\n\nconst QUOTE_OR_LINE_BREAK = /[\"\\n]/g;\n\n/** Scans `text` from `from`, starting inside quotes or not, for the line breaks that end records. */\nconst scanRecords = (text: string, from: number, quoted: boolean): RecordScan => {\n const scan: RecordScan = { quoted, first: -1, last: -1 };\n // `replace` drives the scan: one callback per quote or line break, nothing is kept.\n (from === 0 ? text : text.slice(from)).replace(QUOTE_OR_LINE_BREAK, (c, offset: number) => {\n if (c === '\"') {\n scan.quoted = !scan.quoted;\n } else if (!scan.quoted) {\n if (scan.first < 0) scan.first = from + offset;\n scan.last = from + offset;\n }\n return '';\n });\n return scan;\n};\n\n/**\n * An incremental parser for SPARQL CSV results: records are parsed (with the\n * header, by `Results.Csv.parse`) once they are complete, that is, once a line\n * break outside quotes has arrived.\n *\n * @since 0.1.0\n * @category parsers\n */\nexport const csv = (): Incremental => {\n let buffer = '';\n /** How far `buffer` has been scanned for record ends, and whether that is inside quotes. */\n let scanned = 0;\n let quoted = false;\n let header: Option.Option<string> = Option.none();\n let boolean = false;\n /** The lines of the header, and of the records parsed so far (header included). */\n let headerLines = 0;\n let lines = 0;\n const parse = (records: string): Results.ParsedResult => {\n const parsed = Result.try(() =>\n runSyncParse(\n Results.Csv.parse(\n Option.match(header, { onNone: () => records, onSome: (h) => h + records }),\n ),\n ),\n );\n if (Result.isSuccess(parsed)) return parsed.success;\n const e = parsed.failure;\n // Report lines of the whole document, not of the records parsed\n if (e instanceof Results.ResultsParseError && e.line !== undefined && Option.isSome(header)) {\n const line = e.line - headerLines + lines;\n throw e.column === undefined\n ? new Results.ResultsParseError({ format: e.format, message: e.message, line })\n : new Results.ResultsParseError({\n format: e.format,\n message: e.message,\n line,\n column: e.column,\n });\n }\n throw e;\n };\n const records = (input: string, out: Array<ResultEvent>) => {\n if (boolean || input === '') return;\n let text = input;\n if (Option.isNone(header)) {\n // The first record is the header (or a boolean)\n const end = recordEnd(text);\n const first = text.slice(0, end);\n const parsed = parse(first);\n if (isBooleanResult(parsed)) {\n boolean = true;\n out.push({ _tag: 'Boolean', value: parsed.value });\n return;\n }\n out.push(variablesEvent(parsed.variables));\n header = Option.some(first);\n headerLines = countLines(first);\n lines = headerLines;\n text = text.slice(end);\n if (text === '') return;\n }\n pushSolutions(parse(text), out);\n lines += countLines(text);\n };\n return {\n push: (chunk) => {\n const out: Array<ResultEvent> = [];\n buffer += chunk;\n const scan = scanRecords(buffer, scanned, quoted);\n quoted = scan.quoted;\n scanned = buffer.length;\n if (scan.last >= 0) {\n records(buffer.slice(0, scan.last + 1), out);\n buffer = buffer.slice(scan.last + 1);\n scanned = buffer.length;\n }\n return out;\n },\n end: () => {\n const out: Array<ResultEvent> = [];\n if (Option.isNone(header) && !boolean) return fromParsed(parse(buffer));\n records(buffer, out);\n buffer = '';\n return out;\n },\n };\n};\n\n/** The end of the first record of complete records (after its line break). */\nconst recordEnd = (text: string): number => {\n const { first } = scanRecords(text, 0, false);\n return first < 0 ? text.length : first + 1;\n};\n\nconst countLines = (text: string): number => text.split('\\n').length - 1;\n\n/**\n * A parser that buffers the whole document and parses it with a complete\n * results codec (used for CSV).\n *\n * @since 0.1.0\n * @category parsers\n */\nexport const buffered = (codec: Results.ResultsCodec): Incremental => {\n let buffer = '';\n return {\n push: (chunk) => {\n buffer += chunk;\n return [];\n },\n end: () => fromParsed(runSyncParse(codec.parse(buffer))),\n };\n};\n\n// -----------------------------------------------------------------------------\n// Streams\n// -----------------------------------------------------------------------------\n\n/**\n * Runs an incremental parser over a stream of text chunks.\n *\n * @since 0.1.0\n * @category streams\n */\nexport const run = <E, R>(\n input: Stream.Stream<string, E, R>,\n make: () => Incremental,\n format: string,\n): Stream.Stream<ResultEvent, E | Results.ResultsParseError, R> => {\n const step = (f: () => ReadonlyArray<ResultEvent>) =>\n Effect.try({\n try: f,\n catch: (e) =>\n e instanceof Results.ResultsParseError\n ? e\n : new Results.ResultsParseError({\n format,\n message:\n Predicate.hasProperty(e, 'message') && Predicate.isString(e.message)\n ? e.message\n : String(e),\n }),\n });\n return Stream.suspend(() => {\n const parser = make();\n return Stream.concat(\n Stream.flattenIterable(Stream.mapEffect(input, (chunk) => step(() => parser.push(chunk)))),\n Stream.flattenIterable(Stream.fromEffect(step(() => parser.end()))),\n );\n });\n};\n\n/**\n * Finds the incremental parser for a results media type.\n *\n * @since 0.1.0\n * @category streams\n */\nexport const parserFor = (\n mediaType: string,\n): Option.Option<{ readonly make: () => Incremental; readonly format: string }> => {\n const codec = Results.codecFor(mediaType);\n if (Option.isNone(codec)) return Option.none();\n return Match.value(codec).pipe(\n Match.when(\n ({ value }) => value === Results.Json,\n () => Option.some({ make: json, format: 'json' }),\n ),\n Match.when(\n ({ value }) => value === Results.Xml,\n () => Option.some({ make: xml, format: 'xml' }),\n ),\n Match.when(\n ({ value }) => value === Results.Tsv,\n () => Option.some({ make: tsv, format: 'tsv' }),\n ),\n Match.when(\n ({ value }) => value === Results.Csv,\n () => Option.some({ make: csv, format: 'csv' }),\n ),\n Match.orElse((found) => {\n const c = found.value;\n return Option.some({ make: () => buffered(c), format: c.format.extensions[0] ?? 'csv' });\n }),\n );\n};\n\n/**\n * Parses a results document of the given media type incrementally.\n * Returns `None` for unsupported media types.\n *\n * @since 0.1.0\n * @category streams\n */\nexport const parse = <E, R>(\n mediaType: string,\n input: Stream.Stream<string, E, R>,\n): Option.Option<Stream.Stream<ResultEvent, E | Results.ResultsParseError, R>> =>\n Option.map(parserFor(mediaType), ({ make, format }) => run(input, make, format));\n"],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import { t as Bindings } from "./Bindings-DiKpBd7f.mjs";
2
+ import { h as ResultsParseError, p as ResultsCodec } from "./Results-BVNEC-Wt.mjs";
3
+ import * as Option from "effect/Option";
4
+ import * as Stream from "effect/Stream";
5
+ declare namespace ResultsStream_d_exports {
6
+ export { Incremental, ResultEvent, buffered, csv, json, parse, parserFor, run, tsv, xml };
7
+ }
8
+ /**
9
+ * An event of a results document.
10
+ *
11
+ * @since 0.1.0
12
+ * @category models
13
+ */
14
+ type ResultEvent = {
15
+ readonly _tag: 'Variables';
16
+ readonly variables: ReadonlyArray<string>;
17
+ } | {
18
+ readonly _tag: 'Solution';
19
+ readonly bindings: Bindings;
20
+ } | {
21
+ readonly _tag: 'Boolean';
22
+ readonly value: boolean;
23
+ };
24
+ /**
25
+ * An incremental parser: `push` consumes a chunk of text and returns the
26
+ * events it completes; `end` flushes the remaining input. Both throw
27
+ * `Results.ResultsParseError` on malformed input.
28
+ *
29
+ * @since 0.1.0
30
+ * @category models
31
+ */
32
+ interface Incremental {
33
+ readonly push: (chunk: string) => ReadonlyArray<ResultEvent>;
34
+ readonly end: () => ReadonlyArray<ResultEvent>;
35
+ }
36
+ /**
37
+ * An incremental parser for SPARQL JSON results.
38
+ *
39
+ * @since 0.1.0
40
+ * @category parsers
41
+ */
42
+ declare const json: () => Incremental;
43
+ /**
44
+ * An incremental parser for SPARQL TSV results.
45
+ *
46
+ * @since 0.1.0
47
+ * @category parsers
48
+ */
49
+ declare const tsv: () => Incremental;
50
+ /**
51
+ * An incremental parser for SPARQL XML results.
52
+ *
53
+ * @since 0.1.0
54
+ * @category parsers
55
+ */
56
+ declare const xml: () => Incremental;
57
+ /**
58
+ * An incremental parser for SPARQL CSV results: records are parsed (with the
59
+ * header, by `Results.Csv.parse`) once they are complete, that is, once a line
60
+ * break outside quotes has arrived.
61
+ *
62
+ * @since 0.1.0
63
+ * @category parsers
64
+ */
65
+ declare const csv: () => Incremental;
66
+ /**
67
+ * A parser that buffers the whole document and parses it with a complete
68
+ * results codec (used for CSV).
69
+ *
70
+ * @since 0.1.0
71
+ * @category parsers
72
+ */
73
+ declare const buffered: (codec: ResultsCodec) => Incremental;
74
+ /**
75
+ * Runs an incremental parser over a stream of text chunks.
76
+ *
77
+ * @since 0.1.0
78
+ * @category streams
79
+ */
80
+ declare const run: <E, R>(input: Stream.Stream<string, E, R>, make: () => Incremental, format: string) => Stream.Stream<ResultEvent, E | ResultsParseError, R>;
81
+ /**
82
+ * Finds the incremental parser for a results media type.
83
+ *
84
+ * @since 0.1.0
85
+ * @category streams
86
+ */
87
+ declare const parserFor: (mediaType: string) => Option.Option<{
88
+ readonly make: () => Incremental;
89
+ readonly format: string;
90
+ }>;
91
+ /**
92
+ * Parses a results document of the given media type incrementally.
93
+ * Returns `None` for unsupported media types.
94
+ *
95
+ * @since 0.1.0
96
+ * @category streams
97
+ */
98
+ declare const parse: <E, R>(mediaType: string, input: Stream.Stream<string, E, R>) => Option.Option<Stream.Stream<ResultEvent, E | ResultsParseError, R>>;
99
+ export { csv as a, parserFor as c, xml as d, buffered as i, run as l, ResultEvent as n, json as o, ResultsStream_d_exports as r, parse as s, Incremental as t, tsv as u };
100
+ //# sourceMappingURL=ResultsStream-toYMXrOe.d.mts.map
@@ -0,0 +1,96 @@
1
+ import { O as Triple, T as Term } from "./Term-B_4ezyXq.mjs";
2
+ import { P as SemAct } from "./ShExJ-C1u_wgyD.mjs";
3
+ import * as Option from "effect/Option";
4
+ import * as Record from "effect/Record";
5
+ import * as Context from "effect/Context";
6
+ import * as Layer from "effect/Layer";
7
+ declare namespace SemAct_d_exports {
8
+ export { Handler, SemActContext, SemActHandler, SemActSite, combine, layer, make, testExtension, testExtensionIri, withExternalCode };
9
+ }
10
+ /**
11
+ * Where a semantic action was found.
12
+ *
13
+ * @since 0.1.0
14
+ * @category models
15
+ */
16
+ type SemActSite = 'start' | 'shape' | 'tripleExpression' | 'tripleConstraint' | 'nodeConstraint';
17
+ /**
18
+ * The context a semantic action is evaluated in.
19
+ *
20
+ * @since 0.1.0
21
+ * @category models
22
+ */
23
+ interface SemActContext {
24
+ readonly site: SemActSite;
25
+ /** The node being validated (the focus node, or the value node for node constraints). */
26
+ readonly node: Term | undefined;
27
+ /** For triple constraint actions: the matched triple (as written in the data). */
28
+ readonly triple?: Triple | undefined;
29
+ /** For shape and triple expression actions: the triples matched. */
30
+ readonly triples?: ReadonlyArray<Triple> | undefined;
31
+ }
32
+ /**
33
+ * Evaluates a semantic action: `Option.some(true)` for success,
34
+ * `Option.some(false)` for failure, `Option.none()` when the action is not
35
+ * handled (it is then ignored).
36
+ *
37
+ * @since 0.1.0
38
+ * @category models
39
+ */
40
+ type Handler = (action: SemAct, context: SemActContext) => Option.Option<boolean>;
41
+ /**
42
+ * The semantic action handler used by the validator. Defaults to ignoring
43
+ * every action.
44
+ *
45
+ * @since 0.1.0
46
+ * @category services
47
+ */
48
+ declare const SemActHandler: Context.Reference<Handler>;
49
+ /**
50
+ * Builds a handler dispatching on action names. A handler registered for a
51
+ * name ending in `/` or `#` also handles every name it is a prefix of.
52
+ *
53
+ * @since 0.1.0
54
+ * @category constructors
55
+ */
56
+ declare const make: (handlers: Record.ReadonlyRecord<string, (code: string | undefined, context: SemActContext) => boolean>) => Handler;
57
+ /**
58
+ * Combines handlers: the first one that handles an action wins.
59
+ *
60
+ * @since 0.1.0
61
+ * @category combinators
62
+ */
63
+ declare const combine: (...handlers: ReadonlyArray<Handler>) => Handler;
64
+ /**
65
+ * Supplies code for actions written without code (`%<name>%`), e.g. from an
66
+ * external semantic actions file. Actions are matched by name.
67
+ *
68
+ * @since 0.1.0
69
+ * @category combinators
70
+ */
71
+ declare const withExternalCode: (handler: Handler, external: ReadonlyArray<SemAct>) => Handler;
72
+ /**
73
+ * A layer providing a handler.
74
+ *
75
+ * @since 0.1.0
76
+ * @category layers
77
+ */
78
+ declare const layer: (handler: Handler) => Layer.Layer<never>;
79
+ /**
80
+ * The namespace of the ShEx Test extension.
81
+ *
82
+ * @since 0.1.0
83
+ * @category constants
84
+ */
85
+ declare const testExtensionIri = "http://shex.io/extensions/Test/";
86
+ /**
87
+ * The ShEx Test extension: `print(s|p|o|n|"text")` records a line and
88
+ * succeeds, `fail(...)` records a line and fails. The `onPrint` callback
89
+ * receives each line together with the action name.
90
+ *
91
+ * @since 0.1.0
92
+ * @category test extension
93
+ */
94
+ declare const testExtension: (onPrint?: (line: string, name: string) => void) => Handler;
95
+ export { SemAct_d_exports as a, make as c, withExternalCode as d, SemActSite as i, testExtension as l, SemActContext as n, combine as o, SemActHandler as r, layer as s, Handler as t, testExtensionIri as u };
96
+ //# sourceMappingURL=SemAct-CDchtk49.d.mts.map
@@ -0,0 +1,118 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { U as isResource, z as isLiteral } from "./Term-CFLG1qu4.mjs";
3
+ import * as Arr from "effect/Array";
4
+ import * as Option from "effect/Option";
5
+ import * as Record from "effect/Record";
6
+ import * as Context from "effect/Context";
7
+ import * as Layer from "effect/Layer";
8
+ // src/shex/SemAct.ts
9
+ /**
10
+ * Semantic actions: a pluggable `SemActHandler` service consulted by the
11
+ * validator for every semantic action it encounters, and an implementation
12
+ * of the ShEx Test extension (`http://shex.io/extensions/Test/`).
13
+ *
14
+ * Actions whose name no handler recognises are ignored (they succeed), as
15
+ * the ShEx specification recommends.
16
+ *
17
+ * @since 0.1.0
18
+ */
19
+ var SemAct_exports = /* @__PURE__ */ __exportAll({
20
+ SemActHandler: () => SemActHandler,
21
+ combine: () => combine,
22
+ layer: () => layer,
23
+ make: () => make,
24
+ testExtension: () => testExtension,
25
+ testExtensionIri: () => testExtensionIri,
26
+ withExternalCode: () => withExternalCode
27
+ });
28
+ /**
29
+ * The semantic action handler used by the validator. Defaults to ignoring
30
+ * every action.
31
+ *
32
+ * @since 0.1.0
33
+ * @category services
34
+ */
35
+ const SemActHandler = Context.Reference("@thomasfosterau/effect-rdf/shex/SemActHandler", { defaultValue: () => () => Option.none() });
36
+ /**
37
+ * Builds a handler dispatching on action names. A handler registered for a
38
+ * name ending in `/` or `#` also handles every name it is a prefix of.
39
+ *
40
+ * @since 0.1.0
41
+ * @category constructors
42
+ */
43
+ const make = (handlers) => {
44
+ const prefixes = Arr.filter(Record.toEntries(handlers), ([name]) => name.endsWith("/") || name.endsWith("#"));
45
+ return (action, context) => {
46
+ const exact = handlers[action.name];
47
+ if (exact !== void 0) return Option.some(exact(action.code, context));
48
+ return Option.map(Arr.findFirst(prefixes, ([name]) => action.name.startsWith(name)), ([, h]) => h(action.code, context));
49
+ };
50
+ };
51
+ /**
52
+ * Combines handlers: the first one that handles an action wins.
53
+ *
54
+ * @since 0.1.0
55
+ * @category combinators
56
+ */
57
+ const combine = (...handlers) => (action, context) => Arr.findFirst(handlers, (h) => h(action, context));
58
+ /**
59
+ * Supplies code for actions written without code (`%<name>%`), e.g. from an
60
+ * external semantic actions file. Actions are matched by name.
61
+ *
62
+ * @since 0.1.0
63
+ * @category combinators
64
+ */
65
+ const withExternalCode = (handler, external) => (action, context) => {
66
+ if (action.code === void 0) {
67
+ const ext = external.find((e) => e.name === action.name && e.code !== void 0);
68
+ if (ext !== void 0) return handler(ext, context);
69
+ }
70
+ return handler(action, context);
71
+ };
72
+ /**
73
+ * A layer providing a handler.
74
+ *
75
+ * @since 0.1.0
76
+ * @category layers
77
+ */
78
+ const layer = (handler) => Layer.succeed(SemActHandler, handler);
79
+ /**
80
+ * The namespace of the ShEx Test extension.
81
+ *
82
+ * @since 0.1.0
83
+ * @category constants
84
+ */
85
+ const testExtensionIri = "http://shex.io/extensions/Test/";
86
+ const termText = (t) => isLiteral(t) ? t.language !== "" ? `"${t.value}"@${t.language}` : t.datatype.value === "http://www.w3.org/2001/XMLSchema#string" ? t.value : `"${t.value}"^^${t.datatype.value}` : isResource(t) ? t.value : t.key;
87
+ const unescapeBackslashes = (s) => s.replace(/\\(.)/gs, "$1");
88
+ /**
89
+ * The ShEx Test extension: `print(s|p|o|n|"text")` records a line and
90
+ * succeeds, `fail(...)` records a line and fails. The `onPrint` callback
91
+ * receives each line together with the action name.
92
+ *
93
+ * @since 0.1.0
94
+ * @category test extension
95
+ */
96
+ const testExtension = (onPrint = () => {}) => {
97
+ const re = /^\s*(print|fail|p)\s*\(\s*(?:([spon])|"((?:[^"\\]|\\.)*)"|'((?:[^'\\]|\\.)*)')\s*\)\s*$/s;
98
+ return (action, context) => {
99
+ if (!action.name.startsWith("http://shex.io/extensions/Test/")) return Option.none();
100
+ if (action.code === void 0) return Option.some(true);
101
+ const m = re.exec(action.code);
102
+ if (m === null) return Option.some(true);
103
+ const [, fn, v, dq, sq] = m;
104
+ let line;
105
+ if (v !== void 0) {
106
+ const t = context.triple;
107
+ line = Option.match(Option.fromUndefinedOr(v === "s" ? t?.subject ?? context.node : v === "p" ? t?.predicate : v === "o" ? t?.object ?? context.node : context.node), {
108
+ onNone: () => "",
109
+ onSome: termText
110
+ });
111
+ } else line = unescapeBackslashes(dq ?? sq ?? "");
112
+ onPrint(line, action.name);
113
+ return Option.some(fn !== "fail");
114
+ };
115
+ };
116
+ export { make as a, withExternalCode as c, layer as i, SemAct_exports as n, testExtension as o, combine as r, testExtensionIri as s, SemActHandler as t };
117
+
118
+ //# sourceMappingURL=SemAct-CmyT4yI8.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SemAct-CmyT4yI8.mjs","names":["Term.isLiteral","Term.isResource"],"sources":["../src/shex/SemAct.ts"],"sourcesContent":["/**\n * Semantic actions: a pluggable `SemActHandler` service consulted by the\n * validator for every semantic action it encounters, and an implementation\n * of the ShEx Test extension (`http://shex.io/extensions/Test/`).\n *\n * Actions whose name no handler recognises are ignored (they succeed), as\n * the ShEx specification recommends.\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as Context from 'effect/Context';\nimport * as Layer from 'effect/Layer';\nimport * as Option from 'effect/Option';\nimport * as Record from 'effect/Record';\nimport * as Term from '../Term.ts';\nimport type * as ShExJ from './ShExJ.ts';\n\n/**\n * Where a semantic action was found.\n *\n * @since 0.1.0\n * @category models\n */\nexport type SemActSite =\n | 'start'\n | 'shape'\n | 'tripleExpression'\n | 'tripleConstraint'\n | 'nodeConstraint';\n\n/**\n * The context a semantic action is evaluated in.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface SemActContext {\n readonly site: SemActSite;\n /** The node being validated (the focus node, or the value node for node constraints). */\n readonly node: Term.Term | undefined;\n /** For triple constraint actions: the matched triple (as written in the data). */\n readonly triple?: Term.Triple | undefined;\n /** For shape and triple expression actions: the triples matched. */\n readonly triples?: ReadonlyArray<Term.Triple> | undefined;\n}\n\n/**\n * Evaluates a semantic action: `Option.some(true)` for success,\n * `Option.some(false)` for failure, `Option.none()` when the action is not\n * handled (it is then ignored).\n *\n * @since 0.1.0\n * @category models\n */\nexport type Handler = (action: ShExJ.SemAct, context: SemActContext) => Option.Option<boolean>;\n\n/**\n * The semantic action handler used by the validator. Defaults to ignoring\n * every action.\n *\n * @since 0.1.0\n * @category services\n */\nexport const SemActHandler: Context.Reference<Handler> = Context.Reference<Handler>(\n '@thomasfosterau/effect-rdf/shex/SemActHandler',\n { defaultValue: () => () => Option.none() },\n);\n\n/**\n * Builds a handler dispatching on action names. A handler registered for a\n * name ending in `/` or `#` also handles every name it is a prefix of.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const make = (\n handlers: Record.ReadonlyRecord<\n string,\n (code: string | undefined, context: SemActContext) => boolean\n >,\n): Handler => {\n const prefixes = Arr.filter(\n Record.toEntries(handlers),\n ([name]) => name.endsWith('/') || name.endsWith('#'),\n );\n return (action, context) => {\n const exact = handlers[action.name];\n if (exact !== undefined) return Option.some(exact(action.code, context));\n return Option.map(\n Arr.findFirst(prefixes, ([name]) => action.name.startsWith(name)),\n ([, h]) => h(action.code, context),\n );\n };\n};\n\n/**\n * Combines handlers: the first one that handles an action wins.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const combine =\n (...handlers: ReadonlyArray<Handler>): Handler =>\n (action, context) =>\n Arr.findFirst(handlers, (h) => h(action, context));\n\n/**\n * Supplies code for actions written without code (`%<name>%`), e.g. from an\n * external semantic actions file. Actions are matched by name.\n *\n * @since 0.1.0\n * @category combinators\n */\nexport const withExternalCode =\n (handler: Handler, external: ReadonlyArray<ShExJ.SemAct>): Handler =>\n (action, context) => {\n if (action.code === undefined) {\n const ext = external.find((e) => e.name === action.name && e.code !== undefined);\n if (ext !== undefined) return handler(ext, context);\n }\n return handler(action, context);\n };\n\n/**\n * A layer providing a handler.\n *\n * @since 0.1.0\n * @category layers\n */\nexport const layer = (handler: Handler): Layer.Layer<never> =>\n Layer.succeed(SemActHandler, handler);\n\n// -----------------------------------------------------------------------------\n// The Test extension\n// -----------------------------------------------------------------------------\n\n/**\n * The namespace of the ShEx Test extension.\n *\n * @since 0.1.0\n * @category constants\n */\nexport const testExtensionIri = 'http://shex.io/extensions/Test/';\n\nconst termText = (t: Term.Term): string =>\n Term.isLiteral(t)\n ? t.language !== ''\n ? `\"${t.value}\"@${t.language}`\n : t.datatype.value === 'http://www.w3.org/2001/XMLSchema#string'\n ? t.value\n : `\"${t.value}\"^^${t.datatype.value}`\n : Term.isResource(t)\n ? t.value\n : t.key;\n\nconst unescapeBackslashes = (s: string) => s.replace(/\\\\(.)/gs, '$1');\n\n/**\n * The ShEx Test extension: `print(s|p|o|n|\"text\")` records a line and\n * succeeds, `fail(...)` records a line and fails. The `onPrint` callback\n * receives each line together with the action name.\n *\n * @since 0.1.0\n * @category test extension\n */\nexport const testExtension = (\n onPrint: (line: string, name: string) => void = () => {},\n): Handler => {\n const re =\n /^\\s*(print|fail|p)\\s*\\(\\s*(?:([spon])|\"((?:[^\"\\\\]|\\\\.)*)\"|'((?:[^'\\\\]|\\\\.)*)')\\s*\\)\\s*$/s;\n return (action, context) => {\n if (!action.name.startsWith(testExtensionIri)) return Option.none();\n if (action.code === undefined) return Option.some(true);\n const m = re.exec(action.code);\n if (m === null) return Option.some(true);\n const [, fn, v, dq, sq] = m;\n let line: string;\n if (v !== undefined) {\n const t = context.triple;\n line = Option.match(\n Option.fromUndefinedOr(\n v === 's'\n ? (t?.subject ?? context.node)\n : v === 'p'\n ? t?.predicate\n : v === 'o'\n ? (t?.object ?? context.node)\n : context.node,\n ),\n { onNone: () => '', onSome: termText },\n );\n } else line = unescapeBackslashes(dq ?? sq ?? '');\n onPrint(line, action.name);\n return Option.some(fn !== 'fail');\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEA,MAAa,gBAA4C,QAAQ,UAC/D,iDACA,EAAE,0BAA0B,OAAO,KAAK,EAAE,CAC5C;;;;;;;;AASA,MAAa,QACX,aAIY;CACZ,MAAM,WAAW,IAAI,OACnB,OAAO,UAAU,QAAQ,IACxB,CAAC,UAAU,KAAK,SAAS,GAAG,KAAK,KAAK,SAAS,GAAG,CACrD;CACA,QAAQ,QAAQ,YAAY;EAC1B,MAAM,QAAQ,SAAS,OAAO;EAC9B,IAAI,UAAU,KAAA,GAAW,OAAO,OAAO,KAAK,MAAM,OAAO,MAAM,OAAO,CAAC;EACvE,OAAO,OAAO,IACZ,IAAI,UAAU,WAAW,CAAC,UAAU,OAAO,KAAK,WAAW,IAAI,CAAC,IAC/D,GAAG,OAAO,EAAE,OAAO,MAAM,OAAO,CACnC;CACF;AACF;;;;;;;AAQA,MAAa,WACV,GAAG,cACH,QAAQ,YACP,IAAI,UAAU,WAAW,MAAM,EAAE,QAAQ,OAAO,CAAC;;;;;;;;AASrD,MAAa,oBACV,SAAkB,cAClB,QAAQ,YAAY;CACnB,IAAI,OAAO,SAAS,KAAA,GAAW;EAC7B,MAAM,MAAM,SAAS,MAAM,MAAM,EAAE,SAAS,OAAO,QAAQ,EAAE,SAAS,KAAA,CAAS;EAC/E,IAAI,QAAQ,KAAA,GAAW,OAAO,QAAQ,KAAK,OAAO;CACpD;CACA,OAAO,QAAQ,QAAQ,OAAO;AAChC;;;;;;;AAQF,MAAa,SAAS,YACpB,MAAM,QAAQ,eAAe,OAAO;;;;;;;AAYtC,MAAa,mBAAmB;AAEhC,MAAM,YAAY,MAChBA,UAAe,CAAC,IACZ,EAAE,aAAa,KACb,IAAI,EAAE,MAAM,IAAI,EAAE,aAClB,EAAE,SAAS,UAAU,4CACnB,EAAE,QACF,IAAI,EAAE,MAAM,KAAK,EAAE,SAAS,UAChCC,WAAgB,CAAC,IACf,EAAE,QACF,EAAE;AAEV,MAAM,uBAAuB,MAAc,EAAE,QAAQ,WAAW,IAAI;;;;;;;;;AAUpE,MAAa,iBACX,gBAAsD,CAAC,MAC3C;CACZ,MAAM,KACJ;CACF,QAAQ,QAAQ,YAAY;EAC1B,IAAI,CAAC,OAAO,KAAK,WAAA,iCAA2B,GAAG,OAAO,OAAO,KAAK;EAClE,IAAI,OAAO,SAAS,KAAA,GAAW,OAAO,OAAO,KAAK,IAAI;EACtD,MAAM,IAAI,GAAG,KAAK,OAAO,IAAI;EAC7B,IAAI,MAAM,MAAM,OAAO,OAAO,KAAK,IAAI;EACvC,MAAM,GAAG,IAAI,GAAG,IAAI,MAAM;EAC1B,IAAI;EACJ,IAAI,MAAM,KAAA,GAAW;GACnB,MAAM,IAAI,QAAQ;GAClB,OAAO,OAAO,MACZ,OAAO,gBACL,MAAM,MACD,GAAG,WAAW,QAAQ,OACvB,MAAM,MACJ,GAAG,YACH,MAAM,MACH,GAAG,UAAU,QAAQ,OACtB,QAAQ,IAClB,GACA;IAAE,cAAc;IAAI,QAAQ;GAAS,CACvC;EACF,OAAO,OAAO,oBAAoB,MAAM,MAAM,EAAE;EAChD,QAAQ,MAAM,OAAO,IAAI;EACzB,OAAO,OAAO,KAAK,OAAO,MAAM;CAClC;AACF"}