@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,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The namespace IRIs of the XMP core schemas and the conventional prefix of
|
|
3
|
+
* each, as the XMP specification (ISO 16684-1) and the PDF/A standards
|
|
4
|
+
* (ISO 19005) name them.
|
|
5
|
+
*
|
|
6
|
+
* @since 0.1.0
|
|
7
|
+
*/
|
|
8
|
+
import * as PrefixMap from '../PrefixMap.ts';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The `x:` namespace of the `<x:xmpmeta>` wrapper element.
|
|
12
|
+
*
|
|
13
|
+
* @since 0.1.0
|
|
14
|
+
* @category namespaces
|
|
15
|
+
*/
|
|
16
|
+
export const X = 'adobe:ns:meta/';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The RDF namespace.
|
|
20
|
+
*
|
|
21
|
+
* @since 0.1.0
|
|
22
|
+
* @category namespaces
|
|
23
|
+
*/
|
|
24
|
+
export const RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The Dublin Core namespace (`dc:`).
|
|
28
|
+
*
|
|
29
|
+
* @since 0.1.0
|
|
30
|
+
* @category namespaces
|
|
31
|
+
*/
|
|
32
|
+
export const DC = 'http://purl.org/dc/elements/1.1/';
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The XMP Basic namespace (`xmp:`).
|
|
36
|
+
*
|
|
37
|
+
* @since 0.1.0
|
|
38
|
+
* @category namespaces
|
|
39
|
+
*/
|
|
40
|
+
export const XMP = 'http://ns.adobe.com/xap/1.0/';
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The XMP Rights Management namespace (`xmpRights:`).
|
|
44
|
+
*
|
|
45
|
+
* @since 0.1.0
|
|
46
|
+
* @category namespaces
|
|
47
|
+
*/
|
|
48
|
+
export const XMP_RIGHTS = 'http://ns.adobe.com/xap/1.0/rights/';
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The XMP Media Management namespace (`xmpMM:`).
|
|
52
|
+
*
|
|
53
|
+
* @since 0.1.0
|
|
54
|
+
* @category namespaces
|
|
55
|
+
*/
|
|
56
|
+
export const XMP_MM = 'http://ns.adobe.com/xap/1.0/mm/';
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The XMP note namespace (`xmpNote:`), which carries
|
|
60
|
+
* `xmpNote:HasExtendedXMP` in JPEG files.
|
|
61
|
+
*
|
|
62
|
+
* @since 0.1.0
|
|
63
|
+
* @category namespaces
|
|
64
|
+
*/
|
|
65
|
+
export const XMP_NOTE = 'http://ns.adobe.com/xmp/note/';
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* The XMP qualifier namespace for identifiers (`xmpidq:`).
|
|
69
|
+
*
|
|
70
|
+
* @since 0.1.0
|
|
71
|
+
* @category namespaces
|
|
72
|
+
*/
|
|
73
|
+
export const XMP_IDQ = 'http://ns.adobe.com/xmp/Identifier/qual/1.0/';
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The Adobe PDF namespace (`pdf:`).
|
|
77
|
+
*
|
|
78
|
+
* @since 0.1.0
|
|
79
|
+
* @category namespaces
|
|
80
|
+
*/
|
|
81
|
+
export const PDF = 'http://ns.adobe.com/pdf/1.3/';
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* The PDF/A identification namespace (`pdfaid:`).
|
|
85
|
+
*
|
|
86
|
+
* @since 0.1.0
|
|
87
|
+
* @category namespaces
|
|
88
|
+
*/
|
|
89
|
+
export const PDFA_ID = 'http://www.aiim.org/pdfa/ns/id/';
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* The PDF/UA identification namespace (`pdfuaid:`).
|
|
93
|
+
*
|
|
94
|
+
* @since 0.1.0
|
|
95
|
+
* @category namespaces
|
|
96
|
+
*/
|
|
97
|
+
export const PDFUA_ID = 'http://www.aiim.org/pdfua/ns/id/';
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* The PDF/A extension schema container namespace (`pdfaExtension:`).
|
|
101
|
+
*
|
|
102
|
+
* @since 0.1.0
|
|
103
|
+
* @category namespaces
|
|
104
|
+
*/
|
|
105
|
+
export const PDFA_EXTENSION = 'http://www.aiim.org/pdfa/ns/extension/';
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* The PDF/A schema value type namespace (`pdfaSchema:`).
|
|
109
|
+
*
|
|
110
|
+
* @since 0.1.0
|
|
111
|
+
* @category namespaces
|
|
112
|
+
*/
|
|
113
|
+
export const PDFA_SCHEMA = 'http://www.aiim.org/pdfa/ns/schema#';
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* The PDF/A property value type namespace (`pdfaProperty:`).
|
|
117
|
+
*
|
|
118
|
+
* @since 0.1.0
|
|
119
|
+
* @category namespaces
|
|
120
|
+
*/
|
|
121
|
+
export const PDFA_PROPERTY = 'http://www.aiim.org/pdfa/ns/property#';
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* The PDF/A value type namespace (`pdfaType:`).
|
|
125
|
+
*
|
|
126
|
+
* @since 0.1.0
|
|
127
|
+
* @category namespaces
|
|
128
|
+
*/
|
|
129
|
+
export const PDFA_TYPE = 'http://www.aiim.org/pdfa/ns/type#';
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* The PDF/A field namespace (`pdfaField:`).
|
|
133
|
+
*
|
|
134
|
+
* @since 0.1.0
|
|
135
|
+
* @category namespaces
|
|
136
|
+
*/
|
|
137
|
+
export const PDFA_FIELD = 'http://www.aiim.org/pdfa/ns/field#';
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* The Photoshop namespace (`photoshop:`).
|
|
141
|
+
*
|
|
142
|
+
* @since 0.1.0
|
|
143
|
+
* @category namespaces
|
|
144
|
+
*/
|
|
145
|
+
export const PHOTOSHOP = 'http://ns.adobe.com/photoshop/1.0/';
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* The EXIF namespace (`exif:`).
|
|
149
|
+
*
|
|
150
|
+
* @since 0.1.0
|
|
151
|
+
* @category namespaces
|
|
152
|
+
*/
|
|
153
|
+
export const EXIF = 'http://ns.adobe.com/exif/1.0/';
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* The EXIF 2.3+ namespace of the CIPA (`exifEX:`).
|
|
157
|
+
*
|
|
158
|
+
* @since 0.1.0
|
|
159
|
+
* @category namespaces
|
|
160
|
+
*/
|
|
161
|
+
export const EXIF_EX = 'http://cipa.jp/exif/1.0/';
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* The TIFF namespace (`tiff:`).
|
|
165
|
+
*
|
|
166
|
+
* @since 0.1.0
|
|
167
|
+
* @category namespaces
|
|
168
|
+
*/
|
|
169
|
+
export const TIFF = 'http://ns.adobe.com/tiff/1.0/';
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* The ResourceEvent structure namespace (`stEvt:`), the fields of
|
|
173
|
+
* `xmpMM:History` entries.
|
|
174
|
+
*
|
|
175
|
+
* @since 0.1.0
|
|
176
|
+
* @category namespaces
|
|
177
|
+
*/
|
|
178
|
+
export const ST_EVT = 'http://ns.adobe.com/xap/1.0/sType/ResourceEvent#';
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* The ResourceRef structure namespace (`stRef:`), the fields of
|
|
182
|
+
* `xmpMM:DerivedFrom`.
|
|
183
|
+
*
|
|
184
|
+
* @since 0.1.0
|
|
185
|
+
* @category namespaces
|
|
186
|
+
*/
|
|
187
|
+
export const ST_REF = 'http://ns.adobe.com/xap/1.0/sType/ResourceRef#';
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* The paged-text namespace (`xmpTPg:`).
|
|
191
|
+
*
|
|
192
|
+
* @since 0.1.0
|
|
193
|
+
* @category namespaces
|
|
194
|
+
*/
|
|
195
|
+
export const XMP_TPG = 'http://ns.adobe.com/xap/1.0/t/pg/';
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* The conventional prefix of every namespace in this module. The serializer
|
|
199
|
+
* declares these prefixes unless `SerializeOptions.prefixes` names another.
|
|
200
|
+
*
|
|
201
|
+
* @since 0.1.0
|
|
202
|
+
* @category prefixes
|
|
203
|
+
*/
|
|
204
|
+
export const prefixes: PrefixMap.PrefixMap = PrefixMap.make([
|
|
205
|
+
['x', X],
|
|
206
|
+
['rdf', RDF],
|
|
207
|
+
['dc', DC],
|
|
208
|
+
['xmp', XMP],
|
|
209
|
+
['xmpRights', XMP_RIGHTS],
|
|
210
|
+
['xmpMM', XMP_MM],
|
|
211
|
+
['xmpNote', XMP_NOTE],
|
|
212
|
+
['xmpidq', XMP_IDQ],
|
|
213
|
+
['pdf', PDF],
|
|
214
|
+
['pdfaid', PDFA_ID],
|
|
215
|
+
['pdfuaid', PDFUA_ID],
|
|
216
|
+
['pdfaExtension', PDFA_EXTENSION],
|
|
217
|
+
['pdfaSchema', PDFA_SCHEMA],
|
|
218
|
+
['pdfaProperty', PDFA_PROPERTY],
|
|
219
|
+
['pdfaType', PDFA_TYPE],
|
|
220
|
+
['pdfaField', PDFA_FIELD],
|
|
221
|
+
['photoshop', PHOTOSHOP],
|
|
222
|
+
['exif', EXIF],
|
|
223
|
+
['exifEX', EXIF_EX],
|
|
224
|
+
['tiff', TIFF],
|
|
225
|
+
['stEvt', ST_EVT],
|
|
226
|
+
['stRef', ST_REF],
|
|
227
|
+
['xmpTPg', XMP_TPG],
|
|
228
|
+
]);
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XMP packets (ISO 16684-1 §7.3): finding `<?xpacket begin=… ?>` …
|
|
3
|
+
* `<?xpacket end="w"?>` in arbitrary bytes, and wrapping serialized XMP in
|
|
4
|
+
* a packet with the whitespace padding that lets a writer update it in
|
|
5
|
+
* place.
|
|
6
|
+
*
|
|
7
|
+
* Packets are found in UTF-8, UTF-16 and UTF-32 (either byte order), the
|
|
8
|
+
* encodings ISO 16684-1 §7.3.2 lets a packet use and a byte scanner can
|
|
9
|
+
* recognise without parsing the host file.
|
|
10
|
+
*
|
|
11
|
+
* @since 0.1.0
|
|
12
|
+
*/
|
|
13
|
+
import * as Arr from 'effect/Array';
|
|
14
|
+
import * as Option from 'effect/Option';
|
|
15
|
+
import * as Order from 'effect/Order';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The `id` attribute every packet header carries.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.1.0
|
|
21
|
+
* @category constants
|
|
22
|
+
*/
|
|
23
|
+
export const PACKET_ID = 'W5M0MpCehiHzreSzNTczkc9d';
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The padding a writable packet gets by default: 2 KiB, as the XMP
|
|
27
|
+
* specification recommends.
|
|
28
|
+
*
|
|
29
|
+
* @since 0.1.0
|
|
30
|
+
* @category constants
|
|
31
|
+
*/
|
|
32
|
+
export const DEFAULT_PADDING = 2048;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The text encoding of a packet.
|
|
36
|
+
*
|
|
37
|
+
* @since 0.1.0
|
|
38
|
+
* @category models
|
|
39
|
+
*/
|
|
40
|
+
export type Encoding = 'utf-8' | 'utf-16be' | 'utf-16le' | 'utf-32be' | 'utf-32le';
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* A packet found in a byte sequence.
|
|
44
|
+
*
|
|
45
|
+
* @since 0.1.0
|
|
46
|
+
* @category models
|
|
47
|
+
*/
|
|
48
|
+
export interface Packet {
|
|
49
|
+
/** The byte offset of `<?xpacket begin`. */
|
|
50
|
+
readonly offset: number;
|
|
51
|
+
/** The byte length, through the end of the `<?xpacket end …?>` trailer. */
|
|
52
|
+
readonly length: number;
|
|
53
|
+
readonly encoding: Encoding;
|
|
54
|
+
/** Whether the trailer is `end="w"` (the packet may be updated in place). */
|
|
55
|
+
readonly writable: boolean;
|
|
56
|
+
/** The decoded packet, header to trailer. */
|
|
57
|
+
readonly text: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The parts of a packet's text.
|
|
62
|
+
*
|
|
63
|
+
* @since 0.1.0
|
|
64
|
+
* @category models
|
|
65
|
+
*/
|
|
66
|
+
export interface Unwrapped {
|
|
67
|
+
/** The serialized XMP between the header and the padding. */
|
|
68
|
+
readonly xml: string;
|
|
69
|
+
/** The number of whitespace characters of padding before the trailer. */
|
|
70
|
+
readonly padding: number;
|
|
71
|
+
readonly writable: boolean;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const HEADER = '<?xpacket begin=';
|
|
75
|
+
const TRAILER = '<?xpacket end=';
|
|
76
|
+
const PI_END = '?>';
|
|
77
|
+
|
|
78
|
+
const ENCODINGS: ReadonlyArray<Encoding> = [
|
|
79
|
+
'utf-8',
|
|
80
|
+
'utf-16be',
|
|
81
|
+
'utf-16le',
|
|
82
|
+
'utf-32be',
|
|
83
|
+
'utf-32le',
|
|
84
|
+
];
|
|
85
|
+
|
|
86
|
+
const WIDTHS: Readonly<Record<Encoding, number>> = {
|
|
87
|
+
'utf-8': 1,
|
|
88
|
+
'utf-16be': 2,
|
|
89
|
+
'utf-16le': 2,
|
|
90
|
+
'utf-32be': 4,
|
|
91
|
+
'utf-32le': 4,
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const isLittleEndian = (encoding: Encoding): boolean => encoding.endsWith('le');
|
|
95
|
+
|
|
96
|
+
/** One ASCII code unit in an encoding: the code, zero-padded to the unit's width. */
|
|
97
|
+
const asciiUnit = (code: number, encoding: Encoding): ReadonlyArray<number> => {
|
|
98
|
+
// `Arr.replicate` never returns an empty array, and UTF-8 needs none.
|
|
99
|
+
const padding = Array.from({ length: WIDTHS[encoding] - 1 }, () => 0);
|
|
100
|
+
return isLittleEndian(encoding) ? [code, ...padding] : [...padding, code];
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const encodeAscii = (text: string, encoding: Encoding): Uint8Array =>
|
|
104
|
+
Uint8Array.from(Arr.flatMap(Arr.fromIterable(text), (c) => asciiUnit(c.charCodeAt(0), encoding)));
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Decodes UTF-32, which the WHATWG `TextDecoder` does not support. A code
|
|
108
|
+
* point outside Unicode, or a surrogate, decodes to U+FFFD as `TextDecoder`
|
|
109
|
+
* would.
|
|
110
|
+
*/
|
|
111
|
+
const decodeUtf32 = (bytes: Uint8Array, littleEndian: boolean): string => {
|
|
112
|
+
const data = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
113
|
+
const units = Math.floor(bytes.length / 4);
|
|
114
|
+
return Array.from({ length: units }, (_, i) => {
|
|
115
|
+
const code = data.getUint32(i * 4, littleEndian);
|
|
116
|
+
return code > 0x10ffff || (code >= 0xd800 && code <= 0xdfff)
|
|
117
|
+
? '\uFFFD'
|
|
118
|
+
: String.fromCodePoint(code);
|
|
119
|
+
}).join('');
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const decode = (bytes: Uint8Array, encoding: Encoding): string =>
|
|
123
|
+
WIDTHS[encoding] === 4
|
|
124
|
+
? decodeUtf32(bytes, isLittleEndian(encoding))
|
|
125
|
+
: new TextDecoder(encoding).decode(bytes);
|
|
126
|
+
|
|
127
|
+
// windows-1252 decodes every byte to exactly one UTF-16 code unit, so a
|
|
128
|
+
// string search over the decoded bytes finds byte offsets natively.
|
|
129
|
+
const bytesToString = (bytes: Uint8Array): string => new TextDecoder('windows-1252').decode(bytes);
|
|
130
|
+
|
|
131
|
+
const marker = (text: string, encoding: Encoding): string =>
|
|
132
|
+
bytesToString(encodeAscii(text, encoding));
|
|
133
|
+
|
|
134
|
+
const indexIn = (haystack: string, needle: string, from: number): Option.Option<number> => {
|
|
135
|
+
const i = haystack.indexOf(needle, from);
|
|
136
|
+
return i < 0 ? Option.none() : Option.some(i);
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const isWritable = (text: string, trailer: number): boolean =>
|
|
140
|
+
text.charAt(trailer + TRAILER.length + 1) === 'w';
|
|
141
|
+
|
|
142
|
+
const findIn = (bytes: Uint8Array, haystack: string, from: number): Option.Option<Packet> => {
|
|
143
|
+
const starts = Arr.getSomes(
|
|
144
|
+
Arr.map(ENCODINGS, (encoding) =>
|
|
145
|
+
Option.map(indexIn(haystack, marker(HEADER, encoding), from), (offset) => ({
|
|
146
|
+
offset,
|
|
147
|
+
encoding,
|
|
148
|
+
})),
|
|
149
|
+
),
|
|
150
|
+
);
|
|
151
|
+
const first = Arr.head(
|
|
152
|
+
Arr.sort(
|
|
153
|
+
starts,
|
|
154
|
+
Order.mapInput(Order.Number, (s: { readonly offset: number }) => s.offset),
|
|
155
|
+
),
|
|
156
|
+
);
|
|
157
|
+
return Option.flatMap(first, ({ offset, encoding }) => {
|
|
158
|
+
const width = WIDTHS[encoding];
|
|
159
|
+
const end = Option.flatMap(
|
|
160
|
+
indexIn(haystack, marker(TRAILER, encoding), offset + HEADER.length * width),
|
|
161
|
+
(trailer) =>
|
|
162
|
+
Option.map(
|
|
163
|
+
indexIn(haystack, marker(PI_END, encoding), trailer + TRAILER.length * width),
|
|
164
|
+
(close) => close + PI_END.length * width,
|
|
165
|
+
),
|
|
166
|
+
);
|
|
167
|
+
// A header with no trailer after it is not a packet, and neither is any
|
|
168
|
+
// later header.
|
|
169
|
+
return Option.map(end, (close): Packet => {
|
|
170
|
+
const text = decode(bytes.subarray(offset, close), encoding);
|
|
171
|
+
return {
|
|
172
|
+
offset,
|
|
173
|
+
length: close - offset,
|
|
174
|
+
encoding,
|
|
175
|
+
writable: isWritable(text, text.lastIndexOf(TRAILER)),
|
|
176
|
+
text,
|
|
177
|
+
};
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Finds the first packet at or after `fromIndex` in a byte sequence: a file
|
|
184
|
+
* of any format, scanned without parsing it (ISO 16684-1 §7.3.2's packet
|
|
185
|
+
* scanning).
|
|
186
|
+
*
|
|
187
|
+
* @since 0.1.0
|
|
188
|
+
* @category scanning
|
|
189
|
+
*/
|
|
190
|
+
export const find = (bytes: Uint8Array, fromIndex: number = 0): Option.Option<Packet> =>
|
|
191
|
+
findIn(bytes, bytesToString(bytes), fromIndex);
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Finds every packet in a byte sequence, in order.
|
|
195
|
+
*
|
|
196
|
+
* @since 0.1.0
|
|
197
|
+
* @category scanning
|
|
198
|
+
*/
|
|
199
|
+
export const findAll = (bytes: Uint8Array): ReadonlyArray<Packet> => {
|
|
200
|
+
const haystack = bytesToString(bytes);
|
|
201
|
+
return Arr.unfold(0, (from) =>
|
|
202
|
+
Option.map(findIn(bytes, haystack, from), (p) => [p, p.offset + p.length] as const),
|
|
203
|
+
);
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Splits a packet's text into the serialized XMP, the padding and the
|
|
208
|
+
* writability of its trailer. Returns `None` when the text is not a packet.
|
|
209
|
+
*
|
|
210
|
+
* @since 0.1.0
|
|
211
|
+
* @category parsing
|
|
212
|
+
*/
|
|
213
|
+
export const unwrap = (text: string): Option.Option<Unwrapped> =>
|
|
214
|
+
Option.flatMap(indexIn(text, HEADER, 0), (start) =>
|
|
215
|
+
Option.flatMap(indexIn(text, PI_END, start), (headerEnd) => {
|
|
216
|
+
const trailer = text.lastIndexOf(TRAILER);
|
|
217
|
+
if (trailer < headerEnd) return Option.none();
|
|
218
|
+
const content = text.slice(headerEnd + PI_END.length, trailer).replace(/^\r?\n/, '');
|
|
219
|
+
const xml = content.trimEnd();
|
|
220
|
+
return Option.some({
|
|
221
|
+
xml,
|
|
222
|
+
padding: content.length - xml.length,
|
|
223
|
+
writable: isWritable(text, trailer),
|
|
224
|
+
});
|
|
225
|
+
}),
|
|
226
|
+
);
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Options for wrapping serialized XMP in a packet.
|
|
230
|
+
*
|
|
231
|
+
* @since 0.1.0
|
|
232
|
+
* @category models
|
|
233
|
+
*/
|
|
234
|
+
export interface WrapOptions {
|
|
235
|
+
/**
|
|
236
|
+
* Bytes of whitespace padding before the trailer. Defaults to
|
|
237
|
+
* `DEFAULT_PADDING` for a writable packet and 0 for a read-only one.
|
|
238
|
+
*/
|
|
239
|
+
readonly padding?: number | undefined;
|
|
240
|
+
/** Whether the trailer is `end="w"` rather than `end="r"`. Defaults to `true`. */
|
|
241
|
+
readonly writable?: boolean | undefined;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
const header = `<?xpacket begin="" id="${PACKET_ID}"?>\n`;
|
|
245
|
+
const trailerOf = (writable: boolean) => `<?xpacket end="${writable ? 'w' : 'r'}"?>`;
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Whitespace padding of exactly `bytes` bytes: lines of 99 spaces and a
|
|
249
|
+
* newline, as XMP writers lay it out.
|
|
250
|
+
*
|
|
251
|
+
* @since 0.1.0
|
|
252
|
+
* @category serializing
|
|
253
|
+
*/
|
|
254
|
+
export const padding = (bytes: number): string => {
|
|
255
|
+
const lines = Math.floor(bytes / 100);
|
|
256
|
+
return `${`${' '.repeat(99)}\n`.repeat(lines)}${' '.repeat(bytes - lines * 100)}`;
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
const body = (xml: string) => (xml.endsWith('\n') ? xml : `${xml}\n`);
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Wraps serialized XMP (an `<x:xmpmeta>` element) in a UTF-8 packet.
|
|
263
|
+
*
|
|
264
|
+
* @since 0.1.0
|
|
265
|
+
* @category serializing
|
|
266
|
+
*/
|
|
267
|
+
export const wrap = (xml: string, options?: WrapOptions): string => {
|
|
268
|
+
const writable = options?.writable ?? true;
|
|
269
|
+
const pad = options?.padding ?? (writable ? DEFAULT_PADDING : 0);
|
|
270
|
+
return `${header}${body(xml)}${padding(pad)}${trailerOf(writable)}`;
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* The UTF-8 byte length of a string.
|
|
275
|
+
*
|
|
276
|
+
* @since 0.1.0
|
|
277
|
+
* @category serializing
|
|
278
|
+
*/
|
|
279
|
+
export const byteLength = (text: string): number => new TextEncoder().encode(text).length;
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Wraps serialized XMP in a UTF-8 packet of exactly `size` bytes, padding the
|
|
283
|
+
* difference: how an XMP packet is updated in place in a file. Returns
|
|
284
|
+
* `None` when the XMP does not fit.
|
|
285
|
+
*
|
|
286
|
+
* @since 0.1.0
|
|
287
|
+
* @category serializing
|
|
288
|
+
*/
|
|
289
|
+
export const wrapToSize = (
|
|
290
|
+
xml: string,
|
|
291
|
+
size: number,
|
|
292
|
+
options?: { readonly writable?: boolean | undefined },
|
|
293
|
+
): Option.Option<string> => {
|
|
294
|
+
const writable = options?.writable ?? true;
|
|
295
|
+
const fixed = byteLength(`${header}${body(xml)}${trailerOf(writable)}`);
|
|
296
|
+
return fixed > size ? Option.none() : Option.some(wrap(xml, { writable, padding: size - fixed }));
|
|
297
|
+
};
|
package/src/xmp/Pdf.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed accessors for the Adobe PDF schema (`pdf:`) and the PDF/UA
|
|
3
|
+
* identification schema (`pdfuaid:`, ISO 14289).
|
|
4
|
+
*
|
|
5
|
+
* @since 0.1.0
|
|
6
|
+
*/
|
|
7
|
+
import type * as Option from 'effect/Option';
|
|
8
|
+
import * as Accessors from './internal/accessors.ts';
|
|
9
|
+
import type * as Metadata from './Metadata.ts';
|
|
10
|
+
import { PDF, PDFUA_ID } from './Namespaces.ts';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The application that wrote the PDF (`pdf:Producer`).
|
|
14
|
+
*
|
|
15
|
+
* @since 0.1.0
|
|
16
|
+
* @category getters
|
|
17
|
+
*/
|
|
18
|
+
export const producer: (self: Metadata.Metadata) => Option.Option<string> = Accessors.text(
|
|
19
|
+
`${PDF}Producer`,
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Sets the application that wrote the PDF (`pdf:Producer`).
|
|
24
|
+
*
|
|
25
|
+
* @since 0.1.0
|
|
26
|
+
* @category setters
|
|
27
|
+
*/
|
|
28
|
+
export const setProducer: Metadata.Setter<string> = Accessors.setText(`${PDF}Producer`);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The keywords (`pdf:Keywords`), one text value.
|
|
32
|
+
*
|
|
33
|
+
* @since 0.1.0
|
|
34
|
+
* @category getters
|
|
35
|
+
*/
|
|
36
|
+
export const keywords: (self: Metadata.Metadata) => Option.Option<string> = Accessors.text(
|
|
37
|
+
`${PDF}Keywords`,
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Sets the keywords (`pdf:Keywords`), one text value.
|
|
42
|
+
*
|
|
43
|
+
* @since 0.1.0
|
|
44
|
+
* @category setters
|
|
45
|
+
*/
|
|
46
|
+
export const setKeywords: Metadata.Setter<string> = Accessors.setText(`${PDF}Keywords`);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The PDF version, such as `"1.7"` (`pdf:PDFVersion`).
|
|
50
|
+
*
|
|
51
|
+
* @since 0.1.0
|
|
52
|
+
* @category getters
|
|
53
|
+
*/
|
|
54
|
+
export const pdfVersion: (self: Metadata.Metadata) => Option.Option<string> = Accessors.text(
|
|
55
|
+
`${PDF}PDFVersion`,
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Sets the PDF version, such as `"1.7"` (`pdf:PDFVersion`).
|
|
60
|
+
*
|
|
61
|
+
* @since 0.1.0
|
|
62
|
+
* @category setters
|
|
63
|
+
*/
|
|
64
|
+
export const setPdfVersion: Metadata.Setter<string> = Accessors.setText(`${PDF}PDFVersion`);
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Whether the document is trapped (`pdf:Trapped`): `"True"`, `"False"` or `"Unknown"`.
|
|
68
|
+
*
|
|
69
|
+
* @since 0.1.0
|
|
70
|
+
* @category getters
|
|
71
|
+
*/
|
|
72
|
+
export const trapped: (self: Metadata.Metadata) => Option.Option<string> = Accessors.text(
|
|
73
|
+
`${PDF}Trapped`,
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Sets whether the document is trapped (`pdf:Trapped`): `"True"`, `"False"` or `"Unknown"`.
|
|
78
|
+
*
|
|
79
|
+
* @since 0.1.0
|
|
80
|
+
* @category setters
|
|
81
|
+
*/
|
|
82
|
+
export const setTrapped: Metadata.Setter<string> = Accessors.setText(`${PDF}Trapped`);
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* The PDF/UA part the document conforms to (`pdfuaid:part`), such as `1`.
|
|
86
|
+
*
|
|
87
|
+
* @since 0.1.0
|
|
88
|
+
* @category getters
|
|
89
|
+
*/
|
|
90
|
+
export const uaPart = (self: Metadata.Metadata): Option.Option<number> =>
|
|
91
|
+
Accessors.integer(`${PDFUA_ID}part`)(self);
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Sets the PDF/UA part the document conforms to (`pdfuaid:part`).
|
|
95
|
+
*
|
|
96
|
+
* @since 0.1.0
|
|
97
|
+
* @category setters
|
|
98
|
+
*/
|
|
99
|
+
export const setUaPart: Metadata.Setter<number> = Accessors.setInteger(`${PDFUA_ID}part`);
|