@thomasfosterau/effect-rdf 0.0.0 → 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 +2250 -1
  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 +187 -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,220 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import * as Arr from "effect/Array";
3
+ import * as Option from "effect/Option";
4
+ import * as Schema from "effect/Schema";
5
+ import * as Effect from "effect/Effect";
6
+ import * as Result from "effect/Result";
7
+ // src/xmp/Extract.ts
8
+ /**
9
+ * Reading the XMP packet embedded in an image file, as XMP Specification
10
+ * Part 3 places it: a JPEG's APP1 segment (with Extended XMP split across
11
+ * further APP1 segments) or a PNG's `iTXt` chunk with the keyword
12
+ * `XML:com.adobe.xmp` (stored or, read with `png`, zlib-compressed). Any
13
+ * other format (TIFF, WebP, GIF, MP4, PDF, …) can
14
+ * be scanned for its packet with `Packet.find`.
15
+ *
16
+ * @since 0.1.0
17
+ */
18
+ var Extract_exports = /* @__PURE__ */ __exportAll({
19
+ DEFAULT_MAX_XMP_BYTES: () => DEFAULT_MAX_XMP_BYTES,
20
+ XmpExtractError: () => XmpExtractError,
21
+ jpeg: () => jpeg,
22
+ jpegResult: () => jpegResult,
23
+ png: () => png,
24
+ pngResult: () => pngResult
25
+ });
26
+ /**
27
+ * A malformed image file.
28
+ *
29
+ * @since 0.1.0
30
+ * @category errors
31
+ */
32
+ var XmpExtractError = class extends Schema.TaggedError()("XmpExtractError", { message: Schema.String }) {};
33
+ const fail = (message) => {
34
+ throw new XmpExtractError({ message });
35
+ };
36
+ const ascii = (text) => Uint8Array.from(Arr.map(Arr.fromIterable(text), (c) => c.charCodeAt(0)));
37
+ const startsWith = (bytes, prefix) => bytes.length >= prefix.length && Arr.every(Arr.fromIterable(prefix), (b, i) => bytes[i] === b);
38
+ const utf8 = (bytes) => new TextDecoder().decode(bytes);
39
+ const latin1 = (bytes) => new TextDecoder("windows-1252").decode(bytes);
40
+ const view = (bytes) => new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
41
+ const catchExtract = (f) => Result.try({
42
+ try: f,
43
+ catch: (e) => {
44
+ if (e instanceof XmpExtractError) return e;
45
+ throw e;
46
+ }
47
+ });
48
+ const STANDARD = ascii("http://ns.adobe.com/xap/1.0/\0");
49
+ const EXTENSION = ascii("http://ns.adobe.com/xmp/extension/\0");
50
+ const APP1 = 225;
51
+ const isStandalone = (marker) => marker === 1 || marker === 255 || marker >= 208 && marker <= 215;
52
+ /** The segments before the image data (SOS) or the end of the image (EOI). */
53
+ const jpegSegments = (bytes) => {
54
+ const data = view(bytes);
55
+ return Arr.getSomes(Arr.unfold(2, (pos) => {
56
+ if (pos + 2 > bytes.length) return Option.none();
57
+ if (data.getUint8(pos) !== 255) return fail(`Expected a JPEG marker at offset ${pos}`);
58
+ const marker = data.getUint8(pos + 1);
59
+ if (marker === 217 || marker === 218) return Option.none();
60
+ if (isStandalone(marker)) return Option.some([Option.none(), marker === 255 ? pos + 1 : pos + 2]);
61
+ if (pos + 4 > bytes.length) return fail(`Truncated JPEG segment at offset ${pos}`);
62
+ const length = data.getUint16(pos + 2);
63
+ const end = pos + 2 + length;
64
+ if (length < 2 || end > bytes.length) return fail(`Truncated JPEG segment at offset ${pos}`);
65
+ return Option.some([Option.some({
66
+ marker,
67
+ data: bytes.subarray(pos + 4, end)
68
+ }), end]);
69
+ }));
70
+ };
71
+ const extensionChunk = (payload) => {
72
+ const header = EXTENSION.length + 40;
73
+ if (payload.length < header) return fail("Truncated Extended XMP segment");
74
+ const data = view(payload);
75
+ return {
76
+ guid: latin1(payload.subarray(EXTENSION.length, EXTENSION.length + 32)),
77
+ length: data.getUint32(EXTENSION.length + 32),
78
+ offset: data.getUint32(EXTENSION.length + 36),
79
+ data: payload.subarray(header)
80
+ };
81
+ };
82
+ /** Reassembles the Extended XMP whose GUID the standard packet names. */
83
+ const extended = (standard, chunks) => Option.map(Arr.findFirst(chunks, (c) => standard.includes(c.guid)), ({ guid, length }) => {
84
+ const whole = new Uint8Array(length);
85
+ Arr.filter(chunks, (c) => c.guid === guid).forEach((c) => {
86
+ if (c.offset + c.data.length > length) fail("Extended XMP chunk out of bounds");
87
+ whole.set(c.data, c.offset);
88
+ });
89
+ return utf8(whole);
90
+ });
91
+ /**
92
+ * Reads the XMP of a JPEG file, returning a `Result`: `None` when the file
93
+ * has no XMP.
94
+ *
95
+ * @since 0.1.0
96
+ * @category extraction
97
+ */
98
+ const jpegResult = (bytes) => catchExtract(() => {
99
+ if (bytes[0] !== 255 || bytes[1] !== 216) return fail("Not a JPEG file");
100
+ const app1 = Arr.map(Arr.filter(jpegSegments(bytes), (s) => s.marker === APP1), (s) => s.data);
101
+ const chunks = Arr.map(Arr.filter(app1, (d) => startsWith(d, EXTENSION)), extensionChunk);
102
+ return Option.map(Arr.findFirst(app1, (d) => startsWith(d, STANDARD)), (d) => {
103
+ const standard = utf8(d.subarray(STANDARD.length));
104
+ return {
105
+ standard,
106
+ extended: extended(standard, chunks)
107
+ };
108
+ });
109
+ });
110
+ /**
111
+ * Reads the XMP of a JPEG file: `None` when the file has no XMP.
112
+ *
113
+ * @since 0.1.0
114
+ * @category extraction
115
+ */
116
+ const jpeg = (bytes) => Effect.suspend(() => Effect.fromResult(jpegResult(bytes)));
117
+ const PNG_SIGNATURE = Uint8Array.of(137, 80, 78, 71, 13, 10, 26, 10);
118
+ const XMP_KEYWORD = "XML:com.adobe.xmp";
119
+ const pngChunks = (bytes) => {
120
+ const data = view(bytes);
121
+ return Arr.unfold(PNG_SIGNATURE.length, (pos) => {
122
+ if (pos >= bytes.length) return Option.none();
123
+ if (pos + 12 > bytes.length) return fail(`Truncated PNG chunk at offset ${pos}`);
124
+ const length = data.getUint32(pos);
125
+ const type = latin1(bytes.subarray(pos + 4, pos + 8));
126
+ const end = pos + 12 + length;
127
+ if (end > bytes.length) return fail(`Truncated PNG chunk at offset ${pos}`);
128
+ if (type === "IEND") return Option.none();
129
+ return Option.some([{
130
+ type,
131
+ data: bytes.subarray(pos + 8, pos + 8 + length)
132
+ }, end]);
133
+ });
134
+ };
135
+ /** The XMP of an `iTXt` chunk, when its keyword is XMP's. */
136
+ const xmpChunk = (chunk) => {
137
+ const keywordEnd = chunk.indexOf(0);
138
+ if (keywordEnd < 0 || latin1(chunk.subarray(0, keywordEnd)) !== XMP_KEYWORD) return Option.none();
139
+ const compressed = chunk[keywordEnd + 1] !== 0;
140
+ if (compressed && chunk[keywordEnd + 2] !== 0) return fail("Unknown iTXt compression method");
141
+ const languageEnd = chunk.indexOf(0, keywordEnd + 3);
142
+ const translatedEnd = languageEnd < 0 ? -1 : chunk.indexOf(0, languageEnd + 1);
143
+ if (translatedEnd < 0) return fail("Malformed iTXt chunk");
144
+ return Option.some({
145
+ compressed,
146
+ text: chunk.subarray(translatedEnd + 1)
147
+ });
148
+ };
149
+ const pngXmpChunk = (bytes) => {
150
+ if (!startsWith(bytes, PNG_SIGNATURE)) return fail("Not a PNG file");
151
+ return Option.firstSomeOf(Arr.map(Arr.filter(pngChunks(bytes), (c) => c.type === "iTXt"), (c) => xmpChunk(c.data)));
152
+ };
153
+ /**
154
+ * The most bytes `Extract.png` inflates a compressed XMP chunk to by
155
+ * default: 4 MiB, far above any real packet, so a small deflate bomb fails
156
+ * instead of exhausting memory.
157
+ *
158
+ * @since 0.1.0
159
+ * @category constants
160
+ */
161
+ const DEFAULT_MAX_XMP_BYTES = 4194304;
162
+ const concatChunks = (chunks, total) => {
163
+ const out = new Uint8Array(total);
164
+ Arr.reduce(chunks, 0, (offset, chunk) => {
165
+ out.set(chunk, offset);
166
+ return offset + chunk.length;
167
+ });
168
+ return out;
169
+ };
170
+ /**
171
+ * Reads a stream to its end, failing (and cancelling it) as soon as the
172
+ * running total passes `max`, so nothing past the cap is buffered.
173
+ */
174
+ const readCapped = (reader, max, chunks, total) => reader.read().then((result) => {
175
+ if (result.done) return concatChunks(chunks, total);
176
+ const next = total + result.value.length;
177
+ if (next > max) {
178
+ reader.cancel();
179
+ return fail(`Compressed XMP iTXt chunk inflates to more than ${max} bytes`);
180
+ }
181
+ chunks.push(result.value);
182
+ return readCapped(reader, max, chunks, next);
183
+ });
184
+ /** Inflates zlib data with the platform's `DecompressionStream`, up to `max` bytes. */
185
+ const inflate = (data, max) => Effect.tryPromise({
186
+ try: () => {
187
+ const source = new ReadableStream({ start: (controller) => {
188
+ controller.enqueue(data.slice());
189
+ controller.close();
190
+ } });
191
+ return readCapped(source.pipeThrough(new DecompressionStream("deflate")).getReader(), max, [], 0);
192
+ },
193
+ catch: (e) => e instanceof XmpExtractError ? e : new XmpExtractError({ message: "Malformed compressed iTXt chunk" })
194
+ });
195
+ /**
196
+ * Reads the XMP packet of a PNG file, returning a `Result`: `None` when the
197
+ * file has no XMP. Decompression is asynchronous, so a compressed `iTXt`
198
+ * chunk fails here; `png` inflates it. (The XMP specification writes the
199
+ * chunk uncompressed, so a scanner can find the packet.)
200
+ *
201
+ * @since 0.1.0
202
+ * @category extraction
203
+ */
204
+ const pngResult = (bytes) => catchExtract(() => Option.map(pngXmpChunk(bytes), (chunk) => chunk.compressed ? fail("A compressed XMP iTXt chunk needs Extract.png, which inflates it") : utf8(chunk.text)));
205
+ /**
206
+ * Reads the XMP packet of a PNG file: `None` when the file has no XMP. A
207
+ * zlib-compressed `iTXt` chunk is inflated with the platform's
208
+ * `DecompressionStream` (Node, browsers and Workers all provide it), and
209
+ * fails once it inflates past `maxXmpBytes` (default `DEFAULT_MAX_XMP_BYTES`).
210
+ *
211
+ * @since 0.1.0
212
+ * @category extraction
213
+ */
214
+ const png = (bytes, options) => Effect.flatMap(Effect.suspend(() => Effect.fromResult(catchExtract(() => pngXmpChunk(bytes)))), Option.match({
215
+ onNone: () => Effect.succeed(Option.none()),
216
+ onSome: (chunk) => chunk.compressed ? Effect.map(inflate(chunk.text, options?.maxXmpBytes ?? 4194304), (text) => Option.some(utf8(text))) : Effect.succeed(Option.some(utf8(chunk.text)))
217
+ }));
218
+ export { jpegResult as a, jpeg as i, Extract_exports as n, png as o, XmpExtractError as r, pngResult as s, DEFAULT_MAX_XMP_BYTES as t };
219
+
220
+ //# sourceMappingURL=Extract-Bop85jES.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Extract-Bop85jES.mjs","names":[],"sources":["../src/xmp/Extract.ts"],"sourcesContent":["/**\n * Reading the XMP packet embedded in an image file, as XMP Specification\n * Part 3 places it: a JPEG's APP1 segment (with Extended XMP split across\n * further APP1 segments) or a PNG's `iTXt` chunk with the keyword\n * `XML:com.adobe.xmp` (stored or, read with `png`, zlib-compressed). Any\n * other format (TIFF, WebP, GIF, MP4, PDF, …) can\n * be scanned for its packet with `Packet.find`.\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport * as Result from 'effect/Result';\nimport * as Schema from 'effect/Schema';\n\n/**\n * A malformed image file.\n *\n * @since 0.1.0\n * @category errors\n */\nexport class XmpExtractError extends Schema.TaggedError<XmpExtractError>()('XmpExtractError', {\n message: Schema.String,\n}) {}\n\n/**\n * The XMP of a JPEG file: the standard packet and, when the packet does not\n * fit one segment, the Extended XMP document its `xmpNote:HasExtendedXMP`\n * names.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface JpegXmp {\n readonly standard: string;\n readonly extended: Option.Option<string>;\n}\n\nconst fail = (message: string): never => {\n throw new XmpExtractError({ message });\n};\n\nconst ascii = (text: string): Uint8Array =>\n Uint8Array.from(Arr.map(Arr.fromIterable(text), (c) => c.charCodeAt(0)));\n\nconst startsWith = (bytes: Uint8Array, prefix: Uint8Array): boolean =>\n bytes.length >= prefix.length && Arr.every(Arr.fromIterable(prefix), (b, i) => bytes[i] === b);\n\nconst utf8 = (bytes: Uint8Array): string => new TextDecoder().decode(bytes);\nconst latin1 = (bytes: Uint8Array): string => new TextDecoder('windows-1252').decode(bytes);\n\nconst view = (bytes: Uint8Array) => new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n\nconst catchExtract = <A>(f: () => A): Result.Result<A, XmpExtractError> =>\n Result.try({\n try: f,\n catch: (e) => {\n if (e instanceof XmpExtractError) return e;\n throw e;\n },\n });\n\n// -----------------------------------------------------------------------------\n// JPEG\n// -----------------------------------------------------------------------------\n\nconst STANDARD = ascii('http://ns.adobe.com/xap/1.0/\\0');\nconst EXTENSION = ascii('http://ns.adobe.com/xmp/extension/\\0');\nconst APP1 = 0xe1;\n\ninterface Segment {\n readonly marker: number;\n readonly data: Uint8Array;\n}\n\nconst isStandalone = (marker: number) =>\n marker === 0x01 || marker === 0xff || (marker >= 0xd0 && marker <= 0xd7);\n\n/** The segments before the image data (SOS) or the end of the image (EOI). */\nconst jpegSegments = (bytes: Uint8Array): ReadonlyArray<Segment> => {\n const data = view(bytes);\n return Arr.getSomes(\n Arr.unfold(2, (pos): Option.Option<readonly [Option.Option<Segment>, number]> => {\n if (pos + 2 > bytes.length) return Option.none();\n if (data.getUint8(pos) !== 0xff) return fail(`Expected a JPEG marker at offset ${pos}`);\n const marker = data.getUint8(pos + 1);\n if (marker === 0xd9 || marker === 0xda) return Option.none();\n // A fill byte (0xFF) or a marker without a length.\n if (isStandalone(marker))\n return Option.some([Option.none(), marker === 0xff ? pos + 1 : pos + 2]);\n if (pos + 4 > bytes.length) return fail(`Truncated JPEG segment at offset ${pos}`);\n const length = data.getUint16(pos + 2);\n const end = pos + 2 + length;\n if (length < 2 || end > bytes.length) return fail(`Truncated JPEG segment at offset ${pos}`);\n return Option.some([Option.some({ marker, data: bytes.subarray(pos + 4, end) }), end]);\n }),\n );\n};\n\ninterface Chunk {\n readonly guid: string;\n readonly length: number;\n readonly offset: number;\n readonly data: Uint8Array;\n}\n\nconst extensionChunk = (payload: Uint8Array): Chunk => {\n const header = EXTENSION.length + 40;\n if (payload.length < header) return fail('Truncated Extended XMP segment');\n const data = view(payload);\n return {\n guid: latin1(payload.subarray(EXTENSION.length, EXTENSION.length + 32)),\n length: data.getUint32(EXTENSION.length + 32),\n offset: data.getUint32(EXTENSION.length + 36),\n data: payload.subarray(header),\n };\n};\n\n/** Reassembles the Extended XMP whose GUID the standard packet names. */\nconst extended = (standard: string, chunks: ReadonlyArray<Chunk>): Option.Option<string> =>\n Option.map(\n Arr.findFirst(chunks, (c) => standard.includes(c.guid)),\n ({ guid, length }) => {\n const whole = new Uint8Array(length);\n Arr.filter(chunks, (c) => c.guid === guid).forEach((c) => {\n if (c.offset + c.data.length > length) fail('Extended XMP chunk out of bounds');\n whole.set(c.data, c.offset);\n });\n return utf8(whole);\n },\n );\n\n/**\n * Reads the XMP of a JPEG file, returning a `Result`: `None` when the file\n * has no XMP.\n *\n * @since 0.1.0\n * @category extraction\n */\nexport const jpegResult = (\n bytes: Uint8Array,\n): Result.Result<Option.Option<JpegXmp>, XmpExtractError> =>\n catchExtract(() => {\n if (bytes[0] !== 0xff || bytes[1] !== 0xd8) return fail('Not a JPEG file');\n const app1 = Arr.map(\n Arr.filter(jpegSegments(bytes), (s) => s.marker === APP1),\n (s) => s.data,\n );\n const chunks = Arr.map(\n Arr.filter(app1, (d) => startsWith(d, EXTENSION)),\n extensionChunk,\n );\n return Option.map(\n Arr.findFirst(app1, (d) => startsWith(d, STANDARD)),\n (d) => {\n const standard = utf8(d.subarray(STANDARD.length));\n return { standard, extended: extended(standard, chunks) };\n },\n );\n });\n\n/**\n * Reads the XMP of a JPEG file: `None` when the file has no XMP.\n *\n * @since 0.1.0\n * @category extraction\n */\nexport const jpeg = (bytes: Uint8Array): Effect.Effect<Option.Option<JpegXmp>, XmpExtractError> =>\n Effect.suspend(() => Effect.fromResult(jpegResult(bytes)));\n\n// -----------------------------------------------------------------------------\n// PNG\n// -----------------------------------------------------------------------------\n\nconst PNG_SIGNATURE = Uint8Array.of(0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a);\nconst XMP_KEYWORD = 'XML:com.adobe.xmp';\n\ninterface PngChunk {\n readonly type: string;\n readonly data: Uint8Array;\n}\n\nconst pngChunks = (bytes: Uint8Array): ReadonlyArray<PngChunk> => {\n const data = view(bytes);\n return Arr.unfold(PNG_SIGNATURE.length, (pos): Option.Option<readonly [PngChunk, number]> => {\n if (pos >= bytes.length) return Option.none();\n if (pos + 12 > bytes.length) return fail(`Truncated PNG chunk at offset ${pos}`);\n const length = data.getUint32(pos);\n const type = latin1(bytes.subarray(pos + 4, pos + 8));\n const end = pos + 12 + length;\n if (end > bytes.length) return fail(`Truncated PNG chunk at offset ${pos}`);\n if (type === 'IEND') return Option.none();\n return Option.some([{ type, data: bytes.subarray(pos + 8, pos + 8 + length) }, end]);\n });\n};\n\n/** The text of an XMP `iTXt` chunk: stored, or zlib-compressed. */\ninterface XmpChunk {\n readonly compressed: boolean;\n readonly text: Uint8Array;\n}\n\n/** The XMP of an `iTXt` chunk, when its keyword is XMP's. */\nconst xmpChunk = (chunk: Uint8Array): Option.Option<XmpChunk> => {\n const keywordEnd = chunk.indexOf(0);\n if (keywordEnd < 0 || latin1(chunk.subarray(0, keywordEnd)) !== XMP_KEYWORD) {\n return Option.none();\n }\n const compressed = chunk[keywordEnd + 1] !== 0;\n // Compression method 0 (zlib) is the only one PNG defines.\n if (compressed && chunk[keywordEnd + 2] !== 0) return fail('Unknown iTXt compression method');\n const languageEnd = chunk.indexOf(0, keywordEnd + 3);\n const translatedEnd = languageEnd < 0 ? -1 : chunk.indexOf(0, languageEnd + 1);\n if (translatedEnd < 0) return fail('Malformed iTXt chunk');\n return Option.some({ compressed, text: chunk.subarray(translatedEnd + 1) });\n};\n\nconst pngXmpChunk = (bytes: Uint8Array): Option.Option<XmpChunk> => {\n if (!startsWith(bytes, PNG_SIGNATURE)) return fail('Not a PNG file');\n return Option.firstSomeOf(\n Arr.map(\n Arr.filter(pngChunks(bytes), (c) => c.type === 'iTXt'),\n (c) => xmpChunk(c.data),\n ),\n );\n};\n\n/**\n * The most bytes `Extract.png` inflates a compressed XMP chunk to by\n * default: 4 MiB, far above any real packet, so a small deflate bomb fails\n * instead of exhausting memory.\n *\n * @since 0.1.0\n * @category constants\n */\nexport const DEFAULT_MAX_XMP_BYTES = 4 * 1024 * 1024;\n\n/**\n * Options for `Extract.png`.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface PngOptions {\n /**\n * The most bytes a compressed `iTXt` chunk may inflate to; past it the\n * read fails. Defaults to `DEFAULT_MAX_XMP_BYTES`.\n */\n readonly maxXmpBytes?: number | undefined;\n}\n\nconst concatChunks = (chunks: ReadonlyArray<Uint8Array>, total: number): Uint8Array => {\n const out = new Uint8Array(total);\n Arr.reduce(chunks, 0, (offset, chunk) => {\n out.set(chunk, offset);\n return offset + chunk.length;\n });\n return out;\n};\n\n/**\n * Reads a stream to its end, failing (and cancelling it) as soon as the\n * running total passes `max`, so nothing past the cap is buffered.\n */\nconst readCapped = (\n reader: ReadableStreamDefaultReader<Uint8Array>,\n max: number,\n chunks: Array<Uint8Array>,\n total: number,\n): Promise<Uint8Array> =>\n reader.read().then((result) => {\n if (result.done) return concatChunks(chunks, total);\n const next = total + result.value.length;\n if (next > max) {\n void reader.cancel();\n return fail(`Compressed XMP iTXt chunk inflates to more than ${max} bytes`);\n }\n chunks.push(result.value);\n return readCapped(reader, max, chunks, next);\n });\n\n/** Inflates zlib data with the platform's `DecompressionStream`, up to `max` bytes. */\nconst inflate = (data: Uint8Array, max: number): Effect.Effect<Uint8Array, XmpExtractError> =>\n Effect.tryPromise({\n try: () => {\n const source = new ReadableStream<BufferSource>({\n start: (controller) => {\n // A copy: `BufferSource` excludes a view over a `SharedArrayBuffer`.\n controller.enqueue(data.slice());\n controller.close();\n },\n });\n return readCapped(\n source.pipeThrough(new DecompressionStream('deflate')).getReader(),\n max,\n [],\n 0,\n );\n },\n catch: (e) =>\n e instanceof XmpExtractError\n ? e\n : new XmpExtractError({ message: 'Malformed compressed iTXt chunk' }),\n });\n\n/**\n * Reads the XMP packet of a PNG file, returning a `Result`: `None` when the\n * file has no XMP. Decompression is asynchronous, so a compressed `iTXt`\n * chunk fails here; `png` inflates it. (The XMP specification writes the\n * chunk uncompressed, so a scanner can find the packet.)\n *\n * @since 0.1.0\n * @category extraction\n */\nexport const pngResult = (\n bytes: Uint8Array,\n): Result.Result<Option.Option<string>, XmpExtractError> =>\n catchExtract(() =>\n Option.map(pngXmpChunk(bytes), (chunk) =>\n chunk.compressed\n ? fail('A compressed XMP iTXt chunk needs Extract.png, which inflates it')\n : utf8(chunk.text),\n ),\n );\n\n/**\n * Reads the XMP packet of a PNG file: `None` when the file has no XMP. A\n * zlib-compressed `iTXt` chunk is inflated with the platform's\n * `DecompressionStream` (Node, browsers and Workers all provide it), and\n * fails once it inflates past `maxXmpBytes` (default `DEFAULT_MAX_XMP_BYTES`).\n *\n * @since 0.1.0\n * @category extraction\n */\nexport const png = (\n bytes: Uint8Array,\n options?: PngOptions,\n): Effect.Effect<Option.Option<string>, XmpExtractError> =>\n Effect.flatMap(\n Effect.suspend(() => Effect.fromResult(catchExtract(() => pngXmpChunk(bytes)))),\n Option.match({\n onNone: () => Effect.succeed(Option.none()),\n onSome: (chunk) =>\n chunk.compressed\n ? Effect.map(inflate(chunk.text, options?.maxXmpBytes ?? DEFAULT_MAX_XMP_BYTES), (text) =>\n Option.some(utf8(text)),\n )\n : Effect.succeed(Option.some(utf8(chunk.text))),\n }),\n );\n"],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import * as Option from "effect/Option";
2
+ import * as Schema from "effect/Schema";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Result from "effect/Result";
5
+ declare namespace Extract_d_exports {
6
+ export { DEFAULT_MAX_XMP_BYTES, JpegXmp, PngOptions, XmpExtractError, jpeg, jpegResult, png, pngResult };
7
+ }
8
+ declare const XmpExtractError_base: Schema.Class<XmpExtractError, Schema.TaggedStruct<"XmpExtractError", {
9
+ readonly message: Schema.String;
10
+ }>, import("effect/Cause").YieldableError>;
11
+ /**
12
+ * A malformed image file.
13
+ *
14
+ * @since 0.1.0
15
+ * @category errors
16
+ */
17
+ declare class XmpExtractError extends XmpExtractError_base {}
18
+ /**
19
+ * The XMP of a JPEG file: the standard packet and, when the packet does not
20
+ * fit one segment, the Extended XMP document its `xmpNote:HasExtendedXMP`
21
+ * names.
22
+ *
23
+ * @since 0.1.0
24
+ * @category models
25
+ */
26
+ interface JpegXmp {
27
+ readonly standard: string;
28
+ readonly extended: Option.Option<string>;
29
+ }
30
+ /**
31
+ * Reads the XMP of a JPEG file, returning a `Result`: `None` when the file
32
+ * has no XMP.
33
+ *
34
+ * @since 0.1.0
35
+ * @category extraction
36
+ */
37
+ declare const jpegResult: (bytes: Uint8Array) => Result.Result<Option.Option<JpegXmp>, XmpExtractError>;
38
+ /**
39
+ * Reads the XMP of a JPEG file: `None` when the file has no XMP.
40
+ *
41
+ * @since 0.1.0
42
+ * @category extraction
43
+ */
44
+ declare const jpeg: (bytes: Uint8Array) => Effect.Effect<Option.Option<JpegXmp>, XmpExtractError>;
45
+ /**
46
+ * The most bytes `Extract.png` inflates a compressed XMP chunk to by
47
+ * default: 4 MiB, far above any real packet, so a small deflate bomb fails
48
+ * instead of exhausting memory.
49
+ *
50
+ * @since 0.1.0
51
+ * @category constants
52
+ */
53
+ declare const DEFAULT_MAX_XMP_BYTES: number;
54
+ /**
55
+ * Options for `Extract.png`.
56
+ *
57
+ * @since 0.1.0
58
+ * @category models
59
+ */
60
+ interface PngOptions {
61
+ /**
62
+ * The most bytes a compressed `iTXt` chunk may inflate to; past it the
63
+ * read fails. Defaults to `DEFAULT_MAX_XMP_BYTES`.
64
+ */
65
+ readonly maxXmpBytes?: number | undefined;
66
+ }
67
+ /**
68
+ * Reads the XMP packet of a PNG file, returning a `Result`: `None` when the
69
+ * file has no XMP. Decompression is asynchronous, so a compressed `iTXt`
70
+ * chunk fails here; `png` inflates it. (The XMP specification writes the
71
+ * chunk uncompressed, so a scanner can find the packet.)
72
+ *
73
+ * @since 0.1.0
74
+ * @category extraction
75
+ */
76
+ declare const pngResult: (bytes: Uint8Array) => Result.Result<Option.Option<string>, XmpExtractError>;
77
+ /**
78
+ * Reads the XMP packet of a PNG file: `None` when the file has no XMP. A
79
+ * zlib-compressed `iTXt` chunk is inflated with the platform's
80
+ * `DecompressionStream` (Node, browsers and Workers all provide it), and
81
+ * fails once it inflates past `maxXmpBytes` (default `DEFAULT_MAX_XMP_BYTES`).
82
+ *
83
+ * @since 0.1.0
84
+ * @category extraction
85
+ */
86
+ declare const png: (bytes: Uint8Array, options?: PngOptions) => Effect.Effect<Option.Option<string>, XmpExtractError>;
87
+ export { XmpExtractError as a, png as c, PngOptions as i, pngResult as l, Extract_d_exports as n, jpeg as o, JpegXmp as r, jpegResult as s, DEFAULT_MAX_XMP_BYTES as t };
88
+ //# sourceMappingURL=Extract-C_pCvuTC.d.mts.map
@@ -0,0 +1,52 @@
1
+ import { a as QuadStore } from "./Store-D0jmVfb3.mjs";
2
+ import { a as ServiceHandler, o as SparqlEngine, r as Loader, t as EngineOptions } from "./Engine-CYPB3g4h.mjs";
3
+ import { t as Config } from "./SparqlClient-UPc88SHy.mjs";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Layer from "effect/Layer";
6
+ import * as HttpClient from "effect/http/HttpClient";
7
+ declare namespace Federation_d_exports {
8
+ export { RemoteConfig, layerEngine, loader, serviceHandler, serviceQuery };
9
+ }
10
+ /**
11
+ * Client settings used for remote endpoints (everything but the endpoint
12
+ * URLs).
13
+ *
14
+ * @since 0.1.0
15
+ * @category models
16
+ */
17
+ type RemoteConfig = Omit<Config, 'endpoint' | 'updateEndpoint' | 'graphStoreEndpoint'>;
18
+ /**
19
+ * The query sent to a remote endpoint for a `SERVICE` pattern:
20
+ * `SELECT * WHERE { … }` with the prefixes of the original query.
21
+ *
22
+ * @since 0.1.0
23
+ * @category federation
24
+ */
25
+ declare const serviceQuery: (service: Parameters<ServiceHandler>[1]) => string;
26
+ /**
27
+ * Builds a `SERVICE` handler that sends each remote pattern to its endpoint
28
+ * with the `HttpClient` from the context. Clients are cached per endpoint.
29
+ *
30
+ * @since 0.1.0
31
+ * @category federation
32
+ */
33
+ declare const serviceHandler: (config?: RemoteConfig) => Effect.Effect<ServiceHandler, never, HttpClient.HttpClient>;
34
+ /**
35
+ * Builds a `LOAD` handler that fetches documents over HTTP and parses them
36
+ * with the `Serialization.Formats` service (or the default formats), by
37
+ * media type or, failing that, by file extension.
38
+ *
39
+ * @since 0.1.0
40
+ * @category federation
41
+ */
42
+ declare const loader: (config?: Pick<RemoteConfig, "headers" | "timeout">) => Effect.Effect<Loader, never, HttpClient.HttpClient>;
43
+ /**
44
+ * A `SparqlEngine` layer whose `SERVICE` patterns are evaluated remotely and
45
+ * whose `LOAD` fetches documents over HTTP.
46
+ *
47
+ * @since 0.1.0
48
+ * @category layers
49
+ */
50
+ declare const layerEngine: (options?: EngineOptions, config?: RemoteConfig) => Layer.Layer<SparqlEngine, never, QuadStore | HttpClient.HttpClient>;
51
+ export { serviceHandler as a, loader as i, RemoteConfig as n, serviceQuery as o, layerEngine as r, Federation_d_exports as t };
52
+ //# sourceMappingURL=Federation-BcNrozc1.d.mts.map
@@ -0,0 +1,130 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { _ as parserForExtension, a as formatError, g as parserFor, t as Formats } from "./Serialization-DP9H5bYQ.mjs";
3
+ import { i as defaults, n as acceptHeader } from "./ClientFormats-CXomkXLV.mjs";
4
+ import { n as EvaluationError, r as UpdateError } from "./Errors-CMdV1RhU.mjs";
5
+ import { a as make, n as SparqlEngine } from "./Engine-DF8PN7g-.mjs";
6
+ import { t as QuadStore } from "./Store-DH3Ow1GO.mjs";
7
+ import { i as printPattern } from "./Generator-D3utCJC7.mjs";
8
+ import { c as make$1 } from "./SparqlClient-C_CjXbwj.mjs";
9
+ import * as MutableHashMap from "effect/MutableHashMap";
10
+ import * as Option from "effect/Option";
11
+ import * as Predicate from "effect/Predicate";
12
+ import * as Effect from "effect/Effect";
13
+ import * as Record from "effect/Record";
14
+ import * as Layer from "effect/Layer";
15
+ import * as Stream from "effect/Stream";
16
+ import * as HttpClient from "effect/http/HttpClient";
17
+ import * as HttpClientRequest from "effect/http/HttpClientRequest";
18
+ // src/sparql/Federation.ts
19
+ /**
20
+ * Federation for the in-memory SPARQL engine: an `Engine.ServiceHandler`
21
+ * that evaluates `SERVICE <endpoint> { … }` patterns remotely with the
22
+ * SPARQL client, and an `Engine.Loader` that fetches documents for `LOAD`.
23
+ *
24
+ * ```ts
25
+ * const EngineLive = Federation.layerEngine().pipe(
26
+ * Layer.provide(Store.layerMemory(data)),
27
+ * Layer.provide(FetchHttpClient.layer),
28
+ * );
29
+ * ```
30
+ *
31
+ * @since 0.1.0
32
+ */
33
+ var Federation_exports = /* @__PURE__ */ __exportAll({
34
+ layerEngine: () => layerEngine,
35
+ loader: () => loader,
36
+ serviceHandler: () => serviceHandler,
37
+ serviceQuery: () => serviceQuery
38
+ });
39
+ /**
40
+ * The query sent to a remote endpoint for a `SERVICE` pattern:
41
+ * `SELECT * WHERE { … }` with the prefixes of the original query.
42
+ *
43
+ * @since 0.1.0
44
+ * @category federation
45
+ */
46
+ const serviceQuery = (service) => {
47
+ return `${Record.toEntries(service.prefixes).map(([prefix, iri]) => `PREFIX ${prefix}: <${iri}>\n`).join("")}SELECT * WHERE ${printPattern(service.pattern, service.prefixes)}`;
48
+ };
49
+ const describeError = (e) => Predicate.isTagged(e, "HttpStatusError") ? e.message : `${e._tag}: ${e.message}`;
50
+ /**
51
+ * Builds a `SERVICE` handler that sends each remote pattern to its endpoint
52
+ * with the `HttpClient` from the context. Clients are cached per endpoint.
53
+ *
54
+ * @since 0.1.0
55
+ * @category federation
56
+ */
57
+ const serviceHandler = (config = {}) => Effect.gen(function* () {
58
+ const context = yield* Effect.context();
59
+ const clients = MutableHashMap.empty();
60
+ const clientFor = (endpoint) => Effect.suspend(() => {
61
+ const cached = MutableHashMap.get(clients, endpoint.value);
62
+ if (Option.isSome(cached)) return Effect.succeed(cached.value);
63
+ return Effect.tap(Effect.provideContext(make$1({
64
+ ...config,
65
+ endpoint: endpoint.value
66
+ }), context), (client) => Effect.sync(() => MutableHashMap.set(clients, endpoint.value, client)));
67
+ });
68
+ return (endpoint, service) => Stream.unwrap(Effect.map(clientFor(endpoint), (client) => client.selectBindings(serviceQuery(service)).pipe(Stream.mapError((e) => new EvaluationError({
69
+ message: `SERVICE <${endpoint.value}> failed: ${describeError(e)}`,
70
+ cause: e
71
+ }))))).pipe(Stream.withSpan("Federation.service", { attributes: { endpoint: endpoint.value } }));
72
+ });
73
+ const loadFailed = (iri, message, cause) => new UpdateError({
74
+ message: `LOAD <${iri.value}> failed: ${message}`,
75
+ cause
76
+ });
77
+ /**
78
+ * Builds a `LOAD` handler that fetches documents over HTTP and parses them
79
+ * with the `Serialization.Formats` service (or the default formats), by
80
+ * media type or, failing that, by file extension.
81
+ *
82
+ * @since 0.1.0
83
+ * @category federation
84
+ */
85
+ const loader = (config = {}) => Effect.gen(function* () {
86
+ const http = yield* HttpClient.HttpClient;
87
+ const formats = Option.getOrElse(yield* Effect.serviceOption(Formats), () => defaults);
88
+ const accept = acceptHeader(formats);
89
+ return (iri) => Effect.gen(function* () {
90
+ const request = HttpClientRequest.get(iri.value, { headers: {
91
+ ...config.headers,
92
+ accept
93
+ } });
94
+ const exchange = Effect.flatMap(http.execute(request), (response) => Effect.map(response.text, (text) => ({
95
+ response,
96
+ text
97
+ })));
98
+ const { response, text } = yield* (config.timeout === void 0 ? exchange : Effect.timeoutOrElse(exchange, {
99
+ duration: config.timeout,
100
+ orElse: () => Effect.fail(loadFailed(iri, "timed out"))
101
+ })).pipe(Effect.mapError((e) => Predicate.isTagged(e, "UpdateError") ? e : loadFailed(iri, e.message, e)));
102
+ if (response.status < 200 || response.status >= 300) return yield* loadFailed(iri, `status ${response.status}`);
103
+ const mediaType = ((response.headers["content-type"] ?? "").split(";", 1)[0] ?? "").trim();
104
+ const byType = parserFor(formats, mediaType);
105
+ const extension = new URL(iri.value).pathname.replace(/^.*\./, "");
106
+ const parser = Option.isSome(byType) ? byType : parserForExtension(formats, extension);
107
+ if (Option.isNone(parser)) return yield* loadFailed(iri, `unsupported media type '${mediaType}'`);
108
+ return (yield* parser.value.parse(text, { baseIri: iri.value }).pipe(Effect.mapError((e) => loadFailed(iri, formatError(e), e)))).dataset;
109
+ }).pipe(Effect.withSpan("Federation.load", { attributes: { iri: iri.value } }));
110
+ });
111
+ /**
112
+ * A `SparqlEngine` layer whose `SERVICE` patterns are evaluated remotely and
113
+ * whose `LOAD` fetches documents over HTTP.
114
+ *
115
+ * @since 0.1.0
116
+ * @category layers
117
+ */
118
+ const layerEngine = (options = {}, config = {}) => Layer.effect(SparqlEngine, Effect.gen(function* () {
119
+ const store = yield* QuadStore;
120
+ const service = yield* serviceHandler(config);
121
+ const load = yield* loader(config);
122
+ return make(store, {
123
+ ...options,
124
+ service: options.service ?? service,
125
+ load: options.load ?? load
126
+ });
127
+ }));
128
+ export { serviceQuery as a, serviceHandler as i, layerEngine as n, loader as r, Federation_exports as t };
129
+
130
+ //# sourceMappingURL=Federation-CHScBkaK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Federation-CHScBkaK.mjs","names":["Generator.printPattern","SparqlClient.make","Serialization.Formats","ClientFormats.defaults","ClientFormats.acceptHeader","Serialization.parserFor","Serialization.parserForExtension","Serialization.formatError","Engine.SparqlEngine","Store.QuadStore","Engine.make"],"sources":["../src/sparql/Federation.ts"],"sourcesContent":["/**\n * Federation for the in-memory SPARQL engine: an `Engine.ServiceHandler`\n * that evaluates `SERVICE <endpoint> { … }` patterns remotely with the\n * SPARQL client, and an `Engine.Loader` that fetches documents for `LOAD`.\n *\n * ```ts\n * const EngineLive = Federation.layerEngine().pipe(\n * Layer.provide(Store.layerMemory(data)),\n * Layer.provide(FetchHttpClient.layer),\n * );\n * ```\n *\n * @since 0.1.0\n */\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as Option from 'effect/Option';\nimport * as Predicate from 'effect/Predicate';\nimport * as Record from 'effect/Record';\nimport * as Stream from 'effect/Stream';\nimport * as HttpClient from 'effect/http/HttpClient';\nimport * as HttpClientRequest from 'effect/http/HttpClientRequest';\nimport * as Serialization from '../Serialization.ts';\nimport type * as Term from '../Term.ts';\nimport * as Engine from './Engine.ts';\nimport { EvaluationError, UpdateError } from './Errors.ts';\nimport * as Generator from './Generator.ts';\nimport * as Store from './Store.ts';\nimport type * as ClientErrors from './ClientErrors.ts';\nimport * as ClientFormats from './ClientFormats.ts';\nimport * as SparqlClient from './SparqlClient.ts';\n\n/**\n * Client settings used for remote endpoints (everything but the endpoint\n * URLs).\n *\n * @since 0.1.0\n * @category models\n */\nexport type RemoteConfig = Omit<\n SparqlClient.Config,\n 'endpoint' | 'updateEndpoint' | 'graphStoreEndpoint'\n>;\n\n/**\n * The query sent to a remote endpoint for a `SERVICE` pattern:\n * `SELECT * WHERE { … }` with the prefixes of the original query.\n *\n * @since 0.1.0\n * @category federation\n */\nexport const serviceQuery = (service: Parameters<Engine.ServiceHandler>[1]): string => {\n const prologue = Record.toEntries(service.prefixes)\n .map(([prefix, iri]) => `PREFIX ${prefix}: <${iri}>\\n`)\n .join('');\n return `${prologue}SELECT * WHERE ${Generator.printPattern(service.pattern, service.prefixes)}`;\n};\n\nconst describeError = (e: ClientErrors.SparqlClientError): string =>\n Predicate.isTagged(e, 'HttpStatusError') ? e.message : `${e._tag}: ${e.message}`;\n\n/**\n * Builds a `SERVICE` handler that sends each remote pattern to its endpoint\n * with the `HttpClient` from the context. Clients are cached per endpoint.\n *\n * @since 0.1.0\n * @category federation\n */\nexport const serviceHandler = (\n config: RemoteConfig = {},\n): Effect.Effect<Engine.ServiceHandler, never, HttpClient.HttpClient> =>\n Effect.gen(function* () {\n const context = yield* Effect.context<HttpClient.HttpClient>();\n const clients = MutableHashMap.empty<string, SparqlClient.SparqlClientShape>();\n const clientFor = (endpoint: Term.NamedNode) =>\n Effect.suspend(() => {\n const cached = MutableHashMap.get(clients, endpoint.value);\n if (Option.isSome(cached)) return Effect.succeed(cached.value);\n return Effect.tap(\n Effect.provideContext(\n SparqlClient.make({ ...config, endpoint: endpoint.value }),\n context,\n ),\n (client) => Effect.sync(() => MutableHashMap.set(clients, endpoint.value, client)),\n );\n });\n return (endpoint, service) =>\n Stream.unwrap(\n Effect.map(clientFor(endpoint), (client) =>\n client.selectBindings(serviceQuery(service)).pipe(\n Stream.mapError(\n (e) =>\n new EvaluationError({\n message: `SERVICE <${endpoint.value}> failed: ${describeError(e)}`,\n cause: e,\n }),\n ),\n ),\n ),\n ).pipe(Stream.withSpan('Federation.service', { attributes: { endpoint: endpoint.value } }));\n });\n\nconst loadFailed = (iri: Term.NamedNode, message: string, cause?: unknown) =>\n new UpdateError({ message: `LOAD <${iri.value}> failed: ${message}`, cause });\n\n/**\n * Builds a `LOAD` handler that fetches documents over HTTP and parses them\n * with the `Serialization.Formats` service (or the default formats), by\n * media type or, failing that, by file extension.\n *\n * @since 0.1.0\n * @category federation\n */\nexport const loader = (\n config: Pick<RemoteConfig, 'headers' | 'timeout'> = {},\n): Effect.Effect<Engine.Loader, never, HttpClient.HttpClient> =>\n Effect.gen(function* () {\n const http = yield* HttpClient.HttpClient;\n const formats = Option.getOrElse(\n yield* Effect.serviceOption(Serialization.Formats),\n () => ClientFormats.defaults,\n );\n const accept = ClientFormats.acceptHeader(formats);\n return (iri: Term.NamedNode) =>\n Effect.gen(function* () {\n const request = HttpClientRequest.get(iri.value, {\n headers: { ...config.headers, accept },\n });\n const exchange = Effect.flatMap(http.execute(request), (response) =>\n Effect.map(response.text, (text) => ({ response, text })),\n );\n const { response, text } = yield* (\n config.timeout === undefined\n ? exchange\n : Effect.timeoutOrElse(exchange, {\n duration: config.timeout,\n orElse: () => Effect.fail(loadFailed(iri, 'timed out')),\n })\n ).pipe(\n Effect.mapError((e) =>\n Predicate.isTagged(e, 'UpdateError') ? e : loadFailed(iri, e.message, e),\n ),\n );\n if (response.status < 200 || response.status >= 300) {\n return yield* loadFailed(iri, `status ${response.status}`);\n }\n const mediaType = ((response.headers['content-type'] ?? '').split(';', 1)[0] ?? '').trim();\n const byType = Serialization.parserFor(formats, mediaType);\n const extension = new URL(iri.value).pathname.replace(/^.*\\./, '');\n const parser = Option.isSome(byType)\n ? byType\n : Serialization.parserForExtension(formats, extension);\n if (Option.isNone(parser)) {\n return yield* loadFailed(iri, `unsupported media type '${mediaType}'`);\n }\n const parsed = yield* parser.value\n .parse(text, { baseIri: iri.value })\n .pipe(Effect.mapError((e) => loadFailed(iri, Serialization.formatError(e), e)));\n return parsed.dataset;\n }).pipe(Effect.withSpan('Federation.load', { attributes: { iri: iri.value } }));\n });\n\n/**\n * A `SparqlEngine` layer whose `SERVICE` patterns are evaluated remotely and\n * whose `LOAD` fetches documents over HTTP.\n *\n * @since 0.1.0\n * @category layers\n */\nexport const layerEngine = (\n options: Engine.EngineOptions = {},\n config: RemoteConfig = {},\n): Layer.Layer<Engine.SparqlEngine, never, Store.QuadStore | HttpClient.HttpClient> =>\n Layer.effect(\n Engine.SparqlEngine,\n Effect.gen(function* () {\n const store = yield* Store.QuadStore;\n const service = yield* serviceHandler(config);\n const load = yield* loader(config);\n return Engine.make(store, {\n ...options,\n service: options.service ?? service,\n load: options.load ?? load,\n });\n }),\n );\n"],"mappings":"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"}