UNPKG

@tangle-js/ld-proofs

Version:

Linked Data Proofs on the Tangle. Powered by IOTA Identity & IOTA Streams

68 lines 6.1 kB
/* eslint-disable jsdoc/require-jsdoc */ import LdProofError from "../errors/ldProofError.mjs"; import LdProofErrorNames from "../errors/ldProofErrorNames.mjs"; import { LinkedDataProofTypes } from "../models/linkedDataProofTypes.mjs"; export default class JsonHelper { static getDocument(doc) { if ((typeof doc !== "string" && typeof doc !== "object") || Array.isArray(doc)) { throw new LdProofError(LdProofErrorNames.INVALID_DATA_TYPE, "Please provide a Javascript object or string in JSON format"); } let document; if (typeof doc === "string") { try { document = JSON.parse(doc); } catch { throw new LdProofError(LdProofErrorNames.INVALID_DATA_TYPE, "Invalid JSON Format"); } } else { document = JSON.parse(JSON.stringify(doc)); } return document; } static getSignedDocument(doc) { const result = this.getDocument(doc); if (!result.proof) { throw new LdProofError(LdProofErrorNames.JSON_DOC_NOT_SIGNED, "The provided JSON document does not include a Linked Data Signature"); } return result; } static getJsonLdDocument(doc) { const result = this.getDocument(doc); if (!result["@context"]) { throw new LdProofError(LdProofErrorNames.INVALID_DATA_TYPE, "Not a JSON-LD document. Use 'signJson' instead"); } return result; } static getSignedJsonLdDocument(doc) { const result = this.getJsonLdDocument(doc); if (!result.proof) { throw new LdProofError(LdProofErrorNames.JSON_DOC_NOT_SIGNED, "The provided JSON-LD document does not include a Linked Data Signature"); } return result; } static getAnchoredJsonLdDocument(doc) { const result = this.getJsonLdDocument(doc); if (!result.proof) { throw new LdProofError(LdProofErrorNames.JSON_DOC_NOT_SIGNED, "The provided JSON document does not include a proof"); } const proofDetails = result.proof; if (proofDetails.type !== LinkedDataProofTypes.IOTA_LD_PROOF_2021) { throw new LdProofError(LdProofErrorNames.JSON_DOC_NOT_SIGNED, "The provided JSON document does not include an IOTA Linked Data Proof"); } return result; } static getAnchoredDocument(doc) { const result = this.getDocument(doc); if (!result.proof) { throw new LdProofError(LdProofErrorNames.JSON_DOC_NOT_SIGNED, "The provided JSON document does not include a proof"); } const proofDetails = result.proof; if (proofDetails.type !== LinkedDataProofTypes.IOTA_LD_PROOF_2021) { throw new LdProofError(LdProofErrorNames.JSON_DOC_NOT_SIGNED, "The provided JSON document does not include an IOTA Linked Data Proof"); } return result; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkhlbHBlci5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGVscGVycy9qc29uSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUV4QyxPQUFPLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLGlCQUFpQixNQUFNLDZCQUE2QixDQUFDO0FBSzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXRFLE1BQU0sQ0FBQyxPQUFPLE9BQU8sVUFBVTtJQUNwQixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQXFDO1FBQzNELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1RSxNQUFNLElBQUksWUFBWSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUN0RCw2REFBNkQsQ0FBQyxDQUFDO1NBQ3RFO1FBRUQsSUFBSSxRQUFRLENBQUM7UUFFYixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUN6QixJQUFJO2dCQUNBLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzlCO1lBQUMsTUFBTTtnQkFDSixNQUFNLElBQUksWUFBWSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUN0RCxxQkFBcUIsQ0FBQyxDQUFDO2FBQzlCO1NBQ0o7YUFBTTtZQUNILFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM5QztRQUVELE9BQU8sUUFBeUIsQ0FBQztJQUNyQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQXFDO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDZixNQUFNLElBQUksWUFBWSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixFQUN4RCxxRUFBcUUsQ0FBQyxDQUFDO1NBQzlFO1FBRUQsT0FBTyxNQUE2QixDQUFDO0lBQ3pDLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBcUM7UUFDakUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVyQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JCLE1BQU0sSUFBSSxZQUFZLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQ3RELGdEQUFnRCxDQUFDLENBQUM7U0FDekQ7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQXFDO1FBQ3ZFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNmLE1BQU0sSUFBSSxZQUFZLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLEVBQ3hELHdFQUF3RSxDQUFDLENBQUM7U0FDakY7UUFFRCxPQUFPLE1BQTZCLENBQUM7SUFDekMsQ0FBQztJQUVNLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxHQUFxQztRQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDZixNQUFNLElBQUksWUFBWSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixFQUN4RCxxREFBcUQsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQXlCLENBQUM7UUFFdEQsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLG9CQUFvQixDQUFDLGtCQUFrQixFQUFFO1lBQy9ELE1BQU0sSUFBSSxZQUFZLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLEVBQ3hELHVFQUF1RSxDQUFDLENBQUM7U0FDaEY7UUFFRCxPQUFPLE1BQStCLENBQUM7SUFDM0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFxQztRQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ2YsTUFBTSxJQUFJLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsRUFDeEQscURBQXFELENBQUMsQ0FBQztTQUM5RDtRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUF5QixDQUFDO1FBRXRELElBQUksWUFBWSxDQUFDLElBQUksS0FBSyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRTtZQUMvRCxNQUFNLElBQUksWUFBWSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixFQUN4RCx1RUFBdUUsQ0FBQyxDQUFDO1NBQ2hGO1FBRUQsT0FBTyxNQUErQixDQUFDO0lBQzNDLENBQUM7Q0FDSiJ9