@thomasfosterau/effect-rdf 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +2251 -2
- 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 +195 -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,168 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
|
|
2
|
+
import { B as isNamedNode, K as isTriple, O as defaultGraph, q as isVariable } from "./Term-CFLG1qu4.mjs";
|
|
3
|
+
import { r as emptySet } from "./stringMap-D5YIpYtR.mjs";
|
|
4
|
+
import { a as expressionVariables, i as containsExists, m as mapChildren, n as bgp, r as certainVariables, s as filter, y as transform } from "./Algebra-CGG4oae3.mjs";
|
|
5
|
+
import { t as loop } from "./loop-D5-gNx9K.mjs";
|
|
6
|
+
import * as Arr from "effect/Array";
|
|
7
|
+
import * as Option from "effect/Option";
|
|
8
|
+
import * as Predicate from "effect/Predicate";
|
|
9
|
+
import * as Effect from "effect/Effect";
|
|
10
|
+
import * as Match from "effect/Match";
|
|
11
|
+
// src/sparql/Optimizer.ts
|
|
12
|
+
/**
|
|
13
|
+
* A simple, semantics-preserving algebra optimizer:
|
|
14
|
+
*
|
|
15
|
+
* - **Filter pushdown**: conjunctive filter conditions are pushed below
|
|
16
|
+
* `Join` and into the left side of `LeftJoin` / `Minus` when all their
|
|
17
|
+
* variables are certainly bound there (and they contain no `EXISTS`).
|
|
18
|
+
* - **BGP join ordering**: the triple patterns of each BGP are reordered
|
|
19
|
+
* greedily by estimated selectivity (using `QuadStore.estimate` when the
|
|
20
|
+
* store provides it, and a static heuristic otherwise), preferring
|
|
21
|
+
* patterns connected to already-bound variables.
|
|
22
|
+
*
|
|
23
|
+
* Patterns inside `EXISTS` are left untouched.
|
|
24
|
+
*
|
|
25
|
+
* @since 0.1.0
|
|
26
|
+
*/
|
|
27
|
+
var Optimizer_exports = /* @__PURE__ */ __exportAll({ optimize: () => optimize });
|
|
28
|
+
const conjuncts = (e) => Predicate.isTagged(e, "Operation") && e.operator === "&&" ? e.args.flatMap(conjuncts) : [e];
|
|
29
|
+
const conjunction = (es) => es.reduce((a, b) => ({
|
|
30
|
+
_tag: "Operation",
|
|
31
|
+
operator: "&&",
|
|
32
|
+
args: [a, b]
|
|
33
|
+
}));
|
|
34
|
+
const subset = (a, b) => Array.from(a).every((x) => b.has(x));
|
|
35
|
+
/** Pushes one filter condition as deep as possible; `None` if it cannot move. */
|
|
36
|
+
const push = (e, op) => {
|
|
37
|
+
const vars = expressionVariables(e);
|
|
38
|
+
return Match.value(op).pipe(Match.tag("Join", (j) => {
|
|
39
|
+
if (subset(vars, certainVariables(j.left))) return Option.some({
|
|
40
|
+
...j,
|
|
41
|
+
left: pushOrWrap(e, j.left)
|
|
42
|
+
});
|
|
43
|
+
if (subset(vars, certainVariables(j.right))) return Option.some({
|
|
44
|
+
...j,
|
|
45
|
+
right: pushOrWrap(e, j.right)
|
|
46
|
+
});
|
|
47
|
+
return Option.none();
|
|
48
|
+
}), Match.tag("LeftJoin", "Minus", (o) => subset(vars, certainVariables(o.left)) ? Option.some({
|
|
49
|
+
...o,
|
|
50
|
+
left: pushOrWrap(e, o.left)
|
|
51
|
+
}) : Option.none()), Match.tag("Filter", (f) => Option.some({
|
|
52
|
+
...f,
|
|
53
|
+
input: pushOrWrap(e, f.input)
|
|
54
|
+
})), Match.orElse(() => Option.none()));
|
|
55
|
+
};
|
|
56
|
+
const pushOrWrap = (e, op) => Option.getOrElse(push(e, op), () => filter(e, op));
|
|
57
|
+
const pushFilters = (op) => transform(op, (o) => {
|
|
58
|
+
if (!Predicate.isTagged(o, "Filter")) return o;
|
|
59
|
+
const kept = [];
|
|
60
|
+
const keep = (input, c) => {
|
|
61
|
+
kept.push(c);
|
|
62
|
+
return input;
|
|
63
|
+
};
|
|
64
|
+
const input = conjuncts(o.expression).reduce((acc, c) => containsExists(c) ? keep(acc, c) : Option.getOrElse(push(c, acc), () => keep(acc, c)), o.input);
|
|
65
|
+
return Arr.isReadonlyArrayEmpty(kept) ? input : filter(conjunction(kept), input);
|
|
66
|
+
});
|
|
67
|
+
const positions = (p) => [
|
|
68
|
+
p.subject,
|
|
69
|
+
p.predicate,
|
|
70
|
+
p.object
|
|
71
|
+
];
|
|
72
|
+
const patternVariables = (p) => {
|
|
73
|
+
const out = [];
|
|
74
|
+
const go = (t) => {
|
|
75
|
+
if (isVariable(t)) out.push(t.value);
|
|
76
|
+
else if (isTriple(t)) {
|
|
77
|
+
go(t.subject);
|
|
78
|
+
go(t.predicate);
|
|
79
|
+
go(t.object);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
positions(p).forEach(go);
|
|
83
|
+
return out;
|
|
84
|
+
};
|
|
85
|
+
/** A pattern term as a constant: `None` for a variable or a triple pattern with variables. */
|
|
86
|
+
const constant = (t) => {
|
|
87
|
+
if (isVariable(t)) return Option.none();
|
|
88
|
+
if (isTriple(t)) {
|
|
89
|
+
const vars = patternVariables({
|
|
90
|
+
_tag: "TriplePattern",
|
|
91
|
+
subject: t.subject,
|
|
92
|
+
predicate: t.predicate,
|
|
93
|
+
object: t.object
|
|
94
|
+
});
|
|
95
|
+
return Arr.isReadonlyArrayNonEmpty(vars) ? Option.none() : Option.some(t);
|
|
96
|
+
}
|
|
97
|
+
return Option.some(t);
|
|
98
|
+
};
|
|
99
|
+
/** Static selectivity heuristic when the store gives no estimates. */
|
|
100
|
+
const staticCost = (p) => (Option.isNone(constant(p.subject)) ? 100 : 1) * (Option.isNone(constant(p.object)) ? 10 : 1) * (Option.isNone(constant(p.predicate)) ? 5 : 1);
|
|
101
|
+
const orderBgp = (patterns, ctx) => Effect.gen(function* () {
|
|
102
|
+
if (patterns.length < 2) return patterns;
|
|
103
|
+
const estimate = ctx.store.estimate;
|
|
104
|
+
const costs = yield* Effect.forEach(patterns, (p) => estimate === void 0 ? Effect.succeed(staticCost(p)) : estimate({
|
|
105
|
+
subject: Option.getOrUndefined(constant(p.subject)),
|
|
106
|
+
predicate: Option.getOrUndefined(constant(p.predicate)),
|
|
107
|
+
object: Option.getOrUndefined(constant(p.object)),
|
|
108
|
+
graph: Predicate.isTagged(ctx.graph, "NamedGraph") ? ctx.graph.graph : ctx.dataset.defaultGraph === "default" ? defaultGraph : void 0
|
|
109
|
+
}), { concurrency: 1 });
|
|
110
|
+
const remaining = Arr.zip(patterns, costs).map(([p, cost]) => ({
|
|
111
|
+
p,
|
|
112
|
+
cost,
|
|
113
|
+
vars: patternVariables(p)
|
|
114
|
+
}));
|
|
115
|
+
const bound = emptySet();
|
|
116
|
+
const out = [];
|
|
117
|
+
loop(() => {
|
|
118
|
+
if (!Arr.isArrayNonEmpty(remaining)) return false;
|
|
119
|
+
const connected = remaining.some((r) => r.vars.some((v) => bound.has(v)));
|
|
120
|
+
const best = Arr.map(remaining, (r, i) => {
|
|
121
|
+
const isConnected = r.vars.some((v) => bound.has(v));
|
|
122
|
+
const eligible = !(connected && !isConnected && bound.size > 0);
|
|
123
|
+
const boundCount = r.vars.filter((v) => bound.has(v)).length;
|
|
124
|
+
return {
|
|
125
|
+
r,
|
|
126
|
+
i,
|
|
127
|
+
score: eligible ? r.cost / 10 ** boundCount : Infinity
|
|
128
|
+
};
|
|
129
|
+
}).reduce((a, b) => b.score < a.score ? b : a);
|
|
130
|
+
remaining.splice(best.i, 1);
|
|
131
|
+
out.push(best.r.p);
|
|
132
|
+
best.r.vars.forEach((v) => bound.set(v, true));
|
|
133
|
+
return true;
|
|
134
|
+
});
|
|
135
|
+
return out;
|
|
136
|
+
});
|
|
137
|
+
const orderBgps = (op, ctx) => {
|
|
138
|
+
return Match.value(op).pipe(Match.tag("Bgp", (b) => Effect.map(orderBgp(b.patterns, ctx), (patterns) => bgp(patterns))), Match.tag("Path", "Values", (o) => Effect.succeed(o)), Match.tag("Graph", (g) => Effect.map(orderBgps(g.input, {
|
|
139
|
+
...ctx,
|
|
140
|
+
graph: isNamedNode(g.name) ? {
|
|
141
|
+
_tag: "NamedGraph",
|
|
142
|
+
graph: g.name
|
|
143
|
+
} : ctx.graph
|
|
144
|
+
}), (input) => ({
|
|
145
|
+
...g,
|
|
146
|
+
input
|
|
147
|
+
}))), Match.orElse((o) => {
|
|
148
|
+
const children = [];
|
|
149
|
+
mapChildren(o, (c) => {
|
|
150
|
+
children.push(c);
|
|
151
|
+
return c;
|
|
152
|
+
});
|
|
153
|
+
return Effect.map(Effect.forEach(children, (c) => orderBgps(c, ctx), { concurrency: 1 }), (optimized) => {
|
|
154
|
+
let i = 0;
|
|
155
|
+
return mapChildren(o, (c) => optimized[i++] ?? c);
|
|
156
|
+
});
|
|
157
|
+
}));
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Optimizes an algebra expression.
|
|
161
|
+
*
|
|
162
|
+
* @since 0.1.0
|
|
163
|
+
* @category optimization
|
|
164
|
+
*/
|
|
165
|
+
const optimize = (op, ctx) => orderBgps(pushFilters(op), ctx);
|
|
166
|
+
export { optimize as n, Optimizer_exports as t };
|
|
167
|
+
|
|
168
|
+
//# sourceMappingURL=Optimizer-BWWQRQPY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Optimizer-BWWQRQPY.mjs","names":["Algebra.expressionVariables","Algebra.certainVariables","Algebra.filter","Algebra.transform","Algebra.containsExists","Term.isVariable","Term.isTriple","Term.defaultGraph","StringMap.emptySet","Algebra.bgp","Term.isNamedNode","Algebra.mapChildren"],"sources":["../src/sparql/Optimizer.ts"],"sourcesContent":["/**\n * A simple, semantics-preserving algebra optimizer:\n *\n * - **Filter pushdown**: conjunctive filter conditions are pushed below\n * `Join` and into the left side of `LeftJoin` / `Minus` when all their\n * variables are certainly bound there (and they contain no `EXISTS`).\n * - **BGP join ordering**: the triple patterns of each BGP are reordered\n * greedily by estimated selectivity (using `QuadStore.estimate` when the\n * store provides it, and a static heuristic otherwise), preferring\n * patterns connected to already-bound variables.\n *\n * Patterns inside `EXISTS` are left untouched.\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport * as Predicate from 'effect/Predicate';\nimport * as Term from '../Term.ts';\nimport * as Algebra from './Algebra.ts';\nimport type * as Ast from './Ast.ts';\nimport { loop } from './internal/loop.ts';\nimport * as StringMap from './internal/stringMap.ts';\nimport type * as Store from './Store.ts';\n\n/**\n * Inputs of the optimizer.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface OptimizerContext {\n readonly store: Store.QuadStoreShape;\n readonly dataset: Store.DatasetSpec;\n readonly graph: Store.ActiveGraph;\n}\n\nconst conjuncts = (e: Algebra.Expression): Array<Algebra.Expression> =>\n Predicate.isTagged(e, 'Operation') && e.operator === '&&' ? e.args.flatMap(conjuncts) : [e];\n\nconst conjunction = (es: ReadonlyArray<Algebra.Expression>): Algebra.Expression =>\n es.reduce((a, b) => ({ _tag: 'Operation', operator: '&&', args: [a, b] }));\n\nconst subset = (a: ReadonlySet<string>, b: ReadonlySet<string>): boolean =>\n Array.from(a).every((x) => b.has(x));\n\n/** Pushes one filter condition as deep as possible; `None` if it cannot move. */\nconst push = (e: Algebra.Expression, op: Algebra.Operation): Option.Option<Algebra.Operation> => {\n const vars = Algebra.expressionVariables(e);\n return Match.value(op).pipe(\n Match.tag('Join', (j): Option.Option<Algebra.Operation> => {\n if (subset(vars, Algebra.certainVariables(j.left))) {\n return Option.some({ ...j, left: pushOrWrap(e, j.left) });\n }\n if (subset(vars, Algebra.certainVariables(j.right))) {\n return Option.some({ ...j, right: pushOrWrap(e, j.right) });\n }\n return Option.none();\n }),\n Match.tag('LeftJoin', 'Minus', (o) =>\n subset(vars, Algebra.certainVariables(o.left))\n ? Option.some({ ...o, left: pushOrWrap(e, o.left) })\n : Option.none(),\n ),\n Match.tag('Filter', (f) => Option.some({ ...f, input: pushOrWrap(e, f.input) })),\n Match.orElse(() => Option.none()),\n );\n};\n\nconst pushOrWrap = (e: Algebra.Expression, op: Algebra.Operation): Algebra.Operation =>\n Option.getOrElse(push(e, op), () => Algebra.filter(e, op));\n\nconst pushFilters = (op: Algebra.Operation): Algebra.Operation =>\n Algebra.transform(op, (o) => {\n if (!Predicate.isTagged(o, 'Filter')) return o;\n // The conditions that stay, and the input with the others pushed in.\n const kept: Array<Algebra.Expression> = [];\n const keep = (input: Algebra.Operation, c: Algebra.Expression): Algebra.Operation => {\n kept.push(c);\n return input;\n };\n const input = conjuncts(o.expression).reduce(\n (acc, c) =>\n Algebra.containsExists(c)\n ? keep(acc, c)\n : Option.getOrElse(push(c, acc), () => keep(acc, c)),\n o.input,\n );\n return Arr.isReadonlyArrayEmpty(kept) ? input : Algebra.filter(conjunction(kept), input);\n });\n\nconst positions = (p: Ast.TriplePattern): ReadonlyArray<Ast.TermPattern> => [\n p.subject,\n p.predicate,\n p.object,\n];\n\nconst patternVariables = (p: Ast.TriplePattern): ReadonlyArray<string> => {\n const out: Array<string> = [];\n const go = (t: Ast.TermPattern | Term.Term): void => {\n if (Term.isVariable(t)) out.push(t.value);\n else if (Term.isTriple(t)) {\n go(t.subject);\n go(t.predicate);\n go(t.object);\n }\n };\n positions(p).forEach(go);\n return out;\n};\n\n/** A pattern term as a constant: `None` for a variable or a triple pattern with variables. */\nconst constant = (t: Ast.TermPattern): Option.Option<Term.GroundTerm> => {\n if (Term.isVariable(t)) return Option.none();\n if (Term.isTriple(t)) {\n const vars = patternVariables({\n _tag: 'TriplePattern',\n subject: t.subject,\n predicate: t.predicate,\n object: t.object,\n });\n return Arr.isReadonlyArrayNonEmpty(vars) ? Option.none() : Option.some(t);\n }\n return Option.some(t);\n};\n\n/** Static selectivity heuristic when the store gives no estimates. */\nconst staticCost = (p: Ast.TriplePattern): number =>\n (Option.isNone(constant(p.subject)) ? 100 : 1) *\n (Option.isNone(constant(p.object)) ? 10 : 1) *\n (Option.isNone(constant(p.predicate)) ? 5 : 1);\n\nconst orderBgp = (\n patterns: ReadonlyArray<Ast.TriplePattern>,\n ctx: OptimizerContext,\n): Effect.Effect<ReadonlyArray<Ast.TriplePattern>, Store.StoreError> =>\n Effect.gen(function* () {\n if (patterns.length < 2) return patterns;\n const estimate = ctx.store.estimate;\n const costs = yield* Effect.forEach(\n patterns,\n (p) =>\n estimate === undefined\n ? Effect.succeed(staticCost(p))\n : estimate({\n subject: Option.getOrUndefined(constant(p.subject)),\n predicate: Option.getOrUndefined(constant(p.predicate)),\n object: Option.getOrUndefined(constant(p.object)),\n graph: Predicate.isTagged(ctx.graph, 'NamedGraph')\n ? ctx.graph.graph\n : ctx.dataset.defaultGraph === 'default'\n ? Term.defaultGraph\n : undefined,\n }),\n { concurrency: 1 },\n );\n const remaining = Arr.zip(patterns, costs).map(([p, cost]) => ({\n p,\n cost,\n vars: patternVariables(p),\n }));\n const bound = StringMap.emptySet();\n const out: Array<Ast.TriplePattern> = [];\n // Greedily picks the cheapest pattern, preferring those connected to the bound variables.\n loop(() => {\n if (!Arr.isArrayNonEmpty(remaining)) return false;\n const connected = remaining.some((r) => r.vars.some((v) => bound.has(v)));\n const scored = Arr.map(remaining, (r, i) => {\n const isConnected = r.vars.some((v) => bound.has(v));\n const eligible = !(connected && !isConnected && bound.size > 0);\n const boundCount = r.vars.filter((v) => bound.has(v)).length;\n return { r, i, score: eligible ? r.cost / 10 ** boundCount : Infinity };\n });\n // The first with the lowest score (the first pattern if none is eligible).\n const best = scored.reduce((a, b) => (b.score < a.score ? b : a));\n remaining.splice(best.i, 1);\n out.push(best.r.p);\n best.r.vars.forEach((v) => bound.set(v, true));\n return true;\n });\n return out;\n });\n\nconst orderBgps = (\n op: Algebra.Operation,\n ctx: OptimizerContext,\n): Effect.Effect<Algebra.Operation, Store.StoreError> => {\n return Match.value(op).pipe(\n Match.tag('Bgp', (b): Effect.Effect<Algebra.Operation, Store.StoreError> =>\n Effect.map(orderBgp(b.patterns, ctx), (patterns) => Algebra.bgp(patterns)),\n ),\n Match.tag('Path', 'Values', (o) => Effect.succeed(o)),\n Match.tag('Graph', (g) =>\n Effect.map(\n orderBgps(g.input, {\n ...ctx,\n graph: Term.isNamedNode(g.name) ? { _tag: 'NamedGraph', graph: g.name } : ctx.graph,\n }),\n (input) => ({ ...g, input }),\n ),\n ),\n Match.orElse((o) => {\n const children: Array<Algebra.Operation> = [];\n Algebra.mapChildren(o, (c) => {\n children.push(c);\n return c;\n });\n return Effect.map(\n Effect.forEach(children, (c) => orderBgps(c, ctx), { concurrency: 1 }),\n (optimized) => {\n let i = 0;\n return Algebra.mapChildren(o, (c) => optimized[i++] ?? c);\n },\n );\n }),\n );\n};\n\n/**\n * Optimizes an algebra expression.\n *\n * @since 0.1.0\n * @category optimization\n */\nexport const optimize = (\n op: Algebra.Operation,\n ctx: OptimizerContext,\n): Effect.Effect<Algebra.Operation, Store.StoreError> => orderBgps(pushFilters(op), ctx);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { g as Operation } from "./Algebra-uGsIEOUA.mjs";
|
|
2
|
+
import { c as StoreError, n as DatasetSpec, o as QuadStoreShape, t as ActiveGraph } from "./Store-D0jmVfb3.mjs";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
declare namespace Optimizer_d_exports {
|
|
5
|
+
export { OptimizerContext, optimize };
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Inputs of the optimizer.
|
|
9
|
+
*
|
|
10
|
+
* @since 0.1.0
|
|
11
|
+
* @category models
|
|
12
|
+
*/
|
|
13
|
+
interface OptimizerContext {
|
|
14
|
+
readonly store: QuadStoreShape;
|
|
15
|
+
readonly dataset: DatasetSpec;
|
|
16
|
+
readonly graph: ActiveGraph;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Optimizes an algebra expression.
|
|
20
|
+
*
|
|
21
|
+
* @since 0.1.0
|
|
22
|
+
* @category optimization
|
|
23
|
+
*/
|
|
24
|
+
declare const optimize: (op: Operation, ctx: OptimizerContext) => Effect.Effect<Operation, StoreError>;
|
|
25
|
+
export { Optimizer_d_exports as n, optimize as r, OptimizerContext as t };
|
|
26
|
+
//# sourceMappingURL=Optimizer-DUpUow6k.d.mts.map
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
|
|
2
|
+
import * as Result from "effect/Result";
|
|
3
|
+
import * as Duration from "effect/Duration";
|
|
4
|
+
// src/sparql/Options.ts
|
|
5
|
+
/**
|
|
6
|
+
* Server configuration.
|
|
7
|
+
*
|
|
8
|
+
* @since 0.1.0
|
|
9
|
+
*/
|
|
10
|
+
var Options_exports = /* @__PURE__ */ __exportAll({
|
|
11
|
+
requestPath: () => requestPath,
|
|
12
|
+
requestUrl: () => requestUrl,
|
|
13
|
+
resolve: () => resolve
|
|
14
|
+
});
|
|
15
|
+
/** Removes a trailing slash (but not the root's): the path still starts with `/`. */
|
|
16
|
+
const trimSlash = (path) => path.length > 1 && path.endsWith("/") ? `/${path.slice(1, -1)}` : path;
|
|
17
|
+
/**
|
|
18
|
+
* Applies the defaults.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.1.0
|
|
21
|
+
* @category constructors
|
|
22
|
+
*/
|
|
23
|
+
const resolve = (options = {}) => {
|
|
24
|
+
const path = trimSlash(options.path ?? "/sparql");
|
|
25
|
+
return {
|
|
26
|
+
path,
|
|
27
|
+
updatePath: trimSlash(options.updatePath ?? path),
|
|
28
|
+
graphStorePath: options.graphStorePath === false ? void 0 : trimSlash(options.graphStorePath ?? "/rdf-graph-store"),
|
|
29
|
+
baseUrl: options.baseUrl,
|
|
30
|
+
baseIri: options.baseIri,
|
|
31
|
+
readOnly: options.readOnly ?? false,
|
|
32
|
+
queryTimeout: options.queryTimeout === void 0 ? void 0 : Duration.fromInputUnsafe(options.queryTimeout),
|
|
33
|
+
updateTimeout: options.updateTimeout === void 0 ? void 0 : Duration.fromInputUnsafe(options.updateTimeout),
|
|
34
|
+
maxResults: options.maxResults,
|
|
35
|
+
cors: options.cors === true ? {} : options.cors === false ? void 0 : options.cors,
|
|
36
|
+
logging: options.logging ?? false,
|
|
37
|
+
serviceDescription: options.serviceDescription ?? true,
|
|
38
|
+
unionDefaultGraph: options.unionDefaultGraph ?? false,
|
|
39
|
+
federation: options.federation ?? false,
|
|
40
|
+
prefixes: options.prefixes ?? {}
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
const stripTrailing = (path) => path.length > 1 && path.endsWith("/") ? path.slice(0, -1) : path;
|
|
44
|
+
/**
|
|
45
|
+
* The absolute URL of a request (without fragment), using `baseUrl`, the
|
|
46
|
+
* request's absolute URL, or its `Host` header.
|
|
47
|
+
*
|
|
48
|
+
* @since 0.1.0
|
|
49
|
+
* @category utils
|
|
50
|
+
*/
|
|
51
|
+
const requestUrl = (request, options) => {
|
|
52
|
+
const raw = request.originalUrl;
|
|
53
|
+
const parsed = new URL(raw, "http://localhost");
|
|
54
|
+
if (options.baseUrl !== void 0) return new URL(parsed.pathname + parsed.search, options.baseUrl);
|
|
55
|
+
if (/^[a-z][a-z0-9+.-]*:/i.test(raw)) return parsed;
|
|
56
|
+
const host = request.headers["host"] ?? "localhost";
|
|
57
|
+
const proto = ((request.headers["x-forwarded-proto"] ?? "http").split(",", 1)[0] ?? "").trim();
|
|
58
|
+
return new URL(parsed.pathname + parsed.search, `${proto}://${host}`);
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* The path of a request URL, without query string and trailing slash.
|
|
62
|
+
*
|
|
63
|
+
* @since 0.1.0
|
|
64
|
+
* @category utils
|
|
65
|
+
*/
|
|
66
|
+
const requestPath = (url) => {
|
|
67
|
+
const pathname = new URL(url, "http://localhost").pathname;
|
|
68
|
+
return stripTrailing(Result.getOrElse(Result.try(() => decodeURI(pathname)), () => pathname));
|
|
69
|
+
};
|
|
70
|
+
export { resolve as i, requestPath as n, requestUrl as r, Options_exports as t };
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=Options-BLBGL4HE.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Options-BLBGL4HE.mjs","names":[],"sources":["../src/sparql/Options.ts"],"sourcesContent":["/**\n * Server configuration.\n *\n * @since 0.1.0\n */\nimport * as Duration from 'effect/Duration';\nimport * as Result from 'effect/Result';\nimport type * as HttpServerRequest from 'effect/http/HttpServerRequest';\n\n/**\n * CORS settings.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface CorsOptions {\n /** Allowed origins (default: any, `*`). */\n readonly allowedOrigins?: ReadonlyArray<string> | undefined;\n /** Allowed request headers (default: whatever the preflight asks for). */\n readonly allowedHeaders?: ReadonlyArray<string> | undefined;\n /** Response headers exposed to scripts. */\n readonly exposedHeaders?: ReadonlyArray<string> | undefined;\n /** Preflight cache duration in seconds. */\n readonly maxAge?: number | undefined;\n /** Whether to allow credentials. */\n readonly credentials?: boolean | undefined;\n}\n\n/**\n * Server options. Every field is optional.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Options {\n /** Path of the SPARQL query endpoint (default `/sparql`). */\n readonly path?: `/${string}` | undefined;\n /**\n * Path of the SPARQL update endpoint (default: the query endpoint, which\n * then accepts both).\n */\n readonly updatePath?: `/${string}` | undefined;\n /**\n * Path of the Graph Store Protocol endpoint (default `/rdf-graph-store`),\n * or `false` to disable it. Graphs are identified indirectly with\n * `?default` / `?graph=<iri>` on this path, or directly by any URL below it.\n */\n readonly graphStorePath?: `/${string}` | false | undefined;\n /**\n * The public origin of the server (e.g. `https://data.example.org`), used to\n * build the request URLs that serve as base IRIs and as directly\n * identified graph IRIs. Defaults to the request's `Host` header (and\n * `X-Forwarded-Proto`).\n */\n readonly baseUrl?: string | undefined;\n /**\n * The base IRI for queries and updates. Defaults to the endpoint URL, as\n * suggested by the protocol.\n */\n readonly baseIri?: string | undefined;\n /** Rejects updates and Graph Store writes (default `false`). */\n readonly readOnly?: boolean | undefined;\n /**\n * Time limit for evaluating a query. A query that produces no result in\n * time is answered with `503 Service Unavailable`; a streaming response\n * that exceeds it is aborted.\n */\n readonly queryTimeout?: Duration.Input | undefined;\n /** Time limit for an update request (`503` when exceeded). */\n readonly updateTimeout?: Duration.Input | undefined;\n /** The maximum number of solutions or triples returned by a query. */\n readonly maxResults?: number | undefined;\n /** Enables CORS (`true` for permissive defaults). */\n readonly cors?: boolean | CorsOptions | undefined;\n /** Logs every request with Effect logging (default `false` for the handler). */\n readonly logging?: boolean | undefined;\n /** Serve a service description on `GET` without a query (default `true`). */\n readonly serviceDescription?: boolean | undefined;\n /** Advertised in the service description: `sd:UnionDefaultGraph`. */\n readonly unionDefaultGraph?: boolean | undefined;\n /** Advertised in the service description: `sd:BasicFederatedQuery`. */\n readonly federation?: boolean | undefined;\n /** Prefixes used when serialising graphs in syntaxes that support them. */\n readonly prefixes?: Readonly<Record<string, string>> | undefined;\n}\n\n/**\n * Options with defaults applied.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Resolved {\n readonly path: `/${string}`;\n readonly updatePath: `/${string}`;\n readonly graphStorePath: `/${string}` | undefined;\n readonly baseUrl: string | undefined;\n readonly baseIri: string | undefined;\n readonly readOnly: boolean;\n readonly queryTimeout: Duration.Duration | undefined;\n readonly updateTimeout: Duration.Duration | undefined;\n readonly maxResults: number | undefined;\n readonly cors: CorsOptions | undefined;\n readonly logging: boolean;\n readonly serviceDescription: boolean;\n readonly unionDefaultGraph: boolean;\n readonly federation: boolean;\n readonly prefixes: Readonly<Record<string, string>>;\n}\n\n/** Removes a trailing slash (but not the root's): the path still starts with `/`. */\nconst trimSlash = (path: `/${string}`): `/${string}` =>\n path.length > 1 && path.endsWith('/') ? `/${path.slice(1, -1)}` : path;\n\n/**\n * Applies the defaults.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const resolve = (options: Options = {}): Resolved => {\n const path = trimSlash(options.path ?? '/sparql');\n return {\n path,\n updatePath: trimSlash(options.updatePath ?? path),\n graphStorePath:\n options.graphStorePath === false\n ? undefined\n : trimSlash(options.graphStorePath ?? '/rdf-graph-store'),\n baseUrl: options.baseUrl,\n baseIri: options.baseIri,\n readOnly: options.readOnly ?? false,\n queryTimeout:\n options.queryTimeout === undefined\n ? undefined\n : Duration.fromInputUnsafe(options.queryTimeout),\n updateTimeout:\n options.updateTimeout === undefined\n ? undefined\n : Duration.fromInputUnsafe(options.updateTimeout),\n maxResults: options.maxResults,\n cors: options.cors === true ? {} : options.cors === false ? undefined : options.cors,\n logging: options.logging ?? false,\n serviceDescription: options.serviceDescription ?? true,\n unionDefaultGraph: options.unionDefaultGraph ?? false,\n federation: options.federation ?? false,\n prefixes: options.prefixes ?? {},\n };\n};\n\nconst stripTrailing = (path: string): string =>\n path.length > 1 && path.endsWith('/') ? path.slice(0, -1) : path;\n\n/**\n * The absolute URL of a request (without fragment), using `baseUrl`, the\n * request's absolute URL, or its `Host` header.\n *\n * @since 0.1.0\n * @category utils\n */\nexport const requestUrl = (\n request: HttpServerRequest.HttpServerRequest,\n options: Resolved,\n): URL => {\n const raw = request.originalUrl;\n const parsed = new URL(raw, 'http://localhost');\n if (options.baseUrl !== undefined) {\n return new URL(parsed.pathname + parsed.search, options.baseUrl);\n }\n if (/^[a-z][a-z0-9+.-]*:/i.test(raw)) return parsed;\n const host = request.headers['host'] ?? 'localhost';\n const proto = ((request.headers['x-forwarded-proto'] ?? 'http').split(',', 1)[0] ?? '').trim();\n return new URL(parsed.pathname + parsed.search, `${proto}://${host}`);\n};\n\n/**\n * The path of a request URL, without query string and trailing slash.\n *\n * @since 0.1.0\n * @category utils\n */\nexport const requestPath = (url: string): string => {\n const pathname = new URL(url, 'http://localhost').pathname;\n // A malformed percent-encoding is matched as written.\n return stripTrailing(\n Result.getOrElse(\n Result.try(() => decodeURI(pathname)),\n () => pathname,\n ),\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AA+GA,MAAM,aAAa,SACjB,KAAK,SAAS,KAAK,KAAK,SAAS,GAAG,IAAI,IAAI,KAAK,MAAM,GAAG,EAAE,MAAM;;;;;;;AAQpE,MAAa,WAAW,UAAmB,CAAC,MAAgB;CAC1D,MAAM,OAAO,UAAU,QAAQ,QAAQ,SAAS;CAChD,OAAO;EACL;EACA,YAAY,UAAU,QAAQ,cAAc,IAAI;EAChD,gBACE,QAAQ,mBAAmB,QACvB,KAAA,IACA,UAAU,QAAQ,kBAAkB,kBAAkB;EAC5D,SAAS,QAAQ;EACjB,SAAS,QAAQ;EACjB,UAAU,QAAQ,YAAY;EAC9B,cACE,QAAQ,iBAAiB,KAAA,IACrB,KAAA,IACA,SAAS,gBAAgB,QAAQ,YAAY;EACnD,eACE,QAAQ,kBAAkB,KAAA,IACtB,KAAA,IACA,SAAS,gBAAgB,QAAQ,aAAa;EACpD,YAAY,QAAQ;EACpB,MAAM,QAAQ,SAAS,OAAO,CAAC,IAAI,QAAQ,SAAS,QAAQ,KAAA,IAAY,QAAQ;EAChF,SAAS,QAAQ,WAAW;EAC5B,oBAAoB,QAAQ,sBAAsB;EAClD,mBAAmB,QAAQ,qBAAqB;EAChD,YAAY,QAAQ,cAAc;EAClC,UAAU,QAAQ,YAAY,CAAC;CACjC;AACF;AAEA,MAAM,iBAAiB,SACrB,KAAK,SAAS,KAAK,KAAK,SAAS,GAAG,IAAI,KAAK,MAAM,GAAG,EAAE,IAAI;;;;;;;;AAS9D,MAAa,cACX,SACA,YACQ;CACR,MAAM,MAAM,QAAQ;CACpB,MAAM,SAAS,IAAI,IAAI,KAAK,kBAAkB;CAC9C,IAAI,QAAQ,YAAY,KAAA,GACtB,OAAO,IAAI,IAAI,OAAO,WAAW,OAAO,QAAQ,QAAQ,OAAO;CAEjE,IAAI,uBAAuB,KAAK,GAAG,GAAG,OAAO;CAC7C,MAAM,OAAO,QAAQ,QAAQ,WAAW;CACxC,MAAM,UAAU,QAAQ,QAAQ,wBAAwB,OAAA,CAAQ,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,GAAA,CAAI,KAAK;CAC7F,OAAO,IAAI,IAAI,OAAO,WAAW,OAAO,QAAQ,GAAG,MAAM,KAAK,MAAM;AACtE;;;;;;;AAQA,MAAa,eAAe,QAAwB;CAClD,MAAM,WAAW,IAAI,IAAI,KAAK,kBAAkB,CAAC,CAAC;CAElD,OAAO,cACL,OAAO,UACL,OAAO,UAAU,UAAU,QAAQ,CAAC,SAC9B,QACR,CACF;AACF"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import * as Duration from "effect/Duration";
|
|
2
|
+
import * as HttpServerRequest from "effect/http/HttpServerRequest";
|
|
3
|
+
declare namespace Options_d_exports {
|
|
4
|
+
export { CorsOptions, Options, Resolved, requestPath, requestUrl, resolve };
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* CORS settings.
|
|
8
|
+
*
|
|
9
|
+
* @since 0.1.0
|
|
10
|
+
* @category models
|
|
11
|
+
*/
|
|
12
|
+
interface CorsOptions {
|
|
13
|
+
/** Allowed origins (default: any, `*`). */
|
|
14
|
+
readonly allowedOrigins?: ReadonlyArray<string> | undefined;
|
|
15
|
+
/** Allowed request headers (default: whatever the preflight asks for). */
|
|
16
|
+
readonly allowedHeaders?: ReadonlyArray<string> | undefined;
|
|
17
|
+
/** Response headers exposed to scripts. */
|
|
18
|
+
readonly exposedHeaders?: ReadonlyArray<string> | undefined;
|
|
19
|
+
/** Preflight cache duration in seconds. */
|
|
20
|
+
readonly maxAge?: number | undefined;
|
|
21
|
+
/** Whether to allow credentials. */
|
|
22
|
+
readonly credentials?: boolean | undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Server options. Every field is optional.
|
|
26
|
+
*
|
|
27
|
+
* @since 0.1.0
|
|
28
|
+
* @category models
|
|
29
|
+
*/
|
|
30
|
+
interface Options {
|
|
31
|
+
/** Path of the SPARQL query endpoint (default `/sparql`). */
|
|
32
|
+
readonly path?: `/${string}` | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Path of the SPARQL update endpoint (default: the query endpoint, which
|
|
35
|
+
* then accepts both).
|
|
36
|
+
*/
|
|
37
|
+
readonly updatePath?: `/${string}` | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Path of the Graph Store Protocol endpoint (default `/rdf-graph-store`),
|
|
40
|
+
* or `false` to disable it. Graphs are identified indirectly with
|
|
41
|
+
* `?default` / `?graph=<iri>` on this path, or directly by any URL below it.
|
|
42
|
+
*/
|
|
43
|
+
readonly graphStorePath?: `/${string}` | false | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* The public origin of the server (e.g. `https://data.example.org`), used to
|
|
46
|
+
* build the request URLs that serve as base IRIs and as directly
|
|
47
|
+
* identified graph IRIs. Defaults to the request's `Host` header (and
|
|
48
|
+
* `X-Forwarded-Proto`).
|
|
49
|
+
*/
|
|
50
|
+
readonly baseUrl?: string | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* The base IRI for queries and updates. Defaults to the endpoint URL, as
|
|
53
|
+
* suggested by the protocol.
|
|
54
|
+
*/
|
|
55
|
+
readonly baseIri?: string | undefined;
|
|
56
|
+
/** Rejects updates and Graph Store writes (default `false`). */
|
|
57
|
+
readonly readOnly?: boolean | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Time limit for evaluating a query. A query that produces no result in
|
|
60
|
+
* time is answered with `503 Service Unavailable`; a streaming response
|
|
61
|
+
* that exceeds it is aborted.
|
|
62
|
+
*/
|
|
63
|
+
readonly queryTimeout?: Duration.Input | undefined;
|
|
64
|
+
/** Time limit for an update request (`503` when exceeded). */
|
|
65
|
+
readonly updateTimeout?: Duration.Input | undefined;
|
|
66
|
+
/** The maximum number of solutions or triples returned by a query. */
|
|
67
|
+
readonly maxResults?: number | undefined;
|
|
68
|
+
/** Enables CORS (`true` for permissive defaults). */
|
|
69
|
+
readonly cors?: boolean | CorsOptions | undefined;
|
|
70
|
+
/** Logs every request with Effect logging (default `false` for the handler). */
|
|
71
|
+
readonly logging?: boolean | undefined;
|
|
72
|
+
/** Serve a service description on `GET` without a query (default `true`). */
|
|
73
|
+
readonly serviceDescription?: boolean | undefined;
|
|
74
|
+
/** Advertised in the service description: `sd:UnionDefaultGraph`. */
|
|
75
|
+
readonly unionDefaultGraph?: boolean | undefined;
|
|
76
|
+
/** Advertised in the service description: `sd:BasicFederatedQuery`. */
|
|
77
|
+
readonly federation?: boolean | undefined;
|
|
78
|
+
/** Prefixes used when serialising graphs in syntaxes that support them. */
|
|
79
|
+
readonly prefixes?: Readonly<Record<string, string>> | undefined;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Options with defaults applied.
|
|
83
|
+
*
|
|
84
|
+
* @since 0.1.0
|
|
85
|
+
* @category models
|
|
86
|
+
*/
|
|
87
|
+
interface Resolved {
|
|
88
|
+
readonly path: `/${string}`;
|
|
89
|
+
readonly updatePath: `/${string}`;
|
|
90
|
+
readonly graphStorePath: `/${string}` | undefined;
|
|
91
|
+
readonly baseUrl: string | undefined;
|
|
92
|
+
readonly baseIri: string | undefined;
|
|
93
|
+
readonly readOnly: boolean;
|
|
94
|
+
readonly queryTimeout: Duration.Duration | undefined;
|
|
95
|
+
readonly updateTimeout: Duration.Duration | undefined;
|
|
96
|
+
readonly maxResults: number | undefined;
|
|
97
|
+
readonly cors: CorsOptions | undefined;
|
|
98
|
+
readonly logging: boolean;
|
|
99
|
+
readonly serviceDescription: boolean;
|
|
100
|
+
readonly unionDefaultGraph: boolean;
|
|
101
|
+
readonly federation: boolean;
|
|
102
|
+
readonly prefixes: Readonly<Record<string, string>>;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Applies the defaults.
|
|
106
|
+
*
|
|
107
|
+
* @since 0.1.0
|
|
108
|
+
* @category constructors
|
|
109
|
+
*/
|
|
110
|
+
declare const resolve: (options?: Options) => Resolved;
|
|
111
|
+
/**
|
|
112
|
+
* The absolute URL of a request (without fragment), using `baseUrl`, the
|
|
113
|
+
* request's absolute URL, or its `Host` header.
|
|
114
|
+
*
|
|
115
|
+
* @since 0.1.0
|
|
116
|
+
* @category utils
|
|
117
|
+
*/
|
|
118
|
+
declare const requestUrl: (request: HttpServerRequest.HttpServerRequest, options: Resolved) => URL;
|
|
119
|
+
/**
|
|
120
|
+
* The path of a request URL, without query string and trailing slash.
|
|
121
|
+
*
|
|
122
|
+
* @since 0.1.0
|
|
123
|
+
* @category utils
|
|
124
|
+
*/
|
|
125
|
+
declare const requestPath: (url: string) => string;
|
|
126
|
+
export { requestPath as a, Resolved as i, Options as n, requestUrl as o, Options_d_exports as r, resolve as s, CorsOptions as t };
|
|
127
|
+
//# sourceMappingURL=Options-BommQwP9.d.mts.map
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
|
|
2
|
+
import * as Arr from "effect/Array";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
import * as Order from "effect/Order";
|
|
5
|
+
// src/xmp/Packet.ts
|
|
6
|
+
/**
|
|
7
|
+
* XMP packets (ISO 16684-1 §7.3): finding `<?xpacket begin=… ?>` …
|
|
8
|
+
* `<?xpacket end="w"?>` in arbitrary bytes, and wrapping serialized XMP in
|
|
9
|
+
* a packet with the whitespace padding that lets a writer update it in
|
|
10
|
+
* place.
|
|
11
|
+
*
|
|
12
|
+
* Packets are found in UTF-8, UTF-16 and UTF-32 (either byte order), the
|
|
13
|
+
* encodings ISO 16684-1 §7.3.2 lets a packet use and a byte scanner can
|
|
14
|
+
* recognise without parsing the host file.
|
|
15
|
+
*
|
|
16
|
+
* @since 0.1.0
|
|
17
|
+
*/
|
|
18
|
+
var Packet_exports = /* @__PURE__ */ __exportAll({
|
|
19
|
+
DEFAULT_PADDING: () => DEFAULT_PADDING,
|
|
20
|
+
PACKET_ID: () => PACKET_ID,
|
|
21
|
+
byteLength: () => byteLength,
|
|
22
|
+
find: () => find,
|
|
23
|
+
findAll: () => findAll,
|
|
24
|
+
padding: () => padding,
|
|
25
|
+
unwrap: () => unwrap,
|
|
26
|
+
wrap: () => wrap,
|
|
27
|
+
wrapToSize: () => wrapToSize
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* The `id` attribute every packet header carries.
|
|
31
|
+
*
|
|
32
|
+
* @since 0.1.0
|
|
33
|
+
* @category constants
|
|
34
|
+
*/
|
|
35
|
+
const PACKET_ID = "W5M0MpCehiHzreSzNTczkc9d";
|
|
36
|
+
/**
|
|
37
|
+
* The padding a writable packet gets by default: 2 KiB, as the XMP
|
|
38
|
+
* specification recommends.
|
|
39
|
+
*
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
* @category constants
|
|
42
|
+
*/
|
|
43
|
+
const DEFAULT_PADDING = 2048;
|
|
44
|
+
const HEADER = "<?xpacket begin=";
|
|
45
|
+
const TRAILER = "<?xpacket end=";
|
|
46
|
+
const PI_END = "?>";
|
|
47
|
+
const ENCODINGS = [
|
|
48
|
+
"utf-8",
|
|
49
|
+
"utf-16be",
|
|
50
|
+
"utf-16le",
|
|
51
|
+
"utf-32be",
|
|
52
|
+
"utf-32le"
|
|
53
|
+
];
|
|
54
|
+
const WIDTHS = {
|
|
55
|
+
"utf-8": 1,
|
|
56
|
+
"utf-16be": 2,
|
|
57
|
+
"utf-16le": 2,
|
|
58
|
+
"utf-32be": 4,
|
|
59
|
+
"utf-32le": 4
|
|
60
|
+
};
|
|
61
|
+
const isLittleEndian = (encoding) => encoding.endsWith("le");
|
|
62
|
+
/** One ASCII code unit in an encoding: the code, zero-padded to the unit's width. */
|
|
63
|
+
const asciiUnit = (code, encoding) => {
|
|
64
|
+
const padding = Array.from({ length: WIDTHS[encoding] - 1 }, () => 0);
|
|
65
|
+
return isLittleEndian(encoding) ? [code, ...padding] : [...padding, code];
|
|
66
|
+
};
|
|
67
|
+
const encodeAscii = (text, encoding) => Uint8Array.from(Arr.flatMap(Arr.fromIterable(text), (c) => asciiUnit(c.charCodeAt(0), encoding)));
|
|
68
|
+
/**
|
|
69
|
+
* Decodes UTF-32, which the WHATWG `TextDecoder` does not support. A code
|
|
70
|
+
* point outside Unicode, or a surrogate, decodes to U+FFFD as `TextDecoder`
|
|
71
|
+
* would.
|
|
72
|
+
*/
|
|
73
|
+
const decodeUtf32 = (bytes, littleEndian) => {
|
|
74
|
+
const data = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
75
|
+
const units = Math.floor(bytes.length / 4);
|
|
76
|
+
return Array.from({ length: units }, (_, i) => {
|
|
77
|
+
const code = data.getUint32(i * 4, littleEndian);
|
|
78
|
+
return code > 1114111 || code >= 55296 && code <= 57343 ? "�" : String.fromCodePoint(code);
|
|
79
|
+
}).join("");
|
|
80
|
+
};
|
|
81
|
+
const decode = (bytes, encoding) => WIDTHS[encoding] === 4 ? decodeUtf32(bytes, isLittleEndian(encoding)) : new TextDecoder(encoding).decode(bytes);
|
|
82
|
+
const bytesToString = (bytes) => new TextDecoder("windows-1252").decode(bytes);
|
|
83
|
+
const marker = (text, encoding) => bytesToString(encodeAscii(text, encoding));
|
|
84
|
+
const indexIn = (haystack, needle, from) => {
|
|
85
|
+
const i = haystack.indexOf(needle, from);
|
|
86
|
+
return i < 0 ? Option.none() : Option.some(i);
|
|
87
|
+
};
|
|
88
|
+
const isWritable = (text, trailer) => text.charAt(trailer + 14 + 1) === "w";
|
|
89
|
+
const findIn = (bytes, haystack, from) => {
|
|
90
|
+
const starts = Arr.getSomes(Arr.map(ENCODINGS, (encoding) => Option.map(indexIn(haystack, marker(HEADER, encoding), from), (offset) => ({
|
|
91
|
+
offset,
|
|
92
|
+
encoding
|
|
93
|
+
}))));
|
|
94
|
+
const first = Arr.head(Arr.sort(starts, Order.mapInput(Order.Number, (s) => s.offset)));
|
|
95
|
+
return Option.flatMap(first, ({ offset, encoding }) => {
|
|
96
|
+
const width = WIDTHS[encoding];
|
|
97
|
+
const end = Option.flatMap(indexIn(haystack, marker(TRAILER, encoding), offset + 16 * width), (trailer) => Option.map(indexIn(haystack, marker(PI_END, encoding), trailer + 14 * width), (close) => close + 2 * width));
|
|
98
|
+
return Option.map(end, (close) => {
|
|
99
|
+
const text = decode(bytes.subarray(offset, close), encoding);
|
|
100
|
+
return {
|
|
101
|
+
offset,
|
|
102
|
+
length: close - offset,
|
|
103
|
+
encoding,
|
|
104
|
+
writable: isWritable(text, text.lastIndexOf(TRAILER)),
|
|
105
|
+
text
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Finds the first packet at or after `fromIndex` in a byte sequence: a file
|
|
112
|
+
* of any format, scanned without parsing it (ISO 16684-1 §7.3.2's packet
|
|
113
|
+
* scanning).
|
|
114
|
+
*
|
|
115
|
+
* @since 0.1.0
|
|
116
|
+
* @category scanning
|
|
117
|
+
*/
|
|
118
|
+
const find = (bytes, fromIndex = 0) => findIn(bytes, bytesToString(bytes), fromIndex);
|
|
119
|
+
/**
|
|
120
|
+
* Finds every packet in a byte sequence, in order.
|
|
121
|
+
*
|
|
122
|
+
* @since 0.1.0
|
|
123
|
+
* @category scanning
|
|
124
|
+
*/
|
|
125
|
+
const findAll = (bytes) => {
|
|
126
|
+
const haystack = bytesToString(bytes);
|
|
127
|
+
return Arr.unfold(0, (from) => Option.map(findIn(bytes, haystack, from), (p) => [p, p.offset + p.length]));
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Splits a packet's text into the serialized XMP, the padding and the
|
|
131
|
+
* writability of its trailer. Returns `None` when the text is not a packet.
|
|
132
|
+
*
|
|
133
|
+
* @since 0.1.0
|
|
134
|
+
* @category parsing
|
|
135
|
+
*/
|
|
136
|
+
const unwrap = (text) => Option.flatMap(indexIn(text, HEADER, 0), (start) => Option.flatMap(indexIn(text, PI_END, start), (headerEnd) => {
|
|
137
|
+
const trailer = text.lastIndexOf(TRAILER);
|
|
138
|
+
if (trailer < headerEnd) return Option.none();
|
|
139
|
+
const content = text.slice(headerEnd + 2, trailer).replace(/^\r?\n/, "");
|
|
140
|
+
const xml = content.trimEnd();
|
|
141
|
+
return Option.some({
|
|
142
|
+
xml,
|
|
143
|
+
padding: content.length - xml.length,
|
|
144
|
+
writable: isWritable(text, trailer)
|
|
145
|
+
});
|
|
146
|
+
}));
|
|
147
|
+
const header = `<?xpacket begin="" id="${PACKET_ID}"?>\n`;
|
|
148
|
+
const trailerOf = (writable) => `<?xpacket end="${writable ? "w" : "r"}"?>`;
|
|
149
|
+
/**
|
|
150
|
+
* Whitespace padding of exactly `bytes` bytes: lines of 99 spaces and a
|
|
151
|
+
* newline, as XMP writers lay it out.
|
|
152
|
+
*
|
|
153
|
+
* @since 0.1.0
|
|
154
|
+
* @category serializing
|
|
155
|
+
*/
|
|
156
|
+
const padding = (bytes) => {
|
|
157
|
+
const lines = Math.floor(bytes / 100);
|
|
158
|
+
return `${`${" ".repeat(99)}\n`.repeat(lines)}${" ".repeat(bytes - lines * 100)}`;
|
|
159
|
+
};
|
|
160
|
+
const body = (xml) => xml.endsWith("\n") ? xml : `${xml}\n`;
|
|
161
|
+
/**
|
|
162
|
+
* Wraps serialized XMP (an `<x:xmpmeta>` element) in a UTF-8 packet.
|
|
163
|
+
*
|
|
164
|
+
* @since 0.1.0
|
|
165
|
+
* @category serializing
|
|
166
|
+
*/
|
|
167
|
+
const wrap = (xml, options) => {
|
|
168
|
+
const writable = options?.writable ?? true;
|
|
169
|
+
const pad = options?.padding ?? (writable ? 2048 : 0);
|
|
170
|
+
return `${header}${body(xml)}${padding(pad)}${trailerOf(writable)}`;
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* The UTF-8 byte length of a string.
|
|
174
|
+
*
|
|
175
|
+
* @since 0.1.0
|
|
176
|
+
* @category serializing
|
|
177
|
+
*/
|
|
178
|
+
const byteLength = (text) => new TextEncoder().encode(text).length;
|
|
179
|
+
/**
|
|
180
|
+
* Wraps serialized XMP in a UTF-8 packet of exactly `size` bytes, padding the
|
|
181
|
+
* difference: how an XMP packet is updated in place in a file. Returns
|
|
182
|
+
* `None` when the XMP does not fit.
|
|
183
|
+
*
|
|
184
|
+
* @since 0.1.0
|
|
185
|
+
* @category serializing
|
|
186
|
+
*/
|
|
187
|
+
const wrapToSize = (xml, size, options) => {
|
|
188
|
+
const writable = options?.writable ?? true;
|
|
189
|
+
const fixed = byteLength(`${header}${body(xml)}${trailerOf(writable)}`);
|
|
190
|
+
return fixed > size ? Option.none() : Option.some(wrap(xml, {
|
|
191
|
+
writable,
|
|
192
|
+
padding: size - fixed
|
|
193
|
+
}));
|
|
194
|
+
};
|
|
195
|
+
export { find as a, unwrap as c, byteLength as i, wrap as l, PACKET_ID as n, findAll as o, Packet_exports as r, padding as s, DEFAULT_PADDING as t, wrapToSize as u };
|
|
196
|
+
|
|
197
|
+
//# sourceMappingURL=Packet-CA76wVX3.mjs.map
|