@thomasfosterau/effect-rdf 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (776) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2250 -1
  3. package/dist/Algebra-CGG4oae3.mjs +433 -0
  4. package/dist/Algebra-CGG4oae3.mjs.map +1 -0
  5. package/dist/Algebra-uGsIEOUA.d.mts +446 -0
  6. package/dist/Ast-CPRZmBvk.mjs +552 -0
  7. package/dist/Ast-CPRZmBvk.mjs.map +1 -0
  8. package/dist/Ast-vcw2W-lf.d.mts +827 -0
  9. package/dist/Bindings-Ck3m7JRC.mjs +249 -0
  10. package/dist/Bindings-Ck3m7JRC.mjs.map +1 -0
  11. package/dist/Bindings-DiKpBd7f.d.mts +153 -0
  12. package/dist/ClientErrors-CpXdFX5u.mjs +128 -0
  13. package/dist/ClientErrors-CpXdFX5u.mjs.map +1 -0
  14. package/dist/ClientErrors-D4IZHUM-.d.mts +101 -0
  15. package/dist/ClientFormats-CXomkXLV.mjs +73 -0
  16. package/dist/ClientFormats-CXomkXLV.mjs.map +1 -0
  17. package/dist/ClientFormats-Dm57ZPwR.d.mts +36 -0
  18. package/dist/Csv2Json-DynEcwCh.mjs +194 -0
  19. package/dist/Csv2Json-DynEcwCh.mjs.map +1 -0
  20. package/dist/Csv2Json-aXNVDoXQ.d.mts +40 -0
  21. package/dist/Csv2Rdf-8maXP6mt.d.mts +41 -0
  22. package/dist/Csv2Rdf-DuSEkaKE.mjs +161 -0
  23. package/dist/Csv2Rdf-DuSEkaKE.mjs.map +1 -0
  24. package/dist/Dataset-BlmlcI7J.mjs +782 -0
  25. package/dist/Dataset-BlmlcI7J.mjs.map +1 -0
  26. package/dist/Dataset-DS3ESOcO.d.mts +426 -0
  27. package/dist/Dataset.d.mts +2 -0
  28. package/dist/Dataset.mjs +1 -0
  29. package/dist/Datatype-CxMpamHC.d.mts +212 -0
  30. package/dist/Datatype-DQvkNkiH.mjs +1001 -0
  31. package/dist/Datatype-DQvkNkiH.mjs.map +1 -0
  32. package/dist/Dialect-8ChFj5EX.d.mts +113 -0
  33. package/dist/Dialect-CzVH38uo.mjs +165 -0
  34. package/dist/Dialect-CzVH38uo.mjs.map +1 -0
  35. package/dist/DocumentLoader-D3lZREnB.mjs +346 -0
  36. package/dist/DocumentLoader-D3lZREnB.mjs.map +1 -0
  37. package/dist/DocumentLoader-ZUCEVrW5.d.mts +178 -0
  38. package/dist/DublinCore-AnwqxRx6.mjs +137 -0
  39. package/dist/DublinCore-AnwqxRx6.mjs.map +1 -0
  40. package/dist/DublinCore-Dq-tVA5d.d.mts +119 -0
  41. package/dist/Engine-CYPB3g4h.d.mts +144 -0
  42. package/dist/Engine-DF8PN7g-.mjs +872 -0
  43. package/dist/Engine-DF8PN7g-.mjs.map +1 -0
  44. package/dist/Errors-CMdV1RhU.mjs +37 -0
  45. package/dist/Errors-CMdV1RhU.mjs.map +1 -0
  46. package/dist/Errors-u2bDjUeM.d.mts +30 -0
  47. package/dist/Evaluator-DEsU4d1o.d.mts +50 -0
  48. package/dist/Evaluator-DOY2-guC.mjs +281 -0
  49. package/dist/Evaluator-DOY2-guC.mjs.map +1 -0
  50. package/dist/Exif-CpqniYQd.d.mts +78 -0
  51. package/dist/Exif-DjkCfEB-.mjs +89 -0
  52. package/dist/Exif-DjkCfEB-.mjs.map +1 -0
  53. package/dist/Expression-BIMMvduQ.mjs +230 -0
  54. package/dist/Expression-BIMMvduQ.mjs.map +1 -0
  55. package/dist/Expression-W8A9cyX7.d.mts +89 -0
  56. package/dist/Extract-Bop85jES.mjs +220 -0
  57. package/dist/Extract-Bop85jES.mjs.map +1 -0
  58. package/dist/Extract-C_pCvuTC.d.mts +88 -0
  59. package/dist/Federation-BcNrozc1.d.mts +52 -0
  60. package/dist/Federation-CHScBkaK.mjs +130 -0
  61. package/dist/Federation-CHScBkaK.mjs.map +1 -0
  62. package/dist/Functions-AvjNcId_.mjs +1346 -0
  63. package/dist/Functions-AvjNcId_.mjs.map +1 -0
  64. package/dist/Functions-OQJZP-F6.d.mts +111 -0
  65. package/dist/Generator-C52mmq01.d.mts +50 -0
  66. package/dist/Generator-D3utCJC7.mjs +205 -0
  67. package/dist/Generator-D3utCJC7.mjs.map +1 -0
  68. package/dist/Grammar-CPlSxGH6.mjs +200 -0
  69. package/dist/Grammar-CPlSxGH6.mjs.map +1 -0
  70. package/dist/Grammar-CRhnRoCu.d.mts +148 -0
  71. package/dist/Grammar-D6jZdJQ3.d.mts +169 -0
  72. package/dist/Grammar-mQ8CgE1M.mjs +258 -0
  73. package/dist/Grammar-mQ8CgE1M.mjs.map +1 -0
  74. package/dist/GraphStore-DhUa4nFO.d.mts +45 -0
  75. package/dist/GraphStore-DvbqwKy1.mjs +212 -0
  76. package/dist/GraphStore-DvbqwKy1.mjs.map +1 -0
  77. package/dist/Iri-BB8Ks-BF.d.mts +84 -0
  78. package/dist/Iri-Cr92gsQV.mjs +232 -0
  79. package/dist/Iri-Cr92gsQV.mjs.map +1 -0
  80. package/dist/Iri.d.mts +2 -0
  81. package/dist/Iri.mjs +1 -0
  82. package/dist/Isomorphism-B6qTY-xy.d.mts +28 -0
  83. package/dist/Isomorphism-BmqxhKyJ.mjs +232 -0
  84. package/dist/Isomorphism-BmqxhKyJ.mjs.map +1 -0
  85. package/dist/Isomorphism-DInKnWIy.mjs +390 -0
  86. package/dist/Isomorphism-DInKnWIy.mjs.map +1 -0
  87. package/dist/Isomorphism-DvSfZXLR.d.mts +37 -0
  88. package/dist/Isomorphism.d.mts +2 -0
  89. package/dist/Isomorphism.mjs +1 -0
  90. package/dist/JsonLd-DOwS2FHg.mjs +2836 -0
  91. package/dist/JsonLd-DOwS2FHg.mjs.map +1 -0
  92. package/dist/JsonLd-DobFrQNa.d.mts +242 -0
  93. package/dist/JsonLdError-C9J-BxfG.mjs +106 -0
  94. package/dist/JsonLdError-C9J-BxfG.mjs.map +1 -0
  95. package/dist/JsonLdError-DSOfHkOy.d.mts +43 -0
  96. package/dist/LanguageTag-BCu8rcmX.d.mts +38 -0
  97. package/dist/LanguageTag-BcOpMGZ4.mjs +89 -0
  98. package/dist/LanguageTag-BcOpMGZ4.mjs.map +1 -0
  99. package/dist/LanguageTag.d.mts +2 -0
  100. package/dist/LanguageTag.mjs +1 -0
  101. package/dist/Lexical-Cg0JHrf6.mjs +243 -0
  102. package/dist/Lexical-Cg0JHrf6.mjs.map +1 -0
  103. package/dist/Lexical-D3zySYVS.d.mts +163 -0
  104. package/dist/Manifest-B6xf6mUc.mjs +148 -0
  105. package/dist/Manifest-B6xf6mUc.mjs.map +1 -0
  106. package/dist/Manifest-DQUMRBFr.d.mts +98 -0
  107. package/dist/Mapping-BgG74x3U.d.mts +63 -0
  108. package/dist/Mapping-Dc1ZGirk.mjs +259 -0
  109. package/dist/Mapping-Dc1ZGirk.mjs.map +1 -0
  110. package/dist/Mcp-1DwTTKOK.mjs +48 -0
  111. package/dist/Mcp-1DwTTKOK.mjs.map +1 -0
  112. package/dist/Mcp-d-pX9erx.d.mts +25 -0
  113. package/dist/Message-CK_DGQuu.mjs +95 -0
  114. package/dist/Message-CK_DGQuu.mjs.map +1 -0
  115. package/dist/Message-fIvTJSXM.d.mts +49 -0
  116. package/dist/Metadata-BbffwGDZ.mjs +445 -0
  117. package/dist/Metadata-BbffwGDZ.mjs.map +1 -0
  118. package/dist/Metadata-CEt3yc1-.d.mts +901 -0
  119. package/dist/Metadata-D4HsQNXr.mjs +1273 -0
  120. package/dist/Metadata-D4HsQNXr.mjs.map +1 -0
  121. package/dist/Metadata-nzS7QKRj.d.mts +350 -0
  122. package/dist/Model-DaMmxurZ.d.mts +293 -0
  123. package/dist/Model-DlPzRYhF.mjs +528 -0
  124. package/dist/Model-DlPzRYhF.mjs.map +1 -0
  125. package/dist/N3-BzyV-KIH.mjs +974 -0
  126. package/dist/N3-BzyV-KIH.mjs.map +1 -0
  127. package/dist/N3-DSLnonDn.d.mts +100 -0
  128. package/dist/NQuads-C1VBOJ3-.mjs +117 -0
  129. package/dist/NQuads-C1VBOJ3-.mjs.map +1 -0
  130. package/dist/NQuads-FjFZikFg.d.mts +76 -0
  131. package/dist/NTriples-D-kLSEAf.mjs +120 -0
  132. package/dist/NTriples-D-kLSEAf.mjs.map +1 -0
  133. package/dist/NTriples-D34OspfW.d.mts +76 -0
  134. package/dist/Namespace-ClTUO_ya.d.mts +42 -0
  135. package/dist/Namespace-DHFIsORd.mjs +75 -0
  136. package/dist/Namespace-DHFIsORd.mjs.map +1 -0
  137. package/dist/Namespace.d.mts +2 -0
  138. package/dist/Namespace.mjs +1 -0
  139. package/dist/Namespaces-Bz85vpjW.mjs +235 -0
  140. package/dist/Namespaces-Bz85vpjW.mjs.map +1 -0
  141. package/dist/Namespaces-C1jW6EDo.d.mts +178 -0
  142. package/dist/Optimizer-BWWQRQPY.mjs +168 -0
  143. package/dist/Optimizer-BWWQRQPY.mjs.map +1 -0
  144. package/dist/Optimizer-DUpUow6k.d.mts +26 -0
  145. package/dist/Options-BLBGL4HE.mjs +72 -0
  146. package/dist/Options-BLBGL4HE.mjs.map +1 -0
  147. package/dist/Options-BommQwP9.d.mts +127 -0
  148. package/dist/Packet-CA76wVX3.mjs +197 -0
  149. package/dist/Packet-CA76wVX3.mjs.map +1 -0
  150. package/dist/Packet-Cy5g6XuW.d.mts +130 -0
  151. package/dist/Parser-p1Gyr0QN.d.mts +85 -0
  152. package/dist/Parser-xARsOWXk.mjs +1317 -0
  153. package/dist/Parser-xARsOWXk.mjs.map +1 -0
  154. package/dist/Path-B20Yp8KE.mjs +284 -0
  155. package/dist/Path-B20Yp8KE.mjs.map +1 -0
  156. package/dist/Path-DRB8e-Zn.d.mts +181 -0
  157. package/dist/Pdf-B9RZn--8.d.mts +77 -0
  158. package/dist/Pdf-CKK6dkZn.mjs +89 -0
  159. package/dist/Pdf-CKK6dkZn.mjs.map +1 -0
  160. package/dist/PdfA-CUjSuntT.d.mts +109 -0
  161. package/dist/PdfA-CleOhuL6.mjs +124 -0
  162. package/dist/PdfA-CleOhuL6.mjs.map +1 -0
  163. package/dist/Photoshop-CiHo80qV.mjs +233 -0
  164. package/dist/Photoshop-CiHo80qV.mjs.map +1 -0
  165. package/dist/Photoshop-udKZ0I3N.d.mts +204 -0
  166. package/dist/PrefixMap-BHFPDLO-.mjs +103 -0
  167. package/dist/PrefixMap-BHFPDLO-.mjs.map +1 -0
  168. package/dist/PrefixMap-BMlXrWNd.d.mts +64 -0
  169. package/dist/PrefixMap.d.mts +2 -0
  170. package/dist/PrefixMap.mjs +1 -0
  171. package/dist/Processor-CMmecFsb.mjs +198 -0
  172. package/dist/Processor-CMmecFsb.mjs.map +1 -0
  173. package/dist/Processor-FJPvO0CB.d.mts +435 -0
  174. package/dist/Protocol-BA7OkNgp.mjs +202 -0
  175. package/dist/Protocol-BA7OkNgp.mjs.map +1 -0
  176. package/dist/Protocol-DlSoiIKB.d.mts +108 -0
  177. package/dist/ProtocolErrors-Ckfejnl6.d.mts +84 -0
  178. package/dist/ProtocolErrors-czDPVcX5.mjs +129 -0
  179. package/dist/ProtocolErrors-czDPVcX5.mjs.map +1 -0
  180. package/dist/Query-D9A6LOpP.mjs +364 -0
  181. package/dist/Query-D9A6LOpP.mjs.map +1 -0
  182. package/dist/Query-KqSkTYyG.d.mts +96 -0
  183. package/dist/QueryBuilder-BLK9Vfbz.mjs +674 -0
  184. package/dist/QueryBuilder-BLK9Vfbz.mjs.map +1 -0
  185. package/dist/QueryBuilder-DUqh4ECe.d.mts +529 -0
  186. package/dist/RdfJs-D6-49XB5.mjs +86 -0
  187. package/dist/RdfJs-D6-49XB5.mjs.map +1 -0
  188. package/dist/RdfJs-DXFqdWrd.d.mts +76 -0
  189. package/dist/RdfJs.d.mts +2 -0
  190. package/dist/RdfJs.mjs +1 -0
  191. package/dist/RdfJson-5aKPDlPS.d.mts +297 -0
  192. package/dist/RdfJson-BNocgW4f.mjs +548 -0
  193. package/dist/RdfJson-BNocgW4f.mjs.map +1 -0
  194. package/dist/RdfXml-DJ9G4gOq.mjs +1014 -0
  195. package/dist/RdfXml-DJ9G4gOq.mjs.map +1 -0
  196. package/dist/RdfXml-_N7yxWEp.d.mts +149 -0
  197. package/dist/Rdfs-BRVPsAjc.d.mts +84 -0
  198. package/dist/Rdfs-CyY2wVHI.mjs +167 -0
  199. package/dist/Rdfs-CyY2wVHI.mjs.map +1 -0
  200. package/dist/Rdfs.d.mts +2 -0
  201. package/dist/Rdfs.mjs +1 -0
  202. package/dist/Reasoner-BxYhx9s7.d.mts +94 -0
  203. package/dist/Reasoner-Cw90zrjv.mjs +798 -0
  204. package/dist/Reasoner-Cw90zrjv.mjs.map +1 -0
  205. package/dist/Reification-BmN4EfnM.d.mts +40 -0
  206. package/dist/Reification-dpqQvjDE.mjs +82 -0
  207. package/dist/Reification-dpqQvjDE.mjs.map +1 -0
  208. package/dist/Reification.d.mts +2 -0
  209. package/dist/Reification.mjs +1 -0
  210. package/dist/Report-XHs8htzK.mjs +121 -0
  211. package/dist/Report-XHs8htzK.mjs.map +1 -0
  212. package/dist/Report-hcXsc_19.d.mts +115 -0
  213. package/dist/Resource-B1cI8FyJ.d.mts +218 -0
  214. package/dist/Resource-sIEeNh15.mjs +374 -0
  215. package/dist/Resource-sIEeNh15.mjs.map +1 -0
  216. package/dist/Resource.d.mts +2 -0
  217. package/dist/Resource.mjs +1 -0
  218. package/dist/Results-BVNEC-Wt.d.mts +277 -0
  219. package/dist/Results-peJjGA2V.mjs +621 -0
  220. package/dist/Results-peJjGA2V.mjs.map +1 -0
  221. package/dist/ResultsStream-BhF0OcNn.mjs +639 -0
  222. package/dist/ResultsStream-BhF0OcNn.mjs.map +1 -0
  223. package/dist/ResultsStream-toYMXrOe.d.mts +100 -0
  224. package/dist/SemAct-CDchtk49.d.mts +96 -0
  225. package/dist/SemAct-CmyT4yI8.mjs +118 -0
  226. package/dist/SemAct-CmyT4yI8.mjs.map +1 -0
  227. package/dist/Serialization-DP9H5bYQ.mjs +514 -0
  228. package/dist/Serialization-DP9H5bYQ.mjs.map +1 -0
  229. package/dist/Serialization-Df8iVauT.d.mts +392 -0
  230. package/dist/Serialization.d.mts +2 -0
  231. package/dist/Serialization.mjs +1 -0
  232. package/dist/ServerFormats-CrRnjjf6.mjs +64 -0
  233. package/dist/ServerFormats-CrRnjjf6.mjs.map +1 -0
  234. package/dist/ServerFormats-DjC9NsO_.d.mts +36 -0
  235. package/dist/ServiceDescription-BERsvg-k.d.mts +54 -0
  236. package/dist/ServiceDescription-Dq5hxeGy.mjs +97 -0
  237. package/dist/ServiceDescription-Dq5hxeGy.mjs.map +1 -0
  238. package/dist/ShExC-Ctf-06CL.d.mts +67 -0
  239. package/dist/ShExC-DJbB19i3.mjs +1181 -0
  240. package/dist/ShExC-DJbB19i3.mjs.map +1 -0
  241. package/dist/ShExError-BeYFD9rv.d.mts +61 -0
  242. package/dist/ShExError-CVtq2NnM.mjs +64 -0
  243. package/dist/ShExError-CVtq2NnM.mjs.map +1 -0
  244. package/dist/ShExJ-C1u_wgyD.d.mts +531 -0
  245. package/dist/ShExJ-COiPd9Xw.mjs +532 -0
  246. package/dist/ShExJ-COiPd9Xw.mjs.map +1 -0
  247. package/dist/ShExR-ByR4mCh-.mjs +480 -0
  248. package/dist/ShExR-ByR4mCh-.mjs.map +1 -0
  249. package/dist/ShExR-CqONNNBz.d.mts +40 -0
  250. package/dist/ShapeMap-C422pxKl.d.mts +140 -0
  251. package/dist/ShapeMap-CsgKxB2G.mjs +181 -0
  252. package/dist/ShapeMap-CsgKxB2G.mjs.map +1 -0
  253. package/dist/Shapes-18GjfyBV.mjs +597 -0
  254. package/dist/Shapes-18GjfyBV.mjs.map +1 -0
  255. package/dist/Shapes-BQFDFc4Q.d.mts +306 -0
  256. package/dist/Sparql-BiYFMSpl.mjs +29 -0
  257. package/dist/Sparql-BiYFMSpl.mjs.map +1 -0
  258. package/dist/Sparql-DecpWTPh.d.mts +97 -0
  259. package/dist/SparqlClient-C_CjXbwj.mjs +333 -0
  260. package/dist/SparqlClient-C_CjXbwj.mjs.map +1 -0
  261. package/dist/SparqlClient-UPc88SHy.d.mts +290 -0
  262. package/dist/SparqlServer-CbUW-pVj.d.mts +71 -0
  263. package/dist/SparqlServer-Db7w7Cll.mjs +308 -0
  264. package/dist/SparqlServer-Db7w7Cll.mjs.map +1 -0
  265. package/dist/SqlStore-BBqFx-Wl.mjs +684 -0
  266. package/dist/SqlStore-BBqFx-Wl.mjs.map +1 -0
  267. package/dist/SqlStore-CCJo5I-e.d.mts +117 -0
  268. package/dist/Store-D0jmVfb3.d.mts +166 -0
  269. package/dist/Store-DH3Ow1GO.mjs +162 -0
  270. package/dist/Store-DH3Ow1GO.mjs.map +1 -0
  271. package/dist/Structure-BjMo4Bkc.mjs +334 -0
  272. package/dist/Structure-BjMo4Bkc.mjs.map +1 -0
  273. package/dist/Structure-n4CmDiab.d.mts +63 -0
  274. package/dist/Table-BGgm9nbM.mjs +538 -0
  275. package/dist/Table-BGgm9nbM.mjs.map +1 -0
  276. package/dist/Table-C3reiVrb.d.mts +261 -0
  277. package/dist/Term-B_4ezyXq.d.mts +619 -0
  278. package/dist/Term-CFLG1qu4.mjs +991 -0
  279. package/dist/Term-CFLG1qu4.mjs.map +1 -0
  280. package/dist/Term.d.mts +2 -0
  281. package/dist/Term.mjs +1 -0
  282. package/dist/TermCodec-CDZiEztW.mjs +397 -0
  283. package/dist/TermCodec-CDZiEztW.mjs.map +1 -0
  284. package/dist/TermCodec-_03bDXr0.d.mts +209 -0
  285. package/dist/TermCodec.d.mts +2 -0
  286. package/dist/TermCodec.mjs +1 -0
  287. package/dist/TermJson-BOPe0yve.d.mts +232 -0
  288. package/dist/TermJson-FAg3lvjl.mjs +142 -0
  289. package/dist/TermJson-FAg3lvjl.mjs.map +1 -0
  290. package/dist/TermJson.d.mts +2 -0
  291. package/dist/TermJson.mjs +1 -0
  292. package/dist/TermSchema-Bn9CoaYA.mjs +30 -0
  293. package/dist/TermSchema-Bn9CoaYA.mjs.map +1 -0
  294. package/dist/TermSchema-DBO6MroX.d.mts +6 -0
  295. package/dist/Testing-B-aPCpmu.mjs +63 -0
  296. package/dist/Testing-B-aPCpmu.mjs.map +1 -0
  297. package/dist/Testing-CF6s8P3O.d.mts +53 -0
  298. package/dist/Tiff-CR-2QeSI.d.mts +148 -0
  299. package/dist/Tiff-DlsOlZPM.mjs +169 -0
  300. package/dist/Tiff-DlsOlZPM.mjs.map +1 -0
  301. package/dist/Tools-7MdRKccr.d.mts +583 -0
  302. package/dist/Tools-ryxphZbI.mjs +329 -0
  303. package/dist/Tools-ryxphZbI.mjs.map +1 -0
  304. package/dist/Translate-B0YKKANS.d.mts +37 -0
  305. package/dist/Translate-gzWPq0Ia.mjs +308 -0
  306. package/dist/Translate-gzWPq0Ia.mjs.map +1 -0
  307. package/dist/Translation-DC9rLm2y.mjs +1535 -0
  308. package/dist/Translation-DC9rLm2y.mjs.map +1 -0
  309. package/dist/Translation-K4L9XBqX.d.mts +103 -0
  310. package/dist/TriG-BkqtqZ6Y.mjs +125 -0
  311. package/dist/TriG-BkqtqZ6Y.mjs.map +1 -0
  312. package/dist/TriG-xDjdDatp.d.mts +86 -0
  313. package/dist/Turtle-Bv1_bisW.d.mts +85 -0
  314. package/dist/Turtle-CZVUOtwl.mjs +133 -0
  315. package/dist/Turtle-CZVUOtwl.mjs.map +1 -0
  316. package/dist/ValidationReport-DBdJshW5.mjs +285 -0
  317. package/dist/ValidationReport-DBdJshW5.mjs.map +1 -0
  318. package/dist/ValidationReport-Dx3WxY0h.d.mts +192 -0
  319. package/dist/Validator-227ff9Rn.d.mts +179 -0
  320. package/dist/Validator-BzXMKDeJ.mjs +1162 -0
  321. package/dist/Validator-BzXMKDeJ.mjs.map +1 -0
  322. package/dist/Validator-Dl8cih5V.d.mts +207 -0
  323. package/dist/Validator-DmUfMbpL.mjs +568 -0
  324. package/dist/Validator-DmUfMbpL.mjs.map +1 -0
  325. package/dist/Vocab-DceKywpq.mjs +168 -0
  326. package/dist/Vocab-DceKywpq.mjs.map +1 -0
  327. package/dist/Vocab-Df-L-IwZ.d.mts +46 -0
  328. package/dist/Vocab-Do56UgBX.d.mts +81 -0
  329. package/dist/Vocab-TfpWG1Ne.mjs +118 -0
  330. package/dist/Vocab-TfpWG1Ne.mjs.map +1 -0
  331. package/dist/Vocab.d.mts +2 -0
  332. package/dist/Vocab.mjs +1 -0
  333. package/dist/Vocabulary-C6-GPOy4.d.mts +22 -0
  334. package/dist/Vocabulary-CnQl-_Z4.mjs +179 -0
  335. package/dist/Vocabulary-CnQl-_Z4.mjs.map +1 -0
  336. package/dist/Xml-B7iihYCS.mjs +976 -0
  337. package/dist/Xml-B7iihYCS.mjs.map +1 -0
  338. package/dist/Xml-CmfHS7SW.d.mts +267 -0
  339. package/dist/Xmp-D7CKA7MZ.d.mts +111 -0
  340. package/dist/Xmp-DCGN9pOD.mjs +307 -0
  341. package/dist/Xmp-DCGN9pOD.mjs.map +1 -0
  342. package/dist/XmpBasic-CP38jpR_.mjs +73 -0
  343. package/dist/XmpBasic-CP38jpR_.mjs.map +1 -0
  344. package/dist/XmpBasic-Cmbe53rQ.d.mts +64 -0
  345. package/dist/XmpMM-BfL_TgJF.mjs +73 -0
  346. package/dist/XmpMM-BfL_TgJF.mjs.map +1 -0
  347. package/dist/XmpMM-Dqm3IX8p.d.mts +63 -0
  348. package/dist/XmpRights-BKPtoI5L.mjs +73 -0
  349. package/dist/XmpRights-BKPtoI5L.mjs.map +1 -0
  350. package/dist/XmpRights-CaALZQz2.d.mts +63 -0
  351. package/dist/Xsd-Cdgx5zRB.mjs +405 -0
  352. package/dist/Xsd-Cdgx5zRB.mjs.map +1 -0
  353. package/dist/Xsd-D2elNhSm.d.mts +187 -0
  354. package/dist/Xsd.d.mts +2 -0
  355. package/dist/Xsd.mjs +1 -0
  356. package/dist/accessors-CEjaojuQ.mjs +28 -0
  357. package/dist/accessors-CEjaojuQ.mjs.map +1 -0
  358. package/dist/codec-Lb2T96rv.d.mts +20 -0
  359. package/dist/codec-QNo7IdJF.mjs +389 -0
  360. package/dist/codec-QNo7IdJF.mjs.map +1 -0
  361. package/dist/csvw/Csv2Json.d.mts +2 -0
  362. package/dist/csvw/Csv2Json.mjs +1 -0
  363. package/dist/csvw/Csv2Rdf.d.mts +2 -0
  364. package/dist/csvw/Csv2Rdf.mjs +1 -0
  365. package/dist/csvw/Datatype.d.mts +2 -0
  366. package/dist/csvw/Datatype.mjs +1 -0
  367. package/dist/csvw/Metadata.d.mts +2 -0
  368. package/dist/csvw/Metadata.mjs +1 -0
  369. package/dist/csvw/Processor.d.mts +2 -0
  370. package/dist/csvw/Processor.mjs +1 -0
  371. package/dist/csvw/Report.d.mts +2 -0
  372. package/dist/csvw/Report.mjs +1 -0
  373. package/dist/csvw/Table.d.mts +2 -0
  374. package/dist/csvw/Table.mjs +1 -0
  375. package/dist/csvw/index.d.mts +8 -0
  376. package/dist/csvw/index.mjs +8 -0
  377. package/dist/index-Cms2TYfC.d.mts +16 -0
  378. package/dist/index-Ct8xFmRs.d.mts +7 -0
  379. package/dist/index-D4QFwOjm.d.mts +28 -0
  380. package/dist/index.d.mts +18 -0
  381. package/dist/index.mjs +17 -0
  382. package/dist/jsonld/DocumentLoader.d.mts +2 -0
  383. package/dist/jsonld/DocumentLoader.mjs +1 -0
  384. package/dist/jsonld/JsonLd.d.mts +2 -0
  385. package/dist/jsonld/JsonLd.mjs +1 -0
  386. package/dist/jsonld/JsonLdError.d.mts +2 -0
  387. package/dist/jsonld/JsonLdError.mjs +1 -0
  388. package/dist/jsonld/index.d.mts +4 -0
  389. package/dist/jsonld/index.mjs +4 -0
  390. package/dist/lists-D-OpQ0Ir.mjs +77 -0
  391. package/dist/lists-D-OpQ0Ir.mjs.map +1 -0
  392. package/dist/loop-D5-gNx9K.mjs +21 -0
  393. package/dist/loop-D5-gNx9K.mjs.map +1 -0
  394. package/dist/loop-DZ2hXlr_.mjs +21 -0
  395. package/dist/loop-DZ2hXlr_.mjs.map +1 -0
  396. package/dist/n3/Isomorphism.d.mts +2 -0
  397. package/dist/n3/Isomorphism.mjs +1 -0
  398. package/dist/n3/Mapping.d.mts +2 -0
  399. package/dist/n3/Mapping.mjs +1 -0
  400. package/dist/n3/Model.d.mts +2 -0
  401. package/dist/n3/Model.mjs +1 -0
  402. package/dist/n3/N3.d.mts +2 -0
  403. package/dist/n3/N3.mjs +1 -0
  404. package/dist/n3/Reasoner.d.mts +2 -0
  405. package/dist/n3/Reasoner.mjs +2 -0
  406. package/dist/n3/Vocab.d.mts +2 -0
  407. package/dist/n3/Vocab.mjs +1 -0
  408. package/dist/n3/index.d.mts +7 -0
  409. package/dist/n3/index.mjs +7 -0
  410. package/dist/ntriples/Grammar.d.mts +2 -0
  411. package/dist/ntriples/Grammar.mjs +1 -0
  412. package/dist/ntriples/Lexical.d.mts +2 -0
  413. package/dist/ntriples/Lexical.mjs +1 -0
  414. package/dist/ntriples/NQuads.d.mts +2 -0
  415. package/dist/ntriples/NQuads.mjs +1 -0
  416. package/dist/ntriples/NTriples.d.mts +2 -0
  417. package/dist/ntriples/NTriples.mjs +1 -0
  418. package/dist/ntriples/index.d.mts +5 -0
  419. package/dist/ntriples/index.mjs +5 -0
  420. package/dist/rdfjson/RdfJson.d.mts +2 -0
  421. package/dist/rdfjson/RdfJson.mjs +1 -0
  422. package/dist/rdfjson/index.d.mts +2 -0
  423. package/dist/rdfjson/index.mjs +1 -0
  424. package/dist/rdfxml/RdfXml.d.mts +2 -0
  425. package/dist/rdfxml/RdfXml.mjs +1 -0
  426. package/dist/rdfxml/Xml.d.mts +2 -0
  427. package/dist/rdfxml/Xml.mjs +1 -0
  428. package/dist/rdfxml/index.d.mts +3 -0
  429. package/dist/rdfxml/index.mjs +3 -0
  430. package/dist/rolldown-runtime-D8jQpDG7.mjs +12 -0
  431. package/dist/serialize-96KBvKaf.mjs +1463 -0
  432. package/dist/serialize-96KBvKaf.mjs.map +1 -0
  433. package/dist/serialize-DsoXdM6n.d.mts +37 -0
  434. package/dist/shacl/Message.d.mts +2 -0
  435. package/dist/shacl/Message.mjs +1 -0
  436. package/dist/shacl/Path.d.mts +2 -0
  437. package/dist/shacl/Path.mjs +1 -0
  438. package/dist/shacl/Shapes.d.mts +2 -0
  439. package/dist/shacl/Shapes.mjs +1 -0
  440. package/dist/shacl/Sparql.d.mts +2 -0
  441. package/dist/shacl/Sparql.mjs +1 -0
  442. package/dist/shacl/ValidationReport.d.mts +2 -0
  443. package/dist/shacl/ValidationReport.mjs +1 -0
  444. package/dist/shacl/Validator.d.mts +2 -0
  445. package/dist/shacl/Validator.mjs +1 -0
  446. package/dist/shacl/Vocabulary.d.mts +2 -0
  447. package/dist/shacl/Vocabulary.mjs +1 -0
  448. package/dist/shacl/index.d.mts +9 -0
  449. package/dist/shacl/index.mjs +8 -0
  450. package/dist/shex/SemAct.d.mts +2 -0
  451. package/dist/shex/SemAct.mjs +1 -0
  452. package/dist/shex/ShExC.d.mts +2 -0
  453. package/dist/shex/ShExC.mjs +1 -0
  454. package/dist/shex/ShExError.d.mts +2 -0
  455. package/dist/shex/ShExError.mjs +1 -0
  456. package/dist/shex/ShExJ.d.mts +2 -0
  457. package/dist/shex/ShExJ.mjs +2 -0
  458. package/dist/shex/ShExR.d.mts +2 -0
  459. package/dist/shex/ShExR.mjs +1 -0
  460. package/dist/shex/ShapeMap.d.mts +2 -0
  461. package/dist/shex/ShapeMap.mjs +1 -0
  462. package/dist/shex/Structure.d.mts +2 -0
  463. package/dist/shex/Structure.mjs +2 -0
  464. package/dist/shex/Validator.d.mts +2 -0
  465. package/dist/shex/Validator.mjs +4 -0
  466. package/dist/shex/index.d.mts +9 -0
  467. package/dist/shex/index.mjs +9 -0
  468. package/dist/sparql/Algebra.d.mts +2 -0
  469. package/dist/sparql/Algebra.mjs +1 -0
  470. package/dist/sparql/Ast.d.mts +2 -0
  471. package/dist/sparql/Ast.mjs +1 -0
  472. package/dist/sparql/Bindings.d.mts +2 -0
  473. package/dist/sparql/Bindings.mjs +1 -0
  474. package/dist/sparql/ClientErrors.d.mts +2 -0
  475. package/dist/sparql/ClientErrors.mjs +1 -0
  476. package/dist/sparql/ClientFormats.d.mts +2 -0
  477. package/dist/sparql/ClientFormats.mjs +1 -0
  478. package/dist/sparql/Engine.d.mts +2 -0
  479. package/dist/sparql/Engine.mjs +1 -0
  480. package/dist/sparql/Errors.d.mts +2 -0
  481. package/dist/sparql/Errors.mjs +1 -0
  482. package/dist/sparql/Expression.d.mts +2 -0
  483. package/dist/sparql/Expression.mjs +1 -0
  484. package/dist/sparql/Federation.d.mts +2 -0
  485. package/dist/sparql/Federation.mjs +1 -0
  486. package/dist/sparql/Functions.d.mts +2 -0
  487. package/dist/sparql/Functions.mjs +1 -0
  488. package/dist/sparql/Generator.d.mts +2 -0
  489. package/dist/sparql/Generator.mjs +1 -0
  490. package/dist/sparql/GraphStore.d.mts +2 -0
  491. package/dist/sparql/GraphStore.mjs +1 -0
  492. package/dist/sparql/Optimizer.d.mts +2 -0
  493. package/dist/sparql/Optimizer.mjs +1 -0
  494. package/dist/sparql/Options.d.mts +2 -0
  495. package/dist/sparql/Options.mjs +1 -0
  496. package/dist/sparql/Parser.d.mts +2 -0
  497. package/dist/sparql/Parser.mjs +1 -0
  498. package/dist/sparql/Protocol.d.mts +2 -0
  499. package/dist/sparql/Protocol.mjs +1 -0
  500. package/dist/sparql/ProtocolErrors.d.mts +2 -0
  501. package/dist/sparql/ProtocolErrors.mjs +1 -0
  502. package/dist/sparql/QueryBuilder.d.mts +2 -0
  503. package/dist/sparql/QueryBuilder.mjs +1 -0
  504. package/dist/sparql/Results.d.mts +2 -0
  505. package/dist/sparql/Results.mjs +1 -0
  506. package/dist/sparql/ResultsStream.d.mts +2 -0
  507. package/dist/sparql/ResultsStream.mjs +1 -0
  508. package/dist/sparql/ServerFormats.d.mts +2 -0
  509. package/dist/sparql/ServerFormats.mjs +1 -0
  510. package/dist/sparql/ServiceDescription.d.mts +2 -0
  511. package/dist/sparql/ServiceDescription.mjs +1 -0
  512. package/dist/sparql/SparqlClient.d.mts +2 -0
  513. package/dist/sparql/SparqlClient.mjs +1 -0
  514. package/dist/sparql/SparqlServer.d.mts +2 -0
  515. package/dist/sparql/SparqlServer.mjs +1 -0
  516. package/dist/sparql/Store.d.mts +2 -0
  517. package/dist/sparql/Store.mjs +1 -0
  518. package/dist/sparql/TermSchema.d.mts +3 -0
  519. package/dist/sparql/TermSchema.mjs +2 -0
  520. package/dist/sparql/Testing.d.mts +2 -0
  521. package/dist/sparql/Testing.mjs +1 -0
  522. package/dist/sparql/Translate.d.mts +2 -0
  523. package/dist/sparql/Translate.mjs +1 -0
  524. package/dist/sparql/ai/Mcp.d.mts +2 -0
  525. package/dist/sparql/ai/Mcp.mjs +1 -0
  526. package/dist/sparql/ai/Tools.d.mts +2 -0
  527. package/dist/sparql/ai/Tools.mjs +1 -0
  528. package/dist/sparql/ai/index.d.mts +3 -0
  529. package/dist/sparql/ai/index.mjs +3 -0
  530. package/dist/sparql/index.d.mts +30 -0
  531. package/dist/sparql/index.mjs +29 -0
  532. package/dist/sparql/shacl/Evaluator.d.mts +2 -0
  533. package/dist/sparql/shacl/Evaluator.mjs +1 -0
  534. package/dist/sparql/shacl/Query.d.mts +2 -0
  535. package/dist/sparql/shacl/Query.mjs +1 -0
  536. package/dist/sparql/shacl/index.d.mts +3 -0
  537. package/dist/sparql/shacl/index.mjs +3 -0
  538. package/dist/sparql/sql/Dialect.d.mts +2 -0
  539. package/dist/sparql/sql/Dialect.mjs +1 -0
  540. package/dist/sparql/sql/SqlStore.d.mts +2 -0
  541. package/dist/sparql/sql/SqlStore.mjs +1 -0
  542. package/dist/sparql/sql/Translation.d.mts +2 -0
  543. package/dist/sparql/sql/Translation.mjs +1 -0
  544. package/dist/sparql/sql/index.d.mts +4 -0
  545. package/dist/sparql/sql/index.mjs +4 -0
  546. package/dist/stringMap-D5YIpYtR.mjs +38 -0
  547. package/dist/stringMap-D5YIpYtR.mjs.map +1 -0
  548. package/dist/tokens-C6BzeodQ.mjs +24 -0
  549. package/dist/tokens-C6BzeodQ.mjs.map +1 -0
  550. package/dist/turtle/Grammar.d.mts +3 -0
  551. package/dist/turtle/Grammar.mjs +3 -0
  552. package/dist/turtle/Manifest.d.mts +2 -0
  553. package/dist/turtle/Manifest.mjs +1 -0
  554. package/dist/turtle/TriG.d.mts +2 -0
  555. package/dist/turtle/TriG.mjs +1 -0
  556. package/dist/turtle/Turtle.d.mts +2 -0
  557. package/dist/turtle/Turtle.mjs +1 -0
  558. package/dist/turtle/index.d.mts +5 -0
  559. package/dist/turtle/index.mjs +5 -0
  560. package/dist/xmp/DublinCore.d.mts +2 -0
  561. package/dist/xmp/DublinCore.mjs +1 -0
  562. package/dist/xmp/Exif.d.mts +2 -0
  563. package/dist/xmp/Exif.mjs +1 -0
  564. package/dist/xmp/Extract.d.mts +2 -0
  565. package/dist/xmp/Extract.mjs +1 -0
  566. package/dist/xmp/Metadata.d.mts +2 -0
  567. package/dist/xmp/Metadata.mjs +1 -0
  568. package/dist/xmp/Namespaces.d.mts +2 -0
  569. package/dist/xmp/Namespaces.mjs +1 -0
  570. package/dist/xmp/Packet.d.mts +2 -0
  571. package/dist/xmp/Packet.mjs +1 -0
  572. package/dist/xmp/Pdf.d.mts +2 -0
  573. package/dist/xmp/Pdf.mjs +1 -0
  574. package/dist/xmp/PdfA.d.mts +2 -0
  575. package/dist/xmp/PdfA.mjs +1 -0
  576. package/dist/xmp/Photoshop.d.mts +2 -0
  577. package/dist/xmp/Photoshop.mjs +1 -0
  578. package/dist/xmp/Tiff.d.mts +2 -0
  579. package/dist/xmp/Tiff.mjs +1 -0
  580. package/dist/xmp/Xmp.d.mts +2 -0
  581. package/dist/xmp/Xmp.mjs +3 -0
  582. package/dist/xmp/XmpBasic.d.mts +2 -0
  583. package/dist/xmp/XmpBasic.mjs +1 -0
  584. package/dist/xmp/XmpMM.d.mts +2 -0
  585. package/dist/xmp/XmpMM.mjs +1 -0
  586. package/dist/xmp/XmpRights.d.mts +2 -0
  587. package/dist/xmp/XmpRights.mjs +1 -0
  588. package/dist/xmp/index.d.mts +15 -0
  589. package/dist/xmp/index.mjs +15 -0
  590. package/package.json +187 -3
  591. package/src/Dataset.ts +1085 -0
  592. package/src/Iri.ts +322 -0
  593. package/src/Isomorphism.ts +319 -0
  594. package/src/LanguageTag.ts +98 -0
  595. package/src/Namespace.ts +100 -0
  596. package/src/PrefixMap.ts +117 -0
  597. package/src/RdfJs.ts +146 -0
  598. package/src/Rdfs.ts +241 -0
  599. package/src/Reification.ts +103 -0
  600. package/src/Resource.ts +873 -0
  601. package/src/Serialization.ts +775 -0
  602. package/src/Term.ts +1300 -0
  603. package/src/TermCodec.ts +505 -0
  604. package/src/TermJson.ts +313 -0
  605. package/src/Vocab.ts +161 -0
  606. package/src/Xsd.ts +573 -0
  607. package/src/csvw/Csv2Json.ts +265 -0
  608. package/src/csvw/Csv2Rdf.ts +268 -0
  609. package/src/csvw/Datatype.ts +589 -0
  610. package/src/csvw/Metadata.ts +1523 -0
  611. package/src/csvw/Processor.ts +276 -0
  612. package/src/csvw/Report.ts +135 -0
  613. package/src/csvw/Table.ts +759 -0
  614. package/src/csvw/index.ts +22 -0
  615. package/src/csvw/internal/dateFormat.ts +202 -0
  616. package/src/csvw/internal/json.ts +104 -0
  617. package/src/csvw/internal/numberFormat.ts +369 -0
  618. package/src/csvw/internal/object.ts +23 -0
  619. package/src/csvw/internal/uriTemplate.ts +130 -0
  620. package/src/csvw/internal/url.ts +93 -0
  621. package/src/csvw/internal/vocab.ts +282 -0
  622. package/src/index.ts +40 -0
  623. package/src/internal/arbitrary.ts +148 -0
  624. package/src/internal/loop.ts +24 -0
  625. package/src/internal/pending.ts +20 -0
  626. package/src/internal/textDecoder.ts +183 -0
  627. package/src/jsonld/DocumentLoader.ts +512 -0
  628. package/src/jsonld/JsonLd.ts +847 -0
  629. package/src/jsonld/JsonLdError.ts +105 -0
  630. package/src/jsonld/index.ts +13 -0
  631. package/src/jsonld/internal/compact.ts +852 -0
  632. package/src/jsonld/internal/context.ts +781 -0
  633. package/src/jsonld/internal/expand.ts +614 -0
  634. package/src/jsonld/internal/flatten.ts +243 -0
  635. package/src/jsonld/internal/frame.ts +559 -0
  636. package/src/jsonld/internal/iri.ts +52 -0
  637. package/src/jsonld/internal/json.ts +19 -0
  638. package/src/jsonld/internal/linkHeader.ts +60 -0
  639. package/src/jsonld/internal/rdf.ts +481 -0
  640. package/src/jsonld/internal/util.ts +367 -0
  641. package/src/n3/Isomorphism.ts +476 -0
  642. package/src/n3/Mapping.ts +332 -0
  643. package/src/n3/Model.ts +696 -0
  644. package/src/n3/N3.ts +237 -0
  645. package/src/n3/Reasoner.ts +568 -0
  646. package/src/n3/Vocab.ts +111 -0
  647. package/src/n3/index.ts +21 -0
  648. package/src/n3/internal/builtins.ts +668 -0
  649. package/src/n3/internal/guards.ts +23 -0
  650. package/src/n3/internal/lists.ts +106 -0
  651. package/src/n3/internal/loop.ts +28 -0
  652. package/src/n3/internal/parser.ts +1032 -0
  653. package/src/n3/internal/writer.ts +344 -0
  654. package/src/ntriples/Grammar.ts +317 -0
  655. package/src/ntriples/Lexical.ts +321 -0
  656. package/src/ntriples/NQuads.ts +140 -0
  657. package/src/ntriples/NTriples.ts +143 -0
  658. package/src/ntriples/index.ts +14 -0
  659. package/src/ntriples/internal/codec.ts +229 -0
  660. package/src/ntriples/internal/lineParser.ts +326 -0
  661. package/src/ntriples/internal/loop.ts +14 -0
  662. package/src/rdfjson/RdfJson.ts +806 -0
  663. package/src/rdfjson/index.ts +9 -0
  664. package/src/rdfjson/internal/json.ts +19 -0
  665. package/src/rdfxml/RdfXml.ts +1408 -0
  666. package/src/rdfxml/Xml.ts +419 -0
  667. package/src/rdfxml/index.ts +11 -0
  668. package/src/rdfxml/internal/chars.ts +73 -0
  669. package/src/rdfxml/internal/loop.ts +24 -0
  670. package/src/rdfxml/internal/parser.ts +1265 -0
  671. package/src/shacl/Message.ts +102 -0
  672. package/src/shacl/Path.ts +483 -0
  673. package/src/shacl/Shapes.ts +913 -0
  674. package/src/shacl/Sparql.ts +128 -0
  675. package/src/shacl/ValidationReport.ts +438 -0
  676. package/src/shacl/Validator.ts +1156 -0
  677. package/src/shacl/Vocabulary.ts +180 -0
  678. package/src/shacl/index.ts +22 -0
  679. package/src/shacl/internal/compare.ts +128 -0
  680. package/src/shacl/internal/regex.ts +56 -0
  681. package/src/shex/SemAct.ts +197 -0
  682. package/src/shex/ShExC.ts +415 -0
  683. package/src/shex/ShExError.ts +71 -0
  684. package/src/shex/ShExJ.ts +893 -0
  685. package/src/shex/ShExR.ts +640 -0
  686. package/src/shex/ShapeMap.ts +385 -0
  687. package/src/shex/Structure.ts +467 -0
  688. package/src/shex/Validator.ts +395 -0
  689. package/src/shex/index.ts +24 -0
  690. package/src/shex/internal/engine.ts +682 -0
  691. package/src/shex/internal/iterate.ts +14 -0
  692. package/src/shex/internal/json.ts +12 -0
  693. package/src/shex/internal/lexer.ts +56 -0
  694. package/src/shex/internal/nodeConstraint.ts +368 -0
  695. package/src/shex/internal/shexcLexer.ts +387 -0
  696. package/src/shex/internal/shexcParser.ts +1312 -0
  697. package/src/shex/internal/tokens.ts +41 -0
  698. package/src/shex/internal/xpathRegex.ts +290 -0
  699. package/src/sparql/Algebra.ts +914 -0
  700. package/src/sparql/Ast.ts +1344 -0
  701. package/src/sparql/Bindings.ts +272 -0
  702. package/src/sparql/ClientErrors.ts +156 -0
  703. package/src/sparql/ClientFormats.ts +70 -0
  704. package/src/sparql/Engine.ts +699 -0
  705. package/src/sparql/Errors.ts +30 -0
  706. package/src/sparql/Expression.ts +360 -0
  707. package/src/sparql/Federation.ts +187 -0
  708. package/src/sparql/Functions.ts +689 -0
  709. package/src/sparql/Generator.ts +426 -0
  710. package/src/sparql/GraphStore.ts +341 -0
  711. package/src/sparql/Optimizer.ts +230 -0
  712. package/src/sparql/Options.ts +191 -0
  713. package/src/sparql/Parser.ts +173 -0
  714. package/src/sparql/Protocol.ts +342 -0
  715. package/src/sparql/ProtocolErrors.ts +113 -0
  716. package/src/sparql/QueryBuilder.ts +953 -0
  717. package/src/sparql/Results.ts +844 -0
  718. package/src/sparql/ResultsStream.ts +771 -0
  719. package/src/sparql/ServerFormats.ts +75 -0
  720. package/src/sparql/ServiceDescription.ts +130 -0
  721. package/src/sparql/SparqlClient.ts +947 -0
  722. package/src/sparql/SparqlServer.ts +528 -0
  723. package/src/sparql/Store.ts +311 -0
  724. package/src/sparql/TermSchema.ts +20 -0
  725. package/src/sparql/Testing.ts +114 -0
  726. package/src/sparql/Translate.ts +407 -0
  727. package/src/sparql/ai/Mcp.ts +43 -0
  728. package/src/sparql/ai/Tools.ts +481 -0
  729. package/src/sparql/ai/index.ts +11 -0
  730. package/src/sparql/index.ts +64 -0
  731. package/src/sparql/internal/evaluator.ts +947 -0
  732. package/src/sparql/internal/hash.ts +418 -0
  733. package/src/sparql/internal/json.ts +12 -0
  734. package/src/sparql/internal/lexer.ts +488 -0
  735. package/src/sparql/internal/loop.ts +24 -0
  736. package/src/sparql/internal/parser.ts +2215 -0
  737. package/src/sparql/internal/prefetch.ts +46 -0
  738. package/src/sparql/internal/stringMap.ts +39 -0
  739. package/src/sparql/internal/textResults.ts +226 -0
  740. package/src/sparql/internal/values.ts +550 -0
  741. package/src/sparql/shacl/Evaluator.ts +478 -0
  742. package/src/sparql/shacl/Query.ts +574 -0
  743. package/src/sparql/shacl/index.ts +12 -0
  744. package/src/sparql/sql/Dialect.ts +246 -0
  745. package/src/sparql/sql/SqlStore.ts +1080 -0
  746. package/src/sparql/sql/Translation.ts +1898 -0
  747. package/src/sparql/sql/index.ts +17 -0
  748. package/src/sparql/sql/internal/encoding.ts +313 -0
  749. package/src/turtle/Grammar.ts +286 -0
  750. package/src/turtle/Manifest.ts +215 -0
  751. package/src/turtle/TriG.ts +158 -0
  752. package/src/turtle/Turtle.ts +166 -0
  753. package/src/turtle/index.ts +14 -0
  754. package/src/turtle/internal/loop.ts +23 -0
  755. package/src/turtle/internal/parse.ts +112 -0
  756. package/src/turtle/internal/parser.ts +1303 -0
  757. package/src/turtle/internal/serialize.ts +79 -0
  758. package/src/turtle/internal/streamWriter.ts +128 -0
  759. package/src/turtle/internal/writer.ts +898 -0
  760. package/src/xmp/DublinCore.ts +147 -0
  761. package/src/xmp/Exif.ts +109 -0
  762. package/src/xmp/Extract.ts +351 -0
  763. package/src/xmp/Metadata.ts +703 -0
  764. package/src/xmp/Namespaces.ts +228 -0
  765. package/src/xmp/Packet.ts +297 -0
  766. package/src/xmp/Pdf.ts +99 -0
  767. package/src/xmp/PdfA.ts +280 -0
  768. package/src/xmp/Photoshop.ts +275 -0
  769. package/src/xmp/Tiff.ts +196 -0
  770. package/src/xmp/Xmp.ts +430 -0
  771. package/src/xmp/XmpBasic.ts +90 -0
  772. package/src/xmp/XmpMM.ts +82 -0
  773. package/src/xmp/XmpRights.ts +83 -0
  774. package/src/xmp/index.ts +36 -0
  775. package/src/xmp/internal/accessors.ts +72 -0
  776. package/src/xmp/internal/xml.ts +63 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * CSV on the Web (CSVW) for effect-rdf: metadata documents, the annotated
3
+ * tabular data model with validation, and the CSV2RDF and CSV2JSON
4
+ * conversions, over already-parsed tables.
5
+ *
6
+ * @since 0.1.0
7
+ */
8
+
9
+ /** @since 0.1.0 */
10
+ export * as Csv2Json from './Csv2Json.ts';
11
+ /** @since 0.1.0 */
12
+ export * as Csv2Rdf from './Csv2Rdf.ts';
13
+ /** @since 0.1.0 */
14
+ export * as Datatype from './Datatype.ts';
15
+ /** @since 0.1.0 */
16
+ export * as Metadata from './Metadata.ts';
17
+ /** @since 0.1.0 */
18
+ export * as Processor from './Processor.ts';
19
+ /** @since 0.1.0 */
20
+ export * as Report from './Report.ts';
21
+ /** @since 0.1.0 */
22
+ export * as Table from './Table.ts';
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Date and time formats (Tabular Data Model §Formats for dates and times):
3
+ * the UAX 35 date field symbols the specification requires (`yyyy`, `MM`,
4
+ * `M`, `dd`, `d`, `HH`, `mm`, `ss`, `S…`, `X…`, `x…`), compiled to a matcher
5
+ * that yields the XML Schema lexical form.
6
+ *
7
+ * @internal
8
+ */
9
+ import * as Arr from 'effect/Array';
10
+ import * as Option from 'effect/Option';
11
+ import * as Record from 'effect/Record';
12
+ import * as Result from 'effect/Result';
13
+
14
+ type Field = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second' | 'fraction' | 'tz';
15
+
16
+ interface Token {
17
+ readonly field: Option.Option<Field>;
18
+ readonly source: string;
19
+ }
20
+
21
+ /**
22
+ * A compiled date/time pattern.
23
+ *
24
+ * @internal
25
+ */
26
+ export interface DatePattern {
27
+ readonly regex: RegExp;
28
+ readonly fields: ReadonlyArray<Field>;
29
+ readonly hasDate: boolean;
30
+ readonly hasTime: boolean;
31
+ }
32
+
33
+ /** Timezone offsets by marker length (`x`, `xx`, `xxx`); `X…` also allows `Z`. */
34
+ const TZ_OFFSETS = ['[+-]\\d{2}(?:\\d{2})?', '[+-]\\d{4}', '[+-]\\d{2}:\\d{2}'];
35
+
36
+ const field = (f: Field, source: string): Option.Option<Token> =>
37
+ Option.some({ field: Option.some(f), source: `(${source})` });
38
+
39
+ const tzOffset = (n: number, allowZ: boolean): Option.Option<Token> =>
40
+ Option.flatMap(Arr.get(TZ_OFFSETS, n - 1), (offset) =>
41
+ field('tz', allowZ ? `Z|${offset}` : offset),
42
+ );
43
+
44
+ const tokenize = (pattern: string): ReadonlyArray<string> => pattern.match(/(.)\1*/gu) ?? [];
45
+
46
+ /** A field symbol of exactly `n` letters (`yyyy`, `HH`, …). */
47
+ const exactly =
48
+ (n: number, f: Field, source: string) =>
49
+ (length: number): Option.Option<Token> =>
50
+ length === n ? field(f, source) : Option.none();
51
+
52
+ /** A one- or two-letter numeric field (`M` / `MM`, `d` / `dd`). */
53
+ const oneOrTwo =
54
+ (f: Field) =>
55
+ (length: number): Option.Option<Token> =>
56
+ length > 2 ? Option.none() : field(f, length === 2 ? '\\d{2}' : '\\d{1,2}');
57
+
58
+ /** The field symbols this implementation recognises, by letter. */
59
+ const symbols: Readonly<Record<string, (length: number) => Option.Option<Token>>> = {
60
+ y: exactly(4, 'year', '\\d{4}'),
61
+ M: oneOrTwo('month'),
62
+ d: oneOrTwo('day'),
63
+ H: exactly(2, 'hour', '\\d{2}'),
64
+ m: exactly(2, 'minute', '\\d{2}'),
65
+ s: exactly(2, 'second', '\\d{2}'),
66
+ S: (length) => field('fraction', `\\d{1,${length}}`),
67
+ X: (length) => tzOffset(length, true),
68
+ x: (length) => tzOffset(length, false),
69
+ };
70
+
71
+ const literal = (run: string): Option.Option<Token> =>
72
+ /^[-/.: T]+$/.test(run)
73
+ ? Option.some({ field: Option.none(), source: run.replace(/[.]/g, '\\.') })
74
+ : Option.none();
75
+
76
+ const compileToken = (run: string): Option.Option<Token> =>
77
+ Option.match(Record.get(symbols, run.charAt(0)), {
78
+ onNone: () => literal(run),
79
+ onSome: (symbol) => symbol(run.length),
80
+ });
81
+
82
+ /**
83
+ * Compiles a date/time pattern; `None` when it uses a symbol this
84
+ * implementation does not recognise.
85
+ *
86
+ * @internal
87
+ */
88
+ export const compile = (pattern: string): Option.Option<DatePattern> => {
89
+ const tokens = Arr.map(tokenize(pattern), compileToken);
90
+ if (!Arr.every(tokens, Option.isSome) || !Arr.isReadonlyArrayNonEmpty(tokens))
91
+ return Option.none();
92
+ const compiled = Arr.getSomes(tokens);
93
+ const fields = Arr.getSomes(Arr.map(compiled, (t) => t.field));
94
+ const has = (f: Field) => Arr.contains(fields, f);
95
+ const hasDate = has('year') || has('month') || has('day');
96
+ const hasTime = has('hour') || has('minute') || has('second');
97
+ if (Arr.length(Arr.dedupe(fields)) !== Arr.length(fields)) return Option.none();
98
+ if (has('fraction') && !has('second')) return Option.none();
99
+ return Option.some({
100
+ regex: new RegExp(
101
+ `^${Arr.join(
102
+ Arr.map(compiled, (t) => t.source),
103
+ '',
104
+ )}$`,
105
+ 'u',
106
+ ),
107
+ fields,
108
+ hasDate,
109
+ hasTime,
110
+ });
111
+ };
112
+
113
+ const pad = (s: string, n: number): string => s.padStart(n, '0');
114
+
115
+ const timezone = (tz: string): string => {
116
+ if (tz === 'Z') return 'Z';
117
+ const sign = tz.charAt(0);
118
+ const digits = tz.slice(1).replace(':', '');
119
+ const hh = digits.slice(0, 2);
120
+ const mm = digits.length > 2 ? digits.slice(2, 4) : '00';
121
+ return `${sign}${hh}:${mm}`;
122
+ };
123
+
124
+ const daysInMonth = (year: number, month: number): number =>
125
+ month === 2
126
+ ? (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0
127
+ ? 29
128
+ : 28
129
+ : [4, 6, 9, 11].includes(month)
130
+ ? 30
131
+ : 31;
132
+
133
+ interface Fields {
134
+ readonly date: string;
135
+ readonly time: string;
136
+ readonly tz: string;
137
+ }
138
+
139
+ const fieldsOf = (m: RegExpExecArray, pattern: DatePattern): Fields => {
140
+ const values = Arr.map(pattern.fields, (f, i) => [f, m[i + 1] ?? ''] as const);
141
+ const get = (f: Field, otherwise: string): string =>
142
+ Option.getOrElse(
143
+ Option.map(
144
+ Arr.findFirst(values, ([g]) => g === f),
145
+ ([, v]) => v,
146
+ ),
147
+ () => otherwise,
148
+ );
149
+ const fraction = get('fraction', '');
150
+ const tz = get('tz', '');
151
+ return {
152
+ date: `${get('year', '')}-${pad(get('month', ''), 2)}-${pad(get('day', ''), 2)}`,
153
+ time: `${get('hour', '00')}:${get('minute', '00')}:${get('second', '00')}${fraction === '' ? '' : `.${fraction}`}`,
154
+ tz: tz === '' ? '' : timezone(tz),
155
+ };
156
+ };
157
+
158
+ const validDate = (date: string): boolean => {
159
+ const [y = 0, mo = 0, d = 0] = Arr.map(date.split('-'), Number);
160
+ return mo >= 1 && mo <= 12 && d >= 1 && d <= daysInMonth(y, mo);
161
+ };
162
+
163
+ const validTime = (time: string): boolean => {
164
+ const [h = 0, mi = 0, s = 0] = Arr.map(time.split(':'), Number);
165
+ return h <= 23 && mi <= 59 && s < 60;
166
+ };
167
+
168
+ const lexicalFor = (
169
+ fields: Fields,
170
+ pattern: DatePattern,
171
+ base: string,
172
+ ): Result.Result<string, string> => {
173
+ if (base === 'date')
174
+ return pattern.hasDate ? Result.succeed(fields.date + fields.tz) : Result.fail('has no date');
175
+ if (base === 'time')
176
+ return pattern.hasTime ? Result.succeed(fields.time + fields.tz) : Result.fail('has no time');
177
+ if (!pattern.hasDate) return Result.fail('has no date');
178
+ if (base === 'dateTimeStamp' && fields.tz === '') return Result.fail('has no timezone');
179
+ return Result.succeed(`${fields.date}T${fields.time}${fields.tz}`);
180
+ };
181
+
182
+ /**
183
+ * Matches a cell string against a compiled pattern and returns the XML Schema
184
+ * lexical form for the base datatype (`date`, `time`, `dateTime` or
185
+ * `dateTimeStamp`).
186
+ *
187
+ * @internal
188
+ */
189
+ export const parse = (
190
+ text: string,
191
+ pattern: DatePattern,
192
+ base: string,
193
+ ): Result.Result<string, string> =>
194
+ Option.match(Option.fromNullishOr(pattern.regex.exec(text)), {
195
+ onNone: () => Result.fail('does not match the format'),
196
+ onSome: (m) => {
197
+ const fields = fieldsOf(m, pattern);
198
+ if (pattern.hasDate && !validDate(fields.date)) return Result.fail('is not a valid date');
199
+ if (pattern.hasTime && !validTime(fields.time)) return Result.fail('is not a valid time');
200
+ return lexicalFor(fields, pattern, base);
201
+ },
202
+ });
@@ -0,0 +1,104 @@
1
+ /**
2
+ * The one `JSON.parse` call of this package. It stays native because the
3
+ * engine's `SyntaxError` text is part of the metadata error messages, and
4
+ * `Schema.fromJsonString` replaces it with a generic issue.
5
+ *
6
+ * @internal
7
+ */
8
+ import type * as Option from 'effect/Option';
9
+ import * as Predicate from 'effect/Predicate';
10
+ import * as Record from 'effect/Record';
11
+ import * as Result from 'effect/Result';
12
+ import type * as Schema from 'effect/Schema';
13
+
14
+ /**
15
+ * Parses JSON text, failing with the engine's `SyntaxError` message.
16
+ *
17
+ * @internal
18
+ */
19
+ export const parseJson = (text: string): Result.Result<Schema.Json, string> =>
20
+ Result.try({
21
+ try: (): Schema.Json => JSON.parse(text),
22
+ catch: (e) => (e instanceof SyntaxError ? e.message : String(e)),
23
+ });
24
+
25
+ /**
26
+ * Whether a JSON value is an object (not an array, not `null`).
27
+ *
28
+ * @internal
29
+ */
30
+ export const isObject = (value: Schema.Json): value is Schema.JsonObject =>
31
+ Predicate.isObject(value) && !Array.isArray(value);
32
+
33
+ /**
34
+ * Whether a JSON value is an array.
35
+ *
36
+ * @internal
37
+ */
38
+ export const isArray = (value: Schema.Json): value is Schema.JsonArray => Array.isArray(value);
39
+
40
+ /**
41
+ * The entries of a JSON object, in insertion order.
42
+ *
43
+ * @internal
44
+ */
45
+ export const entries = (obj: Schema.JsonObject): Array<[string, Schema.Json]> =>
46
+ Record.toEntries<string, Schema.Json>(obj);
47
+
48
+ /**
49
+ * The keys of a JSON object, in insertion order.
50
+ *
51
+ * @internal
52
+ */
53
+ export const keys = (obj: Schema.JsonObject): Array<string> =>
54
+ Record.keys<string, Schema.Json>(obj);
55
+
56
+ /**
57
+ * Whether a JSON object has a key.
58
+ *
59
+ * @internal
60
+ */
61
+ export const has = (obj: Schema.JsonObject, key: string): boolean => obj[key] !== undefined;
62
+
63
+ /**
64
+ * The value of a key of a JSON object.
65
+ *
66
+ * @internal
67
+ */
68
+ export const get = (obj: Schema.JsonObject, key: string): Option.Option<Schema.Json> =>
69
+ Record.get<string, Schema.Json>(obj, key);
70
+
71
+ /**
72
+ * Maps the values of a JSON object.
73
+ *
74
+ * @internal
75
+ */
76
+ export const mapValues = (
77
+ obj: Schema.JsonObject,
78
+ f: (value: Schema.Json, key: string) => Schema.Json,
79
+ ): Schema.JsonObject => Record.map<string, Schema.Json, Schema.Json>(obj, f);
80
+
81
+ /**
82
+ * A JSON object with one key set.
83
+ *
84
+ * @internal
85
+ */
86
+ export const set = (obj: Schema.JsonObject, key: string, value: Schema.Json): Schema.JsonObject =>
87
+ Record.set(
88
+ Record.map<string, Schema.Json, Schema.Json>(obj, (v) => v),
89
+ key,
90
+ value,
91
+ );
92
+
93
+ /**
94
+ * A short description of a JSON value for messages: strings quoted, numbers
95
+ * and booleans as written, `null`, and the kind of anything else.
96
+ *
97
+ * @internal
98
+ */
99
+ export const describe = (value: Schema.Json): string => {
100
+ if (Predicate.isString(value)) return `"${value}"`;
101
+ if (Predicate.isNumber(value) || Predicate.isBoolean(value)) return `${value}`;
102
+ if (Predicate.isNull(value)) return 'null';
103
+ return isArray(value) ? 'an array' : 'an object';
104
+ };
@@ -0,0 +1,369 @@
1
+ /**
2
+ * Numeric formats (Tabular Data Model §Formats for numeric types): the UAX 35
3
+ * number-pattern subset (`0`, `#`, the decimal and group characters, `E`,
4
+ * `+`, `-`, `%` and `‰`), the pattern-less grouped form, and the decimal
5
+ * arithmetic that applies percent and per-mille signs.
6
+ *
7
+ * @internal
8
+ */
9
+ import * as Arr from 'effect/Array';
10
+ import * as Option from 'effect/Option';
11
+ import * as Result from 'effect/Result';
12
+
13
+ /**
14
+ * A parsed number format pattern.
15
+ *
16
+ * @internal
17
+ */
18
+ export interface Pattern {
19
+ readonly prefix: string;
20
+ readonly suffix: string;
21
+ /** Minimum integer digits (the `0`s of the integer part). */
22
+ readonly minInt: number;
23
+ /** Primary and secondary grouping sizes, if the integer part is grouped. */
24
+ readonly grouping: Option.Option<readonly [number, number]>;
25
+ readonly minFrac: number;
26
+ readonly maxFrac: number;
27
+ /** The fraction's grouping size, if it is grouped. */
28
+ readonly fracGrouping: Option.Option<number>;
29
+ readonly hasDecimal: boolean;
30
+ /** Minimum exponent digits, if the pattern has an exponent. */
31
+ readonly exponent: Option.Option<number>;
32
+ }
33
+
34
+ /**
35
+ * A numeric format: an optional pattern and the decimal and group characters.
36
+ *
37
+ * @internal
38
+ */
39
+ export interface NumberFormat {
40
+ readonly pattern: Option.Option<Pattern>;
41
+ readonly decimalChar: string;
42
+ readonly groupChar: Option.Option<string>;
43
+ }
44
+
45
+ const escape = (s: string): string => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
46
+
47
+ const count = (s: string, c: string): number =>
48
+ Arr.length(Arr.filter(Array.from(s), (x) => x === c));
49
+
50
+ /** Primary and secondary grouping sizes of a grouped integer pattern (`#,##,#00` → 3, 2). */
51
+ const integerGrouping = (
52
+ segments: ReadonlyArray<string>,
53
+ ): Option.Option<Option.Option<readonly [number, number]>> =>
54
+ Arr.match(Arr.reverse(segments), {
55
+ onEmpty: () => Option.some(Option.none()),
56
+ onNonEmpty: ([primary, ...rest]) =>
57
+ Arr.match(rest, {
58
+ onEmpty: () => Option.some(Option.none()),
59
+ onNonEmpty: ([secondary, ...others]) => {
60
+ const size = Arr.isReadonlyArrayNonEmpty(others) ? secondary.length : primary.length;
61
+ return primary === '' || size === 0
62
+ ? Option.none()
63
+ : Option.some(Option.some([primary.length, size] as const));
64
+ },
65
+ }),
66
+ });
67
+
68
+ /** The grouping size of a grouped fraction pattern (`0.0#,#` → 2). */
69
+ const fractionGrouping = (segments: ReadonlyArray<string>): Option.Option<Option.Option<number>> =>
70
+ Arr.match(segments, {
71
+ onEmpty: () => Option.some(Option.none()),
72
+ onNonEmpty: ([first, ...rest]) =>
73
+ !Arr.isReadonlyArrayNonEmpty(rest)
74
+ ? Option.some(Option.none())
75
+ : first === ''
76
+ ? Option.none()
77
+ : Option.some(Option.some(first.length)),
78
+ });
79
+
80
+ /** Whether `#`s precede the `0`s of the integer part and follow those of the fraction. */
81
+ const wellOrdered = (int: string, frac: string): boolean =>
82
+ !/0[^0]*#/.test(int) && !/#[^#]*0/.test(frac);
83
+
84
+ /**
85
+ * Parses a number format pattern; `None` when it uses anything this
86
+ * implementation does not recognise.
87
+ *
88
+ * @internal
89
+ */
90
+ export const parsePattern = (
91
+ pattern: string,
92
+ decimalChar: string,
93
+ groupChar: string,
94
+ ): Option.Option<Pattern> => {
95
+ const g = escape(groupChar);
96
+ const re = new RegExp(
97
+ `^([+\\-%‰]*)([#0${g}]*[#0])(?:${escape(decimalChar)}([#0${g}]*))?(?:E(\\+?)([#0]+))?([%‰]*)$`,
98
+ 'u',
99
+ );
100
+ return Option.flatMap(Option.fromNullishOr(re.exec(pattern)), (m) => {
101
+ const int = m[2] ?? '';
102
+ const frac = Option.fromNullishOr(m[3]);
103
+ const fracText = Option.getOrElse(frac, () => '');
104
+ const fracDigits = digitsOf(fracText, groupChar);
105
+ const affixes = (m[1] ?? '') + (m[6] ?? '');
106
+ if (!wellOrdered(digitsOf(int, groupChar), fracDigits)) return Option.none();
107
+ if (count(affixes, '%') + count(affixes, '‰') > 1) return Option.none();
108
+ return Option.map(
109
+ Option.all([
110
+ integerGrouping(int.split(groupChar)),
111
+ fractionGrouping(Option.isSome(frac) ? fracText.split(groupChar) : []),
112
+ ]),
113
+ ([grouping, fracGrouping]): Pattern => ({
114
+ prefix: m[1] ?? '',
115
+ suffix: m[6] ?? '',
116
+ minInt: count(int, '0'),
117
+ grouping,
118
+ minFrac: count(fracDigits, '0'),
119
+ maxFrac: fracDigits.length,
120
+ fracGrouping,
121
+ hasDecimal: Option.isSome(frac),
122
+ exponent: Option.map(Option.fromNullishOr(m[5]), (e) => count(e, '0')),
123
+ }),
124
+ );
125
+ });
126
+ };
127
+
128
+ /**
129
+ * The parts of a number read from a cell.
130
+ *
131
+ * @internal
132
+ */
133
+ export interface Parsed {
134
+ /** The lexical form, with group characters removed and a `.` decimal point. */
135
+ readonly lexical: string;
136
+ readonly hasDecimal: boolean;
137
+ readonly hasExponent: boolean;
138
+ readonly special: boolean;
139
+ }
140
+
141
+ const checkIntegerGrouping = (
142
+ int: string,
143
+ groupChar: string,
144
+ grouping: Option.Option<readonly [number, number]>,
145
+ ): boolean => {
146
+ const groups = int.split(groupChar);
147
+ const ungrouped = !int.includes(groupChar);
148
+ return Option.match(grouping, {
149
+ onNone: () => ungrouped,
150
+ onSome: ([primary, secondary]) => {
151
+ if (ungrouped) return int.length <= primary;
152
+ const reversed = Arr.reverse(groups);
153
+ const last = Arr.length(reversed) - 1;
154
+ return Arr.every(reversed, (group, i) => {
155
+ const size = i === 0 ? primary : secondary;
156
+ return i === last ? group !== '' && group.length <= size : group.length === size;
157
+ });
158
+ },
159
+ });
160
+ };
161
+
162
+ const checkFractionGrouping = (
163
+ frac: string,
164
+ groupChar: string,
165
+ grouping: Option.Option<number>,
166
+ ): boolean => {
167
+ const groups = frac.split(groupChar);
168
+ return Option.match(grouping, {
169
+ onNone: () => !frac.includes(groupChar),
170
+ onSome: (size) =>
171
+ Arr.every(groups, (group, i) =>
172
+ i === Arr.length(groups) - 1 ? group !== '' && group.length <= size : group.length === size,
173
+ ),
174
+ });
175
+ };
176
+
177
+ const digitsOf = (s: string, groupChar: string): string => s.split(groupChar).join('');
178
+
179
+ /**
180
+ * Shifts the decimal point of a decimal lexical form `places` to the left
181
+ * (dividing by 10^places), returning a canonical decimal.
182
+ *
183
+ * @internal
184
+ */
185
+ export const shiftDecimal = (lexical: string, places: number): string => {
186
+ const negative = lexical.startsWith('-');
187
+ const unsigned = lexical.replace(/^[+-]/, '');
188
+ const [int = '', frac = ''] = unsigned.split('.');
189
+ const padded = int.padStart(places + 1, '0');
190
+ const newInt = padded.slice(0, padded.length - places).replace(/^0+(?=\d)/, '');
191
+ const newFrac = (padded.slice(padded.length - places) + frac).replace(/0+$/, '');
192
+ const body = newFrac === '' ? newInt : `${newInt}.${newFrac}`;
193
+ return negative && /[1-9]/.test(body) ? `-${body}` : body;
194
+ };
195
+
196
+ const SPECIAL = /^(?:NaN|INF|-INF)$/;
197
+
198
+ interface Parts {
199
+ readonly sign: string;
200
+ readonly int: string;
201
+ readonly frac: Option.Option<string>;
202
+ readonly exp: Option.Option<string>;
203
+ }
204
+
205
+ /** The checks a number read with a pattern must pass, each failing with a reason. */
206
+ const patternChecks: ReadonlyArray<
207
+ (parts: Parts, pattern: Pattern, g: string) => Option.Option<string>
208
+ > = [
209
+ ({ int, frac }) =>
210
+ int === '' && Option.isNone(frac) ? Option.some('does not match the pattern') : Option.none(),
211
+ ({ int }, _, g) =>
212
+ int.endsWith(g) || int.includes(g + g)
213
+ ? Option.some('does not match the pattern')
214
+ : Option.none(),
215
+ ({ int }, pattern, g) =>
216
+ checkIntegerGrouping(int, g, pattern.grouping)
217
+ ? Option.none()
218
+ : Option.some('does not match the grouping of the pattern'),
219
+ ({ int }, pattern, g) =>
220
+ digitsOf(int, g).length < pattern.minInt
221
+ ? Option.some('has fewer integer digits than the pattern')
222
+ : Option.none(),
223
+ ({ frac }, pattern) =>
224
+ Option.isSome(frac) && !pattern.hasDecimal
225
+ ? Option.some('has a fraction the pattern does not allow')
226
+ : Option.none(),
227
+ ({ frac }, pattern, g) =>
228
+ Option.exists(
229
+ frac,
230
+ (f) =>
231
+ digitsOf(f, g).length > pattern.maxFrac ||
232
+ !checkFractionGrouping(f, g, pattern.fracGrouping),
233
+ )
234
+ ? Option.some('does not match the fraction of the pattern')
235
+ : Option.none(),
236
+ ({ frac }, pattern, g) =>
237
+ digitsOf(
238
+ Option.getOrElse(frac, () => ''),
239
+ g,
240
+ ).length < pattern.minFrac
241
+ ? Option.some('has fewer fraction digits than the pattern')
242
+ : Option.none(),
243
+ ({ exp }, pattern) =>
244
+ Option.match(pattern.exponent, {
245
+ onNone: () =>
246
+ Option.isSome(exp)
247
+ ? Option.some('has an exponent the pattern does not allow')
248
+ : Option.none(),
249
+ onSome: (min) =>
250
+ Option.exists(exp, (e) => e.replace(/^[+-]/, '').length >= min)
251
+ ? Option.none()
252
+ : Option.some('does not have the exponent digits of the pattern'),
253
+ }),
254
+ ];
255
+
256
+ const partsOf = (body: string, format: NumberFormat, g: string): Option.Option<Parts> => {
257
+ const re = new RegExp(
258
+ `^([+-]?)(\\d[\\d${escape(g)}]*)?(?:${escape(format.decimalChar)}([\\d${escape(g)}]*))?(?:E([+-]?\\d+))?$`,
259
+ 'u',
260
+ );
261
+ return Option.map(Option.fromNullishOr(re.exec(body)), (m) => ({
262
+ sign: m[1] ?? '',
263
+ int: m[2] ?? '',
264
+ frac: Option.fromNullishOr(m[3]),
265
+ exp: Option.fromNullishOr(m[4]),
266
+ }));
267
+ };
268
+
269
+ const parseWithPattern = (
270
+ text: string,
271
+ format: NumberFormat,
272
+ pattern: Pattern,
273
+ ): Result.Result<Parsed, string> => {
274
+ const g = Option.getOrElse(format.groupChar, () => ',');
275
+ const prefix = pattern.prefix.replace(/[+-]/g, '');
276
+ const suffix = pattern.suffix;
277
+ const parts =
278
+ text.startsWith(prefix) && text.endsWith(suffix)
279
+ ? partsOf(text.slice(prefix.length, text.length - suffix.length), format, g)
280
+ : Option.none();
281
+ return Option.match(parts, {
282
+ onNone: () => Result.fail('does not match the pattern'),
283
+ onSome: (p) =>
284
+ Option.match(
285
+ Arr.findFirst(patternChecks, (check) => Option.isSome(check(p, pattern, g))).pipe(
286
+ Option.flatMap((check) => check(p, pattern, g)),
287
+ ),
288
+ {
289
+ onSome: Result.fail,
290
+ onNone: () =>
291
+ Result.succeed(
292
+ finish(
293
+ p.sign,
294
+ digitsOf(p.int, g),
295
+ Option.map(p.frac, (f) => digitsOf(f, g)),
296
+ p.exp,
297
+ text,
298
+ ),
299
+ ),
300
+ },
301
+ ),
302
+ });
303
+ };
304
+
305
+ const finish = (
306
+ sign: string,
307
+ int: string,
308
+ frac: Option.Option<string>,
309
+ exp: Option.Option<string>,
310
+ text: string,
311
+ ): Parsed => {
312
+ const mantissa = `${sign}${int === '' ? '0' : int}${Option.match(frac, { onNone: () => '', onSome: (f) => `.${f}` })}`;
313
+ const plain = Option.match(exp, { onNone: () => mantissa, onSome: (e) => `${mantissa}e${e}` });
314
+ const percent = text.includes('%');
315
+ const permille = text.includes('‰');
316
+ const lexical =
317
+ percent || permille
318
+ ? Option.isNone(exp)
319
+ ? shiftDecimal(mantissa, percent ? 2 : 3)
320
+ : String(Number(plain) / (percent ? 100 : 1000))
321
+ : plain;
322
+ return {
323
+ lexical,
324
+ hasDecimal: Option.isSome(frac),
325
+ hasExponent: Option.isSome(exp),
326
+ special: false,
327
+ };
328
+ };
329
+
330
+ const parseWithoutPattern = (text: string, format: NumberFormat): Result.Result<Parsed, string> => {
331
+ if (SPECIAL.test(text))
332
+ return Result.succeed({ lexical: text, hasDecimal: false, hasExponent: false, special: true });
333
+ const g = Option.getOrUndefined(format.groupChar);
334
+ const d = format.decimalChar;
335
+ const groupClass = g === undefined ? '' : escape(g);
336
+ const re = new RegExp(
337
+ `^([+-]?)(\\d(?:\\d|${g === undefined ? '(?!)' : groupClass})*)?(?:${escape(d)}(\\d+))?(?:[Ee]([+-]?\\d+))?([%‰]?)$`,
338
+ 'u',
339
+ );
340
+ const m = re.exec(text);
341
+ if (m === null || (m[2] === undefined && m[3] === undefined))
342
+ return Result.fail('is not a number');
343
+ const int = m[2] ?? '';
344
+ if (g !== undefined && (int.includes(g + g) || int.endsWith(g)))
345
+ return Result.fail('contains consecutive group characters');
346
+ return Result.succeed(
347
+ finish(
348
+ m[1] ?? '',
349
+ g === undefined ? int : digitsOf(int, g),
350
+ Option.fromNullishOr(m[3]),
351
+ Option.fromNullishOr(m[4]),
352
+ text,
353
+ ),
354
+ );
355
+ };
356
+
357
+ /**
358
+ * Parses a cell string with a numeric format.
359
+ *
360
+ * @internal
361
+ */
362
+ export const parse = (text: string, format: NumberFormat): Result.Result<Parsed, string> =>
363
+ Option.match(format.pattern, {
364
+ onNone: () => parseWithoutPattern(text, format),
365
+ onSome: (pattern) =>
366
+ SPECIAL.test(text)
367
+ ? Result.succeed({ lexical: text, hasDecimal: false, hasExponent: false, special: true })
368
+ : parseWithPattern(text, format, pattern),
369
+ });