@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":"JsonLd-DOwS2FHg.mjs","names":["Iri.resolve","Iri.removeDotSegments","JsonLdError.make","JsonLdError.isJsonLdError","isString","Iri.isValid","isString","isString","isString","isOnlyId","frame","isString","Term.blankNode","Term.namedNode","toRdf","Term.defaultGraph","Term.quad","Term.literal","literal","Term.isBlankNode","Term.isNamedNode","Term.isDefaultGraph","fromRdf","Term.isLiteral","DocumentLoader.DocumentLoader","DocumentLoader.none","JsonLdError.isJsonLdError","isString","JsonLdError.make","frameAlgorithm","Dataset.fromIterable","Rdf.toRdf","Rdf.fromRdf","Serialization.makeFormat","Serialization.RdfParseError","Serialization.freshBlankNodePrefix","Term.isBlankNode","Term.blankNode","Term.mapTerms","Term.isDefaultGraph","Term.quad","Serialization.withParseSpan","PrefixMap.make","Serialization.RdfSerializeError","Serialization.withSerializeSpan","Serialization.makeParser","Serialization.makeSerializer","Serialization.makeCodec"],"sources":["../src/jsonld/internal/iri.ts","../src/jsonld/internal/util.ts","../src/jsonld/internal/context.ts","../src/jsonld/internal/compact.ts","../src/jsonld/internal/expand.ts","../src/jsonld/internal/flatten.ts","../src/jsonld/internal/frame.ts","../src/jsonld/internal/rdf.ts","../src/jsonld/JsonLd.ts"],"sourcesContent":["/** @internal */\nimport * as Iri from '../../Iri.ts';\n\n/**\n * Resolves `reference` against `base`; a `null` base (`\"@base\": null`, or no\n * document URL) leaves it unchanged.\n *\n * @internal\n */\nexport const resolveIri = (reference: string, base: string | null): string =>\n base === null ? reference : Iri.resolve(reference, base);\n\nconst PARTS =\n /^(?:([A-Za-z][A-Za-z0-9+.-]*):)?(?:\\/\\/([^/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$/s;\n\n/**\n * Turns an absolute IRI into a reference relative to `base`, when possible.\n *\n * @internal\n */\nexport const removeBase = (base: string | null, iri: string): string => {\n if (base === null) return iri;\n const b = PARTS.exec(base);\n if (b === null) return iri;\n let root = '';\n if (base !== '') {\n if (b[1] === undefined) return iri;\n root = `${b[1]}:${b[2] !== undefined ? `//${b[2]}` : ''}`;\n }\n if (!iri.startsWith(root)) return iri;\n const restStart = iri.charAt(root.length);\n if (root !== '' && restStart !== '' && !'/?#'.includes(restStart)) return iri;\n const rel = PARTS.exec(iri.slice(root.length));\n if (rel === null) return iri;\n const baseSegments = Iri.removeDotSegments(b[3] ?? '').split('/');\n const iriSegments = Iri.removeDotSegments(rel[3] ?? '').split('/');\n const last = rel[5] !== undefined || rel[4] !== undefined ? 0 : 1;\n // The leading segments the two paths share, keeping at least `last` of the IRI's.\n const differs = baseSegments.findIndex(\n (segment, i) => iriSegments.length - i <= last || segment !== iriSegments[i],\n );\n const common = differs === -1 ? baseSegments.length : differs;\n const baseRest = baseSegments.length - common;\n let out = baseRest > 0 ? '../'.repeat(baseRest - 1) : '';\n out += iriSegments.slice(common).join('/');\n if (rel[4] !== undefined) out += `?${rel[4]}`;\n if (rel[5] !== undefined) out += `#${rel[5]}`;\n if (out === '') out = './';\n if (/^[^/?#]*:/.test(out)) out = `./${out}`;\n if (/^@[a-zA-Z]+$/.test(out)) out = `./${out}`;\n return base === '' || resolveIri(out, base) === iri ? out : iri;\n};\n","/** @internal */\nimport * as Arr from 'effect/Array';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as Option from 'effect/Option';\nimport * as Order from 'effect/Order';\nimport * as Record from 'effect/Record';\nimport * as Result from 'effect/Result';\nimport * as Schema from 'effect/Schema';\nimport * as Iri from '../../Iri.ts';\nimport * as JsonLdError from '../JsonLdError.ts';\nimport * as Predicate from 'effect/Predicate';\n\n/** @internal */\nexport type Json = any;\n/** @internal */\nexport type JsonObject = globalThis.Record<string, any>;\n\nconst JsonText = Schema.fromJsonString(Schema.Unknown);\n\nconst encodeJson = Schema.encodeUnknownResult(JsonText);\n\n/**\n * Serialises a JSON value (`JSON.stringify` semantics); a value with no JSON\n * form (`undefined`) renders as `String(value)`, as in a template literal.\n *\n * @internal\n */\nexport const stringifyJson = (value: Json): string =>\n Result.getOrElse(encodeJson(value), () => String(value));\n\n/** @internal */\nexport const hasOwn = (o: JsonObject, k: string): boolean =>\n Object.prototype.hasOwnProperty.call(o, k);\n\n/**\n * A membership test for a fixed set of strings: a lookup in a prototype-less\n * record, so that no `Object.prototype` member is a member.\n *\n * @internal\n */\nexport const stringSet = (members: ReadonlyArray<string>): ((s: string) => boolean) => {\n const record: globalThis.Record<string, true> = Object.create(null);\n members.forEach((m) => {\n record[m] = true;\n });\n return (s) => record[s] === true;\n};\n\nconst isKeywordString = stringSet([\n '@base',\n '@container',\n '@context',\n '@default',\n '@direction',\n '@embed',\n '@explicit',\n '@graph',\n '@id',\n '@import',\n '@included',\n '@index',\n '@json',\n '@language',\n '@list',\n '@nest',\n '@none',\n '@omitDefault',\n '@prefix',\n '@preserve',\n '@protected',\n '@requireAll',\n '@reverse',\n '@set',\n '@type',\n '@value',\n '@version',\n '@vocab',\n]);\n\n/** @internal */\nexport const RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';\n/** @internal */\nexport const XSD = 'http://www.w3.org/2001/XMLSchema#';\n/** @internal */\nexport const RDF_TYPE = `${RDF}type`;\n/** @internal */\nexport const RDF_FIRST = `${RDF}first`;\n/** @internal */\nexport const RDF_REST = `${RDF}rest`;\n/** @internal */\nexport const RDF_NIL = `${RDF}nil`;\n/** @internal */\nexport const RDF_LIST = `${RDF}List`;\n/** @internal */\nexport const RDF_JSON = `${RDF}JSON`;\n/** @internal */\nexport const RDF_VALUE = `${RDF}value`;\n/** @internal */\nexport const RDF_LANGUAGE = `${RDF}language`;\n/** @internal */\nexport const RDF_DIRECTION = `${RDF}direction`;\n/** @internal */\nexport const RDF_LANG_STRING = `${RDF}langString`;\n/** @internal */\nexport const XSD_STRING = `${XSD}string`;\n/** @internal */\nexport const XSD_BOOLEAN = `${XSD}boolean`;\n/** @internal */\nexport const XSD_INTEGER = `${XSD}integer`;\n/** @internal */\nexport const XSD_DOUBLE = `${XSD}double`;\n/** @internal */\nexport const I18N = 'https://www.w3.org/ns/i18n#';\n\n/**\n * Throws the `JsonLdError` with this code. Its type is declared on the\n * binding, so that a call statement narrows like a `throw`.\n *\n * @internal\n */\nexport const fail: (code: JsonLdError.Code, message?: string) => never = (code, message) => {\n throw JsonLdError.make(code, message);\n};\n\n/**\n * Runs `f`, handing a thrown `JsonLdError` to `onError` (which rethrows a\n * different one); any other thrown value propagates unchanged.\n *\n * @internal\n */\nexport const mapJsonLdError = <A>(\n f: () => A,\n onError: (error: JsonLdError.JsonLdError) => never,\n): A =>\n Result.getOrElse(\n Result.try({\n try: f,\n catch: (e) => {\n if (JsonLdError.isJsonLdError(e)) return e;\n throw e;\n },\n }),\n onError,\n );\n\n/**\n * The active property of the algorithms: none at the top level of a document.\n *\n * @internal\n */\nexport type ActiveProperty = Option.Option<string>;\n\n/** @internal */\nexport const GRAPH_PROPERTY: ActiveProperty = Option.some('@graph');\n/** @internal */\nexport const REVERSE_PROPERTY: ActiveProperty = Option.some('@reverse');\n\n/**\n * The active property is `keyword` (`@graph`, `@reverse`, …).\n *\n * @internal\n */\nexport const isProperty = (activeProperty: ActiveProperty, keyword: string): boolean =>\n Option.isSome(activeProperty) && activeProperty.value === keyword;\n\n/**\n * At the top level, or directly under `@graph`: where free-floating values are dropped.\n *\n * @internal\n */\nexport const isTopLevel = (activeProperty: ActiveProperty): boolean =>\n Option.isNone(activeProperty) || activeProperty.value === '@graph';\n\n/** @internal */\nexport const getOrInit = (o: JsonObject, k: string, init: () => Json): Json => {\n if (!hasOwn(o, k)) o[k] = init();\n return o[k];\n};\n\n/** @internal */\nexport const isKeyword = (v: Json): boolean => Predicate.isString(v) && isKeywordString(v);\n\n// Hoisted: a regex literal makes a new `RegExp` each time it is evaluated.\nconst KEYWORD_FORM = /^@[a-zA-Z]+$/;\nconst ABSOLUTE_IRI = /^[A-Za-z][A-Za-z0-9+.-]*:[^\\s]*$/;\n\n/** @internal */\nexport const hasKeywordForm = (v: string): boolean => KEYWORD_FORM.test(v);\n\n/** @internal */\nexport const isObject = (v: unknown): v is JsonObject => Predicate.isObject(v);\n\n/** @internal */\nexport const isEmptyObject = (v: Json): boolean =>\n isObject(v) && Arr.isReadonlyArrayEmpty(Record.keys(v));\n\n/** @internal */\nexport const isString = (v: unknown): v is string => Predicate.isString(v);\n\n/** @internal */\nexport const isScalar = (v: unknown): v is string | number | boolean =>\n Predicate.isString(v) || Predicate.isNumber(v) || Predicate.isBoolean(v);\n\n/** @internal */\nexport const asArray = (v: Json): Array<Json> => (Array.isArray(v) ? v : [v]);\n\n/** @internal */\nexport const isBlankNodeId = (v: unknown): v is string =>\n Predicate.isString(v) && v.startsWith('_:');\n\n/** @internal */\nexport const isAbsoluteIri = (v: string): boolean => ABSOLUTE_IRI.test(v);\n\n/** @internal */\nexport const isWellFormedIri = (v: string): boolean => Iri.isValid(v);\n\n/** @internal */\nexport const isWellFormedLanguage = (v: string): boolean =>\n /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(v);\n\n/** @internal */\nexport const isValueObject = (v: Json): boolean => isObject(v) && '@value' in v;\n\n/** @internal */\nexport const isListObject = (v: Json): boolean => isObject(v) && '@list' in v;\n\n/** @internal */\nexport const isGraphObject = (v: unknown): v is JsonObject => {\n if (!isObject(v) || !('@graph' in v)) return false;\n return Record.keys(v).every(\n (k) => k === '@graph' || k === '@id' || k === '@index' || k === '@context',\n );\n};\n\n/** @internal */\nexport const isSimpleGraphObject = (v: unknown): v is JsonObject =>\n isGraphObject(v) && !('@id' in v);\n\n/** @internal */\nexport const isNodeObject = (v: unknown): v is JsonObject =>\n isObject(v) && !('@value' in v) && !('@list' in v) && !('@set' in v);\n\n/** @internal */\nexport const deepEqual = (a: Json, b: Json): boolean => {\n if (a === b) return true;\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every((x, i) => deepEqual(x, b[i]));\n }\n if (isObject(a)) {\n if (!isObject(b)) return false;\n const ka = Record.keys(a);\n return (\n ka.length === Record.keys(b).length && ka.every((k) => hasOwn(b, k) && deepEqual(a[k], b[k]))\n );\n }\n return false;\n};\n\n/** @internal */\nexport const compareStrings: Order.Order<string> = Order.String;\n\n/** @internal */\nexport const sortedKeys = (o: JsonObject): Array<string> =>\n Arr.sort(Record.keys(o), compareStrings);\n\n/**\n * Appends every item to `target` (one `push` per item: spreading a large\n * array into `push` can overflow the stack).\n *\n * @internal\n */\nexport const pushAll = (target: Array<Json>, items: ReadonlyArray<Json>): void => {\n items.forEach((item) => target.push(item));\n};\n\n/**\n * Adds a value to an entry of a map. When `forceArray` is true the entry is\n * always an array.\n *\n * @internal\n */\nexport const addValue = (\n object: JsonObject,\n key: string,\n value: Json,\n forceArray: boolean,\n): void => {\n if (Array.isArray(value)) {\n if (Arr.isReadonlyArrayEmpty(value) && forceArray && !hasOwn(object, key)) object[key] = [];\n value.forEach((v) => addValue(object, key, v, forceArray));\n return;\n }\n if (!hasOwn(object, key)) {\n object[key] = forceArray ? [value] : value;\n } else {\n if (!Array.isArray(object[key])) object[key] = [object[key]];\n object[key].push(value);\n }\n};\n\n/** @internal */\nexport const addUnique = (array: Array<Json>, value: Json): void => {\n if (!array.some((v) => deepEqual(v, value))) array.push(value);\n};\n\n/**\n * Steps a state until `step` returns none, and returns the last state: a\n * loop as a function, for the scans that walk a structure of unknown length.\n *\n * @internal\n */\nexport const loop = <S>(initial: S, step: (state: S) => Option.Option<S>): S => {\n let state = initial;\n Arr.unfold(undefined, () =>\n Option.map(step(state), (next): readonly [undefined, undefined] => {\n state = next;\n return [undefined, undefined];\n }),\n );\n return state;\n};\n\n/** @internal */\nexport const clone = <A>(v: A): A => (v === undefined ? v : structuredClone(v));\n\n/**\n * The JSON Canonicalization Scheme (RFC 8785).\n *\n * @internal\n */\nexport const canonicalJson = (v: Json): string => {\n if (v === null || Predicate.isBoolean(v) || Predicate.isNumber(v) || Predicate.isString(v)) {\n return stringifyJson(v);\n }\n if (Array.isArray(v)) return `[${v.map(canonicalJson).join(',')}]`;\n const keys = Arr.sort(Record.keys(v), compareStrings);\n return `{${keys.map((k) => `${stringifyJson(k)}:${canonicalJson(v[k])}`).join(',')}}`;\n};\n\n/**\n * A blank node identifier issuer.\n *\n * @internal\n */\nexport class IdIssuer {\n #counter = 0;\n readonly #map = MutableHashMap.empty<string, string>();\n readonly prefix: string;\n constructor(prefix: string = '_:b') {\n this.prefix = prefix;\n }\n /** A fresh identifier, or the one already issued for `old`. */\n issue(old?: string): string {\n if (old === undefined) return this.#next();\n return Option.getOrElse(MutableHashMap.get(this.#map, old), () => {\n const id = this.#next();\n MutableHashMap.set(this.#map, old, id);\n return id;\n });\n }\n has(old: string): boolean {\n return MutableHashMap.has(this.#map, old);\n }\n #next(): string {\n return `${this.prefix}${this.#counter++}`;\n }\n}\n","/**\n * Context processing and IRI expansion (JSON-LD 1.1 API §4.1, §4.2, §5.2).\n *\n * @internal\n */\nimport { resolveIri } from './iri.ts';\nimport {\n type Json,\n type JsonObject,\n deepEqual,\n mapJsonLdError,\n fail,\n hasKeywordForm,\n isAbsoluteIri,\n isBlankNodeId,\n isKeyword,\n isObject,\n isString,\n hasOwn,\n stringSet,\n} from './util.ts';\nimport * as Arr from 'effect/Array';\nimport * as Iterable from 'effect/Iterable';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as Option from 'effect/Option';\nimport * as Predicate from 'effect/Predicate';\nimport * as Record from 'effect/Record';\n\n/** @internal */\nexport type ProcessingMode = 'json-ld-1.0' | 'json-ld-1.1';\n\n/**\n * What the algorithms read of a loaded document.\n *\n * @internal\n */\nexport interface LoadedDocument {\n readonly documentUrl: string;\n readonly document: Json;\n}\n\n/** A remote context, as cached by URL. */\ninterface LoadedContext {\n readonly context: Json;\n readonly documentUrl: string;\n}\n\n/**\n * Synchronous loader used by the pure algorithms. It either returns an\n * already-loaded document, throws a `JsonLdError`, or throws `NeedDocument`\n * to ask the effectful driver to load the document and retry.\n *\n * @internal\n */\nexport interface Env {\n readonly processingMode: ProcessingMode;\n readonly load: (url: string, profile?: string) => LoadedDocument;\n /** Cache of remote contexts (keyed by URL). */\n readonly contextCache: MutableHashMap.MutableHashMap<string, LoadedContext>;\n}\n\n/** @internal */\nexport class NeedDocument {\n readonly url: string;\n constructor(url: string) {\n this.url = url;\n }\n}\n\n/** @internal */\nexport interface DefineState {\n readonly defined: MutableHashMap.MutableHashMap<string, boolean>;\n readonly baseUrl: string | null;\n readonly protected: boolean;\n readonly overrideProtected: boolean;\n readonly remoteContexts: ReadonlyArray<string>;\n readonly validateScoped: boolean;\n}\n\n/** @internal */\nexport interface TermDefinition {\n iri: string | null;\n reverse: boolean;\n type?: string;\n /** `undefined` = no language mapping, `null` = explicitly no language. */\n language?: string | null;\n direction?: 'ltr' | 'rtl' | null;\n context?: Json;\n hasContext: boolean;\n baseUrl?: string | null;\n container: Array<string>;\n index?: string;\n nest?: string;\n prefix: boolean;\n protected: boolean;\n /** The term contains a colon (it is a compact IRI or absolute IRI). */\n hasColon: boolean;\n}\n\n/** @internal */\nexport interface ActiveContext {\n base: string | null;\n originalBase: string | null;\n vocab?: string;\n language?: string;\n direction?: 'ltr' | 'rtl';\n terms: MutableHashMap.MutableHashMap<string, TermDefinition>;\n previous?: ActiveContext;\n inverse?: InverseContext;\n}\n\n/** @internal */\nexport type InverseContext = MutableHashMap.MutableHashMap<\n string,\n globalThis.Record<string, ContainerEntry>\n>;\n\n/** @internal */\nexport interface ContainerEntry {\n '@language': globalThis.Record<string, string>;\n '@type': globalThis.Record<string, string>;\n '@any': globalThis.Record<string, string>;\n}\n\n/** @internal */\nexport const initialContext = (base: string | null): ActiveContext => ({\n base,\n originalBase: base,\n terms: MutableHashMap.empty(),\n});\n\n/**\n * The definition of `term` in the active context.\n *\n * @internal\n */\nexport const termOf = (active: ActiveContext, term: string): Option.Option<TermDefinition> =>\n // Terms are strings, which a `MutableHashMap` keeps in its `backing` map: one lookup there\n // is the whole of `MutableHashMap.get` for them (this runs for every key expanded).\n Option.fromUndefinedOr(active.terms.backing.get(term));\n\n/**\n * The definition of `term`, when it carries a scoped context.\n *\n * @internal\n */\nexport const scopedTermOf = (active: ActiveContext, term: string): Option.Option<TermDefinition> =>\n Option.filter(termOf(active, term), (def) => def.hasContext);\n\nconst cloneContext = (ctx: ActiveContext): ActiveContext => {\n const out: ActiveContext = {\n base: ctx.base,\n originalBase: ctx.originalBase,\n terms: MutableHashMap.fromIterable(ctx.terms),\n };\n if (ctx.vocab !== undefined) out.vocab = ctx.vocab;\n if (ctx.language !== undefined) out.language = ctx.language;\n if (ctx.direction !== undefined) out.direction = ctx.direction;\n if (ctx.previous !== undefined) out.previous = ctx.previous;\n return out;\n};\n\nconst MAX_REMOTE_CONTEXTS = 32;\n\n/** Loads a remote context document, failing with `loading remote context failed`. */\nconst loadContextDocument = (env: Env, url: string): LoadedDocument =>\n mapJsonLdError(\n () => env.load(url, 'http://www.w3.org/ns/json-ld#context'),\n (e) => fail('loading remote context failed', `${url}: ${e.message}`),\n );\n\n/**\n * Applies the type-scoped context of each term (in the given order) that\n * defines one, as expansion step 11 and compaction step 11 do.\n *\n * @internal\n */\nexport const applyTypeScopedContexts = (\n env: Env,\n active: ActiveContext,\n typeScoped: ActiveContext,\n terms: ReadonlyArray<string>,\n): ActiveContext =>\n terms.reduce(\n (result, term) =>\n Option.match(scopedTermOf(typeScoped, term), {\n onNone: () => result,\n onSome: (def) =>\n processContext(env, result, def.context, def.baseUrl ?? null, [], false, false),\n }),\n active,\n );\n\n/** Loads a remote context (once per run), failing with `invalid remote context`. */\nconst remoteContext = (env: Env, url: string): LoadedContext =>\n Option.getOrElse(MutableHashMap.get(env.contextCache, url), () => {\n const doc = loadContextDocument(env, url);\n if (!isObject(doc.document) || !('@context' in doc.document)) {\n fail('invalid remote context', url);\n }\n const loaded: LoadedContext = {\n context: doc.document['@context'],\n documentUrl: doc.documentUrl,\n };\n MutableHashMap.set(env.contextCache, url, loaded);\n return loaded;\n });\n\n/**\n * Context Processing Algorithm.\n *\n * @internal\n */\nexport const processContext = (\n env: Env,\n active: ActiveContext,\n localContext: Json,\n baseUrl: string | null,\n remoteContexts: ReadonlyArray<string> = [],\n overrideProtected = false,\n propagate = true,\n validateScoped = true,\n): ActiveContext => {\n // 1\n let result = cloneContext(active);\n // 2\n if (isObject(localContext) && '@propagate' in localContext) {\n if (!Predicate.isBoolean(localContext['@propagate'])) fail('invalid @propagate value');\n propagate = localContext['@propagate'];\n }\n // 3\n if (!propagate && result.previous === undefined) result.previous = active;\n // 4\n const contexts = Array.isArray(localContext) ? localContext : [localContext];\n // 5\n contexts.forEach((context: Json) => {\n // 5.1\n if (context === null) {\n result = nullified(active, result, overrideProtected, propagate);\n return;\n }\n // 5.2\n if (isString(context)) {\n const url = resolveIri(context, baseUrl);\n if (!validateScoped && remoteContexts.includes(url)) return;\n if (remoteContexts.length > MAX_REMOTE_CONTEXTS) fail('context overflow');\n const loaded = remoteContext(env, url);\n result = processContext(\n env,\n result,\n loaded.context,\n loaded.documentUrl,\n [...remoteContexts, url],\n overrideProtected,\n true,\n validateScoped,\n );\n return;\n }\n // 5.3 - 5.13\n processLocalContext(\n env,\n result,\n context,\n baseUrl,\n remoteContexts,\n overrideProtected,\n validateScoped,\n );\n });\n return result;\n};\n\n/** Context processing step 5.1: a `null` context resets the active context. */\nconst nullified = (\n active: ActiveContext,\n result: ActiveContext,\n overrideProtected: boolean,\n propagate: boolean,\n): ActiveContext => {\n if (\n !overrideProtected &&\n Iterable.some(MutableHashMap.values(result.terms), (def) => def.protected)\n ) {\n fail('invalid context nullification');\n }\n const reset = initialContext(active.originalBase);\n if (!propagate) reset.previous = result;\n return reset;\n};\n\n/** Steps 5.3 - 5.13: a context definition (an object) updates `result` in place. */\nconst processLocalContext = (\n env: Env,\n result: ActiveContext,\n definition: Json,\n baseUrl: string | null,\n remoteContexts: ReadonlyArray<string>,\n overrideProtected: boolean,\n validateScoped: boolean,\n): void => {\n // 5.3\n if (!isObject(definition)) fail('invalid local context');\n // 5.5\n checkVersion(env, definition);\n // 5.6\n const context = withImport(env, definition, baseUrl);\n // 5.7\n if ('@base' in context && Arr.isReadonlyArrayEmpty(remoteContexts)) {\n setBase(result, context['@base']);\n }\n // 5.8\n if ('@vocab' in context) setVocab(env, result, context['@vocab']);\n // 5.9, 5.10\n setLanguageAndDirection(env, result, context);\n // 5.11\n checkFlags(env, context);\n // 5.12, 5.13\n const state: DefineState = {\n defined: MutableHashMap.empty(),\n baseUrl,\n protected: context['@protected'] === true,\n overrideProtected,\n remoteContexts,\n validateScoped,\n };\n Record.keys(context).forEach((key) => {\n if (!isContextKeyword(key)) createTermDefinition(env, result, context, key, state);\n });\n};\n\n/** Step 5.5: `@version`. */\nconst checkVersion = (env: Env, context: JsonObject): void => {\n if (!('@version' in context)) return;\n if (context['@version'] !== 1.1) fail('invalid @version value');\n if (env.processingMode === 'json-ld-1.0') fail('processing mode conflict');\n};\n\n/** Step 5.6: the context merged over the one its `@import` names. */\nconst withImport = (env: Env, context: JsonObject, baseUrl: string | null): JsonObject => {\n if (!('@import' in context)) return context;\n if (env.processingMode === 'json-ld-1.0') fail('invalid context entry');\n const imp = context['@import'];\n if (!isString(imp)) fail('invalid @import value');\n const url = resolveIri(imp, baseUrl);\n const doc = loadContextDocument(env, url);\n if (!isObject(doc.document) || !isObject(doc.document['@context'])) {\n fail('invalid remote context', url);\n }\n const importContext = doc.document['@context'];\n if ('@import' in importContext) fail('invalid context entry');\n return { ...importContext, ...context };\n};\n\n/** Step 5.7: `@base`. */\nconst setBase = (result: ActiveContext, value: Json): void => {\n if (value === null) result.base = null;\n else if (!isString(value)) fail('invalid base IRI');\n else if (isAbsoluteIri(value)) result.base = value;\n else if (result.base !== null) result.base = resolveIri(value, result.base);\n else fail('invalid base IRI');\n};\n\n/** Step 5.8: `@vocab`. */\nconst setVocab = (env: Env, result: ActiveContext, value: Json): void => {\n if (value === null) {\n delete result.vocab;\n return;\n }\n if (!isString(value)) fail('invalid vocab mapping');\n if (env.processingMode === 'json-ld-1.0' && !isAbsoluteIri(value) && !isBlankNodeId(value)) {\n fail('invalid vocab mapping');\n }\n const expanded = expandIri(env, result, value, true, true);\n if (expanded === null || isKeyword(expanded)) fail('invalid vocab mapping');\n result.vocab = expanded;\n};\n\n/** Steps 5.9 and 5.10: `@language` and `@direction`. */\nconst setLanguageAndDirection = (env: Env, result: ActiveContext, context: JsonObject): void => {\n if ('@language' in context) {\n const value = context['@language'];\n if (value === null) delete result.language;\n else if (!isString(value)) fail('invalid default language');\n else result.language = value;\n }\n if ('@direction' in context) {\n if (env.processingMode === 'json-ld-1.0') fail('invalid context entry');\n const value = context['@direction'];\n if (value === null) delete result.direction;\n else if (value !== 'ltr' && value !== 'rtl') fail('invalid base direction');\n else result.direction = value;\n }\n};\n\n/** Step 5.11, and the `@protected` flag. */\nconst checkFlags = (env: Env, context: JsonObject): void => {\n if ('@propagate' in context) {\n if (env.processingMode === 'json-ld-1.0') fail('invalid context entry');\n if (!Predicate.isBoolean(context['@propagate'])) fail('invalid @propagate value');\n }\n if ('@protected' in context && !Predicate.isBoolean(context['@protected'])) {\n fail('invalid @protected value');\n }\n};\n\nconst isContextKeyword = stringSet([\n '@base',\n '@direction',\n '@import',\n '@language',\n '@propagate',\n '@protected',\n '@version',\n '@vocab',\n]);\n\nconst isTermKey = stringSet([\n '@id',\n '@reverse',\n '@container',\n '@context',\n '@direction',\n '@index',\n '@language',\n '@nest',\n '@prefix',\n '@protected',\n '@type',\n]);\n\nconst GEN_DELIMS = /[:/?#[\\]@]$/;\n\nconst isContainerKeyword = stringSet([\n '@graph',\n '@id',\n '@index',\n '@language',\n '@list',\n '@set',\n '@type',\n]);\n\nconst validContainer = (env: Env, value: Json): boolean => {\n if (env.processingMode === 'json-ld-1.0') {\n return isString(value) && ['@list', '@set', '@index', '@language'].includes(value);\n }\n const c = Array.isArray(value) ? value : [value];\n if (Arr.isReadonlyArrayEmpty(c)) return false;\n if (!c.every((x) => isString(x) && isContainerKeyword(x))) return false;\n if (c.some((x, i) => c.indexOf(x) !== i)) return false;\n if (c.includes('@list')) return c.length === 1;\n if (c.includes('@graph')) {\n if (c.includes('@id') && c.includes('@index')) return false;\n return c.every((x) => x === '@graph' || x === '@id' || x === '@index' || x === '@set');\n }\n if (c.length === 1) return true;\n return c.length === 2 && c.includes('@set');\n};\n\n/**\n * Create Term Definition algorithm.\n *\n * @internal\n */\nexport const createTermDefinition = (\n env: Env,\n active: ActiveContext,\n local: JsonObject,\n term: string,\n state: DefineState,\n): void => {\n const { defined, baseUrl, overrideProtected, remoteContexts } = state;\n // 1\n const status = MutableHashMap.get(defined, term);\n if (Option.isSome(status)) {\n if (status.value) return;\n fail('cyclic IRI mapping', term);\n }\n // 2\n if (term === '') fail('invalid term definition', 'empty term');\n MutableHashMap.set(defined, term, false);\n // 3\n let value = local[term];\n // 4, 5\n if (term === '@type' && env.processingMode !== 'json-ld-1.0' && isObject(value)) {\n const keys = Record.keys(value);\n if (\n Arr.isReadonlyArrayEmpty(keys) ||\n keys.some((k) => k !== '@container' && k !== '@protected') ||\n ('@container' in value && value['@container'] !== '@set')\n ) {\n fail('keyword redefinition', term);\n }\n } else if (isKeyword(term)) {\n fail('keyword redefinition', term);\n } else if (hasKeywordForm(term)) {\n MutableHashMap.set(defined, term, true);\n return;\n }\n // 6\n const previous = termOf(active, term);\n MutableHashMap.remove(active.terms, term);\n // 7, 8, 9\n let simpleTerm = false;\n if (value === null) value = { '@id': null };\n else if (isString(value)) {\n value = { '@id': value };\n simpleTerm = true;\n } else if (!isObject(value)) {\n fail('invalid term definition', term);\n }\n // 10\n const def: TermDefinition = {\n iri: null,\n reverse: false,\n hasContext: false,\n container: [],\n prefix: false,\n protected: state.protected,\n hasColon: term.indexOf(':', 1) !== -1,\n };\n // 11\n if ('@protected' in value) {\n if (env.processingMode === 'json-ld-1.0') fail('invalid term definition');\n if (!Predicate.isBoolean(value['@protected'])) fail('invalid @protected value');\n def.protected = value['@protected'];\n }\n // 12\n if ('@type' in value) {\n const type = value['@type'];\n if (!isString(type)) fail('invalid type mapping');\n const expanded = expandIri(env, active, type, true, false, local, state);\n if (expanded === '@json' || expanded === '@none') {\n if (env.processingMode === 'json-ld-1.0') fail('invalid type mapping');\n } else if (\n expanded === null ||\n (expanded !== '@id' && expanded !== '@vocab' && !isAbsoluteIri(expanded)) ||\n isBlankNodeId(expanded)\n ) {\n fail('invalid type mapping', type);\n }\n def.type = expanded;\n }\n // 13\n if ('@reverse' in value) {\n if ('@id' in value || '@nest' in value) fail('invalid reverse property');\n const rev = value['@reverse'];\n if (!isString(rev)) fail('invalid IRI mapping');\n if (hasKeywordForm(rev)) {\n MutableHashMap.set(defined, term, true);\n return;\n }\n const iri = expandIri(env, active, rev, true, false, local, state);\n if (iri === null || (!isAbsoluteIri(iri) && !isBlankNodeId(iri))) fail('invalid IRI mapping');\n def.iri = iri;\n if ('@container' in value) {\n const c = value['@container'];\n if (c !== null && c !== '@set' && c !== '@index') fail('invalid reverse property');\n if (c !== null) def.container = [c];\n }\n def.reverse = true;\n } else if ('@id' in value && value['@id'] !== term) {\n // 15\n const id = value['@id'];\n if (id === null) {\n def.iri = null;\n } else {\n if (!isString(id)) fail('invalid IRI mapping');\n if (!isKeyword(id) && hasKeywordForm(id)) {\n MutableHashMap.set(defined, term, true);\n return;\n }\n const iri = expandIri(env, active, id, true, false, local, state);\n if (iri === null || (!isKeyword(iri) && !isAbsoluteIri(iri) && !isBlankNodeId(iri))) {\n fail('invalid IRI mapping', id);\n }\n if (iri === '@context') fail('invalid keyword alias');\n def.iri = iri;\n if (term.slice(1, -1).includes(':') || term.includes('/')) {\n MutableHashMap.set(defined, term, true);\n const termIri = expandIri(env, active, term, true, false, local, state);\n if (termIri !== iri) fail('invalid IRI mapping', term);\n }\n if (!term.includes(':') && !term.includes('/') && simpleTerm) {\n if (GEN_DELIMS.test(iri) || isBlankNodeId(iri)) def.prefix = true;\n }\n }\n } else if (term.indexOf(':', 1) !== -1) {\n // 16\n const i = term.indexOf(':');\n const prefix = term.slice(0, i);\n const suffix = term.slice(i + 1);\n if (prefix !== '_' && !suffix.startsWith('//') && hasOwn(local, prefix)) {\n createTermDefinition(env, active, local, prefix, state);\n }\n const prefixIri =\n prefix === '_' ? null : Option.getOrNull(Option.map(termOf(active, prefix), (d) => d.iri));\n def.iri = prefixIri === null ? term : prefixIri + suffix;\n } else if (term.includes('/')) {\n // 17\n const iri = expandIri(env, active, term, true);\n if (iri === null || !isAbsoluteIri(iri)) fail('invalid IRI mapping', term);\n def.iri = iri;\n } else if (term === '@type') {\n // 18\n def.iri = '@type';\n } else if (active.vocab !== undefined) {\n // 19\n def.iri = active.vocab + term;\n } else {\n fail('invalid IRI mapping', term);\n }\n // 20\n if ('@container' in value && !def.reverse) {\n const c = value['@container'];\n if (!validContainer(env, c)) fail('invalid container mapping');\n def.container = Array.isArray(c) ? [...c] : [c];\n if (def.container.includes('@type')) {\n if (def.type === undefined) def.type = '@id';\n if (def.type !== '@id' && def.type !== '@vocab') fail('invalid type mapping');\n }\n }\n // 21\n if ('@index' in value) {\n if (env.processingMode === 'json-ld-1.0' || !def.container.includes('@index')) {\n fail('invalid term definition');\n }\n const index = value['@index'];\n if (!isString(index)) fail('invalid term definition');\n const expanded = expandIri(env, active, index, true, false, local, state);\n if (expanded === null || isKeyword(expanded) || !isAbsoluteIri(expanded)) {\n fail('invalid term definition');\n }\n def.index = index;\n }\n // 22\n if ('@context' in value) {\n if (env.processingMode === 'json-ld-1.0') fail('invalid term definition');\n const ctx = value['@context'];\n mapJsonLdError(\n () => processContext(env, active, ctx, baseUrl, remoteContexts, true, true, false),\n (e) => fail('invalid scoped context', e.message),\n );\n def.context = ctx;\n def.hasContext = true;\n def.baseUrl = baseUrl;\n }\n // 23\n if ('@language' in value && !('@type' in value)) {\n const lang = value['@language'];\n if (lang !== null && !isString(lang)) fail('invalid language mapping');\n def.language = lang;\n }\n // 24\n if ('@direction' in value && !('@type' in value)) {\n const dir = value['@direction'];\n if (dir !== null && dir !== 'ltr' && dir !== 'rtl') fail('invalid base direction');\n def.direction = dir;\n }\n // 25\n if ('@nest' in value) {\n if (env.processingMode === 'json-ld-1.0') fail('invalid term definition');\n const nest = value['@nest'];\n if (!isString(nest) || (isKeyword(nest) && nest !== '@nest')) fail('invalid @nest value');\n def.nest = nest;\n }\n // 26\n if ('@prefix' in value) {\n if (env.processingMode === 'json-ld-1.0' || term.includes(':') || term.includes('/')) {\n fail('invalid term definition');\n }\n const p = value['@prefix'];\n if (!Predicate.isBoolean(p)) fail('invalid @prefix value');\n def.prefix = p;\n if (p && def.iri !== null && isKeyword(def.iri)) fail('invalid term definition');\n }\n // 27\n checkTermKeys(value);\n finishDefinition(active, term, def, previous, overrideProtected, defined);\n};\n\nconst checkTermKeys = (value: JsonObject): void => {\n Record.keys(value).forEach((k) => {\n if (!isTermKey(k)) fail('invalid term definition', k);\n });\n};\n\nconst finishDefinition = (\n active: ActiveContext,\n term: string,\n def: TermDefinition,\n previous: Option.Option<TermDefinition>,\n overrideProtected: boolean,\n defined: MutableHashMap.MutableHashMap<string, boolean>,\n): void => {\n // 28\n const kept = Option.filter(previous, (p) => !overrideProtected && p.protected);\n if (Option.isSome(kept) && !sameDefinition(def, kept.value)) {\n fail('protected term redefinition', term);\n }\n // 29\n MutableHashMap.set(\n active.terms,\n term,\n Option.getOrElse(kept, () => def),\n );\n MutableHashMap.set(defined, term, true);\n};\n\n/** Whether the definition of `term` is still to be created from `local` (§4.2, step 3). */\nconst isPending = (local: JsonObject, state: DefineState, term: string): boolean =>\n hasOwn(local, term) && !Option.getOrElse(MutableHashMap.get(state.defined, term), () => false);\n\nconst sameDefinition = (a: TermDefinition, b: TermDefinition): boolean =>\n a.iri === b.iri &&\n a.reverse === b.reverse &&\n a.type === b.type &&\n a.language === b.language &&\n 'language' in a === 'language' in b &&\n a.direction === b.direction &&\n 'direction' in a === 'direction' in b &&\n a.hasContext === b.hasContext &&\n deepEqual(a.context, b.context) &&\n a.container.length === b.container.length &&\n a.container.every((c) => b.container.includes(c)) &&\n a.index === b.index &&\n a.nest === b.nest &&\n a.prefix === b.prefix;\n\n/**\n * IRI Expansion algorithm.\n *\n * @internal\n */\nexport const expandIri = (\n env: Env,\n active: ActiveContext,\n value: string | null,\n vocab = false,\n documentRelative = false,\n local?: JsonObject,\n state?: DefineState,\n): string | null => {\n // 1\n if (value === null || isKeyword(value)) return value;\n // 2\n if (hasKeywordForm(value)) return null;\n // 3\n if (local !== undefined && state !== undefined && isPending(local, state, value)) {\n createTermDefinition(env, active, local, value, state);\n }\n const def = termOf(active, value);\n if (Option.isSome(def)) {\n const iri = def.value.iri;\n // 4\n if (iri !== null && isKeyword(iri)) return iri;\n // 5\n if (vocab) return iri;\n }\n // 6\n const colon = value.indexOf(':', 1);\n if (colon !== -1) {\n const prefix = value.slice(0, colon);\n const suffix = value.slice(colon + 1);\n if (prefix === '_' || suffix.startsWith('//')) return value;\n if (local !== undefined && state !== undefined && isPending(local, state, prefix)) {\n createTermDefinition(env, active, local, prefix, state);\n }\n const prefixDef = termOf(active, prefix);\n if (Option.isSome(prefixDef) && prefixDef.value.iri !== null && prefixDef.value.prefix) {\n return prefixDef.value.iri + suffix;\n }\n if (isAbsoluteIri(value)) return value;\n }\n // 7\n if (vocab && active.vocab !== undefined) return active.vocab + value;\n // 8\n if (documentRelative) return resolveIri(value, active.base);\n return value;\n};\n","/**\n * Compaction Algorithms (JSON-LD 1.1 API §6).\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as Option from 'effect/Option';\nimport * as Order from 'effect/Order';\nimport * as Record from 'effect/Record';\nimport {\n type ActiveContext,\n applyTypeScopedContexts,\n type ContainerEntry,\n type Env,\n type InverseContext,\n type TermDefinition,\n expandIri,\n processContext,\n} from './context.ts';\nimport { removeBase } from './iri.ts';\nimport {\n type Json,\n type JsonObject,\n addValue,\n asArray,\n compareStrings,\n fail,\n isGraphObject,\n isListObject,\n isObject,\n isScalar,\n isSimpleGraphObject,\n isString,\n isValueObject,\n getOrInit,\n hasOwn,\n pushAll,\n type ActiveProperty,\n REVERSE_PROPERTY,\n isProperty,\n} from './util.ts';\n\n/** The definition of `term`, read where a missing definition reads as its defaults. */\nconst definitionOf = (active: ActiveContext, term: string) =>\n // `termOf` without its `Option`: a string key's entry is in the map's `backing`.\n active.terms.backing.get(term);\n\n/** @internal */\nexport interface CompactOptions {\n readonly compactArrays: boolean;\n readonly ordered: boolean;\n readonly compactToRelative: boolean;\n}\n\n/**\n * Compaction Algorithm.\n *\n * @internal\n */\nexport const compactElement = (\n env: Env,\n active: ActiveContext,\n activeProperty: ActiveProperty,\n element: Json,\n options: CompactOptions,\n): Json => {\n // 1\n const typeScoped = active;\n // 2\n if (isScalar(element) || element === null) return element;\n // 3\n if (Array.isArray(element)) {\n const result: Array<Json> = [];\n element.forEach((item) => {\n const compacted = compactElement(env, active, activeProperty, item, options);\n if (compacted !== null) result.push(compacted);\n });\n const container = activeContainer(active, activeProperty);\n if (\n result.length !== 1 ||\n !options.compactArrays ||\n isProperty(activeProperty, '@graph') ||\n isProperty(activeProperty, '@set') ||\n container.includes('@list') ||\n container.includes('@set')\n ) {\n return result;\n }\n return result[0];\n }\n // The property-scoped context is looked up before reverting a\n // non-propagated (type-scoped) context.\n const propDef = activeDefinition(active, activeProperty);\n // 5\n if (active.previous !== undefined) {\n const keys = Record.keys(element);\n if (!('@value' in element) && !(keys.length === 1 && keys[0] === '@id')) {\n active = active.previous;\n }\n }\n // 6\n if (propDef?.hasContext === true) {\n active = processContext(env, active, propDef.context, propDef.baseUrl ?? null, [], true);\n }\n // 7\n if ('@value' in element || '@id' in element) {\n const compacted = compactValue(env, active, activeProperty, element, options);\n if (isScalar(compacted) || compacted === null || propDef?.type === '@json') {\n // A value object with null @value never reaches here after expansion.\n if (isScalar(compacted) || propDef?.type === '@json') return compacted;\n }\n }\n // 8\n if (isListObject(element) && activeContainer(active, activeProperty).includes('@list')) {\n return compactElement(env, active, activeProperty, element['@list'], options);\n }\n // 9\n const insideReverse = isProperty(activeProperty, '@reverse');\n // 10\n const result: JsonObject = {};\n // 11\n if ('@type' in element) {\n const compactedTypes = Arr.sort(\n asArray(element['@type']).map((t: string) =>\n compactIri(env, typeScoped, t, null, true, false, options),\n ),\n compareStrings,\n );\n active = applyTypeScopedContexts(env, active, typeScoped, compactedTypes);\n }\n // 12\n const scope: Scope = { env, active, typeScoped, activeProperty, options, result, insideReverse };\n const keys = options.ordered\n ? Arr.sort(Record.keys(element), compareStrings)\n : Record.keys(element);\n keys.forEach((expandedProperty) => {\n const expandedValue = element[expandedProperty];\n if (!compactKeywordEntry(scope, expandedProperty, expandedValue)) {\n compactPropertyEntry(scope, expandedProperty, expandedValue);\n }\n });\n return result;\n};\n\n/** What the compaction of one element's entries reads (step 12). */\ninterface Scope {\n readonly env: Env;\n readonly active: ActiveContext;\n readonly typeScoped: ActiveContext;\n readonly activeProperty: ActiveProperty;\n readonly options: CompactOptions;\n readonly result: JsonObject;\n readonly insideReverse: boolean;\n}\n\n/** The IRI compaction of a keyword (as a vocabulary term) in the active context. */\nconst aliasOf = (scope: Scope, keyword: string): string =>\n compactIri(scope.env, scope.active, keyword, null, true, false, scope.options);\n\n/** Steps 12.1 - 12.6: a keyword entry. Returns false for an entry they leave to 12.7. */\nconst compactKeywordEntry = (\n scope: Scope,\n expandedProperty: string,\n expandedValue: Json,\n): boolean => {\n const { env, active, activeProperty, options, result } = scope;\n // A refinement chain: this runs for every entry of every element compacted.\n if (expandedProperty === '@id') {\n // 12.1\n result[aliasOf(scope, '@id')] = isString(expandedValue)\n ? compactIri(env, active, expandedValue, null, false, false, options)\n : expandedValue;\n } else if (expandedProperty === '@type') {\n compactTypeEntry(scope, expandedValue);\n } else if (expandedProperty === '@reverse') {\n compactReverseEntry(scope, expandedValue);\n } else if (expandedProperty === '@preserve') {\n // 12.4\n const compactedValue = compactElement(env, active, activeProperty, expandedValue, options);\n if (!(Array.isArray(expandedValue) && Arr.isReadonlyArrayEmpty(expandedValue))) {\n result['@preserve'] = compactedValue;\n }\n } else if (expandedProperty === '@index') {\n // 12.5, 12.6\n if (!activeContainer(active, activeProperty).includes('@index')) {\n result[aliasOf(scope, expandedProperty)] = expandedValue;\n }\n } else if (\n expandedProperty === '@direction' ||\n expandedProperty === '@language' ||\n expandedProperty === '@value'\n ) {\n // 12.6\n result[aliasOf(scope, expandedProperty)] = expandedValue;\n } else {\n return false;\n }\n return true;\n};\n\n/** Step 12.2: `@type`. */\nconst compactTypeEntry = (scope: Scope, expandedValue: Json): void => {\n const { env, active, typeScoped, options, result } = scope;\n // A `@type` value that is not a string is an array of IRIs after expansion.\n const types: Array<string> = isString(expandedValue) ? [] : expandedValue;\n const compactedValue: Json = isString(expandedValue)\n ? compactIri(env, typeScoped, expandedValue, null, true, false, options)\n : types.map((t) => compactIri(env, typeScoped, t, null, true, false, options));\n const alias = aliasOf(scope, '@type');\n const asArr =\n (env.processingMode !== 'json-ld-1.0' && containerOf(active, alias).includes('@set')) ||\n !options.compactArrays;\n addValue(result, alias, compactedValue, asArr);\n if (!asArr && Array.isArray(result[alias]) && result[alias].length === 1) {\n result[alias] = result[alias][0];\n }\n};\n\n/** Step 12.3: `@reverse`. */\nconst compactReverseEntry = (scope: Scope, expandedValue: Json): void => {\n const { env, active, options, result } = scope;\n const compactedValue = compactElement(env, active, REVERSE_PROPERTY, expandedValue, options);\n Record.keys(compactedValue).forEach((property) => {\n const def = definitionOf(active, property);\n if (def?.reverse === true) {\n const asArr = def.container.includes('@set') || !options.compactArrays;\n addValue(result, property, compactedValue[property], asArr);\n delete compactedValue[property];\n }\n });\n if (Arr.isReadonlyArrayNonEmpty(Record.keys(compactedValue))) {\n result[aliasOf(scope, '@reverse')] = compactedValue;\n }\n};\n\n/** Steps 12.7 and 12.8: a property entry. */\nconst compactPropertyEntry = (\n scope: Scope,\n expandedProperty: string,\n expandedValue: Json,\n): void => {\n const { env, active, options, result, insideReverse } = scope;\n // 12.7\n if (Array.isArray(expandedValue) && Arr.isReadonlyArrayEmpty(expandedValue)) {\n const itemActiveProperty = compactIri(\n env,\n active,\n expandedProperty,\n expandedValue,\n true,\n insideReverse,\n options,\n );\n const nestResult = nestResultFor(env, active, result, itemActiveProperty, options);\n addValue(nestResult, itemActiveProperty, [], true);\n }\n // 12.8\n asArray(expandedValue).forEach((expandedItem) =>\n compactPropertyItem(scope, expandedProperty, expandedItem),\n );\n};\n\n/** Where step 12.8 puts one compacted item. */\ninterface ItemTarget {\n /** The item active property. */\n readonly property: string;\n readonly nestResult: JsonObject;\n readonly container: Array<string>;\n readonly asArr: boolean;\n}\n\n/** Step 12.8: one item of a property entry. */\nconst compactPropertyItem = (scope: Scope, expandedProperty: string, expandedItem: Json): void => {\n const { env, active, options, result, insideReverse } = scope;\n const property = compactIri(\n env,\n active,\n expandedProperty,\n expandedItem,\n true,\n insideReverse,\n options,\n );\n const container = containerOf(active, property);\n const target: ItemTarget = {\n property,\n nestResult: nestResultFor(env, active, result, property, options),\n container,\n asArr:\n container.includes('@set') ||\n property === '@graph' ||\n property === '@list' ||\n !options.compactArrays,\n };\n const inner = isListObject(expandedItem)\n ? expandedItem['@list']\n : isGraphObject(expandedItem)\n ? expandedItem['@graph']\n : expandedItem;\n const compactedItem = compactElement(env, active, Option.some(property), inner, options);\n if (isListObject(expandedItem)) compactListItem(scope, target, expandedItem, compactedItem);\n else if (isGraphObject(expandedItem)) {\n compactGraphItem(scope, target, expandedItem, compactedItem);\n } else if (\n (container.includes('@language') ||\n container.includes('@index') ||\n container.includes('@id') ||\n container.includes('@type')) &&\n !container.includes('@graph')\n ) {\n compactMapItem(scope, target, expandedItem, compactedItem);\n } else {\n // 12.8.10\n addValue(target.nestResult, property, compactedItem, target.asArr);\n }\n};\n\n/** Step 12.8.7: a list object. */\nconst compactListItem = (\n scope: Scope,\n target: ItemTarget,\n expandedItem: JsonObject,\n compacted: Json,\n): void => {\n const items = asArray(compacted);\n if (target.container.includes('@list')) {\n target.nestResult[target.property] = items;\n return;\n }\n const compactedItem: JsonObject = { [aliasOf(scope, '@list')]: items };\n if ('@index' in expandedItem) compactedItem[aliasOf(scope, '@index')] = expandedItem['@index'];\n addValue(target.nestResult, target.property, compactedItem, target.asArr);\n};\n\n/** Step 12.8.8: a graph object. */\nconst compactGraphItem = (\n scope: Scope,\n target: ItemTarget,\n expandedItem: JsonObject,\n compactedItem: Json,\n): void => {\n const { env, active, options } = scope;\n const { container, nestResult, property, asArr } = target;\n if (container.includes('@graph') && container.includes('@id')) {\n const mapObject: JsonObject = getOrInit(nestResult, property, () => ({}));\n const mapKey =\n '@id' in expandedItem\n ? compactIri(env, active, expandedItem['@id'], null, false, false, options)\n : aliasOf(scope, '@none');\n addValue(mapObject, mapKey, compactedItem, asArr);\n } else if (\n container.includes('@graph') &&\n container.includes('@index') &&\n isSimpleGraphObject(expandedItem)\n ) {\n const mapObject: JsonObject = getOrInit(nestResult, property, () => ({}));\n const mapKey = '@index' in expandedItem ? expandedItem['@index'] : aliasOf(scope, '@none');\n addValue(mapObject, mapKey, compactedItem, asArr);\n } else if (container.includes('@graph') && isSimpleGraphObject(expandedItem)) {\n const value =\n Array.isArray(compactedItem) && compactedItem.length > 1\n ? { [aliasOf(scope, '@included')]: compactedItem }\n : compactedItem;\n addValue(nestResult, property, value, asArr);\n } else {\n const value: JsonObject = { [aliasOf(scope, '@graph')]: compactedItem };\n if ('@id' in expandedItem) {\n value[aliasOf(scope, '@id')] = compactIri(\n env,\n active,\n expandedItem['@id'],\n null,\n false,\n false,\n options,\n );\n }\n if ('@index' in expandedItem) value[aliasOf(scope, '@index')] = expandedItem['@index'];\n addValue(nestResult, property, value, asArr);\n }\n};\n\n/** A compacted item and the key of the map entry it goes under (none: `@none`). */\ninterface MapEntry {\n readonly key: Json;\n readonly value: Json;\n}\n\n/** Step 12.8.9: an item of a language, index, id or type map. */\nconst compactMapItem = (\n scope: Scope,\n target: ItemTarget,\n expandedItem: JsonObject,\n compactedItem: Json,\n): void => {\n const { container, nestResult, property, asArr } = target;\n const mapObject: JsonObject = getOrInit(nestResult, property, () => ({}));\n const indexKey = definitionOf(scope.active, property)?.index ?? '@index';\n let entry: MapEntry;\n if (container.includes('@language') && '@value' in expandedItem) {\n entry = { key: expandedItem['@language'], value: expandedItem['@value'] };\n } else if (container.includes('@language')) {\n // Not a value object: read like a type map, under the `@language` alias.\n entry = typeMapEntry(scope, target, expandedItem, compactedItem, '@language');\n } else if (container.includes('@index') && indexKey === '@index') {\n entry = { key: expandedItem['@index'], value: compactedItem };\n } else if (container.includes('@index')) {\n entry = indexPropertyEntry(scope, indexKey, compactedItem);\n } else if (container.includes('@id')) {\n const idKey = aliasOf(scope, '@id');\n entry = { key: compactedItem[idKey], value: compactedItem };\n delete compactedItem[idKey];\n } else {\n entry = typeMapEntry(scope, target, expandedItem, compactedItem, '@type');\n }\n const key = entry.key === undefined || entry.key === null ? aliasOf(scope, '@none') : entry.key;\n addValue(mapObject, key, entry.value, asArr);\n};\n\n/** Step 12.8.9.8: an index map on a property (`@index` names a property). */\nconst indexPropertyEntry = (scope: Scope, indexKey: string, compactedItem: Json): MapEntry => {\n const { env, active } = scope;\n const containerKey =\n isObject(compactedItem) && hasOwn(compactedItem, indexKey)\n ? indexKey\n : aliasOf(scope, expandIri(env, active, indexKey, true) ?? indexKey);\n const values = isObject(compactedItem) ? asArray(compactedItem[containerKey] ?? []) : [];\n const key = Arr.isReadonlyArrayNonEmpty(values) && isString(values[0]) ? values[0] : undefined;\n if (key !== undefined) {\n const rest = values.slice(1);\n delete compactedItem[containerKey];\n if (Arr.isReadonlyArrayNonEmpty(rest)) addValue(compactedItem, containerKey, rest, false);\n }\n return { key, value: compactedItem };\n};\n\n/** Step 12.8.9.10: a type map (the map's keys are the values of `keyword`). */\nconst typeMapEntry = (\n scope: Scope,\n target: ItemTarget,\n expandedItem: JsonObject,\n compactedItem: Json,\n keyword: '@type' | '@language',\n): MapEntry => {\n const { env, active, options } = scope;\n const containerKey = aliasOf(scope, keyword);\n const values = asArray(compactedItem[containerKey] ?? []);\n const rest = values.slice(1);\n delete compactedItem[containerKey];\n if (Arr.isReadonlyArrayNonEmpty(rest)) addValue(compactedItem, containerKey, rest, false);\n if (rest.length === 1 && Array.isArray(compactedItem[containerKey])) {\n compactedItem[containerKey] = compactedItem[containerKey][0];\n }\n const remaining = Record.keys(compactedItem);\n const [only] = remaining;\n const onlyId =\n remaining.length === 1 &&\n only !== undefined &&\n expandIri(env, active, only, true) === '@id' &&\n '@id' in expandedItem;\n return {\n key: values[0],\n value: onlyId\n ? compactElement(\n env,\n active,\n Option.some(target.property),\n { '@id': expandedItem['@id'] },\n options,\n )\n : compactedItem,\n };\n};\n\nconst nestResultFor = (\n env: Env,\n active: ActiveContext,\n result: JsonObject,\n itemActiveProperty: string,\n options: CompactOptions,\n): JsonObject => {\n const nestTerm = definitionOf(active, itemActiveProperty)?.nest;\n if (nestTerm === undefined) return result;\n if (nestTerm !== '@nest' && expandIri(env, active, nestTerm, true) !== '@nest') {\n fail('invalid @nest value');\n }\n void options;\n if (!isObject(result[nestTerm])) result[nestTerm] = {};\n return result[nestTerm];\n};\n\n/** @internal */\nexport const containerOf = (active: ActiveContext, term: string): Array<string> =>\n definitionOf(active, term)?.container ?? [];\n\n/** The definition of the active property (none at the top level). */\nconst activeDefinition = (active: ActiveContext, activeProperty: ActiveProperty) =>\n Option.isNone(activeProperty) ? undefined : definitionOf(active, activeProperty.value);\n\n/** The container mapping of the active property (none at the top level). */\nconst activeContainer = (active: ActiveContext, activeProperty: ActiveProperty): Array<string> =>\n activeDefinition(active, activeProperty)?.container ?? [];\n\n/** Term definitions ordered by their term: shortest first, then lexicographically. */\nconst shortestTermFirst: Order.Order<readonly [string, TermDefinition]> = Order.mapInput(\n Order.combine(\n Order.mapInput(Order.Number, (term: string) => term.length),\n compareStrings,\n ),\n ([term]) => term,\n);\n\nconst emptyEntry = (term: string): ContainerEntry => {\n // Prototype-less records: a language or type value is never mistaken for an\n // `Object.prototype` member.\n const language: globalThis.Record<string, string> = Object.create(null);\n const type: globalThis.Record<string, string> = Object.create(null);\n return { '@language': language, '@type': type, '@any': { '@none': term } };\n};\n\n/**\n * Inverse Context Creation algorithm.\n *\n * @internal\n */\nexport const inverseContext = (active: ActiveContext): InverseContext => {\n if (active.inverse !== undefined) return active.inverse;\n const result: InverseContext = MutableHashMap.empty();\n const defaultLanguage = active.language !== undefined ? active.language.toLowerCase() : '@none';\n Arr.sort(active.terms, shortestTermFirst).forEach(([term, def]) => {\n const iri = def.iri;\n if (iri === null) return;\n const container = Arr.isReadonlyArrayEmpty(def.container)\n ? '@none'\n : Arr.sort(def.container, Order.String).join('');\n const containerMap = Option.getOrElse(MutableHashMap.get(result, iri), () => {\n const created: globalThis.Record<string, ContainerEntry> = Object.create(null);\n MutableHashMap.set(result, iri, created);\n return created;\n });\n const entry = containerMap[container] ?? emptyEntry(term);\n containerMap[container] = entry;\n const typeMap = entry['@type'];\n const languageMap = entry['@language'];\n if (def.reverse) {\n typeMap['@reverse'] ??= term;\n } else if (def.type === '@none') {\n languageMap['@any'] ??= term;\n typeMap['@any'] ??= term;\n } else if (def.type !== undefined) {\n typeMap[def.type] ??= term;\n } else if ('language' in def && 'direction' in def) {\n let langDir: string;\n if (def.language != null && def.direction != null) {\n langDir = `${def.language}_${def.direction}`.toLowerCase();\n } else if (def.language != null) {\n langDir = def.language.toLowerCase();\n } else if (def.direction != null) {\n langDir = `_${def.direction}`;\n } else {\n langDir = '@null';\n }\n languageMap[langDir] ??= term;\n } else if ('language' in def) {\n const language = def.language == null ? '@null' : def.language.toLowerCase();\n languageMap[language] ??= term;\n } else if ('direction' in def) {\n const direction = def.direction == null ? '@none' : `_${def.direction}`;\n languageMap[direction] ??= term;\n } else if (active.direction !== undefined) {\n const langDir =\n active.language !== undefined\n ? `${active.language}_${active.direction}`.toLowerCase()\n : `_${active.direction}`;\n languageMap[langDir] ??= term;\n languageMap['@none'] ??= term;\n typeMap['@none'] ??= term;\n } else {\n languageMap[defaultLanguage] ??= term;\n languageMap['@none'] ??= term;\n typeMap['@none'] ??= term;\n }\n });\n active.inverse = result;\n return result;\n};\n\nconst selectTerm = (\n containerMap: globalThis.Record<string, ContainerEntry>,\n containers: ReadonlyArray<string>,\n typeLanguage: '@type' | '@language' | '@any',\n preferredValues: ReadonlyArray<string>,\n): Option.Option<string> =>\n Arr.findFirst(containers, (container) => {\n const entry = containerMap[container];\n if (entry === undefined) return Option.none();\n const valueMap = entry[typeLanguage];\n return Arr.findFirst(preferredValues, (item) => Option.fromUndefinedOr(valueMap[item]));\n });\n\n/** The `_direction` suffix of a preferred language value (none without one). */\nconst directionSuffix = (pv: string): Array<string> => {\n const i = pv.indexOf('_');\n return i === -1 ? [] : [pv.slice(i)];\n};\n\n/** A compact IRI candidate is chosen when it is shorter (or as short and earlier) than the best. */\nconst isBetterCompactIri = (candidate: string, best: Option.Option<string>): boolean =>\n Option.isNone(best) ||\n candidate.length < best.value.length ||\n (candidate.length === best.value.length && candidate < best.value);\n\n/**\n * IRI Compaction algorithm.\n *\n * @internal\n */\nexport const compactIri = (\n env: Env,\n active: ActiveContext,\n iri: string,\n value: Json = null,\n vocab = false,\n reverse = false,\n options?: CompactOptions,\n): string => {\n // 1\n if (iri === null) return iri;\n // 2, 3\n const inverse = inverseContext(active);\n // 4\n const containerMap = vocab ? MutableHashMap.get(inverse, iri) : Option.none();\n if (Option.isSome(containerMap)) {\n const defaultLanguage =\n active.direction !== undefined\n ? `${active.language ?? ''}_${active.direction}`.toLowerCase()\n : active.language !== undefined\n ? active.language.toLowerCase()\n : '@none';\n if (isObject(value) && '@preserve' in value) value = asArray(value['@preserve'])[0];\n const containers: Array<string> = [];\n let typeLanguage: '@type' | '@language' | '@any' = '@language';\n let typeLanguageValue = '@null';\n if (isObject(value) && '@index' in value && !isGraphObject(value)) {\n containers.push('@index', '@index@set');\n }\n if (reverse) {\n typeLanguage = '@type';\n typeLanguageValue = '@reverse';\n containers.push('@set');\n } else if (isListObject(value)) {\n if (!('@index' in value)) containers.push('@list');\n const list: Array<Json> = value['@list'];\n // An empty list has the default language and no common type.\n let commonType = '@none';\n let commonLanguage = defaultLanguage;\n // Stops once neither a common language nor a common type remains.\n list.every((item, i) => {\n let itemLanguage = '@none';\n let itemType = '@none';\n if (isValueObject(item)) {\n if ('@direction' in item) {\n itemLanguage = `${item['@language'] ?? ''}_${item['@direction']}`.toLowerCase();\n } else if ('@language' in item) {\n itemLanguage = String(item['@language']).toLowerCase();\n } else if ('@type' in item) {\n itemType = item['@type'];\n } else {\n itemLanguage = '@null';\n }\n } else {\n itemType = '@id';\n }\n if (i === 0) {\n commonLanguage = itemLanguage;\n commonType = itemType;\n } else {\n if (itemLanguage !== commonLanguage && isValueObject(item)) commonLanguage = '@none';\n if (itemType !== commonType) commonType = '@none';\n }\n return !(commonLanguage === '@none' && commonType === '@none');\n });\n if (commonType !== '@none') {\n typeLanguage = '@type';\n typeLanguageValue = commonType;\n } else {\n typeLanguageValue = commonLanguage;\n }\n } else if (isGraphObject(value)) {\n if ('@index' in value) containers.push('@graph@index', '@graph@index@set');\n if ('@id' in value) containers.push('@graph@id', '@graph@id@set');\n containers.push('@graph', '@graph@set', '@set');\n if (!('@index' in value)) containers.push('@graph@index', '@graph@index@set');\n if (!('@id' in value)) containers.push('@graph@id', '@graph@id@set');\n containers.push('@index', '@index@set');\n typeLanguage = '@type';\n typeLanguageValue = '@id';\n } else {\n if (isValueObject(value)) {\n if ('@direction' in value && !('@index' in value)) {\n typeLanguageValue = `${value['@language'] ?? ''}_${value['@direction']}`.toLowerCase();\n containers.push('@language', '@language@set');\n } else if ('@language' in value && !('@index' in value)) {\n typeLanguageValue = String(value['@language']).toLowerCase();\n containers.push('@language', '@language@set');\n } else if ('@type' in value) {\n typeLanguageValue = value['@type'] ?? '@null';\n typeLanguage = '@type';\n }\n } else {\n typeLanguage = '@type';\n typeLanguageValue = '@id';\n containers.push('@id', '@id@set', '@type', '@set@type');\n }\n containers.push('@set');\n }\n containers.push('@none');\n if (env.processingMode !== 'json-ld-1.0' && (!isObject(value) || !('@index' in value))) {\n containers.push('@index', '@index@set');\n }\n if (\n env.processingMode !== 'json-ld-1.0' &&\n isObject(value) &&\n Record.keys(value).length === 1 &&\n '@value' in value\n ) {\n containers.push('@language', '@language@set');\n }\n const preferredValues: Array<string> = [];\n if (typeLanguageValue === '@reverse') preferredValues.push('@reverse');\n if (\n (typeLanguageValue === '@id' || typeLanguageValue === '@reverse') &&\n isObject(value) &&\n '@id' in value\n ) {\n const compactedId = compactIri(env, active, value['@id'], null, true, false, options);\n if (definitionOf(active, compactedId)?.iri === value['@id']) {\n preferredValues.push('@vocab', '@id', '@none');\n } else {\n preferredValues.push('@id', '@vocab', '@none');\n }\n } else {\n preferredValues.push(typeLanguageValue, '@none');\n if (isListObject(value) && Arr.isReadonlyArrayEmpty(value['@list'])) typeLanguage = '@any';\n }\n preferredValues.push('@any');\n pushAll(preferredValues, preferredValues.flatMap(directionSuffix));\n const term = selectTerm(containerMap.value, containers, typeLanguage, preferredValues);\n if (Option.isSome(term)) return term.value;\n }\n // 5\n if (vocab && active.vocab !== undefined) {\n if (iri.startsWith(active.vocab) && iri.length > active.vocab.length) {\n const suffix = iri.slice(active.vocab.length);\n if (!MutableHashMap.has(active.terms, suffix)) return suffix;\n }\n }\n // 6, 7\n let compactIriResult = Option.none<string>();\n MutableHashMap.forEach(active.terms, (def, term) => {\n const prefixIri = def.iri;\n if (prefixIri === null || prefixIri === iri || !iri.startsWith(prefixIri) || !def.prefix) {\n return;\n }\n const candidate = `${term}:${iri.slice(prefixIri.length)}`;\n const candidateDef = definitionOf(active, candidate);\n if (\n isBetterCompactIri(candidate, compactIriResult) &&\n (candidateDef === undefined || (candidateDef.iri === iri && value === null))\n ) {\n compactIriResult = Option.some(candidate);\n }\n });\n // 8\n if (Option.isSome(compactIriResult)) return compactIriResult.value;\n // 9\n const colon = iri.indexOf(':');\n if (colon > 0) {\n const scheme = iri.slice(0, colon);\n const def = definitionOf(active, scheme);\n if (def !== undefined && def.prefix && !iri.slice(colon + 1).startsWith('//')) {\n fail('IRI confused with prefix', iri);\n }\n }\n // 10\n if (!vocab && (options?.compactToRelative ?? true)) {\n return removeBase(active.base, iri);\n }\n // 11\n return iri;\n};\n\n/**\n * Value Compaction algorithm.\n *\n * @internal\n */\nexport const compactValue = (\n env: Env,\n active: ActiveContext,\n activeProperty: ActiveProperty,\n value: JsonObject,\n options: CompactOptions,\n): Json => {\n const def = activeDefinition(active, activeProperty);\n const container = def?.container ?? [];\n const typeMapping = def?.type;\n const language = def !== undefined && 'language' in def ? def.language : active.language;\n const direction = def !== undefined && 'direction' in def ? def.direction : active.direction;\n const keys = Record.keys(value);\n // 6\n if ('@id' in value) {\n if (keys.every((k) => k === '@id' || k === '@index')) {\n const indexOk = !('@index' in value) || container.includes('@index');\n if (indexOk && typeMapping === '@id') {\n return compactIri(env, active, value['@id'], null, false, false, options);\n }\n if (indexOk && typeMapping === '@vocab') {\n return compactIri(env, active, value['@id'], null, true, false, options);\n }\n }\n return value;\n }\n const preserveIndex = '@index' in value && !container.includes('@index');\n if (!preserveIndex) {\n if ('@type' in value && value['@type'] === typeMapping) return value['@value'];\n if (typeMapping === '@none' || '@type' in value) {\n // value compaction disabled\n } else if (!isString(value['@value'])) {\n if (!('@language' in value) && !('@direction' in value)) return value['@value'];\n } else {\n const langMatch =\n '@language' in value\n ? language != null && String(value['@language']).toLowerCase() === language.toLowerCase()\n : language == null;\n const dirMatch =\n '@direction' in value ? value['@direction'] === direction : direction == null;\n if (langMatch && dirMatch) return value['@value'];\n }\n }\n const result: JsonObject = {};\n keys.forEach((key) => {\n if (key === '@index' && !preserveIndex) return;\n const alias = compactIri(env, active, key, null, true, false, options);\n result[alias] =\n key === '@type'\n ? compactIri(env, active, value[key], null, true, false, options)\n : value[key];\n });\n return result;\n};\n","/**\n * Expansion Algorithm (JSON-LD 1.1 API §5.1).\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport * as Record from 'effect/Record';\nimport {\n type ActiveContext,\n applyTypeScopedContexts,\n type Env,\n expandIri,\n processContext,\n scopedTermOf,\n termOf,\n} from './context.ts';\nimport {\n type Json,\n type JsonObject,\n asArray,\n compareStrings,\n fail,\n isAbsoluteIri,\n isBlankNodeId,\n isEmptyObject,\n isGraphObject,\n isKeyword,\n isListObject,\n isObject,\n isScalar,\n isString,\n isValueObject,\n getOrInit,\n hasOwn,\n pushAll,\n type ActiveProperty,\n GRAPH_PROPERTY,\n REVERSE_PROPERTY,\n isProperty,\n isTopLevel,\n stringifyJson,\n} from './util.ts';\n\n/** A frame-expansion `@language` / `@direction` value: `{}` or an array of strings. */\nconst isFrameStringValue = (value: Json): boolean =>\n isEmptyObject(value) || (Array.isArray(value) && value.every(isString));\n\n/** @internal */\nexport interface ExpandOptions {\n readonly frameExpansion: boolean;\n readonly ordered: boolean;\n}\n\n/** @internal */\nexport const expandElement = (\n env: Env,\n active: ActiveContext,\n activeProperty: ActiveProperty,\n element: Json,\n baseUrl: string | null,\n options: ExpandOptions,\n fromMap = false,\n): Json => {\n // 1\n if (element === null || element === undefined) return null;\n // 2\n if (isProperty(activeProperty, '@default')) options = { ...options, frameExpansion: false };\n // 3\n const propDef = Option.isNone(activeProperty)\n ? Option.none()\n : termOf(active, activeProperty.value);\n const propertyScoped = Option.filter(propDef, (def) => def.hasContext);\n // 4\n if (isScalar(element)) {\n if (Option.isNone(activeProperty) || activeProperty.value === '@graph') return null;\n if (Option.isSome(propertyScoped)) {\n const def = propertyScoped.value;\n active = processContext(env, active, def.context, def.baseUrl ?? null);\n }\n return expandValue(env, active, activeProperty.value, element);\n }\n // 5\n if (Array.isArray(element)) {\n const result: Array<Json> = [];\n const isList = Option.isSome(propDef) && propDef.value.container.includes('@list');\n element.forEach((item) => {\n const expanded = expandElement(env, active, activeProperty, item, baseUrl, options, fromMap);\n if (Array.isArray(expanded)) {\n if (isList) result.push({ '@list': expanded });\n else pushAll(result, expanded);\n } else if (expanded !== null) result.push(expanded);\n });\n return result;\n }\n // 6\n if (!isObject(element)) fail('invalid local context');\n // 7\n if (active.previous !== undefined && !fromMap) {\n const keys = Record.keys(element);\n const keep = keys.some((key) => {\n const exp = expandIri(env, active, key, true);\n return exp === '@value' || (keys.length === 1 && exp === '@id');\n });\n if (!keep) active = active.previous;\n }\n // 8\n if (Option.isSome(propertyScoped)) {\n const def = propertyScoped.value;\n active = processContext(env, active, def.context, def.baseUrl ?? null, [], true);\n }\n // 9\n if ('@context' in element) {\n active = processContext(env, active, element['@context'], baseUrl);\n }\n // 10\n const typeScoped = active;\n // 11\n const keys = Arr.sort(Record.keys(element), compareStrings);\n keys.forEach((key) => {\n if (expandIri(env, active, key, true) !== '@type') return;\n const values = asArray(element[key]);\n active = applyTypeScopedContexts(\n env,\n active,\n typeScoped,\n Arr.sort(Arr.filter(values, isString), compareStrings),\n );\n });\n // 12\n const typeKey = keys.find((key) => expandIri(env, active, key, true) === '@type');\n const lastType = typeKey === undefined ? undefined : asArray(element[typeKey]).at(-1);\n const inputIsJson = isString(lastType) && expandIri(env, active, lastType, true) === '@json';\n // 13, 14\n const result: JsonObject = {};\n expandObject(\n env,\n active,\n typeScoped,\n activeProperty,\n element,\n result,\n inputIsJson,\n baseUrl,\n options,\n );\n // 15\n if ('@value' in result) {\n const extra = Record.keys(result).find(\n (k) =>\n k !== '@direction' &&\n k !== '@index' &&\n k !== '@language' &&\n k !== '@type' &&\n k !== '@value',\n );\n if (extra !== undefined) fail('invalid value object', extra);\n if ('@type' in result && ('@language' in result || '@direction' in result)) {\n fail('invalid value object');\n }\n const type = result['@type'];\n if (type === '@json') {\n // any value\n } else {\n const v = result['@value'];\n if (v === null || (Array.isArray(v) && Arr.isReadonlyArrayEmpty(v))) return null;\n if (!isString(v) && '@language' in result) {\n if (!options.frameExpansion) fail('invalid language-tagged value');\n }\n if ('@type' in result) {\n if (options.frameExpansion) {\n // frames may use wildcards and arrays\n } else if (!isString(type) || !isAbsoluteIri(type) || isBlankNodeId(type)) {\n fail('invalid typed value');\n }\n }\n }\n } else if ('@type' in result) {\n // 16\n if (!Array.isArray(result['@type'])) result['@type'] = [result['@type']];\n } else if ('@set' in result || '@list' in result) {\n // 17\n const n = Record.keys(result).length;\n if (n > 2 || (n === 2 && !('@index' in result))) fail('invalid set or list object');\n if ('@set' in result) {\n const set = result['@set'];\n return finalize(set, activeProperty, options);\n }\n }\n return finalize(result, activeProperty, options);\n};\n\nconst finalize = (result: Json, activeProperty: ActiveProperty, options: ExpandOptions): Json => {\n // 18\n if (isObject(result)) {\n const keys = Record.keys(result);\n if (keys.length === 1 && keys[0] === '@language') return null;\n // 19 (free-floating nodes are kept in frames)\n if (!options.frameExpansion && isTopLevel(activeProperty)) {\n if (Arr.isReadonlyArrayEmpty(keys) || '@value' in result || '@list' in result) return null;\n if (keys.length === 1 && keys[0] === '@id') return null;\n }\n }\n return result;\n};\n\ntype ExpandObjectArguments = Parameters<typeof expandObject>;\n\n/** What a keyword's expansion reads from the object being expanded (13.4). */\ninterface KeywordScope {\n readonly env: Env;\n readonly active: ActiveContext;\n readonly typeScoped: ActiveContext;\n readonly activeProperty: ExpandObjectArguments[3];\n readonly result: JsonObject;\n /** The object's last `@type` expands to `@json`. */\n readonly inputIsJson: ExpandObjectArguments[6];\n readonly baseUrl: ExpandObjectArguments[7];\n readonly options: ExpandOptions;\n readonly nests: Array<string>;\n}\n\n// Built once: runs for every keyword key of every object (13.4). It returns the expanded value\n// to store under the keyword, or `undefined` when there is nothing to store.\nconst expandKeyword = Match.fn(\n (expandedProperty: string, _key: string, _value: Json, _kw: KeywordScope) => expandedProperty,\n).pipe(\n Match.withReturnType<Json>(),\n Match.when('@id', (_p, _ep, _key, value, kw) => {\n if (isString(value)) return expandIri(kw.env, kw.active, value, false, true);\n if (kw.options.frameExpansion && isEmptyObject(value)) return [value];\n if (kw.options.frameExpansion && Array.isArray(value) && value.every(isString)) {\n return value.map((v) => expandIri(kw.env, kw.active, v, false, true));\n }\n return fail('invalid @id value', stringifyJson(value));\n }),\n Match.when('@type', (_p, _ep, _key, value, kw) => {\n let expandedValue: Json = undefined;\n if (kw.options.frameExpansion && isEmptyObject(value)) {\n expandedValue = value;\n } else if (\n kw.options.frameExpansion &&\n isObject(value) &&\n '@default' in value &&\n Record.keys(value).length === 1\n ) {\n expandedValue = {\n '@default': expandIri(kw.env, kw.typeScoped, value['@default'], true, true),\n };\n } else if (isString(value)) {\n expandedValue = expandIri(kw.env, kw.typeScoped, value, true, true);\n } else if (Array.isArray(value) && value.every(isString)) {\n expandedValue = value.map((v) => expandIri(kw.env, kw.typeScoped, v, true, true));\n } else {\n fail('invalid type value', stringifyJson(value));\n }\n if ('@type' in kw.result) {\n expandedValue = [...asArray(kw.result['@type']), ...asArray(expandedValue)];\n }\n return expandedValue;\n }),\n Match.when('@graph', (_p, _ep, _key, value, kw) =>\n asArray(expandElement(kw.env, kw.active, GRAPH_PROPERTY, value, kw.baseUrl, kw.options)),\n ),\n Match.when('@included', (_p, _ep, _key, value, kw) => {\n if (kw.env.processingMode === 'json-ld-1.0') return undefined;\n const expandedValue = asArray(\n expandElement(kw.env, kw.active, kw.activeProperty, value, kw.baseUrl, kw.options),\n );\n if (expandedValue.some((v) => !isObject(v) || '@value' in v || '@list' in v || '@set' in v)) {\n fail('invalid @included value');\n }\n return '@included' in kw.result ? [...kw.result['@included'], ...expandedValue] : expandedValue;\n }),\n Match.when('@value', (_p, _ep, _key, value, kw) => {\n let expandedValue: Json = undefined;\n if (kw.inputIsJson) {\n if (kw.env.processingMode === 'json-ld-1.0') fail('invalid value object value');\n expandedValue = value;\n } else if (value === null || isScalar(value)) {\n expandedValue = value;\n } else if (\n kw.options.frameExpansion &&\n (isEmptyObject(value) || (Array.isArray(value) && value.every(isScalar)))\n ) {\n expandedValue = value;\n } else {\n fail('invalid value object value');\n }\n if (expandedValue === null) {\n kw.result['@value'] = null;\n return undefined;\n }\n return expandedValue;\n }),\n Match.when('@language', (_p, _ep, _key, value, kw) => {\n if (isString(value)) return value;\n if (kw.options.frameExpansion && isFrameStringValue(value)) return value;\n return fail('invalid language-tagged string');\n }),\n Match.when('@direction', (_p, _ep, _key, value, kw) => {\n if (kw.env.processingMode === 'json-ld-1.0') return undefined;\n if (value === 'ltr' || value === 'rtl') return value;\n if (kw.options.frameExpansion && isFrameStringValue(value)) return value;\n return fail('invalid base direction');\n }),\n Match.when('@index', (_p, _ep, _key, value) => {\n if (!isString(value)) fail('invalid @index value');\n return value;\n }),\n Match.when('@list', (_p, _ep, _key, value, kw) => {\n if (isTopLevel(kw.activeProperty)) return undefined;\n const expandedValue = asArray(\n expandElement(kw.env, kw.active, kw.activeProperty, value, kw.baseUrl, kw.options),\n );\n if (kw.env.processingMode === 'json-ld-1.0' && expandedValue.some(isListObject)) {\n fail('list of lists');\n }\n return expandedValue;\n }),\n Match.when('@set', (_p, _ep, _key, value, kw) =>\n expandElement(kw.env, kw.active, kw.activeProperty, value, kw.baseUrl, kw.options),\n ),\n Match.when('@reverse', (_p, _ep, _key, value, kw) => {\n if (!isObject(value)) fail('invalid @reverse value');\n const ev = expandElement(kw.env, kw.active, REVERSE_PROPERTY, value, kw.baseUrl, kw.options);\n if (isObject(ev)) {\n if ('@reverse' in ev) {\n // An expanded `@reverse` value is a JSON object of reverse properties.\n const reversed: JsonObject = ev['@reverse'];\n Record.keys(reversed).forEach((property) => {\n if (!hasOwn(kw.result, property)) kw.result[property] = [];\n pushAll(kw.result[property], asArray(reversed[property]));\n });\n }\n const others = Record.keys(ev).filter((k) => k !== '@reverse');\n if (Arr.isReadonlyArrayNonEmpty(others)) {\n const reverseMap: JsonObject = getOrInit(kw.result, '@reverse', () => ({}));\n others.forEach((property) =>\n asArray(ev[property]).forEach((item) => {\n if (isValueObject(item) || isListObject(item)) {\n fail('invalid reverse property value');\n }\n getOrInit(reverseMap, property, () => []).push(item);\n }),\n );\n }\n }\n return undefined;\n }),\n Match.when('@nest', (_p, _ep, key, _value, kw) => {\n kw.nests.push(key);\n return undefined;\n }),\n Match.when('@default', (_p, _ep, _key, value, kw) =>\n kw.options.frameExpansion\n ? expandElement(kw.env, kw.active, kw.activeProperty, value, kw.baseUrl, kw.options)\n : undefined,\n ),\n Match.when(\n Match.is('@embed', '@explicit', '@omitDefault', '@requireAll'),\n (_p, _ep, _key, value, kw) => (kw.options.frameExpansion ? asArray(value) : undefined),\n ),\n Match.orElse(() => undefined),\n);\n\nconst expandObject = (\n env: Env,\n active: ActiveContext,\n typeScoped: ActiveContext,\n activeProperty: ActiveProperty,\n element: JsonObject,\n result: JsonObject,\n inputIsJson: boolean,\n baseUrl: string | null,\n options: ExpandOptions,\n): void => {\n const nests: Array<string> = [];\n const scope: KeywordScope = {\n env,\n active,\n typeScoped,\n activeProperty,\n result,\n inputIsJson,\n baseUrl,\n options,\n nests,\n };\n const keys = options.ordered\n ? Arr.sort(Record.keys(element), compareStrings)\n : Record.keys(element);\n keys.forEach((key) => {\n const value = element[key];\n // 13.1\n if (key === '@context') return;\n // 13.2\n const expandedProperty = expandIri(env, active, key, true);\n // 13.3\n if (\n expandedProperty === null ||\n (!expandedProperty.includes(':') && !isKeyword(expandedProperty))\n ) {\n return;\n }\n // 13.4\n if (isKeyword(expandedProperty)) {\n if (isProperty(activeProperty, '@reverse')) fail('invalid reverse property map');\n if (\n hasOwn(result, expandedProperty) &&\n expandedProperty !== '@included' &&\n expandedProperty !== '@type'\n ) {\n fail('colliding keywords', expandedProperty);\n }\n if (\n expandedProperty in result &&\n expandedProperty === '@type' &&\n env.processingMode === 'json-ld-1.0'\n ) {\n fail('colliding keywords', expandedProperty);\n }\n const expandedValue = expandKeyword(expandedProperty, key, value, scope);\n if (expandedValue !== undefined) result[expandedProperty] = expandedValue;\n return;\n }\n // 13.5\n const def = termOf(active, key);\n const container = Option.isSome(def) ? def.value.container : [];\n let expandedValue: Json;\n if (Option.isSome(def) && def.value.type === '@json') {\n // 13.6\n expandedValue = { '@value': value, '@type': '@json' };\n } else if (container.includes('@language') && isObject(value)) {\n // 13.7\n const values: Array<Json> = [];\n expandedValue = values;\n const direction =\n Option.isSome(def) && 'direction' in def.value ? def.value.direction : active.direction;\n const langs = options.ordered\n ? Arr.sort(Record.keys(value), compareStrings)\n : Record.keys(value);\n langs.forEach((language) =>\n asArray(value[language]).forEach((item) => {\n if (item === null) return;\n if (!isString(item)) fail('invalid language map value');\n const v: JsonObject = { '@value': item, '@language': language };\n if (language === '@none' || expandIri(env, active, language, true) === '@none') {\n delete v['@language'];\n }\n if (direction !== null && direction !== undefined) v['@direction'] = direction;\n values.push(v);\n }),\n );\n } else if (\n (container.includes('@index') || container.includes('@type') || container.includes('@id')) &&\n isObject(value)\n ) {\n // 13.8\n const values: Array<Json> = [];\n expandedValue = values;\n const indexKey = Option.isSome(def) ? (def.value.index ?? '@index') : '@index';\n const indexes = options.ordered\n ? Arr.sort(Record.keys(value), compareStrings)\n : Record.keys(value);\n indexes.forEach((index) => {\n let mapContext: ActiveContext = active;\n if (container.includes('@type')) {\n mapContext = active.previous ?? active;\n const indexDef = scopedTermOf(mapContext, index);\n if (Option.isSome(indexDef)) {\n mapContext = processContext(\n env,\n mapContext,\n indexDef.value.context,\n indexDef.value.baseUrl ?? null,\n );\n }\n }\n const expandedIndex = expandIri(env, active, index, true);\n const indexValue = asArray(\n expandElement(\n env,\n mapContext,\n Option.some(key),\n asArray(value[index]),\n baseUrl,\n options,\n true,\n ),\n );\n indexValue.forEach((expandedItem) => {\n const item =\n container.includes('@graph') && !isGraphObject(expandedItem)\n ? { '@graph': asArray(expandedItem) }\n : expandedItem;\n if (container.includes('@index') && indexKey !== '@index' && expandedIndex !== '@none') {\n const reExpanded = expandValue(env, active, indexKey, index);\n const expandedIndexKey = expandIri(env, active, indexKey, true) ?? indexKey;\n const existing = hasOwn(item, expandedIndexKey) ? asArray(item[expandedIndexKey]) : [];\n item[expandedIndexKey] = [reExpanded, ...existing];\n if (isValueObject(item) && Record.keys(item).length > 1) {\n fail('invalid value object');\n }\n } else if (\n container.includes('@index') &&\n !('@index' in item) &&\n expandedIndex !== '@none'\n ) {\n item['@index'] = index;\n } else if (container.includes('@id') && !('@id' in item) && expandedIndex !== '@none') {\n item['@id'] = expandIri(env, active, index, false, true);\n } else if (container.includes('@type') && expandedIndex !== '@none') {\n item['@type'] = [expandedIndex, ...(item['@type'] ? asArray(item['@type']) : [])];\n }\n values.push(item);\n });\n });\n } else {\n // 13.9\n expandedValue = expandElement(env, active, Option.some(key), value, baseUrl, options);\n }\n // 13.10\n if (expandedValue === null) return;\n // 13.11\n if (container.includes('@list') && !isListObject(expandedValue)) {\n expandedValue = { '@list': asArray(expandedValue) };\n }\n // 13.12\n if (\n container.includes('@graph') &&\n !container.includes('@id') &&\n !container.includes('@index')\n ) {\n expandedValue = asArray(expandedValue).map((ev) => ({ '@graph': asArray(ev) }));\n }\n // 13.13\n if (Option.isSome(def) && def.value.reverse) {\n const reverseMap: JsonObject = getOrInit(result, '@reverse', () => ({}));\n asArray(expandedValue).forEach((item) => {\n if (isValueObject(item) || isListObject(item)) fail('invalid reverse property value');\n getOrInit(reverseMap, expandedProperty, () => []).push(item);\n });\n } else {\n // 13.14\n pushAll(\n getOrInit(result, expandedProperty, () => []),\n asArray(expandedValue),\n );\n }\n });\n // 14\n const nestKeys = options.ordered ? Arr.sort(nests, compareStrings) : nests;\n nestKeys.forEach((nestKey) =>\n asArray(element[nestKey]).forEach((nested) => {\n if (!isObject(nested)) fail('invalid @nest value');\n if (Record.keys(nested).some((k) => expandIri(env, active, k, true) === '@value')) {\n fail('invalid @nest value');\n }\n const nestContext = Option.match(scopedTermOf(active, nestKey), {\n onNone: () => active,\n onSome: (nestDef) =>\n processContext(env, active, nestDef.context, nestDef.baseUrl ?? null, [], true),\n });\n expandObject(\n env,\n nestContext,\n typeScoped,\n activeProperty,\n nested,\n result,\n inputIsJson,\n baseUrl,\n options,\n );\n }),\n );\n};\n\n/**\n * Value Expansion algorithm.\n *\n * @internal\n */\nexport const expandValue = (\n env: Env,\n active: ActiveContext,\n activeProperty: string,\n value: Json,\n): JsonObject => {\n const def = Option.getOrNull(termOf(active, activeProperty));\n const type = def === null ? undefined : def.type;\n // 1, 2\n if (type === '@id' && isString(value)) {\n return { '@id': expandIri(env, active, value, false, true) };\n }\n if (type === '@vocab' && isString(value)) {\n return { '@id': expandIri(env, active, value, true, true) };\n }\n // 3\n const result: JsonObject = { '@value': value };\n // 4\n if (type !== undefined && type !== '@id' && type !== '@vocab' && type !== '@none') {\n result['@type'] = type;\n } else if (isString(value)) {\n // 5\n const language = def !== null && 'language' in def ? def.language : active.language;\n const direction = def !== null && 'direction' in def ? def.direction : active.direction;\n if (language !== null && language !== undefined) result['@language'] = language;\n if (direction !== null && direction !== undefined) result['@direction'] = direction;\n }\n return result;\n};\n","/**\n * Node Map Generation and Flattening (JSON-LD 1.1 API §7).\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as Option from 'effect/Option';\nimport * as Record from 'effect/Record';\nimport {\n type Json,\n type JsonObject,\n IdIssuer,\n addUnique,\n asArray,\n compareStrings,\n deepEqual,\n fail,\n isBlankNodeId,\n isListObject,\n isObject,\n isValueObject,\n getOrInit,\n hasOwn,\n} from './util.ts';\n\n/** @internal */\nexport type NodeMap = globalThis.Record<string, globalThis.Record<string, JsonObject>>;\n\n/**\n * Adds `item` to the active list or, outside a list, to the active property\n * of the active subject (once, when `unique`).\n */\nconst addToTarget = (\n graph: globalThis.Record<string, JsonObject>,\n activeSubject: Option.Option<string | JsonObject>,\n activeProperty: Option.Option<string>,\n list: Option.Option<JsonObject>,\n item: Json,\n unique: boolean,\n): void => {\n if (Option.isSome(list)) {\n list.value['@list'].push(item);\n return;\n }\n if (Option.isNone(activeSubject) || Option.isNone(activeProperty)) return;\n const subject = activeSubject.value;\n if (isObject(subject)) return;\n const values: Array<Json> = getOrInit(graph[subject] ?? {}, activeProperty.value, () => []);\n if (unique) addUnique(values, item);\n else values.push(item);\n};\n\n/**\n * Node Map Generation algorithm.\n *\n * @internal\n */\nexport const generateNodeMap = (\n element: Json,\n nodeMap: NodeMap,\n issuer: IdIssuer,\n activeGraph = '@default',\n activeSubject: Option.Option<string | JsonObject> = Option.none(),\n activeProperty: Option.Option<string> = Option.none(),\n list: Option.Option<JsonObject> = Option.none(),\n): void => {\n // 1\n if (Array.isArray(element)) {\n element.forEach((item) =>\n generateNodeMap(item, nodeMap, issuer, activeGraph, activeSubject, activeProperty, list),\n );\n return;\n }\n // 2\n const graph: globalThis.Record<string, JsonObject> = getOrInit(nodeMap, activeGraph, () => ({}));\n // 3\n if ('@type' in element) {\n const type = element['@type'];\n element['@type'] = Array.isArray(type)\n ? type.map((t: string) => (isBlankNodeId(t) ? issuer.issue(t) : t))\n : isBlankNodeId(type)\n ? issuer.issue(type)\n : type;\n }\n // 4\n if (isValueObject(element)) {\n addToTarget(graph, activeSubject, activeProperty, list, element, true);\n return;\n }\n // 5\n if (isListObject(element)) {\n const result: JsonObject = { '@list': [] };\n generateNodeMap(\n element['@list'],\n nodeMap,\n issuer,\n activeGraph,\n activeSubject,\n activeProperty,\n Option.some(result),\n );\n addToTarget(graph, activeSubject, activeProperty, list, result, false);\n return;\n }\n // 6\n let id: string;\n if ('@id' in element) {\n id = element['@id'];\n // A node whose @id expanded to null (e.g. an ignored keyword-like IRI)\n // cannot be identified and is dropped.\n if (id === null) return;\n if (isBlankNodeId(id)) id = issuer.issue(id);\n } else {\n id = issuer.issue();\n }\n const node: JsonObject = getOrInit(graph, id, () => ({ '@id': id }));\n // 6.5\n if (Option.isSome(activeSubject) && isObject(activeSubject.value)) {\n if (Option.isSome(activeProperty)) {\n const values: Array<Json> = getOrInit(node, activeProperty.value, () => []);\n addUnique(values, activeSubject.value);\n }\n } else if (Option.isSome(activeProperty)) {\n // 6.6\n addToTarget(graph, activeSubject, activeProperty, list, { '@id': id }, true);\n }\n // 6.7\n if ('@type' in element) {\n const types: Array<Json> = getOrInit(node, '@type', () => []);\n asArray(element['@type']).forEach((t) => {\n if (!types.includes(t)) types.push(t);\n });\n }\n // 6.8\n if ('@index' in element) {\n if ('@index' in node && node['@index'] !== element['@index']) fail('conflicting indexes');\n node['@index'] = element['@index'];\n }\n // 6.9\n if ('@reverse' in element) {\n const referenced = Option.some({ '@id': id });\n const reverseMap: JsonObject = element['@reverse'];\n Record.keys(reverseMap).forEach((property) => {\n const reverseProperty = Option.some(property);\n asArray(reverseMap[property]).forEach((value) =>\n generateNodeMap(value, nodeMap, issuer, activeGraph, referenced, reverseProperty),\n );\n });\n }\n // 6.10\n if ('@graph' in element) {\n generateNodeMap(element['@graph'], nodeMap, issuer, id);\n }\n // 6.11\n if ('@included' in element) {\n generateNodeMap(element['@included'], nodeMap, issuer, activeGraph);\n }\n // 6.12\n const subject = Option.some(id);\n Arr.sort(Record.keys(element), compareStrings).forEach((key) => {\n if (\n key === '@id' ||\n key === '@type' ||\n key === '@index' ||\n key === '@reverse' ||\n key === '@graph' ||\n key === '@included'\n ) {\n return;\n }\n const property = isBlankNodeId(key) ? issuer.issue(key) : key;\n if (!hasOwn(node, property)) node[property] = [];\n generateNodeMap(element[key], nodeMap, issuer, activeGraph, subject, Option.some(property));\n });\n};\n\n/** The nodes of a graph that say more than their `@id`, in key order (sorted when `ordered`). */\nconst nodesOf = (\n graph: globalThis.Record<string, JsonObject>,\n ordered: boolean,\n): Array<JsonObject> => {\n const ids = ordered ? Arr.sort(Record.keys(graph), compareStrings) : Record.keys(graph);\n const nodes: Array<JsonObject> = [];\n ids.forEach((id) => {\n const node = graph[id];\n if (node !== undefined && !isOnlyId(node)) nodes.push(node);\n });\n return nodes;\n};\n\n/**\n * Flattening algorithm (without the final compaction).\n *\n * @internal\n */\nexport const flattenExpanded = (expanded: Json, ordered: boolean): Array<JsonObject> => {\n const defaultGraph: globalThis.Record<string, JsonObject> = {};\n const nodeMap: NodeMap = { '@default': defaultGraph };\n generateNodeMap(expanded, nodeMap, new IdIssuer());\n const named = Record.keys(nodeMap).filter((g) => g !== '@default');\n const graphNames = ordered ? Arr.sort(named, compareStrings) : named;\n graphNames.forEach((graphName) => {\n const entry = getOrInit(defaultGraph, graphName, () => ({ '@id': graphName }));\n entry['@graph'] = nodesOf(nodeMap[graphName] ?? {}, ordered);\n });\n return nodesOf(defaultGraph, ordered);\n};\n\nconst isOnlyId = (node: JsonObject): boolean => {\n const keys = Record.keys(node);\n return keys.length === 1 && keys[0] === '@id';\n};\n\n/** @internal */\nexport const mergeNodeMaps = (graphs: NodeMap) => {\n const merged: globalThis.Record<string, JsonObject> = {};\n Arr.sort(Record.keys(graphs), compareStrings).forEach((graphName) => {\n const graph = graphs[graphName] ?? {};\n Arr.sort(Record.keys(graph), compareStrings).forEach((id) => {\n const node = graph[id] ?? {};\n const mergedNode = getOrInit(merged, id, () => ({ '@id': id }));\n Arr.sort(Record.keys(node), compareStrings).forEach((property) => {\n if (property === '@id') return;\n if (property === '@type') {\n const types: Array<Json> = getOrInit(mergedNode, '@type', () => []);\n asArray(node['@type']).forEach((t) => {\n if (!types.includes(t)) types.push(t);\n });\n return;\n }\n if (property.startsWith('@')) {\n mergedNode[property] = structuredClone(node[property]);\n return;\n }\n const values: Array<Json> = getOrInit(mergedNode, property, () => []);\n asArray(node[property]).forEach((v) => {\n if (!values.some((x) => deepEqual(x, v))) values.push(structuredClone(v));\n });\n });\n });\n });\n return merged;\n};\n","/**\n * Framing Algorithm (JSON-LD 1.1 Framing §4).\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as MutableHashSet from 'effect/MutableHashSet';\nimport * as Option from 'effect/Option';\nimport * as Record from 'effect/Record';\nimport { type NodeMap, generateNodeMap, mergeNodeMaps } from './flatten.ts';\nimport {\n IdIssuer,\n type Json,\n type JsonObject,\n addValue,\n asArray,\n clone,\n compareStrings,\n fail,\n hasOwn,\n isAbsoluteIri,\n isBlankNodeId,\n isEmptyObject,\n isKeyword,\n isListObject,\n isObject,\n isString,\n isValueObject,\n getOrInit,\n stringifyJson,\n} from './util.ts';\nimport * as Predicate from 'effect/Predicate';\n\n/** @internal */\nexport type Embed = '@once' | '@always' | '@never' | '@link' | '@first' | '@last';\n\n/** @internal */\nexport interface FrameOptions {\n readonly embed: Embed;\n readonly explicit: boolean;\n readonly omitDefault: boolean;\n readonly requireAll: boolean;\n readonly ordered: boolean;\n /** Frame the merged graph (true) or the default graph (false). */\n readonly merged: boolean;\n readonly is11: boolean;\n}\n\ninterface Flags {\n readonly embed: Embed;\n readonly explicit: boolean;\n readonly requireAll: boolean;\n}\n\n/** Where a framed node was embedded: its parent, under a property (none at the top level). */\ninterface EmbedSite {\n readonly parent: Json;\n readonly property: Option.Option<string>;\n}\n\ninterface State {\n readonly options: FrameOptions;\n readonly graphMap: NodeMap;\n readonly subjects: globalThis.Record<string, JsonObject>;\n readonly graph: string;\n readonly embedded: boolean;\n readonly subjectStack: Array<{ subject: JsonObject; graph: string }>;\n readonly link: globalThis.Record<string, globalThis.Record<string, JsonObject>>;\n readonly bnodeMap: globalThis.Record<string, Array<JsonObject>>;\n uniqueEmbeds: globalThis.Record<string, globalThis.Record<string, EmbedSite>>;\n}\n\n/**\n * Frames expanded input with an expanded frame. Returns the framed nodes\n * (expanded form) and the blank node identifiers that are referenced only\n * once and can therefore be pruned.\n *\n * @internal\n */\nexport const frame = (expanded: Json, expandedFrame: Json, options: FrameOptions): Array<Json> => {\n const graphMap: NodeMap = { '@default': {} };\n generateNodeMap(expanded, graphMap, new IdIssuer());\n let graph = '@default';\n if (options.merged) {\n graphMap['@merged'] = mergeNodeMaps(graphMap);\n graph = '@merged';\n }\n const state: State = {\n options,\n graphMap,\n subjects: graphMap[graph] ?? {},\n graph,\n embedded: false,\n subjectStack: [],\n link: {},\n bnodeMap: {},\n uniqueEmbeds: {},\n };\n const framed: Array<Json> = [];\n frameSubjects(\n state,\n Arr.sort(Record.keys(state.subjects), compareStrings),\n asArray(expandedFrame),\n framed,\n Option.none(),\n );\n const bnodesToClear = MutableHashSet.fromIterable(\n options.is11\n ? Record.keys(state.bnodeMap).filter((id) => state.bnodeMap[id]?.length === 1)\n : [],\n );\n // Framing's top level is an array of node objects, and cleanup keeps it an array.\n const cleaned: Array<Json> = cleanupPreserve(framed, bnodesToClear, new WeakSet());\n return cleaned;\n};\n\nconst getFlag = (\n pattern: JsonObject,\n options: FrameOptions,\n name: 'embed' | 'explicit' | 'omitDefault' | 'requireAll',\n): any => {\n const flag = `@${name}`;\n let value: Json = hasOwn(pattern, flag) ? asArray(pattern[flag])[0] : options[name];\n if (isValueObject(value)) value = value['@value'];\n if (name === 'embed') {\n if (value === true) value = '@once';\n else if (value === false) value = '@never';\n else if (!['@always', '@never', '@link', '@first', '@last', '@once'].includes(value)) {\n fail('invalid @embed value', String(value));\n }\n } else if (Predicate.isString(value)) {\n value = value === 'true';\n }\n return value;\n};\n\nconst validateFrame = (frameValue: Json): void => {\n if (!Array.isArray(frameValue) || frameValue.length !== 1 || !isObject(frameValue[0])) {\n fail('invalid frame', 'a frame must be a single object');\n }\n const f = frameValue[0];\n if (hasOwn(f, '@id')) {\n asArray(f['@id']).forEach((id) => {\n if (!(isObject(id) || (isString(id) && isAbsoluteIri(id))) || isBlankNodeId(id)) {\n fail('invalid frame', `invalid @id ${stringifyJson(id)}`);\n }\n });\n }\n if (hasOwn(f, '@type')) {\n asArray(f['@type']).forEach((type) => {\n if (\n !(isObject(type) || (isString(type) && isAbsoluteIri(type)) || type === '@json') ||\n isBlankNodeId(type)\n ) {\n fail('invalid frame', `invalid @type ${stringifyJson(type)}`);\n }\n });\n }\n};\n\nconst createImplicitFrame = (flags: Flags): Array<JsonObject> => [\n {\n '@embed': [flags.embed],\n '@explicit': [flags.explicit],\n '@requireAll': [flags.requireAll],\n },\n];\n\nconst createsCircularReference = (\n subject: JsonObject,\n graph: string,\n stack: ReadonlyArray<{ subject: JsonObject; graph: string }>,\n): boolean =>\n stack.some((entry) => entry.graph === graph && entry.subject['@id'] === subject['@id']);\n\nconst addFrameOutput = (parent: Json, property: Option.Option<string>, output: Json): void => {\n if (isObject(parent)) {\n if (Option.isSome(property)) addValue(parent, property.value, output, true);\n } else {\n // A non-object parent in framing output is the top-level array.\n const top: Array<Json> = parent;\n top.push(output);\n }\n};\n\nconst isSubjectReference = (v: Json): boolean =>\n isObject(v) && Record.keys(v).length === 1 && hasOwn(v, '@id');\n\nconst frameSubjects = (\n state: State,\n subjects: ReadonlyArray<string>,\n frameValue: Json,\n parent: Json,\n property: Option.Option<string>,\n): void => {\n validateFrame(frameValue);\n const pattern: JsonObject = frameValue[0];\n const options = state.options;\n const flags: Flags = {\n embed: getFlag(pattern, options, 'embed'),\n explicit: getFlag(pattern, options, 'explicit'),\n requireAll: getFlag(pattern, options, 'requireAll'),\n };\n const link = getOrInit(state.link, state.graph, () => ({}));\n const matches = filterSubjects(state, subjects, pattern, flags);\n Arr.sort(Record.keys(matches), compareStrings).forEach((id) => {\n const subject = matches[id];\n if (subject === undefined) return;\n if (Option.isNone(property)) state.uniqueEmbeds = { [state.graph]: {} };\n const uniqueEmbeds = getOrInit(state.uniqueEmbeds, state.graph, () => ({}));\n const output: JsonObject = { '@id': id };\n if (isBlankNodeId(id)) addValue(state.bnodeMap, id, output, true);\n link[id] = output;\n if ((flags.embed === '@first' || flags.embed === '@last') && options.is11) {\n fail('invalid @embed value', flags.embed);\n }\n if (!state.embedded && hasOwn(uniqueEmbeds, id)) return;\n if (\n state.embedded &&\n (flags.embed === '@never' ||\n createsCircularReference(subject, state.graph, state.subjectStack))\n ) {\n addFrameOutput(parent, property, output);\n return;\n }\n if (\n state.embedded &&\n (flags.embed === '@first' || flags.embed === '@once') &&\n hasOwn(uniqueEmbeds, id)\n ) {\n addFrameOutput(parent, property, output);\n return;\n }\n if (flags.embed === '@last' && hasOwn(uniqueEmbeds, id)) removeEmbed(state, id);\n uniqueEmbeds[id] = { parent, property };\n state.subjectStack.push({ subject, graph: state.graph });\n // the subject is also the name of a graph\n const namedGraph = state.graphMap[id];\n if (hasOwn(state.graphMap, id) && namedGraph !== undefined) {\n let recurse: boolean;\n let subframe: Json;\n if (!hasOwn(pattern, '@graph')) {\n recurse = state.graph !== '@merged';\n subframe = {};\n } else {\n subframe = asArray(pattern['@graph'])[0];\n recurse = !(id === '@merged' || id === '@default');\n if (!isObject(subframe)) subframe = {};\n }\n if (recurse) {\n frameSubjects(\n { ...state, graph: id, subjects: namedGraph, embedded: false },\n Arr.sort(Record.keys(namedGraph), compareStrings),\n [subframe],\n output,\n Option.some('@graph'),\n );\n }\n }\n if (hasOwn(pattern, '@included')) {\n frameSubjects(\n { ...state, embedded: false },\n subjects,\n pattern['@included'],\n output,\n Option.some('@included'),\n );\n }\n Arr.sort(Record.keys(subject), compareStrings).forEach((prop) => {\n if (isKeyword(prop)) {\n output[prop] = clone(subject[prop]);\n if (prop === '@type') {\n asArray(subject['@type']).forEach((type) => {\n if (isBlankNodeId(type)) addValue(state.bnodeMap, type, output, true);\n });\n }\n return;\n }\n if (flags.explicit && !hasOwn(pattern, prop)) return;\n const underProp = Option.some(prop);\n // Properties of a flattened subject hold arrays of values.\n const objects: Array<Json> = subject[prop];\n objects.forEach((o) => {\n const subframe = hasOwn(pattern, prop) ? pattern[prop] : createImplicitFrame(flags);\n if (isListObject(o)) {\n const first = hasOwn(pattern, prop) ? asArray(pattern[prop])[0] : undefined;\n const listFrame =\n isObject(first) && hasOwn(first, '@list') ? first['@list'] : createImplicitFrame(flags);\n const list: JsonObject = { '@list': [] };\n addFrameOutput(output, underProp, list);\n const listProperty = Option.some('@list');\n asArray(o['@list']).forEach((oo) => {\n if (isSubjectReference(oo)) {\n frameSubjects(\n { ...state, embedded: true },\n [oo['@id']],\n listFrame,\n list,\n listProperty,\n );\n } else {\n addFrameOutput(list, listProperty, clone(oo));\n }\n });\n } else if (isSubjectReference(o)) {\n frameSubjects({ ...state, embedded: true }, [o['@id']], subframe, output, underProp);\n } else if (valueMatch(asArray(subframe)[0], o)) {\n addFrameOutput(output, underProp, clone(o));\n }\n });\n });\n // defaults\n Arr.sort(Record.keys(pattern), compareStrings).forEach((prop) => {\n if (prop === '@type') {\n const first = asArray(pattern[prop])[0];\n if (!isObject(first) || !hasOwn(first, '@default')) return;\n } else if (isKeyword(prop)) {\n return;\n }\n const next: JsonObject = asArray(pattern[prop])[0] ?? {};\n const omitDefaultOn = getFlag(next, options, 'omitDefault');\n if (!omitDefaultOn && !hasOwn(output, prop)) {\n let preserve: Json = '@null';\n if (hasOwn(next, '@default')) preserve = clone(next['@default']);\n output[prop] = [{ '@preserve': asArray(preserve) }];\n }\n });\n // reverse properties\n if (isObject(pattern['@reverse'])) {\n const reversePattern: JsonObject = pattern['@reverse'];\n Arr.sort(Record.keys(reversePattern), compareStrings).forEach((reverseProp) => {\n const subframe = reversePattern[reverseProp];\n Record.keys(state.subjects).forEach((s) => {\n const values = asArray(state.subjects[s]?.[reverseProp] ?? []);\n if (values.some((v: Json) => isObject(v) && v['@id'] === id)) {\n const reverse: JsonObject = (output['@reverse'] ??= {});\n addValue(reverse, reverseProp, [], true);\n frameSubjects(\n { ...state, embedded: true },\n [s],\n subframe,\n reverse[reverseProp],\n property,\n );\n }\n });\n });\n }\n addFrameOutput(parent, property, output);\n state.subjectStack.pop();\n });\n};\n\nconst removeEmbed = (state: State, id: string): void => {\n const embeds = state.uniqueEmbeds[state.graph];\n const embed = embeds?.[id];\n if (embeds === undefined || embed === undefined) return;\n const parent = embed.parent;\n const subject = { '@id': id };\n if (Array.isArray(parent)) {\n parent.forEach((v, i) => {\n if (isObject(v) && v['@id'] === id) parent[i] = subject;\n });\n } else if (isObject(parent) && Option.isSome(embed.property)) {\n const property = embed.property.value;\n const values = asArray(parent[property]);\n parent[property] = values.map((v: Json) => (isObject(v) && v['@id'] === id ? subject : v));\n }\n const removeDependents = (parentId: string): void => {\n Record.keys(embeds).forEach((next) => {\n const e = embeds[next];\n if (e !== undefined && isObject(e.parent) && e.parent['@id'] === parentId) {\n delete embeds[next];\n removeDependents(next);\n }\n });\n };\n removeDependents(id);\n};\n\nconst filterSubjects = (\n state: State,\n subjects: ReadonlyArray<string>,\n pattern: JsonObject,\n flags: Flags,\n) => {\n const result: globalThis.Record<string, JsonObject> = {};\n const graph = state.graphMap[state.graph];\n subjects.forEach((id) => {\n const subject = graph?.[id];\n if (subject !== undefined && filterSubject(state, subject, pattern, flags))\n result[id] = subject;\n });\n return result;\n};\n\nconst filterSubject = (\n state: State,\n subject: JsonObject,\n pattern: JsonObject,\n flags: Flags,\n): boolean => {\n let wildcard = true;\n let matchesSome = false;\n // Set when a key decides the match on its own, which ends the scan.\n let decided = Option.none<boolean>();\n const decide = (verdict: boolean): true => {\n decided = Option.some(verdict);\n return true;\n };\n Record.keys(pattern).some((key) => {\n let matchThis = false;\n const nodeValues = hasOwn(subject, key) ? asArray(subject[key]) : [];\n const frameValues = asArray(pattern[key]);\n const isEmpty = Arr.isReadonlyArrayEmpty(frameValues);\n if (key === '@id') {\n if (Arr.isReadonlyArrayEmpty(frameValues) || isObject(frameValues[0])) matchThis = true;\n else matchThis = frameValues.includes(nodeValues[0]);\n if (!flags.requireAll) return decide(matchThis);\n } else if (key === '@type') {\n wildcard = false;\n if (isEmpty) {\n if (Arr.isReadonlyArrayNonEmpty(nodeValues)) return decide(false);\n matchThis = true;\n } else if (frameValues.length === 1 && isEmptyObject(frameValues[0])) {\n matchThis = Arr.isReadonlyArrayNonEmpty(nodeValues);\n } else {\n frameValues.forEach((type) => {\n if (isObject(type) && hasOwn(type, '@default')) matchThis = true;\n else matchThis = matchThis || nodeValues.some((t) => t === type);\n });\n if (!flags.requireAll) return decide(matchThis);\n }\n } else if (isKeyword(key)) {\n return false;\n } else {\n const thisFrame = frameValues[0];\n let hasDefault = false;\n if (thisFrame !== undefined) {\n validateFrame([thisFrame]);\n hasDefault = hasOwn(thisFrame, '@default');\n }\n wildcard = false;\n if (Arr.isReadonlyArrayEmpty(nodeValues) && hasDefault) return false;\n if (Arr.isReadonlyArrayNonEmpty(nodeValues) && isEmpty) return decide(false);\n if (thisFrame === undefined) {\n if (Arr.isReadonlyArrayNonEmpty(nodeValues)) return decide(false);\n matchThis = true;\n } else if (isListObject(thisFrame)) {\n const listValue = asArray(thisFrame['@list'])[0];\n if (isListObject(nodeValues[0])) {\n const nodeListValues: Array<Json> = nodeValues[0]['@list'];\n if (isValueObject(listValue)) {\n matchThis = nodeListValues.some((lv) => valueMatch(listValue, lv));\n } else if (isObject(listValue)) {\n matchThis = nodeListValues.some((lv) => nodeMatch(state, listValue, lv, flags));\n }\n }\n } else if (isValueObject(thisFrame)) {\n matchThis = nodeValues.some((nv) => valueMatch(thisFrame, nv));\n } else if (isSubjectReference(thisFrame)) {\n matchThis = nodeValues.some((nv) => nodeMatch(state, thisFrame, nv, flags));\n } else if (isObject(thisFrame)) {\n matchThis = Arr.isReadonlyArrayNonEmpty(nodeValues);\n }\n }\n if (!matchThis && flags.requireAll) return decide(false);\n matchesSome = matchesSome || matchThis;\n return false;\n });\n return Option.getOrElse(decided, () => wildcard || matchesSome);\n};\n\nconst nodeMatch = (state: State, pattern: JsonObject, value: Json, flags: Flags): boolean => {\n if (!isObject(value) || !hasOwn(value, '@id')) return false;\n const node = state.subjects[value['@id']];\n return node !== undefined && filterSubject(state, node, pattern, flags);\n};\n\nconst lowerIfString = (s: Json) => (isString(s) ? s.toLowerCase() : s);\n\nconst valueMatch = (pattern: Json, value: Json): boolean => {\n if (!isObject(pattern)) return true;\n const v1 = value['@value'];\n const t1 = value['@type'];\n const l1 = value['@language'];\n const v2 = hasOwn(pattern, '@value') ? asArray(pattern['@value']) : [];\n const t2 = hasOwn(pattern, '@type') ? asArray(pattern['@type']) : [];\n const l2 = hasOwn(pattern, '@language') ? asArray(pattern['@language']) : [];\n if (Arr.isReadonlyArrayEmpty(v2) && Arr.isReadonlyArrayEmpty(t2) && Arr.isReadonlyArrayEmpty(l2))\n return true;\n if (!(v2.includes(v1) || isEmptyObject(v2[0]))) return false;\n if (\n !(\n (t1 === undefined && Arr.isReadonlyArrayEmpty(t2)) ||\n t2.includes(t1) ||\n (t1 !== undefined && isEmptyObject(t2[0]))\n )\n ) {\n return false;\n }\n if (\n !(\n (l1 === undefined && Arr.isReadonlyArrayEmpty(l2)) ||\n l2.map(lowerIfString).includes(lowerIfString(l1)) ||\n (l1 !== undefined && isEmptyObject(l2[0]))\n )\n ) {\n return false;\n }\n return true;\n};\n\nconst cleanupPreserve = (\n input: Json,\n bnodesToClear: MutableHashSet.MutableHashSet<string>,\n seen: WeakSet<JsonObject>,\n): Json => {\n if (Array.isArray(input)) return input.map((v) => cleanupPreserve(v, bnodesToClear, seen));\n if (isObject(input)) {\n if (hasOwn(input, '@preserve')) return input['@preserve'][0];\n if (isValueObject(input)) return input;\n if (isListObject(input)) {\n input['@list'] = cleanupPreserve(input['@list'], bnodesToClear, seen);\n return input;\n }\n if (seen.has(input)) return input;\n seen.add(input);\n Record.keys(input).forEach((prop) => {\n if (prop === '@id' && MutableHashSet.has(bnodesToClear, input[prop])) {\n delete input['@id'];\n return;\n }\n input[prop] = cleanupPreserve(input[prop], bnodesToClear, seen);\n });\n }\n return input;\n};\n\n/**\n * Replaces `@null` placeholders (from frame defaults) by `null`, dropping\n * them from arrays.\n *\n * @internal\n */\nexport const cleanupNull = (input: Json, seen: WeakSet<JsonObject> = new WeakSet()): Json => {\n if (Array.isArray(input)) {\n return input.map((v) => cleanupNull(v, seen)).filter((v) => v !== null);\n }\n if (input === '@null') return null;\n if (isObject(input)) {\n if (seen.has(input)) return input;\n seen.add(input);\n Record.keys(input).forEach((key) => {\n input[key] = cleanupNull(input[key], seen);\n });\n }\n return input;\n};\n","/**\n * RDF conversion: Deserialize JSON-LD to RDF and Serialize RDF as JSON-LD\n * (JSON-LD 1.1 API §8).\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as Iterable from 'effect/Iterable';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as MutableHashSet from 'effect/MutableHashSet';\nimport * as Record from 'effect/Record';\nimport * as Result from 'effect/Result';\nimport * as Term from '../../Term.ts';\nimport { type NodeMap, generateNodeMap } from './flatten.ts';\nimport {\n I18N,\n IdIssuer,\n type Json,\n type JsonObject,\n RDF_DIRECTION,\n RDF_FIRST,\n RDF_JSON,\n RDF_LANGUAGE,\n RDF_LANG_STRING,\n RDF_LIST,\n RDF_NIL,\n RDF_REST,\n RDF_TYPE,\n RDF_VALUE,\n XSD_BOOLEAN,\n XSD_DOUBLE,\n XSD_INTEGER,\n XSD_STRING,\n canonicalJson,\n compareStrings,\n deepEqual,\n fail,\n isBlankNodeId,\n isListObject,\n isObject,\n isValueObject,\n isWellFormedIri,\n isWellFormedLanguage,\n getOrInit,\n hasOwn,\n loop,\n} from './util.ts';\nimport { parseJson } from './json.ts';\nimport * as Option from 'effect/Option';\nimport * as Predicate from 'effect/Predicate';\n\n/** @internal */\nexport type RdfDirection = 'i18n-datatype' | 'compound-literal';\n\n/** @internal */\nexport interface ToRdfOptions {\n readonly produceGeneralizedRdf: boolean;\n readonly rdfDirection: Option.Option<RdfDirection>;\n}\n\nconst blankNode = (id: string): Term.BlankNode => Term.blankNode(id.slice(2));\n\n/**\n * The nodes of the IRIs seen by the current `toRdf` (none for an IRI that\n * is not well-formed), so that an IRI that recurs (a property, a type, a\n * datatype, a node) is validated and made into a node once. `toRdf` runs\n * synchronously, and empties it before and after.\n */\nconst iriNodes = MutableHashMap.empty<string, Option.Option<Term.NamedNode>>();\n\n/** The node of an IRI, if it is well-formed. */\nconst iriNode = (iri: string): Option.Option<Term.NamedNode> => {\n const cached = MutableHashMap.get(iriNodes, iri);\n if (Option.isSome(cached)) return cached.value;\n const node = isWellFormedIri(iri) ? Option.some(Term.namedNode(iri)) : Option.none();\n MutableHashMap.set(iriNodes, iri, node);\n return node;\n};\n\nconst toResource = (id: string): Option.Option<Term.NamedNode | Term.BlankNode> =>\n isBlankNodeId(id) ? Option.some(blankNode(id)) : iriNode(id);\n\ntype Triple = readonly [Term.Subject, Term.NamedNode, Term.Object];\n\n/**\n * Converts expanded JSON-LD to quads.\n *\n * @internal\n */\nexport const toRdf = (expanded: Json, options: ToRdfOptions): Array<Term.Quad> => {\n const issuer = new IdIssuer();\n MutableHashMap.clear(iriNodes);\n const rdfType = Term.namedNode(RDF_TYPE);\n const nodeMap: NodeMap = { '@default': {} };\n generateNodeMap(expanded, nodeMap, issuer);\n const quads: Array<Term.Quad> = [];\n Arr.sort(Record.keys(nodeMap), compareStrings).forEach((graphName) => {\n const graphTerm: Option.Option<Term.Graph> =\n graphName === '@default' ? Option.some(Term.defaultGraph) : toResource(graphName);\n const graph = nodeMap[graphName];\n if (Option.isNone(graphTerm) || graph === undefined) return;\n const g = graphTerm.value;\n Arr.sort(Record.keys(graph), compareStrings).forEach((subject) => {\n const s = toResource(subject);\n const node = graph[subject];\n if (Option.isNone(s) || node === undefined) return;\n Arr.sort(Record.keys(node), compareStrings).forEach((property) => {\n const values: Array<Json> = node[property];\n if (property === '@type') {\n values.forEach((type) => {\n const o = toResource(type);\n if (Option.isSome(o)) quads.push(Term.quad(s.value, rdfType, o.value, g));\n });\n return;\n }\n if (property.startsWith('@')) return;\n // Blank node predicates (generalized RDF) cannot be represented by\n // the core term model, so they are always skipped.\n const p = isBlankNodeId(property) ? Option.none() : iriNode(property);\n if (Option.isNone(p)) return;\n values.forEach((item) => {\n const listTriples: Array<Triple> = [];\n const o = objectToRdf(item, listTriples, issuer, options);\n if (Option.isSome(o)) quads.push(Term.quad(s.value, p.value, o.value, g));\n listTriples.forEach(([ls, lp, lo]) => quads.push(Term.quad(ls, lp, lo, g)));\n });\n });\n });\n });\n MutableHashMap.clear(iriNodes);\n return quads;\n};\n\nconst toDoubleString = (n: number): string => n.toExponential(15).replace(/(\\d)0*e\\+?/, '$1E');\n\nconst objectToRdf = (\n item: Json,\n triples: Array<Triple>,\n issuer: IdIssuer,\n options: ToRdfOptions,\n): Option.Option<Term.Object> => {\n // 1, 2\n if (!isValueObject(item) && !isListObject(item)) {\n return toResource(item['@id']);\n }\n // 3\n if (isListObject(item)) return Option.some(listToRdf(item['@list'], triples, issuer, options));\n // 4\n let value = item['@value'];\n const type = item['@type'];\n const typed = type !== undefined && type !== null;\n // 6\n if (typed && type !== '@json' && Option.isNone(iriNode(type))) return Option.none();\n // 7\n if ('@language' in item && !isWellFormedLanguage(item['@language'])) return Option.none();\n // 8\n let datatype: string;\n if (type === '@json') {\n value = canonicalJson(value);\n datatype = RDF_JSON;\n } else if (Predicate.isBoolean(value)) {\n value = value ? 'true' : 'false';\n datatype = typed ? type : XSD_BOOLEAN;\n } else if (\n Predicate.isNumber(value) &&\n (!Number.isInteger(value) || Math.abs(value) >= 1e21 || type === XSD_DOUBLE)\n ) {\n value = toDoubleString(value);\n datatype = typed ? type : XSD_DOUBLE;\n } else if (Predicate.isNumber(value)) {\n value = value.toFixed(0);\n datatype = typed ? type : XSD_INTEGER;\n } else {\n datatype = typed ? type : '@language' in item ? RDF_LANG_STRING : XSD_STRING;\n }\n // 13\n if ('@direction' in item && Option.isSome(options.rdfDirection)) {\n const language = '@language' in item ? String(item['@language']).toLowerCase() : '';\n if (options.rdfDirection.value === 'i18n-datatype') {\n return Option.some(\n Term.literal(String(value), Term.namedNode(`${I18N}${language}_${item['@direction']}`)),\n );\n }\n const literal = blankNode(issuer.issue());\n triples.push([literal, Term.namedNode(RDF_VALUE), Term.literal(String(value))]);\n if ('@language' in item) {\n triples.push([literal, Term.namedNode(RDF_LANGUAGE), Term.literal(language)]);\n }\n triples.push([literal, Term.namedNode(RDF_DIRECTION), Term.literal(item['@direction'])]);\n return Option.some(literal);\n }\n // 14\n if ('@language' in item) {\n return Option.some(Term.literal(String(value), String(item['@language'])));\n }\n return Option.some(\n Term.literal(\n String(value),\n Option.getOrElse(iriNode(datatype), () => Term.namedNode(datatype)),\n ),\n );\n};\n\nconst listToRdf = (\n list: Array<JsonObject>,\n triples: Array<Triple>,\n issuer: IdIssuer,\n options: ToRdfOptions,\n): Term.Object => {\n const nil = Term.namedNode(RDF_NIL);\n const bnodes = list.map(() => blankNode(issuer.issue()));\n const first = Term.namedNode(RDF_FIRST);\n const rest = Term.namedNode(RDF_REST);\n bnodes.forEach((subject, i) => {\n const embedded: Array<Triple> = [];\n const o = objectToRdf(list[i], embedded, issuer, options);\n if (Option.isSome(o)) triples.push([subject, first, o.value]);\n triples.push([subject, rest, bnodes[i + 1] ?? nil]);\n embedded.forEach((triple) => triples.push(triple));\n });\n return bnodes[0] ?? nil;\n};\n\n// -----------------------------------------------------------------------------\n// fromRdf\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport interface FromRdfOptions {\n readonly rdfDirection: Option.Option<RdfDirection>;\n readonly useNativeTypes: boolean;\n readonly useRdfType: boolean;\n readonly ordered: boolean;\n readonly processingMode: 'json-ld-1.0' | 'json-ld-1.1';\n}\n\n// A refinement chain: `termId` runs for every term of every quad converted.\nconst termId = (t: Term.Term): string =>\n Term.isBlankNode(t)\n ? `_:${t.value}`\n : Term.isNamedNode(t)\n ? t.value\n : Term.isDefaultGraph(t)\n ? '@default'\n : t.key;\n\n/** A walk up an `rdf:rest` chain from a usage of `rdf:nil` (fromRdf §8.6, step 6.4). */\ninterface ListWalk {\n readonly node: JsonObject;\n readonly property: string;\n readonly head: JsonObject;\n /** The walk reached a node that is not a blank node, and stops there. */\n readonly done: boolean;\n}\n\ninterface Usage {\n readonly node: JsonObject;\n readonly property: string;\n readonly value: JsonObject;\n}\n\nconst DOUBLE_RE = /^(\\+|-)?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)([Ee](\\+|-)?[0-9]+)?$|^(\\+|-)?INF$|^NaN$/;\n\n/**\n * Serialize RDF as JSON-LD algorithm.\n *\n * @internal\n */\nexport const fromRdf = (quads: Iterable<Term.Quad>, options: FromRdfOptions): Array<JsonObject> => {\n const defaultGraph: globalThis.Record<string, JsonObject> = {};\n const graphMap: globalThis.Record<string, globalThis.Record<string, JsonObject>> = {};\n graphMap['@default'] = defaultGraph;\n const referencedOnce: globalThis.Record<string, Usage | false> = {};\n const compoundLiteralSubjects: globalThis.Record<\n string,\n MutableHashSet.MutableHashSet<string>\n > = {};\n const nilUsages: globalThis.Record<string, Array<Usage>> = {};\n const seen = MutableHashSet.empty<string>();\n const compoundLiterals =\n Option.isSome(options.rdfDirection) && options.rdfDirection.value === 'compound-literal';\n Iterable.forEach(quads, (q) => {\n // One `add` per quad: a duplicate leaves the size unchanged.\n const before = MutableHashSet.size(seen);\n if (MutableHashSet.size(MutableHashSet.add(seen, q.key)) === before) return;\n const name = termId(q.graph);\n const nodeMap = getOrInit(graphMap, name, () => ({}));\n const compoundMap = getOrInit(compoundLiteralSubjects, name, () => MutableHashSet.empty());\n const usages = getOrInit(nilUsages, name, () => []);\n if (name !== '@default' && !hasOwn(defaultGraph, name)) defaultGraph[name] = { '@id': name };\n const subject = termId(q.subject);\n const predicate = q.predicate.value;\n const object = q.object;\n const node = getOrInit(nodeMap, subject, () => ({ '@id': subject }));\n if (compoundLiterals && predicate === RDF_DIRECTION) {\n MutableHashSet.add(compoundMap, subject);\n }\n const isBlank = Term.isBlankNode(object);\n const isResource = isBlank || Term.isNamedNode(object);\n const objectId = isResource ? termId(object) : '';\n if (isResource && !hasOwn(nodeMap, objectId)) nodeMap[objectId] = { '@id': objectId };\n if (predicate === RDF_TYPE && isResource && !options.useRdfType) {\n const types: Array<string> = getOrInit(node, '@type', () => []);\n if (!types.includes(objectId)) types.push(objectId);\n return;\n }\n const value = rdfToObject(object, options);\n const values: Array<Json> = getOrInit(node, predicate, () => []);\n let stored = value;\n const existing = values.find((v) => deepEqual(v, value));\n if (existing === undefined) values.push(value);\n else stored = existing;\n if (isResource && objectId === RDF_NIL) {\n usages.push({ node, property: predicate, value: stored });\n } else if (isResource && hasOwn(referencedOnce, objectId)) {\n referencedOnce[objectId] = false;\n } else if (isBlank) {\n referencedOnce[objectId] = { node, property: predicate, value: stored };\n }\n });\n Record.keys(graphMap).forEach((name) => {\n const graphObject = graphMap[name];\n if (graphObject === undefined) return;\n // 6.1\n Iterable.forEach(compoundLiteralSubjects[name] ?? [], (cl) => {\n const clEntry = referencedOnce[cl];\n if (!clEntry) return;\n const { node, property } = clEntry;\n const clNode = graphObject[cl];\n delete graphObject[cl];\n if (clNode === undefined) return;\n // The property of a node object in the node map holds an array of node references\n // (JSON-LD fromRdf §8.6).\n const references: Array<JsonObject> = node[property];\n references.forEach((clReference) => {\n if (clReference['@id'] !== cl) return;\n delete clReference['@id'];\n clReference['@value'] = clNode[RDF_VALUE]?.[0]?.['@value'];\n if (RDF_LANGUAGE in clNode) {\n const lang = clNode[RDF_LANGUAGE][0]['@value'];\n if (!Predicate.isString(lang) || !isWellFormedLanguage(lang)) {\n fail('invalid language-tagged string');\n }\n clReference['@language'] = lang;\n }\n if (RDF_DIRECTION in clNode) {\n const dir = clNode[RDF_DIRECTION][0]['@value'];\n if (dir !== 'ltr' && dir !== 'rtl') fail('invalid base direction');\n clReference['@direction'] = dir;\n }\n });\n });\n // 6.2 - 6.4\n if (!(RDF_NIL in graphObject)) return;\n (nilUsages[name] ?? []).forEach((usage) => {\n const list: Array<Json> = [];\n const listNodes: Array<string> = [];\n const { head } = loop<ListWalk>(\n { node: usage.node, property: usage.property, head: usage.value, done: false },\n (walk) => {\n const { node } = walk;\n if (walk.done || walk.property !== RDF_REST) return Option.none();\n if (!isWellFormedListNode(node, referencedOnce)) return Option.none();\n // `isWellFormedListNode` checked that this node is referenced exactly once, so it has\n // a usage entry.\n const nodeUsage = referencedOnce[node['@id']];\n if (!nodeUsage) return Option.none();\n list.push(node[RDF_FIRST][0]);\n listNodes.push(node['@id']);\n return Option.some({\n node: nodeUsage.node,\n property: nodeUsage.property,\n head: nodeUsage.value,\n done: !isBlankNodeId(nodeUsage.node['@id']),\n });\n },\n );\n delete head['@id'];\n list.reverse();\n head['@list'] = list;\n listNodes.forEach((id) => {\n delete graphObject[id];\n });\n });\n });\n const result: Array<JsonObject> = [];\n const subjects = options.ordered\n ? Arr.sort(Record.keys(defaultGraph), compareStrings)\n : Record.keys(defaultGraph);\n subjects.forEach((subject) => {\n const node = defaultGraph[subject];\n if (node === undefined) return;\n const graph = graphMap[subject];\n if (hasOwn(graphMap, subject) && subject !== '@default' && graph !== undefined) {\n const nodes: Array<JsonObject> = (node['@graph'] = []);\n const keys = options.ordered\n ? Arr.sort(Record.keys(graph), compareStrings)\n : Record.keys(graph);\n keys.forEach((k) => {\n const n = graph[k];\n if (n !== undefined && !isOnlyId(n)) nodes.push(n);\n });\n }\n if (!isOnlyId(node)) result.push(node);\n });\n return result;\n};\n\nconst isOnlyId = (n: JsonObject): boolean => Record.keys(n).length === 1 && '@id' in n;\n\nconst isWellFormedListNode = (\n node: JsonObject,\n referencedOnce: globalThis.Record<string, Usage | false>,\n): boolean => {\n const id = node['@id'];\n if (!isBlankNodeId(id)) return false;\n if (!isObject(referencedOnce[id])) return false;\n const first = node[RDF_FIRST];\n const rest = node[RDF_REST];\n if (!Array.isArray(first) || first.length !== 1) return false;\n if (!Array.isArray(rest) || rest.length !== 1) return false;\n return Record.keys(node).every((k) => {\n if (k === '@id' || k === RDF_FIRST || k === RDF_REST) return true;\n const t = node['@type'];\n return k === '@type' && Array.isArray(t) && t.length === 1 && t[0] === RDF_LIST;\n });\n};\n\nconst rdfToObject = (object: Term.Object, options: FromRdfOptions): JsonObject => {\n if (!Term.isLiteral(object)) return { '@id': termId(object) };\n const result: JsonObject = {};\n let converted: Json = object.value;\n let type = Option.none<string>();\n const datatype = object.datatype.value;\n const isJson = options.processingMode !== 'json-ld-1.0' && datatype === RDF_JSON;\n if (isJson) {\n converted = Result.getOrElse(parseJson(converted), () => fail('invalid JSON literal'));\n type = Option.some('@json');\n } else if (options.useNativeTypes) {\n if (datatype === XSD_STRING) {\n // keep\n } else if (datatype === XSD_BOOLEAN) {\n if (converted === 'true' || converted === '1') converted = true;\n else if (converted === 'false' || converted === '0') converted = false;\n else type = Option.some(datatype);\n } else if (datatype === XSD_INTEGER && /^[+-]?[0-9]+$/.test(converted)) {\n const n = Number(converted);\n if (Number.isSafeInteger(n)) converted = n;\n else type = Option.some(datatype);\n } else if (datatype === XSD_DOUBLE && DOUBLE_RE.test(converted)) {\n const n = Number(converted.replace(/INF$/, 'Infinity'));\n if (Number.isFinite(n)) converted = n;\n else type = Option.some(datatype);\n } else if (object.language === '') {\n type = Option.some(datatype);\n }\n }\n if (isJson) {\n // handled\n } else if (\n datatype.startsWith(I18N) &&\n Option.isSome(options.rdfDirection) &&\n options.rdfDirection.value === 'i18n-datatype'\n ) {\n const fragment = datatype.slice(I18N.length);\n const i = fragment.indexOf('_');\n const language = i === -1 ? fragment : fragment.slice(0, i);\n if (language !== '') result['@language'] = language;\n if (i !== -1) result['@direction'] = fragment.slice(i + 1);\n type = Option.none();\n } else if (object.language !== '') {\n result['@language'] = object.language;\n if (object.direction !== undefined) result['@direction'] = object.direction;\n type = Option.none();\n } else if (!options.useNativeTypes && datatype !== XSD_STRING && Option.isNone(type)) {\n type = Option.some(datatype);\n }\n result['@value'] = converted;\n if (Option.isSome(type)) result['@type'] = type.value;\n return result;\n};\n","/**\n * The JSON-LD 1.1 processor: expansion, compaction, flattening, framing and\n * conversion to and from RDF, plus a `Serialization.Codec` for the\n * `application/ld+json` media type.\n *\n * Remote documents and contexts are loaded through the `DocumentLoader`\n * service when it is provided (or through `options.documentLoader`); without\n * one, any remote reference fails with `loading remote context failed` /\n * `loading document failed`.\n *\n * @since 0.1.0\n */\nimport * as Dataset from '../Dataset.ts';\nimport * as PrefixMap from '../PrefixMap.ts';\nimport * as Serialization from '../Serialization.ts';\nimport * as Term from '../Term.ts';\nimport * as Arr from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as MutableHashMap from 'effect/MutableHashMap';\nimport * as Option from 'effect/Option';\nimport * as Record from 'effect/Record';\nimport * as Result from 'effect/Result';\nimport * as Schema from 'effect/Schema';\nimport * as DocumentLoader from './DocumentLoader.ts';\nimport * as JsonLdError from './JsonLdError.ts';\nimport { compactElement, compactIri } from './internal/compact.ts';\nimport {\n type ActiveContext,\n type Env,\n type LoadedDocument,\n NeedDocument,\n type ProcessingMode,\n expandIri,\n initialContext,\n processContext,\n} from './internal/context.ts';\nimport { expandElement } from './internal/expand.ts';\nimport { flattenExpanded } from './internal/flatten.ts';\nimport { cleanupNull, frame as frameAlgorithm } from './internal/frame.ts';\nimport * as Rdf from './internal/rdf.ts';\nimport {\n type Json,\n type JsonObject,\n fail,\n isEmptyObject,\n isObject,\n isString,\n loop,\n} from './internal/util.ts';\nimport { parseJson } from './internal/json.ts';\nimport * as Predicate from 'effect/Predicate';\n\n/** An empty context (`{}` or `[]`), which compaction leaves out of the output. */\nconst isEmptyContext = (context: Json): boolean =>\n isEmptyObject(context) || (Array.isArray(context) && Arr.isReadonlyArrayEmpty(context));\n\n/**\n * Any JSON value.\n *\n * @since 0.1.0\n * @category models\n */\nexport type JsonValue = null | boolean | number | string | JsonArray | JsonObjectValue;\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface JsonArray extends ReadonlyArray<JsonValue> {}\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface JsonObjectValue {\n readonly [key: string]: JsonValue;\n}\n\n/**\n * The input of the JSON-LD algorithms: a JSON document (object or array), the\n * URL of a document to load, or an already loaded `RemoteDocument`.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Input = JsonValue | DocumentLoader.RemoteDocument | object;\n\n/**\n * Options shared by all JSON-LD algorithms (the `JsonLdOptions` of the\n * JSON-LD API).\n *\n * @since 0.1.0\n * @category options\n */\nexport interface Options {\n /** The base IRI. Defaults to the URL of the input document, if any. */\n readonly base?: string | null | undefined;\n /** `json-ld-1.1` (default) or `json-ld-1.0`. */\n readonly processingMode?: ProcessingMode | undefined;\n /** A context to apply before expanding the input. */\n readonly expandContext?: unknown;\n /** Process map entries in lexicographical order. Defaults to `false`. */\n readonly ordered?: boolean | undefined;\n /** Replace single-element arrays by their element. Defaults to `true`. */\n readonly compactArrays?: boolean | undefined;\n /** Make IRIs relative to the base IRI when compacting. Defaults to `true`. */\n readonly compactToRelative?: boolean | undefined;\n /** Extract all JSON-LD script elements from HTML input. */\n readonly extractAllScripts?: boolean | undefined;\n /**\n * A document loader to use instead of the `DocumentLoader` service from\n * the environment.\n */\n readonly documentLoader?: DocumentLoader.Loader | undefined;\n}\n\n/**\n * Options for `toRdf`.\n *\n * @since 0.1.0\n * @category options\n */\nexport interface ToRdfOptions extends Options {\n /**\n * How to represent `@direction`: as `i18n-datatype` literals, as\n * `compound-literal` blank nodes, or not at all (default).\n */\n readonly rdfDirection?: 'i18n-datatype' | 'compound-literal' | null | undefined;\n /**\n * Generalized RDF (blank node predicates) cannot be represented by the\n * core term model; such triples are always dropped.\n */\n readonly produceGeneralizedRdf?: boolean | undefined;\n}\n\n/**\n * Options for `fromRdf`.\n *\n * @since 0.1.0\n * @category options\n */\nexport interface FromRdfOptions {\n readonly processingMode?: ProcessingMode | undefined;\n readonly ordered?: boolean | undefined;\n /** Convert `xsd:boolean`, `xsd:integer` and `xsd:double` to native JSON values. */\n readonly useNativeTypes?: boolean | undefined;\n /** Keep `rdf:type` as a regular property instead of `@type`. */\n readonly useRdfType?: boolean | undefined;\n readonly rdfDirection?: 'i18n-datatype' | 'compound-literal' | null | undefined;\n}\n\n/**\n * Options for `frame`.\n *\n * @since 0.1.0\n * @category options\n */\nexport interface FrameOptions extends Options {\n /** The default `@embed` flag: `@once` (default), `@always`, `@never` or `@link`. */\n readonly embed?: '@once' | '@always' | '@never' | '@link' | undefined;\n /** The default `@explicit` flag. */\n readonly explicit?: boolean | undefined;\n /** The default `@omitDefault` flag. */\n readonly omitDefault?: boolean | undefined;\n /** The default `@requireAll` flag. */\n readonly requireAll?: boolean | undefined;\n /** Omit `@graph` when the result is a single node. Defaults to `false` in 1.1. */\n readonly omitGraph?: boolean | undefined;\n}\n\n// -----------------------------------------------------------------------------\n// Driver\n// -----------------------------------------------------------------------------\n\ntype DocResult = Result.Result<LoadedDocument, JsonLdError.JsonLdError>;\n\nconst getLoader = (options?: Options) =>\n options?.documentLoader !== undefined\n ? Effect.succeed(options.documentLoader)\n : Effect.map(Effect.serviceOption(DocumentLoader.DocumentLoader), (o) =>\n Option.getOrElse(o, () => DocumentLoader.none),\n );\n\n/**\n * The environment of one algorithm run: documents come from `docs`, and a\n * document not loaded yet aborts the run with `NeedDocument`.\n */\nconst makeEnv = (\n docs: MutableHashMap.MutableHashMap<string, DocResult>,\n options?: Options,\n): Env => ({\n processingMode: options?.processingMode ?? 'json-ld-1.1',\n contextCache: MutableHashMap.empty(),\n load: (url) => {\n const hit = MutableHashMap.get(docs, url);\n if (Option.isNone(hit)) throw new NeedDocument(url);\n if (Result.isFailure(hit.value)) throw hit.value.failure;\n return hit.value.success;\n },\n});\n\n/**\n * Runs the algorithm once. A `NeedDocument` or `JsonLdError` it throws is the\n * failure; anything else is a bug and propagates (a defect in `run`).\n */\nconst attempt = <A>(\n f: (env: Env) => A,\n env: Env,\n): Result.Result<A, NeedDocument | JsonLdError.JsonLdError> =>\n Result.try({\n try: () => f(env),\n catch: (e) => {\n if (e instanceof NeedDocument || JsonLdError.isJsonLdError(e)) return e;\n throw e;\n },\n });\n\n/**\n * Runs a pure algorithm, loading documents on demand: when the algorithm\n * needs a document that has not been loaded yet it aborts with\n * `NeedDocument`, the document is loaded, and the algorithm is restarted.\n */\nconst run = <A>(f: (env: Env) => A, options?: Options): Effect.Effect<A, JsonLdError.JsonLdError> =>\n Effect.gen(function* () {\n const loader = yield* getLoader(options);\n const docs = MutableHashMap.empty<string, DocResult>();\n const env = makeEnv(docs, options);\n // Re-run `f` until it no longer stops on a document it has not seen: each\n // stop loads that one document into `docs`, which `f` reads on the next run.\n const go: Effect.Effect<A, JsonLdError.JsonLdError> = Effect.suspend(() => {\n const step = attempt(f, env);\n if (Result.isSuccess(step)) return Effect.succeed(step.success);\n const failure = step.failure;\n if (!(failure instanceof NeedDocument)) return Effect.fail(failure);\n return Effect.flatMap(\n Effect.result(\n loader.load(failure.url, { profile: 'http://www.w3.org/ns/json-ld#context' }),\n ),\n (r) => {\n MutableHashMap.set(docs, failure.url, r);\n return go;\n },\n );\n });\n return yield* go;\n });\n\ninterface ResolvedInput {\n readonly document: Json;\n /** The URL of the document, which is the base IRI (`null`: none) unless one is given. */\n readonly documentUrl: string | null;\n /** A context referenced by an HTTP `Link` header. */\n readonly contextUrl: Option.Option<string>;\n}\n\nconst isRemoteDocument = (u: unknown): u is DocumentLoader.RemoteDocument =>\n isObject(u) && Predicate.isString(u['documentUrl']) && 'document' in u;\n\n/** Resolves an input (an `Input`, or a frame, which is any JSON-LD input). */\nconst resolveInput = (\n input: unknown,\n options?: Options,\n): Effect.Effect<ResolvedInput, JsonLdError.JsonLdError> =>\n Effect.gen(function* () {\n if (isString(input)) {\n const loader = yield* getLoader(options);\n const doc = yield* loader\n .load(input, { extractAllScripts: options?.extractAllScripts })\n .pipe(\n Effect.mapError((e) =>\n e.code === 'loading document failed' || e.code === 'multiple context link headers'\n ? e\n : JsonLdError.make('loading document failed', e.message),\n ),\n );\n return {\n document: doc.document,\n documentUrl: doc.documentUrl,\n contextUrl: Option.fromUndefinedOr(doc.contextUrl),\n };\n }\n if (isRemoteDocument(input)) {\n return {\n document: input.document,\n documentUrl: input.documentUrl,\n contextUrl: Option.fromUndefinedOr(input.contextUrl),\n };\n }\n return { document: input, documentUrl: null, contextUrl: Option.none() };\n });\n\nconst expandSync = (\n env: Env,\n input: ResolvedInput,\n frameExpansion: boolean,\n options?: Options,\n): Array<JsonObject> => {\n const base = options?.base !== undefined ? options.base : input.documentUrl;\n let active: ActiveContext = initialContext(base);\n if (options?.expandContext !== undefined && options.expandContext !== null) {\n // `expandContext` is a JSON value supplied by the caller.\n let ctx: Json = options.expandContext;\n if (isObject(ctx) && '@context' in ctx) ctx = ctx['@context'];\n active = processContext(env, active, ctx, active.originalBase);\n }\n if (Option.isSome(input.contextUrl)) {\n const contextUrl = input.contextUrl.value;\n active = processContext(env, active, contextUrl, contextUrl);\n }\n let expanded = expandElement(\n env,\n active,\n Option.none(),\n input.document,\n input.documentUrl ?? base,\n {\n frameExpansion,\n ordered: options?.ordered ?? false,\n },\n );\n if (isObject(expanded) && Record.keys(expanded).length === 1 && '@graph' in expanded) {\n expanded = expanded['@graph'];\n }\n if (expanded === null || expanded === undefined) expanded = [];\n if (!Array.isArray(expanded)) expanded = [expanded];\n return expanded;\n};\n\nconst compactSync = (\n env: Env,\n expanded: Json,\n context: Json,\n documentUrl: string | null,\n options?: Options,\n): JsonObject => {\n if (isObject(context) && '@context' in context) context = context['@context'];\n const compactToRelative = options?.compactToRelative ?? true;\n const base =\n options?.base !== undefined && options.base !== null\n ? options.base\n : compactToRelative\n ? documentUrl\n : null;\n const contextBase = isString(context) ? context : (options?.base ?? documentUrl ?? null);\n let active = initialContext(base);\n active = processContext(env, active, context ?? null, contextBase);\n const compactOptions = {\n compactArrays: options?.compactArrays ?? true,\n ordered: options?.ordered ?? false,\n compactToRelative,\n };\n let compacted = compactElement(env, active, Option.none(), expanded, compactOptions);\n if (Array.isArray(compacted)) {\n compacted = Arr.isReadonlyArrayEmpty(compacted)\n ? {}\n : { [compactIri(env, active, '@graph', null, true, false, compactOptions)]: compacted };\n }\n if (compacted === null || compacted === undefined) compacted = {};\n if (context !== null && context !== undefined && !isEmptyContext(context)) {\n compacted = { '@context': context, ...compacted };\n }\n return compacted;\n};\n\n// -----------------------------------------------------------------------------\n// API\n// -----------------------------------------------------------------------------\n\n/**\n * Expands a JSON-LD document (JSON-LD 1.1 API, Expansion Algorithm).\n *\n * @since 0.1.0\n * @category algorithms\n */\nexport const expand = (\n input: Input,\n options?: Options,\n): Effect.Effect<Array<JsonObjectValue>, JsonLdError.JsonLdError> =>\n Effect.flatMap(resolveInput(input, options), (resolved) =>\n run((env) => expandSync(env, resolved, false, options), options),\n );\n\n/**\n * Compacts a JSON-LD document against a context (JSON-LD 1.1 API,\n * Compaction Algorithm). The context may be a context definition, an array\n * of contexts, an IRI, or a document with an `@context` entry.\n *\n * @since 0.1.0\n * @category algorithms\n */\nexport const compact = (\n input: Input,\n context: unknown,\n options?: Options,\n): Effect.Effect<JsonObjectValue, JsonLdError.JsonLdError> =>\n Effect.flatMap(resolveInput(input, options), (resolved) =>\n run((env) => {\n const expanded = expandSync(env, resolved, false, { ...options, ordered: false });\n return compactSync(env, expanded, context, resolved.documentUrl, options);\n }, options),\n );\n\n/**\n * Flattens a JSON-LD document (JSON-LD 1.1 API, Flattening Algorithm),\n * optionally compacting the result.\n *\n * @since 0.1.0\n * @category algorithms\n */\nexport const flatten = (\n input: Input,\n context?: unknown,\n options?: Options,\n): Effect.Effect<JsonValue, JsonLdError.JsonLdError> =>\n Effect.flatMap(resolveInput(input, options), (resolved) =>\n run((env) => {\n const expanded = expandSync(env, resolved, false, options);\n const flattened = flattenExpanded(expanded, options?.ordered ?? false);\n if (context === undefined || context === null) return flattened;\n const compacted = compactSync(env, flattened, context, resolved.documentUrl, options);\n return compacted;\n }, options),\n );\n\n/**\n * Frames a JSON-LD document (JSON-LD 1.1 Framing).\n *\n * @since 0.1.0\n * @category algorithms\n */\nexport const frame = (\n input: Input,\n frameInput: unknown,\n options?: FrameOptions,\n): Effect.Effect<JsonObjectValue, JsonLdError.JsonLdError> =>\n Effect.gen(function* () {\n const resolved = yield* resolveInput(input, options);\n // A frame is a JSON-LD input (document, URL or object), as `resolveInput` takes.\n const resolvedFrame = yield* resolveInput(frameInput, options);\n return yield* run((env) => frameSync(env, resolved, resolvedFrame, options), options);\n });\n\n/** The `@context` entry of a document (`null` when it has none). */\nconst contextOf = (document: JsonObject): Json => document['@context'] ?? null;\n\nconst frameSync = (\n env: Env,\n resolved: ResolvedInput,\n resolvedFrame: ResolvedInput,\n options?: FrameOptions,\n): JsonObject => {\n const frameDocument: Json = resolvedFrame.document;\n if (!isObject(frameDocument) && !Array.isArray(frameDocument)) {\n return fail('invalid frame', 'a frame must be a JSON object');\n }\n const context: Json = isObject(frameDocument) ? contextOf(frameDocument) : null;\n const base = options?.base !== undefined ? options.base : resolved.documentUrl;\n const frameBase = resolvedFrame.documentUrl ?? base;\n const frameContext = processContext(env, initialContext(frameBase), context, frameBase);\n const merged = !(\n isObject(frameDocument) &&\n Record.keys(frameDocument).some((k) => expandIri(env, frameContext, k, true) === '@graph')\n );\n const expanded = expandSync(env, resolved, false, { ...options, ordered: false });\n const expandedFrame = expandSync(env, resolvedFrame, true, { ...options, ordered: false });\n const is11 = env.processingMode !== 'json-ld-1.0';\n const framed = frameAlgorithm(expanded, expandedFrame, {\n embed: options?.embed ?? '@once',\n explicit: options?.explicit ?? false,\n omitDefault: options?.omitDefault ?? false,\n requireAll: options?.requireAll ?? false,\n ordered: options?.ordered ?? false,\n merged,\n is11,\n });\n const compactToRelative = options?.compactToRelative ?? true;\n let active = initialContext(\n options?.base != null ? options.base : compactToRelative ? resolved.documentUrl : null,\n );\n active = processContext(env, active, context, frameBase);\n const compactOptions = {\n compactArrays: options?.compactArrays ?? true,\n ordered: options?.ordered ?? false,\n compactToRelative,\n };\n const omitGraph = options?.omitGraph ?? is11;\n let compacted = compactElement(env, active, Option.none(), framed, compactOptions);\n if (omitGraph && Array.isArray(compacted)) {\n if (compacted.length === 1 && compactOptions.compactArrays) compacted = compacted[0];\n } else if (!omitGraph && isObject(compacted)) {\n compacted = [compacted];\n }\n if (Array.isArray(compacted)) {\n const graphKey = compactIri(env, active, '@graph', null, true, false, compactOptions);\n compacted = { [graphKey]: compacted };\n }\n if (compacted === null || compacted === undefined) compacted = {};\n if (context !== null && !isEmptyContext(context)) {\n compacted = { '@context': context, ...compacted };\n }\n return cleanupNull(compacted);\n};\n\n/**\n * Converts a JSON-LD document to an RDF dataset (Deserialize JSON-LD to RDF\n * Algorithm).\n *\n * @since 0.1.0\n * @category algorithms\n */\nexport const toRdf = (\n input: Input,\n options?: ToRdfOptions,\n): Effect.Effect<Dataset.Dataset, JsonLdError.JsonLdError> =>\n Effect.map(toQuads(input, options), Dataset.fromIterable);\n\n/**\n * Like `toRdf`, but returns the quads in document order.\n *\n * @since 0.1.0\n * @category algorithms\n */\nexport const toQuads = (\n input: Input,\n options?: ToRdfOptions,\n): Effect.Effect<ReadonlyArray<Term.Quad>, JsonLdError.JsonLdError> => quadsOf(input, options);\n\n/** `toQuads` over any parsed JSON document. */\nconst quadsOf = (\n input: unknown,\n options?: ToRdfOptions,\n): Effect.Effect<ReadonlyArray<Term.Quad>, JsonLdError.JsonLdError> =>\n Effect.flatMap(resolveInput(input, options), (resolved) =>\n run((env) => {\n const expanded = expandSync(env, resolved, false, options);\n return Rdf.toRdf(expanded, {\n produceGeneralizedRdf: options?.produceGeneralizedRdf ?? false,\n rdfDirection: Option.fromNullishOr(options?.rdfDirection),\n });\n }, options),\n );\n\n/**\n * Converts RDF quads to expanded JSON-LD (Serialize RDF as JSON-LD\n * Algorithm).\n *\n * @since 0.1.0\n * @category algorithms\n */\nexport const fromRdf = (\n quads: Iterable<Term.Quad>,\n options?: FromRdfOptions,\n): Effect.Effect<Array<JsonObjectValue>, JsonLdError.JsonLdError> =>\n Effect.try({\n try: () =>\n Rdf.fromRdf(quads, {\n rdfDirection: Option.fromNullishOr(options?.rdfDirection),\n useNativeTypes: options?.useNativeTypes ?? false,\n useRdfType: options?.useRdfType ?? false,\n ordered: options?.ordered ?? false,\n processingMode: options?.processingMode ?? 'json-ld-1.1',\n }),\n catch: (e) =>\n JsonLdError.isJsonLdError(e) ? e : JsonLdError.make('invalid JSON literal', String(e)),\n });\n\n// -----------------------------------------------------------------------------\n// Codec\n// -----------------------------------------------------------------------------\n\n/**\n * The JSON-LD format.\n *\n * @since 0.1.0\n * @category formats\n */\nexport const format: Serialization.Format = Serialization.makeFormat({\n name: 'JSON-LD',\n mediaType: 'application/ld+json',\n extensions: ['jsonld'],\n datasets: true,\n});\n\n// Spans are named `JsonLd.parse`, `JsonLd.serialize`.\nconst trace: Serialization.SpanTarget = { module: 'JsonLd', format };\n\n/**\n * Options for parsing JSON-LD documents to RDF.\n *\n * @since 0.1.0\n * @category options\n */\nexport interface ParseOptions extends Serialization.ParseOptions, ToRdfOptions {}\n\n/**\n * Options for serialising RDF as JSON-LD.\n *\n * @since 0.1.0\n * @category options\n */\nexport interface SerializeOptions extends Serialization.SerializeOptions, FromRdfOptions {\n /** A context to compact the output with. */\n readonly context?: unknown;\n /** Replace single-element arrays by their element. Defaults to `true`. */\n readonly compactArrays?: boolean | undefined;\n /** JSON indentation. Defaults to 2; use 0 for compact output. */\n readonly indent?: number | undefined;\n readonly documentLoader?: DocumentLoader.Loader | undefined;\n}\n\n// A sticky scanner for `jsonErrorOffset`: JSON whitespace.\nconst JSON_WS = /[ \\t\\n\\r]*/y;\n\n/** Finds the offset of the first JSON syntax error in `input`. */\nconst jsonErrorOffset = (input: string): number => {\n let i = 0;\n const scan = (re: RegExp) => {\n re.lastIndex = i;\n re.exec(input);\n i = re.lastIndex;\n };\n const ws = () => scan(JSON_WS);\n const stop = (): never => {\n throw i;\n };\n const literal = (word: string) => {\n if (input.startsWith(word, i)) i += word.length;\n else stop();\n };\n const string = () => {\n i++;\n // One character (or escape) per step, up to the closing quote.\n loop(true, () => {\n if (i >= input.length || input[i] === '\"') return Option.none();\n if (input[i] === '\\\\') i++;\n else if (input.charCodeAt(i) < 0x20) stop();\n i++;\n return Option.some(true);\n });\n if (i >= input.length) stop();\n i++;\n };\n const value = (): void => {\n ws();\n const c = input[i];\n if (c === '{' || c === '[') {\n const close = c === '{' ? '}' : ']';\n i++;\n ws();\n if (input[i] === close) {\n i++;\n return;\n }\n // One member per step, until the closing bracket.\n loop(true, () => {\n if (c === '{') {\n ws();\n if (input[i] !== '\"') stop();\n string();\n ws();\n if (input[i] !== ':') stop();\n i++;\n }\n value();\n ws();\n if (input[i] === ',') {\n i++;\n return Option.some(true);\n }\n if (input[i] !== close) stop();\n i++;\n return Option.none();\n });\n } else if (c === '\"') string();\n else if (c === 't') literal('true');\n else if (c === 'f') literal('false');\n else if (c === 'n') literal('null');\n else {\n const m = /^-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+-]?[0-9]+)?/.exec(input.slice(i));\n if (m === null || m[0] === '') return stop();\n i += m[0].length;\n }\n };\n // `stop` throws at the offending offset, which is `i`.\n return Result.merge(\n Result.try({\n try: () => {\n value();\n ws();\n return i;\n },\n catch: () => i,\n }),\n );\n};\n\nconst positionOf = (input: string) => {\n const pos = jsonErrorOffset(input);\n const before = input.slice(0, pos);\n return { line: before.split('\\n').length, column: pos - before.lastIndexOf('\\n') };\n};\n\n/**\n * Parses a JSON-LD document into RDF.\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parse = (\n input: string,\n options?: ParseOptions,\n): Effect.Effect<Serialization.ParseResult, Serialization.RdfParseError> =>\n Effect.gen(function* () {\n const json = yield* Effect.fromResult(parseJson(input)).pipe(\n Effect.mapError(\n (e) =>\n new Serialization.RdfParseError({\n format: format.name,\n message: `invalid JSON: ${String(e)}`,\n ...positionOf(input),\n }),\n ),\n );\n const base = options?.base !== undefined ? options.base : (options?.baseIri ?? null);\n const quads = yield* quadsOf(json, { ...options, base }).pipe(\n Effect.mapError(\n (e) => new Serialization.RdfParseError({ format: format.name, message: e.message }),\n ),\n );\n const prefix = options?.blankNodePrefix ?? Serialization.freshBlankNodePrefix();\n const graph = options?.graph;\n const relabel = (t: Term.Term): Term.Term =>\n Term.isBlankNode(t) ? Term.blankNode(`${prefix}${t.value}`) : t;\n const dataset = Dataset.fromIterable(\n quads.map((q) => {\n const relabelled = Term.mapTerms(q, relabel);\n return graph !== undefined && Term.isDefaultGraph(relabelled.graph)\n ? Term.quad(relabelled.subject, relabelled.predicate, relabelled.object, graph)\n : relabelled;\n }),\n );\n return {\n dataset,\n prefixes: prefixesOf(json),\n baseIri: base ?? undefined,\n };\n }).pipe(Serialization.withParseSpan(trace, input));\n\nconst prefixesOf = (json: Json): PrefixMap.PrefixMap => {\n const entries: Array<[string, string]> = [];\n const visit = (ctx: Json): void => {\n if (Array.isArray(ctx)) ctx.forEach(visit);\n else if (isObject(ctx)) {\n Record.keys(ctx).forEach((k) => {\n if (k.startsWith('@') || k.includes(':')) return;\n const v = ctx[k];\n const iri = isString(v) ? v : isObject(v) && isString(v['@id']) ? v['@id'] : undefined;\n if (iri !== undefined && /[/#:]$/.test(iri) && /^[a-z][a-z0-9+.-]*:/i.test(iri)) {\n entries.push([k, iri]);\n }\n });\n }\n };\n if (isObject(json)) visit(json['@context']);\n return PrefixMap.make(entries);\n};\n\n/**\n * Serialises quads as a JSON-LD document. Without a context (and without\n * prefixes) the output is expanded JSON-LD; otherwise it is compacted with\n * the given context, extended with one term per prefix.\n *\n * @since 0.1.0\n * @category serializing\n */\nexport const serialize = (\n quads: Iterable<Term.Quad>,\n options?: SerializeOptions,\n): Effect.Effect<string, Serialization.RdfSerializeError> =>\n Effect.gen(function* () {\n const expanded = yield* fromRdf(quads, options);\n let context: Json = options?.context ?? null;\n if (isObject(context) && '@context' in context) context = context['@context'];\n if (options?.prefixes !== undefined && options.prefixes.prefixes.size > 0) {\n const prefixContext: JsonObject = {};\n options.prefixes.prefixes.forEach((namespace, prefix) => {\n prefixContext[prefix] = namespace;\n });\n if (options.baseIri !== undefined) prefixContext['@base'] = options.baseIri;\n context =\n context === null\n ? prefixContext\n : Array.isArray(context)\n ? [prefixContext, ...context]\n : [prefixContext, context];\n }\n const output: Json =\n context === null\n ? expanded\n : yield* compact(expanded, context, {\n base: options?.baseIri ?? null,\n compactArrays: options?.compactArrays,\n processingMode: options?.processingMode,\n documentLoader: options?.documentLoader,\n });\n return yield* Schema.encodeEffect(\n Schema.fromJsonString(Schema.Unknown, { space: options?.indent ?? 2 }),\n )(output);\n }).pipe(\n Effect.mapError(\n (e) => new Serialization.RdfSerializeError({ format: format.name, message: e.message }),\n ),\n Serialization.withSerializeSpan(trace),\n );\n\n/**\n * The JSON-LD parser.\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parser: Serialization.Parser<ParseOptions> = Serialization.makeParser({\n format,\n parse,\n});\n\n/**\n * The JSON-LD serializer.\n *\n * @since 0.1.0\n * @category serializing\n */\nexport const serializer: Serialization.Serializer<SerializeOptions> = Serialization.makeSerializer({\n format,\n serialize,\n});\n\n/**\n * The JSON-LD codec.\n *\n * @since 0.1.0\n * @category codecs\n */\nexport const codec: Serialization.Codec<ParseOptions, SerializeOptions> = Serialization.makeCodec(\n parser,\n serializer,\n);\n"],"mappings":"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"}