@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.
- package/LICENSE +21 -0
- package/README.md +2250 -1
- package/dist/Algebra-CGG4oae3.mjs +433 -0
- package/dist/Algebra-CGG4oae3.mjs.map +1 -0
- package/dist/Algebra-uGsIEOUA.d.mts +446 -0
- package/dist/Ast-CPRZmBvk.mjs +552 -0
- package/dist/Ast-CPRZmBvk.mjs.map +1 -0
- package/dist/Ast-vcw2W-lf.d.mts +827 -0
- package/dist/Bindings-Ck3m7JRC.mjs +249 -0
- package/dist/Bindings-Ck3m7JRC.mjs.map +1 -0
- package/dist/Bindings-DiKpBd7f.d.mts +153 -0
- package/dist/ClientErrors-CpXdFX5u.mjs +128 -0
- package/dist/ClientErrors-CpXdFX5u.mjs.map +1 -0
- package/dist/ClientErrors-D4IZHUM-.d.mts +101 -0
- package/dist/ClientFormats-CXomkXLV.mjs +73 -0
- package/dist/ClientFormats-CXomkXLV.mjs.map +1 -0
- package/dist/ClientFormats-Dm57ZPwR.d.mts +36 -0
- package/dist/Csv2Json-DynEcwCh.mjs +194 -0
- package/dist/Csv2Json-DynEcwCh.mjs.map +1 -0
- package/dist/Csv2Json-aXNVDoXQ.d.mts +40 -0
- package/dist/Csv2Rdf-8maXP6mt.d.mts +41 -0
- package/dist/Csv2Rdf-DuSEkaKE.mjs +161 -0
- package/dist/Csv2Rdf-DuSEkaKE.mjs.map +1 -0
- package/dist/Dataset-BlmlcI7J.mjs +782 -0
- package/dist/Dataset-BlmlcI7J.mjs.map +1 -0
- package/dist/Dataset-DS3ESOcO.d.mts +426 -0
- package/dist/Dataset.d.mts +2 -0
- package/dist/Dataset.mjs +1 -0
- package/dist/Datatype-CxMpamHC.d.mts +212 -0
- package/dist/Datatype-DQvkNkiH.mjs +1001 -0
- package/dist/Datatype-DQvkNkiH.mjs.map +1 -0
- package/dist/Dialect-8ChFj5EX.d.mts +113 -0
- package/dist/Dialect-CzVH38uo.mjs +165 -0
- package/dist/Dialect-CzVH38uo.mjs.map +1 -0
- package/dist/DocumentLoader-D3lZREnB.mjs +346 -0
- package/dist/DocumentLoader-D3lZREnB.mjs.map +1 -0
- package/dist/DocumentLoader-ZUCEVrW5.d.mts +178 -0
- package/dist/DublinCore-AnwqxRx6.mjs +137 -0
- package/dist/DublinCore-AnwqxRx6.mjs.map +1 -0
- package/dist/DublinCore-Dq-tVA5d.d.mts +119 -0
- package/dist/Engine-CYPB3g4h.d.mts +144 -0
- package/dist/Engine-DF8PN7g-.mjs +872 -0
- package/dist/Engine-DF8PN7g-.mjs.map +1 -0
- package/dist/Errors-CMdV1RhU.mjs +37 -0
- package/dist/Errors-CMdV1RhU.mjs.map +1 -0
- package/dist/Errors-u2bDjUeM.d.mts +30 -0
- package/dist/Evaluator-DEsU4d1o.d.mts +50 -0
- package/dist/Evaluator-DOY2-guC.mjs +281 -0
- package/dist/Evaluator-DOY2-guC.mjs.map +1 -0
- package/dist/Exif-CpqniYQd.d.mts +78 -0
- package/dist/Exif-DjkCfEB-.mjs +89 -0
- package/dist/Exif-DjkCfEB-.mjs.map +1 -0
- package/dist/Expression-BIMMvduQ.mjs +230 -0
- package/dist/Expression-BIMMvduQ.mjs.map +1 -0
- package/dist/Expression-W8A9cyX7.d.mts +89 -0
- package/dist/Extract-Bop85jES.mjs +220 -0
- package/dist/Extract-Bop85jES.mjs.map +1 -0
- package/dist/Extract-C_pCvuTC.d.mts +88 -0
- package/dist/Federation-BcNrozc1.d.mts +52 -0
- package/dist/Federation-CHScBkaK.mjs +130 -0
- package/dist/Federation-CHScBkaK.mjs.map +1 -0
- package/dist/Functions-AvjNcId_.mjs +1346 -0
- package/dist/Functions-AvjNcId_.mjs.map +1 -0
- package/dist/Functions-OQJZP-F6.d.mts +111 -0
- package/dist/Generator-C52mmq01.d.mts +50 -0
- package/dist/Generator-D3utCJC7.mjs +205 -0
- package/dist/Generator-D3utCJC7.mjs.map +1 -0
- package/dist/Grammar-CPlSxGH6.mjs +200 -0
- package/dist/Grammar-CPlSxGH6.mjs.map +1 -0
- package/dist/Grammar-CRhnRoCu.d.mts +148 -0
- package/dist/Grammar-D6jZdJQ3.d.mts +169 -0
- package/dist/Grammar-mQ8CgE1M.mjs +258 -0
- package/dist/Grammar-mQ8CgE1M.mjs.map +1 -0
- package/dist/GraphStore-DhUa4nFO.d.mts +45 -0
- package/dist/GraphStore-DvbqwKy1.mjs +212 -0
- package/dist/GraphStore-DvbqwKy1.mjs.map +1 -0
- package/dist/Iri-BB8Ks-BF.d.mts +84 -0
- package/dist/Iri-Cr92gsQV.mjs +232 -0
- package/dist/Iri-Cr92gsQV.mjs.map +1 -0
- package/dist/Iri.d.mts +2 -0
- package/dist/Iri.mjs +1 -0
- package/dist/Isomorphism-B6qTY-xy.d.mts +28 -0
- package/dist/Isomorphism-BmqxhKyJ.mjs +232 -0
- package/dist/Isomorphism-BmqxhKyJ.mjs.map +1 -0
- package/dist/Isomorphism-DInKnWIy.mjs +390 -0
- package/dist/Isomorphism-DInKnWIy.mjs.map +1 -0
- package/dist/Isomorphism-DvSfZXLR.d.mts +37 -0
- package/dist/Isomorphism.d.mts +2 -0
- package/dist/Isomorphism.mjs +1 -0
- package/dist/JsonLd-DOwS2FHg.mjs +2836 -0
- package/dist/JsonLd-DOwS2FHg.mjs.map +1 -0
- package/dist/JsonLd-DobFrQNa.d.mts +242 -0
- package/dist/JsonLdError-C9J-BxfG.mjs +106 -0
- package/dist/JsonLdError-C9J-BxfG.mjs.map +1 -0
- package/dist/JsonLdError-DSOfHkOy.d.mts +43 -0
- package/dist/LanguageTag-BCu8rcmX.d.mts +38 -0
- package/dist/LanguageTag-BcOpMGZ4.mjs +89 -0
- package/dist/LanguageTag-BcOpMGZ4.mjs.map +1 -0
- package/dist/LanguageTag.d.mts +2 -0
- package/dist/LanguageTag.mjs +1 -0
- package/dist/Lexical-Cg0JHrf6.mjs +243 -0
- package/dist/Lexical-Cg0JHrf6.mjs.map +1 -0
- package/dist/Lexical-D3zySYVS.d.mts +163 -0
- package/dist/Manifest-B6xf6mUc.mjs +148 -0
- package/dist/Manifest-B6xf6mUc.mjs.map +1 -0
- package/dist/Manifest-DQUMRBFr.d.mts +98 -0
- package/dist/Mapping-BgG74x3U.d.mts +63 -0
- package/dist/Mapping-Dc1ZGirk.mjs +259 -0
- package/dist/Mapping-Dc1ZGirk.mjs.map +1 -0
- package/dist/Mcp-1DwTTKOK.mjs +48 -0
- package/dist/Mcp-1DwTTKOK.mjs.map +1 -0
- package/dist/Mcp-d-pX9erx.d.mts +25 -0
- package/dist/Message-CK_DGQuu.mjs +95 -0
- package/dist/Message-CK_DGQuu.mjs.map +1 -0
- package/dist/Message-fIvTJSXM.d.mts +49 -0
- package/dist/Metadata-BbffwGDZ.mjs +445 -0
- package/dist/Metadata-BbffwGDZ.mjs.map +1 -0
- package/dist/Metadata-CEt3yc1-.d.mts +901 -0
- package/dist/Metadata-D4HsQNXr.mjs +1273 -0
- package/dist/Metadata-D4HsQNXr.mjs.map +1 -0
- package/dist/Metadata-nzS7QKRj.d.mts +350 -0
- package/dist/Model-DaMmxurZ.d.mts +293 -0
- package/dist/Model-DlPzRYhF.mjs +528 -0
- package/dist/Model-DlPzRYhF.mjs.map +1 -0
- package/dist/N3-BzyV-KIH.mjs +974 -0
- package/dist/N3-BzyV-KIH.mjs.map +1 -0
- package/dist/N3-DSLnonDn.d.mts +100 -0
- package/dist/NQuads-C1VBOJ3-.mjs +117 -0
- package/dist/NQuads-C1VBOJ3-.mjs.map +1 -0
- package/dist/NQuads-FjFZikFg.d.mts +76 -0
- package/dist/NTriples-D-kLSEAf.mjs +120 -0
- package/dist/NTriples-D-kLSEAf.mjs.map +1 -0
- package/dist/NTriples-D34OspfW.d.mts +76 -0
- package/dist/Namespace-ClTUO_ya.d.mts +42 -0
- package/dist/Namespace-DHFIsORd.mjs +75 -0
- package/dist/Namespace-DHFIsORd.mjs.map +1 -0
- package/dist/Namespace.d.mts +2 -0
- package/dist/Namespace.mjs +1 -0
- package/dist/Namespaces-Bz85vpjW.mjs +235 -0
- package/dist/Namespaces-Bz85vpjW.mjs.map +1 -0
- package/dist/Namespaces-C1jW6EDo.d.mts +178 -0
- package/dist/Optimizer-BWWQRQPY.mjs +168 -0
- package/dist/Optimizer-BWWQRQPY.mjs.map +1 -0
- package/dist/Optimizer-DUpUow6k.d.mts +26 -0
- package/dist/Options-BLBGL4HE.mjs +72 -0
- package/dist/Options-BLBGL4HE.mjs.map +1 -0
- package/dist/Options-BommQwP9.d.mts +127 -0
- package/dist/Packet-CA76wVX3.mjs +197 -0
- package/dist/Packet-CA76wVX3.mjs.map +1 -0
- package/dist/Packet-Cy5g6XuW.d.mts +130 -0
- package/dist/Parser-p1Gyr0QN.d.mts +85 -0
- package/dist/Parser-xARsOWXk.mjs +1317 -0
- package/dist/Parser-xARsOWXk.mjs.map +1 -0
- package/dist/Path-B20Yp8KE.mjs +284 -0
- package/dist/Path-B20Yp8KE.mjs.map +1 -0
- package/dist/Path-DRB8e-Zn.d.mts +181 -0
- package/dist/Pdf-B9RZn--8.d.mts +77 -0
- package/dist/Pdf-CKK6dkZn.mjs +89 -0
- package/dist/Pdf-CKK6dkZn.mjs.map +1 -0
- package/dist/PdfA-CUjSuntT.d.mts +109 -0
- package/dist/PdfA-CleOhuL6.mjs +124 -0
- package/dist/PdfA-CleOhuL6.mjs.map +1 -0
- package/dist/Photoshop-CiHo80qV.mjs +233 -0
- package/dist/Photoshop-CiHo80qV.mjs.map +1 -0
- package/dist/Photoshop-udKZ0I3N.d.mts +204 -0
- package/dist/PrefixMap-BHFPDLO-.mjs +103 -0
- package/dist/PrefixMap-BHFPDLO-.mjs.map +1 -0
- package/dist/PrefixMap-BMlXrWNd.d.mts +64 -0
- package/dist/PrefixMap.d.mts +2 -0
- package/dist/PrefixMap.mjs +1 -0
- package/dist/Processor-CMmecFsb.mjs +198 -0
- package/dist/Processor-CMmecFsb.mjs.map +1 -0
- package/dist/Processor-FJPvO0CB.d.mts +435 -0
- package/dist/Protocol-BA7OkNgp.mjs +202 -0
- package/dist/Protocol-BA7OkNgp.mjs.map +1 -0
- package/dist/Protocol-DlSoiIKB.d.mts +108 -0
- package/dist/ProtocolErrors-Ckfejnl6.d.mts +84 -0
- package/dist/ProtocolErrors-czDPVcX5.mjs +129 -0
- package/dist/ProtocolErrors-czDPVcX5.mjs.map +1 -0
- package/dist/Query-D9A6LOpP.mjs +364 -0
- package/dist/Query-D9A6LOpP.mjs.map +1 -0
- package/dist/Query-KqSkTYyG.d.mts +96 -0
- package/dist/QueryBuilder-BLK9Vfbz.mjs +674 -0
- package/dist/QueryBuilder-BLK9Vfbz.mjs.map +1 -0
- package/dist/QueryBuilder-DUqh4ECe.d.mts +529 -0
- package/dist/RdfJs-D6-49XB5.mjs +86 -0
- package/dist/RdfJs-D6-49XB5.mjs.map +1 -0
- package/dist/RdfJs-DXFqdWrd.d.mts +76 -0
- package/dist/RdfJs.d.mts +2 -0
- package/dist/RdfJs.mjs +1 -0
- package/dist/RdfJson-5aKPDlPS.d.mts +297 -0
- package/dist/RdfJson-BNocgW4f.mjs +548 -0
- package/dist/RdfJson-BNocgW4f.mjs.map +1 -0
- package/dist/RdfXml-DJ9G4gOq.mjs +1014 -0
- package/dist/RdfXml-DJ9G4gOq.mjs.map +1 -0
- package/dist/RdfXml-_N7yxWEp.d.mts +149 -0
- package/dist/Rdfs-BRVPsAjc.d.mts +84 -0
- package/dist/Rdfs-CyY2wVHI.mjs +167 -0
- package/dist/Rdfs-CyY2wVHI.mjs.map +1 -0
- package/dist/Rdfs.d.mts +2 -0
- package/dist/Rdfs.mjs +1 -0
- package/dist/Reasoner-BxYhx9s7.d.mts +94 -0
- package/dist/Reasoner-Cw90zrjv.mjs +798 -0
- package/dist/Reasoner-Cw90zrjv.mjs.map +1 -0
- package/dist/Reification-BmN4EfnM.d.mts +40 -0
- package/dist/Reification-dpqQvjDE.mjs +82 -0
- package/dist/Reification-dpqQvjDE.mjs.map +1 -0
- package/dist/Reification.d.mts +2 -0
- package/dist/Reification.mjs +1 -0
- package/dist/Report-XHs8htzK.mjs +121 -0
- package/dist/Report-XHs8htzK.mjs.map +1 -0
- package/dist/Report-hcXsc_19.d.mts +115 -0
- package/dist/Resource-B1cI8FyJ.d.mts +218 -0
- package/dist/Resource-sIEeNh15.mjs +374 -0
- package/dist/Resource-sIEeNh15.mjs.map +1 -0
- package/dist/Resource.d.mts +2 -0
- package/dist/Resource.mjs +1 -0
- package/dist/Results-BVNEC-Wt.d.mts +277 -0
- package/dist/Results-peJjGA2V.mjs +621 -0
- package/dist/Results-peJjGA2V.mjs.map +1 -0
- package/dist/ResultsStream-BhF0OcNn.mjs +639 -0
- package/dist/ResultsStream-BhF0OcNn.mjs.map +1 -0
- package/dist/ResultsStream-toYMXrOe.d.mts +100 -0
- package/dist/SemAct-CDchtk49.d.mts +96 -0
- package/dist/SemAct-CmyT4yI8.mjs +118 -0
- package/dist/SemAct-CmyT4yI8.mjs.map +1 -0
- package/dist/Serialization-DP9H5bYQ.mjs +514 -0
- package/dist/Serialization-DP9H5bYQ.mjs.map +1 -0
- package/dist/Serialization-Df8iVauT.d.mts +392 -0
- package/dist/Serialization.d.mts +2 -0
- package/dist/Serialization.mjs +1 -0
- package/dist/ServerFormats-CrRnjjf6.mjs +64 -0
- package/dist/ServerFormats-CrRnjjf6.mjs.map +1 -0
- package/dist/ServerFormats-DjC9NsO_.d.mts +36 -0
- package/dist/ServiceDescription-BERsvg-k.d.mts +54 -0
- package/dist/ServiceDescription-Dq5hxeGy.mjs +97 -0
- package/dist/ServiceDescription-Dq5hxeGy.mjs.map +1 -0
- package/dist/ShExC-Ctf-06CL.d.mts +67 -0
- package/dist/ShExC-DJbB19i3.mjs +1181 -0
- package/dist/ShExC-DJbB19i3.mjs.map +1 -0
- package/dist/ShExError-BeYFD9rv.d.mts +61 -0
- package/dist/ShExError-CVtq2NnM.mjs +64 -0
- package/dist/ShExError-CVtq2NnM.mjs.map +1 -0
- package/dist/ShExJ-C1u_wgyD.d.mts +531 -0
- package/dist/ShExJ-COiPd9Xw.mjs +532 -0
- package/dist/ShExJ-COiPd9Xw.mjs.map +1 -0
- package/dist/ShExR-ByR4mCh-.mjs +480 -0
- package/dist/ShExR-ByR4mCh-.mjs.map +1 -0
- package/dist/ShExR-CqONNNBz.d.mts +40 -0
- package/dist/ShapeMap-C422pxKl.d.mts +140 -0
- package/dist/ShapeMap-CsgKxB2G.mjs +181 -0
- package/dist/ShapeMap-CsgKxB2G.mjs.map +1 -0
- package/dist/Shapes-18GjfyBV.mjs +597 -0
- package/dist/Shapes-18GjfyBV.mjs.map +1 -0
- package/dist/Shapes-BQFDFc4Q.d.mts +306 -0
- package/dist/Sparql-BiYFMSpl.mjs +29 -0
- package/dist/Sparql-BiYFMSpl.mjs.map +1 -0
- package/dist/Sparql-DecpWTPh.d.mts +97 -0
- package/dist/SparqlClient-C_CjXbwj.mjs +333 -0
- package/dist/SparqlClient-C_CjXbwj.mjs.map +1 -0
- package/dist/SparqlClient-UPc88SHy.d.mts +290 -0
- package/dist/SparqlServer-CbUW-pVj.d.mts +71 -0
- package/dist/SparqlServer-Db7w7Cll.mjs +308 -0
- package/dist/SparqlServer-Db7w7Cll.mjs.map +1 -0
- package/dist/SqlStore-BBqFx-Wl.mjs +684 -0
- package/dist/SqlStore-BBqFx-Wl.mjs.map +1 -0
- package/dist/SqlStore-CCJo5I-e.d.mts +117 -0
- package/dist/Store-D0jmVfb3.d.mts +166 -0
- package/dist/Store-DH3Ow1GO.mjs +162 -0
- package/dist/Store-DH3Ow1GO.mjs.map +1 -0
- package/dist/Structure-BjMo4Bkc.mjs +334 -0
- package/dist/Structure-BjMo4Bkc.mjs.map +1 -0
- package/dist/Structure-n4CmDiab.d.mts +63 -0
- package/dist/Table-BGgm9nbM.mjs +538 -0
- package/dist/Table-BGgm9nbM.mjs.map +1 -0
- package/dist/Table-C3reiVrb.d.mts +261 -0
- package/dist/Term-B_4ezyXq.d.mts +619 -0
- package/dist/Term-CFLG1qu4.mjs +991 -0
- package/dist/Term-CFLG1qu4.mjs.map +1 -0
- package/dist/Term.d.mts +2 -0
- package/dist/Term.mjs +1 -0
- package/dist/TermCodec-CDZiEztW.mjs +397 -0
- package/dist/TermCodec-CDZiEztW.mjs.map +1 -0
- package/dist/TermCodec-_03bDXr0.d.mts +209 -0
- package/dist/TermCodec.d.mts +2 -0
- package/dist/TermCodec.mjs +1 -0
- package/dist/TermJson-BOPe0yve.d.mts +232 -0
- package/dist/TermJson-FAg3lvjl.mjs +142 -0
- package/dist/TermJson-FAg3lvjl.mjs.map +1 -0
- package/dist/TermJson.d.mts +2 -0
- package/dist/TermJson.mjs +1 -0
- package/dist/TermSchema-Bn9CoaYA.mjs +30 -0
- package/dist/TermSchema-Bn9CoaYA.mjs.map +1 -0
- package/dist/TermSchema-DBO6MroX.d.mts +6 -0
- package/dist/Testing-B-aPCpmu.mjs +63 -0
- package/dist/Testing-B-aPCpmu.mjs.map +1 -0
- package/dist/Testing-CF6s8P3O.d.mts +53 -0
- package/dist/Tiff-CR-2QeSI.d.mts +148 -0
- package/dist/Tiff-DlsOlZPM.mjs +169 -0
- package/dist/Tiff-DlsOlZPM.mjs.map +1 -0
- package/dist/Tools-7MdRKccr.d.mts +583 -0
- package/dist/Tools-ryxphZbI.mjs +329 -0
- package/dist/Tools-ryxphZbI.mjs.map +1 -0
- package/dist/Translate-B0YKKANS.d.mts +37 -0
- package/dist/Translate-gzWPq0Ia.mjs +308 -0
- package/dist/Translate-gzWPq0Ia.mjs.map +1 -0
- package/dist/Translation-DC9rLm2y.mjs +1535 -0
- package/dist/Translation-DC9rLm2y.mjs.map +1 -0
- package/dist/Translation-K4L9XBqX.d.mts +103 -0
- package/dist/TriG-BkqtqZ6Y.mjs +125 -0
- package/dist/TriG-BkqtqZ6Y.mjs.map +1 -0
- package/dist/TriG-xDjdDatp.d.mts +86 -0
- package/dist/Turtle-Bv1_bisW.d.mts +85 -0
- package/dist/Turtle-CZVUOtwl.mjs +133 -0
- package/dist/Turtle-CZVUOtwl.mjs.map +1 -0
- package/dist/ValidationReport-DBdJshW5.mjs +285 -0
- package/dist/ValidationReport-DBdJshW5.mjs.map +1 -0
- package/dist/ValidationReport-Dx3WxY0h.d.mts +192 -0
- package/dist/Validator-227ff9Rn.d.mts +179 -0
- package/dist/Validator-BzXMKDeJ.mjs +1162 -0
- package/dist/Validator-BzXMKDeJ.mjs.map +1 -0
- package/dist/Validator-Dl8cih5V.d.mts +207 -0
- package/dist/Validator-DmUfMbpL.mjs +568 -0
- package/dist/Validator-DmUfMbpL.mjs.map +1 -0
- package/dist/Vocab-DceKywpq.mjs +168 -0
- package/dist/Vocab-DceKywpq.mjs.map +1 -0
- package/dist/Vocab-Df-L-IwZ.d.mts +46 -0
- package/dist/Vocab-Do56UgBX.d.mts +81 -0
- package/dist/Vocab-TfpWG1Ne.mjs +118 -0
- package/dist/Vocab-TfpWG1Ne.mjs.map +1 -0
- package/dist/Vocab.d.mts +2 -0
- package/dist/Vocab.mjs +1 -0
- package/dist/Vocabulary-C6-GPOy4.d.mts +22 -0
- package/dist/Vocabulary-CnQl-_Z4.mjs +179 -0
- package/dist/Vocabulary-CnQl-_Z4.mjs.map +1 -0
- package/dist/Xml-B7iihYCS.mjs +976 -0
- package/dist/Xml-B7iihYCS.mjs.map +1 -0
- package/dist/Xml-CmfHS7SW.d.mts +267 -0
- package/dist/Xmp-D7CKA7MZ.d.mts +111 -0
- package/dist/Xmp-DCGN9pOD.mjs +307 -0
- package/dist/Xmp-DCGN9pOD.mjs.map +1 -0
- package/dist/XmpBasic-CP38jpR_.mjs +73 -0
- package/dist/XmpBasic-CP38jpR_.mjs.map +1 -0
- package/dist/XmpBasic-Cmbe53rQ.d.mts +64 -0
- package/dist/XmpMM-BfL_TgJF.mjs +73 -0
- package/dist/XmpMM-BfL_TgJF.mjs.map +1 -0
- package/dist/XmpMM-Dqm3IX8p.d.mts +63 -0
- package/dist/XmpRights-BKPtoI5L.mjs +73 -0
- package/dist/XmpRights-BKPtoI5L.mjs.map +1 -0
- package/dist/XmpRights-CaALZQz2.d.mts +63 -0
- package/dist/Xsd-Cdgx5zRB.mjs +405 -0
- package/dist/Xsd-Cdgx5zRB.mjs.map +1 -0
- package/dist/Xsd-D2elNhSm.d.mts +187 -0
- package/dist/Xsd.d.mts +2 -0
- package/dist/Xsd.mjs +1 -0
- package/dist/accessors-CEjaojuQ.mjs +28 -0
- package/dist/accessors-CEjaojuQ.mjs.map +1 -0
- package/dist/codec-Lb2T96rv.d.mts +20 -0
- package/dist/codec-QNo7IdJF.mjs +389 -0
- package/dist/codec-QNo7IdJF.mjs.map +1 -0
- package/dist/csvw/Csv2Json.d.mts +2 -0
- package/dist/csvw/Csv2Json.mjs +1 -0
- package/dist/csvw/Csv2Rdf.d.mts +2 -0
- package/dist/csvw/Csv2Rdf.mjs +1 -0
- package/dist/csvw/Datatype.d.mts +2 -0
- package/dist/csvw/Datatype.mjs +1 -0
- package/dist/csvw/Metadata.d.mts +2 -0
- package/dist/csvw/Metadata.mjs +1 -0
- package/dist/csvw/Processor.d.mts +2 -0
- package/dist/csvw/Processor.mjs +1 -0
- package/dist/csvw/Report.d.mts +2 -0
- package/dist/csvw/Report.mjs +1 -0
- package/dist/csvw/Table.d.mts +2 -0
- package/dist/csvw/Table.mjs +1 -0
- package/dist/csvw/index.d.mts +8 -0
- package/dist/csvw/index.mjs +8 -0
- package/dist/index-Cms2TYfC.d.mts +16 -0
- package/dist/index-Ct8xFmRs.d.mts +7 -0
- package/dist/index-D4QFwOjm.d.mts +28 -0
- package/dist/index.d.mts +18 -0
- package/dist/index.mjs +17 -0
- package/dist/jsonld/DocumentLoader.d.mts +2 -0
- package/dist/jsonld/DocumentLoader.mjs +1 -0
- package/dist/jsonld/JsonLd.d.mts +2 -0
- package/dist/jsonld/JsonLd.mjs +1 -0
- package/dist/jsonld/JsonLdError.d.mts +2 -0
- package/dist/jsonld/JsonLdError.mjs +1 -0
- package/dist/jsonld/index.d.mts +4 -0
- package/dist/jsonld/index.mjs +4 -0
- package/dist/lists-D-OpQ0Ir.mjs +77 -0
- package/dist/lists-D-OpQ0Ir.mjs.map +1 -0
- package/dist/loop-D5-gNx9K.mjs +21 -0
- package/dist/loop-D5-gNx9K.mjs.map +1 -0
- package/dist/loop-DZ2hXlr_.mjs +21 -0
- package/dist/loop-DZ2hXlr_.mjs.map +1 -0
- package/dist/n3/Isomorphism.d.mts +2 -0
- package/dist/n3/Isomorphism.mjs +1 -0
- package/dist/n3/Mapping.d.mts +2 -0
- package/dist/n3/Mapping.mjs +1 -0
- package/dist/n3/Model.d.mts +2 -0
- package/dist/n3/Model.mjs +1 -0
- package/dist/n3/N3.d.mts +2 -0
- package/dist/n3/N3.mjs +1 -0
- package/dist/n3/Reasoner.d.mts +2 -0
- package/dist/n3/Reasoner.mjs +2 -0
- package/dist/n3/Vocab.d.mts +2 -0
- package/dist/n3/Vocab.mjs +1 -0
- package/dist/n3/index.d.mts +7 -0
- package/dist/n3/index.mjs +7 -0
- package/dist/ntriples/Grammar.d.mts +2 -0
- package/dist/ntriples/Grammar.mjs +1 -0
- package/dist/ntriples/Lexical.d.mts +2 -0
- package/dist/ntriples/Lexical.mjs +1 -0
- package/dist/ntriples/NQuads.d.mts +2 -0
- package/dist/ntriples/NQuads.mjs +1 -0
- package/dist/ntriples/NTriples.d.mts +2 -0
- package/dist/ntriples/NTriples.mjs +1 -0
- package/dist/ntriples/index.d.mts +5 -0
- package/dist/ntriples/index.mjs +5 -0
- package/dist/rdfjson/RdfJson.d.mts +2 -0
- package/dist/rdfjson/RdfJson.mjs +1 -0
- package/dist/rdfjson/index.d.mts +2 -0
- package/dist/rdfjson/index.mjs +1 -0
- package/dist/rdfxml/RdfXml.d.mts +2 -0
- package/dist/rdfxml/RdfXml.mjs +1 -0
- package/dist/rdfxml/Xml.d.mts +2 -0
- package/dist/rdfxml/Xml.mjs +1 -0
- package/dist/rdfxml/index.d.mts +3 -0
- package/dist/rdfxml/index.mjs +3 -0
- package/dist/rolldown-runtime-D8jQpDG7.mjs +12 -0
- package/dist/serialize-96KBvKaf.mjs +1463 -0
- package/dist/serialize-96KBvKaf.mjs.map +1 -0
- package/dist/serialize-DsoXdM6n.d.mts +37 -0
- package/dist/shacl/Message.d.mts +2 -0
- package/dist/shacl/Message.mjs +1 -0
- package/dist/shacl/Path.d.mts +2 -0
- package/dist/shacl/Path.mjs +1 -0
- package/dist/shacl/Shapes.d.mts +2 -0
- package/dist/shacl/Shapes.mjs +1 -0
- package/dist/shacl/Sparql.d.mts +2 -0
- package/dist/shacl/Sparql.mjs +1 -0
- package/dist/shacl/ValidationReport.d.mts +2 -0
- package/dist/shacl/ValidationReport.mjs +1 -0
- package/dist/shacl/Validator.d.mts +2 -0
- package/dist/shacl/Validator.mjs +1 -0
- package/dist/shacl/Vocabulary.d.mts +2 -0
- package/dist/shacl/Vocabulary.mjs +1 -0
- package/dist/shacl/index.d.mts +9 -0
- package/dist/shacl/index.mjs +8 -0
- package/dist/shex/SemAct.d.mts +2 -0
- package/dist/shex/SemAct.mjs +1 -0
- package/dist/shex/ShExC.d.mts +2 -0
- package/dist/shex/ShExC.mjs +1 -0
- package/dist/shex/ShExError.d.mts +2 -0
- package/dist/shex/ShExError.mjs +1 -0
- package/dist/shex/ShExJ.d.mts +2 -0
- package/dist/shex/ShExJ.mjs +2 -0
- package/dist/shex/ShExR.d.mts +2 -0
- package/dist/shex/ShExR.mjs +1 -0
- package/dist/shex/ShapeMap.d.mts +2 -0
- package/dist/shex/ShapeMap.mjs +1 -0
- package/dist/shex/Structure.d.mts +2 -0
- package/dist/shex/Structure.mjs +2 -0
- package/dist/shex/Validator.d.mts +2 -0
- package/dist/shex/Validator.mjs +4 -0
- package/dist/shex/index.d.mts +9 -0
- package/dist/shex/index.mjs +9 -0
- package/dist/sparql/Algebra.d.mts +2 -0
- package/dist/sparql/Algebra.mjs +1 -0
- package/dist/sparql/Ast.d.mts +2 -0
- package/dist/sparql/Ast.mjs +1 -0
- package/dist/sparql/Bindings.d.mts +2 -0
- package/dist/sparql/Bindings.mjs +1 -0
- package/dist/sparql/ClientErrors.d.mts +2 -0
- package/dist/sparql/ClientErrors.mjs +1 -0
- package/dist/sparql/ClientFormats.d.mts +2 -0
- package/dist/sparql/ClientFormats.mjs +1 -0
- package/dist/sparql/Engine.d.mts +2 -0
- package/dist/sparql/Engine.mjs +1 -0
- package/dist/sparql/Errors.d.mts +2 -0
- package/dist/sparql/Errors.mjs +1 -0
- package/dist/sparql/Expression.d.mts +2 -0
- package/dist/sparql/Expression.mjs +1 -0
- package/dist/sparql/Federation.d.mts +2 -0
- package/dist/sparql/Federation.mjs +1 -0
- package/dist/sparql/Functions.d.mts +2 -0
- package/dist/sparql/Functions.mjs +1 -0
- package/dist/sparql/Generator.d.mts +2 -0
- package/dist/sparql/Generator.mjs +1 -0
- package/dist/sparql/GraphStore.d.mts +2 -0
- package/dist/sparql/GraphStore.mjs +1 -0
- package/dist/sparql/Optimizer.d.mts +2 -0
- package/dist/sparql/Optimizer.mjs +1 -0
- package/dist/sparql/Options.d.mts +2 -0
- package/dist/sparql/Options.mjs +1 -0
- package/dist/sparql/Parser.d.mts +2 -0
- package/dist/sparql/Parser.mjs +1 -0
- package/dist/sparql/Protocol.d.mts +2 -0
- package/dist/sparql/Protocol.mjs +1 -0
- package/dist/sparql/ProtocolErrors.d.mts +2 -0
- package/dist/sparql/ProtocolErrors.mjs +1 -0
- package/dist/sparql/QueryBuilder.d.mts +2 -0
- package/dist/sparql/QueryBuilder.mjs +1 -0
- package/dist/sparql/Results.d.mts +2 -0
- package/dist/sparql/Results.mjs +1 -0
- package/dist/sparql/ResultsStream.d.mts +2 -0
- package/dist/sparql/ResultsStream.mjs +1 -0
- package/dist/sparql/ServerFormats.d.mts +2 -0
- package/dist/sparql/ServerFormats.mjs +1 -0
- package/dist/sparql/ServiceDescription.d.mts +2 -0
- package/dist/sparql/ServiceDescription.mjs +1 -0
- package/dist/sparql/SparqlClient.d.mts +2 -0
- package/dist/sparql/SparqlClient.mjs +1 -0
- package/dist/sparql/SparqlServer.d.mts +2 -0
- package/dist/sparql/SparqlServer.mjs +1 -0
- package/dist/sparql/Store.d.mts +2 -0
- package/dist/sparql/Store.mjs +1 -0
- package/dist/sparql/TermSchema.d.mts +3 -0
- package/dist/sparql/TermSchema.mjs +2 -0
- package/dist/sparql/Testing.d.mts +2 -0
- package/dist/sparql/Testing.mjs +1 -0
- package/dist/sparql/Translate.d.mts +2 -0
- package/dist/sparql/Translate.mjs +1 -0
- package/dist/sparql/ai/Mcp.d.mts +2 -0
- package/dist/sparql/ai/Mcp.mjs +1 -0
- package/dist/sparql/ai/Tools.d.mts +2 -0
- package/dist/sparql/ai/Tools.mjs +1 -0
- package/dist/sparql/ai/index.d.mts +3 -0
- package/dist/sparql/ai/index.mjs +3 -0
- package/dist/sparql/index.d.mts +30 -0
- package/dist/sparql/index.mjs +29 -0
- package/dist/sparql/shacl/Evaluator.d.mts +2 -0
- package/dist/sparql/shacl/Evaluator.mjs +1 -0
- package/dist/sparql/shacl/Query.d.mts +2 -0
- package/dist/sparql/shacl/Query.mjs +1 -0
- package/dist/sparql/shacl/index.d.mts +3 -0
- package/dist/sparql/shacl/index.mjs +3 -0
- package/dist/sparql/sql/Dialect.d.mts +2 -0
- package/dist/sparql/sql/Dialect.mjs +1 -0
- package/dist/sparql/sql/SqlStore.d.mts +2 -0
- package/dist/sparql/sql/SqlStore.mjs +1 -0
- package/dist/sparql/sql/Translation.d.mts +2 -0
- package/dist/sparql/sql/Translation.mjs +1 -0
- package/dist/sparql/sql/index.d.mts +4 -0
- package/dist/sparql/sql/index.mjs +4 -0
- package/dist/stringMap-D5YIpYtR.mjs +38 -0
- package/dist/stringMap-D5YIpYtR.mjs.map +1 -0
- package/dist/tokens-C6BzeodQ.mjs +24 -0
- package/dist/tokens-C6BzeodQ.mjs.map +1 -0
- package/dist/turtle/Grammar.d.mts +3 -0
- package/dist/turtle/Grammar.mjs +3 -0
- package/dist/turtle/Manifest.d.mts +2 -0
- package/dist/turtle/Manifest.mjs +1 -0
- package/dist/turtle/TriG.d.mts +2 -0
- package/dist/turtle/TriG.mjs +1 -0
- package/dist/turtle/Turtle.d.mts +2 -0
- package/dist/turtle/Turtle.mjs +1 -0
- package/dist/turtle/index.d.mts +5 -0
- package/dist/turtle/index.mjs +5 -0
- package/dist/xmp/DublinCore.d.mts +2 -0
- package/dist/xmp/DublinCore.mjs +1 -0
- package/dist/xmp/Exif.d.mts +2 -0
- package/dist/xmp/Exif.mjs +1 -0
- package/dist/xmp/Extract.d.mts +2 -0
- package/dist/xmp/Extract.mjs +1 -0
- package/dist/xmp/Metadata.d.mts +2 -0
- package/dist/xmp/Metadata.mjs +1 -0
- package/dist/xmp/Namespaces.d.mts +2 -0
- package/dist/xmp/Namespaces.mjs +1 -0
- package/dist/xmp/Packet.d.mts +2 -0
- package/dist/xmp/Packet.mjs +1 -0
- package/dist/xmp/Pdf.d.mts +2 -0
- package/dist/xmp/Pdf.mjs +1 -0
- package/dist/xmp/PdfA.d.mts +2 -0
- package/dist/xmp/PdfA.mjs +1 -0
- package/dist/xmp/Photoshop.d.mts +2 -0
- package/dist/xmp/Photoshop.mjs +1 -0
- package/dist/xmp/Tiff.d.mts +2 -0
- package/dist/xmp/Tiff.mjs +1 -0
- package/dist/xmp/Xmp.d.mts +2 -0
- package/dist/xmp/Xmp.mjs +3 -0
- package/dist/xmp/XmpBasic.d.mts +2 -0
- package/dist/xmp/XmpBasic.mjs +1 -0
- package/dist/xmp/XmpMM.d.mts +2 -0
- package/dist/xmp/XmpMM.mjs +1 -0
- package/dist/xmp/XmpRights.d.mts +2 -0
- package/dist/xmp/XmpRights.mjs +1 -0
- package/dist/xmp/index.d.mts +15 -0
- package/dist/xmp/index.mjs +15 -0
- package/package.json +187 -3
- package/src/Dataset.ts +1085 -0
- package/src/Iri.ts +322 -0
- package/src/Isomorphism.ts +319 -0
- package/src/LanguageTag.ts +98 -0
- package/src/Namespace.ts +100 -0
- package/src/PrefixMap.ts +117 -0
- package/src/RdfJs.ts +146 -0
- package/src/Rdfs.ts +241 -0
- package/src/Reification.ts +103 -0
- package/src/Resource.ts +873 -0
- package/src/Serialization.ts +775 -0
- package/src/Term.ts +1300 -0
- package/src/TermCodec.ts +505 -0
- package/src/TermJson.ts +313 -0
- package/src/Vocab.ts +161 -0
- package/src/Xsd.ts +573 -0
- package/src/csvw/Csv2Json.ts +265 -0
- package/src/csvw/Csv2Rdf.ts +268 -0
- package/src/csvw/Datatype.ts +589 -0
- package/src/csvw/Metadata.ts +1523 -0
- package/src/csvw/Processor.ts +276 -0
- package/src/csvw/Report.ts +135 -0
- package/src/csvw/Table.ts +759 -0
- package/src/csvw/index.ts +22 -0
- package/src/csvw/internal/dateFormat.ts +202 -0
- package/src/csvw/internal/json.ts +104 -0
- package/src/csvw/internal/numberFormat.ts +369 -0
- package/src/csvw/internal/object.ts +23 -0
- package/src/csvw/internal/uriTemplate.ts +130 -0
- package/src/csvw/internal/url.ts +93 -0
- package/src/csvw/internal/vocab.ts +282 -0
- package/src/index.ts +40 -0
- package/src/internal/arbitrary.ts +148 -0
- package/src/internal/loop.ts +24 -0
- package/src/internal/pending.ts +20 -0
- package/src/internal/textDecoder.ts +183 -0
- package/src/jsonld/DocumentLoader.ts +512 -0
- package/src/jsonld/JsonLd.ts +847 -0
- package/src/jsonld/JsonLdError.ts +105 -0
- package/src/jsonld/index.ts +13 -0
- package/src/jsonld/internal/compact.ts +852 -0
- package/src/jsonld/internal/context.ts +781 -0
- package/src/jsonld/internal/expand.ts +614 -0
- package/src/jsonld/internal/flatten.ts +243 -0
- package/src/jsonld/internal/frame.ts +559 -0
- package/src/jsonld/internal/iri.ts +52 -0
- package/src/jsonld/internal/json.ts +19 -0
- package/src/jsonld/internal/linkHeader.ts +60 -0
- package/src/jsonld/internal/rdf.ts +481 -0
- package/src/jsonld/internal/util.ts +367 -0
- package/src/n3/Isomorphism.ts +476 -0
- package/src/n3/Mapping.ts +332 -0
- package/src/n3/Model.ts +696 -0
- package/src/n3/N3.ts +237 -0
- package/src/n3/Reasoner.ts +568 -0
- package/src/n3/Vocab.ts +111 -0
- package/src/n3/index.ts +21 -0
- package/src/n3/internal/builtins.ts +668 -0
- package/src/n3/internal/guards.ts +23 -0
- package/src/n3/internal/lists.ts +106 -0
- package/src/n3/internal/loop.ts +28 -0
- package/src/n3/internal/parser.ts +1032 -0
- package/src/n3/internal/writer.ts +344 -0
- package/src/ntriples/Grammar.ts +317 -0
- package/src/ntriples/Lexical.ts +321 -0
- package/src/ntriples/NQuads.ts +140 -0
- package/src/ntriples/NTriples.ts +143 -0
- package/src/ntriples/index.ts +14 -0
- package/src/ntriples/internal/codec.ts +229 -0
- package/src/ntriples/internal/lineParser.ts +326 -0
- package/src/ntriples/internal/loop.ts +14 -0
- package/src/rdfjson/RdfJson.ts +806 -0
- package/src/rdfjson/index.ts +9 -0
- package/src/rdfjson/internal/json.ts +19 -0
- package/src/rdfxml/RdfXml.ts +1408 -0
- package/src/rdfxml/Xml.ts +419 -0
- package/src/rdfxml/index.ts +11 -0
- package/src/rdfxml/internal/chars.ts +73 -0
- package/src/rdfxml/internal/loop.ts +24 -0
- package/src/rdfxml/internal/parser.ts +1265 -0
- package/src/shacl/Message.ts +102 -0
- package/src/shacl/Path.ts +483 -0
- package/src/shacl/Shapes.ts +913 -0
- package/src/shacl/Sparql.ts +128 -0
- package/src/shacl/ValidationReport.ts +438 -0
- package/src/shacl/Validator.ts +1156 -0
- package/src/shacl/Vocabulary.ts +180 -0
- package/src/shacl/index.ts +22 -0
- package/src/shacl/internal/compare.ts +128 -0
- package/src/shacl/internal/regex.ts +56 -0
- package/src/shex/SemAct.ts +197 -0
- package/src/shex/ShExC.ts +415 -0
- package/src/shex/ShExError.ts +71 -0
- package/src/shex/ShExJ.ts +893 -0
- package/src/shex/ShExR.ts +640 -0
- package/src/shex/ShapeMap.ts +385 -0
- package/src/shex/Structure.ts +467 -0
- package/src/shex/Validator.ts +395 -0
- package/src/shex/index.ts +24 -0
- package/src/shex/internal/engine.ts +682 -0
- package/src/shex/internal/iterate.ts +14 -0
- package/src/shex/internal/json.ts +12 -0
- package/src/shex/internal/lexer.ts +56 -0
- package/src/shex/internal/nodeConstraint.ts +368 -0
- package/src/shex/internal/shexcLexer.ts +387 -0
- package/src/shex/internal/shexcParser.ts +1312 -0
- package/src/shex/internal/tokens.ts +41 -0
- package/src/shex/internal/xpathRegex.ts +290 -0
- package/src/sparql/Algebra.ts +914 -0
- package/src/sparql/Ast.ts +1344 -0
- package/src/sparql/Bindings.ts +272 -0
- package/src/sparql/ClientErrors.ts +156 -0
- package/src/sparql/ClientFormats.ts +70 -0
- package/src/sparql/Engine.ts +699 -0
- package/src/sparql/Errors.ts +30 -0
- package/src/sparql/Expression.ts +360 -0
- package/src/sparql/Federation.ts +187 -0
- package/src/sparql/Functions.ts +689 -0
- package/src/sparql/Generator.ts +426 -0
- package/src/sparql/GraphStore.ts +341 -0
- package/src/sparql/Optimizer.ts +230 -0
- package/src/sparql/Options.ts +191 -0
- package/src/sparql/Parser.ts +173 -0
- package/src/sparql/Protocol.ts +342 -0
- package/src/sparql/ProtocolErrors.ts +113 -0
- package/src/sparql/QueryBuilder.ts +953 -0
- package/src/sparql/Results.ts +844 -0
- package/src/sparql/ResultsStream.ts +771 -0
- package/src/sparql/ServerFormats.ts +75 -0
- package/src/sparql/ServiceDescription.ts +130 -0
- package/src/sparql/SparqlClient.ts +947 -0
- package/src/sparql/SparqlServer.ts +528 -0
- package/src/sparql/Store.ts +311 -0
- package/src/sparql/TermSchema.ts +20 -0
- package/src/sparql/Testing.ts +114 -0
- package/src/sparql/Translate.ts +407 -0
- package/src/sparql/ai/Mcp.ts +43 -0
- package/src/sparql/ai/Tools.ts +481 -0
- package/src/sparql/ai/index.ts +11 -0
- package/src/sparql/index.ts +64 -0
- package/src/sparql/internal/evaluator.ts +947 -0
- package/src/sparql/internal/hash.ts +418 -0
- package/src/sparql/internal/json.ts +12 -0
- package/src/sparql/internal/lexer.ts +488 -0
- package/src/sparql/internal/loop.ts +24 -0
- package/src/sparql/internal/parser.ts +2215 -0
- package/src/sparql/internal/prefetch.ts +46 -0
- package/src/sparql/internal/stringMap.ts +39 -0
- package/src/sparql/internal/textResults.ts +226 -0
- package/src/sparql/internal/values.ts +550 -0
- package/src/sparql/shacl/Evaluator.ts +478 -0
- package/src/sparql/shacl/Query.ts +574 -0
- package/src/sparql/shacl/index.ts +12 -0
- package/src/sparql/sql/Dialect.ts +246 -0
- package/src/sparql/sql/SqlStore.ts +1080 -0
- package/src/sparql/sql/Translation.ts +1898 -0
- package/src/sparql/sql/index.ts +17 -0
- package/src/sparql/sql/internal/encoding.ts +313 -0
- package/src/turtle/Grammar.ts +286 -0
- package/src/turtle/Manifest.ts +215 -0
- package/src/turtle/TriG.ts +158 -0
- package/src/turtle/Turtle.ts +166 -0
- package/src/turtle/index.ts +14 -0
- package/src/turtle/internal/loop.ts +23 -0
- package/src/turtle/internal/parse.ts +112 -0
- package/src/turtle/internal/parser.ts +1303 -0
- package/src/turtle/internal/serialize.ts +79 -0
- package/src/turtle/internal/streamWriter.ts +128 -0
- package/src/turtle/internal/writer.ts +898 -0
- package/src/xmp/DublinCore.ts +147 -0
- package/src/xmp/Exif.ts +109 -0
- package/src/xmp/Extract.ts +351 -0
- package/src/xmp/Metadata.ts +703 -0
- package/src/xmp/Namespaces.ts +228 -0
- package/src/xmp/Packet.ts +297 -0
- package/src/xmp/Pdf.ts +99 -0
- package/src/xmp/PdfA.ts +280 -0
- package/src/xmp/Photoshop.ts +275 -0
- package/src/xmp/Tiff.ts +196 -0
- package/src/xmp/Xmp.ts +430 -0
- package/src/xmp/XmpBasic.ts +90 -0
- package/src/xmp/XmpMM.ts +82 -0
- package/src/xmp/XmpRights.ts +83 -0
- package/src/xmp/index.ts +36 -0
- package/src/xmp/internal/accessors.ts +72 -0
- package/src/xmp/internal/xml.ts +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShExC-DJbB19i3.mjs","names":["TurtleGrammar.prefixedName","TurtleGrammar.numericLiteral","TurtleGrammar.stringLiteral","TurtleGrammar.langTag","TurtleGrammar.hex","TurtleGrammar.digit","TurtleGrammar.alpha","Tokens.skip","Iri.isAbsolute","Iri.resolve","PrefixMap.get","PrefixMap.set","RDF_TYPE","XSD","PrefixMap.empty","PrefixMap.make","PrefixMap.compact","Iri.relativize"],"sources":["../src/shex/internal/lexer.ts","../src/shex/internal/shexcLexer.ts","../src/shex/internal/shexcParser.ts","../src/shex/ShExC.ts"],"sourcesContent":["/**\n * Lexical helpers shared by the ShExC lexer and the error reporting: the\n * unescaping of `REGEXP` and `CODE` bodies, and offset-to-position\n * conversion. The terminals are Turtle's (`../../turtle/Grammar.ts`) and `tokens.ts`.\n *\n * @internal\n */\n\nimport * as Schema from 'effect/Schema';\n\n/**\n * Replaces one escape: a numeric escape (`\\uXXXX`, `\\UXXXXXXXX`, the only\n * ones longer than two characters) by its code point, any other by `keep`\n * applied to the escaped character.\n */\nconst unescapeOne =\n (keep: (c: string, all: string) => string) =>\n (all: string): string =>\n all.length > 2 ? String.fromCodePoint(parseInt(all.slice(2), 16)) : keep(all.slice(1), all);\n\n/**\n * Unescapes a ShExC `REGEXP` body: `\\/` becomes `/` and numeric escapes are\n * replaced by their code points; every other escape is kept verbatim.\n */\nexport const unescapeRegexp = (s: string): string =>\n s.replace(\n /\\\\u([0-9A-Fa-f]{4})|\\\\U([0-9A-Fa-f]{8})|\\\\(.)/gs,\n unescapeOne((c, all) => (c === '/' ? '/' : all)),\n );\n\n/** Unescapes a semantic action `CODE` body (`\\%`, `\\\\` and UCHAR). */\nexport const unescapeCode = (s: string): string =>\n s.replace(\n /\\\\u([0-9A-Fa-f]{4})|\\\\U([0-9A-Fa-f]{8})|\\\\([%\\\\])/g,\n unescapeOne((c) => c),\n );\n\n/** A 1-based line and column in the source text. */\nexport interface Position {\n readonly line: number;\n readonly column: number;\n}\n\n/** Converts a string offset to a 1-based line and column. */\nexport const lineColumn = (input: string, pos: number): Position => {\n const before = input.slice(0, Math.max(pos, 0));\n return {\n line: before.split('\\n').length,\n column: pos - (before.lastIndexOf('\\n') + 1) + 1,\n };\n};\n\nconst encodeJsonString = Schema.encodeSync(Schema.fromJsonString(Schema.String));\n\n/** Quotes a string as a JSON string literal, for error messages. */\nexport const quote = (s: string): string => encodeJsonString(s);\n","/**\n * The ShExC lexer, written with `@thomasfosterau/effect-parse`: a compiled\n * grammar turning a document into tokens, followed by a pass that resolves\n * IRIs (relative IRI references against the base, prefixed names against\n * the prefixes) in document order, as `BASE` and `PREFIX` directives are\n * met. The parser then works on resolved tokens, so neither grammar depends\n * on per-document state and both can be compiled.\n *\n * @internal\n */\nimport * as Compiler from '@thomasfosterau/effect-parse/Compiler';\nimport * as Parser from '@thomasfosterau/effect-parse/Parser';\nimport * as Token from '@thomasfosterau/effect-parse/Token';\nimport * as Iri from '../../Iri.ts';\nimport * as PrefixMap from '../../PrefixMap.ts';\nimport * as Arr from 'effect/Array';\nimport * as MutableHashSet from 'effect/MutableHashSet';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport * as Record from 'effect/Record';\nimport * as Result from 'effect/Result';\nimport { quote, unescapeCode, unescapeRegexp } from './lexer.ts';\nimport * as TurtleGrammar from '../../turtle/Grammar.ts';\nimport * as Tokens from './tokens.ts';\n\n/** The kinds of ShExC tokens. */\nexport type TokenType =\n | 'IRIREF'\n | 'PNAME'\n | 'ATPNAME'\n | 'BLANK_NODE_LABEL'\n | 'LANGTAG'\n | 'STRING'\n | 'LANG_STRING'\n | 'INTEGER'\n | 'DECIMAL'\n | 'DOUBLE'\n | 'REGEXP'\n | 'CODE'\n | 'REPEAT_RANGE'\n | 'KEYWORD'\n | 'PUNCT'\n | 'ERROR';\n\n/** A ShExC token. */\nexport interface Tok {\n readonly type: TokenType;\n /**\n * KEYWORD: the upper-cased keyword; PUNCT: the punctuation (or `a`,\n * `true`, `false`); numbers: the lexical form; STRING / LANG_STRING: the\n * unescaped value; LANGTAG: the tag; BLANK_NODE_LABEL: `_:label`; REGEXP:\n * the pattern; CODE: the code; PNAME / ATPNAME: the prefix; ERROR: why\n * no token could be read.\n */\n readonly text: string;\n /** What the parser dispatches on: the text of a KEYWORD or PUNCT, else the type. */\n readonly kind: string;\n readonly start: number;\n readonly end: number;\n /**\n * IRIREF: the (unescaped) IRI, resolved against the base by `resolve`;\n * PNAME / ATPNAME: the local part, expanded by `resolve`.\n */\n iri: string;\n /** PNAME / ATPNAME: why the name could not be expanded. */\n error: Option.Option<string>;\n /** LANG_STRING: the language tag; REGEXP: the flags. */\n readonly suffix: string;\n /** REPEAT_RANGE: the bounds (`max` is -1 when unbounded). */\n readonly min: number;\n readonly max: number;\n}\n\n/** A token without its position. */\ninterface Partial {\n readonly type: TokenType;\n readonly text: string;\n readonly iri?: string;\n readonly suffix?: string;\n readonly min?: number;\n readonly max?: number;\n}\n\n/** A token, with every field present so that all tokens have the same shape. */\nconst make = (t: Partial, start: number, end: number): Tok => ({\n type: t.type,\n text: t.text,\n kind: t.type === 'KEYWORD' || t.type === 'PUNCT' ? t.text : t.type,\n start,\n end,\n iri: t.iri ?? '',\n error: Option.none(),\n suffix: t.suffix ?? '',\n min: t.min ?? 0,\n max: t.max ?? 0,\n});\n\nconst KEYWORDS = MutableHashSet.fromIterable([\n 'BASE',\n 'PREFIX',\n 'IMPORT',\n 'START',\n 'EXTERNAL',\n 'ABSTRACT',\n 'RESTRICTS',\n 'EXTENDS',\n 'CLOSED',\n 'EXTRA',\n 'LITERAL',\n 'BNODE',\n 'IRI',\n 'NONLITERAL',\n 'AND',\n 'OR',\n 'NOT',\n 'MININCLUSIVE',\n 'MINEXCLUSIVE',\n 'MAXINCLUSIVE',\n 'MAXEXCLUSIVE',\n 'LENGTH',\n 'MINLENGTH',\n 'MAXLENGTH',\n 'TOTALDIGITS',\n 'FRACTIONDIGITS',\n]);\n\nconst pname = (type: 'PNAME' | 'ATPNAME') =>\n Parser.map(TurtleGrammar.prefixedName, ({ prefix, local }): Partial => ({\n type,\n text: prefix,\n iri: local,\n }));\n\nconst numeric = Parser.map(TurtleGrammar.numericLiteral, ([text, type]): Partial => ({\n type: type === 'integer' ? 'INTEGER' : type === 'decimal' ? 'DECIMAL' : 'DOUBLE',\n text,\n}));\n\nconst string = Parser.map(\n Parser.seq(TurtleGrammar.stringLiteral, Parser.opt(TurtleGrammar.langTag)),\n ([text, lang]): Partial =>\n Option.isSome(lang)\n ? { type: 'LANG_STRING', text, suffix: lang.value }\n : { type: 'STRING', text },\n);\n\nconst regexp = Parser.preceded(\n Token.literal('/'),\n Parser.seq(\n Parser.taken(\n Parser.repeat(\n Parser.alt(\n Token.takeTill('/\\\\\\n\\r', { min: 1 }),\n Parser.seq(Token.literal('\\\\'), Token.oneOf('nrt\\\\|.?*+(){}$-[]^/')),\n Parser.seq(Token.literal('\\\\u'), Token.takeWhile(TurtleGrammar.hex, 4)),\n Parser.seq(Token.literal('\\\\U'), Token.takeWhile(TurtleGrammar.hex, 8)),\n ),\n { min: 1 },\n ),\n ),\n Parser.preceded(Token.literal('/'), Token.takeWhile('smix')),\n ),\n).pipe(\n Parser.map(([body, flags]): Partial => ({\n type: 'REGEXP',\n text: unescapeRegexp(body),\n suffix: flags,\n })),\n);\n\nconst code = Parser.delimited(\n Token.literal('{'),\n Parser.taken(\n Parser.repeat(\n Parser.alt(\n Token.takeTill('%\\\\', { min: 1 }),\n Parser.seq(Token.literal('\\\\'), Token.oneOf('%\\\\')),\n Parser.seq(Token.literal('\\\\u'), Token.takeWhile(TurtleGrammar.hex, 4)),\n Parser.seq(Token.literal('\\\\U'), Token.takeWhile(TurtleGrammar.hex, 8)),\n ),\n ),\n ),\n Token.literal('%}'),\n).pipe(Parser.map((body): Partial => ({ type: 'CODE', text: unescapeCode(body) })));\n\nconst bound = Parser.preceded(\n Parser.opt(Token.oneOf('+-')),\n Token.takeWhile(TurtleGrammar.digit, { min: 1 }),\n);\n\nconst repeatRange = Parser.delimited(\n Token.literal('{'),\n Parser.seq(\n bound,\n Parser.opt(\n Parser.preceded(Token.literal(','), Parser.opt(Parser.alt(bound, Token.literal('*')))),\n ),\n ),\n Token.literal('}'),\n).pipe(\n Parser.map(([min, rest]): Partial => {\n const lo = parseInt(min, 10);\n const hi = Option.match(rest, {\n onNone: () => lo,\n onSome: (upper) =>\n Option.match(upper, {\n onNone: () => -1,\n onSome: (u) => (u === '*' ? -1 : parseInt(u, 10)),\n }),\n });\n return { type: 'REPEAT_RANGE', text: '', min: lo, max: hi };\n }),\n);\n\nconst word = Token.takeWhile(TurtleGrammar.alpha, { min: 1 }).pipe(\n Parser.filterMap((w): Option.Option<Partial> => {\n if (w === 'a' || w === 'true' || w === 'false') return Option.some({ type: 'PUNCT', text: w });\n const upper = w.toUpperCase();\n return MutableHashSet.has(KEYWORDS, upper)\n ? Option.some({ type: 'KEYWORD', text: upper })\n : Option.none();\n }),\n);\n\n/** One token, in the order of preference of the ShEx 2 lexer. */\nconst punctuation = (...ps: ReadonlyArray<string>): Parser.Parser<Partial> =>\n Parser.alt(...ps.map((p) => Token.literal(p))).pipe(\n Parser.map((text): Partial => ({ type: 'PUNCT', text })),\n );\n\nconst prefixedOrWord = Parser.alt(pname('PNAME'), word);\n\nconst numericOr = (p: string) => Parser.alt(numeric, punctuation(p));\n\n/**\n * One token. The first character selects the candidates, which are tried in\n * the order of preference of the ShEx 2 lexer.\n */\nconst token: Parser.Parser<Partial> = Parser.dispatch(\n Parser.peek(Token.any),\n {\n '@': Parser.alt(\n Parser.preceded(Token.literal('@'), pname('ATPNAME')),\n TurtleGrammar.langTag.pipe(Parser.map((text): Partial => ({ type: 'LANGTAG', text }))),\n punctuation('@'),\n ),\n '<': TurtleGrammar.iriRef.pipe(\n Parser.map((iri): Partial => ({ type: 'IRIREF', text: '', iri })),\n ),\n '/': Parser.alt(punctuation('//'), regexp),\n _: TurtleGrammar.blankNodeLabel.pipe(\n Parser.map((label): Partial => ({ type: 'BLANK_NODE_LABEL', text: `_:${label}` })),\n ),\n '\"': string,\n \"'\": string,\n '{': Parser.alt(repeatRange, code, punctuation('{')),\n '^': punctuation('^^', '^'),\n '|': punctuation('||', '|'),\n '.': numericOr('.'),\n '+': numericOr('+'),\n '-': numericOr('-'),\n ...Record.fromEntries(Arr.map('0123456789'.split(''), (d) => [d, numeric] as const)),\n ...Record.fromEntries(\n Arr.map('=}&,()[]$!~;*?%'.split(''), (p) => [p, punctuation(p)] as const),\n ),\n },\n prefixedOrWord,\n);\n\nconst lexer = Compiler.jit(\n Parser.seq(\n Parser.repeat(\n Parser.preceded(\n Tokens.skip,\n // A malformed token ends the token stream (see `tokenize`).\n Parser.withSpan(Parser.backtrack(token)).pipe(\n Parser.map(([t, { start, end }]) => make(t, start, end)),\n ),\n ),\n ),\n Parser.preceded(Tokens.skip, Parser.location),\n ),\n);\n\n/** Why no token could be read at `offset` (the messages of the ShEx 2 lexer). */\nconst describe = (input: string, offset: number): string => {\n const c = input.charAt(offset);\n if (c === '<') return 'invalid IRI reference';\n if (c === '/') return 'invalid regular expression';\n if (c === '\"' || c === \"'\") return 'invalid string literal';\n const w = /^[A-Za-z]+/.exec(input.slice(offset, offset + 64));\n if (w !== null) return `unexpected word \"${w[0]}\"`;\n return `invalid character ${quote(String.fromCodePoint(input.codePointAt(offset) ?? 0))}`;\n};\n\n/**\n * Splits a document into tokens. Where no token can be read, the tokens end\n * with an `ERROR` token whose text says why; no grammar rule accepts it, so\n * the parser reports it if it gets that far, as a lazy lexer would.\n */\nexport const tokenize = (input: string): Array<Tok> => {\n // The lexer always succeeds: it stops where no token can be read.\n const peeked = Parser.parsePeek(lexer, input);\n if (Result.isFailure(peeked)) throw peeked.failure;\n const [, [tokens, end]] = peeked.success;\n if (end < input.length) {\n tokens.push(make({ type: 'ERROR', text: describe(input, end) }, end, end));\n }\n return tokens;\n};\n\n/** The base IRI and prefixes after resolving a document's tokens. */\nexport interface Resolved {\n readonly baseIri: Option.Option<string>;\n readonly prefixes: PrefixMap.PrefixMap;\n}\n\n/** Resolves token `i` (`t`); returns how many of the tokens after it the step consumed. */\ntype Step = (t: Tok, i: number) => number;\n\nconst skip: Step = () => 0;\n\n/**\n * Resolves the IRIs of `tokens` in place, in document order: IRI references\n * against the base, and prefixed names against the prefixes, both as set by\n * the `BASE` and `PREFIX` directives met so far. The prefix name declared by\n * a `PREFIX` directive is left alone. A prefixed name with an unknown prefix\n * gets an `error`, which the parser reports when it reads the name.\n */\nexport const resolve = (\n tokens: Array<Tok>,\n baseIri: Option.Option<string>,\n initialPrefixes: PrefixMap.PrefixMap,\n): Resolved => {\n let base = baseIri;\n let prefixes = initialPrefixes;\n const resolveRef = (iri: string) =>\n Option.isNone(base) || Iri.isAbsolute(iri) ? iri : Iri.resolve(iri, base.value);\n const expand = (t: Tok): boolean => {\n const ns = PrefixMap.get(prefixes, t.text);\n if (Option.isNone(ns)) {\n t.error = Option.some(`unknown prefix \"${t.text}:\"`);\n return false;\n }\n t.iri = ns.value + t.iri;\n return true;\n };\n const resolveIri: Step = (t) => {\n t.iri = resolveRef(t.iri);\n return 0;\n };\n const expandName: Step = (t) => {\n expand(t);\n return 0;\n };\n const directive: Step = (t, i) => {\n const next = tokens[i + 1];\n if (t.text === 'BASE' && next?.type === 'IRIREF') {\n next.iri = resolveRef(next.iri);\n base = Option.some(next.iri);\n return 1;\n }\n if (t.text === 'PREFIX' && next?.type === 'PNAME' && next.iri === '') {\n const value = tokens[i + 2];\n if (value?.type === 'IRIREF') value.iri = resolveRef(value.iri);\n else if (value?.type !== 'PNAME' || !expand(value)) return 0;\n prefixes = PrefixMap.set(prefixes, next.text, value.iri);\n return 2;\n }\n return 0;\n };\n // Built once per document, and run once per token type: a match per token\n // would cost more than the resolution itself.\n const stepOf = Match.type<TokenType>().pipe(\n Match.withReturnType<Step>(),\n Match.when('IRIREF', () => resolveIri),\n Match.when(Match.is('PNAME', 'ATPNAME'), () => expandName),\n Match.when('KEYWORD', () => directive),\n Match.orElse(() => skip),\n );\n const steps: { [K in TokenType]?: Step } = {};\n // The accumulator counts the tokens after a directive that its step consumed.\n Arr.reduce(tokens, 0, (consumed, t, i) =>\n consumed > 0 ? consumed - 1 : (steps[t.type] ??= stepOf(t.type))(t, i),\n );\n return { baseIri: base, prefixes };\n};\n","/**\n * The ShEx compact syntax (ShExC) parser, producing ShExJ. It is written\n * with `@thomasfosterau/effect-parse` as a compiled grammar over the tokens\n * of `shexcLexer.ts` (whose IRIs are already resolved), followed by a pass\n * over the declarations in document order for the checks that depend on\n * what was declared before (duplicate labels, shape and triple expression\n * labels). The construction of ShExJ objects mirrors the reference grammar\n * (shex.js `ShExJison.jison`) so that the output matches the ShExJ\n * representations of the shexTest suite.\n *\n * Like the reference grammar, the parser is LL(1): every choice is made by\n * dispatching on the kind of the next token (and committing to it), never by\n * trying alternatives in turn.\n *\n * @internal\n */\nimport * as Compiler from '@thomasfosterau/effect-parse/Compiler';\nimport * as ParseError from '@thomasfosterau/effect-parse/ParseError';\nimport * as Parser from '@thomasfosterau/effect-parse/Parser';\nimport * as Token from '@thomasfosterau/effect-parse/Token';\nimport * as PrefixMap from '../../PrefixMap.ts';\nimport * as Arr from 'effect/Array';\nimport * as Match from 'effect/Match';\nimport * as MutableHashSet from 'effect/MutableHashSet';\nimport * as Option from 'effect/Option';\nimport * as Record from 'effect/Record';\nimport * as Result from 'effect/Result';\nimport type * as ShExJ from '../ShExJ.ts';\nimport { quote } from './lexer.ts';\nimport { resolve, type Tok, tokenize } from './shexcLexer.ts';\nimport * as Predicate from 'effect/Predicate';\n\nconst RDF_TYPE = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';\nconst XSD = 'http://www.w3.org/2001/XMLSchema#';\nconst XSD_INTEGER = `${XSD}integer`;\nconst XSD_DECIMAL = `${XSD}decimal`;\nconst XSD_DOUBLE = `${XSD}double`;\nconst XSD_FLOAT = `${XSD}float`;\nconst XSD_BOOLEAN = `${XSD}boolean`;\n\nconst numericDatatypes = MutableHashSet.fromIterable(\n [\n 'integer',\n 'decimal',\n 'float',\n 'double',\n 'string',\n 'boolean',\n 'dateTime',\n 'nonPositiveInteger',\n 'negativeInteger',\n 'long',\n 'int',\n 'short',\n 'byte',\n 'nonNegativeInteger',\n 'unsignedLong',\n 'unsignedInt',\n 'unsignedShort',\n 'unsignedByte',\n 'positiveInteger',\n ].map((l) => XSD + l),\n);\n\nconst numericFacetNames = ['mininclusive', 'minexclusive', 'maxinclusive', 'maxexclusive'];\n\n/** A placeholder for the empty shape `.` / `{ }` (omitted as a value expression). */\nconst EMPTY: ShExJ.Shape = { type: 'Shape' };\n\ntype Mutable<T> = { -readonly [K in keyof T]: T[K] };\ntype AnyShapeExpr = ShExJ.ShapeExprOrRef;\n\n/** Options for the ShExC parser. */\nexport interface ParserOptions {\n readonly baseIri: Option.Option<string>;\n readonly prefixes: PrefixMap.PrefixMap;\n}\n\n/** The result of parsing ShExC. */\nexport interface ParserResult {\n readonly schema: ShExJ.Schema;\n readonly prefixes: PrefixMap.PrefixMap;\n readonly baseIri: Option.Option<string>;\n}\n\n/** A parse error at a character offset. */\nexport interface ShExCError {\n readonly message: string;\n readonly offset: number;\n}\n\n/** An error found by the grammar, at a token index. */\ninterface SemanticError {\n readonly message: string;\n readonly at: number;\n}\n\ntype P<A> = Parser.Parser<A, SemanticError, never, ReadonlyArray<Tok>>;\n\n// -----------------------------------------------------------------------------\n// Token parsers\n// -----------------------------------------------------------------------------\n\n/** A token of the given kind (see `Tok.kind`). */\nconst tok = (kind: string, label = `'${kind}'`): P<Tok> =>\n Token.oneOf<ReadonlyArray<Tok>>((t) => t.kind === kind).pipe(Parser.expected(label));\n\nconst anyToken = Token.oneOf<ReadonlyArray<Tok>>(() => true);\nconst nextKind = Parser.peek(anyToken).pipe(Parser.map((t) => t.kind));\n\n/**\n * Chooses a parser by the kind of the next token, failing (without consuming\n * input) when no case matches and there is no `otherwise`.\n */\nconst select = <A, B = never>(\n label: string,\n cases: ReadonlyArray<readonly [ReadonlyArray<string>, P<A>]>,\n otherwise?: P<B>,\n): P<A | B> => {\n // The first case listing a kind wins, as `fromEntries` keeps the last entry for a key.\n const record = Record.fromEntries(\n Arr.flatMap(Arr.reverse(cases), ([kinds, p]) => Arr.map(kinds, (k) => [k, p] as const)),\n );\n const chosen: P<A | B> =\n otherwise === undefined\n ? Parser.dispatch(nextKind, record)\n : Parser.dispatch(nextKind, record, otherwise);\n return chosen.pipe(Parser.expected(label));\n};\n\n/** Fails with a semantic error at token index `at`. */\nconst failAt = <A>(message: string, at: number): Result.Result<A, SemanticError> =>\n Result.fail({ message, at });\n\n/** Whether the next token is of one of `kinds` (consumed if so). */\nconst accept = (...kinds: ReadonlyArray<string>): P<boolean> =>\n Parser.opt(Token.oneOf<ReadonlyArray<Tok>>((t) => kinds.includes(t.kind))).pipe(\n Parser.map(Option.isSome),\n );\n\nconst IRI_KINDS = ['IRIREF', 'PNAME'];\n\n/** The IRI of a resolved token (at token index `at`), or its resolution error. */\nconst tokenIri = (t: Tok, at: number): Result.Result<string, SemanticError> =>\n Option.isNone(t.error) ? Result.succeed(t.iri) : failAt(t.error.value, at);\n\n/** The IRI of an IRIREF or PNAME token, or the token's resolution error. */\nconst iri: P<string> = Parser.seq(\n Parser.location,\n Token.oneOf<ReadonlyArray<Tok>>((t) => t.kind === 'IRIREF' || t.kind === 'PNAME'),\n).pipe(\n Parser.tryMap(([at, t]) => tokenIri(t, at)),\n Parser.cut,\n Parser.expected('an IRI'),\n);\n\nconst blankNode = tok('BLANK_NODE_LABEL', 'a blank node').pipe(Parser.map((t) => t.text));\n\n/** shapeExprLabel / tripleExprLabel: iri | blankNode */\nconst label: P<string> = select('an IRI or a blank node', [\n [IRI_KINDS, iri],\n [['BLANK_NODE_LABEL'], blankNode],\n]);\n\nconst predicate: P<string> = select('a predicate', [\n [['a'], anyToken.pipe(Parser.as(RDF_TYPE))],\n [IRI_KINDS, iri],\n]);\n\nconst LITERAL_KINDS = ['STRING', 'LANG_STRING', 'INTEGER', 'DECIMAL', 'DOUBLE', 'true', 'false'];\n\nconst literal: P<ShExJ.ObjectLiteral> = select('a literal', [\n [['INTEGER'], anyToken.pipe(Parser.map((t) => ({ value: t.text, type: XSD_INTEGER })))],\n [['DECIMAL'], anyToken.pipe(Parser.map((t) => ({ value: t.text, type: XSD_DECIMAL })))],\n [['DOUBLE'], anyToken.pipe(Parser.map((t) => ({ value: t.text, type: XSD_DOUBLE })))],\n [\n ['LANG_STRING'],\n anyToken.pipe(Parser.map((t) => ({ value: t.text, language: t.suffix.toLowerCase() }))),\n ],\n [\n ['STRING'],\n Parser.seq(anyToken, Parser.opt(Parser.preceded(tok('^^'), Parser.cut(iri)))).pipe(\n Parser.map(([t, datatype]): ShExJ.ObjectLiteral =>\n Option.isSome(datatype) ? { value: t.text, type: datatype.value } : { value: t.text },\n ),\n ),\n ],\n [['true', 'false'], anyToken.pipe(Parser.map((t) => ({ value: t.text, type: XSD_BOOLEAN })))],\n]);\n\n// -----------------------------------------------------------------------------\n// Shape expression helpers\n// -----------------------------------------------------------------------------\n\n/**\n * A shape expression, and whether it was written in parentheses: a\n * parenthesised `AND` is not merged into an enclosing `AND`.\n */\ninterface Atom {\n readonly e: AnyShapeExpr;\n readonly nested: boolean;\n}\n\nconst plain = (e: AnyShapeExpr): Atom => ({ e, nested: false });\n\nconst isJunction = (e: AnyShapeExpr): e is ShExJ.ShapeAnd | ShExJ.ShapeOr =>\n !Predicate.isString(e) && (e.type === 'ShapeAnd' || e.type === 'ShapeOr');\n\nconst junction = (\n type: 'ShapeAnd' | 'ShapeOr',\n atom: Atom,\n juncts: ReadonlyArray<AnyShapeExpr>,\n): AnyShapeExpr => {\n if (Arr.isReadonlyArrayEmpty(juncts)) return atom.e;\n const e = atom.e;\n if (isJunction(e) && e.type === type && !atom.nested) {\n return { ...e, shapeExprs: e.shapeExprs.concat(juncts) };\n }\n return { type, shapeExprs: [e, ...juncts] };\n};\n\n/**\n * What follows the first atom of a shape expression: `(OR shapeAnd)+` or\n * `(AND shapeNot)+ (OR shapeAnd)*`. The atom is inserted in front of the\n * disjuncts or the conjuncts respectively.\n */\ntype Rest =\n | { readonly _tag: 'Or'; readonly ors: ReadonlyArray<AnyShapeExpr> }\n | {\n readonly _tag: 'And';\n readonly ands: ReadonlyArray<AnyShapeExpr>;\n readonly ors: ReadonlyArray<AnyShapeExpr>;\n };\n\nconst isAndRest = Predicate.isTagged('And');\n\nconst prepend = (rest: Rest, atoms: ReadonlyArray<AnyShapeExpr>): AnyShapeExpr => {\n if (!isAndRest(rest)) return { type: 'ShapeOr', shapeExprs: [...atoms, ...rest.ors] };\n const and: ShExJ.ShapeAnd = { type: 'ShapeAnd', shapeExprs: [...atoms, ...rest.ands] };\n return Arr.isReadonlyArrayNonEmpty(rest.ors)\n ? { type: 'ShapeOr', shapeExprs: [and, ...rest.ors] }\n : and;\n};\n\nconst prependAtom = (atom: Atom, rest: Option.Option<Rest>): AnyShapeExpr =>\n Option.match(rest, {\n onNone: () => atom.e,\n onSome: (r) => {\n const e = atom.e;\n return !Predicate.isString(e) &&\n e.type === 'ShapeAnd' &&\n isAndRest(r) &&\n Arr.isReadonlyArrayEmpty(r.ors) &&\n !atom.nested\n ? prepend(r, e.shapeExprs)\n : prepend(r, [e]);\n },\n });\n\n// -----------------------------------------------------------------------------\n// Annotations, semantic actions and cardinalities\n// -----------------------------------------------------------------------------\n\nconst annotations: P<Array<ShExJ.Annotation>> = Parser.repeat(\n Parser.preceded(\n tok('//'),\n Parser.cut(\n Parser.seq(predicate, select('an IRI or a literal', [[IRI_KINDS, iri]], literal)).pipe(\n Parser.map(([pred, object]): ShExJ.Annotation => ({\n type: 'Annotation',\n predicate: pred,\n object,\n })),\n ),\n ),\n ),\n);\n\nconst codeDecls: P<Array<ShExJ.SemAct>> = Parser.repeat(\n Parser.preceded(\n tok('%'),\n Parser.cut(\n Parser.seq(\n iri,\n select('code or %', [\n [['CODE'], anyToken.pipe(Parser.map((t) => Option.some(t.text)))],\n [['%'], anyToken.pipe(Parser.as(Option.none<string>()))],\n ]),\n ).pipe(\n Parser.map(([name, code]): ShExJ.SemAct =>\n Option.match(code, {\n onNone: () => ({ type: 'SemAct', name }),\n onSome: (c) => ({ type: 'SemAct', name, code: c }),\n }),\n ),\n ),\n ),\n ),\n { min: 1 },\n);\n\nconst semanticActions: P<Option.Option<Array<ShExJ.SemAct>>> = Parser.opt(codeDecls);\n\nconst cardinality: P<Option.Option<{ min: number; max: number }>> = Parser.opt(\n select('a cardinality', [\n [['*'], anyToken.pipe(Parser.as({ min: 0, max: -1 }))],\n [['+'], anyToken.pipe(Parser.as({ min: 1, max: -1 }))],\n [['?'], anyToken.pipe(Parser.as({ min: 0, max: 1 }))],\n [['REPEAT_RANGE'], anyToken.pipe(Parser.map((t) => ({ min: t.min, max: t.max })))],\n ]),\n);\n\n// -----------------------------------------------------------------------------\n// Node constraints\n// -----------------------------------------------------------------------------\n\nconst integer = Parser.cut(tok('INTEGER', 'an integer')).pipe(\n Parser.map((t) => parseInt(t.text, 10)),\n);\n\nconst rawNumeric: P<number> = select('a numeric literal', [\n [['INTEGER'], anyToken.pipe(Parser.map((t) => parseInt(t.text, 10)))],\n [['DECIMAL', 'DOUBLE'], anyToken.pipe(Parser.map((t) => parseFloat(t.text)))],\n [\n ['STRING'],\n Parser.seq(\n anyToken,\n Parser.cut(Parser.preceded(tok('^^'), Parser.seq(Parser.location, iri))),\n ).pipe(\n Parser.tryMap(([t, [at, dt]]) => {\n const value = t.text;\n if (dt === XSD_DECIMAL || dt === XSD_FLOAT || dt === XSD_DOUBLE) {\n return Result.succeed(parseFloat(value));\n }\n if (MutableHashSet.has(numericDatatypes, dt)) return Result.succeed(parseInt(value, 10));\n return failAt<number>(`numeric range facet expected numeric datatype instead of ${dt}`, at);\n }),\n Parser.cut,\n ),\n ],\n]);\n\ntype Facet = readonly [key: string, value: number | string, at: number, flags?: string];\n\nconst LENGTH_FACETS = ['LENGTH', 'MINLENGTH', 'MAXLENGTH'];\nconst DIGITS_FACETS = ['TOTALDIGITS', 'FRACTIONDIGITS'];\nconst RANGE_FACETS = ['MININCLUSIVE', 'MINEXCLUSIVE', 'MAXINCLUSIVE', 'MAXEXCLUSIVE'];\nconst NUMERIC_FACETS = [...DIGITS_FACETS, ...RANGE_FACETS];\n\n/** Facet name → its value, as the facets are read. */\ninterface FacetValues {\n [facet: string]: number | string;\n}\n\ntype FacetCase = readonly [ReadonlyArray<string>, P<Facet>];\n\nconst integerFacet: P<Facet> = Parser.seq(Parser.location, anyToken, integer).pipe(\n Parser.map(([at, t, n]): Facet => [t.text.toLowerCase(), n, at]),\n);\n\nconst stringFacetCases: ReadonlyArray<FacetCase> = [\n [\n ['REGEXP'],\n Parser.seq(Parser.location, anyToken).pipe(\n Parser.map(([at, t]): Facet => ['pattern', t.text, at, t.suffix]),\n ),\n ],\n [LENGTH_FACETS, integerFacet],\n];\n\nconst numericFacetCases: ReadonlyArray<FacetCase> = [\n [DIGITS_FACETS, integerFacet],\n [\n RANGE_FACETS,\n Parser.seq(Parser.location, anyToken, Parser.cut(rawNumeric)).pipe(\n Parser.map(([at, t, n]): Facet => [t.text.toLowerCase(), n, at]),\n ),\n ],\n];\n\nconst noFacets = (): Result.Result<FacetValues, SemanticError> => Result.succeed({});\n\nconst facets = (strings: boolean, numerics: boolean): P<Mutable<ShExJ.Facets>> =>\n Parser.repeat(\n select('a facet', [\n ...(strings ? stringFacetCases : []),\n ...(numerics ? numericFacetCases : []),\n ]),\n ).pipe(\n Parser.tryMap((list) =>\n Arr.reduce(list, noFacets(), (acc, [key, value, at, flags]) =>\n Result.flatMap(acc, (out) => {\n if (key in out) return failAt<FacetValues>(`facet ${key} defined multiple times`, at);\n out[key] = value;\n if (flags !== undefined && flags !== '') out['flags'] = flags;\n return Result.succeed(out);\n }),\n ),\n ),\n Parser.cut,\n );\n\n// Value sets ---------------------------------------------------------------------\n\nconst tilde = accept('~');\n\nconst exclusion = <A>(p: P<A>): P<A> => Parser.preceded(tok('-'), Parser.cut(p));\n\nconst iriExclusion: P<string | ShExJ.IriStem> = exclusion(\n Parser.seq(iri, tilde).pipe(\n Parser.map(([base, stem]) => (stem ? { type: 'IriStem', stem: base } : base)),\n ),\n);\n\nconst literalExclusion: P<string | ShExJ.LiteralStem> = exclusion(\n Parser.seq(literal, tilde).pipe(\n Parser.map(([lit, stem]) => (stem ? { type: 'LiteralStem', stem: lit.value } : lit.value)),\n ),\n);\n\nconst langTag = tok('LANGTAG', 'a language tag').pipe(Parser.map((t) => t.text));\n\nconst languageExclusion: P<string | ShExJ.LanguageStem> = exclusion(\n Parser.seq(langTag, tilde).pipe(\n Parser.map(([tag, stem]) => (stem ? { type: 'LanguageStem', stem: tag } : tag)),\n ),\n);\n\nconst stemmed = <A, X>(\n head: P<A>,\n exclude: P<X>,\n build: (head: A, stem: boolean, exclusions: Array<X>) => ShExJ.ValueSetValue,\n): P<ShExJ.ValueSetValue> =>\n Parser.seq(head, Parser.opt(Parser.preceded(tok('~'), Parser.repeat(exclude)))).pipe(\n Parser.map(([h, exclusions]) =>\n build(\n h,\n Option.isSome(exclusions),\n Option.getOrElse(exclusions, () => []),\n ),\n ),\n );\n\n/** The exclusions after a `.` wildcard: their kind is chosen by the first one. */\n// SAFETY: each branch builds the value set value for its exclusion kind.\nconst wildcardExclusions: P<ShExJ.ValueSetValue> = Parser.preceded(\n Parser.peek(tok('-')),\n Parser.dispatch(\n Parser.peek(Parser.preceded(anyToken, anyToken)).pipe(Parser.map((t) => t.kind)),\n {\n LANGTAG: Parser.repeat(languageExclusion).pipe(\n Parser.map((exclusions): ShExJ.ValueSetValue => ({\n type: 'LanguageStemRange',\n stem: { type: 'Wildcard' },\n exclusions,\n })),\n ),\n ...Record.fromEntries(\n Arr.map(\n IRI_KINDS,\n (k) =>\n [\n k,\n Parser.repeat(iriExclusion).pipe(\n Parser.map((exclusions): ShExJ.ValueSetValue => ({\n type: 'IriStemRange',\n stem: { type: 'Wildcard' },\n exclusions,\n })),\n ),\n ] as const,\n ),\n ),\n },\n Parser.repeat(literalExclusion).pipe(\n Parser.map((exclusions): ShExJ.ValueSetValue => ({\n type: 'LiteralStemRange',\n stem: { type: 'Wildcard' },\n exclusions,\n })),\n ),\n ),\n).pipe(Parser.expected(\"'-'\"));\n\nconst valueSetValue: P<ShExJ.ValueSetValue> = select('a value set value', [\n [\n IRI_KINDS,\n Parser.cut(\n stemmed(iri, iriExclusion, (stem, isStem, exclusions) =>\n !isStem\n ? stem\n : Arr.isReadonlyArrayNonEmpty(exclusions)\n ? { type: 'IriStemRange', stem, exclusions }\n : { type: 'IriStem', stem },\n ),\n ),\n ],\n [\n LITERAL_KINDS,\n Parser.cut(\n stemmed(literal, literalExclusion, (lit, isStem, exclusions) =>\n !isStem\n ? lit\n : Arr.isReadonlyArrayNonEmpty(exclusions)\n ? { type: 'LiteralStemRange', stem: lit.value, exclusions }\n : { type: 'LiteralStem', stem: lit.value },\n ),\n ),\n ],\n [\n ['LANGTAG'],\n Parser.cut(\n stemmed(langTag, languageExclusion, (tag, isStem, exclusions) =>\n !isStem\n ? { type: 'Language', languageTag: tag }\n : Arr.isReadonlyArrayNonEmpty(exclusions)\n ? { type: 'LanguageStemRange', stem: tag, exclusions }\n : { type: 'LanguageStem', stem: tag },\n ),\n ),\n ],\n [\n ['@'],\n Parser.preceded(\n anyToken,\n Parser.cut(Parser.preceded(tok('~'), Parser.repeat(languageExclusion))),\n ).pipe(\n Parser.map((exclusions): ShExJ.ValueSetValue =>\n Arr.isReadonlyArrayNonEmpty(exclusions)\n ? { type: 'LanguageStemRange', stem: '', exclusions }\n : { type: 'LanguageStem', stem: '' },\n ),\n ),\n ],\n [['.'], Parser.preceded(anyToken, Parser.cut(wildcardExclusions))],\n]);\n\nconst valueSet: P<Array<ShExJ.ValueSetValue>> = Parser.delimited(\n tok('['),\n Parser.cut(Parser.repeat(valueSetValue)),\n Parser.cut(tok(']')),\n);\n\nconst litInlineNodeConstraint: P<ShExJ.NodeConstraint> = select('a node constraint', [\n [\n ['LITERAL'],\n Parser.preceded(anyToken, facets(true, true)).pipe(\n Parser.map((f): ShExJ.NodeConstraint => ({\n type: 'NodeConstraint',\n nodeKind: 'literal',\n ...f,\n })),\n ),\n ],\n [\n IRI_KINDS,\n Parser.seq(Parser.location, iri, facets(true, true)).pipe(\n Parser.tryMap(([at, datatype, f]) =>\n Option.match(\n MutableHashSet.has(numericDatatypes, datatype)\n ? Option.none()\n : Arr.findFirst(numericFacetNames, (name) => name in f),\n {\n onNone: () =>\n Result.succeed<ShExJ.NodeConstraint>({ type: 'NodeConstraint', datatype, ...f }),\n onSome: (name) =>\n failAt<ShExJ.NodeConstraint>(\n `facet ${name} not allowed for unknown datatype ${datatype}`,\n at,\n ),\n },\n ),\n ),\n Parser.cut,\n ),\n ],\n [\n ['['],\n Parser.terminated(valueSet, facets(true, true)).pipe(\n Parser.map((values): ShExJ.NodeConstraint => ({ type: 'NodeConstraint', values })),\n ),\n ],\n [\n NUMERIC_FACETS,\n facets(false, true).pipe(\n Parser.map((f): ShExJ.NodeConstraint => ({ type: 'NodeConstraint', ...f })),\n ),\n ],\n]);\n\nconst NODE_KINDS = ['IRI', 'BNODE', 'NONLITERAL'];\nconst NON_LIT_KINDS = [...NODE_KINDS, 'LENGTH', 'MINLENGTH', 'MAXLENGTH', 'REGEXP'];\nconst LIT_KINDS = ['LITERAL', ...NUMERIC_FACETS, ...IRI_KINDS, '['];\n\nconst nodeKindOf = (kind: string): ShExJ.NodeKind =>\n kind === 'IRI' ? 'iri' : kind === 'BNODE' ? 'bnode' : 'nonliteral';\n\nconst nonLitInlineNodeConstraint: P<ShExJ.NodeConstraint> = Parser.seq(\n Parser.opt(select('a node kind', [[NODE_KINDS, anyToken.pipe(Parser.map((t) => t.text))]])),\n facets(true, false),\n).pipe(\n Parser.map(([kind, f]): ShExJ.NodeConstraint =>\n Option.isSome(kind)\n ? { type: 'NodeConstraint', nodeKind: nodeKindOf(kind.value), ...f }\n : { type: 'NodeConstraint', ...f },\n ),\n);\n\n/** A non-literal node constraint, if one starts here. */\nconst nonLitNodeConstraintOpt: P<Option.Option<ShExJ.NodeConstraint>> = Parser.opt(\n select('a node constraint', [[NON_LIT_KINDS, Parser.cut(nonLitInlineNodeConstraint)]]),\n);\n\nconst withAnnotations = (nc: P<ShExJ.NodeConstraint>): P<ShExJ.NodeConstraint> =>\n Parser.seq(nc, annotations, semanticActions).pipe(\n Parser.map(([constraint, annots, semActs]) => {\n if (Arr.isReadonlyArrayEmpty(annots) && Option.isNone(semActs)) return constraint;\n const out: Mutable<ShExJ.NodeConstraint> = constraint;\n if (Arr.isReadonlyArrayNonEmpty(annots)) out.annotations = annots;\n if (Option.isSome(semActs)) out.semActs = semActs.value;\n return out;\n }),\n );\n\n/** A non-literal node constraint with its annotations, if one starts here. */\nconst annotatedNonLitNodeConstraintOpt: P<Option.Option<ShExJ.NodeConstraint>> = Parser.opt(\n select('a node constraint', [\n [NON_LIT_KINDS, Parser.cut(withAnnotations(nonLitInlineNodeConstraint))],\n ]),\n);\n\n// -----------------------------------------------------------------------------\n// Shape expressions\n// -----------------------------------------------------------------------------\n\nconst REF_KINDS = ['ATPNAME', '@'];\nconst SHAPE_DEF_KINDS = ['{', '&', 'EXTENDS', 'EXTRA', 'CLOSED'];\n\nconst shapeRef: P<string> = select('a shape reference', [\n [\n ['ATPNAME'],\n Parser.seq(Parser.location, anyToken).pipe(\n Parser.tryMap(([at, t]) => tokenIri(t, at)),\n Parser.cut,\n ),\n ],\n [['@'], Parser.preceded(anyToken, Parser.cut(label))],\n]);\n\nconst shapeExpressionBody: P<AnyShapeExpr> = Parser.suspend(() => shapeExpressionBodyDef);\nconst tripleExpression: P<ShExJ.TripleExprOrRef> = Parser.suspend(() => tripleExpressionDef);\nconst extendsShapeOr: P<AnyShapeExpr> = Parser.suspend(() => extendsShapeOrDef);\nconst inlineShapeExpression: P<AnyShapeExpr> = Parser.suspend(() => inlineShapeExpressionDef);\n\nconst parenthesised: P<Atom> = Parser.delimited(\n anyToken,\n Parser.cut(shapeExpressionBody),\n Parser.cut(tok(')')),\n).pipe(Parser.map((e) => ({ e, nested: true })));\n\nconst empty: P<Atom> = anyToken.pipe(Parser.as(plain(EMPTY)));\n\ntype Qualifier =\n | { readonly _tag: 'Extends'; readonly e: AnyShapeExpr }\n | { readonly _tag: 'Extra'; readonly predicates: Array<string> }\n | { readonly _tag: 'Closed' };\n\nconst inlineShapeDefinition: P<ShExJ.Shape> = Parser.seq(\n Parser.repeat(\n select<Qualifier>('a shape qualifier', [\n [\n ['EXTENDS', '&'],\n Parser.preceded(anyToken, Parser.cut(extendsShapeOr)).pipe(\n Parser.map((e): Qualifier => ({ _tag: 'Extends', e })),\n ),\n ],\n [\n ['EXTRA'],\n Parser.preceded(anyToken, Parser.cut(Parser.repeat(predicate, { min: 1 }))).pipe(\n Parser.map((predicates): Qualifier => ({ _tag: 'Extra', predicates })),\n ),\n ],\n [['CLOSED'], anyToken.pipe(Parser.as<Qualifier>({ _tag: 'Closed' }))],\n ]),\n ),\n Parser.delimited(\n Parser.cut(tok('{')),\n select(\n 'a triple expression',\n [[['}'], Parser.succeed(Option.none<ShExJ.TripleExprOrRef>())]],\n Parser.cut(tripleExpression).pipe(Parser.map(Option.some)),\n ),\n Parser.cut(tok('}')),\n ),\n).pipe(\n Parser.map(([qualifiers, expression]): ShExJ.Shape => {\n if (Option.isNone(expression) && Arr.isReadonlyArrayEmpty(qualifiers)) return EMPTY;\n const extendsList = Arr.filterMap(qualifiers, (q) =>\n Predicate.isTagged(q, 'Extends') ? Result.succeed(q.e) : Result.failVoid,\n );\n const extra = Arr.flatMap(qualifiers, (q) =>\n Predicate.isTagged(q, 'Extra') ? q.predicates : [],\n );\n const shape: Mutable<ShExJ.Shape> = { type: 'Shape' };\n if (Option.isSome(expression)) shape.expression = expression.value;\n if (Arr.isReadonlyArrayNonEmpty(extendsList)) shape.extends = extendsList;\n if (Arr.some(qualifiers, (q) => Predicate.isTagged(q, 'Extra'))) shape.extra = extra;\n if (Arr.some(qualifiers, (q) => Predicate.isTagged(q, 'Closed'))) shape.closed = true;\n return shape;\n }),\n);\n\nconst shapeDefinition: P<AnyShapeExpr> = Parser.seq(\n inlineShapeDefinition,\n annotations,\n semanticActions,\n).pipe(\n Parser.map(([def, annots, semActs]) => {\n const out: Mutable<ShExJ.Shape> = def === EMPTY ? { type: 'Shape' } : def;\n if (Arr.isReadonlyArrayNonEmpty(annots)) out.annotations = annots;\n if (Option.isSome(semActs)) out.semActs = semActs.value;\n return out;\n }),\n);\n\nconst shapeOrRef: P<AnyShapeExpr> = select(\n 'a shape definition or reference',\n [[REF_KINDS, shapeRef]],\n shapeDefinition,\n);\n\nconst inlineShapeOrRef: P<AnyShapeExpr> = select(\n 'a shape definition or reference',\n [[REF_KINDS, shapeRef]],\n inlineShapeDefinition,\n);\n\n/** A shape definition or reference, if one starts here. */\nconst shapeOrRefOpt = (p: P<AnyShapeExpr>): P<Option.Option<AnyShapeExpr>> =>\n Parser.opt(\n select('a shape definition or reference', [\n [[...SHAPE_DEF_KINDS, ...REF_KINDS], Parser.cut(p)],\n ]),\n );\n\n/** A node constraint, conjoined with the shape definition or reference after it if any. */\nconst andRef = (nc: ShExJ.NodeConstraint, ref: Option.Option<AnyShapeExpr>): AnyShapeExpr =>\n Option.isSome(ref) ? { type: 'ShapeAnd', shapeExprs: [{ ...nc }, ref.value] } : nc;\n\n/** shapeAtom (with `allowRef`) and shapeAtomNoRef. */\nconst shapeAtom = (allowRef: boolean): P<Atom> =>\n select('a shape expression', [\n [\n NON_LIT_KINDS,\n Parser.cut(\n Parser.seq(withAnnotations(nonLitInlineNodeConstraint), shapeOrRefOpt(shapeOrRef)).pipe(\n Parser.map(([nc, ref]) => plain(andRef(nc, ref))),\n ),\n ),\n ],\n [LIT_KINDS, Parser.cut(withAnnotations(litInlineNodeConstraint)).pipe(Parser.map(plain))],\n [\n allowRef ? [...SHAPE_DEF_KINDS, ...REF_KINDS] : SHAPE_DEF_KINDS,\n Parser.cut(\n Parser.seq(shapeOrRef, annotatedNonLitNodeConstraintOpt).pipe(\n Parser.map(([sor, nc]) =>\n plain(\n Option.match(nc, {\n onNone: () => sor,\n onSome: (c) => junction('ShapeAnd', plain(sor), [c]),\n }),\n ),\n ),\n ),\n ),\n ],\n [['('], parenthesised],\n [['.'], empty],\n ]);\n\nconst shapeNot: P<Atom> = select(\n 'a shape expression',\n [\n [\n ['NOT'],\n Parser.preceded(anyToken, Parser.cut(shapeAtom(true))).pipe(\n Parser.map((a) => plain({ type: 'ShapeNot', shapeExpr: a.e })),\n ),\n ],\n ],\n shapeAtom(true),\n);\n\nconst shapeAnd: P<AnyShapeExpr> = Parser.seq(\n shapeNot,\n Parser.repeat(Parser.preceded(tok('AND'), Parser.cut(shapeNot))),\n).pipe(\n Parser.map(([first, rest]) =>\n junction(\n 'ShapeAnd',\n first,\n rest.map((a) => a.e),\n ),\n ),\n);\n\nconst ors = Parser.repeat(Parser.preceded(tok('OR'), Parser.cut(shapeAnd)));\n\nconst shapeOrRest: P<Rest> = select(\"'AND' or 'OR'\", [\n [['OR'], ors.pipe(Parser.map((operands): Rest => ({ _tag: 'Or', ors: operands })))],\n [\n ['AND'],\n Parser.seq(Parser.repeat(Parser.preceded(tok('AND'), Parser.cut(shapeNot))), ors).pipe(\n Parser.map(([conjuncts, operands]): Rest => ({\n _tag: 'And',\n ands: Arr.flatMap(conjuncts, (c) =>\n !Predicate.isString(c.e) && c.e.type === 'ShapeAnd' && !c.nested ? c.e.shapeExprs : [c.e],\n ),\n ors: operands,\n })),\n ),\n ],\n]);\n\n/**\n * shapeExpression ::= NOT? shapeAtomNoRef shapeOr? | NOT shapeRef shapeOr? | shapeRef shapeOr\n */\nconst shapeExpressionBodyDef: P<AnyShapeExpr> = select(\n 'a shape expression',\n [\n [\n ['NOT'],\n Parser.preceded(\n anyToken,\n Parser.cut(\n select(\n 'a shape expression',\n [\n [\n REF_KINDS,\n Parser.seq(shapeRef, Parser.opt(shapeOrRest)).pipe(\n Parser.map(([ref, rest]) =>\n prependAtom(plain({ type: 'ShapeNot', shapeExpr: ref }), rest),\n ),\n ),\n ],\n ],\n Parser.seq(shapeAtom(false), Parser.opt(shapeOrRest)).pipe(\n Parser.map(([a, rest]) =>\n prependAtom(plain({ type: 'ShapeNot', shapeExpr: a.e }), rest),\n ),\n ),\n ),\n ),\n ),\n ],\n [\n REF_KINDS,\n Parser.seq(shapeRef, Parser.cut(shapeOrRest)).pipe(\n Parser.map(([ref, rest]) => prepend(rest, [ref])),\n ),\n ],\n ],\n Parser.seq(shapeAtom(false), Parser.opt(shapeOrRest)).pipe(\n Parser.map(([a, rest]) => prependAtom(a, rest)),\n ),\n);\n\n// Inline shape expressions -----------------------------------------------------\n\n/** The atoms of inline and EXTENDS shape expressions, which differ in one case. */\nconst inlineAtom = (extendsAtom: boolean): P<Atom> =>\n select('a shape expression', [\n [\n NON_LIT_KINDS,\n Parser.cut(\n extendsAtom\n ? Parser.seq(nonLitInlineNodeConstraint, inlineShapeOrRef).pipe(\n Parser.map(([nc, ref]) => plain({ type: 'ShapeAnd', shapeExprs: [{ ...nc }, ref] })),\n )\n : Parser.seq(nonLitInlineNodeConstraint, shapeOrRefOpt(inlineShapeOrRef)).pipe(\n Parser.map(([nc, ref]) => plain(andRef(nc, ref))),\n ),\n ),\n ],\n [LIT_KINDS, Parser.cut(litInlineNodeConstraint).pipe(Parser.map(plain))],\n [\n [...SHAPE_DEF_KINDS, ...REF_KINDS],\n Parser.cut(\n Parser.seq(inlineShapeOrRef, nonLitNodeConstraintOpt).pipe(\n Parser.map(([sor, nc]) =>\n plain(\n Option.match(nc, {\n onNone: () => sor,\n onSome: (c): AnyShapeExpr => ({ type: 'ShapeAnd', shapeExprs: [sor, c] }),\n }),\n ),\n ),\n ),\n ),\n ],\n [['('], parenthesised],\n [['.'], empty],\n ]);\n\nconst junctions = (atom: P<Atom>) => {\n const not: P<Atom> = select(\n 'a shape expression',\n [\n [\n ['NOT'],\n Parser.preceded(anyToken, Parser.cut(atom)).pipe(\n Parser.map((a) => plain({ type: 'ShapeNot', shapeExpr: a.e })),\n ),\n ],\n ],\n atom,\n );\n const and: P<AnyShapeExpr> = Parser.seq(\n not,\n Parser.repeat(Parser.preceded(tok('AND'), Parser.cut(not))),\n ).pipe(\n Parser.map(([first, rest]) =>\n junction(\n 'ShapeAnd',\n first,\n rest.map((a) => a.e),\n ),\n ),\n );\n return Parser.seq(and, Parser.repeat(Parser.preceded(tok('OR'), Parser.cut(and)))).pipe(\n Parser.map(([first, rest]) => junction('ShapeOr', plain(first), rest)),\n );\n};\n\nconst inlineShapeExpressionDef: P<AnyShapeExpr> = junctions(inlineAtom(false));\nconst extendsShapeOrDef: P<AnyShapeExpr> = junctions(inlineAtom(true));\n\n// -----------------------------------------------------------------------------\n// Triple expressions\n// -----------------------------------------------------------------------------\n\n/** The token index of the label of each labelled triple expression. */\nconst labelAt = new WeakMap<object, number>();\n\nconst tripleConstraint: P<ShExJ.TripleConstraint> = Parser.seq(\n accept('^'),\n predicate,\n inlineShapeExpression,\n cardinality,\n annotations,\n semanticActions,\n).pipe(\n Parser.map(([inverse, pred, valueExpr, card, annots, semActs]) => {\n const tc: Mutable<ShExJ.TripleConstraint> = inverse\n ? { type: 'TripleConstraint', inverse: true, predicate: pred }\n : { type: 'TripleConstraint', predicate: pred };\n if (valueExpr !== EMPTY) tc.valueExpr = valueExpr;\n if (Option.isSome(card)) {\n tc.min = card.value.min;\n tc.max = card.value.max;\n }\n if (Option.isSome(semActs)) tc.semActs = semActs.value;\n if (Arr.isReadonlyArrayNonEmpty(annots)) tc.annotations = annots;\n return tc;\n }),\n);\n\nconst bracketedTripleExpr: P<ShExJ.TripleExprOrRef> = Parser.seq(\n Parser.location,\n Parser.delimited(anyToken, Parser.cut(tripleExpression), Parser.cut(tok(')'))),\n cardinality,\n annotations,\n semanticActions,\n).pipe(\n Parser.tryMap(([at, expr, card, annots, semActs]) => {\n if (Option.isNone(card) && Arr.isReadonlyArrayEmpty(annots) && Option.isNone(semActs)) {\n return Result.succeed(expr);\n }\n if (Predicate.isString(expr)) {\n return failAt<ShExJ.TripleExprOrRef>(\n `a group containing only the inclusion &<${expr}> can't take a cardinality, an annotation or a semantic action`,\n at,\n );\n }\n const out: Mutable<ShExJ.TripleExpr> =\n Option.isSome(card) &&\n expr.type === 'TripleConstraint' &&\n (expr.min !== undefined || expr.max !== undefined)\n ? { type: 'EachOf', expressions: [expr] }\n : expr;\n if (Option.isSome(card)) {\n out.min = card.value.min;\n out.max = card.value.max;\n }\n if (Arr.isReadonlyArrayNonEmpty(annots)) out.annotations = annots;\n if (Option.isSome(semActs)) out.semActs = [...(out.semActs ?? []), ...semActs.value];\n return Result.succeed<ShExJ.TripleExprOrRef>(out);\n }),\n Parser.cut,\n);\n\nconst bracketedOrConstraint: P<ShExJ.TripleExprOrRef> = select(\n 'a triple expression',\n [[['('], bracketedTripleExpr]],\n tripleConstraint,\n);\n\nconst UNARY_KINDS = ['$', '&', '(', '^', 'a', ...IRI_KINDS];\n\nconst unaryTripleExpr: P<ShExJ.TripleExprOrRef> = select('a triple expression', [\n [['&'], Parser.preceded(anyToken, Parser.cut(label))],\n [\n ['$'],\n Parser.seq(\n Parser.preceded(anyToken, Parser.cut(Parser.seq(Parser.location, label))),\n Parser.cut(bracketedOrConstraint),\n ).pipe(\n Parser.tryMap(([[at, id], expr]) => {\n if (Predicate.isString(expr)) {\n return failAt<ShExJ.TripleExprOrRef>(\n `a group containing only the inclusion &<${expr}> can't take a label`,\n at,\n );\n }\n const labelled = { id, ...expr };\n labelAt.set(labelled, at);\n return Result.succeed<ShExJ.TripleExprOrRef>(labelled);\n }),\n Parser.cut,\n ),\n ],\n [['(', '^', 'a', ...IRI_KINDS], Parser.cut(bracketedOrConstraint)],\n]);\n\nconst separator = select('; or ,', [[[';', ','], anyToken]]);\n\nconst groupTripleExpr: P<ShExJ.TripleExprOrRef> = Parser.terminated(\n Parser.seq(\n unaryTripleExpr,\n Parser.repeat(\n Parser.preceded(separator, select('a triple expression', [[UNARY_KINDS, unaryTripleExpr]])),\n ),\n ),\n Parser.opt(separator),\n).pipe(\n Parser.map(([first, rest]) =>\n Arr.isReadonlyArrayEmpty(rest) ? first : { type: 'EachOf', expressions: [first, ...rest] },\n ),\n);\n\nconst tripleExpressionDef: P<ShExJ.TripleExprOrRef> = Parser.seq(\n groupTripleExpr,\n Parser.repeat(Parser.preceded(tok('|'), Parser.cut(groupTripleExpr))),\n).pipe(\n Parser.map(([first, rest]) =>\n Arr.isReadonlyArrayEmpty(rest) ? first : { type: 'OneOf', expressions: [first, ...rest] },\n ),\n);\n\n// -----------------------------------------------------------------------------\n// Document\n// -----------------------------------------------------------------------------\n\ntype Statement =\n | { readonly _tag: 'Import'; readonly iri: string }\n | { readonly _tag: 'Start'; readonly expr: AnyShapeExpr; readonly at: number }\n | { readonly _tag: 'Decl'; readonly decl: ShExJ.ShapeDecl; readonly at: number };\n\nconst noStatement = Option.none<Statement>();\n\nconst directiveCases: ReadonlyArray<readonly [ReadonlyArray<string>, P<Option.Option<Statement>>]> =\n [\n [\n ['BASE'],\n Parser.preceded(anyToken, Parser.cut(tok('IRIREF', 'an IRI reference'))).pipe(\n Parser.as(noStatement),\n ),\n ],\n [\n ['PREFIX'],\n Parser.preceded(\n anyToken,\n Parser.cut(\n Parser.seq(\n Token.oneOf<ReadonlyArray<Tok>>((t) => t.type === 'PNAME' && t.iri === '').pipe(\n Parser.expected('a prefix name'),\n ),\n iri,\n ),\n ),\n ).pipe(Parser.as(noStatement)),\n ],\n [\n ['IMPORT'],\n Parser.preceded(anyToken, Parser.cut(iri)).pipe(\n Parser.map((base) => Option.some<Statement>({ _tag: 'Import', iri: base })),\n ),\n ],\n ];\n\nconst directive: P<Option.Option<Statement>> = select('a directive', directiveCases);\n\nconst startDecl: P<Statement> = Parser.seq(\n Parser.location,\n Parser.preceded(anyToken, Parser.cut(Parser.preceded(tok('='), Parser.seq(shapeAnd, ors)))),\n).pipe(\n Parser.map(([at, [first, rest]]): Statement => ({\n _tag: 'Start',\n expr: junction('ShapeOr', plain(first), rest),\n at,\n })),\n);\n\nconst shapeExprDecl: P<Statement> = Parser.seq(\n accept('ABSTRACT'),\n Parser.location,\n label,\n Parser.repeat(\n Parser.preceded(\n select(\"'RESTRICTS' or '-'\", [[['RESTRICTS', '-'], anyToken]]),\n Parser.cut(shapeOrRef),\n ),\n ),\n select(\n 'a shape expression',\n [\n [['EXTERNAL'], anyToken.pipe(Parser.as<AnyShapeExpr>({ type: 'ShapeExternal' }))],\n [\n REF_KINDS,\n Parser.seq(shapeRef, Parser.opt(shapeOrRest)).pipe(\n Parser.map(([ref, rest]) =>\n Option.match(rest, { onNone: () => ref, onSome: (r) => prepend(r, [ref]) }),\n ),\n ),\n ],\n ],\n shapeExpressionBody,\n ),\n).pipe(\n Parser.map(([abstract, at, name, restricts, body]): Statement => {\n const shapeExpr = body === EMPTY ? { type: 'Shape' as const } : body;\n const decl: Mutable<ShExJ.ShapeDecl> = { type: 'ShapeDecl', id: name, shapeExpr };\n if (abstract) decl.abstract = true;\n if (Arr.isReadonlyArrayNonEmpty(restricts)) decl.restricts = restricts;\n return { _tag: 'Decl', decl, at };\n }),\n);\n\nconst statement: P<Option.Option<Statement>> = select('a directive or shape declaration', [\n ...directiveCases,\n [['START'], startDecl.pipe(Parser.map(Option.some))],\n [\n ['ABSTRACT', 'BLANK_NODE_LABEL', ...IRI_KINDS],\n Parser.cut(shapeExprDecl).pipe(Parser.map(Option.some)),\n ],\n]);\n\nconst document = Compiler.jit(\n Parser.terminated(\n Parser.seq(Parser.repeat(directive), Parser.opt(codeDecls), Parser.repeat(statement)),\n Parser.eof,\n ),\n);\n\n// -----------------------------------------------------------------------------\n// Checks in document order\n// -----------------------------------------------------------------------------\n\ntype Visit = (t: ShExJ.TripleExpr, id: string) => void;\n\nconst labelledShape = (s: AnyShapeExpr, f: Visit): void => {\n if (!Predicate.isString(s)) labelledShapeExpr(s, f);\n};\n\nconst labelledTriple = (t: ShExJ.TripleExprOrRef, f: Visit): void => {\n if (Predicate.isString(t)) return;\n if (t.type === 'TripleConstraint') {\n if (t.valueExpr !== undefined) labelledShape(t.valueExpr, f);\n } else t.expressions.forEach((e) => labelledTriple(e, f));\n if (t.id !== undefined) f(t, t.id);\n};\n\n// Built once: it runs for every shape expression of every declaration.\nconst labelledShapeExpr: (s: ShExJ.ShapeExpr, f: Visit) => void = Match.fn(\n (s: ShExJ.ShapeExpr, _f: Visit) => s,\n).pipe(\n Match.when({ type: Match.is('ShapeOr', 'ShapeAnd') }, (s, _s, f) =>\n s.shapeExprs.forEach((e) => labelledShape(e, f)),\n ),\n Match.when({ type: 'ShapeNot' }, (s, _s, f) => labelledShape(s.shapeExpr, f)),\n Match.when({ type: 'Shape' }, (s, _s, f) => {\n s.extends?.forEach((e) => labelledShape(e, f));\n if (s.expression !== undefined) labelledTriple(s.expression, f);\n }),\n Match.orElse(() => undefined),\n);\n\n/**\n * Calls `f` on each labelled triple expression of a shape expression, in\n * document order (each after the labelled expressions it contains).\n */\nconst eachLabelled = (e: AnyShapeExpr, f: Visit): void => labelledShape(e, f);\n\nconst assemble = (\n statements: ReadonlyArray<Statement>,\n startActs: Option.Option<ReadonlyArray<ShExJ.SemAct>>,\n): Result.Result<ShExJ.Schema, SemanticError> => {\n const imports: Array<string> = [];\n // In document order, which the schema keeps.\n const shapes: Array<ShExJ.ShapeDecl> = [];\n const shapeIds = MutableHashSet.empty<string>();\n const productions = MutableHashSet.empty<string>();\n let error = Option.none<SemanticError>();\n const production: Visit = (t, id) => {\n if (Option.isSome(error)) return;\n const at = labelAt.get(t) ?? 0;\n if (MutableHashSet.has(shapeIds, id))\n error = Option.some({ message: `${id} is a shape expression`, at });\n else if (MutableHashSet.has(productions, id))\n error = Option.some({ message: `${id} already defined`, at });\n else MutableHashSet.add(productions, id);\n };\n const step = (\n start: Option.Option<AnyShapeExpr>,\n s: Statement,\n ): Result.Result<Option.Option<AnyShapeExpr>, SemanticError> => {\n if (Predicate.isTagged(s, 'Import')) {\n imports.push(s.iri);\n return Result.succeed(start);\n }\n if (Predicate.isTagged(s, 'Start')) {\n if (Option.isSome(start)) return failAt('start already defined', s.at);\n eachLabelled(s.expr, production);\n return Option.isSome(error) ? Result.fail(error.value) : Result.succeed(Option.some(s.expr));\n }\n const { decl, at } = s;\n decl.restricts?.forEach((r) => eachLabelled(r, production));\n eachLabelled(decl.shapeExpr, production);\n if (Option.isSome(error)) return Result.fail(error.value);\n if (MutableHashSet.has(productions, decl.id))\n return failAt(`${decl.id} is a triple expression`, at);\n if (MutableHashSet.has(shapeIds, decl.id)) return failAt(`${decl.id} already defined`, at);\n MutableHashSet.add(shapeIds, decl.id);\n shapes.push(decl);\n return Result.succeed(start);\n };\n const noStart: Result.Result<Option.Option<AnyShapeExpr>, SemanticError> = Result.succeed(\n Option.none(),\n );\n return Arr.reduce(statements, noStart, (acc, s) =>\n Result.flatMap(acc, (start) => step(start, s)),\n ).pipe(\n Result.map((start) => {\n const schema: Mutable<ShExJ.Schema> = { type: 'Schema' };\n if (Arr.isReadonlyArrayNonEmpty(imports)) schema.imports = imports;\n if (Option.isSome(startActs)) schema.startActs = startActs.value;\n if (Option.isSome(start)) schema.start = start.value;\n if (Arr.isReadonlyArrayNonEmpty(shapes)) schema.shapes = shapes;\n return schema;\n }),\n );\n};\n\n// -----------------------------------------------------------------------------\n// Entry point\n// -----------------------------------------------------------------------------\n\nconst offsetOf = (tokens: ReadonlyArray<Tok>, input: string, at: number): number =>\n tokens[at]?.start ?? input.length;\n\nconst grammarError = (\n input: string,\n tokens: ReadonlyArray<Tok>,\n error: ParseError.ParseError<SemanticError>,\n): ShExCError => {\n if (error.cause !== undefined) {\n return { message: error.cause.message, offset: offsetOf(tokens, input, error.cause.at) };\n }\n const t = tokens[error.offset];\n if (t?.type === 'ERROR') return { message: t.text, offset: t.start };\n const found = t === undefined ? 'end of input' : quote(input.slice(t.start, t.end));\n const expected = ParseError.formatExpected(error.expected);\n return {\n message: expected === '' ? `unexpected ${found}` : `expected ${expected}, found ${found}`,\n offset: offsetOf(tokens, input, error.offset),\n };\n};\n\n/** Parses a ShExC document. Errors carry the character offset. */\nexport const parseShExC = (\n input: string,\n options: ParserOptions,\n): Result.Result<ParserResult, ShExCError> => {\n const tokens = tokenize(input);\n const resolved = resolve(tokens, options.baseIri, options.prefixes);\n const parsed = Parser.parse(document, tokens);\n if (Result.isFailure(parsed)) return Result.fail(grammarError(input, tokens, parsed.failure));\n const [directives, startActs, statements] = parsed.success;\n const schema = assemble(Arr.getSomes([...directives, ...statements]), startActs);\n if (Result.isFailure(schema)) {\n return Result.fail({\n message: schema.failure.message,\n offset: offsetOf(tokens, input, schema.failure.at),\n });\n }\n return Result.succeed({\n schema: schema.success,\n prefixes: resolved.prefixes,\n baseIri: resolved.baseIri,\n });\n};\n","/**\n * The ShEx compact syntax (ShExC): a hand-written parser producing ShExJ and\n * a printer from ShExJ back to ShExC.\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport * as Result from 'effect/Result';\nimport * as Iri from '../Iri.ts';\nimport * as PrefixMap from '../PrefixMap.ts';\nimport { RdfParseError } from '../Serialization.ts';\nimport { lineColumn } from './internal/lexer.ts';\nimport { parseShExC } from './internal/shexcParser.ts';\nimport type * as ShExJ from './ShExJ.ts';\nimport * as Predicate from 'effect/Predicate';\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface ParseOptions {\n /** The base IRI against which relative IRIs are resolved. */\n readonly baseIri?: string | undefined;\n /** Prefixes available before any `PREFIX` declaration. */\n readonly prefixes?: Readonly<Record<string, string>> | PrefixMap.PrefixMap | undefined;\n}\n\n/**\n * The result of parsing a ShExC document with its metadata.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface ParseResult {\n readonly schema: ShExJ.Schema;\n /** The prefixes in scope at the end of the document. */\n readonly prefixes: PrefixMap.PrefixMap;\n /** The base IRI in effect at the end of the document. */\n readonly baseIri: string | undefined;\n}\n\nconst isPrefixMap = (\n prefixes: Readonly<Record<string, string>> | PrefixMap.PrefixMap,\n): prefixes is PrefixMap.PrefixMap => 'prefixes' in prefixes && prefixes.prefixes instanceof Map;\n\nconst toPrefixMap = (prefixes: ParseOptions['prefixes']): PrefixMap.PrefixMap =>\n prefixes === undefined\n ? PrefixMap.empty\n : isPrefixMap(prefixes)\n ? prefixes\n : PrefixMap.make(prefixes);\n\n/**\n * Parses a ShExC document, returning the schema together with its prefixes\n * and final base IRI.\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parseWithMetadata = (\n input: string,\n options: ParseOptions = {},\n): Effect.Effect<ParseResult, RdfParseError> =>\n Effect.suspend(() => {\n const result = parseShExC(input, {\n baseIri: Option.fromUndefinedOr(options.baseIri),\n prefixes: toPrefixMap(options.prefixes),\n });\n if (Result.isFailure(result)) {\n const { line, column } = lineColumn(input, result.failure.offset);\n return Effect.fail(\n new RdfParseError({ format: 'ShExC', message: result.failure.message, line, column }),\n );\n }\n return Effect.succeed({\n schema: result.success.schema,\n prefixes: result.success.prefixes,\n baseIri: Option.getOrUndefined(result.success.baseIri),\n });\n });\n\n/**\n * Parses a ShExC document to a ShExJ schema.\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parse = (\n input: string,\n options: ParseOptions = {},\n): Effect.Effect<ShExJ.Schema, RdfParseError> =>\n Effect.map(parseWithMetadata(input, options), (r) => r.schema);\n\n// -----------------------------------------------------------------------------\n// Printer\n// -----------------------------------------------------------------------------\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport interface PrintOptions {\n /** Prefixes used to abbreviate IRIs (and declared at the top). */\n readonly prefixes?: PrefixMap.PrefixMap | undefined;\n /** A base IRI used to relativise IRIs (and declared at the top). */\n readonly baseIri?: string | undefined;\n /** Indentation unit. Defaults to two spaces. */\n readonly indent?: string | undefined;\n}\n\nconst XSD = 'http://www.w3.org/2001/XMLSchema#';\nconst RDF_TYPE = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';\n\nconst escapeIri = (iri: string): string =>\n iri.replace(\n // eslint-disable-next-line no-control-regex\n /[\\u0000- <>\"{}|^`\\\\]/g,\n (c) => `\\\\u${c.charCodeAt(0).toString(16).padStart(4, '0')}`,\n );\n\nconst escapeString = (s: string): string =>\n s.replace(/[\"\\\\\\n\\r\\t\\b\\f]/g, (c) =>\n c === '\"'\n ? '\\\\\"'\n : c === '\\\\'\n ? '\\\\\\\\'\n : c === '\\n'\n ? '\\\\n'\n : c === '\\r'\n ? '\\\\r'\n : c === '\\t'\n ? '\\\\t'\n : c === '\\b'\n ? '\\\\b'\n : '\\\\f',\n );\n\nconst escapeRegexp = (s: string): string =>\n s.replace(/\\//g, '\\\\/').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r');\n\nconst escapeCode = (s: string): string => s.replace(/\\\\/g, '\\\\\\\\').replace(/%/g, '\\\\%');\n\nconst quoteLiteral = (s: string): string => `\"${escapeString(s)}\"`;\n\n/** A value without a string `type`, or with a `value`, is an object literal in ShExJ. */\nconst isObjectLiteral = (v: Exclude<ShExJ.ValueSetValue, string>): v is ShExJ.ObjectLiteral =>\n !Predicate.isString(v.type) || 'value' in v;\n\nclass Printer {\n readonly prefixes: PrefixMap.PrefixMap;\n readonly base: Option.Option<string>;\n readonly unit: string;\n\n constructor(options: PrintOptions) {\n this.prefixes = options.prefixes ?? PrefixMap.empty;\n this.base = Option.fromUndefinedOr(options.baseIri);\n this.unit = options.indent ?? ' ';\n }\n\n iri(iri: string): string {\n return Option.match(PrefixMap.compact(this.prefixes, iri), {\n onSome: ([prefix, local]) => `${prefix}:${local}`,\n onNone: () =>\n `<${escapeIri(\n Option.getOrElse(\n Option.flatMap(this.base, (base) => Iri.relativize(iri, base)),\n () => iri,\n ),\n )}>`,\n });\n }\n\n label(label: string): string {\n return label.startsWith('_:') ? label : this.iri(label);\n }\n\n predicate(p: string): string {\n return p === RDF_TYPE ? 'a' : this.iri(p);\n }\n\n literal(l: ShExJ.ObjectLiteral): string {\n const quoted = `\"${escapeString(l.value)}\"`;\n if (l.language !== undefined) return `${quoted}@${l.language}`;\n if (l.type === undefined || l.type === `${XSD}string`) return quoted;\n if (l.type === `${XSD}integer` && /^[+-]?\\d+$/.test(l.value)) return l.value;\n if (l.type === `${XSD}decimal` && /^[+-]?\\d*\\.\\d+$/.test(l.value)) return l.value;\n if (l.type === `${XSD}double` && /^[+-]?(\\d+\\.\\d*|\\.?\\d+)[eE][+-]?\\d+$/.test(l.value))\n return l.value;\n if (l.type === `${XSD}boolean` && (l.value === 'true' || l.value === 'false')) return l.value;\n return `${quoted}^^${this.iri(l.type)}`;\n }\n\n objectValue(v: ShExJ.ObjectValue): string {\n return Predicate.isString(v) ? this.iri(v) : this.literal(v);\n }\n\n semActs(acts: ReadonlyArray<ShExJ.SemAct> = []): string {\n return acts\n .map((a) => ` %${this.iri(a.name)}${a.code === undefined ? '%' : `{${escapeCode(a.code)}%}`}`)\n .join('');\n }\n\n annotations(annots: ReadonlyArray<ShExJ.Annotation> = []): string {\n return annots\n .map((a) => ` // ${this.predicate(a.predicate)} ${this.objectValue(a.object)}`)\n .join('');\n }\n\n cardinality(c: ShExJ.Cardinality): string {\n const min = c.min ?? 1;\n const max = c.max ?? 1;\n if (c.min === undefined && c.max === undefined) return '';\n if (min === 0 && max === -1) return '*';\n if (min === 1 && max === -1) return '+';\n if (min === 0 && max === 1) return '?';\n if (max === -1) return `{${min},}`;\n if (min === max) return `{${min}}`;\n return `{${min},${max}}`;\n }\n\n valueSetValue(v: ShExJ.ValueSetValue): string {\n if (Predicate.isString(v)) return this.iri(v);\n if (isObjectLiteral(v)) return this.literal(v);\n return Match.value(v).pipe(\n Match.withReturnType<string>(),\n Match.discriminator('type')('IriStem', (member) => `${this.iri(member.stem)}~`),\n Match.discriminator('type')('LiteralStem', (member) => `${quoteLiteral(member.stem)}~`),\n Match.discriminator('type')('Language', (member) => `@${member.languageTag}`),\n Match.discriminator('type')('LanguageStem', (member) =>\n member.stem === '' ? '@~' : `@${member.stem}~`,\n ),\n Match.discriminator('type')(\n 'IriStemRange',\n (member) =>\n `${Predicate.isString(member.stem) ? `${this.iri(member.stem)}~` : '.'}${member.exclusions\n .map((e) => ` - ${Predicate.isString(e) ? this.iri(e) : `${this.iri(e.stem)}~`}`)\n .join('')}`,\n ),\n Match.discriminator('type')(\n 'LiteralStemRange',\n (member) =>\n `${Predicate.isString(member.stem) ? `${quoteLiteral(member.stem)}~` : '.'}${member.exclusions\n .map(\n (e) => ` - ${Predicate.isString(e) ? quoteLiteral(e) : `${quoteLiteral(e.stem)}~`}`,\n )\n .join('')}`,\n ),\n Match.discriminator('type')(\n 'LanguageStemRange',\n (member) =>\n `${Predicate.isString(member.stem) ? (member.stem === '' ? '@~' : `@${member.stem}~`) : '.'}${member.exclusions\n .map((e) => ` - @${Predicate.isString(e) ? e : `${e.stem}~`}`)\n .join('')}`,\n ),\n Match.orElse(() => ''),\n );\n }\n\n nodeConstraint(nc: ShExJ.NodeConstraint): string {\n const parts: Array<string> = [];\n if (nc.nodeKind !== undefined) parts.push(nc.nodeKind.toUpperCase());\n if (nc.datatype !== undefined) parts.push(this.iri(nc.datatype));\n if (nc.values !== undefined)\n parts.push(`[${nc.values.map((v) => this.valueSetValue(v)).join(' ')}]`);\n if (nc.length !== undefined) parts.push(`LENGTH ${nc.length}`);\n if (nc.minlength !== undefined) parts.push(`MINLENGTH ${nc.minlength}`);\n if (nc.maxlength !== undefined) parts.push(`MAXLENGTH ${nc.maxlength}`);\n if (nc.pattern !== undefined) parts.push(`/${escapeRegexp(nc.pattern)}/${nc.flags ?? ''}`);\n if (nc.mininclusive !== undefined) parts.push(`MININCLUSIVE ${nc.mininclusive}`);\n if (nc.minexclusive !== undefined) parts.push(`MINEXCLUSIVE ${nc.minexclusive}`);\n if (nc.maxinclusive !== undefined) parts.push(`MAXINCLUSIVE ${nc.maxinclusive}`);\n if (nc.maxexclusive !== undefined) parts.push(`MAXEXCLUSIVE ${nc.maxexclusive}`);\n if (nc.totaldigits !== undefined) parts.push(`TOTALDIGITS ${nc.totaldigits}`);\n if (nc.fractiondigits !== undefined) parts.push(`FRACTIONDIGITS ${nc.fractiondigits}`);\n if (Arr.isReadonlyArrayEmpty(parts)) parts.push('.');\n return parts.join(' ') + this.annotations(nc.annotations) + this.semActs(nc.semActs);\n }\n\n /**\n * Prints a shape expression. `inline` forbids annotations and semantic\n * actions at the top level, which are then wrapped in parentheses.\n */\n shapeExpr(e: ShExJ.ShapeExprOrRef, indent: string, inline: boolean): string {\n if (Predicate.isString(e)) return `@${this.label(e)}`;\n return Match.value(e).pipe(\n Match.withReturnType<string>(),\n Match.discriminator('type')('ShapeOr', (expr) =>\n expr.shapeExprs.map((s) => this.junct(s, indent, 'ShapeOr')).join(' OR '),\n ),\n Match.discriminator('type')('ShapeAnd', (expr) =>\n expr.shapeExprs.map((s) => this.junct(s, indent, 'ShapeAnd')).join(' AND '),\n ),\n Match.discriminator('type')(\n 'ShapeNot',\n (expr) => `NOT ${this.junct(expr.shapeExpr, indent, 'ShapeNot')}`,\n ),\n Match.discriminator('type')('NodeConstraint', (expr) => {\n const s = this.nodeConstraint(expr);\n return inline && (expr.annotations !== undefined || expr.semActs !== undefined)\n ? `(${s})`\n : s;\n }),\n Match.discriminator('type')('Shape', (expr) => {\n const s = this.shape(expr, indent);\n return inline && (expr.annotations !== undefined || expr.semActs !== undefined)\n ? `(${s})`\n : s;\n }),\n Match.discriminator('type')('ShapeExternal', () => 'EXTERNAL'),\n Match.exhaustive,\n );\n }\n\n junct(e: ShExJ.ShapeExprOrRef, indent: string, parent: string): string {\n if (Predicate.isString(e)) return `@${this.label(e)}`;\n const needsParens =\n e.type === 'ShapeOr' ||\n (e.type === 'ShapeAnd' && parent !== 'ShapeOr') ||\n (e.type === 'ShapeNot' && parent === 'ShapeNot') ||\n e.type === 'ShapeExternal';\n const s = this.shapeExpr(e, indent, false);\n return needsParens ? `(${s})` : s;\n }\n\n shape(s: ShExJ.Shape, indent: string): string {\n const head = [\n ...Arr.map(s.extends ?? [], (ext) => `EXTENDS ${this.junct(ext, indent, 'ShapeNot')}`),\n ...(s.extra === undefined\n ? []\n : [`EXTRA ${s.extra.map((p) => this.predicate(p)).join(' ')}`]),\n ...(s.closed === true ? ['CLOSED'] : []),\n ];\n const inner = indent + this.unit;\n const body =\n s.expression === undefined\n ? '{ }'\n : `{\\n${inner}${this.tripleExpr(s.expression, inner, false)}\\n${indent}}`;\n return [...head, body].join(' ') + this.annotations(s.annotations) + this.semActs(s.semActs);\n }\n\n tripleExpr(t: ShExJ.TripleExprOrRef, indent: string, nested: boolean): string {\n if (Predicate.isString(t)) return `&${this.label(t)}`;\n const id = t.id !== undefined ? `$${this.label(t.id)} ` : '';\n return Match.value(t).pipe(\n Match.withReturnType<string>(),\n Match.discriminator('type')('TripleConstraint', (expr) => {\n const value =\n expr.valueExpr === undefined ? '.' : this.shapeExpr(expr.valueExpr, indent, true);\n return `${id}${expr.inverse === true ? '^' : ''}${this.predicate(expr.predicate)} ${value}${this.cardinality(expr)}${this.annotations(expr.annotations)}${this.semActs(expr.semActs)}`;\n }),\n Match.discriminator('type')('EachOf', 'OneOf', (expr) => {\n const sep = expr.type === 'EachOf' ? ` ;\\n${indent}` : `\\n${indent}| `;\n const inner = indent + this.unit;\n const items = expr.expressions.map((e) =>\n this.tripleExpr(e, inner, !Predicate.isString(e) && e.type !== 'TripleConstraint'),\n );\n const decorated =\n id !== '' ||\n this.cardinality(expr) !== '' ||\n expr.annotations !== undefined ||\n expr.semActs !== undefined;\n if (!decorated && !nested) return items.join(sep);\n if (!decorated && expr.type === 'EachOf' && nested) return `(${items.join(sep)})`;\n return `${id}(${items.join(sep)})${this.cardinality(expr)}${this.annotations(expr.annotations)}${this.semActs(expr.semActs)}`;\n }),\n Match.exhaustive,\n );\n }\n\n schema(schema: ShExJ.Schema): string {\n const header = [\n ...Arr.fromOption(Option.map(this.base, (base) => `BASE <${escapeIri(base)}>`)),\n ...Arr.map(\n Arr.fromIterable(this.prefixes.prefixes),\n ([p, ns]) => `PREFIX ${p}: <${escapeIri(ns)}>`,\n ),\n ...Arr.map(schema.imports ?? [], (imp) => `IMPORT ${this.iri(imp)}`),\n ];\n const out = [\n ...header,\n ...(Arr.isReadonlyArrayNonEmpty(header) ? [''] : []),\n ...(schema.startActs === undefined ? [] : [this.semActs(schema.startActs).trim()]),\n ...(schema.start === undefined ? [] : [`start = ${this.shapeExpr(schema.start, '', false)}`]),\n ...Arr.map(schema.shapes ?? [], (decl) => this.decl(decl)),\n ];\n return `${out.join('\\n')}\\n`;\n }\n\n decl(decl: ShExJ.ShapeDecl): string {\n const head = `${decl.abstract === true ? 'ABSTRACT ' : ''}${this.label(decl.id)}`;\n const restricts = (decl.restricts ?? [])\n .map((r) => ` RESTRICTS ${this.junct(r, '', 'ShapeNot')}`)\n .join('');\n const body =\n !Predicate.isString(decl.shapeExpr) && decl.shapeExpr.type === 'ShapeExternal'\n ? 'EXTERNAL'\n : Predicate.isString(decl.shapeExpr)\n ? `@${this.label(decl.shapeExpr)}`\n : this.shapeExpr(decl.shapeExpr, '', false);\n return `${head}${restricts} ${body}`;\n }\n}\n\n/**\n * Prints a ShExJ schema as ShExC. Parsing the output yields an equivalent\n * schema.\n *\n * @since 0.1.0\n * @category printing\n */\nexport const print = (schema: ShExJ.Schema, options: PrintOptions = {}): string =>\n new Printer(options).schema(schema);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
declare namespace ShExError_d_exports {
|
|
3
|
+
export { ShExImportError, ShExJError, ShExRError, ShExStructureError, ShExValidationError };
|
|
4
|
+
}
|
|
5
|
+
declare const ShExJError_base: Schema.Class<ShExJError, Schema.TaggedStruct<"ShExJError", {
|
|
6
|
+
readonly message: Schema.String;
|
|
7
|
+
}>, import("effect/Cause").YieldableError>;
|
|
8
|
+
/**
|
|
9
|
+
* A ShExJ document that is not valid JSON or does not match the ShExJ
|
|
10
|
+
* abstract syntax.
|
|
11
|
+
*
|
|
12
|
+
* @since 0.1.0
|
|
13
|
+
* @category errors
|
|
14
|
+
*/
|
|
15
|
+
declare class ShExJError extends ShExJError_base {}
|
|
16
|
+
declare const ShExStructureError_base: Schema.Class<ShExStructureError, Schema.TaggedStruct<"ShExStructureError", {
|
|
17
|
+
readonly message: Schema.String;
|
|
18
|
+
}>, import("effect/Cause").YieldableError>;
|
|
19
|
+
/**
|
|
20
|
+
* A schema that is syntactically valid but violates one of the ShEx
|
|
21
|
+
* structural requirements (missing references, negation or extension cycles,
|
|
22
|
+
* invalid inclusions, …).
|
|
23
|
+
*
|
|
24
|
+
* @since 0.1.0
|
|
25
|
+
* @category errors
|
|
26
|
+
*/
|
|
27
|
+
declare class ShExStructureError extends ShExStructureError_base {}
|
|
28
|
+
declare const ShExImportError_base: Schema.Class<ShExImportError, Schema.TaggedStruct<"ShExImportError", {
|
|
29
|
+
readonly iri: Schema.String;
|
|
30
|
+
readonly message: Schema.String;
|
|
31
|
+
}>, import("effect/Cause").YieldableError>;
|
|
32
|
+
/**
|
|
33
|
+
* A failure to load an imported schema.
|
|
34
|
+
*
|
|
35
|
+
* @since 0.1.0
|
|
36
|
+
* @category errors
|
|
37
|
+
*/
|
|
38
|
+
declare class ShExImportError extends ShExImportError_base {}
|
|
39
|
+
declare const ShExRError_base: Schema.Class<ShExRError, Schema.TaggedStruct<"ShExRError", {
|
|
40
|
+
readonly message: Schema.String;
|
|
41
|
+
}>, import("effect/Cause").YieldableError>;
|
|
42
|
+
/**
|
|
43
|
+
* An RDF graph that is not a valid ShExR representation of a schema.
|
|
44
|
+
*
|
|
45
|
+
* @since 0.1.0
|
|
46
|
+
* @category errors
|
|
47
|
+
*/
|
|
48
|
+
declare class ShExRError extends ShExRError_base {}
|
|
49
|
+
declare const ShExValidationError_base: Schema.Class<ShExValidationError, Schema.TaggedStruct<"ShExValidationError", {
|
|
50
|
+
readonly message: Schema.String;
|
|
51
|
+
}>, import("effect/Cause").YieldableError>;
|
|
52
|
+
/**
|
|
53
|
+
* A validation request that cannot be evaluated, e.g. a shape map that names
|
|
54
|
+
* a shape label the schema does not declare.
|
|
55
|
+
*
|
|
56
|
+
* @since 0.1.0
|
|
57
|
+
* @category errors
|
|
58
|
+
*/
|
|
59
|
+
declare class ShExValidationError extends ShExValidationError_base {}
|
|
60
|
+
export { ShExStructureError as a, ShExRError as i, ShExImportError as n, ShExValidationError as o, ShExJError as r, ShExError_d_exports as t };
|
|
61
|
+
//# sourceMappingURL=ShExError-BeYFD9rv.d.mts.map
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
// src/shex/ShExError.ts
|
|
4
|
+
/**
|
|
5
|
+
* Errors raised by the ShEx package.
|
|
6
|
+
*
|
|
7
|
+
* Syntax errors in ShExC and ShapeMap documents are reported with the core
|
|
8
|
+
* `Serialization.RdfParseError` (with `format`, `line` and `column`); the
|
|
9
|
+
* errors defined here cover the other failure modes.
|
|
10
|
+
*
|
|
11
|
+
* @since 0.1.0
|
|
12
|
+
*/
|
|
13
|
+
var ShExError_exports = /* @__PURE__ */ __exportAll({
|
|
14
|
+
ShExImportError: () => ShExImportError,
|
|
15
|
+
ShExJError: () => ShExJError,
|
|
16
|
+
ShExRError: () => ShExRError,
|
|
17
|
+
ShExStructureError: () => ShExStructureError,
|
|
18
|
+
ShExValidationError: () => ShExValidationError
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* A ShExJ document that is not valid JSON or does not match the ShExJ
|
|
22
|
+
* abstract syntax.
|
|
23
|
+
*
|
|
24
|
+
* @since 0.1.0
|
|
25
|
+
* @category errors
|
|
26
|
+
*/
|
|
27
|
+
var ShExJError = class extends Schema.TaggedError()("ShExJError", { message: Schema.String }) {};
|
|
28
|
+
/**
|
|
29
|
+
* A schema that is syntactically valid but violates one of the ShEx
|
|
30
|
+
* structural requirements (missing references, negation or extension cycles,
|
|
31
|
+
* invalid inclusions, …).
|
|
32
|
+
*
|
|
33
|
+
* @since 0.1.0
|
|
34
|
+
* @category errors
|
|
35
|
+
*/
|
|
36
|
+
var ShExStructureError = class extends Schema.TaggedError()("ShExStructureError", { message: Schema.String }) {};
|
|
37
|
+
/**
|
|
38
|
+
* A failure to load an imported schema.
|
|
39
|
+
*
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
* @category errors
|
|
42
|
+
*/
|
|
43
|
+
var ShExImportError = class extends Schema.TaggedError()("ShExImportError", {
|
|
44
|
+
iri: Schema.String,
|
|
45
|
+
message: Schema.String
|
|
46
|
+
}) {};
|
|
47
|
+
/**
|
|
48
|
+
* An RDF graph that is not a valid ShExR representation of a schema.
|
|
49
|
+
*
|
|
50
|
+
* @since 0.1.0
|
|
51
|
+
* @category errors
|
|
52
|
+
*/
|
|
53
|
+
var ShExRError = class extends Schema.TaggedError()("ShExRError", { message: Schema.String }) {};
|
|
54
|
+
/**
|
|
55
|
+
* A validation request that cannot be evaluated, e.g. a shape map that names
|
|
56
|
+
* a shape label the schema does not declare.
|
|
57
|
+
*
|
|
58
|
+
* @since 0.1.0
|
|
59
|
+
* @category errors
|
|
60
|
+
*/
|
|
61
|
+
var ShExValidationError = class extends Schema.TaggedError()("ShExValidationError", { message: Schema.String }) {};
|
|
62
|
+
export { ShExStructureError as a, ShExRError as i, ShExImportError as n, ShExValidationError as o, ShExJError as r, ShExError_exports as t };
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=ShExError-CVtq2NnM.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShExError-CVtq2NnM.mjs","names":[],"sources":["../src/shex/ShExError.ts"],"sourcesContent":["/**\n * Errors raised by the ShEx package.\n *\n * Syntax errors in ShExC and ShapeMap documents are reported with the core\n * `Serialization.RdfParseError` (with `format`, `line` and `column`); the\n * errors defined here cover the other failure modes.\n *\n * @since 0.1.0\n */\nimport * as Schema from 'effect/Schema';\n\n/**\n * A ShExJ document that is not valid JSON or does not match the ShExJ\n * abstract syntax.\n *\n * @since 0.1.0\n * @category errors\n */\nexport class ShExJError extends Schema.TaggedError<ShExJError>()('ShExJError', {\n message: Schema.String,\n}) {}\n\n/**\n * A schema that is syntactically valid but violates one of the ShEx\n * structural requirements (missing references, negation or extension cycles,\n * invalid inclusions, …).\n *\n * @since 0.1.0\n * @category errors\n */\nexport class ShExStructureError extends Schema.TaggedError<ShExStructureError>()(\n 'ShExStructureError',\n {\n message: Schema.String,\n },\n) {}\n\n/**\n * A failure to load an imported schema.\n *\n * @since 0.1.0\n * @category errors\n */\nexport class ShExImportError extends Schema.TaggedError<ShExImportError>()('ShExImportError', {\n iri: Schema.String,\n message: Schema.String,\n}) {}\n\n/**\n * An RDF graph that is not a valid ShExR representation of a schema.\n *\n * @since 0.1.0\n * @category errors\n */\nexport class ShExRError extends Schema.TaggedError<ShExRError>()('ShExRError', {\n message: Schema.String,\n}) {}\n\n/**\n * A validation request that cannot be evaluated, e.g. a shape map that names\n * a shape label the schema does not declare.\n *\n * @since 0.1.0\n * @category errors\n */\nexport class ShExValidationError extends Schema.TaggedError<ShExValidationError>()(\n 'ShExValidationError',\n {\n message: Schema.String,\n },\n) {}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAa,aAAb,cAAgC,OAAO,YAAwB,CAAC,CAAC,cAAc,EAC7E,SAAS,OAAO,OAClB,CAAC,CAAC,CAAC,CAAC;;;;;;;;;AAUJ,IAAa,qBAAb,cAAwC,OAAO,YAAgC,CAAC,CAC9E,sBACA,EACE,SAAS,OAAO,OAClB,CACF,CAAC,CAAC,CAAC;;;;;;;AAQH,IAAa,kBAAb,cAAqC,OAAO,YAA6B,CAAC,CAAC,mBAAmB;CAC5F,KAAK,OAAO;CACZ,SAAS,OAAO;AAClB,CAAC,CAAC,CAAC,CAAC;;;;;;;AAQJ,IAAa,aAAb,cAAgC,OAAO,YAAwB,CAAC,CAAC,cAAc,EAC7E,SAAS,OAAO,OAClB,CAAC,CAAC,CAAC,CAAC;;;;;;;;AASJ,IAAa,sBAAb,cAAyC,OAAO,YAAiC,CAAC,CAChF,uBACA,EACE,SAAS,OAAO,OAClB,CACF,CAAC,CAAC,CAAC"}
|