Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

did-jwt-vc

Package Overview
Dependencies
Maintainers
6
Versions
66
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

did-jwt-vc - npm Package Compare versions

Comparing version 2.1.6 to 2.1.7

7

CHANGELOG.md

@@ -0,1 +1,8 @@

## [2.1.7](https://github.com/decentralized-identity/did-jwt-vc/compare/2.1.6...2.1.7) (2021-08-31)
### Bug Fixes
* forward JWT options when creating a VC or VP ([#90](https://github.com/decentralized-identity/did-jwt-vc/issues/90)) ([13cea08](https://github.com/decentralized-identity/did-jwt-vc/commit/13cea0868a8126b9314b27283e72f6f3325eb943)), closes [#89](https://github.com/decentralized-identity/did-jwt-vc/issues/89)
## [2.1.6](https://github.com/decentralized-identity/did-jwt-vc/compare/2.1.5...2.1.6) (2021-07-22)

@@ -2,0 +9,0 @@

2

lib/index.js

@@ -1,2 +0,2 @@

var e=require("did-jwt");const t=/^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/,r="https://www.w3.org/2018/credentials/v1";function n(e){return Array.isArray(e)?e:[e]}function i(e){return Array.isArray(e)?e.map(e=>i(e)):e instanceof Date?new Date(e.getTime()):e&&"object"==typeof e?Object.getOwnPropertyNames(e).reduce((t,r)=>(Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r)),t[r]=i(e[r]),t),Object.create(Object.getPrototypeOf(e))):e}function o(e){return null!=e}function a(e,t=!0){var a,l,c,s,d,f,u;let p=i(e);var v,y,b;"object"==typeof(v=e)&&v.sub&&v.iss&&v.claim&&v.iat&&(p=function(e){const{iat:t,nbf:n,claim:i,vc:o,...a}=e,l={...a,nbf:n||t,vc:{"@context":[r],type:["VerifiableCredential"],credentialSubject:i}};return o&&(e.issVc=o),l}(e)),p.credentialSubject={...e.credentialSubject,...null==(a=e.vc)?void 0:a.credentialSubject},!e.sub||null!=(l=e.credentialSubject)&&l.id||!p.credentialSubject||(p.credentialSubject.id=e.sub,t&&delete p.sub),t&&(null==(y=p.vc)||delete y.credentialSubject),void 0!==e.issuer&&"object"!=typeof e.issuer||(p.issuer=function(e){if("object"!=typeof e)return e;const t={...e};return Object.keys(t).forEach(e=>void 0===t[e]&&delete t[e]),t}({id:e.iss,...e.issuer}),!t||null!=(b=e.issuer)&&b.id||delete p.iss),!e.id&&e.jti&&(p.id=p.id||p.jti,t&&delete p.jti);const x=[...n(p.type),...n(null==(c=p.vc)?void 0:c.type)].filter(o);var w,j,O,m;p.type=[...new Set(x)],t&&(null==(w=p.vc)||delete w.type),p.evidence=null==(s=e.vc)?void 0:s.evidence,t&&(null==(j=p.vc)||delete j.evidence),p.credentialStatus=null==(d=e.vc)?void 0:d.credentialStatus,t&&(null==(O=p.vc)||delete O.credentialStatus),p.termsOfUse=null==(f=e.vc)?void 0:f.termsOfUse,t&&(null==(m=p.vc)||delete m.termsOfUse);const g=[...n(e.context),...n(e["@context"]),...n(null==(u=e.vc)?void 0:u["@context"])].filter(o);var h;return p["@context"]=[...new Set(g)],t&&(delete p.context,null==(h=p.vc)||delete h["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(p.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete p.nbf:delete p.iat)),!e.expirationDate&&e.exp&&(p.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete p.exp),t&&p.vc&&0===Object.keys(p.vc).length&&delete p.vc,p}function l(t,r=!0){let n;try{n=e.decodeJWT(t)}catch(e){throw new TypeError("unknown credential format")}return{...a(n.payload,r),proof:{type:"JwtProof2020",jwt:t}}}function c(e,r=!0){var n;if("string"==typeof e){if(t.test(e))return l(e,r);{let t;try{t=JSON.parse(e)}catch(e){throw new TypeError("unknown credential format")}return c(t,r)}}return null!=(n=e.proof)&&n.jwt?i({...l(e.proof.jwt,r),proof:e.proof}):{proof:{},...a(e,r)}}function s(e,t=!0){var r,a,l;if(Array.isArray(e.credentialSubject))throw Error("credentialSubject of type array not supported");const c=i({vc:{...e.vc},...e});c.vc=c.vc;const s={...e.credentialSubject,...null==(r=e.vc)?void 0:r.credentialSubject};var d;e.sub||(c.sub=null==(d=e.credentialSubject)?void 0:d.id,t&&delete s.id);const f=[...n(e.context),...n(e["@context"]),...n(null==(a=e.vc)?void 0:a["@context"])].filter(o);c.vc["@context"]=[...new Set(f)],t&&(delete c.context,delete c["@context"]);const u=[...n(e.type),...n(null==(l=e.vc)?void 0:l.type)].filter(o);if(c.vc.type=[...new Set(u)],t&&delete c.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(c.jti=e.id,t&&delete c.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const r=Date.parse(e.issuanceDate);isNaN(r)||(c.nbf=Math.floor(r/1e3),t&&delete c.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const r=Date.parse(e.expirationDate);isNaN(r)||(c.exp=Math.floor(r/1e3),t&&delete c.expirationDate)}var p;e.issuer&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&("object"==typeof e.issuer?(c.iss=null==(p=e.issuer)?void 0:p.id,t&&(delete c.issuer.id,0===Object.keys(c.issuer).length&&delete c.issuer)):"string"==typeof e.issuer&&(c.iss=e.iss||""+e.issuer,t&&delete c.issuer)),c.vc.credentialSubject=s,t&&delete c.credentialSubject;const v=["evidence","termsOfUse","refreshService","credentialSchema","credentialStatus"];for(const r of v)e[r]&&(c.vc[r]||(c.vc[r]=e[r]),t&&delete c[r]);return c}function d(e,t=!0){var r,a,l;const s=i(e);var d;s.verifiableCredential=[...n(e.verifiableCredential),...n(null==(r=e.vp)?void 0:r.verifiableCredential)].filter(o),s.verifiableCredential=s.verifiableCredential.map(e=>c(e,t)),t&&(null==(d=s.vp)||delete d.verifiableCredential),e.iss&&!e.holder&&(s.holder=e.iss,t&&delete s.iss),e.aud&&(s.verifier=[...n(e.verifier),...n(e.aud)].filter(o),s.verifier=[...new Set(s.verifier)],t&&delete s.aud),e.jti&&-1===Object.getOwnPropertyNames(e).indexOf("id")&&(s.id=e.id||e.jti,t&&delete s.jti);const f=[...n(e.type),...n(null==(a=e.vp)?void 0:a.type)].filter(o);var u;s.type=[...new Set(f)],t&&(null==(u=s.vp)||delete u.type);const p=[...n(e.context),...n(e["@context"]),...n(null==(l=e.vp)?void 0:l["@context"])].filter(o);var v;return s["@context"]=[...new Set(p)],t&&(delete s.context,null==(v=s.vp)||delete v["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(s.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete s.nbf:delete s.iat)),!e.expirationDate&&e.exp&&(s.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete s.exp),s.vp&&0===Object.keys(s.vp).length&&t&&delete s.vp,s}function f(t,r=!0){let n;try{n=e.decodeJWT(t)}catch(e){throw new TypeError("unknown presentation format")}return{...d(n.payload,r),proof:{type:"JwtProof2020",jwt:t}}}function u(e,r=!0){var n;if("string"==typeof e){if(t.test(e))return f(e,r);{let t;try{t=JSON.parse(e)}catch(e){throw new TypeError("unknown presentation format")}return u(t,r)}}return null!=(n=e.proof)&&n.jwt?{...f(e.proof.jwt,r),proof:e.proof}:{proof:{},...d(e,r)}}function p(e,t=!0){var r,a,l;const c=i({vp:{...e.vp},...e});c.vp=c.vp;const s=[...n(e.context),...n(e["@context"]),...n(null==(r=e.vp)?void 0:r["@context"])].filter(o);c.vp["@context"]=[...new Set(s)],t&&(delete c.context,delete c["@context"]);const d=[...n(e.type),...n(null==(a=e.vp)?void 0:a.type)].filter(o);if(c.vp.type=[...new Set(d)],t&&delete c.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(c.jti=e.id,t&&delete c.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const r=Date.parse(e.issuanceDate);isNaN(r)||(c.nbf=Math.floor(r/1e3),t&&delete c.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const r=Date.parse(e.expirationDate);isNaN(r)||(c.exp=Math.floor(r/1e3),t&&delete c.expirationDate)}var f;if((c.verifiableCredential||null!=(l=c.vp)&&l.verifiableCredential)&&(c.vp.verifiableCredential=[...n(c.verifiableCredential),...n(null==(f=c.vp)?void 0:f.verifiableCredential)].filter(o).map(e=>{var t;return"object"==typeof e&&null!=(t=e.proof)&&t.jwt?e.proof.jwt:e})),t&&delete c.verifiableCredential,e.holder&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&"string"==typeof e.holder&&(c.iss=e.holder,t&&delete c.holder),e.verifier){const r=[...n(e.verifier),...n(e.aud)].filter(o);c.aud=[...new Set(r)],t&&delete c.verifier}return c}function v(e){if("string"==typeof e&&!e.match(t))throw new TypeError(`"${e}" is not a valid JWT format`)}function y(e){if("number"==typeof e){if(!(Number.isInteger(e)&&e<1e11))throw new TypeError(`"${e}" is not a unix timestamp in seconds`)}else if("string"==typeof e)y(Math.floor(new Date(e).valueOf()/1e3));else if(!(t=e)||isNaN(t)||"[object Date]"!==Object.prototype.toString.call(t))throw new TypeError(`"${e}" is not a valid time`);var t}function b(e){const t=n(e);if(t.length<1||-1===t.indexOf(r))throw new TypeError(`@context is missing default context "${r}"`)}function x(e){const t=n(e);if(t.length<1||-1===t.indexOf("VerifiableCredential"))throw new TypeError('type is missing default "VerifiableCredential"')}function w(e){const t=n(e);if(t.length<1||-1===t.indexOf("VerifiablePresentation"))throw new TypeError('type is missing default "VerifiablePresentation"')}function j(e){if(0===Object.keys(e).length)throw new TypeError("credentialSubject must not be empty")}function O(e){b(e.vc["@context"]),x(e.vc.type),j(e.vc.credentialSubject),e.nbf&&y(e.nbf),e.exp&&y(e.exp)}function m(e){b(e["@context"]),x(e.type),j(e.credentialSubject),e.issuanceDate&&y(e.issuanceDate),e.expirationDate&&y(e.expirationDate)}function g(e){if(b(e.vp["@context"]),w(e.vp.type),e.vp.verifiableCredential&&e.vp.verifiableCredential.length>=1)for(const t of n(e.vp.verifiableCredential))"string"==typeof t?v(t):m(t);e.exp&&y(e.exp)}function h(e){if(b(e["@context"]),w(e.type),e.verifiableCredential&&e.verifiableCredential.length>=1)for(const t of e.verifiableCredential)"string"==typeof t?v(t):m(t);e.expirationDate&&y(e.expirationDate)}function S(e,t){if(t.challenge&&t.challenge!==e.nonce)throw new Error(`Presentation does not contain the mandatory challenge (JWT: nonce) for : ${t.challenge}`);if(t.domain){let r;if(e.aud&&(r=(Array.isArray(e.aud)?e.aud:[e.aud]).find(e=>t.domain===e)),void 0===r)throw new Error(`Presentation does not contain the mandatory domain (JWT: aud) for : ${t.domain}`)}}exports.createVerifiableCredentialJwt=function(t,r,n={}){try{var i;const o={iat:void 0,...s(t,n.removeOriginalFields)};return O(o),Promise.resolve(e.createJWT(o,{issuer:r.did||o.iss||"",signer:r.signer},{...n.header,alg:r.alg||(null==(i=n.header)?void 0:i.alg)||"ES256K"}))}catch(e){return Promise.reject(e)}},exports.createVerifiablePresentationJwt=function(t,r,i={}){try{var a;const l={iat:void 0,...p(t,null==i?void 0:i.removeOriginalFields)};if(i.challenge&&-1===Object.getOwnPropertyNames(l).indexOf("nonce")&&(l.nonce=i.challenge),i.domain){const e=[...n(i.domain),...n(l.aud)].filter(o);l.aud=[...new Set(e)]}return g(l),Promise.resolve(e.createJWT(l,{issuer:r.did||l.iss||"",signer:r.signer},{...i.header,alg:r.alg||(null==(a=i.header)?void 0:a.alg)||"ES256K"}))}catch(e){return Promise.reject(e)}},exports.normalizeCredential=c,exports.normalizePresentation=u,exports.transformCredentialInput=s,exports.transformPresentationInput=p,exports.validateCredentialPayload=m,exports.validateJwtCredentialPayload=O,exports.validateJwtPresentationPayload=g,exports.validatePresentationPayload=h,exports.verifyCredential=function(t,r,n={}){try{return Promise.resolve(e.verifyJWT(t,{resolver:r,...n})).then(function(e){return e.verifiableCredential=c(e.jwt,null==n?void 0:n.removeOriginalFields),m(e.verifiableCredential),e})}catch(e){return Promise.reject(e)}},exports.verifyPresentation=function(t,r,n={}){try{return Promise.resolve(e.verifyJWT(t,{resolver:r,...n})).then(function(e){return S(e.payload,n),e.verifiablePresentation=u(e.jwt,null==n?void 0:n.removeOriginalFields),h(e.verifiablePresentation),e})}catch(e){return Promise.reject(e)}},exports.verifyPresentationPayloadOptions=S;
var e=require("did-jwt");const t=/^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/,r="https://www.w3.org/2018/credentials/v1";function n(e){return Array.isArray(e)?e:[e]}function i(e){return Array.isArray(e)?e.map(e=>i(e)):e instanceof Date?new Date(e.getTime()):e&&"object"==typeof e?Object.getOwnPropertyNames(e).reduce((t,r)=>(Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r)),t[r]=i(e[r]),t),Object.create(Object.getPrototypeOf(e))):e}function o(e){return null!=e}function a(e,t=!0){var a,l,c,s,d,f,u;let p=i(e);var v,y,b;"object"==typeof(v=e)&&v.sub&&v.iss&&v.claim&&v.iat&&(p=function(e){const{iat:t,nbf:n,claim:i,vc:o,...a}=e,l={...a,nbf:n||t,vc:{"@context":[r],type:["VerifiableCredential"],credentialSubject:i}};return o&&(e.issVc=o),l}(e)),p.credentialSubject={...e.credentialSubject,...null==(a=e.vc)?void 0:a.credentialSubject},!e.sub||null!=(l=e.credentialSubject)&&l.id||!p.credentialSubject||(p.credentialSubject.id=e.sub,t&&delete p.sub),t&&(null==(y=p.vc)||delete y.credentialSubject),void 0!==e.issuer&&"object"!=typeof e.issuer||(p.issuer=function(e){if("object"!=typeof e)return e;const t={...e};return Object.keys(t).forEach(e=>void 0===t[e]&&delete t[e]),t}({id:e.iss,...e.issuer}),!t||null!=(b=e.issuer)&&b.id||delete p.iss),!e.id&&e.jti&&(p.id=p.id||p.jti,t&&delete p.jti);const x=[...n(p.type),...n(null==(c=p.vc)?void 0:c.type)].filter(o);var w,j,O,m;p.type=[...new Set(x)],t&&(null==(w=p.vc)||delete w.type),p.evidence=null==(s=e.vc)?void 0:s.evidence,t&&(null==(j=p.vc)||delete j.evidence),p.credentialStatus=null==(d=e.vc)?void 0:d.credentialStatus,t&&(null==(O=p.vc)||delete O.credentialStatus),p.termsOfUse=null==(f=e.vc)?void 0:f.termsOfUse,t&&(null==(m=p.vc)||delete m.termsOfUse);const g=[...n(e.context),...n(e["@context"]),...n(null==(u=e.vc)?void 0:u["@context"])].filter(o);var h;return p["@context"]=[...new Set(g)],t&&(delete p.context,null==(h=p.vc)||delete h["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(p.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete p.nbf:delete p.iat)),!e.expirationDate&&e.exp&&(p.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete p.exp),t&&p.vc&&0===Object.keys(p.vc).length&&delete p.vc,p}function l(t,r=!0){let n;try{n=e.decodeJWT(t)}catch(e){throw new TypeError("unknown credential format")}return{...a(n.payload,r),proof:{type:"JwtProof2020",jwt:t}}}function c(e,r=!0){var n;if("string"==typeof e){if(t.test(e))return l(e,r);{let t;try{t=JSON.parse(e)}catch(e){throw new TypeError("unknown credential format")}return c(t,r)}}return null!=(n=e.proof)&&n.jwt?i({...l(e.proof.jwt,r),proof:e.proof}):{proof:{},...a(e,r)}}function s(e,t=!0){var r,a,l;if(Array.isArray(e.credentialSubject))throw Error("credentialSubject of type array not supported");const c=i({vc:{...e.vc},...e});c.vc=c.vc;const s={...e.credentialSubject,...null==(r=e.vc)?void 0:r.credentialSubject};var d;e.sub||(c.sub=null==(d=e.credentialSubject)?void 0:d.id,t&&delete s.id);const f=[...n(e.context),...n(e["@context"]),...n(null==(a=e.vc)?void 0:a["@context"])].filter(o);c.vc["@context"]=[...new Set(f)],t&&(delete c.context,delete c["@context"]);const u=[...n(e.type),...n(null==(l=e.vc)?void 0:l.type)].filter(o);if(c.vc.type=[...new Set(u)],t&&delete c.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(c.jti=e.id,t&&delete c.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const r=Date.parse(e.issuanceDate);isNaN(r)||(c.nbf=Math.floor(r/1e3),t&&delete c.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const r=Date.parse(e.expirationDate);isNaN(r)||(c.exp=Math.floor(r/1e3),t&&delete c.expirationDate)}var p;e.issuer&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&("object"==typeof e.issuer?(c.iss=null==(p=e.issuer)?void 0:p.id,t&&(delete c.issuer.id,0===Object.keys(c.issuer).length&&delete c.issuer)):"string"==typeof e.issuer&&(c.iss=e.iss||""+e.issuer,t&&delete c.issuer)),c.vc.credentialSubject=s,t&&delete c.credentialSubject;const v=["evidence","termsOfUse","refreshService","credentialSchema","credentialStatus"];for(const r of v)e[r]&&(c.vc[r]||(c.vc[r]=e[r]),t&&delete c[r]);return c}function d(e,t=!0){var r,a,l;const s=i(e);var d;s.verifiableCredential=[...n(e.verifiableCredential),...n(null==(r=e.vp)?void 0:r.verifiableCredential)].filter(o),s.verifiableCredential=s.verifiableCredential.map(e=>c(e,t)),t&&(null==(d=s.vp)||delete d.verifiableCredential),e.iss&&!e.holder&&(s.holder=e.iss,t&&delete s.iss),e.aud&&(s.verifier=[...n(e.verifier),...n(e.aud)].filter(o),s.verifier=[...new Set(s.verifier)],t&&delete s.aud),e.jti&&-1===Object.getOwnPropertyNames(e).indexOf("id")&&(s.id=e.id||e.jti,t&&delete s.jti);const f=[...n(e.type),...n(null==(a=e.vp)?void 0:a.type)].filter(o);var u;s.type=[...new Set(f)],t&&(null==(u=s.vp)||delete u.type);const p=[...n(e.context),...n(e["@context"]),...n(null==(l=e.vp)?void 0:l["@context"])].filter(o);var v;return s["@context"]=[...new Set(p)],t&&(delete s.context,null==(v=s.vp)||delete v["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(s.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete s.nbf:delete s.iat)),!e.expirationDate&&e.exp&&(s.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete s.exp),s.vp&&0===Object.keys(s.vp).length&&t&&delete s.vp,s}function f(t,r=!0){let n;try{n=e.decodeJWT(t)}catch(e){throw new TypeError("unknown presentation format")}return{...d(n.payload,r),proof:{type:"JwtProof2020",jwt:t}}}function u(e,r=!0){var n;if("string"==typeof e){if(t.test(e))return f(e,r);{let t;try{t=JSON.parse(e)}catch(e){throw new TypeError("unknown presentation format")}return u(t,r)}}return null!=(n=e.proof)&&n.jwt?{...f(e.proof.jwt,r),proof:e.proof}:{proof:{},...d(e,r)}}function p(e,t=!0){var r,a,l;const c=i({vp:{...e.vp},...e});c.vp=c.vp;const s=[...n(e.context),...n(e["@context"]),...n(null==(r=e.vp)?void 0:r["@context"])].filter(o);c.vp["@context"]=[...new Set(s)],t&&(delete c.context,delete c["@context"]);const d=[...n(e.type),...n(null==(a=e.vp)?void 0:a.type)].filter(o);if(c.vp.type=[...new Set(d)],t&&delete c.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(c.jti=e.id,t&&delete c.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const r=Date.parse(e.issuanceDate);isNaN(r)||(c.nbf=Math.floor(r/1e3),t&&delete c.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const r=Date.parse(e.expirationDate);isNaN(r)||(c.exp=Math.floor(r/1e3),t&&delete c.expirationDate)}var f;if((c.verifiableCredential||null!=(l=c.vp)&&l.verifiableCredential)&&(c.vp.verifiableCredential=[...n(c.verifiableCredential),...n(null==(f=c.vp)?void 0:f.verifiableCredential)].filter(o).map(e=>{var t;return"object"==typeof e&&null!=(t=e.proof)&&t.jwt?e.proof.jwt:e})),t&&delete c.verifiableCredential,e.holder&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&"string"==typeof e.holder&&(c.iss=e.holder,t&&delete c.holder),e.verifier){const r=[...n(e.verifier),...n(e.aud)].filter(o);c.aud=[...new Set(r)],t&&delete c.verifier}return c}function v(e){if("string"==typeof e&&!e.match(t))throw new TypeError(`"${e}" is not a valid JWT format`)}function y(e){if("number"==typeof e){if(!(Number.isInteger(e)&&e<1e11))throw new TypeError(`"${e}" is not a unix timestamp in seconds`)}else if("string"==typeof e)y(Math.floor(new Date(e).valueOf()/1e3));else if(!(t=e)||isNaN(t)||"[object Date]"!==Object.prototype.toString.call(t))throw new TypeError(`"${e}" is not a valid time`);var t}function b(e){const t=n(e);if(t.length<1||-1===t.indexOf(r))throw new TypeError(`@context is missing default context "${r}"`)}function x(e){const t=n(e);if(t.length<1||-1===t.indexOf("VerifiableCredential"))throw new TypeError('type is missing default "VerifiableCredential"')}function w(e){const t=n(e);if(t.length<1||-1===t.indexOf("VerifiablePresentation"))throw new TypeError('type is missing default "VerifiablePresentation"')}function j(e){if(0===Object.keys(e).length)throw new TypeError("credentialSubject must not be empty")}function O(e){b(e.vc["@context"]),x(e.vc.type),j(e.vc.credentialSubject),e.nbf&&y(e.nbf),e.exp&&y(e.exp)}function m(e){b(e["@context"]),x(e.type),j(e.credentialSubject),e.issuanceDate&&y(e.issuanceDate),e.expirationDate&&y(e.expirationDate)}function g(e){if(b(e.vp["@context"]),w(e.vp.type),e.vp.verifiableCredential&&e.vp.verifiableCredential.length>=1)for(const t of n(e.vp.verifiableCredential))"string"==typeof t?v(t):m(t);e.exp&&y(e.exp)}function h(e){if(b(e["@context"]),w(e.type),e.verifiableCredential&&e.verifiableCredential.length>=1)for(const t of e.verifiableCredential)"string"==typeof t?v(t):m(t);e.expirationDate&&y(e.expirationDate)}function S(e,t){if(t.challenge&&t.challenge!==e.nonce)throw new Error(`Presentation does not contain the mandatory challenge (JWT: nonce) for : ${t.challenge}`);if(t.domain){let r;if(e.aud&&(r=(Array.isArray(e.aud)?e.aud:[e.aud]).find(e=>t.domain===e)),void 0===r)throw new Error(`Presentation does not contain the mandatory domain (JWT: aud) for : ${t.domain}`)}}exports.createVerifiableCredentialJwt=function(t,r,n={}){try{var i;const o={iat:void 0,...s(t,n.removeOriginalFields)};return O(o),Promise.resolve(e.createJWT(o,{...n,issuer:r.did||o.iss||"",signer:r.signer},{...n.header,alg:r.alg||(null==(i=n.header)?void 0:i.alg)||"ES256K"}))}catch(e){return Promise.reject(e)}},exports.createVerifiablePresentationJwt=function(t,r,i={}){try{var a;const l={iat:void 0,...p(t,null==i?void 0:i.removeOriginalFields)};if(i.challenge&&-1===Object.getOwnPropertyNames(l).indexOf("nonce")&&(l.nonce=i.challenge),i.domain){const e=[...n(i.domain),...n(l.aud)].filter(o);l.aud=[...new Set(e)]}return g(l),Promise.resolve(e.createJWT(l,{...i,issuer:r.did||l.iss||"",signer:r.signer},{...i.header,alg:r.alg||(null==(a=i.header)?void 0:a.alg)||"ES256K"}))}catch(e){return Promise.reject(e)}},exports.normalizeCredential=c,exports.normalizePresentation=u,exports.transformCredentialInput=s,exports.transformPresentationInput=p,exports.validateCredentialPayload=m,exports.validateJwtCredentialPayload=O,exports.validateJwtPresentationPayload=g,exports.validatePresentationPayload=h,exports.verifyCredential=function(t,r,n={}){try{return Promise.resolve(e.verifyJWT(t,{resolver:r,...n})).then(function(e){return e.verifiableCredential=c(e.jwt,null==n?void 0:n.removeOriginalFields),m(e.verifiableCredential),e})}catch(e){return Promise.reject(e)}},exports.verifyPresentation=function(t,r,n={}){try{return Promise.resolve(e.verifyJWT(t,{resolver:r,...n})).then(function(e){return S(e.payload,n),e.verifiablePresentation=u(e.jwt,null==n?void 0:n.removeOriginalFields),h(e.verifiablePresentation),e})}catch(e){return Promise.reject(e)}},exports.verifyPresentationPayloadOptions=S;
//# sourceMappingURL=index.js.map

@@ -1,2 +0,2 @@

import{decodeJWT as e,createJWT as t,verifyJWT as n}from"did-jwt";function i(){return(i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}).apply(this,arguments)}const r=/^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/,o="https://www.w3.org/2018/credentials/v1",a=["iat","nbf","claim","vc"];function l(e){return Array.isArray(e)?e:[e]}function c(e){return Array.isArray(e)?e.map(e=>c(e)):e instanceof Date?new Date(e.getTime()):e&&"object"==typeof e?Object.getOwnPropertyNames(e).reduce((t,n)=>(Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n)),t[n]=c(e[n]),t),Object.create(Object.getPrototypeOf(e))):e}function s(e){return null!=e}function d(e,t=!0){var n,r,d,f,u,p,v;let b=c(e);var y,w,x;"object"==typeof(y=e)&&y.sub&&y.iss&&y.claim&&y.iat&&(b=function(e){const{iat:t,nbf:n,claim:r,vc:l}=e,c=i({},function(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i<o.length;i++)t.indexOf(n=o[i])>=0||(r[n]=e[n]);return r}(e,a),{nbf:n||t,vc:{"@context":[o],type:["VerifiableCredential"],credentialSubject:r}});return l&&(e.issVc=l),c}(e)),b.credentialSubject=i({},e.credentialSubject,null==(n=e.vc)?void 0:n.credentialSubject),!e.sub||null!=(r=e.credentialSubject)&&r.id||!b.credentialSubject||(b.credentialSubject.id=e.sub,t&&delete b.sub),t&&(null==(w=b.vc)||delete w.credentialSubject),void 0!==e.issuer&&"object"!=typeof e.issuer||(b.issuer=function(e){if("object"!=typeof e)return e;const t=i({},e);return Object.keys(t).forEach(e=>void 0===t[e]&&delete t[e]),t}(i({id:e.iss},e.issuer)),!t||null!=(x=e.issuer)&&x.id||delete b.iss),!e.id&&e.jti&&(b.id=b.id||b.jti,t&&delete b.jti);const j=[...l(b.type),...l(null==(d=b.vc)?void 0:d.type)].filter(s);var O,g,h,m;b.type=[...new Set(j)],t&&(null==(O=b.vc)||delete O.type),b.evidence=null==(f=e.vc)?void 0:f.evidence,t&&(null==(g=b.vc)||delete g.evidence),b.credentialStatus=null==(u=e.vc)?void 0:u.credentialStatus,t&&(null==(h=b.vc)||delete h.credentialStatus),b.termsOfUse=null==(p=e.vc)?void 0:p.termsOfUse,t&&(null==(m=b.vc)||delete m.termsOfUse);const S=[...l(e.context),...l(e["@context"]),...l(null==(v=e.vc)?void 0:v["@context"])].filter(s);var D;return b["@context"]=[...new Set(S)],t&&(delete b.context,null==(D=b.vc)||delete D["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(b.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete b.nbf:delete b.iat)),!e.expirationDate&&e.exp&&(b.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete b.exp),t&&b.vc&&0===Object.keys(b.vc).length&&delete b.vc,b}function f(t,n=!0){let r;try{r=e(t)}catch(e){throw new TypeError("unknown credential format")}return i({},d(r.payload,n),{proof:{type:"JwtProof2020",jwt:t}})}function u(e,t=!0){var n;if("string"==typeof e){if(r.test(e))return f(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown credential format")}return u(n,t)}}return null!=(n=e.proof)&&n.jwt?c(i({},f(e.proof.jwt,t),{proof:e.proof})):i({proof:{}},d(e,t))}function p(e,t=!0){var n,r,o;if(Array.isArray(e.credentialSubject))throw Error("credentialSubject of type array not supported");const a=c(i({vc:i({},e.vc)},e));a.vc=a.vc;const d=i({},e.credentialSubject,null==(n=e.vc)?void 0:n.credentialSubject);var f;e.sub||(a.sub=null==(f=e.credentialSubject)?void 0:f.id,t&&delete d.id);const u=[...l(e.context),...l(e["@context"]),...l(null==(r=e.vc)?void 0:r["@context"])].filter(s);a.vc["@context"]=[...new Set(u)],t&&(delete a.context,delete a["@context"]);const p=[...l(e.type),...l(null==(o=e.vc)?void 0:o.type)].filter(s);if(a.vc.type=[...new Set(p)],t&&delete a.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(a.jti=e.id,t&&delete a.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(a.nbf=Math.floor(n/1e3),t&&delete a.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(a.exp=Math.floor(n/1e3),t&&delete a.expirationDate)}var v;e.issuer&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&("object"==typeof e.issuer?(a.iss=null==(v=e.issuer)?void 0:v.id,t&&(delete a.issuer.id,0===Object.keys(a.issuer).length&&delete a.issuer)):"string"==typeof e.issuer&&(a.iss=e.iss||""+e.issuer,t&&delete a.issuer)),a.vc.credentialSubject=d,t&&delete a.credentialSubject;const b=["evidence","termsOfUse","refreshService","credentialSchema","credentialStatus"];for(const n of b)e[n]&&(a.vc[n]||(a.vc[n]=e[n]),t&&delete a[n]);return a}function v(e,t=!0){var n,i,r;const o=c(e);var a;o.verifiableCredential=[...l(e.verifiableCredential),...l(null==(n=e.vp)?void 0:n.verifiableCredential)].filter(s),o.verifiableCredential=o.verifiableCredential.map(e=>u(e,t)),t&&(null==(a=o.vp)||delete a.verifiableCredential),e.iss&&!e.holder&&(o.holder=e.iss,t&&delete o.iss),e.aud&&(o.verifier=[...l(e.verifier),...l(e.aud)].filter(s),o.verifier=[...new Set(o.verifier)],t&&delete o.aud),e.jti&&-1===Object.getOwnPropertyNames(e).indexOf("id")&&(o.id=e.id||e.jti,t&&delete o.jti);const d=[...l(e.type),...l(null==(i=e.vp)?void 0:i.type)].filter(s);var f;o.type=[...new Set(d)],t&&(null==(f=o.vp)||delete f.type);const p=[...l(e.context),...l(e["@context"]),...l(null==(r=e.vp)?void 0:r["@context"])].filter(s);var v;return o["@context"]=[...new Set(p)],t&&(delete o.context,null==(v=o.vp)||delete v["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(o.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete o.nbf:delete o.iat)),!e.expirationDate&&e.exp&&(o.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete o.exp),o.vp&&0===Object.keys(o.vp).length&&t&&delete o.vp,o}function b(t,n=!0){let r;try{r=e(t)}catch(e){throw new TypeError("unknown presentation format")}return i({},v(r.payload,n),{proof:{type:"JwtProof2020",jwt:t}})}function y(e,t=!0){var n;if("string"==typeof e){if(r.test(e))return b(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown presentation format")}return y(n,t)}}return null!=(n=e.proof)&&n.jwt?i({},b(e.proof.jwt,t),{proof:e.proof}):i({proof:{}},v(e,t))}function w(e,t=!0){var n,r,o;const a=c(i({vp:i({},e.vp)},e));a.vp=a.vp;const d=[...l(e.context),...l(e["@context"]),...l(null==(n=e.vp)?void 0:n["@context"])].filter(s);a.vp["@context"]=[...new Set(d)],t&&(delete a.context,delete a["@context"]);const f=[...l(e.type),...l(null==(r=e.vp)?void 0:r.type)].filter(s);if(a.vp.type=[...new Set(f)],t&&delete a.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(a.jti=e.id,t&&delete a.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(a.nbf=Math.floor(n/1e3),t&&delete a.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(a.exp=Math.floor(n/1e3),t&&delete a.expirationDate)}var u;if((a.verifiableCredential||null!=(o=a.vp)&&o.verifiableCredential)&&(a.vp.verifiableCredential=[...l(a.verifiableCredential),...l(null==(u=a.vp)?void 0:u.verifiableCredential)].filter(s).map(e=>{var t;return"object"==typeof e&&null!=(t=e.proof)&&t.jwt?e.proof.jwt:e})),t&&delete a.verifiableCredential,e.holder&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&"string"==typeof e.holder&&(a.iss=e.holder,t&&delete a.holder),e.verifier){const n=[...l(e.verifier),...l(e.aud)].filter(s);a.aud=[...new Set(n)],t&&delete a.verifier}return a}function x(e){if("string"==typeof e&&!e.match(r))throw new TypeError(`"${e}" is not a valid JWT format`)}function j(e){if("number"==typeof e){if(!(Number.isInteger(e)&&e<1e11))throw new TypeError(`"${e}" is not a unix timestamp in seconds`)}else if("string"==typeof e)j(Math.floor(new Date(e).valueOf()/1e3));else if(!(t=e)||isNaN(t)||"[object Date]"!==Object.prototype.toString.call(t))throw new TypeError(`"${e}" is not a valid time`);var t}function O(e){const t=l(e);if(t.length<1||-1===t.indexOf(o))throw new TypeError(`@context is missing default context "${o}"`)}function g(e){const t=l(e);if(t.length<1||-1===t.indexOf("VerifiableCredential"))throw new TypeError('type is missing default "VerifiableCredential"')}function h(e){const t=l(e);if(t.length<1||-1===t.indexOf("VerifiablePresentation"))throw new TypeError('type is missing default "VerifiablePresentation"')}function m(e){if(0===Object.keys(e).length)throw new TypeError("credentialSubject must not be empty")}async function S(e,n,r={}){var o;const a=i({iat:void 0},p(e,r.removeOriginalFields));return N(a),t(a,{issuer:n.did||a.iss||"",signer:n.signer},i({},r.header,{alg:n.alg||(null==(o=r.header)?void 0:o.alg)||"ES256K"}))}async function D(e,n,r={}){var o;const a=i({iat:void 0},w(e,null==r?void 0:r.removeOriginalFields));if(r.challenge&&-1===Object.getOwnPropertyNames(a).indexOf("nonce")&&(a.nonce=r.challenge),r.domain){const e=[...l(r.domain),...l(a.aud)].filter(s);a.aud=[...new Set(e)]}return P(a),t(a,{issuer:n.did||a.iss||"",signer:n.signer},i({},r.header,{alg:n.alg||(null==(o=r.header)?void 0:o.alg)||"ES256K"}))}function N(e){O(e.vc["@context"]),g(e.vc.type),m(e.vc.credentialSubject),e.nbf&&j(e.nbf),e.exp&&j(e.exp)}function C(e){O(e["@context"]),g(e.type),m(e.credentialSubject),e.issuanceDate&&j(e.issuanceDate),e.expirationDate&&j(e.expirationDate)}function P(e){if(O(e.vp["@context"]),h(e.vp.type),e.vp.verifiableCredential&&e.vp.verifiableCredential.length>=1)for(const t of l(e.vp.verifiableCredential))"string"==typeof t?x(t):C(t);e.exp&&j(e.exp)}function E(e){if(O(e["@context"]),h(e.type),e.verifiableCredential&&e.verifiableCredential.length>=1)for(const t of e.verifiableCredential)"string"==typeof t?x(t):C(t);e.expirationDate&&j(e.expirationDate)}async function T(e,t,r={}){const o=await n(e,i({resolver:t},r));return o.verifiableCredential=u(o.jwt,null==r?void 0:r.removeOriginalFields),C(o.verifiableCredential),o}function A(e,t){if(t.challenge&&t.challenge!==e.nonce)throw new Error(`Presentation does not contain the mandatory challenge (JWT: nonce) for : ${t.challenge}`);if(t.domain){let n;if(e.aud&&(n=(Array.isArray(e.aud)?e.aud:[e.aud]).find(e=>t.domain===e)),void 0===n)throw new Error(`Presentation does not contain the mandatory domain (JWT: aud) for : ${t.domain}`)}}async function k(e,t,r={}){const o=await n(e,i({resolver:t},r));return A(o.payload,r),o.verifiablePresentation=y(o.jwt,null==r?void 0:r.removeOriginalFields),E(o.verifiablePresentation),o}export{S as createVerifiableCredentialJwt,D as createVerifiablePresentationJwt,u as normalizeCredential,y as normalizePresentation,p as transformCredentialInput,w as transformPresentationInput,C as validateCredentialPayload,N as validateJwtCredentialPayload,P as validateJwtPresentationPayload,E as validatePresentationPayload,T as verifyCredential,k as verifyPresentation,A as verifyPresentationPayloadOptions};
import{decodeJWT as e,createJWT as t,verifyJWT as n}from"did-jwt";function i(){return(i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}).apply(this,arguments)}const r=/^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/,o="https://www.w3.org/2018/credentials/v1",a=["iat","nbf","claim","vc"];function l(e){return Array.isArray(e)?e:[e]}function c(e){return Array.isArray(e)?e.map(e=>c(e)):e instanceof Date?new Date(e.getTime()):e&&"object"==typeof e?Object.getOwnPropertyNames(e).reduce((t,n)=>(Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n)),t[n]=c(e[n]),t),Object.create(Object.getPrototypeOf(e))):e}function s(e){return null!=e}function d(e,t=!0){var n,r,d,f,u,p,v;let b=c(e);var y,w,x;"object"==typeof(y=e)&&y.sub&&y.iss&&y.claim&&y.iat&&(b=function(e){const{iat:t,nbf:n,claim:r,vc:l}=e,c=i({},function(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i<o.length;i++)t.indexOf(n=o[i])>=0||(r[n]=e[n]);return r}(e,a),{nbf:n||t,vc:{"@context":[o],type:["VerifiableCredential"],credentialSubject:r}});return l&&(e.issVc=l),c}(e)),b.credentialSubject=i({},e.credentialSubject,null==(n=e.vc)?void 0:n.credentialSubject),!e.sub||null!=(r=e.credentialSubject)&&r.id||!b.credentialSubject||(b.credentialSubject.id=e.sub,t&&delete b.sub),t&&(null==(w=b.vc)||delete w.credentialSubject),void 0!==e.issuer&&"object"!=typeof e.issuer||(b.issuer=function(e){if("object"!=typeof e)return e;const t=i({},e);return Object.keys(t).forEach(e=>void 0===t[e]&&delete t[e]),t}(i({id:e.iss},e.issuer)),!t||null!=(x=e.issuer)&&x.id||delete b.iss),!e.id&&e.jti&&(b.id=b.id||b.jti,t&&delete b.jti);const j=[...l(b.type),...l(null==(d=b.vc)?void 0:d.type)].filter(s);var O,g,h,m;b.type=[...new Set(j)],t&&(null==(O=b.vc)||delete O.type),b.evidence=null==(f=e.vc)?void 0:f.evidence,t&&(null==(g=b.vc)||delete g.evidence),b.credentialStatus=null==(u=e.vc)?void 0:u.credentialStatus,t&&(null==(h=b.vc)||delete h.credentialStatus),b.termsOfUse=null==(p=e.vc)?void 0:p.termsOfUse,t&&(null==(m=b.vc)||delete m.termsOfUse);const S=[...l(e.context),...l(e["@context"]),...l(null==(v=e.vc)?void 0:v["@context"])].filter(s);var D;return b["@context"]=[...new Set(S)],t&&(delete b.context,null==(D=b.vc)||delete D["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(b.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete b.nbf:delete b.iat)),!e.expirationDate&&e.exp&&(b.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete b.exp),t&&b.vc&&0===Object.keys(b.vc).length&&delete b.vc,b}function f(t,n=!0){let r;try{r=e(t)}catch(e){throw new TypeError("unknown credential format")}return i({},d(r.payload,n),{proof:{type:"JwtProof2020",jwt:t}})}function u(e,t=!0){var n;if("string"==typeof e){if(r.test(e))return f(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown credential format")}return u(n,t)}}return null!=(n=e.proof)&&n.jwt?c(i({},f(e.proof.jwt,t),{proof:e.proof})):i({proof:{}},d(e,t))}function p(e,t=!0){var n,r,o;if(Array.isArray(e.credentialSubject))throw Error("credentialSubject of type array not supported");const a=c(i({vc:i({},e.vc)},e));a.vc=a.vc;const d=i({},e.credentialSubject,null==(n=e.vc)?void 0:n.credentialSubject);var f;e.sub||(a.sub=null==(f=e.credentialSubject)?void 0:f.id,t&&delete d.id);const u=[...l(e.context),...l(e["@context"]),...l(null==(r=e.vc)?void 0:r["@context"])].filter(s);a.vc["@context"]=[...new Set(u)],t&&(delete a.context,delete a["@context"]);const p=[...l(e.type),...l(null==(o=e.vc)?void 0:o.type)].filter(s);if(a.vc.type=[...new Set(p)],t&&delete a.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(a.jti=e.id,t&&delete a.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(a.nbf=Math.floor(n/1e3),t&&delete a.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(a.exp=Math.floor(n/1e3),t&&delete a.expirationDate)}var v;e.issuer&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&("object"==typeof e.issuer?(a.iss=null==(v=e.issuer)?void 0:v.id,t&&(delete a.issuer.id,0===Object.keys(a.issuer).length&&delete a.issuer)):"string"==typeof e.issuer&&(a.iss=e.iss||""+e.issuer,t&&delete a.issuer)),a.vc.credentialSubject=d,t&&delete a.credentialSubject;const b=["evidence","termsOfUse","refreshService","credentialSchema","credentialStatus"];for(const n of b)e[n]&&(a.vc[n]||(a.vc[n]=e[n]),t&&delete a[n]);return a}function v(e,t=!0){var n,i,r;const o=c(e);var a;o.verifiableCredential=[...l(e.verifiableCredential),...l(null==(n=e.vp)?void 0:n.verifiableCredential)].filter(s),o.verifiableCredential=o.verifiableCredential.map(e=>u(e,t)),t&&(null==(a=o.vp)||delete a.verifiableCredential),e.iss&&!e.holder&&(o.holder=e.iss,t&&delete o.iss),e.aud&&(o.verifier=[...l(e.verifier),...l(e.aud)].filter(s),o.verifier=[...new Set(o.verifier)],t&&delete o.aud),e.jti&&-1===Object.getOwnPropertyNames(e).indexOf("id")&&(o.id=e.id||e.jti,t&&delete o.jti);const d=[...l(e.type),...l(null==(i=e.vp)?void 0:i.type)].filter(s);var f;o.type=[...new Set(d)],t&&(null==(f=o.vp)||delete f.type);const p=[...l(e.context),...l(e["@context"]),...l(null==(r=e.vp)?void 0:r["@context"])].filter(s);var v;return o["@context"]=[...new Set(p)],t&&(delete o.context,null==(v=o.vp)||delete v["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(o.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete o.nbf:delete o.iat)),!e.expirationDate&&e.exp&&(o.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete o.exp),o.vp&&0===Object.keys(o.vp).length&&t&&delete o.vp,o}function b(t,n=!0){let r;try{r=e(t)}catch(e){throw new TypeError("unknown presentation format")}return i({},v(r.payload,n),{proof:{type:"JwtProof2020",jwt:t}})}function y(e,t=!0){var n;if("string"==typeof e){if(r.test(e))return b(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown presentation format")}return y(n,t)}}return null!=(n=e.proof)&&n.jwt?i({},b(e.proof.jwt,t),{proof:e.proof}):i({proof:{}},v(e,t))}function w(e,t=!0){var n,r,o;const a=c(i({vp:i({},e.vp)},e));a.vp=a.vp;const d=[...l(e.context),...l(e["@context"]),...l(null==(n=e.vp)?void 0:n["@context"])].filter(s);a.vp["@context"]=[...new Set(d)],t&&(delete a.context,delete a["@context"]);const f=[...l(e.type),...l(null==(r=e.vp)?void 0:r.type)].filter(s);if(a.vp.type=[...new Set(f)],t&&delete a.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(a.jti=e.id,t&&delete a.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(a.nbf=Math.floor(n/1e3),t&&delete a.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(a.exp=Math.floor(n/1e3),t&&delete a.expirationDate)}var u;if((a.verifiableCredential||null!=(o=a.vp)&&o.verifiableCredential)&&(a.vp.verifiableCredential=[...l(a.verifiableCredential),...l(null==(u=a.vp)?void 0:u.verifiableCredential)].filter(s).map(e=>{var t;return"object"==typeof e&&null!=(t=e.proof)&&t.jwt?e.proof.jwt:e})),t&&delete a.verifiableCredential,e.holder&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&"string"==typeof e.holder&&(a.iss=e.holder,t&&delete a.holder),e.verifier){const n=[...l(e.verifier),...l(e.aud)].filter(s);a.aud=[...new Set(n)],t&&delete a.verifier}return a}function x(e){if("string"==typeof e&&!e.match(r))throw new TypeError(`"${e}" is not a valid JWT format`)}function j(e){if("number"==typeof e){if(!(Number.isInteger(e)&&e<1e11))throw new TypeError(`"${e}" is not a unix timestamp in seconds`)}else if("string"==typeof e)j(Math.floor(new Date(e).valueOf()/1e3));else if(!(t=e)||isNaN(t)||"[object Date]"!==Object.prototype.toString.call(t))throw new TypeError(`"${e}" is not a valid time`);var t}function O(e){const t=l(e);if(t.length<1||-1===t.indexOf(o))throw new TypeError(`@context is missing default context "${o}"`)}function g(e){const t=l(e);if(t.length<1||-1===t.indexOf("VerifiableCredential"))throw new TypeError('type is missing default "VerifiableCredential"')}function h(e){const t=l(e);if(t.length<1||-1===t.indexOf("VerifiablePresentation"))throw new TypeError('type is missing default "VerifiablePresentation"')}function m(e){if(0===Object.keys(e).length)throw new TypeError("credentialSubject must not be empty")}async function S(e,n,r={}){var o;const a=i({iat:void 0},p(e,r.removeOriginalFields));return N(a),t(a,i({},r,{issuer:n.did||a.iss||"",signer:n.signer}),i({},r.header,{alg:n.alg||(null==(o=r.header)?void 0:o.alg)||"ES256K"}))}async function D(e,n,r={}){var o;const a=i({iat:void 0},w(e,null==r?void 0:r.removeOriginalFields));if(r.challenge&&-1===Object.getOwnPropertyNames(a).indexOf("nonce")&&(a.nonce=r.challenge),r.domain){const e=[...l(r.domain),...l(a.aud)].filter(s);a.aud=[...new Set(e)]}return P(a),t(a,i({},r,{issuer:n.did||a.iss||"",signer:n.signer}),i({},r.header,{alg:n.alg||(null==(o=r.header)?void 0:o.alg)||"ES256K"}))}function N(e){O(e.vc["@context"]),g(e.vc.type),m(e.vc.credentialSubject),e.nbf&&j(e.nbf),e.exp&&j(e.exp)}function C(e){O(e["@context"]),g(e.type),m(e.credentialSubject),e.issuanceDate&&j(e.issuanceDate),e.expirationDate&&j(e.expirationDate)}function P(e){if(O(e.vp["@context"]),h(e.vp.type),e.vp.verifiableCredential&&e.vp.verifiableCredential.length>=1)for(const t of l(e.vp.verifiableCredential))"string"==typeof t?x(t):C(t);e.exp&&j(e.exp)}function E(e){if(O(e["@context"]),h(e.type),e.verifiableCredential&&e.verifiableCredential.length>=1)for(const t of e.verifiableCredential)"string"==typeof t?x(t):C(t);e.expirationDate&&j(e.expirationDate)}async function T(e,t,r={}){const o=await n(e,i({resolver:t},r));return o.verifiableCredential=u(o.jwt,null==r?void 0:r.removeOriginalFields),C(o.verifiableCredential),o}function A(e,t){if(t.challenge&&t.challenge!==e.nonce)throw new Error(`Presentation does not contain the mandatory challenge (JWT: nonce) for : ${t.challenge}`);if(t.domain){let n;if(e.aud&&(n=(Array.isArray(e.aud)?e.aud:[e.aud]).find(e=>t.domain===e)),void 0===n)throw new Error(`Presentation does not contain the mandatory domain (JWT: aud) for : ${t.domain}`)}}async function k(e,t,r={}){const o=await n(e,i({resolver:t},r));return A(o.payload,r),o.verifiablePresentation=y(o.jwt,null==r?void 0:r.removeOriginalFields),E(o.verifiablePresentation),o}export{S as createVerifiableCredentialJwt,D as createVerifiablePresentationJwt,u as normalizeCredential,y as normalizePresentation,p as transformCredentialInput,w as transformPresentationInput,C as validateCredentialPayload,N as validateJwtCredentialPayload,P as validateJwtPresentationPayload,E as validatePresentationPayload,T as verifyCredential,k as verifyPresentation,A as verifyPresentationPayloadOptions};
//# sourceMappingURL=index.modern.js.map

@@ -1,2 +0,2 @@

import{decodeJWT as e,verifyJWT as t,createJWT as n}from"did-jwt";const r=/^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/,i="https://www.w3.org/2018/credentials/v1";function o(e){return Array.isArray(e)?e:[e]}function a(e){return Array.isArray(e)?e.map(e=>a(e)):e instanceof Date?new Date(e.getTime()):e&&"object"==typeof e?Object.getOwnPropertyNames(e).reduce((t,n)=>(Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n)),t[n]=a(e[n]),t),Object.create(Object.getPrototypeOf(e))):e}function l(e){return null!=e}function c(e,t=!0){var n,r,c,s,d,f,u;let p=a(e);var v,b,y;"object"==typeof(v=e)&&v.sub&&v.iss&&v.claim&&v.iat&&(p=function(e){const{iat:t,nbf:n,claim:r,vc:o,...a}=e,l={...a,nbf:n||t,vc:{"@context":[i],type:["VerifiableCredential"],credentialSubject:r}};return o&&(e.issVc=o),l}(e)),p.credentialSubject={...e.credentialSubject,...null==(n=e.vc)?void 0:n.credentialSubject},!e.sub||null!=(r=e.credentialSubject)&&r.id||!p.credentialSubject||(p.credentialSubject.id=e.sub,t&&delete p.sub),t&&(null==(b=p.vc)||delete b.credentialSubject),void 0!==e.issuer&&"object"!=typeof e.issuer||(p.issuer=function(e){if("object"!=typeof e)return e;const t={...e};return Object.keys(t).forEach(e=>void 0===t[e]&&delete t[e]),t}({id:e.iss,...e.issuer}),!t||null!=(y=e.issuer)&&y.id||delete p.iss),!e.id&&e.jti&&(p.id=p.id||p.jti,t&&delete p.jti);const w=[...o(p.type),...o(null==(c=p.vc)?void 0:c.type)].filter(l);var x,j,O,g;p.type=[...new Set(w)],t&&(null==(x=p.vc)||delete x.type),p.evidence=null==(s=e.vc)?void 0:s.evidence,t&&(null==(j=p.vc)||delete j.evidence),p.credentialStatus=null==(d=e.vc)?void 0:d.credentialStatus,t&&(null==(O=p.vc)||delete O.credentialStatus),p.termsOfUse=null==(f=e.vc)?void 0:f.termsOfUse,t&&(null==(g=p.vc)||delete g.termsOfUse);const h=[...o(e.context),...o(e["@context"]),...o(null==(u=e.vc)?void 0:u["@context"])].filter(l);var m;return p["@context"]=[...new Set(h)],t&&(delete p.context,null==(m=p.vc)||delete m["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(p.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete p.nbf:delete p.iat)),!e.expirationDate&&e.exp&&(p.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete p.exp),t&&p.vc&&0===Object.keys(p.vc).length&&delete p.vc,p}function s(t,n=!0){let r;try{r=e(t)}catch(e){throw new TypeError("unknown credential format")}return{...c(r.payload,n),proof:{type:"JwtProof2020",jwt:t}}}function d(e,t=!0){var n;if("string"==typeof e){if(r.test(e))return s(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown credential format")}return d(n,t)}}return null!=(n=e.proof)&&n.jwt?a({...s(e.proof.jwt,t),proof:e.proof}):{proof:{},...c(e,t)}}function f(e,t=!0){var n,r,i;if(Array.isArray(e.credentialSubject))throw Error("credentialSubject of type array not supported");const c=a({vc:{...e.vc},...e});c.vc=c.vc;const s={...e.credentialSubject,...null==(n=e.vc)?void 0:n.credentialSubject};var d;e.sub||(c.sub=null==(d=e.credentialSubject)?void 0:d.id,t&&delete s.id);const f=[...o(e.context),...o(e["@context"]),...o(null==(r=e.vc)?void 0:r["@context"])].filter(l);c.vc["@context"]=[...new Set(f)],t&&(delete c.context,delete c["@context"]);const u=[...o(e.type),...o(null==(i=e.vc)?void 0:i.type)].filter(l);if(c.vc.type=[...new Set(u)],t&&delete c.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(c.jti=e.id,t&&delete c.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(c.nbf=Math.floor(n/1e3),t&&delete c.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(c.exp=Math.floor(n/1e3),t&&delete c.expirationDate)}var p;e.issuer&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&("object"==typeof e.issuer?(c.iss=null==(p=e.issuer)?void 0:p.id,t&&(delete c.issuer.id,0===Object.keys(c.issuer).length&&delete c.issuer)):"string"==typeof e.issuer&&(c.iss=e.iss||""+e.issuer,t&&delete c.issuer)),c.vc.credentialSubject=s,t&&delete c.credentialSubject;const v=["evidence","termsOfUse","refreshService","credentialSchema","credentialStatus"];for(const n of v)e[n]&&(c.vc[n]||(c.vc[n]=e[n]),t&&delete c[n]);return c}function u(e,t=!0){var n,r,i;const c=a(e);var s;c.verifiableCredential=[...o(e.verifiableCredential),...o(null==(n=e.vp)?void 0:n.verifiableCredential)].filter(l),c.verifiableCredential=c.verifiableCredential.map(e=>d(e,t)),t&&(null==(s=c.vp)||delete s.verifiableCredential),e.iss&&!e.holder&&(c.holder=e.iss,t&&delete c.iss),e.aud&&(c.verifier=[...o(e.verifier),...o(e.aud)].filter(l),c.verifier=[...new Set(c.verifier)],t&&delete c.aud),e.jti&&-1===Object.getOwnPropertyNames(e).indexOf("id")&&(c.id=e.id||e.jti,t&&delete c.jti);const f=[...o(e.type),...o(null==(r=e.vp)?void 0:r.type)].filter(l);var u;c.type=[...new Set(f)],t&&(null==(u=c.vp)||delete u.type);const p=[...o(e.context),...o(e["@context"]),...o(null==(i=e.vp)?void 0:i["@context"])].filter(l);var v;return c["@context"]=[...new Set(p)],t&&(delete c.context,null==(v=c.vp)||delete v["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(c.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete c.nbf:delete c.iat)),!e.expirationDate&&e.exp&&(c.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete c.exp),c.vp&&0===Object.keys(c.vp).length&&t&&delete c.vp,c}function p(t,n=!0){let r;try{r=e(t)}catch(e){throw new TypeError("unknown presentation format")}return{...u(r.payload,n),proof:{type:"JwtProof2020",jwt:t}}}function v(e,t=!0){var n;if("string"==typeof e){if(r.test(e))return p(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown presentation format")}return v(n,t)}}return null!=(n=e.proof)&&n.jwt?{...p(e.proof.jwt,t),proof:e.proof}:{proof:{},...u(e,t)}}function b(e,t=!0){var n,r,i;const c=a({vp:{...e.vp},...e});c.vp=c.vp;const s=[...o(e.context),...o(e["@context"]),...o(null==(n=e.vp)?void 0:n["@context"])].filter(l);c.vp["@context"]=[...new Set(s)],t&&(delete c.context,delete c["@context"]);const d=[...o(e.type),...o(null==(r=e.vp)?void 0:r.type)].filter(l);if(c.vp.type=[...new Set(d)],t&&delete c.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(c.jti=e.id,t&&delete c.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(c.nbf=Math.floor(n/1e3),t&&delete c.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(c.exp=Math.floor(n/1e3),t&&delete c.expirationDate)}var f;if((c.verifiableCredential||null!=(i=c.vp)&&i.verifiableCredential)&&(c.vp.verifiableCredential=[...o(c.verifiableCredential),...o(null==(f=c.vp)?void 0:f.verifiableCredential)].filter(l).map(e=>{var t;return"object"==typeof e&&null!=(t=e.proof)&&t.jwt?e.proof.jwt:e})),t&&delete c.verifiableCredential,e.holder&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&"string"==typeof e.holder&&(c.iss=e.holder,t&&delete c.holder),e.verifier){const n=[...o(e.verifier),...o(e.aud)].filter(l);c.aud=[...new Set(n)],t&&delete c.verifier}return c}function y(e){if("string"==typeof e&&!e.match(r))throw new TypeError(`"${e}" is not a valid JWT format`)}function w(e){if("number"==typeof e){if(!(Number.isInteger(e)&&e<1e11))throw new TypeError(`"${e}" is not a unix timestamp in seconds`)}else if("string"==typeof e)w(Math.floor(new Date(e).valueOf()/1e3));else if(!(t=e)||isNaN(t)||"[object Date]"!==Object.prototype.toString.call(t))throw new TypeError(`"${e}" is not a valid time`);var t}function x(e){const t=o(e);if(t.length<1||-1===t.indexOf(i))throw new TypeError(`@context is missing default context "${i}"`)}function j(e){const t=o(e);if(t.length<1||-1===t.indexOf("VerifiableCredential"))throw new TypeError('type is missing default "VerifiableCredential"')}function O(e){const t=o(e);if(t.length<1||-1===t.indexOf("VerifiablePresentation"))throw new TypeError('type is missing default "VerifiablePresentation"')}function g(e){if(0===Object.keys(e).length)throw new TypeError("credentialSubject must not be empty")}const h=function(e,n,r={}){try{return Promise.resolve(t(e,{resolver:n,...r})).then(function(e){return T(e.payload,r),e.verifiablePresentation=v(e.jwt,null==r?void 0:r.removeOriginalFields),E(e.verifiablePresentation),e})}catch(e){return Promise.reject(e)}},m=function(e,n,r={}){try{return Promise.resolve(t(e,{resolver:n,...r})).then(function(e){return e.verifiableCredential=d(e.jwt,null==r?void 0:r.removeOriginalFields),N(e.verifiableCredential),e})}catch(e){return Promise.reject(e)}},S=function(e,t,r={}){try{var i;const a={iat:void 0,...b(e,null==r?void 0:r.removeOriginalFields)};if(r.challenge&&-1===Object.getOwnPropertyNames(a).indexOf("nonce")&&(a.nonce=r.challenge),r.domain){const e=[...o(r.domain),...o(a.aud)].filter(l);a.aud=[...new Set(e)]}return C(a),Promise.resolve(n(a,{issuer:t.did||a.iss||"",signer:t.signer},{...r.header,alg:t.alg||(null==(i=r.header)?void 0:i.alg)||"ES256K"}))}catch(e){return Promise.reject(e)}},D=function(e,t,r={}){try{var i;const o={iat:void 0,...f(e,r.removeOriginalFields)};return P(o),Promise.resolve(n(o,{issuer:t.did||o.iss||"",signer:t.signer},{...r.header,alg:t.alg||(null==(i=r.header)?void 0:i.alg)||"ES256K"}))}catch(e){return Promise.reject(e)}};function P(e){x(e.vc["@context"]),j(e.vc.type),g(e.vc.credentialSubject),e.nbf&&w(e.nbf),e.exp&&w(e.exp)}function N(e){x(e["@context"]),j(e.type),g(e.credentialSubject),e.issuanceDate&&w(e.issuanceDate),e.expirationDate&&w(e.expirationDate)}function C(e){if(x(e.vp["@context"]),O(e.vp.type),e.vp.verifiableCredential&&e.vp.verifiableCredential.length>=1)for(const t of o(e.vp.verifiableCredential))"string"==typeof t?y(t):N(t);e.exp&&w(e.exp)}function E(e){if(x(e["@context"]),O(e.type),e.verifiableCredential&&e.verifiableCredential.length>=1)for(const t of e.verifiableCredential)"string"==typeof t?y(t):N(t);e.expirationDate&&w(e.expirationDate)}function T(e,t){if(t.challenge&&t.challenge!==e.nonce)throw new Error(`Presentation does not contain the mandatory challenge (JWT: nonce) for : ${t.challenge}`);if(t.domain){let n;if(e.aud&&(n=(Array.isArray(e.aud)?e.aud:[e.aud]).find(e=>t.domain===e)),void 0===n)throw new Error(`Presentation does not contain the mandatory domain (JWT: aud) for : ${t.domain}`)}}export{D as createVerifiableCredentialJwt,S as createVerifiablePresentationJwt,d as normalizeCredential,v as normalizePresentation,f as transformCredentialInput,b as transformPresentationInput,N as validateCredentialPayload,P as validateJwtCredentialPayload,C as validateJwtPresentationPayload,E as validatePresentationPayload,m as verifyCredential,h as verifyPresentation,T as verifyPresentationPayloadOptions};
import{decodeJWT as e,verifyJWT as t,createJWT as n}from"did-jwt";const r=/^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/,i="https://www.w3.org/2018/credentials/v1";function o(e){return Array.isArray(e)?e:[e]}function a(e){return Array.isArray(e)?e.map(e=>a(e)):e instanceof Date?new Date(e.getTime()):e&&"object"==typeof e?Object.getOwnPropertyNames(e).reduce((t,n)=>(Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n)),t[n]=a(e[n]),t),Object.create(Object.getPrototypeOf(e))):e}function l(e){return null!=e}function c(e,t=!0){var n,r,c,s,d,f,u;let p=a(e);var v,b,y;"object"==typeof(v=e)&&v.sub&&v.iss&&v.claim&&v.iat&&(p=function(e){const{iat:t,nbf:n,claim:r,vc:o,...a}=e,l={...a,nbf:n||t,vc:{"@context":[i],type:["VerifiableCredential"],credentialSubject:r}};return o&&(e.issVc=o),l}(e)),p.credentialSubject={...e.credentialSubject,...null==(n=e.vc)?void 0:n.credentialSubject},!e.sub||null!=(r=e.credentialSubject)&&r.id||!p.credentialSubject||(p.credentialSubject.id=e.sub,t&&delete p.sub),t&&(null==(b=p.vc)||delete b.credentialSubject),void 0!==e.issuer&&"object"!=typeof e.issuer||(p.issuer=function(e){if("object"!=typeof e)return e;const t={...e};return Object.keys(t).forEach(e=>void 0===t[e]&&delete t[e]),t}({id:e.iss,...e.issuer}),!t||null!=(y=e.issuer)&&y.id||delete p.iss),!e.id&&e.jti&&(p.id=p.id||p.jti,t&&delete p.jti);const w=[...o(p.type),...o(null==(c=p.vc)?void 0:c.type)].filter(l);var x,j,O,g;p.type=[...new Set(w)],t&&(null==(x=p.vc)||delete x.type),p.evidence=null==(s=e.vc)?void 0:s.evidence,t&&(null==(j=p.vc)||delete j.evidence),p.credentialStatus=null==(d=e.vc)?void 0:d.credentialStatus,t&&(null==(O=p.vc)||delete O.credentialStatus),p.termsOfUse=null==(f=e.vc)?void 0:f.termsOfUse,t&&(null==(g=p.vc)||delete g.termsOfUse);const h=[...o(e.context),...o(e["@context"]),...o(null==(u=e.vc)?void 0:u["@context"])].filter(l);var m;return p["@context"]=[...new Set(h)],t&&(delete p.context,null==(m=p.vc)||delete m["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(p.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete p.nbf:delete p.iat)),!e.expirationDate&&e.exp&&(p.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete p.exp),t&&p.vc&&0===Object.keys(p.vc).length&&delete p.vc,p}function s(t,n=!0){let r;try{r=e(t)}catch(e){throw new TypeError("unknown credential format")}return{...c(r.payload,n),proof:{type:"JwtProof2020",jwt:t}}}function d(e,t=!0){var n;if("string"==typeof e){if(r.test(e))return s(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown credential format")}return d(n,t)}}return null!=(n=e.proof)&&n.jwt?a({...s(e.proof.jwt,t),proof:e.proof}):{proof:{},...c(e,t)}}function f(e,t=!0){var n,r,i;if(Array.isArray(e.credentialSubject))throw Error("credentialSubject of type array not supported");const c=a({vc:{...e.vc},...e});c.vc=c.vc;const s={...e.credentialSubject,...null==(n=e.vc)?void 0:n.credentialSubject};var d;e.sub||(c.sub=null==(d=e.credentialSubject)?void 0:d.id,t&&delete s.id);const f=[...o(e.context),...o(e["@context"]),...o(null==(r=e.vc)?void 0:r["@context"])].filter(l);c.vc["@context"]=[...new Set(f)],t&&(delete c.context,delete c["@context"]);const u=[...o(e.type),...o(null==(i=e.vc)?void 0:i.type)].filter(l);if(c.vc.type=[...new Set(u)],t&&delete c.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(c.jti=e.id,t&&delete c.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(c.nbf=Math.floor(n/1e3),t&&delete c.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(c.exp=Math.floor(n/1e3),t&&delete c.expirationDate)}var p;e.issuer&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&("object"==typeof e.issuer?(c.iss=null==(p=e.issuer)?void 0:p.id,t&&(delete c.issuer.id,0===Object.keys(c.issuer).length&&delete c.issuer)):"string"==typeof e.issuer&&(c.iss=e.iss||""+e.issuer,t&&delete c.issuer)),c.vc.credentialSubject=s,t&&delete c.credentialSubject;const v=["evidence","termsOfUse","refreshService","credentialSchema","credentialStatus"];for(const n of v)e[n]&&(c.vc[n]||(c.vc[n]=e[n]),t&&delete c[n]);return c}function u(e,t=!0){var n,r,i;const c=a(e);var s;c.verifiableCredential=[...o(e.verifiableCredential),...o(null==(n=e.vp)?void 0:n.verifiableCredential)].filter(l),c.verifiableCredential=c.verifiableCredential.map(e=>d(e,t)),t&&(null==(s=c.vp)||delete s.verifiableCredential),e.iss&&!e.holder&&(c.holder=e.iss,t&&delete c.iss),e.aud&&(c.verifier=[...o(e.verifier),...o(e.aud)].filter(l),c.verifier=[...new Set(c.verifier)],t&&delete c.aud),e.jti&&-1===Object.getOwnPropertyNames(e).indexOf("id")&&(c.id=e.id||e.jti,t&&delete c.jti);const f=[...o(e.type),...o(null==(r=e.vp)?void 0:r.type)].filter(l);var u;c.type=[...new Set(f)],t&&(null==(u=c.vp)||delete u.type);const p=[...o(e.context),...o(e["@context"]),...o(null==(i=e.vp)?void 0:i["@context"])].filter(l);var v;return c["@context"]=[...new Set(p)],t&&(delete c.context,null==(v=c.vp)||delete v["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(c.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete c.nbf:delete c.iat)),!e.expirationDate&&e.exp&&(c.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete c.exp),c.vp&&0===Object.keys(c.vp).length&&t&&delete c.vp,c}function p(t,n=!0){let r;try{r=e(t)}catch(e){throw new TypeError("unknown presentation format")}return{...u(r.payload,n),proof:{type:"JwtProof2020",jwt:t}}}function v(e,t=!0){var n;if("string"==typeof e){if(r.test(e))return p(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown presentation format")}return v(n,t)}}return null!=(n=e.proof)&&n.jwt?{...p(e.proof.jwt,t),proof:e.proof}:{proof:{},...u(e,t)}}function b(e,t=!0){var n,r,i;const c=a({vp:{...e.vp},...e});c.vp=c.vp;const s=[...o(e.context),...o(e["@context"]),...o(null==(n=e.vp)?void 0:n["@context"])].filter(l);c.vp["@context"]=[...new Set(s)],t&&(delete c.context,delete c["@context"]);const d=[...o(e.type),...o(null==(r=e.vp)?void 0:r.type)].filter(l);if(c.vp.type=[...new Set(d)],t&&delete c.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(c.jti=e.id,t&&delete c.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(c.nbf=Math.floor(n/1e3),t&&delete c.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(c.exp=Math.floor(n/1e3),t&&delete c.expirationDate)}var f;if((c.verifiableCredential||null!=(i=c.vp)&&i.verifiableCredential)&&(c.vp.verifiableCredential=[...o(c.verifiableCredential),...o(null==(f=c.vp)?void 0:f.verifiableCredential)].filter(l).map(e=>{var t;return"object"==typeof e&&null!=(t=e.proof)&&t.jwt?e.proof.jwt:e})),t&&delete c.verifiableCredential,e.holder&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&"string"==typeof e.holder&&(c.iss=e.holder,t&&delete c.holder),e.verifier){const n=[...o(e.verifier),...o(e.aud)].filter(l);c.aud=[...new Set(n)],t&&delete c.verifier}return c}function y(e){if("string"==typeof e&&!e.match(r))throw new TypeError(`"${e}" is not a valid JWT format`)}function w(e){if("number"==typeof e){if(!(Number.isInteger(e)&&e<1e11))throw new TypeError(`"${e}" is not a unix timestamp in seconds`)}else if("string"==typeof e)w(Math.floor(new Date(e).valueOf()/1e3));else if(!(t=e)||isNaN(t)||"[object Date]"!==Object.prototype.toString.call(t))throw new TypeError(`"${e}" is not a valid time`);var t}function x(e){const t=o(e);if(t.length<1||-1===t.indexOf(i))throw new TypeError(`@context is missing default context "${i}"`)}function j(e){const t=o(e);if(t.length<1||-1===t.indexOf("VerifiableCredential"))throw new TypeError('type is missing default "VerifiableCredential"')}function O(e){const t=o(e);if(t.length<1||-1===t.indexOf("VerifiablePresentation"))throw new TypeError('type is missing default "VerifiablePresentation"')}function g(e){if(0===Object.keys(e).length)throw new TypeError("credentialSubject must not be empty")}const h=function(e,n,r={}){try{return Promise.resolve(t(e,{resolver:n,...r})).then(function(e){return T(e.payload,r),e.verifiablePresentation=v(e.jwt,null==r?void 0:r.removeOriginalFields),E(e.verifiablePresentation),e})}catch(e){return Promise.reject(e)}},m=function(e,n,r={}){try{return Promise.resolve(t(e,{resolver:n,...r})).then(function(e){return e.verifiableCredential=d(e.jwt,null==r?void 0:r.removeOriginalFields),N(e.verifiableCredential),e})}catch(e){return Promise.reject(e)}},S=function(e,t,r={}){try{var i;const a={iat:void 0,...b(e,null==r?void 0:r.removeOriginalFields)};if(r.challenge&&-1===Object.getOwnPropertyNames(a).indexOf("nonce")&&(a.nonce=r.challenge),r.domain){const e=[...o(r.domain),...o(a.aud)].filter(l);a.aud=[...new Set(e)]}return C(a),Promise.resolve(n(a,{...r,issuer:t.did||a.iss||"",signer:t.signer},{...r.header,alg:t.alg||(null==(i=r.header)?void 0:i.alg)||"ES256K"}))}catch(e){return Promise.reject(e)}},D=function(e,t,r={}){try{var i;const o={iat:void 0,...f(e,r.removeOriginalFields)};return P(o),Promise.resolve(n(o,{...r,issuer:t.did||o.iss||"",signer:t.signer},{...r.header,alg:t.alg||(null==(i=r.header)?void 0:i.alg)||"ES256K"}))}catch(e){return Promise.reject(e)}};function P(e){x(e.vc["@context"]),j(e.vc.type),g(e.vc.credentialSubject),e.nbf&&w(e.nbf),e.exp&&w(e.exp)}function N(e){x(e["@context"]),j(e.type),g(e.credentialSubject),e.issuanceDate&&w(e.issuanceDate),e.expirationDate&&w(e.expirationDate)}function C(e){if(x(e.vp["@context"]),O(e.vp.type),e.vp.verifiableCredential&&e.vp.verifiableCredential.length>=1)for(const t of o(e.vp.verifiableCredential))"string"==typeof t?y(t):N(t);e.exp&&w(e.exp)}function E(e){if(x(e["@context"]),O(e.type),e.verifiableCredential&&e.verifiableCredential.length>=1)for(const t of e.verifiableCredential)"string"==typeof t?y(t):N(t);e.expirationDate&&w(e.expirationDate)}function T(e,t){if(t.challenge&&t.challenge!==e.nonce)throw new Error(`Presentation does not contain the mandatory challenge (JWT: nonce) for : ${t.challenge}`);if(t.domain){let n;if(e.aud&&(n=(Array.isArray(e.aud)?e.aud:[e.aud]).find(e=>t.domain===e)),void 0===n)throw new Error(`Presentation does not contain the mandatory domain (JWT: aud) for : ${t.domain}`)}}export{D as createVerifiableCredentialJwt,S as createVerifiablePresentationJwt,d as normalizeCredential,v as normalizePresentation,f as transformCredentialInput,b as transformPresentationInput,N as validateCredentialPayload,P as validateJwtCredentialPayload,C as validateJwtPresentationPayload,E as validatePresentationPayload,m as verifyCredential,h as verifyPresentation,T as verifyPresentationPayloadOptions};
//# sourceMappingURL=index.module.js.map

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("did-jwt")):"function"==typeof define&&define.amd?define(["exports","did-jwt"],t):t((e||self).didJwtVc={},e.didJwt)}(this,function(e,t){const n="ES256K",i=/^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/,r="https://www.w3.org/2018/credentials/v1",o="VerifiableCredential",a="VerifiablePresentation",l="JwtProof2020";function c(e){return Array.isArray(e)?e:[e]}function s(e){return Array.isArray(e)?e.map(e=>s(e)):e instanceof Date?new Date(e.getTime()):e&&"object"==typeof e?Object.getOwnPropertyNames(e).reduce((t,n)=>(Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n)),t[n]=s(e[n]),t),Object.create(Object.getPrototypeOf(e))):e}function d(e){return null!=e}function f(e,t=!0){var n,i,a,l,f,u,p;let v=s(e);var y,b,w;"object"==typeof(y=e)&&y.sub&&y.iss&&y.claim&&y.iat&&(v=function(e){const{iat:t,nbf:n,claim:i,vc:a,...l}=e,c={...l,nbf:n||t,vc:{"@context":[r],type:[o],credentialSubject:i}};return a&&(e.issVc=a),c}(e)),v.credentialSubject={...e.credentialSubject,...null==(n=e.vc)?void 0:n.credentialSubject},!e.sub||null!=(i=e.credentialSubject)&&i.id||!v.credentialSubject||(v.credentialSubject.id=e.sub,t&&delete v.sub),t&&(null==(b=v.vc)||delete b.credentialSubject),void 0!==e.issuer&&"object"!=typeof e.issuer||(v.issuer=function(e){if("object"!=typeof e)return e;const t={...e};return Object.keys(t).forEach(e=>void 0===t[e]&&delete t[e]),t}({id:e.iss,...e.issuer}),!t||null!=(w=e.issuer)&&w.id||delete v.iss),!e.id&&e.jti&&(v.id=v.id||v.jti,t&&delete v.jti);const x=[...c(v.type),...c(null==(a=v.vc)?void 0:a.type)].filter(d);var j,h,m,g;v.type=[...new Set(x)],t&&(null==(j=v.vc)||delete j.type),v.evidence=null==(l=e.vc)?void 0:l.evidence,t&&(null==(h=v.vc)||delete h.evidence),v.credentialStatus=null==(f=e.vc)?void 0:f.credentialStatus,t&&(null==(m=v.vc)||delete m.credentialStatus),v.termsOfUse=null==(u=e.vc)?void 0:u.termsOfUse,t&&(null==(g=v.vc)||delete g.termsOfUse);const O=[...c(e.context),...c(e["@context"]),...c(null==(p=e.vc)?void 0:p["@context"])].filter(d);var S;return v["@context"]=[...new Set(O)],t&&(delete v.context,null==(S=v.vc)||delete S["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(v.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete v.nbf:delete v.iat)),!e.expirationDate&&e.exp&&(v.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete v.exp),t&&v.vc&&0===Object.keys(v.vc).length&&delete v.vc,v}function u(e,n=!0){let i;try{i=t.decodeJWT(e)}catch(e){throw new TypeError("unknown credential format")}return{...f(i.payload,n),proof:{type:l,jwt:e}}}function p(e,t=!0){var n;if("string"==typeof e){if(i.test(e))return u(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown credential format")}return p(n,t)}}return null!=(n=e.proof)&&n.jwt?s({...u(e.proof.jwt,t),proof:e.proof}):{proof:{},...f(e,t)}}function v(e,t=!0){var n,i,r;if(Array.isArray(e.credentialSubject))throw Error("credentialSubject of type array not supported");const o=s({vc:{...e.vc},...e});o.vc=o.vc;const a={...e.credentialSubject,...null==(n=e.vc)?void 0:n.credentialSubject};var l;e.sub||(o.sub=null==(l=e.credentialSubject)?void 0:l.id,t&&delete a.id);const f=[...c(e.context),...c(e["@context"]),...c(null==(i=e.vc)?void 0:i["@context"])].filter(d);o.vc["@context"]=[...new Set(f)],t&&(delete o.context,delete o["@context"]);const u=[...c(e.type),...c(null==(r=e.vc)?void 0:r.type)].filter(d);if(o.vc.type=[...new Set(u)],t&&delete o.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(o.jti=e.id,t&&delete o.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(o.nbf=Math.floor(n/1e3),t&&delete o.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(o.exp=Math.floor(n/1e3),t&&delete o.expirationDate)}var p;e.issuer&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&("object"==typeof e.issuer?(o.iss=null==(p=e.issuer)?void 0:p.id,t&&(delete o.issuer.id,0===Object.keys(o.issuer).length&&delete o.issuer)):"string"==typeof e.issuer&&(o.iss=e.iss||""+e.issuer,t&&delete o.issuer)),o.vc.credentialSubject=a,t&&delete o.credentialSubject;const v=["evidence","termsOfUse","refreshService","credentialSchema","credentialStatus"];for(const n of v)e[n]&&(o.vc[n]||(o.vc[n]=e[n]),t&&delete o[n]);return o}function y(e,t=!0){var n,i,r;const o=s(e);var a;o.verifiableCredential=[...c(e.verifiableCredential),...c(null==(n=e.vp)?void 0:n.verifiableCredential)].filter(d),o.verifiableCredential=o.verifiableCredential.map(e=>p(e,t)),t&&(null==(a=o.vp)||delete a.verifiableCredential),e.iss&&!e.holder&&(o.holder=e.iss,t&&delete o.iss),e.aud&&(o.verifier=[...c(e.verifier),...c(e.aud)].filter(d),o.verifier=[...new Set(o.verifier)],t&&delete o.aud),e.jti&&-1===Object.getOwnPropertyNames(e).indexOf("id")&&(o.id=e.id||e.jti,t&&delete o.jti);const l=[...c(e.type),...c(null==(i=e.vp)?void 0:i.type)].filter(d);var f;o.type=[...new Set(l)],t&&(null==(f=o.vp)||delete f.type);const u=[...c(e.context),...c(e["@context"]),...c(null==(r=e.vp)?void 0:r["@context"])].filter(d);var v;return o["@context"]=[...new Set(u)],t&&(delete o.context,null==(v=o.vp)||delete v["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(o.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete o.nbf:delete o.iat)),!e.expirationDate&&e.exp&&(o.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete o.exp),o.vp&&0===Object.keys(o.vp).length&&t&&delete o.vp,o}function b(e,n=!0){let i;try{i=t.decodeJWT(e)}catch(e){throw new TypeError("unknown presentation format")}return{...y(i.payload,n),proof:{type:l,jwt:e}}}function w(e,t=!0){var n;if("string"==typeof e){if(i.test(e))return b(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown presentation format")}return w(n,t)}}return null!=(n=e.proof)&&n.jwt?{...b(e.proof.jwt,t),proof:e.proof}:{proof:{},...y(e,t)}}function x(e,t=!0){var n,i,r;const o=s({vp:{...e.vp},...e});o.vp=o.vp;const a=[...c(e.context),...c(e["@context"]),...c(null==(n=e.vp)?void 0:n["@context"])].filter(d);o.vp["@context"]=[...new Set(a)],t&&(delete o.context,delete o["@context"]);const l=[...c(e.type),...c(null==(i=e.vp)?void 0:i.type)].filter(d);if(o.vp.type=[...new Set(l)],t&&delete o.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(o.jti=e.id,t&&delete o.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(o.nbf=Math.floor(n/1e3),t&&delete o.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(o.exp=Math.floor(n/1e3),t&&delete o.expirationDate)}var f;if((o.verifiableCredential||null!=(r=o.vp)&&r.verifiableCredential)&&(o.vp.verifiableCredential=[...c(o.verifiableCredential),...c(null==(f=o.vp)?void 0:f.verifiableCredential)].filter(d).map(e=>{var t;return"object"==typeof e&&null!=(t=e.proof)&&t.jwt?e.proof.jwt:e})),t&&delete o.verifiableCredential,e.holder&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&"string"==typeof e.holder&&(o.iss=e.holder,t&&delete o.holder),e.verifier){const n=[...c(e.verifier),...c(e.aud)].filter(d);o.aud=[...new Set(n)],t&&delete o.verifier}return o}function j(e){if("string"==typeof e&&!e.match(i))throw new TypeError(`"${e}" is not a valid JWT format`)}function h(e){if("number"==typeof e){if(!(Number.isInteger(e)&&e<1e11))throw new TypeError(`"${e}" is not a unix timestamp in seconds`)}else if("string"==typeof e)h(Math.floor(new Date(e).valueOf()/1e3));else if(!(t=e)||isNaN(t)||"[object Date]"!==Object.prototype.toString.call(t))throw new TypeError(`"${e}" is not a valid time`);var t}function m(e){const t=c(e);if(t.length<1||-1===t.indexOf(r))throw new TypeError(`@context is missing default context "${r}"`)}function g(e){const t=c(e);if(t.length<1||-1===t.indexOf(o))throw new TypeError(`type is missing default "${o}"`)}function O(e){const t=c(e);if(t.length<1||-1===t.indexOf(a))throw new TypeError(`type is missing default "${a}"`)}function S(e){if(0===Object.keys(e).length)throw new TypeError("credentialSubject must not be empty")}function P(e){m(e.vc["@context"]),g(e.vc.type),S(e.vc.credentialSubject),e.nbf&&h(e.nbf),e.exp&&h(e.exp)}function D(e){m(e["@context"]),g(e.type),S(e.credentialSubject),e.issuanceDate&&h(e.issuanceDate),e.expirationDate&&h(e.expirationDate)}function C(e){if(m(e.vp["@context"]),O(e.vp.type),e.vp.verifiableCredential&&e.vp.verifiableCredential.length>=1)for(const t of c(e.vp.verifiableCredential))"string"==typeof t?j(t):D(t);e.exp&&h(e.exp)}function N(e){if(m(e["@context"]),O(e.type),e.verifiableCredential&&e.verifiableCredential.length>=1)for(const t of e.verifiableCredential)"string"==typeof t?j(t):D(t);e.expirationDate&&h(e.expirationDate)}function T(e,t){if(t.challenge&&t.challenge!==e.nonce)throw new Error(`Presentation does not contain the mandatory challenge (JWT: nonce) for : ${t.challenge}`);if(t.domain){let n;if(e.aud&&(n=(Array.isArray(e.aud)?e.aud:[e.aud]).find(e=>t.domain===e)),void 0===n)throw new Error(`Presentation does not contain the mandatory domain (JWT: aud) for : ${t.domain}`)}}e.createVerifiableCredentialJwt=function(e,i,r={}){try{var o;const a={iat:void 0,...v(e,r.removeOriginalFields)};return P(a),Promise.resolve(t.createJWT(a,{issuer:i.did||a.iss||"",signer:i.signer},{...r.header,alg:i.alg||(null==(o=r.header)?void 0:o.alg)||n}))}catch(e){return Promise.reject(e)}},e.createVerifiablePresentationJwt=function(e,i,r={}){try{var o;const a={iat:void 0,...x(e,null==r?void 0:r.removeOriginalFields)};if(r.challenge&&-1===Object.getOwnPropertyNames(a).indexOf("nonce")&&(a.nonce=r.challenge),r.domain){const e=[...c(r.domain),...c(a.aud)].filter(d);a.aud=[...new Set(e)]}return C(a),Promise.resolve(t.createJWT(a,{issuer:i.did||a.iss||"",signer:i.signer},{...r.header,alg:i.alg||(null==(o=r.header)?void 0:o.alg)||n}))}catch(e){return Promise.reject(e)}},e.normalizeCredential=p,e.normalizePresentation=w,e.transformCredentialInput=v,e.transformPresentationInput=x,e.validateCredentialPayload=D,e.validateJwtCredentialPayload=P,e.validateJwtPresentationPayload=C,e.validatePresentationPayload=N,e.verifyCredential=function(e,n,i={}){try{return Promise.resolve(t.verifyJWT(e,{resolver:n,...i})).then(function(e){return e.verifiableCredential=p(e.jwt,null==i?void 0:i.removeOriginalFields),D(e.verifiableCredential),e})}catch(e){return Promise.reject(e)}},e.verifyPresentation=function(e,n,i={}){try{return Promise.resolve(t.verifyJWT(e,{resolver:n,...i})).then(function(e){return T(e.payload,i),e.verifiablePresentation=w(e.jwt,null==i?void 0:i.removeOriginalFields),N(e.verifiablePresentation),e})}catch(e){return Promise.reject(e)}},e.verifyPresentationPayloadOptions=T});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("did-jwt")):"function"==typeof define&&define.amd?define(["exports","did-jwt"],t):t((e||self).didJwtVc={},e.didJwt)}(this,function(e,t){const n="ES256K",i=/^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/,r="https://www.w3.org/2018/credentials/v1",o="VerifiableCredential",a="VerifiablePresentation",l="JwtProof2020";function c(e){return Array.isArray(e)?e:[e]}function s(e){return Array.isArray(e)?e.map(e=>s(e)):e instanceof Date?new Date(e.getTime()):e&&"object"==typeof e?Object.getOwnPropertyNames(e).reduce((t,n)=>(Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n)),t[n]=s(e[n]),t),Object.create(Object.getPrototypeOf(e))):e}function d(e){return null!=e}function f(e,t=!0){var n,i,a,l,f,u,p;let v=s(e);var y,b,w;"object"==typeof(y=e)&&y.sub&&y.iss&&y.claim&&y.iat&&(v=function(e){const{iat:t,nbf:n,claim:i,vc:a,...l}=e,c={...l,nbf:n||t,vc:{"@context":[r],type:[o],credentialSubject:i}};return a&&(e.issVc=a),c}(e)),v.credentialSubject={...e.credentialSubject,...null==(n=e.vc)?void 0:n.credentialSubject},!e.sub||null!=(i=e.credentialSubject)&&i.id||!v.credentialSubject||(v.credentialSubject.id=e.sub,t&&delete v.sub),t&&(null==(b=v.vc)||delete b.credentialSubject),void 0!==e.issuer&&"object"!=typeof e.issuer||(v.issuer=function(e){if("object"!=typeof e)return e;const t={...e};return Object.keys(t).forEach(e=>void 0===t[e]&&delete t[e]),t}({id:e.iss,...e.issuer}),!t||null!=(w=e.issuer)&&w.id||delete v.iss),!e.id&&e.jti&&(v.id=v.id||v.jti,t&&delete v.jti);const x=[...c(v.type),...c(null==(a=v.vc)?void 0:a.type)].filter(d);var j,h,m,g;v.type=[...new Set(x)],t&&(null==(j=v.vc)||delete j.type),v.evidence=null==(l=e.vc)?void 0:l.evidence,t&&(null==(h=v.vc)||delete h.evidence),v.credentialStatus=null==(f=e.vc)?void 0:f.credentialStatus,t&&(null==(m=v.vc)||delete m.credentialStatus),v.termsOfUse=null==(u=e.vc)?void 0:u.termsOfUse,t&&(null==(g=v.vc)||delete g.termsOfUse);const O=[...c(e.context),...c(e["@context"]),...c(null==(p=e.vc)?void 0:p["@context"])].filter(d);var S;return v["@context"]=[...new Set(O)],t&&(delete v.context,null==(S=v.vc)||delete S["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(v.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete v.nbf:delete v.iat)),!e.expirationDate&&e.exp&&(v.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete v.exp),t&&v.vc&&0===Object.keys(v.vc).length&&delete v.vc,v}function u(e,n=!0){let i;try{i=t.decodeJWT(e)}catch(e){throw new TypeError("unknown credential format")}return{...f(i.payload,n),proof:{type:l,jwt:e}}}function p(e,t=!0){var n;if("string"==typeof e){if(i.test(e))return u(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown credential format")}return p(n,t)}}return null!=(n=e.proof)&&n.jwt?s({...u(e.proof.jwt,t),proof:e.proof}):{proof:{},...f(e,t)}}function v(e,t=!0){var n,i,r;if(Array.isArray(e.credentialSubject))throw Error("credentialSubject of type array not supported");const o=s({vc:{...e.vc},...e});o.vc=o.vc;const a={...e.credentialSubject,...null==(n=e.vc)?void 0:n.credentialSubject};var l;e.sub||(o.sub=null==(l=e.credentialSubject)?void 0:l.id,t&&delete a.id);const f=[...c(e.context),...c(e["@context"]),...c(null==(i=e.vc)?void 0:i["@context"])].filter(d);o.vc["@context"]=[...new Set(f)],t&&(delete o.context,delete o["@context"]);const u=[...c(e.type),...c(null==(r=e.vc)?void 0:r.type)].filter(d);if(o.vc.type=[...new Set(u)],t&&delete o.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(o.jti=e.id,t&&delete o.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(o.nbf=Math.floor(n/1e3),t&&delete o.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(o.exp=Math.floor(n/1e3),t&&delete o.expirationDate)}var p;e.issuer&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&("object"==typeof e.issuer?(o.iss=null==(p=e.issuer)?void 0:p.id,t&&(delete o.issuer.id,0===Object.keys(o.issuer).length&&delete o.issuer)):"string"==typeof e.issuer&&(o.iss=e.iss||""+e.issuer,t&&delete o.issuer)),o.vc.credentialSubject=a,t&&delete o.credentialSubject;const v=["evidence","termsOfUse","refreshService","credentialSchema","credentialStatus"];for(const n of v)e[n]&&(o.vc[n]||(o.vc[n]=e[n]),t&&delete o[n]);return o}function y(e,t=!0){var n,i,r;const o=s(e);var a;o.verifiableCredential=[...c(e.verifiableCredential),...c(null==(n=e.vp)?void 0:n.verifiableCredential)].filter(d),o.verifiableCredential=o.verifiableCredential.map(e=>p(e,t)),t&&(null==(a=o.vp)||delete a.verifiableCredential),e.iss&&!e.holder&&(o.holder=e.iss,t&&delete o.iss),e.aud&&(o.verifier=[...c(e.verifier),...c(e.aud)].filter(d),o.verifier=[...new Set(o.verifier)],t&&delete o.aud),e.jti&&-1===Object.getOwnPropertyNames(e).indexOf("id")&&(o.id=e.id||e.jti,t&&delete o.jti);const l=[...c(e.type),...c(null==(i=e.vp)?void 0:i.type)].filter(d);var f;o.type=[...new Set(l)],t&&(null==(f=o.vp)||delete f.type);const u=[...c(e.context),...c(e["@context"]),...c(null==(r=e.vp)?void 0:r["@context"])].filter(d);var v;return o["@context"]=[...new Set(u)],t&&(delete o.context,null==(v=o.vp)||delete v["@context"]),e.issuanceDate||!e.iat&&!e.nbf||(o.issuanceDate=new Date(1e3*(e.nbf||e.iat)).toISOString(),t&&(e.nbf?delete o.nbf:delete o.iat)),!e.expirationDate&&e.exp&&(o.expirationDate=new Date(1e3*e.exp).toISOString(),t&&delete o.exp),o.vp&&0===Object.keys(o.vp).length&&t&&delete o.vp,o}function b(e,n=!0){let i;try{i=t.decodeJWT(e)}catch(e){throw new TypeError("unknown presentation format")}return{...y(i.payload,n),proof:{type:l,jwt:e}}}function w(e,t=!0){var n;if("string"==typeof e){if(i.test(e))return b(e,t);{let n;try{n=JSON.parse(e)}catch(e){throw new TypeError("unknown presentation format")}return w(n,t)}}return null!=(n=e.proof)&&n.jwt?{...b(e.proof.jwt,t),proof:e.proof}:{proof:{},...y(e,t)}}function x(e,t=!0){var n,i,r;const o=s({vp:{...e.vp},...e});o.vp=o.vp;const a=[...c(e.context),...c(e["@context"]),...c(null==(n=e.vp)?void 0:n["@context"])].filter(d);o.vp["@context"]=[...new Set(a)],t&&(delete o.context,delete o["@context"]);const l=[...c(e.type),...c(null==(i=e.vp)?void 0:i.type)].filter(d);if(o.vp.type=[...new Set(l)],t&&delete o.type,e.id&&-1===Object.getOwnPropertyNames(e).indexOf("jti")&&(o.jti=e.id,t&&delete o.id),e.issuanceDate&&-1===Object.getOwnPropertyNames(e).indexOf("nbf")){const n=Date.parse(e.issuanceDate);isNaN(n)||(o.nbf=Math.floor(n/1e3),t&&delete o.issuanceDate)}if(e.expirationDate&&-1===Object.getOwnPropertyNames(e).indexOf("exp")){const n=Date.parse(e.expirationDate);isNaN(n)||(o.exp=Math.floor(n/1e3),t&&delete o.expirationDate)}var f;if((o.verifiableCredential||null!=(r=o.vp)&&r.verifiableCredential)&&(o.vp.verifiableCredential=[...c(o.verifiableCredential),...c(null==(f=o.vp)?void 0:f.verifiableCredential)].filter(d).map(e=>{var t;return"object"==typeof e&&null!=(t=e.proof)&&t.jwt?e.proof.jwt:e})),t&&delete o.verifiableCredential,e.holder&&-1===Object.getOwnPropertyNames(e).indexOf("iss")&&"string"==typeof e.holder&&(o.iss=e.holder,t&&delete o.holder),e.verifier){const n=[...c(e.verifier),...c(e.aud)].filter(d);o.aud=[...new Set(n)],t&&delete o.verifier}return o}function j(e){if("string"==typeof e&&!e.match(i))throw new TypeError(`"${e}" is not a valid JWT format`)}function h(e){if("number"==typeof e){if(!(Number.isInteger(e)&&e<1e11))throw new TypeError(`"${e}" is not a unix timestamp in seconds`)}else if("string"==typeof e)h(Math.floor(new Date(e).valueOf()/1e3));else if(!(t=e)||isNaN(t)||"[object Date]"!==Object.prototype.toString.call(t))throw new TypeError(`"${e}" is not a valid time`);var t}function m(e){const t=c(e);if(t.length<1||-1===t.indexOf(r))throw new TypeError(`@context is missing default context "${r}"`)}function g(e){const t=c(e);if(t.length<1||-1===t.indexOf(o))throw new TypeError(`type is missing default "${o}"`)}function O(e){const t=c(e);if(t.length<1||-1===t.indexOf(a))throw new TypeError(`type is missing default "${a}"`)}function S(e){if(0===Object.keys(e).length)throw new TypeError("credentialSubject must not be empty")}function P(e){m(e.vc["@context"]),g(e.vc.type),S(e.vc.credentialSubject),e.nbf&&h(e.nbf),e.exp&&h(e.exp)}function D(e){m(e["@context"]),g(e.type),S(e.credentialSubject),e.issuanceDate&&h(e.issuanceDate),e.expirationDate&&h(e.expirationDate)}function C(e){if(m(e.vp["@context"]),O(e.vp.type),e.vp.verifiableCredential&&e.vp.verifiableCredential.length>=1)for(const t of c(e.vp.verifiableCredential))"string"==typeof t?j(t):D(t);e.exp&&h(e.exp)}function N(e){if(m(e["@context"]),O(e.type),e.verifiableCredential&&e.verifiableCredential.length>=1)for(const t of e.verifiableCredential)"string"==typeof t?j(t):D(t);e.expirationDate&&h(e.expirationDate)}function T(e,t){if(t.challenge&&t.challenge!==e.nonce)throw new Error(`Presentation does not contain the mandatory challenge (JWT: nonce) for : ${t.challenge}`);if(t.domain){let n;if(e.aud&&(n=(Array.isArray(e.aud)?e.aud:[e.aud]).find(e=>t.domain===e)),void 0===n)throw new Error(`Presentation does not contain the mandatory domain (JWT: aud) for : ${t.domain}`)}}e.createVerifiableCredentialJwt=function(e,i,r={}){try{var o;const a={iat:void 0,...v(e,r.removeOriginalFields)};return P(a),Promise.resolve(t.createJWT(a,{...r,issuer:i.did||a.iss||"",signer:i.signer},{...r.header,alg:i.alg||(null==(o=r.header)?void 0:o.alg)||n}))}catch(e){return Promise.reject(e)}},e.createVerifiablePresentationJwt=function(e,i,r={}){try{var o;const a={iat:void 0,...x(e,null==r?void 0:r.removeOriginalFields)};if(r.challenge&&-1===Object.getOwnPropertyNames(a).indexOf("nonce")&&(a.nonce=r.challenge),r.domain){const e=[...c(r.domain),...c(a.aud)].filter(d);a.aud=[...new Set(e)]}return C(a),Promise.resolve(t.createJWT(a,{...r,issuer:i.did||a.iss||"",signer:i.signer},{...r.header,alg:i.alg||(null==(o=r.header)?void 0:o.alg)||n}))}catch(e){return Promise.reject(e)}},e.normalizeCredential=p,e.normalizePresentation=w,e.transformCredentialInput=v,e.transformPresentationInput=x,e.validateCredentialPayload=D,e.validateJwtCredentialPayload=P,e.validateJwtPresentationPayload=C,e.validatePresentationPayload=N,e.verifyCredential=function(e,n,i={}){try{return Promise.resolve(t.verifyJWT(e,{resolver:n,...i})).then(function(e){return e.verifiableCredential=p(e.jwt,null==i?void 0:i.removeOriginalFields),D(e.verifiableCredential),e})}catch(e){return Promise.reject(e)}},e.verifyPresentation=function(e,n,i={}){try{return Promise.resolve(t.verifyJWT(e,{resolver:n,...i})).then(function(e){return T(e.payload,i),e.verifiablePresentation=w(e.jwt,null==i?void 0:i.removeOriginalFields),N(e.verifiablePresentation),e})}catch(e){return Promise.reject(e)}},e.verifyPresentationPayloadOptions=T});
//# sourceMappingURL=index.umd.js.map

@@ -1,2 +0,2 @@

import { Signer, JWTVerified, JWTHeader } from 'did-jwt';
import { Signer, JWTVerified, JWTHeader, JWTOptions } from 'did-jwt';
export declare const JWT_ALG = "ES256K";

@@ -195,3 +195,3 @@ export declare const DID_FORMAT: RegExp;

*/
export interface CreateCredentialOptions {
export interface CreateCredentialOptions extends Partial<JWTOptions> {
/**

@@ -198,0 +198,0 @@ * Determines whether the JSON->JWT transformation will remove the original fields from the input payload.

{
"name": "did-jwt-vc",
"version": "2.1.6",
"version": "2.1.7",
"description": "Create and verify W3C Verifiable Credentials and Presentations in JWT format",

@@ -30,3 +30,3 @@ "source": "src/index.ts",

"dependencies": {
"did-jwt": "^5.6.1",
"did-jwt": "^5.7.0",
"did-resolver": "^3.1.0"

@@ -58,3 +58,3 @@ },

"@types/faker": "5.5.7",
"@types/jest": "26.0.24",
"@types/jest": "27.0.1",
"@types/node": "15.12.4",

@@ -61,0 +61,0 @@ "@typescript-eslint/eslint-plugin": "4.28.3",

@@ -125,2 +125,13 @@ import { EthrDID } from 'ethr-did'

})
it('creates a Verifiable Credential JWT with exp field using expiresIn of did-jwt', async () => {
expect.assertions(1)
const nbf = Math.floor(Date.now() / 1000)
const expiresIn = 86400
const vcJwt = await createVerifiableCredentialJwt({ ...verifiableCredentialPayload, nbf }, issuer, {
expiresIn,
header: { alg: 'ES256K-R' },
})
const decodedVc = await decodeJWT(vcJwt)
expect(decodedVc.payload.exp).toEqual(nbf + expiresIn)
})
it('calls functions to validate required fields', async () => {

@@ -127,0 +138,0 @@ expect.assertions(4)

@@ -78,2 +78,3 @@ import { createJWT, verifyJWT } from 'did-jwt'

{
...options,
issuer: issuer.did || parsedPayload.iss || '',

@@ -129,2 +130,3 @@ signer: issuer.signer,

{
...options,
issuer: holder.did || parsedPayload.iss || '',

@@ -131,0 +133,0 @@ signer: holder.signer,

@@ -1,2 +0,2 @@

import { Signer, JWTVerified, JWTHeader } from 'did-jwt'
import { Signer, JWTVerified, JWTHeader, JWTOptions } from 'did-jwt'

@@ -221,3 +221,3 @@ export const JWT_ALG = 'ES256K'

*/
export interface CreateCredentialOptions {
export interface CreateCredentialOptions extends Partial<JWTOptions> {
/**

@@ -236,2 +236,3 @@ * Determines whether the JSON->JWT transformation will remove the original fields from the input payload.

header?: Partial<JWTHeader>
// eslint-disable-next-line @typescript-eslint/no-explicit-any

@@ -238,0 +239,0 @@ [x: string]: any

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc