@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":"Datatype-DQvkNkiH.mjs","names":["parse","parse","isString","DateFormat.compile","NumberFormat.parsePattern","Xsd.isValidLexical","NumberFormat.parse","DateFormat.parse","Xsd.toValue","Term.literal","Term.namedNode"],"sources":["../src/csvw/internal/dateFormat.ts","../src/csvw/internal/numberFormat.ts","../src/csvw/internal/vocab.ts","../src/csvw/Datatype.ts"],"sourcesContent":["/**\n * Date and time formats (Tabular Data Model §Formats for dates and times):\n * the UAX 35 date field symbols the specification requires (`yyyy`, `MM`,\n * `M`, `dd`, `d`, `HH`, `mm`, `ss`, `S…`, `X…`, `x…`), compiled to a matcher\n * that yields the XML Schema lexical form.\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as Option from 'effect/Option';\nimport * as Record from 'effect/Record';\nimport * as Result from 'effect/Result';\n\ntype Field = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second' | 'fraction' | 'tz';\n\ninterface Token {\n readonly field: Option.Option<Field>;\n readonly source: string;\n}\n\n/**\n * A compiled date/time pattern.\n *\n * @internal\n */\nexport interface DatePattern {\n readonly regex: RegExp;\n readonly fields: ReadonlyArray<Field>;\n readonly hasDate: boolean;\n readonly hasTime: boolean;\n}\n\n/** Timezone offsets by marker length (`x`, `xx`, `xxx`); `X…` also allows `Z`. */\nconst TZ_OFFSETS = ['[+-]\\\\d{2}(?:\\\\d{2})?', '[+-]\\\\d{4}', '[+-]\\\\d{2}:\\\\d{2}'];\n\nconst field = (f: Field, source: string): Option.Option<Token> =>\n Option.some({ field: Option.some(f), source: `(${source})` });\n\nconst tzOffset = (n: number, allowZ: boolean): Option.Option<Token> =>\n Option.flatMap(Arr.get(TZ_OFFSETS, n - 1), (offset) =>\n field('tz', allowZ ? `Z|${offset}` : offset),\n );\n\nconst tokenize = (pattern: string): ReadonlyArray<string> => pattern.match(/(.)\\1*/gu) ?? [];\n\n/** A field symbol of exactly `n` letters (`yyyy`, `HH`, …). */\nconst exactly =\n (n: number, f: Field, source: string) =>\n (length: number): Option.Option<Token> =>\n length === n ? field(f, source) : Option.none();\n\n/** A one- or two-letter numeric field (`M` / `MM`, `d` / `dd`). */\nconst oneOrTwo =\n (f: Field) =>\n (length: number): Option.Option<Token> =>\n length > 2 ? Option.none() : field(f, length === 2 ? '\\\\d{2}' : '\\\\d{1,2}');\n\n/** The field symbols this implementation recognises, by letter. */\nconst symbols: Readonly<Record<string, (length: number) => Option.Option<Token>>> = {\n y: exactly(4, 'year', '\\\\d{4}'),\n M: oneOrTwo('month'),\n d: oneOrTwo('day'),\n H: exactly(2, 'hour', '\\\\d{2}'),\n m: exactly(2, 'minute', '\\\\d{2}'),\n s: exactly(2, 'second', '\\\\d{2}'),\n S: (length) => field('fraction', `\\\\d{1,${length}}`),\n X: (length) => tzOffset(length, true),\n x: (length) => tzOffset(length, false),\n};\n\nconst literal = (run: string): Option.Option<Token> =>\n /^[-/.: T]+$/.test(run)\n ? Option.some({ field: Option.none(), source: run.replace(/[.]/g, '\\\\.') })\n : Option.none();\n\nconst compileToken = (run: string): Option.Option<Token> =>\n Option.match(Record.get(symbols, run.charAt(0)), {\n onNone: () => literal(run),\n onSome: (symbol) => symbol(run.length),\n });\n\n/**\n * Compiles a date/time pattern; `None` when it uses a symbol this\n * implementation does not recognise.\n *\n * @internal\n */\nexport const compile = (pattern: string): Option.Option<DatePattern> => {\n const tokens = Arr.map(tokenize(pattern), compileToken);\n if (!Arr.every(tokens, Option.isSome) || !Arr.isReadonlyArrayNonEmpty(tokens))\n return Option.none();\n const compiled = Arr.getSomes(tokens);\n const fields = Arr.getSomes(Arr.map(compiled, (t) => t.field));\n const has = (f: Field) => Arr.contains(fields, f);\n const hasDate = has('year') || has('month') || has('day');\n const hasTime = has('hour') || has('minute') || has('second');\n if (Arr.length(Arr.dedupe(fields)) !== Arr.length(fields)) return Option.none();\n if (has('fraction') && !has('second')) return Option.none();\n return Option.some({\n regex: new RegExp(\n `^${Arr.join(\n Arr.map(compiled, (t) => t.source),\n '',\n )}$`,\n 'u',\n ),\n fields,\n hasDate,\n hasTime,\n });\n};\n\nconst pad = (s: string, n: number): string => s.padStart(n, '0');\n\nconst timezone = (tz: string): string => {\n if (tz === 'Z') return 'Z';\n const sign = tz.charAt(0);\n const digits = tz.slice(1).replace(':', '');\n const hh = digits.slice(0, 2);\n const mm = digits.length > 2 ? digits.slice(2, 4) : '00';\n return `${sign}${hh}:${mm}`;\n};\n\nconst daysInMonth = (year: number, month: number): number =>\n month === 2\n ? (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0\n ? 29\n : 28\n : [4, 6, 9, 11].includes(month)\n ? 30\n : 31;\n\ninterface Fields {\n readonly date: string;\n readonly time: string;\n readonly tz: string;\n}\n\nconst fieldsOf = (m: RegExpExecArray, pattern: DatePattern): Fields => {\n const values = Arr.map(pattern.fields, (f, i) => [f, m[i + 1] ?? ''] as const);\n const get = (f: Field, otherwise: string): string =>\n Option.getOrElse(\n Option.map(\n Arr.findFirst(values, ([g]) => g === f),\n ([, v]) => v,\n ),\n () => otherwise,\n );\n const fraction = get('fraction', '');\n const tz = get('tz', '');\n return {\n date: `${get('year', '')}-${pad(get('month', ''), 2)}-${pad(get('day', ''), 2)}`,\n time: `${get('hour', '00')}:${get('minute', '00')}:${get('second', '00')}${fraction === '' ? '' : `.${fraction}`}`,\n tz: tz === '' ? '' : timezone(tz),\n };\n};\n\nconst validDate = (date: string): boolean => {\n const [y = 0, mo = 0, d = 0] = Arr.map(date.split('-'), Number);\n return mo >= 1 && mo <= 12 && d >= 1 && d <= daysInMonth(y, mo);\n};\n\nconst validTime = (time: string): boolean => {\n const [h = 0, mi = 0, s = 0] = Arr.map(time.split(':'), Number);\n return h <= 23 && mi <= 59 && s < 60;\n};\n\nconst lexicalFor = (\n fields: Fields,\n pattern: DatePattern,\n base: string,\n): Result.Result<string, string> => {\n if (base === 'date')\n return pattern.hasDate ? Result.succeed(fields.date + fields.tz) : Result.fail('has no date');\n if (base === 'time')\n return pattern.hasTime ? Result.succeed(fields.time + fields.tz) : Result.fail('has no time');\n if (!pattern.hasDate) return Result.fail('has no date');\n if (base === 'dateTimeStamp' && fields.tz === '') return Result.fail('has no timezone');\n return Result.succeed(`${fields.date}T${fields.time}${fields.tz}`);\n};\n\n/**\n * Matches a cell string against a compiled pattern and returns the XML Schema\n * lexical form for the base datatype (`date`, `time`, `dateTime` or\n * `dateTimeStamp`).\n *\n * @internal\n */\nexport const parse = (\n text: string,\n pattern: DatePattern,\n base: string,\n): Result.Result<string, string> =>\n Option.match(Option.fromNullishOr(pattern.regex.exec(text)), {\n onNone: () => Result.fail('does not match the format'),\n onSome: (m) => {\n const fields = fieldsOf(m, pattern);\n if (pattern.hasDate && !validDate(fields.date)) return Result.fail('is not a valid date');\n if (pattern.hasTime && !validTime(fields.time)) return Result.fail('is not a valid time');\n return lexicalFor(fields, pattern, base);\n },\n });\n","/**\n * Numeric formats (Tabular Data Model §Formats for numeric types): the UAX 35\n * number-pattern subset (`0`, `#`, the decimal and group characters, `E`,\n * `+`, `-`, `%` and `‰`), the pattern-less grouped form, and the decimal\n * arithmetic that applies percent and per-mille signs.\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as Option from 'effect/Option';\nimport * as Result from 'effect/Result';\n\n/**\n * A parsed number format pattern.\n *\n * @internal\n */\nexport interface Pattern {\n readonly prefix: string;\n readonly suffix: string;\n /** Minimum integer digits (the `0`s of the integer part). */\n readonly minInt: number;\n /** Primary and secondary grouping sizes, if the integer part is grouped. */\n readonly grouping: Option.Option<readonly [number, number]>;\n readonly minFrac: number;\n readonly maxFrac: number;\n /** The fraction's grouping size, if it is grouped. */\n readonly fracGrouping: Option.Option<number>;\n readonly hasDecimal: boolean;\n /** Minimum exponent digits, if the pattern has an exponent. */\n readonly exponent: Option.Option<number>;\n}\n\n/**\n * A numeric format: an optional pattern and the decimal and group characters.\n *\n * @internal\n */\nexport interface NumberFormat {\n readonly pattern: Option.Option<Pattern>;\n readonly decimalChar: string;\n readonly groupChar: Option.Option<string>;\n}\n\nconst escape = (s: string): string => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst count = (s: string, c: string): number =>\n Arr.length(Arr.filter(Array.from(s), (x) => x === c));\n\n/** Primary and secondary grouping sizes of a grouped integer pattern (`#,##,#00` → 3, 2). */\nconst integerGrouping = (\n segments: ReadonlyArray<string>,\n): Option.Option<Option.Option<readonly [number, number]>> =>\n Arr.match(Arr.reverse(segments), {\n onEmpty: () => Option.some(Option.none()),\n onNonEmpty: ([primary, ...rest]) =>\n Arr.match(rest, {\n onEmpty: () => Option.some(Option.none()),\n onNonEmpty: ([secondary, ...others]) => {\n const size = Arr.isReadonlyArrayNonEmpty(others) ? secondary.length : primary.length;\n return primary === '' || size === 0\n ? Option.none()\n : Option.some(Option.some([primary.length, size] as const));\n },\n }),\n });\n\n/** The grouping size of a grouped fraction pattern (`0.0#,#` → 2). */\nconst fractionGrouping = (segments: ReadonlyArray<string>): Option.Option<Option.Option<number>> =>\n Arr.match(segments, {\n onEmpty: () => Option.some(Option.none()),\n onNonEmpty: ([first, ...rest]) =>\n !Arr.isReadonlyArrayNonEmpty(rest)\n ? Option.some(Option.none())\n : first === ''\n ? Option.none()\n : Option.some(Option.some(first.length)),\n });\n\n/** Whether `#`s precede the `0`s of the integer part and follow those of the fraction. */\nconst wellOrdered = (int: string, frac: string): boolean =>\n !/0[^0]*#/.test(int) && !/#[^#]*0/.test(frac);\n\n/**\n * Parses a number format pattern; `None` when it uses anything this\n * implementation does not recognise.\n *\n * @internal\n */\nexport const parsePattern = (\n pattern: string,\n decimalChar: string,\n groupChar: string,\n): Option.Option<Pattern> => {\n const g = escape(groupChar);\n const re = new RegExp(\n `^([+\\\\-%‰]*)([#0${g}]*[#0])(?:${escape(decimalChar)}([#0${g}]*))?(?:E(\\\\+?)([#0]+))?([%‰]*)$`,\n 'u',\n );\n return Option.flatMap(Option.fromNullishOr(re.exec(pattern)), (m) => {\n const int = m[2] ?? '';\n const frac = Option.fromNullishOr(m[3]);\n const fracText = Option.getOrElse(frac, () => '');\n const fracDigits = digitsOf(fracText, groupChar);\n const affixes = (m[1] ?? '') + (m[6] ?? '');\n if (!wellOrdered(digitsOf(int, groupChar), fracDigits)) return Option.none();\n if (count(affixes, '%') + count(affixes, '‰') > 1) return Option.none();\n return Option.map(\n Option.all([\n integerGrouping(int.split(groupChar)),\n fractionGrouping(Option.isSome(frac) ? fracText.split(groupChar) : []),\n ]),\n ([grouping, fracGrouping]): Pattern => ({\n prefix: m[1] ?? '',\n suffix: m[6] ?? '',\n minInt: count(int, '0'),\n grouping,\n minFrac: count(fracDigits, '0'),\n maxFrac: fracDigits.length,\n fracGrouping,\n hasDecimal: Option.isSome(frac),\n exponent: Option.map(Option.fromNullishOr(m[5]), (e) => count(e, '0')),\n }),\n );\n });\n};\n\n/**\n * The parts of a number read from a cell.\n *\n * @internal\n */\nexport interface Parsed {\n /** The lexical form, with group characters removed and a `.` decimal point. */\n readonly lexical: string;\n readonly hasDecimal: boolean;\n readonly hasExponent: boolean;\n readonly special: boolean;\n}\n\nconst checkIntegerGrouping = (\n int: string,\n groupChar: string,\n grouping: Option.Option<readonly [number, number]>,\n): boolean => {\n const groups = int.split(groupChar);\n const ungrouped = !int.includes(groupChar);\n return Option.match(grouping, {\n onNone: () => ungrouped,\n onSome: ([primary, secondary]) => {\n if (ungrouped) return int.length <= primary;\n const reversed = Arr.reverse(groups);\n const last = Arr.length(reversed) - 1;\n return Arr.every(reversed, (group, i) => {\n const size = i === 0 ? primary : secondary;\n return i === last ? group !== '' && group.length <= size : group.length === size;\n });\n },\n });\n};\n\nconst checkFractionGrouping = (\n frac: string,\n groupChar: string,\n grouping: Option.Option<number>,\n): boolean => {\n const groups = frac.split(groupChar);\n return Option.match(grouping, {\n onNone: () => !frac.includes(groupChar),\n onSome: (size) =>\n Arr.every(groups, (group, i) =>\n i === Arr.length(groups) - 1 ? group !== '' && group.length <= size : group.length === size,\n ),\n });\n};\n\nconst digitsOf = (s: string, groupChar: string): string => s.split(groupChar).join('');\n\n/**\n * Shifts the decimal point of a decimal lexical form `places` to the left\n * (dividing by 10^places), returning a canonical decimal.\n *\n * @internal\n */\nexport const shiftDecimal = (lexical: string, places: number): string => {\n const negative = lexical.startsWith('-');\n const unsigned = lexical.replace(/^[+-]/, '');\n const [int = '', frac = ''] = unsigned.split('.');\n const padded = int.padStart(places + 1, '0');\n const newInt = padded.slice(0, padded.length - places).replace(/^0+(?=\\d)/, '');\n const newFrac = (padded.slice(padded.length - places) + frac).replace(/0+$/, '');\n const body = newFrac === '' ? newInt : `${newInt}.${newFrac}`;\n return negative && /[1-9]/.test(body) ? `-${body}` : body;\n};\n\nconst SPECIAL = /^(?:NaN|INF|-INF)$/;\n\ninterface Parts {\n readonly sign: string;\n readonly int: string;\n readonly frac: Option.Option<string>;\n readonly exp: Option.Option<string>;\n}\n\n/** The checks a number read with a pattern must pass, each failing with a reason. */\nconst patternChecks: ReadonlyArray<\n (parts: Parts, pattern: Pattern, g: string) => Option.Option<string>\n> = [\n ({ int, frac }) =>\n int === '' && Option.isNone(frac) ? Option.some('does not match the pattern') : Option.none(),\n ({ int }, _, g) =>\n int.endsWith(g) || int.includes(g + g)\n ? Option.some('does not match the pattern')\n : Option.none(),\n ({ int }, pattern, g) =>\n checkIntegerGrouping(int, g, pattern.grouping)\n ? Option.none()\n : Option.some('does not match the grouping of the pattern'),\n ({ int }, pattern, g) =>\n digitsOf(int, g).length < pattern.minInt\n ? Option.some('has fewer integer digits than the pattern')\n : Option.none(),\n ({ frac }, pattern) =>\n Option.isSome(frac) && !pattern.hasDecimal\n ? Option.some('has a fraction the pattern does not allow')\n : Option.none(),\n ({ frac }, pattern, g) =>\n Option.exists(\n frac,\n (f) =>\n digitsOf(f, g).length > pattern.maxFrac ||\n !checkFractionGrouping(f, g, pattern.fracGrouping),\n )\n ? Option.some('does not match the fraction of the pattern')\n : Option.none(),\n ({ frac }, pattern, g) =>\n digitsOf(\n Option.getOrElse(frac, () => ''),\n g,\n ).length < pattern.minFrac\n ? Option.some('has fewer fraction digits than the pattern')\n : Option.none(),\n ({ exp }, pattern) =>\n Option.match(pattern.exponent, {\n onNone: () =>\n Option.isSome(exp)\n ? Option.some('has an exponent the pattern does not allow')\n : Option.none(),\n onSome: (min) =>\n Option.exists(exp, (e) => e.replace(/^[+-]/, '').length >= min)\n ? Option.none()\n : Option.some('does not have the exponent digits of the pattern'),\n }),\n];\n\nconst partsOf = (body: string, format: NumberFormat, g: string): Option.Option<Parts> => {\n const re = new RegExp(\n `^([+-]?)(\\\\d[\\\\d${escape(g)}]*)?(?:${escape(format.decimalChar)}([\\\\d${escape(g)}]*))?(?:E([+-]?\\\\d+))?$`,\n 'u',\n );\n return Option.map(Option.fromNullishOr(re.exec(body)), (m) => ({\n sign: m[1] ?? '',\n int: m[2] ?? '',\n frac: Option.fromNullishOr(m[3]),\n exp: Option.fromNullishOr(m[4]),\n }));\n};\n\nconst parseWithPattern = (\n text: string,\n format: NumberFormat,\n pattern: Pattern,\n): Result.Result<Parsed, string> => {\n const g = Option.getOrElse(format.groupChar, () => ',');\n const prefix = pattern.prefix.replace(/[+-]/g, '');\n const suffix = pattern.suffix;\n const parts =\n text.startsWith(prefix) && text.endsWith(suffix)\n ? partsOf(text.slice(prefix.length, text.length - suffix.length), format, g)\n : Option.none();\n return Option.match(parts, {\n onNone: () => Result.fail('does not match the pattern'),\n onSome: (p) =>\n Option.match(\n Arr.findFirst(patternChecks, (check) => Option.isSome(check(p, pattern, g))).pipe(\n Option.flatMap((check) => check(p, pattern, g)),\n ),\n {\n onSome: Result.fail,\n onNone: () =>\n Result.succeed(\n finish(\n p.sign,\n digitsOf(p.int, g),\n Option.map(p.frac, (f) => digitsOf(f, g)),\n p.exp,\n text,\n ),\n ),\n },\n ),\n });\n};\n\nconst finish = (\n sign: string,\n int: string,\n frac: Option.Option<string>,\n exp: Option.Option<string>,\n text: string,\n): Parsed => {\n const mantissa = `${sign}${int === '' ? '0' : int}${Option.match(frac, { onNone: () => '', onSome: (f) => `.${f}` })}`;\n const plain = Option.match(exp, { onNone: () => mantissa, onSome: (e) => `${mantissa}e${e}` });\n const percent = text.includes('%');\n const permille = text.includes('‰');\n const lexical =\n percent || permille\n ? Option.isNone(exp)\n ? shiftDecimal(mantissa, percent ? 2 : 3)\n : String(Number(plain) / (percent ? 100 : 1000))\n : plain;\n return {\n lexical,\n hasDecimal: Option.isSome(frac),\n hasExponent: Option.isSome(exp),\n special: false,\n };\n};\n\nconst parseWithoutPattern = (text: string, format: NumberFormat): Result.Result<Parsed, string> => {\n if (SPECIAL.test(text))\n return Result.succeed({ lexical: text, hasDecimal: false, hasExponent: false, special: true });\n const g = Option.getOrUndefined(format.groupChar);\n const d = format.decimalChar;\n const groupClass = g === undefined ? '' : escape(g);\n const re = new RegExp(\n `^([+-]?)(\\\\d(?:\\\\d|${g === undefined ? '(?!)' : groupClass})*)?(?:${escape(d)}(\\\\d+))?(?:[Ee]([+-]?\\\\d+))?([%‰]?)$`,\n 'u',\n );\n const m = re.exec(text);\n if (m === null || (m[2] === undefined && m[3] === undefined))\n return Result.fail('is not a number');\n const int = m[2] ?? '';\n if (g !== undefined && (int.includes(g + g) || int.endsWith(g)))\n return Result.fail('contains consecutive group characters');\n return Result.succeed(\n finish(\n m[1] ?? '',\n g === undefined ? int : digitsOf(int, g),\n Option.fromNullishOr(m[3]),\n Option.fromNullishOr(m[4]),\n text,\n ),\n );\n};\n\n/**\n * Parses a cell string with a numeric format.\n *\n * @internal\n */\nexport const parse = (text: string, format: NumberFormat): Result.Result<Parsed, string> =>\n Option.match(format.pattern, {\n onNone: () => parseWithoutPattern(text, format),\n onSome: (pattern) =>\n SPECIAL.test(text)\n ? Result.succeed({ lexical: text, hasDecimal: false, hasExponent: false, special: true })\n : parseWithPattern(text, format, pattern),\n });\n","/**\n * The fixed CSVW JSON-LD context (`http://www.w3.org/ns/csvw`): its prefixes\n * (the RDFa 1.1 initial context plus `csvw`), its terms, prefixed-name\n * expansion and URL compaction (Metadata Vocabulary §URL Compaction).\n *\n * @internal\n */\nimport * as Arr from 'effect/Array';\nimport * as Option from 'effect/Option';\nimport * as Order from 'effect/Order';\nimport * as Record from 'effect/Record';\n\n/** @internal */\nexport const CSVW = 'http://www.w3.org/ns/csvw#';\n/** @internal */\nexport const XSD = 'http://www.w3.org/2001/XMLSchema#';\n/** @internal */\nexport const RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';\n/** @internal */\nexport const RDFS = 'http://www.w3.org/2000/01/rdf-schema#';\n\n/**\n * The prefixes of the CSVW context, which metadata MUST NOT override.\n *\n * @internal\n */\nexport const prefixes: Readonly<Record<string, string>> = {\n as: 'https://www.w3.org/ns/activitystreams#',\n cc: 'http://creativecommons.org/ns#',\n csvw: CSVW,\n ctag: 'http://commontag.org/ns#',\n dc: 'http://purl.org/dc/terms/',\n dc11: 'http://purl.org/dc/elements/1.1/',\n dcat: 'http://www.w3.org/ns/dcat#',\n dcterms: 'http://purl.org/dc/terms/',\n dctypes: 'http://purl.org/dc/dcmitype/',\n dqv: 'http://www.w3.org/ns/dqv#',\n duv: 'https://www.w3.org/TR/vocab-duv#',\n foaf: 'http://xmlns.com/foaf/0.1/',\n gr: 'http://purl.org/goodrelations/v1#',\n grddl: 'http://www.w3.org/2003/g/data-view#',\n ical: 'http://www.w3.org/2002/12/cal/icaltzd#',\n ldp: 'http://www.w3.org/ns/ldp#',\n ma: 'http://www.w3.org/ns/ma-ont#',\n oa: 'http://www.w3.org/ns/oa#',\n og: 'http://ogp.me/ns#',\n org: 'http://www.w3.org/ns/org#',\n owl: 'http://www.w3.org/2002/07/owl#',\n prov: 'http://www.w3.org/ns/prov#',\n qb: 'http://purl.org/linked-data/cube#',\n rdf: RDF,\n rdfa: 'http://www.w3.org/ns/rdfa#',\n rdfs: RDFS,\n rev: 'http://purl.org/stuff/rev#',\n rif: 'http://www.w3.org/2007/rif#',\n rr: 'http://www.w3.org/ns/r2rml#',\n schema: 'http://schema.org/',\n sd: 'http://www.w3.org/ns/sparql-service-description#',\n sioc: 'http://rdfs.org/sioc/ns#',\n skos: 'http://www.w3.org/2004/02/skos/core#',\n skosxl: 'http://www.w3.org/2008/05/skos-xl#',\n v: 'http://rdf.data-vocabulary.org/#',\n vcard: 'http://www.w3.org/2006/vcard/ns#',\n void: 'http://rdfs.org/ns/void#',\n wdr: 'http://www.w3.org/2007/05/powder#',\n wrds: 'http://www.w3.org/2007/05/powder-s#',\n xhv: 'http://www.w3.org/1999/xhtml/vocab#',\n xsd: XSD,\n};\n\nconst xsdTerms = [\n 'anyURI',\n 'base64Binary',\n 'boolean',\n 'byte',\n 'date',\n 'dateTime',\n 'dayTimeDuration',\n 'dateTimeStamp',\n 'decimal',\n 'double',\n 'duration',\n 'float',\n 'gDay',\n 'gMonth',\n 'gMonthDay',\n 'gYear',\n 'gYearMonth',\n 'hexBinary',\n 'int',\n 'integer',\n 'language',\n 'long',\n 'Name',\n 'NCName',\n 'NMTOKEN',\n 'negativeInteger',\n 'nonNegativeInteger',\n 'nonPositiveInteger',\n 'normalizedString',\n 'positiveInteger',\n 'QName',\n 'short',\n 'string',\n 'time',\n 'token',\n 'unsignedByte',\n 'unsignedInt',\n 'unsignedLong',\n 'unsignedShort',\n 'yearMonthDuration',\n] as const;\n\nconst csvwClasses = [\n 'Cell',\n 'Column',\n 'Datatype',\n 'Dialect',\n 'Direction',\n 'ForeignKey',\n 'NumericFormat',\n 'Row',\n 'Schema',\n 'Table',\n 'TableGroup',\n 'TableReference',\n 'Transformation',\n 'JSON',\n 'uriTemplate',\n] as const;\n\nconst csvwProperties: Readonly<Record<string, string>> = {\n aboutUrl: 'aboutUrl',\n base: 'base',\n columnReference: 'columnReference',\n columns: 'column',\n commentPrefix: 'commentPrefix',\n datatype: 'datatype',\n decimalChar: 'decimalChar',\n default: 'default',\n describes: 'describes',\n delimiter: 'delimiter',\n dialect: 'dialect',\n doubleQuote: 'doubleQuote',\n encoding: 'encoding',\n foreignKeys: 'foreignKey',\n format: 'format',\n groupChar: 'groupChar',\n header: 'header',\n headerRowCount: 'headerRowCount',\n lang: 'lang',\n length: 'length',\n lineTerminators: 'lineTerminators',\n maxExclusive: 'maxExclusive',\n maxInclusive: 'maxInclusive',\n maxLength: 'maxLength',\n minExclusive: 'minExclusive',\n minInclusive: 'minInclusive',\n minLength: 'minLength',\n name: 'name',\n notes: 'note',\n null: 'null',\n ordered: 'ordered',\n pattern: 'pattern',\n primaryKey: 'primaryKey',\n propertyUrl: 'propertyUrl',\n quoteChar: 'quoteChar',\n reference: 'reference',\n referencedRows: 'referencedRow',\n required: 'required',\n resource: 'resource',\n row: 'row',\n rowTitles: 'rowTitle',\n rownum: 'rownum',\n scriptFormat: 'scriptFormat',\n schemaReference: 'schemaReference',\n separator: 'separator',\n skipBlankRows: 'skipBlankRows',\n skipColumns: 'skipColumns',\n skipInitialSpace: 'skipInitialSpace',\n skipRows: 'skipRows',\n source: 'source',\n suppressOutput: 'suppressOutput',\n tables: 'table',\n tableDirection: 'tableDirection',\n tableSchema: 'tableSchema',\n targetFormat: 'targetFormat',\n transformations: 'transformations',\n textDirection: 'textDirection',\n titles: 'title',\n trim: 'trim',\n url: 'url',\n valueUrl: 'valueUrl',\n virtual: 'virtual',\n};\n\n/**\n * Every term of the CSVW context mapped to its absolute IRI.\n *\n * @internal\n */\nexport const terms: Readonly<Record<string, string>> = {\n ...Record.map(prefixes, (iri) => iri),\n xml: `${RDF}XMLLiteral`,\n html: `${RDF}HTML`,\n json: `${CSVW}JSON`,\n any: `${XSD}anyAtomicType`,\n anyAtomicType: `${XSD}anyAtomicType`,\n binary: `${XSD}base64Binary`,\n datetime: `${XSD}dateTime`,\n number: `${XSD}double`,\n describedby: 'http://www.w3.org/2007/05/powder-s#describedby',\n license: 'http://www.w3.org/1999/xhtml/vocab#license',\n role: 'http://www.w3.org/1999/xhtml/vocab#role',\n maximum: `${CSVW}maxInclusive`,\n minimum: `${CSVW}minInclusive`,\n ...Record.fromEntries(Arr.map(xsdTerms, (t) => [t, `${XSD}${t}`] as const)),\n ...Record.fromEntries(Arr.map(csvwClasses, (t) => [t, `${CSVW}${t}`] as const)),\n ...Record.map(csvwProperties, (local) => `${CSVW}${local}`),\n};\n\nconst PREFIXED = /^([A-Za-z][\\w.-]*):(.*)$/;\n\n/**\n * The expansion of `value` if it is a prefixed name with a CSVW prefix.\n *\n * @internal\n */\nexport const expandPrefixed = (value: string): Option.Option<string> =>\n Option.flatMap(Option.fromNullishOr(PREFIXED.exec(value)), (m) =>\n Option.map(Record.get(prefixes, m[1] ?? ''), (ns) => ns + (m[2] ?? '')),\n );\n\n/**\n * Expands a term or prefixed name of the CSVW context; anything else is\n * returned unchanged.\n *\n * @internal\n */\nexport const expand = (value: string): string =>\n Option.getOrElse(Record.get(terms, value), () =>\n Option.getOrElse(expandPrefixed(value), () => value),\n );\n\n/**\n * Whether `value` is an absolute URL (has a scheme).\n *\n * @internal\n */\nexport const isAbsoluteUrl = (value: string): boolean => /^[A-Za-z][A-Za-z0-9+.-]*:/.test(value);\n\n// Longest namespace first; `dc` and `dcterms` share one, and `dc` wins.\nconst compactable: ReadonlyArray<readonly [string, string]> = Arr.sort(\n Arr.filter(Record.toEntries(prefixes), ([prefix]) => prefix !== 'dcterms'),\n Order.mapInput(Order.Number, ([, ns]: readonly [string, string]) => -ns.length),\n);\n\nconst termOf: Readonly<Record<string, string>> = Record.fromEntries(\n Arr.map(\n Arr.filter(Record.toEntries(terms), ([term]) => !Record.has(prefixes, term)),\n ([term, iri]) => [iri, term] as const,\n ),\n);\n\n/**\n * URL compaction (Metadata Vocabulary §URL Compaction): an absolute URL to a\n * term or prefixed name of the CSVW context; `rdf:type` becomes `@type`.\n *\n * @internal\n */\nexport const compact = (url: string): string =>\n url === `${RDF}type`\n ? '@type'\n : Option.getOrElse(Record.get(termOf, url), () =>\n Option.getOrElse(\n Option.map(\n Arr.findFirst(compactable, ([, ns]) => url.startsWith(ns) && url.length > ns.length),\n ([prefix, ns]) => `${prefix}:${url.slice(ns.length)}`,\n ),\n () => url,\n ),\n );\n","/**\n * CSVW datatypes (Metadata Vocabulary §Datatypes, Tabular Data Model §Parsing\n * Cells): the built-in datatypes, datatype descriptions, and parsing a cell's\n * string value into a typed value with its `format`, length and value\n * constraints.\n *\n * @since 0.1.0\n */\nimport { Term, Xsd } from '../index.ts';\nimport * as Arr from 'effect/Array';\nimport * as BigDecimal from 'effect/BigDecimal';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport * as Predicate from 'effect/Predicate';\nimport * as Record from 'effect/Record';\nimport * as Result from 'effect/Result';\nimport * as Schema from 'effect/Schema';\nimport * as DateFormat from './internal/dateFormat.ts';\nimport * as NumberFormat from './internal/numberFormat.ts';\nimport { CSVW, RDF, XSD } from './internal/vocab.ts';\n\n/**\n * The names of the built-in datatypes, including the CSVW aliases (`number`,\n * `binary`, `datetime`, `any`, `xml`, `html`, `json`).\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const builtIn: ReadonlyArray<string> = [\n 'anyAtomicType',\n 'anyURI',\n 'base64Binary',\n 'boolean',\n 'date',\n 'dateTime',\n 'dateTimeStamp',\n 'decimal',\n 'integer',\n 'long',\n 'int',\n 'short',\n 'byte',\n 'nonNegativeInteger',\n 'positiveInteger',\n 'unsignedLong',\n 'unsignedInt',\n 'unsignedShort',\n 'unsignedByte',\n 'nonPositiveInteger',\n 'negativeInteger',\n 'double',\n 'duration',\n 'dayTimeDuration',\n 'yearMonthDuration',\n 'float',\n 'gDay',\n 'gMonth',\n 'gMonthDay',\n 'gYear',\n 'gYearMonth',\n 'hexBinary',\n 'QName',\n 'string',\n 'normalizedString',\n 'token',\n 'language',\n 'Name',\n 'NMTOKEN',\n 'xml',\n 'html',\n 'json',\n 'time',\n 'number',\n 'binary',\n 'datetime',\n 'any',\n];\n\nconst aliases: Readonly<Record<string, string>> = {\n number: 'double',\n binary: 'base64Binary',\n datetime: 'dateTime',\n any: 'anyAtomicType',\n};\n\n/**\n * Whether `name` names a built-in datatype.\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const isBuiltIn = (name: string): boolean => Arr.contains(builtIn, name);\n\n/**\n * The XML Schema name of a built-in datatype (`number` is `double`, …).\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const canonicalName = (name: string): string =>\n Option.getOrElse(Record.get(aliases, name), () => name);\n\n/**\n * The IRI of a built-in datatype.\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const iri = (name: string): string =>\n Match.value(canonicalName(name)).pipe(\n Match.when('xml', () => `${RDF}XMLLiteral`),\n Match.when('html', () => `${RDF}HTML`),\n Match.when('json', () => `${CSVW}JSON`),\n Match.orElse((n) => `${XSD}${n}`),\n );\n\n/**\n * The built-in datatype an IRI identifies, if any.\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const fromIri = (url: string): Option.Option<string> =>\n Arr.findFirst(builtIn, (name) => !Record.has(aliases, name) && iri(name) === url);\n\nconst integerTypes = [\n 'integer',\n 'long',\n 'int',\n 'short',\n 'byte',\n 'nonNegativeInteger',\n 'positiveInteger',\n 'unsignedLong',\n 'unsignedInt',\n 'unsignedShort',\n 'unsignedByte',\n 'nonPositiveInteger',\n 'negativeInteger',\n];\nconst dateTypes = [\n 'date',\n 'dateTime',\n 'dateTimeStamp',\n 'time',\n 'gDay',\n 'gMonth',\n 'gMonthDay',\n 'gYear',\n 'gYearMonth',\n];\nconst durationTypes = ['duration', 'dayTimeDuration', 'yearMonthDuration'];\nconst stringTypes = [\n 'string',\n 'normalizedString',\n 'token',\n 'language',\n 'Name',\n 'NMTOKEN',\n 'xml',\n 'html',\n 'json',\n];\n\n/**\n * Whether a built-in datatype is an integer type.\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const isInteger = (name: string): boolean => Arr.contains(integerTypes, canonicalName(name));\n\n/**\n * Whether a built-in datatype is `decimal` or one of its subtypes.\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const isDecimal = (name: string): boolean =>\n canonicalName(name) === 'decimal' || isInteger(name);\n\n/**\n * Whether a built-in datatype is numeric.\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const isNumeric = (name: string): boolean =>\n isDecimal(name) || canonicalName(name) === 'double' || canonicalName(name) === 'float';\n\n/**\n * Whether a built-in datatype is a date or time type.\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const isDateTime = (name: string): boolean => Arr.contains(dateTypes, canonicalName(name));\n\n/**\n * Whether a built-in datatype is a duration type.\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const isDuration = (name: string): boolean =>\n Arr.contains(durationTypes, canonicalName(name));\n\n/**\n * Whether a built-in datatype is `string` or one of its subtypes.\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const isString = (name: string): boolean => Arr.contains(stringTypes, canonicalName(name));\n\n/**\n * Whether a built-in datatype is a binary type.\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const isBinary = (name: string): boolean =>\n canonicalName(name) === 'base64Binary' || canonicalName(name) === 'hexBinary';\n\n/**\n * A numeric format object (`decimalChar`, `groupChar`, `pattern`).\n *\n * @since 0.1.0\n * @category models\n */\nexport const NumericFormat = Schema.Struct({\n decimalChar: Schema.optional(Schema.String),\n groupChar: Schema.optional(Schema.String),\n pattern: Schema.optional(Schema.String),\n});\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport type NumericFormat = typeof NumericFormat.Type;\n\n/**\n * A bound of a value constraint, as written in the metadata.\n *\n * @since 0.1.0\n * @category models\n */\nexport const Bound = Schema.Union([Schema.String, Schema.Finite]);\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport type Bound = typeof Bound.Type;\n\n/**\n * A normalized datatype description: a built-in `base`, an optional `@id`,\n * a `format`, and length and value constraints.\n *\n * @since 0.1.0\n * @category models\n */\nexport const Datatype = Schema.Struct({\n base: Schema.String,\n id: Schema.optional(Schema.String),\n format: Schema.optional(Schema.Union([Schema.String, NumericFormat])),\n length: Schema.optional(Schema.Int),\n minLength: Schema.optional(Schema.Int),\n maxLength: Schema.optional(Schema.Int),\n minInclusive: Schema.optional(Bound),\n maxInclusive: Schema.optional(Bound),\n minExclusive: Schema.optional(Bound),\n maxExclusive: Schema.optional(Bound),\n common: Schema.Record(Schema.String, Schema.Json),\n});\n\n/**\n * @since 0.1.0\n * @category models\n */\nexport type Datatype = typeof Datatype.Type;\n\n/**\n * The `string` datatype.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const string: Datatype = { base: 'string', common: {} };\n\n/**\n * The IRI a value of the datatype has in RDF: its `@id`, or its base's IRI.\n *\n * @since 0.1.0\n * @category datatypes\n */\nexport const datatypeIri = (datatype: Datatype): string => datatype.id ?? iri(datatype.base);\n\n/**\n * A parsed cell value: its XML Schema lexical form, its datatype and, for\n * strings, its language.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Value {\n /** The lexical form (canonical where the format changed the string). */\n readonly lexical: string;\n /** The built-in base datatype. */\n readonly base: string;\n /** The datatype IRI used in RDF (`@id` or the base's IRI). */\n readonly datatype: string;\n /** The language of a string value. */\n readonly language: Option.Option<string>;\n}\n\n// -----------------------------------------------------------------------------\n// Format validation\n// -----------------------------------------------------------------------------\n\nconst quote = (s: string): string => `\"${s}\"`;\n\nconst isValidRegex = (source: string): boolean => Result.isSuccess(regexOf(source));\n\nconst regexOf = (source: string): Result.Result<RegExp, string> =>\n Result.try({ try: () => new RegExp(`^(?:${source})$`, 'u'), catch: (e) => String(e) });\n\n/**\n * Checks a datatype's `format` against its base, returning a warning when the\n * format is unusable (it is then ignored).\n *\n * @since 0.1.0\n * @category validation\n */\nexport const checkFormat = (\n base: string,\n format: string | NumericFormat,\n): Option.Option<string> => {\n if (isNumeric(base)) return checkNumberFormat(format);\n if (!Predicate.isString(format))\n return Option.some(`format for a ${base} datatype must be a string`);\n return Arr.contains(['date', 'dateTime', 'dateTimeStamp', 'time'], canonicalName(base))\n ? invalidUnless(\n Option.isSome(DateFormat.compile(format)),\n `invalid date/time format ${quote(format)}`,\n )\n : canonicalName(base) === 'boolean'\n ? invalidUnless(/^[^|]+\\|[^|]+$/.test(format), `invalid boolean format ${quote(format)}`)\n : invalidUnless(isValidRegex(format), `invalid regular expression format ${quote(format)}`);\n};\n\nconst invalidUnless = (valid: boolean, message: string): Option.Option<string> =>\n valid ? Option.none() : Option.some(message);\n\nconst checkNumberFormat = (format: string | NumericFormat): Option.Option<string> => {\n const { pattern, decimalChar, groupChar } = Predicate.isString(format)\n ? { pattern: format, decimalChar: '.', groupChar: ',' }\n : {\n pattern: format.pattern,\n decimalChar: format.decimalChar ?? '.',\n groupChar: format.groupChar ?? ',',\n };\n return Option.flatMap(Option.fromNullishOr(pattern), (p) =>\n invalidUnless(\n Option.isSome(NumberFormat.parsePattern(p, decimalChar, groupChar)),\n `invalid number format pattern ${quote(p)}`,\n ),\n );\n};\n\n// -----------------------------------------------------------------------------\n// Parsing\n// -----------------------------------------------------------------------------\n\nconst numberFormatOf = (format: Datatype['format']): NumberFormat.NumberFormat => {\n if (format === undefined)\n return { pattern: Option.none(), decimalChar: '.', groupChar: Option.none() };\n const decimalChar = Predicate.isString(format) ? '.' : (format.decimalChar ?? '.');\n const groupChar = Predicate.isString(format) ? undefined : format.groupChar;\n const pattern = Predicate.isString(format) ? format : format.pattern;\n return {\n decimalChar,\n groupChar: Option.fromNullishOr(groupChar),\n pattern: Option.flatMap(Option.fromNullishOr(pattern), (p) =>\n NumberFormat.parsePattern(p, decimalChar, groupChar ?? ','),\n ),\n };\n};\n\nconst xsdValid = (base: string, lexical: string): boolean =>\n Xsd.isValidLexical(`${XSD}${canonicalName(base)}`, lexical);\n\nconst parseNumber = (text: string, datatype: Datatype): Result.Result<string, string> => {\n const base = datatype.base;\n if (datatype.format === undefined) {\n return xsdValid(base, text)\n ? Result.succeed(text)\n : Result.fail(`${quote(text)} is not a valid ${base}`);\n }\n return Result.flatMap(\n Result.mapError(\n NumberFormat.parse(text, numberFormatOf(datatype.format)),\n (reason) => `${quote(text)} ${reason}`,\n ),\n (parsed) => {\n if (isInteger(base) && parsed.hasDecimal)\n return Result.fail(`${quote(text)} has a decimal part but ${base} is an integer`);\n if (isDecimal(base) && (parsed.hasExponent || parsed.special))\n return Result.fail(`${quote(text)} is not a valid ${base}`);\n return xsdValid(base, parsed.lexical)\n ? Result.succeed(parsed.lexical)\n : Result.fail(`${quote(text)} is not a valid ${base}`);\n },\n );\n};\n\nconst parseBoolean = (text: string, datatype: Datatype): Result.Result<string, string> => {\n const format = datatype.format;\n if (Predicate.isString(format)) {\n const [yes, no] = format.split('|');\n if (text === yes) return Result.succeed('true');\n if (text === no) return Result.succeed('false');\n return Result.fail(`${quote(text)} does not match the format ${format}`);\n }\n if (text === 'true' || text === '1') return Result.succeed('true');\n if (text === 'false' || text === '0') return Result.succeed('false');\n return Result.fail(`${quote(text)} is not a valid boolean`);\n};\n\nconst parseDateTime = (text: string, datatype: Datatype): Result.Result<string, string> => {\n const base = canonicalName(datatype.base);\n const pattern = Predicate.isString(datatype.format)\n ? DateFormat.compile(datatype.format)\n : Option.none();\n return Option.match(pattern, {\n onNone: () =>\n xsdValid(base, text)\n ? Result.succeed(text)\n : Result.fail(`${quote(text)} is not a valid ${base}`),\n onSome: (p) =>\n Result.flatMap(\n Result.mapError(DateFormat.parse(text, p, base), (r) => `${quote(text)} ${r}`),\n (lexical) =>\n xsdValid(base, lexical)\n ? Result.succeed(lexical)\n : Result.fail(`${quote(text)} is not a valid ${base}`),\n ),\n });\n};\n\nconst parseOther = (text: string, datatype: Datatype): Result.Result<string, string> => {\n const base = canonicalName(datatype.base);\n const format = datatype.format;\n const matches = Predicate.isString(format)\n ? Result.match(regexOf(format), { onFailure: () => true, onSuccess: (re) => re.test(text) })\n : true;\n if (!matches) return Result.fail(`${quote(text)} does not match its format`);\n if (base === 'json' || base === 'xml' || base === 'html' || base === 'anyAtomicType')\n return Result.succeed(text);\n return base === 'string' || xsdValid(base, text)\n ? Result.succeed(text)\n : Result.fail(`${quote(text)} is not a valid ${base}`);\n};\n\nconst lengthOf = (lexical: string, base: string): number => {\n if (canonicalName(base) === 'hexBinary') return lexical.length / 2;\n if (canonicalName(base) === 'base64Binary') {\n const clean = lexical.replace(/\\s/g, '');\n return (clean.length * 3) / 4 - (clean.match(/=+$/)?.[0].length ?? 0);\n }\n return Array.from(lexical).length;\n};\n\nconst orderKey = (lexical: string, datatype: string): Option.Option<number> => {\n const value = Xsd.toValue(Term.literal(lexical, Term.namedNode(datatype)));\n return Match.valueTags(value, {\n Integer: ({ value: n }) => Option.some(Number(n)),\n Decimal: ({ value: d }) => Option.some(BigDecimal.toNumberUnsafe(d)),\n Float: ({ value: f }) => Option.some(f),\n Double: ({ value: f }) => Option.some(f),\n DateTime: ({ epochMillis }) => Option.some(epochMillis),\n // An average month, so durations of months and of seconds compare.\n Duration: ({ months, seconds }) => Option.some(months * 2_629_746 + seconds),\n String: () => Option.none(),\n Boolean: () => Option.none(),\n Other: () => Option.none(),\n });\n};\n\n/**\n * The order key of a constraint bound for a base datatype, if it is a valid\n * value of that datatype.\n *\n * @since 0.1.0\n * @category validation\n */\nexport const boundKey = (bound: Bound, base: string): Option.Option<number> =>\n Predicate.isNumber(bound)\n ? Option.some(bound)\n : xsdValid(base, bound)\n ? orderKey(bound, iri(base))\n : Option.none();\n\nconst checkConstraints = (value: Value, datatype: Datatype): ReadonlyArray<string> => {\n const length = lengthOf(value.lexical, datatype.base);\n const lengthErrors = Arr.getSomes([\n datatype.length !== undefined && length !== datatype.length\n ? Option.some(`length ${length} is not ${datatype.length}`)\n : Option.none(),\n datatype.minLength !== undefined && length < datatype.minLength\n ? Option.some(`length ${length} is less than minLength ${datatype.minLength}`)\n : Option.none(),\n datatype.maxLength !== undefined && length > datatype.maxLength\n ? Option.some(`length ${length} is greater than maxLength ${datatype.maxLength}`)\n : Option.none(),\n ]);\n const key = orderKey(value.lexical, iri(datatype.base));\n const bound = (\n b: Option.Option<Bound>,\n ok: (v: number, limit: number) => boolean,\n name: string,\n ): Option.Option<string> =>\n Option.flatMap(b, (limit) =>\n Option.flatMap(Option.all([key, boundKey(limit, datatype.base)]), ([v, l]) =>\n ok(v, l) ? Option.none() : Option.some(`value violates ${name} ${limit}`),\n ),\n );\n const of = Option.fromNullishOr;\n return [\n ...lengthErrors,\n ...Arr.getSomes([\n bound(of(datatype.minInclusive), (v, l) => v >= l, 'minimum'),\n bound(of(datatype.maxInclusive), (v, l) => v <= l, 'maximum'),\n bound(of(datatype.minExclusive), (v, l) => v > l, 'minExclusive'),\n bound(of(datatype.maxExclusive), (v, l) => v < l, 'maxExclusive'),\n ]),\n ];\n};\n\n/**\n * Parses a (non-empty, non-null) cell string with a datatype: the value, or\n * the errors that make the cell invalid.\n *\n * @since 0.1.0\n * @category parsing\n */\nexport const parse = (\n text: string,\n datatype: Datatype,\n language: Option.Option<string>,\n): Result.Result<Value, ReadonlyArray<string>> => {\n const base = canonicalName(datatype.base);\n const lexical = isNumeric(base)\n ? parseNumber(text, datatype)\n : base === 'boolean'\n ? parseBoolean(text, datatype)\n : isDateTime(base) || isDuration(base)\n ? isDuration(base)\n ? parseOther(text, datatype)\n : parseDateTime(text, datatype)\n : parseOther(text, datatype);\n return Result.match(lexical, {\n onFailure: (e) => Result.fail([e]),\n onSuccess: (l) => {\n const value: Value = {\n lexical: l,\n base: datatype.base,\n datatype: datatypeIri(datatype),\n language: base === 'string' && datatype.id === undefined ? language : Option.none(),\n };\n const errors = checkConstraints(value, datatype);\n return Arr.isReadonlyArrayNonEmpty(errors) ? Result.fail(errors) : Result.succeed(value);\n },\n });\n};\n\n/**\n * A plain string value, as an invalid cell's value.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const stringValue = (text: string, language: Option.Option<string>): Value => ({\n lexical: text,\n base: 'string',\n datatype: `${XSD}string`,\n language,\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as SqlClient from "effect/sql/SqlClient";
|
|
4
|
+
declare namespace Dialect_d_exports {
|
|
5
|
+
export { Dialect, DialectError, Tables, fromClient, postgres, sqlite, tables };
|
|
6
|
+
}
|
|
7
|
+
declare const DialectError_base: Schema.Class<DialectError, Schema.TaggedStruct<"DialectError", {
|
|
8
|
+
readonly message: Schema.String;
|
|
9
|
+
}>, import("effect/Cause").YieldableError>;
|
|
10
|
+
/**
|
|
11
|
+
* A database the store has no `Dialect` for, or table names it cannot use.
|
|
12
|
+
*
|
|
13
|
+
* @since 0.1.0
|
|
14
|
+
* @category errors
|
|
15
|
+
*/
|
|
16
|
+
declare class DialectError extends DialectError_base {}
|
|
17
|
+
/**
|
|
18
|
+
* The names of the tables used by the store.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.1.0
|
|
21
|
+
* @category models
|
|
22
|
+
*/
|
|
23
|
+
interface Tables {
|
|
24
|
+
/** The term dictionary. */
|
|
25
|
+
readonly terms: string;
|
|
26
|
+
/** Quads of term ids. */
|
|
27
|
+
readonly quads: string;
|
|
28
|
+
/** Explicitly created (possibly empty) named graphs. */
|
|
29
|
+
readonly graphs: string;
|
|
30
|
+
/** The comparison classes of the terms in the dictionary. */
|
|
31
|
+
readonly classes: string;
|
|
32
|
+
/** The migrations table of the store's schema. */
|
|
33
|
+
readonly migrations: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Table names from a prefix (default `rdf_`).
|
|
37
|
+
*
|
|
38
|
+
* @since 0.1.0
|
|
39
|
+
* @category constructors
|
|
40
|
+
*/
|
|
41
|
+
declare const tables: (prefix?: string) => Tables;
|
|
42
|
+
/**
|
|
43
|
+
* A SQL dialect.
|
|
44
|
+
*
|
|
45
|
+
* @since 0.1.0
|
|
46
|
+
* @category models
|
|
47
|
+
*/
|
|
48
|
+
interface Dialect {
|
|
49
|
+
readonly name: string;
|
|
50
|
+
/** The placeholder of the `index`-th (1-based) parameter. */
|
|
51
|
+
readonly placeholder: (index: number) => string;
|
|
52
|
+
/**
|
|
53
|
+
* Whether placeholders are anonymous (`?`): parameters are then bound in
|
|
54
|
+
* order of appearance (and repeated for repeated uses).
|
|
55
|
+
*/
|
|
56
|
+
readonly anonymousParameters: boolean;
|
|
57
|
+
/** The schema: idempotent DDL statements. */
|
|
58
|
+
readonly schema: (tables: Tables) => ReadonlyArray<string>;
|
|
59
|
+
/**
|
|
60
|
+
* The SQL expression of the dictionary key on the `value` column, used by
|
|
61
|
+
* lookups (it must match the unique index of the term table).
|
|
62
|
+
*/
|
|
63
|
+
readonly valueKey: (value: string) => string;
|
|
64
|
+
/** A typed SQL `NULL` term id. */
|
|
65
|
+
readonly nullId: string;
|
|
66
|
+
/** Casts an expression to the term id type. */
|
|
67
|
+
readonly castId: (sql: string) => string;
|
|
68
|
+
/** Casts an expression to text. */
|
|
69
|
+
readonly castText: (sql: string) => string;
|
|
70
|
+
/** Casts an expression to a double. */
|
|
71
|
+
readonly castDouble: (sql: string) => string;
|
|
72
|
+
/** Casts an expression to an integer. */
|
|
73
|
+
readonly castInt: (sql: string) => string;
|
|
74
|
+
/** Applies binary (code point) collation to a text expression. */
|
|
75
|
+
readonly binary: (sql: string) => string;
|
|
76
|
+
/** `a` starts with `b`. */
|
|
77
|
+
readonly startsWith: (a: string, b: string) => string;
|
|
78
|
+
/** `a` ends with `b`. */
|
|
79
|
+
readonly endsWith: (a: string, b: string) => string;
|
|
80
|
+
/** `a` contains `b`. */
|
|
81
|
+
readonly contains: (a: string, b: string) => string;
|
|
82
|
+
/** The text contains a digit other than `0`. */
|
|
83
|
+
readonly hasNonZeroDigit: (sql: string) => string;
|
|
84
|
+
/** The number of characters (code points) of a text. */
|
|
85
|
+
readonly length: (sql: string) => string;
|
|
86
|
+
/** The `LIMIT` / `OFFSET` clause. */
|
|
87
|
+
readonly limitOffset: (limit: number | undefined, offset: number) => string;
|
|
88
|
+
/** The maximum number of parameters of a statement. */
|
|
89
|
+
readonly maxParameters: number;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* SQLite (3.35 or later), e.g. through `@effect/sql-sqlite-node`.
|
|
93
|
+
*
|
|
94
|
+
* @since 0.1.0
|
|
95
|
+
* @category dialects
|
|
96
|
+
*/
|
|
97
|
+
declare const sqlite: Dialect;
|
|
98
|
+
/**
|
|
99
|
+
* PostgreSQL (11 or later), e.g. through `@effect/sql-pg`.
|
|
100
|
+
*
|
|
101
|
+
* @since 0.1.0
|
|
102
|
+
* @category dialects
|
|
103
|
+
*/
|
|
104
|
+
declare const postgres: Dialect;
|
|
105
|
+
/**
|
|
106
|
+
* The dialect matching a `SqlClient` (SQLite or PostgreSQL).
|
|
107
|
+
*
|
|
108
|
+
* @since 0.1.0
|
|
109
|
+
* @category constructors
|
|
110
|
+
*/
|
|
111
|
+
declare const fromClient: (sql: SqlClient.SqlClient) => Effect.Effect<Dialect, Error>;
|
|
112
|
+
export { fromClient as a, tables as c, Tables as i, DialectError as n, postgres as o, Dialect_d_exports as r, sqlite as s, Dialect as t };
|
|
113
|
+
//# sourceMappingURL=Dialect-8ChFj5EX.d.mts.map
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
// src/sparql/sql/Dialect.ts
|
|
5
|
+
/**
|
|
6
|
+
* SQL dialects: the (small) differences between the databases supported by
|
|
7
|
+
* the SQL store — DDL, placeholders, typed `NULL`s, string functions,
|
|
8
|
+
* binary collation and `LIMIT`/`OFFSET`.
|
|
9
|
+
*
|
|
10
|
+
* A dialect only produces SQL text; the queries are executed through Effect's
|
|
11
|
+
* `SqlClient`, so adding a database means adding a `Dialect` (and using the
|
|
12
|
+
* matching `@effect/sql-*` driver).
|
|
13
|
+
*
|
|
14
|
+
* @since 0.1.0
|
|
15
|
+
*/
|
|
16
|
+
var Dialect_exports = /* @__PURE__ */ __exportAll({
|
|
17
|
+
DialectError: () => DialectError,
|
|
18
|
+
fromClient: () => fromClient,
|
|
19
|
+
postgres: () => postgres,
|
|
20
|
+
sqlite: () => sqlite,
|
|
21
|
+
tables: () => tables
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* A database the store has no `Dialect` for, or table names it cannot use.
|
|
25
|
+
*
|
|
26
|
+
* @since 0.1.0
|
|
27
|
+
* @category errors
|
|
28
|
+
*/
|
|
29
|
+
var DialectError = class extends Schema.TaggedError()("DialectError", { message: Schema.String }) {};
|
|
30
|
+
/**
|
|
31
|
+
* Table names from a prefix (default `rdf_`).
|
|
32
|
+
*
|
|
33
|
+
* @since 0.1.0
|
|
34
|
+
* @category constructors
|
|
35
|
+
*/
|
|
36
|
+
const tables = (prefix = "rdf_") => {
|
|
37
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(prefix)) throw new DialectError({ message: `Invalid table prefix: ${prefix}` });
|
|
38
|
+
return {
|
|
39
|
+
terms: `${prefix}terms`,
|
|
40
|
+
quads: `${prefix}quads`,
|
|
41
|
+
graphs: `${prefix}graphs`,
|
|
42
|
+
classes: `${prefix}term_classes`,
|
|
43
|
+
migrations: `${prefix}migrations`
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
const ddlCommon = (t, id) => [
|
|
47
|
+
`CREATE INDEX IF NOT EXISTS ${t.terms}_triples ON ${t.terms} (sub, pre, obj) WHERE kind = 4`,
|
|
48
|
+
`CREATE INDEX IF NOT EXISTS ${t.quads}_posg ON ${t.quads} (p, o, s, g)`,
|
|
49
|
+
`CREATE INDEX IF NOT EXISTS ${t.quads}_ospg ON ${t.quads} (o, s, p, g)`,
|
|
50
|
+
`CREATE INDEX IF NOT EXISTS ${t.quads}_gspo ON ${t.quads} (g, s, p, o)`,
|
|
51
|
+
`CREATE TABLE IF NOT EXISTS ${t.graphs} (id ${id} PRIMARY KEY)`,
|
|
52
|
+
`CREATE TABLE IF NOT EXISTS ${t.classes} (cls INTEGER PRIMARY KEY)`
|
|
53
|
+
];
|
|
54
|
+
/**
|
|
55
|
+
* SQLite (3.35 or later), e.g. through `@effect/sql-sqlite-node`.
|
|
56
|
+
*
|
|
57
|
+
* @since 0.1.0
|
|
58
|
+
* @category dialects
|
|
59
|
+
*/
|
|
60
|
+
const sqlite = {
|
|
61
|
+
name: "sqlite",
|
|
62
|
+
placeholder: () => "?",
|
|
63
|
+
anonymousParameters: true,
|
|
64
|
+
schema: (t) => [
|
|
65
|
+
`CREATE TABLE IF NOT EXISTS ${t.terms} (
|
|
66
|
+
id INTEGER PRIMARY KEY,
|
|
67
|
+
kind INTEGER NOT NULL,
|
|
68
|
+
value TEXT NOT NULL,
|
|
69
|
+
datatype TEXT NOT NULL DEFAULT '',
|
|
70
|
+
lang TEXT NOT NULL DEFAULT '',
|
|
71
|
+
dir TEXT NOT NULL DEFAULT '',
|
|
72
|
+
sub INTEGER,
|
|
73
|
+
pre INTEGER,
|
|
74
|
+
obj INTEGER,
|
|
75
|
+
cls INTEGER NOT NULL,
|
|
76
|
+
num REAL
|
|
77
|
+
)`,
|
|
78
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS ${t.terms}_key ON ${t.terms} (value, kind, datatype, lang, dir)`,
|
|
79
|
+
`CREATE TABLE IF NOT EXISTS ${t.quads} (
|
|
80
|
+
s INTEGER NOT NULL,
|
|
81
|
+
p INTEGER NOT NULL,
|
|
82
|
+
o INTEGER NOT NULL,
|
|
83
|
+
g INTEGER NOT NULL,
|
|
84
|
+
PRIMARY KEY (s, p, o, g)
|
|
85
|
+
) WITHOUT ROWID`,
|
|
86
|
+
...ddlCommon(t, "INTEGER")
|
|
87
|
+
],
|
|
88
|
+
valueKey: (value) => value,
|
|
89
|
+
nullId: "NULL",
|
|
90
|
+
castId: (sql) => sql,
|
|
91
|
+
castText: (sql) => sql,
|
|
92
|
+
castDouble: (sql) => sql,
|
|
93
|
+
castInt: (sql) => sql,
|
|
94
|
+
binary: (sql) => sql,
|
|
95
|
+
startsWith: (a, b) => `(substr(${a}, 1, length(${b})) = ${b})`,
|
|
96
|
+
endsWith: (a, b) => `(length(${a}) >= length(${b}) AND substr(${a}, length(${a}) - length(${b}) + 1) = ${b})`,
|
|
97
|
+
contains: (a, b) => `(instr(${a}, ${b}) > 0)`,
|
|
98
|
+
hasNonZeroDigit: (sql) => `(${sql} GLOB '*[1-9]*')`,
|
|
99
|
+
length: (sql) => `length(${sql})`,
|
|
100
|
+
limitOffset: (limit, offset) => limit === void 0 ? offset > 0 ? ` LIMIT -1 OFFSET ${offset}` : "" : ` LIMIT ${limit}${offset > 0 ? ` OFFSET ${offset}` : ""}`,
|
|
101
|
+
maxParameters: 32e3
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* PostgreSQL (11 or later), e.g. through `@effect/sql-pg`.
|
|
105
|
+
*
|
|
106
|
+
* @since 0.1.0
|
|
107
|
+
* @category dialects
|
|
108
|
+
*/
|
|
109
|
+
const postgres = {
|
|
110
|
+
name: "pg",
|
|
111
|
+
placeholder: (i) => `$${i}`,
|
|
112
|
+
anonymousParameters: false,
|
|
113
|
+
schema: (t) => [
|
|
114
|
+
`CREATE TABLE IF NOT EXISTS ${t.terms} (
|
|
115
|
+
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
116
|
+
kind SMALLINT NOT NULL,
|
|
117
|
+
value TEXT NOT NULL,
|
|
118
|
+
datatype TEXT NOT NULL DEFAULT '',
|
|
119
|
+
lang TEXT NOT NULL DEFAULT '',
|
|
120
|
+
dir TEXT NOT NULL DEFAULT '',
|
|
121
|
+
sub BIGINT,
|
|
122
|
+
pre BIGINT,
|
|
123
|
+
obj BIGINT,
|
|
124
|
+
cls SMALLINT NOT NULL,
|
|
125
|
+
num DOUBLE PRECISION
|
|
126
|
+
)`,
|
|
127
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS ${t.terms}_key ON ${t.terms} (md5(value), kind, datatype, lang, dir)`,
|
|
128
|
+
`CREATE TABLE IF NOT EXISTS ${t.quads} (
|
|
129
|
+
s BIGINT NOT NULL,
|
|
130
|
+
p BIGINT NOT NULL,
|
|
131
|
+
o BIGINT NOT NULL,
|
|
132
|
+
g BIGINT NOT NULL,
|
|
133
|
+
PRIMARY KEY (s, p, o, g)
|
|
134
|
+
)`,
|
|
135
|
+
...ddlCommon(t, "BIGINT")
|
|
136
|
+
],
|
|
137
|
+
valueKey: (value) => `md5(${value})`,
|
|
138
|
+
nullId: "CAST(NULL AS BIGINT)",
|
|
139
|
+
castId: (sql) => `CAST(${sql} AS BIGINT)`,
|
|
140
|
+
castText: (sql) => `CAST(${sql} AS TEXT)`,
|
|
141
|
+
castDouble: (sql) => `CAST(${sql} AS DOUBLE PRECISION)`,
|
|
142
|
+
castInt: (sql) => `CAST(${sql} AS INTEGER)`,
|
|
143
|
+
binary: (sql) => `(${sql} COLLATE "C")`,
|
|
144
|
+
startsWith: (a, b) => `(left(${a}, length(${b})) = ${b})`,
|
|
145
|
+
endsWith: (a, b) => `(right(${a}, length(${b})) = ${b})`,
|
|
146
|
+
contains: (a, b) => `(strpos(${a}, ${b}) > 0)`,
|
|
147
|
+
hasNonZeroDigit: (sql) => `(${sql} ~ '[1-9]')`,
|
|
148
|
+
length: (sql) => `char_length(${sql})`,
|
|
149
|
+
limitOffset: (limit, offset) => `${limit === void 0 ? "" : ` LIMIT ${limit}`}${offset > 0 ? ` OFFSET ${offset}` : ""}`,
|
|
150
|
+
maxParameters: 6e4
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* The dialect matching a `SqlClient` (SQLite or PostgreSQL).
|
|
154
|
+
*
|
|
155
|
+
* @since 0.1.0
|
|
156
|
+
* @category constructors
|
|
157
|
+
*/
|
|
158
|
+
const fromClient = (sql) => sql.onDialectOrElse({
|
|
159
|
+
sqlite: () => Effect.succeed(sqlite),
|
|
160
|
+
pg: () => Effect.succeed(postgres),
|
|
161
|
+
orElse: () => Effect.fail(new DialectError({ message: "Unsupported SQL dialect: pass a Dialect to SqlStore.make for this database" }))
|
|
162
|
+
});
|
|
163
|
+
export { sqlite as a, postgres as i, Dialect_exports as n, tables as o, fromClient as r, DialectError as t };
|
|
164
|
+
|
|
165
|
+
//# sourceMappingURL=Dialect-CzVH38uo.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dialect-CzVH38uo.mjs","names":[],"sources":["../src/sparql/sql/Dialect.ts"],"sourcesContent":["/**\n * SQL dialects: the (small) differences between the databases supported by\n * the SQL store — DDL, placeholders, typed `NULL`s, string functions,\n * binary collation and `LIMIT`/`OFFSET`.\n *\n * A dialect only produces SQL text; the queries are executed through Effect's\n * `SqlClient`, so adding a database means adding a `Dialect` (and using the\n * matching `@effect/sql-*` driver).\n *\n * @since 0.1.0\n */\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\nimport type * as SqlClient from 'effect/sql/SqlClient';\n\n/**\n * A database the store has no `Dialect` for, or table names it cannot use.\n *\n * @since 0.1.0\n * @category errors\n */\nexport class DialectError extends Schema.TaggedError<DialectError>()('DialectError', {\n message: Schema.String,\n}) {}\n\n/**\n * The names of the tables used by the store.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Tables {\n /** The term dictionary. */\n readonly terms: string;\n /** Quads of term ids. */\n readonly quads: string;\n /** Explicitly created (possibly empty) named graphs. */\n readonly graphs: string;\n /** The comparison classes of the terms in the dictionary. */\n readonly classes: string;\n /** The migrations table of the store's schema. */\n readonly migrations: string;\n}\n\n/**\n * Table names from a prefix (default `rdf_`).\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const tables = (prefix = 'rdf_'): Tables => {\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(prefix))\n throw new DialectError({ message: `Invalid table prefix: ${prefix}` });\n return {\n terms: `${prefix}terms`,\n quads: `${prefix}quads`,\n graphs: `${prefix}graphs`,\n classes: `${prefix}term_classes`,\n migrations: `${prefix}migrations`,\n };\n};\n\n/**\n * A SQL dialect.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Dialect {\n readonly name: string;\n /** The placeholder of the `index`-th (1-based) parameter. */\n readonly placeholder: (index: number) => string;\n /**\n * Whether placeholders are anonymous (`?`): parameters are then bound in\n * order of appearance (and repeated for repeated uses).\n */\n readonly anonymousParameters: boolean;\n /** The schema: idempotent DDL statements. */\n readonly schema: (tables: Tables) => ReadonlyArray<string>;\n /**\n * The SQL expression of the dictionary key on the `value` column, used by\n * lookups (it must match the unique index of the term table).\n */\n readonly valueKey: (value: string) => string;\n /** A typed SQL `NULL` term id. */\n readonly nullId: string;\n /** Casts an expression to the term id type. */\n readonly castId: (sql: string) => string;\n /** Casts an expression to text. */\n readonly castText: (sql: string) => string;\n /** Casts an expression to a double. */\n readonly castDouble: (sql: string) => string;\n /** Casts an expression to an integer. */\n readonly castInt: (sql: string) => string;\n /** Applies binary (code point) collation to a text expression. */\n readonly binary: (sql: string) => string;\n /** `a` starts with `b`. */\n readonly startsWith: (a: string, b: string) => string;\n /** `a` ends with `b`. */\n readonly endsWith: (a: string, b: string) => string;\n /** `a` contains `b`. */\n readonly contains: (a: string, b: string) => string;\n /** The text contains a digit other than `0`. */\n readonly hasNonZeroDigit: (sql: string) => string;\n /** The number of characters (code points) of a text. */\n readonly length: (sql: string) => string;\n /** The `LIMIT` / `OFFSET` clause. */\n readonly limitOffset: (limit: number | undefined, offset: number) => string;\n /** The maximum number of parameters of a statement. */\n readonly maxParameters: number;\n}\n\nconst ddlCommon = (t: Tables, id: string): Array<string> => [\n `CREATE INDEX IF NOT EXISTS ${t.terms}_triples ON ${t.terms} (sub, pre, obj) WHERE kind = 4`,\n `CREATE INDEX IF NOT EXISTS ${t.quads}_posg ON ${t.quads} (p, o, s, g)`,\n `CREATE INDEX IF NOT EXISTS ${t.quads}_ospg ON ${t.quads} (o, s, p, g)`,\n `CREATE INDEX IF NOT EXISTS ${t.quads}_gspo ON ${t.quads} (g, s, p, o)`,\n `CREATE TABLE IF NOT EXISTS ${t.graphs} (id ${id} PRIMARY KEY)`,\n `CREATE TABLE IF NOT EXISTS ${t.classes} (cls INTEGER PRIMARY KEY)`,\n];\n\n/**\n * SQLite (3.35 or later), e.g. through `@effect/sql-sqlite-node`.\n *\n * @since 0.1.0\n * @category dialects\n */\nexport const sqlite: Dialect = {\n name: 'sqlite',\n // Numbered `?NNN` parameters are much slower to bind with node:sqlite.\n placeholder: () => '?',\n anonymousParameters: true,\n schema: (t) => [\n `CREATE TABLE IF NOT EXISTS ${t.terms} (\n id INTEGER PRIMARY KEY,\n kind INTEGER NOT NULL,\n value TEXT NOT NULL,\n datatype TEXT NOT NULL DEFAULT '',\n lang TEXT NOT NULL DEFAULT '',\n dir TEXT NOT NULL DEFAULT '',\n sub INTEGER,\n pre INTEGER,\n obj INTEGER,\n cls INTEGER NOT NULL,\n num REAL\n)`,\n `CREATE UNIQUE INDEX IF NOT EXISTS ${t.terms}_key ON ${t.terms} (value, kind, datatype, lang, dir)`,\n `CREATE TABLE IF NOT EXISTS ${t.quads} (\n s INTEGER NOT NULL,\n p INTEGER NOT NULL,\n o INTEGER NOT NULL,\n g INTEGER NOT NULL,\n PRIMARY KEY (s, p, o, g)\n) WITHOUT ROWID`,\n ...ddlCommon(t, 'INTEGER'),\n ],\n valueKey: (value) => value,\n nullId: 'NULL',\n castId: (sql) => sql,\n castText: (sql) => sql,\n castDouble: (sql) => sql,\n castInt: (sql) => sql,\n binary: (sql) => sql,\n startsWith: (a, b) => `(substr(${a}, 1, length(${b})) = ${b})`,\n endsWith: (a, b) =>\n `(length(${a}) >= length(${b}) AND substr(${a}, length(${a}) - length(${b}) + 1) = ${b})`,\n contains: (a, b) => `(instr(${a}, ${b}) > 0)`,\n hasNonZeroDigit: (sql) => `(${sql} GLOB '*[1-9]*')`,\n length: (sql) => `length(${sql})`,\n limitOffset: (limit, offset) =>\n limit === undefined\n ? offset > 0\n ? ` LIMIT -1 OFFSET ${offset}`\n : ''\n : ` LIMIT ${limit}${offset > 0 ? ` OFFSET ${offset}` : ''}`,\n maxParameters: 32_000,\n};\n\n/**\n * PostgreSQL (11 or later), e.g. through `@effect/sql-pg`.\n *\n * @since 0.1.0\n * @category dialects\n */\nexport const postgres: Dialect = {\n name: 'pg',\n placeholder: (i) => `$${i}`,\n anonymousParameters: false,\n schema: (t) => [\n `CREATE TABLE IF NOT EXISTS ${t.terms} (\n id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,\n kind SMALLINT NOT NULL,\n value TEXT NOT NULL,\n datatype TEXT NOT NULL DEFAULT '',\n lang TEXT NOT NULL DEFAULT '',\n dir TEXT NOT NULL DEFAULT '',\n sub BIGINT,\n pre BIGINT,\n obj BIGINT,\n cls SMALLINT NOT NULL,\n num DOUBLE PRECISION\n)`,\n `CREATE UNIQUE INDEX IF NOT EXISTS ${t.terms}_key ON ${t.terms} (md5(value), kind, datatype, lang, dir)`,\n `CREATE TABLE IF NOT EXISTS ${t.quads} (\n s BIGINT NOT NULL,\n p BIGINT NOT NULL,\n o BIGINT NOT NULL,\n g BIGINT NOT NULL,\n PRIMARY KEY (s, p, o, g)\n)`,\n ...ddlCommon(t, 'BIGINT'),\n ],\n valueKey: (value) => `md5(${value})`,\n nullId: 'CAST(NULL AS BIGINT)',\n castId: (sql) => `CAST(${sql} AS BIGINT)`,\n castText: (sql) => `CAST(${sql} AS TEXT)`,\n castDouble: (sql) => `CAST(${sql} AS DOUBLE PRECISION)`,\n castInt: (sql) => `CAST(${sql} AS INTEGER)`,\n binary: (sql) => `(${sql} COLLATE \"C\")`,\n startsWith: (a, b) => `(left(${a}, length(${b})) = ${b})`,\n endsWith: (a, b) => `(right(${a}, length(${b})) = ${b})`,\n contains: (a, b) => `(strpos(${a}, ${b}) > 0)`,\n hasNonZeroDigit: (sql) => `(${sql} ~ '[1-9]')`,\n length: (sql) => `char_length(${sql})`,\n limitOffset: (limit, offset) =>\n `${limit === undefined ? '' : ` LIMIT ${limit}`}${offset > 0 ? ` OFFSET ${offset}` : ''}`,\n maxParameters: 60_000,\n};\n\n/**\n * The dialect matching a `SqlClient` (SQLite or PostgreSQL).\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const fromClient = (sql: SqlClient.SqlClient): Effect.Effect<Dialect, Error> =>\n sql.onDialectOrElse({\n sqlite: () => Effect.succeed(sqlite),\n pg: () => Effect.succeed(postgres),\n orElse: () =>\n Effect.fail(\n new DialectError({\n message: 'Unsupported SQL dialect: pass a Dialect to SqlStore.make for this database',\n }),\n ),\n });\n"],"mappings":"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"}
|